Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uT4tc-00H7N8-JY for pgsql-hackers@arkaria.postgresql.org; Sat, 21 Jun 2025 20:33:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uT4tZ-0097Ck-Dv for pgsql-hackers@arkaria.postgresql.org; Sat, 21 Jun 2025 20:33:02 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uT4tY-0097By-H3 for pgsql-hackers@lists.postgresql.org; Sat, 21 Jun 2025 20:33:01 +0000 Received: from mail-vk1-xa36.google.com ([2607:f8b0:4864:20::a36]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uT4tV-003Mk1-0x for pgsql-hackers@postgresql.org; Sat, 21 Jun 2025 20:33:00 +0000 Received: by mail-vk1-xa36.google.com with SMTP id 71dfb90a1353d-525b44b7720so837148e0c.0 for ; Sat, 21 Jun 2025 13:32:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750537975; x=1751142775; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Le8IrKV6YdX1t8QheZ8gXSAaqbEuU8G3HyTFhxghyIA=; b=SL11JVM6AqoLCx7B+cg913iKn9pI2Rus4j70gOFcgfOXsM7+lZdD3o00Cblj+2HHMB lTqdj/qVqAbM8othVzYP9Ij95F3ALdfJV1hDoHAd6B1j5v2YgcjY9Pjy0rFSxhiHdde8 GnMSntsu3EAAVjnuIdkPfWpAr4r0nSl39md3YEhVITN3OL9Kmf5GbpeX8Q6LVIepP+JM 64KcsHeaSs+D+2WQvsA4cRCA9CEEeL54AQfH5BwmAjxxGCBQyku0WUjwWi22yFxCNiBs hLB9ka9M1oSAmZCyHzo7jnMMBu5wM8X+xLelHs4vrdRuv2c483fUg2jDcUejaggxf4BC EsPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750537975; x=1751142775; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Le8IrKV6YdX1t8QheZ8gXSAaqbEuU8G3HyTFhxghyIA=; b=Fg2eSalrQsgKYccllLMJ/TPsSUKJLf8zRRMmMh1fQIUnapRKYqEDpHbR0WlZga6Y0a DsUap52QLfPfuKuVLL86ogsyHFShlniHb8d+oQOj1rWdK4Jq8Otmj2OJDJd/Ex18tJlW 5Dobq2RAbZhoBaf2RDQPPjfPxwTYIn1G50QC97x1pRf/C0d4VVP1Y3cxPHPGS8f2nMk8 nrVTRena7QSRpWH+YlHx7Yxhycsp20cs71ks/pNlZZzT+Btung1yCVkOOKzw2X2K970t bym8AfGyRwsP5HUBIZheSf3sw7OYtow00uQD6zQjym6Y6pKznTmBkEUR2QxpLv/NQZIz 1iuA== X-Forwarded-Encrypted: i=1; AJvYcCXY4OInLGwCL8zbxKyoOT/8FLVuIT5yZC1Qeb/QwGpn/4SXpFxmko5hmq7rgxTF8GzYf5tcwlFySU2xE4jK@postgresql.org X-Gm-Message-State: AOJu0Yw9CCxGsMv23kfOiAffF+ho3Y31VoNWuQ1xYF9YdkCdgR7KHoUb 1FU7zNgl/37m3fU8PsOWll8Lao/UF/sXnDIs1DJAVjvpqEl4Ng2VGpVfglnb4r28hYfH2PnBbeO 2tAknEfyBjfr3anWbPYGEw+pzxOhrme1L1P26 X-Gm-Gg: ASbGnctXOy0gYhJ6vyyUls0KuXikNRFWyoivFV2Lbj1pITFbvRbqFan1DEE9yvWCNNK XRxB69T2Tjdms1oTzuhsf5okKrvx6zVikk+cvLw0U5Zxtecbx2nzjxjZwqeCVVeslbelSLmQLAD wVKxmDU5WgQneKeH2vH99ofNXM8+rUo8bhW35U+dBcAawu0cG91XgBhhLFhhBYBLwAeeIEshu6a k8NCn6nIP+72bQ= X-Google-Smtp-Source: AGHT+IFMYqER/ybADNp7O0eD1tRL7VOAoGuC7mP6aI8d8+7n1doMBT8lA1NvpGTaKE+owzWfaOJT6ZgkCXZdC/izzUQ= X-Received: by 2002:a05:6122:1314:b0:531:4708:3d45 with SMTP id 71dfb90a1353d-531ad8c17ccmr4387295e0c.10.1750537974795; Sat, 21 Jun 2025 13:32:54 -0700 (PDT) MIME-Version: 1.0 References: <202505181556.3n6oiowvntyr@alvherre.pgsql> In-Reply-To: From: Mihail Nikalayeu Date: Sat, 21 Jun 2025 22:32:44 +0200 X-Gm-Features: AX0GCFvHvt7DYA1b9GA5xNqbDTVAgIv7YQhLJeNsvs_yTtff9CicGvutI8yRFB8 Message-ID: Subject: Re: Revisiting {CREATE INDEX, REINDEX} CONCURRENTLY improvements To: Sergey Sargsyan Cc: =?UTF-8?Q?=C3=81lvaro_Herrera?= , Andres Freund , Michael Paquier , PostgreSQL Hackers , Andrey Borodin , Melanie Plageman , Matthias van de Meent Content-Type: multipart/mixed; boundary="00000000000027fe8906381ae2a2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000027fe8906381ae2a2 Content-Type: multipart/alternative; boundary="00000000000027fe8806381ae2a0" --00000000000027fe8806381ae2a0 Content-Type: text/plain; charset="UTF-8" Hello, Sergey! I have addressed your comments: * skip TID scan in case of empty STIR index * fix for critical section * formatting * index_create signature Rebased, patch structure and comments available here [0]. Quick introduction poster - here [1]. Best regards, Mikhail. [0]: https://www.postgresql.org/message-id/flat/CADzfLwVOcZ9mg8gOG%2BKXWurt%3DMHRcqNv3XSECYoXyM3ENrxyfQ%40mail.gmail.com#52c97e004b8f628473124c05e3bf2da1 [1]: https://www.postgresql.org/message-id/attachment/176651/STIR-poster.pdf --00000000000027fe8806381ae2a0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello, Sergey!

I have addressed your comments:
* skip TID scan in case of empty STIR index
* fix for critical section
* formatting
* index_create signature


Rebased, patch structure and comments available here [0]. Quick
introduction poster - here [1].

Best regards,
Mikhail.

[0]: https://www= .postgresql.org/message-id/flat/CADzfLwVOcZ9mg8gOG%2BKXWurt%3DMHRcqNv3XSECY= oXyM3ENrxyfQ%40mail.gmail.com#52c97e004b8f628473124c05e3bf2da1
[1]: https://www.p= ostgresql.org/message-id/attachment/176651/STIR-poster.pdf
--00000000000027fe8806381ae2a0-- --00000000000027fe8906381ae2a2 Content-Type: application/x-patch; name="v21-0012-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Disposition: attachment; filename="v21-0012-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8ui0 RnJvbSAyMmU1MGYyOTkyZmIyNTg5ZDNjNDQ0MGMxM2YyZTc3NmYyNTg3ZmQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDoyNDo0OCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIxIDEyLzEyXSBSZW1vdmUgUFJPQ19JTl9TQUZFX0lDIG9wdGltaXphdGlvbgoKVGhp cyBvcHRpbWl6YXRpb24gYWxsb3dlZCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUg b3RoZXIgaW5kZXhlcyB3aXRob3V0IGV4cHJlc3Npb25zIG9yIHByZWRpY2F0ZXMuIFdpdGggdGhl IG5ldyBzbmFwc2hvdCBoYW5kbGluZyBhcHByb2FjaCB0aGF0IHBlcmlvZGljYWxseSByZWZyZXNo ZXMgc25hcHNob3RzLCB0aGlzIG9wdGltaXphdGlvbiBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgoK VGhlIGNoYW5nZSBzaW1wbGlmaWVzIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQgY29kZSBieToKLSBy ZW1vdmluZyB0aGUgUFJPQ19JTl9TQUZFX0lDIHByb2Nlc3Mgc3RhdHVzIGZsYWcKLSBlbGltaW5h dGluZyBzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpIGNhbGxzIGFuZCByZWxhdGVkIGxvZ2ljCi0g cmVtb3Zpbmcgc3BlY2lhbCBjYXNlIGhhbmRsaW5nIGluIEdldEN1cnJlbnRWaXJ0dWFsWElEcygp Ci0gcmVtb3ZpbmcgcmVsYXRlZCB0ZXN0IGNhc2VzIGFuZCBpbmplY3Rpb24gcG9pbnRzCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwgICA2ICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jICAgICAgICAgICAgfCAgIDYgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAgICB8ICAgNiArLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwgMTQyICstLS0tLS0t LS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggICAgICAgICAgICAgICAgICAg IHwgICA4ICstCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUgICAg fCAgIDIgKy0KIC4uLi9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0ICAgICAgICAgICAgICAgICB8 ICA1MSAtLS0tLS0tCiBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVp bGQgfCAgIDEgLQogLi4uL2luamVjdGlvbl9wb2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwgICAg IHwgIDI4IC0tLS0KIDkgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMjM3IGRlbGV0 aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9yZWluZGV4X2NvbmMuc3FsCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbi5jCmluZGV4IDk0N2RjNzliMTM4Li5hNTlmODRhNDI1MSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYwpAQCAtMjg5MywxMSArMjg5Myw5IEBAIF9icmluX3BhcmFsbGVsX2J1aWxkX21h aW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCWludAkJCXNvcnRtZW07CiAKIAkv KgotCSAqIFRoZSBvbmx5IHBvc3NpYmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNldCB0byB0 aGUgcGFyYWxsZWwgd29ya2VyIGlzCi0JICogUFJPQ19JTl9TQUZFX0lDLgorCSAqIFRoZXJlIGFy ZSBubyBwb3NzaWJsZSBzdGF0dXMgZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBhcmFsbGVs IHdvcmtlci4KIAkgKi8KLQlBc3NlcnQoKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCkgfHwKLQkJ ICAgKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gUFJPQ19JTl9TQUZFX0lDKSk7CisJQXNzZXJ0KE15 UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCk7CiAKIAkvKiBTZXQgZGVidWdfcXVlcnlfc3RyaW5nIGZv ciBpbmRpdmlkdWFsIHdvcmtlcnMgZmlyc3QgKi8KIAlzaGFyZWRxdWVyeSA9IHNobV90b2NfbG9v a3VwKHRvYywgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4v Z2luaW5zZXJ0LmMKaW5kZXggNjI5ZjZkNWYyYzAuLmRmNzliNTg1MGY5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luaW5zZXJ0LmMKQEAgLTIxMDYsMTEgKzIxMDYsOSBAQCBfZ2luX3BhcmFsbGVsX2J1 aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCWludAkJCXNvcnRtZW07 CiAKIAkvKgotCSAqIFRoZSBvbmx5IHBvc3NpYmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNl dCB0byB0aGUgcGFyYWxsZWwgd29ya2VyIGlzCi0JICogUFJPQ19JTl9TQUZFX0lDLgorCSAqIFRo ZXJlIGFyZSBubyBwb3NzaWJsZSBzdGF0dXMgZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBh cmFsbGVsIHdvcmtlci4KIAkgKi8KLQlBc3NlcnQoKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCkg fHwKLQkJICAgKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gUFJPQ19JTl9TQUZFX0lDKSk7CisJQXNz ZXJ0KE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCk7CiAKIAkvKiBTZXQgZGVidWdfcXVlcnlfc3Ry aW5nIGZvciBpbmRpdmlkdWFsIHdvcmtlcnMgZmlyc3QgKi8KIAlzaGFyZWRxdWVyeSA9IHNobV90 b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQsIHRydWUpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCAyNTBkOWQ1OWI5YS4uZjgwMzc5NjE4YjIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0xOTEwLDExICsxOTEwLDkgQEAgX2J0X3Bh cmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogI2VuZGlm CQkJCQkJCS8qIEJUUkVFX0JVSUxEX1NUQVRTICovCiAKIAkvKgotCSAqIFRoZSBvbmx5IHBvc3Np YmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNldCB0byB0aGUgcGFyYWxsZWwgd29ya2VyIGlz Ci0JICogUFJPQ19JTl9TQUZFX0lDLgorCSAqIFRoZXJlIGFyZSBubyBwb3NzaWJsZSBzdGF0dXMg ZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBhcmFsbGVsIHdvcmtlci4KIAkgKi8KLQlBc3Nl cnQoKE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0gMCkgfHwKLQkJICAgKE15UHJvYy0+c3RhdHVzRmxh Z3MgPT0gUFJPQ19JTl9TQUZFX0lDKSk7CisJQXNzZXJ0KE15UHJvYy0+c3RhdHVzRmxhZ3MgPT0g MCk7CiAKIAkvKiBTZXQgZGVidWdfcXVlcnlfc3RyaW5nIGZvciBpbmRpdmlkdWFsIHdvcmtlcnMg Zmlyc3QgKi8KIAlzaGFyZWRxdWVyeSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X1FVRVJZX1RFWFQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBkZDI4MGEz OGMzOS4uMDQ3OGM5YWM3YjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xMTUsNyAr MTE1LDYgQEAgc3RhdGljIGJvb2wgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LAogCQkJCQkJCQkJCU9pZCByZWxhdGlvbk9pZCwKIAkJCQkJCQkJCQlj b25zdCBSZWluZGV4UGFyYW1zICpwYXJhbXMpOwogc3RhdGljIHZvaWQgdXBkYXRlX3JlbGlzcGFy dGl0aW9uKE9pZCByZWxhdGlvbklkLCBib29sIG5ld3ZhbCk7Ci1zdGF0aWMgaW5saW5lIHZvaWQg c2V0X2luZGV4c2FmZV9wcm9jZmxhZ3Modm9pZCk7CiAKIC8qCiAgKiBjYWxsYmFjayBhcmd1bWVu dCB0eXBlIGZvciBSYW5nZVZhckNhbGxiYWNrRm9yUmVpbmRleEluZGV4KCkKQEAgLTQxOCwxMCAr NDE3LDcgQEAgQ29tcGFyZU9wY2xhc3NPcHRpb25zKGNvbnN0IERhdHVtICpvcHRzMSwgY29uc3Qg RGF0dW0gKm9wdHMyLCBpbnQgbmF0dHMpCiAgKiBsYXp5IFZBQ1VVTXMsIGJlY2F1c2UgdGhleSB3 b24ndCBiZSBmYXplZCBieSBtaXNzaW5nIGluZGV4IGVudHJpZXMKICAqIGVpdGhlci4gIChNYW51 YWwgQU5BTFlaRXMsIGhvd2V2ZXIsIGNhbid0IGJlIGV4Y2x1ZGVkIGJlY2F1c2UgdGhleQogICog bWlnaHQgYmUgd2l0aGluIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBnb2luZyB0byBkbyBhcmJpdHJh cnkgb3BlcmF0aW9ucwotICogbGF0ZXIuKSAgUHJvY2Vzc2VzIHJ1bm5pbmcgQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBvciBSRUlOREVYIENPTkNVUlJFTlRMWQotICogb24gaW5kZXhlcyB0aGF0 IGFyZSBuZWl0aGVyIGV4cHJlc3Npb25hbCBub3IgcGFydGlhbCBhcmUgYWxzbyBzYWZlIHRvCi0g KiBpZ25vcmUsIHNpbmNlIHdlIGtub3cgdGhhdCB0aG9zZSBwcm9jZXNzZXMgd29uJ3QgZXhhbWlu ZSBhbnkgZGF0YQotICogb3V0c2lkZSB0aGUgdGFibGUgdGhleSdyZSBpbmRleGluZy4KKyAqIGxh dGVyLikKICAqCiAgKiBBbHNvLCBHZXRDdXJyZW50VmlydHVhbFhJRHMgbmV2ZXIgcmVwb3J0cyBv dXIgb3duIHZ4aWQsIHNvIHdlIG5lZWQgbm90CiAgKiBjaGVjayBmb3IgdGhhdC4KQEAgLTQ0Miw4 ICs0MzgsNyBAQCBXYWl0Rm9yT2xkZXJTbmFwc2hvdHMoVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW4s IGJvb2wgcHJvZ3Jlc3MpCiAJVmlydHVhbFRyYW5zYWN0aW9uSWQgKm9sZF9zbmFwc2hvdHM7CiAK IAlvbGRfc25hcHNob3RzID0gR2V0Q3VycmVudFZpcnR1YWxYSURzKGxpbWl0WG1pbiwgdHJ1ZSwg ZmFsc2UsCi0JCQkJCQkJCQkJICBQUk9DX0lTX0FVVE9WQUNVVU0gfCBQUk9DX0lOX1ZBQ1VVTQot CQkJCQkJCQkJCSAgfCBQUk9DX0lOX1NBRkVfSUMsCisJCQkJCQkJCQkJICBQUk9DX0lTX0FVVE9W QUNVVU0gfCBQUk9DX0lOX1ZBQ1VVTSwKIAkJCQkJCQkJCQkgICZuX29sZF9zbmFwc2hvdHMpOwog CWlmIChwcm9ncmVzcykKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19X QUlURk9SX1RPVEFMLCBuX29sZF9zbmFwc2hvdHMpOwpAQCAtNDYzLDggKzQ1OCw3IEBAIFdhaXRG b3JPbGRlclNuYXBzaG90cyhUcmFuc2FjdGlvbklkIGxpbWl0WG1pbiwgYm9vbCBwcm9ncmVzcykK IAogCQkJbmV3ZXJfc25hcHNob3RzID0gR2V0Q3VycmVudFZpcnR1YWxYSURzKGxpbWl0WG1pbiwK IAkJCQkJCQkJCQkJCQl0cnVlLCBmYWxzZSwKLQkJCQkJCQkJCQkJCQlQUk9DX0lTX0FVVE9WQUNV VU0gfCBQUk9DX0lOX1ZBQ1VVTQotCQkJCQkJCQkJCQkJCXwgUFJPQ19JTl9TQUZFX0lDLAorCQkJ CQkJCQkJCQkJCVBST0NfSVNfQVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNLAogCQkJCQkJCQkJ CQkJCSZuX25ld2VyX3NuYXBzaG90cyk7CiAJCQlmb3IgKGogPSBpOyBqIDwgbl9vbGRfc25hcHNo b3RzOyBqKyspCiAJCQl7CkBAIC01NzgsNyArNTcyLDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxl SWQsCiAJYW1vcHRpb25zX2Z1bmN0aW9uIGFtb3B0aW9uczsKIAlib29sCQlleGNsdXNpb247CiAJ Ym9vbAkJcGFydGl0aW9uZWQ7Ci0JYm9vbAkJc2FmZV9pbmRleDsKIAlEYXR1bQkJcmVsb3B0aW9u czsKIAlpbnQxNgkgICAqY29sb3B0aW9uczsKIAlJbmRleEluZm8gICppbmRleEluZm87CkBAIC0x MTgyLDEwICsxMTc1LDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCX0KIAl9CiAKLQkv KiBJcyBpbmRleCBzYWZlIGZvciBvdGhlcnMgdG8gaWdub3JlPyAgU2VlIHNldF9pbmRleHNhZmVf cHJvY2ZsYWdzKCkgKi8KLQlzYWZlX2luZGV4ID0gaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyA9 PSBOSUwgJiYKLQkJaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUgPT0gTklMOwotCiAJLyoKIAkgKiBS ZXBvcnQgaW5kZXggY3JlYXRpb24gaWYgYXBwcm9wcmlhdGUgKGRlbGF5IHRoaXMgdGlsbCBhZnRl ciBtb3N0IG9mIHRoZQogCSAqIGVycm9yIGNoZWNrcykKQEAgLTE2NzEsMTAgKzE2NjAsNiBAQCBE ZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1 aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4 KQotCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJLyoKIAkgKiBUaGUgaW5kZXggaXMg bm93IHZpc2libGUsIHNvIHdlIGNhbiByZXBvcnQgdGhlIE9JRC4gIFdoaWxlIG9uIGl0LAogCSAq IGluY2x1ZGUgdGhlIHJlcG9ydCBmb3IgdGhlIGJlZ2lubmluZyBvZiBwaGFzZSAyLgpAQCAtMTcy OSw5ICsxNzE0LDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFRlbGwgY29u Y3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8K LQlpZiAoc2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKIAlwZ3N0YXRf cHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7CiAJLyoKQEAgLTE3NjEsMTAgKzE3NDMs NiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGlu ZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZl X2luZGV4KQotCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJLyoKIAkgKiBQaGFzZSAz IG9mIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQKIAkgKgpAQCAtMTc5MCw5ICsxNzY4LDcgQEAgRGVm aW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWls ZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQlpZiAoc2FmZV9pbmRleCkK LQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKwogCS8qCiAJICogTWVyZ2UgY29udGVudCBv ZiBhdXhpbGlhcnkgYW5kIHRhcmdldCBpbmRleGVzIC0gaW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4 IGVudHJpZXMuCiAJICovCkBAIC0xODA5LDkgKzE3ODUsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFi bGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29t bWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMs IGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5kZXhzYWZl X3Byb2NmbGFncygpOwogCiAJLyogV2Ugc2hvdWxkIG5vdyBkZWZpbml0ZWx5IG5vdCBiZSBhZHZl cnRpc2luZyBhbnkgeG1pbi4gKi8KIAlBc3NlcnQoTXlQcm9jLT54bWluID09IEludmFsaWRUcmFu c2FjdGlvbklkKTsKQEAgLTE4NTIsMTAgKzE4MjUsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJ ZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlm IGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5kZXhzYWZlX3By b2NmbGFncygpOwotCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVB VEVJRFhfUEhBU0UsCiAJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzUpOwog CS8qIE5vdyB3YWl0IGZvciBhbGwgdHJhbnNhY3Rpb24gdG8gc2VlIGF1eGlsaWFyeSBhcyAibm9u LXJlYWR5IGZvciBpbnNlcnRzIiAqLwpAQCAtMTg3NiwxMCArMTg0NSw2IEBAIERlZmluZUluZGV4 KE9pZCB0YWJsZUlkLAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGln bm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNldF9p bmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1dBSVRfNik7CiAJLyogTm93IHdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbiB0byBpZ25vcmUgYXV4 aWxpYXJ5IGJlY2F1c2UgaXQgaXMgZGVhZCAqLwpAQCAtMzY1NCw3ICszNjE5LDYgQEAgUmVpbmRl eFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRp b25PaWQsIGNvbnN0IFJlaW4KIAkJT2lkCQkJanVua0F1eEluZGV4SWQ7CiAJCU9pZAkJCXRhYmxl SWQ7CiAJCU9pZAkJCWFtSWQ7Ci0JCWJvb2wJCXNhZmU7CQkvKiBmb3Igc2V0X2luZGV4c2FmZV9w cm9jZmxhZ3MgKi8KIAl9IFJlaW5kZXhJbmRleEluZm87CiAJTGlzdAkgICAqaGVhcFJlbGF0aW9u SWRzID0gTklMOwogCUxpc3QJICAgKmluZGV4SWRzID0gTklMOwpAQCAtNDAyOCwxNyArMzk5Miw2 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVz dExldmVsKCk7CiAJCVJlc3RyaWN0U2VhcmNoUGF0aCgpOwogCi0JCS8qIGRldGVybWluZSBzYWZl dHkgb2YgdGhpcyBpbmRleCBmb3Igc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MgKi8KLQkJaWR4LT5z YWZlID0gKFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpbmRleFJlbCkgPT0gTklMICYmCi0J CQkJCSBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGluZGV4UmVsKSA9PSBOSUwpOwotCi0jaWZk ZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKLQkJaWYgKGlkeC0+c2FmZSkKLQkJCUlOSkVDVElPTl9Q T0lOVCgicmVpbmRleC1jb25jLWluZGV4LXNhZmUiLCBOVUxMKTsKLQkJZWxzZQotCQkJSU5KRUNU SU9OX1BPSU5UKCJyZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUiLCBOVUxMKTsKLSNlbmRpZgot CiAJCWlkeC0+dGFibGVJZCA9IFJlbGF0aW9uR2V0UmVsaWQoaGVhcFJlbCk7CiAJCWlkeC0+YW1J ZCA9IGluZGV4UmVsLT5yZF9yZWwtPnJlbGFtOwogCkBAIC00MTA0LDcgKzQwNTcsNiBAQCBSZWlu ZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxh dGlvbk9pZCwgY29uc3QgUmVpbgogCQluZXdpZHgtPmluZGV4SWQgPSBuZXdJbmRleElkOwogCQlu ZXdpZHgtPmF1eEluZGV4SWQgPSBhdXhJbmRleElkOwogCQluZXdpZHgtPmp1bmtBdXhJbmRleElk ID0ganVua0F1eEluZGV4SWQ7Ci0JCW5ld2lkeC0+c2FmZSA9IGlkeC0+c2FmZTsKIAkJbmV3aWR4 LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwogCQluZXdpZHgtPmFtSWQgPSBpZHgtPmFtSWQ7CiAK QEAgLTQyMDUsMTEgKzQxNTcsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKgot CSAqIEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IGluIHRoaXMgdHJhbnNhY3Rpb24s IHRoZXJlJ3Mgbm8gbmVlZAotCSAqIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVy ZS4KLQkgKi8KLQogCS8qCiAJICogUGhhc2UgMiBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAq CkBAIC00MjQxLDEwICs0MTg4LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICovCiAJ CUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5n IHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JCWlmIChuZXdpZHgtPnNhZmUp Ci0JCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJCS8qIEJ1aWxkIGF1eGlsaWFyeSBp bmRleCwgaXQgaXMgZmFzdCAtIHdpdGhvdXQgYW55IGFjdHVhbCBoZWFwIHNjYW4sIGp1c3QgYW4g ZW1wdHkgaW5kZXguICovCiAJCWluZGV4X2NvbmN1cnJlbnRseV9idWlsZChuZXdpZHgtPnRhYmxl SWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CiAKQEAgLTQyNTMsMTEgKzQxOTYsNiBAQCBSZWluZGV4 UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlv bk9pZCwgY29uc3QgUmVpbgogCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qCi0J ICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3QgaW4gdGhpcyB0cmFuc2FjdGlvbiwg dGhlcmUncyBubyBuZWVkCi0JICogdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJl LgotCSAqLwotCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKIAkv KgpAQCAtNDI4MiwxMCArNDIyMCw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqLwog CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCS8qIFRlbGwgY29uY3VycmVudCBpbmRleGlu ZyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCQlpZiAobmV3aWR4LT5zYWZl KQotCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCQkvKgogCQkgKiBVcGRhdGUgcHJv Z3Jlc3MgZm9yIHRoZSBpbmRleCB0byBidWlsZCwgd2l0aCB0aGUgY29ycmVjdCBwYXJlbnQKIAkJ ICogdGFibGUgaW52b2x2ZWQuCkBAIC00MzA1LDExICs0MjM5LDYgQEAgUmVpbmRleFJlbGF0aW9u Q29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNv bnN0IFJlaW4KIAogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKgotCSAqIEJlY2F1 c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IG9yIFhpZCBpbiB0aGlzIHRyYW5zYWN0aW9uLCB0 aGVyZSdzIG5vCi0JICogbmVlZCB0byBzZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGhlcmUu Ci0JICovCi0KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMpOwogCVdh aXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7CkBAIC00MzMx LDEwICs0MjYwLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICovCiAJCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CiAKLQkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9y ZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JCWlmIChuZXdpZHgtPnNhZmUpCi0JCQlzZXRf aW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJCS8qCiAJCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1p Z2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKIAkJICogaGF2ZSBh IHZhbGlkIHNuYXBzaG90LgpAQCAtNDM3MCwxMCArNDI5NSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNv bmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25z dCBSZWluCiAJCSAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCS8qIFRlbGwgY29u Y3VycmVudCBpbmRleGluZyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCQlp ZiAobmV3aWR4LT5zYWZlKQotCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCQkvKgog CQkgKiBVcGRhdGUgcHJvZ3Jlc3MgZm9yIHRoZSBpbmRleCB0byBidWlsZCwgd2l0aCB0aGUgY29y cmVjdCBwYXJlbnQKIAkJICogdGFibGUgaW52b2x2ZWQuCkBAIC00NDAxLDkgKzQzMjIsNiBAQCBS ZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBy ZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkgKiBpbnRlcmVzdGluZyB0dXBsZXMuICBCdXQgc2lu Y2UgaXQgbWlnaHQgbm90IGNvbnRhaW4gdHVwbGVzIGRlbGV0ZWQKIAkJICoganVzdCBiZWZvcmUg dGhlIGxhdGVzdCBzbmFwIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKIAkJICog dHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgaGF2ZSBvbGRlciBzbmFwc2hvdHMuCi0JCSAqCi0JCSAq IEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IG9yIFhpZCBpbiB0aGlzIHRyYW5zYWN0 aW9uLAotCQkgKiB0aGVyZSdzIG5vIG5lZWQgdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxh ZyBoZXJlLgogCQkgKi8KIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRf NCk7CkBAIC00NDI1LDEzICs0MzQzLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNv bnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAlJTkpF Q1RJT05fUE9JTlQoInJlaW5kZXhfcmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zd2FwIiwg TlVMTCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qCi0JICogQmVjYXVzZSB0 aGlzIHRyYW5zYWN0aW9uIG9ubHkgZG9lcyBjYXRhbG9nIG1hbmlwdWxhdGlvbnMgYW5kIGRvZXNu J3QgZG8KLQkgKiBhbnkgaW5kZXggb3BlcmF0aW9ucywgd2UgY2FuIHNldCB0aGUgUFJPQ19JTl9T QUZFX0lDIGZsYWcgaGVyZQotCSAqIHVuY29uZGl0aW9uYWxseS4KLQkgKi8KLQlzZXRfaW5kZXhz YWZlX3Byb2NmbGFncygpOwotCiAJZm9yYm90aChsYywgaW5kZXhJZHMsIGxjMiwgbmV3SW5kZXhJ ZHMpCiAJewogCQlSZWluZGV4SW5kZXhJbmZvICpvbGRpZHggPSBsZmlyc3QobGMpOwpAQCAtNDQ4 NywxMiArNDM5OCw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4 U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qCi0JICogV2hp bGUgd2UgY291bGQgc2V0IFBST0NfSU5fU0FGRV9JQyBpZiBhbGwgaW5kZXhlcyBxdWFsaWZpZWQs IHRoZXJlJ3Mgbm8KLQkgKiByZWFsIG5lZWQgZm9yIHRoYXQsIGJlY2F1c2Ugd2Ugb25seSBhY3F1 aXJlIGFuIFhpZCBhZnRlciB0aGUgd2FpdCBpcwotCSAqIGRvbmUsIGFuZCB0aGF0IGxhc3RzIGZv ciBhIHZlcnkgc2hvcnQgcGVyaW9kLgotCSAqLwotCiAJLyoKIAkgKiBQaGFzZSA1IG9mIFJFSU5E RVggQ09OQ1VSUkVOVExZCiAJICoKQEAgLTQ1NTYsMTIgKzQ0NjEsNiBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rp b25Db21tYW5kKCk7CiAKLQkvKgotCSAqIFdoaWxlIHdlIGNvdWxkIHNldCBQUk9DX0lOX1NBRkVf SUMgaWYgYWxsIGluZGV4ZXMgcXVhbGlmaWVkLCB0aGVyZSdzIG5vCi0JICogcmVhbCBuZWVkIGZv ciB0aGF0LCBiZWNhdXNlIHdlIG9ubHkgYWNxdWlyZSBhbiBYaWQgYWZ0ZXIgdGhlIHdhaXQgaXMK LQkgKiBkb25lLCBhbmQgdGhhdCBsYXN0cyBmb3IgYSB2ZXJ5IHNob3J0IHBlcmlvZC4KLQkgKi8K LQogCS8qCiAJICogUGhhc2UgNiBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCkBAIC00ODI5 LDM2ICs0NzI4LDMgQEAgdXBkYXRlX3JlbGlzcGFydGl0aW9uKE9pZCByZWxhdGlvbklkLCBib29s IG5ld3ZhbCkKIAl0YWJsZV9jbG9zZShjbGFzc1JlbCwgUm93RXhjbHVzaXZlTG9jayk7CiB9CiAK LS8qCi0gKiBTZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGluIE15UHJvYy0+c3RhdHVzRmxh Z3MuCi0gKgotICogV2hlbiBkb2luZyBjb25jdXJyZW50IGluZGV4IGJ1aWxkcywgd2UgY2FuIHNl dCB0aGlzIGZsYWcKLSAqIHRvIHRlbGwgb3RoZXIgcHJvY2Vzc2VzIGNvbmN1cnJlbnRseSBydW5u aW5nIENSRUFURQotICogSU5ERVggQ09OQ1VSUkVOVExZIG9yIFJFSU5ERVggQ09OQ1VSUkVOVExZ IHRvIGlnbm9yZSB1cyB3aGVuCi0gKiBkb2luZyB0aGVpciB3YWl0cyBmb3IgY29uY3VycmVudCBz bmFwc2hvdHMuICBPbiBvbmUgaGFuZCBpdAotICogYXZvaWRzIHBvaW50bGVzc2x5IHdhaXRpbmcg Zm9yIGEgcHJvY2VzcyB0aGF0J3Mgbm90IGludGVyZXN0aW5nCi0gKiBhbnl3YXk7IGJ1dCBtb3Jl IGltcG9ydGFudGx5IGl0IGF2b2lkcyBkZWFkbG9ja3MgaW4gc29tZSBjYXNlcy4KLSAqCi0gKiBU aGlzIGNhbiBiZSBkb25lIHNhZmVseSBvbmx5IGZvciBpbmRleGVzIHRoYXQgZG9uJ3QgZXhlY3V0 ZSBhbnkKLSAqIGV4cHJlc3Npb25zIHRoYXQgY291bGQgYWNjZXNzIG90aGVyIHRhYmxlcywgc28g aW5kZXggbXVzdCBub3QgYmUKLSAqIGV4cHJlc3Npb25hbCBub3IgcGFydGlhbC4gIENhbGxlciBp cyByZXNwb25zaWJsZSBmb3Igb25seSBjYWxsaW5nCi0gKiB0aGlzIHJvdXRpbmUgd2hlbiB0aGF0 IGFzc3VtcHRpb24gaG9sZHMgdHJ1ZS4KLSAqCi0gKiAoVGhlIGZsYWcgaXMgcmVzZXQgYXV0b21h dGljYWxseSBhdCB0cmFuc2FjdGlvbiBlbmQsIHNvIGl0IG11c3QgYmUKLSAqIHNldCBmb3IgZWFj aCB0cmFuc2FjdGlvbi4pCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAotc2V0X2luZGV4c2FmZV9w cm9jZmxhZ3Modm9pZCkKLXsKLQkvKgotCSAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJl Zm9yZSBpbnN0YWxsaW5nIHhpZCBvciB4bWluIGluIE15UHJvYzsKLQkgKiBvdGhlcndpc2UsIGNv bmN1cnJlbnQgcHJvY2Vzc2VzIGNvdWxkIHNlZSBhbiBYbWluIHRoYXQgbW92ZXMgYmFja3dhcmRz LgotCSAqLwotCUFzc2VydChNeVByb2MtPnhpZCA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCAmJgot CQkgICBNeVByb2MtPnhtaW4gPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpOwotCi0JTFdMb2NrQWNx dWlyZShQcm9jQXJyYXlMb2NrLCBMV19FWENMVVNJVkUpOwotCU15UHJvYy0+c3RhdHVzRmxhZ3Mg fD0gUFJPQ19JTl9TQUZFX0lDOwotCVByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzW015UHJvYy0+cGd4 YWN0b2ZmXSA9IE15UHJvYy0+c3RhdHVzRmxhZ3M7Ci0JTFdMb2NrUmVsZWFzZShQcm9jQXJyYXlM b2NrKTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jLmgKaW5kZXggOWY5YjNmY2ZiZjEuLjVlMDc0NjZjNzM3IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2MuaApAQCAtNTYsMTAgKzU2LDYgQEAgc3RydWN0IFhpZENhY2hlCiAgKi8KICNkZWZp bmUJCVBST0NfSVNfQVVUT1ZBQ1VVTQkweDAxCS8qIGlzIGl0IGFuIGF1dG92YWMgd29ya2VyPyAq LwogI2RlZmluZQkJUFJPQ19JTl9WQUNVVU0JCTB4MDIJLyogY3VycmVudGx5IHJ1bm5pbmcgbGF6 eSB2YWN1dW0gKi8KLSNkZWZpbmUJCVBST0NfSU5fU0FGRV9JQwkJMHgwNAkvKiBjdXJyZW50bHkg cnVubmluZyBDUkVBVEUgSU5ERVgKLQkJCQkJCQkJCQkgKiBDT05DVVJSRU5UTFkgb3IgUkVJTkRF WAotCQkJCQkJCQkJCSAqIENPTkNVUlJFTlRMWSBvbiBub24tZXhwcmVzc2lvbmFsLAotCQkJCQkJ CQkJCSAqIG5vbi1wYXJ0aWFsIGluZGV4ICovCiAjZGVmaW5lCQlQUk9DX1ZBQ1VVTV9GT1JfV1JB UEFST1VORAkweDA4CS8qIHNldCBieSBhdXRvdmFjIG9ubHkgKi8KICNkZWZpbmUJCVBST0NfSU5f TE9HSUNBTF9ERUNPRElORwkweDEwCS8qIGN1cnJlbnRseSBkb2luZyBsb2dpY2FsCiAJCQkJCQkJ CQkJCQkgKiBkZWNvZGluZyBvdXRzaWRlIHhhY3QgKi8KQEAgLTY5LDEzICs2NSwxMyBAQCBzdHJ1 Y3QgWGlkQ2FjaGUKIAogLyogZmxhZ3MgcmVzZXQgYXQgRU9YYWN0ICovCiAjZGVmaW5lCQlQUk9D X1ZBQ1VVTV9TVEFURV9NQVNLIFwKLQkoUFJPQ19JTl9WQUNVVU0gfCBQUk9DX0lOX1NBRkVfSUMg fCBQUk9DX1ZBQ1VVTV9GT1JfV1JBUEFST1VORCkKKwkoUFJPQ19JTl9WQUNVVU0gfCBQUk9DX1ZB Q1VVTV9GT1JfV1JBUEFST1VORCkKIAogLyoKICAqIFhtaW4tcmVsYXRlZCBmbGFncy4gTWFrZSBz dXJlIGFueSBmbGFncyB0aGF0IGFmZmVjdCBob3cgdGhlIHByb2Nlc3MnIFhtaW4KICAqIHZhbHVl IGlzIGludGVycHJldGVkIGJ5IFZBQ1VVTSBhcmUgaW5jbHVkZWQgaGVyZS4KICAqLwotI2RlZmlu ZQkJUFJPQ19YTUlOX0ZMQUdTIChQUk9DX0lOX1ZBQ1VVTSB8IFBST0NfSU5fU0FGRV9JQykKKyNk ZWZpbmUJCVBST0NfWE1JTl9GTEFHUyAoUFJPQ19JTl9WQUNVVU0pCiAKIC8qCiAgKiBXZSBhbGxv dyBhIGxpbWl0ZWQgbnVtYmVyIG9mICJ3ZWFrIiByZWxhdGlvbiBsb2NrcyAoQWNjZXNzU2hhcmVM b2NrLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2Vm aWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCmluZGV4IDE5 ZDI2NDA4YzJhLi44MmFjZjMwMDZiZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9NYWtlZmlsZQpAQCAtMTEsNyArMTEsNyBAQCBFWFRFTlNJT04gPSBpbmplY3Rpb25fcG9p bnRzCiBEQVRBID0gaW5qZWN0aW9uX3BvaW50cy0tMS4wLnNxbAogUEdGSUxFREVTQyA9ICJpbmpl Y3Rpb25fcG9pbnRzIC0gZmFjaWxpdHkgZm9yIGluamVjdGlvbiBwb2ludHMiCiAKLVJFR1JFU1Mg PSBpbmplY3Rpb25fcG9pbnRzIGhhc2hhZ2cgcmVpbmRleF9jb25jIGNpY19yZXNldF9zbmFwc2hv dHMKK1JFR1JFU1MgPSBpbmplY3Rpb25fcG9pbnRzIGhhc2hhZ2cgY2ljX3Jlc2V0X3NuYXBzaG90 cwogUkVHUkVTU19PUFRTID0gLS1kbHBhdGg9JCh0b3BfYnVpbGRkaXIpL3NyYy90ZXN0L3JlZ3Jl c3MKIAogSVNPTEFUSU9OID0gYmFzaWMgaW5wbGFjZSBzeXNjYWNoZS11cGRhdGUtcHJ1bmVkCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvcmVp bmRleF9jb25jLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3Rl ZC9yZWluZGV4X2NvbmMub3V0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjhkZTRi YmU4NS4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRz L2V4cGVjdGVkL3JlaW5kZXhfY29uYy5vdXQKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBA Ci0tLSBUZXN0cyBmb3IgUkVJTkRFWCBDT05DVVJSRU5UTFkKLUNSRUFURSBFWFRFTlNJT04gaW5q ZWN0aW9uX3BvaW50czsKLS0tIENoZWNrIHNhZmV0eSBvZiBpbmRleGVzIHdpdGggcHJlZGljYXRl cyBhbmQgZXhwcmVzc2lvbnMuCi1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsK LSBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KLSAKLSgxIHJvdykKLQotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4 LWNvbmMtaW5kZXgtc2FmZScsICdub3RpY2UnKTsKLSBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLSgxIHJvdykKLQotU0VMRUNUIGluamVjdGlv bl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUnLCAnbm90aWNlJyk7 Ci0gaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0g Ci0oMSByb3cpCi0KLUNSRUFURSBTQ0hFTUEgcmVpbmRleF9pbmo7Ci1DUkVBVEUgVEFCTEUgcmVp bmRleF9pbmoudGJsKGkgaW50IHByaW1hcnkga2V5LCB1cGRhdGVkX2F0IHRpbWVzdGFtcCk7Ci1D UkVBVEUgVU5JUVVFIElOREVYIGluZF9zaW1wbGUgT04gcmVpbmRleF9pbmoudGJsKGkpOwotQ1JF QVRFIFVOSVFVRSBJTkRFWCBpbmRfZXhwciBPTiByZWluZGV4X2luai50YmwoQUJTKGkpKTsKLUNS RUFURSBVTklRVUUgSU5ERVggaW5kX3ByZWQgT04gcmVpbmRleF9pbmoudGJsKGkpIFdIRVJFIG1v ZChpLCAyKSA9IDA7Ci1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9leHByX3ByZWQgT04gcmVpbmRl eF9pbmoudGJsKGFicyhpKSkgV0hFUkUgbW9kKGksIDIpID0gMDsKLVJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9zaW1wbGU7Ci1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgcmVpbmRleC1jb25jLWluZGV4LXNhZmUKLVJFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9leHByOwotTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHJlaW5kZXgtY29uYy1pbmRleC1ub3Qtc2Fm ZQotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX3ByZWQ7Ci1OT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgcmVpbmRleC1jb25jLWlu ZGV4LW5vdC1zYWZlCi1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRf ZXhwcl9wcmVkOwotTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IHJlaW5kZXgtY29uYy1pbmRleC1ub3Qtc2FmZQotLS0gQ2xlYW51cAotU0VMRUNUIGluamVjdGlv bl9wb2ludHNfZGV0YWNoKCdyZWluZGV4LWNvbmMtaW5kZXgtc2FmZScpOwotIGluamVjdGlvbl9w b2ludHNfZGV0YWNoIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1T RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXgtY29uYy1pbmRleC1ub3Qtc2Fm ZScpOwotIGluamVjdGlvbl9wb2ludHNfZGV0YWNoIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotIAotKDEgcm93KQotCi1EUk9QIFRBQkxFIHJlaW5kZXhfaW5qLnRibDsKLURST1AgU0NIRU1B IHJlaW5kZXhfaW5qOwotRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCBiL3NyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAppbmRleCA4NDc2YmZlNzJh Ny4uYmRkZjIyZGYzYWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv bWVzb24uYnVpbGQKQEAgLTM2LDcgKzM2LDYgQEAgdGVzdHMgKz0gewogICAgICdzcWwnOiBbCiAg ICAgICAnaW5qZWN0aW9uX3BvaW50cycsCiAgICAgICAnaGFzaGFnZycsCi0gICAgICAncmVpbmRl eF9jb25jJywKICAgICAgICdjaWNfcmVzZXRfc25hcHNob3RzJywKICAgICBdLAogICAgICdyZWdy ZXNzX2FyZ3MnOiBbJy0tZGxwYXRoJywgbWVzb24uYnVpbGRfcm9vdCgpIC8gJ3NyYy90ZXN0L3Jl Z3Jlc3MnXSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9z cWwvcmVpbmRleF9jb25jLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9z cWwvcmVpbmRleF9jb25jLnNxbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNmMjEx ZTZkNWQuLjAwMDAwMDAwMDAwCi0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9zcWwvcmVpbmRleF9jb25jLnNxbAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLS0t IFRlc3RzIGZvciBSRUlOREVYIENPTkNVUlJFTlRMWQotQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rp b25fcG9pbnRzOwotCi0tLSBDaGVjayBzYWZldHkgb2YgaW5kZXhlcyB3aXRoIHByZWRpY2F0ZXMg YW5kIGV4cHJlc3Npb25zLgotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7Ci1T RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3JlaW5kZXgtY29uYy1pbmRleC1zYWZlJywg J25vdGljZScpOwotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LWNvbmMt aW5kZXgtbm90LXNhZmUnLCAnbm90aWNlJyk7Ci0KLUNSRUFURSBTQ0hFTUEgcmVpbmRleF9pbmo7 Ci1DUkVBVEUgVEFCTEUgcmVpbmRleF9pbmoudGJsKGkgaW50IHByaW1hcnkga2V5LCB1cGRhdGVk X2F0IHRpbWVzdGFtcCk7Ci0KLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX3NpbXBsZSBPTiByZWlu ZGV4X2luai50YmwoaSk7Ci1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9leHByIE9OIHJlaW5kZXhf aW5qLnRibChBQlMoaSkpOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfcHJlZCBPTiByZWluZGV4 X2luai50YmwoaSkgV0hFUkUgbW9kKGksIDIpID0gMDsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5k X2V4cHJfcHJlZCBPTiByZWluZGV4X2luai50YmwoYWJzKGkpKSBXSEVSRSBtb2QoaSwgMikgPSAw OwotCi1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRfc2ltcGxlOwot UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX2V4cHI7Ci1SRUlOREVY IElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRfcHJlZDsKLVJFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9leHByX3ByZWQ7Ci0KLS0tIENsZWFudXAKLVNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVpbmRleC1jb25jLWluZGV4LXNhZmUnKTsK LVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVpbmRleC1jb25jLWluZGV4LW5vdC1z YWZlJyk7Ci1EUk9QIFRBQkxFIHJlaW5kZXhfaW5qLnRibDsKLURST1AgU0NIRU1BIHJlaW5kZXhf aW5qOwotCi1EUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwotLSAKMi40My4wCgo= --00000000000027fe8906381ae2a2 Content-Type: application/x-patch; name="v21-0008-Use-auxiliary-indexes-for-concurrent-index-opera.patch" Content-Disposition: attachment; filename="v21-0008-Use-auxiliary-indexes-for-concurrent-index-opera.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8ut4 RnJvbSA0ZWZkYmJjNWFhZDEwZGRiMGIyODI2MDAxODc4NWI4MWIxYjdjMWI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNTowMzoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIxIDA4LzEyXSBVc2UgYXV4aWxpYXJ5IGluZGV4ZXMgZm9yIGNvbmN1cnJlbnQgaW5k ZXgKIG9wZXJhdGlvbnMKClJlcGxhY2UgdGhlIHNlY29uZCB0YWJsZSBmdWxsIHNjYW4gaW4gY29u Y3VycmVudCBpbmRleCBidWlsZHMgd2l0aCBhbiBhdXhpbGlhcnkgaW5kZXggYXBwcm9hY2g6Ci0g Y3JlYXRlIGEgU1RJUiAgYXV4aWxpYXJ5IGluZGV4IHdpdGggdGhlIHNhbWUgcHJlZGljYXRlIChp ZiBleGlzdHMpIGFzIGluIG1haW4gaW5kZXgKLSB1c2UgaXQgdG8gdHJhY2sgdHVwbGVzIGluc2Vy dGVkIGR1cmluZyB0aGUgZmlyc3QgcGhhc2UKLSBtZXJnZSBhdXhpbGlhcnkgaW5kZXggd2l0aCBt YWluIGluZGV4IGR1cmluZyB2YWxpZGF0aW9uIHRvIGNhdGNoIHVwIG5ldyBpbmRleCB3aXRoIGFu eSB0dXBsZXMgbWlzc2VkIGR1cmluZyB0aGUgZmlyc3QgcGhhc2UKLSBhdXRvbWF0aWNhbGx5IGRy b3AgYXV4aWxpYXJ5IHdoZW4gbWFpbiBpbmRleCBpcyByZWFkeQoKVG8gbWVyZ2UgbWFpbiBhbmQg YXV4aWxpYXJ5IGluZGV4ZXM6Ci0gaW5kZXhfYnVsa19kZWxldGUgY2FsbGVkIGZvciBib3RoLCBU SURzIHB1dCBpbnRvIHR1cGxlc29ydAotIGJvdGggdHVwbGVzb3J0IGFyZSBiZWluZyBzb3J0ZWQK LSBib3RoIHR1cGxlc29ydCBzY2FubmVkIHdpdGggdHdvIHBvaW50ZXJzIGxvb2tpbmcgZm9yIHRo ZSBUSURzIHByZXNlbnQgaW4gYXV4aWxpYXJ5IGluZGV4LCBidXQgYWJzZW50IGluIG1haW4gb25l Ci0gYWxsIHN1Y2ggVElEcyBhcmUgcHV0IGludG8gdHVwbGVzdG9yZQotIGFsbCBUSURzIGluIHR1 cGxlc3RvcmUgYXJlIGZldGNoZWQgdXNpbmcgdGhlIHN0cmVhbSwgdHVwbGVzdG9yZSB1c2VkIGlu IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX3JlYWRfc3RyZWFtX25leHQgdG8gcHJvdmlkZSB0 aGUgbmV4dCBwYWdlIHRvIHByZWZldGNoCi0gaWYgZmV0Y2hlZCB0dXBsZSBpcyBhbGl2ZSAtIGl0 IGlzIGluc2VydGVkIGludG8gdGhlIG1haW4gaW5kZXgKClRoaXMgZWxpbWluYXRlcyB0aGUgbmVl ZCBmb3IgYSBzZWNvbmQgZnVsbCB0YWJsZSBzY2FuIGR1cmluZyB2YWxpZGF0aW9uLCBpbXByb3Zp bmcgcGVyZm9ybWFuY2UgZXNwZWNpYWxseSBmb3IgbGFyZ2UgdGFibGVzLiBBZmZlY3RzIGJvdGgg Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg b3BlcmF0aW9ucy4KLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAg ICAgfCAgMjYgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgICAgICAgICB8 ICAzNCArLQogZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwgICAgICAgICAgICAgIHwgIDQx ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UICAgICAgICAgfCAgMTMgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICB8IDU0NSArKysrKysr KysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAg ICB8IDMxMyArKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bCAgICAgICB8ICAxNyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAg ICAgIHwgMzM0ICsrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jICAg ICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCAgICAgICAg ICAgICAgIHwgIDI4ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggICAgICAgICAgICAg ICAgfCAgIDkgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmggICAgICAgICAgICB8 ICAxMyArLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgIHwgICA0 ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCAgICAgICAgICAgICAgfCAgIDMgKy0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCB8ICA0MiArKwogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQgICAgIHwgICAzICstCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAgICAgfCAgMTcgKy0KIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgICAgICB8ICAyMSArCiAxOCBmaWxlcyBjaGFuZ2Vk LCAxMTIyIGluc2VydGlvbnMoKyksIDM0NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApp bmRleCA0MjY1YTIyZDRkZS4uOGNjZDY5YjE0YzIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9t b25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtNjMx NCw2ICs2MzE0LDE4IEBAIEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tl bmRpZDsKICAgICAgICBpbmZvcm1hdGlvbiBmb3IgdGhpcyBwaGFzZS4KICAgICAgIDwvZW50cnk+ CiAgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPndhaXRpbmcg Zm9yIHdyaXRlcnMgdG8gdXNlIGF1eGlsaWFyeSBpbmRleDwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgPGVudHJ5PgorICAgICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFk8L2Nv bW1hbmQ+IG9yIDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBpcyB3YWl0 aW5nIGZvciB0cmFuc2FjdGlvbnMKKyAgICAgICB3aXRoIHdyaXRlIGxvY2tzIHRoYXQgY2FuIHBv dGVudGlhbGx5IHNlZSB0aGUgdGFibGUgdG8gZmluaXNoLCB0byBlbnN1cmUgdXNlIG9mIGF1eGls aWFyeSBpbmRleCBmb3IgbmV3IHR1cGxlcyBpbgorICAgICAgIGZ1dHVyZSB0cmFuc2FjdGlvbnMu CisgICAgICAgVGhpcyBwaGFzZSBpcyBza2lwcGVkIHdoZW4gbm90IGluIGNvbmN1cnJlbnQgbW9k ZS4KKyAgICAgICBDb2x1bW5zIDxzdHJ1Y3RuYW1lPmxvY2tlcnNfdG90YWw8L3N0cnVjdG5hbWU+ LCA8c3RydWN0bmFtZT5sb2NrZXJzX2RvbmU8L3N0cnVjdG5hbWU+CisgICAgICAgYW5kIDxzdHJ1 Y3RuYW1lPmN1cnJlbnRfbG9ja2VyX3BpZDwvc3RydWN0bmFtZT4gY29udGFpbiB0aGUgcHJvZ3Jl c3MKKyAgICAgICBpbmZvcm1hdGlvbiBmb3IgdGhpcyBwaGFzZS4KKyAgICAgIDwvZW50cnk+Cisg ICAgIDwvcm93PgogICAgICA8cm93PgogICAgICAgPGVudHJ5PjxsaXRlcmFsPmJ1aWxkaW5nIGlu ZGV4PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+CkBAIC02MzU0LDEzICs2MzY2LDEy IEBAIEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAgICAg IDwvZW50cnk+CiAgICAgIDwvcm93PgogICAgICA8cm93PgotICAgICAgPGVudHJ5PjxsaXRlcmFs PmluZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIHRhYmxlPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICA8ZW50cnk+PGxpdGVyYWw+aW5kZXggdmFsaWRhdGlvbjogbWVyZ2luZyBpbmRleGVzPC9saXRl cmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+Ci0gICAgICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVY IENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgc2Nhbm5pbmcgdGhlIHRhYmxlCi0gICAgICAgdG8g dmFsaWRhdGUgdGhlIGluZGV4IHR1cGxlcyBjb2xsZWN0ZWQgaW4gdGhlIHByZXZpb3VzIHR3byBw aGFzZXMuCisgICAgICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFu ZD4gbWVyZ2luZyBjb250ZW50IG9mIGF1eGlsaWFyeSBpbmRleCB3aXRoIHRoZSB0YXJnZXQgaW5k ZXguCiAgICAgICAgVGhpcyBwaGFzZSBpcyBza2lwcGVkIHdoZW4gbm90IGluIGNvbmN1cnJlbnQg bW9kZS4KLSAgICAgICBDb2x1bW5zIDxzdHJ1Y3RuYW1lPmJsb2Nrc190b3RhbDwvc3RydWN0bmFt ZT4gKHNldCB0byB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgdGFibGUpCi0gICAgICAgYW5kIDxzdHJ1 Y3RuYW1lPmJsb2Nrc19kb25lPC9zdHJ1Y3RuYW1lPiBjb250YWluIHRoZSBwcm9ncmVzcyBpbmZv cm1hdGlvbiBmb3IgdGhpcyBwaGFzZS4KKyAgICAgICBDb2x1bW5zIDxzdHJ1Y3RuYW1lPnR1cGxl c190b3RhbDwvc3RydWN0bmFtZT4gKHNldCB0byB0aGUgbnVtYmVyIG9mIHR1cGxlcyB0byBiZSBt ZXJnZWQpCisgICAgICAgYW5kIDxzdHJ1Y3RuYW1lPnR1cGxlc19kb25lPC9zdHJ1Y3RuYW1lPiBj b250YWluIHRoZSBwcm9ncmVzcyBpbmZvcm1hdGlvbiBmb3IgdGhpcyBwaGFzZS4KICAgICAgIDwv ZW50cnk+CiAgICAgIDwvcm93PgogICAgICA8cm93PgpAQCAtNjM3Nyw4ICs2Mzg4LDkgQEAgRlJP TSBwZ19zdGF0X2dldF9iYWNrZW5kX2lkc2V0KCkgQVMgYmFja2VuZGlkOwogICAgICA8cm93Pgog ICAgICAgPGVudHJ5PjxsaXRlcmFsPndhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIG1hcmtpbmcg ZGVhZDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PgotICAgICAgIDxjb21tYW5kPlJF SU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBpcyB3YWl0aW5nIGZvciB0cmFuc2FjdGlvbnMK LSAgICAgICB3aXRoIHJlYWQgbG9ja3Mgb24gdGhlIHRhYmxlIHRvIGZpbmlzaCwgYmVmb3JlIG1h cmtpbmcgdGhlIG9sZCBpbmRleCBkZWFkLgorICAgICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBD T05DVVJSRU5UTFk8L2NvbW1hbmQ+IGlzIHdhaXRpbmcgZm9yIHRyYW5zYWN0aW9ucworICAgICAg ICB3aXRoIHJlYWQgbG9ja3Mgb24gdGhlIHRhYmxlIHRvIGZpbmlzaCwgYmVmb3JlIG1hcmtpbmcg dGhlIGF1eGlsaWFyeSBpbmRleCBhcyBkZWFkLgorICAgICAgIDxjb21tYW5kPlJFSU5ERVggQ09O Q1VSUkVOVExZPC9jb21tYW5kPiBpcyBhbHNvIHdhaXRpbmcgYmVmb3JlIG1hcmtpbmcgdGhlIG9s ZCBpbmRleCBhcyBkZWFkLgogICAgICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBp biBjb25jdXJyZW50IG1vZGUuCiAgICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5sb2NrZXJzX3Rv dGFsPC9zdHJ1Y3RuYW1lPiwgPHN0cnVjdG5hbWU+bG9ja2Vyc19kb25lPC9zdHJ1Y3RuYW1lPgog ICAgICAgIGFuZCA8c3RydWN0bmFtZT5jdXJyZW50X2xvY2tlcl9waWQ8L3N0cnVjdG5hbWU+IGNv bnRhaW4gdGhlIHByb2dyZXNzCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9p bmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbAppbmRleCBiOWM2 NzljNDFlOC4uMzBkYjA3OWM4ZDggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X2luZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbApAQCAt NjIwLDEwICs2MjAsMTAgQEAgQ1JFQVRFIFsgVU5JUVVFIF0gSU5ERVggWyBDT05DVVJSRU5UTFkg XSBbIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0KICAgICBvdXQgd3JpdGVz LiAgVGhpcyBtZXRob2QgaXMgaW52b2tlZCBieSBzcGVjaWZ5aW5nIHRoZQogICAgIDxsaXRlcmFs PkNPTkNVUlJFTlRMWTwvbGl0ZXJhbD4gb3B0aW9uIG9mIDxjb21tYW5kPkNSRUFURSBJTkRFWDwv Y29tbWFuZD4uCiAgICAgV2hlbiB0aGlzIG9wdGlvbiBpcyB1c2VkLAotICAgIDxwcm9kdWN0bmFt ZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gbXVzdCBwZXJmb3JtIHR3byBzY2FucyBvZiB0aGUg dGFibGUsIGFuZCBpbgotICAgIGFkZGl0aW9uIGl0IG11c3Qgd2FpdCBmb3IgYWxsIGV4aXN0aW5n IHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5Ci0gICAgbW9kaWZ5IG9yIHVzZSB0 aGUgaW5kZXggdG8gdGVybWluYXRlLiAgVGh1cwotICAgIHRoaXMgbWV0aG9kIHJlcXVpcmVzIG1v cmUgdG90YWwgd29yayB0aGFuIGEgc3RhbmRhcmQgaW5kZXggYnVpbGQgYW5kIHRha2VzCisgICAg PHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBtdXN0IHBlcmZvcm0gdGFibGUg c2NhbiBmb2xsb3dlZCBieQorICAgIHZhbGlkYXRpb24gcGhhc2UsIGFuZCBpbiBhZGRpdGlvbiBp dCBtdXN0IHdhaXQgZm9yIGFsbCBleGlzdGluZyB0cmFuc2FjdGlvbnMKKyAgICB0aGF0IGNvdWxk IHBvdGVudGlhbGx5IG1vZGlmeSBvciB1c2UgdGhlIGluZGV4IHRvIHRlcm1pbmF0ZS4gIFRodXMK KyAgICB0aGlzIG1ldGhvZCByZXF1aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJk IGluZGV4IGJ1aWxkIGFuZCBtYXkgdGFrZQogICAgIHNpZ25pZmljYW50bHkgbG9uZ2VyIHRvIGNv bXBsZXRlLiAgSG93ZXZlciwgc2luY2UgaXQgYWxsb3dzIG5vcm1hbAogICAgIG9wZXJhdGlvbnMg dG8gY29udGludWUgd2hpbGUgdGhlIGluZGV4IGlzIGJ1aWx0LCB0aGlzIG1ldGhvZCBpcyB1c2Vm dWwgZm9yCiAgICAgYWRkaW5nIG5ldyBpbmRleGVzIGluIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVu dC4gIE9mIGNvdXJzZSwgdGhlIGV4dHJhIENQVQpAQCAtNjMxLDE0ICs2MzEsMTQgQEAgQ1JFQVRF IFsgVU5JUVVFIF0gSU5ERVggWyBDT05DVVJSRU5UTFkgXSBbIFsgSUYgTk9UIEVYSVNUUyBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0KICAgIDwvcGFyYT4KIAogICAgPHBhcmE+Ci0gICAgSW4gYSBjb25j dXJyZW50IGluZGV4IGJ1aWxkLCB0aGUgaW5kZXggaXMgYWN0dWFsbHkgZW50ZXJlZCBhcyBhbgot ICAgIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gaW5kZXggaW50bwotICAgIHRoZSBzeXN0ZW0gY2F0 YWxvZ3MgaW4gb25lIHRyYW5zYWN0aW9uLCB0aGVuIHR3byB0YWJsZSBzY2FucyBvY2N1ciBpbgot ICAgIHR3byBtb3JlIHRyYW5zYWN0aW9ucy4gIEJlZm9yZSBlYWNoIHRhYmxlIHNjYW4sIHRoZSBp bmRleCBidWlsZCBtdXN0CisgICAgSW4gYSBjb25jdXJyZW50IGluZGV4IGJ1aWxkLCB0aGUgbWFp biBhbmQgYXV4aWxpYXJ5IGluZGV4ZXMgaXMgYWN0dWFsbHkKKyAgICBlbnRlcmVkIGFzIGFuIDxx dW90ZT5pbnZhbGlkPC9xdW90ZT4gaW5kZXggaW50bworICAgIHRoZSBzeXN0ZW0gY2F0YWxvZ3Mg aW4gb25lIHRyYW5zYWN0aW9uLCB0aGVuIHR3byBwaGFzZXMgb2NjdXIgaW4KKyAgICBtdWx0aXBs ZSB0cmFuc2FjdGlvbnMuICBCZWZvcmUgZWFjaCBwaGFzZSwgdGhlIGluZGV4IGJ1aWxkIG11c3QK ICAgICB3YWl0IGZvciBleGlzdGluZyB0cmFuc2FjdGlvbnMgdGhhdCBoYXZlIG1vZGlmaWVkIHRo ZSB0YWJsZSB0byB0ZXJtaW5hdGUuCi0gICAgQWZ0ZXIgdGhlIHNlY29uZCBzY2FuLCB0aGUgaW5k ZXggYnVpbGQgbXVzdCB3YWl0IGZvciBhbnkgdHJhbnNhY3Rpb25zCisgICAgQWZ0ZXIgdGhlIHNl Y29uZCBwaGFzZSwgdGhlIGluZGV4IGJ1aWxkIG11c3Qgd2FpdCBmb3IgYW55IHRyYW5zYWN0aW9u cwogICAgIHRoYXQgaGF2ZSBhIHNuYXBzaG90IChzZWUgPHhyZWYgbGlua2VuZD0ibXZjYyIvPikg cHJlZGF0aW5nIHRoZSBzZWNvbmQKLSAgICBzY2FuIHRvIHRlcm1pbmF0ZSwgaW5jbHVkaW5nIHRy YW5zYWN0aW9ucyB1c2VkIGJ5IGFueSBwaGFzZSBvZiBjb25jdXJyZW50CisgICAgcGhhc2UgdG8g dGVybWluYXRlLCBpbmNsdWRpbmcgdHJhbnNhY3Rpb25zIHVzZWQgYnkgYW55IHBoYXNlIG9mIGNv bmN1cnJlbnQKICAgICBpbmRleCBidWlsZHMgb24gb3RoZXIgdGFibGVzLCBpZiB0aGUgaW5kZXhl cyBpbnZvbHZlZCBhcmUgcGFydGlhbCBvciBoYXZlCiAgICAgY29sdW1ucyB0aGF0IGFyZSBub3Qg c2ltcGxlIGNvbHVtbiByZWZlcmVuY2VzLgogICAgIFRoZW4gZmluYWxseSB0aGUgaW5kZXggY2Fu IGJlIG1hcmtlZCA8cXVvdGU+dmFsaWQ8L3F1b3RlPiBhbmQgcmVhZHkgZm9yIHVzZSwKQEAgLTY1 MSwxMCArNjUxLDExIEBAIENSRUFURSBbIFVOSVFVRSBdIElOREVYIFsgQ09OQ1VSUkVOVExZIF0g WyBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9CiAgICA8cGFyYT4KICAgICBJ ZiBhIHByb2JsZW0gYXJpc2VzIHdoaWxlIHNjYW5uaW5nIHRoZSB0YWJsZSwgc3VjaCBhcyBhIGRl YWRsb2NrIG9yIGEKICAgICB1bmlxdWVuZXNzIHZpb2xhdGlvbiBpbiBhIHVuaXF1ZSBpbmRleCwg dGhlIDxjb21tYW5kPkNSRUFURSBJTkRFWDwvY29tbWFuZD4KLSAgICBjb21tYW5kIHdpbGwgZmFp bCBidXQgbGVhdmUgYmVoaW5kIGFuIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gaW5kZXguIFRoaXMg aW5kZXgKLSAgICB3aWxsIGJlIGlnbm9yZWQgZm9yIHF1ZXJ5aW5nIHB1cnBvc2VzIGJlY2F1c2Ug aXQgbWlnaHQgYmUgaW5jb21wbGV0ZTsKLSAgICBob3dldmVyIGl0IHdpbGwgc3RpbGwgY29uc3Vt ZSB1cGRhdGUgb3ZlcmhlYWQuIFRoZSA8YXBwbGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+Ci0g ICAgPGNvbW1hbmQ+XGQ8L2NvbW1hbmQ+IGNvbW1hbmQgd2lsbCByZXBvcnQgc3VjaCBhbiBpbmRl eCBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPjoKKyAgICBjb21tYW5kIHdpbGwgZmFpbCBi dXQgbGVhdmUgYmVoaW5kIGFuIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gaW5kZXggYW5kIGl0cwor ICAgIGFzc29jaWF0ZWQgYXV4aWxpYXJ5IGluZGV4LiBUaGVzZSBpbmRleGVzCisgICAgd2lsbCBi ZSBpZ25vcmVkIGZvciBxdWVyeWluZyBwdXJwb3NlcyBiZWNhdXNlIHRoZXkgbWlnaHQgYmUgaW5j b21wbGV0ZTsKKyAgICBob3dldmVyIHRoZXkgd2lsbCBzdGlsbCBjb25zdW1lIHVwZGF0ZSBvdmVy aGVhZC4gVGhlIDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4KKyAgICA8Y29tbWFuZD5c ZDwvY29tbWFuZD4gY29tbWFuZCB3aWxsIHJlcG9ydCBzdWNoIGluZGV4ZXMgYXMgPGxpdGVyYWw+ SU5WQUxJRDwvbGl0ZXJhbD46CiAKIDxwcm9ncmFtbGlzdGluZz4KIHBvc3RncmVzPSMgXGQgdGFi CkBAIC02NjQsMTEgKzY2NSwxMiBAQCBwb3N0Z3Jlcz0jIFxkIHRhYgogIGNvbCAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8CiBJbmRleGVzOgogICAgICJpZHgiIGJ0cmVlIChj b2wpIElOVkFMSUQKKyAgICAiaWR4X2NjYXV4IiBzdGlyIChjb2wpIElOVkFMSUQKIDwvcHJvZ3Jh bWxpc3Rpbmc+CiAKICAgICBUaGUgcmVjb21tZW5kZWQgcmVjb3ZlcnkKLSAgICBtZXRob2QgaW4g c3VjaCBjYXNlcyBpcyB0byBkcm9wIHRoZSBpbmRleCBhbmQgdHJ5IGFnYWluIHRvIHBlcmZvcm0K LSAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPi4gIChBbm90 aGVyIHBvc3NpYmlsaXR5IGlzCisgICAgbWV0aG9kIGluIHN1Y2ggY2FzZXMgaXMgdG8gZHJvcCB0 aGVzZSBpbmRleGVzIGFuZCB0cnkgYWdhaW4gdG8gcGVyZm9ybQorICAgIDxjb21tYW5kPkNSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+LiAoQW5vdGhlciBwb3NzaWJpbGl0eSBpcwog ICAgIHRvIHJlYnVpbGQgdGhlIGluZGV4IHdpdGggPGNvbW1hbmQ+UkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFk8L2NvbW1hbmQ+KS4KICAgIDwvcGFyYT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9yZWluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbAppbmRl eCBjNDA1NTM5NzE0Ni4uNGVkM2M5NjkwMTIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv cmVpbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCkBAIC0zNjgs OSArMzY4LDggQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9w dGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgREEKICAgICA8cHJvZHVjdG5hbWU+UG9z dGdyZVNRTDwvcHJvZHVjdG5hbWU+IHN1cHBvcnRzIHJlYnVpbGRpbmcgaW5kZXhlcyB3aXRoIG1p bmltdW0gbG9ja2luZwogICAgIG9mIHdyaXRlcy4gIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkg c3BlY2lmeWluZyB0aGUKICAgICA8bGl0ZXJhbD5DT05DVVJSRU5UTFk8L2xpdGVyYWw+IG9wdGlv biBvZiA8Y29tbWFuZD5SRUlOREVYPC9jb21tYW5kPi4gV2hlbiB0aGlzIG9wdGlvbgotICAgIGlz IHVzZWQsIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gbXVzdCBwZXJmb3Jt IHR3byBzY2FucyBvZiB0aGUgdGFibGUKLSAgICBmb3IgZWFjaCBpbmRleCB0aGF0IG5lZWRzIHRv IGJlIHJlYnVpbHQgYW5kIHdhaXQgZm9yIHRlcm1pbmF0aW9uIG9mCi0gICAgYWxsIGV4aXN0aW5n IHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IHVzZSB0aGUgaW5kZXguCisgICAg aXMgdXNlZCwgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBtdXN0IHBlcmZv cm0gc2V2ZXJhbCBzdGVwcyB0byBlbnN1cmUgZGF0YQorICAgIGNvbnNpc3RlbmN5IHdoaWxlIGFs bG93aW5nIG5vcm1hbCBvcGVyYXRpb25zIHRvIGNvbnRpbnVlLgogICAgIFRoaXMgbWV0aG9kIHJl cXVpcmVzIG1vcmUgdG90YWwgd29yayB0aGFuIGEgc3RhbmRhcmQgaW5kZXgKICAgICByZWJ1aWxk IGFuZCB0YWtlcyBzaWduaWZpY2FudGx5IGxvbmdlciB0byBjb21wbGV0ZSBhcyBpdCBuZWVkcyB0 byB3YWl0CiAgICAgZm9yIHVuZmluaXNoZWQgdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgbW9kaWZ5 IHRoZSBpbmRleC4gSG93ZXZlciwgc2luY2UKQEAgLTM4OCw3ICszODcsNyBAQCBSRUlOREVYIFsg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywg Li4uXSApIF0geyBEQQogICAgIDxvcmRlcmVkbGlzdD4KICAgICAgPGxpc3RpdGVtPgogICAgICAg PHBhcmE+Ci0gICAgICAgQSBuZXcgdHJhbnNpZW50IGluZGV4IGRlZmluaXRpb24gaXMgYWRkZWQg dG8gdGhlIGNhdGFsb2cKKyAgICAgICBBIG5ldyB0cmFuc2llbnQgaW5kZXggZGVmaW5pdGlvbiBh bmQgYW4gYXV4aWxpYXJ5IGluZGV4IGFyZSBhZGRlZCB0byB0aGUgY2F0YWxvZwogICAgICAgIDxs aXRlcmFsPnBnX2luZGV4PC9saXRlcmFsPi4gIFRoaXMgZGVmaW5pdGlvbiB3aWxsIGJlIHVzZWQg dG8gcmVwbGFjZQogICAgICAgIHRoZSBvbGQgaW5kZXguICBBIDxsaXRlcmFsPlNIQVJFIFVQREFU RSBFWENMVVNJVkU8L2xpdGVyYWw+IGxvY2sgYXQKICAgICAgICBzZXNzaW9uIGxldmVsIGlzIHRh a2VuIG9uIHRoZSBpbmRleGVzIGJlaW5nIHJlaW5kZXhlZCBhcyB3ZWxsIGFzIHRoZWlyCkBAIC0z OTgsNyArMzk3LDE1IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAKICAgICAgPGxpc3RpdGVt PgogICAgICAgPHBhcmE+Ci0gICAgICAgQSBmaXJzdCBwYXNzIHRvIGJ1aWxkIHRoZSBpbmRleCBp cyBkb25lIGZvciBlYWNoIG5ldyBpbmRleC4gIE9uY2UgdGhlCisgICAgICAgVGhlIGF1eGlsaWFy eSBpbmRleCBpcyBtYXJrZWQgYXMgInJlYWR5IGZvciBpbnNlcnRzIiwgbWFraW5nCisgICAgICAg aXQgdmlzaWJsZSB0byBvdGhlciBzZXNzaW9ucy4gVGhpcyBpbmRleCBlZmZpY2llbnRseSB0cmFj a3MgYWxsIG5ldworICAgICAgIHR1cGxlcyBkdXJpbmcgdGhlIHJlaW5kZXggcHJvY2Vzcy4KKyAg ICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKworICAgICA8bGlzdGl0ZW0+CisgICAgICA8 cGFyYT4KKyAgICAgICBUaGUgbmV3IG1haW4gaW5kZXggaXMgYnVpbHQgYnkgc2Nhbm5pbmcgdGhl IHRhYmxlLiAgT25jZSB0aGUKICAgICAgICBpbmRleCBpcyBidWlsdCwgaXRzIGZsYWcgPGxpdGVy YWw+cGdfaW5kZXguaW5kaXNyZWFkeTwvbGl0ZXJhbD4gaXMKICAgICAgICBzd2l0Y2hlZCB0byA8 cXVvdGU+dHJ1ZTwvcXVvdGU+IHRvIG1ha2UgaXQgcmVhZHkgZm9yIGluc2VydHMsIG1ha2luZyBp dAogICAgICAgIHZpc2libGUgdG8gb3RoZXIgc2Vzc2lvbnMgb25jZSB0aGUgdHJhbnNhY3Rpb24g dGhhdCBwZXJmb3JtZWQgdGhlIGJ1aWxkCkBAIC00MDksOSArNDE2LDkgQEAgUkVJTkRFWCBbICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4u Ll0gKSBdIHsgREEKIAogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBUaGVu IGEgc2Vjb25kIHBhc3MgaXMgcGVyZm9ybWVkIHRvIGFkZCB0dXBsZXMgdGhhdCB3ZXJlIGFkZGVk IHdoaWxlIHRoZQotICAgICAgIGZpcnN0IHBhc3Mgd2FzIHJ1bm5pbmcuICBUaGlzIHN0ZXAgaXMg YWxzbyBkb25lIGluIGEgc2VwYXJhdGUKLSAgICAgICB0cmFuc2FjdGlvbiBmb3IgZWFjaCBpbmRl eC4KKyAgICAgICBBIHZhbGlkYXRpb24gcGhhc2UgbWVyZ2VzIGFueSBtaXNzaW5nIGVudHJpZXMg ZnJvbSB0aGUgYXV4aWxpYXJ5IGluZGV4CisgICAgICAgaW50byB0aGUgbWFpbiBpbmRleCwgZW5z dXJpbmcgYWxsIGNvbmN1cnJlbnQgY2hhbmdlcyBhcmUgY2FwdHVyZWQuCisgICAgICAgVGhpcyBz dGVwIGlzIGFsc28gZG9uZSBpbiBhIHNlcGFyYXRlIHRyYW5zYWN0aW9uIGZvciBlYWNoIGluZGV4 LgogICAgICAgPC9wYXJhPgogICAgICA8L2xpc3RpdGVtPgogCkBAIC00MjgsNyArNDM1LDcgQEAg UkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFj ZWFibGU+IFssIC4uLl0gKSBdIHsgREEKIAogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4K LSAgICAgICBUaGUgb2xkIGluZGV4ZXMgaGF2ZSA8bGl0ZXJhbD5wZ19pbmRleC5pbmRpc3JlYWR5 PC9saXRlcmFsPiBzd2l0Y2hlZCB0bworICAgICAgIFRoZSBvbGQgYW5kIGF1eGlsaWFyeSBpbmRl eGVzIGhhdmUgPGxpdGVyYWw+cGdfaW5kZXguaW5kaXNyZWFkeTwvbGl0ZXJhbD4gc3dpdGNoZWQg dG8KICAgICAgICA8cXVvdGU+ZmFsc2U8L3F1b3RlPiB0byBwcmV2ZW50IGFueSBuZXcgdHVwbGUg aW5zZXJ0aW9ucywgYWZ0ZXIgd2FpdGluZwogICAgICAgIGZvciBydW5uaW5nIHF1ZXJpZXMgdGhh dCBtaWdodCByZWZlcmVuY2UgdGhlIG9sZCBpbmRleCB0byBjb21wbGV0ZS4KICAgICAgIDwvcGFy YT4KQEAgLTQzNiw3ICs0NDMsNyBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxs aXN0aXRlbT4KICAgICAgIDxwYXJhPgotICAgICAgIFRoZSBvbGQgaW5kZXhlcyBhcmUgZHJvcHBl ZC4gIFRoZSA8bGl0ZXJhbD5TSEFSRSBVUERBVEUKKyAgICAgICBUaGUgb2xkIGFuZCBhdXhpbGlh cnkgaW5kZXhlcyBhcmUgZHJvcHBlZC4gIFRoZSA8bGl0ZXJhbD5TSEFSRSBVUERBVEUKICAgICAg ICBFWENMVVNJVkU8L2xpdGVyYWw+IHNlc3Npb24gbG9ja3MgZm9yIHRoZSBpbmRleGVzIGFuZCB0 aGUgdGFibGUgYXJlCiAgICAgICAgcmVsZWFzZWQuCiAgICAgICA8L3BhcmE+CkBAIC00NDcsMTEg KzQ1NCwxMSBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0 aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogICAgPHBhcmE+CiAgICAgSWYgYSBw cm9ibGVtIGFyaXNlcyB3aGlsZSByZWJ1aWxkaW5nIHRoZSBpbmRleGVzLCBzdWNoIGFzIGEKICAg ICB1bmlxdWVuZXNzIHZpb2xhdGlvbiBpbiBhIHVuaXF1ZSBpbmRleCwgdGhlIDxjb21tYW5kPlJF SU5ERVg8L2NvbW1hbmQ+Ci0gICAgY29tbWFuZCB3aWxsIGZhaWwgYnV0IGxlYXZlIGJlaGluZCBh biA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IG5ldyBpbmRleCBpbiBhZGRpdGlvbiB0bwotICAgIHRo ZSBwcmUtZXhpc3Rpbmcgb25lLiBUaGlzIGluZGV4IHdpbGwgYmUgaWdub3JlZCBmb3IgcXVlcnlp bmcgcHVycG9zZXMKLSAgICBiZWNhdXNlIGl0IG1pZ2h0IGJlIGluY29tcGxldGU7IGhvd2V2ZXIg aXQgd2lsbCBzdGlsbCBjb25zdW1lIHVwZGF0ZQorICAgIGNvbW1hbmQgd2lsbCBmYWlsIGJ1dCBs ZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmludmFsaWQ8L3F1b3RlPiBuZXcgaW5kZXggYW5kIGl0cyBh dXhpbGlhcnkgaW5kZXggaW4gYWRkaXRpb24gdG8KKyAgICB0aGUgcHJlLWV4aXN0aW5nIG9uZS4g VGhlc2UgaW5kZXhlcyB3aWxsIGJlIGlnbm9yZWQgZm9yIHF1ZXJ5aW5nIHB1cnBvc2VzCisgICAg YmVjYXVzZSB0aGV5IG1pZ2h0IGJlIGluY29tcGxldGU7IGhvd2V2ZXIgdGhleSB3aWxsIHN0aWxs IGNvbnN1bWUgdXBkYXRlCiAgICAgb3ZlcmhlYWQuIFRoZSA8YXBwbGljYXRpb24+cHNxbDwvYXBw bGljYXRpb24+IDxjb21tYW5kPlxkPC9jb21tYW5kPiBjb21tYW5kIHdpbGwgcmVwb3J0Ci0gICAg c3VjaCBhbiBpbmRleCBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPjoKKyAgICBzdWNoIGlu ZGV4ZXMgYXMgPGxpdGVyYWw+SU5WQUxJRDwvbGl0ZXJhbD46CiAKIDxwcm9ncmFtbGlzdGluZz4K IHBvc3RncmVzPSMgXGQgdGFiCkBAIC00NjIsMTIgKzQ2OSwxNCBAQCBwb3N0Z3Jlcz0jIFxkIHRh YgogSW5kZXhlczoKICAgICAiaWR4IiBidHJlZSAoY29sKQogICAgICJpZHhfY2NuZXciIGJ0cmVl IChjb2wpIElOVkFMSUQKKyAgICAiaWR4X2NjYXV4IiBzdGlyIChjb2wpIElOVkFMSUQKKwogPC9w cm9ncmFtbGlzdGluZz4KIAogICAgIElmIHRoZSBpbmRleCBtYXJrZWQgPGxpdGVyYWw+SU5WQUxJ RDwvbGl0ZXJhbD4gaXMgc3VmZml4ZWQKLSAgICA8bGl0ZXJhbD5fY2NuZXc8L2xpdGVyYWw+LCB0 aGVuIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0cmFuc2llbnQKKyAgICA8bGl0ZXJhbD5fY2NuZXc8 L2xpdGVyYWw+IG9yIDxsaXRlcmFsPl9jY2F1eDwvbGl0ZXJhbD4sIHRoZW4gaXQgY29ycmVzcG9u ZHMgdG8gdGhlIHRyYW5zaWVudCBvciBhdXhpbGlhcnkKICAgICBpbmRleCBjcmVhdGVkIGR1cmlu ZyB0aGUgY29uY3VycmVudCBvcGVyYXRpb24sIGFuZCB0aGUgcmVjb21tZW5kZWQKLSAgICByZWNv dmVyeSBtZXRob2QgaXMgdG8gZHJvcCBpdCB1c2luZyA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRl cmFsPiwKKyAgICByZWNvdmVyeSBtZXRob2QgaXMgdG8gZHJvcCB0aGVzZSBpbmRleGVzIHVzaW5n IDxsaXRlcmFsPkRST1AgSU5ERVg8L2xpdGVyYWw+LAogICAgIHRoZW4gYXR0ZW1wdCA8Y29tbWFu ZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gYWdhaW4uCiAgICAgSWYgdGhlIGludmFs aWQgaW5kZXggaXMgaW5zdGVhZCBzdWZmaXhlZCA8bGl0ZXJhbD5fY2NvbGQ8L2xpdGVyYWw+LAog ICAgIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmlnaW5hbCBpbmRleCB3aGljaCBjb3VsZCBub3Qg YmUgZHJvcHBlZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5I T1QgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCmluZGV4IDgyOWRhZDExOTRl Li42ZjcxOGZlYjZkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1F LkhPVAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCkBAIC0zNzUsNiAr Mzc1LDExIEBAIGNvbnN0cmFpbnQgb24gd2hpY2ggdXBkYXRlcyBjYW4gYmUgSE9ULiAgT3RoZXIg dHJhbnNhY3Rpb25zIG11c3QgaW5jbHVkZQogc3VjaCBhbiBpbmRleCB3aGVuIGRldGVybWluaW5n IEhPVC1zYWZldHkgb2YgdXBkYXRlcywgZXZlbiB0aG91Z2ggdGhleQogbXVzdCBpZ25vcmUgaXQg Zm9yIGJvdGggaW5zZXJ0aW9uIGFuZCBzZWFyY2hpbmcgcHVycG9zZXMuCiAKK0Fsc28sIHNwZWNp YWwgYXV4aWxpYXJ5IGluZGV4IGlzIGNyZWF0ZWQgdGhlIHNhbWUgd2F5LiBJdCBtYXJrZWQgYXMK KyJyZWFkeSBmb3IgaW5zZXJ0cyIgd2l0aG91dCBhbnkgYWN0dWFsIHRhYmxlIHNjYW4uIEl0cyBw dXJwb3NlIGlzIGNvbGxlY3QKK25ldyB0dXBsZXMgaW5zZXJ0ZWQgaW50byB0YWJsZSB3aGlsZSBv dXIgdGFyZ2V0IGluZGV4IGlzIHN0aWxsICJub3QgcmVhZHkKK2ZvciBpbnNlcnRzIgorCiBXZSBt dXN0IGRvIHRoaXMgdG8gYXZvaWQgbWFraW5nIGluY29ycmVjdCBpbmRleCBlbnRyaWVzLiAgRm9y IGV4YW1wbGUsCiBzdXBwb3NlIHdlIGFyZSBidWlsZGluZyBhbiBpbmRleCBvbiBjb2x1bW4gWCBh bmQgd2UgbWFrZSBhbiBpbmRleCBlbnRyeSBmb3IKIGEgbm9uLUhPVCB0dXBsZSB3aXRoIFg9MS4g IFRoZW4gc29tZSBvdGhlciBiYWNrZW5kLCB1bmF3YXJlIHRoYXQgWCBpcyBhbgpAQCAtMzk0LDEw ICszOTksMTAgQEAgQXMgYWJvdmUsIHdlIHBvaW50IHRoZSBpbmRleCBlbnRyeSBhdCB0aGUgcm9v dCBvZiB0aGUgSE9ULXVwZGF0ZSBjaGFpbiBidXQgd2UKIHVzZSB0aGUga2V5IHZhbHVlIGZyb20g dGhlIGxpdmUgdHVwbGUuCiAKIFdlIG1hcmsgdGhlIGluZGV4IG9wZW4gZm9yIGluc2VydHMgKGJ1 dCBzdGlsbCBub3QgcmVhZHkgZm9yIHJlYWRzKSB0aGVuCi13ZSBhZ2FpbiB3YWl0IGZvciB0cmFu c2FjdGlvbnMgd2hpY2ggaGF2ZSB0aGUgdGFibGUgb3Blbi4gIFRoZW4gd2UgdGFrZQotYSBzZWNv bmQgcmVmZXJlbmNlIHNuYXBzaG90IGFuZCB2YWxpZGF0ZSB0aGUgaW5kZXguICBUaGlzIHNlYXJj aGVzIGZvcgotdHVwbGVzIG1pc3NpbmcgZnJvbSB0aGUgaW5kZXgsIGFuZCBpbnNlcnRzIGFueSBt aXNzaW5nIG9uZXMuICBBZ2FpbiwKLXRoZSBpbmRleCBlbnRyaWVzIGhhdmUgdG8gaGF2ZSBUSURz IGVxdWFsIHRvIEhPVC1jaGFpbiByb290IFRJRHMsIGJ1dAord2UgYWdhaW4gd2FpdCBmb3IgdHJh bnNhY3Rpb25zIHdoaWNoIGhhdmUgdGhlIHRhYmxlIG9wZW4uICBUaGVuIHZhbGlkYXRlCit0aGUg aW5kZXguICBUaGlzIHNlYXJjaGVzIGZvciB0dXBsZXMgbWlzc2luZyBmcm9tIHRoZSBpbmRleCBp biBhdXhpbGlhcnkKK2luZGV4LCBhbmQgaW5zZXJ0cyBhbnkgbWlzc2luZyBvbmVzIGlmIHRoZW0g dmlzaWJsZSB0byByZWZlcmVuY2Ugc25hcHNob3QuCitBZ2FpbiwgdGhlIGluZGV4IGVudHJpZXMg aGF2ZSB0byBoYXZlIFRJRHMgZXF1YWwgdG8gSE9ULWNoYWluIHJvb3QgVElEcywgYnV0CiB0aGUg dmFsdWUgdG8gYmUgaW5zZXJ0ZWQgaXMgdGhlIG9uZSBmcm9tIHRoZSBsaXZlIHR1cGxlLgogCiBU aGVuIHdlIHdhaXQgdW50aWwgZXZlcnkgdHJhbnNhY3Rpb24gdGhhdCBjb3VsZCBoYXZlIGEgc25h cHNob3Qgb2xkZXIgdGhhbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMK aW5kZXggNThmZmE0MzA2ZTIuLmY1OTJiMDllYzY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV9oYW5kbGVyLmMKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1 ZnBhZ2UuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3By ZWRpY2F0ZS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMv YnVpbHRpbnMuaCIKQEAgLTE3ODEsMjQzICsxNzgyLDQwNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRf cmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJcmV0dXJuIHJlbHR1cGxlczsKIH0K IAorLyoKKyAqIENhbGN1bGF0ZSBzZXQgZGlmZmVyZW5jZSAocmVsYXRpdmUgY29tcGxlbWVudCkg b2YgbWFpbiBhbmQgYXV4CisgKiBzZXRzLgorICoKKyAqIEFsbCByZWNvcmRzIHdoaWNoIGFyZSBw cmVzZW50IGluIGF1eGxpYXJ5IHR1cGxlc29ydCBidXQgbm90IGlzCisgKiBtYWluIGFyZSBhZGRl ZCB0byB0aGUgc3RvcmUuCisgKgorICogSW4gc2V0IHRoZW9yeSBub3RhdGlvbiBzdG9yZSA9IGF1 eCAtIG1haW4gb3Igc3RvcmUgPSBhdXggLyBtYWluLgorICoKKyAqIHJldHVybnMgbnVtYmVyIG9m IGl0ZW1zIGFkZGVkIHRvIHN0b3JlCisgKi8KK3N0YXRpYyBpbnQKK2hlYXBhbV9pbmRleF92YWxp ZGF0ZV90dXBsZXNvcnRfZGlmZmVyZW5jZShUdXBsZXNvcnRzdGF0ZSAgKm1haW4sCisJCQkJCQkJ CQkJICAgVHVwbGVzb3J0c3RhdGUgICphdXgsCisJCQkJCQkJCQkJICAgVHVwbGVzdG9yZXN0YXRl ICpzdG9yZSkKK3sKKwlpbnQJCQkJbnVtID0gMDsKKwkvKiBzdGF0ZSB2YXJpYWJsZXMgZm9yIHRo ZSBtZXJnZSAqLworCUl0ZW1Qb2ludGVyIAlpbmRleGN1cnNvciA9IE5VTEwsCisJCQkJCWF1eGlu ZGV4Y3Vyc29yID0gTlVMTDsKKwlJdGVtUG9pbnRlckRhdGEgZGVjb2RlZCwKKwkJCQkJYXV4ZGVj b2RlZDsKKwlib29sCQkJdHVwbGVzb3J0X2VtcHR5ID0gZmFsc2UsCisJCQkJCWF1eHR1cGxlc29y dF9lbXB0eSA9IGZhbHNlOworCisJLyogSW5pdGlhbGl6ZSBwb2ludGVycy4gKi8KKwlJdGVtUG9p bnRlclNldEludmFsaWQoJmRlY29kZWQpOworCUl0ZW1Qb2ludGVyU2V0SW52YWxpZCgmYXV4ZGVj b2RlZCk7CisKKwkvKgorCSAqIE1haW4gbG9vcDogd2Ugc3RlcCB0aHJvdWdoIHRoZSBhdXhpbGlh cnkgc29ydCAoYXV4U3RhdGUtPnR1cGxlc29ydCksCisJICogd2hpY2ggaG9sZHMgVElEcyB0aGF0 IG11c3QgY29tcGFyZWQgdG8gdGhvc2UgZnJvbSB0aGUgIm1haW4iIHNvcnQKKwkgKiAoc3RhdGUt PnR1cGxlc29ydCkuCisJICovCisJd2hpbGUgKCFhdXh0dXBsZXNvcnRfZW1wdHkpCisJeworCQlE YXR1bQkJdHNfdmFsOworCQlib29sCQl0c19pc251bGw7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CisKKwkJLyoKKwkJKiBBdHRlbXB0IHRvIGZldGNoIHRoZSBuZXh0IFRJRCBmcm9tIHRoZSBh dXhpbGlhcnkgc29ydC4gSWYgaXQncworCQkqIGVtcHR5LCB3ZSBzZXQgYXV4aW5kZXhjdXJzb3Ig dG8gTlVMTC4KKwkJKi8KKwkJYXV4dHVwbGVzb3J0X2VtcHR5ID0gIXR1cGxlc29ydF9nZXRkYXR1 bShhdXgsIHRydWUsCisJCQkJCQkJCQkJCQkgZmFsc2UsICZ0c192YWwsICZ0c19pc251bGwsCisJ CQkJCQkJCQkJCQkgTlVMTCk7CisJCUFzc2VydChhdXh0dXBsZXNvcnRfZW1wdHkgfHwgIXRzX2lz bnVsbCk7CisJCWlmICghYXV4dHVwbGVzb3J0X2VtcHR5KQorCQl7CisJCQlpdGVtcHRyX2RlY29k ZSgmYXV4ZGVjb2RlZCwgRGF0dW1HZXRJbnQ2NCh0c192YWwpKTsKKwkJCWF1eGluZGV4Y3Vyc29y ID0gJmF1eGRlY29kZWQ7CisJCX0KKwkJZWxzZQorCQl7CisJCQlhdXhpbmRleGN1cnNvciA9IE5V TEw7CisJCX0KKworCQkvKgorCQkqIElmIHRoZSBhdXhpbGlhcnkgc29ydCBpcyBub3QgeWV0IGVt cHR5LCB3ZSBub3cgdHJ5IHRvIHN5bmNocm9uaXplCisJCSogdGhlICJtYWluIiBzb3J0IGN1cnNv ciAoaW5kZXhjdXJzb3IpIHdpdGggYXV4aW5kZXhjdXJzb3IuIFdlIGFkdmFuY2UKKwkJKiB0aGUg bWFpbiBzb3J0IGN1cnNvciB1bnRpbCB3ZSd2ZSByZWFjaGVkIG9yIHBhc3NlZCB0aGUgYXV4aWxp YXJ5IFRJRC4KKwkJKi8KKwkJaWYgKCFhdXh0dXBsZXNvcnRfZW1wdHkpCisJCXsKKwkJCS8qCisJ CQkgKiBNb3ZlIHRoZSBtYWluIHNvcnQgZm9yd2FyZCB3aGlsZToKKwkJCSAqICAgKDEpIEl0J3Mg bm90IGV4aGF1c3RlZCAodHVwbGVzb3J0X2VtcHR5ID09IGZhbHNlKSwgYW5kCisJCQkgKiAgICgy KSBFaXRoZXIgaW5kZXhjdXJzb3IgaXMgTlVMTCAoZmlyc3QgaXRlcmF0aW9uKSBvcgorCQkJICog ICAgICAgaW5kZXhjdXJzb3IgPCBhdXhpbmRleGN1cnNvciBpbiBUSUQgb3JkZXIuCisJCQkgKi8K KwkJCXdoaWxlICghdHVwbGVzb3J0X2VtcHR5ICYmIChpbmRleGN1cnNvciA9PSBOVUxMIHx8IC8q IG51bGwgb24gZmlyc3QgdGltZSBoZXJlICovCisJCQkJCQlJdGVtUG9pbnRlckNvbXBhcmUoaW5k ZXhjdXJzb3IsIGF1eGluZGV4Y3Vyc29yKSA8IDApKQorCQkJeworCQkJCS8qCisJCQkJICogR2V0 IHRoZSBuZXh0IFRJRCBmcm9tIHRoZSBtYWluIHNvcnQuIElmIGl0J3MgZW1wdHksCisJCQkJICog d2Ugc2V0IGluZGV4Y3Vyc29yIHRvIE5VTEwuCisJCQkJICovCisJCQkJdHVwbGVzb3J0X2VtcHR5 ID0gIXR1cGxlc29ydF9nZXRkYXR1bShtYWluLCB0cnVlLAorCQkJCQkJCQkJCQkJCSAgZmFsc2Us ICZ0c192YWwsICZ0c19pc251bGwsCisJCQkJCQkJCQkJCQkJICBOVUxMKTsKKwkJCQlBc3NlcnQo dHVwbGVzb3J0X2VtcHR5IHx8ICF0c19pc251bGwpOworCisJCQkJaWYgKCF0dXBsZXNvcnRfZW1w dHkpCisJCQkJeworCQkJCQlpdGVtcHRyX2RlY29kZSgmZGVjb2RlZCwgRGF0dW1HZXRJbnQ2NCh0 c192YWwpKTsKKwkJCQkJaW5kZXhjdXJzb3IgPSAmZGVjb2RlZDsKKwkJCQl9CisJCQkJZWxzZQor CQkJCXsKKwkJCQkJaW5kZXhjdXJzb3IgPSBOVUxMOworCQkJCX0KKworCQkJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBOb3csIGlmIGVpdGhlcjoKKwkJCSAq ICAtIHRoZSBtYWluIHNvcnQgaXMgZW1wdHksIG9yCisJCQkgKiAgLSBpbmRleGN1cnNvciA+IGF1 eGluZGV4Y3Vyc29yLAorCQkJICoKKwkJCSAqIHRoZW4gYXV4aW5kZXhjdXJzb3IgaWRlbnRpZmll cyBhIFRJRCB0aGF0IGRvZXNuJ3QgYXBwZWFyIGluCisJCQkgKiB0aGUgbWFpbiBzb3J0LiBXZSBs aWtlbHkgbmVlZCB0byBpbnNlcnQgaXQKKwkJCSAqIGludG8gdGhlIHRhcmdldCBpbmRleCBpZiBp dOKAmXMgdmlzaWJsZSBpbiB0aGUgaGVhcC4KKwkJCSAqLworCQkJaWYgKHR1cGxlc29ydF9lbXB0 eSB8fCBJdGVtUG9pbnRlckNvbXBhcmUoaW5kZXhjdXJzb3IsIGF1eGluZGV4Y3Vyc29yKSA+IDAp CisJCQl7CisJCQkJdHVwbGVzdG9yZV9wdXRkYXR1bShzdG9yZSwgSW50NjRHZXREYXR1bShpdGVt cHRyX2VuY29kZShhdXhpbmRleGN1cnNvcikpKTsKKwkJCQludW0rKzsKKwkJCX0KKwkJfQorCX0K KworCXJldHVybiBudW07Cit9CisKK3R5cGVkZWYgc3RydWN0IFZhbGlkYXRlSW5kZXhTY2FuU3Rh dGUKK3sKKwlUdXBsZXN0b3Jlc3RhdGUJCSpzdG9yZTsKKwlCbG9ja051bWJlcgkJCXByZXZfYmxv Y2tfbnVtYmVyOworCU9mZnNldE51bWJlcgkJcHJldl9vZmZfb2Zmc2V0X251bWJlcjsKK30gVmFs aWRhdGVJbmRleFNjYW5TdGF0ZTsKKworLyoKKyAqIFRoaXMgaXMgUmVhZFN0cmVhbUJsb2NrTnVt YmVyQ0IgaW1wbGVtZW50YXRpb24gd2hpY2ggd29ya3MgYXMgZm9sbG93czoKKyAqCisgKiAxKSBJ dCBpdGVyYXRlcyBvdmVyIGEgc29ydGVkIHR1cGxlc3RvcmUsIHdoZXJlIGVhY2ggZWxlbWVudCBp cyBhbiBlbmNvZGVkCisgKiAgICBJdGVtUG9pbnRlcgorICoKKyAqIDIpIEl0IHJldHVybnMgdGhl IGN1cnJlbnQgQmxvY2tOdW1iZXIgYW5kIGNvbGxlY3RzIGFsbCBPZmZzZXROdW1iZXJzCisgKiAg ICBmb3IgdGhhdCBibG9jayBpbiBwZXJfYnVmZmVyX2RhdGEuCisgKgorICogMykgT25jZSB0aGUg Y29kZSBlbmNvdW50ZXJzIGEgbmV3IEJsb2NrTnVtYmVyLCBpdCBzdG9wcyByZWFkaW5nIG1vcmUK KyAqICAgIG9mZnNldHMgYW5kIHNhdmVzIHRoZSBPZmZzZXROdW1iZXIgb2YgdGhlIG5ldyBibG9j ayBmb3IgdGhlIG5leHQgY2FsbC4KKyAqCisgKiA0KSBUaGUgbGlzdCBvZiBvZmZzZXRzIGZvciBh IGJsb2NrIGlzIGFsd2F5cyB0ZXJtaW5hdGVkIHdpdGggSW52YWxpZE9mZnNldE51bWJlci4KKyAq CisgKiBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHJlcGVhdGVkbHkgY2FsbGVkLCBl YWNoIHRpbWUgcmV0dXJuaW5nCisgKiB0aGUgbmV4dCBibG9jayBhbmQgaXRzIGNvcnJlc3BvbmRp bmcgc2V0IG9mIG9mZnNldHMuCisgKi8KK3N0YXRpYyBCbG9ja051bWJlcgoraGVhcGFtX2luZGV4 X3ZhbGlkYXRlX3NjYW5fcmVhZF9zdHJlYW1fbmV4dCgKKwkJCQkJCQkJICBSZWFkU3RyZWFtICpz dHJlYW0sCisJCQkJCQkJCSAgdm9pZCAqdm9pZF9jYWxsYmFja19wcml2YXRlX2RhdGEsCisJCQkJ CQkJCSAgdm9pZCAqdm9pZF9wZXJfYnVmZmVyX2RhdGEKKwkJCQkJCQkJICApCit7CisJYm9vbCBz aG91ZF9mcmVlOworCURhdHVtIGRhdHVtOworCUJsb2NrTnVtYmVyIHJlc3VsdCA9IEludmFsaWRC bG9ja051bWJlcjsKKwlpbnQgaSA9IDA7CisKKwkvKgorCSAqIFJldHJpZXZlIHRoZSBzcGVjaWFs aXplZCBjYWxsYmFjayBzdGF0ZSBhbmQgdGhlIG91dHB1dCBidWZmZXIuCisJICogY2FsbGJhY2tf cHJpdmF0ZV9kYXRhIGtlZXBzIHRyYWNrIG9mIHRoZSBwcmV2aW91cyBibG9jayBhbmQgb2Zmc2V0 CisJICogZnJvbSBhIHByaW9yIGludm9jYXRpb24sIGlmIGFueS4KKwkgKi8KKwlWYWxpZGF0ZUlu ZGV4U2NhblN0YXRlICpjYWxsYmFja19wcml2YXRlX2RhdGEgPSB2b2lkX2NhbGxiYWNrX3ByaXZh dGVfZGF0YTsKKwlPZmZzZXROdW1iZXIgKnBlcl9idWZmZXJfZGF0YSA9IHZvaWRfcGVyX2J1ZmZl cl9kYXRhOworCisJLyoKKwkgKiBJZiB0aGVyZSBpcyBhICJsZWZ0b3ZlciIgb2Zmc2V0IG51bWJl ciBmcm9tIHRoZSBwcmV2aW91cyBpbnZvY2F0aW9uLAorCSAqIGl0IG1lYW5zIHdlIGhhZCBzd2l0 Y2hlZCB0byBhIG5ldyBibG9jayBpbiB0aGUgbWlkZGxlIG9mIHRoZSBsYXN0IGNhbGwuCisJICog V2UgcGxhY2UgdGhhdCBsZWZ0b3ZlciBvZmZzZXQgbnVtYmVyIGludG8gdGhlIGJ1ZmZlciBmaXJz dC4KKwkgKi8KKwlpZiAoY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X29mZl9vZmZzZXRfbnVt YmVyICE9IEludmFsaWRPZmZzZXROdW1iZXIpCisJeworCQlBc3NlcnQoY2FsbGJhY2tfcHJpdmF0 ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJlciAhPSBJbnZhbGlkQmxvY2tOdW1iZXIpOworCQkvKgor CQkgKiAncmVzdWx0JyBpcyB0aGUgYmxvY2sgbnVtYmVyIHRvIHJldHVybi4gV2Ugc2V0IGl0IHRv IHRoZSBibG9jaworCQkgKiBmcm9tIHRoZSBwcmV2aW91cyBsZWZ0b3ZlciBvZmZzZXQuCisJCSAq LworCQlyZXN1bHQgPSBjYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyOwor CQkvKiBQbGFjZSBsZWZ0b3ZlciBvZmZzZXQgbnVtYmVyIGluIHRoZSBvdXRwdXQgYnVmZmVyLiAq LworCQlwZXJfYnVmZmVyX2RhdGFbaSsrXSA9IGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9v ZmZfb2Zmc2V0X251bWJlcjsKKwkJLyoKKwkJICogQ2xlYXIgdGhlIGxlZnRvdmVyIG9mZnNldCBu dW1iZXIgc28gaXQgd29uJ3QgYmUgcmV1c2VkIHVubGVzcworCQkgKiB3ZSBlbmNvdW50ZXIgYW5v dGhlciBibG9jayBjaGFuZ2UuCisJCSAqLworCQljYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZf b2ZmX29mZnNldF9udW1iZXIgPSBJbnZhbGlkT2Zmc2V0TnVtYmVyOworCX0KKworCS8qCisJICog UmVhZCBmcm9tIHRoZSB0dXBsZXN0b3JlIHVudGlsIHdlIGVpdGhlciBydW4gb3V0IG9mIHR1cGxl cyBvciB3ZQorCSAqIGVuY291bnRlciBhIGJsb2NrIGNoYW5nZS4gRm9yIGVhY2ggdHVwbGU6CisJ ICoKKwkgKiAgIDEpIERlY29kZSBpdHMgYmxvY2svb2Zmc2V0IGZyb20gdGhlIERhdHVtLgorCSAq ICAgMikgSWYgaXQncyB0aGUgZmlyc3QgdGltZSBpbiB0aGlzIGNhbGwgKHByZXZfYmxvY2tfbnVt YmVyID09IEludmFsaWRCbG9ja051bWJlciksCisJICogICAgICBpbml0aWFsaXplIHByZXZfYmxv Y2tfbnVtYmVyLgorCSAqICAgMykgSWYgdGhlIGJsb2NrIG51bWJlciBtYXRjaGVzIHRoZSBjdXJy ZW50IGJsb2NrLCBjb2xsZWN0IHRoZSBvZmZzZXQuCisJICogICA0KSBJZiB0aGUgYmxvY2sgbnVt YmVyIGRpZmZlcnMsIHNhdmUgdGhhdCBvZmZzZXQgYXMgbGVmdG92ZXIgYW5kIGJyZWFrCisJICog ICAgICBzbyB0aGF0IHRoZSBuZXh0IGNhbGwgY2FuIGhhbmRsZSB0aGUgbmV3IGJsb2NrLgorCSAq LworCXdoaWxlICh0dXBsZXN0b3JlX2dldGRhdHVtKGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+c3Rv cmUsIHRydWUsICZzaG91ZF9mcmVlLCAmZGF0dW0pKQorCXsKKwkJQmxvY2tOdW1iZXIgbmV4dF9i bG9ja19udW1iZXI7CisJCUl0ZW1Qb2ludGVyRGF0YSBuZXh0X2RhdGE7CisKKwkJLyogRGVjb2Rl IHRoZSBkYXR1bSBpbnRvIGFuIEl0ZW1Qb2ludGVyIChibG9jayArIG9mZnNldCkuICovCisJCWl0 ZW1wdHJfZGVjb2RlKCZuZXh0X2RhdGEsIERhdHVtR2V0SW50NjQoZGF0dW0pKTsKKwkJbmV4dF9i bG9ja19udW1iZXIgPSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZuZXh0X2RhdGEpOworCisJ CS8qCisJCSAqIElmIHdlIGhhdmVuJ3Qgc2V0IGEgYmxvY2sgbnVtYmVyIHlldCB0aGlzIHJvdW5k LCBpbml0aWFsaXplIGl0CisJCSAqIHVzaW5nIHRoZSBmaXJzdCB0dXBsZSB3ZSByZWFkLgorCQkg Ki8KKwkJaWYgKGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXIgPT0gSW52 YWxpZEJsb2NrTnVtYmVyKQorCQkJY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251 bWJlciA9IG5leHRfYmxvY2tfbnVtYmVyOworCisJCS8qCisJCSAqIEFsd2F5cyBzZXQgdGhlIHJl c3VsdCB0byBiZSB0aGUgImN1cnJlbnQiIGJsb2NrIG51bWJlcgorCQkgKiB3ZSBhcmUgZmlsbGlu ZyBvZmZzZXRzIGZvci4KKwkJICovCisJCXJlc3VsdCA9IGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+ cHJldl9ibG9ja19udW1iZXI7CisKKwkJLyoKKwkJICogSWYgdGhpcyB0dXBsZSBpcyBmcm9tIHRo ZSBzYW1lIGJsb2NrLCBqdXN0IHN0b3JlIGl0cyBvZmZzZXQKKwkJICogaW4gb3VyIHBlcl9idWZm ZXJfZGF0YSBhcnJheS4KKwkJICovCisJCWlmIChuZXh0X2Jsb2NrX251bWJlciA9PSBjYWxsYmFj a19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyKQorCQl7CisJCQlwZXJfYnVmZmVyX2Rh dGFbaSsrXSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZuZXh0X2RhdGEpOworCisJCQkv KiBGcmVlIHRoZSBkYXR1bSBpZiBuZWVkZWQuICovCisJCQlpZiAoc2hvdWRfZnJlZSkKKwkJCQlw ZnJlZShEYXR1bUdldFBvaW50ZXIoZGF0dW0pKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJ CQkgKiBJZiB0aGUgYmxvY2sganVzdCBjaGFuZ2VkLCBzdG9yZSB0aGUgb2Zmc2V0IG9mIHRoZSBu ZXcgYmxvY2sKKwkJCSAqIGFzIGxlZnRvdmVyIGZvciB0aGUgbmV4dCBpbnZvY2F0aW9uIGFuZCBi cmVhayBvdXQuCisJCQkgKi8KKwkJCWNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19u dW1iZXIgPSBuZXh0X2Jsb2NrX251bWJlcjsKKwkJCWNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJl dl9vZmZfb2Zmc2V0X251bWJlciA9ICBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmbmV4dF9k YXRhKTsKKworCQkJLyogRnJlZSB0aGUgZGF0dW0gaWYgbmVlZGVkLiAqLworCQkJaWYgKHNob3Vk X2ZyZWUpCisJCQkJcGZyZWUoRGF0dW1HZXRQb2ludGVyKGRhdHVtKSk7CisKKwkJCS8qIEJyZWFr IHRvIGxldCB0aGUgbmV4dCBjYWxsIGhhbmRsZSB0aGUgbmV3IGJsb2NrLiAqLworCQkJYnJlYWs7 CisJCX0KKwl9CisKKwkvKgorCSAqIFRlcm1pbmF0ZSB0aGUgbGlzdCBvZiBvZmZzZXRzIGZvciB0 aGlzIGJsb2NrIHdpdGggYW4gSW52YWxpZE9mZnNldE51bWJlci4KKwkgKi8KKwlwZXJfYnVmZmVy X2RhdGFbaV0gPSBJbnZhbGlkT2Zmc2V0TnVtYmVyOworCXJldHVybiByZXN1bHQ7Cit9CisKIHN0 YXRpYyB2b2lkCiBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRp b24sCiAJCQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQkJCQkJICAgSW5kZXhJbmZv ICppbmRleEluZm8sCiAJCQkJCQkgICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCSAgIFZhbGlk YXRlSW5kZXhTdGF0ZSAqc3RhdGUpCisJCQkJCQkgICBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRl LAorCQkJCQkJICAgVmFsaWRhdGVJbmRleFN0YXRlICphdXhTdGF0ZSkKIHsKLQlUYWJsZVNjYW5E ZXNjIHNjYW47Ci0JSGVhcFNjYW5EZXNjIGhzY2FuOwotCUhlYXBUdXBsZQloZWFwVHVwbGU7CiAJ RGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJYm9vbAkJaXNudWxsW0lOREVYX01BWF9L RVlTXTsKLQlFeHByU3RhdGUgICpwcmVkaWNhdGU7Ci0JVHVwbGVUYWJsZVNsb3QgKnNsb3Q7Ci0J RVN0YXRlCSAgICplc3RhdGU7Ci0JRXhwckNvbnRleHQgKmVjb250ZXh0OwotCUJsb2NrTnVtYmVy IHJvb3RfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7Ci0JT2Zmc2V0TnVtYmVyIHJvb3Rfb2Zm c2V0c1tNYXhIZWFwVHVwbGVzUGVyUGFnZV07Ci0JYm9vbAkJaW5faW5kZXhbTWF4SGVhcFR1cGxl c1BlclBhZ2VdOwotCUJsb2NrTnVtYmVyIHByZXZpb3VzX2Jsa25vID0gSW52YWxpZEJsb2NrTnVt YmVyOwotCi0JLyogc3RhdGUgdmFyaWFibGVzIGZvciB0aGUgbWVyZ2UgKi8KLQlJdGVtUG9pbnRl ciBpbmRleGN1cnNvciA9IE5VTEw7Ci0JSXRlbVBvaW50ZXJEYXRhIGRlY29kZWQ7Ci0JYm9vbAkJ dHVwbGVzb3J0X2VtcHR5ID0gZmFsc2U7CisKKwlUdXBsZVRhYmxlU2xvdCAgKnNsb3Q7CisJRVN0 YXRlCQkJKmVzdGF0ZTsKKwlFeHByQ29udGV4dAkJKmVjb250ZXh0OworCUJ1ZmZlckFjY2Vzc1N0 cmF0ZWd5IGJzdHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0ZWd5KEJBU19CVUxLUkVBRCk7CisKKwlp bnQJCQkJbnVtX3RvX2NoZWNrOworCVR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVzX2Zvcl9jaGVjazsK KwlWYWxpZGF0ZUluZGV4U2NhblN0YXRlIGNhbGxiYWNrX3ByaXZhdGVfZGF0YTsKKworCUJ1ZmZl ciBidWY7CisJT2Zmc2V0TnVtYmVyKiB0dXBsZXM7CisJUmVhZFN0cmVhbSAqcmVhZF9zdHJlYW07 CisKKwkvKiBVc2UgMTAlIG9mIG1lbW9yeSBmb3IgdHVwbGUgc3RvcmUuICovCisJaW50CQlzdG9y ZV93b3JrX21lbV9wYXJ0ID0gbWFpbnRlbmFuY2Vfd29ya19tZW0gLyAxMDsKKworCS8qCisJICog RW5jb2RlIFRJRHMgYXMgaW50OCB2YWx1ZXMgZm9yIHRoZSBzb3J0LCByYXRoZXIgdGhhbiBkaXJl Y3RseSBzb3J0aW5nCisJICogaXRlbSBwb2ludGVycy4gIFRoaXMgY2FuIGJlIHNpZ25pZmljYW50 bHkgZmFzdGVyLCBwcmltYXJpbHkgYmVjYXVzZSBUSUQKKwkgKiBpcyBhIHBhc3MtYnktcmVmZXJl bmNlIHR5cGUgb24gYWxsIHBsYXRmb3Jtcywgd2hlcmVhcyBpbnQ4IGlzCisJICogcGFzcy1ieS12 YWx1ZSBvbiBtb3N0IHBsYXRmb3Jtcy4KKwkgKi8KKwl0dXBsZXNfZm9yX2NoZWNrID0gIHR1cGxl c3RvcmVfYmVnaW5fZGF0dW0oSU5UOE9JRCwgZmFsc2UsIGZhbHNlLCBzdG9yZV93b3JrX21lbV9w YXJ0KTsKIAogCS8qCiAJICogc2FuaXR5IGNoZWNrcwogCSAqLwogCUFzc2VydChPaWRJc1ZhbGlk KGluZGV4UmVsYXRpb24tPnJkX3JlbC0+cmVsYW0pKTsKIAotCS8qCi0JICogTmVlZCBhbiBFU3Rh dGUgZm9yIGV2YWx1YXRpb24gb2YgaW5kZXggZXhwcmVzc2lvbnMgYW5kIHBhcnRpYWwtaW5kZXgK LQkgKiBwcmVkaWNhdGVzLiAgQWxzbyBhIHNsb3QgdG8gaG9sZCB0aGUgY3VycmVudCB0dXBsZS4K LQkgKi8KKwludW1fdG9fY2hlY2sgPSBoZWFwYW1faW5kZXhfdmFsaWRhdGVfdHVwbGVzb3J0X2Rp ZmZlcmVuY2Uoc3RhdGUtPnR1cGxlc29ydCwKKwkJCQkJCQkJCQkJCQkJIGF1eFN0YXRlLT50dXBs ZXNvcnQsCisJCQkJCQkJCQkJCQkJCSB0dXBsZXNfZm9yX2NoZWNrKTsKKworCS8qIEl0IGlzIG91 ciByZXNwb25zaWJpbGl0eSB0byBjbG9zZSB0dXBsZSBzb3J0IGFzIGZhc3QgYXMgd2UgY2FuICov CisJdHVwbGVzb3J0X2VuZChzdGF0ZS0+dHVwbGVzb3J0KTsKKwl0dXBsZXNvcnRfZW5kKGF1eFN0 YXRlLT50dXBsZXNvcnQpOworCisJc3RhdGUtPnR1cGxlc29ydCA9IGF1eFN0YXRlLT50dXBsZXNv cnQgPSBOVUxMOworCiAJZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOwogCWVjb250ZXh0 ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpOwogCXNsb3QgPSBNYWtlU2luZ2xlVHVw bGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihoZWFwUmVsYXRpb24pLAotCQkJCQkJCQkJJlRU U09wc0hlYXBUdXBsZSk7CisJCQkJCQkJCQkmVFRTT3BzQnVmZmVySGVhcFR1cGxlKTsKIAogCS8q IEFycmFuZ2UgZm9yIGVjb250ZXh0J3Mgc2NhbiB0dXBsZSB0byBiZSB0aGUgdHVwbGUgdW5kZXIg dGVzdCAqLwogCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNsb3Q7CiAKLQkvKiBTZXQgdXAg ZXhlY3V0aW9uIHN0YXRlIGZvciBwcmVkaWNhdGUsIGlmIGFueS4gKi8KLQlwcmVkaWNhdGUgPSBF eGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7CisJY2FsbGJh Y2tfcHJpdmF0ZV9kYXRhLnByZXZfYmxvY2tfbnVtYmVyID0gSW52YWxpZEJsb2NrTnVtYmVyOwor CWNhbGxiYWNrX3ByaXZhdGVfZGF0YS5zdG9yZSA9IHR1cGxlc19mb3JfY2hlY2s7CisJY2FsbGJh Y2tfcHJpdmF0ZV9kYXRhLnByZXZfb2ZmX29mZnNldF9udW1iZXIgPSBJbnZhbGlkT2Zmc2V0TnVt YmVyOwogCi0JLyoKLQkgKiBQcmVwYXJlIGZvciBzY2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAg V2UgbmVlZCBqdXN0IHRob3NlIHR1cGxlcwotCSAqIHNhdGlzZnlpbmcgdGhlIHBhc3NlZC1pbiBy ZWZlcmVuY2Ugc25hcHNob3QuICBXZSBtdXN0IGRpc2FibGUgc3luY3NjYW4KLQkgKiBoZXJlLCBi ZWNhdXNlIGl0J3MgY3JpdGljYWwgdGhhdCB3ZSByZWFkIGZyb20gYmxvY2sgemVybyBmb3J3YXJk IHRvCi0JICogbWF0Y2ggdGhlIHNvcnRlZCBUSURzLgotCSAqLwotCXNjYW4gPSB0YWJsZV9iZWdp bnNjYW5fc3RyYXQoaGVhcFJlbGF0aW9uLAkvKiByZWxhdGlvbiAqLwotCQkJCQkJCQkgc25hcHNo b3QsCS8qIHNuYXBzaG90ICovCi0JCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwotCQkJ CQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KLQkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nl c3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJIGZhbHNlLAkvKiBzeW5jc2NhbiBub3QgT0sgKi8K LQkJCQkJCQkJIGZhbHNlKTsKLQloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47CisJcmVhZF9z dHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihSRUFEX1NUUkVBTV9NQUlOVEVOQU5D RSB8IFJFQURfU1RSRUFNX1VTRV9CQVRDSElORywKKwkJCQkJCQkJCQkJCQkJIGJzdHJhdGVneSwK KwkJCQkJCQkJCQkJCQkJIGhlYXBSZWxhdGlvbiwgTUFJTl9GT1JLTlVNLAorCQkJCQkJCQkJCQkJ CQkgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fcmVhZF9zdHJlYW1fbmV4dCwKKwkJCQkJCQkJ CQkJCQkJICZjYWxsYmFja19wcml2YXRlX2RhdGEsCisJCQkJCQkJCQkJCQkJCSAoTWF4SGVhcFR1 cGxlc1BlclBhZ2UgKyAxKSAqIHNpemVvZihPZmZzZXROdW1iZXIpKTsKIAotCXBnc3RhdF9wcm9n cmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfU0NBTl9CTE9DS1NfVE9UQUwsCi0JCQkJCQkJCSBo c2Nhbi0+cnNfbmJsb2Nrcyk7CisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVT U19DUkVBVEVJRFhfVFVQTEVTX1RPVEFMLCBudW1fdG9fY2hlY2spOworCXBnc3RhdF9wcm9ncmVz c191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1RVUExFU19ET05FLCAwKTsKIAotCS8q Ci0JICogU2NhbiBhbGwgdHVwbGVzIG1hdGNoaW5nIHRoZSBzbmFwc2hvdC4KLQkgKi8KLQl3aGls ZSAoKGhlYXBUdXBsZSA9IGhlYXBfZ2V0bmV4dChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbikp ICE9IE5VTEwpCisJd2hpbGUgKChidWYgPSByZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihyZWFkX3N0 cmVhbSwgKHZvaWQqKSAmdHVwbGVzKSkgIT0gSW52YWxpZEJ1ZmZlcikKIAl7Ci0JCUl0ZW1Qb2lu dGVyIGhlYXBjdXJzb3IgPSAmaGVhcFR1cGxlLT50X3NlbGY7Ci0JCUl0ZW1Qb2ludGVyRGF0YSBy b290VHVwbGU7Ci0JCU9mZnNldE51bWJlciByb290X29mZm51bTsKKwkJSGVhcFR1cGxlRGF0YQlo ZWFwX3R1cGxlX2RhdGFbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOworCQlpbnQgaTsKKwkJT2Zmc2V0 TnVtYmVyIG9mZjsKKwkJQmxvY2tOdW1iZXIgYmxvY2tfbnVtYmVyOwogCiAJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CiAKLQkJc3RhdGUtPmh0dXBzICs9IDE7CisJCUxvY2tCdWZmZXIoYnVmLCBC VUZGRVJfTE9DS19TSEFSRSk7CisJCWJsb2NrX251bWJlciA9IEJ1ZmZlckdldEJsb2NrTnVtYmVy KGJ1Zik7CiAKLQkJaWYgKChwcmV2aW91c19ibGtubyA9PSBJbnZhbGlkQmxvY2tOdW1iZXIpIHx8 Ci0JCQkoaHNjYW4tPnJzX2NibG9jayAhPSBwcmV2aW91c19ibGtubykpCisJCWkgPSAwOworCQl3 aGlsZSAoKG9mZiA9IHR1cGxlc1tpXSkgIT0gSW52YWxpZE9mZnNldE51bWJlcikKIAkJewotCQkJ cGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19TQ0FOX0JMT0NLU19ET05FLAot CQkJCQkJCQkJCSBoc2Nhbi0+cnNfY2Jsb2NrKTsKLQkJCXByZXZpb3VzX2Jsa25vID0gaHNjYW4t PnJzX2NibG9jazsKKwkJCUl0ZW1Qb2ludGVyRGF0YSB0aWQ7CisJCQlib29sCQlhbGxfZGVhZCwg Zm91bmQ7CisJCQlJdGVtUG9pbnRlclNldCgmdGlkLCBibG9ja19udW1iZXIsIG9mZik7CisKKwkJ CWZvdW5kID0gaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcigmdGlkLCBoZWFwUmVsYXRpb24sIGJ1Ziwg c25hcHNob3QsCisJCQkJCQkJCQkJICAgJmhlYXBfdHVwbGVfZGF0YVtpXSwgJmFsbF9kZWFkLCB0 cnVlKTsKKwkJCWlmICghZm91bmQpCisJCQkJSXRlbVBvaW50ZXJTZXRJbnZhbGlkKCZoZWFwX3R1 cGxlX2RhdGFbaV0udF9zZWxmKTsKKwkJCWkrKzsKIAkJfQorCQlMb2NrQnVmZmVyKGJ1ZiwgQlVG RkVSX0xPQ0tfVU5MT0NLKTsKIAotCQkvKgotCQkgKiBBcyBjb21tZW50ZWQgaW4gdGFibGVfaW5k ZXhfYnVpbGRfc2Nhbiwgd2Ugc2hvdWxkIGluZGV4IGhlYXAtb25seQotCQkgKiB0dXBsZXMgdW5k ZXIgdGhlIFRJRHMgb2YgdGhlaXIgcm9vdCB0dXBsZXM7IHNvIHdoZW4gd2UgYWR2YW5jZSBvbnRv Ci0JCSAqIGEgbmV3IGhlYXAgcGFnZSwgYnVpbGQgYSBtYXAgb2Ygcm9vdCBpdGVtIG9mZnNldHMg b24gdGhlIHBhZ2UuCi0JCSAqCi0JCSAqIFRoaXMgY29tcGxpY2F0ZXMgbWVyZ2luZyBhZ2FpbnN0 IHRoZSB0dXBsZXNvcnQgb3V0cHV0OiB3ZSB3aWxsCi0JCSAqIHZpc2l0IHRoZSBsaXZlIHR1cGxl cyBpbiBvcmRlciBieSB0aGVpciBvZmZzZXRzLCBidXQgdGhlIHJvb3QKLQkJICogb2Zmc2V0cyB0 aGF0IHdlIG5lZWQgdG8gY29tcGFyZSBhZ2FpbnN0IHRoZSBpbmRleCBjb250ZW50cyBtaWdodCBi ZQotCQkgKiBvcmRlcmVkIGRpZmZlcmVudGx5LiAgU28gd2UgbWlnaHQgaGF2ZSB0byAibG9vayBi YWNrIiB3aXRoaW4gdGhlCi0JCSAqIHR1cGxlc29ydCBvdXRwdXQsIGJ1dCBvbmx5IHdpdGhpbiB0 aGUgY3VycmVudCBwYWdlLiAgV2UgaGFuZGxlIHRoYXQKLQkJICogYnkga2VlcGluZyBhIGJvb2wg YXJyYXkgaW5faW5kZXhbXSBzaG93aW5nIGFsbCB0aGUKLQkJICogYWxyZWFkeS1wYXNzZWQtb3Zl ciB0dXBsZXNvcnQgb3V0cHV0IFRJRHMgb2YgdGhlIGN1cnJlbnQgcGFnZS4gV2UKLQkJICogY2xl YXIgdGhhdCBhcnJheSBoZXJlLCB3aGVuIGFkdmFuY2luZyBvbnRvIGEgbmV3IGhlYXAgcGFnZS4K LQkJICovCi0JCWlmIChoc2Nhbi0+cnNfY2Jsb2NrICE9IHJvb3RfYmxrbm8pCisJCWkgPSAwOwor CQl3aGlsZSAoKG9mZiA9IHR1cGxlc1tpXSkgIT0gSW52YWxpZE9mZnNldE51bWJlcikKIAkJewot CQkJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoaHNjYW4tPnJzX2NidWYpOwotCi0JCQlMb2Nr QnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7Ci0JCQloZWFwX2dldF9y b290X3R1cGxlcyhwYWdlLCByb290X29mZnNldHMpOwotCQkJTG9ja0J1ZmZlcihoc2Nhbi0+cnNf Y2J1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKLQotCQkJbWVtc2V0KGluX2luZGV4LCAwLCBzaXpl b2YoaW5faW5kZXgpKTsKLQotCQkJcm9vdF9ibGtubyA9IGhzY2FuLT5yc19jYmxvY2s7Ci0JCX0K LQotCQkvKiBDb252ZXJ0IGFjdHVhbCB0dXBsZSBUSUQgdG8gcm9vdCBUSUQgKi8KLQkJcm9vdFR1 cGxlID0gKmhlYXBjdXJzb3I7Ci0JCXJvb3Rfb2ZmbnVtID0gSXRlbVBvaW50ZXJHZXRPZmZzZXRO dW1iZXIoaGVhcGN1cnNvcik7Ci0KLQkJaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1cGxl KSkKLQkJewotCQkJcm9vdF9vZmZudW0gPSByb290X29mZnNldHNbcm9vdF9vZmZudW0gLSAxXTsK LQkJCWlmICghT2Zmc2V0TnVtYmVySXNWYWxpZChyb290X29mZm51bSkpCi0JCQkJZXJlcG9ydChF UlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAotCQkJCQkJIGVy cm1zZ19pbnRlcm5hbCgiZmFpbGVkIHRvIGZpbmQgcGFyZW50IHR1cGxlIGZvciBoZWFwLW9ubHkg dHVwbGUgYXQgKCV1LCV1KSBpbiB0YWJsZSBcIiVzXCIiLAotCQkJCQkJCQkJCSBJdGVtUG9pbnRl ckdldEJsb2NrTnVtYmVyKGhlYXBjdXJzb3IpLAotCQkJCQkJCQkJCSBJdGVtUG9pbnRlckdldE9m ZnNldE51bWJlcihoZWFwY3Vyc29yKSwKLQkJCQkJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUoaGVhcFJlbGF0aW9uKSkpKTsKLQkJCUl0ZW1Qb2ludGVyU2V0T2Zmc2V0TnVtYmVyKCZyb290 VHVwbGUsIHJvb3Rfb2ZmbnVtKTsKLQkJfQotCi0JCS8qCi0JCSAqICJtZXJnZSIgYnkgc2tpcHBp bmcgdGhyb3VnaCB0aGUgaW5kZXggdHVwbGVzIHVudGlsIHdlIGZpbmQgb3IgcGFzcwotCQkgKiB0 aGUgY3VycmVudCByb290IHR1cGxlLgotCQkgKi8KLQkJd2hpbGUgKCF0dXBsZXNvcnRfZW1wdHkg JiYKLQkJCSAgICghaW5kZXhjdXJzb3IgfHwKLQkJCQlJdGVtUG9pbnRlckNvbXBhcmUoaW5kZXhj dXJzb3IsICZyb290VHVwbGUpIDwgMCkpCi0JCXsKLQkJCURhdHVtCQl0c192YWw7Ci0JCQlib29s CQl0c19pc251bGw7Ci0KLQkJCWlmIChpbmRleGN1cnNvcikKKwkJCWlmIChJdGVtUG9pbnRlcklz VmFsaWQoJmhlYXBfdHVwbGVfZGF0YVtpXS50X3NlbGYpKQogCQkJeworCQkJCUl0ZW1Qb2ludGVy RGF0YSByb290X3RpZDsKKwkJCQlJdGVtUG9pbnRlclNldCgmcm9vdF90aWQsIGJsb2NrX251bWJl ciwgb2ZmKTsKKworCQkJCS8qIFJlc2V0IHRoZSBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgZm9y IHRoZSBuZXh0IGZldGNoLiAqLworCQkJCU1lbW9yeUNvbnRleHRSZXNldChlY29udGV4dC0+ZWN4 dF9wZXJfdHVwbGVfbWVtb3J5KTsKKwkJCQlFeGVjU3RvcmVCdWZmZXJIZWFwVHVwbGUoJmhlYXBf dHVwbGVfZGF0YVtpXSwgc2xvdCwgYnVmKTsKKworCQkJCS8qIENvbXB1dGUgdGhlIGtleSB2YWx1 ZXMgYW5kIG51bGwgZmxhZ3MgZm9yIHRoaXMgdHVwbGUuICovCisJCQkJRm9ybUluZGV4RGF0dW0o aW5kZXhJbmZvLAorCQkJCQkJCSAgIHNsb3QsCisJCQkJCQkJICAgZXN0YXRlLAorCQkJCQkJCSAg IHZhbHVlcywKKwkJCQkJCQkgICBpc251bGwpOworCiAJCQkJLyoKLQkJCQkgKiBSZW1lbWJlciBp bmRleCBpdGVtcyBzZWVuIGVhcmxpZXIgb24gdGhlIGN1cnJlbnQgaGVhcCBwYWdlCisJCQkJICog SW5zZXJ0IHRoZSB0dXBsZSBpbnRvIHRoZSB0YXJnZXQgaW5kZXguCiAJCQkJICovCi0JCQkJaWYg KEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoaW5kZXhjdXJzb3IpID09IHJvb3RfYmxrbm8pCi0J CQkJCWluX2luZGV4W0l0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKGluZGV4Y3Vyc29yKSAtIDFd ID0gdHJ1ZTsKKwkJCQlpbmRleF9pbnNlcnQoaW5kZXhSZWxhdGlvbiwKKwkJCQkJCQkgdmFsdWVz LAorCQkJCQkJCSBpc251bGwsCisJCQkJCQkJICZyb290X3RpZCwgLyogaW5zZXJ0IHJvb3QgdHVw bGUgKi8KKwkJCQkJCQkgaGVhcFJlbGF0aW9uLAorCQkJCQkJCSBpbmRleEluZm8tPmlpX1VuaXF1 ZSA/CisJCQkJCQkJIFVOSVFVRV9DSEVDS19ZRVMgOiBVTklRVUVfQ0hFQ0tfTk8sCisJCQkJCQkJ IGZhbHNlLAorCQkJCQkJCSBpbmRleEluZm8pOwogCQkJfQogCi0JCQl0dXBsZXNvcnRfZW1wdHkg PSAhdHVwbGVzb3J0X2dldGRhdHVtKHN0YXRlLT50dXBsZXNvcnQsIHRydWUsCi0JCQkJCQkJCQkJ CQkgIGZhbHNlLCAmdHNfdmFsLCAmdHNfaXNudWxsLAotCQkJCQkJCQkJCQkJICBOVUxMKTsKLQkJ CUFzc2VydCh0dXBsZXNvcnRfZW1wdHkgfHwgIXRzX2lzbnVsbCk7Ci0JCQlpZiAoIXR1cGxlc29y dF9lbXB0eSkKLQkJCXsKLQkJCQlpdGVtcHRyX2RlY29kZSgmZGVjb2RlZCwgRGF0dW1HZXRJbnQ2 NCh0c192YWwpKTsKLQkJCQlpbmRleGN1cnNvciA9ICZkZWNvZGVkOwotCQkJfQotCQkJZWxzZQot CQkJewotCQkJCS8qIEJlIHRpZHkgKi8KLQkJCQlpbmRleGN1cnNvciA9IE5VTEw7Ci0JCQl9CisJ CQlzdGF0ZS0+aHR1cHMgKz0gMTsKKwkJCXBnc3RhdF9wcm9ncmVzc19pbmNyX3BhcmFtKFBST0dS RVNTX0NSRUFURUlEWF9UVVBMRVNfRE9ORSwgMSk7CisJCQlpKys7CiAJCX0KIAotCQkvKgotCQkg KiBJZiB0aGUgdHVwbGVzb3J0IGhhcyBvdmVyc2hvdCAqYW5kKiB3ZSBkaWRuJ3Qgc2VlIGEgbWF0 Y2ggZWFybGllciwKLQkJICogdGhlbiB0aGlzIHR1cGxlIGlzIG1pc3NpbmcgZnJvbSB0aGUgaW5k ZXgsIHNvIGluc2VydCBpdC4KLQkJICovCi0JCWlmICgodHVwbGVzb3J0X2VtcHR5IHx8Ci0JCQkg SXRlbVBvaW50ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCAmcm9vdFR1cGxlKSA+IDApICYmCi0JCQkh aW5faW5kZXhbcm9vdF9vZmZudW0gLSAxXSkKLQkJewotCQkJTWVtb3J5Q29udGV4dFJlc2V0KGVj b250ZXh0LT5lY3h0X3Blcl90dXBsZV9tZW1vcnkpOwotCi0JCQkvKiBTZXQgdXAgZm9yIHByZWRp Y2F0ZSBvciBleHByZXNzaW9uIGV2YWx1YXRpb24gKi8KLQkJCUV4ZWNTdG9yZUhlYXBUdXBsZSho ZWFwVHVwbGUsIHNsb3QsIGZhbHNlKTsKLQotCQkJLyoKLQkJCSAqIEluIGEgcGFydGlhbCBpbmRl eCwgZGlzY2FyZCB0dXBsZXMgdGhhdCBkb24ndCBzYXRpc2Z5IHRoZQotCQkJICogcHJlZGljYXRl LgotCQkJICovCi0JCQlpZiAocHJlZGljYXRlICE9IE5VTEwpCi0JCQl7Ci0JCQkJaWYgKCFFeGVj UXVhbChwcmVkaWNhdGUsIGVjb250ZXh0KSkKLQkJCQkJY29udGludWU7Ci0JCQl9Ci0KLQkJCS8q Ci0JCQkgKiBGb3IgdGhlIGN1cnJlbnQgaGVhcCB0dXBsZSwgZXh0cmFjdCBhbGwgdGhlIGF0dHJp YnV0ZXMgd2UgdXNlCi0JCQkgKiBpbiB0aGlzIGluZGV4LCBhbmQgbm90ZSB3aGljaCBhcmUgbnVs bC4gIFRoaXMgYWxzbyBwZXJmb3JtcwotCQkJICogZXZhbHVhdGlvbiBvZiBhbnkgZXhwcmVzc2lv bnMgbmVlZGVkLgotCQkJICovCi0JCQlGb3JtSW5kZXhEYXR1bShpbmRleEluZm8sCi0JCQkJCQkg ICBzbG90LAotCQkJCQkJICAgZXN0YXRlLAotCQkJCQkJICAgdmFsdWVzLAotCQkJCQkJICAgaXNu dWxsKTsKLQotCQkJLyoKLQkJCSAqIFlvdSdkIHRoaW5rIHdlIHNob3VsZCBnbyBhaGVhZCBhbmQg YnVpbGQgdGhlIGluZGV4IHR1cGxlIGhlcmUsCi0JCQkgKiBidXQgc29tZSBpbmRleCBBTXMgd2Fu dCB0byBkbyBmdXJ0aGVyIHByb2Nlc3Npbmcgb24gdGhlIGRhdGEKLQkJCSAqIGZpcnN0LiBTbyBw YXNzIHRoZSB2YWx1ZXNbXSBhbmQgaXNudWxsW10gYXJyYXlzLCBpbnN0ZWFkLgotCQkJICovCi0K LQkJCS8qCi0JCQkgKiBJZiB0aGUgdHVwbGUgaXMgYWxyZWFkeSBjb21taXR0ZWQgZGVhZCwgeW91 IG1pZ2h0IHRoaW5rIHdlCi0JCQkgKiBjb3VsZCBzdXBwcmVzcyB1bmlxdWVuZXNzIGNoZWNraW5n LCBidXQgdGhpcyBpcyBubyBsb25nZXIgdHJ1ZQotCQkJICogaW4gdGhlIHByZXNlbmNlIG9mIEhP VCwgYmVjYXVzZSB0aGUgaW5zZXJ0IGlzIGFjdHVhbGx5IGEgcHJveHkKLQkJCSAqIGZvciBhIHVu aXF1ZW5lc3MgY2hlY2sgb24gdGhlIHdob2xlIEhPVC1jaGFpbi4gIFRoYXQgaXMsIHRoZQotCQkJ ICogdHVwbGUgd2UgaGF2ZSBoZXJlIGNvdWxkIGJlIGRlYWQgYmVjYXVzZSBpdCB3YXMgYWxyZWFk eQotCQkJICogSE9ULXVwZGF0ZWQsIGFuZCBpZiBzbyB0aGUgdXBkYXRpbmcgdHJhbnNhY3Rpb24g d2lsbCBub3QgaGF2ZQotCQkJICogdGhvdWdodCBpdCBzaG91bGQgaW5zZXJ0IGluZGV4IGVudHJp ZXMuICBUaGUgaW5kZXggQU0gd2lsbAotCQkJICogY2hlY2sgdGhlIHdob2xlIEhPVC1jaGFpbiBh bmQgY29ycmVjdGx5IGRldGVjdCBhIGNvbmZsaWN0IGlmCi0JCQkgKiB0aGVyZSBpcyBvbmUuCi0J CQkgKi8KLQotCQkJaW5kZXhfaW5zZXJ0KGluZGV4UmVsYXRpb24sCi0JCQkJCQkgdmFsdWVzLAot CQkJCQkJIGlzbnVsbCwKLQkJCQkJCSAmcm9vdFR1cGxlLAotCQkJCQkJIGhlYXBSZWxhdGlvbiwK LQkJCQkJCSBpbmRleEluZm8tPmlpX1VuaXF1ZSA/Ci0JCQkJCQkgVU5JUVVFX0NIRUNLX1lFUyA6 IFVOSVFVRV9DSEVDS19OTywKLQkJCQkJCSBmYWxzZSwKLQkJCQkJCSBpbmRleEluZm8pOwotCi0J CQlzdGF0ZS0+dHVwc19pbnNlcnRlZCArPSAxOwotCQl9CisJCVJlbGVhc2VCdWZmZXIoYnVmKTsK IAl9CiAKLQl0YWJsZV9lbmRzY2FuKHNjYW4pOwotCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxl U2xvdChzbG90KTsKIAogCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CiAKKwlyZWFkX3N0cmVh bV9lbmQocmVhZF9zdHJlYW0pOworCXR1cGxlc3RvcmVfZW5kKHR1cGxlc19mb3JfY2hlY2spOwor CiAJLyogVGhlc2UgbWF5IGhhdmUgYmVlbiBwb2ludGluZyB0byB0aGUgbm93LWdvbmUgZXN0YXRl ICovCiAJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID0gTklMOwogCWluZGV4SW5mby0+ aWlfUHJlZGljYXRlU3RhdGUgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDViZGI1Nzc2MjRj Li42YzgxNTFlNTM4YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisr KyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtNzE1LDExICs3MTUsMTYgQEAgVXBk YXRlSW5kZXhSZWxhdGlvbihPaWQgaW5kZXhvaWQsCiAgKgkJCWFscmVhZHkgZXhpc3RzLgogICoJ CUlOREVYX0NSRUFURV9QQVJUSVRJT05FRDoKICAqCQkJY3JlYXRlIGEgcGFydGl0aW9uZWQgaW5k ZXggKHRhYmxlIG11c3QgYmUgcGFydGl0aW9uZWQpCisgKgkJSU5ERVhfQ1JFQVRFX0FVWElMSUFS WToKKyAqCQkJbWFyayBpbmRleCBhcyBhdXhpbGlhcnkgaW5kZXgKICAqIGNvbnN0cl9mbGFnczog ZmxhZ3MgcGFzc2VkIHRvIGluZGV4X2NvbnN0cmFpbnRfY3JlYXRlCiAgKgkJKG9ubHkgaWYgSU5E RVhfQ1JFQVRFX0FERF9DT05TVFJBSU5UIGlzIHNldCkKICAqIGFsbG93X3N5c3RlbV90YWJsZV9t b2RzOiBhbGxvdyB0YWJsZSB0byBiZSBhIHN5c3RlbSBjYXRhbG9nCiAgKiBpc19pbnRlcm5hbDog aWYgdHJ1ZSwgcG9zdCBjcmVhdGlvbiBob29rIGZvciBuZXcgaW5kZXgKICAqIGNvbnN0cmFpbnRJ ZDogaWYgbm90IE5VTEwsIHJlY2VpdmVzIE9JRCBvZiBjcmVhdGVkIGNvbnN0cmFpbnQKKyAqIHJl bHBlcnNpc3RlbmNlOiBwZXJzaXN0ZW5jZSBsZXZlbCB0byB1c2UgZm9yIGluZGV4LiBJbiBtb3N0 IG9mIHRoZQorICoJCWNhc2VzIGl0IGlzIHNob3VsZCBiZSBlcXVhbCB0byBwZXJzaXN0ZW5jZSBs ZXZlbCBvZiB0YWJsZSwKKyAqCQlhdXhpbGlhcnkgaW5kZXhlcyBhcmUgb25seSBleGNlcHRpb24g aGVyZS4KICAqCiAgKiBSZXR1cm5zIHRoZSBPSUQgb2YgdGhlIGNyZWF0ZWQgaW5kZXguCiAgKi8K QEAgLTc2MCw2ICs3NjUsNyBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog CWJvb2wJCWludmFsaWQgPSAoZmxhZ3MgJiBJTkRFWF9DUkVBVEVfSU5WQUxJRCkgIT0gMDsKIAli b29sCQljb25jdXJyZW50ID0gKGZsYWdzICYgSU5ERVhfQ1JFQVRFX0NPTkNVUlJFTlQpICE9IDA7 CiAJYm9vbAkJcGFydGl0aW9uZWQgPSAoZmxhZ3MgJiBJTkRFWF9DUkVBVEVfUEFSVElUSU9ORUQp ICE9IDA7CisJYm9vbAkJYXV4aWxpYXJ5ID0gKGZsYWdzICYgSU5ERVhfQ1JFQVRFX0FVWElMSUFS WSkgIT0gMDsKIAljaGFyCQlyZWxraW5kOwogCVRyYW5zYWN0aW9uSWQgcmVsZnJvemVueGlkOwog CU11bHRpWGFjdElkIHJlbG1pbm14aWQ7CkBAIC03ODUsNyArNzkxLDEwIEBAIGluZGV4X2NyZWF0 ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJbmFtZXNwYWNlSWQgPSBSZWxhdGlvbkdldE5hbWVz cGFjZShoZWFwUmVsYXRpb24pOwogCXNoYXJlZF9yZWxhdGlvbiA9IGhlYXBSZWxhdGlvbi0+cmRf cmVsLT5yZWxpc3NoYXJlZDsKIAltYXBwZWRfcmVsYXRpb24gPSBSZWxhdGlvbklzTWFwcGVkKGhl YXBSZWxhdGlvbik7Ci0JcmVscGVyc2lzdGVuY2UgPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVs cGVyc2lzdGVuY2U7CisJaWYgKGF1eGlsaWFyeSkKKwkJcmVscGVyc2lzdGVuY2UgPSBSRUxQRVJT SVNURU5DRV9VTkxPR0dFRDsgLyogYXV4IGluZGV4ZXMgYXJlIGFsd2F5cyB1bmxvZ2dlZCAqLwor CWVsc2UKKwkJcmVscGVyc2lzdGVuY2UgPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVscGVyc2lz dGVuY2U7CiAKIAkvKgogCSAqIGNoZWNrIHBhcmFtZXRlcnMKQEAgLTc5Myw2ICs4MDIsMTEgQEAg aW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlpZiAoaW5kZXhJbmZvLT5paV9O dW1JbmRleEF0dHJzIDwgMSkKIAkJZWxvZyhFUlJPUiwgIm11c3QgaW5kZXggYXQgbGVhc3Qgb25l IGNvbHVtbiIpOwogCisJaWYgKGluZGV4SW5mby0+aWlfQW0gPT0gU1RJUl9BTV9PSUQgJiYgIWF1 eGlsaWFyeSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygidXNlci1kZWZpbmVkIGluZGV4ZXMgd2l0aCBT VElSIGFjY2VzcyBtZXRob2QgYXJlIG5vdCBzdXBwb3J0ZWQiKSkpOworCiAJaWYgKCFhbGxvd19z eXN0ZW1fdGFibGVfbW9kcyAmJgogCQlJc1N5c3RlbVJlbGF0aW9uKGhlYXBSZWxhdGlvbikgJiYK IAkJSXNOb3JtYWxQcm9jZXNzaW5nTW9kZSgpKQpAQCAtMTM5OCw3ICsxNDEyLDggQEAgaW5kZXhf Y29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZElu ZGV4SWQsCiAJCQkJCQkJZmFsc2UsCS8qIG5vdCByZWFkeSBmb3IgaW5zZXJ0cyAqLwogCQkJCQkJ CXRydWUsCiAJCQkJCQkJaW5kZXhSZWxhdGlvbi0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCi0J CQkJCQkJb2xkSW5mby0+aWlfV2l0aG91dE92ZXJsYXBzKTsKKwkJCQkJCQlvbGRJbmZvLT5paV9X aXRob3V0T3ZlcmxhcHMsCisJCQkJCQkJZmFsc2UpOwogCiAJLyoKIAkgKiBFeHRyYWN0IHRoZSBs aXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhlIGNvbHVtbiBudW1iZXJzIGZvciB0aGUgbmV3CkBA IC0xNDczLDYgKzE0ODgsMTU0IEBAIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxh dGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLAogCXJldHVybiBuZXdJbmRleElkOwog fQogCisvKgorICogaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9hdXgKKyAqCisgKiBDcmVhdGUg Y29uY3VycmVudGx5IGFuIGF1eGlsaWFyeSBpbmRleCBiYXNlZCBvbiB0aGUgZGVmaW5pdGlvbiBv ZiB0aGUgb25lCisgKiBwcm92aWRlZCBieSBjYWxsZXIuICBUaGUgaW5kZXggaXMgaW5zZXJ0ZWQg aW50byBjYXRhbG9ncyBhbmQgbmVlZHMgdG8gYmUKKyAqIGJ1aWx0IGxhdGVyIG9uLiBUaGlzIGlz IGNhbGxlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4IHByb2Nlc3NpbmcuCisgKgorICogInRh Ymxlc3BhY2VPaWQiIGlzIHRoZSB0YWJsZXNwYWNlIHRvIHVzZSBmb3IgdGhpcyBpbmRleC4KKyAq LworT2lkCitpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVsYXRp b24sIE9pZCBtYWluSW5kZXhJZCwKKwkJCQkJCQkgICBPaWQgdGFibGVzcGFjZU9pZCwgY29uc3Qg Y2hhciAqbmV3TmFtZSkKK3sKKwlSZWxhdGlvbglpbmRleFJlbGF0aW9uOworCUluZGV4SW5mbyAg Km9sZEluZm8sCisJCQkqbmV3SW5mbzsKKwlPaWQJCQluZXdJbmRleElkID0gSW52YWxpZE9pZDsK KwlIZWFwVHVwbGUJaW5kZXhUdXBsZTsKKworCUxpc3QJICAgKmluZGV4Q29sTmFtZXMgPSBOSUw7 CisJTGlzdAkgICAqaW5kZXhFeHBycyA9IE5JTDsKKwlMaXN0CSAgICppbmRleFByZWRzID0gTklM OworCisJT2lkICphdXhPcGNsYXNzSWRzOworCWludDE2ICphdXhDb2xvcHRpb25zOworCisJaW5k ZXhSZWxhdGlvbiA9IGluZGV4X29wZW4obWFpbkluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwor CisJLyogVGhlIG5ldyBpbmRleCBuZWVkcyBzb21lIGluZm9ybWF0aW9uIGZyb20gdGhlIG9sZCBp bmRleCAqLworCW9sZEluZm8gPSBCdWlsZEluZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKKworCS8q CisJICogQnVpbGQgb2YgYW4gYXV4aWxpYXJ5IGluZGV4IHdpdGggZXhjbHVzaW9uIGNvbnN0cmFp bnRzIGlzIG5vdAorCSAqIHN1cHBvcnRlZC4KKwkgKi8KKwlpZiAob2xkSW5mby0+aWlfRXhjbHVz aW9uT3BzICE9IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJZXJybXNnKCJhdXhpbGlhcnkgaW5kZXggY3Jl YXRpb24gZm9yIGV4Y2x1c2lvbiBjb25zdHJhaW50cyBpcyBub3Qgc3VwcG9ydGVkIikpKTsKKwor CS8qIEdldCB0aGUgYXJyYXkgb2YgY2xhc3MgYW5kIGNvbHVtbiBvcHRpb25zIElEcyBmcm9tIGlu ZGV4IGluZm8gKi8KKwlpbmRleFR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKElOREVYUkVMSUQsIE9i amVjdElkR2V0RGF0dW0obWFpbkluZGV4SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoaW5k ZXhUdXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBpbmRleCAl dSIsIG1haW5JbmRleElkKTsKKworCisJLyoKKwkgKiBGZXRjaCB0aGUgbGlzdCBvZiBleHByZXNz aW9ucyBhbmQgcHJlZGljYXRlcyBkaXJlY3RseSBmcm9tIHRoZQorCSAqIGNhdGFsb2dzLiAgVGhp cyBjYW5ub3QgcmVseSBvbiB0aGUgaW5mb3JtYXRpb24gZnJvbSBJbmRleEluZm8gb2YgdGhlCisJ ICogb2xkIGluZGV4IGFzIHRoZXNlIGhhdmUgYmVlbiBmbGF0dGVuZWQgZm9yIHRoZSBwbGFubmVy LgorCSAqLworCWlmIChvbGRJbmZvLT5paV9FeHByZXNzaW9ucyAhPSBOSUwpCisJeworCQlEYXR1 bQkJZXhwckRhdHVtOworCQljaGFyCSAgICpleHByU3RyaW5nOworCisJCWV4cHJEYXR1bSA9IFN5 c0NhY2hlR2V0QXR0ck5vdE51bGwoSU5ERVhSRUxJRCwgaW5kZXhUdXBsZSwKKwkJCQkJCQkJCQkg ICBBbnVtX3BnX2luZGV4X2luZGV4cHJzKTsKKwkJZXhwclN0cmluZyA9IFRleHREYXR1bUdldENT dHJpbmcoZXhwckRhdHVtKTsKKwkJaW5kZXhFeHBycyA9IChMaXN0ICopIHN0cmluZ1RvTm9kZShl eHByU3RyaW5nKTsKKwkJcGZyZWUoZXhwclN0cmluZyk7CisJfQorCWlmIChvbGRJbmZvLT5paV9Q cmVkaWNhdGUgIT0gTklMKQorCXsKKwkJRGF0dW0JCXByZWREYXR1bTsKKwkJY2hhcgkgICAqcHJl ZFN0cmluZzsKKworCQlwcmVkRGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKElOREVYUkVM SUQsIGluZGV4VHVwbGUsCisJCQkJCQkJCQkJICAgQW51bV9wZ19pbmRleF9pbmRwcmVkKTsKKwkJ cHJlZFN0cmluZyA9IFRleHREYXR1bUdldENTdHJpbmcocHJlZERhdHVtKTsKKwkJaW5kZXhQcmVk cyA9IChMaXN0ICopIHN0cmluZ1RvTm9kZShwcmVkU3RyaW5nKTsKKworCQkvKiBBbHNvIGNvbnZl cnQgdG8gaW1wbGljaXQtQU5EIGZvcm1hdCAqLworCQlpbmRleFByZWRzID0gbWFrZV9hbmRzX2lt cGxpY2l0KChFeHByICopIGluZGV4UHJlZHMpOworCQlwZnJlZShwcmVkU3RyaW5nKTsKKwl9CisK KwkvKgorCSAqIEJ1aWxkIHRoZSBpbmRleCBpbmZvcm1hdGlvbiBmb3IgdGhlIG5ldyBpbmRleC4g IE5vdGUgdGhhdCByZWJ1aWxkIG9mCisJICogaW5kZXhlcyB3aXRoIGV4Y2x1c2lvbiBjb25zdHJh aW50cyBpcyBub3Qgc3VwcG9ydGVkLCBoZW5jZSB0aGVyZSBpcyBubworCSAqIG5lZWQgdG8gZmls bCBhbGwgdGhlIGlpX0V4Y2x1c2lvbiogZmllbGRzLgorCSAqLworCW5ld0luZm8gPSBtYWtlSW5k ZXhJbmZvKG9sZEluZm8tPmlpX051bUluZGV4QXR0cnMsCisJCQkJCQkJb2xkSW5mby0+aWlfTnVt SW5kZXhLZXlBdHRycywKKwkJCQkJCQlTVElSX0FNX09JRCwgLyogc3BlY2lhbCBBTSBmb3IgYXV4 IGluZGV4ZXMgKi8KKwkJCQkJCQlpbmRleEV4cHJzLAorCQkJCQkJCWluZGV4UHJlZHMsCisJCQkJ CQkJZmFsc2UsCS8qIGF1eCBpbmRleCBhcmUgbm90IHVuaXF1ZSAqLworCQkJCQkJCW9sZEluZm8t PmlpX051bGxzTm90RGlzdGluY3QsCisJCQkJCQkJZmFsc2UsCS8qIG5vdCByZWFkeSBmb3IgaW5z ZXJ0cyAqLworCQkJCQkJCXRydWUsCisJCQkJCQkJZmFsc2UsCS8qIGF1eCBhcmUgbm90IHN1bW1h cml6aW5nICovCisJCQkJCQkJZmFsc2UsCS8qIGF1eCBhcmUgbm90IHdpdGhvdXQgb3ZlcmxhcHMg Ki8KKwkJCQkJCQl0cnVlCS8qIGF1eGlsaWFyeSAqLyk7CisKKwkvKgorCSAqIEV4dHJhY3QgdGhl IGxpc3Qgb2YgY29sdW1uIG5hbWVzIGFuZCB0aGUgY29sdW1uIG51bWJlcnMgZm9yIHRoZSBuZXcK KwkgKiBpbmRleCBpbmZvcm1hdGlvbi4gIEFsbCB0aGlzIGluZm9ybWF0aW9uIHdpbGwgYmUgdXNl ZCBmb3IgdGhlIGluZGV4CisJICogY3JlYXRpb24uCisJICovCisJZm9yIChpbnQgaSA9IDA7IGkg PCBvbGRJbmZvLT5paV9OdW1JbmRleEF0dHJzOyBpKyspCisJeworCQlUdXBsZURlc2MJaW5kZXhU dXBEZXNjID0gUmVsYXRpb25HZXREZXNjcihpbmRleFJlbGF0aW9uKTsKKwkJRm9ybV9wZ19hdHRy aWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cihpbmRleFR1cERlc2MsIGkpOworCisJCWluZGV4Q29s TmFtZXMgPSBsYXBwZW5kKGluZGV4Q29sTmFtZXMsIE5hbWVTdHIoYXR0LT5hdHRuYW1lKSk7CisJ CW5ld0luZm8tPmlpX0luZGV4QXR0ck51bWJlcnNbaV0gPSBvbGRJbmZvLT5paV9JbmRleEF0dHJO dW1iZXJzW2ldOworCX0KKworCWF1eE9wY2xhc3NJZHMgPSBwYWxsb2MwKHNpemVvZihPaWQpICog bmV3SW5mby0+aWlfTnVtSW5kZXhBdHRycyk7CisJYXV4Q29sb3B0aW9ucyA9IHBhbGxvYzAoc2l6 ZW9mKGludDE2KSAqIG5ld0luZm8tPmlpX051bUluZGV4QXR0cnMpOworCisJLyogRmlsbCB3aXRo ICJhbnkgb3BzIiAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgbmV3SW5mby0+aWlfTnVtSW5kZXhB dHRyczsgaSsrKQorCXsKKwkJYXV4T3BjbGFzc0lkc1tpXSA9IEFOWV9TVElSX09QU19PSUQ7CisJ CWF1eENvbG9wdGlvbnNbaV0gPSAwOworCX0KKworCW5ld0luZGV4SWQgPSBpbmRleF9jcmVhdGUo aGVhcFJlbGF0aW9uLAorCQkJCQkJCSAgbmV3TmFtZSwKKwkJCQkJCQkgIEludmFsaWRPaWQsICAg IC8qIGluZGV4UmVsYXRpb25JZCAqLworCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50 SW5kZXhSZWxpZCAqLworCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50Q29uc3RyYWlu dElkICovCisJCQkJCQkJICBJbnZhbGlkUmVsRmlsZU51bWJlciwgLyogcmVsRmlsZU51bWJlciAq LworCQkJCQkJCSAgbmV3SW5mbywKKwkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCisJCQkJCQkJICBT VElSX0FNX09JRCwKKwkJCQkJCQkgIHRhYmxlc3BhY2VPaWQsCisJCQkJCQkJICBpbmRleFJlbGF0 aW9uLT5yZF9pbmRjb2xsYXRpb24sCisJCQkJCQkJICBhdXhPcGNsYXNzSWRzLAorCQkJCQkJCSAg TlVMTCwKKwkJCQkJCQkgIGF1eENvbG9wdGlvbnMsCisJCQkJCQkJICBOVUxMLAorCQkJCQkJCSAg KERhdHVtKSAwLAorCQkJCQkJCSAgSU5ERVhfQ1JFQVRFX1NLSVBfQlVJTEQgfCBJTkRFWF9DUkVB VEVfQ09OQ1VSUkVOVCB8IElOREVYX0NSRUFURV9BVVhJTElBUlksCisJCQkJCQkJICAwLAorCQkJ CQkJCSAgdHJ1ZSwgLyogYWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0gY2F0YWxvZz8gKi8KKwkJ CQkJCQkgIGZhbHNlLCAgICAvKiBpc19pbnRlcm5hbD8gKi8KKwkJCQkJCQkgIE5VTEwpOworCisJ LyogQ2xvc2UgdGhlIHJlbGF0aW9ucyB1c2VkIGFuZCBjbGVhbiB1cCAqLworCWluZGV4X2Nsb3Nl KGluZGV4UmVsYXRpb24sIE5vTG9jayk7CisJUmVsZWFzZVN5c0NhY2hlKGluZGV4VHVwbGUpOwor CisJcmV0dXJuIG5ld0luZGV4SWQ7Cit9CisKIC8qCiAgKiBpbmRleF9jb25jdXJyZW50bHlfYnVp bGQKICAqCkBAIC0yNDY5LDcgKzI2MzIsOCBAQCBCdWlsZEluZGV4SW5mbyhSZWxhdGlvbiBpbmRl eCkKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzcmVhZHksCiAJCQkJCSAgIGZhbHNlLAogCQkJ CQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCi0JCQkJCSAgIGluZGV4U3RydWN0 LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUpOworCQkJCQkgICBp bmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24gJiYgaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlLAor CQkJCQkgICBpbmRleC0+cmRfcmVsLT5yZWxhbSA9PSBTVElSX0FNX09JRCAvKiBhdXhpbGlhcnkg aWZmIFNUSVIgKi8pOwogCiAJLyogZmlsbCBpbiBhdHRyaWJ1dGUgbnVtYmVycyAqLwogCWZvciAo aSA9IDA7IGkgPCBudW1BdHRzOyBpKyspCkBAIC0yNTI5LDcgKzI2OTMsOCBAQCBCdWlsZER1bW15 SW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4KQogCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNyZWFk eSwKIAkJCQkJICAgZmFsc2UsCiAJCQkJCSAgIGluZGV4LT5yZF9pbmRhbS0+YW1zdW1tYXJpemlu ZywKLQkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYmIGluZGV4U3RydWN0LT5p bmRpc3VuaXF1ZSk7CisJCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRl eFN0cnVjdC0+aW5kaXN1bmlxdWUsCisJCQkJCSAgIGluZGV4LT5yZF9yZWwtPnJlbGFtID09IFNU SVJfQU1fT0lEIC8qIGF1eGlsaWFyeSBpZmYgU1RJUiAqLyk7CiAKIAkvKiBmaWxsIGluIGF0dHJp YnV0ZSBudW1iZXJzICovCiAJZm9yIChpID0gMDsgaSA8IG51bUF0dHM7IGkrKykKQEAgLTMzMDYs MTIgKzM0NzEsMjEgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAgKgogICogV2UgZG8gYSBjb25jdXJyZW50IGluZGV4IGJ1aWxkIGJ5IGZpcnN0IGluc2VydGlu ZyB0aGUgY2F0YWxvZyBlbnRyeSBmb3IgdGhlCiAgKiBpbmRleCB2aWEgaW5kZXhfY3JlYXRlKCks IG1hcmtpbmcgaXQgbm90IGluZGlzcmVhZHkgYW5kIG5vdCBpbmRpc3ZhbGlkLgorICogVGhlbiB3 ZSBjcmVhdGUgc3BlY2lhbCBhdXhpbGlhcnkgaW5kZXggdGhlIHNhbWUgd2F5LiBJdCBiYXNlZCBv biBTVElSIEFNLgogICogVGhlbiB3ZSBjb21taXQgb3VyIHRyYW5zYWN0aW9uIGFuZCBzdGFydCBh IG5ldyBvbmUsIHRoZW4gd2Ugd2FpdCBmb3IgYWxsCiAgKiB0cmFuc2FjdGlvbnMgdGhhdCBjb3Vs ZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0YWJsZSB0byB0ZXJtaW5hdGUuICBOb3cKLSAqIHdl IGtub3cgdGhhdCBhbnkgc3Vic2VxdWVudGx5LXN0YXJ0ZWQgdHJhbnNhY3Rpb25zIHdpbGwgc2Vl IHRoZSBpbmRleCBhbmQKKyAqIHdlIGtub3cgdGhhdCBhbnkgc3Vic2VxdWVudGx5LXN0YXJ0ZWQg dHJhbnNhY3Rpb25zIHdpbGwgc2VlIGluZGV4ZXMgYW5kCiAgKiBob25vciBpdHMgY29uc3RyYWlu dHMgb24gSE9UIHVwZGF0ZXM7IHNvIHdoaWxlIGV4aXN0aW5nIEhPVC1jaGFpbnMgbWlnaHQKICAq IGJlIGJyb2tlbiB3aXRoIHJlc3BlY3QgdG8gdGhlIGluZGV4LCBubyBjdXJyZW50bHkgbGl2ZSB0 dXBsZSB3aWxsIGhhdmUgYW4KLSAqIGluY29tcGF0aWJsZSBIT1QgdXBkYXRlIGRvbmUgdG8gaXQu ICBXZSBub3cgYnVpbGQgdGhlIGluZGV4IG5vcm1hbGx5IHZpYQorICogaW5jb21wYXRpYmxlIEhP VCB1cGRhdGUgZG9uZSB0byBpdC4KKyAqCisgKiBBZnRlciB3ZSBidWlsZCBhdXhpbGlhcnkgaW5k ZXguIEl0IGlzIGZhc3Qgb3BlcmF0aW9uIHdpdGhvdXQgYW55IGFjdHVhbAorICogdGFibGUgc2Nh bi4gQXMgcmVzdWx0LCB3ZSBoYXZlIGVtcHR5IFNUSVIgaW5kZXguIFdlIGNvbW1pdCB0cmFuc2Fj dGlvbiBhbmQKKyAqIGFnYWluIHdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBo YXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0YWJsZQorICogdG8gdGVybWluYXRlLiBBdCB0aGF0IG1v bWVudCBhbGwgbmV3IHR1cGxlcyBhcmUgZ29pbmcgdG8gYmUgaW5zZXJ0ZWQgaW50bworICogYXV4 aWxpYXJ5IGluZGV4LgorICoKKyAqIFdlIG5vdyBidWlsZCB0aGUgaW5kZXggbm9ybWFsbHkgdmlh CiAgKiBpbmRleF9idWlsZCgpLCB3aGlsZSBob2xkaW5nIGEgd2VhayBsb2NrIHRoYXQgYWxsb3dz IGNvbmN1cnJlbnQKICAqIGluc2VydC91cGRhdGUvZGVsZXRlLiAgQWxzbywgd2UgaW5kZXggb25s eSB0dXBsZXMgdGhhdCBhcmUgdmFsaWQKICAqIGFzIG9mIHRoZSBzdGFydCBvZiB0aGUgc2NhbiAo c2VlIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4pLCB3aGVyZWFzIGEgbm9ybWFsCkBAIC0zMzIxLDE4 ICszNDk1LDIxIEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog ICogYm9ndXMgdW5pcXVlLWluZGV4IGZhaWx1cmVzIGR1ZSB0byBjb25jdXJyZW50IFVQREFURXMg KHdlIG1pZ2h0IHNlZQogICogZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBzYW1lIHJvdyBhcyBi ZWluZyB2YWxpZCB3aGVuIHdlIHBhc3Mgb3ZlciB0aGVtLAogICogaWYgd2UgdXNlZCBIZWFwVHVw bGVTYXRpc2ZpZXNWYWN1dW0pLiAgVGhpcyBsZWF2ZXMgdXMgd2l0aCBhbiBpbmRleCB0aGF0Ci0g KiBkb2VzIG5vdCBjb250YWluIGFueSB0dXBsZXMgYWRkZWQgdG8gdGhlIHRhYmxlIHdoaWxlIHdl IGJ1aWx0IHRoZSBpbmRleC4KKyAqIGRvZXMgbm90IGNvbnRhaW4gYW55IHR1cGxlcyBhZGRlZCB0 byB0aGUgdGFibGUgd2hpbGUgd2UgYnVpbHQgdGhlIGluZGV4CisgKiAoYnV0IHRoZXNlIHR1cGxl cyBjb250YWluZWQgaW4gYXV4aWxpYXJ5IGluZGV4KS4KICAqCiAgKiBGdXJ0aGVybW9yZSwgd2Ug c2V0IFNPX1JFU0VUX1NOQVBTSE9UIGZvciB0aGUgc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldwogICog c25hcHNob3QgdG8gYmUgc2V0IGFzIGFjdGl2ZSBldmVyeSBzbyBvZnRlbi4gVGhlIHJlYXNvbiAg Zm9yIHRoYXQgaXMgdG8KICAqIHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZvcndhcmQuCiAg KgogICogTmV4dCwgd2UgbWFyayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQgc3RpbGwgbm90 ICJpbmRpc3ZhbGlkIikgYW5kCi0gKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBhbmQg c3RhcnQgYSB0aGlyZC4gIEFnYWluIHdlIHdhaXQgZm9yIGFsbAorICogY29tbWl0IHRoZSB0aGly ZCB0cmFuc2FjdGlvbiBhbmQgc3RhcnQgYSBmb3VydGguICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwK ICAqIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIGhhdmUgYmVlbiBtb2RpZnlpbmcgdGhlIHRhYmxl IHRvIHRlcm1pbmF0ZS4gIE5vdwogICogd2Uga25vdyB0aGF0IGFueSBzdWJzZXF1ZW50bHktc3Rh cnRlZCB0cmFuc2FjdGlvbnMgd2lsbCBzZWUgdGhlIGluZGV4IGFuZAotICogaW5zZXJ0IHRoZWly IG5ldyB0dXBsZXMgaW50byBpdC4gIFdlIHRoZW4gdGFrZSBhIG5ldyByZWZlcmVuY2Ugc25hcHNo b3QKLSAqIHdoaWNoIGlzIHBhc3NlZCB0byB2YWxpZGF0ZV9pbmRleCgpLiAgQW55IHR1cGxlcyB0 aGF0IGFyZSB2YWxpZCBhY2NvcmRpbmcKKyAqIGluc2VydCB0aGVpciBuZXcgdHVwbGVzIGludG8g aXQuIEF0IHRoZSBzYW1lIG1vbWVudCB3ZSBjbGVhciAiaW5kaXNyZWFkeSIgZm9yCisgKiBhdXhp bGlhcnkgaW5kZXgsIHNpbmNlIGl0IGlzIG5vIG1vcmUgcmVxdWlyZWQgdG8gYmUgdXBkYXRlZC4K KyAqCisgKiBXZSB0aGVuIHRha2UgYSBuZXcgcmVmZXJlbmNlIHNuYXBzaG90LCBhbnkgdHVwbGVz IHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZwogICogdG8gdGhpcyBzbmFwLCBidXQgYXJlIG5vdCBp biB0aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGluZGV4LgogICogKEFueSB0dXBsZXMg Y29tbWl0dGVkIGxpdmUgYWZ0ZXIgdGhlIHNuYXAgd2lsbCBiZSBpbnNlcnRlZCBpbnRvIHRoZQog ICogaW5kZXggYnkgdGhlaXIgb3JpZ2luYXRpbmcgdHJhbnNhY3Rpb24uICBBbnkgdHVwbGVzIGNv bW1pdHRlZCBkZWFkIGJlZm9yZQpAQCAtMzM0MCwxMiArMzUxNywxNCBAQCBJbmRleENoZWNrRXhj bHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIHRoYXQgbWlnaHQgY2FyZSBhYm91dCB0 aGVtIGJlZm9yZSB3ZSBtYXJrIHRoZSBpbmRleCB2YWxpZC4pCiAgKgogICogdmFsaWRhdGVfaW5k ZXgoKSB3b3JrcyBieSBmaXJzdCBnYXRoZXJpbmcgYWxsIHRoZSBUSURzIGN1cnJlbnRseSBpbiB0 aGUKLSAqIGluZGV4LCB1c2luZyBhIGJ1bGtkZWxldGUgY2FsbGJhY2sgdGhhdCBqdXN0IHN0b3Jl cyB0aGUgVElEcyBhbmQgZG9lc24ndAorICogaW5kZXhlcywgdXNpbmcgYSBidWxrZGVsZXRlIGNh bGxiYWNrIHRoYXQganVzdCBzdG9yZXMgdGhlIFRJRHMgYW5kIGRvZXNuJ3QKICAqIGV2ZXIgc2F5 ICJkZWxldGUgaXQiLiAgKFRoaXMgc2hvdWxkIGJlIGZhc3RlciB0aGFuIGEgcGxhaW4gaW5kZXhz Y2FuOwogICogYWxzbywgbm90IGFsbCBpbmRleCBBTXMgc3VwcG9ydCBmdWxsLWluZGV4IGluZGV4 c2Nhbi4pICBUaGVuIHdlIHNvcnQgdGhlCi0gKiBUSURzLCBhbmQgZmluYWxseSBzY2FuIHRoZSB0 YWJsZSBkb2luZyBhICJtZXJnZSBqb2luIiBhZ2FpbnN0IHRoZSBUSUQgbGlzdAotICogdG8gc2Vl IHdoaWNoIHR1cGxlcyBhcmUgbWlzc2luZyBmcm9tIHRoZSBpbmRleC4gIFRodXMgd2Ugd2lsbCBl bnN1cmUgdGhhdAotICogYWxsIHR1cGxlcyB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlIHJlZmVyZW5j ZSBzbmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LgorICogVElEcyBvZiBib3RoIGF1eGlsaWFyeSBh bmQgdGFyZ2V0IGluZGV4ZXMsIGFuZCBkb2luZyBhICJtZXJnZSBqb2luIiBhZ2FpbnN0CisgKiB0 aGUgVElEIGxpc3RzIHRvIHNlZSB3aGljaCB0dXBsZXMgZnJvbSBhdXhpbGlhcnkgaW5kZXggYXJl IG1pc3NpbmcgZnJvbSB0aGUKKyAqIHRhcmdldCBpbmRleC4gIFRodXMgd2Ugd2lsbCBlbnN1cmUg dGhhdCBhbGwgdHVwbGVzIHZhbGlkIGFjY29yZGluZyB0byB0aGUKKyAqIHJlZmVyZW5jZSBzbmFw c2hvdCBhcmUgaW4gdGhlIGluZGV4LiBOb3RpY2Ugd2UgbmVlZCB0byBkbyBidWxrZGVsZXRlIGlu IHRoZQorICogcGFydGljdWxhciBvcmRlcjogYXV4aWxpYXJ5IGZpcnN0LCB0YXJnZXQgbGFzdC4K ICAqCiAgKiBCdWlsZGluZyBhIHVuaXF1ZSBpbmRleCB0aGlzIHdheSBpcyB0cmlja3k6IHdlIG1p Z2h0IHRyeSB0byBpbnNlcnQgYQogICogdHVwbGUgdGhhdCBpcyBhbHJlYWR5IGRlYWQgb3IgaXMg aW4gcHJvY2VzcyBvZiBiZWluZyBkZWxldGVkLCBhbmQgd2UKQEAgLTMzNjMsMjIgKzM1NDIsMjYg QEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKiBub3QgaW5k ZXgpLiAgVGhlbiB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXN2YWxpZCIgYW5kIGNvbW1pdC4gIFN1 YnNlcXVlbnQKICAqIHRyYW5zYWN0aW9ucyB3aWxsIGJlIGFibGUgdG8gdXNlIGl0IGZvciBxdWVy aWVzLgogICoKLSAqIERvaW5nIHR3byBmdWxsIHRhYmxlIHNjYW5zIGlzIGEgYnJ1dGUtZm9yY2Ug c3RyYXRlZ3kuICBXZSBjb3VsZCB0cnkgdG8gYmUKLSAqIGNsZXZlcmVyLCBlZyBzdG9yaW5nIG5l dyB0dXBsZXMgaW4gYSBzcGVjaWFsIGFyZWEgb2YgdGhlIHRhYmxlIChwZXJoYXBzCi0gKiBtYWtp bmcgdGhlIHRhYmxlIGFwcGVuZC1vbmx5IGJ5IHNldHRpbmcgdXNlX2ZzbSkuICBIb3dldmVyIHRo YXQgd291bGQKLSAqIGFkZCB5ZXQgbW9yZSBsb2NraW5nIGlzc3Vlcy4KKyAqIEFsc28sIHNvbWUg YWN0aW9ucyB0byBjb25jdXJyZW50IGRyb3AgdGhlIGF1eGlsaWFyeSBpbmRleCBhcmUgcGVyZm9y bWVkLgogICovCiB2b2lkCi12YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwg U25hcHNob3Qgc25hcHNob3QpCit2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJ ZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogewogCVJlbGF0aW9uCWhlYXBS ZWxhdGlvbiwKLQkJCQlpbmRleFJlbGF0aW9uOworCQkJCWluZGV4UmVsYXRpb24sCisJCQkJYXV4 SW5kZXhSZWxhdGlvbjsKIAlJbmRleEluZm8gICppbmRleEluZm87Ci0JSW5kZXhWYWN1dW1JbmZv IGl2aW5mbzsKLQlWYWxpZGF0ZUluZGV4U3RhdGUgc3RhdGU7CisJSW5kZXhWYWN1dW1JbmZvIGl2 aW5mbywgYXV4aXZpbmZvOworCVZhbGlkYXRlSW5kZXhTdGF0ZSBzdGF0ZSwgYXV4U3RhdGU7CiAJ T2lkCQkJc2F2ZV91c2VyaWQ7CiAJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAlpbnQJCQlzYXZl X25lc3RsZXZlbDsKKwkvKiBVc2UgODAlIG9mIG1haW50ZW5hbmNlX3dvcmtfbWVtIHRvIHRhcmdl dCBpbmRleCBzb3J0aW5nIGFuZAorCSAqIDEwJSByZXN0IGZvciBhdXhpbGlhcnkuCisJICoKKwkg KiBSZXN0IDEwJSB3aWxsIGJlIHVzZWQgZm9yIHR1cGxlc3RvcmUgbGF0ZXIuICovCisJaW50NjQJ CW1haW5fd29ya19tZW1fcGFydCA9IChpbnQ2NCkgbWFpbnRlbmFuY2Vfd29ya19tZW0gKiA4IC8g MTA7CisJaW50CQkJYXV4X3dvcmtfbWVtX3BhcnQgPSBtYWludGVuYW5jZV93b3JrX21lbSAvIDEw OwogCiAJewogCQljb25zdCBpbnQJcHJvZ3Jlc3NfaW5kZXhbXSA9IHsKQEAgLTM0MTEsNiArMzU5 NCw3IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBz bmFwc2hvdCkKIAlSZXN0cmljdFNlYXJjaFBhdGgoKTsKIAogCWluZGV4UmVsYXRpb24gPSBpbmRl eF9vcGVuKGluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCWF1eEluZGV4UmVsYXRpb24gPSBp bmRleF9vcGVuKGF1eEluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJLyoKIAkgKiBGZXRj aCBpbmZvIG5lZWRlZCBmb3IgaW5kZXhfaW5zZXJ0LiAgKFlvdSBtaWdodCB0aGluayB0aGlzIHNo b3VsZCBiZQpAQCAtMzQzNSwxNSArMzYxOSw1NSBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElk LCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJaXZpbmZvLnN0cmF0ZWd5ID0gTlVM TDsKIAlpdmluZm8udmFsaWRhdGVfaW5kZXggPSB0cnVlOwogCisJLyoKKwkgKiBDb3B5IGFsbCBp bmZvIHRvIGF1eGlsaWFyeSBpbmZvLCBjaGFuZ2luZyBvbmx5IHJlbGF0aW9uLgorCSAqLworCWF1 eGl2aW5mbyA9IGl2aW5mbzsKKwlhdXhpdmluZm8uaW5kZXggPSBhdXhJbmRleFJlbGF0aW9uOwor CiAJLyoKIAkgKiBFbmNvZGUgVElEcyBhcyBpbnQ4IHZhbHVlcyBmb3IgdGhlIHNvcnQsIHJhdGhl ciB0aGFuIGRpcmVjdGx5IHNvcnRpbmcKIAkgKiBpdGVtIHBvaW50ZXJzLiAgVGhpcyBjYW4gYmUg c2lnbmlmaWNhbnRseSBmYXN0ZXIsIHByaW1hcmlseSBiZWNhdXNlIFRJRAogCSAqIGlzIGEgcGFz cy1ieS1yZWZlcmVuY2UgdHlwZSBvbiBhbGwgcGxhdGZvcm1zLCB3aGVyZWFzIGludDggaXMKIAkg KiBwYXNzLWJ5LXZhbHVlIG9uIG1vc3QgcGxhdGZvcm1zLgogCSAqLworCWF1eFN0YXRlLnR1cGxl c29ydCA9IHR1cGxlc29ydF9iZWdpbl9kYXR1bShJTlQ4T0lELCBJbnQ4TGVzc09wZXJhdG9yLAor CQkJCQkJCQkJCSAgIEludmFsaWRPaWQsIGZhbHNlLAorCQkJCQkJCQkJCSAgIGF1eF93b3JrX21l bV9wYXJ0LAorCQkJCQkJCQkJCSAgIE5VTEwsIFRVUExFU09SVF9OT05FKTsKKwlhdXhTdGF0ZS5o dHVwcyA9IGF1eFN0YXRlLml0dXBzID0gYXV4U3RhdGUudHVwc19pbnNlcnRlZCA9IDA7CisKKwko dm9pZCkgaW5kZXhfYnVsa19kZWxldGUoJmF1eGl2aW5mbywgTlVMTCwKKwkJCQkJCQkgdmFsaWRh dGVfaW5kZXhfY2FsbGJhY2ssICZhdXhTdGF0ZSk7CisJLyogSWYgYXV4IGluZGV4IGlzIGVtcHR5 LCBtZXJnZSBtYXkgYmUgc2tpcHBlZCAqLworCWlmIChhdXhTdGF0ZS5pdHVwcyA9PSAwKQorCXsK KwkJdHVwbGVzb3J0X2VuZChhdXhTdGF0ZS50dXBsZXNvcnQpOworCQlhdXhTdGF0ZS50dXBsZXNv cnQgPSBOVUxMOworCisJCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkg aW5kZXggZnVuY3Rpb25zICovCisJCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwp OworCisJCS8qIFJlc3RvcmUgdXNlcmlkIGFuZCBzZWN1cml0eSBjb250ZXh0ICovCisJCVNldFVz ZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQsIHNhdmVfc2VjX2NvbnRleHQpOworCisJCS8q IENsb3NlIHJlbHMsIGJ1dCBrZWVwIGxvY2tzICovCisJCWluZGV4X2Nsb3NlKGF1eEluZGV4UmVs YXRpb24sIE5vTG9jayk7CisJCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7CisJ CXRhYmxlX2Nsb3NlKGhlYXBSZWxhdGlvbiwgTm9Mb2NrKTsKKworCQlQdXNoQWN0aXZlU25hcHNo b3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJbGltaXRYbWluID0gR2V0QWN0aXZlU25h cHNob3QoKS0+eG1pbjsKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJSW52YWxpZGF0ZUNhdGFs b2dTbmFwc2hvdCgpOworCisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54 bWluKSk7CisJCXJldHVybiBsaW1pdFhtaW47CisJfQorCiAJc3RhdGUudHVwbGVzb3J0ID0gdHVw bGVzb3J0X2JlZ2luX2RhdHVtKElOVDhPSUQsIEludDhMZXNzT3BlcmF0b3IsCiAJCQkJCQkJCQkJ CUludmFsaWRPaWQsIGZhbHNlLAotCQkJCQkJCQkJCQltYWludGVuYW5jZV93b3JrX21lbSwKKwkJ CQkJCQkJCQkJKGludCkgbWFpbl93b3JrX21lbV9wYXJ0LAogCQkJCQkJCQkJCQlOVUxMLCBUVVBM RVNPUlRfTk9ORSk7CiAJc3RhdGUuaHR1cHMgPSBzdGF0ZS5pdHVwcyA9IHN0YXRlLnR1cHNfaW5z ZXJ0ZWQgPSAwOwogCkBAIC0zNDY2LDI3ICszNjkwLDMwIEBAIHZhbGlkYXRlX2luZGV4KE9pZCBo ZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAkJcGdzdGF0X3Byb2dyZXNz X3VwZGF0ZV9tdWx0aV9wYXJhbSgzLCBwcm9ncmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7CiAJ fQogCXR1cGxlc29ydF9wZXJmb3Jtc29ydChzdGF0ZS50dXBsZXNvcnQpOworCXR1cGxlc29ydF9w ZXJmb3Jtc29ydChhdXhTdGF0ZS50dXBsZXNvcnQpOwogCiAJLyoKLQkgKiBOb3cgc2NhbiB0aGUg aGVhcCBhbmQgIm1lcmdlIiBpdCB3aXRoIHRoZSBpbmRleAorCSAqIE5vdyBtZXJnZSBib3RoIGlu ZGV4ZXMKIAkgKi8KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFU RUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9U QUJMRVNDQU4pOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX0lE WE1FUkdFKTsKIAl0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuKGhlYXBSZWxhdGlvbiwKIAkJCQkJ CQkgIGluZGV4UmVsYXRpb24sCiAJCQkJCQkJICBpbmRleEluZm8sCiAJCQkJCQkJICBzbmFwc2hv dCwKLQkJCQkJCQkgICZzdGF0ZSk7CisJCQkJCQkJICAmc3RhdGUsCisJCQkJCQkJICAmYXV4U3Rh dGUpOwogCi0JLyogRG9uZSB3aXRoIHR1cGxlc29ydCBvYmplY3QgKi8KLQl0dXBsZXNvcnRfZW5k KHN0YXRlLnR1cGxlc29ydCk7CisJLyogVHVwbGUgc29ydCBjbG9zZWQgYnkgdGFibGVfaW5kZXhf dmFsaWRhdGVfc2NhbiAqLworCUFzc2VydChzdGF0ZS50dXBsZXNvcnQgPT0gTlVMTCAmJiBhdXhT dGF0ZS50dXBsZXNvcnQgPT0gTlVMTCk7CiAKIAkvKiBNYWtlIHN1cmUgdG8gcmVsZWFzZSByZXNv dXJjZXMgY2FjaGVkIGluIGluZGV4SW5mbyAoaWYgbmVlZGVkKS4gKi8KIAlpbmRleF9pbnNlcnRf Y2xlYW51cChpbmRleFJlbGF0aW9uLCBpbmRleEluZm8pOwogCiAJZWxvZyhERUJVRzIsCi0JCSAi dmFsaWRhdGVfaW5kZXggZm91bmQgJS4wZiBoZWFwIHR1cGxlcywgJS4wZiBpbmRleCB0dXBsZXM7 IGluc2VydGVkICUuMGYgbWlzc2luZyB0dXBsZXMiLAotCQkgc3RhdGUuaHR1cHMsIHN0YXRlLml0 dXBzLCBzdGF0ZS50dXBzX2luc2VydGVkKTsKKwkJICJ2YWxpZGF0ZV9pbmRleCBmZXRjaGVkICUu MGYgaGVhcCB0dXBsZXMsICUuMGYgaW5kZXggdHVwbGVzOyIKKwkJCQkJCSIgJS4wZiBhdXggaW5k ZXggdHVwbGVzOyBpbnNlcnRlZCAlLjBmIG1pc3NpbmcgdHVwbGVzIiwKKwkJIHN0YXRlLmh0dXBz LCBzdGF0ZS5pdHVwcywgYXV4U3RhdGUuaXR1cHMsIHN0YXRlLnR1cHNfaW5zZXJ0ZWQpOwogCiAJ LyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMg Ki8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKQEAgLTM0OTUsNiArMzcy Miw3IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBz bmFwc2hvdCkKIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlkLCBzYXZlX3NlY19j b250ZXh0KTsKIAogCS8qIENsb3NlIHJlbHMsIGJ1dCBrZWVwIGxvY2tzICovCisJaW5kZXhfY2xv c2UoYXV4SW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKIAlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9u LCBOb0xvY2spOwogCXRhYmxlX2Nsb3NlKGhlYXBSZWxhdGlvbiwgTm9Mb2NrKTsKIH0KQEAgLTM1 NTUsNiArMzc4MywxMSBAQCBpbmRleF9zZXRfc3RhdGVfZmxhZ3MoT2lkIGluZGV4SWQsIEluZGV4 U3RhdGVGbGFnc0FjdGlvbiBhY3Rpb24pCiAJCQlBc3NlcnQoIWluZGV4Rm9ybS0+aW5kaXN2YWxp ZCk7CiAJCQlpbmRleEZvcm0tPmluZGlzdmFsaWQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2Ug SU5ERVhfRFJPUF9DTEVBUl9SRUFEWToKKwkJCS8qIENsZWFyIGluZGlzcmVhZHkgZHVyaW5nIGEg Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBzZXF1ZW5jZSAqLworCQkJQXNzZXJ0KCFpbmRleEZv cm0tPmluZGlzdmFsaWQpOworCQkJaW5kZXhGb3JtLT5pbmRpc3JlYWR5ID0gZmFsc2U7CisJCQli cmVhazsKIAkJY2FzZSBJTkRFWF9EUk9QX0NMRUFSX1ZBTElEOgogCiAJCQkvKgpAQCAtMzgyNiw2 ICs0MDU5LDEzIEBAIHJlaW5kZXhfaW5kZXgoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBp bmRleElkLAogCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvblN0cmF0cyA9IE5VTEw7CiAJfQogCisJ LyogQXV4aWxpYXJ5IGluZGV4ZXMgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIHJlYnVpbHQgKi8KKwlp ZiAoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkgZXJybXNnKCJyZWluZGV4IG9m IGF1eGlsaWFyeSBpbmRleCBcIiVzXCIgbm90IHN1cHBvcnRlZCIsCisJCQkJCVJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKGlSZWwpKSkpOworCiAJLyogU3VwcHJlc3MgdXNlIG9mIHRoZSB0YXJnZXQg aW5kZXggd2hpbGUgcmVidWlsZGluZyBpdCAqLwogCVNldFJlaW5kZXhQcm9jZXNzaW5nKGhlYXBJ ZCwgaW5kZXhJZCk7CiAKQEAgLTQwNjgsNiArNDMwOCw3IEBAIHJlaW5kZXhfcmVsYXRpb24oY29u c3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxpZCwgaW50IGZsYWdzLAogCXsKIAkJT2lkCQkJ aW5kZXhPaWQgPSBsZmlyc3Rfb2lkKGluZGV4SWQpOwogCQlPaWQJCQlpbmRleE5hbWVzcGFjZUlk ID0gZ2V0X3JlbF9uYW1lc3BhY2UoaW5kZXhPaWQpOworCQlPaWQJCQlpbmRleEFtID0gZ2V0X3Jl bF9yZWxhbShpbmRleE9pZCk7CiAKIAkJLyoKIAkJICogU2tpcCBhbnkgaW52YWxpZCBpbmRleGVz IG9uIGEgVE9BU1QgdGFibGUuICBUaGVzZSBjYW4gb25seSBiZQpAQCAtNDA5Myw2ICs0MzM0LDE4 IEBAIHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxpZCwg aW50IGZsYWdzLAogCQkJY29udGludWU7CiAJCX0KIAorCQlpZiAoaW5kZXhBbSA9PSBTVElSX0FN X09JRCkKKwkJeworCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXggb2Yg YXV4aWxpYXJ5IGluZGV4IFwiJXMuJXNcIiIsCisJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGlu ZGV4TmFtZXNwYWNlSWQpLAorCQkJCQkJCWdldF9yZWxfbmFtZShpbmRleE9pZCkpKSk7CisJCQlp ZiAoZmxhZ3MgJiBSRUlOREVYX1JFTF9TVVBQUkVTU19JTkRFWF9VU0UpCisJCQkJUmVtb3ZlUmVp bmRleFBlbmRpbmcoaW5kZXhPaWQpOworCQkJY29udGludWU7CisJCX0KKwogCQlyZWluZGV4X2lu ZGV4KHN0bXQsIGluZGV4T2lkLCAhKGZsYWdzICYgUkVJTkRFWF9SRUxfQ0hFQ0tfQ09OU1RSQUlO VFMpLAogCQkJCQkgIHBlcnNpc3RlbmNlLCBwYXJhbXMpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV92aWV3cy5zcWwKaW5kZXggMDhmNzgwYTJlNjMuLmIyMGRlY2QxMjA0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMjgzLDE2ICsxMjgzLDE3IEBAIENSRUFURSBWSUVX IHBnX3N0YXRfcHJvZ3Jlc3NfY3JlYXRlX2luZGV4IEFTCiAgICAgICAgICAgICAgICAgICAgICAg RU5EIEFTIGNvbW1hbmQsCiAgICAgICAgIENBU0UgUy5wYXJhbTEwIFdIRU4gMCBUSEVOICdpbml0 aWFsaXppbmcnCiAgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMSBUSEVOICd3YWl0aW5nIGZv ciB3cml0ZXJzIGJlZm9yZSBidWlsZCcKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiAyIFRI RU4gJ2J1aWxkaW5nIGluZGV4JyB8fAorICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDIgVEhF TiAnd2FpdGluZyBmb3Igd3JpdGVycyB0byB1c2UgYXV4aWxpYXJ5IGluZGV4JworICAgICAgICAg ICAgICAgICAgICAgICBXSEVOIDMgVEhFTiAnYnVpbGRpbmcgaW5kZXgnIHx8CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBDT0FMRVNDRSgoJzogJyB8fCBwZ19pbmRleGFtX3Byb2dyZXNzX3Bo YXNlbmFtZShTLnBhcmFtOTo6b2lkLCBTLnBhcmFtMTEpKSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICcnKQotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDMgVEhFTiAn d2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbicKLSAgICAgICAgICAgICAgICAg ICAgICAgV0hFTiA0IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIGluZGV4JwotICAg ICAgICAgICAgICAgICAgICAgICBXSEVOIDUgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc29ydGlu ZyB0dXBsZXMnCi0gICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxp ZGF0aW9uOiBzY2FubmluZyB0YWJsZScKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA3IFRI RU4gJ3dhaXRpbmcgZm9yIG9sZCBzbmFwc2hvdHMnCi0gICAgICAgICAgICAgICAgICAgICAgIFdI RU4gOCBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBtYXJraW5nIGRlYWQnCi0gICAg ICAgICAgICAgICAgICAgICAgIFdIRU4gOSBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9y ZSBkcm9wcGluZycKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA0IFRIRU4gJ3dhaXRpbmcg Zm9yIHdyaXRlcnMgYmVmb3JlIHZhbGlkYXRpb24nCisgICAgICAgICAgICAgICAgICAgICAgIFdI RU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBpbmRleCcKKyAgICAgICAgICAg ICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNvcnRpbmcgdHVwbGVz JworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDcgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjog bWVyZ2luZyBpbmRleGVzJworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDggVEhFTiAnd2Fp dGluZyBmb3Igb2xkIHNuYXBzaG90cycKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA5IFRI RU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIG1hcmtpbmcgZGVhZCcKKyAgICAgICAgICAg ICAgICAgICAgICAgV0hFTiAxMCBUSEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBkcm9w cGluZycKICAgICAgICAgICAgICAgICAgICAgICAgRU5EIGFzIHBoYXNlLAogICAgICAgICBTLnBh cmFtNCBBUyBsb2NrZXJzX3RvdGFsLAogICAgICAgICBTLnBhcmFtNSBBUyBsb2NrZXJzX2RvbmUs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDQwMTU0ZTViMmJiLi4xYjg0MzhkMzE4NyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTE4Miw2ICsxODIsNyBAQCBDaGVja0luZGV4 Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJCQkJCSBib29sIGlzV2l0aG91dE92ZXJsYXBzKQogewog CWJvb2wJCWlzY29uc3RyYWludDsKKwlib29sCQlpc2F1eGlsaWFyeTsKIAlPaWQJCSAgICp0eXBl SWRzOwogCU9pZAkJICAgKmNvbGxhdGlvbklkczsKIAlPaWQJCSAgICpvcGNsYXNzSWRzOwpAQCAt MjMyLDYgKzIzMyw3IEBAIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAogCWFtY2Fu b3JkZXIgPSBhbVJvdXRpbmUtPmFtY2Fub3JkZXI7CiAJYW1zdW1tYXJpemluZyA9IGFtUm91dGlu ZS0+YW1zdW1tYXJpemluZzsKKwlpc2F1eGlsaWFyeSA9IGFjY2Vzc01ldGhvZElkID09IFNUSVJf QU1fT0lEOwogCiAJLyoKIAkgKiBDb21wdXRlIHRoZSBvcGVyYXRvciBjbGFzc2VzLCBjb2xsYXRp b25zLCBhbmQgZXhjbHVzaW9uIG9wZXJhdG9ycyBmb3IKQEAgLTI0Myw3ICsyNDUsOCBAQCBDaGVj a0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJICovCiAJaW5kZXhJbmZvID0gbWFrZUluZGV4 SW5mbyhudW1iZXJPZkF0dHJpYnV0ZXMsIG51bWJlck9mQXR0cmlidXRlcywKIAkJCQkJCQkgIGFj Y2Vzc01ldGhvZElkLCBOSUwsIE5JTCwgZmFsc2UsIGZhbHNlLAotCQkJCQkJCSAgZmFsc2UsIGZh bHNlLCBhbXN1bW1hcml6aW5nLCBpc1dpdGhvdXRPdmVybGFwcyk7CisJCQkJCQkJICBmYWxzZSwg ZmFsc2UsIGFtc3VtbWFyaXppbmcsCisJCQkJCQkJICBpc1dpdGhvdXRPdmVybGFwcywgaXNhdXhp bGlhcnkpOwogCXR5cGVJZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMp OwogCWNvbGxhdGlvbklkcyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7 CiAJb3BjbGFzc0lkcyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CkBA IC01NTMsNiArNTU2LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiB7CiAJYm9vbAkJY29u Y3VycmVudDsKIAljaGFyCSAgICppbmRleFJlbGF0aW9uTmFtZTsKKwljaGFyCSAgICphdXhJbmRl eFJlbGF0aW9uTmFtZSA9IE5VTEw7CiAJY2hhcgkgICAqYWNjZXNzTWV0aG9kTmFtZTsKIAlPaWQJ CSAgICp0eXBlSWRzOwogCU9pZAkJICAgKmNvbGxhdGlvbklkczsKQEAgLTU2Miw2ICs1NjYsNyBA QCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlPaWQJCQluYW1lc3BhY2VJZDsKIAlPaWQJCQl0 YWJsZXNwYWNlSWQ7CiAJT2lkCQkJY3JlYXRlZENvbnN0cmFpbnRJZCA9IEludmFsaWRPaWQ7CisJ T2lkCQkJYXV4SW5kZXhSZWxhdGlvbklkID0gSW52YWxpZE9pZDsKIAlMaXN0CSAgICppbmRleENv bE5hbWVzOwogCUxpc3QJICAgKmFsbEluZGV4UGFyYW1zOwogCVJlbGF0aW9uCXJlbDsKQEAgLTU4 Myw2ICs1ODgsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlpbnQJCQludW1iZXJPZktl eUF0dHJpYnV0ZXM7CiAJVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW47CiAJT2JqZWN0QWRkcmVzcyBh ZGRyZXNzOworCU9iamVjdEFkZHJlc3MgYXV4QWRkcmVzczsKIAlMb2NrUmVsSWQJaGVhcHJlbGlk OwogCUxPQ0tUQUcJCWhlYXBsb2NrdGFnOwogCUxPQ0tNT0RFCWxvY2ttb2RlOwpAQCAtODMzLDYg KzgzOSwxNSBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJCQkJCQkJCQkJc3RtdC0+ZXhj bHVkZU9wTmFtZXMsCiAJCQkJCQkJCQkJCXN0bXQtPnByaW1hcnksCiAJCQkJCQkJCQkJCXN0bXQt PmlzY29uc3RyYWludCk7CisJLyoKKwkgKiBTZWxlY3QgbmFtZSBmb3IgYXV4aWxpYXJ5IGluZGV4 CisJICovCisJaWYgKGNvbmN1cnJlbnQpCisJCWF1eEluZGV4UmVsYXRpb25OYW1lID0gQ2hvb3Nl UmVsYXRpb25OYW1lKGluZGV4UmVsYXRpb25OYW1lLAorCQkJCQkJCQkJCQkJICBOVUxMLAorCQkJ CQkJCQkJCQkJICAiY2NhdXgiLAorCQkJCQkJCQkJCQkJICBuYW1lc3BhY2VJZCwKKwkJCQkJCQkJ CQkJCSAgZmFsc2UpOwogCiAJLyoKIAkgKiBsb29rIHVwIHRoZSBhY2Nlc3MgbWV0aG9kLCB2ZXJp ZnkgaXQgY2FuIGhhbmRsZSB0aGUgcmVxdWVzdGVkIGZlYXR1cmVzCkBAIC05MjgsNyArOTQzLDgg QEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkJCQkJICAhY29uY3VycmVudCwKIAkJCQkJ CQkgIGNvbmN1cnJlbnQsCiAJCQkJCQkJICBhbWlzc3VtbWFyaXppbmcsCi0JCQkJCQkJICBzdG10 LT5pc3dpdGhvdXRvdmVybGFwcyk7CisJCQkJCQkJICBzdG10LT5pc3dpdGhvdXRvdmVybGFwcywK KwkJCQkJCQkgIGZhbHNlKTsKIAogCXR5cGVJZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1iZXJP ZkF0dHJpYnV0ZXMpOwogCWNvbGxhdGlvbklkcyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9m QXR0cmlidXRlcyk7CkBAIC0xNTkzLDYgKzE2MDksMTYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxl SWQsCiAJCXJldHVybiBhZGRyZXNzOwogCX0KIAorCS8qCisJICogSW4gY2FzZSBvZiBjb25jdXJy ZW50IGJ1aWxkIC0gY3JlYXRlIGF1eGlsaWFyeSBpbmRleCByZWNvcmQuCisJICovCisJaWYgKGNv bmN1cnJlbnQpCisJeworCQlhdXhJbmRleFJlbGF0aW9uSWQgPSBpbmRleF9jb25jdXJyZW50bHlf Y3JlYXRlX2F1eChyZWwsIGluZGV4UmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJdGFibGVzcGFjZUlk LCBhdXhJbmRleFJlbGF0aW9uTmFtZSk7CisJCU9iamVjdEFkZHJlc3NTZXQoYXV4QWRkcmVzcywg UmVsYXRpb25SZWxhdGlvbklkLCBhdXhJbmRleFJlbGF0aW9uSWQpOworCX0KKwogCUF0RU9YYWN0 X0dVQyhmYWxzZSwgcm9vdF9zYXZlX25lc3RsZXZlbCk7CiAJU2V0VXNlcklkQW5kU2VjQ29udGV4 dChyb290X3NhdmVfdXNlcmlkLCByb290X3NhdmVfc2VjX2NvbnRleHQpOwogCkBAIC0xNjIxLDEx ICsxNjQ3LDExIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCS8qCiAJICogRm9yIGEgY29u Y3VycmVudCBidWlsZCwgaXQncyBpbXBvcnRhbnQgdG8gbWFrZSB0aGUgY2F0YWxvZyBlbnRyaWVz CiAJICogdmlzaWJsZSB0byBvdGhlciB0cmFuc2FjdGlvbnMgYmVmb3JlIHdlIHN0YXJ0IHRvIGJ1 aWxkIHRoZSBpbmRleC4gVGhhdAotCSAqIHdpbGwgcHJldmVudCB0aGVtIGZyb20gbWFraW5nIGlu Y29tcGF0aWJsZSBIT1QgdXBkYXRlcy4gIFRoZSBuZXcgaW5kZXgKLQkgKiB3aWxsIGJlIG1hcmtl ZCBub3QgaW5kaXNyZWFkeSBhbmQgbm90IGluZGlzdmFsaWQsIHNvIHRoYXQgbm8gb25lIGVsc2UK LQkgKiB0cmllcyB0byBlaXRoZXIgaW5zZXJ0IGludG8gaXQgb3IgdXNlIGl0IGZvciBxdWVyaWVz LgorCSAqIHdpbGwgcHJldmVudCB0aGVtIGZyb20gbWFraW5nIGluY29tcGF0aWJsZSBIT1QgdXBk YXRlcy4gTmV3IGluZGV4ZXMKKwkgKiAobWFpbiBhbmQgYXV4aWxpYXJ5KSB3aWxsIGJlIG1hcmtl ZCBub3QgaW5kaXNyZWFkeSBhbmQgbm90IGluZGlzdmFsaWQsCisJICogc28gdGhhdCBubyBvbmUg ZWxzZSB0cmllcyB0byBlaXRoZXIgaW5zZXJ0IGludG8gaXQgb3IgdXNlIGl0IGZvciBxdWVyaWVz LgogCSAqCi0JICogV2UgbXVzdCBjb21taXQgb3VyIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhh dCB0aGUgaW5kZXggYmVjb21lcworCSAqIFdlIG11c3QgY29tbWl0IG91ciBjdXJyZW50IHRyYW5z YWN0aW9uIHNvIHRoYXQgdGhlIGluZGV4ZXMgYmVjb21lcwogCSAqIHZpc2libGU7IHRoZW4gc3Rh cnQgYW5vdGhlci4gIE5vdGUgdGhhdCBhbGwgdGhlIGRhdGEgc3RydWN0dXJlcyB3ZSBqdXN0CiAJ ICogYnVpbHQgYXJlIGxvc3QgaW4gdGhlIGNvbW1pdC4gIFRoZSBvbmx5IGRhdGEgd2Uga2VlcCBw YXN0IGhlcmUgYXJlIHRoZQogCSAqIHJlbGF0aW9uIElEcy4KQEAgLTE2MzUsNyArMTY2MSw3IEBA IERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIGNhbm5vdCBibG9jaywgZXZlbiBpZiBzb21l b25lIGVsc2UgaXMgd2FpdGluZyBmb3IgYWNjZXNzLCBiZWNhdXNlIHdlCiAJICogYWxyZWFkeSBo YXZlIHRoZSBzYW1lIGxvY2sgd2l0aGluIG91ciB0cmFuc2FjdGlvbi4KIAkgKgotCSAqIE5vdGU6 IHdlIGRvbid0IGN1cnJlbnRseSBib3RoZXIgd2l0aCBhIHNlc3Npb24gbG9jayBvbiB0aGUgaW5k ZXgsCisJICogTm90ZTogd2UgZG9uJ3QgY3VycmVudGx5IGJvdGhlciB3aXRoIGEgc2Vzc2lvbiBs b2NrIG9uIHRoZSBpbmRleGVzLAogCSAqIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG9wZXJhdGlvbnMg dGhhdCBjb3VsZCBjaGFuZ2UgaXRzIHN0YXRlIHdoaWxlIHdlCiAJICogaG9sZCBsb2NrIG9uIHRo ZSBwYXJlbnQgdGFibGUuICBUaGlzIG1pZ2h0IG5lZWQgdG8gY2hhbmdlIGxhdGVyLgogCSAqLwpA QCAtMTY3NCw3ICsxNzAwLDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogd2l0aCB0 aGUgb2xkIGxpc3Qgb2YgaW5kZXhlcy4gIFVzZSBTaGFyZUxvY2sgdG8gY29uc2lkZXIgcnVubmlu ZwogCSAqIHRyYW5zYWN0aW9ucyB0aGF0IGhvbGQgbG9ja3MgdGhhdCBwZXJtaXQgd3JpdGluZyB0 byB0aGUgdGFibGUuICBOb3RlIHdlCiAJICogZG8gbm90IG5lZWQgdG8gd29ycnkgYWJvdXQgeGFj dHMgdGhhdCBvcGVuIHRoZSB0YWJsZSBmb3Igd3JpdGluZyBhZnRlcgotCSAqIHRoaXMgcG9pbnQ7 IHRoZXkgd2lsbCBzZWUgdGhlIG5ldyBpbmRleCB3aGVuIHRoZXkgb3BlbiBpdC4KKwkgKiB0aGlz IHBvaW50OyB0aGV5IHdpbGwgc2VlIHRoZSBuZXcgaW5kZXhlcyB3aGVuIHRoZXkgb3BlbiBpdC4K IAkgKgogCSAqIE5vdGU6IHRoZSByZWFzb24gd2UgdXNlIGFjdHVhbCBsb2NrIGFjcXVpc2l0aW9u IGhlcmUsIHJhdGhlciB0aGFuIGp1c3QKIAkgKiBjaGVja2luZyB0aGUgUHJvY0FycmF5IGFuZCBz bGVlcGluZywgaXMgdGhhdCBkZWFkbG9jayBpcyBwb3NzaWJsZSBpZgpAQCAtMTY4NiwxNCArMTcx MiwzOCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAogCS8qCiAJICogQXQgdGhpcyBtb21l bnQgd2UgYXJlIHN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gdHJhbnNhY3Rpb25zIHdpdGggdGhlCi0J ICogdGFibGUgb3BlbiBmb3Igd3JpdGUgdGhhdCBkb24ndCBoYXZlIHRoaXMgbmV3IGluZGV4IGlu IHRoZWlyIGxpc3Qgb2YKKwkgKiB0YWJsZSBvcGVuIGZvciB3cml0ZSB0aGF0IGRvbid0IGhhdmUg dGhpcyBuZXcgaW5kZXhlcyBpbiB0aGVpciBsaXN0IG9mCiAJICogaW5kZXhlcy4gIFdlIGhhdmUg d2FpdGVkIG91dCBhbGwgdGhlIGV4aXN0aW5nIHRyYW5zYWN0aW9ucyBhbmQgYW55IG5ldwotCSAq IHRyYW5zYWN0aW9uIHdpbGwgaGF2ZSB0aGUgbmV3IGluZGV4IGluIGl0cyBsaXN0LCBidXQgdGhl IGluZGV4IGlzIHN0aWxsCi0JICogbWFya2VkIGFzICJub3QtcmVhZHktZm9yLWluc2VydHMiLiAg VGhlIGluZGV4IGlzIGNvbnN1bHRlZCB3aGlsZQorCSAqIHRyYW5zYWN0aW9uIHdpbGwgaGF2ZSBi b3RoIG5ldyBpbmRleGVzIGluIGl0cyBsaXN0LCBidXQgaW5kZXhlcyBhcmUgc3RpbGwKKwkgKiBt YXJrZWQgYXMgIm5vdC1yZWFkeS1mb3ItaW5zZXJ0cyIuIFRoZSBpbmRleGVzIGFyZSBjb25zdWx0 ZWQgd2hpbGUKIAkgKiBkZWNpZGluZyBIT1Qtc2FmZXR5IHRob3VnaC4gIFRoaXMgYXJyYW5nZW1l bnQgZW5zdXJlcyB0aGF0IG5vIG5ldyBIT1QKIAkgKiBjaGFpbnMgY2FuIGJlIGNyZWF0ZWQgd2hl cmUgdGhlIG5ldyB0dXBsZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBjaGFpbiBoYXZl IGRpZmZlcmVudCBpbmRleCBrZXlzLgogCSAqCisJICogTm93IGNhbGwgYnVpbGQgb24gYXV4aWxp YXJ5IGluZGV4LiBJbmRleCB3aWxsIGJlIGNyZWF0ZWQgZW1wdHkgd2l0aG91dAorCSAqIGFueSBh Y3R1YWwgaGVhcCBzY2FuLCBidXQgbWFya2VkIGFzICJyZWFkeS1mb3ItaW5zZXJ0cyIuIFRoZSBn b2FsIG9mCisJICogdGhhdCBpbmRleCBpcyBhY2N1bXVsYXRlIG5ldyB0dXBsZXMgd2hpbGUgbWFp biBpbmRleCBpcyBhY3R1YWxseSBidWlsdC4KKwkgKi8KKwlpbmRleF9jb25jdXJyZW50bHlfYnVp bGQodGFibGVJZCwgYXV4SW5kZXhSZWxhdGlvbklkKTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKiBUZWxsIGNvbmN1cnJl bnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJaWYg KHNhZmVfaW5kZXgpCisJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CisJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJCQkJCQkJIFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOworCS8qCisJICogTm93IHdlIG5lZWQgdG8gZW5z dXJlIGFyZSBubyB0cmFuc2FjdGlvbnMgd2l0aCB0aGUgd2l0aCBhdXhpbGlhcnkgaW5kZXgKKwkg KiBtYXJrZWQgYXMgIm5vdC1yZWFkeS1mb3ItaW5zZXJ0cyIuCisJICovCisJV2FpdEZvckxvY2tl cnMoaGVhcGxvY2t0YWcsIFNoYXJlTG9jaywgdHJ1ZSk7CisKKwkvKgorCSAqIEF0IHRoaXMgbW9t ZW50IHdlIGFyZSBzdXJlIHdoYXQgYWxsIG5ldyB0dXBsZXMgaW4gdGFibGUgYXJlIGluc2VydGVk IGludG8KKwkgKiBhdXhpbGlhcnkgaW5kZXguIE5vdyBpdCBpcyB0aW1lIHRvIGJ1aWxkIHRoZSB0 YXJnZXQgaW5kZXggaXRzZWxmLgorCSAqCiAJICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFs bCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBtdWx0aXBsZQogCSAqIHJlZnJlc2hpbmcg c25hcHNob3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bwogCSAqIHRo ZXNlIHR1cGxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5kZXgsIHNpbmNlIGFueSB1 cGRhdGVzIG1hZGUKQEAgLTE3MjIsOSArMTc3MiwyOCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJ ZCwKIAkgKiB0aGUgaW5kZXggbWFya2VkIGFzIHJlYWQtb25seSBmb3IgdXBkYXRlcy4KIAkgKi8K IAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwK LQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOworCQkJCQkJCQkgUFJP R1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMyk7CiAJV2FpdEZvckxvY2tlcnMoaGVhcGxvY2t0 YWcsIFNoYXJlTG9jaywgdHJ1ZSk7CiAKKwkvKgorCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0 IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkgKiBoYXZlIGEgdmFs aWQgc25hcHNob3QuCisJICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25h cHNob3QoKSk7CisJLyoKKwkgKiBOb3cgdGFyZ2V0IGluZGV4IGlzIG1hcmtlZCBhcyAicmVhZHki IGZvciBhbGwgdHJhbnNhY3Rpb25zLiBTbywgYXV4aWxpYXJ5CisJICogaW5kZXggaXMgbm90IG1v cmUgbmVlZGVkLiBTbywgc3RhcnQgcmVtb3ZpbmcgcHJvY2VzcyBieSByZXZlcnRpbmcgInJlYWR5 IgorCSAqIGZsYWcuCisJICovCisJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGF1eEluZGV4UmVsYXRp b25JZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSk7CisJUG9wQWN0aXZlU25hcHNob3QoKTsKKwor CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CisJLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4 IHF1YWxpZmllcyAqLworCWlmIChzYWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFn cygpOworCiAJLyoKIAkgKiBOb3cgdGFrZSB0aGUgInJlZmVyZW5jZSBzbmFwc2hvdCIgdGhhdCB3 aWxsIGJlIHVzZWQgYnkgdmFsaWRhdGVfaW5kZXgoKQogCSAqIHRvIGZpbHRlciBjYW5kaWRhdGUg dHVwbGVzLiAgQmV3YXJlISAgVGhlcmUgbWlnaHQgc3RpbGwgYmUgc25hcHNob3RzIGluCkBAIC0x NzQyLDI0ICsxODExLDE0IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqLwogCXNuYXBz aG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCVB1c2hB Y3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7Ci0KIAkvKgotCSAqIFNjYW4gdGhlIGluZGV4IGFuZCB0 aGUgaGVhcCwgaW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4IGVudHJpZXMuCi0JICovCi0JdmFsaWRh dGVfaW5kZXgodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkLCBzbmFwc2hvdCk7Ci0KLQkvKgotCSAq IERyb3AgdGhlIHJlZmVyZW5jZSBzbmFwc2hvdC4gIFdlIG11c3QgZG8gdGhpcyBiZWZvcmUgd2Fp dGluZyBvdXQgb3RoZXIKLQkgKiBzbmFwc2hvdCBob2xkZXJzLCBlbHNlIHdlIHdpbGwgZGVhZGxv Y2sgYWdhaW5zdCBvdGhlciBwcm9jZXNzZXMgYWxzbwotCSAqIGRvaW5nIENSRUFURSBJTkRFWCBD T05DVVJSRU5UTFksIHdoaWNoIHdvdWxkIHNlZSBvdXIgc25hcHNob3QgYXMgb25lCi0JICogdGhl eSBtdXN0IHdhaXQgZm9yLiAgQnV0IGZpcnN0LCBzYXZlIHRoZSBzbmFwc2hvdCdzIHhtaW4gdG8g dXNlIGFzCi0JICogbGltaXRYbWluIGZvciBHZXRDdXJyZW50VmlydHVhbFhJRHMoKS4KKwkgKiBN ZXJnZSBjb250ZW50IG9mIGF1eGlsaWFyeSBhbmQgdGFyZ2V0IGluZGV4ZXMgLSBpbnNlcnQgYW55 IG1pc3NpbmcgaW5kZXggZW50cmllcy4KIAkgKi8KKwl2YWxpZGF0ZV9pbmRleCh0YWJsZUlkLCBp bmRleFJlbGF0aW9uSWQsIGF1eEluZGV4UmVsYXRpb25JZCwgc25hcHNob3QpOwogCWxpbWl0WG1p biA9IHNuYXBzaG90LT54bWluOwogCiAJUG9wQWN0aXZlU25hcHNob3QoKTsKIAlVbnJlZ2lzdGVy U25hcHNob3Qoc25hcHNob3QpOwotCiAJLyoKIAkgKiBUaGUgc25hcHNob3Qgc3Vic3lzdGVtIGNv dWxkIHN0aWxsIGNvbnRhaW4gcmVnaXN0ZXJlZCBzbmFwc2hvdHMgdGhhdAogCSAqIGFyZSBob2xk aW5nIGJhY2sgb3VyIHByb2Nlc3MncyBhZHZlcnRpc2VkIHhtaW47IGluIHBhcnRpY3VsYXIsIGlm CkBAIC0xNzg2LDcgKzE4NDUsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKi8KIAlJ TkpFQ1RJT05fUE9JTlQoImRlZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkIiwgTlVMTCk7CiAJ cGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0J CQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zKTsKKwkJCQkJCQkJIFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQpOwogCVdhaXRGb3JPbGRlclNuYXBzaG90cyhsaW1p dFhtaW4sIHRydWUpOwogCiAJLyoKQEAgLTE4MTEsNiArMTg3MCw1MyBAQCBEZWZpbmVJbmRleChP aWQgdGFibGVJZCwKIAkgKiB0byByZXBsYW47IHNvIHJlbGNhY2hlIGZsdXNoIG9uIHRoZSBpbmRl eCBpdHNlbGYgd2FzIHN1ZmZpY2llbnQuKQogCSAqLwogCUNhY2hlSW52YWxpZGF0ZVJlbGNhY2hl QnlSZWxpZChoZWFwcmVsaWQucmVsSWQpOworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwor CVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXgg YnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJaWYgKHNhZmVfaW5k ZXgpCisJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CisKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBk YXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkgUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFX1dBSVRfNSk7CisJLyogTm93IHdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbiB0 byBzZWUgYXV4aWxpYXJ5IGFzICJub24tcmVhZHkgZm9yIGluc2VydHMiICovCisJV2FpdEZvckxv Y2tlcnMoaGVhcGxvY2t0YWcsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIHRydWUpOworCisJQ29tbWl0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8q CisJICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3Ms IHNvIGVuc3VyZSB3ZQorCSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KKwkgKi8KKwlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkvKiBOb3cgaXQgaXMgdGlt ZSB0byBtYXJrIGF1eGlsaWFyeSBpbmRleCBhcyBkZWFkICovCisJaW5kZXhfY29uY3VycmVudGx5 X3NldF9kZWFkKHRhYmxlSWQsIGF1eEluZGV4UmVsYXRpb25JZCk7CisJUG9wQWN0aXZlU25hcHNo b3QoKTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25D b21tYW5kKCk7CisKKwkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1 cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJaWYgKHNhZmVfaW5kZXgpCisJCXNldF9pbmRleHNh ZmVfcHJvY2ZsYWdzKCk7CisKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRf Nik7CisJLyogTm93IHdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbiB0byBpZ25vcmUgYXV4aWxpYXJ5 IGJlY2F1c2UgaXQgaXMgZGVhZCAqLworCVdhaXRGb3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBBY2Nl c3NFeGNsdXNpdmVMb2NrLCB0cnVlKTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwor CVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIERyb3AgYXV4aWxpYXJ5IGlu ZGV4LgorCSAqCisJICogVXNlIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVF9MT0NLIHNvIHRo YXQgaW5kZXhfZHJvcCgpIHVzZXMgdGhlCisJICogcmlnaHQgbG9jayBsZXZlbC4KKwkgKi8KKwlw ZXJmb3JtRGVsZXRpb24oJmF1eEFkZHJlc3MsIERST1BfUkVTVFJJQ1QsCisJCQkJCQkJIFBFUkZP Uk1fREVMRVRJT05fQ09OQ1VSUkVOVF9MT0NLIHwgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCk7 CiAKIAkvKgogCSAqIExhc3QgdGhpbmcgdG8gZG8gaXMgcmVsZWFzZSB0aGUgc2Vzc2lvbi1sZXZl bCBsb2NrIG9uIHRoZSBwYXJlbnQgdGFibGUuCkBAIC0zNTY1LDYgKzM2NzEsNyBAQCBSZWluZGV4 UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlv bk9pZCwgY29uc3QgUmVpbgogCXR5cGVkZWYgc3RydWN0IFJlaW5kZXhJbmRleEluZm8KIAl7CiAJ CU9pZAkJCWluZGV4SWQ7CisJCU9pZAkJCWF1eEluZGV4SWQ7CiAJCU9pZAkJCXRhYmxlSWQ7CiAJ CU9pZAkJCWFtSWQ7CiAJCWJvb2wJCXNhZmU7CQkvKiBmb3Igc2V0X2luZGV4c2FmZV9wcm9jZmxh Z3MgKi8KQEAgLTM2NzAsOCArMzc3NywxNSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJ CQlPaWQJCQljZWxsT2lkID0gbGZpcnN0X29pZChsYyk7CiAJCQkJCVJlbGF0aW9uCWluZGV4UmVs YXRpb24gPSBpbmRleF9vcGVuKGNlbGxPaWQsCiAJCQkJCQkJCQkJCQkJCSAgIFNoYXJlVXBkYXRl RXhjbHVzaXZlTG9jayk7CisJCQkJCUluZGV4SW5mbyoJaW5kZXhJbmZvID0gQnVpbGREdW1teUlu ZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKIAotCQkJCQlpZiAoIWluZGV4UmVsYXRpb24tPnJkX2lu ZGV4LT5pbmRpc3ZhbGlkKQorCisJCQkJCWlmIChpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJ CQkJCWVyZXBvcnQoV0FSTklORywoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJCQkJIGVycm1zZygic2tpcHBpbmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXgg XCIlcy4lc1wiIiwKKwkJCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShnZXRfcmVsX25hbWVzcGFj ZShjZWxsT2lkKSksCisJCQkJCQkJCQlnZXRfcmVsX25hbWUoY2VsbE9pZCkpKSk7CisJCQkJCWVs c2UgaWYgKCFpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kaXN2YWxpZCkKIAkJCQkJCWVyZXBv cnQoV0FSTklORywKIAkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJF UVVJU0lURV9TVEFURSksCiAJCQkJCQkJCSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXggb2YgaW52 YWxpZCBpbmRleCBcIiVzLiVzXCIiLApAQCAtMzcyMyw4ICszODM3LDE1IEBAIFJlaW5kZXhSZWxh dGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lk LCBjb25zdCBSZWluCiAJCQkJCQlPaWQJCQljZWxsT2lkID0gbGZpcnN0X29pZChsYzIpOwogCQkJ CQkJUmVsYXRpb24JaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4oY2VsbE9pZCwKIAkJCQkJCQkJ CQkJCQkJCSAgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJCQkJCQlJbmRleEluZm8qCWlu ZGV4SW5mbyA9IEJ1aWxkRHVtbXlJbmRleEluZm8oaW5kZXhSZWxhdGlvbik7CiAKLQkJCQkJCWlm ICghaW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGlzdmFsaWQpCisJCQkJCQlpZiAoaW5kZXhJ bmZvLT5paV9BdXhpbGlhcnkpCisJCQkJCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJCQkJIGVycm1zZygi c2tpcHBpbmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwKKwkJCQkJCQkJ CQkJZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9yZWxfbmFtZXNwYWNlKGNlbGxPaWQpKSwKKwkJCQkJ CQkJCQkJZ2V0X3JlbF9uYW1lKGNlbGxPaWQpKSkpOworCQkJCQkJZWxzZSBpZiAoIWluZGV4UmVs YXRpb24tPnJkX2luZGV4LT5pbmRpc3ZhbGlkKQogCQkJCQkJCWVyZXBvcnQoV0FSTklORywKIAkJ CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUp LAogCQkJCQkJCQkJIGVycm1zZygic2tpcHBpbmcgcmVpbmRleCBvZiBpbnZhbGlkIGluZGV4IFwi JXMuJXNcIiIsCkBAIC0zNzg1LDYgKzM5MDYsMTMgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCQkJ IGVycm1zZygiY2Fubm90IHJlaW5kZXggaW52YWxpZCBpbmRleCBvbiBUT0FTVCB0YWJsZSIpKSk7 CiAKKwkJCQkvKiBBdXhpbGlhcnkgaW5kZXhlcyBhcmUgbm90IGFsbG93ZWQgdG8gYmUgcmVidWls dCAqLworCQkJCWlmIChnZXRfcmVsX3JlbGFtKHJlbGF0aW9uT2lkKSA9PSBTVElSX0FNX09JRCkK KwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coInJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwi JXNcIiBub3Qgc3VwcG9ydGVkIiwKKwkJCQkJCQkJZ2V0X3JlbF9uYW1lKHJlbGF0aW9uT2lkKSkp KTsKKwogCQkJCS8qCiAJCQkJICogQ2hlY2sgaWYgcGFyZW50IHJlbGF0aW9uIGNhbiBiZSBsb2Nr ZWQgYW5kIGlmIGl0IGV4aXN0cywKIAkJCQkgKiB0aGlzIG5lZWRzIHRvIGJlIGRvbmUgYXQgdGhp cyBzdGFnZSBhcyB0aGUgbGlzdCBvZiBpbmRleGVzCkBAIC0zODg4LDE1ICs0MDE2LDE4IEBAIFJl aW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJl bGF0aW9uT2lkLCBjb25zdCBSZWluCiAJZm9yZWFjaChsYywgaW5kZXhJZHMpCiAJewogCQljaGFy CSAgICpjb25jdXJyZW50TmFtZTsKKwkJY2hhcgkgICAqYXV4Q29uY3VycmVudE5hbWU7CiAJCVJl aW5kZXhJbmRleEluZm8gKmlkeCA9IGxmaXJzdChsYyk7CiAJCVJlaW5kZXhJbmRleEluZm8gKm5l d2lkeDsKIAkJT2lkCQkJbmV3SW5kZXhJZDsKKwkJT2lkCQkJYXV4SW5kZXhJZDsKIAkJUmVsYXRp b24JaW5kZXhSZWw7CiAJCVJlbGF0aW9uCWhlYXBSZWw7CiAJCU9pZAkJCXNhdmVfdXNlcmlkOwog CQlpbnQJCQlzYXZlX3NlY19jb250ZXh0OwogCQlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIAkJUmVs YXRpb24JbmV3SW5kZXhSZWw7CisJCVJlbGF0aW9uCWF1eEluZGV4UmVsOwogCQlMb2NrUmVsSWQg ICpsb2NrcmVsaWQ7CiAJCU9pZAkJCXRhYmxlc3BhY2VpZDsKIApAQCAtMzk0Nyw2ICs0MDc4LDEx IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJCQkJCSJjY25ldyIsCiAJCQkJCQkJ CQkJCWdldF9yZWxfbmFtZXNwYWNlKGluZGV4UmVsLT5yZF9pbmRleC0+aW5kcmVsaWQpLAogCQkJ CQkJCQkJCQlmYWxzZSk7CisJCWF1eENvbmN1cnJlbnROYW1lID0gQ2hvb3NlUmVsYXRpb25OYW1l KGdldF9yZWxfbmFtZShpZHgtPmluZGV4SWQpLAorCQkJCQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJ CQkiY2NhdXgiLAorCQkJCQkJCQkJCQlnZXRfcmVsX25hbWVzcGFjZShpbmRleFJlbC0+cmRfaW5k ZXgtPmluZHJlbGlkKSwKKwkJCQkJCQkJCQkJZmFsc2UpOwogCiAJCS8qIENob29zZSB0aGUgbmV3 IHRhYmxlc3BhY2UsIGluZGV4ZXMgb2YgdG9hc3QgdGFibGVzIGFyZSBub3QgbW92ZWQgKi8KIAkJ aWYgKE9pZElzVmFsaWQocGFyYW1zLT50YWJsZXNwYWNlT2lkKSAmJgpAQCAtMzk2MCwxMiArNDA5 NiwxNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJCQkJCQkJCQkJCWlkeC0+aW5kZXhJ ZCwKIAkJCQkJCQkJCQkJCQl0YWJsZXNwYWNlaWQsCiAJCQkJCQkJCQkJCQkJY29uY3VycmVudE5h bWUpOworCQlhdXhJbmRleElkID0gaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9hdXgoaGVhcFJl bCwKKwkJCQkJCQkJCQkJCSAgIG5ld0luZGV4SWQsCisJCQkJCQkJCQkJCQkgICB0YWJsZXNwYWNl aWQsCisJCQkJCQkJCQkJCQkgICBhdXhDb25jdXJyZW50TmFtZSk7CiAKIAkJLyoKIAkJICogTm93 IG9wZW4gdGhlIHJlbGF0aW9uIG9mIHRoZSBuZXcgaW5kZXgsIGEgc2Vzc2lvbi1sZXZlbCBsb2Nr IGlzCiAJCSAqIGFsc28gbmVlZGVkIG9uIGl0LgogCQkgKi8KIAkJbmV3SW5kZXhSZWwgPSBpbmRl eF9vcGVuKG5ld0luZGV4SWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJCWF1eEluZGV4 UmVsID0gaW5kZXhfb3BlbihhdXhJbmRleElkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwog CiAJCS8qCiAJCSAqIFNhdmUgdGhlIGxpc3Qgb2YgT0lEcyBhbmQgbG9ja3MgaW4gcHJpdmF0ZSBj b250ZXh0CkBAIC0zOTc0LDYgKzQxMTUsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCiAJ CW5ld2lkeCA9IHBhbGxvY19vYmplY3QoUmVpbmRleEluZGV4SW5mbyk7CiAJCW5ld2lkeC0+aW5k ZXhJZCA9IG5ld0luZGV4SWQ7CisJCW5ld2lkeC0+YXV4SW5kZXhJZCA9IGF1eEluZGV4SWQ7CiAJ CW5ld2lkeC0+c2FmZSA9IGlkeC0+c2FmZTsKIAkJbmV3aWR4LT50YWJsZUlkID0gaWR4LT50YWJs ZUlkOwogCQluZXdpZHgtPmFtSWQgPSBpZHgtPmFtSWQ7CkBAIC0zOTkyLDEwICs0MTM0LDE0IEBA IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lk IHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCWxvY2tyZWxpZCA9IHBhbGxvY19vYmplY3QoTG9j a1JlbElkKTsKIAkJKmxvY2tyZWxpZCA9IG5ld0luZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVs SWQ7CiAJCXJlbGF0aW9uTG9ja3MgPSBsYXBwZW5kKHJlbGF0aW9uTG9ja3MsIGxvY2tyZWxpZCk7 CisJCWxvY2tyZWxpZCA9IHBhbGxvY19vYmplY3QoTG9ja1JlbElkKTsKKwkJKmxvY2tyZWxpZCA9 IGF1eEluZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CisJCXJlbGF0aW9uTG9ja3MgPSBs YXBwZW5kKHJlbGF0aW9uTG9ja3MsIGxvY2tyZWxpZCk7CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGNvbnRleHQpOwogCiAJCWluZGV4X2Nsb3NlKGluZGV4UmVsLCBOb0xvY2spOworCQlp bmRleF9jbG9zZShhdXhJbmRleFJlbCwgTm9Mb2NrKTsKIAkJaW5kZXhfY2xvc2UobmV3SW5kZXhS ZWwsIE5vTG9jayk7CiAKIAkJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBi eSBpbmRleCBmdW5jdGlvbnMgKi8KQEAgLTQwNzYsMTMgKzQyMjIsNTYgQEAgUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQs IGNvbnN0IFJlaW4KIAkgKiBkb2luZyB0aGF0LCB3YWl0IHVudGlsIG5vIHJ1bm5pbmcgdHJhbnNh Y3Rpb25zIGNvdWxkIGhhdmUgdGhlIHRhYmxlIG9mCiAJICogdGhlIGluZGV4IG9wZW4gd2l0aCB0 aGUgb2xkIGxpc3Qgb2YgaW5kZXhlcy4gIFNlZSAicGhhc2UgMiIgaW4KIAkgKiBEZWZpbmVJbmRl eCgpIGZvciBtb3JlIGRldGFpbHMuCisJKi8KKworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFy YW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAorCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0VfV0FJVF8xKTsKKwlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBTaGFyZUxv Y2ssIHRydWUpOworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBOb3cg YnVpbGQgYWxsIGF1eGlsaWFyeSBpbmRleGVzIGFuZCBtYXJrIHRoZW0gYXMgInJlYWR5LWZvci1p bnNlcnRzIi4KKwkgKi8KKwlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKKwl7CisJCVJlaW5kZXhJ bmRleEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CisKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKKworCQkvKgorCQkgKiBDaGVjayBmb3IgdXNlci1yZXF1ZXN0ZWQgYWJvcnQuICBUaGlz IGlzIGluc2lkZSBhIHRyYW5zYWN0aW9uIHNvIGFzCisJCSAqIHhhY3QuYyBkb2VzIG5vdCBpc3N1 ZSBhIHVzZWxlc3MgV0FSTklORywgYW5kIGVuc3VyZXMgdGhhdAorCQkgKiBzZXNzaW9uLWxldmVs IGxvY2tzIGFyZSBjbGVhbmVkIHVwIG9uIGFib3J0LgorCQkgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKKworCQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXhpbmcgdG8gaWdub3JlIHVzLCBp ZiBpbmRleCBxdWFsaWZpZXMgKi8KKwkJaWYgKG5ld2lkeC0+c2FmZSkKKwkJCXNldF9pbmRleHNh ZmVfcHJvY2ZsYWdzKCk7CisKKwkJLyogQnVpbGQgYXV4aWxpYXJ5IGluZGV4LCBpdCBpcyBmYXN0 IC0gd2l0aG91dCBhbnkgYWN0dWFsIGhlYXAgc2NhbiwganVzdCBhbiBlbXB0eSBpbmRleC4gKi8K KwkJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5hdXhJ bmRleElkKTsKKworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwl9CisKKwlTdGFydFRy YW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBz bmFwc2hvdCBpbiB0aGlzIHRyYW5zYWN0aW9uLCB0aGVyZSdzIG5vIG5lZWQKKwkgKiB0byBzZXQg dGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGhlcmUuCiAJICovCiAKIAlwZ3N0YXRfcHJvZ3Jlc3Nf dXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRV9XQUlUXzEpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BI QVNFX1dBSVRfMik7CisJLyoKKwkgKiBXYWl0IHVudGlsIGFsbCBhdXhpbGlhcnkgaW5kZXhlcyBh cmUgdGFrZW4gaW50byBhY2NvdW50IGJ5IGFsbAorCSAqIHRyYW5zYWN0aW9ucy4KKwkgKi8KIAlX YWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBTaGFyZUxvY2ssIHRydWUpOwogCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCisJLyogTm93IGl0IGlzIHRpbWUgdG8gcGVyZm9ybSB0 YXJnZXQgaW5kZXggYnVpbGQuICovCiAJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCiAJewogCQlS ZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOwpAQCAtNDEyNSw2ICs0MzE0LDQx IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJICogbmVlZCB0byBzZXQgdGhlIFBST0NfSU5f U0FGRV9JQyBmbGFnIGhlcmUuCiAJICovCiAKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFt KFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRV9XQUlUXzMpOworCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9j aywgdHJ1ZSk7CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIEF0IHRo aXMgbW9tZW50IGFsbCB0YXJnZXQgaW5kZXhlcyBhcmUgbWFya2VkIGFzICJyZWFkeS10by1pbnNl cnQiLiBTbywKKwkgKiB3ZSBhcmUgZnJlZSB0byBzdGFydCBwcm9jZXNzIG9mIGRyb3BwaW5nIGF1 eGlsaWFyeSBpbmRleGVzLgorCSAqLworCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQorCXsKKwkJ UmVpbmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKKwkJU3RhcnRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKwkJLyoKKwkJICogQ2hlY2sgZm9yIHVzZXItcmVxdWVzdGVkIGFib3J0LiAg VGhpcyBpcyBpbnNpZGUgYSB0cmFuc2FjdGlvbiBzbyBhcworCQkgKiB4YWN0LmMgZG9lcyBub3Qg aXNzdWUgYSB1c2VsZXNzIFdBUk5JTkcsIGFuZCBlbnN1cmVzIHRoYXQKKwkJICogc2Vzc2lvbi1s ZXZlbCBsb2NrcyBhcmUgY2xlYW5lZCB1cCBvbiBhYm9ydC4KKwkJICovCisJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CisKKwkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1 cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJCWlmIChuZXdpZHgtPnNhZmUpCisJCQlzZXRfaW5k ZXhzYWZlX3Byb2NmbGFncygpOworCisJCS8qCisJCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0 IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkJICogaGF2ZSBhIHZh bGlkIHNuYXBzaG90LgorCQkgKi8KKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9u U25hcHNob3QoKSk7CisJCWluZGV4X3NldF9zdGF0ZV9mbGFncyhuZXdpZHgtPmF1eEluZGV4SWQs IElOREVYX0RST1BfQ0xFQVJfUkVBRFkpOworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCX0KKwogCS8qCiAJICogUGhhc2UgMyBvZiBSRUlO REVYIENPTkNVUlJFTlRMWQogCSAqCkBAIC00MTMyLDEyICs0MzU2LDYgQEAgUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQs IGNvbnN0IFJlaW4KIAkgKiB3ZXJlIGNyZWF0ZWQgZHVyaW5nIHRoZSBwcmV2aW91cyBwaGFzZS4g IFNlZSAicGhhc2UgMyIgaW4gRGVmaW5lSW5kZXgoKQogCSAqIGZvciBtb3JlIGRldGFpbHMuCiAJ ICovCi0KLQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOwotCVdhaXRG b3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7Ci0JQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7Ci0KIAlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKIAl7CiAJCVJl aW5kZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CkBAIC00MTc1LDcgKzQzOTMsNyBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlwcm9ncmVzc192YWxzWzNdID0gbmV3aWR4LT5h bUlkOwogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDQsIHByb2dyZXNzX2lu ZGV4LCBwcm9ncmVzc192YWxzKTsKIAotCQl2YWxpZGF0ZV9pbmRleChuZXdpZHgtPnRhYmxlSWQs IG5ld2lkeC0+aW5kZXhJZCwgc25hcHNob3QpOworCQl2YWxpZGF0ZV9pbmRleChuZXdpZHgtPnRh YmxlSWQsIG5ld2lkeC0+aW5kZXhJZCwgbmV3aWR4LT5hdXhJbmRleElkLCBzbmFwc2hvdCk7CiAK IAkJLyoKIAkJICogV2UgY2FuIG5vdyBkbyBhd2F5IHdpdGggb3VyIGFjdGl2ZSBzbmFwc2hvdCwg d2Ugc3RpbGwgbmVlZCB0byBzYXZlCkBAIC00MjA0LDcgKzQ0MjIsNyBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCQkgKiB0aGVyZSdzIG5vIG5lZWQgdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVf SUMgZmxhZyBoZXJlLgogCQkgKi8KIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1dBSVRfMyk7CisJCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNCk7CiAJ CVdhaXRGb3JPbGRlclNuYXBzaG90cyhsaW1pdFhtaW4sIHRydWUpOwogCiAJCUNvbW1pdFRyYW5z YWN0aW9uQ29tbWFuZCgpOwpAQCAtNDI5NCwxNCArNDUxMiwxNCBAQCBSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29u c3QgUmVpbgogCS8qCiAJICogUGhhc2UgNSBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCi0J ICogTWFyayB0aGUgb2xkIGluZGV4ZXMgYXMgZGVhZC4gIEZpcnN0IHdlIG11c3Qgd2FpdCB1bnRp bCBubyBydW5uaW5nCi0JICogdHJhbnNhY3Rpb24gY291bGQgYmUgdXNpbmcgdGhlIGluZGV4IGZv ciBhIHF1ZXJ5LiAgU2VlIGFsc28KKwkgKiBNYXJrIHRoZSBvbGQgYW5kIGF1eGlsaWFyeSBpbmRl eGVzIGFzIGRlYWQuIEZpcnN0IHdlIG11c3Qgd2FpdCB1bnRpbCBubworCSAqIHJ1bm5pbmcgdHJh bnNhY3Rpb24gY291bGQgYmUgdXNpbmcgdGhlIGluZGV4IGZvciBhIHF1ZXJ5LiAgU2VlIGFsc28K IAkgKiBpbmRleF9kcm9wKCkgZm9yIG1vcmUgZGV0YWlscy4KIAkgKi8KIAogCUlOSkVDVElPTl9Q T0lOVCgicmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkIiwgTlVM TCk7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80KTsKKwkJCQkJCQkJ IFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzUpOwogCVdhaXRGb3JMb2NrZXJzTXVsdGlw bGUobG9ja1RhZ3MsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIHRydWUpOwogCiAJZm9yZWFjaChsYywg aW5kZXhJZHMpCkBAIC00MzI2LDYgKzQ1NDQsMjggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAl9CiAKKwlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykK Kwl7CisJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CisKKwkJLyoKKwkJ ICogQ2hlY2sgZm9yIHVzZXItcmVxdWVzdGVkIGFib3J0LiAgVGhpcyBpcyBpbnNpZGUgYSB0cmFu c2FjdGlvbiBzbyBhcworCQkgKiB4YWN0LmMgZG9lcyBub3QgaXNzdWUgYSB1c2VsZXNzIFdBUk5J TkcsIGFuZCBlbnN1cmVzIHRoYXQKKwkJICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBhcmUgY2xlYW5l ZCB1cCBvbiBhYm9ydC4KKwkJICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyoK KwkJICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3Ms IHNvIGVuc3VyZSB3ZQorCQkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCisJCSAqLworCQlQdXNo QWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKworCQlpbmRleF9jb25j dXJyZW50bHlfc2V0X2RlYWQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4SWQpOwor CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJfQorCiAJLyogQ29tbWl0IHRoaXMgdHJhbnNhY3Rp b24gdG8gbWFrZSB0aGUgdXBkYXRlcyB2aXNpYmxlLiAqLwogCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CkBAIC00MzM5LDExICs0NTc5LDEx IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJLyoKIAkgKiBQaGFzZSA2IG9mIFJFSU5ERVgg Q09OQ1VSUkVOVExZCiAJICoKLQkgKiBEcm9wIHRoZSBvbGQgaW5kZXhlcy4KKwkgKiBEcm9wIHRo ZSBvbGQgYW5kIGF1eGlsaWFyeSBpbmRleGVzLgogCSAqLwogCiAJcGdzdGF0X3Byb2dyZXNzX3Vw ZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0VfV0FJVF81KTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RV9XQUlUXzYpOwogCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIEFjY2Vzc0V4Y2x1 c2l2ZUxvY2ssIHRydWUpOwogCiAJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25h cHNob3QoKSk7CkBAIC00MzYzLDYgKzQ2MDMsMTggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAkJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqZWN0LCBvYmplY3RzKTsKIAkJfQogCisJ CWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQorCQl7CisJCQlSZWluZGV4SW5kZXhJbmZvICppZHgg PSBsZmlyc3QobGMpOworCQkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisKKwkJCW9iamVjdC5jbGFz c0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCQkJb2JqZWN0Lm9iamVjdElkID0gaWR4LT5hdXhJ bmRleElkOworCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKworCQkJYWRkX2V4YWN0X29iamVj dF9hZGRyZXNzKCZvYmplY3QsIG9iamVjdHMpOworCQl9CisKIAkJLyoKIAkJICogVXNlIFBFUkZP Uk1fREVMRVRJT05fQ09OQ1VSUkVOVF9MT0NLIHNvIHRoYXQgaW5kZXhfZHJvcCgpIHVzZXMgdGhl CiAJCSAqIHJpZ2h0IGxvY2sgbGV2ZWwuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9t YWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IGU5N2UwOTQz ZjViLi5iNTU2YmE0ODE3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKQEAgLTgzNCw3ICs4MzQsNyBA QCBJbmRleEluZm8gKgogbWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRy cywgT2lkIGFtb2lkLCBMaXN0ICpleHByZXNzaW9ucywKIAkJCSAgTGlzdCAqcHJlZGljYXRlcywg Ym9vbCB1bmlxdWUsIGJvb2wgbnVsbHNfbm90X2Rpc3RpbmN0LAogCQkJICBib29sIGlzcmVhZHks IGJvb2wgY29uY3VycmVudCwgYm9vbCBzdW1tYXJpemluZywKLQkJCSAgYm9vbCB3aXRob3V0b3Zl cmxhcHMpCisJCQkgIGJvb2wgd2l0aG91dG92ZXJsYXBzLCBib29sIGF1eGlsaWFyeSkKIHsKIAlJ bmRleEluZm8gICpuID0gbWFrZU5vZGUoSW5kZXhJbmZvKTsKIApAQCAtODUwLDYgKzg1MCw3IEBA IG1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwg TGlzdCAqZXhwcmVzc2lvbnMsCiAJbi0+aWlfQ29uY3VycmVudCA9IGNvbmN1cnJlbnQ7CiAJbi0+ aWlfU3VtbWFyaXppbmcgPSBzdW1tYXJpemluZzsKIAluLT5paV9XaXRob3V0T3ZlcmxhcHMgPSB3 aXRob3V0b3ZlcmxhcHM7CisJbi0+aWlfQXV4aWxpYXJ5ID0gYXV4aWxpYXJ5OwogCiAJLyogc3Vt bWFyaXppbmcgaW5kZXhlcyBjYW5ub3QgY29udGFpbiBub24ta2V5IGF0dHJpYnV0ZXMgKi8KIAlB c3NlcnQoIXN1bW1hcml6aW5nIHx8IChudW1rZXlhdHRycyA9PSBudW1hdHRycykpOwpAQCAtODc1 LDcgKzg3Niw2IEBAIG1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMs IE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMsCiAJLyogaW5pdGlhbGl6ZSBpbmRleC1idWls ZCBzdGF0ZSB0byBkZWZhdWx0ICovCiAJbi0+aWlfQnJva2VuSG90Q2hhaW4gPSBmYWxzZTsKIAlu LT5paV9QYXJhbGxlbFdvcmtlcnMgPSAwOwotCW4tPmlpX0F1eGlsaWFyeSA9IGZhbHNlOwogCiAJ Lyogc2V0IHVwIGZvciBwb3NzaWJsZSB1c2UgYnkgaW5kZXggQU0gKi8KIAluLT5paV9BbSA9IGFt b2lkOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggYWNkMjBkYmZhYjguLjZjNDNmNDc4MTRkIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy90YWJsZWFtLmgKQEAgLTcwOCwxMSArNzA4LDEyIEBAIHR5cGVkZWYgc3RydWN0IFRhYmxl QW1Sb3V0aW5lCiAJCQkJCQkJCQkJICAgVGFibGVTY2FuRGVzYyBzY2FuKTsKIAogCS8qIHNlZSB0 YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuIGZvciByZWZlcmVuY2UgYWJvdXQgcGFyYW1ldGVycyAq LwotCXZvaWQJCSgqaW5kZXhfdmFsaWRhdGVfc2NhbikgKFJlbGF0aW9uIHRhYmxlX3JlbCwKLQkJ CQkJCQkJCQlSZWxhdGlvbiBpbmRleF9yZWwsCi0JCQkJCQkJCQkJc3RydWN0IEluZGV4SW5mbyAq aW5kZXhfaW5mbywKLQkJCQkJCQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCQkJCQlzdHJ1 Y3QgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSk7CisJdm9pZCAJCSgqaW5kZXhfdmFsaWRhdGVf c2NhbikgKFJlbGF0aW9uIHRhYmxlX3JlbCwKKwkJCQkJCQkJCQkJCVJlbGF0aW9uIGluZGV4X3Jl bCwKKwkJCQkJCQkJCQkJCXN0cnVjdCBJbmRleEluZm8gKmluZGV4X2luZm8sCisJCQkJCQkJCQkJ CQlTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJCQkJCQkJCXN0cnVjdCBWYWxpZGF0ZUluZGV4U3Rh dGUgKnN0YXRlLAorCQkJCQkJCQkJCQkJc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4X3N0 YXRlKTsKIAogCiAJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xODIwLDE5ICsxODIxLDI0IEBAIHRh YmxlX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gdGFibGVfcmVsLAogICogdGFibGVf aW5kZXhfdmFsaWRhdGVfc2NhbiAtIHNlY29uZCB0YWJsZSBzY2FuIGZvciBjb25jdXJyZW50IGlu ZGV4IGJ1aWxkCiAgKgogICogU2VlIHZhbGlkYXRlX2luZGV4KCkgZm9yIGFuIGV4cGxhbmF0aW9u LgorICoKKyAqIE5vdGU6IGl0IGlzIHJlc3BvbnNpYmlsaXR5IG9mIHRoYXQgZnVuY3Rpb24gdG8g Y2xvc2Ugc29ydHN0YXRlcyBpbgorICogYm90aCBgc3RhdGVgIGFuZCBgYXV4c3RhdGVgLgogICov CiBzdGF0aWMgaW5saW5lIHZvaWQKIHRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24g dGFibGVfcmVsLAogCQkJCQkJICBSZWxhdGlvbiBpbmRleF9yZWwsCiAJCQkJCQkgIHN0cnVjdCBJ bmRleEluZm8gKmluZGV4X2luZm8sCiAJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJ ICBzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSkKKwkJCQkJCSAgc3RydWN0IFZhbGlk YXRlSW5kZXhTdGF0ZSAqc3RhdGUsCisJCQkJCQkgIHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUg KmF1eHN0YXRlKQogewotCXRhYmxlX3JlbC0+cmRfdGFibGVhbS0+aW5kZXhfdmFsaWRhdGVfc2Nh bih0YWJsZV9yZWwsCi0JCQkJCQkJCQkJCSAgIGluZGV4X3JlbCwKLQkJCQkJCQkJCQkJICAgaW5k ZXhfaW5mbywKLQkJCQkJCQkJCQkJICAgc25hcHNob3QsCi0JCQkJCQkJCQkJCSAgIHN0YXRlKTsK KwlyZXR1cm4gdGFibGVfcmVsLT5yZF90YWJsZWFtLT5pbmRleF92YWxpZGF0ZV9zY2FuKHRhYmxl X3JlbCwKKwkJCQkJCQkJCQkJCQkgIGluZGV4X3JlbCwKKwkJCQkJCQkJCQkJCQkgIGluZGV4X2lu Zm8sCisJCQkJCQkJCQkJCQkJICBzbmFwc2hvdCwKKwkJCQkJCQkJCQkJCQkgIHN0YXRlLAorCQkJ CQkJCQkJCQkJCSAgYXV4c3RhdGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvaW5kZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCA0ZGFhOGJl ZjVlZS4uZDUxYjRlOGNkMTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXgu aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTI1LDYgKzI1LDcgQEAgdHlw ZWRlZiBlbnVtCiB7CiAJSU5ERVhfQ1JFQVRFX1NFVF9SRUFEWSwKIAlJTkRFWF9DUkVBVEVfU0VU X1ZBTElELAorCUlOREVYX0RST1BfQ0xFQVJfUkVBRFksCiAJSU5ERVhfRFJPUF9DTEVBUl9WQUxJ RCwKIAlJTkRFWF9EUk9QX1NFVF9ERUFELAogfSBJbmRleFN0YXRlRmxhZ3NBY3Rpb247CkBAIC02 NSw2ICs2Niw3IEBAIGV4dGVybiB2b2lkIGluZGV4X2NoZWNrX3ByaW1hcnlfa2V5KFJlbGF0aW9u IGhlYXBSZWwsCiAjZGVmaW5lCUlOREVYX0NSRUFURV9JRl9OT1RfRVhJU1RTCQkJKDEgPDwgNCkK ICNkZWZpbmUJSU5ERVhfQ1JFQVRFX1BBUlRJVElPTkVECQkJKDEgPDwgNSkKICNkZWZpbmUgSU5E RVhfQ1JFQVRFX0lOVkFMSUQJCQkJKDEgPDwgNikKKyNkZWZpbmUgSU5ERVhfQ1JFQVRFX0FVWElM SUFSWQkJCQkoMSA8PCA3KQogCiBleHRlcm4gT2lkCWluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJCQkJCQkgY29uc3QgY2hhciAqaW5kZXhSZWxhdGlvbk5hbWUsCkBAIC0xMDAs NiArMTAyLDExIEBAIGV4dGVybiBPaWQJaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBPaWQgdGFibGVzcGFjZU9pZCwKIAkJ CQkJCQkJCQkgICBjb25zdCBjaGFyICpuZXdOYW1lKTsKIAorZXh0ZXJuIE9pZAlpbmRleF9jb25j dXJyZW50bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCisJCQkJCQkJCQkJICBP aWQgbWFpbkluZGV4SWQsCisJCQkJCQkJCQkJICBPaWQgdGFibGVzcGFjZU9pZCwKKwkJCQkJCQkJ CQkgIGNvbnN0IGNoYXIgKm5ld05hbWUpOworCiBleHRlcm4gdm9pZCBpbmRleF9jb25jdXJyZW50 bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCQkJCQkJCQkJIE9pZCBpbmRleFJlbGF0aW9u SWQpOwogCkBAIC0xNDUsNyArMTUyLDcgQEAgZXh0ZXJuIHZvaWQgaW5kZXhfYnVpbGQoUmVsYXRp b24gaGVhcFJlbGF0aW9uLAogCQkJCQkJYm9vbCBpc3JlaW5kZXgsCiAJCQkJCQlib29sIHBhcmFs bGVsKTsKIAotZXh0ZXJuIHZvaWQgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4 SWQsIFNuYXBzaG90IHNuYXBzaG90KTsKK2V4dGVybiB2b2lkIHZhbGlkYXRlX2luZGV4KE9pZCBo ZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpOwog CiBleHRlcm4gdm9pZCBpbmRleF9zZXRfc3RhdGVfZmxhZ3MoT2lkIGluZGV4SWQsIEluZGV4U3Rh dGVGbGFnc0FjdGlvbiBhY3Rpb24pOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5k cy9wcm9ncmVzcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaAppbmRleCA3Yzcz NmU3YjAzYi4uNmUxNDU3N2VmOWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3By b2dyZXNzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaApAQCAtOTQsMTQg Kzk0LDE1IEBACiAKIC8qIFBoYXNlcyBvZiBDUkVBVEUgSU5ERVggKGFzIGFkdmVydGlzZWQgdmlh IFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSkgKi8KICNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFX1dBSVRfMQkJCTEKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX0JVSUxE CQkJMgotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yCQkJMwotI2RlZmlu ZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYU0NBTgk0Ci0jZGVmaW5lIFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9TT1JUCQk1Ci0jZGVmaW5lIFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9UQUJMRVNDQU4JNgotI2RlZmluZSBQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0VfV0FJVF8zCQkJNworI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfV0FJVF8yCQkJMgorI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfQlVJTEQJCQkz CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMJCQk0CisjZGVmaW5lIFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9JRFhTQ0FOCTUKKyNkZWZpbmUgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX1NPUlQJCTYKKyNkZWZpbmUgUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFX1ZBTElEQVRFX0lEWE1FUkdFCTcKICNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFX1dBSVRfNAkJCTgKICNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dB SVRfNQkJCTkKKyNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNgkJCTEwCiAK IC8qCiAgKiBTdWJwaGFzZXMgb2YgQ1JFQVRFIElOREVYLCBmb3IgaW5kZXhfYnVpbGQuCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCmluZGV4IDAzNDFiYjc0MzI1Li5lMDJmYzZhYTNlNiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKQEAgLTE4Niw4ICsxODYsOCBAQCB0eXBlZGVmIHN0cnVjdCBFeHByU3RhdGUKICAq CQlBbUNhY2hlCQkJCXByaXZhdGUgY2FjaGUgYXJlYSBmb3IgaW5kZXggQU0KICAqCQlDb250ZXh0 CQkJCW1lbW9yeSBjb250ZXh0IGhvbGRpbmcgdGhpcyBJbmRleEluZm8KICAqCi0gKiBpaV9Db25j dXJyZW50LCBpaV9Ccm9rZW5Ib3RDaGFpbiwgaWlfQXV4aWxpYXJ5IGFuZCBpaV9QYXJhbGxlbFdv cmtlcnMKLSAqIGFyZSB1c2VkIG9ubHkgZHVyaW5nIGluZGV4IGJ1aWxkOyB0aGV5J3JlIGNvbnZl bnRpb25hbGx5IHplcm9lZCBvdGhlcndpc2UuCisgKiBpaV9Db25jdXJyZW50LCBpaV9Ccm9rZW5I b3RDaGFpbiwgYW5kIGlpX1BhcmFsbGVsV29ya2VycyBhcmUgdXNlZCBvbmx5CisgKiBkdXJpbmcg aW5kZXggYnVpbGQ7IHRoZXkncmUgY29udmVudGlvbmFsbHkgemVyb2VkIG90aGVyd2lzZS4KICAq IC0tLS0tLS0tLS0tLS0tLS0KICAqLwogdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJbmZvCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCBiL3NyYy9pbmNsdWRlL25vZGVzL21h a2VmdW5jcy5oCmluZGV4IDU0NzNjZTlhMjg4Li40OTA0NzQ4ZjVmYyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1 bmNzLmgKQEAgLTk5LDcgKzk5LDggQEAgZXh0ZXJuIEluZGV4SW5mbyAqbWFrZUluZGV4SW5mbyhp bnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLAogCQkJCQkJCQlMaXN0ICpl eHByZXNzaW9ucywgTGlzdCAqcHJlZGljYXRlcywKIAkJCQkJCQkJYm9vbCB1bmlxdWUsIGJvb2wg bnVsbHNfbm90X2Rpc3RpbmN0LAogCQkJCQkJCQlib29sIGlzcmVhZHksIGJvb2wgY29uY3VycmVu dCwKLQkJCQkJCQkJYm9vbCBzdW1tYXJpemluZywgYm9vbCB3aXRob3V0b3ZlcmxhcHMpOworCQkJ CQkJCQlib29sIHN1bW1hcml6aW5nLCBib29sIHdpdGhvdXRvdmVybGFwcywKKwkJCQkJCQkJYm9v bCBhdXhpbGlhcnkpOwogCiBleHRlcm4gTm9kZSAqbWFrZVN0cmluZ0NvbnN0KGNoYXIgKnN0ciwg aW50IGxvY2F0aW9uKTsKIGV4dGVybiBEZWZFbGVtICptYWtlRGVmRWxlbShjaGFyICpuYW1lLCBO b2RlICphcmcsIGludCBsb2NhdGlvbik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0 ZV9pbmRleC5vdXQKaW5kZXggOWFkZTdiODM1ZTYuLmNhNzQ4NDRiNWM2IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CkBAIC0xNDIzLDYgKzE0MjMsNyBAQCBE RVRBSUw6ICBLZXkgKGYxKT0oYikgYWxyZWFkeSBleGlzdHMuCiBDUkVBVEUgVU5JUVVFIElOREVY IENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXgzIE9OIGNvbmN1cl9oZWFwKGYyKTsKIEVSUk9SOiAg Y291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImNvbmN1cl9pbmRleDMiCiBERVRBSUw6ICBL ZXkgKGYyKT0oYikgaXMgZHVwbGljYXRlZC4KK0RST1AgSU5ERVggY29uY3VyX2luZGV4M19jY2F1 eDsKIC0tIHRlc3QgdGhhdCBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHBhcnRpYWwgaW5kZXhlcyB3 b3JrIGNvbmN1cnJlbnRseQogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg0 IG9uIGNvbmN1cl9oZWFwKGYyKSBXSEVSRSBmMT0nYSc7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGNvbmN1cl9pbmRleDUgb24gY29uY3VyX2hlYXAoZjIpIFdIRVJFIGYxPSd4JzsKQEAgLTMx OTcsNiArMzE5OCw3IEBAIElOU0VSVCBJTlRPIGNvbmN1cl9yZWluZGV4X3RhYjQgVkFMVUVTICgx KSwgKDEpLCAoMik7CiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVp bmRleF9pbmQ1IE9OIGNvbmN1cl9yZWluZGV4X3RhYjQgKGMxKTsKIEVSUk9SOiAgY291bGQgbm90 IGNyZWF0ZSB1bmlxdWUgaW5kZXggImNvbmN1cl9yZWluZGV4X2luZDUiCiBERVRBSUw6ICBLZXkg KGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KK0RST1AgSU5ERVggY29uY3VyX3JlaW5kZXhfaW5kNV9j Y2F1eDsKIC0tIFJlaW5kZXhpbmcgY29uY3VycmVudGx5IHRoaXMgaW5kZXggZmFpbHMgd2l0aCB0 aGUgc2FtZSBmYWlsdXJlLgogLS0gVGhlIGV4dHJhIGluZGV4IGNyZWF0ZWQgaXMgaXRzZWxmIGlu dmFsaWQsIGFuZCBjYW4gYmUgZHJvcHBlZC4KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNv bmN1cl9yZWluZGV4X2luZDU7CkBAIC0zMjA5LDggKzMyMTEsMTAgQEAgREVUQUlMOiAgS2V5IChj MSk9KDEpIGlzIGR1cGxpY2F0ZWQuCiAgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCiBJbmRleGVzOgogICAgICJjb25jdXJfcmVpbmRleF9pbmQ1IiBVTklRVUUsIGJ0 cmVlIChjMSkgSU5WQUxJRAorICAgICJjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4IiBzdGlyIChj MSkgSU5WQUxJRAogICAgICJjb25jdXJfcmVpbmRleF9pbmQ1X2NjbmV3IiBVTklRVUUsIGJ0cmVl IChjMSkgSU5WQUxJRAogCitEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NhdXg7CiBE Uk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NuZXc7CiAtLSBUaGlzIG1ha2VzIHRoZSBw cmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgog REVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7CkBAIC0zMjM4LDYg KzMyNDIsNDQgQEAgSW5kZXhlczoKICAgICAiY29uY3VyX3JlaW5kZXhfaW5kNSIgVU5JUVVFLCBi dHJlZSAoYzEpCiAKIERST1AgVEFCTEUgY29uY3VyX3JlaW5kZXhfdGFiNDsKKy0tIENoZWNrIGhh bmRsaW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzCitDUkVBVEUgVEFCTEUgYXV4X2luZGV4X3RhYjUg KGMxIGludCk7CitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSksICgy KTsKKy0tIFRoaXMgdHJpY2sgY3JlYXRlcyBhbiBpbnZhbGlkIGluZGV4IGFuZCBhdXhpbGlhcnkg aW5kZXggZm9yIGl0CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhf aW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVu aXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYiCitERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVw bGljYXRlZC4KK1xkIGF1eF9pbmRleF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJsaWMuYXV4 X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwg RGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhl czoKKyAgICAiYXV4X2luZGV4X2luZDYiIFVOSVFVRSwgYnRyZWUgKGMxKSBJTlZBTElECisgICAg ImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBzdGlyIChjMSkgSU5WQUxJRAorCistLSBOb3QgYWxsb3dl ZCB0byByZWluZGV4IGF1eGlsaWFyeSBpbmRleAorUkVJTkRFWCBJTkRFWCBhdXhfaW5kZXhfaW5k Nl9jY2F1eDsKK0VSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9pbmRleF9p bmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVkCistLSBDb25jdXJyZW50bHkgYWxzbworUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDZfY2NhdXg7CitFUlJPUjogIHJlaW5kZXgg b2YgYXV4aWxpYXJ5IGluZGV4ICJhdXhfaW5kZXhfaW5kNl9jY2F1eCIgbm90IHN1cHBvcnRlZAor LS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXgg Y2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUg YzEgPSAxOworRVJST1I6ICByZWxhdGlvbiAiY29uY3VyX3JlaW5kZXhfdGFiNCIgZG9lcyBub3Qg ZXhpc3QKK0xJTkUgMTogREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9 IDE7CisgICAgICAgICAgICAgICAgICAgIF4KKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyBy ZWluZGV4CitSRUlOREVYIFRBQkxFIGF1eF9pbmRleF90YWI1OworRVJST1I6ICBjb3VsZCBub3Qg Y3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYiCitERVRBSUw6ICBLZXkgKGMxKT0o MSkgaXMgZHVwbGljYXRlZC4KKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyBjb25jdXJyZW50 IHJlaW5kZXgKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIGF1eF9pbmRleF90YWI1OworV0FS TklORzogIHNraXBwaW5nIHJlaW5kZXggb2YgaW52YWxpZCBpbmRleCAicHVibGljLmF1eF9pbmRl eF9pbmQ2IgorSElOVDogIFVzZSBEUk9QIElOREVYIG9yIFJFSU5ERVggSU5ERVguCitXQVJOSU5H OiAgc2tpcHBpbmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggInB1YmxpYy5hdXhfaW5kZXhf aW5kNl9jY2F1eCIKK05PVElDRTogIHRhYmxlICJhdXhfaW5kZXhfdGFiNSIgaGFzIG5vIGluZGV4 ZXMgdGhhdCBjYW4gYmUgcmVpbmRleGVkIGNvbmN1cnJlbnRseQorRFJPUCBUQUJMRSBhdXhfaW5k ZXhfdGFiNTsKIC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHByZXNzaW9ucyBh bmQgcHJlZGljYXRlcy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQgaW5kZXhl cyBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsCiAtLSBkZWZpbml0aW9ucy4KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9pbmRleGluZy5vdXQKaW5kZXggYmNmMWRiMTFkNzMuLjNmZWNhYTM4ODUwIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dApAQCAtMTU4NSwxMCArMTU4NSwx MSBAQCBzZWxlY3QgaW5kZXhyZWxpZDo6cmVnY2xhc3MsIGluZGlzdmFsaWQsCiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIHBhcnRlZF9pc3ZhbGlkX2lkeCAg ICAgICAgICAgICB8IGYgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWIgICAgfCAKICBwYXJ0 ZWRfaXN2YWxpZF9pZHhfMTEgICAgICAgICAgfCBmICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRf dGFiXzExIHwgcGFydGVkX2lzdmFsaWRfdGFiXzFfZXhwcl9pZHgKKyBwYXJ0ZWRfaXN2YWxpZF9p ZHhfMTFfY2NhdXggICAgfCBmICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRfdGFiXzExIHwgCiAg cGFydGVkX2lzdmFsaWRfdGFiXzEyX2V4cHJfaWR4IHwgdCAgICAgICAgICB8IHBhcnRlZF9pc3Zh bGlkX3RhYl8xMiB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xX2V4cHJfaWR4CiAgcGFydGVkX2lzdmFs aWRfdGFiXzFfZXhwcl9pZHggIHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xICB8 IHBhcnRlZF9pc3ZhbGlkX2lkeAogIHBhcnRlZF9pc3ZhbGlkX3RhYl8yX2V4cHJfaWR4ICB8IHQg ICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMiAgfCBwYXJ0ZWRfaXN2YWxpZF9pZHgKLSg1 IHJvd3MpCisoNiByb3dzKQogCiBkcm9wIHRhYmxlIHBhcnRlZF9pc3ZhbGlkX3RhYjsKIC0tIENo ZWNrIHN0YXRlIG9mIHJlcGxpY2EgaW5kZXhlcyB3aGVuIGF0dGFjaGluZyBhIHBhcnRpdGlvbi4K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggNmNmODI4Y2E4ZDAuLmVkNmMyMGE0 OTVjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMjA0MSwxNCArMjA0MSwx NSBAQCBwZ19zdGF0X3Byb2dyZXNzX2NyZWF0ZV9pbmRleHwgU0VMRUNUIHMucGlkLAogICAgICAg ICBDQVNFIHMucGFyYW0xMAogICAgICAgICAgICAgV0hFTiAwIFRIRU4gJ2luaXRpYWxpemluZyc6 OnRleHQKICAgICAgICAgICAgIFdIRU4gMSBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9y ZSBidWlsZCc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gMiBUSEVOICgnYnVpbGRpbmcgaW5kZXgn Ojp0ZXh0IHx8IENPQUxFU0NFKCgnOiAnOjp0ZXh0IHx8IHBnX2luZGV4YW1fcHJvZ3Jlc3NfcGhh c2VuYW1lKChzLnBhcmFtOSk6Om9pZCwgcy5wYXJhbTExKSksICcnOjp0ZXh0KSkKLSAgICAgICAg ICAgIFdIRU4gMyBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9yZSB2YWxpZGF0aW9uJzo6 dGV4dAotICAgICAgICAgICAgV0hFTiA0IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNjYW5uaW5n IGluZGV4Jzo6dGV4dAotICAgICAgICAgICAgV0hFTiA1IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246 IHNvcnRpbmcgdHVwbGVzJzo6dGV4dAotICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2luZGV4IHZh bGlkYXRpb246IHNjYW5uaW5nIHRhYmxlJzo6dGV4dAotICAgICAgICAgICAgV0hFTiA3IFRIRU4g J3dhaXRpbmcgZm9yIG9sZCBzbmFwc2hvdHMnOjp0ZXh0Ci0gICAgICAgICAgICBXSEVOIDggVEhF TiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUgbWFya2luZyBkZWFkJzo6dGV4dAotICAgICAg ICAgICAgV0hFTiA5IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRyb3BwaW5nJzo6 dGV4dAorICAgICAgICAgICAgV0hFTiAyIFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMgdG8gdXNl IGF1eGlsaWFyeSBpbmRleCc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gMyBUSEVOICgnYnVpbGRp bmcgaW5kZXgnOjp0ZXh0IHx8IENPQUxFU0NFKCgnOiAnOjp0ZXh0IHx8IHBnX2luZGV4YW1fcHJv Z3Jlc3NfcGhhc2VuYW1lKChzLnBhcmFtOSk6Om9pZCwgcy5wYXJhbTExKSksICcnOjp0ZXh0KSkK KyAgICAgICAgICAgIFdIRU4gNCBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9yZSB2YWxp ZGF0aW9uJzo6dGV4dAorICAgICAgICAgICAgV0hFTiA1IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246 IHNjYW5uaW5nIGluZGV4Jzo6dGV4dAorICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2luZGV4IHZh bGlkYXRpb246IHNvcnRpbmcgdHVwbGVzJzo6dGV4dAorICAgICAgICAgICAgV0hFTiA3IFRIRU4g J2luZGV4IHZhbGlkYXRpb246IG1lcmdpbmcgaW5kZXhlcyc6OnRleHQKKyAgICAgICAgICAgIFdI RU4gOCBUSEVOICd3YWl0aW5nIGZvciBvbGQgc25hcHNob3RzJzo6dGV4dAorICAgICAgICAgICAg V0hFTiA5IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIG1hcmtpbmcgZGVhZCc6OnRl eHQKKyAgICAgICAgICAgIFdIRU4gMTAgVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUg ZHJvcHBpbmcnOjp0ZXh0CiAgICAgICAgICAgICBFTFNFIE5VTEw6OnRleHQKICAgICAgICAgRU5E IEFTIHBoYXNlLAogICAgIHMucGFyYW00IEFTIGxvY2tlcnNfdG90YWwsCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvY3JlYXRlX2luZGV4LnNxbAppbmRleCBlMjFmZjQyNjUxOS4uMmNmZjFhYzI5YmUgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbApAQCAtNDk5LDYgKzQ5OSw3IEBAIENSRUFU RSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIElGIE5PVCBFWElTVFMgY29uY3VyX2luZGV4MiBP TiBjb25jdXJfaGVhcChmMSk7CiBJTlNFUlQgSU5UTyBjb25jdXJfaGVhcCBWQUxVRVMgKCdiJywn eCcpOwogLS0gY2hlY2sgaWYgY29uc3RyYWludCBpcyBlbmZvcmNlZCBwcm9wZXJseSBhdCBidWls ZCB0aW1lCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXgzIE9O IGNvbmN1cl9oZWFwKGYyKTsKK0RST1AgSU5ERVggY29uY3VyX2luZGV4M19jY2F1eDsKIC0tIHRl c3QgdGhhdCBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHBhcnRpYWwgaW5kZXhlcyB3b3JrIGNvbmN1 cnJlbnRseQogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg0IG9uIGNvbmN1 cl9oZWFwKGYyKSBXSEVSRSBmMT0nYSc7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1 cl9pbmRleDUgb24gY29uY3VyX2hlYXAoZjIpIFdIRVJFIGYxPSd4JzsKQEAgLTEzMTEsMTAgKzEz MTIsMTIgQEAgQ1JFQVRFIFRBQkxFIGNvbmN1cl9yZWluZGV4X3RhYjQgKGMxIGludCk7CiBJTlNF UlQgSU5UTyBjb25jdXJfcmVpbmRleF90YWI0IFZBTFVFUyAoMSksICgxKSwgKDIpOwogLS0gVGhp cyB0cmljayBjcmVhdGVzIGFuIGludmFsaWQgaW5kZXguCiBDUkVBVEUgVU5JUVVFIElOREVYIENP TkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1IE9OIGNvbmN1cl9yZWluZGV4X3RhYjQgKGMx KTsKK0RST1AgSU5ERVggY29uY3VyX3JlaW5kZXhfaW5kNV9jY2F1eDsKIC0tIFJlaW5kZXhpbmcg Y29uY3VycmVudGx5IHRoaXMgaW5kZXggZmFpbHMgd2l0aCB0aGUgc2FtZSBmYWlsdXJlLgogLS0g VGhlIGV4dHJhIGluZGV4IGNyZWF0ZWQgaXMgaXRzZWxmIGludmFsaWQsIGFuZCBjYW4gYmUgZHJv cHBlZC4KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9yZWluZGV4X2luZDU7CiBc ZCBjb25jdXJfcmVpbmRleF90YWI0CitEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2Nh dXg7CiBEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NuZXc7CiAtLSBUaGlzIG1ha2Vz IHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZh bGlkLgogREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7CkBAIC0x MzI2LDYgKzEzMjksMjQgQEAgUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX3JlaW5k ZXhfaW5kNTsKIFxkIGNvbmN1cl9yZWluZGV4X3RhYjQKIERST1AgVEFCTEUgY29uY3VyX3JlaW5k ZXhfdGFiNDsKIAorLS0gQ2hlY2sgaGFuZGxpbmcgb2YgYXV4aWxpYXJ5IGluZGV4ZXMKK0NSRUFU RSBUQUJMRSBhdXhfaW5kZXhfdGFiNSAoYzEgaW50KTsKK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90 YWI1IFZBTFVFUyAoMSksICgxKSwgKDIpOworLS0gVGhpcyB0cmljayBjcmVhdGVzIGFuIGludmFs aWQgaW5kZXggYW5kIGF1eGlsaWFyeSBpbmRleCBmb3IgaXQKK0NSRUFURSBVTklRVUUgSU5ERVgg Q09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CitcZCBh dXhfaW5kZXhfdGFiNQorLS0gTm90IGFsbG93ZWQgdG8gcmVpbmRleCBhdXhpbGlhcnkgaW5kZXgK K1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDZfY2NhdXg7CistLSBDb25jdXJyZW50bHkgYWxz bworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDZfY2NhdXg7CistLSBU aGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4g YmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9 IDE7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleAorUkVJTkRFWCBUQUJMRSBh dXhfaW5kZXhfdGFiNTsKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyBjb25jdXJyZW50IHJl aW5kZXgKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIGF1eF9pbmRleF90YWI1OworRFJPUCBU QUJMRSBhdXhfaW5kZXhfdGFiNTsKKwogLS0gQ2hlY2sgaGFuZGxpbmcgb2YgaW5kZXhlcyB3aXRo IGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzLiAgVGhlCiAtLSBkZWZpbml0aW9ucyBvZiB0aGUg cmVidWlsdCBpbmRleGVzIHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwKIC0tIGRlZmluaXRpb25z LgotLSAKMi40My4wCgo= --00000000000027fe8906381ae2a2 Content-Type: application/x-patch; name="v21-0011-Refresh-snapshot-periodically-during-index-valid.patch" Content-Disposition: attachment; filename="v21-0011-Refresh-snapshot-periodically-during-index-valid.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8uo1 RnJvbSA0NjJhY2Y5Njc2NjgwZDg3OGRhMzY1ZDg2NDA1YmE1OWViZTQ0MjlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAyMSBBcHIgMjAyNSAxNDoxODozMiArMDIwMApTdWJqZWN0OiBb UEFUQ0ggdjIxIDExLzEyXSBSZWZyZXNoIHNuYXBzaG90IHBlcmlvZGljYWxseSBkdXJpbmcgaW5k ZXgKIHZhbGlkYXRpb24KCkVuaGFuY2VzIHZhbGlkYXRpb24gcGhhc2Ugb2YgY29uY3VycmVudGx5 IGJ1aWx0IGluZGV4ZXMgYnkgcGVyaW9kaWNhbGx5IHJlZnJlc2hpbmcgc25hcHNob3RzIHJhdGhl ciB0aGFuIHVzaW5nIGEgc2luZ2xlIHJlZmVyZW5jZSBzbmFwc2hvdC4gVGhpcyBhZGRyZXNzZXMg aXNzdWVzIHdpdGggeG1pbiBwcm9wYWdhdGlvbiBkdXJpbmcgbG9uZy1ydW5uaW5nIHZhbGlkYXRp b25zLgoKVGhlIHZhbGlkYXRpb24gbm93IHRha2VzIGEgZnJlc2ggc25hcHNob3QgZXZlcnkgZmV3 IHBhZ2VzLCBhbGxvd2luZyB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UuIFRoaXMgcmVzdG9y ZXMgZmVhdHVyZSBvZiBjb21taXQgZDlkMDc2MjIyZjViLCB3aGljaCB3YXMgcmV2ZXJ0ZWQgaW4g Y29tbWl0IGUyOGJiODg1MTk2OS4gTmV3IFNUSVItYmFzZWQgYXBwcm9hY2ggaXMgbm90IGRlcGVu ZHMgb24gc2luZ2xlIHJlZmVyZW5jZSBzbmFwc2hvdCBhbnltb3JlLgotLS0KIGRvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgICAgICAgfCAxMSArKystCiBkb2Mvc3JjL3NnbWwvcmVm L3JlaW5kZXguc2dtbCAgICAgICAgICAgIHwgMTEgKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvUkVBRE1FLkhPVCAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1faGFuZGxlci5jIHwgNzMgKysrKysrKysrKysrKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9z cGdpc3Qvc3BndmFjdXVtLmMgICAgfCAxMiArKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 LmMgICAgICAgICAgICAgIHwgNDIgKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jICAgICAgICAgfCA1MCArKy0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgIHwgIDcgKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv dHJhbnNhbS5oICAgICAgICAgICAgIHwgMTUgKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5k ZXguaCAgICAgICAgICAgICAgfCAgMiArLQogMTEgZmlsZXMgY2hhbmdlZCwgMTQ2IGluc2VydGlv bnMoKyksIDgzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX2luZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sCmluZGV4 IGNmMTRmNDc0OTQ2Li4xNjI2Y2VlN2EwMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfaW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21s CkBAIC04ODEsOSArODgxLDE0IEBAIEluZGV4ZXM6CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KLSAg IExpa2UgYW55IGxvbmctcnVubmluZyB0cmFuc2FjdGlvbiwgPGNvbW1hbmQ+Q1JFQVRFIElOREVY PC9jb21tYW5kPiBvbiBhCi0gICB0YWJsZSBjYW4gYWZmZWN0IHdoaWNoIHR1cGxlcyBjYW4gYmUg cmVtb3ZlZCBieSBjb25jdXJyZW50Ci0gICA8Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+IG9uIGFu eSBvdGhlciB0YWJsZS4KKyAgIER1ZSB0byB0aGUgaW1wcm92ZWQgaW1wbGVtZW50YXRpb24gdXNp bmcgcGVyaW9kaWNhbGx5IHJlZnJlc2hlZCBzbmFwc2hvdHMgYW5kCisgICBhdXhpbGlhcnkgaW5k ZXhlcywgY29uY3VycmVudCBpbmRleCBidWlsZHMgaGF2ZSBtaW5pbWFsIGltcGFjdCBvbiBjb25j dXJyZW50CisgICA8Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+IG9wZXJhdGlvbnMuIFRoZSBzeXN0 ZW0gYXV0b21hdGljYWxseSBhZHZhbmNlcyBpdHMKKyAgIGludGVybmFsIHRyYW5zYWN0aW9uIGhv cml6b24gZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLCBhbGxvd2luZworICAgPGNvbW1hbmQ+VkFD VVVNPC9jb21tYW5kPiB0byByZW1vdmUgZGVhZCB0dXBsZXMgb24gb3RoZXIgdGFibGVzIHdpdGhv dXQKKyAgIGhhdmluZyB0byB3YWl0IGZvciB0aGUgZW50aXJlIGluZGV4IGJ1aWxkIHRvIGNvbXBs ZXRlLiBPbmx5IGR1cmluZyB2ZXJ5IGJyaWVmCisgICBwZXJpb2RzIHdoZW4gc25hcHNob3RzIGFy ZSBiZWluZyByZWZyZXNoZWQgbWlnaHQgdGhlcmUgYmUgYW55IHRlbXBvcmFyeSBlZmZlY3QKKyAg IG9uIGNvbmN1cnJlbnQgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBvcGVyYXRpb25zLgogICA8 L3BhcmE+CiAKICAgPHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXgu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCmluZGV4IGQ2Mjc5MWZmOWMzLi42 MGY0ZDBkNjgwZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKQEAgLTUwMiwxMCArNTAyLDEzIEBAIElu ZGV4ZXM6CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgotICAgIExpa2UgYW55IGxvbmctcnVubmlu ZyB0cmFuc2FjdGlvbiwgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFuZD4gb24gYSB0YWJsZQotICAg IGNhbiBhZmZlY3Qgd2hpY2ggdHVwbGVzIGNhbiBiZSByZW1vdmVkIGJ5IGNvbmN1cnJlbnQKLSAg ICA8Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+IG9uIGFueSBvdGhlciB0YWJsZS4KLSAgIDwvcGFy YT4KKyAgICA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaGFzIG1pbmlt YWwKKyAgICBpbXBhY3Qgb24gd2hpY2ggdHVwbGVzIGNhbiBiZSByZW1vdmVkIGJ5IGNvbmN1cnJl bnQgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPgorICAgIG9wZXJhdGlvbnMgb24gb3RoZXIgdGFi bGVzLiBUaGlzIGlzIGFjaGlldmVkIHRocm91Z2ggcGVyaW9kaWMgc25hcHNob3QKKyAgICByZWZy ZXNoZXMgYW5kIHRoZSB1c2Ugb2YgYXV4aWxpYXJ5IGluZGV4ZXMgZHVyaW5nIHRoZSByZWJ1aWxk IHByb2Nlc3MsCisgICAgYWxsb3dpbmcgdGhlIHN5c3RlbSB0byBhZHZhbmNlIGl0cyB0cmFuc2Fj dGlvbiBob3Jpem9uIHJlZ3VsYXJseSByYXRoZXIgdGhhbgorICAgIG1haW50YWluaW5nIGEgc2lu Z2xlIGxvbmctcnVubmluZyBzbmFwc2hvdC4KKyAgPC9wYXJhPgogCiAgICA8cGFyYT4KICAgICA8 Y29tbWFuZD5SRUlOREVYIFNZU1RFTTwvY29tbWFuZD4gZG9lcyBub3Qgc3VwcG9ydApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggNmY3MThmZWI2ZDUuLmQ0MTYwOWM5N2NkIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTQwMSwxMiArNDAxLDEyIEBAIHVzZSB0aGUg a2V5IHZhbHVlIGZyb20gdGhlIGxpdmUgdHVwbGUuCiBXZSBtYXJrIHRoZSBpbmRleCBvcGVuIGZv ciBpbnNlcnRzIChidXQgc3RpbGwgbm90IHJlYWR5IGZvciByZWFkcykgdGhlbgogd2UgYWdhaW4g d2FpdCBmb3IgdHJhbnNhY3Rpb25zIHdoaWNoIGhhdmUgdGhlIHRhYmxlIG9wZW4uICBUaGVuIHZh bGlkYXRlCiB0aGUgaW5kZXguICBUaGlzIHNlYXJjaGVzIGZvciB0dXBsZXMgbWlzc2luZyBmcm9t IHRoZSBpbmRleCBpbiBhdXhpbGlhcnkKLWluZGV4LCBhbmQgaW5zZXJ0cyBhbnkgbWlzc2luZyBv bmVzIGlmIHRoZW0gdmlzaWJsZSB0byByZWZlcmVuY2Ugc25hcHNob3QuCitpbmRleCwgYW5kIGlu c2VydHMgYW55IG1pc3Npbmcgb25lcyBpZiB0aGVtIHZpc2libGUgdG8gZnJlc2ggc25hcHNob3Qu CiBBZ2FpbiwgdGhlIGluZGV4IGVudHJpZXMgaGF2ZSB0byBoYXZlIFRJRHMgZXF1YWwgdG8gSE9U LWNoYWluIHJvb3QgVElEcywgYnV0CiB0aGUgdmFsdWUgdG8gYmUgaW5zZXJ0ZWQgaXMgdGhlIG9u ZSBmcm9tIHRoZSBsaXZlIHR1cGxlLgogCiBUaGVuIHdlIHdhaXQgdW50aWwgZXZlcnkgdHJhbnNh Y3Rpb24gdGhhdCBjb3VsZCBoYXZlIGEgc25hcHNob3Qgb2xkZXIgdGhhbgotdGhlIHNlY29uZCBy ZWZlcmVuY2Ugc25hcHNob3QgaXMgZmluaXNoZWQuICBUaGlzIGVuc3VyZXMgdGhhdCBub2JvZHkg aXMKK3RoZSBsYXRlc3QgdXNlZCBzbmFwc2hvdCBpcyBmaW5pc2hlZC4gIFRoaXMgZW5zdXJlcyB0 aGF0IG5vYm9keSBpcwogYWxpdmUgYW55IGxvbmdlciB3aG8gY291bGQgbmVlZCB0byBzZWUgYW55 IHR1cGxlcyB0aGF0IG1pZ2h0IGJlIG1pc3NpbmcKIGZyb20gdGhlIGluZGV4LCBhcyB3ZWxsIGFz IGVuc3VyaW5nIHRoYXQgbm8gb25lIGNhbiBzZWUgYW55IGluY29uc2lzdGVudAogcm93cyBpbiBh IGJyb2tlbiBIT1QgY2hhaW4gKHRoZSBmaXJzdCBjb25kaXRpb24gaXMgc3Ryb25nZXIgdGhhbiB0 aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGY1OTJiMDll YzY4Li4yMzZlMjE2ZDE3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxl ci5jCkBAIC0yMDM0LDIzICsyMDM0LDI2IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX3Jl YWRfc3RyZWFtX25leHQoCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRp YyBUcmFuc2FjdGlvbklkCiBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJCQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQkJCQkJICAgSW5k ZXhJbmZvICppbmRleEluZm8sCi0JCQkJCQkgICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCSAg IFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUsCiAJCQkJCQkgICBWYWxpZGF0ZUluZGV4U3RhdGUg KmF1eFN0YXRlKQogeworCVRyYW5zYWN0aW9uSWQgbGltaXRYbWluOworCiAJRGF0dW0JCXZhbHVl c1tJTkRFWF9NQVhfS0VZU107CiAJYm9vbAkJaXNudWxsW0lOREVYX01BWF9LRVlTXTsKIAorCVNu YXBzaG90CQlzbmFwc2hvdDsKIAlUdXBsZVRhYmxlU2xvdCAgKnNsb3Q7CiAJRVN0YXRlCQkJKmVz dGF0ZTsKIAlFeHByQ29udGV4dAkJKmVjb250ZXh0OwogCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJz dHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0ZWd5KEJBU19CVUxLUkVBRCk7CiAKLQlpbnQJCQkJbnVt X3RvX2NoZWNrOworCWludAkJCQludW1fdG9fY2hlY2ssCisJCQkJCXBhZ2VfcmVhZF9jb3VudGVy ID0gMTsgLyogc2V0IHRvIDEgdG8gc2tpcCBzbmFwc2hvdCByZXNldCBhdCBzdGFydCAqLwogCVR1 cGxlc3RvcmVzdGF0ZSAqdHVwbGVzX2Zvcl9jaGVjazsKIAlWYWxpZGF0ZUluZGV4U2NhblN0YXRl IGNhbGxiYWNrX3ByaXZhdGVfZGF0YTsKIApAQCAtMjA2MSwxNCArMjA2NCwxNiBAQCBoZWFwYW1f aW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJLyogVXNlIDEwJSBv ZiBtZW1vcnkgZm9yIHR1cGxlIHN0b3JlLiAqLwogCWludAkJc3RvcmVfd29ya19tZW1fcGFydCA9 IG1haW50ZW5hbmNlX3dvcmtfbWVtIC8gMTA7CiAKLQkvKgotCSAqIEVuY29kZSBUSURzIGFzIGlu dDggdmFsdWVzIGZvciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwotCSAq IGl0ZW0gcG9pbnRlcnMuICBUaGlzIGNhbiBiZSBzaWduaWZpY2FudGx5IGZhc3RlciwgcHJpbWFy aWx5IGJlY2F1c2UgVElECi0JICogaXMgYSBwYXNzLWJ5LXJlZmVyZW5jZSB0eXBlIG9uIGFsbCBw bGF0Zm9ybXMsIHdoZXJlYXMgaW50OCBpcwotCSAqIHBhc3MtYnktdmFsdWUgb24gbW9zdCBwbGF0 Zm9ybXMuCi0JICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3Qo KSk7CisKIAl0dXBsZXNfZm9yX2NoZWNrID0gIHR1cGxlc3RvcmVfYmVnaW5fZGF0dW0oSU5UOE9J RCwgZmFsc2UsIGZhbHNlLCBzdG9yZV93b3JrX21lbV9wYXJ0KTsKIAorCVBvcEFjdGl2ZVNuYXBz aG90KCk7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCisJQXNzZXJ0KCFIYXZlUmVn aXN0ZXJlZE9yQWN0aXZlU25hcHNob3QoKSk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKKwogCS8qCiAJICogc2FuaXR5IGNoZWNrcwogCSAqLwpAQCAtMjA4 NCw2ICsyMDg5LDI5IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBS ZWxhdGlvbiwKIAogCXN0YXRlLT50dXBsZXNvcnQgPSBhdXhTdGF0ZS0+dHVwbGVzb3J0ID0gTlVM TDsKIAorCS8qCisJICogTm93IHRha2UgdGhlIGZpcnN0IHNuYXBzaG90IHRoYXQgd2lsbCBiZSB1 c2VkIGJ5IHRvIGZpbHRlciBjYW5kaWRhdGUKKwkgKiB0dXBsZXMuIFdlIGFyZSBnb2luZyB0byBy ZXBsYWNlIGl0IGJ5IG5ld2VyIHNuYXBzaG90IGV2ZXJ5IHNvIG9mdGVuCisJICogdG8gcHJvcGFn YXRlIGhvcml6b24uCisJICoKKwkgKiBCZXdhcmUhICBUaGVyZSBtaWdodCBzdGlsbCBiZSBzbmFw c2hvdHMgaW4gdXNlIHRoYXQgdHJlYXQgc29tZSB0cmFuc2FjdGlvbgorCSAqIGFzIGluLXByb2dy ZXNzIHRoYXQgb3VyIHRlbXBvcmFyeSBzbmFwc2hvdCB0cmVhdHMgYXMgY29tbWl0dGVkLgorCSAq CisJICogSWYgc3VjaCBhIHJlY2VudGx5LWNvbW1pdHRlZCB0cmFuc2FjdGlvbiBkZWxldGVkIHR1 cGxlcyBpbiB0aGUgdGFibGUsCisJICogd2Ugd2lsbCBub3QgaW5jbHVkZSB0aGVtIGluIHRoZSBp bmRleDsgeWV0IHRob3NlIHRyYW5zYWN0aW9ucyB3aGljaAorCSAqIHNlZSB0aGUgZGVsZXRpbmcg b25lIGFzIHN0aWxsLWluLXByb2dyZXNzIHdpbGwgZXhwZWN0IHN1Y2ggdHVwbGVzIHRvCisJICog YmUgdGhlcmUgb25jZSB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KKwkgKgorCSAqIFdlIHNv bHZlIHRoaXMgYnkgd2FpdGluZyBmb3IgYWxsIGVuZGFuZ2VyZWQgdHJhbnNhY3Rpb25zIHRvIGV4 aXQgYmVmb3JlCisJICogd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQsIGZvciB0aGF0IHJlYXNv biBsaW1pdFhtaW4gaXMgc3VwcG9ydGVkLgorCSAqCisJICogV2UgYWxzbyBzZXQgQWN0aXZlU25h cHNob3QgdG8gdGhpcyBzbmFwLCBzaW5jZSBmdW5jdGlvbnMgaW4gaW5kZXhlcyBtYXkKKwkgKiBu ZWVkIGEgc25hcHNob3QuCisJICovCisJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExh dGVzdFNuYXBzaG90KCkpOworCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJbGltaXRY bWluID0gc25hcHNob3QtPnhtaW47CisKIAllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7 CiAJZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CiAJc2xvdCA9IE1h a2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKGhlYXBSZWxhdGlvbiksCkBA IC0yMTE3LDYgKzIxNDUsNyBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBo ZWFwUmVsYXRpb24sCiAKIAkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAkJ YmxvY2tfbnVtYmVyID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmKTsKKwkJcGFnZV9yZWFkX2Nv dW50ZXIrKzsKIAogCQlpID0gMDsKIAkJd2hpbGUgKChvZmYgPSB0dXBsZXNbaV0pICE9IEludmFs aWRPZmZzZXROdW1iZXIpCkBAIC0yMTcyLDYgKzIyMDEsMjAgQEAgaGVhcGFtX2luZGV4X3ZhbGlk YXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQl9CiAKIAkJUmVsZWFzZUJ1ZmZlcihi dWYpOworI2RlZmluZSBWQUxJREFURV9JTkRFWF9SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSA0 MDk2CisJCWlmIChwYWdlX3JlYWRfY291bnRlciAlIFZBTElEQVRFX0lOREVYX1JFU0VUX1NOQVBT SE9UX0VBQ0hfTl9QQUdFID09IDApCisJCXsKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQlV bnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOworCQkJLyogdG8gbWFrZSBzdXJlIHdlIHByb3Bh Z2F0ZSB4bWluICovCisJCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJCQlBc3NlcnQo IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCisJCQlzbmFwc2hvdCA9IFJl Z2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJCQlQdXNoQWN0aXZlU25hcHNo b3Qoc25hcHNob3QpOworCQkJLyogeG1pbiBzaG91bGQgbm90IGdvIGJhY2t3YXJkcywgYnV0IGp1 c3QgZm9yIHRoZSBjYXNlKi8KKwkJCWxpbWl0WG1pbiA9IFRyYW5zYWN0aW9uSWROZXdlcihsaW1p dFhtaW4sIHNuYXBzaG90LT54bWluKTsKKwkJfQogCX0KIAogCUV4ZWNEcm9wU2luZ2xlVHVwbGVU YWJsZVNsb3Qoc2xvdCk7CkBAIC0yMTgxLDkgKzIyMjQsMjEgQEAgaGVhcGFtX2luZGV4X3ZhbGlk YXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXJlYWRfc3RyZWFtX2VuZChyZWFkX3N0 cmVhbSk7CiAJdHVwbGVzdG9yZV9lbmQodHVwbGVzX2Zvcl9jaGVjayk7CiAKKwkvKgorCSAqIERy b3AgdGhlIGxhdGVzdCBzbmFwc2hvdC4gIFdlIG11c3QgZG8gdGhpcyBiZWZvcmUgd2FpdGluZyBv dXQgb3RoZXIKKwkgKiBzbmFwc2hvdCBob2xkZXJzLCBlbHNlIHdlIHdpbGwgZGVhZGxvY2sgYWdh aW5zdCBvdGhlciBwcm9jZXNzZXMgYWxzbworCSAqIGRvaW5nIENSRUFURSBJTkRFWCBDT05DVVJS RU5UTFksIHdoaWNoIHdvdWxkIHNlZSBvdXIgc25hcHNob3QgYXMgb25lCisJICogdGhleSBtdXN0 IHdhaXQgZm9yLgorCSAqLworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJVW5yZWdpc3RlclNuYXBz aG90KHNuYXBzaG90KTsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KE15 UHJvYy0+eG1pbiA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CiAJLyogVGhlc2UgbWF5IGhhdmUg YmVlbiBwb2ludGluZyB0byB0aGUgbm93LWdvbmUgZXN0YXRlICovCiAJaW5kZXhJbmZvLT5paV9F eHByZXNzaW9uc1N0YXRlID0gTklMOwogCWluZGV4SW5mby0+aWlfUHJlZGljYXRlU3RhdGUgPSBO VUxMOworCisJcmV0dXJuIGxpbWl0WG1pbjsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKaW5kZXggMDhhM2NiMjgzNDguLjI1MGQ5ZDU5YjlhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHNvcnQuYwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4o UmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwK IAkgKiBkZWFkIHR1cGxlcykgd29uJ3QgZ2V0IHZlcnkgZnVsbCwgc28gd2UgZ2l2ZSBpdCBvbmx5 IHdvcmtfbWVtLgogCSAqCiAJICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkIGRlYWQgdHVw bGVzIGFyZSBub3QgbmVlZCB0byBiZSBwdXQgaW50byBpbmRleAotCSAqIHNpbmNlIHdlIHdhaXQg Zm9yIGFsbCBzbmFwc2hvdHMgb2xkZXIgdGhhbiByZWZlcmVuY2Ugc25hcHNob3QgZHVyaW5nIHRo ZQorCSAqIHNpbmNlIHdlIHdhaXQgZm9yIGFsbCBzbmFwc2hvdHMgb2xkZXIgdGhhbiBsYXRlc3Qg c25hcHNob3QgZHVyaW5nIHRoZQogCSAqIHZhbGlkYXRpb24gcGhhc2UuCiAJICovCiAJaWYgKGlu ZGV4SW5mby0+aWlfVW5pcXVlICYmICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwppbmRleCAyNjc4ZjdhYjc4Mi4uOTY4YThmNzcyNWMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpAQCAtMTkxLDE0ICsxOTEsMTYg QEAgdmFjdXVtTGVhZlBhZ2Uoc3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMsIFJlbGF0aW9uIGluZGV4 LCBCdWZmZXIgYnVmZmVyLAogCQkJICogQWRkIHRhcmdldCBUSUQgdG8gcGVuZGluZyBsaXN0IGlm IHRoZSByZWRpcmVjdGlvbiBjb3VsZCBoYXZlCiAJCQkgKiBoYXBwZW5lZCBzaW5jZSBWQUNVVU0g c3RhcnRlZC4gIChJZiB4aWQgaXMgaW52YWxpZCwgYXNzdW1lIGl0CiAJCQkgKiBtdXN0IGhhdmUg aGFwcGVuZWQgYmVmb3JlIFZBQ1VVTSBzdGFydGVkLCBzaW5jZSBSRUlOREVYCi0JCQkgKiBDT05D VVJSRU5UTFkgbG9ja3Mgb3V0IFZBQ1VVTS4pCisJCQkgKiBDT05DVVJSRU5UTFkgbG9ja3Mgb3V0 IFZBQ1VVTSwgaWYgbXlYbWluIGlzIGludmFsaWQgaXQgaXMKKwkJCSAqIHZhbGlkYXRpb24gc2Nh bi4pCiAJCQkgKgogCQkJICogTm90ZTogd2UgY291bGQgbWFrZSBhIHRpZ2h0ZXIgdGVzdCBieSBz ZWVpbmcgaWYgdGhlIHhpZCBpcwogCQkJICogInJ1bm5pbmciIGFjY29yZGluZyB0byB0aGUgYWN0 aXZlIHNuYXBzaG90OyBidXQgc25hcG1nci5jCiAJCQkgKiBkb2Vzbid0IGN1cnJlbnRseSBleHBv cnQgYSBzdWl0YWJsZSBBUEksIGFuZCBpdCdzIG5vdCBlbnRpcmVseQogCQkJICogY2xlYXIgdGhh dCBhIHRpZ2h0ZXIgdGVzdCBpcyB3b3J0aCB0aGUgY3ljbGVzIGFueXdheS4KIAkJCSAqLwotCQkJ aWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzT3JFcXVhbHMoZHQtPnhpZCwgYmRzLT5teVhtaW4pKQor CQkJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChiZHMtPm15WG1pbikgfHwKKwkJCQkJVHJhbnNh Y3Rpb25JZEZvbGxvd3NPckVxdWFscyhkdC0+eGlkLCBiZHMtPm15WG1pbikpCiAJCQkJc3BnQWRk UGVuZGluZ1RJRChiZHMsICZkdC0+cG9pbnRlcik7CiAJCX0KIAkJZWxzZQpAQCAtODA4LDcgKzgx MCw2IEBAIHNwZ3ZhY3V1bXNjYW4oc3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMpCiAJLyogRmluaXNo IHNldHRpbmcgdXAgc3BnQnVsa0RlbGV0ZVN0YXRlICovCiAJaW5pdFNwR2lzdFN0YXRlKCZiZHMt PnNwZ3N0YXRlLCBpbmRleCk7CiAJYmRzLT5wZW5kaW5nTGlzdCA9IE5VTEw7Ci0JYmRzLT5teVht aW4gPSBHZXRBY3RpdmVTbmFwc2hvdCgpLT54bWluOwogCWJkcy0+bGFzdEZpbGxlZEJsb2NrID0g U1BHSVNUX0xBU1RfRklYRURfQkxLTk87CiAKIAkvKgpAQCAtOTU5LDYgKzk2MCwxMCBAQCBzcGdi dWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpz dGF0cywKIAliZHMuc3RhdHMgPSBzdGF0czsKIAliZHMuY2FsbGJhY2sgPSBjYWxsYmFjazsKIAli ZHMuY2FsbGJhY2tfc3RhdGUgPSBjYWxsYmFja19zdGF0ZTsKKwlpZiAoaW5mby0+dmFsaWRhdGVf aW5kZXgpCisJCWJkcy5teVhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwllbHNlCisJCWJk cy5teVhtaW4gPSBHZXRBY3RpdmVTbmFwc2hvdCgpLT54bWluOwogCiAJc3BndmFjdXVtc2Nhbigm YmRzKTsKIApAQCAtOTk5LDYgKzEwMDQsNyBAQCBzcGd2YWN1dW1jbGVhbnVwKEluZGV4VmFjdXVt SW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKIAkJYmRzLnN0YXRzID0g c3RhdHM7CiAJCWJkcy5jYWxsYmFjayA9IGR1bW15X2NhbGxiYWNrOwogCQliZHMuY2FsbGJhY2tf c3RhdGUgPSBOVUxMOworCQliZHMubXlYbWluID0gR2V0QWN0aXZlU25hcHNob3QoKS0+eG1pbjsK IAogCQlzcGd2YWN1dW1zY2FuKCZiZHMpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBiMzc2ODQz MDllMy4uZTIwZDhhNjAzNTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTM1MzUsOCArMzUzNSw5IEBA IEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogaW5zZXJ0IHRo ZWlyIG5ldyB0dXBsZXMgaW50byBpdC4gQXQgdGhlIHNhbWUgbW9tZW50IHdlIGNsZWFyICJpbmRp c3JlYWR5IiBmb3IKICAqIGF1eGlsaWFyeSBpbmRleCwgc2luY2UgaXQgaXMgbm8gbW9yZSByZXF1 aXJlZCB0byBiZSB1cGRhdGVkLgogICoKLSAqIFdlIHRoZW4gdGFrZSBhIG5ldyByZWZlcmVuY2Ug c25hcHNob3QsIGFueSB0dXBsZXMgdGhhdCBhcmUgdmFsaWQgYWNjb3JkaW5nCi0gKiB0byB0aGlz IHNuYXAsIGJ1dCBhcmUgbm90IGluIHRoZSBpbmRleCwgbXVzdCBiZSBhZGRlZCB0byB0aGUgaW5k ZXguCisgKiBXZSB0aGVuIHRha2UgYSBuZXcgc25hcHNob3QsIGFueSB0dXBsZXMgdGhhdCBhcmUg dmFsaWQgYWNjb3JkaW5nCisgKiB0byB0aGlzIHNuYXAsIGJ1dCBhcmUgbm90IGluIHRoZSBpbmRl eCwgbXVzdCBiZSBhZGRlZCB0byB0aGUgaW5kZXguIEluCisgKiBvcmRlciB0byBwcm9wYWdhdGUg eG1pbiB3ZSByZXNldCB0aGF0IHNuYXBzaG90IGV2ZXJ5IGZldyBzbyBvZnRlbi4KICAqIChBbnkg dHVwbGVzIGNvbW1pdHRlZCBsaXZlIGFmdGVyIHRoZSBzbmFwIHdpbGwgYmUgaW5zZXJ0ZWQgaW50 byB0aGUKICAqIGluZGV4IGJ5IHRoZWlyIG9yaWdpbmF0aW5nIHRyYW5zYWN0aW9uLiAgQW55IHR1 cGxlcyBjb21taXR0ZWQgZGVhZCBiZWZvcmUKICAqIHRoZSBzbmFwIG5lZWQgbm90IGJlIGluZGV4 ZWQsIGJlY2F1c2Ugd2Ugd2lsbCB3YWl0IG91dCBhbGwgdHJhbnNhY3Rpb25zCkBAIC0zNTQ5LDcg KzM1NTAsNyBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAq IFRJRHMgb2YgYm90aCBhdXhpbGlhcnkgYW5kIHRhcmdldCBpbmRleGVzLCBhbmQgZG9pbmcgYSAi bWVyZ2Ugam9pbiIgYWdhaW5zdAogICogdGhlIFRJRCBsaXN0cyB0byBzZWUgd2hpY2ggdHVwbGVz IGZyb20gYXV4aWxpYXJ5IGluZGV4IGFyZSBtaXNzaW5nIGZyb20gdGhlCiAgKiB0YXJnZXQgaW5k ZXguICBUaHVzIHdlIHdpbGwgZW5zdXJlIHRoYXQgYWxsIHR1cGxlcyB2YWxpZCBhY2NvcmRpbmcg dG8gdGhlCi0gKiByZWZlcmVuY2Ugc25hcHNob3QgYXJlIGluIHRoZSBpbmRleC4gTm90aWNlIHdl IG5lZWQgdG8gZG8gYnVsa2RlbGV0ZSBpbiB0aGUKKyAqIGxhdGVzdCBzbmFwc2hvdCBhcmUgaW4g dGhlIGluZGV4LiBOb3RpY2Ugd2UgbmVlZCB0byBkbyBidWxrZGVsZXRlIGluIHRoZQogICogcGFy dGljdWxhciBvcmRlcjogYXV4aWxpYXJ5IGZpcnN0LCB0YXJnZXQgbGFzdC4KICAqCiAgKiBCdWls ZGluZyBhIHVuaXF1ZSBpbmRleCB0aGlzIHdheSBpcyB0cmlja3k6IHdlIG1pZ2h0IHRyeSB0byBp bnNlcnQgYQpAQCAtMzU3MCwxMyArMzU3MSwxNCBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwKICAqCiAgKiBBbHNvLCBzb21lIGFjdGlvbnMgdG8gY29uY3VycmVu dCBkcm9wIHRoZSBhdXhpbGlhcnkgaW5kZXggYXJlIHBlcmZvcm1lZC4KICAqLwotdm9pZAotdmFs aWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFw c2hvdCBzbmFwc2hvdCkKK1RyYW5zYWN0aW9uSWQKK3ZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQs IE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCkKIHsKIAlSZWxhdGlvbgloZWFwUmVsYXRpb24s CiAJCQkJaW5kZXhSZWxhdGlvbiwKIAkJCQlhdXhJbmRleFJlbGF0aW9uOwogCUluZGV4SW5mbyAg KmluZGV4SW5mbzsKKwlUcmFuc2FjdGlvbklkIGxpbWl0WG1pbjsKIAlJbmRleFZhY3V1bUluZm8g aXZpbmZvLCBhdXhpdmluZm87CiAJVmFsaWRhdGVJbmRleFN0YXRlIHN0YXRlLCBhdXhTdGF0ZTsK IAlPaWQJCQlzYXZlX3VzZXJpZDsKQEAgLTM2MjYsOCArMzYyOCwxMiBAQCB2YWxpZGF0ZV9pbmRl eChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQsIFNuYXBzaG90IHNuYXBz aG90KQogCSAqIEZldGNoIGluZm8gbmVlZGVkIGZvciBpbmRleF9pbnNlcnQuICAoWW91IG1pZ2h0 IHRoaW5rIHRoaXMgc2hvdWxkIGJlCiAJICogcGFzc2VkIGluIGZyb20gRGVmaW5lSW5kZXgsIGJ1 dCBpdHMgY29weSBpcyBsb25nIGdvbmUgZHVlIHRvIGhhdmluZwogCSAqIGJlZW4gYnVpbHQgaW4g YSBwcmV2aW91cyB0cmFuc2FjdGlvbi4pCisJICoKKwkgKiBXZSBtaWdodCBuZWVkIHNuYXBzaG90 IGZvciBpbmRleCBleHByZXNzaW9ucyBvciBwcmVkaWNhdGVzLgogCSAqLworCVB1c2hBY3RpdmVT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCWluZGV4SW5mbyA9IEJ1aWxkSW5k ZXhJbmZvKGluZGV4UmVsYXRpb24pOworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkvKiBtYXJr IGJ1aWxkIGlzIGNvbmN1cnJlbnQganVzdCBmb3IgY29uc2lzdGVuY3kgKi8KIAlpbmRleEluZm8t PmlpX0NvbmN1cnJlbnQgPSB0cnVlOwpAQCAtMzY2Myw2ICszNjY5LDkgQEAgdmFsaWRhdGVfaW5k ZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFwc2hvdCBzbmFw c2hvdCkKIAkJCQkJCQkJCQkgICBOVUxMLCBUVVBMRVNPUlRfTk9ORSk7CiAJYXV4U3RhdGUuaHR1 cHMgPSBhdXhTdGF0ZS5pdHVwcyA9IGF1eFN0YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwogCisJLyog dHVwbGVzb3J0X2JlZ2luX2RhdHVtIG1heSByZXF1aXJlIGNhdGFsb2cgc25hcHNob3QgKi8KKwlJ bnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisKIAkodm9pZCkgaW5kZXhfYnVsa19kZWxldGUo JmF1eGl2aW5mbywgTlVMTCwKIAkJCQkJCQkgdmFsaWRhdGVfaW5kZXhfY2FsbGJhY2ssICZhdXhT dGF0ZSk7CiAJLyogSWYgYXV4IGluZGV4IGlzIGVtcHR5LCBtZXJnZSBtYXkgYmUgc2tpcHBlZCAq LwpAQCAtMzY5Nyw2ICszNzA2LDkgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGlu ZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAkJCQkJCQkJCQkJTlVM TCwgVFVQTEVTT1JUX05PTkUpOwogCXN0YXRlLmh0dXBzID0gc3RhdGUuaXR1cHMgPSBzdGF0ZS50 dXBzX2luc2VydGVkID0gMDsKIAorCS8qIHR1cGxlc29ydF9iZWdpbl9kYXR1bSBtYXkgcmVxdWly ZSBjYXRhbG9nIHNuYXBzaG90ICovCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCiAJ LyogYW1idWxrZGVsZXRlIHVwZGF0ZXMgcHJvZ3Jlc3MgbWV0cmljcyAqLwogCSh2b2lkKSBpbmRl eF9idWxrX2RlbGV0ZSgmaXZpbmZvLCBOVUxMLAogCQkJCQkJCSB2YWxpZGF0ZV9pbmRleF9jYWxs YmFjaywgJnN0YXRlKTsKQEAgLTM3MTYsMTkgKzM3MjgsMjQgQEAgdmFsaWRhdGVfaW5kZXgoT2lk IGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkK IAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSgzLCBwcm9ncmVzc19pbmRleCwg cHJvZ3Jlc3NfdmFscyk7CiAJfQogCXR1cGxlc29ydF9wZXJmb3Jtc29ydChzdGF0ZS50dXBsZXNv cnQpOworCS8qIHR1cGxlc29ydF9wZXJmb3Jtc29ydCBtYXkgcmVxdWlyZSBjYXRhbG9nIHNuYXBz aG90ICovCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCiAJdHVwbGVzb3J0X3BlcmZv cm1zb3J0KGF1eFN0YXRlLnR1cGxlc29ydCk7CisJLyogdHVwbGVzb3J0X3BlcmZvcm1zb3J0IG1h eSByZXF1aXJlIGNhdGFsb2cgc25hcHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90 KCk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8q CiAJICogTm93IG1lcmdlIGJvdGggaW5kZXhlcwogCSAqLwogCXBnc3RhdF9wcm9ncmVzc191cGRh dGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFX1ZBTElEQVRFX0lEWE1FUkdFKTsKLQl0YWJsZV9pbmRleF92YWxpZGF0ZV9z Y2FuKGhlYXBSZWxhdGlvbiwKLQkJCQkJCQkgIGluZGV4UmVsYXRpb24sCi0JCQkJCQkJICBpbmRl eEluZm8sCi0JCQkJCQkJICBzbmFwc2hvdCwKLQkJCQkJCQkgICZzdGF0ZSwKLQkJCQkJCQkgICZh dXhTdGF0ZSk7CisJbGltaXRYbWluID0gdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbihoZWFwUmVs YXRpb24sCisJCQkJCQkJCQkJICBpbmRleFJlbGF0aW9uLAorCQkJCQkJCQkJCSAgaW5kZXhJbmZv LAorCQkJCQkJCQkJCSAgJnN0YXRlLAorCQkJCQkJCQkJCSAgJmF1eFN0YXRlKTsKIAogCS8qIFR1 cGxlIHNvcnQgY2xvc2VkIGJ5IHRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4gKi8KIAlBc3NlcnQo c3RhdGUudHVwbGVzb3J0ID09IE5VTEwgJiYgYXV4U3RhdGUudHVwbGVzb3J0ID09IE5VTEwpOwpA QCAtMzc1MSw2ICszNzY4LDkgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4 SWQsIE9pZCBhdXhJbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAlpbmRleF9jbG9zZShhdXhJ bmRleFJlbGF0aW9uLCBOb0xvY2spOwogCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9j ayk7CiAJdGFibGVfY2xvc2UoaGVhcFJlbGF0aW9uLCBOb0xvY2spOworCisJQXNzZXJ0KCFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlyZXR1cm4gbGltaXRYbWluOwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCA3YTQyZjJkODE1YS4uZGQyODBhMzhj MzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC01OTIsNyArNTkyLDYgQEAgRGVmaW5l SW5kZXgoT2lkIHRhYmxlSWQsCiAJTG9ja1JlbElkCWhlYXByZWxpZDsKIAlMT0NLVEFHCQloZWFw bG9ja3RhZzsKIAlMT0NLTU9ERQlsb2NrbW9kZTsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlPaWQJ CQlyb290X3NhdmVfdXNlcmlkOwogCWludAkJCXJvb3Rfc2F2ZV9zZWNfY29udGV4dDsKIAlpbnQJ CQlyb290X3NhdmVfbmVzdGxldmVsOwpAQCAtMTc5NCwzMiArMTc5MywxMSBAQCBEZWZpbmVJbmRl eChPaWQgdGFibGVJZCwKIAkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9y ZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCiAJaWYgKHNhZmVfaW5kZXgpCiAJCXNldF9pbmRl eHNhZmVfcHJvY2ZsYWdzKCk7Ci0KLQkvKgotCSAqIE5vdyB0YWtlIHRoZSAicmVmZXJlbmNlIHNu YXBzaG90IiB0aGF0IHdpbGwgYmUgdXNlZCBieSB2YWxpZGF0ZV9pbmRleCgpCi0JICogdG8gZmls dGVyIGNhbmRpZGF0ZSB0dXBsZXMuICBCZXdhcmUhICBUaGVyZSBtaWdodCBzdGlsbCBiZSBzbmFw c2hvdHMgaW4KLQkgKiB1c2UgdGhhdCB0cmVhdCBzb21lIHRyYW5zYWN0aW9uIGFzIGluLXByb2dy ZXNzIHRoYXQgb3VyIHJlZmVyZW5jZQotCSAqIHNuYXBzaG90IHRyZWF0cyBhcyBjb21taXR0ZWQu ICBJZiBzdWNoIGEgcmVjZW50bHktY29tbWl0dGVkIHRyYW5zYWN0aW9uCi0JICogZGVsZXRlZCB0 dXBsZXMgaW4gdGhlIHRhYmxlLCB3ZSB3aWxsIG5vdCBpbmNsdWRlIHRoZW0gaW4gdGhlIGluZGV4 OyB5ZXQKLQkgKiB0aG9zZSB0cmFuc2FjdGlvbnMgd2hpY2ggc2VlIHRoZSBkZWxldGluZyBvbmUg YXMgc3RpbGwtaW4tcHJvZ3Jlc3Mgd2lsbAotCSAqIGV4cGVjdCBzdWNoIHR1cGxlcyB0byBiZSB0 aGVyZSBvbmNlIHdlIG1hcmsgdGhlIGluZGV4IGFzIHZhbGlkLgotCSAqCi0JICogV2Ugc29sdmUg dGhpcyBieSB3YWl0aW5nIGZvciBhbGwgZW5kYW5nZXJlZCB0cmFuc2FjdGlvbnMgdG8gZXhpdCBi ZWZvcmUKLQkgKiB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KLQkgKgotCSAqIFdlIGFsc28g c2V0IEFjdGl2ZVNuYXBzaG90IHRvIHRoaXMgc25hcCwgc2luY2UgZnVuY3Rpb25zIGluIGluZGV4 ZXMgbWF5Ci0JICogbmVlZCBhIHNuYXBzaG90LgotCSAqLwotCXNuYXBzaG90ID0gUmVnaXN0ZXJT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCVB1c2hBY3RpdmVTbmFwc2hvdChz bmFwc2hvdCk7CiAJLyoKIAkgKiBNZXJnZSBjb250ZW50IG9mIGF1eGlsaWFyeSBhbmQgdGFyZ2V0 IGluZGV4ZXMgLSBpbnNlcnQgYW55IG1pc3NpbmcgaW5kZXggZW50cmllcy4KIAkgKi8KLQl2YWxp ZGF0ZV9pbmRleCh0YWJsZUlkLCBpbmRleFJlbGF0aW9uSWQsIGF1eEluZGV4UmVsYXRpb25JZCwg c25hcHNob3QpOwotCWxpbWl0WG1pbiA9IHNuYXBzaG90LT54bWluOworCWxpbWl0WG1pbiA9IHZh bGlkYXRlX2luZGV4KHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCwgYXV4SW5kZXhSZWxhdGlvbklk KTsKIAotCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0JVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90 KTsKIAkvKgogCSAqIFRoZSBzbmFwc2hvdCBzdWJzeXN0ZW0gY291bGQgc3RpbGwgY29udGFpbiBy ZWdpc3RlcmVkIHNuYXBzaG90cyB0aGF0CiAJICogYXJlIGhvbGRpbmcgYmFjayBvdXIgcHJvY2Vz cydzIGFkdmVydGlzZWQgeG1pbjsgaW4gcGFydGljdWxhciwgaWYKQEAgLTE4NDEsOCArMTgxOSw4 IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCS8qCiAJICogVGhlIGluZGV4IGlzIG5vdyB2 YWxpZCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBjb250YWlucyBhbGwgY3VycmVudGx5CiAJICogaW50 ZXJlc3RpbmcgdHVwbGVzLiAgQnV0IHNpbmNlIGl0IG1pZ2h0IG5vdCBjb250YWluIHR1cGxlcyBk ZWxldGVkIGp1c3QKLQkgKiBiZWZvcmUgdGhlIHJlZmVyZW5jZSBzbmFwIHdhcyB0YWtlbiwgd2Ug aGF2ZSB0byB3YWl0IG91dCBhbnkKLQkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9s ZGVyIHNuYXBzaG90cy4KKwkgKiBiZWZvcmUgdGhlIGxhc3Qgc25hcHNob3QgZHVyaW5nIHZhbGlk YXRpbmcgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQKKwkgKiBvdXQgYW55IHRyYW5zYWN0aW9u cyB0aGF0IG1pZ2h0IGhhdmUgb2xkZXIgc25hcHNob3RzLgogCSAqLwogCUlOSkVDVElPTl9QT0lO VCgiZGVmaW5lX2luZGV4X2JlZm9yZV9zZXRfdmFsaWQiLCBOVUxMKTsKIAlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKQEAgLTQzODIsNyArNDM2 MCw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3Rt dCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJewogCQlSZWluZGV4SW5kZXhJbmZvICpu ZXdpZHggPSBsZmlyc3QobGMpOwogCQlUcmFuc2FjdGlvbklkIGxpbWl0WG1pbjsKLQkJU25hcHNo b3QJc25hcHNob3Q7CiAKIAkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIApAQCAtNDM5Nywx MyArNDM3NCw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCWlmIChuZXdpZHgtPnNhZmUp CiAJCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwogCi0JCS8qCi0JCSAqIFRha2UgdGhlICJy ZWZlcmVuY2Ugc25hcHNob3QiIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHZhbGlkYXRlX2luZGV4KCkK LQkJICogdG8gZmlsdGVyIGNhbmRpZGF0ZSB0dXBsZXMuCi0JCSAqLwotCQlzbmFwc2hvdCA9IFJl Z2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJUHVzaEFjdGl2ZVNu YXBzaG90KHNuYXBzaG90KTsKLQogCQkvKgogCQkgKiBVcGRhdGUgcHJvZ3Jlc3MgZm9yIHRoZSBp bmRleCB0byBidWlsZCwgd2l0aCB0aGUgY29ycmVjdCBwYXJlbnQKIAkJICogdGFibGUgaW52b2x2 ZWQuCkBAIC00NDE1LDE2ICs0Mzg1LDggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNv bnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJcHJv Z3Jlc3NfdmFsc1szXSA9IG5ld2lkeC0+YW1JZDsKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9t dWx0aV9wYXJhbSg0LCBwcm9ncmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7CiAKLQkJdmFsaWRh dGVfaW5kZXgobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmluZGV4SWQsIG5ld2lkeC0+YXV4SW5k ZXhJZCwgc25hcHNob3QpOwotCi0JCS8qCi0JCSAqIFdlIGNhbiBub3cgZG8gYXdheSB3aXRoIG91 ciBhY3RpdmUgc25hcHNob3QsIHdlIHN0aWxsIG5lZWQgdG8gc2F2ZQotCQkgKiB0aGUgeG1pbiBs aW1pdCB0byB3YWl0IGZvciBvbGRlciBzbmFwc2hvdHMuCi0JCSAqLwotCQlsaW1pdFhtaW4gPSBz bmFwc2hvdC0+eG1pbjsKLQotCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCQlVbnJlZ2lzdGVyU25h cHNob3Qoc25hcHNob3QpOworCQlsaW1pdFhtaW4gPSB2YWxpZGF0ZV9pbmRleChuZXdpZHgtPnRh YmxlSWQsIG5ld2lkeC0+aW5kZXhJZCwgbmV3aWR4LT5hdXhJbmRleElkKTsKKwkJQXNzZXJ0KCFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCQkvKgogCQkgKiBUbyBlbnN1 cmUgbm8gZGVhZGxvY2tzLCB3ZSBtdXN0IGNvbW1pdCBhbmQgc3RhcnQgeWV0IGFub3RoZXIKQEAg LTQ0MzcsNyArNDM5OSw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWlu ZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCS8qCiAJCSAqIFRo ZSBpbmRleCBpcyBub3cgdmFsaWQgaW4gdGhlIHNlbnNlIHRoYXQgaXQgY29udGFpbnMgYWxsIGN1 cnJlbnRseQogCQkgKiBpbnRlcmVzdGluZyB0dXBsZXMuICBCdXQgc2luY2UgaXQgbWlnaHQgbm90 IGNvbnRhaW4gdHVwbGVzIGRlbGV0ZWQKLQkJICoganVzdCBiZWZvcmUgdGhlIHJlZmVyZW5jZSBz bmFwIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKKwkJICoganVzdCBiZWZvcmUg dGhlIGxhdGVzdCBzbmFwIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKIAkJICog dHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgaGF2ZSBvbGRlciBzbmFwc2hvdHMuCiAJCSAqCiAJCSAq IEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IG9yIFhpZCBpbiB0aGlzIHRyYW5zYWN0 aW9uLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggNmM0M2Y0NzgxNGQuLmQzOGE2OTYxMDM1IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy90YWJsZWFtLmgKQEAgLTcwOCwxMCArNzA4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVB bVJvdXRpbmUKIAkJCQkJCQkJCQkgICBUYWJsZVNjYW5EZXNjIHNjYW4pOwogCiAJLyogc2VlIHRh YmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4gZm9yIHJlZmVyZW5jZSBhYm91dCBwYXJhbWV0ZXJzICov Ci0Jdm9pZCAJCSgqaW5kZXhfdmFsaWRhdGVfc2NhbikgKFJlbGF0aW9uIHRhYmxlX3JlbCwKKwlU cmFuc2FjdGlvbklkIAkJKCppbmRleF92YWxpZGF0ZV9zY2FuKSAoUmVsYXRpb24gdGFibGVfcmVs LAogCQkJCQkJCQkJCQkJUmVsYXRpb24gaW5kZXhfcmVsLAogCQkJCQkJCQkJCQkJc3RydWN0IElu ZGV4SW5mbyAqaW5kZXhfaW5mbywKLQkJCQkJCQkJCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJ CQkJCQkJCQkJc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUsCiAJCQkJCQkJCQkJCQlz dHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICphdXhfc3RhdGUpOwogCkBAIC0xODI1LDE4ICsxODI0 LDE2IEBAIHRhYmxlX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gdGFibGVfcmVsLAog ICogTm90ZTogaXQgaXMgcmVzcG9uc2liaWxpdHkgb2YgdGhhdCBmdW5jdGlvbiB0byBjbG9zZSBz b3J0c3RhdGVzIGluCiAgKiBib3RoIGBzdGF0ZWAgYW5kIGBhdXhzdGF0ZWAuCiAgKi8KLXN0YXRp YyBpbmxpbmUgdm9pZAorc3RhdGljIGlubGluZSBUcmFuc2FjdGlvbklkCiB0YWJsZV9pbmRleF92 YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKIAkJCQkJCSAgUmVsYXRpb24gaW5kZXhf cmVsLAogCQkJCQkJICBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleF9pbmZvLAotCQkJCQkJICBTbmFw c2hvdCBzbmFwc2hvdCwKIAkJCQkJCSAgc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUs CiAJCQkJCQkgIHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKmF1eHN0YXRlKQogewogCXJldHVy biB0YWJsZV9yZWwtPnJkX3RhYmxlYW0tPmluZGV4X3ZhbGlkYXRlX3NjYW4odGFibGVfcmVsLAog CQkJCQkJCQkJCQkJCSAgaW5kZXhfcmVsLAogCQkJCQkJCQkJCQkJCSAgaW5kZXhfaW5mbywKLQkJ CQkJCQkJCQkJCQkgIHNuYXBzaG90LAogCQkJCQkJCQkJCQkJCSAgc3RhdGUsCiAJCQkJCQkJCQkJ CQkJICBhdXhzdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNh bS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaAppbmRleCA3ZDgyY2QyZWI1Ni4uMTVl MzQ1YzdhMTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaApAQCAtMzU1LDYgKzM1NSwyMSBAQCBOb3JtYWxU cmFuc2FjdGlvbklkT2xkZXIoVHJhbnNhY3Rpb25JZCBhLCBUcmFuc2FjdGlvbklkIGIpCiAJcmV0 dXJuIGI7CiB9CiAKKy8qIHJldHVybiB0aGUgbmV3ZXIgb2YgdGhlIHR3byBJRHMgKi8KK3N0YXRp YyBpbmxpbmUgVHJhbnNhY3Rpb25JZAorVHJhbnNhY3Rpb25JZE5ld2VyKFRyYW5zYWN0aW9uSWQg YSwgVHJhbnNhY3Rpb25JZCBiKQoreworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoYSkpCisJ CXJldHVybiBiOworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChiKSkKKwkJcmV0dXJuIGE7 CisKKwlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MoYSwgYikpCisJCXJldHVybiBhOworCXJldHVy biBiOworfQorCiAvKiByZXR1cm4gdGhlIG5ld2VyIG9mIHRoZSB0d28gSURzICovCiBzdGF0aWMg aW5saW5lIEZ1bGxUcmFuc2FjdGlvbklkCiBGdWxsVHJhbnNhY3Rpb25JZE5ld2VyKEZ1bGxUcmFu c2FjdGlvbklkIGEsIEZ1bGxUcmFuc2FjdGlvbklkIGIpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKaW5kZXggZDUx YjRlOGNkMTMuLjZjNzgwNjgxOTY3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2lu ZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCkBAIC0xNTIsNyArMTUyLDcg QEAgZXh0ZXJuIHZvaWQgaW5kZXhfYnVpbGQoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJ Ym9vbCBpc3JlaW5kZXgsCiAJCQkJCQlib29sIHBhcmFsbGVsKTsKIAotZXh0ZXJuIHZvaWQgdmFs aWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFw c2hvdCBzbmFwc2hvdCk7CitleHRlcm4gVHJhbnNhY3Rpb25JZCB2YWxpZGF0ZV9pbmRleChPaWQg aGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQpOwogCiBleHRlcm4gdm9pZCBpbmRl eF9zZXRfc3RhdGVfZmxhZ3MoT2lkIGluZGV4SWQsIEluZGV4U3RhdGVGbGFnc0FjdGlvbiBhY3Rp b24pOwogCi0tIAoyLjQzLjAKCg== --00000000000027fe8906381ae2a2 Content-Type: application/x-patch; name="v21-0010-Optimize-auxiliary-index-handling.patch" Content-Disposition: attachment; filename="v21-0010-Optimize-auxiliary-index-handling.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8uq2 RnJvbSA3ZDM4ODlhMTBiNzg5ZGJkYTk5ZTUyY2MzYzlmZmM1Mzg4NmE0ZGU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAzMCBEZWMgMjAyNCAxNjozNzoxMiArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIxIDEwLzEyXSBPcHRpbWl6ZSBhdXhpbGlhcnkgaW5kZXggaGFuZGxpbmcKTUlNRS1W ZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRl bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClNraXAgdW5uZWNlc3NhcnkgY29tcHV0YXRpb25z IGZvciBhdXhpbGlhcnkgaW5kaWNlcyBieToKLSBpbiB0aGUgaW5kZXjigJBpbnNlcnQgcGF0aCwg ZGV0ZWN0IGF1eGlsaWFyeSBpbmRleGVzIGFuZCBieXBhc3MgRGF0dW0gdmFsdWUgY29tcHV0YXRp b24KLSBzZXQgaW5kZXhVbmNoYW5nZWQ9ZmFsc2UgZm9yIGF1eGlsaWFyeSBpbmRpY2VzIHRvIGF2 b2lkIHJlZHVuZGFudCBjaGVja3MKClRoZXNlIG9wdGltaXphdGlvbnMgcmVkdWNlIG92ZXJoZWFk IGR1cmluZyBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMuCi0tLQogc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jICAgICAgICAgfCAxMSArKysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0luZGV4aW5nLmMgfCAxMSArKysrKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBp bnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA5N2U1ZDJk NjhhYS4uYjM3Njg0MzA5ZTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTI5MzMsNiArMjkzMywxNyBA QCBGb3JtSW5kZXhEYXR1bShJbmRleEluZm8gKmluZGV4SW5mbywKIAlMaXN0Q2VsbCAgICppbmRl eHByX2l0ZW07CiAJaW50CQkJaTsKIAorCS8qIEF1eGlsaWFyeSBpbmRleCBkb2VzIG5vdCBuZWVk IGFueSB2YWx1ZXMgdG8gYmUgY29tcHV0ZWQgKi8KKwlpZiAodW5saWtlbHkoaW5kZXhJbmZvLT5p aV9BdXhpbGlhcnkpKQorCXsKKwkJZm9yIChpID0gMDsgaSA8IGluZGV4SW5mby0+aWlfTnVtSW5k ZXhBdHRyczsgaSsrKQorCQl7CisJCQl2YWx1ZXNbaV0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7 CisJCQlpc251bGxbaV0gPSB0cnVlOworCQl9CisJCXJldHVybjsKKwl9CisKIAlpZiAoaW5kZXhJ bmZvLT5paV9FeHByZXNzaW9ucyAhPSBOSUwgJiYKIAkJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9u c1N0YXRlID09IE5JTCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj SW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmluZGV4IDQ5 OWNiYTE0NWRkLi5jOGI1MWUyNzI1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMK QEAgLTQ0MCwxMSArNDQwLDE0IEBAIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogCQkgKiBUaGVyZSdzIGRlZmluaXRlbHkgZ29pbmcgdG8gYmUgYW4g aW5kZXhfaW5zZXJ0KCkgY2FsbCBmb3IgdGhpcwogCQkgKiBpbmRleC4gIElmIHdlJ3JlIGJlaW5n IGNhbGxlZCBhcyBwYXJ0IG9mIGFuIFVQREFURSBzdGF0ZW1lbnQsCiAJCSAqIGNvbnNpZGVyIGlm IHRoZSAnaW5kZXhVbmNoYW5nZWQnID0gdHJ1ZSBoaW50IHNob3VsZCBiZSBwYXNzZWQuCisJCSAq CisJCSAqIEluIGNhc2Ugb2YgYXV4aWxpYXJ5IGluZGV4IGFsd2F5cyBwYXNzIGZhbHNlIGFzIG9w dGltaXNhdGlvbi4KIAkJICovCi0JCWluZGV4VW5jaGFuZ2VkID0gdXBkYXRlICYmIGluZGV4X3Vu Y2hhbmdlZF9ieV91cGRhdGUocmVzdWx0UmVsSW5mbywKLQkJCQkJCQkJCQkJCQkJCSBlc3RhdGUs Ci0JCQkJCQkJCQkJCQkJCQkgaW5kZXhJbmZvLAotCQkJCQkJCQkJCQkJCQkJIGluZGV4UmVsYXRp b24pOworCQlpbmRleFVuY2hhbmdlZCA9IHVwZGF0ZSAmJiBsaWtlbHkoIWluZGV4SW5mby0+aWlf QXV4aWxpYXJ5KSAmJgorCQkJCQkJCQkJaW5kZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShyZXN1bHRS ZWxJbmZvLAorCQkJCQkJCQkJCQkJCQkJICBlc3RhdGUsCisJCQkJCQkJCQkJCQkJCQkgIGluZGV4 SW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgaW5kZXhSZWxhdGlvbik7CiAKIAkJc2F0aXNmaWVzQ29u c3RyYWludCA9CiAJCQlpbmRleF9pbnNlcnQoaW5kZXhSZWxhdGlvbiwgLyogaW5kZXggcmVsYXRp b24gKi8KLS0gCjIuNDMuMAoK --00000000000027fe8906381ae2a2 Content-Type: application/x-patch; name="v21-0009-Track-and-drop-auxiliary-indexes-in-DROP-REINDEX.patch" Content-Disposition: attachment; filename="v21-0009-Track-and-drop-auxiliary-indexes-in-DROP-REINDEX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8ur3 RnJvbSBiYTczMTU5ZjNmOGU5MWZkN2VhNDQxM2FlOWU1NzU4ZTAwMmViZWFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDozNjozMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIxIDA5LzEyXSBUcmFjayBhbmQgZHJvcCBhdXhpbGlhcnkgaW5kZXhlcyBpbiBEUk9Q L1JFSU5ERVgKCkR1cmluZyBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMsIGF1eGlsaWFyeSBp bmRleGVzIG1heSBiZSBsZWZ0IGFzIG9ycGhhbmVkIG9iamVjdHMgd2hlbiBlcnJvcnMgb2NjdXIg KGp1bmsgYXV4aWxpYXJ5IGluZGV4ZXMpLgoKVGhpcyBwYXRjaCBpbXByb3ZlcyB0aGUgaGFuZGxp bmcgb2Ygc3VjaCBhdXhpbGlhcnkgaW5kZXhlczoKLSBhZGQgYXV4aWxpYXJ5Rm9ySW5kZXhJZCBw YXJhbWV0ZXIgdG8gaW5kZXhfY3JlYXRlKCkgdG8gdHJhY2sgZGVwZW5kZW5jaWVzIGJldHdlZW4g bWFpbiBhbmQgYXV4aWxpYXJ5IGluZGV4ZXMKLSBhdXRvbWF0aWNhbGx5IGRyb3AgYXV4aWxpYXJ5 IGluZGV4ZXMgd2hlbiB0aGUgbWFpbiBpbmRleCBpcyBkcm9wcGVkCi0gZGVsZXRlIGp1bmsgYXV4 aWxpYXJ5IGluZGV4ZXMgcHJvcGVybHkgZHVyaW5nIFJFSU5ERVggb3BlcmF0aW9ucwotLS0KIGRv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgICAgICAgICB8ICAxNCArKy0KIGRvYy9z cmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tl bmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgfCAgNzEgKysrKysrKysrKy0tLS0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMgICAgICAgICAgICB8ICA1NyArKysrKysrKysrKwog c3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jICAgICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICB8ICAzOCArKysrKysrLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgIHwgIDQ4ICsrKysrKysrKy0K IHNyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jICAgICAgICAgICAgICB8ICAgMyArLQogc3Jj L2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9u b2Rlcy9tYWtlZnVuY3MuaCAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCB8IDEwNSArKysrKysrKysrKysrKysrKysrLS0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgICAgICB8ICA1NyArKysrKysrKysr LQogMTQgZmlsZXMgY2hhbmdlZCwgMzY3IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sCmluZGV4IDMwZGIwNzljOGQ4Li5jZjE0ZjQ3NDk0 NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sCkBAIC02NjgsMTAgKzY2OCwxNiBAQCBJ bmRleGVzOgogICAgICJpZHhfY2NhdXgiIHN0aXIgKGNvbCkgSU5WQUxJRAogPC9wcm9ncmFtbGlz dGluZz4KIAotICAgIFRoZSByZWNvbW1lbmRlZCByZWNvdmVyeQotICAgIG1ldGhvZCBpbiBzdWNo IGNhc2VzIGlzIHRvIGRyb3AgdGhlc2UgaW5kZXhlcyBhbmQgdHJ5IGFnYWluIHRvIHBlcmZvcm0K LSAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPi4gKEFub3Ro ZXIgcG9zc2liaWxpdHkgaXMKLSAgICB0byByZWJ1aWxkIHRoZSBpbmRleCB3aXRoIDxjb21tYW5k PlJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPikuCisgICAgVGhlIHJlY29tbWVu ZGVkIHJlY292ZXJ5IG1ldGhvZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRyb3AgdGhlIGluZGV4IHdp dGgKKyAgICA8Y29tbWFuZD5EUk9QIElOREVYPC9jb21tYW5kPi4gVGhlIGF1eGlsaWFyeSBpbmRl eCAoc3VmZml4ZWQgd2l0aAorICAgIDxsaXRlcmFsPmNjYXV4PC9saXRlcmFsPikgd2lsbCBiZSBh dXRvbWF0aWNhbGx5IGRyb3BwZWQgd2hlbiB0aGUgbWFpbgorICAgIGluZGV4IGlzIGRyb3BwZWQu IEFmdGVyIGRyb3BwaW5nIHRoZSBpbmRleGVzLCB5b3UgY2FuIHRyeSBhZ2FpbiB0byBwZXJmb3Jt CisgICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4uIChBbm90 aGVyIHBvc3NpYmlsaXR5IGlzIHRvCisgICAgcmVidWlsZCB0aGUgaW5kZXggd2l0aCA8Y29tbWFu ZD5SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4sCisgICAgd2hpY2ggd2lsbCBh bHNvIGhhbmRsZSBjbGVhbnVwIG9mIGFueSBpbnZhbGlkIGF1eGlsaWFyeSBpbmRleGVzLikKKyAg ICBJZiB0aGUgb25seSBpbnZhbGlkIGluZGV4IGlzIG9uZSBzdWZmaXhlZCA8bGl0ZXJhbD5jY2F1 eDwvbGl0ZXJhbD4KKyAgICByZWNvbW1lbmRlZCByZWNvdmVyeSBtZXRob2QgaXMganVzdCA8bGl0 ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPgorICAgIGZvciB0aGF0IGluZGV4LgogICAgPC9wYXJh PgogCiAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKaW5kZXggNGVkM2M5NjkwMTIuLmQ2Mjc5 MWZmOWMzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbApAQCAtNDc3LDExICs0NzcsMTUgQEAgSW5kZXhl czoKICAgICA8bGl0ZXJhbD5fY2NuZXc8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPl9jY2F1eDwvbGl0 ZXJhbD4sIHRoZW4gaXQgY29ycmVzcG9uZHMgdG8gdGhlIHRyYW5zaWVudCBvciBhdXhpbGlhcnkK ICAgICBpbmRleCBjcmVhdGVkIGR1cmluZyB0aGUgY29uY3VycmVudCBvcGVyYXRpb24sIGFuZCB0 aGUgcmVjb21tZW5kZWQKICAgICByZWNvdmVyeSBtZXRob2QgaXMgdG8gZHJvcCB0aGVzZSBpbmRl eGVzIHVzaW5nIDxsaXRlcmFsPkRST1AgSU5ERVg8L2xpdGVyYWw+LAotICAgIHRoZW4gYXR0ZW1w dCA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gYWdhaW4uCisgICAgdGhl biBhdHRlbXB0IDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBhZ2Fpbi4g VGhlIGF1eGlsaWFyeSBpbmRleAorICAgIChzdWZmaXhlZCB3aXRoIDxsaXRlcmFsPl9jY2F1eDwv bGl0ZXJhbD4pIHdpbGwgYmUgYXV0b21hdGljYWxseSBkcm9wcGVkCisgICAgYWxvbmcgd2l0aCBp dHMgbWFpbiBpbmRleC4KICAgICBJZiB0aGUgaW52YWxpZCBpbmRleCBpcyBpbnN0ZWFkIHN1ZmZp eGVkIDxsaXRlcmFsPl9jY29sZDwvbGl0ZXJhbD4sCiAgICAgaXQgY29ycmVzcG9uZHMgdG8gdGhl IG9yaWdpbmFsIGluZGV4IHdoaWNoIGNvdWxkIG5vdCBiZSBkcm9wcGVkOwogICAgIHRoZSByZWNv bW1lbmRlZCByZWNvdmVyeSBtZXRob2QgaXMgdG8ganVzdCBkcm9wIHNhaWQgaW5kZXgsIHNpbmNl IHRoZQotICAgIHJlYnVpbGQgcHJvcGVyIGhhcyBiZWVuIHN1Y2Nlc3NmdWwuCisgICAgcmVidWls ZCBwcm9wZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bC4gSWYgdGhlIG9ubHkKKyAgICBpbnZhbGlkIGlu ZGV4IGlzIG9uZSBzdWZmaXhlZCA8bGl0ZXJhbD5jY2F1eDwvbGl0ZXJhbD4gcmVjb21tZW5kZWQK KyAgICByZWNvdmVyeSBtZXRob2QgaXMganVzdCA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFs PiBmb3IgdGhhdCBpbmRleC4KICAgICBBIG5vbnplcm8gbnVtYmVyIG1heSBiZSBhcHBlbmRlZCB0 byB0aGUgc3VmZml4IG9mIHRoZSBpbnZhbGlkIGluZGV4CiAgICAgbmFtZXMgdG8ga2VlcCB0aGVt IHVuaXF1ZSwgbGlrZSA8bGl0ZXJhbD5fY2NuZXcxPC9saXRlcmFsPiwKICAgICA8bGl0ZXJhbD5f Y2NvbGQyPC9saXRlcmFsPiwgZXRjLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9k ZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwppbmRleCAxODMx NmEzOTY4Yi4uYWI0YzNlMmZiNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVw ZW5kZW5jeS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCkBAIC0yODYs NyArMjg2LDcgQEAgcGVyZm9ybURlbGV0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwK IAkgKiBBY3F1aXJlIGRlbGV0aW9uIGxvY2sgb24gdGhlIHRhcmdldCBvYmplY3QuICAoSWRlYWxs eSB0aGUgY2FsbGVyIGhhcwogCSAqIGRvbmUgdGhpcyBhbHJlYWR5LCBidXQgbWFueSBwbGFjZXMg YXJlIHNsb3BweSBhYm91dCBpdC4pCiAJICovCi0JQWNxdWlyZURlbGV0aW9uTG9jayhvYmplY3Qs IDApOworCUFjcXVpcmVEZWxldGlvbkxvY2sob2JqZWN0LCBmbGFncyk7CiAKIAkvKgogCSAqIENv bnN0cnVjdCBhIGxpc3Qgb2Ygb2JqZWN0cyB0byBkZWxldGUgKGllLCB0aGUgZ2l2ZW4gb2JqZWN0 IHBsdXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA2YzgxNTFlNTM4YS4uOTdlNWQyZDY4YWEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMKQEAgLTc3Niw2ICs3NzYsOCBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVh cFJlbGF0aW9uLAogCQkgICAoKGZsYWdzICYgSU5ERVhfQ1JFQVRFX0FERF9DT05TVFJBSU5UKSAh PSAwKSk7CiAJLyogcGFydGl0aW9uZWQgaW5kZXhlcyBtdXN0IG5ldmVyIGJlICJidWlsdCIgYnkg dGhlbXNlbHZlcyAqLwogCUFzc2VydCghcGFydGl0aW9uZWQgfHwgKGZsYWdzICYgSU5ERVhfQ1JF QVRFX1NLSVBfQlVJTEQpKTsKKwkvKiBpaV9BdXhpbGlhcnlGb3JJbmRleElkIGFuZCBJTkRFWF9D UkVBVEVfQVVYSUxJQVJZIGFyZSByZXF1aXJlZCBib3RoIG9yIG5laXRoZXIgKi8KKwlBc3NlcnQo T2lkSXNWYWxpZChpbmRleEluZm8tPmlpX0F1eGlsaWFyeUZvckluZGV4SWQpID09IGF1eGlsaWFy eSk7CiAKIAlyZWxraW5kID0gcGFydGl0aW9uZWQgPyBSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVY IDogUkVMS0lORF9JTkRFWDsKIAlpc19leGNsdXNpb24gPSAoaW5kZXhJbmZvLT5paV9FeGNsdXNp b25PcHMgIT0gTlVMTCk7CkBAIC0xMTgxLDYgKzExODMsMTUgQEAgaW5kZXhfY3JlYXRlKFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwKIAkJCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJl bmNlZCwgREVQRU5ERU5DWV9QQVJUSVRJT05fU0VDKTsKIAkJfQogCisJCS8qCisJCSAqIFJlY29y ZCBkZXBlbmRlbmN5IG9uIHRoZSBtYWluIGluZGV4IGluIGNhc2Ugb2YgYXV4aWxpYXJ5IGluZGV4 LgorCQkgKi8KKwkJaWYgKE9pZElzVmFsaWQoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnlGb3JJbmRl eElkKSkKKwkJeworCQkJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0 aW9uSWQsIGluZGV4SW5mby0+aWlfQXV4aWxpYXJ5Rm9ySW5kZXhJZCk7CisJCQlyZWNvcmREZXBl bmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfQVVUTyk7CisJCX0KKwog CQkvKiBwbGFjZWhvbGRlciBmb3Igbm9ybWFsIGRlcGVuZGVuY2llcyAqLwogCQlhZGRycyA9IG5l d19vYmplY3RfYWRkcmVzc2VzKCk7CiAKQEAgLTE0MTMsNyArMTQyNCw4IEBAIGluZGV4X2NvbmN1 cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElk LAogCQkJCQkJCXRydWUsCiAJCQkJCQkJaW5kZXhSZWxhdGlvbi0+cmRfaW5kYW0tPmFtc3VtbWFy aXppbmcsCiAJCQkJCQkJb2xkSW5mby0+aWlfV2l0aG91dE92ZXJsYXBzLAotCQkJCQkJCWZhbHNl KTsKKwkJCQkJCQlmYWxzZSwKKwkJCQkJCQlJbnZhbGlkT2lkKTsKIAogCS8qCiAJICogRXh0cmFj dCB0aGUgbGlzdCBvZiBjb2x1bW4gbmFtZXMgYW5kIHRoZSBjb2x1bW4gbnVtYmVycyBmb3IgdGhl IG5ldwpAQCAtMTU4MSw3ICsxNTkzLDggQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9hdXgo UmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgbWFpbkluZGV4SWQsCiAJCQkJCQkJdHJ1ZSwKIAkJ CQkJCQlmYWxzZSwJLyogYXV4IGFyZSBub3Qgc3VtbWFyaXppbmcgKi8KIAkJCQkJCQlmYWxzZSwJ LyogYXV4IGFyZSBub3Qgd2l0aG91dCBvdmVybGFwcyAqLwotCQkJCQkJCXRydWUJLyogYXV4aWxp YXJ5ICovKTsKKwkJCQkJCQl0cnVlCS8qIGF1eGlsaWFyeSAqLywKKwkJCQkJCQltYWluSW5kZXhJ ZCAvKiBhdXhpbGlhcnlGb3JJbmRleElkICovKTsKIAogCS8qCiAJICogRXh0cmFjdCB0aGUgbGlz dCBvZiBjb2x1bW4gbmFtZXMgYW5kIHRoZSBjb2x1bW4gbnVtYmVycyBmb3IgdGhlIG5ldwpAQCAt MjYzMyw3ICsyNjQ2LDggQEAgQnVpbGRJbmRleEluZm8oUmVsYXRpb24gaW5kZXgpCiAJCQkJCSAg IGZhbHNlLAogCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCiAJCQkJCSAg IGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUs Ci0JCQkJCSAgIGluZGV4LT5yZF9yZWwtPnJlbGFtID09IFNUSVJfQU1fT0lEIC8qIGF1eGlsaWFy eSBpZmYgU1RJUiAqLyk7CisJCQkJCSAgIGluZGV4LT5yZF9yZWwtPnJlbGFtID09IFNUSVJfQU1f T0lEIC8qIGF1eGlsaWFyeSBpZmYgU1RJUiAqLywKKwkJCQkJICAgSW52YWxpZE9pZCAvKiBhdXhp bGlhcnlfZm9yX2luZGV4X2lkIGlzIHNldCBvbmx5IGR1cmluZyBidWlsZCAqLyk7CiAKIAkvKiBm aWxsIGluIGF0dHJpYnV0ZSBudW1iZXJzICovCiAJZm9yIChpID0gMDsgaSA8IG51bUF0dHM7IGkr KykKQEAgLTI2OTQsNyArMjcwOCw4IEBAIEJ1aWxkRHVtbXlJbmRleEluZm8oUmVsYXRpb24gaW5k ZXgpCiAJCQkJCSAgIGZhbHNlLAogCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFyaXpp bmcsCiAJCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+ aW5kaXN1bmlxdWUsCi0JCQkJCSAgIGluZGV4LT5yZF9yZWwtPnJlbGFtID09IFNUSVJfQU1fT0lE IC8qIGF1eGlsaWFyeSBpZmYgU1RJUiAqLyk7CisJCQkJCSAgIGluZGV4LT5yZF9yZWwtPnJlbGFt ID09IFNUSVJfQU1fT0lEIC8qIGF1eGlsaWFyeSBpZmYgU1RJUiAqLywKKwkJCQkJICAgSW52YWxp ZE9pZCk7CiAKIAkvKiBmaWxsIGluIGF0dHJpYnV0ZSBudW1iZXJzICovCiAJZm9yIChpID0gMDsg aSA8IG51bUF0dHM7IGkrKykKQEAgLTM4NjksNiArMzg4NCw3IEBAIHJlaW5kZXhfaW5kZXgoY29u c3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRleElkLAogCQkJCWhlYXBSZWxhdGlvbjsKIAlP aWQJCQloZWFwSWQ7CiAJT2lkCQkJc2F2ZV91c2VyaWQ7CisJT2lkCQkJanVua0F1eEluZGV4SWQ7 CiAJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIAlJbmRl eEluZm8gICppbmRleEluZm87CkBAIC0zOTI1LDYgKzM5NDEsMTkgQEAgcmVpbmRleF9pbmRleChj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIGluZGV4SWQsCiAJCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfbXVsdGlfcGFyYW0oMiwgcHJvZ3Jlc3NfY29scywgcHJvZ3Jlc3NfdmFscyk7CiAJfQog CisJLyogQ2hlY2sgZm9yIHRoZSBhdXhpbGlhcnkgaW5kZXggZm9yIHRoYXQgaW5kZXgsIGl0IG5l ZWRzIHRvIGRyb3BwZWQgKi8KKwlqdW5rQXV4SW5kZXhJZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgo aW5kZXhJZCk7CisJaWYgKE9pZElzVmFsaWQoanVua0F1eEluZGV4SWQpKQorCXsKKwkJT2JqZWN0 QWRkcmVzcyBvYmplY3Q7CisJCW9iamVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOwor CQlvYmplY3Qub2JqZWN0SWQgPSBqdW5rQXV4SW5kZXhJZDsKKwkJb2JqZWN0Lm9iamVjdFN1Yklk ID0gMDsKKwkJcGVyZm9ybURlbGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsCisJCQkJCQkJ CSBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFMIHwKKwkJCQkJCQkJIFBFUkZPUk1fREVMRVRJT05f UVVJRVRMWSk7CisJfQorCiAJLyoKIAkgKiBPcGVuIHRoZSB0YXJnZXQgaW5kZXggcmVsYXRpb24g YW5kIGdldCBhbiBleGNsdXNpdmUgbG9jayBvbiBpdCwgdG8KIAkgKiBlbnN1cmUgdGhhdCBubyBv bmUgZWxzZSBpcyB0b3VjaGluZyB0aGlzIHBhcnRpY3VsYXIgaW5kZXguCkBAIC00MjEzLDcgKzQy NDIsOCBAQCByZWluZGV4X3JlbGF0aW9uKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs aWQsIGludCBmbGFncywKIHsKIAlSZWxhdGlvbglyZWw7CiAJT2lkCQkJdG9hc3RfcmVsaWQ7Ci0J TGlzdAkgICAqaW5kZXhJZHM7CisJTGlzdAkgICAqaW5kZXhJZHMsCisJCQkgICAqYXV4SW5kZXhJ ZHMgPSBOSUw7CiAJY2hhcgkJcGVyc2lzdGVuY2U7CiAJYm9vbAkJcmVzdWx0ID0gZmFsc2U7CiAJ TGlzdENlbGwgICAqaW5kZXhJZDsKQEAgLTQzMDIsMTMgKzQzMzIsMzAgQEAgcmVpbmRleF9yZWxh dGlvbihjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiAJZWxz ZQogCQlwZXJzaXN0ZW5jZSA9IHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZTsKIAorCWZvcmVh Y2goaW5kZXhJZCwgaW5kZXhJZHMpCisJeworCQlPaWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQo aW5kZXhJZCk7CisJCU9pZAkJCWluZGV4QW0gPSBnZXRfcmVsX3JlbGFtKGluZGV4T2lkKTsKKwor CQkvKiBBbGwgU1RJUiBpbmRleGVzIGFyZSBhdXhpbGlhcnkgaW5kZXhlcyAqLworCQlpZiAoaW5k ZXhBbSA9PSBTVElSX0FNX09JRCkKKwkJeworCQkJaWYgKGZsYWdzICYgUkVJTkRFWF9SRUxfU1VQ UFJFU1NfSU5ERVhfVVNFKQorCQkJCVJlbW92ZVJlaW5kZXhQZW5kaW5nKGluZGV4T2lkKTsKKwkJ CWF1eEluZGV4SWRzID0gbGFwcGVuZF9vaWQoYXV4SW5kZXhJZHMsIGluZGV4T2lkKTsKKwkJfQor CX0KKwogCS8qIFJlaW5kZXggYWxsIHRoZSBpbmRleGVzLiAqLwogCWkgPSAxOwogCWZvcmVhY2go aW5kZXhJZCwgaW5kZXhJZHMpCiAJewogCQlPaWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQoaW5k ZXhJZCk7CiAJCU9pZAkJCWluZGV4TmFtZXNwYWNlSWQgPSBnZXRfcmVsX25hbWVzcGFjZShpbmRl eE9pZCk7Ci0JCU9pZAkJCWluZGV4QW0gPSBnZXRfcmVsX3JlbGFtKGluZGV4T2lkKTsKKworCQkv KiBBdXhpbGlhcnkgaW5kZXhlcyBhcmUgZ29pbmcgdG8gYmUgZHJvcHBlZCBkdXJpbmcgbWFpbiBp bmRleCByZWJ1aWxkICovCisJCWlmIChsaXN0X21lbWJlcl9vaWQoYXV4SW5kZXhJZHMsIGluZGV4 T2lkKSkKKwkJCWNvbnRpbnVlOwogCiAJCS8qCiAJCSAqIFNraXAgYW55IGludmFsaWQgaW5kZXhl cyBvbiBhIFRPQVNUIHRhYmxlLiAgVGhlc2UgY2FuIG9ubHkgYmUKQEAgLTQzMzQsMTggKzQzODEs NiBAQCByZWluZGV4X3JlbGF0aW9uKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsaWQs IGludCBmbGFncywKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJaWYgKGluZGV4QW0gPT0gU1RJUl9B TV9PSUQpCi0JCXsKLQkJCWVyZXBvcnQoV0FSTklORywKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkgZXJybXNnKCJza2lwcGluZyByZWluZGV4IG9m IGF1eGlsaWFyeSBpbmRleCBcIiVzLiVzXCIiLAotCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShp bmRleE5hbWVzcGFjZUlkKSwKLQkJCQkJCQlnZXRfcmVsX25hbWUoaW5kZXhPaWQpKSkpOwotCQkJ aWYgKGZsYWdzICYgUkVJTkRFWF9SRUxfU1VQUFJFU1NfSU5ERVhfVVNFKQotCQkJCVJlbW92ZVJl aW5kZXhQZW5kaW5nKGluZGV4T2lkKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KIAkJcmVpbmRleF9p bmRleChzdG10LCBpbmRleE9pZCwgIShmbGFncyAmIFJFSU5ERVhfUkVMX0NIRUNLX0NPTlNUUkFJ TlRTKSwKIAkJCQkJICBwZXJzaXN0ZW5jZSwgcGFyYW1zKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5k LmMKaW5kZXggYzhiMTFmODg3ZTIuLjFjMjc1ZWYzNzNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX2RlcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5k LmMKQEAgLTEwMzUsNiArMTAzNSw2MyBAQCBnZXRfaW5kZXhfY29uc3RyYWludChPaWQgaW5kZXhJ ZCkKIAlyZXR1cm4gY29uc3RyYWludElkOwogfQogCisvKgorICogZ2V0X2F1eGlsaWFyeV9pbmRl eAorICoJCUdpdmVuIHRoZSBPSUQgb2YgYW4gaW5kZXgsIHJldHVybiB0aGUgT0lEIG9mIGl0cyBh dXhpbGlhcnkKKyAqCQlpbmRleCwgb3IgSW52YWxpZE9pZCBpZiB0aGVyZSBpcyBubyBhdXhpbGlh cnkgaW5kZXguCisgKi8KK09pZAorZ2V0X2F1eGlsaWFyeV9pbmRleChPaWQgaW5kZXhJZCkKK3sK KwlPaWQJCQlhdXhpbGlhcnlJbmRleE9pZCA9IEludmFsaWRPaWQ7CisJUmVsYXRpb24JZGVwUmVs OworCVNjYW5LZXlEYXRhIGtleVszXTsKKwlTeXNTY2FuRGVzYyBzY2FuOworCUhlYXBUdXBsZQl0 dXA7CisKKwkvKiBTZWFyY2ggdGhlIGRlcGVuZGVuY3kgdGFibGUgZm9yIHRoZSBpbmRleCAqLwor CWRlcFJlbCA9IHRhYmxlX29wZW4oRGVwZW5kUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsK KworCVNjYW5LZXlJbml0KCZrZXlbMF0sCisJCQkJQW51bV9wZ19kZXBlbmRfcmVmY2xhc3NpZCwK KwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1 bShSZWxhdGlvblJlbGF0aW9uSWQpKTsKKwlTY2FuS2V5SW5pdCgma2V5WzFdLAorCQkJCUFudW1f cGdfZGVwZW5kX3JlZm9iamlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwK KwkJCQlPYmplY3RJZEdldERhdHVtKGluZGV4SWQpKTsKKwlTY2FuS2V5SW5pdCgma2V5WzJdLAor CQkJCUFudW1fcGdfZGVwZW5kX3JlZm9ianN1YmlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJl ciwgRl9JTlQ0RVEsCisJCQkJSW50MzJHZXREYXR1bSgwKSk7CisKKwlzY2FuID0gc3lzdGFibGVf YmVnaW5zY2FuKGRlcFJlbCwgRGVwZW5kUmVmZXJlbmNlSW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkg IE5VTEwsIDMsIGtleSk7CisKKworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCA9IHN5c3Rh YmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJRm9ybV9wZ19kZXBlbmQgZGVwcmVjID0gKEZvcm1f cGdfZGVwZW5kKSBHRVRTVFJVQ1QodHVwKTsKKworCQkvKgorCQkgKiBXZSBhc3N1bWUgYW55IEFV VE8gZGVwZW5kZW5jeSBvbiBpbmRleCB3aXRoIHJlbF9raW5kCisJCSAqIG9mIFJFTEtJTkRfSU5E RVggaXMgdGhhdCB3ZSBhcmUgbG9va2luZyBmb3IuCisJCSAqLworCQlpZiAoZGVwcmVjLT5jbGFz c2lkID09IFJlbGF0aW9uUmVsYXRpb25JZCAmJgorCQkJKGRlcHJlYy0+ZGVwdHlwZSA9PSBERVBF TkRFTkNZX0FVVE8pICYmCisJCQlnZXRfcmVsX3JlbGtpbmQoZGVwcmVjLT5vYmppZCkgPT0gUkVM S0lORF9JTkRFWCkKKwkJeworCQkJYXV4aWxpYXJ5SW5kZXhPaWQgPSBkZXByZWMtPm9iamlkOwor CQkJYnJlYWs7CisJCX0KKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Ns b3NlKGRlcFJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiBhdXhpbGlhcnlJbmRleE9p ZDsKK30KKwogLyoKICAqIGdldF9pbmRleF9yZWZfY29uc3RyYWludHMKICAqCQlHaXZlbiB0aGUg T0lEIG9mIGFuIGluZGV4LCByZXR1cm4gdGhlIE9JRCBvZiBhbGwgZm9yZWlnbiBrZXkKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvdG9hc3RpbmcuYwppbmRleCA5Y2M0ZjA2ZGE5Zi4uM2FhNjU3Yzc5Y2IgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3RvYXN0aW5nLmMKQEAgLTMwOCw2ICszMDgsNyBAQCBjcmVhdGVfdG9hc3RfdGFibGUoUmVsYXRp b24gcmVsLCBPaWQgdG9hc3RPaWQsIE9pZCB0b2FzdEluZGV4T2lkLAogCWluZGV4SW5mby0+aWlf QW0gPSBCVFJFRV9BTV9PSUQ7CiAJaW5kZXhJbmZvLT5paV9BbUNhY2hlID0gTlVMTDsKIAlpbmRl eEluZm8tPmlpX0F1eGlsaWFyeSA9IGZhbHNlOworCWluZGV4SW5mby0+aWlfQXV4aWxpYXJ5Rm9y SW5kZXhJZCA9IEludmFsaWRPaWQ7CiAJaW5kZXhJbmZvLT5paV9Db250ZXh0ID0gQ3VycmVudE1l bW9yeUNvbnRleHQ7CiAKIAljb2xsYXRpb25JZHNbMF0gPSBJbnZhbGlkT2lkOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9pbmRleGNtZHMuYwppbmRleCAxYjg0MzhkMzE4Ny4uN2E0MmYyZDgxNWEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2luZGV4Y21kcy5jCkBAIC0yNDYsNyArMjQ2LDcgQEAgQ2hlY2tJbmRleENvbXBhdGlibGUo T2lkIG9sZElkLAogCWluZGV4SW5mbyA9IG1ha2VJbmRleEluZm8obnVtYmVyT2ZBdHRyaWJ1dGVz LCBudW1iZXJPZkF0dHJpYnV0ZXMsCiAJCQkJCQkJICBhY2Nlc3NNZXRob2RJZCwgTklMLCBOSUws IGZhbHNlLCBmYWxzZSwKIAkJCQkJCQkgIGZhbHNlLCBmYWxzZSwgYW1zdW1tYXJpemluZywKLQkJ CQkJCQkgIGlzV2l0aG91dE92ZXJsYXBzLCBpc2F1eGlsaWFyeSk7CisJCQkJCQkJICBpc1dpdGhv dXRPdmVybGFwcywgaXNhdXhpbGlhcnksIEludmFsaWRPaWQpOwogCXR5cGVJZHMgPSBwYWxsb2Nf YXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwogCWNvbGxhdGlvbklkcyA9IHBhbGxvY19h cnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CiAJb3BjbGFzc0lkcyA9IHBhbGxvY19hcnJh eShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CkBAIC05NDQsNyArOTQ0LDggQEAgRGVmaW5lSW5k ZXgoT2lkIHRhYmxlSWQsCiAJCQkJCQkJICBjb25jdXJyZW50LAogCQkJCQkJCSAgYW1pc3N1bW1h cml6aW5nLAogCQkJCQkJCSAgc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMsCi0JCQkJCQkJICBmYWxz ZSk7CisJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkgIEludmFsaWRPaWQpOwogCiAJdHlwZUlkcyA9 IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CiAJY29sbGF0aW9uSWRzID0g cGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKQEAgLTM2NzIsNiArMzY3Myw3 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJewogCQlPaWQJCQlpbmRleElkOwogCQlPaWQJ CQlhdXhJbmRleElkOworCQlPaWQJCQlqdW5rQXV4SW5kZXhJZDsKIAkJT2lkCQkJdGFibGVJZDsK IAkJT2lkCQkJYW1JZDsKIAkJYm9vbAkJc2FmZTsJCS8qIGZvciBzZXRfaW5kZXhzYWZlX3Byb2Nm bGFncyAqLwpAQCAtNDAyMSw2ICs0MDIzLDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5 KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJ UmVpbmRleEluZGV4SW5mbyAqbmV3aWR4OwogCQlPaWQJCQluZXdJbmRleElkOwogCQlPaWQJCQlh dXhJbmRleElkOworCQlPaWQJCQlqdW5rQXV4SW5kZXhJZDsKIAkJUmVsYXRpb24JaW5kZXhSZWw7 CiAJCVJlbGF0aW9uCWhlYXBSZWw7CiAJCU9pZAkJCXNhdmVfdXNlcmlkOwpAQCAtNDAyOCw2ICs0 MDMxLDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpz dG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7 CiAJCVJlbGF0aW9uCW5ld0luZGV4UmVsOwogCQlSZWxhdGlvbglhdXhJbmRleFJlbDsKKwkJUmVs YXRpb24JanVua0F1eEluZGV4UmVsOwogCQlMb2NrUmVsSWQgICpsb2NrcmVsaWQ7CiAJCU9pZAkJ CXRhYmxlc3BhY2VpZDsKIApAQCAtNDEwMSwxMiArNDEwNSwxNyBAQCBSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29u c3QgUmVpbgogCQkJCQkJCQkJCQkJICAgdGFibGVzcGFjZWlkLAogCQkJCQkJCQkJCQkJICAgYXV4 Q29uY3VycmVudE5hbWUpOwogCisJCS8qIFNlYXJjaCBmb3IgYXV4aWxpYXJ5IGluZGV4IGZvciBy ZWluZGV4ZWQgaW5kZXgsIHRvIGRyb3AgaXQgKi8KKwkJanVua0F1eEluZGV4SWQgPSBnZXRfYXV4 aWxpYXJ5X2luZGV4KGlkeC0+aW5kZXhJZCk7CisKIAkJLyoKIAkJICogTm93IG9wZW4gdGhlIHJl bGF0aW9uIG9mIHRoZSBuZXcgaW5kZXgsIGEgc2Vzc2lvbi1sZXZlbCBsb2NrIGlzCiAJCSAqIGFs c28gbmVlZGVkIG9uIGl0LgogCQkgKi8KIAkJbmV3SW5kZXhSZWwgPSBpbmRleF9vcGVuKG5ld0lu ZGV4SWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CiAJCWF1eEluZGV4UmVsID0gaW5kZXhf b3BlbihhdXhJbmRleElkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQlpZiAoT2lkSXNW YWxpZChqdW5rQXV4SW5kZXhJZCkpCisJCQlqdW5rQXV4SW5kZXhSZWwgPSBpbmRleF9vcGVuKGp1 bmtBdXhJbmRleElkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCiAJCS8qCiAJCSAqIFNh dmUgdGhlIGxpc3Qgb2YgT0lEcyBhbmQgbG9ja3MgaW4gcHJpdmF0ZSBjb250ZXh0CkBAIC00MTE2 LDYgKzQxMjUsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0 bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQluZXdpZHggPSBwYWxsb2Nf b2JqZWN0KFJlaW5kZXhJbmRleEluZm8pOwogCQluZXdpZHgtPmluZGV4SWQgPSBuZXdJbmRleElk OwogCQluZXdpZHgtPmF1eEluZGV4SWQgPSBhdXhJbmRleElkOworCQluZXdpZHgtPmp1bmtBdXhJ bmRleElkID0ganVua0F1eEluZGV4SWQ7CiAJCW5ld2lkeC0+c2FmZSA9IGlkeC0+c2FmZTsKIAkJ bmV3aWR4LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwogCQluZXdpZHgtPmFtSWQgPSBpZHgtPmFt SWQ7CkBAIC00MTM3LDEwICs0MTQ3LDE4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCWxv Y2tyZWxpZCA9IHBhbGxvY19vYmplY3QoTG9ja1JlbElkKTsKIAkJKmxvY2tyZWxpZCA9IGF1eElu ZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CiAJCXJlbGF0aW9uTG9ja3MgPSBsYXBwZW5k KHJlbGF0aW9uTG9ja3MsIGxvY2tyZWxpZCk7CisJCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRl eElkKSkKKwkJeworCQkJbG9ja3JlbGlkID0gcGFsbG9jX29iamVjdChMb2NrUmVsSWQpOworCQkJ KmxvY2tyZWxpZCA9IGp1bmtBdXhJbmRleFJlbC0+cmRfbG9ja0luZm8ubG9ja1JlbElkOworCQkJ cmVsYXRpb25Mb2NrcyA9IGxhcHBlbmQocmVsYXRpb25Mb2NrcywgbG9ja3JlbGlkKTsKKwkJfQog CiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCQlpbmRleF9jbG9zZShp bmRleFJlbCwgTm9Mb2NrKTsKKwkJaWYgKE9pZElzVmFsaWQoanVua0F1eEluZGV4SWQpKQorCQkJ aW5kZXhfY2xvc2UoanVua0F1eEluZGV4UmVsLCBOb0xvY2spOwogCQlpbmRleF9jbG9zZShhdXhJ bmRleFJlbCwgTm9Mb2NrKTsKIAkJaW5kZXhfY2xvc2UobmV3SW5kZXhSZWwsIE5vTG9jayk7CiAK QEAgLTQzMjEsNyArNDMzOSw4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAKIAkvKgogCSAq IEF0IHRoaXMgbW9tZW50IGFsbCB0YXJnZXQgaW5kZXhlcyBhcmUgbWFya2VkIGFzICJyZWFkeS10 by1pbnNlcnQiLiBTbywKLQkgKiB3ZSBhcmUgZnJlZSB0byBzdGFydCBwcm9jZXNzIG9mIGRyb3Bw aW5nIGF1eGlsaWFyeSBpbmRleGVzLgorCSAqIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHByb2Nlc3Mg b2YgZHJvcHBpbmcgYXV4aWxpYXJ5IGluZGV4ZXMgLSBpbmNsdWRpbmcKKwkgKiBqdXN0IGluZGV4 ZXMgZGV0ZWN0ZWQgZWFybGllci4KIAkgKi8KIAlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKIAl7 CkBAIC00MzQ0LDYgKzQzNjMsOSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkgKi8KIAkJ UHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJCWluZGV4X3Nl dF9zdGF0ZV9mbGFncyhuZXdpZHgtPmF1eEluZGV4SWQsIElOREVYX0RST1BfQ0xFQVJfUkVBRFkp OworCQkvKiBFbnN1cmUganVzdCBpbmRleCBpcyBtYXJrZWQgYXMgbm9uLXJlYWR5ICovCisJCWlm IChPaWRJc1ZhbGlkKG5ld2lkeC0+anVua0F1eEluZGV4SWQpKQorCQkJaW5kZXhfc2V0X3N0YXRl X2ZsYWdzKG5ld2lkeC0+anVua0F1eEluZGV4SWQsIElOREVYX0RST1BfQ0xFQVJfUkVBRFkpOwog CQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpA QCAtNDU2Miw2ICs0NTg0LDggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJl aW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJUHVzaEFjdGl2 ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAKIAkJaW5kZXhfY29uY3VycmVu dGx5X3NldF9kZWFkKG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5hdXhJbmRleElkKTsKKwkJaWYg KE9pZElzVmFsaWQobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCkpCisJCQlpbmRleF9jb25jdXJyZW50 bHlfc2V0X2RlYWQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmp1bmtBdXhJbmRleElkKTsKIAog CQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCX0KQEAgLTQ2MTMsNiArNDYzNywxNCBAQCBSZWluZGV4 UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlv bk9pZCwgY29uc3QgUmVpbgogCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKIAogCQkJYWRkX2V4 YWN0X29iamVjdF9hZGRyZXNzKCZvYmplY3QsIG9iamVjdHMpOworCisJCQlpZiAoT2lkSXNWYWxp ZChpZHgtPmp1bmtBdXhJbmRleElkKSkKKwkJCXsKKworCQkJCW9iamVjdC5vYmplY3RJZCA9IGlk eC0+anVua0F1eEluZGV4SWQ7CisJCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwkJCQlhZGRf ZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CisJCQl9CiAJCX0KIAogCQkv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBlYTk2OTQ3ZDgxMy4uNzk0MDhkZDAxZWIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0xNTMyLDYgKzE1MzIsOCBAQCBSZW1vdmVS ZWxhdGlvbnMoRHJvcFN0bXQgKmRyb3ApCiAJTGlzdENlbGwgICAqY2VsbDsKIAlpbnQJCQlmbGFn cyA9IDA7CiAJTE9DS01PREUJbG9ja21vZGUgPSBBY2Nlc3NFeGNsdXNpdmVMb2NrOworCU1lbW9y eUNvbnRleHQgcHJpdmF0ZV9jb250ZXh0LAorCQkJCSAgb2xkY29udGV4dDsKIAogCS8qIERST1Ag Q09OQ1VSUkVOVExZIHVzZXMgYSB3ZWFrZXIgbG9jaywgYW5kIGhhcyBzb21lIHJlc3RyaWN0aW9u cyAqLwogCWlmIChkcm9wLT5jb25jdXJyZW50KQpAQCAtMTU5Miw5ICsxNTk0LDIwIEBAIFJlbW92 ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAkJCXJlbGtpbmQgPSAwOwkJLyoga2VlcCBjb21w aWxlciBxdWlldCAqLwogCQkJYnJlYWs7CiAJfQorCS8qCisJICogQ3JlYXRlIGEgbWVtb3J5IGNv bnRleHQgdGhhdCB3aWxsIHN1cnZpdmUgZm9yY2VkIHRyYW5zYWN0aW9uIGNvbW1pdHMgd2UKKwkg KiBtYXkgbmVlZCB0byBkbyBiZWxvdyAoaW4gY2FzZSBvZiBjb25jdXJyZW50IGluZGV4IGRyb3Ap LgorCSAqIFNpbmNlIGl0IGlzIGEgY2hpbGQgb2YgUG9ydGFsQ29udGV4dCwgaXQgd2lsbCBnbyBh d2F5IGV2ZW50dWFsbHkgZXZlbiBpZgorCSAqIHdlIHN1ZmZlciBhbiBlcnJvcjsgdGhlcmUncyBu byBuZWVkIGZvciBzcGVjaWFsIGFib3J0IGNsZWFudXAgbG9naWMuCisJICovCisJcHJpdmF0ZV9j b250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFBvcnRhbENvbnRleHQsCisJCQkJCQkJCQkJ CSJSZW1vdmVSZWxhdGlvbnMiLAorCQkJCQkJCQkJCQlBTExPQ1NFVF9TTUFMTF9TSVpFUyk7CiAK KwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHByaXZhdGVfY29udGV4dCk7CiAJ LyogTG9jayBhbmQgdmFsaWRhdGUgZWFjaCByZWxhdGlvbjsgYnVpbGQgYSBsaXN0IG9mIG9iamVj dCBhZGRyZXNzZXMgKi8KIAlvYmplY3RzID0gbmV3X29iamVjdF9hZGRyZXNzZXMoKTsKKwlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKIAlmb3JlYWNoKGNlbGwsIGRyb3AtPm9i amVjdHMpCiAJewpAQCAtMTY0Niw2ICsxNjU5LDM0IEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3Rt dCAqZHJvcCkKIAkJCWZsYWdzIHw9IFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVExZOwogCQl9 CiAKKwkJLyoKKwkJICogQ29uY3VycmVudCBpbmRleCBkcm9wIHJlcXVpcmVzIHRvIGJlIHRoZSBm aXJzdCB0cmFuc2FjdGlvbi4gQnV0IGluCisJCSAqIGNhc2Ugd2UgaGF2ZSBqdW5rIGF1eGlsaWFy eSBpbmRleCAtIHdlIHdhbnQgdG8gZHJvcCBpdCB0b28gKGFuZCBhbHNvCisJCSAqIGluIGEgY29u Y3VycmVudCB3YXkpLiBJbiB0aGlzIGNhc2UgcGVyZm9ybSBzaWxlbnQgaW50ZXJuYWwgZGVsZXRp b24KKwkJICogb2YgYXV4aWxpYXJ5IGluZGV4LCBhbmQgcmVzdG9yZSB0cmFuc2FjdGlvbiBzdGF0 ZS4gSXQgaXMgZmluZSB0byBkbyBpdAorCQkgKiBpbiB0aGUgbG9vcCBiZWNhdXNlIHRoZXJlIGlz IG9ubHkgc2luZ2xlIGVsZW1lbnQgaW4gZHJvcC0+b2JqZWN0cy4KKwkJICovCisJCWlmICgoZmxh Z3MgJiBQRVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRMWSkgIT0gMCAmJgorCQkJc3RhdGUuYWN0 dWFsX3JlbGtpbmQgPT0gUkVMS0lORF9JTkRFWCkKKwkJeworCQkJT2lkIGp1bmtBdXhJbmRleE9p ZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgocmVsT2lkKTsKKwkJCWlmIChPaWRJc1ZhbGlkKGp1bmtB dXhJbmRleE9pZCkpCisJCQl7CisJCQkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisJCQkJb2JqZWN0 LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJCQkJb2JqZWN0Lm9iamVjdElkID0ganVu a0F1eEluZGV4T2lkOworCQkJCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisJCQkJcGVyZm9ybURl bGV0aW9uKCZvYmplY3QsIERST1BfUkVTVFJJQ1QsCisJCQkJCQkJCQkJIFBFUkZPUk1fREVMRVRJ T05fQ09OQ1VSUkVOVExZIHwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCB8 CisJCQkJCQkJCQkJIFBFUkZPUk1fREVMRVRJT05fUVVJRVRMWSk7CisJCQkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisJCQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlQdXNo QWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJCQlQcmV2ZW50SW5U cmFuc2FjdGlvbkJsb2NrKHRydWUsICJEUk9QIElOREVYIENPTkNVUlJFTlRMWSIpOworCQkJfQor CQl9CisKIAkJLyoKIAkJICogQ29uY3VycmVudCBpbmRleCBkcm9wIGNhbm5vdCBiZSB1c2VkIHdp dGggcGFydGl0aW9uZWQgaW5kZXhlcywKIAkJICogZWl0aGVyLgpAQCAtMTY3NCwxMiArMTcxNSwx NyBAQCBSZW1vdmVSZWxhdGlvbnMoRHJvcFN0bXQgKmRyb3ApCiAJCW9iai5vYmplY3RJZCA9IHJl bE9pZDsKIAkJb2JqLm9iamVjdFN1YklkID0gMDsKIAorCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKHByaXZhdGVfY29udGV4dCk7CiAJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVz cygmb2JqLCBvYmplY3RzKTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwog CX0KIAorCS8qIERlbGV0aW9uIG1heSBpbnZvbHZlIG11bHRpcGxlIGNvbW1pdHMsIHNvLCBzd2l0 Y2ggdG8gbWVtb3J5IGNvbnRleHQgKi8KKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKHByaXZhdGVfY29udGV4dCk7CiAJcGVyZm9ybU11bHRpcGxlRGVsZXRpb25zKG9iamVjdHMs IGRyb3AtPmJlaGF2aW9yLCBmbGFncyk7CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRl eHQpOwogCi0JZnJlZV9vYmplY3RfYWRkcmVzc2VzKG9iamVjdHMpOworCU1lbW9yeUNvbnRleHRE ZWxldGUocHJpdmF0ZV9jb250ZXh0KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKaW5kZXgg YjU1NmJhNDgxN2IuLmQ3YmU4NzE1ZDUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9t YWtlZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwpAQCAtODM0LDcg KzgzNCw3IEBAIEluZGV4SW5mbyAqCiBtYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51 bWtleWF0dHJzLCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Npb25zLAogCQkJICBMaXN0ICpwcmVk aWNhdGVzLCBib29sIHVuaXF1ZSwgYm9vbCBudWxsc19ub3RfZGlzdGluY3QsCiAJCQkgIGJvb2wg aXNyZWFkeSwgYm9vbCBjb25jdXJyZW50LCBib29sIHN1bW1hcml6aW5nLAotCQkJICBib29sIHdp dGhvdXRvdmVybGFwcywgYm9vbCBhdXhpbGlhcnkpCisJCQkgIGJvb2wgd2l0aG91dG92ZXJsYXBz LCBib29sIGF1eGlsaWFyeSwgT2lkIGF1eGlsaWFyeV9mb3JfaW5kZXhfaWQpCiB7CiAJSW5kZXhJ bmZvICAqbiA9IG1ha2VOb2RlKEluZGV4SW5mbyk7CiAKQEAgLTg1MSw2ICs4NTEsNyBAQCBtYWtl SW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsIExpc3Qg KmV4cHJlc3Npb25zLAogCW4tPmlpX1N1bW1hcml6aW5nID0gc3VtbWFyaXppbmc7CiAJbi0+aWlf V2l0aG91dE92ZXJsYXBzID0gd2l0aG91dG92ZXJsYXBzOwogCW4tPmlpX0F1eGlsaWFyeSA9IGF1 eGlsaWFyeTsKKwluLT5paV9BdXhpbGlhcnlGb3JJbmRleElkID0gYXV4aWxpYXJ5X2Zvcl9pbmRl eF9pZDsKIAogCS8qIHN1bW1hcml6aW5nIGluZGV4ZXMgY2Fubm90IGNvbnRhaW4gbm9uLWtleSBh dHRyaWJ1dGVzICovCiAJQXNzZXJ0KCFzdW1tYXJpemluZyB8fCAobnVta2V5YXR0cnMgPT0gbnVt YXR0cnMpKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKaW5kZXggMGVhN2NjZjUyNDMuLjAyYmNm NWU5MzE1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaApAQCAtMTgwLDYgKzE4MCw3IEBAIGV4 dGVybiBMaXN0ICpnZXRPd25lZFNlcXVlbmNlcyhPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRJ ZGVudGl0eVNlcXVlbmNlKFJlbGF0aW9uIHJlbCwgQXR0ck51bWJlciBhdHRudW0sIGJvb2wgbWlz c2luZ19vayk7CiAKIGV4dGVybiBPaWQJZ2V0X2luZGV4X2NvbnN0cmFpbnQoT2lkIGluZGV4SWQp OworZXh0ZXJuIE9pZAlnZXRfYXV4aWxpYXJ5X2luZGV4KE9pZCBpbmRleElkKTsKIAogZXh0ZXJu IExpc3QgKmdldF9pbmRleF9yZWZfY29uc3RyYWludHMoT2lkIGluZGV4SWQpOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCmluZGV4IGUwMmZjNmFhM2U2Li5kMDM3ZDAxNTYzOSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKQEAgLTIxNyw2ICsyMTcsOCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8KIAlib29s CQlpaV9XaXRob3V0T3ZlcmxhcHM7CiAJaW50CQkJaWlfUGFyYWxsZWxXb3JrZXJzOwogCWJvb2wJ CWlpX0F1eGlsaWFyeTsKKwlPaWQJCQlpaV9BdXhpbGlhcnlGb3JJbmRleElkOyAvKiBpZiBjcmVh dGluZyBhbiBhdXhpbGlhcnkgaW5kZXgsCisJCQkJCQkJCQkJICAgdGhlIE9JRCBvZiB0aGUgbWFp biBpbmRleDsgb3RoZXJ3aXNlIEludmFsaWRPaWQuICovCiAJT2lkCQkJaWlfQW07CiAJdm9pZAkg ICAqaWlfQW1DYWNoZTsKIAlNZW1vcnlDb250ZXh0IGlpX0NvbnRleHQ7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCBiL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5j cy5oCmluZGV4IDQ5MDQ3NDhmNWZjLi4zNTc0NWJjNTIxYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgK QEAgLTEwMCw3ICsxMDAsNyBAQCBleHRlcm4gSW5kZXhJbmZvICptYWtlSW5kZXhJbmZvKGludCBu dW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsCiAJCQkJCQkJCWJvb2wgdW5pcXVl LCBib29sIG51bGxzX25vdF9kaXN0aW5jdCwKIAkJCQkJCQkJYm9vbCBpc3JlYWR5LCBib29sIGNv bmN1cnJlbnQsCiAJCQkJCQkJCWJvb2wgc3VtbWFyaXppbmcsIGJvb2wgd2l0aG91dG92ZXJsYXBz LAotCQkJCQkJCQlib29sIGF1eGlsaWFyeSk7CisJCQkJCQkJCWJvb2wgYXV4aWxpYXJ5LCBPaWQg YXV4aWxpYXJ5X2Zvcl9pbmRleF9pZCk7CiAKIGV4dGVybiBOb2RlICptYWtlU3RyaW5nQ29uc3Qo Y2hhciAqc3RyLCBpbnQgbG9jYXRpb24pOwogZXh0ZXJuIERlZkVsZW0gKm1ha2VEZWZFbGVtKGNo YXIgKm5hbWUsIE5vZGUgKmFyZywgaW50IGxvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAppbmRleCBjYTc0ODQ0YjVjNi4uYWNhNmVjNTdhZDcgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTMyNjUsMjAg KzMyNjUsMTA5IEBAIEVSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9pbmRl eF9pbmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBh dXhfaW5kZXhfaW5kNl9jY2F1eDsKIEVSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXgg ImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVkCiAtLSBUaGlzIG1ha2VzIHRoZSBw cmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgot REVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7Ci1FUlJPUjogIHJl bGF0aW9uICJjb25jdXJfcmVpbmRleF90YWI0IiBkb2VzIG5vdCBleGlzdAotTElORSAxOiBERUxF VEUgRlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKLSAgICAgICAgICAgICAg ICAgICAgXgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hv dWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXggYW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVgg YXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1 eF9pbmRleF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisg Q29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8 IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2lu ZGV4X2luZDYiIFVOSVFVRSwgYnRyZWUgKGMxKQorCitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2 OworLS0gSW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1 IFZBTFVFUyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUg VU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFi NSAoYzEpOworRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4 X2luZDYiCitERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KKy0tIFRoaXMgbWFr ZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUg dmFsaWQuCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CiAtLSBTaG91 bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleAotUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFi NTsKLUVSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2 IgotREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCi0tLSBTaG91bGQgYmUgc2tp cHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CiBSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRM WSBhdXhfaW5kZXhfdGFiNTsKIFdBUk5JTkc6ICBza2lwcGluZyByZWluZGV4IG9mIGludmFsaWQg aW5kZXggInB1YmxpYy5hdXhfaW5kZXhfaW5kNiIKIEhJTlQ6ICBVc2UgRFJPUCBJTkRFWCBvciBS RUlOREVYIElOREVYLgogV0FSTklORzogIHNraXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGlu ZGV4ICJwdWJsaWMuYXV4X2luZGV4X2luZDZfY2NhdXgiCiBOT1RJQ0U6ICB0YWJsZSAiYXV4X2lu ZGV4X3RhYjUiIGhhcyBubyBpbmRleGVzIHRoYXQgY2FuIGJlIHJlaW5kZXhlZCBjb25jdXJyZW50 bHkKKy0tIE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCBleGlzdHMKK1xkIGF1eF9pbmRleF90YWI1Cisg ICAgICAgICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUg ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAg ICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2luZDYiIFVOSVFV RSwgYnRyZWUgKGMxKSBJTlZBTElECisgICAgImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBzdGlyIChj MSkgSU5WQUxJRAorCistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJv cHBlZAorUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBhdXggaW5k ZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1Ymxp Yy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFi bGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJ bmRleGVzOgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpCisKK0RST1Ag SU5ERVggYXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJU IElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQg aW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9p bmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5p cXVlIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBs aWNhdGVkLgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0 aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90YWI1IFdI RVJFIGMxID0gMTsKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWluZGV4IGFuZCBkcm9w cGVkCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ug c3VyZSBhdXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAg VGFibGUgInB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCitJbmRleGVzOgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAo YzEpCisKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBh Z2FpbgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3Jl YXRlIGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZ IGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5v dCBjcmVhdGUgdW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEp PSgxKSBpcyBkdXBsaWNhdGVkLgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBn byBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9p bmRleF90YWI1IFdIRVJFIGMxID0gMTsKKy0tIERyb3AgbWFpbiBpbmRleCBDT05DVVJSRU5UTFkK K0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1 eGlsaWFyeSBpbmRleCBkcm9wcGVkIHRvbworXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAg VGFibGUgInB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCisKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CitFUlJPUjogIGluZGV4ICJh dXhfaW5kZXhfaW5kNiIgZG9lcyBub3QgZXhpc3QKKy0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWlu CitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUg aW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4 X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKK0VSUk9SOiAgY291bGQgbm90IGNy ZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEp IGlzIGR1cGxpY2F0ZWQuCistLSBEcm9wIG1haW4gaW5kZXgKK0RST1AgSU5ERVggYXV4X2luZGV4 X2luZDY7CistLSBNYWtlIHN1cmUgYXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhf aW5kZXhfdGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENv bHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBp bnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKwogRFJPUCBUQUJMRSBhdXhfaW5kZXhf dGFiNTsKIC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHByZXNzaW9ucyBhbmQg cHJlZGljYXRlcy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQgaW5kZXhlcyBz aG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9jcmVhdGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNx bAppbmRleCAyY2ZmMWFjMjliZS4uZTE0NjRlYWE2N2MgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3Jl YXRlX2luZGV4LnNxbApAQCAtMTM0MCwxMSArMTM0MCw2MiBAQCBSRUlOREVYIElOREVYIGF1eF9p bmRleF9pbmQ2X2NjYXV4OwogLS0gQ29uY3VycmVudGx5IGFsc28KIFJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlv dXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KLURFTEVU RSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworREVMRVRFIEZST00gYXV4 X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJl aW5kZXggYW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBNYWtl IHN1cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CitEUk9QIElOREVY IGF1eF9pbmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElO VE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5k ZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2 IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWls dXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00g YXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOwogLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5n IHJlaW5kZXgKLVJFSU5ERVggVEFCTEUgYXV4X2luZGV4X3RhYjU7Ci0tLSBTaG91bGQgYmUgc2tp cHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CiBSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRM WSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCBleGlzdHMKK1xkIGF1 eF9pbmRleF90YWI1CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJv cHBlZAorUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBhdXggaW5k ZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKK0RST1AgSU5ERVggYXV4X2luZGV4X2lu ZDY7CisKKy0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhf dGFiNSBWQUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JF QVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4 X3RhYjUgKGMxKTsKKy0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwg c28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFi NSBXSEVSRSBjMSA9IDE7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQg ZHJvcHBlZAorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDY7CistLSBN YWtlIHN1cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CitEUk9QIElO REVYIGF1eF9pbmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJU IElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQg aW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9p bmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBm YWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZS T00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gRHJvcCBtYWluIGluZGV4IENPTkNV UlJFTlRMWQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDY7CistLSBNYWtl IHN1cmUgYXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhfdGFiNQorRFJP UCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKworLS0gSW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lO U0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZh bGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5k ZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworLS0gRHJvcCBtYWluIGluZGV4CitEUk9Q IElOREVYIGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eGlsaWFyeSBpbmRleCBkcm9w cGVkIHRvbworXGQgYXV4X2luZGV4X3RhYjUKKwogRFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsK IAogLS0gQ2hlY2sgaGFuZGxpbmcgb2YgaW5kZXhlcyB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVk aWNhdGVzLiAgVGhlCi0tIAoyLjQzLjAKCg== --00000000000027fe8906381ae2a2 Content-Type: application/x-patch; name="v21-0007-Add-Datum-storage-support-to-tuplestore.patch" Content-Disposition: attachment; filename="v21-0007-Add-Datum-storage-support-to-tuplestore.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8uv5 RnJvbSAxMTg4ZWVhMDZlYjU0YzRhMTFmZTIwM2EzYWE4MjRiMjEwYjQ1YTY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyNSBKYW4gMjAyNSAxMzozMzoyMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIxIDA3LzEyXSBBZGQgRGF0dW0gc3RvcmFnZSBzdXBwb3J0IHRvIHR1cGxlc3RvcmUK CiBFeHRlbmQgdHVwbGVzdG9yZSB0byBzdG9yZSBpbmRpdmlkdWFsIERhdHVtIHZhbHVlczoKLSBm aXhlZC1sZW5ndGggZGF0YXR5cGVzOiBzdG9yZSByYXcgYnl0ZXMgd2l0aG91dCBhIGxlbmd0aCBo ZWFkZXIKLSB2YXJpYWJsZS1sZW5ndGggZGF0YXR5cGVzOiBpbmNsdWRlIGEgbGVuZ3RoIGhlYWRl ciBhbmQgcGFkZGluZwotIGJ5LXZhbHVlIHR5cGVzOiBzdG9yZSBpbmxpbmUKClRoaXMgc3VwcG9y dCBlbmFibGVzIHVzYWdlcyB0dXBsZXN0b3JlIGZvciBub24tdHVwbGUgZGF0YSAoVElEcykgaW4g dGhlIG5leHQgY29tbWl0LgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzdG9yZS5j IHwgMzAyICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIHNyYy9pbmNsdWRlL3V0aWxzL3R1 cGxlc3RvcmUuaCAgICAgIHwgIDMzICstLQogMiBmaWxlcyBjaGFuZ2VkLCAyNjMgaW5zZXJ0aW9u cygrKSwgNzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvc29y dC90dXBsZXN0b3JlLmMgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYwppbmRl eCBjOWFlY2FiOGQ2Ni4uMzgwNzZmMzQ1OGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L3NvcnQvdHVwbGVzdG9yZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzdG9y ZS5jCkBAIC0xLDE2ICsxLDE5IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiB0dXBsZXN0 b3JlLmMKLSAqCSAgR2VuZXJhbGl6ZWQgcm91dGluZXMgZm9yIHRlbXBvcmFyeSB0dXBsZSBzdG9y YWdlLgorICoJICBHZW5lcmFsaXplZCByb3V0aW5lcyBmb3IgdGVtcG9yYXJ5IHN0b3JhZ2Ugb2Yg dHVwbGVzIGFuZCBEYXR1bXMuCisgKgorICogVGhpcyBtb2R1bGUgaGFuZGxlcyB0ZW1wb3Jhcnkg c3RvcmFnZSBvZiBlaXRoZXIgdHVwbGVzIG9yIHNpbmdsZQorICogRGF0dW0gdmFsdWVzIGZvciBw dXJwb3NlcyBzdWNoIGFzIE1hdGVyaWFsaXplIG5vZGVzLCBoYXNoam9pbiBiYXRjaAorICogZmls ZXMsIGV0Yy4gSXQgaXMgZXNzZW50aWFsbHkgYSBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1cGxl c29ydC5jOworICogaXQgZG9lcyBubyBzb3J0aW5nIG9mIHR1cGxlcyBidXQgY2FuIG9ubHkgc3Rv cmUgYW5kIHJlZ3VyZ2l0YXRlIGEgc2VxdWVuY2UKKyAqIG9mIHR1cGxlcy4gIEhvd2V2ZXIsIGJl Y2F1c2Ugbm8gc29ydCBpcyByZXF1aXJlZCwgaXQgaXMgYWxsb3dlZCB0byBzdGFydAorICogcmVh ZGluZyB0aGUgc2VxdWVuY2UgYmVmb3JlIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuLgorICoKKyAq IFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgY3Vyc29ycywgYmVjYXVzZSBpdCBhbGxv d3MgcmFuZG9tIGFjY2VzcworICogd2l0aGluIHRoZSBhbHJlYWR5LXNjYW5uZWQgcG9ydGlvbiBv ZiBhIHF1ZXJ5IHdpdGhvdXQgaGF2aW5nIHRvIHByb2Nlc3MKKyAqIHRoZSB1bmRlcmx5aW5nIHNj YW4gdG8gY29tcGxldGlvbi4KICAqCi0gKiBUaGlzIG1vZHVsZSBoYW5kbGVzIHRlbXBvcmFyeSBz dG9yYWdlIG9mIHR1cGxlcyBmb3IgcHVycG9zZXMgc3VjaAotICogYXMgTWF0ZXJpYWxpemUgbm9k ZXMsIGhhc2hqb2luIGJhdGNoIGZpbGVzLCBldGMuICBJdCBpcyBlc3NlbnRpYWxseQotICogYSBk dW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1cGxlc29ydC5jOyBpdCBkb2VzIG5vIHNvcnRpbmcgb2Yg dHVwbGVzCi0gKiBidXQgY2FuIG9ubHkgc3RvcmUgYW5kIHJlZ3VyZ2l0YXRlIGEgc2VxdWVuY2Ug b2YgdHVwbGVzLiAgSG93ZXZlciwKLSAqIGJlY2F1c2Ugbm8gc29ydCBpcyByZXF1aXJlZCwgaXQg aXMgYWxsb3dlZCB0byBzdGFydCByZWFkaW5nIHRoZSBzZXF1ZW5jZQotICogYmVmb3JlIGl0IGhh cyBhbGwgYmVlbiB3cml0dGVuLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBjdXJz b3JzLAotICogYmVjYXVzZSBpdCBhbGxvd3MgcmFuZG9tIGFjY2VzcyB3aXRoaW4gdGhlIGFscmVh ZHktc2Nhbm5lZCBwb3J0aW9uIG9mCi0gKiBhIHF1ZXJ5IHdpdGhvdXQgaGF2aW5nIHRvIHByb2Nl c3MgdGhlIHVuZGVybHlpbmcgc2NhbiB0byBjb21wbGV0aW9uLgogICogQWxzbywgaXQgaXMgcG9z c2libGUgdG8gc3VwcG9ydCBtdWx0aXBsZSBpbmRlcGVuZGVudCByZWFkIHBvaW50ZXJzLgogICoK ICAqIEEgdGVtcG9yYXJ5IGZpbGUgaXMgdXNlZCB0byBoYW5kbGUgdGhlIGRhdGEgaWYgaXQgZXhj ZWVkcyB0aGUKQEAgLTYxLDYgKzY0LDggQEAKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5o IgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmZmlsZS5oIgor I2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgog CkBAIC0xMTUsMTYgKzEyMCwxNSBAQCBzdHJ1Y3QgVHVwbGVzdG9yZXN0YXRlCiAJQnVmRmlsZSAg ICAqbXlmaWxlOwkJCS8qIHVuZGVybHlpbmcgZmlsZSwgb3IgTlVMTCBpZiBub25lICovCiAJTWVt b3J5Q29udGV4dCBjb250ZXh0OwkJLyogbWVtb3J5IGNvbnRleHQgZm9yIGhvbGRpbmcgdHVwbGVz ICovCiAJUmVzb3VyY2VPd25lciByZXNvd25lcjsJCS8qIHJlc293bmVyIGZvciBob2xkaW5nIHRl bXAgZmlsZXMgKi8KKwlPaWQJCQlkYXR1bVR5cGU7CQkvKiBJbnZhbGlkT2lkIG9yIG9pZCBvZiBE YXR1bSdzIHRvIGJlIHN0b3JlZCAqLworCWludDE2CQlkYXR1bVR5cGVMZW47CS8qIHR5cGVsZW4g b2YgdGhhdCBEYXR1bSAqLworCWJvb2wJCWRhdHVtVHlwZUJ5VmFsOyAvKiBieS12YWx1ZSBvZiB0 aGF0IGF0dW0gKi8KIAogCS8qCiAJICogVGhlc2UgZnVuY3Rpb24gcG9pbnRlcnMgZGVjb3VwbGUg dGhlIHJvdXRpbmVzIHRoYXQgbXVzdCBrbm93IHdoYXQga2luZAogCSAqIG9mIHR1cGxlIHdlIGFy ZSBoYW5kbGluZyBmcm9tIHRoZSByb3V0aW5lcyB0aGF0IGRvbid0IG5lZWQgdG8ga25vdyBpdC4K IAkgKiBUaGV5IGFyZSBzZXQgdXAgYnkgdGhlIHR1cGxlc3RvcmVfYmVnaW5feHh4IHJvdXRpbmVz LgogCSAqCi0JICogKEFsdGhvdWdoIHR1cGxlc3RvcmUuYyBjdXJyZW50bHkgb25seSBzdXBwb3J0 cyBoZWFwIHR1cGxlcywgSSd2ZSBjb3BpZWQKLQkgKiB0aGlzIHBhcnQgb2YgdHVwbGVzb3J0LmMg c28gdGhhdCBleHRlbnNpb24gdG8gb3RoZXIga2luZHMgb2Ygb2JqZWN0cwotCSAqIHdpbGwgYmUg ZWFzeSBpZiBpdCdzIGV2ZXIgbmVlZGVkLikKLQkgKgogCSAqIEZ1bmN0aW9uIHRvIGNvcHkgYSBz dXBwbGllZCBpbnB1dCB0dXBsZSBpbnRvIHBhbGxvYydkIHNwYWNlLiAoTkI6IHdlCiAJICogYXNz dW1lIHRoYXQgYSBzaW5nbGUgcGZyZWUoKSBpcyBlbm91Z2ggdG8gcmVsZWFzZSB0aGUgdHVwbGUg bGF0ZXIsIHNvCiAJICogdGhlIHJlcHJlc2VudGF0aW9uIG11c3QgYmUgImZsYXQiIGluIG9uZSBw YWxsb2MgY2h1bmsuKSBzdGF0ZS0+YXZhaWxNZW0KQEAgLTE0MywxMiArMTQ3LDE4IEBAIHN0cnVj dCBUdXBsZXN0b3Jlc3RhdGUKIAogCS8qCiAJICogRnVuY3Rpb24gdG8gcmVhZCBhIHN0b3JlZCB0 dXBsZSBmcm9tIHRhcGUgYmFjayBpbnRvIG1lbW9yeS4gJ2xlbicgaXMKLQkgKiB0aGUgYWxyZWFk eS1yZWFkIGxlbmd0aCBvZiB0aGUgc3RvcmVkIHR1cGxlLiAgQ3JlYXRlIGFuZCByZXR1cm4gYQot CSAqIHBhbGxvYydkIGNvcHksIGFuZCBkZWNyZWFzZSBzdGF0ZS0+YXZhaWxNZW0gYnkgdGhlIGFt b3VudCBvZiBtZW1vcnkKLQkgKiBzcGFjZSBjb25zdW1lZC4KKwkgKiB0aGUgYWxyZWFkeS1rbm93 biAocmVhZCBvZiBjb25zdGFudCkgbGVuZ3RoIG9mIHRoZSBzdG9yZWQgdHVwbGUuCisJICogQ3Jl YXRlIGFuZCByZXR1cm4gYSBwYWxsb2MnZCBjb3B5LCBhbmQgZGVjcmVhc2Ugc3RhdGUtPmF2YWls TWVtIGJ5IHRoZQorCSAqIGFtb3VudCBvZiBtZW1vcnkgc3BhY2UgY29uc3VtZWQuCiAJICovCiAJ dm9pZAkgICAqKCpyZWFkdHVwKSAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdW5zaWduZWQgaW50 IGxlbik7CiAKKwkvKgorCSAqIEZ1bmN0aW9uIHRvIGdldCBsZW5naCBvZiB0dXBsZSBmcm9tIHRh cGUuIFVzZWQgdG8gcHJvdmlkZSAnbGVuJyBhcmd1bWVudAorCSAqIGZvciByZWFkdHVwIChzZWUg YWJvdmUpLgorCSAqLworCXVuc2lnbmVkIGludCgqbGVudHVwKShUdXBsZXN0b3Jlc3RhdGUgKnN0 YXRlLCBib29sIGVvZk9LKTsKKwogCS8qCiAJICogVGhpcyBhcnJheSBob2xkcyBwb2ludGVycyB0 byB0dXBsZXMgaW4gbWVtb3J5IGlmIHdlIGFyZSBpbiBzdGF0ZSBJTk1FTS4KIAkgKiBJbiBzdGF0 ZXMgV1JJVEVGSUxFIGFuZCBSRUFERklMRSBpdCdzIG5vdCB1c2VkLgpAQCAtMTg1LDYgKzE5NSw3 IEBAIHN0cnVjdCBUdXBsZXN0b3Jlc3RhdGUKICNkZWZpbmUgQ09QWVRVUChzdGF0ZSx0dXApCSgo KihzdGF0ZSktPmNvcHl0dXApIChzdGF0ZSwgdHVwKSkKICNkZWZpbmUgV1JJVEVUVVAoc3RhdGUs dHVwKSAoKCooc3RhdGUpLT53cml0ZXR1cCkgKHN0YXRlLCB0dXApKQogI2RlZmluZSBSRUFEVFVQ KHN0YXRlLGxlbikJKCgqKHN0YXRlKS0+cmVhZHR1cCkgKHN0YXRlLCBsZW4pKQorI2RlZmluZSBM RU5UVVAoc3RhdGUsZW9mT0spCSgoKihzdGF0ZSktPmxlbnR1cCkgKHN0YXRlLCBlb2ZPSykpCiAj ZGVmaW5lIExBQ0tNRU0oc3RhdGUpCQkoKHN0YXRlKS0+YXZhaWxNZW0gPCAwKQogI2RlZmluZSBV U0VNRU0oc3RhdGUsYW10KQkoKHN0YXRlKS0+YXZhaWxNZW0gLT0gKGFtdCkpCiAjZGVmaW5lIEZS RUVNRU0oc3RhdGUsYW10KQkoKHN0YXRlKS0+YXZhaWxNZW0gKz0gKGFtdCkpCkBAIC0xOTMsOSAr MjA0LDkgQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQogICoKICAqIE5PVEVTIGFib3V0IG9uLXRh cGUgcmVwcmVzZW50YXRpb24gb2YgdHVwbGVzOgogICoKLSAqIFdlIHJlcXVpcmUgdGhlIGZpcnN0 ICJ1bnNpZ25lZCBpbnQiIG9mIGEgc3RvcmVkIHR1cGxlIHRvIGJlIHRoZSB0b3RhbCBzaXplCi0g KiBvbi10YXBlIG9mIHRoZSB0dXBsZSwgaW5jbHVkaW5nIGl0c2VsZiAoc28gaXQgaXMgbmV2ZXIg emVybykuCi0gKiBUaGUgcmVtYWluZGVyIG9mIHRoZSBzdG9yZWQgdHVwbGUKKyAqIEluIGNhc2Ug b2YgdHVwbGVzIHdlIHVzZSBmaXJzdCAidW5zaWduZWQgaW50IiBvZiBhIHN0b3JlZCB0dXBsZQor ICogdG8gYmUgdGhlIHRvdGFsIHNpemUgb24tdGFwZSBvZiB0aGUgdHVwbGUsIGluY2x1ZGluZyBp dHNlbGYKKyAqIChzbyBpdCBpcyBuZXZlciB6ZXJvKS4gVGhlIHJlbWFpbmRlciBvZiB0aGUgc3Rv cmVkIHR1cGxlCiAgKiBtYXkgb3IgbWF5IG5vdCBtYXRjaCB0aGUgaW4tbWVtb3J5IHJlcHJlc2Vu dGF0aW9uIG9mIHRoZSB0dXBsZSAtLS0KICAqIGFueSBjb252ZXJzaW9uIG5lZWRlZCBpcyB0aGUg am9iIG9mIHRoZSB3cml0ZXR1cCBhbmQgcmVhZHR1cCByb3V0aW5lcy4KICAqCkBAIC0yMDYsMTAg KzIxNywxMyBAQCBzdHJ1Y3QgVHVwbGVzdG9yZXN0YXRlCiAgKiBzdGF0ZS0+YmFja3dhcmQgaXMg bm90IHNldCwgdGhlIHdyaXRlL3JlYWQgcm91dGluZXMgbWF5IG9taXQgdGhlIGV4dHJhCiAgKiBs ZW5ndGggd29yZC4KICAqCisgKiBJbiBjYXNlIG9mIERhdHVtIHdpdGggY29uc3RhbnQgbGVuZ2h0 IGJvdGggInVuc2lnbmVkIGludCIgYXJlIG9tbWl0dGVkLgorICoKICAqIHdyaXRldHVwIGlzIGV4 cGVjdGVkIHRvIHdyaXRlIGJvdGggbGVuZ3RoIHdvcmRzIGFzIHdlbGwgYXMgdGhlIHR1cGxlCiAg KiBkYXRhLiAgV2hlbiByZWFkdHVwIGlzIGNhbGxlZCwgdGhlIHRhcGUgaXMgcG9zaXRpb25lZCBq dXN0IGFmdGVyIHRoZQotICogZnJvbnQgbGVuZ3RoIHdvcmQ7IHJlYWR0dXAgbXVzdCByZWFkIHRo ZSB0dXBsZSBkYXRhIGFuZCBhZHZhbmNlIHBhc3QKLSAqIHRoZSBiYWNrIGxlbmd0aCB3b3JkIChp ZiBwcmVzZW50KS4KKyAqIGZyb250IGxlbmd0aCB3b3JkIChpZiBpdCBub3Qgb21taXR0ZWQgbGlr ZSBpbiBjYXNlIG9mIGNvbnRhbnQtc2l6ZSBEYXR1bSk7CisgKiByZWFkdHVwIG11c3QgcmVhZCB0 aGUgdHVwbGUgZGF0YSBhbmQgYWR2YW5jZSBwYXN0IHRoZSBiYWNrIGxlbmd0aCB3b3JkCisgKiAo aWYgcHJlc2VudCkuCiAgKgogICogVGhlIHdyaXRlL3JlYWQgcm91dGluZXMgY2FuIG1ha2UgdXNl IG9mIHRoZSB0dXBsZSBkZXNjcmlwdGlvbiBkYXRhCiAgKiBzdG9yZWQgaW4gdGhlIFR1cGxlc3Rv cmVzdGF0ZSByZWNvcmQsIGlmIG5lZWRlZC4gVGhleSBhcmUgYWxzbyBleHBlY3RlZApAQCAtMjQx LDExICsyNTUsMTYgQEAgc3RhdGljIFR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVzdG9yZV9iZWdpbl9j b21tb24oaW50IGVmbGFncywKIHN0YXRpYyB2b2lkIHR1cGxlc3RvcmVfcHV0dHVwbGVfY29tbW9u KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQgKnR1cGxlKTsKIHN0YXRpYyB2b2lkIGR1bXB0 dXBsZXMoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSk7CiBzdGF0aWMgdm9pZCB0dXBsZXN0b3JlX3Vw ZGF0ZW1heChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlKTsKLXN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0 bGVuKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spOworCitzdGF0aWMgdW5zaWdu ZWQgaW50IGxlbnR1cF9oZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spOwog c3RhdGljIHZvaWQgKmNvcHl0dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkICp0 dXApOwogc3RhdGljIHZvaWQgd3JpdGV0dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2 b2lkICp0dXApOwogc3RhdGljIHZvaWQgKnJlYWR0dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUgKnN0 YXRlLCB1bnNpZ25lZCBpbnQgbGVuKTsKIAorc3RhdGljIHVuc2lnbmVkIGludCBsZW50dXBfZGF0 dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSyk7CitzdGF0aWMgdm9pZCAqY29w eXR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkICpkYXR1bSk7CitzdGF0aWMg dm9pZCB3cml0ZXR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkICpkYXR1bSk7 CitzdGF0aWMgdm9pZCAqcmVhZHR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB1bnNp Z25lZCBpbnQgbGVuKTsKIAogLyoKICAqCQl0dXBsZXN0b3JlX2JlZ2luX3h4eApAQCAtMjY4LDYg KzI4NywxMiBAQCB0dXBsZXN0b3JlX2JlZ2luX2NvbW1vbihpbnQgZWZsYWdzLCBib29sIGludGVy WGFjdCwgaW50IG1heEtCeXRlcykKIAlzdGF0ZS0+YWxsb3dlZE1lbSA9IG1heEtCeXRlcyAqIChp bnQ2NCkgMTAyNDsKIAlzdGF0ZS0+YXZhaWxNZW0gPSBzdGF0ZS0+YWxsb3dlZE1lbTsKIAlzdGF0 ZS0+bXlmaWxlID0gTlVMTDsKKwkvKgorCSAqIFNldCBEYXR1bSByZWxhdGVkIGRhdGEgdG8gaW52 YWxpZCBieSBkZWZhdWx0LgorCSAqLworCXN0YXRlLT5kYXR1bVR5cGUgPSBJbnZhbGlkT2lkOwor CXN0YXRlLT5kYXR1bVR5cGVMZW4gPSAgMDsKKwlzdGF0ZS0+ZGF0dW1UeXBlQnlWYWwgPSBmYWxz ZTsKIAogCS8qCiAJICogVGhlIHBhbGxvYy9wZnJlZSBwYXR0ZXJuIGZvciB0dXBsZSBtZW1vcnkg aXMgaW4gYSBGSUZPIHBhdHRlcm4uICBBCkBAIC0zNDUsNiArMzcwLDM2IEBAIHR1cGxlc3RvcmVf YmVnaW5faGVhcChib29sIHJhbmRvbUFjY2VzcywgYm9vbCBpbnRlclhhY3QsIGludCBtYXhLQnl0 ZXMpCiAJc3RhdGUtPmNvcHl0dXAgPSBjb3B5dHVwX2hlYXA7CiAJc3RhdGUtPndyaXRldHVwID0g d3JpdGV0dXBfaGVhcDsKIAlzdGF0ZS0+cmVhZHR1cCA9IHJlYWR0dXBfaGVhcDsKKwlzdGF0ZS0+ bGVudHVwID0gbGVudHVwX2hlYXA7CisKKwlyZXR1cm4gc3RhdGU7Cit9CisKKy8qCisgKiBUaGUg c2FtZSBhcyB0dXBsZXN0b3JlX2JlZ2luX2hlYXAgYnV0IGNyZWF0ZSBzdG9yZSBmb3IgRGF0dW0g dmFsdWVzLgorICovCitUdXBsZXN0b3Jlc3RhdGUgKgordHVwbGVzdG9yZV9iZWdpbl9kYXR1bShP aWQgZGF0dW1UeXBlLCBib29sIHJhbmRvbUFjY2VzcywgYm9vbCBpbnRlclhhY3QsIGludCBtYXhL Qnl0ZXMpCit7CisJVHVwbGVzdG9yZXN0YXRlICpzdGF0ZTsKKwlpbnQJCQllZmxhZ3M7CisKKwkv KgorCSAqIFRoaXMgaW50ZXJwcmV0YXRpb24gb2YgdGhlIG1lYW5pbmcgb2YgcmFuZG9tQWNjZXNz IGlzIGNvbXBhdGlibGUgd2l0aAorCSAqIHRoZSBwcmUtOC4zIGJlaGF2aW9yIG9mIHR1cGxlc3Rv cmVzLgorCSAqLworCWVmbGFncyA9IHJhbmRvbUFjY2VzcyA/CisJCShFWEVDX0ZMQUdfQkFDS1dB UkQgfCBFWEVDX0ZMQUdfUkVXSU5EKSA6CisJCShFWEVDX0ZMQUdfUkVXSU5EKTsKKworCXN0YXRl ID0gdHVwbGVzdG9yZV9iZWdpbl9jb21tb24oZWZsYWdzLCBpbnRlclhhY3QsIG1heEtCeXRlcyk7 CisJc3RhdGUtPmRhdHVtVHlwZSA9IGRhdHVtVHlwZTsKKwlnZXRfdHlwbGVuYnl2YWwoc3RhdGUt PmRhdHVtVHlwZSwgJnN0YXRlLT5kYXR1bVR5cGVMZW4sICZzdGF0ZS0+ZGF0dW1UeXBlQnlWYWwp OworCisJc3RhdGUtPmNvcHl0dXAgPSBjb3B5dHVwX2RhdHVtOworCXN0YXRlLT53cml0ZXR1cCA9 IHdyaXRldHVwX2RhdHVtOworCXN0YXRlLT5yZWFkdHVwID0gcmVhZHR1cF9kYXR1bTsKKwlzdGF0 ZS0+bGVudHVwID0gbGVudHVwX2RhdHVtOwogCiAJcmV0dXJuIHN0YXRlOwogfQpAQCAtNDQzLDE2 ICs0OTgsMTkgQEAgdHVwbGVzdG9yZV9jbGVhcihUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlKQogCXsK IAkJaW50NjQJCWF2YWlsTWVtID0gc3RhdGUtPmF2YWlsTWVtOwogCi0JCS8qCi0JCSAqIEJlbG93 LCB3ZSByZXNldCB0aGUgbWVtb3J5IGNvbnRleHQgZm9yIHN0b3JpbmcgdHVwbGVzLiAgVG8gc2F2 ZQotCQkgKiBmcm9tIGhhdmluZyB0byBhbHdheXMgY2FsbCBHZXRNZW1vcnlDaHVua1NwYWNlKCkg b24gYWxsIHN0b3JlZAotCQkgKiB0dXBsZXMsIHdlIGFkanVzdCB0aGUgYXZhaWxNZW0gdG8gZm9y Z2V0IGFsbCB0aGUgdHVwbGVzIGFuZCBqdXN0Ci0JCSAqIHJlY2FsbCBVU0VNRU0gZm9yIHRoZSBz cGFjZSB1c2VkIGJ5IHRoZSBtZW10dXBsZXMgYXJyYXkuICBIZXJlIHdlCi0JCSAqIGp1c3QgQXNz ZXJ0IHRoYXQncyBjb3JyZWN0IGFuZCB0aGUgbWVtb3J5IHRyYWNraW5nIGhhc24ndCBnb25lCi0J CSAqIHdyb25nIGFueXdoZXJlLgotCQkgKi8KLQkJZm9yIChpID0gc3RhdGUtPm1lbXR1cGRlbGV0 ZWQ7IGkgPCBzdGF0ZS0+bWVtdHVwY291bnQ7IGkrKykKLQkJCWF2YWlsTWVtICs9IEdldE1lbW9y eUNodW5rU3BhY2Uoc3RhdGUtPm1lbXR1cGxlc1tpXSk7CisJCWlmICghc3RhdGUtPmRhdHVtVHlw ZUJ5VmFsKQorCQl7CisJCQkvKgorCQkJICogQmVsb3csIHdlIHJlc2V0IHRoZSBtZW1vcnkgY29u dGV4dCBmb3Igc3RvcmluZyB0dXBsZXMuICBUbyBzYXZlCisJCQkgKiBmcm9tIGhhdmluZyB0byBh bHdheXMgY2FsbCBHZXRNZW1vcnlDaHVua1NwYWNlKCkgb24gYWxsIHN0b3JlZAorCQkJICogdHVw bGVzLCB3ZSBhZGp1c3QgdGhlIGF2YWlsTWVtIHRvIGZvcmdldCBhbGwgdGhlIHR1cGxlcyBhbmQg anVzdAorCQkJICogcmVjYWxsIFVTRU1FTSBmb3IgdGhlIHNwYWNlIHVzZWQgYnkgdGhlIG1lbXR1 cGxlcyBhcnJheS4gIEhlcmUgd2UKKwkJCSAqIGp1c3QgQXNzZXJ0IHRoYXQncyBjb3JyZWN0IGFu ZCB0aGUgbWVtb3J5IHRyYWNraW5nIGhhc24ndCBnb25lCisJCQkgKiB3cm9uZyBhbnl3aGVyZS4K KwkJCSAqLworCQkJZm9yIChpID0gc3RhdGUtPm1lbXR1cGRlbGV0ZWQ7IGkgPCBzdGF0ZS0+bWVt dHVwY291bnQ7IGkrKykKKwkJCQlhdmFpbE1lbSArPSBHZXRNZW1vcnlDaHVua1NwYWNlKHN0YXRl LT5tZW10dXBsZXNbaV0pOworCQl9CiAKIAkJYXZhaWxNZW0gKz0gR2V0TWVtb3J5Q2h1bmtTcGFj ZShzdGF0ZS0+bWVtdHVwbGVzKTsKIApAQCAtNzc2LDYgKzgzNCwyNSBAQCB0dXBsZXN0b3JlX3B1 dHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIEhlYXBUdXBsZSB0dXBsZSkKIAlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIH0KIAorLyoKKyAqIExpa2UgdHVwbGVzdG9yZV9wdXR0 dXBsZXNsb3QgYnV0IGZvciBzaW5nbGUgRGF0dW0uCisgKi8KK3ZvaWQKK3R1cGxlc3RvcmVfcHV0 ZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgRGF0dW0gZGF0dW0pCit7CisJTWVtb3J5Q29u dGV4dCBvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oc3RhdGUtPmNvbnRleHQpOworCisJ LyoKKwkgKiBDb3B5IHRoZSBEYXR1bS4gIChNdXN0IGRvIHRoaXMgZXZlbiBpbiBXUklURUZJTEUg Y2FzZS4gIE5vdGUgdGhhdAorCSAqIENPUFlUVVAgaW5jbHVkZXMgVVNFTUVNLCBzbyB3ZSBuZWVk bid0IGRvIHRoYXQgaGVyZS4pCisJICovCisJZGF0dW0gPSBQb2ludGVyR2V0RGF0dW0oQ09QWVRV UChzdGF0ZSwgRGF0dW1HZXRQb2ludGVyKGRhdHVtKSkpOworCisJdHVwbGVzdG9yZV9wdXR0dXBs ZV9jb21tb24oc3RhdGUsIERhdHVtR2V0UG9pbnRlcihkYXR1bSkpOworCisJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisKIC8qCiAgKiBTaW1pbGFyIHRvIHR1cGxlc3RvcmVfcHV0 dHVwbGUoKSwgYnV0IHdvcmsgZnJvbSB2YWx1ZXMgKyBudWxscyBhcnJheXMuCiAgKiBUaGlzIGF2 b2lkcyBhbiBleHRyYSB0dXBsZS1jb25zdHJ1Y3Rpb24gb3BlcmF0aW9uLgpAQCAtMTAyNywxMCAr MTEwNCwxMCBAQCB0dXBsZXN0b3JlX2dldHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJv b2wgZm9yd2FyZCwKIAkJCS8qIEZBTExUSFJPVUdIICovCiAKIAkJY2FzZSBUU1NfUkVBREZJTEU6 Ci0JCQkqc2hvdWxkX2ZyZWUgPSB0cnVlOworCQkJKnNob3VsZF9mcmVlID0gIXN0YXRlLT5kYXR1 bVR5cGVCeVZhbDsKIAkJCWlmIChmb3J3YXJkKQogCQkJewotCQkJCWlmICgodHVwbGVuID0gZ2V0 bGVuKHN0YXRlLCB0cnVlKSkgIT0gMCkKKwkJCQlpZiAoKHR1cGxlbiA9IExFTlRVUChzdGF0ZSwg dHJ1ZSkpICE9IDApCiAJCQkJewogCQkJCQl0dXAgPSBSRUFEVFVQKHN0YXRlLCB0dXBsZW4pOwog CQkJCQlyZXR1cm4gdHVwOwpAQCAtMTA1OSw3ICsxMTM2LDcgQEAgdHVwbGVzdG9yZV9nZXR0dXBs ZShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQsCiAJCQkJQXNzZXJ0KCFzdGF0 ZS0+dHJ1bmNhdGVkKTsKIAkJCQlyZXR1cm4gTlVMTDsKIAkJCX0KLQkJCXR1cGxlbiA9IGdldGxl bihzdGF0ZSwgZmFsc2UpOworCQkJdHVwbGVuID0gTEVOVFVQKHN0YXRlLCBmYWxzZSk7CiAKIAkJ CWlmIChyZWFkcHRyLT5lb2ZfcmVhY2hlZCkKIAkJCXsKQEAgLTEwOTAsNyArMTE2Nyw3IEBAIHR1 cGxlc3RvcmVfZ2V0dHVwbGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAog CQkJCQlBc3NlcnQoIXN0YXRlLT50cnVuY2F0ZWQpOwogCQkJCQlyZXR1cm4gTlVMTDsKIAkJCQl9 Ci0JCQkJdHVwbGVuID0gZ2V0bGVuKHN0YXRlLCBmYWxzZSk7CisJCQkJdHVwbGVuID0gTEVOVFVQ KHN0YXRlLCBmYWxzZSk7CiAJCQl9CiAKIAkJCS8qCkBAIC0xMTUyLDYgKzEyMjksMjUgQEAgdHVw bGVzdG9yZV9nZXR0dXBsZXNsb3QoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJk LAogCX0KIH0KIAorZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9nZXRkYXR1bShUdXBsZXN0b3Jlc3Rh dGUgKnN0YXRlLCBib29sIGZvcndhcmQsCisJCQkJCQkJCWJvb2wgKnNob3VsZF9mcmVlLCBEYXR1 bSAqcmVzdWx0KQoreworCURhdHVtIGRhdHVtOworCSpzaG91bGRfZnJlZSA9IGZhbHNlOworCisJ ZGF0dW0gPSAoRGF0dW0pIHR1cGxlc3RvcmVfZ2V0dHVwbGUoc3RhdGUsIGZvcndhcmQsIHNob3Vs ZF9mcmVlKTsKKwlpZiAoZGF0dW0pCisJeworCQkqcmVzdWx0ID1kYXR1bTsKKwkJcmV0dXJuIHRy dWU7CisJfQorCWVsc2UKKwl7CisJCSpyZXN1bHQgPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJ CXJldHVybiBmYWxzZTsKKwl9Cit9CisKIC8qCiAgKiB0dXBsZXN0b3JlX2FkdmFuY2UgLSBleHBv cnRlZCBmdW5jdGlvbiB0byBhZGp1c3QgcG9zaXRpb24gd2l0aG91dCBmZXRjaGluZwogICoKQEAg LTE0NjAsOCArMTU1NiwxMSBAQCB0dXBsZXN0b3JlX3RyaW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0 ZSkKIAkvKiBSZWxlYXNlIG5vLWxvbmdlci1uZWVkZWQgdHVwbGVzICovCiAJZm9yIChpID0gc3Rh dGUtPm1lbXR1cGRlbGV0ZWQ7IGkgPCBucmVtb3ZlOyBpKyspCiAJewotCQlGUkVFTUVNKHN0YXRl LCBHZXRNZW1vcnlDaHVua1NwYWNlKHN0YXRlLT5tZW10dXBsZXNbaV0pKTsKLQkJcGZyZWUoc3Rh dGUtPm1lbXR1cGxlc1tpXSk7CisJCWlmICghc3RhdGUtPmRhdHVtVHlwZUJ5VmFsKQorCQl7CisJ CQlGUkVFTUVNKHN0YXRlLCBHZXRNZW1vcnlDaHVua1NwYWNlKHN0YXRlLT5tZW10dXBsZXNbaV0p KTsKKwkJCXBmcmVlKHN0YXRlLT5tZW10dXBsZXNbaV0pOworCQl9CiAJCXN0YXRlLT5tZW10dXBs ZXNbaV0gPSBOVUxMOwogCX0KIAlzdGF0ZS0+bWVtdHVwZGVsZXRlZCA9IG5yZW1vdmU7CkBAIC0x NTU2LDI1ICsxNjU1LDYgQEAgdHVwbGVzdG9yZV9pbl9tZW1vcnkoVHVwbGVzdG9yZXN0YXRlICpz dGF0ZSkKIAlyZXR1cm4gKHN0YXRlLT5zdGF0dXMgPT0gVFNTX0lOTUVNKTsKIH0KIAotCi0vKgot ICogVGFwZSBpbnRlcmZhY2Ugcm91dGluZXMKLSAqLwotCi1zdGF0aWMgdW5zaWduZWQgaW50Ci1n ZXRsZW4oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSykKLXsKLQl1bnNpZ25lZCBp bnQgbGVuOwotCXNpemVfdAkJbmJ5dGVzOwotCi0JbmJ5dGVzID0gQnVmRmlsZVJlYWRNYXliZUVP RihzdGF0ZS0+bXlmaWxlLCAmbGVuLCBzaXplb2YobGVuKSwgZW9mT0spOwotCWlmIChuYnl0ZXMg PT0gMCkKLQkJcmV0dXJuIDA7Ci0JZWxzZQotCQlyZXR1cm4gbGVuOwotfQotCi0KIC8qCiAgKiBS b3V0aW5lcyBzcGVjaWFsaXplZCBmb3IgSGVhcFR1cGxlIGNhc2UKICAqCkBAIC0xNTg1LDYgKzE2 NjUsMTkgQEAgZ2V0bGVuKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spCiAgKiB0 byB3cml0ZSB0aGF0IHNlcGFyYXRlbHkuCiAgKi8KIAorc3RhdGljIHVuc2lnbmVkIGludAorbGVu dHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSykKK3sKKwl1bnNpZ25l ZCBpbnQgbGVuOworCXNpemVfdAkJbmJ5dGVzOworCisJbmJ5dGVzID0gQnVmRmlsZVJlYWRNYXli ZUVPRihzdGF0ZS0+bXlmaWxlLCAmbGVuLCBzaXplb2YobGVuKSwgZW9mT0spOworCWlmIChuYnl0 ZXMgPT0gMCkKKwkJcmV0dXJuIDA7CisJZWxzZQorCQlyZXR1cm4gbGVuOworfQorCiBzdGF0aWMg dm9pZCAqCiBjb3B5dHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCAqdHVwKQog ewpAQCAtMTYzMSwzICsxNzI0LDk4IEBAIHJlYWR0dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUgKnN0 YXRlLCB1bnNpZ25lZCBpbnQgbGVuKQogCQlCdWZGaWxlUmVhZEV4YWN0KHN0YXRlLT5teWZpbGUs ICZ0dXBsZW4sIHNpemVvZih0dXBsZW4pKTsKIAlyZXR1cm4gdHVwbGU7CiB9CisKKy8qCisgKiBS b3V0aW5lcyBzcGVjaWFsaXplZCBmb3IgRGF0dW0gY2FzZS4KKyAqCisgKiBIYW5kbGVzIGJvdGgg Zml4ZWQgYW5kIHZhcmlhYmxlLWxlbmd0aCBEYXR1bXMgZWZmaWNpZW50bHk6CisgKiAtIEZpeGVk LWxlbmd0aDogc3RvcmVzIHJhdyBieXRlcyB3aXRob3V0IGxlbmd0aCBwcmVmaXgKKyAqIC0gVmFy aWFibGUtbGVuZ3RoOiBpbmNsdWRlcyBsZW5ndGggcHJlZml4IChhbmQgc3VmZml4IGlmIGJhY2t3 YXJkIHNjYW4pCisgKiAtIEJ5LXZhbHVlIHR5cGVzIGhhbmRsZWQgaW5saW5lIHdpdGhvdXQgZXh0 cmEgY29weWluZworICovCisKK3N0YXRpYyB1bnNpZ25lZCBpbnQKK2xlbnR1cF9kYXR1bShUdXBs ZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKQoreworCXVuc2lnbmVkIGludCBsZW47CisJ c2l6ZV90CQluYnl0ZXM7CisKKwlBc3NlcnQoc3RhdGUtPmRhdHVtVHlwZSAhPSBJbnZhbGlkT2lk KTsKKworCWlmIChzdGF0ZS0+ZGF0dW1UeXBlTGVuID4gMCkKKwkJcmV0dXJuIHN0YXRlLT5kYXR1 bVR5cGVMZW47CisKKwluYnl0ZXMgPSBCdWZGaWxlUmVhZE1heWJlRU9GKHN0YXRlLT5teWZpbGUs ICZsZW4sIHNpemVvZihsZW4pLCBlb2ZPSyk7CisJaWYgKG5ieXRlcyA9PSAwKQorCQlyZXR1cm4g MDsKKwllbHNlCisJCXJldHVybiBsZW47Cit9CisKK3N0YXRpYyB2b2lkICoKK2NvcHl0dXBfZGF0 dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCogZGF0dW0pCit7CisJQXNzZXJ0KHN0YXRl LT5kYXR1bVR5cGUgIT0gSW52YWxpZE9pZCk7CisJaWYgKHN0YXRlLT5kYXR1bVR5cGVCeVZhbCkK KwkJcmV0dXJuIERhdHVtR2V0UG9pbnRlcihQb2ludGVyR2V0RGF0dW0oZGF0dW0pKTsKKwllbHNl CisJeworCQlEYXR1bSBkID0gZGF0dW1Db3B5KFBvaW50ZXJHZXREYXR1bShkYXR1bSksIHN0YXRl LT5kYXR1bVR5cGVCeVZhbCwgc3RhdGUtPmRhdHVtVHlwZUxlbik7CisJCVVTRU1FTShzdGF0ZSwg R2V0TWVtb3J5Q2h1bmtTcGFjZShEYXR1bUdldFBvaW50ZXIoZCkpKTsKKwkJcmV0dXJuIERhdHVt R2V0UG9pbnRlcihkKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCit3cml0ZXR1cF9kYXR1bShUdXBs ZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkKiBkYXR1bSkKK3sKKwlBc3NlcnQoc3RhdGUtPmRhdHVt VHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAoc3RhdGUtPmRhdHVtVHlwZUJ5VmFsKQorCXsKKwkJ QXNzZXJ0KHN0YXRlLT5kYXR1bVR5cGVMZW4gPiAwKTsKKwkJQnVmRmlsZVdyaXRlKHN0YXRlLT5t eWZpbGUsIGRhdHVtLCBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsKKwl9CisJZWxzZQorCXsKKwkJU2l6 ZSBzaXplID0gc3RhdGUtPmRhdHVtVHlwZUxlbjsKKwkJaWYgKHN0YXRlLT5kYXR1bVR5cGVMZW4g PCAwKQorCQl7CisJCQlCdWZGaWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwgJnNpemUsIHNpemVvZihz aXplKSk7CisJCQlzaXplID0gZGF0dW1HZXRTaXplKFBvaW50ZXJHZXREYXR1bShkYXR1bSksIHN0 YXRlLT5kYXR1bVR5cGVCeVZhbCwgc3RhdGUtPmRhdHVtVHlwZUxlbik7CisJCX0KKworCQlCdWZG aWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwgZGF0dW0sIHNpemUpOworCisJCS8qIG5lZWQgdHJhaWxp bmcgbGVuZ3RoIHdvcmQ/ICovCisJCWlmIChzdGF0ZS0+YmFja3dhcmQgJiYgc3RhdGUtPmRhdHVt VHlwZUxlbiA8IDApCisJCQlCdWZGaWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwgJnNpemUsIHNpemVv ZihzaXplKSk7CisKKwkJRlJFRU1FTShzdGF0ZSwgR2V0TWVtb3J5Q2h1bmtTcGFjZShkYXR1bSkp OworCQlwZnJlZShkYXR1bSk7CisJfQorfQorCitzdGF0aWMgdm9pZCoKK3JlYWR0dXBfZGF0dW0o VHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdW5zaWduZWQgaW50IGxlbikKK3sKKwlBc3NlcnQoc3Rh dGUtPmRhdHVtVHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAoc3RhdGUtPmRhdHVtVHlwZUJ5VmFs KQorCXsKKwkJRGF0dW0gZGF0dW0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJCUFzc2VydChz dGF0ZS0+ZGF0dW1UeXBlTGVuID4gMCk7CisJCUFzc2VydChsZW4gPT0gc3RhdGUtPmRhdHVtVHlw ZUxlbik7CisJCUJ1ZkZpbGVSZWFkRXhhY3Qoc3RhdGUtPm15ZmlsZSwgJmRhdHVtLCBzdGF0ZS0+ ZGF0dW1UeXBlTGVuKTsKKwkJcmV0dXJuIERhdHVtR2V0UG9pbnRlcihkYXR1bSk7CisJfQorCWVs c2UKKwl7CisJCURhdHVtICpkYXR1bXMgPSBwYWxsb2MobGVuKTsKKwkJQnVmRmlsZVJlYWRFeGFj dChzdGF0ZS0+bXlmaWxlLCAmZGF0dW1zLCBsZW4pOworCisJCS8qIG5lZWQgdHJhaWxpbmcgbGVu Z3RoIHdvcmQ/ICovCisJCWlmIChzdGF0ZS0+YmFja3dhcmQgJiYgc3RhdGUtPmRhdHVtVHlwZUxl biA8IDApCisJCQlCdWZGaWxlUmVhZEV4YWN0KHN0YXRlLT5teWZpbGUsICZsZW4sIHNpemVvZihs ZW4pKTsKKworCQlyZXR1cm4gRGF0dW1HZXRQb2ludGVyKCpkYXR1bXMpOworCX0KK30KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUuaCBiL3NyYy9pbmNsdWRlL3V0aWxz L3R1cGxlc3RvcmUuaAppbmRleCA4NjViYTdiODI2NS4uMDM0MWM0N2I4NTEgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90 dXBsZXN0b3JlLmgKQEAgLTEsMTcgKzEsMTggQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAq IHR1cGxlc3RvcmUuaAotICoJICBHZW5lcmFsaXplZCByb3V0aW5lcyBmb3IgdGVtcG9yYXJ5IHR1 cGxlIHN0b3JhZ2UuCisgKgkgIEdlbmVyYWxpemVkIHJvdXRpbmVzIGZvciB0ZW1wb3Jhcnkgc3Rv cmFnZSBvZiB0dXBsZXMgYW5kIERhdHVtcy4KICAqCi0gKiBUaGlzIG1vZHVsZSBoYW5kbGVzIHRl bXBvcmFyeSBzdG9yYWdlIG9mIHR1cGxlcyBmb3IgcHVycG9zZXMgc3VjaAotICogYXMgTWF0ZXJp YWxpemUgbm9kZXMsIGhhc2hqb2luIGJhdGNoIGZpbGVzLCBldGMuICBJdCBpcyBlc3NlbnRpYWxs eQotICogYSBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1cGxlc29ydC5jOyBpdCBkb2VzIG5vIHNv cnRpbmcgb2YgdHVwbGVzCi0gKiBidXQgY2FuIG9ubHkgc3RvcmUgYW5kIHJlZ3VyZ2l0YXRlIGEg c2VxdWVuY2Ugb2YgdHVwbGVzLiAgSG93ZXZlciwKLSAqIGJlY2F1c2Ugbm8gc29ydCBpcyByZXF1 aXJlZCwgaXQgaXMgYWxsb3dlZCB0byBzdGFydCByZWFkaW5nIHRoZSBzZXF1ZW5jZQotICogYmVm b3JlIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVs IGZvciBjdXJzb3JzLAotICogYmVjYXVzZSBpdCBhbGxvd3MgcmFuZG9tIGFjY2VzcyB3aXRoaW4g dGhlIGFscmVhZHktc2Nhbm5lZCBwb3J0aW9uIG9mCi0gKiBhIHF1ZXJ5IHdpdGhvdXQgaGF2aW5n IHRvIHByb2Nlc3MgdGhlIHVuZGVybHlpbmcgc2NhbiB0byBjb21wbGV0aW9uLgotICogQWxzbywg aXQgaXMgcG9zc2libGUgdG8gc3VwcG9ydCBtdWx0aXBsZSBpbmRlcGVuZGVudCByZWFkIHBvaW50 ZXJzLgorICogVGhpcyBtb2R1bGUgaGFuZGxlcyB0ZW1wb3Jhcnkgc3RvcmFnZSBvZiBlaXRoZXIg dHVwbGVzIG9yIHNpbmdsZQorICogRGF0dW0gdmFsdWVzIGZvciBwdXJwb3NlcyBzdWNoIGFzIE1h dGVyaWFsaXplIG5vZGVzLCBoYXNoam9pbiBiYXRjaAorICogZmlsZXMsIGV0Yy4gSXQgaXMgZXNz ZW50aWFsbHkgYSBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1cGxlc29ydC5jOworICogaXQgZG9l cyBubyBzb3J0aW5nIG9mIHR1cGxlcyBidXQgY2FuIG9ubHkgc3RvcmUgYW5kIHJlZ3VyZ2l0YXRl IGEgc2VxdWVuY2UKKyAqIG9mIHR1cGxlcy4gIEhvd2V2ZXIsIGJlY2F1c2Ugbm8gc29ydCBpcyBy ZXF1aXJlZCwgaXQgaXMgYWxsb3dlZCB0byBzdGFydAorICogcmVhZGluZyB0aGUgc2VxdWVuY2Ug YmVmb3JlIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuLgorICoKKyAqIFRoaXMgaXMgcGFydGljdWxh cmx5IHVzZWZ1bCBmb3IgY3Vyc29ycywgYmVjYXVzZSBpdCBhbGxvd3MgcmFuZG9tIGFjY2Vzcwor ICogd2l0aGluIHRoZSBhbHJlYWR5LXNjYW5uZWQgcG9ydGlvbiBvZiBhIHF1ZXJ5IHdpdGhvdXQg aGF2aW5nIHRvIHByb2Nlc3MKKyAqIHRoZSB1bmRlcmx5aW5nIHNjYW4gdG8gY29tcGxldGlvbi4K ICAqCiAgKiBBIHRlbXBvcmFyeSBmaWxlIGlzIHVzZWQgdG8gaGFuZGxlIHRoZSBkYXRhIGlmIGl0 IGV4Y2VlZHMgdGhlCiAgKiBzcGFjZSBsaW1pdCBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlci4KQEAg LTM5LDE0ICs0MCwxMyBAQAogICovCiB0eXBlZGVmIHN0cnVjdCBUdXBsZXN0b3Jlc3RhdGUgVHVw bGVzdG9yZXN0YXRlOwogCi0vKgotICogQ3VycmVudGx5IHdlIG9ubHkgbmVlZCB0byBzdG9yZSBN aW5pbWFsVHVwbGVzLCBidXQgaXQgd291bGQgYmUgZWFzeQotICogdG8gc3VwcG9ydCB0aGUgc2Ft ZSBiZWhhdmlvciBmb3IgSW5kZXhUdXBsZXMgYW5kL29yIGJhcmUgRGF0dW1zLgotICovCi0KIGV4 dGVybiBUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc3RvcmVfYmVnaW5faGVhcChib29sIHJhbmRvbUFj Y2VzcywKIAkJCQkJCQkJCQkJICBib29sIGludGVyWGFjdCwKIAkJCQkJCQkJCQkJICBpbnQgbWF4 S0J5dGVzKTsKK2V4dGVybiBUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc3RvcmVfYmVnaW5fZGF0dW0o T2lkIGRhdHVtVHlwZSwKKwkJCQkJCQkJCQkJIGJvb2wgcmFuZG9tQWNjZXNzLAorCQkJCQkJCQkJ CQkgYm9vbCBpbnRlclhhY3QsCisJCQkJCQkJCQkJCSBpbnQgbWF4S0J5dGVzKTsKIAogZXh0ZXJu IHZvaWQgdHVwbGVzdG9yZV9zZXRfZWZsYWdzKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGludCBl ZmxhZ3MpOwogCkBAIC01NSw2ICs1NSw3IEBAIGV4dGVybiB2b2lkIHR1cGxlc3RvcmVfcHV0dHVw bGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsCiBleHRlcm4gdm9pZCB0dXBsZXN0b3JlX3B1 dHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIEhlYXBUdXBsZSB0dXBsZSk7CiBleHRlcm4g dm9pZCB0dXBsZXN0b3JlX3B1dHZhbHVlcyhUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBUdXBsZURl c2MgdGRlc2MsCiAJCQkJCQkJCSBjb25zdCBEYXR1bSAqdmFsdWVzLCBjb25zdCBib29sICppc251 bGwpOworZXh0ZXJuIHZvaWQgdHVwbGVzdG9yZV9wdXRkYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0 YXRlLCBEYXR1bSBkYXR1bSk7CiAKIGV4dGVybiBpbnQJdHVwbGVzdG9yZV9hbGxvY19yZWFkX3Bv aW50ZXIoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgaW50IGVmbGFncyk7CiAKQEAgLTcyLDYgKzcz LDggQEAgZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9pbl9tZW1vcnkoVHVwbGVzdG9yZXN0YXRlICpz dGF0ZSk7CiAKIGV4dGVybiBib29sIHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KFR1cGxlc3RvcmVz dGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCwKIAkJCQkJCQkJCWJvb2wgY29weSwgVHVwbGVUYWJs ZVNsb3QgKnNsb3QpOworZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9nZXRkYXR1bShUdXBsZXN0b3Jl c3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQsCisJCQkJCQkJCWJvb2wgKnNob3VsZF9mcmVlLCBE YXR1bSAqcmVzdWx0KTsKIAogZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9hZHZhbmNlKFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCk7CiAKLS0gCjIuNDMuMAoK --00000000000027fe8906381ae2a2 Content-Type: application/x-patch; name="v21-0006-Add-STIR-access-method-and-flags-related-to-auxi.patch" Content-Disposition: attachment; filename="v21-0006-Add-STIR-access-method-and-flags-related-to-auxi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8uy6 RnJvbSBmYThjYTJlMGVjNzU0NTE5YTRhOTU3NjlkZmZmM2IzNGIwN2I1YTQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyMSBEZWMgMjAyNCAxODozNjoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIxIDA2LzEyXSBBZGQgU1RJUiBhY2Nlc3MgbWV0aG9kIGFuZCBmbGFncyByZWxhdGVk IHRvCiBhdXhpbGlhcnkgaW5kZXhlcwoKVGhpcyBwYXRjaCBwcm92aWRlcyBpbmZyYXN0cnVjdHVy ZSBmb3IgZm9sbG93aW5nIGVuaGFuY2VtZW50cyB0byBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyBi eToKLSBpaV9BdXhpbGlhcnkgaW4gSW5kZXhJbmZvOiBpbmRpY2F0ZXMgdGhhdCBhbiBpbmRleCBp cyBhbiBhdXhpbGlhcnkgaW5kZXggdXNlZCBkdXJpbmcgY29uY3VycmVudCBpbmRleCBidWlsZAot IHZhbGlkYXRlX2luZGV4IGluIEluZGV4VmFjdXVtSW5mbzogc2V0IGlmIGluZGV4X2J1bGtfZGVs ZXRlIGNhbGxlZCBkdXJpbmcgdGhlIHZhbGlkYXRpb24gcGhhc2Ugb2YgY29uY3VycmVudCBpbmRl eCBidWlsZAotIFNUSVIoU2hvcnQtVGVybSBJbmRleCBSZXBsYWNlbWVudCkgYWNjZXNzIG1ldGhv ZCBpcyBpbnRyb2R1Y2VkLCBpbnRlbmRlZCBzb2xlbHkgZm9yIHNob3J0LWxpdmVkLCBhdXhpbGlh cnkgdXNhZ2UKClNUSVIgZnVuY3Rpb25zIGRlc2lnbmVkIGFzIGFuIGVwaGVtZXJhbCBoZWxwZXIg ZHVyaW5nIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB0ZW1wb3JhcmlseSBzdG9yaW5nIFRJRHMg d2l0aG91dCBwcm92aWRpbmcgdGhlIGZ1bGwgZmVhdHVyZXMgb2YgYSB0eXBpY2FsIGFjY2VzcyBt ZXRob2QuIEFzIHN1Y2gsIGl0IHJhaXNlcyB3YXJuaW5ncyBvciBlcnJvcnMgd2hlbiBhY2Nlc3Nl ZCBvdXRzaWRlIGl0cyBzcGVjaWFsaXplZCB1c2FnZSBwYXRoLgoKUGxhbm5lZCB0byBiZSB1c2Vk IGluIGZvbGxvd2luZyBjb21taXRzLgotLS0KIGNvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVw bGUuYyAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL01ha2VmaWxlICAgICAgICAg ICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICB8 ICAgMiArCiBzcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQgICAgICAgICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlICAgICAgICAgfCAgMTggKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9h Y2Nlc3Mvc3Rpci9zdGlyLmMgICAgICAgICAgIHwgNTgxICsrKysrKysrKysrKysrKysrKysrKysr CiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW1wYXJhbGxlbC5jICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5j cy5jICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5oICAgICAgICAg IHwgICAzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oICAgICAgICAgICAgICAgIHwgMTE3 ICsrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdCAgICAgICAgICAgIHwgICAzICsK IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5kYXQgICAgICAgfCAgIDQgKwogc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL2luZGV4X3Nl bGZ1bmNzLmggICAgICAgfCAgIDggKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbXV0aWxz Lm91dCAgICB8ICAgOCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91 dCB8ICAgNyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCAgICAgICB8ICAy NCArLQogMjQgZmlsZXMgY2hhbmdlZCwgNzg2IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCgpkaWZmIC0tZ2l0IGEvY29udHJp Yi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0 dXBsZS5jCmluZGV4IGE2ZGFkNTRmZjU4Li5jYTUyMTQ0NjFlNiAxMDA2NDQKLS0tIGEvY29udHJp Yi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCisrKyBiL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdz dGF0dHVwbGUuYwpAQCAtMjg1LDYgKzI4NSw5IEBAIHBnc3RhdF9yZWxhdGlvbihSZWxhdGlvbiBy ZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCQkJY2FzZSBTUEdJU1RfQU1fT0lEOgogCQkJ CWVyciA9ICJzcGdpc3QgaW5kZXgiOwogCQkJCWJyZWFrOworCQkJY2FzZSBTVElSX0FNX09JRDoK KwkJCQllcnIgPSAic3RpciBpbmRleCI7CisJCQkJYnJlYWs7CiAJCQljYXNlIEJSSU5fQU1fT0lE OgogCQkJCWVyciA9ICJicmluIGluZGV4IjsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZQppbmRl eCAxOTMyZDExZDE1NC4uY2Q2NTI0YTU0YWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZpbGUKQEAgLTksNiArOSw2 IEBAIHRvcF9idWlsZGRpciA9IC4uLy4uLy4uCiBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMv TWFrZWZpbGUuZ2xvYmFsCiAKIFNVQkRJUlMJICAgID0gYnJpbiBjb21tb24gZ2luIGdpc3QgaGFz aCBoZWFwIGluZGV4IG5idHJlZSBybWdyZGVzYyBzcGdpc3QgXAotCQkJICBzZXF1ZW5jZSB0YWJs ZSB0YWJsZXNhbXBsZSB0cmFuc2FtCisJCQkgIHN0aXIgc2VxdWVuY2UgdGFibGUgdGFibGVzYW1w bGUgdHJhbnNhbQogCiBpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1r CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMDk0MTY0NTBhZjkuLjg5M2Fl ZDBiMGQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0zMDk4LDYgKzMw OTgsNyBAQCBsYXp5X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1bGtE ZWxldGVSZXN1bHQgKmlzdGF0LAogCWl2aW5mby5tZXNzYWdlX2xldmVsID0gREVCVUcyOwogCWl2 aW5mby5udW1faGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gdmFj cmVsLT5ic3RyYXRlZ3k7CisJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gZmFsc2U7CiAKIAkvKgog CSAqIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24uCkBAIC0zMTQ5LDYgKzMxNTAs NyBAQCBsYXp5X2NsZWFudXBfb25lX2luZGV4KFJlbGF0aW9uIGluZHJlbCwgSW5kZXhCdWxrRGVs ZXRlUmVzdWx0ICppc3RhdCwKIAogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSByZWx0dXBsZXM7 CiAJaXZpbmZvLnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRlZ3k7CisJaXZpbmZvLnZhbGlkYXRl X2luZGV4ID0gZmFsc2U7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3Jt YXRpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQgYi9zcmMv YmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQKaW5kZXggN2EyZDBkZGI2ODkuLmExNTZjZGRmZjM1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkCkBAIC0xMSw2ICsxMSw3IEBAIHN1YmRpcignbmJ0cmVl JykKIHN1YmRpcigncm1ncmRlc2MnKQogc3ViZGlyKCdzZXF1ZW5jZScpCiBzdWJkaXIoJ3NwZ2lz dCcpCitzdWJkaXIoJ3N0aXInKQogc3ViZGlyKCd0YWJsZScpCiBzdWJkaXIoJ3RhYmxlc2FtcGxl JykKIHN1YmRpcigndHJhbnNhbScpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rp ci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mYWU1ODk4YjhkNwotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlCkBAIC0wLDAgKzEsMTggQEAKKyMt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisjCisjIE1ha2VmaWxlLS0KKyMgICAgTWFrZWZpbGUgZm9yIGFjY2Vz cy9zdGlyCisjCisjIElERU5USUZJQ0FUSU9OCisjICAgIHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGly L01ha2VmaWxlCisjCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdWJkaXIgPSBzcmMvYmFja2VuZC9h Y2Nlc3Mvc3RpcgordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVp bGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKKworT0JKUyA9IFwKKwlzdGlyLm8KKworaW5jbHVk ZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1aWxk IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM5YzZlY2E4NDhkCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQKQEAgLTAsMCArMSw1IEBACisjIENvcHly aWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworYmFj a2VuZF9zb3VyY2VzICs9IGZpbGVzKAorCSdzdGlyLmMnLAorKQpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uMmUwODNkOTUyZDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3Mvc3Rpci9zdGlyLmMKQEAgLTAsMCArMSw1ODEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIHN0aXIuYworICoJICBJbXBsZW1lbnRhdGlvbiBvZiBTaG9ydC1UZXJtIEluZGV4IFJl cGxhY2VtZW50LgorICoKKyAqIFNUSVIgaXMgYSBzcGVjaWFsaXplZCBhY2Nlc3MgbWV0aG9kIHR5 cGUgZGVzaWduZWQgZm9yIHRlbXBvcmFyeSBzdG9yYWdlCisgKiBvZiBUSUQgdmFsdWVzIGR1cmlu ZyBjb25jdXJlcm50IGluZGV4IGJ1aWxkIG9wZXJhdGlvbnMuCisgKgorICogVGhlIHR5cGljYWwg bGlmZWN5Y2xlIG9mIGEgU1RJUiBpbmRleCBpczoKKyAqIDEuIGNyZWF0ZWQgYXMgYW4gYXV4aWxp YXJ5IGluZGV4IGZvciBDSUMvUklDCisgKiAyLiBhY2NlcHRzIGluc2VydHMgZm9yIGEgcGVyaW9k CisgKiAzLiBzdGlyYnVsa2RlbGV0ZSBjYWxsZWQgZHVyaW5nIGluZGV4IHZhbGlkYXRpb24gcGhh c2UKKyAqIDUuIGdldHMgZHJvcHBlZAorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAy NSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNB VElPTgorICoJICBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMKKyAqCisgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3Mv c3Rpci5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgImFjY2Vzcy9hbXZhbGlk YXRlLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImFjY2Vz cy90YWJsZWFtLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfYW1vcC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKKyNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKKyNp bmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInV0aWxzL2NhdGNhY2hlLmgiCisj aW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorI2luY2x1ZGUgInV0aWxzL2luZGV4X3NlbGZ1 bmNzLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWdw cm9jLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworLyoKKyAqIFN0aXIgaGFuZGxl ciBmdW5jdGlvbjogcmV0dXJuIEluZGV4QW1Sb3V0aW5lIHdpdGggYWNjZXNzIG1ldGhvZCBwYXJh bWV0ZXJzCisgKiBhbmQgY2FsbGJhY2tzLgorICovCitEYXR1bQorc3RpcmhhbmRsZXIoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlJbmRleEFtUm91dGluZSAqYW1yb3V0aW5lID0gbWFrZU5vZGUoSW5k ZXhBbVJvdXRpbmUpOworCisJLyogU2V0IFNUSVItc3BlY2lmaWMgc3RyYXRlZ3kgYW5kIHByb2Nl ZHVyZSBudW1iZXJzICovCisJYW1yb3V0aW5lLT5hbXN0cmF0ZWdpZXMgPSBTVElSX05TVFJBVEVH SUVTOworCWFtcm91dGluZS0+YW1zdXBwb3J0ID0gU1RJUl9OUFJPQzsKKwlhbXJvdXRpbmUtPmFt b3B0c3Byb2NudW0gPSBTVElSX09QVElPTlNfUFJPQzsKKworCS8qIFNUSVIgZG9lc24ndCBzdXBw b3J0IG1vc3QgaW5kZXggb3BlcmF0aW9ucyAqLworCWFtcm91dGluZS0+YW1jYW5vcmRlciA9IGZh bHNlOworCWFtcm91dGluZS0+YW1jYW5vcmRlcmJ5b3AgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFt Y2FuYmFja3dhcmQgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FudW5pcXVlID0gZmFsc2U7CisJ YW1yb3V0aW5lLT5hbWNhbm11bHRpY29sID0gdHJ1ZTsKKwlhbXJvdXRpbmUtPmFtb3B0aW9uYWxr ZXkgPSB0cnVlOworCWFtcm91dGluZS0+YW1zZWFyY2hhcnJheSA9IGZhbHNlOworCWFtcm91dGlu ZS0+YW1zZWFyY2hudWxscyA9IGZhbHNlOworCWFtcm91dGluZS0+YW1zdG9yYWdlID0gZmFsc2U7 CisJYW1yb3V0aW5lLT5hbWNsdXN0ZXJhYmxlID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbXByZWRs b2NrcyA9IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5wYXJhbGxlbCA9IGZhbHNlOworCWFtcm91 dGluZS0+YW1jYW5idWlsZHBhcmFsbGVsID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbmluY2x1 ZGUgPSB0cnVlOworCWFtcm91dGluZS0+YW11c2VtYWludGVuYW5jZXdvcmttZW0gPSBmYWxzZTsK KwlhbXJvdXRpbmUtPmFtcGFyYWxsZWx2YWN1dW1vcHRpb25zID0KKwkJCVZBQ1VVTV9PUFRJT05f UEFSQUxMRUxfQlVMS0RFTCB8IFZBQ1VVTV9PUFRJT05fUEFSQUxMRUxfQ0xFQU5VUDsKKwlhbXJv dXRpbmUtPmFta2V5dHlwZSA9IEludmFsaWRPaWQ7CisKKwkvKiBTZXQgdXAgZnVuY3Rpb24gY2Fs bGJhY2tzICovCisJYW1yb3V0aW5lLT5hbWJ1aWxkID0gc3RpcmJ1aWxkOworCWFtcm91dGluZS0+ YW1idWlsZGVtcHR5ID0gc3RpcmJ1aWxkZW1wdHk7CisJYW1yb3V0aW5lLT5hbWluc2VydCA9IHN0 aXJpbnNlcnQ7CisJYW1yb3V0aW5lLT5hbWluc2VydGNsZWFudXAgPSBOVUxMOworCWFtcm91dGlu ZS0+YW1idWxrZGVsZXRlID0gc3RpcmJ1bGtkZWxldGU7CisJYW1yb3V0aW5lLT5hbXZhY3V1bWNs ZWFudXAgPSBzdGlydmFjdXVtY2xlYW51cDsKKwlhbXJvdXRpbmUtPmFtY2FucmV0dXJuID0gTlVM TDsKKwlhbXJvdXRpbmUtPmFtY29zdGVzdGltYXRlID0gc3RpcmNvc3Rlc3RpbWF0ZTsKKwlhbXJv dXRpbmUtPmFtb3B0aW9ucyA9IHN0aXJvcHRpb25zOworCWFtcm91dGluZS0+YW1wcm9wZXJ0eSA9 IE5VTEw7CisJYW1yb3V0aW5lLT5hbWJ1aWxkcGhhc2VuYW1lID0gTlVMTDsKKwlhbXJvdXRpbmUt PmFtdmFsaWRhdGUgPSBzdGlydmFsaWRhdGU7CisJYW1yb3V0aW5lLT5hbWFkanVzdG1lbWJlcnMg PSBOVUxMOworCWFtcm91dGluZS0+YW1iZWdpbnNjYW4gPSBzdGlyYmVnaW5zY2FuOworCWFtcm91 dGluZS0+YW1yZXNjYW4gPSBzdGlycmVzY2FuOworCWFtcm91dGluZS0+YW1nZXR0dXBsZSA9IE5V TEw7CisJYW1yb3V0aW5lLT5hbWdldGJpdG1hcCA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWVuZHNj YW4gPSBzdGlyZW5kc2NhbjsKKwlhbXJvdXRpbmUtPmFtbWFya3BvcyA9IE5VTEw7CisJYW1yb3V0 aW5lLT5hbXJlc3RycG9zID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtZXN0aW1hdGVwYXJhbGxlbHNj YW4gPSBOVUxMOworCWFtcm91dGluZS0+YW1pbml0cGFyYWxsZWxzY2FuID0gTlVMTDsKKwlhbXJv dXRpbmUtPmFtcGFyYWxsZWxyZXNjYW4gPSBOVUxMOworCisJUEdfUkVUVVJOX1BPSU5URVIoYW1y b3V0aW5lKTsKK30KKworLyoKKyAqIFZhbGlkYXRlcyBvcGVyYXRvciBjbGFzcyBmb3IgU1RJUiBp bmRleC4KKyAqCisgKiBTVElSIGlzIG5vdCBhbiByZWFsIGluZGV4LCBzbyB2YWxpZGF0aW8gbWF5 IGJlIHNraXBwZWQuCisgKiBCdXQgd2UgZG8gaXQganVzdCBmb3IgY29uc2lzdGVuY3kuCisgKi8K K2Jvb2wKK3N0aXJ2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKK3sKKwlib29sIHJlc3VsdCA9IHRy dWU7CisJSGVhcFR1cGxlIGNsYXNzdHVwOworCUZvcm1fcGdfb3BjbGFzcyBjbGFzc2Zvcm07CisJ T2lkIG9wZmFtaWx5b2lkOworCUhlYXBUdXBsZSBmYW1pbHl0dXA7CisJRm9ybV9wZ19vcGZhbWls eSBmYW1pbHlmb3JtOworCWNoYXIgKm9wZmFtaWx5bmFtZTsKKwlDYXRDTGlzdCAqcHJvY2xpc3Qs CisJCQkqb3BybGlzdDsKKwlpbnQgaTsKKworCS8qIEZldGNoIG9wY2xhc3MgaW5mb3JtYXRpb24g Ki8KKwljbGFzc3R1cCA9IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9iamVjdElkR2V0RGF0dW0o b3BjbGFzc29pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFzc3R1cCkpCisJCWVsb2co RVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGVyYXRvciBjbGFzcyAldSIsIG9wY2xh c3NvaWQpOworCWNsYXNzZm9ybSA9IChGb3JtX3BnX29wY2xhc3MpIEdFVFNUUlVDVChjbGFzc3R1 cCk7CisKKwlvcGZhbWlseW9pZCA9IGNsYXNzZm9ybS0+b3BjZmFtaWx5OworCisKKwkvKiBGZXRj aCBvcGZhbWlseSBpbmZvcm1hdGlvbiAqLworCWZhbWlseXR1cCA9IFNlYXJjaFN5c0NhY2hlMShP UEZBTUlMWU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseW9pZCkpOworCWlmICghSGVhcFR1 cGxlSXNWYWxpZChmYW1pbHl0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3Igb3BlcmF0b3IgZmFtaWx5ICV1Iiwgb3BmYW1pbHlvaWQpOworCWZhbWlseWZvcm0gPSAo Rm9ybV9wZ19vcGZhbWlseSkgR0VUU1RSVUNUKGZhbWlseXR1cCk7CisKKwlvcGZhbWlseW5hbWUg PSBOYW1lU3RyKGZhbWlseWZvcm0tPm9wZm5hbWUpOworCisJLyogRmV0Y2ggYWxsIG9wZXJhdG9y cyBhbmQgc3VwcG9ydCBmdW5jdGlvbnMgb2YgdGhlIG9wZmFtaWx5ICovCisJb3BybGlzdCA9IFNl YXJjaFN5c0NhY2hlTGlzdDEoQU1PUFNUUkFURUdZLCBPYmplY3RJZEdldERhdHVtKG9wZmFtaWx5 b2lkKSk7CisJcHJvY2xpc3QgPSBTZWFyY2hTeXNDYWNoZUxpc3QxKEFNUFJPQ05VTSwgT2JqZWN0 SWRHZXREYXR1bShvcGZhbWlseW9pZCkpOworCisJLyogQ2hlY2sgaW5kaXZpZHVhbCBvcGVyYXRv cnMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgb3BybGlzdC0+bl9tZW1iZXJzOyBpKyspCisJeworCQlI ZWFwVHVwbGUgb3BydHVwID0gJm9wcmxpc3QtPm1lbWJlcnNbaV0tPnR1cGxlOworCQlGb3JtX3Bn X2Ftb3Agb3ByZm9ybSA9IChGb3JtX3BnX2Ftb3ApIEdFVFNUUlVDVChvcHJ0dXApOworCisJCS8q IENoZWNrIGl0J3MgYWxsb3dlZCBzdHJhdGVneSBmb3Igc3RpciAqLworCQlpZiAob3ByZm9ybS0+ YW1vcHN0cmF0ZWd5IDwgMSB8fAorCQkJb3ByZm9ybS0+YW1vcHN0cmF0ZWd5ID4gU1RJUl9OU1RS QVRFR0lFUykKKwkJeworCQkJZXJlcG9ydChJTkZPLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygic3RpciBvcGZhbWlseSAl cyBjb250YWlucyBvcGVyYXRvciAlcyB3aXRoIGludmFsaWQgc3RyYXRlZ3kgbnVtYmVyICVkIiwK KwkJCQkJCQkJICAgb3BmYW1pbHluYW1lLAorCQkJCQkJCQkgICBmb3JtYXRfb3BlcmF0b3Iob3By Zm9ybS0+YW1vcG9wciksCisJCQkJCQkJCSAgIG9wcmZvcm0tPmFtb3BzdHJhdGVneSkpKTsKKwkJ CXJlc3VsdCA9IGZhbHNlOworCQl9CisKKwkJLyogc3RpciBkb2Vzbid0IHN1cHBvcnQgT1JERVIg Qlkgb3BlcmF0b3JzICovCisJCWlmIChvcHJmb3JtLT5hbW9wcHVycG9zZSAhPSBBTU9QX1NFQVJD SCB8fAorCQkJT2lkSXNWYWxpZChvcHJmb3JtLT5hbW9wc29ydGZhbWlseSkpCisJCXsKKwkJCWVy ZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklU SU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIgb3BmYW1pbHkgJXMgY29udGFpbnMgaW52YWxpZCBP UkRFUiBCWSBzcGVjaWZpY2F0aW9uIGZvciBvcGVyYXRvciAlcyIsCisJCQkJCQkJCSAgIG9wZmFt aWx5bmFtZSwKKwkJCQkJCQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZvcm0tPmFtb3BvcHIpKSkp OworCQkJcmVzdWx0ID0gZmFsc2U7CisJCX0KKworCQkvKiBDaGVjayBvcGVyYXRvciBzaWduYXR1 cmUgLS0tIHNhbWUgZm9yIGFsbCBzdGlyIHN0cmF0ZWdpZXMgKi8KKwkJaWYgKCFjaGVja19hbW9w X3NpZ25hdHVyZShvcHJmb3JtLT5hbW9wb3ByLCBCT09MT0lELAorCQkJCQkJCQkgIG9wcmZvcm0t PmFtb3BsZWZ0dHlwZSwKKwkJCQkJCQkJICBvcHJmb3JtLT5hbW9wcmlnaHR0eXBlKSkKKwkJewor CQkJZXJlcG9ydChJTkZPLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RF RklOSVRJT04pLAorCQkJCQkJCWVycm1zZygic3RpciBvcGZhbWlseSAlcyBjb250YWlucyBvcGVy YXRvciAlcyB3aXRoIHdyb25nIHNpZ25hdHVyZSIsCisJCQkJCQkJCSAgIG9wZmFtaWx5bmFtZSwK KwkJCQkJCQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZvcm0tPmFtb3BvcHIpKSkpOworCQkJcmVz dWx0ID0gZmFsc2U7CisJCX0KKwl9CisKKworCVJlbGVhc2VDYXRDYWNoZUxpc3QocHJvY2xpc3Qp OworCVJlbGVhc2VDYXRDYWNoZUxpc3Qob3BybGlzdCk7CisJUmVsZWFzZVN5c0NhY2hlKGZhbWls eXR1cCk7CisJUmVsZWFzZVN5c0NhY2hlKGNsYXNzdHVwKTsKKworCXJldHVybiByZXN1bHQ7Cit9 CisKKworLyoKKyAqIEluaXRpYWxpemUgbWV0YXBhZ2Ugb2YgYSBTVElSIGluZGV4LgorICogVGhl IHNraXBJbnNlcnRzIGZsYWcgZGV0ZXJtaW5lcyBpZiBuZXcgaW5zZXJ0cyB3aWxsIGJlIGFjY2Vw dGVkIG9yIHNraXBwZWQuCisgKi8KK3ZvaWQKK1N0aXJGaWxsTWV0YXBhZ2UoUmVsYXRpb24gaW5k ZXgsIFBhZ2UgbWV0YVBhZ2UsIGJvb2wgc2tpcEluc2VydHMpCit7CisJU3Rpck1ldGFQYWdlRGF0 YSAqbWV0YWRhdGE7CisKKwlTdGlySW5pdFBhZ2UobWV0YVBhZ2UsIFNUSVJfTUVUQSk7CisJbWV0 YWRhdGEgPSBTdGlyUGFnZUdldE1ldGEobWV0YVBhZ2UpOworCW1lbXNldChtZXRhZGF0YSwgMCwg c2l6ZW9mKFN0aXJNZXRhUGFnZURhdGEpKTsKKwltZXRhZGF0YS0+bWFnaWNrTnVtYmVyID0gU1RJ Ul9NQUdJQ0tfTlVNQkVSOworCW1ldGFkYXRhLT5za2lwSW5zZXJ0cyA9IHNraXBJbnNlcnRzOwor CSgoUGFnZUhlYWRlcikgbWV0YVBhZ2UpLT5wZF9sb3dlciArPSBzaXplb2YoU3Rpck1ldGFQYWdl RGF0YSk7Cit9CisKKy8qCisgKiBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIG1ldGFwYWdlIGZv ciBhIFNUSVIgaW5kZXguCisgKiBUaGlzIGlzIGNhbGxlZCBkdXJpbmcgaW5kZXggY3JlYXRpb24u CisgKi8KK3ZvaWQKK1N0aXJJbml0TWV0YXBhZ2UoUmVsYXRpb24gaW5kZXgsIEZvcmtOdW1iZXIg Zm9ya251bSkKK3sKKwlCdWZmZXIgbWV0YUJ1ZmZlcjsKKwlQYWdlIG1ldGFQYWdlOworCisJQXNz ZXJ0KCFSZWxhdGlvbk5lZWRzV0FMKGluZGV4KSk7CisJLyoKKwkgKiBNYWtlIGEgbmV3IHBhZ2U7 IHNpbmNlIGl0IGlzIGZpcnN0IHBhZ2UgaXQgc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aAorCSAq IGJsb2NrIG51bWJlciAwIChTVElSX01FVEFQQUdFX0JMS05PKS4gIE5vIG5lZWQgdG8gaG9sZCB0 aGUgZXh0ZW5zaW9uCisJICogbG9jayBiZWNhdXNlIHRoZXJlIGNhbm5vdCBiZSBjb25jdXJyZW50 IGluc2VydGVycyB5ZXQuCisJICovCisJbWV0YUJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChp bmRleCwgZm9ya251bSwgUF9ORVcsIFJCTV9OT1JNQUwsIE5VTEwpOworCVNUQVJUX0NSSVRfU0VD VElPTigpOworCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsK KwlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIobWV0YUJ1ZmZlcikgPT0gU1RJUl9NRVRBUEFH RV9CTEtOTyk7CisKKwltZXRhUGFnZSA9ICBCdWZmZXJHZXRQYWdlKG1ldGFCdWZmZXIpOworCVN0 aXJGaWxsTWV0YXBhZ2UoaW5kZXgsIG1ldGFQYWdlLCBmb3JrbnVtID09IElOSVRfRk9SS05VTSk7 CisKKwlNYXJrQnVmZmVyRGlydHkobWV0YUJ1ZmZlcik7CisJRU5EX0NSSVRfU0VDVElPTigpOwor CVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZlcik7Cit9CisKKy8qCisgKiBJbml0aWFsaXpl IGFueSBwYWdlIG9mIGEgc3RpciBpbmRleC4KKyAqLwordm9pZAorU3RpckluaXRQYWdlKFBhZ2Ug cGFnZSwgdWludDE2IGZsYWdzKQoreworCVN0aXJQYWdlT3BhcXVlIG9wYXF1ZTsKKworCVBhZ2VJ bml0KHBhZ2UsIEJMQ0tTWiwgc2l6ZW9mKFN0aXJQYWdlT3BhcXVlRGF0YSkpOworCisJb3BhcXVl ID0gU3RpclBhZ2VHZXRPcGFxdWUocGFnZSk7CisJb3BhcXVlLT5mbGFncyA9IGZsYWdzOworCW9w YXF1ZS0+c3Rpcl9wYWdlX2lkID0gU1RJUl9QQUdFX0lEOworfQorCisvKgorICogQWRkIGEgdHVw bGUgdG8gYSBTVElSIHBhZ2UuIFJldHVybnMgZmFsc2UgaWYgdHVwbGUgZG9lc24ndCBmaXQuCisg KiBUaGUgdHVwbGUgaXMgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGUgcGFnZS4KKyAqLworc3RhdGlj IGJvb2wKK1N0aXJQYWdlQWRkSXRlbShQYWdlIHBhZ2UsIFN0aXJUdXBsZSAqdHVwbGUpCit7CisJ U3RpclR1cGxlICppdHVwOworCVN0aXJQYWdlT3BhcXVlIG9wYXF1ZTsKKwlQb2ludGVyIHB0cjsK KworCS8qIFdlIHNob3VsZG4ndCBiZSBwb2ludGVkIHRvIGFuIGludmFsaWQgcGFnZSAqLworCUFz c2VydCghUGFnZUlzTmV3KHBhZ2UpKTsKKworCS8qIERvZXMgbmV3IHR1cGxlIGZpdCBvbiB0aGUg cGFnZT8gKi8KKwlpZiAoU3RpclBhZ2VHZXRGcmVlU3BhY2Uoc3RhdGUsIHBhZ2UpIDwgc2l6ZW9m KFN0aXJUdXBsZSkpCisJCXJldHVybiBmYWxzZTsKKworCS8qIENvcHkgbmV3IHR1cGxlIHRvIHRo ZSBlbmQgb2YgcGFnZSAqLworCW9wYXF1ZSA9IFN0aXJQYWdlR2V0T3BhcXVlKHBhZ2UpOworCWl0 dXAgPSBTdGlyUGFnZUdldFR1cGxlKHBhZ2UsIG9wYXF1ZS0+bWF4b2ZmICsgMSk7CisJbWVtY3B5 KChQb2ludGVyKSBpdHVwLCAoUG9pbnRlcikgdHVwbGUsIHNpemVvZihTdGlyVHVwbGUpKTsKKwor CS8qIEFkanVzdCBtYXhvZmYgYW5kIHBkX2xvd2VyICovCisJb3BhcXVlLT5tYXhvZmYrKzsKKwlw dHIgPSAoUG9pbnRlcikgU3RpclBhZ2VHZXRUdXBsZShwYWdlLCBvcGFxdWUtPm1heG9mZiArIDEp OworCSgoUGFnZUhlYWRlcikgcGFnZSktPnBkX2xvd2VyID0gcHRyIC0gcGFnZTsKKworCS8qIEFz c2VydCB3ZSBkaWRuJ3Qgb3ZlcnJ1biBhdmFpbGFibGUgc3BhY2UgKi8KKwlBc3NlcnQoKChQYWdl SGVhZGVyKSBwYWdlKS0+cGRfbG93ZXIgPD0gKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfdXBwZXIp OworCXJldHVybiB0cnVlOworfQorCisvKgorICogSW5zZXJ0IGEgbmV3IHR1cGxlIGludG8gYSBT VElSIGluZGV4LgorICovCitib29sCitzdGlyaW5zZXJ0KFJlbGF0aW9uIGluZGV4LCBEYXR1bSAq dmFsdWVzLCBib29sICppc251bGwsCisJCSAgSXRlbVBvaW50ZXIgaHRfY3RpZCwgUmVsYXRpb24g aGVhcFJlbCwKKwkJICBJbmRleFVuaXF1ZUNoZWNrIGNoZWNrVW5pcXVlLAorCQkgIGJvb2wgaW5k ZXhVbmNoYW5nZWQsCisJCSAgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJbmZvKQoreworCVN0aXJU dXBsZSAqaXR1cDsKKwlNZW1vcnlDb250ZXh0IG9sZEN0eDsKKwlNZW1vcnlDb250ZXh0IGluc2Vy dEN0eDsKKwlTdGlyTWV0YVBhZ2VEYXRhICptZXRhRGF0YTsKKwlCdWZmZXIgYnVmZmVyLAorCQkJ bWV0YUJ1ZmZlcjsKKwlQYWdlIHBhZ2U7CisJdWludDE2IGJsa05vOworCisJLyogQ3JlYXRlIHRl bXBvcmFyeSBjb250ZXh0IGZvciBpbnNlcnQgb3BlcmF0aW9uICovCisJaW5zZXJ0Q3R4ID0gQWxs b2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJICAiU3Rp ciBpbnNlcnQgdGVtcG9yYXJ5IGNvbnRleHQiLAorCQkJCQkJCQkJICBBTExPQ1NFVF9ERUZBVUxU X1NJWkVTKTsKKworCW9sZEN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhpbnNlcnRDdHgpOwor CisJLyogQ3JlYXRlIG5ldyB0dXBsZSB3aXRoIGhlYXAgcG9pbnRlciAqLworCWl0dXAgPSAoU3Rp clR1cGxlICopIHBhbGxvYzAoc2l6ZW9mKFN0aXJUdXBsZSkpOworCWl0dXAtPmhlYXBQdHIgPSAq aHRfY3RpZDsKKworCUFzc2VydCghUmVsYXRpb25OZWVkc1dBTChpbmRleCkpOworCW1ldGFCdWZm ZXIgPSBSZWFkQnVmZmVyKGluZGV4LCBTVElSX01FVEFQQUdFX0JMS05PKTsKKworCWZvciAoOzsp CisJeworCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX1NIQVJFKTsKKwkJbWV0 YURhdGEgPSBTdGlyUGFnZUdldE1ldGEoQnVmZmVyR2V0UGFnZShtZXRhQnVmZmVyKSk7CisJCS8q IENoZWNrIGlmIGluc2VydHMgYXJlIGFsbG93ZWQgKi8KKwkJaWYgKG1ldGFEYXRhLT5za2lwSW5z ZXJ0cykKKwkJeworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihtZXRhQnVmZmVyKTsKKwkJCXJldHVy biBmYWxzZTsKKwkJfQorCQlibGtObyA9IG1ldGFEYXRhLT5sYXN0QmxrTm87CisJCS8qIERvbid0 IGhvbGQgbWV0YWJ1ZmZlciBsb2NrIHdoaWxlIGRvaW5nIGluc2VydCAqLworCQlMb2NrQnVmZmVy KG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisKKwkJaWYgKGJsa05vID4gMCkKKwkJ eworCQkJYnVmZmVyID0gUmVhZEJ1ZmZlcihpbmRleCwgYmxrTm8pOworCQkJTG9ja0J1ZmZlcihi dWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsK KworCQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKKworCQkJQXNzZXJ0KCFQYWdlSXNO ZXcocGFnZSkpOworCisJCQkvKiBUcnkgdG8gYWRkIHR1cGxlIHRvIGV4aXN0aW5nIHBhZ2UgKi8K KwkJCWlmIChTdGlyUGFnZUFkZEl0ZW0ocGFnZSwgaXR1cCkpCisJCQl7CisJCQkJLyogU3VjY2Vz cyEgIEFwcGx5IHRoZSBjaGFuZ2UsIGNsZWFuIHVwLCBhbmQgZXhpdCAqLworCQkJCU1hcmtCdWZm ZXJEaXJ0eShidWZmZXIpOworCQkJCUVORF9DUklUX1NFQ1RJT04oKTsKKworCQkJCVVubG9ja1Jl bGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJCQlSZWxlYXNlQnVmZmVyKG1ldGFCdWZmZXIpOworCQkJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDdHgpOworCQkJCU1lbW9yeUNvbnRleHREZWxldGUo aW5zZXJ0Q3R4KTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisKKwkJCUVORF9DUklUX1NFQ1RJ T04oKTsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJfQorCisJCS8qIE5lZWQg dG8gYWRkIG5ldyBwYWdlIC0gZ2V0IGV4Y2x1c2l2ZSBsb2NrIG9uIG1ldGEgcGFnZSAqLworCQlM b2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisKKwkJbWV0YURh dGEgPSBTdGlyUGFnZUdldE1ldGEoQnVmZmVyR2V0UGFnZShtZXRhQnVmZmVyKSk7CisJCS8qIENo ZWNrIGlmIGFub3RoZXIgYmFja2VuZCBhbHJlYWR5IGV4dGVuZGVkIHRoZSBpbmRleCAqLworCisJ CWlmIChibGtObyAhPSBtZXRhRGF0YS0+bGFzdEJsa05vKQorCQl7CisJCQlBc3NlcnQoYmxrTm8g PCBtZXRhRGF0YS0+bGFzdEJsa05vKTsKKwkJCS8qIFNvbWVvbmUgZWxzZSBpbnNlcnRlZCB0aGUg bmV3IHBhZ2UgaW50byB0aGUgaW5kZXgsIGxldHMgdHJ5IGFnYWluICovCisJCQlMb2NrQnVmZmVy KG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisJCQljb250aW51ZTsKKwkJfQorCQll bHNlCisJCXsKKwkJCS8qIE11c3QgZXh0ZW5kIHRoZSBmaWxlICovCisJCQlidWZmZXIgPSBFeHRl bmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwgTUFJTl9GT1JLTlVNLCBOVUxMLAorCQkJCQkJ CQkJICAgRUJfTE9DS19GSVJTVCk7CisJCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwor CQkJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CisKKwkJCVN0aXJJbml0UGFnZShwYWdlLCAwKTsKKwor CQkJaWYgKCFTdGlyUGFnZUFkZEl0ZW0ocGFnZSwgaXR1cCkpCisJCQl7CisJCQkJLyogV2Ugc2hv dWxkbid0IGJlIGhlcmUgc2luY2Ugd2UncmUgaW5zZXJ0aW5nIHRvIGFuIGVtcHR5IHBhZ2UgKi8K KwkJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGFkZCBuZXcgc3RpciB0dXBsZSB0byBlbXB0eSBw YWdlIik7CisJCQl9CisKKwkJCS8qIFVwZGF0ZSBtZXRhIHBhZ2Ugd2l0aCBuZXcgbGFzdCBibG9j ayBudW1iZXIgKi8KKwkJCW1ldGFEYXRhLT5sYXN0QmxrTm8gPSBCdWZmZXJHZXRCbG9ja051bWJl cihidWZmZXIpOworCisJCQlNYXJrQnVmZmVyRGlydHkobWV0YUJ1ZmZlcik7CisJCQlNYXJrQnVm ZmVyRGlydHkoYnVmZmVyKTsKKworCQkJRU5EX0NSSVRfU0VDVElPTigpOworCisJCQlVbmxvY2tS ZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKG1ldGFCdWZmZXIp OworCisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKKwkJCU1lbW9yeUNvbnRleHRE ZWxldGUoaW5zZXJ0Q3R4KTsKKworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJfQorfQorCisvKgor ICogU1RJUiBkb2Vzbid0IHN1cHBvcnQgc2NhbnMgLSB0aGVzZSBmdW5jdGlvbnMgYWxsIGVycm9y IG91dAorICovCitJbmRleFNjYW5EZXNjCitzdGlyYmVnaW5zY2FuKFJlbGF0aW9uIHIsIGludCBu a2V5cywgaW50IG5vcmRlcmJ5cykKK3sKKwllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5vdCBpbXBs ZW1lbnRlZCIsIF9fZnVuY19fKSkpOworfQorCit2b2lkCitzdGlycmVzY2FuKEluZGV4U2NhbkRl c2Mgc2NhbiwgU2NhbktleSBzY2Fua2V5LCBpbnQgbnNjYW5rZXlzLAorCQkgIFNjYW5LZXkgb3Jk ZXJieXMsIGludCBub3JkZXJieXMpCit7CisJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1w bGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30KKwordm9pZCBzdGlyZW5kc2NhbihJbmRleFNjYW5E ZXNjIHNjYW4pCit7CisJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQiLCBf X2Z1bmNfXykpKTsKK30KKworLyoKKyAqIEJ1aWxkIGEgU1RJUiBpbmRleCAtIG9ubHkgYWxsb3dl ZCBmb3IgYXV4aWxpYXJ5IGluZGV4ZXMuCisgKiBKdXN0IGluaXRpYWxpemVzIHRoZSBtZXRhIHBh Z2Ugd2l0aG91dCBhbnkgaGVhcCBzY2Fucy4KKyAqLworSW5kZXhCdWlsZFJlc3VsdCAqCitzdGly YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCisJCQkJCQkgICBzdHJ1Y3QgSW5k ZXhJbmZvICppbmRleEluZm8pCit7CisJSW5kZXhCdWlsZFJlc3VsdCAqcmVzdWx0OworCisJaWYg KCFpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlNUSVIgaW5kZXhlcyBhcmUgbm90 IHN1cHBvcnRlZCB0byBiZSBidWlsdCIpKSk7CisKKwlTdGlySW5pdE1ldGFwYWdlKGluZGV4LCBN QUlOX0ZPUktOVU0pOworCisJcmVzdWx0ID0gKEluZGV4QnVpbGRSZXN1bHQgKikgcGFsbG9jKHNp emVvZihJbmRleEJ1aWxkUmVzdWx0KSk7CisJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IDA7CisJcmVz dWx0LT5pbmRleF90dXBsZXMgPSAwOworCXJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgc3RpcmJ1 aWxkZW1wdHkoUmVsYXRpb24gaW5kZXgpCit7CisJU3RpckluaXRNZXRhcGFnZShpbmRleCwgSU5J VF9GT1JLTlVNKTsKK30KKworSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICoKK3N0aXJidWxrZGVsZXRl KEluZGV4VmFjdXVtSW5mbyAqaW5mbywKKwkJCQkJCQkJCSBJbmRleEJ1bGtEZWxldGVSZXN1bHQg KnN0YXRzLAorCQkJCQkJCQkJIEluZGV4QnVsa0RlbGV0ZUNhbGxiYWNrIGNhbGxiYWNrLAorCQkJ CQkJCQkJIHZvaWQgKmNhbGxiYWNrX3N0YXRlKQoreworCVJlbGF0aW9uIGluZGV4ID0gaW5mby0+ aW5kZXg7CisJQmxvY2tOdW1iZXIgYmxrbm8sIG5wYWdlczsKKwlCdWZmZXIgYnVmZmVyOworCVBh Z2UgcGFnZTsKKworCS8qIEZvciBub3JtYWwgVkFDVVVNLCBtYXJrIHRvIHNraXAgaW5zZXJ0cyBh bmQgd2FybiBhYm91dCBpbmRleCBkcm9wIG5lZWRlZCAqLworCWlmICghaW5mby0+dmFsaWRhdGVf aW5kZXgpCisJeworCQlTdGlyTWFya0FzU2tpcEluc2VydHMoaW5kZXgpOworCisJCWVyZXBvcnQo V0FSTklORywgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVy cm1zZygiXCIlc1wiIGlzIG5vdCBhIG5vdCBpbXBsZW1lbnRlZCwgc2VlbXMgbGlrZSB0aGlzIGlu ZGV4IG5lZWQgdG8gYmUgZHJvcHBlZCIsIF9fZnVuY19fKSkpOworCQlyZXR1cm4gTlVMTDsKKwl9 CisKKwlpZiAoc3RhdHMgPT0gTlVMTCkKKwkJc3RhdHMgPSAoSW5kZXhCdWxrRGVsZXRlUmVzdWx0 ICopIHBhbGxvYzAoc2l6ZW9mKEluZGV4QnVsa0RlbGV0ZVJlc3VsdCkpOworCisJLyoKKwkgKiBJ dGVyYXRlIG92ZXIgdGhlIHBhZ2VzLiBXZSBkb24ndCBjYXJlIGFib3V0IGNvbmN1cnJlbnRseSBh ZGRlZCBwYWdlcywKKwkgKiBiZWNhdXNlIGluZGV4IGlzIG1hcmtlZCBhcyBub3QtcmVhZHkgZm9y IHRoYXQgbW9tbWVudCBhbmQgaW5kZXggbm90CisJICogdXNlZCBmb3IgaW5zZXJ0LgorCSAqLwor CW5wYWdlcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3MoaW5kZXgpOworCWZvciAoYmxrbm8g PSBTVElSX0hFQURfQkxLTk87IGJsa25vIDwgbnBhZ2VzOyBibGtubysrKQorCXsKKwkJU3RpclR1 cGxlICppdHVwLCAqaXR1cEVuZDsKKworCQl2YWN1dW1fZGVsYXlfcG9pbnQoZmFsc2UpOworCisJ CWJ1ZmZlciA9IFJlYWRCdWZmZXJFeHRlbmRlZChpbmRleCwgTUFJTl9GT1JLTlVNLCBibGtubywK KwkJCQkJCQkJCVJCTV9OT1JNQUwsIGluZm8tPnN0cmF0ZWd5KTsKKworCQlMb2NrQnVmZmVyKGJ1 ZmZlciwgQlVGRkVSX0xPQ0tfU0hBUkUpOworCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIp OworCisJCWlmIChQYWdlSXNOZXcocGFnZSkpCisJCXsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIo YnVmZmVyKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaXR1cCA9IFN0aXJQYWdlR2V0VHVwbGUo cGFnZSwgRmlyc3RPZmZzZXROdW1iZXIpOworCQlpdHVwRW5kID0gU3RpclBhZ2VHZXRUdXBsZShw YWdlLCBPZmZzZXROdW1iZXJOZXh0KFN0aXJQYWdlR2V0TWF4T2Zmc2V0KHBhZ2UpKSk7CisJCXdo aWxlIChpdHVwIDwgaXR1cEVuZCkKKwkJeworCQkJLyogRG8gd2UgaGF2ZSB0byBkZWxldGUgdGhp cyB0dXBsZT8gKi8KKwkJCWlmIChjYWxsYmFjaygmaXR1cC0+aGVhcFB0ciwgY2FsbGJhY2tfc3Rh dGUpKQorCQkJeworCQkJCWVyZXBvcnQoRVJST1IsIChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwgZXJybXNnKCJ3ZSBuZXZlciBkZWxldGUgaW4gc3RpciIpKSk7CisJCQl9 CisKKwkJCWl0dXAgPSBTdGlyUGFnZUdldE5leHRUdXBsZShpdHVwKTsKKwkJfQorCisJCVVubG9j a1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwl9CisKKwlyZXR1cm4gc3RhdHM7Cit9CisKKy8qCisg KiBNYXJrIGEgU1RJUiBpbmRleCB0byBza2lwIGZ1dHVyZSBpbnNlcnRzCisgKi8KK3ZvaWQKK1N0 aXJNYXJrQXNTa2lwSW5zZXJ0cyhSZWxhdGlvbiBpbmRleCkKK3sKKwlTdGlyTWV0YVBhZ2VEYXRh ICptZXRhRGF0YTsKKwlCdWZmZXIgbWV0YUJ1ZmZlcjsKKwlQYWdlIG1ldGFQYWdlOworCisJQXNz ZXJ0KCFSZWxhdGlvbk5lZWRzV0FMKGluZGV4KSk7CisJbWV0YUJ1ZmZlciA9IFJlYWRCdWZmZXIo aW5kZXgsIFNUSVJfTUVUQVBBR0VfQkxLTk8pOworCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVG RkVSX0xPQ0tfRVhDTFVTSVZFKTsKKwlTVEFSVF9DUklUX1NFQ1RJT04oKTsKKworCW1ldGFQYWdl ID0gQnVmZmVyR2V0UGFnZShtZXRhQnVmZmVyKTsKKwltZXRhRGF0YSA9IFN0aXJQYWdlR2V0TWV0 YShtZXRhUGFnZSk7CisKKwlpZiAoIW1ldGFEYXRhLT5za2lwSW5zZXJ0cykKKwl7CisJCW1ldGFE YXRhLT5za2lwSW5zZXJ0cyA9IHRydWU7CisJCU1hcmtCdWZmZXJEaXJ0eShtZXRhQnVmZmVyKTsK Kwl9CisJRU5EX0NSSVRfU0VDVElPTigpOworCVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZl cik7Cit9CisKK0luZGV4QnVsa0RlbGV0ZVJlc3VsdCAqCitzdGlydmFjdXVtY2xlYW51cChJbmRl eFZhY3V1bUluZm8gKmluZm8sCisJCQkJCQkJCQkJSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0 cykKK3sKKwlTdGlyTWFya0FzU2tpcEluc2VydHMoaW5mby0+aW5kZXgpOworCWVyZXBvcnQoV0FS TklORywgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJZXJybXNn KCJcIiVzXCIgaXMgbm90IGEgbm90IGltcGxlbWVudGVkLCBzZWVtcyBsaWtlIHRoaXMgaW5kZXgg bmVlZCB0byBiZSBkcm9wcGVkIiwgX19mdW5jX18pKSk7CisJcmV0dXJuIE5VTEw7Cit9CisKK2J5 dGVhICoKK3N0aXJvcHRpb25zKERhdHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUpCit7CisJ cmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQKK3N0aXJjb3N0ZXN0aW1hdGUoUGxhbm5lckluZm8gKnJv b3QsIEluZGV4UGF0aCAqcGF0aCwKKwkJCQkJIGRvdWJsZSBsb29wX2NvdW50LCBDb3N0ICppbmRl eFN0YXJ0dXBDb3N0LAorCQkJCQkgQ29zdCAqaW5kZXhUb3RhbENvc3QsIFNlbGVjdGl2aXR5ICpp bmRleFNlbGVjdGl2aXR5LAorCQkJCQkgZG91YmxlICppbmRleENvcnJlbGF0aW9uLCBkb3VibGUg KmluZGV4UGFnZXMpCit7CisJZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQi LCBfX2Z1bmNfXykpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA5YTQyMzQyNWFlYy4uNWJkYjU3 NzYyNGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTM0MzMsNiArMzQzMyw3IEBAIHZhbGlkYXRlX2lu ZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAlpdmluZm8u bWVzc2FnZV9sZXZlbCA9IERFQlVHMjsKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gaGVhcFJl bGF0aW9uLT5yZF9yZWwtPnJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSBOVUxMOworCWl2 aW5mby52YWxpZGF0ZV9pbmRleCA9IHRydWU7CiAKIAkvKgogCSAqIEVuY29kZSBUSURzIGFzIGlu dDggdmFsdWVzIGZvciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy90b2FzdGluZy5jCmluZGV4IDg3NGE4ZmM4OWFkLi45Y2M0ZjA2ZGE5ZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvdG9hc3RpbmcuYwpAQCAtMzA3LDYgKzMwNyw3IEBAIGNyZWF0ZV90b2FzdF90YWJsZShSZWxh dGlvbiByZWwsIE9pZCB0b2FzdE9pZCwgT2lkIHRvYXN0SW5kZXhPaWQsCiAJaW5kZXhJbmZvLT5p aV9QYXJhbGxlbFdvcmtlcnMgPSAwOwogCWluZGV4SW5mby0+aWlfQW0gPSBCVFJFRV9BTV9PSUQ7 CiAJaW5kZXhJbmZvLT5paV9BbUNhY2hlID0gTlVMTDsKKwlpbmRleEluZm8tPmlpX0F1eGlsaWFy eSA9IGZhbHNlOwogCWluZGV4SW5mby0+aWlfQ29udGV4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0 OwogCiAJY29sbGF0aW9uSWRzWzBdID0gSW52YWxpZE9pZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwpp bmRleCA0ZmZmYjc2ZTU1Ny4uMzg2MDJlNmE3MmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKQEAg LTcyMCw2ICs3MjAsNyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1bVBh cmFtcyAqcGFyYW1zLAogCQkJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBlbGV2ZWw7CiAJCQlpdmlu Zm8ubnVtX2hlYXBfdHVwbGVzID0gb25lcmVsLT5yZF9yZWwtPnJlbHR1cGxlczsKIAkJCWl2aW5m by5zdHJhdGVneSA9IHZhY19zdHJhdGVneTsKKwkJCWl2aW5mby52YWxpZGF0ZV9pbmRleCA9IGZh bHNlOwogCiAJCQlzdGF0cyA9IGluZGV4X3ZhY3V1bV9jbGVhbnVwKCZpdmluZm8sIE5VTEwpOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCAwZmVlYTFkMzBlYy4uNTgy ZGI3N2RkYzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVs LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpAQCAtODg0LDYg Kzg4NCw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX29uZV9pbmRleChQYXJhbGxlbFZhY3V1 bVN0YXRlICpwdnMsIFJlbGF0aW9uIGluZHJlbCwKIAlpdmluZm8uZXN0aW1hdGVkX2NvdW50ID0g cHZzLT5zaGFyZWQtPmVzdGltYXRlZF9jb3VudDsKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0g cHZzLT5zaGFyZWQtPnJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSBwdnMtPmJzdHJhdGVn eTsKKwlpdmluZm8udmFsaWRhdGVfaW5kZXggPSBmYWxzZTsKIAogCS8qIFVwZGF0ZSBlcnJvciB0 cmFjZWJhY2sgaW5mb3JtYXRpb24gKi8KIAlwdnMtPmluZG5hbWUgPSBwc3RyZHVwKFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKGluZHJlbCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMv bWFrZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwppbmRleCBlMmQ5ZTli ZTQxYS4uZTk3ZTA5NDNmNWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5j cy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBAIC04NzUsNiArODc1LDcg QEAgbWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lk LCBMaXN0ICpleHByZXNzaW9ucywKIAkvKiBpbml0aWFsaXplIGluZGV4LWJ1aWxkIHN0YXRlIHRv IGRlZmF1bHQgKi8KIAluLT5paV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNlOwogCW4tPmlpX1BhcmFs bGVsV29ya2VycyA9IDA7CisJbi0+aWlfQXV4aWxpYXJ5ID0gZmFsc2U7CiAKIAkvKiBzZXQgdXAg Zm9yIHBvc3NpYmxlIHVzZSBieSBpbmRleCBBTSAqLwogCW4tPmlpX0FtID0gYW1vaWQ7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9n ZW5hbS5oCmluZGV4IDViMmFiMTgxYjVmLi5iOTk5MTZlZGI0YSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2dlbmFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKQEAg LTczLDYgKzczLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhWYWN1dW1JbmZvCiAJYm9vbAkJZXN0 aW1hdGVkX2NvdW50OwkvKiBudW1faGVhcF90dXBsZXMgaXMgYW4gZXN0aW1hdGUgKi8KIAlpbnQJ CQltZXNzYWdlX2xldmVsOwkvKiBlcmVwb3J0IGxldmVsIGZvciBwcm9ncmVzcyBtZXNzYWdlcyAq LwogCWRvdWJsZQkJbnVtX2hlYXBfdHVwbGVzOwkvKiB0dXBsZXMgcmVtYWluaW5nIGluIGhlYXAg Ki8KKwlib29sCQl2YWxpZGF0ZV9pbmRleDsgLyogdmFsaWRhdGluZyBjb25jdXJyZW50bHkgYnVp bHQgaW5kZXg/ICovCiAJQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3k7CS8qIGFjY2VzcyBz dHJhdGVneSBmb3IgcmVhZHMgKi8KIH0gSW5kZXhWYWN1dW1JbmZvOwogCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9w dGlvbnMuaAppbmRleCBkZmJiNGM4NTQ2MC4uYTEyMWI0ZDMxYzkgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9w dGlvbnMuaApAQCAtNTEsOCArNTEsOSBAQCB0eXBlZGVmIGVudW0gcmVsb3B0X2tpbmQKIAlSRUxP UFRfS0lORF9WSUVXID0gKDEgPDwgOSksCiAJUkVMT1BUX0tJTkRfQlJJTiA9ICgxIDw8IDEwKSwK IAlSRUxPUFRfS0lORF9QQVJUSVRJT05FRCA9ICgxIDw8IDExKSwKKwlSRUxPUFRfS0lORF9TVElS ID0gKDEgPDwgMTIpLAogCS8qIGlmIHlvdSBhZGQgYSBuZXcga2luZCwgbWFrZSBzdXJlIHlvdSB1 cGRhdGUgImxhc3RfZGVmYXVsdCIgdG9vICovCi0JUkVMT1BUX0tJTkRfTEFTVF9ERUZBVUxUID0g UkVMT1BUX0tJTkRfUEFSVElUSU9ORUQsCisJUkVMT1BUX0tJTkRfTEFTVF9ERUZBVUxUID0gUkVM T1BUX0tJTkRfU1RJUiwKIAkvKiBzb21lIGNvbXBpbGVycyB0cmVhdCBlbnVtcyBhcyBzaWduZWQg aW50cywgc28gd2UgY2FuJ3QgdXNlIDEgPDwgMzEgKi8KIAlSRUxPUFRfS0lORF9NQVggPSAoMSA8 PCAzMCkKIH0gcmVsb3B0X2tpbmQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rp ci5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uOTk0M2M0MmE5N2UKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3Mvc3Rpci5oCkBAIC0wLDAgKzEsMTE3IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq CisgKiBzdGlyLmgKKyAqCSAgaGVhZGVyIGZpbGUgZm9yIHBvc3RncmVzIHN0aXIgYWNjZXNzIG1l dGhvZCBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAy MDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIHNyYy9pbmNs dWRlL2FjY2Vzcy9zdGlyLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBf U1RJUl9IXworI2RlZmluZSBfU1RJUl9IXworCisjaW5jbHVkZSAiYW1hcGkuaCIKKyNpbmNsdWRl ICJ4bG9nLmgiCisjaW5jbHVkZSAiZ2VuZXJpY194bG9nLmgiCisjaW5jbHVkZSAiaXR1cC5oIgor I2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXRobm9kZXMuaCIKKworLyogU3Vw cG9ydCBwcm9jZWR1cmVzIG51bWJlcnMgKi8KKyNkZWZpbmUgU1RJUl9OUFJPQwkJCQkwCisKKy8q IFNjYW4gc3RyYXRlZ2llcyAqLworI2RlZmluZSBTVElSX05TVFJBVEVHSUVTCQkxCisKKyNkZWZp bmUgU1RJUl9PUFRJT05TX1BST0MJCQkJMAorCisvKiBNYWNyb3MgZm9yIGFjY2Vzc2luZyBzdGly IHBhZ2Ugc3RydWN0dXJlcyAqLworI2RlZmluZSBTdGlyUGFnZUdldE9wYXF1ZShwYWdlKSAoKFN0 aXJQYWdlT3BhcXVlKSBQYWdlR2V0U3BlY2lhbFBvaW50ZXIocGFnZSkpCisjZGVmaW5lIFN0aXJQ YWdlR2V0TWF4T2Zmc2V0KHBhZ2UpIChTdGlyUGFnZUdldE9wYXF1ZShwYWdlKS0+bWF4b2ZmKQor I2RlZmluZSBTdGlyUGFnZUlzTWV0YShwYWdlKSBcCisJKChTdGlyUGFnZUdldE9wYXF1ZShwYWdl KS0+ZmxhZ3MgJiBTVElSX01FVEEpICE9IDApCisjZGVmaW5lIFN0aXJQYWdlR2V0RGF0YShwYWdl KQkJKChTdGlyVHVwbGUgKilQYWdlR2V0Q29udGVudHMocGFnZSkpCisjZGVmaW5lIFN0aXJQYWdl R2V0VHVwbGUocGFnZSwgb2Zmc2V0KSBcCisJKChTdGlyVHVwbGUgKikoUGFnZUdldENvbnRlbnRz KHBhZ2UpIFwKKwkJKyBzaXplb2YoU3RpclR1cGxlKSAqICgob2Zmc2V0KSAtIDEpKSkKKyNkZWZp bmUgU3RpclBhZ2VHZXROZXh0VHVwbGUodHVwbGUpIFwKKwkoKFN0aXJUdXBsZSAqKSgoUG9pbnRl cikodHVwbGUpICsgc2l6ZW9mKFN0aXJUdXBsZSkpKQorCisKKworLyogUHJlc2VydmVkIHBhZ2Ug bnVtYmVycyAqLworI2RlZmluZSBTVElSX01FVEFQQUdFX0JMS05PCSgwKQorI2RlZmluZSBTVElS X0hFQURfQkxLTk8JCSgxKSAvKiBmaXJzdCBkYXRhIHBhZ2UgKi8KKworCisvKiBPcGFxdWUgZm9y IHN0aXIgcGFnZXMgKi8KK3R5cGVkZWYgc3RydWN0IFN0aXJQYWdlT3BhcXVlRGF0YQoreworCU9m ZnNldE51bWJlciBtYXhvZmY7CQkvKiBudW1iZXIgb2YgaW5kZXggdHVwbGVzIG9uIHBhZ2UgKi8K Kwl1aW50MTYJCWZsYWdzOwkJCS8qIHNlZSBiaXQgZGVmaW5pdGlvbnMgYmVsb3cgKi8KKwl1aW50 MTYJCXVudXNlZDsJCQkvKiBwbGFjZWhvbGRlciB0byBmb3JjZSBtYXhhbGlnbmluZyBvZiBzaXpl IG9mCisJCQkJCQkJCSAqIFN0aXJQYWdlT3BhcXVlRGF0YSBhbmQgdG8gcGxhY2UKKwkJCQkJCQkJ ICogc3Rpcl9wYWdlX2lkIGV4YWN0bHkgYXQgdGhlIGVuZCBvZiBwYWdlICovCisJdWludDE2CQlz dGlyX3BhZ2VfaWQ7CS8qIGZvciBpZGVudGlmaWNhdGlvbiBvZiBTVElSIGluZGV4ZXMgKi8KK30g U3RpclBhZ2VPcGFxdWVEYXRhOworCisvKiBTdGlyIHBhZ2UgZmxhZ3MgKi8KKyNkZWZpbmUgU1RJ Ul9NRVRBCQkoMTw8MCkKKwordHlwZWRlZiBTdGlyUGFnZU9wYXF1ZURhdGEgKlN0aXJQYWdlT3Bh cXVlOworCisjZGVmaW5lIFNUSVJfUEFHRV9JRAkJMHhGRjg0CisKKy8qIE1ldGFkYXRhIG9mIHN0 aXIgaW5kZXggKi8KK3R5cGVkZWYgc3RydWN0IFN0aXJNZXRhUGFnZURhdGEKK3sKKwl1aW50MzIJ CW1hZ2lja051bWJlcjsKKwl1aW50MTYJCWxhc3RCbGtObzsKKwlib29sCQlza2lwSW5zZXJ0czsJ Lyogc2hvdWxkIHdlIGp1c3QgZXhpdCB3aXRob3V0IGFueSBpbnNlcnRzICovCit9IFN0aXJNZXRh UGFnZURhdGE7CisKKy8qIE1hZ2ljIG51bWJlciB0byBkaXN0aW5ndWlzaCBzdGlyIHBhZ2VzIGZy b20gb3RoZXJzICovCisjZGVmaW5lIFNUSVJfTUFHSUNLX05VTUJFUiAoMHhEQkFDMERFRikKKwor I2RlZmluZSBTdGlyUGFnZUdldE1ldGEocGFnZSkJKChTdGlyTWV0YVBhZ2VEYXRhICopIFBhZ2VH ZXRDb250ZW50cyhwYWdlKSkKKwordHlwZWRlZiBzdHJ1Y3QgU3RpclR1cGxlCit7CisJSXRlbVBv aW50ZXJEYXRhIGhlYXBQdHI7Cit9IFN0aXJUdXBsZTsKKworI2RlZmluZSBTdGlyUGFnZUdldEZy ZWVTcGFjZShzdGF0ZSwgcGFnZSkgXAorCShCTENLU1ogLSBNQVhBTElHTihTaXplT2ZQYWdlSGVh ZGVyRGF0YSkgXAorCQktIFN0aXJQYWdlR2V0TWF4T2Zmc2V0KHBhZ2UpICogKHNpemVvZihTdGly VHVwbGUpKSBcCisJCS0gTUFYQUxJR04oc2l6ZW9mKFN0aXJQYWdlT3BhcXVlRGF0YSkpKQorCitl eHRlcm4gdm9pZCBTdGlyRmlsbE1ldGFwYWdlKFJlbGF0aW9uIGluZGV4LCBQYWdlIG1ldGFQYWdl LCBib29sIHNraXBJbnNlcnRzKTsKK2V4dGVybiB2b2lkIFN0aXJJbml0TWV0YXBhZ2UoUmVsYXRp b24gaW5kZXgsIEZvcmtOdW1iZXIgZm9ya251bSk7CitleHRlcm4gdm9pZCBTdGlySW5pdFBhZ2Uo UGFnZSBwYWdlLCB1aW50MTYgZmxhZ3MpOworZXh0ZXJuIHZvaWQgU3Rpck1hcmtBc1NraXBJbnNl cnRzKFJlbGF0aW9uIGluZGV4KTsKKworLyogaW5kZXggYWNjZXNzIG1ldGhvZCBpbnRlcmZhY2Ug ZnVuY3Rpb25zICovCitleHRlcm4gYm9vbCBzdGlydmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpOwor ZXh0ZXJuIGJvb2wgc3Rpcmluc2VydChSZWxhdGlvbiBpbmRleCwgRGF0dW0gKnZhbHVlcywgYm9v bCAqaXNudWxsLAorCQkJCQkgSXRlbVBvaW50ZXIgaHRfY3RpZCwgUmVsYXRpb24gaGVhcFJlbCwK KwkJCQkJIEluZGV4VW5pcXVlQ2hlY2sgY2hlY2tVbmlxdWUsCisJCQkJCSBib29sIGluZGV4VW5j aGFuZ2VkLAorCQkJCQkgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJbmZvKTsKK2V4dGVybiBJbmRl eFNjYW5EZXNjIHN0aXJiZWdpbnNjYW4oUmVsYXRpb24gciwgaW50IG5rZXlzLCBpbnQgbm9yZGVy YnlzKTsKK2V4dGVybiB2b2lkIHN0aXJyZXNjYW4oSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuS2V5 IHNjYW5rZXksIGludCBuc2NhbmtleXMsCisJCQkJCSBTY2FuS2V5IG9yZGVyYnlzLCBpbnQgbm9y ZGVyYnlzKTsKK2V4dGVybiB2b2lkIHN0aXJlbmRzY2FuKEluZGV4U2NhbkRlc2Mgc2Nhbik7Citl eHRlcm4gSW5kZXhCdWlsZFJlc3VsdCAqc3RpcmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAorCQkJCQkJCQkgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJbmZvKTsKK2V4dGVybiB2 b2lkIHN0aXJidWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4KTsKK2V4dGVybiBJbmRleEJ1bGtEZWxl dGVSZXN1bHQgKnN0aXJidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywKKwkJCQkJCQkJ CQkgICBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLCBJbmRleEJ1bGtEZWxldGVDYWxsYmFj ayBjYWxsYmFjaywKKwkJCQkJCQkJCQkgICB2b2lkICpjYWxsYmFja19zdGF0ZSk7CitleHRlcm4g SW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGlydmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8g KmluZm8sCisJCQkJCQkJCQkJCSAgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cyk7CitleHRl cm4gYnl0ZWEgKnN0aXJvcHRpb25zKERhdHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUpOwor CisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2FtLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW0uZGF0Cmlu ZGV4IDI2ZDE1OTI4YTE1Li5hNWVjZjkyMDhhZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19hbS5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5kYXQKQEAgLTMz LDUgKzMzLDggQEAKIHsgb2lkID0+ICczNTgwJywgb2lkX3N5bWJvbCA9PiAnQlJJTl9BTV9PSUQn LAogICBkZXNjciA9PiAnYmxvY2sgcmFuZ2UgaW5kZXggKEJSSU4pIGFjY2VzcyBtZXRob2QnLAog ICBhbW5hbWUgPT4gJ2JyaW4nLCBhbWhhbmRsZXIgPT4gJ2JyaW5oYW5kbGVyJywgYW10eXBlID0+ ICdpJyB9LAoreyBvaWQgPT4gJzU1NTUnLCBvaWRfc3ltYm9sID0+ICdTVElSX0FNX09JRCcsCisg IGRlc2NyID0+ICdzaG9ydCB0ZXJtIGluZGV4IHJlcGxhY2VtZW50IGFjY2VzcyBtZXRob2QnLAor ICBhbW5hbWUgPT4gJ3N0aXInLCBhbWhhbmRsZXIgPT4gJ3N0aXJoYW5kbGVyJywgYW10eXBlID0+ ICdpJyB9LAogCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3Mu ZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGNsYXNzLmRhdAppbmRleCA0YTk2MjQ4MDJh YS4uNjIyN2M1NjU4ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFz cy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGNsYXNzLmRhdApAQCAtNDg4LDQg KzQ4OCw4IEBACiAKICMgbm8gYnJpbiBvcGNsYXNzIGZvciB0aGUgZ2VvbWV0cmljIHR5cGVzIGV4 Y2VwdCBib3gKIAorIyBhbGxvdyBhbnkgdHlwZXMgZm9yIFNUSVIKK3sgb3BjbWV0aG9kID0+ICdz dGlyJywgb2lkX3N5bWJvbCA9PiAnQU5ZX1NUSVJfT1BTX09JRCcsIG9wY25hbWUgPT4gJ3N0aXJf b3BzJywKKyAgb3BjZmFtaWx5ID0+ICdzdGlyL2FueV9vcHMnLCBvcGNpbnR5cGUgPT4gJ2FueSd9 LAorCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFtaWx5LmRhdCBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHkuZGF0CmluZGV4IGY3ZGNiOTZiNDNjLi44 MzhhZDMyYzkzMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5k YXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQKQEAgLTMwNCw1ICsz MDQsNyBAQAogICBvcGZtZXRob2QgPT4gJ2hhc2gnLCBvcGZuYW1lID0+ICdtdWx0aXJhbmdlX29w cycgfSwKIHsgb2lkID0+ICc2MTU4JywKICAgb3BmbWV0aG9kID0+ICdnaXN0Jywgb3BmbmFtZSA9 PiAnbXVsdGlyYW5nZV9vcHMnIH0sCit7IG9pZCA9PiAnNTU1OCcsCisgIG9wZm1ldGhvZCA9PiAn c3RpcicsIG9wZm5hbWUgPT4gJ2FueV9vcHMnIH0sCiAKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CmluZGV4IGQzZDI4YTI2M2ZhLi4xOTg3OTVmMDEwZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CkBAIC05MzUsNiArOTM1LDEwIEBACiAgIHByb25hbWUgPT4gJ2JyaW5oYW5kbGVyJywgcHJvdm9s YXRpbGUgPT4gJ3YnLAogICBwcm9yZXR0eXBlID0+ICdpbmRleF9hbV9oYW5kbGVyJywgcHJvYXJn dHlwZXMgPT4gJ2ludGVybmFsJywKICAgcHJvc3JjID0+ICdicmluaGFuZGxlcicgfSwKK3sgb2lk ID0+ICc1NTU2JywgZGVzY3IgPT4gJ3Nob3J0IHRlcm0gaW5kZXggcmVwbGFjZW1lbnQgYWNjZXNz IG1ldGhvZCBoYW5kbGVyJywKKyAgcHJvbmFtZSA9PiAnc3RpcmhhbmRsZXInLCBwcm92b2xhdGls ZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ2luZGV4X2FtX2hhbmRsZXInLCBwcm9hcmd0eXBl cyA9PiAnaW50ZXJuYWwnLAorICBwcm9zcmMgPT4gJ3N0aXJoYW5kbGVyJyB9LAogeyBvaWQgPT4g JzM5NTInLCBkZXNjciA9PiAnYnJpbjogc3RhbmRhbG9uZSBzY2FuIG5ldyB0YWJsZSBwYWdlcycs CiAgIHByb25hbWUgPT4gJ2JyaW5fc3VtbWFyaXplX25ld192YWx1ZXMnLCBwcm92b2xhdGlsZSA9 PiAndicsCiAgIHByb3BhcmFsbGVsID0+ICd1JywgcHJvcmV0dHlwZSA9PiAnaW50NCcsIHByb2Fy Z3R5cGVzID0+ICdyZWdjbGFzcycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDI0OTIyODIyMTNm Li4wMzQxYmI3NDMyNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTE4MSwxMiArMTgxLDEzIEBA IHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogICoJCUJyb2tlbkhvdENoYWluCQlkaWQgd2UgZGV0 ZWN0IGFueSBicm9rZW4gSE9UIGNoYWlucz8KICAqCQlTdW1tYXJpemluZwkJCWlzIGl0IGEgc3Vt bWFyaXppbmcgaW5kZXg/CiAgKgkJUGFyYWxsZWxXb3JrZXJzCQkjIG9mIHdvcmtlcnMgcmVxdWVz dGVkIChleGNsdWRlcyBsZWFkZXIpCisgKgkJQXV4aWxpYXJ5CQkJIyBpbmRleC1oZWxwZXIgZm9y IGNvbmN1cnJlbnQgYnVpbGQ/CiAgKgkJQW0JCQkJCU9pZCBvZiBpbmRleCBBTQogICoJCUFtQ2Fj aGUJCQkJcHJpdmF0ZSBjYWNoZSBhcmVhIGZvciBpbmRleCBBTQogICoJCUNvbnRleHQJCQkJbWVt b3J5IGNvbnRleHQgaG9sZGluZyB0aGlzIEluZGV4SW5mbwogICoKLSAqIGlpX0NvbmN1cnJlbnQs IGlpX0Jyb2tlbkhvdENoYWluLCBhbmQgaWlfUGFyYWxsZWxXb3JrZXJzIGFyZSB1c2VkIG9ubHkK LSAqIGR1cmluZyBpbmRleCBidWlsZDsgdGhleSdyZSBjb252ZW50aW9uYWxseSB6ZXJvZWQgb3Ro ZXJ3aXNlLgorICogaWlfQ29uY3VycmVudCwgaWlfQnJva2VuSG90Q2hhaW4sIGlpX0F1eGlsaWFy eSBhbmQgaWlfUGFyYWxsZWxXb3JrZXJzCisgKiBhcmUgdXNlZCBvbmx5IGR1cmluZyBpbmRleCBi dWlsZDsgdGhleSdyZSBjb252ZW50aW9uYWxseSB6ZXJvZWQgb3RoZXJ3aXNlLgogICogLS0tLS0t LS0tLS0tLS0tLQogICovCiB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8KQEAgLTIxNSw2ICsyMTYs NyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8KIAlib29sCQlpaV9TdW1tYXJpemluZzsKIAli b29sCQlpaV9XaXRob3V0T3ZlcmxhcHM7CiAJaW50CQkJaWlfUGFyYWxsZWxXb3JrZXJzOworCWJv b2wJCWlpX0F1eGlsaWFyeTsKIAlPaWQJCQlpaV9BbTsKIAl2b2lkCSAgICppaV9BbUNhY2hlOwog CU1lbW9yeUNvbnRleHQgaWlfQ29udGV4dDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L2luZGV4X3NlbGZ1bmNzLmggYi9zcmMvaW5jbHVkZS91dGlscy9pbmRleF9zZWxmdW5jcy5oCmlu ZGV4IDZjNjRkYjZkNDU2Li5lMGQ5MzlkNjg1NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRp bHMvaW5kZXhfc2VsZnVuY3MuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9pbmRleF9zZWxmdW5j cy5oCkBAIC02Miw2ICs2MiwxNCBAQCBleHRlcm4gdm9pZCBzcGdjb3N0ZXN0aW1hdGUoc3RydWN0 IFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCVNlbGVjdGl2aXR5ICppbmRleFNlbGVjdGl2aXR5 LAogCQkJCQkJCWRvdWJsZSAqaW5kZXhDb3JyZWxhdGlvbiwKIAkJCQkJCQlkb3VibGUgKmluZGV4 UGFnZXMpOworZXh0ZXJuIHZvaWQgc3RpcmNvc3Rlc3RpbWF0ZShzdHJ1Y3QgUGxhbm5lckluZm8g KnJvb3QsCisJCQkJCQkJc3RydWN0IEluZGV4UGF0aCAqcGF0aCwKKwkJCQkJCQlkb3VibGUgbG9v cF9jb3VudCwKKwkJCQkJCQlDb3N0ICppbmRleFN0YXJ0dXBDb3N0LAorCQkJCQkJCUNvc3QgKmlu ZGV4VG90YWxDb3N0LAorCQkJCQkJCVNlbGVjdGl2aXR5ICppbmRleFNlbGVjdGl2aXR5LAorCQkJ CQkJCWRvdWJsZSAqaW5kZXhDb3JyZWxhdGlvbiwKKwkJCQkJCQlkb3VibGUgKmluZGV4UGFnZXMp OwogZXh0ZXJuIHZvaWQgZ2luY29zdGVzdGltYXRlKHN0cnVjdCBQbGFubmVySW5mbyAqcm9vdCwK IAkJCQkJCQlzdHJ1Y3QgSW5kZXhQYXRoICpwYXRoLAogCQkJCQkJCWRvdWJsZSBsb29wX2NvdW50 LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbXV0aWxzLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYW11dGlscy5vdXQKaW5kZXggN2FiNjExM2M2MTkuLjky YzAzM2EyMDEwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRpbHMu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYW11dGlscy5vdXQKQEAgLTE3Myw3 ICsxNzMsMTMgQEAgc2VsZWN0IGFtbmFtZSwgcHJvcCwgcGdfaW5kZXhhbV9oYXNfcHJvcGVydHko YS5vaWQsIHByb3ApIGFzIHAKICBzcGdpc3QgfCBjYW5fZXhjbHVkZSAgIHwgdAogIHNwZ2lzdCB8 IGNhbl9pbmNsdWRlICAgfCB0CiAgc3BnaXN0IHwgYm9ndXMgICAgICAgICB8IAotKDM2IHJvd3Mp Cisgc3RpciAgIHwgY2FuX29yZGVyICAgICB8IGYKKyBzdGlyICAgfCBjYW5fdW5pcXVlICAgIHwg ZgorIHN0aXIgICB8IGNhbl9tdWx0aV9jb2wgfCB0Cisgc3RpciAgIHwgY2FuX2V4Y2x1ZGUgICB8 IGYKKyBzdGlyICAgfCBjYW5faW5jbHVkZSAgIHwgdAorIHN0aXIgICB8IGJvZ3VzICAgICAgICAg fCAKKyg0MiByb3dzKQogCiAtLQogLS0gYWRkaXRpb25hbCBjaGVja3MgZm9yIHBnX2luZGV4X2Nv bHVtbl9oYXNfcHJvcGVydHkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv b3ByX3Nhbml0eS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0 CmluZGV4IDIwYmY5ZWE5Y2RmLi5mYzExNmI4NGEyOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL29wcl9zYW5pdHkub3V0CkBAIC0yMTIyLDkgKzIxMjIsMTAgQEAgRlJPTSBwZ19vcGNsYXNz IEFTIGMxCiBXSEVSRSBOT1QgRVhJU1RTKFNFTEVDVCAxIEZST00gcGdfYW1vcCBBUyBhMQogICAg ICAgICAgICAgICAgICBXSEVSRSBhMS5hbW9wZmFtaWx5ID0gYzEub3BjZmFtaWx5CiAgICAgICAg ICAgICAgICAgICAgQU5EIGJpbmFyeV9jb2VyY2libGUoYzEub3BjaW50eXBlLCBhMS5hbW9wbGVm dHR5cGUpKTsKLSBvcGNuYW1lIHwgb3BjZmFtaWx5IAotLS0tLS0tLS0tKy0tLS0tLS0tLS0tCi0o MCByb3dzKQorIG9wY25hbWUgIHwgb3BjZmFtaWx5IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor IHN0aXJfb3BzIHwgICAgICA1NTU4CisoMSByb3cpCiAKIC0tIENoZWNrIHRoYXQgZWFjaCBvcGVy YXRvciBsaXN0ZWQgaW4gcGdfYW1vcCBoYXMgYW4gYXNzb2NpYXRlZCBvcGNsYXNzLAogLS0gdGhh dCBpcyBvbmUgd2hvc2Ugb3BjaW50eXBlIG1hdGNoZXMgb3BybGVmdCAocG9zc2libHkgYnkgY29l cmNpb24pLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKaW5kZXggY2Y0OGFlNmQwYzIuLjUy ZGRlNTc2ODBkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKQEAgLTUxMzcsNyArNTEz Nyw4IEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKICBoZWFwICAgfCBUYWJsZQogIGhlYXAyICB8 IFRhYmxlCiAgc3BnaXN0IHwgSW5kZXgKLSg4IHJvd3MpCisgc3RpciAgIHwgSW5kZXgKKyg5IHJv d3MpCiAKIFxkQSAqCiBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCkBAIC01MTUxLDcgKzUxNTIsOCBA QCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVhcCAgIHwgVGFibGUKICBoZWFwMiAgfCBUYWJs ZQogIHNwZ2lzdCB8IEluZGV4Ci0oOCByb3dzKQorIHN0aXIgICB8IEluZGV4CisoOSByb3dzKQog CiBcZEEgaCoKIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKQEAgLTUxNzYsOSArNTE3OCw5IEBAIExp c3Qgb2YgYWNjZXNzIG1ldGhvZHMKIAogXGRBOiBleHRyYSBhcmd1bWVudCAiYmFyIiBpZ25vcmVk CiBcZEErCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhv ZHMKLSAgTmFtZSAgfCBUeXBlICB8ICAgICAgIEhhbmRsZXIgICAgICAgIHwgICAgICAgICAgICAg IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgCi0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKKyAgTmFt ZSAgfCBUeXBlICB8ICAgICAgIEhhbmRsZXIgICAgICAgIHwgICAgICAgICAgICAgICAgRGVzY3Jp cHRpb24gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgYnJp biAgIHwgSW5kZXggfCBicmluaGFuZGxlciAgICAgICAgICB8IGJsb2NrIHJhbmdlIGluZGV4IChC UklOKSBhY2Nlc3MgbWV0aG9kCiAgYnRyZWUgIHwgSW5kZXggfCBidGhhbmRsZXIgICAgICAgICAg ICB8IGItdHJlZSBpbmRleCBhY2Nlc3MgbWV0aG9kCiAgZ2luICAgIHwgSW5kZXggfCBnaW5oYW5k bGVyICAgICAgICAgICB8IEdJTiBpbmRleCBhY2Nlc3MgbWV0aG9kCkBAIC01MTg3LDEyICs1MTg5 LDEzIEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKICBoZWFwICAgfCBUYWJsZSB8IGhlYXBfdGFi bGVhbV9oYW5kbGVyIHwgaGVhcCB0YWJsZSBhY2Nlc3MgbWV0aG9kCiAgaGVhcDIgIHwgVGFibGUg fCBoZWFwX3RhYmxlYW1faGFuZGxlciB8IAogIHNwZ2lzdCB8IEluZGV4IHwgc3BnaGFuZGxlciAg ICAgICAgICAgfCBTUC1HaVNUIGluZGV4IGFjY2VzcyBtZXRob2QKLSg4IHJvd3MpCisgc3RpciAg IHwgSW5kZXggfCBzdGlyaGFuZGxlciAgICAgICAgICB8IHNob3J0IHRlcm0gaW5kZXggcmVwbGFj ZW1lbnQgYWNjZXNzIG1ldGhvZAorKDkgcm93cykKIAogXGRBKyAqCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKLSAgTmFtZSAgfCBUeXBlICB8ICAg ICAgIEhhbmRsZXIgICAgICAgIHwgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAg ICAgCi0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKKyAgTmFtZSAgfCBUeXBlICB8ICAgICAgIEhhbmRs ZXIgICAgICAgIHwgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgIAor LS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgYnJpbiAgIHwgSW5kZXggfCBicmluaGFuZGxl ciAgICAgICAgICB8IGJsb2NrIHJhbmdlIGluZGV4IChCUklOKSBhY2Nlc3MgbWV0aG9kCiAgYnRy ZWUgIHwgSW5kZXggfCBidGhhbmRsZXIgICAgICAgICAgICB8IGItdHJlZSBpbmRleCBhY2Nlc3Mg bWV0aG9kCiAgZ2luICAgIHwgSW5kZXggfCBnaW5oYW5kbGVyICAgICAgICAgICB8IEdJTiBpbmRl eCBhY2Nlc3MgbWV0aG9kCkBAIC01MjAxLDcgKzUyMDQsOCBAQCBMaXN0IG9mIGFjY2VzcyBtZXRo b2RzCiAgaGVhcCAgIHwgVGFibGUgfCBoZWFwX3RhYmxlYW1faGFuZGxlciB8IGhlYXAgdGFibGUg YWNjZXNzIG1ldGhvZAogIGhlYXAyICB8IFRhYmxlIHwgaGVhcF90YWJsZWFtX2hhbmRsZXIgfCAK ICBzcGdpc3QgfCBJbmRleCB8IHNwZ2hhbmRsZXIgICAgICAgICAgIHwgU1AtR2lTVCBpbmRleCBh Y2Nlc3MgbWV0aG9kCi0oOCByb3dzKQorIHN0aXIgICB8IEluZGV4IHwgc3RpcmhhbmRsZXIgICAg ICAgICAgfCBzaG9ydCB0ZXJtIGluZGV4IHJlcGxhY2VtZW50IGFjY2VzcyBtZXRob2QKKyg5IHJv d3MpCiAKIFxkQSsgaCoKICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhv ZHMKLS0gCjIuNDMuMAoK --00000000000027fe8906381ae2a2 Content-Type: application/x-patch; name="v21-0005-Support-snapshot-resets-in-concurrent-builds-of-.patch" Content-Disposition: attachment; filename="v21-0005-Support-snapshot-resets-in-concurrent-builds-of-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8uz7 RnJvbSAzZmU2MGU4ZTFmNTIyN2FlNThlMzYxYTBhOTdmYzZlZDYwM2JkOGYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVGh1LCA2IE1hciAyMDI1IDE0OjU0OjQ0ICswMTAwClN1YmplY3Q6IFtQ QVRDSCB2MjEgMDUvMTJdIFN1cHBvcnQgc25hcHNob3QgcmVzZXRzIGluIGNvbmN1cnJlbnQgYnVp bGRzIG9mCiB1bmlxdWUgaW5kZXhlcwoKUHJldmlvdXNseSwgY29uY3VycmVudCBidWlsZHMgaWYg dW5pcXVlIGluZGV4IHVzZWQgYSBmaXhlZCBzbmFwc2hvdCBmb3IgdGhlIGVudGlyZSBzY2FuIHRv IGVuc3VyZSBwcm9wZXIgdW5pcXVlbmVzcyBjaGVja3MuCgpOb3cgcmVzZXQgc25hcHNob3RzIHBl cmlvZGljYWxseSBkdXJpbmcgY29uY3VycmVudCB1bmlxdWUgaW5kZXggYnVpbGRzLCB3aGlsZSBz dGlsbCBtYWludGFpbmluZyB1bmlxdWVuZXNzIGJ5OgotIGlnbm9yaW5nIFNuYXBzaG90U2VsZiBk ZWFkIHR1cGxlcyBkdXJpbmcgdW5pcXVlbmVzcyBjaGVja3MgaW4gdHVwbGVzb3J0IGFzIG5vdCBh IGd1YXJhbnRlZSwgYnV0IGEgZmFpbC1mYXN0IG1lY2hhbmljcwotIGFkZGluZyBhIHVuaXF1ZW5l c3MgY2hlY2sgaW4gX2J0X2xvYWQgdGhhdCBkZXRlY3RzIG11bHRpcGxlIGFsaXZlIHR1cGxlcyB3 aXRoIHRoZSBzYW1lIGtleSB2YWx1ZXMgYXMgYSBndWFyYW50ZWUgb2YgY29ycmVjdG5lc3MKClR1 cGxlcyBhcmUgU25hcHNob3RTZWxmIHRlc3RlZCBvbmx5IGluIHRoZSBjYXNlIG9mIGVxdWFsIGlu ZGV4IGtleSB2YWx1ZXMsIG92ZXJ3aXNlIF9idF9sb2FkIHdvcmtzIGxpa2UgYmVmb3JlLgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgICAgICAgICAgICB8ICAxMiArLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgICA2ICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMgICAgICAgICAgfCAgIDggKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAgICB8IDE5MiArKysrKysr KysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c3BsaXRsb2MuYyAgICAg ICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jICAgICAgICAg IHwgIDMxICsrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAg IHwgICA4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAgICAgICAg fCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyAgICB8 ICA2OSArKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggICAgICAgICAgICAgICAg ICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgICAg ICB8ICAgNSArLQogc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmggICAgICAgICAgICAgICAg IHwgICAxICsKIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8 ICAgNiArCiAxMyBmaWxlcyBjaGFuZ2VkLCAyNjQgaW5zZXJ0aW9ucygrKSwgOTQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggNzRlNDA3ZjM3NWEuLjgyOWRh ZDExOTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTM4NiwxMiArMzg2LDEy IEBAIGhhdmUgdGhlIEhPVC1zYWZldHkgcHJvcGVydHkgZW5mb3JjZWQgYmVmb3JlIHdlIHN0YXJ0 IHRvIGJ1aWxkIHRoZSBuZXcKIGluZGV4LgogCiBBZnRlciB3YWl0aW5nIGZvciB0cmFuc2FjdGlv bnMgd2hpY2ggaGFkIHRoZSB0YWJsZSBvcGVuLCB3ZSBidWlsZCB0aGUgaW5kZXgKLWZvciBhbGwg cm93cyB0aGF0IGFyZSB2YWxpZCBpbiBhIGZyZXNoIHNuYXBzaG90LiAgQW55IHR1cGxlcyB2aXNp YmxlIGluIHRoZQotc25hcHNob3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5n IEhPVCBjaGFpbnMuICAoVGhleSBtaWdodCBoYXZlCi1vbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQg dGhlbSB3aGljaCBhcmUgYnJva2VuLCBidXQgdGhpcyBpcyBPSyBmb3IgdGhlIHNhbWUKLXJlYXNv biBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBidWlsZC4pICBBcyBhYm92ZSwgd2UgcG9pbnQg dGhlIGluZGV4Ci1lbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVwZGF0ZSBjaGFpbiBidXQg d2UgdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUKLWxpdmUgdHVwbGUuCitmb3IgYWxsIHJvd3Mg dGhhdCBhcmUgdmFsaWQgaW4gYSBmcmVzaCBzbmFwc2hvdCwgd2hpY2ggaXMgdXBkYXRlZCBldmVy eSBzbworb2Z0ZW4uIEFueSB0dXBsZXMgdmlzaWJsZSBpbiB0aGUgc25hcHNob3Qgd2lsbCBoYXZl IG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5nCitIT1QgY2hhaW5zLiAgKFRoZXkgbWlnaHQgaGF2 ZSBvbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUgYnJva2VuLAorYnV0IHRo aXMgaXMgT0sgZm9yIHRoZSBzYW1lIHJlYXNvbiBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBi dWlsZC4pCitBcyBhYm92ZSwgd2UgcG9pbnQgdGhlIGluZGV4IGVudHJ5IGF0IHRoZSByb290IG9m IHRoZSBIT1QtdXBkYXRlIGNoYWluIGJ1dCB3ZQordXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUg bGl2ZSB0dXBsZS4KIAogV2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3IgaW5zZXJ0cyAoYnV0IHN0 aWxsIG5vdCByZWFkeSBmb3IgcmVhZHMpIHRoZW4KIHdlIGFnYWluIHdhaXQgZm9yIHRyYW5zYWN0 aW9ucyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB3ZSB0YWtlCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCA0Y2JiZjdmMmQ3MC4uNThmZmE0MzA2 ZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTIzNiwx NSArMTIzNiwxNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNF TlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1aWxkLCBvciBkdXJpbmcg Ym9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90CiAJICogYW5kIGluZGV4 IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGlsZSB0aGF0IHNuYXBzaG90IGlz IHJlc2V0Ci0JICogZXZlcnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCku CisJICogZXZlcnkgc28gb2Z0ZW4uCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogCiAJLyoKLQkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5lZWQgY29uc2lzdGVudCBz bmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJICogRm9yIGNvbmN1cnJlbnQgYnVpbGRzIG9m IG5vbi1zeXN0ZW0gaW5kZXhlcywgd2UgbWF5IHdhbnQgdG8gcGVyaW9kaWNhbGx5CisJICogcmVz ZXQgc25hcHNob3RzIHRvIGFsbG93IHZhY3V1bSB0byBjbGVhbiB1cCB0dXBsZXMuCiAJICovCiAJ cmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYmCi0JCQkJCSAgIWlu ZGV4SW5mby0+aWlfVW5pcXVlICYmCiAJCQkJCSAgIWlzX3N5c3RlbV9jYXRhbG9nOyAvKiBqdXN0 IGZvciB0aGUgY2FzZSAqLwogCiAJLyogb2theSB0byBpZ25vcmUgbGF6eSBWQUNVVU1zIGhlcmUg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYwppbmRleCAwODg4NDExNmFlYy4uMzQ3 YjUwZDZlNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMKQEAgLTE0OCw3ICsx NDgsNyBAQCBfYnRfZGVkdXBfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIEluZGV4VHVw bGUgbmV3aXRlbSwgU2l6ZSBuZXdpdGVtc3osCiAJCQlfYnRfZGVkdXBfc3RhcnRfcGVuZGluZyhz dGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQogCQllbHNlIGlmIChzdGF0ZS0+ZGVkdXBsaWNhdGUg JiYKLQkJCQkgX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwKSA+IG5r ZXlhdHRzICYmCisJCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBzdGF0ZS0+YmFzZSwgaXR1 cCwgTlVMTCkgPiBua2V5YXR0cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2ZV9odGlkKHN0YXRlLCBp dHVwKSkKIAkJewogCQkJLyoKQEAgLTM3NCw3ICszNzQsNyBAQCBfYnRfYm90dG9tdXBkZWxfcGFz cyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkvKiBpdHVw IHN0YXJ0cyBmaXJzdCBwZW5kaW5nIGludGVydmFsICovCiAJCQlfYnRfZGVkdXBfc3RhcnRfcGVu ZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQotCQllbHNlIGlmIChfYnRfa2VlcF9uYXR0 c19mYXN0KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXApID4gbmtleWF0dHMgJiYKKwkJZWxzZSBpZiAo X2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwLCBOVUxMKSA+IG5rZXlh dHRzICYmCiAJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoc3RhdGUsIGl0dXApKQogCQl7CiAJCQkv KiBUdXBsZSBpcyBlcXVhbDsganVzdCBhZGRlZCBpdHMgVElEcyB0byBwZW5kaW5nIGludGVydmFs ICovCkBAIC03ODksMTIgKzc4OSwxMiBAQCBfYnRfZG9fc2luZ2xldmFsKFJlbGF0aW9uIHJlbCwg UGFnZSBwYWdlLCBCVERlZHVwU3RhdGUgc3RhdGUsCiAJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChw YWdlLCBtaW5vZmYpOwogCWl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0ocGFnZSwgaXRl bWlkKTsKIAotCWlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbmV3aXRlbSwgaXR1cCkgPiBu a2V5YXR0cykKKwlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5ld2l0ZW0sIGl0dXAsIE5V TEwpID4gbmtleWF0dHMpCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIFBhZ2VH ZXRNYXhPZmZzZXROdW1iZXIocGFnZSkpOwogCQlpdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJ dGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQkJaWYgKF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBuZXdp dGVtLCBpdHVwKSA+IG5rZXlhdHRzKQorCQlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5l d2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggMDUyZWJmZTZhMjEuLjA4YTNjYjI4MzQ4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtODMsNiArODMsNyBAQCB0eXBl ZGVmIHN0cnVjdCBCVFNwb29sCiAJUmVsYXRpb24JaW5kZXg7CiAJYm9vbAkJaXN1bmlxdWU7CiAJ Ym9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OworCWJvb2wJCXVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiB9 IEJUU3Bvb2w7CiAKIC8qCkBAIC0xMDEsNiArMTAyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRTaGFy ZWQKIAlPaWQJCQlpbmRleHJlbGlkOwogCWJvb2wJCWlzdW5pcXVlOwogCWJvb2wJCW51bGxzX25v dF9kaXN0aW5jdDsKKwlib29sCQl1bmlxdWVfZGVhZF9pZ25vcmVkOwogCWJvb2wJCWlzY29uY3Vy cmVudDsKIAlpbnQJCQlzY2FudHVwbGVzb3J0c3RhdGVzOwogCkBAIC0yMDMsMTUgKzIwNSwxMyBA QCB0eXBlZGVmIHN0cnVjdCBCVExlYWRlcgogICovCiB0eXBlZGVmIHN0cnVjdCBCVEJ1aWxkU3Rh dGUKIHsKLQlib29sCQlpc3VuaXF1ZTsKLQlib29sCQludWxsc19ub3RfZGlzdGluY3Q7CiAJYm9v bAkJaGF2ZWRlYWQ7CiAJUmVsYXRpb24JaGVhcDsKIAlCVFNwb29sICAgICpzcG9vbDsKIAogCS8q Ci0JICogc3Bvb2wyIGlzIG5lZWRlZCBvbmx5IHdoZW4gdGhlIGluZGV4IGlzIGEgdW5pcXVlIGlu ZGV4LiBEZWFkIHR1cGxlcyBhcmUKLQkgKiBwdXQgaW50byBzcG9vbDIgaW5zdGVhZCBvZiBzcG9v bCBpbiBvcmRlciB0byBhdm9pZCB1bmlxdWVuZXNzIGNoZWNrLgorCSAqIHNwb29sMiBpcyBuZWVk ZWQgb25seSB3aGVuIHRoZSBpbmRleCBpcyBhIHVuaXF1ZSBpbmRleCBhbmQgYnVpbGQgbm9uLWNv bmN1cnJlbnRseS4KKwkgKiBEZWFkIHR1cGxlcyBhcmUgcHV0IGludG8gc3Bvb2wyIGluc3RlYWQg b2Ygc3Bvb2wgaW4gb3JkZXIgdG8gYXZvaWQgdW5pcXVlbmVzcyBjaGVjay4KIAkgKi8KIAlCVFNw b29sICAgICpzcG9vbDI7CiAJZG91YmxlCQlpbmR0dXBsZXM7CkBAIC0yNTgsNyArMjU4LDcgQEAg c3RhdGljIGRvdWJsZSBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogc3RhdGljIHZvaWQgX2J0X3Nwb29sZGVzdHJveShCVFNwb29sICpidHNwb29sKTsK IHN0YXRpYyB2b2lkIF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBJdGVtUG9pbnRlciBzZWxm LAogCQkJCQkgIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCk7Ci1zdGF0aWMgdm9pZCBfYnRf bGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0 X3NuYXBzaG90cyk7CitzdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2ws IEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIGlzY29uY3VycmVudCk7CiBzdGF0aWMgdm9pZCBfYnRf YnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2ludGVyIHRpZCwgRGF0dW0gKnZh bHVlcywKIAkJCQkJCQkgICBib29sICppc251bGwsIGJvb2wgdHVwbGVJc0FsaXZlLCB2b2lkICpz dGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVyIF9idF9ibG5ld3BhZ2UoQlRXcml0ZVN0YXRl ICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0zMDMsOCArMzAzLDYgQEAgYnRidWlsZChSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCVJlc2V0 VXNhZ2UoKTsKICNlbmRpZgkJCQkJCQkvKiBCVFJFRV9CVUlMRF9TVEFUUyAqLwogCi0JYnVpbGRz dGF0ZS5pc3VuaXF1ZSA9IGluZGV4SW5mby0+aWlfVW5pcXVlOwotCWJ1aWxkc3RhdGUubnVsbHNf bm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0OwogCWJ1aWxkc3Rh dGUuaGF2ZWRlYWQgPSBmYWxzZTsKIAlidWlsZHN0YXRlLmhlYXAgPSBoZWFwOwogCWJ1aWxkc3Rh dGUuc3Bvb2wgPSBOVUxMOwpAQCAtMzIxLDIwICszMTksMjAgQEAgYnRidWlsZChSZWxhdGlvbiBo ZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCQkgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUoaW5kZXgpKTsKIAogCXJlbHR1cGxlcyA9IF9idF9zcG9vbHNfaGVhcHNj YW4oaGVhcCwgaW5kZXgsICZidWlsZHN0YXRlLCBpbmRleEluZm8pOwotCUFzc2VydCghaW5kZXhJ bmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3Vy cmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAq IEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhlIHNvcnQgb2YgdGhlIHNwb29s IGZpbGUsICgyKQogCSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1cGxlcyBpbnRvIGJ0cmVlIHBh Z2VzIGFuZCAoMykgYnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2ZWxzLiAgRmluYWxseSwgaXQg bWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFyYWxsZWxpc20uCiAJICovCi0J X2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWluZGV4 SW5mby0+aWlfVW5pcXVlICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CisJX2J0X2xlYWZi dWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgaW5kZXhJbmZvLT5paV9D b25jdXJyZW50KTsKIAlfYnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3RhdGUuc3Bvb2wpOwogCWlmIChi dWlsZHN0YXRlLnNwb29sMikKIAkJX2J0X3Nwb29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sMik7 CiAJaWYgKGJ1aWxkc3RhdGUuYnRsZWFkZXIpCiAJCV9idF9lbmRfcGFyYWxsZWwoYnVpbGRzdGF0 ZS5idGxlYWRlcik7Ci0JQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJ bmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwor CUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKIAogCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxv YyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOwogCkBAIC0zODEsNiArMzc5LDExIEBAIF9idF9z cG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwKIAlidHNwb29sLT5pbmRleCA9IGluZGV4OwogCWJ0c3Bvb2wtPmlzdW5p cXVlID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7CiAJYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0 ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0OworCS8qCisJICogV2UgbmVlZCB0byBp Z25vcmUgZGVhZCB0dXBsZXMgZm9yIHVuaXF1ZSBjaGVja3MgaW4gY2FzZSBvZiBjb25jdXJyZW50 IGJ1aWxkLgorCSAqIEl0IGlzIHJlcXVpcmVkIGJlY2F1c2Ugb3IgcGVyaW9kaWMgcmVzZXQgb2Yg c25hcHNob3QuCisJICovCisJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGluZGV4SW5m by0+aWlfQ29uY3VycmVudCAmJiBpbmRleEluZm8tPmlpX1VuaXF1ZTsKIAogCS8qIFNhdmUgYXMg cHJpbWFyeSBzcG9vbCAqLwogCWJ1aWxkc3RhdGUtPnNwb29sID0gYnRzcG9vbDsKQEAgLTQyOSw4 ICs0MzIsOSBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGlu ZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJICogdGhlIHVzZSBvZiBwYXJhbGxlbGlz bSBvciBhbnkgb3RoZXIgZmFjdG9yLgogCSAqLwogCWJ1aWxkc3RhdGUtPnNwb29sLT5zb3J0c3Rh dGUgPQotCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGJ1aWxkc3Rh dGUtPmlzdW5pcXVlLAotCQkJCQkJCQkJYnVpbGRzdGF0ZS0+bnVsbHNfbm90X2Rpc3RpbmN0LAor CQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGJ0c3Bvb2wtPmlzdW5p cXVlLAorCQkJCQkJCQkJYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0LAorCQkJCQkJCQkJYnRz cG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJCQkJCQkJCW1haW50ZW5hbmNlX3dvcmtfbWVt LCBjb29yZGluYXRlLAogCQkJCQkJCQkJVFVQTEVTT1JUX05PTkUpOwogCkBAIC00MzgsOCArNDQy LDEyIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs IEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkgKiBJZiBidWlsZGluZyBhIHVuaXF1ZSBpbmRl eCwgcHV0IGRlYWQgdHVwbGVzIGluIGEgc2Vjb25kIHNwb29sIHRvIGtlZXAKIAkgKiB0aGVtIG91 dCBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjay4gIFdlIGV4cGVjdCB0aGF0IHRoZSBzZWNvbmQgc3Bv b2wgKGZvcgogCSAqIGRlYWQgdHVwbGVzKSB3b24ndCBnZXQgdmVyeSBmdWxsLCBzbyB3ZSBnaXZl IGl0IG9ubHkgd29ya19tZW0uCisJICoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQg ZGVhZCB0dXBsZXMgYXJlIG5vdCBuZWVkIHRvIGJlIHB1dCBpbnRvIGluZGV4CisJICogc2luY2Ug d2Ugd2FpdCBmb3IgYWxsIHNuYXBzaG90cyBvbGRlciB0aGFuIHJlZmVyZW5jZSBzbmFwc2hvdCBk dXJpbmcgdGhlCisJICogdmFsaWRhdGlvbiBwaGFzZS4KIAkgKi8KLQlpZiAoaW5kZXhJbmZvLT5p aV9VbmlxdWUpCisJaWYgKGluZGV4SW5mby0+aWlfVW5pcXVlICYmICFpbmRleEluZm8tPmlpX0Nv bmN1cnJlbnQpCiAJewogCQlCVFNwb29sICAgICpidHNwb29sMiA9IChCVFNwb29sICopIHBhbGxv YzAoc2l6ZW9mKEJUU3Bvb2wpKTsKIAkJU29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZTIgPSBOVUxM OwpAQCAtNDcwLDcgKzQ3OCw3IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwg UmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkJICogZnVsbCwgc28g d2UgZ2l2ZSBpdCBvbmx5IHdvcmtfbWVtCiAJCSAqLwogCQlidWlsZHN0YXRlLT5zcG9vbDItPnNv cnRzdGF0ZSA9Ci0JCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZh bHNlLCBmYWxzZSwgd29ya19tZW0sCisJCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVh cCwgaW5kZXgsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHdvcmtfbWVtLAogCQkJCQkJCQkJCWNvb3Jk aW5hdGUyLCBUVVBMRVNPUlRfTk9ORSk7CiAJfQogCkBAIC00ODMsNyArNDkxLDcgQEAgX2J0X3Nw b29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLAogCQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRz dGF0ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluKTsKIAlJbnZh bGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJl bnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCiAJICogU2V0IHRoZSBwcm9ncmVz cyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAgUmVzZXQgdGhlIGJsb2NrIG51bWJlcgpAQCAt NTM5LDcgKzU0Nyw3IEBAIF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBJdGVtUG9pbnRlciBz ZWxmLCBEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwpCiAgKiBjcmVhdGUgYW4gZW50aXJlIGJ0 cmVlLgogICovCiBzdGF0aWMgdm9pZAotX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBC VFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpCitfYnRfbGVhZmJ1aWxkKEJU U3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIGlzY29uY3VycmVudCkKIHsK IAlCVFdyaXRlU3RhdGUgd3N0YXRlOwogCkBAIC01NjEsNyArNTY5LDcgQEAgX2J0X2xlYWZidWls ZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hv dHMpCiAJCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfUEVSRk9STVNPUlRfMik7CiAJCXR1 cGxlc29ydF9wZXJmb3Jtc29ydChidHNwb29sMi0+c29ydHN0YXRlKTsKIAl9Ci0JQXNzZXJ0KCFy ZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwor CUFzc2VydCghaXNjb25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKIAogCXdzdGF0ZS5oZWFwID0gYnRzcG9vbC0+aGVhcDsKIAl3c3RhdGUuaW5kZXggPSBi dHNwb29sLT5pbmRleDsKQEAgLTU3NSw3ICs1ODMsNyBAQCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wg KmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cykKIAogCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAog CQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfTEVBRl9MT0FEKTsKLQlBc3NlcnQoIXJlc2V0 X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNz ZXJ0KCFpc2NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikp OwogCV9idF9sb2FkKCZ3c3RhdGUsIGJ0c3Bvb2wsIGJ0c3Bvb2wyKTsKIH0KIApAQCAtMTE1NCwx MyArMTE2MiwxMTcgQEAgX2J0X2xvYWQoQlRXcml0ZVN0YXRlICp3c3RhdGUsIEJUU3Bvb2wgKmJ0 c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCVNvcnRTdXBwb3J0IHNvcnRLZXlzOwogCWludDY0 CQl0dXBsZXNfZG9uZSA9IDA7CiAJYm9vbAkJZGVkdXBsaWNhdGU7CisJYm9vbAkJZmFpbF9vbl9h bGl2ZV9kdXBsaWNhdGU7CiAKIAl3c3RhdGUtPmJ1bGtzdGF0ZSA9IHNtZ3JfYnVsa19zdGFydF9y ZWwod3N0YXRlLT5pbmRleCwgTUFJTl9GT1JLTlVNKTsKIAogCWRlZHVwbGljYXRlID0gd3N0YXRl LT5pbnNrZXktPmFsbGVxdWFsaW1hZ2UgJiYgIWJ0c3Bvb2wtPmlzdW5pcXVlICYmCiAJCUJUR2V0 RGVkdXBsaWNhdGVJdGVtcyh3c3RhdGUtPmluZGV4KTsKKwkvKgorCSAqIFRoZSB1bmlxdWVfZGVh ZF9pZ25vcmVkIGRvZXMgbm90IGd1YXJhbnRlZSBhYnNlbmNlIG9mIG11bHRpcGxlIGFsaXZlCisJ ICogdHVwbGVzIHdpdGggc2FtZSB2YWx1ZXMgZXhpc3RzIGluIHRoZSBzcG9vbC4gU3VjaCB0aGlu ZyBtYXkgaGFwcGVuIGlmCisJICogYWxpdmUgdHVwbGVzIGFyZSBsb2NhdGVkIGJldHdlZW4gYSBm ZXcgZGVhZCB0dXBsZXMsIGxpa2UgdGhpczogYWRkZGEuCisJICovCisJZmFpbF9vbl9hbGl2ZV9k dXBsaWNhdGUgPSBidHNwb29sLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCi0JaWYgKG1lcmdlKQor CWlmIChmYWlsX29uX2FsaXZlX2R1cGxpY2F0ZSkKKwl7CisJCWJvb2wJc2Vlbl9hbGl2ZSA9IGZh bHNlLAorCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7CisJCUluZGV4VHVwbGUgcHJldiA9IE5VTEw7 CisJCVR1cGxlVGFibGVTbG90IAkJKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVs YXRpb25HZXREZXNjcih3c3RhdGUtPmhlYXApLAorCQkJCQkJCQkJCQkJCQkJICAgJlRUU09wc0J1 ZmZlckhlYXBUdXBsZSk7CisJCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoID0gdGFibGVfaW5k ZXhfZmV0Y2hfYmVnaW4od3N0YXRlLT5oZWFwKTsKKworCQlBc3NlcnQoYnRzcG9vbC0+aXN1bmlx dWUpOworCQlBc3NlcnQoIWJ0c3Bvb2wyKTsKKworCQl3aGlsZSAoKGl0dXAgPSB0dXBsZXNvcnRf Z2V0aW5kZXh0dXBsZShidHNwb29sLT5zb3J0c3RhdGUsIHRydWUpKSAhPSBOVUxMKQorCQl7CisJ CQlib29sCXR1cGxlc19lcXVhbCA9IGZhbHNlOworCisJCQkvKiBXaGVuIHdlIHNlZSBmaXJzdCB0 dXBsZSwgY3JlYXRlIGZpcnN0IGluZGV4IHBhZ2UgKi8KKwkJCWlmIChzdGF0ZSA9PSBOVUxMKQor CQkJCXN0YXRlID0gX2J0X3BhZ2VzdGF0ZSh3c3RhdGUsIDApOworCisJCQlpZiAocHJldiAhPSBO VUxMKSAvKiBpZiBpcyBub3QgdGhlIGZpcnN0IHR1cGxlICovCisJCQl7CisJCQkJYm9vbAloYXNf bnVsbHMgPSBmYWxzZSwKKwkJCQkJCWNhbGxfYWdhaW4sIC8qIGp1c3QgdG8gcGFzcyBzb21ldGhp bmcgKi8KKwkJCQkJCWlnbm9yZWQsICAvKiBqdXN0IHRvIHBhc3Mgc29tZXRoaW5nICovCisJCQkJ CQlub3dfYWxpdmU7CisJCQkJSXRlbVBvaW50ZXJEYXRhIHRpZDsKKworCQkJCS8qIGlmIHRoaXMg dHVwbGVzIGVxdWFsIHRvIHByZXZpb3VzZSBvbmU/ICovCisJCQkJaWYgKHdzdGF0ZS0+aW5za2V5 LT5hbGxlcXVhbGltYWdlKQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2VlcF9uYXR0c19mYXN0 KHdzdGF0ZS0+aW5kZXgsIHByZXYsIGl0dXAsICZoYXNfbnVsbHMpID4ga2V5c3o7CisJCQkJZWxz ZQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2VlcF9uYXR0cyh3c3RhdGUtPmluZGV4LCBwcmV2 LCBpdHVwLHdzdGF0ZS0+aW5za2V5LCAmaGFzX251bGxzKSA+IGtleXN6OworCisJCQkJLyogaGFu ZGxlIG51bGwgdmFsdWVzIGNvcnJlY3RseSAqLworCQkJCWlmIChoYXNfbnVsbHMgJiYgIWJ0c3Bv b2wtPm51bGxzX25vdF9kaXN0aW5jdCkKKwkJCQkJdHVwbGVzX2VxdWFsID0gZmFsc2U7CisKKwkJ CQlpZiAodHVwbGVzX2VxdWFsKQorCQkJCXsKKwkJCQkJLyogY2hlY2sgcHJldmlvdXMgdHVwbGUg aWYgbm90IHlldCAqLworCQkJCQlpZiAoIXByZXZfdGVzdGVkKQorCQkJCQl7CisJCQkJCQljYWxs X2FnYWluID0gZmFsc2U7CisJCQkJCQl0aWQgPSBwcmV2LT50X3RpZDsKKwkJCQkJCXNlZW5fYWxp dmUgPSB0YWJsZV9pbmRleF9mZXRjaF90dXBsZShmZXRjaCwgJnRpZCwgU25hcHNob3RTZWxmLCBz bG90LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQpOworCQkJCQkJcHJldl90ZXN0ZWQgPSB0cnVlOwor CQkJCQl9CisKKwkJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlOworCQkJCQl0aWQgPSBpdHVwLT50X3Rp ZDsKKwkJCQkJbm93X2FsaXZlID0gdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQs IFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4sICZpZ25vcmVkKTsKKworCQkJCQkvKiBh cmUgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIGRldGVjdGVkIGluIGVxdWFsIGdyb3VwPyAqLworCQkJ CQlpZiAoc2Vlbl9hbGl2ZSAmJiBub3dfYWxpdmUpCisJCQkJCXsKKwkJCQkJCWNoYXIgKmtleV9k ZXNjOworCQkJCQkJVHVwbGVEZXNjIHR1cERlcyA9IFJlbGF0aW9uR2V0RGVzY3Iod3N0YXRlLT5p bmRleCk7CisJCQkJCQlib29sIGlzbnVsbFtJTkRFWF9NQVhfS0VZU107CisJCQkJCQlEYXR1bSB2 YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOworCisJCQkJCQlpbmRleF9kZWZvcm1fdHVwbGUoaXR1cCwg dHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCQkJCWtleV9kZXNjID0gQnVpbGRJbmRleFZh bHVlRGVzY3JpcHRpb24od3N0YXRlLT5pbmRleCwgdmFsdWVzLCBpc251bGwpOworCisJCQkJCQkv KiBrZWVwIHRoaXMgbWVzc2FnZSBpbiBzeW5jIHdpdGggdGhlIHNhbWUgaW4gY29tcGFyZXR1cF9p bmRleF9idHJlZV90aWVicmVhayAqLworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9OKSwKKwkJCQkJCQkJCQllcnJtc2coImNvdWxk IG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNcIiIsCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5kZXgpKSwKKwkJCQkJCQkJCQlrZXlfZGVzYyA/IGVy cmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQuIiwga2V5X2Rlc2MpIDoKKwkJCQkJCQkJCQll cnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0LiIpLAorCQkJCQkJCQkJCWVycnRhYmxlY29u c3RyYWludCh3c3RhdGUtPmhlYXAsCisJCQkJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHdzdGF0ZS0+aW5kZXgpKSkpOworCQkJCQl9CisJCQkJCXNlZW5fYWxpdmUgfD0gbm93 X2FsaXZlOworCQkJCX0KKwkJCX0KKworCQkJaWYgKCF0dXBsZXNfZXF1YWwpCisJCQl7CisJCQkJ c2Vlbl9hbGl2ZSA9IGZhbHNlOworCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7CisJCQl9CisKKwkJ CV9idF9idWlsZGFkZCh3c3RhdGUsIHN0YXRlLCBpdHVwLCAwKTsKKwkJCWlmIChwcmV2KSBwZnJl ZShwcmV2KTsKKwkJCXByZXYgPSBDb3B5SW5kZXhUdXBsZShpdHVwKTsKKworCQkJLyogUmVwb3J0 IHByb2dyZXNzICovCisJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NS RUFURUlEWF9UVVBMRVNfRE9ORSwKKwkJCQkJCQkJCQkgKyt0dXBsZXNfZG9uZSk7CisJCX0KKwkJ RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwkJdGFibGVfaW5kZXhfZmV0Y2hf ZW5kKGZldGNoKTsKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4p KTsKKwl9CisJZWxzZSBpZiAobWVyZ2UpCiAJewogCQkvKgogCQkgKiBBbm90aGVyIEJUU3Bvb2wg Zm9yIGRlYWQgdHVwbGVzIGV4aXN0cy4gTm93IHdlIGhhdmUgdG8gbWVyZ2UKQEAgLTEzMjAsNyAr MTQzMiw3IEBAIF9idF9sb2FkKEJUV3JpdGVTdGF0ZSAqd3N0YXRlLCBCVFNwb29sICpidHNwb29s LCBCVFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJCQlJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAkJ CX0KIAkJCWVsc2UgaWYgKF9idF9rZWVwX25hdHRzX2Zhc3Qod3N0YXRlLT5pbmRleCwgZHN0YXRl LT5iYXNlLAotCQkJCQkJCQkJCSBpdHVwKSA+IGtleXN6ICYmCisJCQkJCQkJCQkJIGl0dXAsIE5V TEwpID4ga2V5c3ogJiYKIAkJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoZHN0YXRlLCBpdHVwKSkK IAkJCXsKIAkJCQkvKgpAQCAtMTQxNyw3ICsxNTI5LDYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJU QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQog CUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0 cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7Ci0JYm9vbAkJcmVz ZXRfc25hcHNob3Q7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9Q QVJUSUNJUEFUSU9OCkBAIC0xNDM1LDIxICsxNTQ2LDEyIEBAIF9idF9iZWdpbl9wYXJhbGxlbChC VEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkK IAogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0ICsg MSA6IHJlcXVlc3Q7CiAKLSAgICAvKgotCSAqIEZvciBjb25jdXJyZW50IG5vbi11bmlxdWUgaW5k ZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cwotCSAqIHRvIGFs bG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRoZXNl IGJ1aWxkcyBkb24ndAotCSAqIHJlcXVpcmUgYSBjb25zaXN0ZW50IHZpZXcgYWNyb3NzIHRoZSBl bnRpcmUgc2Nhbi4gVW5pcXVlIGluZGV4ZXMgc3RpbGwgbmVlZAotCSAqIGEgc3RhYmxlIHNuYXBz aG90IHRvIHByb3Blcmx5IGVuZm9yY2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cy4KLSAgICAgKi8K LQlyZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVudCAmJiAhYnRzcG9vbC0+aXN1bmlxdWU7Ci0K IAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5v cm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0 IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tz IChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQog CSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5k IGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LCB3aGlsZSB0aGF0 IHNuYXBzaG90IG1heSBiZSByZXNldCBwZXJpb2RpY2FsbHkgaW4KLQkgKiBjYXNlIG9mIG5vbi11 bmlxdWUgaW5kZXguCisJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCwgd2hpbGUgdGhhdCBzbmFw c2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50 KQogCXsKQEAgLTE0NTcsMTYgKzE1NTksMTYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCQlzbmFw c2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsK IAl9Ci0JZWxzZSBpZiAocmVzZXRfc25hcHNob3QpCisJZWxzZQogCXsKKwkJLyoKKwkJICogRm9y IGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBz aG90cyB0byBhbGxvdworCQkgKiB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UuIFRoaXMgaXMg c2FmZSBzaW5jZSB0aGVzZSBidWlsZHMgZG9uJ3QKKwkJICogcmVxdWlyZSBhIGNvbnNpc3RlbnQg dmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLgorCQkgKi8KIAkJc25hcHNob3QgPSBJbnZhbGlk U25hcHNob3Q7CiAJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkp OwogCX0KLQllbHNlCi0JewotCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpKTsKLQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKLQl9CiAK IAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JUUkVFX1NI QVJFRCB3b3Jrc3BhY2UsIGFuZApAQCAtMTUzNiw2ICsxNjM4LDcgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCWJ0c2hhcmVkLT5pbmRleHJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChidHNwb29sLT5p bmRleCk7CiAJYnRzaGFyZWQtPmlzdW5pcXVlID0gYnRzcG9vbC0+aXN1bmlxdWU7CiAJYnRzaGFy ZWQtPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdDsKKwli dHNoYXJlZC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9y ZWQ7CiAJYnRzaGFyZWQtPmlzY29uY3VycmVudCA9IGlzY29uY3VycmVudDsKIAlidHNoYXJlZC0+ c2NhbnR1cGxlc29ydHN0YXRlcyA9IHNjYW50dXBsZXNvcnRzdGF0ZXM7CiAJYnRzaGFyZWQtPnF1 ZXJ5aWQgPSBwZ3N0YXRfZ2V0X215X3F1ZXJ5X2lkKCk7CkBAIC0xNTUwLDcgKzE2NTMsNyBAQCBf YnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3Vy cmVudCwgaW50IHJlcXVlc3QpCiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoYnRzcG9v bC0+aGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJl ZCksCiAJCQkJCQkJCSAgc25hcHNob3QsCi0JCQkJCQkJCSAgcmVzZXRfc25hcHNob3QpOworCQkJ CQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQt cHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMTYzMCw3ICsx NzMzLDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9v bCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBi dWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKiBX YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCiAJICovCi0J aWYgKHJlc2V0X3NuYXBzaG90KQorCWlmIChpc2NvbmN1cnJlbnQpCiAJCVdhaXRGb3JQYXJhbGxl bFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsKIAogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNl bHZlcyAqLwpAQCAtMTY0MSw3ICsxNzQ0LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIENh bGxlciBuZWVkcyB0byB3YWl0IGZvciBhbGwgbGF1bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVy bi4gIE1ha2UKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5v dCBoYW5nIGZvcmV2ZXIuCiAJICovCi0JaWYgKCFyZXNldF9zbmFwc2hvdCkKKwlpZiAoIWlzY29u Y3VycmVudCkKIAkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsK IAlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwpA QCAtMTc0NCw2ICsxODQ3LDcgQEAgX2J0X2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoQlRC dWlsZFN0YXRlICpidWlsZHN0YXRlKQogCWxlYWRlcndvcmtlci0+aW5kZXggPSBidWlsZHN0YXRl LT5zcG9vbC0+aW5kZXg7CiAJbGVhZGVyd29ya2VyLT5pc3VuaXF1ZSA9IGJ1aWxkc3RhdGUtPnNw b29sLT5pc3VuaXF1ZTsKIAlsZWFkZXJ3b3JrZXItPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ1aWxk c3RhdGUtPnNwb29sLT5udWxsc19ub3RfZGlzdGluY3Q7CisJbGVhZGVyd29ya2VyLT51bmlxdWVf ZGVhZF9pZ25vcmVkID0gYnVpbGRzdGF0ZS0+c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAK IAkvKiBJbml0aWFsaXplIHNlY29uZCBzcG9vbCwgaWYgcmVxdWlyZWQgKi8KIAlpZiAoIWJ0bGVh ZGVyLT5idHNoYXJlZC0+aXN1bmlxdWUpCkBAIC0xODQ3LDExICsxOTUxLDEyIEBAIF9idF9wYXJh bGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlidHNwb29s LT5pbmRleCA9IGluZGV4UmVsOwogCWJ0c3Bvb2wtPmlzdW5pcXVlID0gYnRzaGFyZWQtPmlzdW5p cXVlOwogCWJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c2hhcmVkLT5udWxsc19ub3Rf ZGlzdGluY3Q7CisJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGJ0c2hhcmVkLT51bmlx dWVfZGVhZF9pZ25vcmVkOwogCiAJLyogTG9vayB1cCBzaGFyZWQgc3RhdGUgcHJpdmF0ZSB0byB0 dXBsZXNvcnQuYyAqLwogCXNoYXJlZHNvcnQgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVM X0tFWV9UVVBMRVNPUlQsIGZhbHNlKTsKIAl0dXBsZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRz b3J0LCBzZWcpOwotCWlmICghYnRzaGFyZWQtPmlzdW5pcXVlKQorCWlmICghYnRzaGFyZWQtPmlz dW5pcXVlIHx8IGJ0c2hhcmVkLT5pc2NvbmN1cnJlbnQpCiAJewogCQlidHNwb29sMiA9IE5VTEw7 CiAJCXNoYXJlZHNvcnQyID0gTlVMTDsKQEAgLTE5MzEsNiArMjAzNiw3IEBAIF9idF9wYXJhbGxl bF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQkJ CQkJCQkJCQkJCSBidHNwb29sLT5pbmRleCwKIAkJCQkJCQkJCQkJCQkgYnRzcG9vbC0+aXN1bmlx dWUsCiAJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdCwKKwkJCQkJCQkJ CQkJCQkgYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJCQkJCQkJCQkJCQkgc29ydG1l bSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJCQkgVFVQTEVTT1JUX05PTkUpOwogCkBAIC0xOTUz LDE0ICsyMDU5LDEyIEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bv b2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQljb29yZGluYXRlMi0+blBhcnRpY2lwYW50cyA9IC0x OwogCQljb29yZGluYXRlMi0+c2hhcmVkc29ydCA9IHNoYXJlZHNvcnQyOwogCQlidHNwb29sMi0+ c29ydHN0YXRlID0KLQkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShidHNwb29sLT5oZWFw LCBidHNwb29sLT5pbmRleCwgZmFsc2UsIGZhbHNlLAorCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4 X2J0cmVlKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wtPmluZGV4LCBmYWxzZSwgZmFsc2UsIGZhbHNl LAogCQkJCQkJCQkJCU1pbihzb3J0bWVtLCB3b3JrX21lbSksIGNvb3JkaW5hdGUyLAogCQkJCQkJ CQkJCWZhbHNlKTsKIAl9CiAKIAkvKiBGaWxsIGluIGJ1aWxkc3RhdGUgZm9yIF9idF9idWlsZF9j YWxsYmFjaygpICovCi0JYnVpbGRzdGF0ZS5pc3VuaXF1ZSA9IGJ0c2hhcmVkLT5pc3VuaXF1ZTsK LQlidWlsZHN0YXRlLm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c2hhcmVkLT5udWxsc19ub3RfZGlz dGluY3Q7CiAJYnVpbGRzdGF0ZS5oYXZlZGVhZCA9IGZhbHNlOwogCWJ1aWxkc3RhdGUuaGVhcCA9 IGJ0c3Bvb2wtPmhlYXA7CiAJYnVpbGRzdGF0ZS5zcG9vbCA9IGJ0c3Bvb2w7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKaW5kZXggZTZjOWFhYTA0NTQuLjdjYjFmM2UxYmM2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jCkBAIC02ODcsNyArNjg3 LDcgQEAgX2J0X2FmdGVybmV3aXRlbW9mZihGaW5kU3BsaXREYXRhICpzdGF0ZSwgT2Zmc2V0TnVt YmVyIG1heG9mZiwKIAl7CiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQoc3RhdGUtPm9yaWdwYWdl LCBtYXhvZmYpOwogCQl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0oc3RhdGUtPm9yaWdw YWdlLCBpdGVtaWQpOwotCQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5y ZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0pOworCQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19m YXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0sIE5VTEwpOwogCiAJCWlmIChrZWVw bmF0dHMgPiAxICYmIGtlZXBuYXR0cyA8PSBua2V5YXR0cykKIAkJewpAQCAtNzE4LDcgKzcxOCw3 IEBAIF9idF9hZnRlcm5ld2l0ZW1vZmYoRmluZFNwbGl0RGF0YSAqc3RhdGUsIE9mZnNldE51bWJl ciBtYXhvZmYsCiAJCSFfYnRfYWRqYWNlbnRodGlkKCZ0dXAtPnRfdGlkLCAmc3RhdGUtPm5ld2l0 ZW0tPnRfdGlkKSkKIAkJcmV0dXJuIGZhbHNlOwogCS8qIENoZWNrIHNhbWUgY29uZGl0aW9ucyBh cyByaWdodG1vc3QgaXRlbSBjYXNlLCB0b28gKi8KLQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0 c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0pOworCWtlZXBuYXR0cyA9IF9i dF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgdHVwLCBzdGF0ZS0+bmV3aXRlbSwgTlVMTCk7 CiAKIAlpZiAoa2VlcG5hdHRzID4gMSAmJiBrZWVwbmF0dHMgPD0gbmtleWF0dHMpCiAJewpAQCAt OTY3LDcgKzk2Nyw3IEBAIF9idF9zdHJhdGVneShGaW5kU3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQ b2ludCAqbGVmdHBhZ2UsCiAJICogYXZvaWQgYXBwZW5kaW5nIGEgaGVhcCBUSUQgaW4gbmV3IGhp Z2gga2V5LCB3ZSdyZSBkb25lLiAgRmluaXNoIHNwbGl0CiAJICogd2l0aCBkZWZhdWx0IHN0cmF0 ZWd5IGFuZCBpbml0aWFsIHNwbGl0IGludGVydmFsLgogCSAqLwotCXBlcmZlY3RwZW5hbHR5ID0g X2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwgcmlnaHRtb3N0KTsKKwlw ZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3Qs IHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZlY3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQog CQlyZXR1cm4gcGVyZmVjdHBlbmFsdHk7CiAKQEAgLTk4OCw3ICs5ODgsNyBAQCBfYnRfc3RyYXRl Z3koRmluZFNwbGl0RGF0YSAqc3RhdGUsIFNwbGl0UG9pbnQgKmxlZnRwYWdlLAogCSAqIElmIHBh Z2UgaXMgZW50aXJlbHkgZnVsbCBvZiBkdXBsaWNhdGVzLCBhIHNpbmdsZSB2YWx1ZSBzdHJhdGVn eSBzcGxpdAogCSAqIHdpbGwgYmUgcGVyZm9ybWVkLgogCSAqLwotCXBlcmZlY3RwZW5hbHR5ID0g X2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwgcmlnaHRtb3N0KTsKKwlw ZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3Qs IHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZlY3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQog CXsKIAkJKnN0cmF0ZWd5ID0gU1BMSVRfTUFOWV9EVVBMSUNBVEVTOwpAQCAtMTAyNyw3ICsxMDI3 LDcgQEAgX2J0X3N0cmF0ZWd5KEZpbmRTcGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50ICpsZWZ0 cGFnZSwKIAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChzdGF0ZS0+b3JpZ3BhZ2UsIFBfSElLRVkp OwogCQloaWtleSA9IChJbmRleFR1cGxlKSBQYWdlR2V0SXRlbShzdGF0ZS0+b3JpZ3BhZ2UsIGl0 ZW1pZCk7CiAJCXBlcmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVs LCBoaWtleSwKLQkJCQkJCQkJCQkJIHN0YXRlLT5uZXdpdGVtKTsKKwkJCQkJCQkJCQkJIHN0YXRl LT5uZXdpdGVtLCBOVUxMKTsKIAkJaWYgKHBlcmZlY3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQog CQkJKnN0cmF0ZWd5ID0gU1BMSVRfU0lOR0xFX1ZBTFVFOwogCQllbHNlCkBAIC0xMTQ5LDcgKzEx NDksNyBAQCBfYnRfc3BsaXRfcGVuYWx0eShGaW5kU3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQb2lu dCAqc3BsaXQpCiAJbGFzdGxlZnQgPSBfYnRfc3BsaXRfbGFzdGxlZnQoc3RhdGUsIHNwbGl0KTsK IAlmaXJzdHJpZ2h0ID0gX2J0X3NwbGl0X2ZpcnN0cmlnaHQoc3RhdGUsIHNwbGl0KTsKIAotCXJl dHVybiBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0 KTsKKwlyZXR1cm4gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsYXN0bGVmdCwgZmly c3RyaWdodCwgTlVMTCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHV0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMK aW5kZXggYzcxZDFiNmYyZTEuLjc1OTA5YWRhMGRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnR1dGlscy5jCkBAIC02Niw4ICs2Niw2IEBAIHN0YXRpYyBib29sIF9idF9jaGVja19yb3djb21w YXJlKFNjYW5LZXkgc2tleSwKIAkJCQkJCQkJIFNjYW5EaXJlY3Rpb24gZGlyLCBib29sIGZvcmNl bm9ucmVxdWlyZWQsIGJvb2wgKmNvbnRpbnVlc2Nhbik7CiBzdGF0aWMgdm9pZCBfYnRfY2hlY2tr ZXlzX2xvb2tfYWhlYWQoSW5kZXhTY2FuRGVzYyBzY2FuLCBCVFJlYWRQYWdlU3RhdGUgKnBzdGF0 ZSwKIAkJCQkJCQkJCSBpbnQgdHVwbmF0dHMsIFR1cGxlRGVzYyB0dXBkZXNjKTsKLXN0YXRpYyBp bnQJX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAotCQkJ CQkJICAgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LCBCVFNjYW5JbnNlcnQgaXR1cF9rZXkpOwogCiAK IC8qCkBAIC0yNTMyLDcgKzI1MzAsNyBAQCBfYnRfc2V0X3N0YXJ0aWtleShJbmRleFNjYW5EZXNj IHNjYW4sIEJUUmVhZFBhZ2VTdGF0ZSAqcHN0YXRlKQogCWxhc3R0dXAgPSAoSW5kZXhUdXBsZSkg UGFnZUdldEl0ZW0ocHN0YXRlLT5wYWdlLCBpaWQpOwogCiAJLyogRGV0ZXJtaW5lIHRoZSBmaXJz dCBhdHRyaWJ1dGUgd2hvc2UgdmFsdWVzIGNoYW5nZSBvbiBjYWxsZXIncyBwYWdlICovCi0JZmly c3RjaGFuZ2luZ2F0dG51bSA9IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBmaXJzdHR1cCwgbGFz dHR1cCk7CisJZmlyc3RjaGFuZ2luZ2F0dG51bSA9IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBm aXJzdHR1cCwgbGFzdHR1cCwgTlVMTCk7CiAKIAlmb3IgKDsgc3RhcnRpa2V5IDwgc28tPm51bWJl ck9mS2V5czsgc3RhcnRpa2V5KyspCiAJewpAQCAtMzg1Myw3ICszODUxLDcgQEAgX2J0X3RydW5j YXRlKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJp Z2h0LAogCUFzc2VydCghQlRyZWVUdXBsZUlzUGl2b3QobGFzdGxlZnQpICYmICFCVHJlZVR1cGxl SXNQaXZvdChmaXJzdHJpZ2h0KSk7CiAKIAkvKiBEZXRlcm1pbmUgaG93IG1hbnkgYXR0cmlidXRl cyBtdXN0IGJlIGtlcHQgaW4gdHJ1bmNhdGVkIHR1cGxlICovCi0Ja2VlcG5hdHRzID0gX2J0X2tl ZXBfbmF0dHMocmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgaXR1cF9rZXkpOworCWtlZXBuYXR0 cyA9IF9idF9rZWVwX25hdHRzKHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQsIGl0dXBfa2V5LCBO VUxMKTsKIAogI2lmZGVmIERFQlVHX05PX1RSVU5DQVRFCiAJLyogRm9yY2UgdHJ1bmNhdGlvbiB0 byBiZSBpbmVmZmVjdGl2ZSBmb3IgdGVzdGluZyBwdXJwb3NlcyAqLwpAQCAtMzk3MSwxNyArMzk2 OSwyNCBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJ bmRleFR1cGxlIGZpcnN0cmlnaHQsCiAvKgogICogX2J0X2tlZXBfbmF0dHMgLSBob3cgbWFueSBr ZXkgYXR0cmlidXRlcyB0byBrZWVwIHdoZW4gdHJ1bmNhdGluZy4KICAqCisgKiBUaGlzIGlzIGV4 cG9ydGVkIHRvIGJlIHVzZWQgYXMgY29tcGFyaXNvbiBmdW5jdGlvbiBkdXJpbmcgY29uY3VycmVu dAorICogdW5pcXVlIGluZGV4IGJ1aWxkIGluIGNhc2UgX2J0X2tlZXBfbmF0dHNfZmFzdCBpcyBu b3Qgc3VpdGFibGUgYmVjYXVzZQorICogY29sbGF0aW9uIGlzIG5vdCAiYWxsZXF1YWxpbWFnZSIv ZGVkdXBsaWNhdGlvbi1zYWZlLgorICoKICAqIENhbGxlciBwcm92aWRlcyB0d28gdHVwbGVzIHRo YXQgZW5jbG9zZSBhIHNwbGl0IHBvaW50LiAgQ2FsbGVyJ3MgaW5zZXJ0aW9uCiAgKiBzY2Fua2V5 IGlzIHVzZWQgdG8gY29tcGFyZSB0aGUgdHVwbGVzOyB0aGUgc2NhbmtleSdzIGFyZ3VtZW50IHZh bHVlcyBhcmUKICAqIG5vdCBjb25zaWRlcmVkIGhlcmUuCiAgKgorICogaGFzbnVsbHMgdmFsdWUg c2V0IHRvIHRydWUgaW4gY2FzZSBvZiBhbnkgbnVsbCBjb2x1bW4gaW4gYW55IHR1cGxlLgorICoK ICAqIFRoaXMgY2FuIHJldHVybiBhIG51bWJlciBvZiBhdHRyaWJ1dGVzIHRoYXQgaXMgb25lIGdy ZWF0ZXIgdGhhbiB0aGUKICAqIG51bWJlciBvZiBrZXkgYXR0cmlidXRlcyBmb3IgdGhlIGluZGV4 IHJlbGF0aW9uLiAgVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUKICAqIGNhbGxlciBtdXN0IHVzZSBh IGhlYXAgVElEIGFzIGEgdW5pcXVlLWlmaWVyIGluIG5ldyBwaXZvdCB0dXBsZS4KICAqLwotc3Rh dGljIGludAoraW50CiBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFz dGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKLQkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tl eSkKKwkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSwKKwkJCSAgIGJvb2wgKmhhc251bGxzKQog ewogCWludAkJCW5rZXlhdHRzID0gSW5kZXhSZWxhdGlvbkdldE51bWJlck9mS2V5QXR0cmlidXRl cyhyZWwpOwogCVR1cGxlRGVzYwlpdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKQEAg LTQwMDcsNiArNDAxMiw4IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBs ZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogCiAJCWRhdHVtMSA9IGluZGV4X2dl dGF0dHIobGFzdGxlZnQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwxKTsKIAkJZGF0dW0yID0g aW5kZXhfZ2V0YXR0cihmaXJzdHJpZ2h0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMik7CisJ CWlmIChoYXNudWxscykKKwkJCSgqaGFzbnVsbHMpIHw9IChpc051bGwxIHx8IGlzTnVsbDIpOwog CiAJCWlmIChpc051bGwxICE9IGlzTnVsbDIpCiAJCQlicmVhazsKQEAgLTQwMjYsNyArNDAzMyw3 IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5k ZXhUdXBsZSBmaXJzdHJpZ2h0LAogCSAqIGV4cGVjdGVkIGluIGFuIGFsbGVxdWFsaW1hZ2UgaW5k ZXguCiAJICovCiAJQXNzZXJ0KCFpdHVwX2tleS0+YWxsZXF1YWxpbWFnZSB8fAotCQkgICBrZWVw bmF0dHMgPT0gX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0KSk7 CisJCSAgIGtlZXBuYXR0cyA9PSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbGFzdGxlZnQsIGZp cnN0cmlnaHQsIE5VTEwpKTsKIAogCXJldHVybiBrZWVwbmF0dHM7CiB9CkBAIC00MDM3LDcgKzQw NDQsOCBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQs IEluZGV4VHVwbGUgZmlyc3RyaWdodCwKICAqIFRoaXMgaXMgZXhwb3J0ZWQgc28gdGhhdCBhIGNh bmRpZGF0ZSBzcGxpdCBwb2ludCBjYW4gaGF2ZSBpdHMgZWZmZWN0IG9uCiAgKiBzdWZmaXggdHJ1 bmNhdGlvbiBpbmV4cGVuc2l2ZWx5IGV2YWx1YXRlZCBhaGVhZCBvZiB0aW1lIHdoZW4gZmluZGlu ZyBhCiAgKiBzcGxpdCBsb2NhdGlvbi4gIEEgbmFpdmUgYml0d2lzZSBhcHByb2FjaCB0byBkYXR1 bSBjb21wYXJpc29ucyBpcyB1c2VkIHRvCi0gKiBzYXZlIGN5Y2xlcy4KKyAqIHNhdmUgY3ljbGVz LiBBbHNvLCBpdCBtYXkgYmUgdXNlZCBhcyBjb21wYXJpc29uIGZ1bmN0aW9uIGR1cmluZyBjb25j dXJyZW50CisgKiBidWlsZCBvZiB1bmlxdWUgaW5kZXguCiAgKgogICogVGhlIGFwcHJvYWNoIHRh a2VuIGhlcmUgdXN1YWxseSBwcm92aWRlcyB0aGUgc2FtZSBhbnN3ZXIgYXMgX2J0X2tlZXBfbmF0 dHMKICAqIHdpbGwgKGZvciB0aGUgc2FtZSBwYWlyIG9mIHR1cGxlcyBmcm9tIGEgaGVhcGtleXNw YWNlIGluZGV4KSwgc2luY2UgdGhlCkBAIC00MDQ2LDYgKzQwNTQsOCBAQCBfYnRfa2VlcF9uYXR0 cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdo dCwKICAqICJlcXVhbCBpbWFnZSIgY29sdW1ucywgcm91dGluZSBpcyBndWFyYW50ZWVkIHRvIGdp dmUgdGhlIHNhbWUgcmVzdWx0IGFzCiAgKiBfYnRfa2VlcF9uYXR0cyB3b3VsZC4KICAqCisgKiBo YXNudWxscyB2YWx1ZSBzZXQgdG8gdHJ1ZSBpbiBjYXNlIG9mIGFueSBudWxsIGNvbHVtbiBpbiBh bnkgdHVwbGUuCisgKgogICogQ2FsbGVycyBjYW4gcmVseSBvbiB0aGUgZmFjdCB0aGF0IGF0dHJp YnV0ZXMgY29uc2lkZXJlZCBlcXVhbCBoZXJlIGFyZQogICogZGVmaW5pdGVseSBhbHNvIGVxdWFs IGFjY29yZGluZyB0byBfYnRfa2VlcF9uYXR0cywgZXZlbiB3aGVuIHRoZSBpbmRleCB1c2VzCiAg KiBhbiBvcGNsYXNzIG9yIGNvbGxhdGlvbiB0aGF0IGlzIG5vdCAiYWxsZXF1YWxpbWFnZSIvZGVk dXBsaWNhdGlvbi1zYWZlLgpAQCAtNDA1NCw3ICs0MDY0LDggQEAgX2J0X2tlZXBfbmF0dHMoUmVs YXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAg KiBtb3JlIGJhbGFuY2VkIHNwbGl0IHBvaW50LgogICovCiBpbnQKLV9idF9rZWVwX25hdHRzX2Zh c3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmln aHQpCitfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVm dCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAorCQkJCQlib29sICpoYXNudWxscykKIHsKIAlUdXBs ZURlc2MJaXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CiAJaW50CQkJa2V5c3ogPSBJ bmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKHJlbCk7CkBAIC00MDcxLDYgKzQw ODIsOCBAQCBfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0 bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0KQogCiAJCWRhdHVtMSA9IGluZGV4X2dldGF0dHIo bGFzdGxlZnQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwxKTsKIAkJZGF0dW0yID0gaW5kZXhf Z2V0YXR0cihmaXJzdHJpZ2h0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMik7CisJCWlmICho YXNudWxscykKKwkJCSpoYXNudWxscyB8PSAoaXNOdWxsMSB8IGlzTnVsbDIpOwogCQlhdHQgPSBU dXBsZURlc2NDb21wYWN0QXR0cihpdHVwZGVzYywgYXR0bnVtIC0gMSk7CiAKIAkJaWYgKGlzTnVs bDEgIT0gaXNOdWxsMikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA3NzViOTk1NzU3ZS4uOWE0MjM0MjVh ZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTE1MzIsNyArMTUzMiw3IEBAIGluZGV4X2NvbmN1cnJl bnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAKIAkvKiBJbnZhbGlkYXRlIGNhdGFsb2cg c25hcHNob3QganVzdCBmb3IgYXNzZXJ0ICovCiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgp OwotCUFzc2VydChpbmRleEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKIAogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXgg ZnVuY3Rpb25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CkBAIC0z MzIzLDkgKzMzMjMsOSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKICAqIGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVz IHVzIHdpdGggYW4gaW5kZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFk ZGVkIHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAgKgotICogRnVydGhl cm1vcmUsIGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09fUkVTRVRfU05BUFNI T1QgZm9yIHRoZQotICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hvdCB0byBiZSBzZXQg YXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uCi0gKiBmb3IgdGhhdCBpcyB0byBw cm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgorICogRnVydGhlcm1vcmUsIHdlIHNl dCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlIHNjYW4sIHdoaWNoIGNhdXNlcyBuZXcKKyAqIHNu YXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFzb24gIGZv ciB0aGF0IGlzIHRvCisgKiBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgogICoK ICAqIE5leHQsIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAi aW5kaXN2YWxpZCIpIGFuZAogICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0 YXJ0IGEgdGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMKaW5kZXggMGRiMjNiOTgxZGIuLjQwMTU0ZTViMmJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYwpAQCAtMTY5NCw4ICsxNjk0LDggQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICog Y2hhaW5zIGNhbiBiZSBjcmVhdGVkIHdoZXJlIHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBvbGQgdHVw bGUgaW4gdGhlCiAJICogY2hhaW4gaGF2ZSBkaWZmZXJlbnQgaW5kZXgga2V5cy4KIAkgKgotCSAq IFdlIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNp bmcgc2luZ2xlIG9yCi0JICogbXVsdGlwbGUgcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdlIGNhbiBi ZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCisJICogV2UgYnVpbGQgdGhlIGluZGV4IHVz aW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBtdWx0aXBsZQorCSAqIHJlZnJl c2hpbmcgc25hcHNob3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bwog CSAqIHRoZXNlIHR1cGxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5kZXgsIHNpbmNl IGFueSB1cGRhdGVzIG1hZGUKIAkgKiBieSB0cmFuc2FjdGlvbnMgdGhhdCBkaWRuJ3Qga25vdyBh Ym91dCB0aGUgaW5kZXggYXJlIG5vdyBjb21taXR0ZWQgb3IKIAkgKiByb2xsZWQgYmFjay4gIFRo dXMsIGVhY2ggdmlzaWJsZSB0dXBsZSBpcyBlaXRoZXIgdGhlIGVuZCBvZiBpdHMKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYwppbmRleCA1ZjcwZThkZGRhYy4uNzFh NWMyMWUwZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFy aWFudHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMK QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3Byb2MuaCIKIAogCiAvKiBzb3J0LXR5cGUgY29kZXMgZm9yIHNvcnRfX3N0YXJ0IHBy b2JlcyAqLwpAQCAtMTMzLDYgKzEzNCw3IEBAIHR5cGVkZWYgc3RydWN0CiAKIAlib29sCQllbmZv cmNlVW5pcXVlOwkvKiBjb21wbGFpbiBpZiB3ZSBmaW5kIGR1cGxpY2F0ZSB0dXBsZXMgKi8KIAli b29sCQl1bmlxdWVOdWxsc05vdERpc3RpbmN0OyAvKiB1bmlxdWUgY29uc3RyYWludCBudWxsIHRy ZWF0bWVudCAqLworCWJvb2wJCXVuaXF1ZURlYWRJZ25vcmVkOyAvKiBpZ25vcmUgZGVhZCB0dXBs ZXMgaW4gdW5pcXVlIGNoZWNrICovCiB9IFR1cGxlc29ydEluZGV4QlRyZWVBcmc7CiAKIC8qCkBA IC0zNTgsNiArMzYwLDcgQEAgdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhl YXBSZWwsCiAJCQkJCQkJUmVsYXRpb24gaW5kZXhSZWwsCiAJCQkJCQkJYm9vbCBlbmZvcmNlVW5p cXVlLAogCQkJCQkJCWJvb2wgdW5pcXVlTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQlib29sIHVu aXF1ZURlYWRJZ25vcmVkLAogCQkJCQkJCWludCB3b3JrTWVtLAogCQkJCQkJCVNvcnRDb29yZGlu YXRlIGNvb3JkaW5hdGUsCiAJCQkJCQkJaW50IHNvcnRvcHQpCkBAIC00MDAsNiArNDAzLDcgQEAg dHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJYXJnLT5pbmRl eC5pbmRleFJlbCA9IGluZGV4UmVsOwogCWFyZy0+ZW5mb3JjZVVuaXF1ZSA9IGVuZm9yY2VVbmlx dWU7CiAJYXJnLT51bmlxdWVOdWxsc05vdERpc3RpbmN0ID0gdW5pcXVlTnVsbHNOb3REaXN0aW5j dDsKKwlhcmctPnVuaXF1ZURlYWRJZ25vcmVkID0gdW5pcXVlRGVhZElnbm9yZWQ7CiAKIAlpbmRl eFNjYW5LZXkgPSBfYnRfbWtzY2Fua2V5KGluZGV4UmVsLCBOVUxMKTsKIApAQCAtMTY1Myw2ICsx NjU3LDcgQEAgY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayhjb25zdCBTb3J0VHVwbGUg KmEsIGNvbnN0IFNvcnRUdXBsZSAqYiwKIAkJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107 CiAJCWJvb2wJCWlzbnVsbFtJTkRFWF9NQVhfS0VZU107CiAJCWNoYXIJICAgKmtleV9kZXNjOwor CQlib29sCQl1bmlxdWVDaGVja0ZhaWwgPSB0cnVlOwogCiAJCS8qCiAJCSAqIFNvbWUgcmF0aGVy IGJyYWluLWRlYWQgaW1wbGVtZW50YXRpb25zIG9mIHFzb3J0IChzdWNoIGFzIHRoZSBvbmUgaW4K QEAgLTE2NjIsMTggKzE2NjcsNTggQEAgY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayhj b25zdCBTb3J0VHVwbGUgKmEsIGNvbnN0IFNvcnRUdXBsZSAqYiwKIAkJICovCiAJCUFzc2VydCh0 dXBsZTEgIT0gdHVwbGUyKTsKIAotCQlpbmRleF9kZWZvcm1fdHVwbGUodHVwbGUxLCB0dXBEZXMs IHZhbHVlcywgaXNudWxsKTsKLQotCQlrZXlfZGVzYyA9IEJ1aWxkSW5kZXhWYWx1ZURlc2NyaXB0 aW9uKGFyZy0+aW5kZXguaW5kZXhSZWwsIHZhbHVlcywgaXNudWxsKTsKLQotCQllcmVwb3J0KEVS Uk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfVU5JUVVFX1ZJT0xBVElPTiksCi0JCQkJIGVycm1z ZygiY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggXCIlc1wiIiwKLQkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwpKSwKLQkJCQkga2V5X2Rlc2MgPyBl cnJkZXRhaWwoIktleSAlcyBpcyBkdXBsaWNhdGVkLiIsIGtleV9kZXNjKSA6Ci0JCQkJIGVycmRl dGFpbCgiRHVwbGljYXRlIGtleXMgZXhpc3QuIiksCi0JCQkJIGVycnRhYmxlY29uc3RyYWludChh cmctPmluZGV4LmhlYXBSZWwsCi0JCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmct PmluZGV4LmluZGV4UmVsKSkpKTsKKwkJLyogVGhpcyBpcyBmYWlsLWZhc3QgY2hlY2ssIHNlZSBf YnRfbG9hZCBmb3IgZGV0YWlscy4gKi8KKwkJaWYgKGFyZy0+dW5pcXVlRGVhZElnbm9yZWQpCisJ CXsKKwkJCWJvb2wJYW55X3R1cGxlX2RlYWQsCisJCQkJCWNhbGxfYWdhaW4gPSBmYWxzZSwKKwkJ CQkJaWdub3JlZDsKKworCQkJVHVwbGVUYWJsZVNsb3QJKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVU YWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihhcmctPmluZGV4LmhlYXBSZWwpLAorCQkJCQkJCQkJ CQkJCQkJICZUVFNPcHNCdWZmZXJIZWFwVHVwbGUpOworCQkJSXRlbVBvaW50ZXJEYXRhIHRpZCA9 IHR1cGxlMS0+dF90aWQ7CisKKwkJCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoID0gdGFibGVf aW5kZXhfZmV0Y2hfYmVnaW4oYXJnLT5pbmRleC5oZWFwUmVsKTsKKwkJCWFueV90dXBsZV9kZWFk ID0gIXRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKGZldGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNs b3QsICZjYWxsX2FnYWluLCAmaWdub3JlZCk7CisKKwkJCWlmICghYW55X3R1cGxlX2RlYWQpCisJ CQl7CisJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlOworCQkJCXRpZCA9IHR1cGxlMi0+dF90aWQ7CisJ CQkJYW55X3R1cGxlX2RlYWQgPSAhdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0dXBs ZTItPnRfdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxsX2FnYWluLAorCQkJCQkJCQkJCQkJ CQkgICZpZ25vcmVkKTsKKwkJCX0KKworCQkJaWYgKGFueV90dXBsZV9kZWFkKQorCQkJeworCQkJ CWVsb2coREVCVUc1LCAic2tpcHBpbmcgZHVwbGljYXRlIHZhbHVlcyBiZWNhdXNlIHNvbWUgb2Yg dGhlbSBhcmUgZGVhZDogKCV1LCV1KSB2cyAoJXUsJXUpIiwKKwkJCQkJIEl0ZW1Qb2ludGVyR2V0 QmxvY2tOdW1iZXIoJnR1cGxlMS0+dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXRO dW1iZXIoJnR1cGxlMS0+dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigm dHVwbGUyLT50X3RpZCksCisJCQkJCSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdHVwbGUy LT50X3RpZCkpOworCisJCQkJdW5pcXVlQ2hlY2tGYWlsID0gZmFsc2U7CisJCQl9CisJCQlFeGVj RHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworCQkJdGFibGVfaW5kZXhfZmV0Y2hfZW5k KGZldGNoKTsKKwkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7 CisJCX0KKwkJaWYgKHVuaXF1ZUNoZWNrRmFpbCkKKwkJeworCQkJaW5kZXhfZGVmb3JtX3R1cGxl KHR1cGxlMSwgdHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCWtleV9kZXNjID0gQnVpbGRJ bmRleFZhbHVlRGVzY3JpcHRpb24oYXJnLT5pbmRleC5pbmRleFJlbCwgdmFsdWVzLCBpc251bGwp OworCisJCQkvKiBrZWVwIHRoaXMgZXJyb3IgbWVzc2FnZSBpbiBzeW5jIHdpdGggdGhlIHNhbWUg aW4gX2J0X2xvYWQgKi8KKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf VU5JUVVFX1ZJT0xBVElPTiksCisJCQkJCQkJZXJybXNnKCJjb3VsZCBub3QgY3JlYXRlIHVuaXF1 ZSBpbmRleCBcIiVzXCIiLAorCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmct PmluZGV4LmluZGV4UmVsKSksCisJCQkJCQkJa2V5X2Rlc2MgPyBlcnJkZXRhaWwoIktleSAlcyBp cyBkdXBsaWNhdGVkLiIsIGtleV9kZXNjKSA6CisJCQkJCQkJZXJyZGV0YWlsKCJEdXBsaWNhdGUg a2V5cyBleGlzdC4iKSwKKwkJCQkJCQllcnJ0YWJsZWNvbnN0cmFpbnQoYXJnLT5pbmRleC5oZWFw UmVsLAorCQkJCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4Lmlu ZGV4UmVsKSkpKTsKKwkJfQogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvbmJ0cmVlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKaW5kZXggZTcwOWQyZTBh ZmUuLjRiZDhhNDAzY2JiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCkBAIC0xMzQwLDggKzEzNDAsMTAgQEAg ZXh0ZXJuIGJvb2wgYnRwcm9wZXJ0eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8sCiBleHRlcm4g Y2hhciAqYnRidWlsZHBoYXNlbmFtZShpbnQ2NCBwaGFzZW51bSk7CiBleHRlcm4gSW5kZXhUdXBs ZSBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAogCQkJCQkJ CSAgIEluZGV4VHVwbGUgZmlyc3RyaWdodCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5KTsKK2V4dGVy biBpbnQJX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJ bmRleFR1cGxlIGZpcnN0cmlnaHQsCisJCQkJCQkgICBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIGJv b2wgKmhhc251bGxzKTsKIGV4dGVybiBpbnQJX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiBy ZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsCi0JCQkJCQkJCUluZGV4VHVwbGUgZmlyc3RyaWdodCk7 CisJCQkJCQkJCUluZGV4VHVwbGUgZmlyc3RyaWdodCwgYm9vbCAqaGFzbnVsbHMpOwogZXh0ZXJu IGJvb2wgX2J0X2NoZWNrX25hdHRzKFJlbGF0aW9uIHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsIFBh Z2UgcGFnZSwKIAkJCQkJCQlPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIGV4dGVybiB2b2lkIF9idF9j aGVja190aGlyZF9wYWdlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcCwKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oCmluZGV4IGE2OWY3MWEzYWNlLi5hY2QyMGRiZmFiOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBA IC0xNzU0LDkgKzE3NTQsOCBAQCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNj YW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKICAqIFRoaXMgb25seSByZWFs bHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0sIGl0IG1pZ2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6 ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIuCiAgKgotICogSW4gY2FzZSBvZiBub24tdW5pcXVl IGNvbmN1cnJlbnQgIGluZGV4IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQKLSAq IGZvciB0aGUgc2Nhbi4gVGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzIG9uIHRoZSBm bHkgdG8gYWxsb3cgeG1pbgotICogaG9yaXpvbiBwcm9wYWdhdGUuCisgKiBJbiBjYXNlIG9mIGNv bmN1cnJlbnQgaW5kZXggYnVpbGQgU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhl IHNjYW4uCisgKiBUaGF0IGxlYWRzIGZvciBjaGFuZ2luZyBzbmFwc2hvdHMgb24gdGhlIGZseSB0 byBhbGxvdyB4bWluIGhvcml6b24gcHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJs ZQogdGFibGVfaW5kZXhfYnVpbGRfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxl c29ydC5oCmluZGV4IGVmNzlmMjU5ZjkzLi5lYjliYzMwZTVkYSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0 LmgKQEAgLTQyOSw2ICs0MjksNyBAQCBleHRlcm4gVHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9i ZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCQkJCQkJICAgUmVsYXRp b24gaW5kZXhSZWwsCiAJCQkJCQkJCQkJCQkgICBib29sIGVuZm9yY2VVbmlxdWUsCiAJCQkJCQkJ CQkJCQkgICBib29sIHVuaXF1ZU51bGxzTm90RGlzdGluY3QsCisJCQkJCQkJCQkJCQkgICBib29s CXVuaXF1ZURlYWRJZ25vcmVkLAogCQkJCQkJCQkJCQkJICAgaW50IHdvcmtNZW0sIFNvcnRDb29y ZGluYXRlIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkJCQkgICBpbnQgc29ydG9wdCk7CiBleHRlcm4g VHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9pbmRleF9oYXNoKFJlbGF0aW9uIGhlYXBS ZWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0 ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKaW5kZXggNTk1YTQwMDBjZTAu LjlmMDNmYTMwMzNjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CkBAIC00 MSw3ICs0MSwxMSBAQCBFTkQ7ICQkOwogLS0tLS0tLS0tLS0tLS0tLQogQUxURVIgVEFCTEUgY2lj X3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0wKTsKIENSRUFURSBVTklRVUUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0 cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIFJFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25h cHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVh cF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKQEAgLTg2LDcg KzkwLDkgQEAgU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5f c25hcHNob3RfZWZmZWN0aXZlJyk7CiAoMSByb3cpCiAKIENSRUFURSBVTklRVUUgSU5ERVggQ09O Q1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxp emUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNj YW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkp OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplCi0tIAoyLjQzLjAKCg== --00000000000027fe8906381ae2a2 Content-Type: application/x-patch; name="v21-0002-Add-stress-tests-for-concurrent-index-builds.patch" Content-Disposition: attachment; filename="v21-0002-Add-stress-tests-for-concurrent-index-builds.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8v210 RnJvbSAxZmU3NDUwZjMxODQzYzM1NTI0MjNlZTQwMWMzOWQxMzFlMWM3ZGU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIxIDAyLzEyXSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IGJ1 aWxkcwoKSW50cm9kdWNlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRp b25zOgotIHRlc3QgY29uY3VycmVudCBpbnNlcnRzL3VwZGF0ZXMgZHVyaW5nIENSRUFURS9SRUlO REVYIElOREVYIENPTkNVUlJFTlRMWQotIGNvdmVyIHZhcmlvdXMgaW5kZXggdHlwZXMgKGJ0cmVl LCBnaW4sIGdpc3QsIGJyaW4sIGhhc2gsIHNwZ2lzdCkKLSB0ZXN0IHVuaXF1ZSBhbmQgbm9uLXVu aXF1ZSBpbmRleGVzCi0gdGVzdCB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzCi0gdGVz dCBib3RoIHBhcmFsbGVsIGFuZCBub24tcGFyYWxsZWwgb3BlcmF0aW9ucwoKVGhlc2UgdGVzdHMg dmVyaWZ5IHRoZSBiZWhhdmlvciBvZiB0aGUgZm9sbG93aW5nIGNvbW1pdHMuCi0tLQogc3JjL2Jp bi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkICB8ICAgMSArCiBzcmMvYmluL3BnX2FtY2hlY2svdC8w MDZfY2ljLnBsIHwgMjIzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVz IGNoYW5nZWQsIDIyNCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9w Z19hbWNoZWNrL3QvMDA2X2NpYy5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYW1jaGVjay9t ZXNvbi5idWlsZCBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWlsZAppbmRleCAzMTZlYTBk NDBiOC4uN2RmMTU0MzVmYmIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5i dWlsZAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQKQEAgLTI4LDYgKzI4LDcg QEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDAzX2NoZWNrLnBsJywKICAgICAgICd0LzAwNF92ZXJp ZnlfaGVhcGFtLnBsJywKICAgICAgICd0LzAwNV9vcGNsYXNzX2RhbWFnZS5wbCcsCisgICAgICAn dC8wMDZfY2ljLnBsJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19h bWNoZWNrL3QvMDA2X2NpYy5wbCBiL3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJhYWQwZThkYWE4Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA2X2NpYy5wbApAQCAtMCwwICsxLDIy MyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisKKyMgVGVzdCBSRUlOREVYIENPTkNVUlJFTlRMWSB3aXRoIGNvbmN1cnJlbnQgbW9k aWZpY2F0aW9ucyBhbmQgSE9UIHVwZGF0ZXMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFU QUwgPT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK1Rlc3Q6Ok1vcmUtPmJ1aWxk ZXItPnRvZG9fc3RhcnQoJ2ZpbGVzeXN0ZW0gYnVnJykKKyAgaWYgUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM6Omhhc193YWxfcmVhZF9idWc7CisKK215ICgkbm9kZSwgJHJlc3VsdCk7CisKKyMKKyMg VGVzdCBzZXQtdXAKKyMKKyRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdS Q190ZXN0Jyk7Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywKKwknbG9ja190aW1lb3V0ID0gJyAuICgxMDAwICogJFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOjp0aW1lb3V0X2RlZmF1bHQpKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywgJ2ZzeW5jID0gb2ZmJyk7Ciskbm9kZS0+c3RhcnQ7Ciskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHEoQ1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrKSk7Ciskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHEoQ1JFQVRFIFRBQkxFIHRibChpIGludCBwcmltYXJ5IGtleSwKKwkJCQkJ CQkJYzEgbW9uZXkgZGVmYXVsdCAwLCBjMiBtb25leSBkZWZhdWx0IDAsCisJCQkJCQkJCWMzIG1v bmV5IGRlZmF1bHQgMCwgdXBkYXRlZF9hdCB0aW1lc3RhbXAsCisJCQkJCQkJCWlhIGludDRbXSwg cCBwb2ludCkpKTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCk7KSk7CisjIGNyZWF0ZSBzZXF1 ZW5jZQorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBVTkxPR0dFRCBTRVFV RU5DRSBpbl9yb3dfcmVidWlsZCBTVEFSVCAxIElOQ1JFTUVOVCAxOykpOworJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpOykpOwor CisjIENyZWF0ZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBwcmVkaWNhdGUgdGVzdHMKKyRub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcSgKKwlDUkVBVEUgRlVOQ1RJT04gcHJlZGljYXRlX3N0YWJs ZSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwlMQU5HVUFHRSBwbHBnc3FsIEFTICQkCisJQkVH SU4KKwkJRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKwkJUkVUVVJOIHRydWU7CisJ RU5EOyAkJDsKKykpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoCisJQ1JFQVRF IEZVTkNUSU9OIHByZWRpY2F0ZV9jb25zdChpbnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxF CisJTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorCUJFR0lOCisJCVJFVFVSTiBNT0QoJDEsIDIpID0g MDsKKwlFTkQ7ICQkOworKSk7CisKKyMgUnVuIENJQy9SSUMgaW4gZGlmZmVyZW50IG9wdGlvbnMg Y29uY3VycmVudGx5IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2goCisJJy0tbm8tdmFjdXVt IC0tY2xpZW50PTMwIC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5zYWN0aW9ucz0yNTAw JywKKwkwLAorCVtxcnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7XiR9XSwKKwknY29uY3Vy cmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZJywK Kwl7CisJCSdjb25jdXJyZW50X29wcycgPT4gcSgKKwkJCVNFVCBkZWJ1Z19wYXJhbGxlbF9xdWVy eSA9IG9mZjsgLS0gdGhpcyBpcyBiZWNhdXNlIHByZWRpY2F0ZV9zdGFibGUgaW1wbGVtZW50YXRp b24KKwkJCVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9jayg0Mik6OmludGVnZXIgQVMgZ290bG9j ayBcZ3NldAorCQkJXGlmIDpnb3Rsb2NrCisJCQkJU0VMRUNUIG5leHR2YWwoJ2luX3Jvd19yZWJ1 aWxkJykgQVMgbGFzdF92YWx1ZSBcZ3NldAorCQkJCVxzZXQgdmFyaWFudCByYW5kb20oMCwgNSkK KwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAz CisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7 CisJCQkJCVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkg bmV3X2lkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMQor CQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVk X2F0KSBXSEVSRSBwcmVkaWNhdGVfc3RhYmxlKCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMgor CQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVk X2F0KSBXSEVSRSBNT0QoaSwgMikgPSAwOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJ CUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCkg V0hFUkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJ CUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwocHJlZGljYXRlX2NvbnN0 KGkpKTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSA1CisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIG5ld19pZHggT04gdGJsKGksIHByZWRpY2F0ZV9jb25zdChpKSwgdXBkYXRlZF9hdCkg V0hFUkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlcZW5kaWYKKwkJCQkJXHNsZWVwIDEwIG1z CisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnbmV3X2lkeCcsIGhlYXBhbGxpbmRleGVkID0+ IHRydWUsIGNoZWNrdW5pcXVlID0+IHRydWUpOworCQkJCQlSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBuZXdfaWR4OworCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4X2No ZWNrKCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1 ZSk7CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJXGVuZGlmCisJ CQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVt IHJhbmRvbSgxMDAwLCAxMDAwMDApCisJCQkJQkVHSU47CisJCQkJSU5TRVJUIElOVE8gdGJsIFZB TFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1Qo aSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJs IFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJ Q1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8g dGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09O RkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElO VE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04g Q09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJU IElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJ T04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJU0VM RUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAxKTsKKwkJCQlDT01NSVQ7CisJCQlcZW5kaWYK KwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoVFJVTkNBVEUgVEFC TEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZvciB1bmlxdWUgaW5kZXggY29uY3VycmVudGx5 IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2goCisJJy0tbm8tdmFjdXVtIC0tY2xpZW50PTMw IC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5zYWN0aW9ucz0yNTAwJywKKwkwLAorCVtx cnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7XiR9XSwKKwknY29uY3VycmVudCBvcGVyYXRp b25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGZvciB1bmlxdWUgQlRS RUUnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX3VuaXF1ZV9pZHgnID0+IHEoCisJCQlTRUxFQ1Qg cGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxp ZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3Rf dmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxh c3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9 OnBhcmFsbGVscyk7CisJCQkJCUNSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19p ZHggT04gdGJsKGkpOworCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4X2No ZWNrKCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1 ZSk7CisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJCVxzbGVl cCAxMCBtcworCQkJCQlTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ25ld19pZHgnLCBoZWFwYWxsaW5k ZXhlZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgbmV3X2lkeDsKKwkJCQlcZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5s b2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJXHNldCBudW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5k b20oMSwgNSkpKQorCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51 bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRl ZF9hdCA9IG5vdygpOworCQkJCVNFTEVDVCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJ CQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoVFJV TkNBVEUgVEFCTEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZvciBHSU4gd2l0aCB1cHNlcnRz Ciskbm9kZS0+cGdiZW5jaCgKKwknLS1uby12YWN1dW0gLS1jbGllbnQ9MzAgLS1qb2JzPTQgLS1l eGl0LW9uLWFib3J0IC0tdHJhbnNhY3Rpb25zPTI1MDAnLAorCTAsCisJW3Fye2FjdHVhbGx5IHBy b2Nlc3NlZH1dLAorCVtxcnteJH1dLAorCSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlO REVYL0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgZm9yIEdJTi9HSVNUL0JSSU4vSEFTSC9TUEdJ U1QnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX2dpbl9pZHgnID0+IHEoCisJCQlTRUxFQ1QgcGdf dHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6 Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFs dWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3Rf dmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBh cmFsbGVscyk7CisJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0Ymwg VVNJTkcgR0lOIChpYSk7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxFQ1QgZ2luX2luZGV4 X2NoZWNrKCduZXdfaWR4Jyk7CisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19p ZHg7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxFQ1QgZ2luX2luZGV4X2NoZWNrKCduZXdf aWR4Jyk7CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJXGVuZGlm CisJCQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCQlcZWxzZQorCQkJCVxzZXQg bnVtIHJhbmRvbSgxLCBwb3dlcigxMCwgcmFuZG9tKDEsIDUpKSkKKwkJCQlJTlNFUlQgSU5UTyB0 YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygpKQorCQkJCQlPTiBDT05G TElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsKKwkJCQlTRUxFQ1Qgc2V0 dmFsKCdpbl9yb3dfcmVidWlsZCcsIDEpOworCQkJXGVuZGlmCisJCSkKKwl9KTsKKworJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFRSVU5DQVRFIFRBQkxFIHRibDspKTsKKworIyBSdW4g Q0lDL1JJQyBmb3IgR0lTVC9CUklOL0hBU0gvU1BHSVNUIGluZGV4IGNvbmN1cnJlbnRseSB3aXRo IHVwc2VydHMKKyRub2RlLT5wZ2JlbmNoKAorCSctLW5vLXZhY3V1bSAtLWNsaWVudD0zMCAtLWpv YnM9NCAtLWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlvbnM9MjUwMCcsCisJMCwKKwlbcXJ7YWN0 dWFsbHkgcHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3 aXRoIFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgR0lOL0dJU1QvQlJJTi9I QVNIL1NQR0lTVCcsCisJeworCQknY29uY3VycmVudF9vcHNfb3RoZXJfaWR4JyA9PiBxKAorCQkJ U0VMRUNUIHBnX3RyeV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0 CisJCQlcaWYgOmdvdGxvY2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBB UyBsYXN0X3ZhbHVlIFxnc2V0CisJCQkJXHNldCBwYXJhbGxlbHMgcmFuZG9tKDAsIDQpCisJCQkJ XGlmIDpsYXN0X3ZhbHVlIDwgMworCQkJCQlBTFRFUiBUQUJMRSB0YmwgU0VUIChwYXJhbGxlbF93 b3JrZXJzPTpwYXJhbGxlbHMpOworCQkJCQlcc2V0IHZhcmlhbnQgcmFuZG9tKDAsIDMpCisJCQkJ CVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lk eCBPTiB0YmwgVVNJTkcgR0lTVCAocCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMQorCQkJCQkJ Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibCBVU0lORyBCUklOICh1cGRh dGVkX2F0KTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSAyCisJCQkJCQlDUkVBVEUgSU5ERVggQ09O Q1VSUkVOVExZIG5ld19pZHggT04gdGJsIFVTSU5HIEhBU0ggKHVwZGF0ZWRfYXQpOworCQkJCQlc ZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lk eCBPTiB0YmwgVVNJTkcgU1BHSVNUIChwKTsKKwkJCQkJXGVuZGlmCisJCQkJCVxzbGVlcCAxMCBt cworCQkJCQlSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4OworCQkJCQlcc2xlZXAg MTAgbXMKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeDsKKwkJCQlcZW5kaWYK KwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJXHNldCBu dW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5kb20oMSwgNSkpKQorCQkJCUlOU0VSVCBJTlRPIHRi bCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZM SUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCVNFTEVDVCBzZXR2 YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+ c3RvcDsKK2RvbmVfdGVzdGluZygpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIu NDMuMAoK --00000000000027fe8906381ae2a2 Content-Type: application/x-patch; name="v21-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Disposition: attachment; filename="v21-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8v311 RnJvbSA2OTcxOGNmMjUwNjA2Y2VlZWNkODFiODhiYzUyZGVkOTQ1ZWExOTAwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDowOTo1MiArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIxIDAxLzEyXSBUaGlzIGlzIGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9y Zy81MC81MTYwLwogYW5kIGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9yZy9wYXRjaC81 NDM4LyBtZXJnZWQgaW4gc2luZ2xlIGNvbW1pdC4gaXQKIGlzIHJlcXVpcmVkIGZvciBzdGFiaWxp dHkgb2Ygc3RyZXNzIHRlc3RzLgoKLS0tCiBjb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5j ICAgICAgICB8ICA2OCArKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYyAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMg ICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgfCAxMTkg KysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRh YmxlLmMgfCAgIDIgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAgfCAx MzUgKysrKysrKysrKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFw bWdyLmMgICAgICAgfCAgIDIgKwogNyBmaWxlcyBjaGFuZ2VkLCAyNDUgaW5zZXJ0aW9ucygrKSwg ODggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRy ZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKaW5kZXggZjExYzQzYTBlZDcu LjMwNDhlMDQ0YWVjIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5j CisrKyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKQEAgLTM4Miw3ICszODIsNiBA QCBidF9jaGVja19ldmVyeV9sZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJv b2wgaGVhcGtleXNwYWNlLAogCUJUTWV0YVBhZ2VEYXRhICptZXRhZDsKIAl1aW50MzIJCXByZXZp b3VzbGV2ZWw7CiAJQnRyZWVMZXZlbAljdXJyZW50OwotCVNuYXBzaG90CXNuYXBzaG90ID0gU25h cHNob3RBbnk7CiAKIAlpZiAoIXJlYWRvbmx5KQogCQllbG9nKERFQlVHMSwgInZlcmlmeWluZyBj b25zaXN0ZW5jeSBvZiB0cmVlIHN0cnVjdHVyZSBmb3IgaW5kZXggXCIlc1wiIiwKQEAgLTQzMywz OCArNDMyLDM1IEBAIGJ0X2NoZWNrX2V2ZXJ5X2xldmVsKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g aGVhcHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsCiAJCXN0YXRlLT5oZWFwdHVwbGVzcHJlc2VudCA9 IDA7CiAKIAkJLyoKLQkJICogUmVnaXN0ZXIgb3VyIG93biBzbmFwc2hvdCBpbiAhcmVhZG9ubHkg Y2FzZSwgcmF0aGVyIHRoYW4gYXNraW5nCisJCSAqIFJlZ2lzdGVyIG91ciBvd24gc25hcHNob3Qg Zm9yIGhlYXBhbGxpbmRleGVkLCByYXRoZXIgdGhhbiBhc2tpbmcKIAkJICogdGFibGVfaW5kZXhf YnVpbGRfc2NhbigpIHRvIGRvIHRoaXMgZm9yIHVzIGxhdGVyLiAgVGhpcyBuZWVkcyB0bwogCQkg KiBoYXBwZW4gYmVmb3JlIGluZGV4IGZpbmdlcnByaW50aW5nIGJlZ2lucywgc28gd2UgY2FuIGxh dGVyIGJlCiAJCSAqIGNlcnRhaW4gdGhhdCBpbmRleCBmaW5nZXJwcmludGluZyBzaG91bGQgaGF2 ZSByZWFjaGVkIGFsbCB0dXBsZXMKIAkJICogcmV0dXJuZWQgYnkgdGFibGVfaW5kZXhfYnVpbGRf c2NhbigpLgogCQkgKi8KLQkJaWYgKCFzdGF0ZS0+cmVhZG9ubHkpCi0JCXsKLQkJCXNuYXBzaG90 ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlzdGF0ZS0+ c25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAK LQkJCS8qCi0JCQkgKiBHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkgYWx3YXlzIGFjcXVpcmVzIGEg bmV3IE1WQ0Mgc25hcHNob3QgaW4KLQkJCSAqIFJFQUQgQ09NTUlUVEVEIG1vZGUuICBBIG5ldyBz bmFwc2hvdCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYWxsCi0JCQkgKiB0aGUgZW50cmllcyBpdCBy ZXF1aXJlcyBpbiB0aGUgaW5kZXguCi0JCQkgKgotCQkJICogV2UgbXVzdCBkZWZlbmQgYWdhaW5z dCB0aGUgcG9zc2liaWxpdHkgdGhhdCBhbiBvbGQgeGFjdAotCQkJICogc25hcHNob3Qgd2FzIHJl dHVybmVkIGF0IGhpZ2hlciBpc29sYXRpb24gbGV2ZWxzIHdoZW4gdGhhdAotCQkJICogc25hcHNo b3QgaXMgbm90IHNhZmUgZm9yIGluZGV4IHNjYW5zIG9mIHRoZSB0YXJnZXQgaW5kZXguICBUaGlz Ci0JCQkgKiBpcyBwb3NzaWJsZSB3aGVuIHRoZSBzbmFwc2hvdCBzZWVzIHR1cGxlcyB0aGF0IGFy ZSBiZWZvcmUgdGhlCi0JCQkgKiBpbmRleCdzIGluZGNoZWNreG1pbiBob3Jpem9uLiAgVGhyb3dp bmcgYW4gZXJyb3IgaGVyZSBzaG91bGQgYmUKLQkJCSAqIHZlcnkgcmFyZS4gIEl0IGRvZXNuJ3Qg c2VlbSB3b3J0aCB1c2luZyBhIHNlY29uZGFyeSBzbmFwc2hvdCB0bwotCQkJICogYXZvaWQgdGhp cy4KLQkJCSAqLwotCQkJaWYgKElzb2xhdGlvblVzZXNYYWN0U25hcHNob3QoKSAmJiByZWwtPnJk X2luZGV4LT5pbmRjaGVja3htaW4gJiYKLQkJCQkhVHJhbnNhY3Rpb25JZFByZWNlZGVzKEhlYXBU dXBsZUhlYWRlckdldFhtaW4ocmVsLT5yZF9pbmRleHR1cGxlLT50X2RhdGEpLAotCQkJCQkJCQkJ ICAgc25hcHNob3QtPnhtaW4pKQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShF UlJDT0RFX1RfUl9TRVJJQUxJWkFUSU9OX0ZBSUxVUkUpLAotCQkJCQkJIGVycm1zZygiaW5kZXgg XCIlc1wiIGNhbm5vdCBiZSB2ZXJpZmllZCB1c2luZyB0cmFuc2FjdGlvbiBzbmFwc2hvdCIsCi0J CQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7Ci0JCX0KLQl9CisJCS8qCisJ CSAqIEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSBhbHdheXMgYWNxdWlyZXMgYSBuZXcgTVZDQyBz bmFwc2hvdCBpbgorCQkgKiBSRUFEIENPTU1JVFRFRCBtb2RlLiAgQSBuZXcgc25hcHNob3QgaXMg Z3VhcmFudGVlZCB0byBoYXZlIGFsbAorCQkgKiB0aGUgZW50cmllcyBpdCByZXF1aXJlcyBpbiB0 aGUgaW5kZXguCisJCSAqCisJCSAqIFdlIG11c3QgZGVmZW5kIGFnYWluc3QgdGhlIHBvc3NpYmls aXR5IHRoYXQgYW4gb2xkIHhhY3QKKwkJICogc25hcHNob3Qgd2FzIHJldHVybmVkIGF0IGhpZ2hl ciBpc29sYXRpb24gbGV2ZWxzIHdoZW4gdGhhdAorCQkgKiBzbmFwc2hvdCBpcyBub3Qgc2FmZSBm b3IgaW5kZXggc2NhbnMgb2YgdGhlIHRhcmdldCBpbmRleC4gIFRoaXMKKwkJICogaXMgcG9zc2li bGUgd2hlbiB0aGUgc25hcHNob3Qgc2VlcyB0dXBsZXMgdGhhdCBhcmUgYmVmb3JlIHRoZQorCQkg KiBpbmRleCdzIGluZGNoZWNreG1pbiBob3Jpem9uLiAgVGhyb3dpbmcgYW4gZXJyb3IgaGVyZSBz aG91bGQgYmUKKwkJICogdmVyeSByYXJlLiAgSXQgZG9lc24ndCBzZWVtIHdvcnRoIHVzaW5nIGEg c2Vjb25kYXJ5IHNuYXBzaG90IHRvCisJCSAqIGF2b2lkIHRoaXMuCisJCSAqLworCQlpZiAoSXNv bGF0aW9uVXNlc1hhY3RTbmFwc2hvdCgpICYmIHJlbC0+cmRfaW5kZXgtPmluZGNoZWNreG1pbiAm JgorCQkJIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyhIZWFwVHVwbGVIZWFkZXJHZXRYbWluKHJlbC0+ cmRfaW5kZXh0dXBsZS0+dF9kYXRhKSwKKwkJCQkJCQkJICAgc3RhdGUtPnNuYXBzaG90LT54bWlu KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVF9SX1NFUklBTEla QVRJT05fRkFJTFVSRSksCisJCQkJCSBlcnJtc2coImluZGV4IFwiJXNcIiBjYW5ub3QgYmUgdmVy aWZpZWQgdXNpbmcgdHJhbnNhY3Rpb24gc25hcHNob3QiLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCkpKSk7Cit9CiAKIAkvKgogCSAqIFdlIG5lZWQgYSBzbmFwc2hvdCB0byBj aGVjayB0aGUgdW5pcXVlbmVzcyBvZiB0aGUgaW5kZXguIEZvciBiZXR0ZXIKQEAgLTQ3Niw5ICs0 NzIsNyBAQCBidF9jaGVja19ldmVyeV9sZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXBy ZWwsIGJvb2wgaGVhcGtleXNwYWNlLAogCQlzdGF0ZS0+aW5kZXhpbmZvID0gQnVpbGRJbmRleElu Zm8oc3RhdGUtPnJlbCk7CiAJCWlmIChzdGF0ZS0+aW5kZXhpbmZvLT5paV9VbmlxdWUpCiAJCXsK LQkJCWlmIChzbmFwc2hvdCAhPSBTbmFwc2hvdEFueSkKLQkJCQlzdGF0ZS0+c25hcHNob3QgPSBz bmFwc2hvdDsKLQkJCWVsc2UKKwkJCWlmIChzdGF0ZS0+c25hcHNob3QgPT0gSW52YWxpZFNuYXBz aG90KQogCQkJCXN0YXRlLT5zbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rp b25TbmFwc2hvdCgpKTsKIAkJfQogCX0KQEAgLTU1NSwxMyArNTQ5LDEyIEBAIGJ0X2NoZWNrX2V2 ZXJ5X2xldmVsKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgYm9vbCBoZWFwa2V5c3Bh Y2UsCiAJCS8qCiAJCSAqIENyZWF0ZSBvdXIgb3duIHNjYW4gZm9yIHRhYmxlX2luZGV4X2J1aWxk X3NjYW4oKSwgcmF0aGVyIHRoYW4KIAkJICogZ2V0dGluZyBpdCB0byBkbyBzbyBmb3IgdXMuICBU aGlzIGlzIHJlcXVpcmVkIHNvIHRoYXQgd2UgY2FuCi0JCSAqIGFjdHVhbGx5IHVzZSB0aGUgTVZD QyBzbmFwc2hvdCByZWdpc3RlcmVkIGVhcmxpZXIgaW4gIXJlYWRvbmx5Ci0JCSAqIGNhc2UuCisJ CSAqIGFjdHVhbGx5IHVzZSB0aGUgTVZDQyBzbmFwc2hvdCByZWdpc3RlcmVkIGVhcmxpZXIuCiAJ CSAqCiAJCSAqIE5vdGUgdGhhdCB0YWJsZV9pbmRleF9idWlsZF9zY2FuKCkgY2FsbHMgaGVhcF9l bmRzY2FuKCkgZm9yIHVzLgogCQkgKi8KIAkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChz dGF0ZS0+aGVhcHJlbCwJLyogcmVsYXRpb24gKi8KLQkJCQkJCQkJCSBzbmFwc2hvdCwJLyogc25h cHNob3QgKi8KKwkJCQkJCQkJCSBzdGF0ZS0+c25hcHNob3QsCS8qIHNuYXBzaG90ICovCiAJCQkJ CQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtl eSAqLwogCQkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KQEAg LTU2OSw3ICs1NjIsNyBAQCBidF9jaGVja19ldmVyeV9sZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0 aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtleXNwYWNlLAogCiAJCS8qCiAJCSAqIFNjYW4gd2lsbCBi ZWhhdmUgYXMgdGhlIGZpcnN0IHNjYW4gb2YgYSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZCi0J CSAqIGJlaGF2ZXMgaW4gIXJlYWRvbmx5IGNhc2UuCisJCSAqIGJlaGF2ZXMuCiAJCSAqCiAJCSAq IEl0J3Mgb2theSB0aGF0IHdlIGRvbid0IGFjdHVhbGx5IHVzZSB0aGUgc2FtZSBsb2NrIHN0cmVu Z3RoIGZvciB0aGUKIAkJICogaGVhcCByZWxhdGlvbiBhcyBhbnkgb3RoZXIgaWlfQ29uY3VycmVu dCBjYWxsZXIgd291bGQgaW4gIXJlYWRvbmx5CkBAIC01NzgsNyArNTcxLDcgQEAgYnRfY2hlY2tf ZXZlcnlfbGV2ZWwoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBib29sIGhlYXBrZXlz cGFjZSwKIAkJICogdGhhdCBuZWVkcyB0byBiZSBzdXJlIHRoYXQgdGhlcmUgd2FzIG5vIGNvbmN1 cnJlbnQgcmVjeWNsaW5nIG9mCiAJCSAqIFRJRHMuCiAJCSAqLwotCQlpbmRleGluZm8tPmlpX0Nv bmN1cnJlbnQgPSAhc3RhdGUtPnJlYWRvbmx5OworCQlpbmRleGluZm8tPmlpX0NvbmN1cnJlbnQg PSB0cnVlOwogCiAJCS8qCiAJCSAqIERvbid0IHdhaXQgZm9yIHVuY29tbWl0dGVkIHR1cGxlIHhh Y3QgY29tbWl0L2Fib3J0IHdoZW4gaW5kZXggaXMgYQpAQCAtNjAyLDE0ICs1OTUsMTEgQEAgYnRf Y2hlY2tfZXZlcnlfbGV2ZWwoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBib29sIGhl YXBrZXlzcGFjZSwKIAkJCQkJCQkJIHN0YXRlLT5oZWFwdHVwbGVzcHJlc2VudCwgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUoaGVhcHJlbCksCiAJCQkJCQkJCSAxMDAuMCAqIGJsb29tX3Byb3BfYml0 c19zZXQoc3RhdGUtPmZpbHRlcikpKSk7CiAKLQkJaWYgKHNuYXBzaG90ICE9IFNuYXBzaG90QW55 KQotCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKLQogCQlibG9vbV9mcmVlKHN0YXRl LT5maWx0ZXIpOwogCX0KIAogCS8qIEJlIHRpZHk6ICovCi0JaWYgKHNuYXBzaG90ID09IFNuYXBz aG90QW55ICYmIHN0YXRlLT5zbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QpCisJaWYgKHN0YXRl LT5zbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChzdGF0 ZS0+c25hcHNob3QpOwogCU1lbW9yeUNvbnRleHREZWxldGUoc3RhdGUtPnRhcmdldGNvbnRleHQp OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBmMjg5OGZlZTVmYy4uZTA2NTgwNGNm MjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNzkwLDYgKzE3OTAsNyBAQCBEZWZp bmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBiZWZvcmUgdGhlIHJlZmVyZW5jZSBzbmFwIHdhcyB0 YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKIAkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdo dCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkgKi8KKwlJTkpFQ1RJT05fUE9JTlQoImRlZmluZV9p bmRleF9iZWZvcmVfc2V0X3ZhbGlkIiwgTlVMTCk7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfV0FJVF8zKTsKIAlXYWl0Rm9yT2xkZXJTbmFwc2hvdHMobGltaXRYbWluLCB0cnVl KTsKQEAgLTQyMjksNyArNDIzMCw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJICogdGhl IHNhbWUgdGltZSB0byBtYWtlIHN1cmUgd2Ugb25seSBnZXQgY29uc3RyYWludCB2aW9sYXRpb25z IGZyb20gdGhlCiAJICogaW5kZXhlcyB3aXRoIHRoZSBjb3JyZWN0IG5hbWVzLgogCSAqLwotCisJ SU5KRUNUSU9OX1BPSU5UKCJyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dh cCIsIE5VTEwpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKIAkvKgpAQCAtNDMwOCw2 ICs0MzA5LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10 ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkgKiBpbmRleF9kcm9wKCkgZm9y IG1vcmUgZGV0YWlscy4KIAkgKi8KIAorCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleF9yZWxhdGlv bl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkIiwgTlVMTCk7CiAJcGdzdGF0X3Byb2dyZXNz X3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVT U19DUkVBVEVJRFhfUEhBU0VfV0FJVF80KTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tU YWdzLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4 aW5nLmMKaW5kZXggYmRmODYyYjI0MDYuLjQ5OWNiYTE0NWRkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjSW5kZXhpbmcuYwpAQCAtMTE3LDYgKzExNyw3IEBACiAjaW5jbHVkZSAidXRpbHMvbXVsdGly YW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgogI2luY2x1ZGUgInV0 aWxzL3NuYXBtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAogLyog d2FpdE1vZGUgYXJndW1lbnQgdG8gY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50 KCkgKi8KIHR5cGVkZWYgZW51bQpAQCAtOTQyLDYgKzk0Myw4IEBAIHJldHJ5OgogCWVjb250ZXh0 LT5lY3h0X3NjYW50dXBsZSA9IHNhdmVfc2NhbnR1cGxlOwogCiAJRXhlY0Ryb3BTaW5nbGVUdXBs ZVRhYmxlU2xvdChleGlzdGluZ19zbG90KTsKKwlpZiAoIWNvbmZsaWN0KQorCQlJTkpFQ1RJT05f UE9JTlQoImNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCIs IE5VTEwpOwogCiAJcmV0dXJuICFjb25mbGljdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYwppbmRleCA1MTRlYWUxMDM3ZC4uODg1MWYwZmRhMDYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMKQEAgLTQ4Niw2ICs0ODYsNDggQEAgRXhlY0ZpbmRQYXJ0aXRpb24o TW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAlyZXR1cm4gcnJpOwogfQogCisvKgorICogSXNJ bmRleENvbXBhdGlibGVBc0FyYml0ZXIKKyAqIAkJQ2hlY2tzIGlmIHRoZSBpbmRleGVzIGFyZSBp ZGVudGljYWwgaW4gdGVybXMgb2YgYmVpbmcgdXNlZAorICogCQlhcyBhcmJpdGVycyBmb3IgdGhl IElOU0VSVCBPTiBDT05GTElDVCBvcGVyYXRpb24gYnkgY29tcGFyaW5nCisgKiAJCXRoZW0gdG8g dGhlIHByb3ZpZGVkIGFyYml0ZXIgaW5kZXguCisgKgorICogUmV0dXJucyB0aGUgdHJ1ZSBpZiBp bmRleGVzIGFyZSBjb21wYXRpYmxlLgorICovCitzdGF0aWMgYm9vbAorSXNJbmRleENvbXBhdGli bGVBc0FyYml0ZXIoUmVsYXRpb24JYXJiaXRlckluZGV4UmVsYXRpb24sCisJCQkJCQkgICBJbmRl eEluZm8gICphcmJpdGVySW5kZXhJbmZvLAorCQkJCQkJICAgUmVsYXRpb24JaW5kZXhSZWxhdGlv biwKKwkJCQkJCSAgIEluZGV4SW5mbyAgKmluZGV4SW5mbykKK3sKKwlpbnQgaTsKKworCWlmIChh cmJpdGVySW5kZXhJbmZvLT5paV9VbmlxdWUgIT0gaW5kZXhJbmZvLT5paV9VbmlxdWUpCisJCXJl dHVybiBmYWxzZTsKKwkvKiBpdCBpcyBub3Qgc3VwcG9ydGVkIGZvciBjYXNlcyBvZiBleGNsdXNp b24gY29uc3RyYWludHMuICovCisJaWYgKGFyYml0ZXJJbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9w cyAhPSBOVUxMIHx8IGluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3BzICE9IE5VTEwpCisJCXJldHVy biBmYWxzZTsKKwlpZiAoYXJiaXRlckluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRua2V5YXR0 cyAhPSBpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kbmtleWF0dHMpCisJCXJldHVybiBmYWxz ZTsKKworCWZvciAoaSA9IDA7IGkgPCBpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kbmtleWF0 dHM7IGkrKykKKwl7CisJCWludAkJCWFyYml0ZXJBdHRvTm8gPSBhcmJpdGVySW5kZXhSZWxhdGlv bi0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbaV07CisJCWludAkJCWF0dG9ObyA9IGluZGV4UmVs YXRpb24tPnJkX2luZGV4LT5pbmRrZXkudmFsdWVzW2ldOworCQlpZiAoYXJiaXRlckF0dG9ObyAh PSBhdHRvTm8pCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKGxpc3RfZGlmZmVyZW5jZShS ZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoYXJiaXRlckluZGV4UmVsYXRpb24pLAorCQkJCQkJ UmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zKGluZGV4UmVsYXRpb24pKSAhPSBOSUwpCisJCXJl dHVybiBmYWxzZTsKKworCWlmIChsaXN0X2RpZmZlcmVuY2UoUmVsYXRpb25HZXRJbmRleFByZWRp Y2F0ZShhcmJpdGVySW5kZXhSZWxhdGlvbiksCisJCQkJCQlSZWxhdGlvbkdldEluZGV4UHJlZGlj YXRlKGluZGV4UmVsYXRpb24pKSAhPSBOSUwpCisJCXJldHVybiBmYWxzZTsKKwlyZXR1cm4gdHJ1 ZTsKK30KKwogLyoKICAqIEV4ZWNJbml0UGFydGl0aW9uSW5mbwogICoJCUxvY2sgdGhlIHBhcnRp dGlvbiBhbmQgaW5pdGlhbGl6ZSBSZXN1bHRSZWxJbmZvLiAgQWxzbyBzZXR1cCBvdGhlcgpAQCAt Njk2LDYgKzczOCw4IEBAIEV4ZWNJbml0UGFydGl0aW9uSW5mbyhNb2RpZnlUYWJsZVN0YXRlICpt dHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAkJaWYgKHJvb3RSZXN1bHRSZWxJbmZvLT5yaV9vbkNv bmZsaWN0QXJiaXRlckluZGV4ZXMgIT0gTklMKQogCQl7CiAJCQlMaXN0CSAgICpjaGlsZElkeHM7 CisJCQlMaXN0IAkgICAqbm9uQW5jZXN0b3JJZHhzID0gTklMOworCQkJaW50CQkgICBpLCBqLCBh ZGRpdGlvbmFsX2FyYml0ZXJzID0gMDsKIAogCQkJY2hpbGRJZHhzID0gUmVsYXRpb25HZXRJbmRl eExpc3QobGVhZl9wYXJ0X3JyaS0+cmlfUmVsYXRpb25EZXNjKTsKIApAQCAtNzA2LDIzICs3NTAs NzQgQEAgRXhlY0luaXRQYXJ0aXRpb25JbmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVT dGF0ZSAqZXN0YXRlLAogCQkJCUxpc3RDZWxsICAgKmxjMjsKIAogCQkJCWFuY2VzdG9ycyA9IGdl dF9wYXJ0aXRpb25fYW5jZXN0b3JzKGNoaWxkSWR4KTsKLQkJCQlmb3JlYWNoKGxjMiwgcm9vdFJl c3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcykKKwkJCQlpZiAoYW5jZXN0 b3JzKQogCQkJCXsKLQkJCQkJaWYgKGxpc3RfbWVtYmVyX29pZChhbmNlc3RvcnMsIGxmaXJzdF9v aWQobGMyKSkpCi0JCQkJCQlhcmJpdGVySW5kZXhlcyA9IGxhcHBlbmRfb2lkKGFyYml0ZXJJbmRl eGVzLCBjaGlsZElkeCk7CisJCQkJCWZvcmVhY2gobGMyLCByb290UmVzdWx0UmVsSW5mby0+cmlf b25Db25mbGljdEFyYml0ZXJJbmRleGVzKQorCQkJCQl7CisJCQkJCQlpZiAobGlzdF9tZW1iZXJf b2lkKGFuY2VzdG9ycywgbGZpcnN0X29pZChsYzIpKSkKKwkJCQkJCQlhcmJpdGVySW5kZXhlcyA9 IGxhcHBlbmRfb2lkKGFyYml0ZXJJbmRleGVzLCBjaGlsZElkeCk7CisJCQkJCX0KIAkJCQl9CisJ CQkJZWxzZSAvKiBObyBhbmNlc3RvciB3YXMgZm91bmQgZm9yIHRoYXQgaW5kZXguIFNhdmUgaXQg Zm9yIHJlY2hlY2tpbmcgbGF0ZXIuICovCisJCQkJCW5vbkFuY2VzdG9ySWR4cyA9IGxhcHBlbmRf b2lkKG5vbkFuY2VzdG9ySWR4cywgY2hpbGRJZHgpOwogCQkJCWxpc3RfZnJlZShhbmNlc3RvcnMp OwogCQkJfQorCisJCQkvKgorCQkJICogSWYgYW55IG5vbi1hbmNlc3RvciBpbmRleGVzIGFyZSBm b3VuZCwgd2UgbmVlZCB0byBjb21wYXJlIHRoZW0gd2l0aCBvdGhlcgorCQkJICogaW5kZXhlcyBv ZiB0aGUgcmVsYXRpb24gdGhhdCB3aWxsIGJlIHVzZWQgYXMgYXJiaXRlcnMuIFRoaXMgaXMgbmVj ZXNzYXJ5CisJCQkgKiB3aGVuIGEgcGFydGl0aW9uZWQgaW5kZXggaXMgcHJvY2Vzc2VkIGJ5IFJF SU5ERVggQ09OQ1VSUkVOVExZLiBCb3RoIGluZGV4ZXMKKwkJCSAqIG11c3QgYmUgY29uc2lkZXJl ZCBhcyBhcmJpdGVycyB0byBlbnN1cmUgdGhhdCBhbGwgY29uY3VycmVudCB0cmFuc2FjdGlvbnMK KwkJCSAqIHVzZSB0aGUgc2FtZSBzZXQgb2YgYXJiaXRlcnMuCisJCQkgKi8KKwkJCWlmIChub25B bmNlc3RvcklkeHMpCisJCQl7CisJCQkJZm9yIChpID0gMDsgaSA8IGxlYWZfcGFydF9ycmktPnJp X051bUluZGljZXM7IGkrKykKKwkJCQl7CisJCQkJCWlmIChsaXN0X21lbWJlcl9vaWQobm9uQW5j ZXN0b3JJZHhzLCBsZWFmX3BhcnRfcnJpLT5yaV9JbmRleFJlbGF0aW9uRGVzY3NbaV0tPnJkX2lu ZGV4LT5pbmRleHJlbGlkKSkKKwkJCQkJeworCQkJCQkJUmVsYXRpb24gbm9uQW5jZXN0b3JJbmRl eFJlbGF0aW9uID0gbGVhZl9wYXJ0X3JyaS0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzW2ldOworCQkJ CQkJSW5kZXhJbmZvICpub25BbmNlc3RvckluZGV4SW5mbyA9IGxlYWZfcGFydF9ycmktPnJpX0lu ZGV4UmVsYXRpb25JbmZvW2ldOworCQkJCQkJQXNzZXJ0KCFsaXN0X21lbWJlcl9vaWQoYXJiaXRl ckluZGV4ZXMsIG5vbkFuY2VzdG9ySW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGV4cmVsaWQp KTsKKworCQkJCQkJLyogSXQgaXMgdG9vIGVhcmx5IHRvIHVzIG5vbi1yZWFkeSBpbmRleGVzIGFz IGFyYml0ZXJzICovCisJCQkJCQlpZiAoIW5vbkFuY2VzdG9ySW5kZXhJbmZvLT5paV9SZWFkeUZv ckluc2VydHMpCisJCQkJCQkJY29udGludWU7CisKKwkJCQkJCWZvciAoaiA9IDA7IGogPCBsZWFm X3BhcnRfcnJpLT5yaV9OdW1JbmRpY2VzOyBqKyspCisJCQkJCQl7CisJCQkJCQkJaWYgKGxpc3Rf bWVtYmVyX29pZChhcmJpdGVySW5kZXhlcywKKwkJCQkJCQkJCQkJCWxlYWZfcGFydF9ycmktPnJp X0luZGV4UmVsYXRpb25EZXNjc1tqXS0+cmRfaW5kZXgtPmluZGV4cmVsaWQpKQorCQkJCQkJCXsK KwkJCQkJCQkJUmVsYXRpb24gYXJiaXRlckluZGV4UmVsYXRpb24gPSBsZWFmX3BhcnRfcnJpLT5y aV9JbmRleFJlbGF0aW9uRGVzY3Nbal07CisJCQkJCQkJCUluZGV4SW5mbyAqYXJiaXRlckluZGV4 SW5mbyA9IGxlYWZfcGFydF9ycmktPnJpX0luZGV4UmVsYXRpb25JbmZvW2pdOworCisJCQkJCQkJ CS8qIElmIG5vbi1hbmNlc3RvciBpbmRleCBhcmUgY29tcGF0aWJsZSB0byBhcmJpdGVyIC0gdXNl IGl0IGFzIGFyYml0ZXIgdG9vLiAqLworCQkJCQkJCQlpZiAoSXNJbmRleENvbXBhdGlibGVBc0Fy Yml0ZXIoYXJiaXRlckluZGV4UmVsYXRpb24sIGFyYml0ZXJJbmRleEluZm8sCisJCQkJCQkJCQkJ CQkJCQkgICBub25BbmNlc3RvckluZGV4UmVsYXRpb24sIG5vbkFuY2VzdG9ySW5kZXhJbmZvKSkK KwkJCQkJCQkJeworCQkJCQkJCQkJYXJiaXRlckluZGV4ZXMgPSBsYXBwZW5kX29pZChhcmJpdGVy SW5kZXhlcywKKwkJCQkJCQkJCQkJCQkJCQkgbm9uQW5jZXN0b3JJbmRleFJlbGF0aW9uLT5yZF9p bmRleC0+aW5kZXhyZWxpZCk7CisJCQkJCQkJCQlhZGRpdGlvbmFsX2FyYml0ZXJzKys7CisJCQkJ CQkJCX0KKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQlsaXN0X2Zy ZWUobm9uQW5jZXN0b3JJZHhzKTsKKworCQkJLyoKKwkJCSAqIElmIHRoZSByZXN1bHRpbmcgbGlz dHMgYXJlIG9mIGluZXF1YWwgbGVuZ3RoLCBzb21ldGhpbmcgaXMgd3JvbmcuCisJCQkgKiAoVGhp cyBzaG91bGRuJ3QgaGFwcGVuLCBzaW5jZSBhcmJpdGVyIGluZGV4IHNlbGVjdGlvbiBzaG91bGQg bm90CisJCQkgKiBwaWNrIHVwIGEgbm9uLXJlYWR5IGluZGV4LikKKwkJCSAqCisJCQkgKiBCdXQg d2UgbmVlZCB0byBjb25zaWRlciBhbiBhZGRpdGlvbmFsIGFyYml0ZXIgaW5kZXhlcyBhbHNvLgor CQkJICovCisJCQlpZiAobGlzdF9sZW5ndGgocm9vdFJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxp Y3RBcmJpdGVySW5kZXhlcykgIT0KKwkJCQlsaXN0X2xlbmd0aChhcmJpdGVySW5kZXhlcykgLSBh ZGRpdGlvbmFsX2FyYml0ZXJzKQorCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIGFyYml0ZXIgaW5k ZXggbGlzdCIpOwogCQl9Ci0KLQkJLyoKLQkJICogSWYgdGhlIHJlc3VsdGluZyBsaXN0cyBhcmUg b2YgaW5lcXVhbCBsZW5ndGgsIHNvbWV0aGluZyBpcyB3cm9uZy4KLQkJICogKFRoaXMgc2hvdWxk bid0IGhhcHBlbiwgc2luY2UgYXJiaXRlciBpbmRleCBzZWxlY3Rpb24gc2hvdWxkIG5vdAotCQkg KiBwaWNrIHVwIGFuIGludmFsaWQgaW5kZXguKQotCQkgKi8KLQkJaWYgKGxpc3RfbGVuZ3RoKHJv b3RSZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXMpICE9Ci0JCQlsaXN0 X2xlbmd0aChhcmJpdGVySW5kZXhlcykpCi0JCQllbG9nKEVSUk9SLCAiaW52YWxpZCBhcmJpdGVy IGluZGV4IGxpc3QiKTsKIAkJbGVhZl9wYXJ0X3JyaS0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRl eGVzID0gYXJiaXRlckluZGV4ZXM7CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlm eVRhYmxlLmMKaW5kZXggNTRkYThlNzk5NWIuLjg2YzY0NDc3ZWFlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNzAsNiArNzAsNyBAQAogI2luY2x1ZGUgInV0aWxz L2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1n ci5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAKIHR5cGVkZWYgc3Ry dWN0IE1UVGFyZ2V0UmVsTG9va3VwCkBAIC0xMTc5LDYgKzExODAsNyBAQCBFeGVjSW5zZXJ0KE1v ZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJCQkJcmV0dXJuIE5VTEw7CiAJCQkJfQogCQkJ fQorCQkJSU5KRUNUSU9OX1BPSU5UKCJleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1bGF0 aXZlIiwgTlVMTCk7CiAKIAkJCS8qCiAJCQkgKiBCZWZvcmUgd2Ugc3RhcnQgaW5zZXJ0aW9uIHBy b3BlciwgYWNxdWlyZSBvdXIgInNwZWN1bGF0aXZlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFu Y2F0LmMKaW5kZXggNTkyMzNiNjQ3MzAuLjBjNzIwZTQ1MGU5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcGxhbmNhdC5jCkBAIC03MTYsMTIgKzcxNiwxNCBAQCBpbmZlcl9hcmJpdGVyX2luZGV4 ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJTGlzdAkgICAqaW5kZXhMaXN0OwogCUxpc3RDZWxsICAg Kmw7CiAKLQkvKiBOb3JtYWxpemVkIGluZmVyZW5jZSBhdHRyaWJ1dGVzIGFuZCBpbmZlcmVuY2Ug ZXhwcmVzc2lvbnM6ICovCi0JQml0bWFwc2V0ICAqaW5mZXJBdHRycyA9IE5VTEw7Ci0JTGlzdAkg ICAqaW5mZXJFbGVtcyA9IE5JTDsKKwkvKiBOb3JtYWxpemVkIHJlcXVpcmVkIGF0dHJpYnV0ZXMg YW5kIGV4cHJlc3Npb25zOiAqLworCUJpdG1hcHNldCAgKnJlcXVpcmVkQXJiaXRlckF0dHJzID0g TlVMTDsKKwlMaXN0CSAgICpyZXF1aXJlZEFyYml0ZXJFbGVtcyA9IE5JTDsKKwlMaXN0CSAgICpy ZXF1aXJlZEluZGV4UHJlZEV4cHJzID0gKExpc3QgKikgb25jb25mbGljdC0+YXJiaXRlcldoZXJl OwogCiAJLyogUmVzdWx0cyAqLwogCUxpc3QJICAgKnJlc3VsdHMgPSBOSUw7CisJYm9vbAkgICBm b3VuZFZhbGlkID0gZmFsc2U7CiAKIAkvKgogCSAqIFF1aWNrbHkgcmV0dXJuIE5JTCBmb3IgT04g Q09ORkxJQ1QgRE8gTk9USElORyB3aXRob3V0IGFuIGluZmVyZW5jZQpAQCAtNzU2LDggKzc1OCw4 IEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAogCQlpZiAoIUlz QShlbGVtLT5leHByLCBWYXIpKQogCQl7Ci0JCQkvKiBJZiBub3QgYSBwbGFpbiBWYXIsIGp1c3Qg c2hvdmUgaXQgaW4gaW5mZXJFbGVtcyBmb3Igbm93ICovCi0JCQlpbmZlckVsZW1zID0gbGFwcGVu ZChpbmZlckVsZW1zLCBlbGVtLT5leHByKTsKKwkJCS8qIElmIG5vdCBhIHBsYWluIFZhciwganVz dCBzaG92ZSBpdCBpbiByZXF1aXJlZEFyYml0ZXJFbGVtcyBmb3Igbm93ICovCisJCQlyZXF1aXJl ZEFyYml0ZXJFbGVtcyA9IGxhcHBlbmQocmVxdWlyZWRBcmJpdGVyRWxlbXMsIGVsZW0tPmV4cHIp OwogCQkJY29udGludWU7CiAJCX0KIApAQCAtNzY5LDMwICs3NzEsNzYgQEAgaW5mZXJfYXJiaXRl cl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290KQogCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCSBlcnJtc2coIndob2xlIHJvdyB1bmlxdWUgaW5kZXgg aW5mZXJlbmNlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIikpKTsKIAotCQlpbmZl ckF0dHJzID0gYm1zX2FkZF9tZW1iZXIoaW5mZXJBdHRycywKKwkJcmVxdWlyZWRBcmJpdGVyQXR0 cnMgPSBibXNfYWRkX21lbWJlcihyZXF1aXJlZEFyYml0ZXJBdHRycywKIAkJCQkJCQkJCWF0dG5v IC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CiAJfQogCisJaW5kZXhMaXN0 ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsYXRpb24pOworCiAJLyoKIAkgKiBMb29rdXAgbmFt ZWQgY29uc3RyYWludCdzIGluZGV4LiAgVGhpcyBpcyBub3QgaW1tZWRpYXRlbHkgcmV0dXJuZWQK LQkgKiBiZWNhdXNlIHNvbWUgYWRkaXRpb25hbCBzYW5pdHkgY2hlY2tzIGFyZSByZXF1aXJlZC4K KwkgKiBiZWNhdXNlIHNvbWUgYWRkaXRpb25hbCBzYW5pdHkgY2hlY2tzIGFyZSByZXF1aXJlZC4g QWRkaXRpb25hbGx5LCB3ZQorCSAqIG5lZWQgdG8gcHJvY2VzcyBvdGhlciBpbmRleGVzIGFzIHBv dGVudGlhbCBhcmJpdGVycyB0byBhY2NvdW50IGZvcgorCSAqIGNhc2VzIHdoZXJlIFJFSU5ERVgg Q09OQ1VSUkVOVExZIGlzIHByb2Nlc3NpbmcgYW4gaW5kZXggdXNlZCBhcyBhCisJICogbmFtZWQg Y29uc3RyYWludC4KIAkgKi8KIAlpZiAob25jb25mbGljdC0+Y29uc3RyYWludCAhPSBJbnZhbGlk T2lkKQogCXsKIAkJaW5kZXhPaWRGcm9tQ29uc3RyYWludCA9IGdldF9jb25zdHJhaW50X2luZGV4 KG9uY29uZmxpY3QtPmNvbnN0cmFpbnQpOwogCiAJCWlmIChpbmRleE9pZEZyb21Db25zdHJhaW50 ID09IEludmFsaWRPaWQpCisJCXsKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVS UkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAotCQkJCQkgZXJybXNnKCJjb25zdHJhaW50IGluIE9O IENPTkZMSUNUIGNsYXVzZSBoYXMgbm8gYXNzb2NpYXRlZCBpbmRleCIpKSk7CisJCQkJCWVycm1z ZygiY29uc3RyYWludCBpbiBPTiBDT05GTElDVCBjbGF1c2UgaGFzIG5vIGFzc29jaWF0ZWQgaW5k ZXgiKSkpOworCQl9CisKKwkJLyoKKwkJICogRmluZCB0aGUgbmFtZWQgY29uc3RyYWludCBpbmRl eCB0byBleHRyYWN0IGl0cyBhdHRyaWJ1dGVzIGFuZCBwcmVkaWNhdGVzLgorCQkgKiBXZSBvcGVu IGFsbCBpbmRleGVzIGluIHRoZSBsb29wIHRvIGF2b2lkIGRlYWRsb2NrIG9mIGNoYW5nZWQgb3Jk ZXIgb2YgbG9ja3MuCisJCSAqICovCisJCWZvcmVhY2gobCwgaW5kZXhMaXN0KQorCQl7CisJCQlP aWQJCQlpbmRleG9pZCA9IGxmaXJzdF9vaWQobCk7CisJCQlSZWxhdGlvbglpZHhSZWw7CisJCQlG b3JtX3BnX2luZGV4IGlkeEZvcm07CisJCQlBdHRyTnVtYmVyCW5hdHQ7CisKKwkJCWlkeFJlbCA9 IGluZGV4X29wZW4oaW5kZXhvaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQkJaWR4Rm9ybSA9IGlk eFJlbC0+cmRfaW5kZXg7CisKKwkJCWlmIChpZHhGb3JtLT5pbmRpc3JlYWR5KQorCQkJeworCQkJ CWlmIChpbmRleE9pZEZyb21Db25zdHJhaW50ID09IGlkeEZvcm0tPmluZGV4cmVsaWQpCisJCQkJ eworCQkJCQkvKgorCQkJCQkgKiBQcmVwYXJlIHJlcXVpcmVtZW50cyBmb3Igb3RoZXIgaW5kZXhl cyB0byBiZSB1c2VkIGFzIGFyYml0ZXIgdG9nZXRoZXIKKwkJCQkJICogd2l0aCBpbmRleE9pZEZy b21Db25zdHJhaW50LiBJdCBpcyByZXF1aXJlZCB0byBpbnZvbHZlIGJvdGggZXF1YWxzIGluZGV4 ZXMKKwkJCQkJICogaW4gY2FzZSBvZiBSRUlOREVYIENPTkNVUlJFTlRMWS4KKwkJCQkJICovCisJ CQkJCWZvciAobmF0dCA9IDA7IG5hdHQgPCBpZHhGb3JtLT5pbmRua2V5YXR0czsgbmF0dCsrKQor CQkJCQl7CisJCQkJCQlpbnQJCQlhdHRubyA9IGlkeFJlbC0+cmRfaW5kZXgtPmluZGtleS52YWx1 ZXNbbmF0dF07CisKKwkJCQkJCWlmIChhdHRubyAhPSAwKQorCQkJCQkJCXJlcXVpcmVkQXJiaXRl ckF0dHJzID0gYm1zX2FkZF9tZW1iZXIocmVxdWlyZWRBcmJpdGVyQXR0cnMsCisJCQkJCQkJCQkJ CQkJCSAgYXR0bm8gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJCQkJ fQorCQkJCQlyZXF1aXJlZEFyYml0ZXJFbGVtcyA9IFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9u cyhpZHhSZWwpOworCQkJCQlyZXF1aXJlZEluZGV4UHJlZEV4cHJzID0gUmVsYXRpb25HZXRJbmRl eFByZWRpY2F0ZShpZHhSZWwpOworCQkJCQkvKiBXZSBhcmUgZG9uZSwgc28sIHF1aXRlIHRoZSBs b29wLiAqLworCQkJCQlpbmRleF9jbG9zZShpZHhSZWwsIE5vTG9jayk7CisJCQkJCWJyZWFrOwor CQkJCX0KKwkJCX0KKwkJCWluZGV4X2Nsb3NlKGlkeFJlbCwgTm9Mb2NrKTsKKwkJfQogCX0KIAog CS8qCiAJICogVXNpbmcgdGhhdCByZXByZXNlbnRhdGlvbiwgaXRlcmF0ZSB0aHJvdWdoIHRoZSBs aXN0IG9mIGluZGV4ZXMgb24gdGhlCiAJICogdGFyZ2V0IHJlbGF0aW9uIHRvIHRyeSBhbmQgZmlu ZCBhIG1hdGNoCiAJICovCi0JaW5kZXhMaXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsYXRp b24pOwotCiAJZm9yZWFjaChsLCBpbmRleExpc3QpCiAJewogCQlPaWQJCQlpbmRleG9pZCA9IGxm aXJzdF9vaWQobCk7CkBAIC04MTUsNyArODYzLDEzIEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQ bGFubmVySW5mbyAqcm9vdCkKIAkJaWR4UmVsID0gaW5kZXhfb3BlbihpbmRleG9pZCwgcnRlLT5y ZWxsb2NrbW9kZSk7CiAJCWlkeEZvcm0gPSBpZHhSZWwtPnJkX2luZGV4OwogCi0JCWlmICghaWR4 Rm9ybS0+aW5kaXN2YWxpZCkKKwkJLyoKKwkJICogV2UgbmVlZCB0byBjb25zaWRlciBib3RoIGlu ZGlzdmFsaWQgYW5kIGluZGlzcmVhZHkgaW5kZXhlcyBiZWNhdXNlCisJCSAqIHRoZW0gbWF5IGJl Y29tZSBpbmRpc3ZhbGlkIGJlZm9yZSBleGVjdXRpb24gcGhhc2UuIEl0IGlzIHJlcXVpcmVkCisJ CSAqIHRvIGtlZXAgc2V0IG9mIGluZGV4ZXMgdXNlZCBhcyBhcmJpdGVyIHRvIGJlIHRoZSBzYW1l IGZvciBhbGwKKwkJICogY29uY3VycmVudCB0cmFuc2FjdGlvbnMuCisJCSAqLworCQlpZiAoIWlk eEZvcm0tPmluZGlzcmVhZHkpCiAJCQlnb3RvIG5leHQ7CiAKIAkJLyoKQEAgLTgzNSwyNyArODg5 LDIzIEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAkJCQllcmVw b3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJ CQkJCQkgZXJybXNnKCJPTiBDT05GTElDVCBETyBVUERBVEUgbm90IHN1cHBvcnRlZCB3aXRoIGV4 Y2x1c2lvbiBjb25zdHJhaW50cyIpKSk7Ci0KLQkJCXJlc3VsdHMgPSBsYXBwZW5kX29pZChyZXN1 bHRzLCBpZHhGb3JtLT5pbmRleHJlbGlkKTsKLQkJCWxpc3RfZnJlZShpbmRleExpc3QpOwotCQkJ aW5kZXhfY2xvc2UoaWR4UmVsLCBOb0xvY2spOwotCQkJdGFibGVfY2xvc2UocmVsYXRpb24sIE5v TG9jayk7Ci0JCQlyZXR1cm4gcmVzdWx0czsKKwkJCWdvdG8gZm91bmQ7CiAJCX0KIAkJZWxzZSBp ZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWludCAhPSBJbnZhbGlkT2lkKQogCQl7Ci0JCQkvKiBObyBw b2ludCBpbiBmdXJ0aGVyIHdvcmsgZm9yIGluZGV4IGluIG5hbWVkIGNvbnN0cmFpbnQgY2FzZSAq LwotCQkJZ290byBuZXh0OworCQkJLyogSW4gdGhlIGNhc2Ugb2YgIk9OIGNvbnN0cmFpbnRfbmFt ZSBETyBVUERBVEUiIHdlIG5lZWQgdG8gc2tpcCBub24tdW5pcXVlIGNhbmRpZGF0ZXMuICovCisJ CQlpZiAoIWlkeEZvcm0tPmluZGlzdW5pcXVlICYmIG9uY29uZmxpY3QtPmFjdGlvbiA9PSBPTkNP TkZMSUNUX1VQREFURSkKKwkJCQlnb3RvIG5leHQ7CisJCX0gIGVsc2UgeworCQkJLyoKKwkJCSAq IE9ubHkgY29uc2lkZXJpbmcgY29udmVudGlvbmFsIGluZmVyZW5jZSBhdCB0aGlzIHBvaW50IChu b3QgbmFtZWQKKwkJCSAqIGNvbnN0cmFpbnRzKSwgc28gaW5kZXggdW5kZXIgY29uc2lkZXJhdGlv biBjYW4gYmUgaW1tZWRpYXRlbHkKKwkJCSAqIHNraXBwZWQgaWYgaXQncyBub3QgdW5pcXVlCisJ CQkgKi8KKwkJCWlmICghaWR4Rm9ybS0+aW5kaXN1bmlxdWUpCisJCQkJZ290byBuZXh0OwogCQl9 CiAKLQkJLyoKLQkJICogT25seSBjb25zaWRlcmluZyBjb252ZW50aW9uYWwgaW5mZXJlbmNlIGF0 IHRoaXMgcG9pbnQgKG5vdCBuYW1lZAotCQkgKiBjb25zdHJhaW50cyksIHNvIGluZGV4IHVuZGVy IGNvbnNpZGVyYXRpb24gY2FuIGJlIGltbWVkaWF0ZWx5Ci0JCSAqIHNraXBwZWQgaWYgaXQncyBu b3QgdW5pcXVlCi0JCSAqLwotCQlpZiAoIWlkeEZvcm0tPmluZGlzdW5pcXVlKQotCQkJZ290byBu ZXh0OwotCiAJCS8qCiAJCSAqIFNvLWNhbGxlZCB1bmlxdWUgY29uc3RyYWludHMgd2l0aCBXSVRI T1VUIE9WRVJMQVBTIGFyZSByZWFsbHkKIAkJICogZXhjbHVzaW9uIGNvbnN0cmFpbnRzLCBzbyBz a2lwIHRob3NlIHRvby4KQEAgLTg3NSw3ICs5MjUsNyBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMo UGxhbm5lckluZm8gKnJvb3QpCiAJCX0KIAogCQkvKiBOb24tZXhwcmVzc2lvbiBhdHRyaWJ1dGVz IChpZiBhbnkpIG11c3QgbWF0Y2ggKi8KLQkJaWYgKCFibXNfZXF1YWwoaW5kZXhlZEF0dHJzLCBp bmZlckF0dHJzKSkKKwkJaWYgKCFibXNfZXF1YWwoaW5kZXhlZEF0dHJzLCByZXF1aXJlZEFyYml0 ZXJBdHRycykpCiAJCQlnb3RvIG5leHQ7CiAKIAkJLyogRXhwcmVzc2lvbiBhdHRyaWJ1dGVzIChp ZiBhbnkpIG11c3QgbWF0Y2ggKi8KQEAgLTg4Myw2ICs5MzMsMTAgQEAgaW5mZXJfYXJiaXRlcl9p bmRleGVzKFBsYW5uZXJJbmZvICpyb290KQogCQlpZiAoaWR4RXhwcnMgJiYgdmFybm8gIT0gMSkK IAkJCUNoYW5nZVZhck5vZGVzKChOb2RlICopIGlkeEV4cHJzLCAxLCB2YXJubywgMCk7CiAKKwkJ LyoKKwkJICogSWYgYXJiaXRlckVsZW1zIGFyZSBwcmVzZW50LCBjaGVjayB0aGVtLiBJZiBuYW1l ID5jb25zdHJhaW50IGlzCisJCSAqIHByZXNlbnQgYXJiaXRlckVsZW1zID09IE5JTC4KKwkJICov CiAJCWZvcmVhY2goZWwsIG9uY29uZmxpY3QtPmFyYml0ZXJFbGVtcykKIAkJewogCQkJSW5mZXJl bmNlRWxlbSAqZWxlbSA9IChJbmZlcmVuY2VFbGVtICopIGxmaXJzdChlbCk7CkBAIC05MjAsMjcg Kzk3NCwzNSBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJCX0K IAogCQkvKgotCQkgKiBOb3cgdGhhdCBhbGwgaW5mZXJlbmNlIGVsZW1lbnRzIHdlcmUgbWF0Y2hl ZCwgZW5zdXJlIHRoYXQgdGhlCisJCSAqIEluIGNhc2Ugb2YgdGhlIGNvbnZlbnRpb25hbCBpbmZl cmVuY2UgaW52b2x2ZWQgZW5zdXJlIHRoYXQgdGhlCiAJCSAqIGV4cHJlc3Npb24gZWxlbWVudHMg ZnJvbSBpbmZlcmVuY2UgY2xhdXNlIGFyZSBub3QgbWlzc2luZyBhbnkKIAkJICogY2F0YWxvZ2Vk IGV4cHJlc3Npb25zLiAgVGhpcyBkb2VzIHRoZSByaWdodCB0aGluZyB3aGVuIHVuaXF1ZQogCQkg KiBpbmRleGVzIHJlZHVuZGFudGx5IHJlcGVhdCB0aGUgc2FtZSBhdHRyaWJ1dGUsIG9yIGlmIGF0 dHJpYnV0ZXMKIAkJICogcmVkdW5kYW50bHkgYXBwZWFyIG11bHRpcGxlIHRpbWVzIHdpdGhpbiBh biBpbmZlcmVuY2UgY2xhdXNlLgorCQkgKgorCQkgKiBJbiB0aGUgY2FzZSBvZiBuYW1lZCBjb25z dHJhaW50IGVuc3VyZSBjYW5kaWRhdGUgaGFzIGVxdWFsIHNldAorCQkgKiBvZiBleHByZXNzaW9u cyBhcyB0aGUgbmFtZWQgY29uc3RyYWludCBpbmRleC4KIAkJICovCi0JCWlmIChsaXN0X2RpZmZl cmVuY2UoaWR4RXhwcnMsIGluZmVyRWxlbXMpICE9IE5JTCkKKwkJaWYgKGxpc3RfZGlmZmVyZW5j ZShpZHhFeHBycywgcmVxdWlyZWRBcmJpdGVyRWxlbXMpICE9IE5JTCkKIAkJCWdvdG8gbmV4dDsK IAotCQkvKgotCQkgKiBJZiBpdCdzIGEgcGFydGlhbCBpbmRleCwgaXRzIHByZWRpY2F0ZSBtdXN0 IGJlIGltcGxpZWQgYnkgdGhlIE9OCi0JCSAqIENPTkZMSUNUJ3MgV0hFUkUgY2xhdXNlLgotCQkg Ki8KIAkJcHJlZEV4cHJzID0gUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShpZHhSZWwpOwogCQlp ZiAocHJlZEV4cHJzICYmIHZhcm5vICE9IDEpCiAJCQlDaGFuZ2VWYXJOb2RlcygoTm9kZSAqKSBw cmVkRXhwcnMsIDEsIHZhcm5vLCAwKTsKIAotCQlpZiAoIXByZWRpY2F0ZV9pbXBsaWVkX2J5KHBy ZWRFeHBycywgKExpc3QgKikgb25jb25mbGljdC0+YXJiaXRlcldoZXJlLCBmYWxzZSkpCisJCS8q CisJCSAqIElmIGl0J3MgYSBwYXJ0aWFsIGluZGV4IGFuZCBjb252ZW50aW9uYWwgaW5mZXJlbmNl LCBpdHMgcHJlZGljYXRlIG11c3QgYmUgaW1wbGllZAorCQkgKiBieSB0aGUgT04gQ09ORkxJQ1Qn cyBXSEVSRSBjbGF1c2UuCisJCSAqLworCQlpZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWludCA9PSBJ bnZhbGlkT2lkICYmICFwcmVkaWNhdGVfaW1wbGllZF9ieShwcmVkRXhwcnMsIHJlcXVpcmVkSW5k ZXhQcmVkRXhwcnMsIGZhbHNlKSkKKwkJCWdvdG8gbmV4dDsKKwkJLyogSWYgaXQncyBhIHBhcnRp YWwgaW5kZXggYW5kIG5hbWVkIGNvbnN0cmFpbnQgcHJlZGljYXRlcyBtdXN0IGJlIGVxdWFsLiAq LworCQlpZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWludCAhPSBJbnZhbGlkT2lkICYmIGxpc3RfZGlm ZmVyZW5jZShwcmVkRXhwcnMsIHJlcXVpcmVkSW5kZXhQcmVkRXhwcnMpICE9IE5JTCkKIAkJCWdv dG8gbmV4dDsKIAorZm91bmQ6CiAJCXJlc3VsdHMgPSBsYXBwZW5kX29pZChyZXN1bHRzLCBpZHhG b3JtLT5pbmRleHJlbGlkKTsKKwkJZm91bmRWYWxpZCB8PSBpZHhGb3JtLT5pbmRpc3ZhbGlkOwog bmV4dDoKIAkJaW5kZXhfY2xvc2UoaWR4UmVsLCBOb0xvY2spOwogCX0KQEAgLTk0OCw3ICsxMDEw LDggQEAgbmV4dDoKIAlsaXN0X2ZyZWUoaW5kZXhMaXN0KTsKIAl0YWJsZV9jbG9zZShyZWxhdGlv biwgTm9Mb2NrKTsKIAotCWlmIChyZXN1bHRzID09IE5JTCkKKwkvKiBJdCBpcyByZXF1aXJlZCB0 byBoYXZlIGF0IGxlYXN0IG9uZSBpbmRpc3ZhbGlkIGluZGV4IGR1cmluZyB0aGUgcGxhbm5pbmcu ICovCisJaWYgKHJlc3VsdHMgPT0gTklMIHx8ICFmb3VuZFZhbGlkKQogCQllcmVwb3J0KEVSUk9S LAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5fUkVGRVJFTkNFKSwKIAkJCQkg ZXJybXNnKCJ0aGVyZSBpcyBubyB1bmlxdWUgb3IgZXhjbHVzaW9uIGNvbnN0cmFpbnQgbWF0Y2hp bmcgdGhlIE9OIENPTkZMSUNUIHNwZWNpZmljYXRpb24iKSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBt Z3IuYwppbmRleCBlYTM1ZjMwZjQ5NC4uYWQ0NDBmZjAyNGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25h cG1nci5jCkBAIC0xMjMsNiArMTIzLDcgQEAKICNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgog I2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgor I2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAKIC8qCkBAIC00NDcsNiArNDQ4 LDcgQEAgSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCh2b2lkKQogCQlwYWlyaW5naGVhcF9yZW1v dmUoJlJlZ2lzdGVyZWRTbmFwc2hvdHMsICZDYXRhbG9nU25hcHNob3QtPnBoX25vZGUpOwogCQlD YXRhbG9nU25hcHNob3QgPSBOVUxMOwogCQlTbmFwc2hvdFJlc2V0WG1pbigpOworCQlJTkpFQ1RJ T05fUE9JTlQoImludmFsaWRhdGVfY2F0YWxvZ19zbmFwc2hvdF9lbmQiLCBOVUxMKTsKIAl9CiB9 CiAKLS0gCjIuNDMuMAoK --00000000000027fe8906381ae2a2 Content-Type: application/x-patch; name="v21-0003-Reset-snapshots-periodically-in-non-unique-non-p.patch" Content-Disposition: attachment; filename="v21-0003-Reset-snapshots-periodically-in-non-unique-non-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8v19 RnJvbSA0Mjg5YjI3ZmU3M2ExNjU0YmI2MTliNjA4ODMwOGU1YWQxYWJjOWQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAyMToxMDoyMyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIxIDAzLzEyXSBSZXNldCBzbmFwc2hvdHMgcGVyaW9kaWNhbGx5IGluIG5vbi11bmlx dWUKIG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcwoKTG9uZy1saXZpbmcgc25h cHNob3RzIHVzZWQgYnkgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBDT05D VVJSRU5UTFkgY2FuIGhvbGQgYmFjayB0aGUgZ2xvYmFsIHhtaW4gaG9yaXpvbi4gQ29tbWl0IGQ5 ZDA3NjIyMmY1YiBhdHRlbXB0ZWQgdG8gYWxsb3cgVkFDVVVNIHRvIGlnbm9yZSBzdWNoIHNuYXBz aG90cyB0byBtaXRpZ2F0ZSB0aGlzIHByb2JsZW0uIEhvd2V2ZXIsIHRoaXMgd2FzIHJldmVydGVk IGluIGNvbW1pdCBlMjhiYjg4NTE5NjkgYmVjYXVzZSBpdCBjb3VsZCBjYXVzZSBpbmRleGVzIHRv IG1pc3MgaGVhcCB0dXBsZXMgdGhhdCB3ZXJlIEhPVC11cGRhdGVkIGFuZCBIT1QtcHJ1bmVkIGR1 cmluZyB0aGUgaW5kZXggY3JlYXRpb24sIGxlYWRpbmcgdG8gaW5kZXggY29ycnVwdGlvbi4KClRo aXMgcGF0Y2ggaW50cm9kdWNlcyBhbiBhbHRlcm5hdGl2ZSBieSBwZXJpb2RpY2FsbHkgcmVzZXR0 aW5nIHRoZSBzbmFwc2hvdCB1c2VkIGR1cmluZyB0aGUgZmlyc3QgcGhhc2UuIEJ5IHJlc2V0dGlu ZyB0aGUgc25hcHNob3QgZXZlcnkgTiBwYWdlcyBkdXJpbmcgdGhlIGhlYXAgc2NhbiwgaXQgYWxs b3dzIHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4KCkN1cnJlbnRseSwgdGhpcyB0ZWNobmlx dWUgaXMgYXBwbGllZCB0bzoKCi0gb25seSBkdXJpbmcgdGhlIGZpcnN0IHNjYW4gb2YgdGhlIGhl YXA6IFRoZSBzZWNvbmQgc2NhbiBkdXJpbmcgaW5kZXggdmFsaWRhdGlvbiBzdGlsbCB1c2VzIGEg c2luZ2xlIHNuYXBzaG90IHRvIGVuc3VyZSBpbmRleCBjb3JyZWN0bmVzcwotIG5vbi1wYXJhbGxl bCBpbmRleCBidWlsZHM6IFBhcmFsbGVsIGluZGV4IGJ1aWxkcyBhcmUgbm90IHlldCBzdXBwb3J0 ZWQgYW5kIHdpbGwgYmUgYWRkcmVzc2VkIGluIGEgZm9sbG93aW5nIGNvbW1pdHMKLSBub24tdW5p cXVlIGluZGV4ZXM6IFVuaXF1ZSBpbmRleCBidWlsZHMgc3RpbGwgcmVxdWlyZSBhIGNvbnNpc3Rl bnQgc25hcHNob3QgdG8gZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLCB3aWxsIGJlIGFk ZHJlc3NlZCBpbiBhIGZvbGxvd2luZyBjb21taXRzCgpBIG5ldyBzY2FuIG9wdGlvbiBTT19SRVNF VF9TTkFQU0hPVCBpcyBpbnRyb2R1Y2VkLiBXaGVuIHNldCwgaXQgY2F1c2VzIHRoZSBzbmFwc2hv dCB0byBiZSByZXNldCAiYmV0d2VlbiIgZXZlcnkgU09fUkVTRVRfU05BUFNIT1RfRUFDSF9OX1BB R0UgcGFnZXMgZHVyaW5nIHRoZSBzY2FuLiBUaGUgaGVhcCBzY2FuIGNvZGUgaXMgYWRqdXN0ZWQg dG8gc3VwcG9ydCB0aGlzIG9wdGlvbiwgYW5kIHRoZSBpbmRleCBidWlsZCBjb2RlIGlzIG1vZGlm aWVkIHRvIHVzZSBpdCBmb3IgYXBwbGljYWJsZSBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0aGF0 IGFyZSBub3Qgb24gc3lzdGVtIGNhdGFsb2dzIGFuZCBub3QgdXNpbmcgcGFyYWxsZWwgd29ya2Vy cy4KLS0tCiBjb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jICAgICAgICAgICAgICAgfCAg IDMgKy0KIGNvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYyAgICAgICAgICAgICB8ICAg MiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwgIDE5 ICsrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgICAgICAgICAgICB8ICAy MSArKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyAgICAgICAgICAgfCAg IDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICA0NSAr KysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwg IDU3ICsrKysrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jICAgICAgICAg ICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAg ICAgIHwgIDMwICsrKystCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jICAg ICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAg ICAgIHwgIDMwICsrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAg ICAgICAgfCAgMTQgKy0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAg ICAgICAgfCAgIDkgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICAg ICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAg ICAgfCAgMjggKysrKy0KIHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmls ZSAgICB8ICAgMiArLQogLi4uL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0ICAgICAg ICAgIHwgMTA1ICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL21lc29uLmJ1aWxkIHwgICAxICsKIC4uLi9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5z cWwgICAgICAgICAgICAgICB8ICA4NiArKysrKysrKysrKysrKwogMjAgZmlsZXMgY2hhbmdlZCwg NDI3IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNo b3RzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKCmRpZmYgLS1naXQgYS9jb250cmliL2Ft Y2hlY2svdmVyaWZ5X25idHJlZS5jIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwpp bmRleCAzMDQ4ZTA0NGFlYy4uZTU5MTk3YmIzNWUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVj ay92ZXJpZnlfbmJ0cmVlLmMKKysrIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwpA QCAtNTU4LDcgKzU1OCw4IEBAIGJ0X2NoZWNrX2V2ZXJ5X2xldmVsKFJlbGF0aW9uIHJlbCwgUmVs YXRpb24gaGVhcHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsCiAJCQkJCQkJCQkgMCwgLyogbnVtYmVy IG9mIGtleXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkJIHRy dWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJCSB0cnVlKTsgLyog c3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkgdHJ1ZSwgLyogc3luY3NjYW4gT0s/ICovCisJCQkJ CQkJCQkgZmFsc2UpOwogCiAJCS8qCiAJCSAqIFNjYW4gd2lsbCBiZWhhdmUgYXMgdGhlIGZpcnN0 IHNjYW4gb2YgYSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZCmRpZmYgLS1naXQgYS9jb250cmli L3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1 cGxlLmMKaW5kZXggMGQ5YzJiMGI2NTMuLmE2ZGFkNTRmZjU4IDEwMDY0NAotLS0gYS9jb250cmli L3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKKysrIGIvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0 YXR0dXBsZS5jCkBAIC0zMzUsNyArMzM1LDcgQEAgcGdzdGF0X2hlYXAoUmVsYXRpb24gcmVsLCBG dW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAkJCQkgZXJybXNnKCJvbmx5IGhlYXAgQU0gaXMgc3Vw cG9ydGVkIikpKTsKIAogCS8qIERpc2FibGUgc3luY3NjYW4gYmVjYXVzZSB3ZSBhc3N1bWUgd2Ug c2NhbiBmcm9tIGJsb2NrIHplcm8gdXB3YXJkcyAqLwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5f c3RyYXQocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCwgdHJ1ZSwgZmFsc2UpOworCXNjYW4gPSB0 YWJsZV9iZWdpbnNjYW5fc3RyYXQocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCwgdHJ1ZSwgZmFs c2UsIGZhbHNlKTsKIAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47CiAKIAlJbml0RGlydHlT bmFwc2hvdChTbmFwc2hvdERpcnR5KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCA0MjA0MDg4 ZmEwZC4uYTQ4NjgyYjhkYmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTEyMTYsMTEgKzEy MTYsMTIgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleElu Zm8gKmluZGV4SW5mbykKIAkJc3RhdGUtPmJzX3NvcnRzdGF0ZSA9CiAJCQl0dXBsZXNvcnRfYmVn aW5faW5kZXhfYnJpbihtYWludGVuYW5jZV93b3JrX21lbSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJ CSAgIFRVUExFU09SVF9OT05FKTsKLQorCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CiAJ CS8qIHNjYW4gdGhlIHJlbGF0aW9uIGFuZCBtZXJnZSBwZXItd29ya2VyIHJlc3VsdHMgKi8KIAkJ cmVsdHVwbGVzID0gX2JyaW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUpOwogCiAJCV9icmluX2VuZF9w YXJhbGxlbChzdGF0ZS0+YnNfbGVhZGVyLCBzdGF0ZSk7CisJCUFzc2VydCghaW5kZXhJbmZvLT5p aV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9 CiAJZWxzZQkJCQkJCS8qIG5vIHBhcmFsbGVsIGluZGV4IGJ1aWxkICovCiAJewpAQCAtMTIzMyw2 ICsxMjM0LDcgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRl eEluZm8gKmluZGV4SW5mbykKIAkJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2Nhbiho ZWFwLCBpbmRleCwgaW5kZXhJbmZvLCBmYWxzZSwgdHJ1ZSwKIAkJCQkJCQkJCQkgICBicmluYnVp bGRDYWxsYmFjaywgc3RhdGUsIE5VTEwpOwogCisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKIAkJLyoKIAkJICogcHJvY2VzcyB0aGUgZmluYWwgYmF0Y2gKIAkJICoKQEAgLTEyNTIsNiAr MTI1NCw3IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJ bmZvICppbmRleEluZm8pCiAJCWJyaW5fZmlsbF9lbXB0eV9yYW5nZXMoc3RhdGUsCiAJCQkJCQkJ ICAgc3RhdGUtPmJzX2N1cnJSYW5nZVN0YXJ0LAogCQkJCQkJCSAgIHN0YXRlLT5ic19tYXhSYW5n ZVN0YXJ0KTsKKwkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAogCS8qIHJlbGVhc2UgcmVzb3VyY2Vz ICovCkBAIC0yMzc0LDYgKzIzNzcsNyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRT dGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJV2FsVXNh Z2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRl cnBhcnRpY2lwYXRlcyA9IHRydWU7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0g dHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQ QVRJT04KQEAgLTIzOTksOSArMjQwMywxNiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICog bGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKKwl7CisJ CUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsK KwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVsc2UKKwl7CiAJCXNu YXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlQ dXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAKIAkvKgog CSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JSSU5fU0hBUkVEIHdv cmtzcGFjZS4KQEAgLTI0NDQsNiArMjQ1NSw4IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5C dWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkv KiBJZiBubyBEU00gc2VnbWVudCB3YXMgYXZhaWxhYmxlLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1 aWxkKSAqLwogCWlmIChwY3h0LT5zZWcgPT0gTlVMTCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlpZiAoSXNNVkNDU25hcHNo b3Qoc25hcHNob3QpKQogCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJv eVBhcmFsbGVsQ29udGV4dChwY3h0KTsKQEAgLTI1MjMsNiArMjUzNiw4IEBAIF9icmluX2JlZ2lu X3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxh dGlvbiBpbmRleCwKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUgc3VjY2Vzc2Z1bGx5IGxhdW5jaGVk LCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5ud29ya2Vyc19sYXVu Y2hlZCA9PSAwKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CiAJCV9icmluX2VuZF9wYXJhbGxlbChicmlubGVhZGVyLCBOVUxMKTsK IAkJcmV0dXJuOwogCX0KQEAgLTI1MzksNiArMjU1NCw4IEBAIF9icmluX2JlZ2luX3BhcmFsbGVs KEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRl eCwKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5n IGZvcmV2ZXIuCiAJICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOwor CWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCBhNjVhY2Q4OTEwNC4uNGNl YTE2MTJjZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtMjgsNiArMjgsNyBA QAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtNjQ2LDYgKzY0Nyw4IEBAIGdpbmJ1aWxkKFJlbGF0 aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlidWlsZHN0 YXRlLmFjY3VtLmdpbnN0YXRlID0gJmJ1aWxkc3RhdGUuZ2luc3RhdGU7CiAJZ2luSW5pdEJBKCZi dWlsZHN0YXRlLmFjY3VtKTsKIAorCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8 IGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhpZCkpOworCiAJLyogUmVwb3J0IHRhYmxlIHNjYW4gcGhhc2Ugc3RhcnRlZCAqLwog CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNF LAogCQkJCQkJCQkgUFJPR1JFU1NfR0lOX1BIQVNFX0lOREVYQlVJTERfVEFCTEVTQ0FOKTsKQEAg LTcwOCwxMSArNzExLDEzIEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9naW4oaGVh cCwgaW5kZXgsCiAJCQkJCQkJCQkgIG1haW50ZW5hbmNlX3dvcmtfbWVtLCBjb29yZGluYXRlLAog CQkJCQkJCQkJICBUVVBMRVNPUlRfTk9ORSk7CisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKIAogCQkvKiBzY2FuIHRoZSByZWxhdGlvbiBpbiBwYXJhbGxlbCBhbmQgbWVyZ2UgcGVyLXdv cmtlciByZXN1bHRzICovCiAJCXJlbHR1cGxlcyA9IF9naW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUp OwogCiAJCV9naW5fZW5kX3BhcmFsbGVsKHN0YXRlLT5ic19sZWFkZXIsIHN0YXRlKTsKKwkJQXNz ZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOwogCX0KIAllbHNlCQkJCQkJLyogbm8gcGFyYWxsZWwgaW5kZXggYnVpbGQg Ki8KIAl7CkBAIC03MjIsNiArNzI3LDcgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkgKi8KIAkJcmVsdHVwbGVzID0gdGFi bGVfaW5kZXhfYnVpbGRfc2NhbihoZWFwLCBpbmRleCwgaW5kZXhJbmZvLCBmYWxzZSwgdHJ1ZSwK IAkJCQkJCQkJCQkgICBnaW5CdWlsZENhbGxiYWNrLCAmYnVpbGRzdGF0ZSwgTlVMTCk7CisJCUlu dmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAogCQkvKiBkdW1wIHJlbWFpbmluZyBlbnRyaWVz IHRvIHRoZSBpbmRleCAqLwogCQlvbGRDdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oYnVpbGRz dGF0ZS50bXBDdHgpOwpAQCAtNzM1LDYgKzc0MSw3IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJCQkJCSAgIGxpc3QsIG5s aXN0LCAmYnVpbGRzdGF0ZS5idWlsZFN0YXRzKTsKIAkJfQogCQlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkQ3R4KTsKKwkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAogCU1lbW9yeUNvbnRleHREZWxl dGUoYnVpbGRzdGF0ZS5mdW5jQ3R4KTsKQEAgLTkwNyw2ICs5MTQsNyBAQCBfZ2luX2JlZ2luX3Bh cmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2Fn ZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOworCWJvb2wJCW5lZWRfcG9wX2Fj dGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxF X0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC05MzEsOSArOTM5LDE2IEBAIF9naW5fYmVnaW5fcGFy YWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsCiAJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3Vy cmVudCkKKwl7CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBT bmFwc2hvdEFueTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVs c2UKKwl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBz aG90KCkpOworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK Kwl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0dJ Tl9TSEFSRUQgd29ya3NwYWNlLgpAQCAtOTc2LDYgKzk5MSw4IEBAIF9naW5fYmVnaW5fcGFyYWxs ZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAJLyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQgKGRvIHNl cmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAobmVlZF9w b3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYgKElzTVZD Q1NuYXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJ CURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBAIC0xMDUwLDYgKzEwNjcsOCBAQCBfZ2lu X2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LAogCS8qIElmIG5vIHdvcmtlcnMgd2VyZSBzdWNjZXNzZnVsbHkgbGF1 bmNoZWQsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPm53b3JrZXJz X2xhdW5jaGVkID09IDApCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJ UG9wQWN0aXZlU25hcHNob3QoKTsKIAkJX2dpbl9lbmRfcGFyYWxsZWwoZ2lubGVhZGVyLCBOVUxM KTsKIAkJcmV0dXJuOwogCX0KQEAgLTEwNjYsNiArMTA4NSw4IEBAIF9naW5fYmVnaW5fcGFyYWxs ZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFu ZyBmb3JldmVyLgogCSAqLwogCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0KTsK KwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwppbmRleCA5ZTcwNzE2N2Q5OC4u NTY5ODExNDdhZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWls ZC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCkBAIC00Myw2ICs0 Myw3IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWxrX3dyaXRlLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCiAKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUg InV0aWxzL3JlbC5oIgpAQCAtMjU5LDYgKzI2MCw3IEBAIGdpc3RidWlsZChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJYnVpbGRzdGF0ZS5pbmR0 dXBsZXMgPSAwOwogCWJ1aWxkc3RhdGUuaW5kdHVwbGVzU2l6ZSA9IDA7CiAKKwlBc3NlcnQoIWlu ZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54 aWQpKTsKIAlpZiAoYnVpbGRzdGF0ZS5idWlsZE1vZGUgPT0gR0lTVF9TT1JURURfQlVJTEQpCiAJ ewogCQkvKgpAQCAtMzUwLDYgKzM1Miw3IEBAIGdpc3RidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxh dGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVz ID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gKGRvdWJsZSkgYnVpbGRzdGF0 ZS5pbmR0dXBsZXM7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaC5jCmluZGV4IDUzMDYxYzgxOWZiLi4zNzExYmFlYTA1MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oYXNoL2hhc2guYwpAQCAtMTk3LDYgKzE5Nyw3IEBAIGhhc2hidWlsZChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBf dHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gYnVpbGRzdGF0ZS5p bmR0dXBsZXM7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7CiAKIAlyZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYwppbmRleCAwZGNkNmVlODE3ZS4uNmQ0ODViODRkOWYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAidXRpbHMvaW52 YWwuaCIKICNpbmNsdWRlICJ1dGlscy9zcGNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2Nh Y2hlLmgiCisjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAKIAogc3RhdGljIEhl YXBUdXBsZSBoZWFwX3ByZXBhcmVfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUg dHVwLApAQCAtNjMzLDYgKzYzNCwzNiBAQCBoZWFwX3ByZXBhcmVfcGFnZXNjYW4oVGFibGVTY2Fu RGVzYyBzc2NhbikKIAlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIH0K IAorLyoKKyAqIFJlc2V0IHRoZSBhY3RpdmUgc25hcHNob3QgZHVyaW5nIGEgc2Nhbi4KKyAqIFRo aXMgZW5zdXJlcyB0aGUgeG1pbiBob3Jpem9uIGNhbiBhZHZhbmNlIHdoaWxlIG1haW50YWluaW5n IHNhZmUgdHVwbGUgdmlzaWJpbGl0eS4KKyAqIE5vdGU6IE5vIG90aGVyIHNuYXBzaG90IHNob3Vs ZCBiZSBhY3RpdmUgZHVyaW5nIHRoaXMgb3BlcmF0aW9uLgorICovCitzdGF0aWMgaW5saW5lIHZv aWQKK2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdChUYWJsZVNjYW5EZXNjIHNzY2FuKQoreworCS8q IE1ha2Ugc3VyZSBubyBvdGhlciBzbmFwc2hvdCB3YXMgc2V0IGFzIGFjdGl2ZS4gKi8KKwlBc3Nl cnQoR2V0QWN0aXZlU25hcHNob3QoKSA9PSBzc2Nhbi0+cnNfc25hcHNob3QpOworCS8qIEFuZCBt YWtlIHN1cmUgYWN0aXZlIHNuYXBzaG90IGlzIG5vdCByZWdpc3RlcmVkLiAqLworCUFzc2VydChH ZXRBY3RpdmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDApOworCVBvcEFjdGl2ZVNuYXBzaG90 KCk7CisKKwlzc2Nhbi0+cnNfc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7IC8qIGp1c3Qgb3Qg YmUgdGlkeSAqLworCUFzc2VydCghSGF2ZVJlZ2lzdGVyZWRPckFjdGl2ZVNuYXBzaG90KCkpOwor CUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKworCS8qIEdvYWwgb2Ygc25hcHNob3QgcmVz ZXQgaXMgdG8gYWxsb3cgaG9yaXpvbiB0byBhZHZhbmNlLiAqLworCUFzc2VydCghVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisjaWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwkv KiBJbiBzb21lIGNhc2VzIGl0IGlzIHN0aWxsIG5vdCBwb3NzaWJsZSBkdWUgeGlkIGFzc2lnbi4g Ki8KKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSkKKwkJSU5KRUNUSU9O X1BPSU5UKCJoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlIiwgTlVMTCk7CisjZW5k aWYKKworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwlzc2Nhbi0+ cnNfc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOworfQorCiAvKgogICogaGVhcF9mZXRj aF9uZXh0X2J1ZmZlciAtIHJlYWQgYW5kIHBpbiB0aGUgbmV4dCBibG9jayBmcm9tIE1BSU5fRk9S S05VTS4KICAqCkBAIC02NzQsNyArNzA1LDEyIEBAIGhlYXBfZmV0Y2hfbmV4dF9idWZmZXIoSGVh cFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogCiAJc2Nhbi0+cnNfY2J1ZiA9IHJl YWRfc3RyZWFtX25leHRfYnVmZmVyKHNjYW4tPnJzX3JlYWRfc3RyZWFtLCBOVUxMKTsKIAlpZiAo QnVmZmVySXNWYWxpZChzY2FuLT5yc19jYnVmKSkKKwl7CiAJCXNjYW4tPnJzX2NibG9jayA9IEJ1 ZmZlckdldEJsb2NrTnVtYmVyKHNjYW4tPnJzX2NidWYpOworCQlpZiAoKHNjYW4tPnJzX2Jhc2Uu cnNfZmxhZ3MgJiBTT19SRVNFVF9TTkFQU0hPVCkgJiYKKwkJCShzY2FuLT5yc19jYmxvY2sgJSBT T19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSA9PSAwKSkKKwkJCWhlYXBfcmVzZXRfc2Nhbl9z bmFwc2hvdCgoVGFibGVTY2FuRGVzYykgc2Nhbik7CisJfQogfQogCiAvKgpAQCAtMTMyNSw2ICsx MzYxLDE1IEBAIGhlYXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCWlmIChzY2FuLT5y c19wYXJhbGxlbHdvcmtlcmRhdGEgIT0gTlVMTCkKIAkJcGZyZWUoc2Nhbi0+cnNfcGFyYWxsZWx3 b3JrZXJkYXRhKTsKIAorCWlmIChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fUkVTRVRfU05B UFNIT1QpCisJeworCQlBc3NlcnQoIShzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fVEVNUF9T TkFQU0hPVCkpOworCQkvKiBNYWtlIHN1cmUgbm8gb3RoZXIgc25hcHNob3Qgd2FzIHNldCBhcyBh Y3RpdmUuICovCisJCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpID09IHNzY2FuLT5yc19zbmFw c2hvdCk7CisJCS8qIEFuZCBtYWtlIHN1cmUgc25hcHNob3QgaXMgbm90IHJlZ2lzdGVyZWQuICov CisJCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDApOworCX0KKwog CWlmIChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fVEVNUF9TTkFQU0hPVCkKIAkJVW5yZWdp c3RlclNuYXBzaG90KHNjYW4tPnJzX2Jhc2UucnNfc25hcHNob3QpOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBjYjRiYzM1YzkzZS4uM2I0ZDNjNGQ1ODEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTE5NCw2ICsx MTk0LDggQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCUV4cHJDb250ZXh0ICplY29udGV4dDsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKIAlib29s CQluZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSBmYWxzZTsKKwlib29sCQluZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QgPSBmYWxzZTsKKwlib29sCQlyZXNldF9zbmFwc2hvdHMgPSBmYWxzZTsKIAlU cmFuc2FjdGlvbklkIE9sZGVzdFhtaW47CiAJQmxvY2tOdW1iZXIgcHJldmlvdXNfYmxrbm8gPSBJ bnZhbGlkQmxvY2tOdW1iZXI7CiAJQmxvY2tOdW1iZXIgcm9vdF9ibGtubyA9IEludmFsaWRCbG9j a051bWJlcjsKQEAgLTEyMjgsOSArMTIzMCw2IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9z Y2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkvKiBBcnJhbmdlIGZvciBlY29udGV4dCdzIHNj YW4gdHVwbGUgdG8gYmUgdGhlIHR1cGxlIHVuZGVyIHRlc3QgKi8KIAllY29udGV4dC0+ZWN4dF9z Y2FudHVwbGUgPSBzbG90OwogCi0JLyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJlZGlj YXRlLCBpZiBhbnkuICovCi0JcHJlZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+ aWlfUHJlZGljYXRlLCBlc3RhdGUpOwotCiAJLyoKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9mIHRo ZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQogCSAqIFNu YXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBvdXIg b3duIHRpbWUKQEAgLTEyNDAsNiArMTIzOSwxNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vf c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRU cmFuc2FjdGlvbklkOwogCisJLyoKKwkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5lZWQgY29uc2lz dGVudCBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJICogSW4gY2FzZSBvZiBwYXJhbGxl bCBzY2FuIHNvbWUgYWRkaXRpb25hbCBpbmZyYXN0cnVjdHVyZSByZXF1aXJlZAorCSAqIHRvIHBl cmZvcm0gc2NhbiB3aXRoIFNPX1JFU0VUX1NOQVBTSE9UIHdoaWNoIGlzIG5vdCB5ZXQgcmVhZHku CisJICovCisJcmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYmCisJ CQkJCSAgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmCisJCQkJCSAgIWlzX3N5c3RlbV9jYXRhbG9n OyAvKiBqdXN0IGZvciB0aGUgY2FzZSAqLworCiAJLyogb2theSB0byBpZ25vcmUgbGF6eSBWQUNV VU1zIGhlcmUgKi8KIAlpZiAoIUlzQm9vdHN0cmFwUHJvY2Vzc2luZ01vZGUoKSAmJiAhaW5kZXhJ bmZvLT5paV9Db25jdXJyZW50KQogCQlPbGRlc3RYbWluID0gR2V0T2xkZXN0Tm9uUmVtb3ZhYmxl VHJhbnNhY3Rpb25JZChoZWFwUmVsYXRpb24pOwpAQCAtMTI0OCwyNCArMTI1Niw0MSBAQCBoZWFw YW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJewogCQkv KgogCQkgKiBTZXJpYWwgaW5kZXggYnVpbGQuCi0JCSAqCi0JCSAqIE11c3QgYmVnaW4gb3VyIG93 biBoZWFwIHNjYW4gaW4gdGhpcyBjYXNlLiAgV2UgbWF5IGFsc28gbmVlZCB0bwotCQkgKiByZWdp c3RlciBhIHNuYXBzaG90IHdob3NlIGxpZmV0aW1lIGlzIHVuZGVyIG91ciBkaXJlY3QgY29udHJv bC4KIAkJICovCiAJCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikpCiAJCXsK LQkJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkp OwotCQkJbmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90ID0gdHJ1ZTsKKwkJCXNuYXBzaG90ID0gR2V0 VHJhbnNhY3Rpb25TbmFwc2hvdCgpOworCQkJLyoKKwkJCSAqIE11c3QgYmVnaW4gb3VyIG93biBo ZWFwIHNjYW4gaW4gdGhpcyBjYXNlLiAgV2UgbWF5IGFsc28gbmVlZCB0bworCQkJICogcmVnaXN0 ZXIgYSBzbmFwc2hvdCB3aG9zZSBsaWZldGltZSBpcyB1bmRlciBvdXIgZGlyZWN0IGNvbnRyb2wu CisJCQkgKiBJbiBjYXNlIG9mIHJlc2V0dGluZyBvZiBzbmFwc2hvdCBkdXJpbmcgdGhlIHNjYW4g cmVnaXN0cmF0aW9uIGlzCisJCQkgKiBub3QgYWxsb3dlZCBiZWNhdXNlIHNuYXBzaG90IGlzIGdv aW5nIHRvIGJlIGNoYW5nZWQgZXZlcnkgc28KKwkJCSAqIG9mdGVuLgorCQkJICovCisJCQlpZiAo IXJlc2V0X3NuYXBzaG90cykKKwkJCXsKKwkJCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qo c25hcHNob3QpOworCQkJCW5lZWRfdW5yZWdpc3Rlcl9zbmFwc2hvdCA9IHRydWU7CisJCQl9CisJ CQlBc3NlcnQoIUFjdGl2ZVNuYXBzaG90U2V0KCkpOworCQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNu YXBzaG90KTsKKwkJCS8qIHN0b3JlIGxpbmsgdG8gc25hcHNob3QgYmVjYXVzZSBpdCBtYXkgYmUg Y29waWVkICovCisJCQlzbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CisJCQluZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOwogCQl9CiAJCWVsc2UKKwkJeworCQkJQXNzZXJ0KCFp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOwogCQkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKKwkJ fQogCiAJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoaGVhcFJlbGF0aW9uLAkvKiByZWxh dGlvbiAqLwogCQkJCQkJCQkJIHNuYXBzaG90LAkvKiBzbmFwc2hvdCAqLwogCQkJCQkJCQkJIDAs IC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KIAkJ CQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCQkg YWxsb3dfc3luYyk7CS8qIHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIGFsbG93X3N5bmMsCS8q IHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIHJlc2V0X3NuYXBzaG90cyAvKiByZXNldCBzbmFw c2hvdHM/ICovKTsKIAl9CiAJZWxzZQogCXsKQEAgLTEyNzksNiArMTMwNCw4IEBAIGhlYXBhbV9p bmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJQXNzZXJ0KCFJ c0Jvb3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkpOwogCQlBc3NlcnQoYWxsb3dfc3luYyk7CiAJCXNu YXBzaG90ID0gc2Nhbi0+cnNfc25hcHNob3Q7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hv dCk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJfQogCiAJaHNjYW4gPSAo SGVhcFNjYW5EZXNjKSBzY2FuOwpAQCAtMTI5Myw2ICsxMzIwLDEzIEBAIGhlYXBhbV9pbmRleF9i dWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlBc3NlcnQoc25hcHNob3Qg PT0gU25hcHNob3RBbnkgPyBUcmFuc2FjdGlvbklkSXNWYWxpZChPbGRlc3RYbWluKSA6CiAJCSAg ICFUcmFuc2FjdGlvbklkSXNWYWxpZChPbGRlc3RYbWluKSk7CiAJQXNzZXJ0KHNuYXBzaG90ID09 IFNuYXBzaG90QW55IHx8ICFhbnl2aXNpYmxlKTsKKwlBc3NlcnQoc25hcHNob3QgPT0gU25hcHNo b3RBbnkgfHwgQWN0aXZlU25hcHNob3RTZXQoKSk7CisKKwkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0 YXRlIGZvciBwcmVkaWNhdGUsIGlmIGFueS4gKi8KKwlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1 YWwoaW5kZXhJbmZvLT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7CisJLyogQ2xlYXIgcmVmZXJlbmNl IHRvIHNuYXBzaG90IHNpbmNlIGl0IG1heSBiZSBjaGFuZ2VkIGJ5IHRoZSBzY2FuIGl0c2VsZi4g Ki8KKwlpZiAocmVzZXRfc25hcHNob3RzKQorCQlzbmFwc2hvdCA9IEludmFsaWRTbmFwc2hvdDsK IAogCS8qIFB1Ymxpc2ggbnVtYmVyIG9mIGJsb2NrcyB0byBzY2FuICovCiAJaWYgKHByb2dyZXNz KQpAQCAtMTcyOCw2ICsxNzYyLDggQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCiAJdGFibGVfZW5kc2NhbihzY2FuKTsKIAorCWlmIChuZWVk X3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJLyogd2UgY2Fu IG5vdyBmb3JnZXQgb3VyIHNuYXBzaG90LCBpZiBzZXQgYW5kIHJlZ2lzdGVyZWQgYnkgdXMgKi8K IAlpZiAobmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90KQogCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25h cHNob3QpOwpAQCAtMTgwMCw3ICsxODM2LDggQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4o UmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8K IAkJCQkJCQkJIE5VTEwsCS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIg YWNjZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJCQkJCSBmYWxzZSk7CS8qIHN5bmNzY2FuIG5vdCBP SyAqLworCQkJCQkJCQkgZmFsc2UsCS8qIHN5bmNzY2FuIG5vdCBPSyAqLworCQkJCQkJCQkgZmFs c2UpOwogCWhzY2FuID0gKEhlYXBTY2FuRGVzYykgc2NhbjsKIAogCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfcGFyYW0oUFJPR1JFU1NfU0NBTl9CTE9DS1NfVE9UQUwsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9n ZW5hbS5jCmluZGV4IDBjYjI3YWYxMzEwLi5jOWM1MzA0NDc0OCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2dlbmFtLmMKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzeXN0YWJsZV9iZWdpbnNjYW4oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCQkgKi8KIAkJc3lzc2Nhbi0+c2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9z dHJhdChoZWFwUmVsYXRpb24sIHNuYXBzaG90LAogCQkJCQkJCQkJCQkgIG5rZXlzLCBrZXksCi0J CQkJCQkJCQkJCSAgdHJ1ZSwgZmFsc2UpOworCQkJCQkJCQkJCQkgIHRydWUsIGZhbHNlLCBmYWxz ZSk7CiAJCXN5c3NjYW4tPmlzY2FuID0gTlVMTDsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKaW5kZXggOWQ3MGU4OWMxZjMuLjQ3MzQwZGUxZDMyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHNvcnQuYwpAQCAtMjU4LDcgKzI1OCw3IEBAIHN0YXRpYyBkb3VibGUgX2J0X3Nw b29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHN0YXRpYyB2b2lk IF9idF9zcG9vbGRlc3Ryb3koQlRTcG9vbCAqYnRzcG9vbCk7CiBzdGF0aWMgdm9pZCBfYnRfc3Bv b2woQlRTcG9vbCAqYnRzcG9vbCwgSXRlbVBvaW50ZXIgc2VsZiwKIAkJCQkJICBEYXR1bSAqdmFs dWVzLCBib29sICppc251bGwpOwotc3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29sICpi dHNwb29sLCBCVFNwb29sICpidHNwb29sMik7CitzdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJU U3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cyk7 CiBzdGF0aWMgdm9pZCBfYnRfYnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2lu dGVyIHRpZCwgRGF0dW0gKnZhbHVlcywKIAkJCQkJCQkgICBib29sICppc251bGwsIGJvb2wgdHVw bGVJc0FsaXZlLCB2b2lkICpzdGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVyIF9idF9ibG5l d3BhZ2UoQlRXcml0ZVN0YXRlICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0zMjEsMTggKzMy MSwyMiBAQCBidGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8g KmluZGV4SW5mbykKIAkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRleCkpOwogCiAJcmVs dHVwbGVzID0gX2J0X3Nwb29sc19oZWFwc2NhbihoZWFwLCBpbmRleCwgJmJ1aWxkc3RhdGUsIGlu ZGV4SW5mbyk7CisJQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4 SW5mby0+aWlfVW5pcXVlIHx8CisJCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAqIEZpbmlzaCB0aGUg YnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhlIHNvcnQgb2YgdGhlIHNwb29sIGZpbGUsICgyKQog CSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1cGxlcyBpbnRvIGJ0cmVlIHBhZ2VzIGFuZCAoMykg YnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2ZWxzLiAgRmluYWxseSwgaXQgbWF5IGFsc28gYmUg bmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFyYWxsZWxpc20uCiAJICovCi0JX2J0X2xlYWZidWls ZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMik7CisJX2J0X2xlYWZidWlsZChi dWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWluZGV4SW5mby0+aWlfUGFyYWxs ZWxXb3JrZXJzICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CiAJX2J0X3Nwb29sZGVzdHJv eShidWlsZHN0YXRlLnNwb29sKTsKIAlpZiAoYnVpbGRzdGF0ZS5zcG9vbDIpCiAJCV9idF9zcG9v bGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9vbDIpOwogCWlmIChidWlsZHN0YXRlLmJ0bGVhZGVyKQog CQlfYnRfZW5kX3BhcmFsbGVsKGJ1aWxkc3RhdGUuYnRsZWFkZXIpOworCUFzc2VydChpbmRleElu Zm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fAorCQkgICFp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eG1pbikpOwogCiAJcmVzdWx0ID0gKEluZGV4QnVpbGRSZXN1bHQgKikgcGFsbG9jKHNpemVvZihJ bmRleEJ1aWxkUmVzdWx0KSk7CiAKQEAgLTQ4MCw2ICs0ODQsOSBAQCBfYnRfc3Bvb2xzX2hlYXBz Y2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsCiAJZWxzZQogCQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRzdGF0 ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluKTsKKwlJbnZhbGlk YXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3Jr ZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8CisJCSAgIWluZGV4SW5mby0+aWlfQ29uY3Vy cmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAq IFNldCB0aGUgcHJvZ3Jlc3MgdGFyZ2V0IGZvciB0aGUgbmV4dCBwaGFzZS4gIFJlc2V0IHRoZSBi bG9jayBudW1iZXIKQEAgLTUzNSw3ICs1NDIsNyBAQCBfYnRfc3Bvb2woQlRTcG9vbCAqYnRzcG9v bCwgSXRlbVBvaW50ZXIgc2VsZiwgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsKQogICogY3Jl YXRlIGFuIGVudGlyZSBidHJlZS4KICAqLwogc3RhdGljIHZvaWQKLV9idF9sZWFmYnVpbGQoQlRT cG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCitfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wg KmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cykKIHsKIAlC VFdyaXRlU3RhdGUgd3N0YXRlOwogCkBAIC01NTcsMTggKzU2NCwyMSBAQCBfYnRfbGVhZmJ1aWxk KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCQkJCQkJCQkJIFBST0dSRVNT X0JUUkVFX1BIQVNFX1BFUkZPUk1TT1JUXzIpOwogCQl0dXBsZXNvcnRfcGVyZm9ybXNvcnQoYnRz cG9vbDItPnNvcnRzdGF0ZSk7CiAJfQorCUFzc2VydCghcmVzZXRfc25hcHNob3RzIHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXdzdGF0ZS5oZWFwID0gYnRzcG9v bC0+aGVhcDsKIAl3c3RhdGUuaW5kZXggPSBidHNwb29sLT5pbmRleDsKIAl3c3RhdGUuaW5za2V5 ID0gX2J0X21rc2NhbmtleSh3c3RhdGUuaW5kZXgsIE5VTEwpOwogCS8qIF9idF9ta3NjYW5rZXko KSB3b24ndCBzZXQgYWxsZXF1YWxpbWFnZSB3aXRob3V0IG1ldGFwYWdlICovCiAJd3N0YXRlLmlu c2tleS0+YWxsZXF1YWxpbWFnZSA9IF9idF9hbGxlcXVhbGltYWdlKHdzdGF0ZS5pbmRleCwgdHJ1 ZSk7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwogCiAJLyogcmVzZXJ2ZSB0aGUgbWV0 YXBhZ2UgKi8KIAl3c3RhdGUuYnR3c19wYWdlc19hbGxvY2VkID0gQlRSRUVfTUVUQVBBR0UgKyAx OwogCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfU1VC UEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19CVFJFRV9QSEFTRV9MRUFGX0xPQUQpOworCUFzc2Vy dCghcmVzZXRfc25hcHNob3RzIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4p KTsKIAlfYnRfbG9hZCgmd3N0YXRlLCBidHNwb29sLCBidHNwb29sMik7CiB9CiAKQEAgLTE0MDks NiArMTQxOSw3IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsK IAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0g dHJ1ZTsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOwogCWludAkJCXF1 ZXJ5bGVuOwogCiAjaWZkZWYgRElTQUJMRV9MRUFERVJfUEFSVElDSVBBVElPTgpAQCAtMTQzNCw5 ICsxNDQ1LDE2IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBsaXZlIGFjY29yZGluZyB0byB0 aGF0LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBz aG90U2V0KCkpOwogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OworCQluZWVkX3BvcF9hY3RpdmVf c25hcHNob3QgPSBmYWxzZTsKKwl9CiAJZWxzZQorCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChz bmFwc2hvdCk7CisJfQogCiAJLyoKIAkgKiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFM TEVMX0tFWV9CVFJFRV9TSEFSRUQgd29ya3NwYWNlLCBhbmQKQEAgLTE0OTAsNiArMTUwOCw4IEBA IF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25j dXJyZW50LCBpbnQgcmVxdWVzdCkKIAkvKiBJZiBubyBEU00gc2VnbWVudCB3YXMgYXZhaWxhYmxl LCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5zZWcgPT0gTlVMTCkK IAl7CisJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hv dCgpOwogCQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQogCQkJVW5yZWdpc3RlclNuYXBz aG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29udGV4dChwY3h0KTsKQEAgLTE1ODQs NiArMTYwNCw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUg c3VjY2Vzc2Z1bGx5IGxhdW5jaGVkLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlm IChwY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA9PSAwKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCV9idF9lbmRfcGFyYWxsZWwo YnRsZWFkZXIpOwogCQlyZXR1cm47CiAJfQpAQCAtMTYwMCw2ICsxNjIyLDggQEAgX2J0X2JlZ2lu X3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGlu dCByZXF1ZXN0KQogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwg bm90IGhhbmcgZm9yZXZlci4KIAkgKi8KIAlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2go cGN4dCk7CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNo b3QoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn aW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jCmluZGV4IDZh NjFlMDkzZmEwLi4wNmMwMWNmMzM2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGdpbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2Vy dC5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1bGtfd3JpdGUuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog I2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCkBAIC0xNDMsNiArMTQ0LDcgQEAgc3BnYnVpbGQoUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCXJlc3Vs dCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxvYzAoc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQp KTsKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVw bGVzID0gYnVpbGRzdGF0ZS5pbmR0dXBsZXM7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1 cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJcmV0dXJu IHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBhYTIxNjY4M2I3NC4uM2NhMzVmMjNhYzMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMKQEAgLTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlICJ1dGlscy9zbmFw bWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90dXBs ZXNvcnQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKIAogLyogUG90ZW50aWFsbHkgc2V0 IGJ5IHBnX3VwZ3JhZGVfc3VwcG9ydCBmdW5jdGlvbnMgKi8KIE9pZAkJCWJpbmFyeV91cGdyYWRl X25leHRfaW5kZXhfcGdfY2xhc3Nfb2lkID0gSW52YWxpZE9pZDsKQEAgLTE0OTIsOCArMTQ5Myw4 IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAJUmVsYXRp b24JaW5kZXhSZWxhdGlvbjsKIAlJbmRleEluZm8gICppbmRleEluZm87CiAKLQkvKiBUaGlzIGhh ZCBiZXR0ZXIgbWFrZSBzdXJlIHRoYXQgYSBzbmFwc2hvdCBpcyBhY3RpdmUgKi8KLQlBc3NlcnQo QWN0aXZlU25hcHNob3RTZXQoKSk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7 CiAKIAkvKiBPcGVuIGFuZCBsb2NrIHRoZSBwYXJlbnQgaGVhcCByZWxhdGlvbiAqLwogCWhlYXBS ZWwgPSB0YWJsZV9vcGVuKGhlYXBSZWxhdGlvbklkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sp OwpAQCAtMTUxMSwxOSArMTUxMiwyOCBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhl YXBSZWxhdGlvbklkLAogCiAJaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4oaW5kZXhSZWxhdGlv bklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAorCS8qIEJ1aWxkSW5kZXhJbmZvIG1heSByZXF1aXJl IGFzIHNuYXBzaG90IGZvciBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRlcyAqLworCVB1c2hBY3Rp dmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCS8qCiAJICogV2UgaGF2ZSB0 byByZS1idWlsZCB0aGUgSW5kZXhJbmZvIHN0cnVjdCwgc2luY2UgaXQgd2FzIGxvc3QgaW4gdGhl CiAJICogY29tbWl0IG9mIHRoZSB0cmFuc2FjdGlvbiB3aGVyZSB0aGlzIGNvbmN1cnJlbnQgaW5k ZXggd2FzIGNyZWF0ZWQgYXQKIAkgKiB0aGUgY2F0YWxvZyBsZXZlbC4KIAkgKi8KIAlpbmRleElu Zm8gPSBCdWlsZEluZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKKwkvKiBEb25lIHdpdGggc25hcHNo b3QgKi8KKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCUFzc2VydCghaW5kZXhJbmZvLT5paV9SZWFk eUZvckluc2VydHMpOwogCWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9IHRydWU7CiAJaW5kZXhJ bmZvLT5paV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNlOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKiBOb3cgYnVpbGQgdGhlIGluZGV4ICovCiAJaW5k ZXhfYnVpbGQoaGVhcFJlbCwgaW5kZXhSZWxhdGlvbiwgaW5kZXhJbmZvLCBmYWxzZSwgdHJ1ZSk7 CiAKKwkvKiBJbnZhbGlkYXRlIGNhdGFsb2cgc25hcHNob3QganVzdCBmb3IgYXNzZXJ0ICovCisJ SW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCgoaW5kZXhJbmZvLT5paV9QYXJh bGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUpIHx8ICFUcmFuc2FjdGlvbklkSXNW YWxpZChNeVByb2MtPnhtaW4pKTsKKwogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhl Y3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25l c3RsZXZlbCk7CiAKQEAgLTE1MzQsMTIgKzE1NDQsMTkgQEAgaW5kZXhfY29uY3VycmVudGx5X2J1 aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAl0YWJsZV9jbG9zZShoZWFwUmVsLCBOb0xvY2spOwog CWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7CiAKKwkvKgorCSAqIFVwZGF0aW5n IHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UK KwkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCisJICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdl dFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJLyoKIAkgKiBVcGRhdGUgdGhlIHBnX2luZGV4IHJv dyB0byBtYXJrIHRoZSBpbmRleCBhcyByZWFkeSBmb3IgaW5zZXJ0cy4gT25jZSB3ZQogCSAqIGNv bW1pdCB0aGlzIHRyYW5zYWN0aW9uLCBhbnkgbmV3IHRyYW5zYWN0aW9ucyB0aGF0IG9wZW4gdGhl IHRhYmxlIG11c3QKIAkgKiBpbnNlcnQgbmV3IGVudHJpZXMgaW50byB0aGUgaW5kZXggZm9yIGlu c2VydGlvbnMgYW5kIG5vbi1IT1QgdXBkYXRlcy4KIAkgKi8KIAlpbmRleF9zZXRfc3RhdGVfZmxh Z3MoaW5kZXhSZWxhdGlvbklkLCBJTkRFWF9DUkVBVEVfU0VUX1JFQURZKTsKKwkvKiB3ZSBjYW4g ZG8gYXdheSB3aXRoIG91ciBzbmFwc2hvdCAqLworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAK IC8qCkBAIC0zMjM2LDcgKzMyNTMsOCBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCSBO VUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJh dGVneSBPSyAqLwotCQkJCQkJCQkgdHJ1ZSk7IC8qIHN5bmNzY2FuIE9LICovCisJCQkJCQkJCSB0 cnVlLCAvKiBzeW5jc2NhbiBPSyAqLworCQkJCQkJCQkgZmFsc2UpOwogCiAJd2hpbGUgKHRhYmxl X3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNsb3QpKQogCXsK QEAgLTMyOTksMTIgKzMzMTcsMTYgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAgKiBhcyBvZiB0aGUgc3RhcnQgb2YgdGhlIHNjYW4gKHNlZSB0YWJsZV9pbmRl eF9idWlsZF9zY2FuKSwgd2hlcmVhcyBhIG5vcm1hbAogICogYnVpbGQgdGFrZXMgY2FyZSB0byBp bmNsdWRlIHJlY2VudGx5LWRlYWQgdHVwbGVzLiAgVGhpcyBpcyBPSyBiZWNhdXNlCiAgKiB3ZSB3 b24ndCBtYXJrIHRoZSBpbmRleCB2YWxpZCB1bnRpbCBhbGwgdHJhbnNhY3Rpb25zIHRoYXQgbWln aHQgYmUgYWJsZQotICogdG8gc2VlIHRob3NlIHR1cGxlcyBhcmUgZ29uZS4gIFRoZSByZWFzb24g Zm9yIGRvaW5nIHRoYXQgaXMgdG8gYXZvaWQKKyAqIHRvIHNlZSB0aG9zZSB0dXBsZXMgYXJlIGdv bmUuICBPbmUgb2YgcmVhc29ucyBmb3IgZG9pbmcgdGhhdCBpcyB0byBhdm9pZAogICogYm9ndXMg dW5pcXVlLWluZGV4IGZhaWx1cmVzIGR1ZSB0byBjb25jdXJyZW50IFVQREFURXMgKHdlIG1pZ2h0 IHNlZQogICogZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBzYW1lIHJvdyBhcyBiZWluZyB2YWxp ZCB3aGVuIHdlIHBhc3Mgb3ZlciB0aGVtLAogICogaWYgd2UgdXNlZCBIZWFwVHVwbGVTYXRpc2Zp ZXNWYWN1dW0pLiAgVGhpcyBsZWF2ZXMgdXMgd2l0aCBhbiBpbmRleCB0aGF0CiAgKiBkb2VzIG5v dCBjb250YWluIGFueSB0dXBsZXMgYWRkZWQgdG8gdGhlIHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRo ZSBpbmRleC4KICAqCisgKiBGdXJ0aGVybW9yZSwgaW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4 IHdlIHNldCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlCisgKiBzY2FuLCB3aGljaCBjYXVzZXMg bmV3IHNuYXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFz b24KKyAqIGZvciB0aGF0IGlzIHRvIHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZvcndhcmQu CisgKgogICogTmV4dCwgd2UgbWFyayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQgc3RpbGwg bm90ICJpbmRpc3ZhbGlkIikgYW5kCiAgKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBh bmQgc3RhcnQgYSB0aGlyZC4gIEFnYWluIHdlIHdhaXQgZm9yIGFsbAogICogdHJhbnNhY3Rpb25z IHRoYXQgY291bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUgdG8gdGVybWluYXRlLiAg Tm93CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IGUwNjU4MDRjZjIxLi4wZGIyM2I5ODFk YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTE2OTQsMjMgKzE2OTQsMTcgQEAgRGVm aW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogY2hhaW5zIGNhbiBiZSBjcmVhdGVkIHdoZXJlIHRo ZSBuZXcgdHVwbGUgYW5kIHRoZSBvbGQgdHVwbGUgaW4gdGhlCiAJICogY2hhaW4gaGF2ZSBkaWZm ZXJlbnQgaW5kZXgga2V5cy4KIAkgKgotCSAqIFdlIG5vdyB0YWtlIGEgbmV3IHNuYXBzaG90LCBh bmQgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdAotCSAqIGFyZSB2aXNpYmxl IGluIHRoaXMgc25hcHNob3QuICBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0 bworCSAqIFdlIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2li bGUgdXNpbmcgc2luZ2xlIG9yCisJICogbXVsdGlwbGUgcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdl IGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCiAJICogdGhlc2UgdHVwbGVzIHdp bGwgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBpbmRleCwgc2luY2UgYW55IHVwZGF0ZXMgbWFkZQog CSAqIGJ5IHRyYW5zYWN0aW9ucyB0aGF0IGRpZG4ndCBrbm93IGFib3V0IHRoZSBpbmRleCBhcmUg bm93IGNvbW1pdHRlZCBvcgogCSAqIHJvbGxlZCBiYWNrLiAgVGh1cywgZWFjaCB2aXNpYmxlIHR1 cGxlIGlzIGVpdGhlciB0aGUgZW5kIG9mIGl0cwogCSAqIEhPVC1jaGFpbiBvciB0aGUgZXh0ZW5z aW9uIG9mIHRoZSBjaGFpbiBpcyBIT1Qtc2FmZSBmb3IgdGhpcyBpbmRleC4KIAkgKi8KIAotCS8q IFNldCBBY3RpdmVTbmFwc2hvdCBzaW5jZSBmdW5jdGlvbnMgaW4gdGhlIGluZGV4ZXMgbWF5IG5l ZWQgaXQgKi8KLQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK LQogCS8qIFBlcmZvcm0gY29uY3VycmVudCBidWlsZCBvZiBpbmRleCAqLwogCWluZGV4X2NvbmN1 cnJlbnRseV9idWlsZCh0YWJsZUlkLCBpbmRleFJlbGF0aW9uSWQpOwogCi0JLyogd2UgY2FuIGRv IGF3YXkgd2l0aCBvdXIgc25hcHNob3QgKi8KLQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCiAJLyoK IAkgKiBDb21taXQgdGhpcyB0cmFuc2FjdGlvbiB0byBtYWtlIHRoZSBpbmRpc3JlYWR5IHVwZGF0 ZSB2aXNpYmxlLgogCSAqLwpAQCAtNDEwNyw5ICs0MTAxLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29u Y3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0 IFJlaW4KIAkJaWYgKG5ld2lkeC0+c2FmZSkKIAkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7 CiAKLQkJLyogU2V0IEFjdGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhl cyBtYXkgbmVlZCBpdCAqLwotCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKLQogCQkvKgogCQkgKiBVcGRhdGUgcHJvZ3Jlc3MgZm9yIHRoZSBpbmRleCB0byBi dWlsZCwgd2l0aCB0aGUgY29ycmVjdCBwYXJlbnQKIAkJICogdGFibGUgaW52b2x2ZWQuCkBAIC00 MTI0LDcgKzQxMTUsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRl eFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkvKiBQZXJmb3JtIGNv bmN1cnJlbnQgYnVpbGQgb2YgbmV3IGluZGV4ICovCiAJCWluZGV4X2NvbmN1cnJlbnRseV9idWls ZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+aW5kZXhJZCk7CiAKLQkJUG9wQWN0aXZlU25hcHNo b3QoKTsKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggNTQ5YWVkY2ZhOTkuLjE3MGM2MDM1ZmFkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRp bHMvc2VsZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKIC8qIEdVQyBwYXJh bWV0ZXJzICovCiBkb3VibGUJCWN1cnNvcl90dXBsZV9mcmFjdGlvbiA9IERFRkFVTFRfQ1VSU09S X1RVUExFX0ZSQUNUSU9OOwpAQCAtNjg5OSw2ICs2OTAwLDcgQEAgcGxhbl9jcmVhdGVfaW5kZXhf d29ya2VycyhPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9pZCkKIAlSZWxhdGlvbgloZWFwOwogCVJl bGF0aW9uCWluZGV4OwogCVJlbE9wdEluZm8gKnJlbDsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVf c25hcHNob3QgPSBmYWxzZTsKIAlpbnQJCQlwYXJhbGxlbF93b3JrZXJzOwogCUJsb2NrTnVtYmVy IGhlYXBfYmxvY2tzOwogCWRvdWJsZQkJcmVsdHVwbGVzOwpAQCAtNjk1NCw2ICs2OTU2LDExIEBA IHBsYW5fY3JlYXRlX2luZGV4X3dvcmtlcnMoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQpCiAJ aGVhcCA9IHRhYmxlX29wZW4odGFibGVPaWQsIE5vTG9jayk7CiAJaW5kZXggPSBpbmRleF9vcGVu KGluZGV4T2lkLCBOb0xvY2spOwogCisJLyogU2V0IEFjdGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0 aW9ucyBpbiB0aGUgaW5kZXhlcyBtYXkgbmVlZCBpdCAqLworCWlmICghQWN0aXZlU25hcHNob3RT ZXQoKSkgeworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK KwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwl9CiAJLyoKIAkgKiBEZXRlcm1p bmUgaWYgaXQncyBzYWZlIHRvIHByb2NlZWQuCiAJICoKQEAgLTcwMTEsNiArNzAxOCw4IEBAIHBs YW5fY3JlYXRlX2luZGV4X3dvcmtlcnMoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQpCiAJCXBh cmFsbGVsX3dvcmtlcnMtLTsKIAogZG9uZToKKwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCWluZGV4X2Nsb3NlKGluZGV4LCBOb0xvY2spOwog CXRhYmxlX2Nsb3NlKGhlYXAsIE5vTG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCAzYTk0MjRj MTljOS4uNDE4Y2JmNjU2ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQyLDYgKzQyLDggQEAKICNk ZWZpbmUgSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVwkJKDEgPDwgMCkKICNkZWZpbmUg SEVBUF9QQUdFX1BSVU5FX0ZSRUVaRQkJCQkoMSA8PCAxKQogCisjZGVmaW5lIFNPX1JFU0VUX1NO QVBTSE9UX0VBQ0hfTl9QQUdFCQk0MDk2CisKIHR5cGVkZWYgc3RydWN0IEJ1bGtJbnNlcnRTdGF0 ZURhdGEgKkJ1bGtJbnNlcnRTdGF0ZTsKIHN0cnVjdCBUdXBsZVRhYmxlU2xvdDsKIHN0cnVjdCBW YWN1dW1DdXRvZmZzOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggODcxM2UxMmNiZmIuLjhkZjZiYTli ODllIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJzdG9y YWdlL3JlYWRfc3RyZWFtLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRp bHMvc25hcHNob3QuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAogCiAj ZGVmaW5lIERFRkFVTFRfVEFCTEVfQUNDRVNTX01FVEhPRAkiaGVhcCIKQEAgLTYyLDYgKzYzLDE3 IEBAIHR5cGVkZWYgZW51bSBTY2FuT3B0aW9ucwogCiAJLyogdW5yZWdpc3RlciBzbmFwc2hvdCBh dCBzY2FuIGVuZD8gKi8KIAlTT19URU1QX1NOQVBTSE9UID0gMSA8PCA5LAorCS8qCisJICogUmVz ZXQgc2NhbiBhbmQgY2F0YWxvZyBzbmFwc2hvdCBldmVyeSBzbyBvZnRlbj8gSWYgc28sIGVhY2gK KwkgKiBTT19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSBwYWdlcyBhY3RpdmUgc25hcHNob3Qg aXMgcG9wcGVkLAorCSAqIGNhdGFsb2cgc25hcHNob3QgaW52YWxpZGF0ZWQsIGxhdGVzdCBzbmFw c2hvdCBwdXNoZWQgYXMgYWN0aXZlLgorCSAqCisJICogQXQgdGhlIGVuZCBvZiB0aGUgc2NhbiBz bmFwc2hvdCBpcyBub3QgcG9wcGVkLgorCSAqIEdvYWwgb2Ygc3VjaCBtb2RlIGlzIGtlZXAgeG1p biBwcm9wYWdhdGluZyBob3Jpem9uIGZvcndhcmQuCisJICoKKwkgKiBzZWUgaGVhcF9yZXNldF9z Y2FuX3NuYXBzaG90IGZvciBkZXRhaWxzLgorCSAqLworCVNPX1JFU0VUX1NOQVBTSE9UID0gMSA8 PCAxMCwKIH0JCQlTY2FuT3B0aW9uczsKIAogLyoKQEAgLTg5Myw3ICs5MDUsOCBAQCBleHRlcm4g VGFibGVTY2FuRGVzYyB0YWJsZV9iZWdpbnNjYW5fY2F0YWxvZyhSZWxhdGlvbiByZWxhdGlvbiwg aW50IG5rZXlzLAogc3RhdGljIGlubGluZSBUYWJsZVNjYW5EZXNjCiB0YWJsZV9iZWdpbnNjYW5f c3RyYXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJICBpbnQgbmtleXMs IHN0cnVjdCBTY2FuS2V5RGF0YSAqa2V5LAotCQkJCQkgIGJvb2wgYWxsb3dfc3RyYXQsIGJvb2wg YWxsb3dfc3luYykKKwkJCQkJICBib29sIGFsbG93X3N0cmF0LCBib29sIGFsbG93X3N5bmMsCisJ CQkJCSAgYm9vbCByZXNldF9zbmFwc2hvdCkKIHsKIAl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9T RVFTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CiAKQEAgLTkwMSw2ICs5MTQsMTUgQEAgdGFibGVf YmVnaW5zY2FuX3N0cmF0KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QsCiAJCWZsYWdz IHw9IFNPX0FMTE9XX1NUUkFUOwogCWlmIChhbGxvd19zeW5jKQogCQlmbGFncyB8PSBTT19BTExP V19TWU5DOworCWlmIChyZXNldF9zbmFwc2hvdCkKKwl7CisJCUlOSkVDVElPTl9QT0lOVCgidGFi bGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cyIsIE5VTEwpOworCQkvKiBBY3RpdmUg c25hcHNob3QgaXMgcmVxdWlyZWQgb24gc3RhcnQuICovCisJCUFzc2VydChHZXRBY3RpdmVTbmFw c2hvdCgpID09IHNuYXBzaG90KTsKKwkJLyogQWN0aXZlIHNuYXBzaG90IHNob3VsZCBub3QgYmUg cmVnaXN0ZXJlZCB0byBrZWVwIHhtaW4gcHJvcGFnYXRpbmcuICovCisJCUFzc2VydChHZXRBY3Rp dmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDApOworCQlmbGFncyB8PSAoU09fUkVTRVRfU05B UFNIT1QpOworCX0KIAogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnNjYW5fYmVnaW4ocmVsLCBz bmFwc2hvdCwgbmtleXMsIGtleSwgTlVMTCwgZmxhZ3MpOwogfQpAQCAtMTczMCw2ICsxNzUyLDEw IEBAIHRhYmxlX3NjYW5fYW5hbHl6ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwgVHJh bnNhY3Rpb25JZCBPbGRlc3RYbWluLAogICogdmVyeSBoYXJkIHRvIGRldGVjdCB3aGV0aGVyIHRo ZXkncmUgcmVhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBjaGFpbiB0aXAuCiAgKiBUaGlzIG9u bHkgcmVhbGx5IG1ha2VzIHNlbnNlIGZvciBoZWFwIEFNLCBpdCBtaWdodCBuZWVkIHRvIGJlIGdl bmVyYWxpemVkCiAgKiBmb3Igb3RoZXIgQU1zIGxhdGVyLgorICoKKyAqIEluIGNhc2Ugb2Ygbm9u LXVuaXF1ZSBpbmRleCBhbmQgbm9uLXBhcmFsbGVsIGNvbmN1cnJlbnQgYnVpbGQKKyAqIFNPX1JF U0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQgZm9yIHRoZSBzY2FuLiBUaGF0IGxlYWRzIGZvciBjaGFu Z2luZyBzbmFwc2hvdHMKKyAqIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbiBob3Jpem9uIHByb3Bh Z2F0ZS4KICAqLwogc3RhdGljIGlubGluZSBkb3VibGUKIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4o UmVsYXRpb24gdGFibGVfcmVsLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01h a2VmaWxlCmluZGV4IGU2ODA5OTFmOGQ0Li4xOWQyNjQwOGMyYSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZQpAQCAtMTEsNyArMTEsNyBAQCBFWFRFTlNJT04g PSBpbmplY3Rpb25fcG9pbnRzCiBEQVRBID0gaW5qZWN0aW9uX3BvaW50cy0tMS4wLnNxbAogUEdG SUxFREVTQyA9ICJpbmplY3Rpb25fcG9pbnRzIC0gZmFjaWxpdHkgZm9yIGluamVjdGlvbiBwb2lu dHMiCiAKLVJFR1JFU1MgPSBpbmplY3Rpb25fcG9pbnRzIGhhc2hhZ2cgcmVpbmRleF9jb25jCitS RUdSRVNTID0gaW5qZWN0aW9uX3BvaW50cyBoYXNoYWdnIHJlaW5kZXhfY29uYyBjaWNfcmVzZXRf c25hcHNob3RzCiBSRUdSRVNTX09QVFMgPSAtLWRscGF0aD0kKHRvcF9idWlsZGRpcikvc3JjL3Rl c3QvcmVncmVzcwogCiBJU09MQVRJT04gPSBiYXNpYyBpbnBsYWNlIHN5c2NhY2hlLXVwZGF0ZS1w cnVuZWQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBl Y3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTQ4ZDEyMzJhYTAKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBz aG90cy5vdXQKQEAgLTAsMCArMSwxMDUgQEAKK0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3Bv aW50czsKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOworIGluamVjdGlvbl9w b2ludHNfc2V0X2xvY2FsIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBpbmplY3Rpb25f cG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cycsICdu b3RpY2UnKTsKKyBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKworQ1JFQVRFIFNDSEVNQSBjaWNfcmVzZXRfc25hcDsKK0NSRUFU RSBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwoaSBpbnQgcHJpbWFyeSBrZXksIGogaW50KTsKK0lO U0VSVCBJTlRPIGNpY19yZXNldF9zbmFwLnRibCBTRUxFQ1QgaSwgaSAqIEkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMjAwKSBzKGkpOworQ1JFQVRFIEZVTkNUSU9OIGNpY19yZXNldF9zbmFwLnBy ZWRpY2F0ZV9zdGFibGUoaW50ZWdlcikgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCQkJCQkJCQkJ ICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVYRUNVVEUgJ1NFTEVDVCB0eGlk X2N1cnJlbnQoKSc7CisgICAgUkVUVVJOIE1PRCgkMSwgMikgPSAwOworRU5EOyAkJDsKK0NSRUFU RSBGVU5DVElPTiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCkgUkVU VVJOUyBib29sIElNTVVUQUJMRQorCQkJCQkJCQkJICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitC RUdJTgorICAgIEVYRUNVVEUgJ1NFTEVDVCB0eGlkX2N1cnJlbnQoKSc7CisgICAgUkVUVVJOIGZh bHNlOworRU5EOyAkJDsKKy0tLS0tLS0tLS0tLS0tLS0KK0FMVEVSIFRBQkxFIGNpY19yZXNldF9z bmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9MCk7CitDUkVBVEUgVU5JUVVFIElOREVYIENP TkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25h cHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFi bGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3Rp dmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGop IFdIRVJFIE1PRChpLCAyKSA9IDA7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNF OiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9z bmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0 YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVj dGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJF IGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3Nu YXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2Fu X3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAu dGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0o KTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9i ZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0 cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK1JFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25h cHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVh cF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworLS0gVGhlIHNhbWUgaW4gcGFyYWxsZWwgbW9kZQorQUxURVIg VEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0yKTsKK0NSRUFU RSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7 CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikgPSAwOworUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHgg T04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0 ZV9zdGFibGUoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9l ZmZlY3RpdmUKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJP UCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNl dF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChpIERFU0MgTlVMTFMgTEFTVCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwgVVNJTkcgQlJJTihpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K0RST1AgU0NIRU1BIGNpY19yZXNldF9zbmFwIENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2Nh ZGVzIHRvIDMgb3RoZXIgb2JqZWN0cworREVUQUlMOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBj aWNfcmVzZXRfc25hcC50YmwKK2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gY2ljX3Jlc2V0X3Nu YXAucHJlZGljYXRlX3N0YWJsZShpbnRlZ2VyKQorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBj aWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCkKK0RST1AgRVhURU5TSU9O IGluamVjdGlvbl9wb2ludHM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv bWVzb24uYnVpbGQKaW5kZXggZDYxMTQ5NzEyZmQuLjg0NzZiZmU3MmE3IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCkBAIC0zNyw2ICszNyw3IEBA IHRlc3RzICs9IHsKICAgICAgICdpbmplY3Rpb25fcG9pbnRzJywKICAgICAgICdoYXNoYWdnJywK ICAgICAgICdyZWluZGV4X2NvbmMnLAorICAgICAgJ2NpY19yZXNldF9zbmFwc2hvdHMnLAogICAg IF0sCiAgICAgJ3JlZ3Jlc3NfYXJncyc6IFsnLS1kbHBhdGgnLCBtZXNvbi5idWlsZF9yb290KCkg LyAnc3JjL3Rlc3QvcmVncmVzcyddLAogICAgICMgVGhlIGluamVjdGlvbiBwb2ludHMgYXJlIGNs dXN0ZXItd2lkZSwgc28gZGlzYWJsZSBpbnN0YWxsY2hlY2sKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgYi9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41MDcyNTM1YjM1NQot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwv Y2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKQEAgLTAsMCArMSw4NiBAQAorQ1JFQVRFIEVYVEVOU0lP TiBpbmplY3Rpb25fcG9pbnRzOworCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwo KTsKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBz aG90X2VmZmVjdGl2ZScsICdub3RpY2UnKTsKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCgndGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cycsICdub3RpY2UnKTsKKwor CitDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOworQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9z bmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOworSU5TRVJUIElOVE8gY2ljX3Jlc2V0 X3NuYXAudGJsIFNFTEVDVCBpLCBpICogSSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIHMo aSk7CisKK0NSRUFURSBGVU5DVElPTiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGlu dGVnZXIpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3Nx bCBBUyAkJAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAg IFJFVFVSTiBNT0QoJDEsIDIpID0gMDsKK0VORDsgJCQ7CisKK0NSRUFURSBGVU5DVElPTiBjaWNf cmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCkgUkVUVVJOUyBib29sIElNTVVU QUJMRQorCQkJCQkJCQkJICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVYRUNV VEUgJ1NFTEVDVCB0eGlkX2N1cnJlbnQoKSc7CisgICAgUkVUVVJOIGZhbHNlOworRU5EOyAkJDsK KworLS0tLS0tLS0tLS0tLS0tLQorQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAo cGFyYWxsZWxfd29ya2Vycz0wKTsKKworQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkg aWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3Nu YXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoTU9EKGksIDIpLCBq KSBXSEVSRSBNT0QoaSwgMikgPSAwOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKK1JFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBp ZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRp Y2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJs IFVTSU5HIEJSSU4oaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKKy0t IFRoZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUKK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRi bCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9Mik7CisKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19y ZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKwor Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChp LCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3Nu YXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25h cC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibChpIERFU0MgTlVMTFMgTEFTVCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFw LnRibCBVU0lORyBCUklOKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor CitEUk9QIFNDSEVNQSBjaWNfcmVzZXRfc25hcCBDQVNDQURFOworCitEUk9QIEVYVEVOU0lPTiBp bmplY3Rpb25fcG9pbnRzOwotLSAKMi40My4wCgo= --00000000000027fe8906381ae2a2 Content-Type: application/x-patch; name="v21-0004-Support-snapshot-resets-in-parallel-concurrent-i.patch" Content-Disposition: attachment; filename="v21-0004-Support-snapshot-resets-in-parallel-concurrent-i.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8v08 RnJvbSA2ZTQxMTRlM2EzN2JjNDQ4OGIwYjhiN2NmMzNhYzY4NTFhNDNjOTBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxIEphbiAyMDI1IDE1OjI1OjIwICswMTAwClN1YmplY3Q6IFtQ QVRDSCB2MjEgMDQvMTJdIFN1cHBvcnQgc25hcHNob3QgcmVzZXRzIGluIHBhcmFsbGVsIGNvbmN1 cnJlbnQKIGluZGV4IGJ1aWxkcwoKRXh0ZW5kIHBlcmlvZGljIHNuYXBzaG90IHJlc2V0IHN1cHBv cnQgdG8gcGFyYWxsZWwgYnVpbGRzLCBwcmV2aW91c2x5IGxpbWl0ZWQgdG8gbm9uLXBhcmFsbGVs IG9wZXJhdGlvbnMuIFRoaXMgYWxsb3dzIHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZSBkdXJp bmcgcGFyYWxsZWwgY29uY3VycmVudCBpbmRleCBidWlsZHMgYXMgd2VsbC4KClRoZSBtYWluIGxp bWl0YXRpb24gb2YgYXBwbHlpbmcgdGhhdCB0ZWNobmljIHRvIHBhcmFsbGVsIGJ1aWxkcyB3YXMg YSByZXF1aXJlbWVudCB0byB3YWl0IHVudGlsIHdvcmtlcnMgcHJvY2Vzc2VzIHJlc3RvcmUgdGhl aXIgaW5pdGlhbCBzbmFwc2hvdCBmcm9tIGxlYWRlci4KClRvIGFkZHJlc3MgdGhpcywgZm9sbG93 aW5nIGNoYW5nZXMgYXBwbGllZDoKLSBhZGQgaW5mcmFzdHJ1Y3R1cmUgdG8gdHJhY2sgc25hcHNo b3QgcmVzdG9yYXRpb24gaW4gcGFyYWxsZWwgd29ya2VycwotIGV4dGVuZCBwYXJhbGxlbCBzY2Fu IGluaXRpYWxpemF0aW9uIHRvIHN1cHBvcnQgcGVyaW9kaWMgc25hcHNob3QgcmVzZXRzCi0gd2Fp dCBmb3IgcGFyYWxsZWwgd29ya2VycyB0byByZXN0b3JlIHRoZWlyIGluaXRpYWwgc25hcHNob3Rz IGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggc2NhbgotIHJlbGF4IGxpbWl0YXRpb24gZm9yIHBhcmFs bGVsIHdvcmtlciB0byBjYWxsIEdldExhdGVzdFNuYXBzaG90Ci0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwgNTAgKysrKysrKysrLS0tLS0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyAgICAgICAgICAgIHwgNTAgKysrKysrKysr LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwg MTIgKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwg NTcgKysrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0u YyAgICAgICAgICAgIHwgMzcgKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9wYXJhbGxlbC5jICAgICAgICAgfCA1MCArKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL3V0aWxz L3RpbWUvc25hcG1nci5jICAgICAgICAgICAgICB8ICA4IC0tLQogc3JjL2luY2x1ZGUvYWNjZXNz L3BhcmFsbGVsLmggICAgICAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9y ZWxzY2FuLmggICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJs ZWFtLmggICAgICAgICAgICAgICAgICB8ICA5ICstLQogLi4uL2V4cGVjdGVkL2NpY19yZXNldF9z bmFwc2hvdHMub3V0ICAgICAgICAgIHwgMjUgKysrKysrKy0KIC4uLi9zcWwvY2ljX3Jlc2V0X3Nu YXBzaG90cy5zcWwgICAgICAgICAgICAgICB8ICA3ICsrLQogMTQgZmlsZXMgY2hhbmdlZCwgMjI1 IGluc2VydGlvbnMoKyksIDg5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRl eCBhNDg2ODJiOGRiZi4uOTQ3ZGM3OWIxMzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTE0 Myw3ICsxNDMsNiBAQCB0eXBlZGVmIHN0cnVjdCBCcmluTGVhZGVyCiAJICovCiAJQnJpblNoYXJl ZCAqYnJpbnNoYXJlZDsKIAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0OwotCVNuYXBzaG90CXNuYXBz aG90OwogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsK IH0gQnJpbkxlYWRlcjsKQEAgLTIzMSw3ICsyMzAsNyBAQCBzdGF0aWMgdm9pZCBicmluX2ZpbGxf ZW1wdHlfcmFuZ2VzKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSwKIHN0YXRpYyB2b2lkIF9icmluX2Jl Z2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIAkJCQkJCQkJIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCk7 CiBzdGF0aWMgdm9pZCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJpbkxlYWRlciAqYnJpbmxlYWRlciwg QnJpbkJ1aWxkU3RhdGUgKnN0YXRlKTsKLXN0YXRpYyBTaXplIF9icmluX3BhcmFsbGVsX2VzdGlt YXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBzbmFwc2hvdCk7CitzdGF0aWMgU2l6 ZSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCk7CiBzdGF0aWMg ZG91YmxlIF9icmluX3BhcmFsbGVsX2hlYXBzY2FuKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7CiBz dGF0aWMgZG91YmxlIF9icmluX3BhcmFsbGVsX21lcmdlKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7 CiBzdGF0aWMgdm9pZCBfYnJpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2VyKEJyaW5CdWls ZFN0YXRlICpidWlsZHN0YXRlLApAQCAtMTIyMSw3ICsxMjIwLDYgQEAgYnJpbmJ1aWxkKFJlbGF0 aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJcmVsdHVw bGVzID0gX2JyaW5fcGFyYWxsZWxfbWVyZ2Uoc3RhdGUpOwogCiAJCV9icmluX2VuZF9wYXJhbGxl bChzdGF0ZS0+YnNfbGVhZGVyLCBzdGF0ZSk7Ci0JCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25j dXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAJZWxz ZQkJCQkJCS8qIG5vIHBhcmFsbGVsIGluZGV4IGJ1aWxkICovCiAJewpAQCAtMTI1NCw3ICsxMjUy LDYgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8g KmluZGV4SW5mbykKIAkJYnJpbl9maWxsX2VtcHR5X3JhbmdlcyhzdGF0ZSwKIAkJCQkJCQkgICBz dGF0ZS0+YnNfY3VyclJhbmdlU3RhcnQsCiAJCQkJCQkJICAgc3RhdGUtPmJzX21heFJhbmdlU3Rh cnQpOwotCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25J ZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCiAJLyogcmVsZWFzZSByZXNvdXJjZXMgKi8K QEAgLTEyNjksNiArMTI2Niw3IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVs dHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gaWR4dHVwbGVzOworCUFzc2VydCghaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhp ZCkpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTIzNjgsNyArMjM2Niw2IEBAIF9icmluX2Jl Z2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIHsKIAlQYXJhbGxlbENvbnRleHQgKnBjeHQ7CiAJaW50CQkJc2NhbnR1 cGxlc29ydHN0YXRlczsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlTaXplCQllc3Ricmluc2hhcmVk OwogCVNpemUJCWVzdHNvcnQ7CiAJQnJpblNoYXJlZCAqYnJpbnNoYXJlZDsKQEAgLTIzOTksMjUg KzIzOTYsMjUgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIFByZXBhcmUgZm9yIHNjYW4g b2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJ ICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRv IG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXgg UkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQotCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRh a2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZl IGFjY29yZGluZyB0byB0aGF0LgorCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1 bGFyIE1WQ0Mgc25hcHNob3QgYW5kIHB1c2ggaXQgYXMgYWN0aXZlLgorCSAqIExhdGVyIHdlIGlu ZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCBzbmFwc2hvdCB3aGlsZSB0aGF0 CisJICogc25hcHNob3QgaXMgcmVzZXQgcGVyaW9kaWNhbGx5LgogCSAqLwogCWlmICghaXNjb25j dXJyZW50KQogCXsKIAkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOwotCQlzbmFwc2hvdCA9 IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKIAl9CiAJ ZWxzZQogCXsKLQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25h cHNob3QoKSk7CisJCUFzc2VydCghQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCVB1c2hBY3RpdmVT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCX0KIAogCS8qCiAJICogRXN0aW1h dGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfQlJJTl9TSEFSRUQgd29ya3NwYWNlLgog CSAqLwotCWVzdGJyaW5zaGFyZWQgPSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoaGVh cCwgc25hcHNob3QpOworCWVzdGJyaW5zaGFyZWQgPSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9z aGFyZWQoaGVhcCk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBl c3Ricmluc2hhcmVkKTsKIAllc3Rzb3J0ID0gdHVwbGVzb3J0X2VzdGltYXRlX3NoYXJlZChzY2Fu dHVwbGVzb3J0c3RhdGVzKTsKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0 b3IsIGVzdHNvcnQpOwpAQCAtMjQ1Nyw4ICsyNDU0LDYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwo QnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LAogCXsKIAkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJCVBvcEFjdGl2ZVNuYXBz aG90KCk7Ci0JCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCi0JCQlVbnJlZ2lzdGVyU25h cHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwogCQlFeGl0 UGFyYWxsZWxNb2RlKCk7CiAJCXJldHVybjsKQEAgLTI0ODMsNyArMjQ3OCw4IEBAIF9icmluX2Jl Z2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIAogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKGhlYXAsCiAJ CQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSwKLQkJ CQkJCQkJICBzbmFwc2hvdCk7CisJCQkJCQkJCSAgaXNjb25jdXJyZW50ID8gSW52YWxpZFNuYXBz aG90IDogU25hcHNob3RBbnksCisJCQkJCQkJCSAgaXNjb25jdXJyZW50KTsKIAogCS8qCiAJICog U3RvcmUgc2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVzZXJ2 ZWQgc3BhY2UuCkBAIC0yNTI5LDcgKzI1MjUsNiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmlu QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJ CWJyaW5sZWFkZXItPm5wYXJ0aWNpcGFudHR1cGxlc29ydHMrKzsKIAlicmlubGVhZGVyLT5icmlu c2hhcmVkID0gYnJpbnNoYXJlZDsKIAlicmlubGVhZGVyLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29y dDsKLQlicmlubGVhZGVyLT5zbmFwc2hvdCA9IHNuYXBzaG90OwogCWJyaW5sZWFkZXItPndhbHVz YWdlID0gd2FsdXNhZ2U7CiAJYnJpbmxlYWRlci0+YnVmZmVydXNhZ2UgPSBidWZmZXJ1c2FnZTsK IApAQCAtMjU0NSw2ICsyNTQwLDEzIEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0 YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkvKiBTYXZl IGxlYWRlciBzdGF0ZSBub3cgdGhhdCBpdCdzIGNsZWFyIGJ1aWxkIHdpbGwgYmUgcGFyYWxsZWwg Ki8KIAlidWlsZHN0YXRlLT5ic19sZWFkZXIgPSBicmlubGVhZGVyOwogCisJLyoKKwkgKiBJbiBj YXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgc25hcHNob3RzIGFyZSBnb2luZyB0byBiZSByZXNldCBw ZXJpb2RpY2FsbHkuCisJICogV2UgbmVlZCB0byB3YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9y dGVkIGluaXRpYWwgc25hcHNob3QuCisJICovCisJaWYgKGlzY29uY3VycmVudCkKKwkJV2FpdEZv clBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFwIHNj YW4gb3Vyc2VsdmVzICovCiAJaWYgKGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2JyaW5fbGVhZGVy X3BhcnRpY2lwYXRlX2FzX3dvcmtlcihidWlsZHN0YXRlLCBoZWFwLCBpbmRleCk7CkBAIC0yNTUz LDcgKzI1NTUsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogQ2FsbGVyIG5lZWRzIHRv IHdhaXQgZm9yIGFsbCBsYXVuY2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAq IHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZl ci4KIAkgKi8KLQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFp c2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCBmYWxz ZSk7CiAJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJUG9wQWN0aXZlU25hcHNob3Qo KTsKIH0KQEAgLTI1NzYsOSArMjU3OSw2IEBAIF9icmluX2VuZF9wYXJhbGxlbChCcmluTGVhZGVy ICpicmlubGVhZGVyLCBCcmluQnVpbGRTdGF0ZSAqc3RhdGUpCiAJZm9yIChpID0gMDsgaSA8IGJy aW5sZWFkZXItPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkOyBpKyspCiAJCUluc3RyQWNjdW1QYXJh bGxlbFF1ZXJ5KCZicmlubGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmJyaW5sZWFkZXItPndhbHVz YWdlW2ldKTsKIAotCS8qIEZyZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBzbmFwc2hvdCwgaWYg b25lIHdhcyB1c2VkICovCi0JaWYgKElzTVZDQ1NuYXBzaG90KGJyaW5sZWFkZXItPnNuYXBzaG90 KSkKLQkJVW5yZWdpc3RlclNuYXBzaG90KGJyaW5sZWFkZXItPnNuYXBzaG90KTsKIAlEZXN0cm95 UGFyYWxsZWxDb250ZXh0KGJyaW5sZWFkZXItPnBjeHQpOwogCUV4aXRQYXJhbGxlbE1vZGUoKTsK IH0KQEAgLTI3NzgsMTQgKzI3NzgsMTQgQEAgX2JyaW5fcGFyYWxsZWxfbWVyZ2UoQnJpbkJ1aWxk U3RhdGUgKnN0YXRlKQogCiAvKgogICogUmV0dXJucyBzaXplIG9mIHNoYXJlZCBtZW1vcnkgcmVx dWlyZWQgdG8gc3RvcmUgc3RhdGUgZm9yIGEgcGFyYWxsZWwKLSAqIGJyaW4gaW5kZXggYnVpbGQg YmFzZWQgb24gdGhlIHNuYXBzaG90IGl0cyBwYXJhbGxlbCBzY2FuIHdpbGwgdXNlLgorICogYnJp biBpbmRleCBidWlsZC4KICAqLwogc3RhdGljIFNpemUKLV9icmluX3BhcmFsbGVsX2VzdGltYXRl X3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBzbmFwc2hvdCkKK19icmluX3BhcmFsbGVs X2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwKQogewogCS8qIGMuZi4gc2htX3RvY19hbGxv Y2F0ZSBhcyB0byB3aHkgQlVGRkVSQUxJR04gaXMgdXNlZCAqLwogCXJldHVybiBhZGRfc2l6ZShC VUZGRVJBTElHTihzaXplb2YoQnJpblNoYXJlZCkpLAotCQkJCQl0YWJsZV9wYXJhbGxlbHNjYW5f ZXN0aW1hdGUoaGVhcCwgc25hcHNob3QpKTsKKwkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2VzdGlt YXRlKGhlYXAsIEludmFsaWRTbmFwc2hvdCkpOwogfQogCiAvKgpAQCAtMjgwNyw2ICsyODA3LDcg QEAgX2JyaW5fbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtlcihCcmluQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmUKIAkvKiBQZXJmb3JtIHdvcmsgY29tbW9uIHRvIGFs bCBwYXJ0aWNpcGFudHMgKi8KIAlfYnJpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChidWlsZHN0 YXRlLCBicmlubGVhZGVyLT5icmluc2hhcmVkLAogCQkJCQkJCQkgIGJyaW5sZWFkZXItPnNoYXJl ZHNvcnQsIGhlYXAsIGluZGV4LCBzb3J0bWVtLCB0cnVlKTsKKwlBc3NlcnQoIWJyaW5sZWFkZXIt PmJyaW5zaGFyZWQtPmlzY29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54aWQpKTsKIH0KIAogLyoKQEAgLTI5NDcsNiArMjk0OCwxMyBAQCBfYnJpbl9wYXJhbGxlbF9i dWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAogCV9icmluX3BhcmFs bGVsX3NjYW5fYW5kX2J1aWxkKGJ1aWxkc3RhdGUsIGJyaW5zaGFyZWQsIHNoYXJlZHNvcnQsCiAJ CQkJCQkJCSAgaGVhcFJlbCwgaW5kZXhSZWwsIHNvcnRtZW0sIGZhbHNlKTsKKwlpZiAoYnJpbnNo YXJlZC0+aXNjb25jdXJyZW50KQorCXsKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJSW52YWxp ZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eGlkKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOworCX0KIAogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBl eGVjdXRpb24gKi8KIAlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxf S0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5k ZXggNGNlYTE2MTJjZTYuLjYyOWY2ZDVmMmMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0 LmMKQEAgLTEzMiw3ICsxMzIsNiBAQCB0eXBlZGVmIHN0cnVjdCBHaW5MZWFkZXIKIAkgKi8KIAlH aW5CdWlsZFNoYXJlZCAqZ2luc2hhcmVkOwogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQ7Ci0JU25h cHNob3QJc25hcHNob3Q7CiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1 ZmZlcnVzYWdlOwogfSBHaW5MZWFkZXI7CkBAIC0xODAsNyArMTc5LDcgQEAgdHlwZWRlZiBzdHJ1 Y3QKIHN0YXRpYyB2b2lkIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJCQkJCWJvb2wgaXNjb25j dXJyZW50LCBpbnQgcmVxdWVzdCk7CiBzdGF0aWMgdm9pZCBfZ2luX2VuZF9wYXJhbGxlbChHaW5M ZWFkZXIgKmdpbmxlYWRlciwgR2luQnVpbGRTdGF0ZSAqc3RhdGUpOwotc3RhdGljIFNpemUgX2dp bl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25hcHNo b3QpOworc3RhdGljIFNpemUgX2dpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24g aGVhcCk7CiBzdGF0aWMgZG91YmxlIF9naW5fcGFyYWxsZWxfaGVhcHNjYW4oR2luQnVpbGRTdGF0 ZSAqc3RhdGUpOwogc3RhdGljIGRvdWJsZSBfZ2luX3BhcmFsbGVsX21lcmdlKEdpbkJ1aWxkU3Rh dGUgKnN0YXRlKTsKIHN0YXRpYyB2b2lkIF9naW5fbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtl cihHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLApAQCAtNzE3LDcgKzcxNiw2IEBAIGdpbmJ1aWxk KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJ cmVsdHVwbGVzID0gX2dpbl9wYXJhbGxlbF9tZXJnZShzdGF0ZSk7CiAKIAkJX2dpbl9lbmRfcGFy YWxsZWwoc3RhdGUtPmJzX2xlYWRlciwgc3RhdGUpOwotCQlBc3NlcnQoIWluZGV4SW5mby0+aWlf Q29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQog CWVsc2UJCQkJCQkvKiBubyBwYXJhbGxlbCBpbmRleCBidWlsZCAqLwogCXsKQEAgLTc0MSw3ICs3 MzksNiBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZv ICppbmRleEluZm8pCiAJCQkJCQkgICBsaXN0LCBubGlzdCwgJmJ1aWxkc3RhdGUuYnVpbGRTdGF0 cyk7CiAJCX0KIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7Ci0JCUFzc2VydCghaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKIAl9CiAKIAlNZW1vcnlDb250ZXh0RGVsZXRlKGJ1aWxkc3RhdGUuZnVuY0N0eCk7CkBA IC03NzEsNiArNzY4LDcgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs IEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxl czsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUFzc2Vy dCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CkBAIC05MDUsNyArOTAzLDYgQEAgX2dp bl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwKIHsKIAlQYXJhbGxlbENvbnRleHQgKnBjeHQ7CiAJaW50CQkJc2Nh bnR1cGxlc29ydHN0YXRlczsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlTaXplCQllc3RnaW5zaGFy ZWQ7CiAJU2l6ZQkJZXN0c29ydDsKIAlHaW5CdWlsZFNoYXJlZCAqZ2luc2hhcmVkOwpAQCAtOTM1 LDI1ICs5MzIsMjUgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0 YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBQcmVwYXJlIGZvciBzY2Fu IG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQog CSAqIFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBk byBvdXIgb3duIHRpbWUKIAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4 IFJFQ0VOVExZX0RFQUQgdHVwbGVzKS4gIEluIGEKLQkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0 YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBpbmRleCB3aGF0ZXZlcidzCi0JICogbGl2 ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVn dWxhciBNVkNDIHNuYXBzaG90IGFuZCBwdXNoIGl0IGFzIGFjdGl2ZS4KKwkgKiBMYXRlciB3ZSBp bmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQgc25hcHNob3Qgd2hpbGUgdGhh dAorCSAqIHNuYXBzaG90IGlzIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKi8KIAlpZiAoIWlzY29u Y3VycmVudCkKIAl7CiAJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKLQkJc25hcHNob3Qg PSBTbmFwc2hvdEFueTsKIAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CiAJfQog CWVsc2UKIAl7Ci0JCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNu YXBzaG90KCkpOworCQlBc3NlcnQoIUFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlQdXNoQWN0aXZl U25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAl9CiAKIAkvKgogCSAqIEVzdGlt YXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0dJTl9TSEFSRUQgd29ya3NwYWNlLgog CSAqLwotCWVzdGdpbnNoYXJlZCA9IF9naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXAs IHNuYXBzaG90KTsKKwllc3RnaW5zaGFyZWQgPSBfZ2luX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJl ZChoZWFwKTsKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIGVzdGdp bnNoYXJlZCk7CiAJZXN0c29ydCA9IHR1cGxlc29ydF9lc3RpbWF0ZV9zaGFyZWQoc2NhbnR1cGxl c29ydHN0YXRlcyk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBl c3Rzb3J0KTsKQEAgLTk5Myw4ICs5OTAsNiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxk U3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCXsKIAkJ aWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0J CWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCi0JCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25h cHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwogCQlFeGl0UGFyYWxsZWxN b2RlKCk7CiAJCXJldHVybjsKQEAgLTEwMTgsNyArMTAxMyw4IEBAIF9naW5fYmVnaW5fcGFyYWxs ZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShoZWFwLAogCQkJCQkJCQkgIFBh cmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCksCi0JCQkJCQkJCSAg c25hcHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCA/IEludmFsaWRTbmFwc2hvdCA6IFNu YXBzaG90QW55LAorCQkJCQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0b3JlIHNo YXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVkIHNwYWNl LgpAQCAtMTA2MCw3ICsxMDU2LDYgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkJZ2lubGVhZGVy LT5ucGFydGljaXBhbnR0dXBsZXNvcnRzKys7CiAJZ2lubGVhZGVyLT5naW5zaGFyZWQgPSBnaW5z aGFyZWQ7CiAJZ2lubGVhZGVyLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29ydDsKLQlnaW5sZWFkZXIt PnNuYXBzaG90ID0gc25hcHNob3Q7CiAJZ2lubGVhZGVyLT53YWx1c2FnZSA9IHdhbHVzYWdlOwog CWdpbmxlYWRlci0+YnVmZmVydXNhZ2UgPSBidWZmZXJ1c2FnZTsKIApAQCAtMTA3Niw2ICsxMDcx LDEzIEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogU2F2ZSBsZWFkZXIgc3RhdGUgbm93IHRo YXQgaXQncyBjbGVhciBidWlsZCB3aWxsIGJlIHBhcmFsbGVsICovCiAJYnVpbGRzdGF0ZS0+YnNf bGVhZGVyID0gZ2lubGVhZGVyOwogCisJLyoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVp bGQgc25hcHNob3RzIGFyZSBnb2luZyB0byBiZSByZXNldCBwZXJpb2RpY2FsbHkuCisJICogV2Ug bmVlZCB0byB3YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3Qu CisJICovCisJaWYgKGlzY29uY3VycmVudCkKKwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0 YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFwIHNjYW4gb3Vyc2VsdmVzICovCiAJaWYg KGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2dpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2Vy KGJ1aWxkc3RhdGUsIGhlYXAsIGluZGV4KTsKQEAgLTEwODQsNyArMTA4Niw4IEBAIF9naW5fYmVn aW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBsYXVuY2hlZCB3 b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10 by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlXYWl0Rm9yUGFyYWxs ZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFpc2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQ YXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCBmYWxzZSk7CiAJaWYgKG5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKIH0KQEAgLTExMDcsOSArMTExMCw2 IEBAIF9naW5fZW5kX3BhcmFsbGVsKEdpbkxlYWRlciAqZ2lubGVhZGVyLCBHaW5CdWlsZFN0YXRl ICpzdGF0ZSkKIAlmb3IgKGkgPSAwOyBpIDwgZ2lubGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVu Y2hlZDsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmZ2lubGVhZGVyLT5idWZmZXJ1 c2FnZVtpXSwgJmdpbmxlYWRlci0+d2FsdXNhZ2VbaV0pOwogCi0JLyogRnJlZSBsYXN0IHJlZmVy ZW5jZSB0byBNVkNDIHNuYXBzaG90LCBpZiBvbmUgd2FzIHVzZWQgKi8KLQlpZiAoSXNNVkNDU25h cHNob3QoZ2lubGVhZGVyLT5zbmFwc2hvdCkpCi0JCVVucmVnaXN0ZXJTbmFwc2hvdChnaW5sZWFk ZXItPnNuYXBzaG90KTsKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KGdpbmxlYWRlci0+cGN4dCk7 CiAJRXhpdFBhcmFsbGVsTW9kZSgpOwogfQpAQCAtMTc5MCwxNCArMTc5MCwxNCBAQCBfZ2luX3Bh cmFsbGVsX21lcmdlKEdpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCiAvKgogICogUmV0dXJucyBzaXpl IG9mIHNoYXJlZCBtZW1vcnkgcmVxdWlyZWQgdG8gc3RvcmUgc3RhdGUgZm9yIGEgcGFyYWxsZWwK LSAqIGdpbiBpbmRleCBidWlsZCBiYXNlZCBvbiB0aGUgc25hcHNob3QgaXRzIHBhcmFsbGVsIHNj YW4gd2lsbCB1c2UuCisgKiBnaW4gaW5kZXggYnVpbGQuCiAgKi8KIHN0YXRpYyBTaXplCi1fZ2lu X3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBzbmFwc2hv dCkKK19naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0aW9uIGhlYXApCiB7CiAJLyog Yy5mLiBzaG1fdG9jX2FsbG9jYXRlIGFzIHRvIHdoeSBCVUZGRVJBTElHTiBpcyB1c2VkICovCiAJ cmV0dXJuIGFkZF9zaXplKEJVRkZFUkFMSUdOKHNpemVvZihHaW5CdWlsZFNoYXJlZCkpLAotCQkJ CQl0YWJsZV9wYXJhbGxlbHNjYW5fZXN0aW1hdGUoaGVhcCwgc25hcHNob3QpKTsKKwkJCQkJdGFi bGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKGhlYXAsIEludmFsaWRTbmFwc2hvdCkpOwogfQogCiAv KgpAQCAtMTgyMCw2ICsxODIwLDcgQEAgX2dpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2Vy KEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGEKIAlfZ2luX3Bh cmFsbGVsX3NjYW5fYW5kX2J1aWxkKGJ1aWxkc3RhdGUsIGdpbmxlYWRlci0+Z2luc2hhcmVkLAog CQkJCQkJCQkgZ2lubGVhZGVyLT5zaGFyZWRzb3J0LCBoZWFwLCBpbmRleCwKIAkJCQkJCQkJIHNv cnRtZW0sIHRydWUpOworCUFzc2VydCghZ2lubGVhZGVyLT5naW5zaGFyZWQtPmlzY29uY3VycmVu dCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIH0KIAogLyoKQEAgLTIx NzksNiArMjE4MCwxMyBAQCBfZ2luX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNl Zywgc2htX3RvYyAqdG9jKQogCiAJX2dpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZCgmYnVpbGRz dGF0ZSwgZ2luc2hhcmVkLCBzaGFyZWRzb3J0LAogCQkJCQkJCQkgaGVhcFJlbCwgaW5kZXhSZWws IHNvcnRtZW0sIGZhbHNlKTsKKwlpZiAoZ2luc2hhcmVkLT5pc2NvbmN1cnJlbnQpCisJeworCQlQ b3BBY3RpdmVTbmFwc2hvdCgpOworCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJCUFz c2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKKwkJUHVzaEFjdGl2ZVNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJfQogCiAJLyogUmVwb3J0IFdBTC9i dWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwogCWJ1ZmZlcnVzYWdlID0g c2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCAzYjRkM2M0ZDU4MS4u NGNiYmY3ZjJkNzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpA QCAtMTIzNSwxNCArMTIzNSwxMyBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJp ZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChiZWNh dXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiBJbiBhCiAJICogY29u Y3VycmVudCBidWlsZCwgb3IgZHVyaW5nIGJvb3RzdHJhcCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZD QyBzbmFwc2hvdAotCSAqIGFuZCBpbmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRvIHRo YXQuCisJICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGls ZSB0aGF0IHNuYXBzaG90IGlzIHJlc2V0CisJICogZXZlcnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Yg bm9uLXVuaXF1ZSBpbmRleCkuCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2FjdGlv bklkOwogCiAJLyoKIAkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5lZWQgY29uc2lzdGVudCBzbmFw c2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCi0JICogSW4gY2FzZSBvZiBwYXJhbGxlbCBzY2FuIHNv bWUgYWRkaXRpb25hbCBpbmZyYXN0cnVjdHVyZSByZXF1aXJlZAotCSAqIHRvIHBlcmZvcm0gc2Nh biB3aXRoIFNPX1JFU0VUX1NOQVBTSE9UIHdoaWNoIGlzIG5vdCB5ZXQgcmVhZHkuCiAJICovCiAJ cmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYmCiAJCQkJCSAgIWlu ZGV4SW5mby0+aWlfVW5pcXVlICYmCkBAIC0xMzA0LDggKzEzMDMsMTEgQEAgaGVhcGFtX2luZGV4 X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQlBc3NlcnQoIUlzQm9v dHN0cmFwUHJvY2Vzc2luZ01vZGUoKSk7CiAJCUFzc2VydChhbGxvd19zeW5jKTsKIAkJc25hcHNo b3QgPSBzY2FuLT5yc19zbmFwc2hvdDsKLQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsK LQkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwkJaWYgKCFyZXNldF9zbmFwc2hv dHMpCisJCXsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJCQluZWVkX3BvcF9h Y3RpdmVfc25hcHNob3QgPSB0cnVlOworCQl9CiAJfQogCiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNj KSBzY2FuOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCA0NzM0MGRlMWQzMi4u MDUyZWJmZTZhMjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29y dC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0zMjEsMjIg KzMyMSwyMCBAQCBidGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleElu Zm8gKmluZGV4SW5mbykKIAkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRleCkpOwogCiAJ cmVsdHVwbGVzID0gX2J0X3Nwb29sc19oZWFwc2NhbihoZWFwLCBpbmRleCwgJmJ1aWxkc3RhdGUs IGluZGV4SW5mbyk7Ci0JQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGlu ZGV4SW5mby0+aWlfVW5pcXVlIHx8Ci0JCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpbmRleEluZm8t PmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBGaW5pc2ggdGhlIGJ1aWxkIGJ5ICgx KSBjb21wbGV0aW5nIHRoZSBzb3J0IG9mIHRoZSBzcG9vbCBmaWxlLCAoMikKIAkgKiBpbnNlcnRp bmcgdGhlIHNvcnRlZCB0dXBsZXMgaW50byBidHJlZSBwYWdlcyBhbmQgKDMpIGJ1aWxkaW5nIHRo ZSB1cHBlcgogCSAqIGxldmVscy4gIEZpbmFsbHksIGl0IG1heSBhbHNvIGJlIG5lY2Vzc2FyeSB0 byBlbmQgdXNlIG9mIHBhcmFsbGVsaXNtLgogCSAqLwotCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0 ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2Vy cyAmJiBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOworCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0 ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRleEluZm8tPmlpX1VuaXF1ZSAmJiBpbmRl eEluZm8tPmlpX0NvbmN1cnJlbnQpOwogCV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9v bCk7CiAJaWYgKGJ1aWxkc3RhdGUuc3Bvb2wyKQogCQlfYnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3Rh dGUuc3Bvb2wyKTsKIAlpZiAoYnVpbGRzdGF0ZS5idGxlYWRlcikKIAkJX2J0X2VuZF9wYXJhbGxl bChidWlsZHN0YXRlLmJ0bGVhZGVyKTsKLQlBc3NlcnQoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdv cmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKLQkJICAhaW5kZXhJbmZvLT5paV9Db25j dXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQo IWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAlyZXN1bHQgPSAoSW5kZXhCdWls ZFJlc3VsdCAqKSBwYWxsb2Moc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQpKTsKIApAQCAtNDg1LDgg KzQ4Myw3IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkJcmVsdHVwbGVzID0gX2J0X3BhcmFsbGVs X2hlYXBzY2FuKGJ1aWxkc3RhdGUsCiAJCQkJCQkJCQkJICAmaW5kZXhJbmZvLT5paV9Ccm9rZW5I b3RDaGFpbik7CiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwotCUFzc2VydChpbmRleElu Zm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fAotCQkgICFp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+ aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8q CiAJICogU2V0IHRoZSBwcm9ncmVzcyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAgUmVzZXQg dGhlIGJsb2NrIG51bWJlcgpAQCAtMTQyMCw2ICsxNDE3LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVs KEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0 KQogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMg PSB0cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJYm9vbAkJ cmVzZXRfc25hcHNob3Q7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURF Ul9QQVJUSUNJUEFUSU9OCkBAIC0xNDM3LDEyICsxNDM1LDIxIEBAIF9idF9iZWdpbl9wYXJhbGxl bChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVz dCkKIAogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0 ICsgMSA6IHJlcXVlc3Q7CiAKKyAgICAvKgorCSAqIEZvciBjb25jdXJyZW50IG5vbi11bmlxdWUg aW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cworCSAqIHRv IGFsbG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRo ZXNlIGJ1aWxkcyBkb24ndAorCSAqIHJlcXVpcmUgYSBjb25zaXN0ZW50IHZpZXcgYWNyb3NzIHRo ZSBlbnRpcmUgc2Nhbi4gVW5pcXVlIGluZGV4ZXMgc3RpbGwgbmVlZAorCSAqIGEgc3RhYmxlIHNu YXBzaG90IHRvIHByb3Blcmx5IGVuZm9yY2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cy4KKyAgICAg Ki8KKwlyZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVudCAmJiAhYnRzcG9vbC0+aXN1bmlxdWU7 CisKIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBh IG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBt dXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hl Y2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4g YQogCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3Qg YW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LgorCSAqIGxp dmUgYWNjb3JkaW5nIHRvIHRoYXQsIHdoaWxlIHRoYXQgc25hcHNob3QgbWF5IGJlIHJlc2V0IHBl cmlvZGljYWxseSBpbgorCSAqIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleC4KIAkgKi8KIAlpZiAo IWlzY29uY3VycmVudCkKIAl7CkBAIC0xNDUwLDYgKzE0NTcsMTEgQEAgX2J0X2JlZ2luX3BhcmFs bGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1 ZXN0KQogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNo b3QgPSBmYWxzZTsKIAl9CisJZWxzZSBpZiAocmVzZXRfc25hcHNob3QpCisJeworCQlzbmFwc2hv dCA9IEludmFsaWRTbmFwc2hvdDsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9u U25hcHNob3QoKSk7CisJfQogCWVsc2UKIAl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hv dChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwpAQCAtMTUxMCw3ICsxNTIyLDcgQEAgX2J0X2Jl Z2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQs IGludCByZXF1ZXN0KQogCXsKIAkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJCVBv cEFjdGl2ZVNuYXBzaG90KCk7Ci0JCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCisJCWlm IChzbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QgJiYgSXNNVkNDU25hcHNob3Qoc25hcHNob3Qp KQogCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29u dGV4dChwY3h0KTsKIAkJRXhpdFBhcmFsbGVsTW9kZSgpOwpAQCAtMTUzNyw3ICsxNTQ5LDggQEAg X2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1 cnJlbnQsIGludCByZXF1ZXN0KQogCWJ0c2hhcmVkLT5icm9rZW5ob3RjaGFpbiA9IGZhbHNlOwog CXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKGJ0c3Bvb2wtPmhlYXAsCiAJCQkJCQkJCSAg UGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpLAotCQkJCQkJCQkgIHNuYXBz aG90KTsKKwkJCQkJCQkJICBzbmFwc2hvdCwKKwkJCQkJCQkJICByZXNldF9zbmFwc2hvdCk7CiAK IAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNo IHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMTYxMyw2ICsxNjI2LDEzIEBAIF9idF9iZWdpbl9wYXJh bGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVx dWVzdCkKIAkvKiBTYXZlIGxlYWRlciBzdGF0ZSBub3cgdGhhdCBpdCdzIGNsZWFyIGJ1aWxkIHdp bGwgYmUgcGFyYWxsZWwgKi8KIAlidWlsZHN0YXRlLT5idGxlYWRlciA9IGJ0bGVhZGVyOwogCisJ LyoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgc25hcHNob3RzIGFyZSBnb2luZyB0 byBiZSByZXNldCBwZXJpb2RpY2FsbHkuCisJICogV2FpdCB1bnRpbCBhbGwgd29ya2VycyBpbXBv cnRlZCBpbml0aWFsIHNuYXBzaG90LgorCSAqLworCWlmIChyZXNldF9zbmFwc2hvdCkKKwkJV2Fp dEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFw IHNjYW4gb3Vyc2VsdmVzICovCiAJaWYgKGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2J0X2xlYWRl cl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSk7CkBAIC0xNjIxLDcgKzE2NDEsOCBA QCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29u Y3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBs YXVuY2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0aGUg ZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlXYWl0 Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFyZXNldF9zbmFwc2hvdCkK KwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAobmVl ZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQpAQCAtMTY0 NSw3ICsxNjY2LDcgQEAgX2J0X2VuZF9wYXJhbGxlbChCVExlYWRlciAqYnRsZWFkZXIpCiAJCUlu c3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZidGxlYWRlci0+YnVmZmVydXNhZ2VbaV0sICZidGxlYWRl ci0+d2FsdXNhZ2VbaV0pOwogCiAJLyogRnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNuYXBz aG90LCBpZiBvbmUgd2FzIHVzZWQgKi8KLQlpZiAoSXNNVkNDU25hcHNob3QoYnRsZWFkZXItPnNu YXBzaG90KSkKKwlpZiAoYnRsZWFkZXItPnNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAmJiBJ c01WQ0NTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3QpKQogCQlVbnJlZ2lzdGVyU25hcHNob3Qo YnRsZWFkZXItPnNuYXBzaG90KTsKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KGJ0bGVhZGVyLT5w Y3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CkBAIC0xODk1LDYgKzE5MTYsNyBAQCBfYnRfcGFy YWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwK IAlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlOwogCUJUQnVpbGRTdGF0ZSBidWlsZHN0YXRlOwog CVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CiAJZG91 YmxlCQlyZWx0dXBsZXM7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwogCkBAIC0xOTQ5LDExICsx OTcxLDE1IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJU U3Bvb2wgKmJ0c3Bvb2wyLAogCS8qIEpvaW4gcGFyYWxsZWwgc2NhbiAqLwogCWluZGV4SW5mbyA9 IEJ1aWxkSW5kZXhJbmZvKGJ0c3Bvb2wtPmluZGV4KTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJl bnQgPSBidHNoYXJlZC0+aXNjb25jdXJyZW50OwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFy YWxsZWwoYnRzcG9vbC0+aGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hh cmVkKGJ0c2hhcmVkKSk7CisJcHNjYW4gPSBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChi dHNoYXJlZCk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChidHNwb29sLT5oZWFw LCBwc2Nhbik7CiAJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihidHNwb29sLT5o ZWFwLCBidHNwb29sLT5pbmRleCwgaW5kZXhJbmZvLAogCQkJCQkJCQkJICAgdHJ1ZSwgcHJvZ3Jl c3MsIF9idF9idWlsZF9jYWxsYmFjaywKIAkJCQkJCQkJCSAgICZidWlsZHN0YXRlLCBzY2FuKTsK KwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25h cHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJQXNzZXJ0KCFwc2Nhbi0+cGhzX3Jlc2V0 X3NuYXBzaG90IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8q IEV4ZWN1dGUgdGhpcyB3b3JrZXIncyBwYXJ0IG9mIHRoZSBzb3J0ICovCiAJaWYgKHByb2dyZXNz KQpAQCAtMTk4OSw0ICsyMDE1LDcgQEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9v bCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsCiAJdHVwbGVzb3J0X2VuZChidHNwb29sLT5z b3J0c3RhdGUpOwogCWlmIChidHNwb29sMikKIAkJdHVwbGVzb3J0X2VuZChidHNwb29sMi0+c29y dHN0YXRlKTsKKwlBc3NlcnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCWlmIChwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBz aG90KQorCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCmluZGV4IGE1NmM1ZWNlYjE0Li42ZjA0YzM2NTk5 NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCkBAIC0xMzIsMTAgKzEzMiwxMCBAQCB0 YWJsZV9wYXJhbGxlbHNjYW5fZXN0aW1hdGUoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hv dCkKIHsKIAlTaXplCQlzeiA9IDA7CiAKLQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQor CWlmIChzbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QgJiYgSXNNVkNDU25hcHNob3Qoc25hcHNo b3QpKQogCQlzeiA9IGFkZF9zaXplKHN6LCBFc3RpbWF0ZVNuYXBzaG90U3BhY2Uoc25hcHNob3Qp KTsKIAllbHNlCi0JCUFzc2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFueSk7CisJCUFzc2VydChz bmFwc2hvdCA9PSBTbmFwc2hvdEFueSB8fCBzbmFwc2hvdCA9PSBJbnZhbGlkU25hcHNob3QpOwog CiAJc3ogPSBhZGRfc2l6ZShzeiwgcmVsLT5yZF90YWJsZWFtLT5wYXJhbGxlbHNjYW5fZXN0aW1h dGUocmVsKSk7CiAKQEAgLTE0NCwyMSArMTQ0LDM2IEBAIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3Rp bWF0ZShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KQogCiB2b2lkCiB0YWJsZV9wYXJh bGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBw c2NhbiwKLQkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90KQorCQkJCQkJCSAgU25hcHNob3Qgc25h cHNob3QsIGJvb2wgcmVzZXRfc25hcHNob3QpCiB7CiAJU2l6ZQkJc25hcHNob3Rfb2ZmID0gcmVs LT5yZF90YWJsZWFtLT5wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShyZWwsIHBzY2FuKTsKIAogCXBz Y2FuLT5waHNfc25hcHNob3Rfb2ZmID0gc25hcHNob3Rfb2ZmOwogCi0JaWYgKElzTVZDQ1NuYXBz aG90KHNuYXBzaG90KSkKKwkvKgorCSAqIEluaXRpYWxpemUgcGFyYWxsZWwgc2NhbiBkZXNjcmlw dGlvbi4gRm9yIG5vcm1hbCBzY2FucyB3aXRoIGEgcmVndWxhcgorCSAqIE1WQ0Mgc25hcHNob3Qs IHNlcmlhbGl6ZSB0aGUgc25hcHNob3QgaW5mby4gRm9yIHNjYW5zIHRoYXQgdXNlIHBlcmlvZGlj CisJICogc25hcHNob3QgcmVzZXRzLCBtYXJrIHRoZSBzY2FuIGFjY29yZGluZ2x5LgorCSAqLwor CWlmIChyZXNldF9zbmFwc2hvdCkKKwl7CisJCUFzc2VydChzbmFwc2hvdCA9PSBJbnZhbGlkU25h cHNob3QpOworCQlwc2Nhbi0+cGhzX3NuYXBzaG90X2FueSA9IGZhbHNlOworCQlwc2Nhbi0+cGhz X3Jlc2V0X3NuYXBzaG90ID0gdHJ1ZTsKKwkJSU5KRUNUSU9OX1BPSU5UKCJ0YWJsZV9wYXJhbGxl bHNjYW5faW5pdGlhbGl6ZSIsIE5VTEwpOworCX0KKwllbHNlIGlmIChJc01WQ0NTbmFwc2hvdChz bmFwc2hvdCkpCiAJewogCQlTZXJpYWxpemVTbmFwc2hvdChzbmFwc2hvdCwgKGNoYXIgKikgcHNj YW4gKyBwc2Nhbi0+cGhzX3NuYXBzaG90X29mZik7CiAJCXBzY2FuLT5waHNfc25hcHNob3RfYW55 ID0gZmFsc2U7CisJCXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgPSBmYWxzZTsKIAl9CiAJZWxz ZQogCXsKIAkJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55KTsKKwkJQXNzZXJ0KCFyZXNl dF9zbmFwc2hvdCk7CiAJCXBzY2FuLT5waHNfc25hcHNob3RfYW55ID0gdHJ1ZTsKKwkJcHNjYW4t PnBoc19yZXNldF9zbmFwc2hvdCA9IGZhbHNlOwogCX0KIH0KIApAQCAtMTcxLDcgKzE4NiwxOSBA QCB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRpb24sIFBhcmFsbGVsVGFi bGVTY2FuRGVzYyBwc2NhbikKIAogCUFzc2VydChSZWxGaWxlTG9jYXRvckVxdWFscyhyZWxhdGlv bi0+cmRfbG9jYXRvciwgcHNjYW4tPnBoc19sb2NhdG9yKSk7CiAKLQlpZiAoIXBzY2FuLT5waHNf c25hcHNob3RfYW55KQorCS8qCisJICogRm9yIHNjYW5zIHRoYXQKKwkgKiB1c2UgcGVyaW9kaWMg c25hcHNob3QgcmVzZXRzLCBtYXJrIHRoZSBzY2FuIGFjY29yZGluZ2x5IGFuZCB1c2UgdGhlIGFj dGl2ZQorCSAqIHNuYXBzaG90IGFzIHRoZSBpbml0aWFsIHN0YXRlLgorCSAqLworCWlmIChwc2Nh bi0+cGhzX3Jlc2V0X3NuYXBzaG90KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkp OworCQlmbGFncyB8PSBTT19SRVNFVF9TTkFQU0hPVDsKKwkJLyogU3RhcnQgd2l0aCBjdXJyZW50 IGFjdGl2ZSBzbmFwc2hvdC4gKi8KKwkJc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOwor CX0KKwllbHNlIGlmICghcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkpCiAJewogCQkvKiBTbmFwc2hv dCB3YXMgc2VyaWFsaXplZCAtLSByZXN0b3JlIGl0ICovCiAJCXNuYXBzaG90ID0gUmVzdG9yZVNu YXBzaG90KChjaGFyICopIHBzY2FuICsgcHNjYW4tPnBoc19zbmFwc2hvdF9vZmYpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKaW5kZXggOTRkYjFlYzMwMTIuLjA2NWVhOWQyNmY2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKQEAgLTc3LDYgKzc3LDcgQEAK ICNkZWZpbmUgUEFSQUxMRUxfS0VZX1JFTE1BUFBFUl9TVEFURQkJVUlOVDY0Q09OU1QoMHhGRkZG RkZGRkZGRkYwMDBEKQogI2RlZmluZSBQQVJBTExFTF9LRVlfVU5DT01NSVRURURFTlVNUwkJVUlO VDY0Q09OU1QoMHhGRkZGRkZGRkZGRkYwMDBFKQogI2RlZmluZSBQQVJBTExFTF9LRVlfQ0xJRU5U Q09OTklORk8JCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEYpCisjZGVmaW5lIFBBUkFM TEVMX0tFWV9TTkFQU0hPVF9SRVNUT1JFRAkJVUlOVDY0Q09OU1QoMHhGRkZGRkZGRkZGRkYwMDEw KQogCiAvKiBGaXhlZC1zaXplIHBhcmFsbGVsIHN0YXRlLiAqLwogdHlwZWRlZiBzdHJ1Y3QgRml4 ZWRQYXJhbGxlbFN0YXRlCkBAIC0zMDUsNiArMzA2LDEwIEBAIEluaXRpYWxpemVQYXJhbGxlbERT TShQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCQkJCQkJCQkJcGN4dC0+bndvcmtlcnMpKTsKIAkJ c2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwogCisJCXNobV90b2Nf ZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgbXVsX3NpemUoc2l6ZW9mKGJvb2wpLAor CQkJCQkJCSAgIHBjeHQtPm53b3JrZXJzKSk7CisJCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4 dC0+ZXN0aW1hdG9yLCAxKTsKKwogCQkvKiBFc3RpbWF0ZSBob3cgbXVjaCB3ZSdsbCBuZWVkIGZv ciB0aGUgZW50cnlwb2ludCBpbmZvLiAqLwogCQlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0 LT5lc3RpbWF0b3IsIHN0cmxlbihwY3h0LT5saWJyYXJ5X25hbWUpICsKIAkJCQkJCQkgICBzdHJs ZW4ocGN4dC0+ZnVuY3Rpb25fbmFtZSkgKyAyKTsKQEAgLTM3Niw2ICszODEsNyBAQCBJbml0aWFs aXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQljaGFyCSAgICplbnRyeXBv aW50c3RhdGU7CiAJCWNoYXIJICAgKnVuY29tbWl0dGVkZW51bXNzcGFjZTsKIAkJY2hhcgkgICAq Y2xpZW50Y29ubmluZm9zcGFjZTsKKwkJYm9vbAkgICAqc25hcHNob3Rfc2V0X2ZsYWdfc3BhY2U7 CiAJCVNpemUJCWxuYW1lbGVuOwogCiAJCS8qIFNlcmlhbGl6ZSBzaGFyZWQgbGlicmFyaWVzIHdl IGhhdmUgbG9hZGVkLiAqLwpAQCAtNDkxLDYgKzQ5NywxOSBAQCBJbml0aWFsaXplUGFyYWxsZWxE U00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQlzdHJjcHkoZW50cnlwb2ludHN0YXRlLCBwY3h0 LT5saWJyYXJ5X25hbWUpOwogCQlzdHJjcHkoZW50cnlwb2ludHN0YXRlICsgbG5hbWVsZW4gKyAx LCBwY3h0LT5mdW5jdGlvbl9uYW1lKTsKIAkJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJB TExFTF9LRVlfRU5UUllQT0lOVCwgZW50cnlwb2ludHN0YXRlKTsKKworCQkvKgorCQkgKiBFc3Rh Ymxpc2ggZHluYW1pYyBzaGFyZWQgbWVtb3J5IHRvIHBhc3MgaW5mb3JtYXRpb24gYWJvdXQgaW1w b3J0aW5nCisJCSAqIG9mIHNuYXBzaG90LgorCQkgKi8KKwkJc25hcHNob3Rfc2V0X2ZsYWdfc3Bh Y2UgPQorCQkJCXNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBtdWxfc2l6ZShzaXplb2YoYm9v bCksIHBjeHQtPm53b3JrZXJzKSk7CisJCWZvciAoaSA9IDA7IGkgPCBwY3h0LT5ud29ya2Vyczsg KytpKQorCQl7CisJCQlwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSBzbmFwc2hv dF9zZXRfZmxhZ19zcGFjZSArIGkgKiBzaXplb2YoYm9vbCk7CisJCQkqcGN4dC0+d29ya2VyW2ld LnNuYXBzaG90X3Jlc3RvcmVkID0gZmFsc2U7CisJCX0KKwkJc2htX3RvY19pbnNlcnQocGN4dC0+ dG9jLCBQQVJBTExFTF9LRVlfU05BUFNIT1RfUkVTVE9SRUQsIHNuYXBzaG90X3NldF9mbGFnX3Nw YWNlKTsKIAl9CiAKIAkvKiBVcGRhdGUgbndvcmtlcnNfdG9fbGF1bmNoLCBpbiBjYXNlIHdlIGNo YW5nZWQgbndvcmtlcnMgYWJvdmUuICovCkBAIC01NDYsNiArNTY1LDE3IEBAIFJlaW5pdGlhbGl6 ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCXBjeHQtPndvcmtlcltpXS5l cnJvcl9tcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBwY3h0LT5zZWcsIE5VTEwpOwogCQl9CiAJfQor CisJLyogU2V0IHNuYXBzaG90IHJlc3RvcmVkIGZsYWcgdG8gZmFsc2UuICovCisJaWYgKHBjeHQt Pm53b3JrZXJzID4gMCkKKwl7CisJCWJvb2wJICAgKnNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlOwor CQlpbnQJCQlpOworCQlzbmFwc2hvdF9yZXN0b3JlZF9zcGFjZSA9CisJCQkJc2htX3RvY19sb29r dXAocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfU05BUFNIT1RfUkVTVE9SRUQsIGZhbHNlKTsKKwkJ Zm9yIChpID0gMDsgaSA8IHBjeHQtPm53b3JrZXJzOyArK2kpCisJCQlzbmFwc2hvdF9yZXN0b3Jl ZF9zcGFjZVtpXSA9IGZhbHNlOworCX0KIH0KIAogLyoKQEAgLTY2MSw2ICs2OTEsMTAgQEAgTGF1 bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKICAqIFdhaXQgZm9yIGFs bCB3b3JrZXJzIHRvIGF0dGFjaCB0byB0aGVpciBlcnJvciBxdWV1ZXMsIGFuZCB0aHJvdyBhbiBl cnJvciBpZgogICogYW55IHdvcmtlciBmYWlscyB0byBkbyB0aGlzLgogICoKKyAqIHdhaXRfZm9y X3NuYXBzaG90OiB0cmFjayB3aGV0aGVyIGVhY2ggcGFyYWxsZWwgd29ya2VyIGhhcyBzdWNjZXNz ZnVsbHkgcmVzdG9yZWQKKyAqIGl0cyBzbmFwc2hvdC4gVGhpcyBpcyBuZWVkZWQgd2hlbiB1c2lu ZyBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMgdG8gZW5zdXJlIGFsbAorICogd29ya2VycyBoYXZl IGEgdmFsaWQgaW5pdGlhbCBzbmFwc2hvdCBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBzY2Fu LgorICoKICAqIENhbGxlcnMgY2FuIGFzc3VtZSB0aGF0IGlmIHRoaXMgZnVuY3Rpb24gcmV0dXJu cyBzdWNjZXNzZnVsbHksIHRoZW4gdGhlCiAgKiBudW1iZXIgb2Ygd29ya2VycyBnaXZlbiBieSBw Y3h0LT5ud29ya2Vyc19sYXVuY2hlZCBoYXZlIGluaXRpYWxpemVkIGFuZAogICogYXR0YWNoZWQg dG8gdGhlaXIgZXJyb3IgcXVldWVzLiAgV2hldGhlciBvciBub3QgdGhlc2Ugd29ya2VycyBhcmUg Z3VhcmFudGVlZApAQCAtNjkwLDcgKzcyNCw3IEBAIExhdW5jaFBhcmFsbGVsV29ya2VycyhQYXJh bGxlbENvbnRleHQgKnBjeHQpCiAgKiBjYWxsIHRoaXMgZnVuY3Rpb24gYXQgYWxsLgogICovCiB2 b2lkCi1XYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0 KQorV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCwg Ym9vbCB3YWl0X2Zvcl9zbmFwc2hvdCkKIHsKIAlpbnQJCQlpOwogCkBAIC03MzQsOSArNzY4LDEy IEBAIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQp CiAJCQkJbXEgPSBzaG1fbXFfZ2V0X3F1ZXVlKHBjeHQtPndvcmtlcltpXS5lcnJvcl9tcWgpOwog CQkJCWlmIChzaG1fbXFfZ2V0X3NlbmRlcihtcSkgIT0gTlVMTCkKIAkJCQl7Ci0JCQkJCS8qIFll cywgc28gaXQgaXMga25vd24gdG8gYmUgYXR0YWNoZWQuICovCi0JCQkJCXBjeHQtPmtub3duX2F0 dGFjaGVkX3dvcmtlcnNbaV0gPSB0cnVlOwotCQkJCQkrK3BjeHQtPm5rbm93bl9hdHRhY2hlZF93 b3JrZXJzOworCQkJCQlpZiAoIXdhaXRfZm9yX3NuYXBzaG90IHx8ICoocGN4dC0+d29ya2VyW2ld LnNuYXBzaG90X3Jlc3RvcmVkKSkKKwkJCQkJeworCQkJCQkJLyogWWVzLCBzbyBpdCBpcyBrbm93 biB0byBiZSBhdHRhY2hlZC4gKi8KKwkJCQkJCXBjeHQtPmtub3duX2F0dGFjaGVkX3dvcmtlcnNb aV0gPSB0cnVlOworCQkJCQkJKytwY3h0LT5ua25vd25fYXR0YWNoZWRfd29ya2VyczsKKwkJCQkJ fQogCQkJCX0KIAkJCX0KIAkJCWVsc2UgaWYgKHN0YXR1cyA9PSBCR1dIX1NUT1BQRUQpCkBAIC0x Mjk1LDYgKzEzMzIsNyBAQCBQYXJhbGxlbFdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJc2ht X3RvYyAgICAqdG9jOwogCUZpeGVkUGFyYWxsZWxTdGF0ZSAqZnBzOwogCWNoYXIJICAgKmVycm9y X3F1ZXVlX3NwYWNlOworCWJvb2wJICAgKnNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlOwogCXNobV9t cQkgICAqbXE7CiAJc2htX21xX2hhbmRsZSAqbXFoOwogCWNoYXIJICAgKmxpYnJhcnlzcGFjZTsK QEAgLTE0OTksNiArMTUzNywxMCBAQCBQYXJhbGxlbFdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcp CiAJCQkJCQkJICAgZnBzLT5wYXJhbGxlbF9sZWFkZXJfcGdwcm9jKTsKIAlQdXNoQWN0aXZlU25h cHNob3QoYXNuYXBzaG90KTsKIAorCS8qIFNuYXBzaG90IGlzIHJlc3RvcmVkLCBzZXQgZmxhZyB0 byBtYWtlIGxlYWRlciBrbm93IGFib3V0IGl0LiAqLworCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNl ID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfU05BUFNIT1RfUkVTVE9SRUQsIGZh bHNlKTsKKwlzbmFwc2hvdF9yZXN0b3JlZF9zcGFjZVtQYXJhbGxlbFdvcmtlck51bWJlcl0gPSB0 cnVlOworCiAJLyoKIAkgKiBXZSd2ZSBjaGFuZ2VkIHdoaWNoIHR1cGxlcyB3ZSBjYW4gc2VlLCBh bmQgbXVzdCB0aGVyZWZvcmUgaW52YWxpZGF0ZQogCSAqIHN5c3RlbSBjYWNoZXMuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMKaW5kZXggM2NhMzVmMjNhYzMuLjc3NWI5OTU3NTdlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBA IC0xNTMyLDcgKzE1MzIsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxh dGlvbklkLAogCiAJLyogSW52YWxpZGF0ZSBjYXRhbG9nIHNuYXBzaG90IGp1c3QgZm9yIGFzc2Vy dCAqLwogCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKLQlBc3NlcnQoKGluZGV4SW5mby0+ aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlKSB8fCAhVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KGluZGV4SW5mby0+aWlfVW5pcXVl IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qIFJvbGwgYmFj ayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCiAJQXRFT1hh Y3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4u YwppbmRleCBlZDM1YzU4YzJjMy4uOGExNWRkNzJiOTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNl cXNjYW4uYwpAQCAtMzY3LDcgKzM2Nyw4IEBAIEV4ZWNTZXFTY2FuSW5pdGlhbGl6ZURTTShTZXFT Y2FuU3RhdGUgKm5vZGUsCiAJcHNjYW4gPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgbm9k ZS0+cHNjYW5fbGVuKTsKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShub2RlLT5zcy5z c19jdXJyZW50UmVsYXRpb24sCiAJCQkJCQkJCSAgcHNjYW4sCi0JCQkJCQkJCSAgZXN0YXRlLT5l c19zbmFwc2hvdCk7CisJCQkJCQkJCSAgZXN0YXRlLT5lc19zbmFwc2hvdCwKKwkJCQkJCQkJICBm YWxzZSk7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBub2RlLT5zcy5wcy5wbGFuLT5wbGFu X25vZGVfaWQsIHBzY2FuKTsKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPQogCQl0YWJs ZV9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLCBwc2Nhbik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCmluZGV4IGFkNDQwZmYwMjRjLi5mMjUxYmM1Mjg5NSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKQEAgLTM0MiwxNCArMzQyLDYgQEAgR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCh2b2lkKQogU25hcHNob3QKIEdldExhdGVzdFNuYXBzaG90KHZvaWQpCiB7 Ci0JLyoKLQkgKiBXZSBtaWdodCBiZSBhYmxlIHRvIHJlbGF4IHRoaXMsIGJ1dCBub3RoaW5nIHRo YXQgY291bGQgb3RoZXJ3aXNlIHdvcmsKLQkgKiBuZWVkcyBpdC4KLQkgKi8KLQlpZiAoSXNJblBh cmFsbGVsTW9kZSgpKQotCQllbG9nKEVSUk9SLAotCQkJICJjYW5ub3QgdXBkYXRlIFNlY29uZGFy eVNuYXBzaG90IGR1cmluZyBhIHBhcmFsbGVsIG9wZXJhdGlvbiIpOwotCiAJLyoKIAkgKiBTbyBm YXIgdGhlcmUgYXJlIG5vIGNhc2VzIHJlcXVpcmluZyBzdXBwb3J0IGZvciBHZXRMYXRlc3RTbmFw c2hvdCgpCiAJICogZHVyaW5nIGxvZ2ljYWwgZGVjb2RpbmcsIGJ1dCBpdCB3b3VsZG4ndCBiZSBo YXJkIHRvIGFkZCBpZiByZXF1aXJlZC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9w YXJhbGxlbC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmgKaW5kZXggZjM3YmU2ZDU2 OTAuLmE3MzYyZjdiNDNiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwu aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaApAQCAtMjYsNiArMjYsNyBAQCB0 eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFdvcmtlckluZm8KIHsKIAlCYWNrZ3JvdW5kV29ya2VySGFu ZGxlICpiZ3doYW5kbGU7CiAJc2htX21xX2hhbmRsZSAqZXJyb3JfbXFoOworCWJvb2wJCSAgKnNu YXBzaG90X3Jlc3RvcmVkOwogfSBQYXJhbGxlbFdvcmtlckluZm87CiAKIHR5cGVkZWYgc3RydWN0 IFBhcmFsbGVsQ29udGV4dApAQCAtNjUsNyArNjYsNyBAQCBleHRlcm4gdm9pZCBJbml0aWFsaXpl UGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlh bGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gdm9pZCBSZWlu aXRpYWxpemVQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxDb250ZXh0ICpwY3h0LCBpbnQgbndvcmtl cnNfdG9fbGF1bmNoKTsKIGV4dGVybiB2b2lkIExhdW5jaFBhcmFsbGVsV29ya2VycyhQYXJhbGxl bENvbnRleHQgKnBjeHQpOwotZXh0ZXJuIHZvaWQgV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0 YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CitleHRlcm4gdm9pZCBXYWl0Rm9yUGFyYWxsZWxX b3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0LCBib29sIHdhaXRfZm9yX3NuYXBz aG90KTsKIGV4dGVybiB2b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0ZpbmlzaChQYXJhbGxl bENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIHZvaWQgRGVzdHJveVBhcmFsbGVsQ29udGV4dChQYXJh bGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIGJvb2wgUGFyYWxsZWxDb250ZXh0QWN0aXZlKHZv aWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9yZWxzY2FuLmgKaW5kZXggYjVlMGZiMzg2YzAuLjUwNDQxYzU4Y2VhIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9yZWxzY2FuLmgKQEAgLTgyLDYgKzgyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxU YWJsZVNjYW5EZXNjRGF0YQogCVJlbEZpbGVMb2NhdG9yIHBoc19sb2NhdG9yOyAvKiBwaHlzaWNh bCByZWxhdGlvbiB0byBzY2FuICovCiAJYm9vbAkJcGhzX3N5bmNzY2FuOwkvKiByZXBvcnQgbG9j YXRpb24gdG8gc3luY3NjYW4gbG9naWM/ICovCiAJYm9vbAkJcGhzX3NuYXBzaG90X2FueTsJLyog U25hcHNob3RBbnksIG5vdCBwaHNfc25hcHNob3RfZGF0YT8gKi8KKwlib29sCQlwaHNfcmVzZXRf c25hcHNob3Q7IC8qIHVzZSBTT19SRVNFVF9TTkFQU0hPVD8gKi8KIAlTaXplCQlwaHNfc25hcHNo b3Rfb2ZmOwkvKiBkYXRhIGZvciBzbmFwc2hvdCAqLwogfSBQYXJhbGxlbFRhYmxlU2NhbkRlc2NE YXRhOwogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0YSAqUGFyYWxsZWxU YWJsZVNjYW5EZXNjOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggOGRmNmJhOWI4OWUuLmE2OWY3MWEz YWNlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTExMzUsNyArMTEzNSw4IEBAIGV4dGVybiBTaXpl IHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBz aG90KTsKICAqLwogZXh0ZXJuIHZvaWQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVs YXRpb24gcmVsLAogCQkJCQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAotCQkJ CQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QpOworCQkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNo b3QsCisJCQkJCQkJCQkJICBib29sIHJlc2V0X3NuYXBzaG90KTsKIAogLyoKICAqIEJlZ2luIGEg cGFyYWxsZWwgc2Nhbi4gYHBzY2FuYCBuZWVkcyB0byBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgd2l0 aApAQCAtMTc1Myw5ICsxNzU0LDkgQEAgdGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFi bGVTY2FuRGVzYyBzY2FuLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAgKiBUaGlzIG9ubHkg cmVhbGx5IG1ha2VzIHNlbnNlIGZvciBoZWFwIEFNLCBpdCBtaWdodCBuZWVkIHRvIGJlIGdlbmVy YWxpemVkCiAgKiBmb3Igb3RoZXIgQU1zIGxhdGVyLgogICoKLSAqIEluIGNhc2Ugb2Ygbm9uLXVu aXF1ZSBpbmRleCBhbmQgbm9uLXBhcmFsbGVsIGNvbmN1cnJlbnQgYnVpbGQKLSAqIFNPX1JFU0VU X1NOQVBTSE9UIGlzIGFwcGxpZWQgZm9yIHRoZSBzY2FuLiBUaGF0IGxlYWRzIGZvciBjaGFuZ2lu ZyBzbmFwc2hvdHMKLSAqIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbiBob3Jpem9uIHByb3BhZ2F0 ZS4KKyAqIEluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBjb25jdXJyZW50ICBpbmRleCBidWlsZCBTT19S RVNFVF9TTkFQU0hPVCBpcyBhcHBsaWVkCisgKiBmb3IgdGhlIHNjYW4uIFRoYXQgbGVhZHMgZm9y IGNoYW5naW5nIHNuYXBzaG90cyBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4KKyAqIGhvcml6b24g cHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQogdGFibGVfaW5kZXhfYnVpbGRf c2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgYi9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5v dXQKaW5kZXggOTQ4ZDEyMzJhYTAuLjU5NWE0MDAwY2UwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNl dF9zbmFwc2hvdHMub3V0CkBAIC0xNyw2ICsxNywxMiBAQCBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNl JwogIAogKDEgcm93KQogCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplJywgJ25vdGljZScpOworIGluamVjdGlvbl9wb2ludHNfYXR0 YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBDUkVBVEUgU0NI RU1BIGNpY19yZXNldF9zbmFwOwogQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGlu dCBwcmltYXJ5IGtleSwgaiBpbnQpOwogSU5TRVJUIElOVE8gY2ljX3Jlc2V0X3NuYXAudGJsIFNF TEVDVCBpLCBpICogSSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIHMoaSk7CkBAIC03Miwz MCArNzgsNDUgQEAgTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIERST1AgSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUKIEFM VEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9Mik7Cist LSBEZXRhY2ggdG8ga2VlcCB0ZXN0IHN0YWJsZSwgc2luY2UgcGFyYWxsZWwgd29ya2VyIG1heSBj b21wbGV0ZSBzY2FuIGJlZm9yZSBsZWFkZXIKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFj aCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScpOworIGluamVjdGlvbl9wb2lu dHNfZGV0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBDUkVB VEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkp OwogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2Fu X2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0Qo aSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlh bGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJF IGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3Nu YXBzaG90cwotTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCi1OT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2Fu X3NuYXBzaG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAu dGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0o KTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExTIExBU1QpOworTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2Fu X2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lO RyBCUklOKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIERST1AgU0NIRU1BIGNpY19yZXNldF9zbmFw IENBU0NBREU7CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDMgb3RoZXIgb2JqZWN0cwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRf c25hcHNob3RzLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2lj X3Jlc2V0X3NuYXBzaG90cy5zcWwKaW5kZXggNTA3MjUzNWIzNTUuLjI5NDFhYTdhZTM4IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9z bmFwc2hvdHMuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwv Y2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKQEAgLTMsNyArMyw3IEBAIENSRUFURSBFWFRFTlNJT04g aW5qZWN0aW9uX3BvaW50czsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwog U0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3Rf ZWZmZWN0aXZlJywgJ25vdGljZScpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0 YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGljZScpOwotCitTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl JywgJ25vdGljZScpOwogCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOwogQ1JFQVRFIFRB QkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOwpAQCAtNTMs NiArNTMsOSBAQCBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiAt LSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50 YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOwogCistLSBEZXRhY2ggdG8ga2VlcCB0ZXN0IHN0 YWJsZSwgc2luY2UgcGFyYWxsZWwgd29ya2VyIG1heSBjb21wbGV0ZSBzY2FuIGJlZm9yZSBsZWFk ZXIKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBz aG90X2VmZmVjdGl2ZScpOworCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHgg T04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OwpAQCAtODMsNCArODYsNCBAQCBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CiAKIERST1AgU0NIRU1BIGNpY19yZXNldF9zbmFwIENBU0NBREU7CiAKLURST1Ag RVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7CitEUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9p bnRzOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIuNDMuMAoK --00000000000027fe8906381ae2a2 Content-Type: application/octet-stream; name="v21-only-part-3-0006-Refresh-snapshot-periodically-during.patch_" Content-Disposition: attachment; filename="v21-only-part-3-0006-Refresh-snapshot-periodically-during.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8v512 RnJvbSBmZjJjNmJiZWUxNTkyYjA1NTQ0MWIwNzBkYjMyYTdlNGI3OWVkNWRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAyMSBBcHIgMjAyNSAxNDoxMTo1MyArMDIwMApTdWJqZWN0OiBb UEFUQ0ggdjIxLW9ubHktcGFydC0zIDYvNl0gUmVmcmVzaCBzbmFwc2hvdCBwZXJpb2RpY2FsbHkg ZHVyaW5nCiBpbmRleCB2YWxpZGF0aW9uCgpFbmhhbmNlcyB2YWxpZGF0aW9uIHBoYXNlIG9mIGNv bmN1cnJlbnRseSBidWlsdCBpbmRleGVzIGJ5IHBlcmlvZGljYWxseSByZWZyZXNoaW5nIHNuYXBz aG90cyByYXRoZXIgdGhhbiB1c2luZyBhIHNpbmdsZSByZWZlcmVuY2Ugc25hcHNob3QuIFRoaXMg YWRkcmVzc2VzIGlzc3VlcyB3aXRoIHhtaW4gcHJvcGFnYXRpb24gZHVyaW5nIGxvbmctcnVubmlu ZyB2YWxpZGF0aW9ucy4KClRoZSB2YWxpZGF0aW9uIG5vdyB0YWtlcyBhIGZyZXNoIHNuYXBzaG90 IGV2ZXJ5IGZldyBwYWdlcywgYWxsb3dpbmcgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZhbmNlLiBU aGlzIHJlc3RvcmVzIGZlYXR1cmUgb2YgY29tbWl0IGQ5ZDA3NjIyMmY1Yiwgd2hpY2ggd2FzIHJl dmVydGVkIGluIGNvbW1pdCBlMjhiYjg4NTE5NjkuIE5ldyBTVElSLWJhc2VkIGFwcHJvYWNoIGlz IG5vdCBkZXBlbmRzIG9uIHNpbmdsZSByZWZlcmVuY2Ugc25hcHNob3QgYW55bW9yZS4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UICAgICAgIHwgIDQgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgfCA3MyArKysrKysrKysrKysrKysrKysr KystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgICAgfCAxMiArKyst CiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgIHwgNDMgKysrKysrKysr Ky0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgfCA1MCArKy0t LS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgIHwg IDcgKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oICAgICAgICAgICAgIHwgMTUgKysr KysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAgICAgfCAgMiArLQogOCBm aWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggMjhlMmExNjA0YzQuLjYwNGJkZGE1OWZmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTQwMSwxMiArNDAxLDEyIEBAIGxpdmUgdHVw bGUuCiBXZSBtYXJrIHRoZSBpbmRleCBvcGVuIGZvciBpbnNlcnRzIChidXQgc3RpbGwgbm90IHJl YWR5IGZvciByZWFkcykgdGhlbgogd2UgYWdhaW4gd2FpdCBmb3IgdHJhbnNhY3Rpb25zIHdoaWNo IGhhdmUgdGhlIHRhYmxlIG9wZW4uICBUaGVuIHZhbGlkYXRlCiB0aGUgaW5kZXguICBUaGlzIHNl YXJjaGVzIGZvciB0dXBsZXMgbWlzc2luZyBmcm9tIHRoZSBpbmRleCBpbiBhdXhpbGlhcnkKLWlu ZGV4LCBhbmQgaW5zZXJ0cyBhbnkgbWlzc2luZyBvbmVzIGlmIHRoZW0gdmlzaWJsZSB0byByZWZl cmVuY2Ugc25hcHNob3QuCitpbmRleCwgYW5kIGluc2VydHMgYW55IG1pc3Npbmcgb25lcyBpZiB0 aGVtIHZpc2libGUgdG8gZnJlc2ggc25hcHNob3QuCiBBZ2FpbiwgdGhlIGluZGV4IGVudHJpZXMg aGF2ZSB0byBoYXZlIFRJRHMgZXF1YWwgdG8gSE9ULWNoYWluIHJvb3QgVElEcywgYnV0CiB0aGUg dmFsdWUgdG8gYmUgaW5zZXJ0ZWQgaXMgdGhlIG9uZSBmcm9tIHRoZSBsaXZlIHR1cGxlLgogCiBU aGVuIHdlIHdhaXQgdW50aWwgZXZlcnkgdHJhbnNhY3Rpb24gdGhhdCBjb3VsZCBoYXZlIGEgc25h cHNob3Qgb2xkZXIgdGhhbgotdGhlIHNlY29uZCByZWZlcmVuY2Ugc25hcHNob3QgaXMgZmluaXNo ZWQuICBUaGlzIGVuc3VyZXMgdGhhdCBub2JvZHkgaXMKK3RoZSBsYXRlc3QgdXNlZCBzbmFwc2hv dCBpcyBmaW5pc2hlZC4gIFRoaXMgZW5zdXJlcyB0aGF0IG5vYm9keSBpcwogYWxpdmUgYW55IGxv bmdlciB3aG8gY291bGQgbmVlZCB0byBzZWUgYW55IHR1cGxlcyB0aGF0IG1pZ2h0IGJlIG1pc3Np bmcKIGZyb20gdGhlIGluZGV4LCBhcyB3ZWxsIGFzIGVuc3VyaW5nIHRoYXQgbm8gb25lIGNhbiBz ZWUgYW55IGluY29uc2lzdGVudAogcm93cyBpbiBhIGJyb2tlbiBIT1QgY2hhaW4gKHRoZSBmaXJz dCBjb25kaXRpb24gaXMgc3Ryb25nZXIgdGhhbiB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1faGFuZGxlci5jCmluZGV4IDlhZjEyYjJlMzc1Li5iY2YxZjZjNzQwMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xOTk2LDIzICsxOTk2LDI2IEBA IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX3JlYWRfc3RyZWFtX25leHQoCiAJcmV0dXJuIHJl c3VsdDsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBUcmFuc2FjdGlvbklkCiBoZWFwYW1faW5k ZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkgICBSZWxhdGlv biBpbmRleFJlbGF0aW9uLAogCQkJCQkJICAgSW5kZXhJbmZvICppbmRleEluZm8sCi0JCQkJCQkg ICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUs CiAJCQkJCQkgICBWYWxpZGF0ZUluZGV4U3RhdGUgKmF1eFN0YXRlKQogeworCVRyYW5zYWN0aW9u SWQgbGltaXRYbWluOworCiAJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJYm9vbAkJ aXNudWxsW0lOREVYX01BWF9LRVlTXTsKIAorCVNuYXBzaG90CQlzbmFwc2hvdDsKIAlUdXBsZVRh YmxlU2xvdCAgKnNsb3Q7CiAJRVN0YXRlCQkJKmVzdGF0ZTsKIAlFeHByQ29udGV4dAkJKmVjb250 ZXh0OwogCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0ZWd5 KEJBU19CVUxLUkVBRCk7CiAKLQlpbnQJCQkJbnVtX3RvX2NoZWNrOworCWludAkJCQludW1fdG9f Y2hlY2ssCisJCQkJCXBhZ2VfcmVhZF9jb3VudGVyID0gMTsgLyogc2V0IHRvIDEgdG8gc2tpcCBz bmFwc2hvdCByZXNldCBhdCBzdGFydCAqLwogCVR1cGxlc3RvcmVzdGF0ZSAqdHVwbGVzX2Zvcl9j aGVjazsKIAlWYWxpZGF0ZUluZGV4U2NhblN0YXRlIGNhbGxiYWNrX3ByaXZhdGVfZGF0YTsKIApA QCAtMjAyMywxNCArMjAyNiwxNiBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAJLyogVXNlIDEwJSBvZiBtZW1vcnkgZm9yIHR1cGxlIHN0b3JlLiAq LwogCWludAkJc3RvcmVfd29ya19tZW1fcGFydCA9IG1haW50ZW5hbmNlX3dvcmtfbWVtIC8gMTA7 CiAKLQkvKgotCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZvciB0aGUgc29ydCwgcmF0 aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwotCSAqIGl0ZW0gcG9pbnRlcnMuICBUaGlzIGNhbiBi ZSBzaWduaWZpY2FudGx5IGZhc3RlciwgcHJpbWFyaWx5IGJlY2F1c2UgVElECi0JICogaXMgYSBw YXNzLWJ5LXJlZmVyZW5jZSB0eXBlIG9uIGFsbCBwbGF0Zm9ybXMsIHdoZXJlYXMgaW50OCBpcwot CSAqIHBhc3MtYnktdmFsdWUgb24gbW9zdCBwbGF0Zm9ybXMuCi0JICovCisJUHVzaEFjdGl2ZVNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisKIAl0dXBsZXNfZm9yX2NoZWNrID0g IHR1cGxlc3RvcmVfYmVnaW5fZGF0dW0oSU5UOE9JRCwgZmFsc2UsIGZhbHNlLCBzdG9yZV93b3Jr X21lbV9wYXJ0KTsKIAorCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJSW52YWxpZGF0ZUNhdGFsb2dT bmFwc2hvdCgpOworCisJQXNzZXJ0KCFIYXZlUmVnaXN0ZXJlZE9yQWN0aXZlU25hcHNob3QoKSk7 CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwogCS8qCiAJ ICogc2FuaXR5IGNoZWNrcwogCSAqLwpAQCAtMjA0Niw2ICsyMDUxLDI5IEBAIGhlYXBhbV9pbmRl eF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAogCXN0YXRlLT50dXBsZXNv cnQgPSBhdXhTdGF0ZS0+dHVwbGVzb3J0ID0gTlVMTDsKIAorCS8qCisJICogTm93IHRha2UgdGhl IGZpcnN0IHNuYXBzaG90IHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRvIGZpbHRlciBjYW5kaWRhdGUK KwkgKiB0dXBsZXMuIFdlIGFyZSBnb2luZyB0byByZXBsYWNlIGl0IGJ5IG5ld2VyIHNuYXBzaG90 IGV2ZXJ5IHNvIG9mdGVuCisJICogdG8gcHJvcGFnYXRlIGhvcml6b24uCisJICoKKwkgKiBCZXdh cmUhICBUaGVyZSBtaWdodCBzdGlsbCBiZSBzbmFwc2hvdHMgaW4gdXNlIHRoYXQgdHJlYXQgc29t ZSB0cmFuc2FjdGlvbgorCSAqIGFzIGluLXByb2dyZXNzIHRoYXQgb3VyIHRlbXBvcmFyeSBzbmFw c2hvdCB0cmVhdHMgYXMgY29tbWl0dGVkLgorCSAqCisJICogSWYgc3VjaCBhIHJlY2VudGx5LWNv bW1pdHRlZCB0cmFuc2FjdGlvbiBkZWxldGVkIHR1cGxlcyBpbiB0aGUgdGFibGUsCisJICogd2Ug d2lsbCBub3QgaW5jbHVkZSB0aGVtIGluIHRoZSBpbmRleDsgeWV0IHRob3NlIHRyYW5zYWN0aW9u cyB3aGljaAorCSAqIHNlZSB0aGUgZGVsZXRpbmcgb25lIGFzIHN0aWxsLWluLXByb2dyZXNzIHdp bGwgZXhwZWN0IHN1Y2ggdHVwbGVzIHRvCisJICogYmUgdGhlcmUgb25jZSB3ZSBtYXJrIHRoZSBp bmRleCBhcyB2YWxpZC4KKwkgKgorCSAqIFdlIHNvbHZlIHRoaXMgYnkgd2FpdGluZyBmb3IgYWxs IGVuZGFuZ2VyZWQgdHJhbnNhY3Rpb25zIHRvIGV4aXQgYmVmb3JlCisJICogd2UgbWFyayB0aGUg aW5kZXggYXMgdmFsaWQsIGZvciB0aGF0IHJlYXNvbiBsaW1pdFhtaW4gaXMgc3VwcG9ydGVkLgor CSAqCisJICogV2UgYWxzbyBzZXQgQWN0aXZlU25hcHNob3QgdG8gdGhpcyBzbmFwLCBzaW5jZSBm dW5jdGlvbnMgaW4gaW5kZXhlcyBtYXkKKwkgKiBuZWVkIGEgc25hcHNob3QuCisJICovCisJc25h cHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOworCVB1c2hBY3Rp dmVTbmFwc2hvdChzbmFwc2hvdCk7CisJbGltaXRYbWluID0gc25hcHNob3QtPnhtaW47CisKIAll c3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CiAJZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4 cHJDb250ZXh0KGVzdGF0ZSk7CiAJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxh dGlvbkdldERlc2NyKGhlYXBSZWxhdGlvbiksCkBAIC0yMDc5LDYgKzIxMDcsNyBAQCBoZWFwYW1f aW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAKIAkJTG9ja0J1ZmZl cihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAkJYmxvY2tfbnVtYmVyID0gQnVmZmVyR2V0Qmxv Y2tOdW1iZXIoYnVmKTsKKwkJcGFnZV9yZWFkX2NvdW50ZXIrKzsKIAogCQlpID0gMDsKIAkJd2hp bGUgKChvZmYgPSB0dXBsZXNbaV0pICE9IEludmFsaWRPZmZzZXROdW1iZXIpCkBAIC0yMTM0LDYg KzIxNjMsMjAgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCQl9CiAKIAkJUmVsZWFzZUJ1ZmZlcihidWYpOworI2RlZmluZSBWQUxJREFURV9JTkRF WF9SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSA0MDk2CisJCWlmIChwYWdlX3JlYWRfY291bnRl ciAlIFZBTElEQVRFX0lOREVYX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFID09IDApCisJCXsK KwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3Qp OworCQkJLyogdG8gbWFrZSBzdXJlIHdlIHByb3BhZ2F0ZSB4bWluICovCisJCQlJbnZhbGlkYXRl Q2F0YWxvZ1NuYXBzaG90KCk7CisJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOworCisJCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25h cHNob3QoKSk7CisJCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCQkJLyogeG1pbiBz aG91bGQgbm90IGdvIGJhY2t3YXJkcywgYnV0IGp1c3QgZm9yIHRoZSBjYXNlKi8KKwkJCWxpbWl0 WG1pbiA9IFRyYW5zYWN0aW9uSWROZXdlcihsaW1pdFhtaW4sIHNuYXBzaG90LT54bWluKTsKKwkJ fQogCX0KIAogCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CkBAIC0yMTQzLDkg KzIxODYsMjEgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCXJlYWRfc3RyZWFtX2VuZChyZWFkX3N0cmVhbSk7CiAJdHVwbGVzdG9yZV9lbmQodHVw bGVzX2Zvcl9jaGVjayk7CiAKKwkvKgorCSAqIERyb3AgdGhlIGxhdGVzdCBzbmFwc2hvdC4gIFdl IG11c3QgZG8gdGhpcyBiZWZvcmUgd2FpdGluZyBvdXQgb3RoZXIKKwkgKiBzbmFwc2hvdCBob2xk ZXJzLCBlbHNlIHdlIHdpbGwgZGVhZGxvY2sgYWdhaW5zdCBvdGhlciBwcm9jZXNzZXMgYWxzbwor CSAqIGRvaW5nIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFksIHdoaWNoIHdvdWxkIHNlZSBvdXIg c25hcHNob3QgYXMgb25lCisJICogdGhleSBtdXN0IHdhaXQgZm9yLgorCSAqLworCVBvcEFjdGl2 ZVNuYXBzaG90KCk7CisJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKwlJbnZhbGlkYXRl Q2F0YWxvZ1NuYXBzaG90KCk7CisJQXNzZXJ0KE15UHJvYy0+eG1pbiA9PSBJbnZhbGlkVHJhbnNh Y3Rpb25JZCk7CiAJLyogVGhlc2UgbWF5IGhhdmUgYmVlbiBwb2ludGluZyB0byB0aGUgbm93LWdv bmUgZXN0YXRlICovCiAJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID0gTklMOwogCWlu ZGV4SW5mby0+aWlfUHJlZGljYXRlU3RhdGUgPSBOVUxMOworCisJcmV0dXJuIGxpbWl0WG1pbjsK IH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVt LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCmluZGV4IDI2NzhmN2Fi NzgyLi45NjhhOGY3NzI1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9z cGd2YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBA IC0xOTEsMTQgKzE5MSwxNiBAQCB2YWN1dW1MZWFmUGFnZShzcGdCdWxrRGVsZXRlU3RhdGUgKmJk cywgUmVsYXRpb24gaW5kZXgsIEJ1ZmZlciBidWZmZXIsCiAJCQkgKiBBZGQgdGFyZ2V0IFRJRCB0 byBwZW5kaW5nIGxpc3QgaWYgdGhlIHJlZGlyZWN0aW9uIGNvdWxkIGhhdmUKIAkJCSAqIGhhcHBl bmVkIHNpbmNlIFZBQ1VVTSBzdGFydGVkLiAgKElmIHhpZCBpcyBpbnZhbGlkLCBhc3N1bWUgaXQK IAkJCSAqIG11c3QgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgVkFDVVVNIHN0YXJ0ZWQsIHNpbmNlIFJF SU5ERVgKLQkJCSAqIENPTkNVUlJFTlRMWSBsb2NrcyBvdXQgVkFDVVVNLikKKwkJCSAqIENPTkNV UlJFTlRMWSBsb2NrcyBvdXQgVkFDVVVNLCBpZiBteVhtaW4gaXMgaW52YWxpZCBpdCBpcworCQkJ ICogdmFsaWRhdGlvbiBzY2FuLikKIAkJCSAqCiAJCQkgKiBOb3RlOiB3ZSBjb3VsZCBtYWtlIGEg dGlnaHRlciB0ZXN0IGJ5IHNlZWluZyBpZiB0aGUgeGlkIGlzCiAJCQkgKiAicnVubmluZyIgYWNj b3JkaW5nIHRvIHRoZSBhY3RpdmUgc25hcHNob3Q7IGJ1dCBzbmFwbWdyLmMKIAkJCSAqIGRvZXNu J3QgY3VycmVudGx5IGV4cG9ydCBhIHN1aXRhYmxlIEFQSSwgYW5kIGl0J3Mgbm90IGVudGlyZWx5 CiAJCQkgKiBjbGVhciB0aGF0IGEgdGlnaHRlciB0ZXN0IGlzIHdvcnRoIHRoZSBjeWNsZXMgYW55 d2F5LgogCQkJICovCi0JCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhkdC0+eGlk LCBiZHMtPm15WG1pbikpCisJCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGJkcy0+bXlYbWlu KSB8fAorCQkJCQlUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKGR0LT54aWQsIGJkcy0+bXlY bWluKSkKIAkJCQlzcGdBZGRQZW5kaW5nVElEKGJkcywgJmR0LT5wb2ludGVyKTsKIAkJfQogCQll bHNlCkBAIC04MDgsNyArODEwLDYgQEAgc3BndmFjdXVtc2NhbihzcGdCdWxrRGVsZXRlU3RhdGUg KmJkcykKIAkvKiBGaW5pc2ggc2V0dGluZyB1cCBzcGdCdWxrRGVsZXRlU3RhdGUgKi8KIAlpbml0 U3BHaXN0U3RhdGUoJmJkcy0+c3Bnc3RhdGUsIGluZGV4KTsKIAliZHMtPnBlbmRpbmdMaXN0ID0g TlVMTDsKLQliZHMtPm15WG1pbiA9IEdldEFjdGl2ZVNuYXBzaG90KCktPnhtaW47CiAJYmRzLT5s YXN0RmlsbGVkQmxvY2sgPSBTUEdJU1RfTEFTVF9GSVhFRF9CTEtOTzsKIAogCS8qCkBAIC05NTks NiArOTYwLDEwIEBAIHNwZ2J1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1 bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCWJkcy5zdGF0cyA9IHN0YXRzOwogCWJkcy5jYWxsYmFj ayA9IGNhbGxiYWNrOwogCWJkcy5jYWxsYmFja19zdGF0ZSA9IGNhbGxiYWNrX3N0YXRlOworCWlm IChpbmZvLT52YWxpZGF0ZV9pbmRleCkKKwkJYmRzLm15WG1pbiA9IEludmFsaWRUcmFuc2FjdGlv bklkOworCWVsc2UKKwkJYmRzLm15WG1pbiA9IEdldEFjdGl2ZVNuYXBzaG90KCktPnhtaW47CiAK IAlzcGd2YWN1dW1zY2FuKCZiZHMpOwogCkBAIC05OTksNiArMTAwNCw3IEBAIHNwZ3ZhY3V1bWNs ZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRz KQogCQliZHMuc3RhdHMgPSBzdGF0czsKIAkJYmRzLmNhbGxiYWNrID0gZHVtbXlfY2FsbGJhY2s7 CiAJCWJkcy5jYWxsYmFja19zdGF0ZSA9IE5VTEw7CisJCWJkcy5teVhtaW4gPSBHZXRBY3RpdmVT bmFwc2hvdCgpLT54bWluOwogCiAJCXNwZ3ZhY3V1bXNjYW4oJmJkcyk7CiAJfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jCmluZGV4IGQ3YTVjZDk0YzEwLi40NzY2MGYyZTVlZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAt NjgsNiArNjgsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCkBAIC0zNTEzLDggKzM1 MTQsOSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIGlu c2VydCB0aGVpciBuZXcgdHVwbGVzIGludG8gaXQuIEF0IHRoZSBzYW1lIG1vbWVudCB3ZSBjbGVh ciAiaW5kaXNyZWFkeSIgZm9yCiAgKiBhdXhpbGlhcnkgaW5kZXgsIHNpbmNlIGl0IGlzIG5vIG1v cmUgcmVxdWlyZWQgdG8gYmUgdXBkYXRlZC4KICAqCi0gKiBXZSB0aGVuIHRha2UgYSBuZXcgcmVm ZXJlbmNlIHNuYXBzaG90LCBhbnkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZwotICog dG8gdGhpcyBzbmFwLCBidXQgYXJlIG5vdCBpbiB0aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8g dGhlIGluZGV4LgorICogV2UgdGhlbiB0YWtlIGEgbmV3IHNuYXBzaG90LCBhbnkgdHVwbGVzIHRo YXQgYXJlIHZhbGlkIGFjY29yZGluZworICogdG8gdGhpcyBzbmFwLCBidXQgYXJlIG5vdCBpbiB0 aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGluZGV4LiBJbgorICogb3JkZXIgdG8gcHJv cGFnYXRlIHhtaW4gd2UgcmVzZXQgdGhhdCBzbmFwc2hvdCBldmVyeSBmZXcgc28gb2Z0ZW4uCiAg KiAoQW55IHR1cGxlcyBjb21taXR0ZWQgbGl2ZSBhZnRlciB0aGUgc25hcCB3aWxsIGJlIGluc2Vy dGVkIGludG8gdGhlCiAgKiBpbmRleCBieSB0aGVpciBvcmlnaW5hdGluZyB0cmFuc2FjdGlvbi4g IEFueSB0dXBsZXMgY29tbWl0dGVkIGRlYWQgYmVmb3JlCiAgKiB0aGUgc25hcCBuZWVkIG5vdCBi ZSBpbmRleGVkLCBiZWNhdXNlIHdlIHdpbGwgd2FpdCBvdXQgYWxsIHRyYW5zYWN0aW9ucwpAQCAt MzUyNyw3ICszNTI5LDcgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRp b24sCiAgKiBUSURzIG9mIGJvdGggYXV4aWxpYXJ5IGFuZCB0YXJnZXQgaW5kZXhlcywgYW5kIGRv aW5nIGEgIm1lcmdlIGpvaW4iIGFnYWluc3QKICAqIHRoZSBUSUQgbGlzdHMgdG8gc2VlIHdoaWNo IHR1cGxlcyBmcm9tIGF1eGlsaWFyeSBpbmRleCBhcmUgbWlzc2luZyBmcm9tIHRoZQogICogdGFy Z2V0IGluZGV4LiAgVGh1cyB3ZSB3aWxsIGVuc3VyZSB0aGF0IGFsbCB0dXBsZXMgdmFsaWQgYWNj b3JkaW5nIHRvIHRoZQotICogcmVmZXJlbmNlIHNuYXBzaG90IGFyZSBpbiB0aGUgaW5kZXguIE5v dGljZSB3ZSBuZWVkIHRvIGRvIGJ1bGtkZWxldGUgaW4gdGhlCisgKiBsYXRlc3Qgc25hcHNob3Qg YXJlIGluIHRoZSBpbmRleC4gTm90aWNlIHdlIG5lZWQgdG8gZG8gYnVsa2RlbGV0ZSBpbiB0aGUK ICAqIHBhcnRpY3VsYXIgb3JkZXI6IGF1eGlsaWFyeSBmaXJzdCwgdGFyZ2V0IGxhc3QuCiAgKgog ICogQnVpbGRpbmcgYSB1bmlxdWUgaW5kZXggdGhpcyB3YXkgaXMgdHJpY2t5OiB3ZSBtaWdodCB0 cnkgdG8gaW5zZXJ0IGEKQEAgLTM1NDgsMTMgKzM1NTAsMTQgQEAgSW5kZXhDaGVja0V4Y2x1c2lv bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKgogICogQWxzbywgc29tZSBhY3Rpb25zIHRvIGNv bmN1cnJlbnQgZHJvcCB0aGUgYXV4aWxpYXJ5IGluZGV4IGFyZSBwZXJmb3JtZWQuCiAgKi8KLXZv aWQKLXZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJ ZCwgU25hcHNob3Qgc25hcHNob3QpCitUcmFuc2FjdGlvbklkCit2YWxpZGF0ZV9pbmRleChPaWQg aGVhcElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQpCiB7CiAJUmVsYXRpb24JaGVhcFJl bGF0aW9uLAogCQkJCWluZGV4UmVsYXRpb24sCiAJCQkJYXV4SW5kZXhSZWxhdGlvbjsKIAlJbmRl eEluZm8gICppbmRleEluZm87CisJVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW47CiAJSW5kZXhWYWN1 dW1JbmZvIGl2aW5mbywgYXV4aXZpbmZvOwogCVZhbGlkYXRlSW5kZXhTdGF0ZSBzdGF0ZSwgYXV4 U3RhdGU7CiAJT2lkCQkJc2F2ZV91c2VyaWQ7CkBAIC0zNjA0LDggKzM2MDcsMTIgQEAgdmFsaWRh dGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkLCBTbmFwc2hv dCBzbmFwc2hvdCkKIAkgKiBGZXRjaCBpbmZvIG5lZWRlZCBmb3IgaW5kZXhfaW5zZXJ0LiAgKFlv dSBtaWdodCB0aGluayB0aGlzIHNob3VsZCBiZQogCSAqIHBhc3NlZCBpbiBmcm9tIERlZmluZUlu ZGV4LCBidXQgaXRzIGNvcHkgaXMgbG9uZyBnb25lIGR1ZSB0byBoYXZpbmcKIAkgKiBiZWVuIGJ1 aWx0IGluIGEgcHJldmlvdXMgdHJhbnNhY3Rpb24uKQorCSAqCisJICogV2UgbWlnaHQgbmVlZCBz bmFwc2hvdCBmb3IgaW5kZXggZXhwcmVzc2lvbnMgb3IgcHJlZGljYXRlcy4KIAkgKi8KKwlQdXNo QWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAlpbmRleEluZm8gPSBC dWlsZEluZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJ LyogbWFyayBidWlsZCBpcyBjb25jdXJyZW50IGp1c3QgZm9yIGNvbnNpc3RlbmN5ICovCiAJaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50ID0gdHJ1ZTsKQEAgLTM2NDEsNiArMzY0OCw5IEBAIHZhbGlk YXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNo b3Qgc25hcHNob3QpCiAJCQkJCQkJCQkJICAgTlVMTCwgVFVQTEVTT1JUX05PTkUpOwogCWF1eFN0 YXRlLmh0dXBzID0gYXV4U3RhdGUuaXR1cHMgPSBhdXhTdGF0ZS50dXBzX2luc2VydGVkID0gMDsK IAorCS8qIHR1cGxlc29ydF9iZWdpbl9kYXR1bSBtYXkgcmVxdWlyZSBjYXRhbG9nIHNuYXBzaG90 ICovCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCiAJKHZvaWQpIGluZGV4X2J1bGtf ZGVsZXRlKCZhdXhpdmluZm8sIE5VTEwsCiAJCQkJCQkJIHZhbGlkYXRlX2luZGV4X2NhbGxiYWNr LCAmYXV4U3RhdGUpOwogCS8qIElmIGF1eCBpbmRleCBpcyBlbXB0eSwgbWVyZ2UgbWF5IGJlIHNr aXBwZWQgKi8KQEAgLTM2NzUsNiArMzY4NSw5IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQs IE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJCQkJCQkJ CQkJCU5VTEwsIFRVUExFU09SVF9OT05FKTsKIAlzdGF0ZS5odHVwcyA9IHN0YXRlLml0dXBzID0g c3RhdGUudHVwc19pbnNlcnRlZCA9IDA7CiAKKwkvKiB0dXBsZXNvcnRfYmVnaW5fZGF0dW0gbWF5 IHJlcXVpcmUgY2F0YWxvZyBzbmFwc2hvdCAqLworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKKwogCS8qIGFtYnVsa2RlbGV0ZSB1cGRhdGVzIHByb2dyZXNzIG1ldHJpY3MgKi8KIAkodm9p ZCkgaW5kZXhfYnVsa19kZWxldGUoJml2aW5mbywgTlVMTCwKIAkJCQkJCQkgdmFsaWRhdGVfaW5k ZXhfY2FsbGJhY2ssICZzdGF0ZSk7CkBAIC0zNjk0LDE5ICszNzA3LDI0IEBAIHZhbGlkYXRlX2lu ZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNob3Qgc25h cHNob3QpCiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oMywgcHJvZ3Jlc3Nf aW5kZXgsIHByb2dyZXNzX3ZhbHMpOwogCX0KIAl0dXBsZXNvcnRfcGVyZm9ybXNvcnQoc3RhdGUu dHVwbGVzb3J0KTsKKwkvKiB0dXBsZXNvcnRfcGVyZm9ybXNvcnQgbWF5IHJlcXVpcmUgY2F0YWxv ZyBzbmFwc2hvdCAqLworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwogCXR1cGxlc29y dF9wZXJmb3Jtc29ydChhdXhTdGF0ZS50dXBsZXNvcnQpOworCS8qIHR1cGxlc29ydF9wZXJmb3Jt c29ydCBtYXkgcmVxdWlyZSBjYXRhbG9nIHNuYXBzaG90ICovCisJSW52YWxpZGF0ZUNhdGFsb2dT bmFwc2hvdCgpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7 CiAKIAkvKgogCSAqIE5vdyBtZXJnZSBib3RoIGluZGV4ZXMKIAkgKi8KIAlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJIFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9JRFhNRVJHRSk7Ci0JdGFibGVfaW5kZXhfdmFs aWRhdGVfc2NhbihoZWFwUmVsYXRpb24sCi0JCQkJCQkJICBpbmRleFJlbGF0aW9uLAotCQkJCQkJ CSAgaW5kZXhJbmZvLAotCQkJCQkJCSAgc25hcHNob3QsCi0JCQkJCQkJICAmc3RhdGUsCi0JCQkJ CQkJICAmYXV4U3RhdGUpOworCWxpbWl0WG1pbiA9IHRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4o aGVhcFJlbGF0aW9uLAorCQkJCQkJCQkJCSAgaW5kZXhSZWxhdGlvbiwKKwkJCQkJCQkJCQkgIGlu ZGV4SW5mbywKKwkJCQkJCQkJCQkgICZzdGF0ZSwKKwkJCQkJCQkJCQkgICZhdXhTdGF0ZSk7CiAK IAkvKiBUdXBsZSBzb3J0IGNsb3NlZCBieSB0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuICovCiAJ QXNzZXJ0KHN0YXRlLnR1cGxlc29ydCA9PSBOVUxMICYmIGF1eFN0YXRlLnR1cGxlc29ydCA9PSBO VUxMKTsKQEAgLTM3MjksNiArMzc0Nyw5IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9p ZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJaW5kZXhfY2xv c2UoYXV4SW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKIAlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9u LCBOb0xvY2spOwogCXRhYmxlX2Nsb3NlKGhlYXBSZWxhdGlvbiwgTm9Mb2NrKTsKKworCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJcmV0dXJuIGxpbWl0WG1p bjsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggMjZlMzFhNWYyOWYuLjRi YzAyMjgyYWFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtNTkyLDcgKzU5Miw2IEBA IERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCUxvY2tSZWxJZAloZWFwcmVsaWQ7CiAJTE9DS1RB RwkJaGVhcGxvY2t0YWc7CiAJTE9DS01PREUJbG9ja21vZGU7Ci0JU25hcHNob3QJc25hcHNob3Q7 CiAJT2lkCQkJcm9vdF9zYXZlX3VzZXJpZDsKIAlpbnQJCQlyb290X3NhdmVfc2VjX2NvbnRleHQ7 CiAJaW50CQkJcm9vdF9zYXZlX25lc3RsZXZlbDsKQEAgLTE4MDYsMzIgKzE4MDUsMTEgQEAgRGVm aW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0 byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwogCWlmIChzYWZlX2luZGV4KQogCQlz ZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCi0JLyoKLQkgKiBOb3cgdGFrZSB0aGUgInJlZmVy ZW5jZSBzbmFwc2hvdCIgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdmFsaWRhdGVfaW5kZXgoKQotCSAq IHRvIGZpbHRlciBjYW5kaWRhdGUgdHVwbGVzLiAgQmV3YXJlISAgVGhlcmUgbWlnaHQgc3RpbGwg YmUgc25hcHNob3RzIGluCi0JICogdXNlIHRoYXQgdHJlYXQgc29tZSB0cmFuc2FjdGlvbiBhcyBp bi1wcm9ncmVzcyB0aGF0IG91ciByZWZlcmVuY2UKLQkgKiBzbmFwc2hvdCB0cmVhdHMgYXMgY29t bWl0dGVkLiAgSWYgc3VjaCBhIHJlY2VudGx5LWNvbW1pdHRlZCB0cmFuc2FjdGlvbgotCSAqIGRl bGV0ZWQgdHVwbGVzIGluIHRoZSB0YWJsZSwgd2Ugd2lsbCBub3QgaW5jbHVkZSB0aGVtIGluIHRo ZSBpbmRleDsgeWV0Ci0JICogdGhvc2UgdHJhbnNhY3Rpb25zIHdoaWNoIHNlZSB0aGUgZGVsZXRp bmcgb25lIGFzIHN0aWxsLWluLXByb2dyZXNzIHdpbGwKLQkgKiBleHBlY3Qgc3VjaCB0dXBsZXMg dG8gYmUgdGhlcmUgb25jZSB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KLQkgKgotCSAqIFdl IHNvbHZlIHRoaXMgYnkgd2FpdGluZyBmb3IgYWxsIGVuZGFuZ2VyZWQgdHJhbnNhY3Rpb25zIHRv IGV4aXQgYmVmb3JlCi0JICogd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQuCi0JICoKLQkgKiBX ZSBhbHNvIHNldCBBY3RpdmVTbmFwc2hvdCB0byB0aGlzIHNuYXAsIHNpbmNlIGZ1bmN0aW9ucyBp biBpbmRleGVzIG1heQotCSAqIG5lZWQgYSBzbmFwc2hvdC4KLQkgKi8KLQlzbmFwc2hvdCA9IFJl Z2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQlQdXNoQWN0aXZlU25h cHNob3Qoc25hcHNob3QpOwogCS8qCiAJICogTWVyZ2UgY29udGVudCBvZiBhdXhpbGlhcnkgYW5k IHRhcmdldCBpbmRleGVzIC0gaW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4IGVudHJpZXMuCiAJICov Ci0JdmFsaWRhdGVfaW5kZXgodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkLCBhdXhJbmRleFJlbGF0 aW9uSWQsIHNuYXBzaG90KTsKLQlsaW1pdFhtaW4gPSBzbmFwc2hvdC0+eG1pbjsKKwlsaW1pdFht aW4gPSB2YWxpZGF0ZV9pbmRleCh0YWJsZUlkLCBpbmRleFJlbGF0aW9uSWQsIGF1eEluZGV4UmVs YXRpb25JZCk7CiAKLQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCVVucmVnaXN0ZXJTbmFwc2hvdChz bmFwc2hvdCk7CiAJLyoKIAkgKiBUaGUgc25hcHNob3Qgc3Vic3lzdGVtIGNvdWxkIHN0aWxsIGNv bnRhaW4gcmVnaXN0ZXJlZCBzbmFwc2hvdHMgdGhhdAogCSAqIGFyZSBob2xkaW5nIGJhY2sgb3Vy IHByb2Nlc3MncyBhZHZlcnRpc2VkIHhtaW47IGluIHBhcnRpY3VsYXIsIGlmCkBAIC0xODUzLDgg KzE4MzEsOCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkvKgogCSAqIFRoZSBpbmRleCBp cyBub3cgdmFsaWQgaW4gdGhlIHNlbnNlIHRoYXQgaXQgY29udGFpbnMgYWxsIGN1cnJlbnRseQog CSAqIGludGVyZXN0aW5nIHR1cGxlcy4gIEJ1dCBzaW5jZSBpdCBtaWdodCBub3QgY29udGFpbiB0 dXBsZXMgZGVsZXRlZCBqdXN0Ci0JICogYmVmb3JlIHRoZSByZWZlcmVuY2Ugc25hcCB3YXMgdGFr ZW4sIHdlIGhhdmUgdG8gd2FpdCBvdXQgYW55Ci0JICogdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQg aGF2ZSBvbGRlciBzbmFwc2hvdHMuCisJICogYmVmb3JlIHRoZSBsYXN0IHNuYXBzaG90IGR1cmlu ZyB2YWxpZGF0aW5nIHdhcyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0CisJICogb3V0IGFueSB0cmFu c2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkgKi8KIAlJTkpFQ1RJ T05fUE9JTlQoImRlZmluZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkIiwgTlVMTCk7CiAJcGdzdGF0 X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCkBAIC00NDAy LDcgKzQzODAsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0 bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCXsKIAkJUmVpbmRleEluZGV4 SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKIAkJVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW47Ci0J CVNuYXBzaG90CXNuYXBzaG90OwogCiAJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKQEAg LTQ0MTcsMTMgKzQzOTQsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVp bmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlpZiAobmV3aWR4 LT5zYWZlKQogCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKIAotCQkvKgotCQkgKiBUYWtl IHRoZSAicmVmZXJlbmNlIHNuYXBzaG90IiB0aGF0IHdpbGwgYmUgdXNlZCBieSB2YWxpZGF0ZV9p bmRleCgpCi0JCSAqIHRvIGZpbHRlciBjYW5kaWRhdGUgdHVwbGVzLgotCQkgKi8KLQkJc25hcHNo b3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0JCVB1c2hB Y3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7Ci0KIAkJLyoKIAkJICogVXBkYXRlIHByb2dyZXNzIGZv ciB0aGUgaW5kZXggdG8gYnVpbGQsIHdpdGggdGhlIGNvcnJlY3QgcGFyZW50CiAJCSAqIHRhYmxl IGludm9sdmVkLgpAQCAtNDQzNSwxNiArNDQwNSw4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWlu CiAJCXByb2dyZXNzX3ZhbHNbM10gPSBuZXdpZHgtPmFtSWQ7CiAJCXBnc3RhdF9wcm9ncmVzc191 cGRhdGVfbXVsdGlfcGFyYW0oNCwgcHJvZ3Jlc3NfaW5kZXgsIHByb2dyZXNzX3ZhbHMpOwogCi0J CXZhbGlkYXRlX2luZGV4KG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRleElkLCBuZXdpZHgt PmF1eEluZGV4SWQsIHNuYXBzaG90KTsKLQotCQkvKgotCQkgKiBXZSBjYW4gbm93IGRvIGF3YXkg d2l0aCBvdXIgYWN0aXZlIHNuYXBzaG90LCB3ZSBzdGlsbCBuZWVkIHRvIHNhdmUKLQkJICogdGhl IHhtaW4gbGltaXQgdG8gd2FpdCBmb3Igb2xkZXIgc25hcHNob3RzLgotCQkgKi8KLQkJbGltaXRY bWluID0gc25hcHNob3QtPnhtaW47Ci0KLQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJVW5yZWdp c3RlclNuYXBzaG90KHNuYXBzaG90KTsKKwkJbGltaXRYbWluID0gdmFsaWRhdGVfaW5kZXgobmV3 aWR4LT50YWJsZUlkLCBuZXdpZHgtPmluZGV4SWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CisJCUFz c2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkJLyoKIAkJICog VG8gZW5zdXJlIG5vIGRlYWRsb2Nrcywgd2UgbXVzdCBjb21taXQgYW5kIHN0YXJ0IHlldCBhbm90 aGVyCkBAIC00NDU3LDcgKzQ0MTksNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29u c3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkvKgog CQkgKiBUaGUgaW5kZXggaXMgbm93IHZhbGlkIGluIHRoZSBzZW5zZSB0aGF0IGl0IGNvbnRhaW5z IGFsbCBjdXJyZW50bHkKIAkJICogaW50ZXJlc3RpbmcgdHVwbGVzLiAgQnV0IHNpbmNlIGl0IG1p Z2h0IG5vdCBjb250YWluIHR1cGxlcyBkZWxldGVkCi0JCSAqIGp1c3QgYmVmb3JlIHRoZSByZWZl cmVuY2Ugc25hcCB3YXMgdGFrZW4sIHdlIGhhdmUgdG8gd2FpdCBvdXQgYW55CisJCSAqIGp1c3Qg YmVmb3JlIHRoZSBsYXRlc3Qgc25hcCB3YXMgdGFrZW4sIHdlIGhhdmUgdG8gd2FpdCBvdXQgYW55 CiAJCSAqIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGhhdmUgb2xkZXIgc25hcHNob3RzLgogCQkg KgogCQkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBvciBYaWQgaW4gdGhpcyB0 cmFuc2FjdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IGJkNDY3ODU4MDFjLi40NzY2ZWY1YmJj YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC02OTYsMTAgKzY5Niw5IEBAIHR5cGVkZWYgc3RydWN0 IFRhYmxlQW1Sb3V0aW5lCiAJCQkJCQkJCQkJICAgVGFibGVTY2FuRGVzYyBzY2FuKTsKIAogCS8q IHNlZSB0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuIGZvciByZWZlcmVuY2UgYWJvdXQgcGFyYW1l dGVycyAqLwotCXZvaWQgCQkoKmluZGV4X3ZhbGlkYXRlX3NjYW4pIChSZWxhdGlvbiB0YWJsZV9y ZWwsCisJVHJhbnNhY3Rpb25JZCAJCSgqaW5kZXhfdmFsaWRhdGVfc2NhbikgKFJlbGF0aW9uIHRh YmxlX3JlbCwKIAkJCQkJCQkJCQkJCVJlbGF0aW9uIGluZGV4X3JlbCwKIAkJCQkJCQkJCQkJCXN0 cnVjdCBJbmRleEluZm8gKmluZGV4X2luZm8sCi0JCQkJCQkJCQkJCQlTbmFwc2hvdCBzbmFwc2hv dCwKIAkJCQkJCQkJCQkJCXN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlLAogCQkJCQkJ CQkJCQkJc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4X3N0YXRlKTsKIApAQCAtMTc5OSwx OCArMTc5OCwxNiBAQCB0YWJsZV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIHRhYmxl X3JlbCwKICAqIE5vdGU6IGl0IGlzIHJlc3BvbnNpYmlsaXR5IG9mIHRoYXQgZnVuY3Rpb24gdG8g Y2xvc2Ugc29ydHN0YXRlcyBpbgogICogYm90aCBgc3RhdGVgIGFuZCBgYXV4c3RhdGVgLgogICov Ci1zdGF0aWMgaW5saW5lIHZvaWQKK3N0YXRpYyBpbmxpbmUgVHJhbnNhY3Rpb25JZAogdGFibGVf aW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCiAJCQkJCQkgIFJlbGF0aW9u IGluZGV4X3JlbCwKIAkJCQkJCSAgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhfaW5mbywKLQkJCQkJ CSAgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkgIHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUg KnN0YXRlLAogCQkJCQkJICBzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICphdXhzdGF0ZSkKIHsK IAlyZXR1cm4gdGFibGVfcmVsLT5yZF90YWJsZWFtLT5pbmRleF92YWxpZGF0ZV9zY2FuKHRhYmxl X3JlbCwKIAkJCQkJCQkJCQkJCQkgIGluZGV4X3JlbCwKIAkJCQkJCQkJCQkJCQkgIGluZGV4X2lu Zm8sCi0JCQkJCQkJCQkJCQkJICBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJCQkgIHN0YXRlLAogCQkJ CQkJCQkJCQkJCSAgYXV4c3RhdGUpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L3RyYW5zYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKaW5kZXggN2Q4MmNkMmVi NTYuLjE1ZTM0NWM3YTE5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKQEAgLTM1NSw2ICszNTUsMjEgQEAg Tm9ybWFsVHJhbnNhY3Rpb25JZE9sZGVyKFRyYW5zYWN0aW9uSWQgYSwgVHJhbnNhY3Rpb25JZCBi KQogCXJldHVybiBiOwogfQogCisvKiByZXR1cm4gdGhlIG5ld2VyIG9mIHRoZSB0d28gSURzICov CitzdGF0aWMgaW5saW5lIFRyYW5zYWN0aW9uSWQKK1RyYW5zYWN0aW9uSWROZXdlcihUcmFuc2Fj dGlvbklkIGEsIFRyYW5zYWN0aW9uSWQgYikKK3sKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KGEpKQorCQlyZXR1cm4gYjsKKworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoYikpCisJCXJl dHVybiBhOworCisJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGEsIGIpKQorCQlyZXR1cm4gYTsK KwlyZXR1cm4gYjsKK30KKwogLyogcmV0dXJuIHRoZSBuZXdlciBvZiB0aGUgdHdvIElEcyAqLwog c3RhdGljIGlubGluZSBGdWxsVHJhbnNhY3Rpb25JZAogRnVsbFRyYW5zYWN0aW9uSWROZXdlcihG dWxsVHJhbnNhY3Rpb25JZCBhLCBGdWxsVHJhbnNhY3Rpb25JZCBiKQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmlu ZGV4IGQ1MWI0ZThjZDEzLi42Yzc4MDY4MTk2NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMTUyLDcg KzE1Miw3IEBAIGV4dGVybiB2b2lkIGluZGV4X2J1aWxkKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwK IAkJCQkJCWJvb2wgaXNyZWluZGV4LAogCQkJCQkJYm9vbCBwYXJhbGxlbCk7CiAKLWV4dGVybiB2 b2lkIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJ ZCwgU25hcHNob3Qgc25hcHNob3QpOworZXh0ZXJuIFRyYW5zYWN0aW9uSWQgdmFsaWRhdGVfaW5k ZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkKTsKIAogZXh0ZXJuIHZv aWQgaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKE9pZCBpbmRleElkLCBJbmRleFN0YXRlRmxhZ3NBY3Rp b24gYWN0aW9uKTsKIAotLSAKMi40My4wCgo= --00000000000027fe8906381ae2a2 Content-Type: application/octet-stream; name="v21-only-part-3-0004-Track-and-drop-auxiliary-indexes-in-.patch_" Content-Disposition: attachment; filename="v21-only-part-3-0004-Track-and-drop-auxiliary-indexes-in-.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8v714 RnJvbSBjNTViNWU3MjY4MWFlNDNhMjcwNTg5MmU3MmZlMjNhNWEzZDk2MjlhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDozNjozMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIxLW9ubHktcGFydC0zIDQvNl0gVHJhY2sgYW5kIGRyb3AgYXV4aWxpYXJ5IGluZGV4 ZXMgaW4KIERST1AvUkVJTkRFWAoKRHVyaW5nIGNvbmN1cnJlbnQgaW5kZXggb3BlcmF0aW9ucywg YXV4aWxpYXJ5IGluZGV4ZXMgbWF5IGJlIGxlZnQgYXMgb3JwaGFuZWQgb2JqZWN0cyB3aGVuIGVy cm9ycyBvY2N1ciAoanVuayBhdXhpbGlhcnkgaW5kZXhlcykuCgpUaGlzIHBhdGNoIGltcHJvdmVz IHRoZSBoYW5kbGluZyBvZiBzdWNoIGF1eGlsaWFyeSBpbmRleGVzOgotIGFkZCBhdXhpbGlhcnlG b3JJbmRleElkIHBhcmFtZXRlciB0byBpbmRleF9jcmVhdGUoKSB0byB0cmFjayBkZXBlbmRlbmNp ZXMgYmV0d2VlbiBtYWluIGFuZCBhdXhpbGlhcnkgaW5kZXhlcwotIGF1dG9tYXRpY2FsbHkgZHJv cCBhdXhpbGlhcnkgaW5kZXhlcyB3aGVuIHRoZSBtYWluIGluZGV4IGlzIGRyb3BwZWQKLSBkZWxl dGUganVuayBhdXhpbGlhcnkgaW5kZXhlcyBwcm9wZXJseSBkdXJpbmcgUkVJTkRFWCBvcGVyYXRp b25zCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbCAgICAgICAgIHwgIDE0 ICsrLQogZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwgICAgICAgICAgICAgIHwgICA4ICst CiBzcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyAgICAgICAgICAgfCAgIDIgKy0KIHNy Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICB8ICA3MSArKysrKysrKysr LS0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYyAgICAgICAgICAgIHwgIDU3ICsr KysrKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgIHwgIDM4ICsr KysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgfCAgNDgg KysrKysrKysrLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgICAgICAgICAgICAgIHwg ICAzICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAgICAgICAgfCAgIDEg Kwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgIHwgICAyICsKIHNy Yy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IHwgMTA1ICsrKysrKysrKysrKysr KysrKystLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbCAgICAgIHwgIDU3 ICsrKysrKysrKystCiAxNCBmaWxlcyBjaGFuZ2VkLCAzNjcgaW5zZXJ0aW9ucygrKSwgNDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKaW5kZXggMzBkYjA3OWM4ZDgu LmNmMTRmNDc0OTQ2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKQEAgLTY2OCwxMCAr NjY4LDE2IEBAIEluZGV4ZXM6CiAgICAgImlkeF9jY2F1eCIgc3RpciAoY29sKSBJTlZBTElECiA8 L3Byb2dyYW1saXN0aW5nPgogCi0gICAgVGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5Ci0gICAgbWV0 aG9kIGluIHN1Y2ggY2FzZXMgaXMgdG8gZHJvcCB0aGVzZSBpbmRleGVzIGFuZCB0cnkgYWdhaW4g dG8gcGVyZm9ybQotICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1h bmQ+LiAoQW5vdGhlciBwb3NzaWJpbGl0eSBpcwotICAgIHRvIHJlYnVpbGQgdGhlIGluZGV4IHdp dGggPGNvbW1hbmQ+UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+KS4KKyAgICBU aGUgcmVjb21tZW5kZWQgcmVjb3ZlcnkgbWV0aG9kIGluIHN1Y2ggY2FzZXMgaXMgdG8gZHJvcCB0 aGUgaW5kZXggd2l0aAorICAgIDxjb21tYW5kPkRST1AgSU5ERVg8L2NvbW1hbmQ+LiBUaGUgYXV4 aWxpYXJ5IGluZGV4IChzdWZmaXhlZCB3aXRoCisgICAgPGxpdGVyYWw+Y2NhdXg8L2xpdGVyYWw+ KSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZHJvcHBlZCB3aGVuIHRoZSBtYWluCisgICAgaW5kZXgg aXMgZHJvcHBlZC4gQWZ0ZXIgZHJvcHBpbmcgdGhlIGluZGV4ZXMsIHlvdSBjYW4gdHJ5IGFnYWlu IHRvIHBlcmZvcm0KKyAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZPC9jb21t YW5kPi4gKEFub3RoZXIgcG9zc2liaWxpdHkgaXMgdG8KKyAgICByZWJ1aWxkIHRoZSBpbmRleCB3 aXRoIDxjb21tYW5kPlJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiwKKyAgICB3 aGljaCB3aWxsIGFsc28gaGFuZGxlIGNsZWFudXAgb2YgYW55IGludmFsaWQgYXV4aWxpYXJ5IGlu ZGV4ZXMuKQorICAgIElmIHRoZSBvbmx5IGludmFsaWQgaW5kZXggaXMgb25lIHN1ZmZpeGVkIDxs aXRlcmFsPmNjYXV4PC9saXRlcmFsPgorICAgIHJlY29tbWVuZGVkIHJlY292ZXJ5IG1ldGhvZCBp cyBqdXN0IDxsaXRlcmFsPkRST1AgSU5ERVg8L2xpdGVyYWw+CisgICAgZm9yIHRoYXQgaW5kZXgu CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9y ZWluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbAppbmRleCA0ZWQzYzk2 OTAxMi4uZDYyNzkxZmY5YzMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCkBAIC00NzcsMTEgKzQ3Nywx NSBAQCBJbmRleGVzOgogICAgIDxsaXRlcmFsPl9jY25ldzwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+ X2NjYXV4PC9saXRlcmFsPiwgdGhlbiBpdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNpZW50IG9y IGF1eGlsaWFyeQogICAgIGluZGV4IGNyZWF0ZWQgZHVyaW5nIHRoZSBjb25jdXJyZW50IG9wZXJh dGlvbiwgYW5kIHRoZSByZWNvbW1lbmRlZAogICAgIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBkcm9w IHRoZXNlIGluZGV4ZXMgdXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0ZXJhbD4sCi0gICAg dGhlbiBhdHRlbXB0IDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBhZ2Fp bi4KKyAgICB0aGVuIGF0dGVtcHQgPGNvbW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1h bmQ+IGFnYWluLiBUaGUgYXV4aWxpYXJ5IGluZGV4CisgICAgKHN1ZmZpeGVkIHdpdGggPGxpdGVy YWw+X2NjYXV4PC9saXRlcmFsPikgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQKKyAgICBh bG9uZyB3aXRoIGl0cyBtYWluIGluZGV4LgogICAgIElmIHRoZSBpbnZhbGlkIGluZGV4IGlzIGlu c3RlYWQgc3VmZml4ZWQgPGxpdGVyYWw+X2Njb2xkPC9saXRlcmFsPiwKICAgICBpdCBjb3JyZXNw b25kcyB0byB0aGUgb3JpZ2luYWwgaW5kZXggd2hpY2ggY291bGQgbm90IGJlIGRyb3BwZWQ7CiAg ICAgdGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBqdXN0IGRyb3Agc2FpZCBp bmRleCwgc2luY2UgdGhlCi0gICAgcmVidWlsZCBwcm9wZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bC4K KyAgICByZWJ1aWxkIHByb3BlciBoYXMgYmVlbiBzdWNjZXNzZnVsLiBJZiB0aGUgb25seQorICAg IGludmFsaWQgaW5kZXggaXMgb25lIHN1ZmZpeGVkIDxsaXRlcmFsPmNjYXV4PC9saXRlcmFsPiBy ZWNvbW1lbmRlZAorICAgIHJlY292ZXJ5IG1ldGhvZCBpcyBqdXN0IDxsaXRlcmFsPkRST1AgSU5E RVg8L2xpdGVyYWw+IGZvciB0aGF0IGluZGV4LgogICAgIEEgbm9uemVybyBudW1iZXIgbWF5IGJl IGFwcGVuZGVkIHRvIHRoZSBzdWZmaXggb2YgdGhlIGludmFsaWQgaW5kZXgKICAgICBuYW1lcyB0 byBrZWVwIHRoZW0gdW5pcXVlLCBsaWtlIDxsaXRlcmFsPl9jY25ldzE8L2xpdGVyYWw+LAogICAg IDxsaXRlcmFsPl9jY29sZDI8L2xpdGVyYWw+LCBldGMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5j CmluZGV4IDE4MzE2YTM5NjhiLi5hYjRjM2UyZmI0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9kZXBlbmRlbmN5LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5 LmMKQEAgLTI4Niw3ICsyODYsNyBAQCBwZXJmb3JtRGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVz cyAqb2JqZWN0LAogCSAqIEFjcXVpcmUgZGVsZXRpb24gbG9jayBvbiB0aGUgdGFyZ2V0IG9iamVj dC4gIChJZGVhbGx5IHRoZSBjYWxsZXIgaGFzCiAJICogZG9uZSB0aGlzIGFscmVhZHksIGJ1dCBt YW55IHBsYWNlcyBhcmUgc2xvcHB5IGFib3V0IGl0LikKIAkgKi8KLQlBY3F1aXJlRGVsZXRpb25M b2NrKG9iamVjdCwgMCk7CisJQWNxdWlyZURlbGV0aW9uTG9jayhvYmplY3QsIGZsYWdzKTsKIAog CS8qCiAJICogQ29uc3RydWN0IGEgbGlzdCBvZiBvYmplY3RzIHRvIGRlbGV0ZSAoaWUsIHRoZSBn aXZlbiBvYmplY3QgcGx1cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5j IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGJlNTc0NGMzYjQ4Li45YWU5MWYx ZGU3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtNzc1LDYgKzc3NSw4IEBAIGluZGV4X2NyZWF0ZShS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCSAgICgoZmxhZ3MgJiBJTkRFWF9DUkVBVEVfQUREX0NP TlNUUkFJTlQpICE9IDApKTsKIAkvKiBwYXJ0aXRpb25lZCBpbmRleGVzIG11c3QgbmV2ZXIgYmUg ImJ1aWx0IiBieSB0aGVtc2VsdmVzICovCiAJQXNzZXJ0KCFwYXJ0aXRpb25lZCB8fCAoZmxhZ3Mg JiBJTkRFWF9DUkVBVEVfU0tJUF9CVUlMRCkpOworCS8qIGlpX0F1eGlsaWFyeUZvckluZGV4SWQg YW5kIElOREVYX0NSRUFURV9BVVhJTElBUlkgYXJlIHJlcXVpcmVkIGJvdGggb3IgbmVpdGhlciAq LworCUFzc2VydChPaWRJc1ZhbGlkKGluZGV4SW5mby0+aWlfQXV4aWxpYXJ5Rm9ySW5kZXhJZCkg PT0gYXV4aWxpYXJ5KTsKIAogCXJlbGtpbmQgPSBwYXJ0aXRpb25lZCA/IFJFTEtJTkRfUEFSVElU SU9ORURfSU5ERVggOiBSRUxLSU5EX0lOREVYOwogCWlzX2V4Y2x1c2lvbiA9IChpbmRleEluZm8t PmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMKTsKQEAgLTExODAsNiArMTE4MiwxNSBAQCBpbmRleF9j cmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNl bGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX1BBUlRJVElPTl9TRUMpOwogCQl9CiAKKwkJLyoK KwkJICogUmVjb3JkIGRlcGVuZGVuY3kgb24gdGhlIG1haW4gaW5kZXggaW4gY2FzZSBvZiBhdXhp bGlhcnkgaW5kZXguCisJCSAqLworCQlpZiAoT2lkSXNWYWxpZChpbmRleEluZm8tPmlpX0F1eGls aWFyeUZvckluZGV4SWQpKQorCQl7CisJCQlPYmplY3RBZGRyZXNzU2V0KHJlZmVyZW5jZWQsIFJl bGF0aW9uUmVsYXRpb25JZCwgaW5kZXhJbmZvLT5paV9BdXhpbGlhcnlGb3JJbmRleElkKTsKKwkJ CXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9BVVRP KTsKKwkJfQorCiAJCS8qIHBsYWNlaG9sZGVyIGZvciBub3JtYWwgZGVwZW5kZW5jaWVzICovCiAJ CWFkZHJzID0gbmV3X29iamVjdF9hZGRyZXNzZXMoKTsKIApAQCAtMTQxMiw3ICsxNDIzLDggQEAg aW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lk IG9sZEluZGV4SWQsCiAJCQkJCQkJdHJ1ZSwKIAkJCQkJCQlpbmRleFJlbGF0aW9uLT5yZF9pbmRh bS0+YW1zdW1tYXJpemluZywKIAkJCQkJCQlvbGRJbmZvLT5paV9XaXRob3V0T3ZlcmxhcHMsCi0J CQkJCQkJZmFsc2UpOworCQkJCQkJCWZhbHNlLAorCQkJCQkJCUludmFsaWRPaWQpOwogCiAJLyoK IAkgKiBFeHRyYWN0IHRoZSBsaXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhlIGNvbHVtbiBudW1i ZXJzIGZvciB0aGUgbmV3CkBAIC0xNTgwLDcgKzE1OTIsOCBAQCBpbmRleF9jb25jdXJyZW50bHlf Y3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBtYWluSW5kZXhJZCwKIAkJCQkJ CQl0cnVlLAogCQkJCQkJCWZhbHNlLAkvKiBhdXggYXJlIG5vdCBzdW1tYXJpemluZyAqLwogCQkJ CQkJCWZhbHNlLAkvKiBhdXggYXJlIG5vdCB3aXRob3V0IG92ZXJsYXBzICovCi0JCQkJCQkJdHJ1 ZQkvKiBhdXhpbGlhcnkgKi8pOworCQkJCQkJCXRydWUJLyogYXV4aWxpYXJ5ICovLAorCQkJCQkJ CW1haW5JbmRleElkIC8qIGF1eGlsaWFyeUZvckluZGV4SWQgKi8pOwogCiAJLyoKIAkgKiBFeHRy YWN0IHRoZSBsaXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhlIGNvbHVtbiBudW1iZXJzIGZvciB0 aGUgbmV3CkBAIC0yNjE2LDcgKzI2MjksOCBAQCBCdWlsZEluZGV4SW5mbyhSZWxhdGlvbiBpbmRl eCkKIAkJCQkJICAgZmFsc2UsCiAJCQkJCSAgIGluZGV4LT5yZF9pbmRhbS0+YW1zdW1tYXJpemlu ZywKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYmIGluZGV4U3RydWN0LT5p bmRpc3VuaXF1ZSwKLQkJCQkJICAgaW5kZXgtPnJkX3JlbC0+cmVsYW0gPT0gU1RJUl9BTV9PSUQg LyogYXV4aWxpYXJ5IGlmZiBTVElSICovKTsKKwkJCQkJICAgaW5kZXgtPnJkX3JlbC0+cmVsYW0g PT0gU1RJUl9BTV9PSUQgLyogYXV4aWxpYXJ5IGlmZiBTVElSICovLAorCQkJCQkgICBJbnZhbGlk T2lkIC8qIGF1eGlsaWFyeV9mb3JfaW5kZXhfaWQgaXMgc2V0IG9ubHkgZHVyaW5nIGJ1aWxkICov KTsKIAogCS8qIGZpbGwgaW4gYXR0cmlidXRlIG51bWJlcnMgKi8KIAlmb3IgKGkgPSAwOyBpIDwg bnVtQXR0czsgaSsrKQpAQCAtMjY3Nyw3ICsyNjkxLDggQEAgQnVpbGREdW1teUluZGV4SW5mbyhS ZWxhdGlvbiBpbmRleCkKIAkJCQkJICAgZmFsc2UsCiAJCQkJCSAgIGluZGV4LT5yZF9pbmRhbS0+ YW1zdW1tYXJpemluZywKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYmIGlu ZGV4U3RydWN0LT5pbmRpc3VuaXF1ZSwKLQkJCQkJICAgaW5kZXgtPnJkX3JlbC0+cmVsYW0gPT0g U1RJUl9BTV9PSUQgLyogYXV4aWxpYXJ5IGlmZiBTVElSICovKTsKKwkJCQkJICAgaW5kZXgtPnJk X3JlbC0+cmVsYW0gPT0gU1RJUl9BTV9PSUQgLyogYXV4aWxpYXJ5IGlmZiBTVElSICovLAorCQkJ CQkgICBJbnZhbGlkT2lkKTsKIAogCS8qIGZpbGwgaW4gYXR0cmlidXRlIG51bWJlcnMgKi8KIAlm b3IgKGkgPSAwOyBpIDwgbnVtQXR0czsgaSsrKQpAQCAtMzg0Nyw2ICszODYyLDcgQEAgcmVpbmRl eF9pbmRleChjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIGluZGV4SWQsCiAJCQkJaGVhcFJl bGF0aW9uOwogCU9pZAkJCWhlYXBJZDsKIAlPaWQJCQlzYXZlX3VzZXJpZDsKKwlPaWQJCQlqdW5r QXV4SW5kZXhJZDsKIAlpbnQJCQlzYXZlX3NlY19jb250ZXh0OwogCWludAkJCXNhdmVfbmVzdGxl dmVsOwogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKQEAgLTM5MDMsNiArMzkxOSwxOSBAQCByZWlu ZGV4X2luZGV4KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgaW5kZXhJZCwKIAkJcGdzdGF0 X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSgyLCBwcm9ncmVzc19jb2xzLCBwcm9ncmVzc192 YWxzKTsKIAl9CiAKKwkvKiBDaGVjayBmb3IgdGhlIGF1eGlsaWFyeSBpbmRleCBmb3IgdGhhdCBp bmRleCwgaXQgbmVlZHMgdG8gZHJvcHBlZCAqLworCWp1bmtBdXhJbmRleElkID0gZ2V0X2F1eGls aWFyeV9pbmRleChpbmRleElkKTsKKwlpZiAoT2lkSXNWYWxpZChqdW5rQXV4SW5kZXhJZCkpCisJ eworCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJl bGF0aW9uSWQ7CisJCW9iamVjdC5vYmplY3RJZCA9IGp1bmtBdXhJbmRleElkOworCQlvYmplY3Qu b2JqZWN0U3ViSWQgPSAwOworCQlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklD VCwKKwkJCQkJCQkJIFBFUkZPUk1fREVMRVRJT05fSU5URVJOQUwgfAorCQkJCQkJCQkgUEVSRk9S TV9ERUxFVElPTl9RVUlFVExZKTsKKwl9CisKIAkvKgogCSAqIE9wZW4gdGhlIHRhcmdldCBpbmRl eCByZWxhdGlvbiBhbmQgZ2V0IGFuIGV4Y2x1c2l2ZSBsb2NrIG9uIGl0LCB0bwogCSAqIGVuc3Vy ZSB0aGF0IG5vIG9uZSBlbHNlIGlzIHRvdWNoaW5nIHRoaXMgcGFydGljdWxhciBpbmRleC4KQEAg LTQxOTEsNyArNDIyMCw4IEBAIHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0 bXQsIE9pZCByZWxpZCwgaW50IGZsYWdzLAogewogCVJlbGF0aW9uCXJlbDsKIAlPaWQJCQl0b2Fz dF9yZWxpZDsKLQlMaXN0CSAgICppbmRleElkczsKKwlMaXN0CSAgICppbmRleElkcywKKwkJCSAg ICphdXhJbmRleElkcyA9IE5JTDsKIAljaGFyCQlwZXJzaXN0ZW5jZTsKIAlib29sCQlyZXN1bHQg PSBmYWxzZTsKIAlMaXN0Q2VsbCAgICppbmRleElkOwpAQCAtNDI4MCwxMyArNDMxMCwzMCBAQCBy ZWluZGV4X3JlbGF0aW9uKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsaWQsIGludCBm bGFncywKIAllbHNlCiAJCXBlcnNpc3RlbmNlID0gcmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNl OwogCisJZm9yZWFjaChpbmRleElkLCBpbmRleElkcykKKwl7CisJCU9pZAkJCWluZGV4T2lkID0g bGZpcnN0X29pZChpbmRleElkKTsKKwkJT2lkCQkJaW5kZXhBbSA9IGdldF9yZWxfcmVsYW0oaW5k ZXhPaWQpOworCisJCS8qIEFsbCBTVElSIGluZGV4ZXMgYXJlIGF1eGlsaWFyeSBpbmRleGVzICov CisJCWlmIChpbmRleEFtID09IFNUSVJfQU1fT0lEKQorCQl7CisJCQlpZiAoZmxhZ3MgJiBSRUlO REVYX1JFTF9TVVBQUkVTU19JTkRFWF9VU0UpCisJCQkJUmVtb3ZlUmVpbmRleFBlbmRpbmcoaW5k ZXhPaWQpOworCQkJYXV4SW5kZXhJZHMgPSBsYXBwZW5kX29pZChhdXhJbmRleElkcywgaW5kZXhP aWQpOworCQl9CisJfQorCiAJLyogUmVpbmRleCBhbGwgdGhlIGluZGV4ZXMuICovCiAJaSA9IDE7 CiAJZm9yZWFjaChpbmRleElkLCBpbmRleElkcykKIAl7CiAJCU9pZAkJCWluZGV4T2lkID0gbGZp cnN0X29pZChpbmRleElkKTsKIAkJT2lkCQkJaW5kZXhOYW1lc3BhY2VJZCA9IGdldF9yZWxfbmFt ZXNwYWNlKGluZGV4T2lkKTsKLQkJT2lkCQkJaW5kZXhBbSA9IGdldF9yZWxfcmVsYW0oaW5kZXhP aWQpOworCisJCS8qIEF1eGlsaWFyeSBpbmRleGVzIGFyZSBnb2luZyB0byBiZSBkcm9wcGVkIGR1 cmluZyBtYWluIGluZGV4IHJlYnVpbGQgKi8KKwkJaWYgKGxpc3RfbWVtYmVyX29pZChhdXhJbmRl eElkcywgaW5kZXhPaWQpKQorCQkJY29udGludWU7CiAKIAkJLyoKIAkJICogU2tpcCBhbnkgaW52 YWxpZCBpbmRleGVzIG9uIGEgVE9BU1QgdGFibGUuICBUaGVzZSBjYW4gb25seSBiZQpAQCAtNDMx MiwxOCArNDM1OSw2IEBAIHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQs IE9pZCByZWxpZCwgaW50IGZsYWdzLAogCQkJY29udGludWU7CiAJCX0KIAotCQlpZiAoaW5kZXhB bSA9PSBTVElSX0FNX09JRCkKLQkJewotCQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCSBlcnJtc2coInNraXBwaW5n IHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXMuJXNcIiIsCi0JCQkJCQkJZ2V0X25hbWVz cGFjZV9uYW1lKGluZGV4TmFtZXNwYWNlSWQpLAotCQkJCQkJCWdldF9yZWxfbmFtZShpbmRleE9p ZCkpKSk7Ci0JCQlpZiAoZmxhZ3MgJiBSRUlOREVYX1JFTF9TVVBQUkVTU19JTkRFWF9VU0UpCi0J CQkJUmVtb3ZlUmVpbmRleFBlbmRpbmcoaW5kZXhPaWQpOwotCQkJY29udGludWU7Ci0JCX0KLQog CQlyZWluZGV4X2luZGV4KHN0bXQsIGluZGV4T2lkLCAhKGZsYWdzICYgUkVJTkRFWF9SRUxfQ0hF Q0tfQ09OU1RSQUlOVFMpLAogCQkJCQkgIHBlcnNpc3RlbmNlLCBwYXJhbXMpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2RlcGVuZC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19kZXBlbmQuYwppbmRleCBjOGIxMWY4ODdlMi4uMWMyNzVlZjM3M2YgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19kZXBlbmQuYwpAQCAtMTAzNSw2ICsxMDM1LDYzIEBAIGdldF9pbmRleF9jb25zdHJhaW50 KE9pZCBpbmRleElkKQogCXJldHVybiBjb25zdHJhaW50SWQ7CiB9CiAKKy8qCisgKiBnZXRfYXV4 aWxpYXJ5X2luZGV4CisgKgkJR2l2ZW4gdGhlIE9JRCBvZiBhbiBpbmRleCwgcmV0dXJuIHRoZSBP SUQgb2YgaXRzIGF1eGlsaWFyeQorICoJCWluZGV4LCBvciBJbnZhbGlkT2lkIGlmIHRoZXJlIGlz IG5vIGF1eGlsaWFyeSBpbmRleC4KKyAqLworT2lkCitnZXRfYXV4aWxpYXJ5X2luZGV4KE9pZCBp bmRleElkKQoreworCU9pZAkJCWF1eGlsaWFyeUluZGV4T2lkID0gSW52YWxpZE9pZDsKKwlSZWxh dGlvbglkZXBSZWw7CisJU2NhbktleURhdGEga2V5WzNdOworCVN5c1NjYW5EZXNjIHNjYW47CisJ SGVhcFR1cGxlCXR1cDsKKworCS8qIFNlYXJjaCB0aGUgZGVwZW5kZW5jeSB0YWJsZSBmb3IgdGhl IGluZGV4ICovCisJZGVwUmVsID0gdGFibGVfb3BlbihEZXBlbmRSZWxhdGlvbklkLCBBY2Nlc3NT aGFyZUxvY2spOworCisJU2NhbktleUluaXQoJmtleVswXSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9y ZWZjbGFzc2lkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmpl Y3RJZEdldERhdHVtKFJlbGF0aW9uUmVsYXRpb25JZCkpOworCVNjYW5LZXlJbml0KCZrZXlbMV0s CisJCQkJQW51bV9wZ19kZXBlbmRfcmVmb2JqaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVy LCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0oaW5kZXhJZCkpOworCVNjYW5LZXlJbml0 KCZrZXlbMl0sCisJCQkJQW51bV9wZ19kZXBlbmRfcmVmb2Jqc3ViaWQsCisJCQkJQlRFcXVhbFN0 cmF0ZWd5TnVtYmVyLCBGX0lOVDRFUSwKKwkJCQlJbnQzMkdldERhdHVtKDApKTsKKworCXNjYW4g PSBzeXN0YWJsZV9iZWdpbnNjYW4oZGVwUmVsLCBEZXBlbmRSZWZlcmVuY2VJbmRleElkLCB0cnVl LAorCQkJCQkJCSAgTlVMTCwgMywga2V5KTsKKworCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQo dHVwID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlGb3JtX3BnX2RlcGVuZCBkZXBy ZWMgPSAoRm9ybV9wZ19kZXBlbmQpIEdFVFNUUlVDVCh0dXApOworCisJCS8qCisJCSAqIFdlIGFz c3VtZSBhbnkgQVVUTyBkZXBlbmRlbmN5IG9uIGluZGV4IHdpdGggcmVsX2tpbmQKKwkJICogb2Yg UkVMS0lORF9JTkRFWCBpcyB0aGF0IHdlIGFyZSBsb29raW5nIGZvci4KKwkJICovCisJCWlmIChk ZXByZWMtPmNsYXNzaWQgPT0gUmVsYXRpb25SZWxhdGlvbklkICYmCisJCQkoZGVwcmVjLT5kZXB0 eXBlID09IERFUEVOREVOQ1lfQVVUTykgJiYKKwkJCWdldF9yZWxfcmVsa2luZChkZXByZWMtPm9i amlkKSA9PSBSRUxLSU5EX0lOREVYKQorCQl7CisJCQlhdXhpbGlhcnlJbmRleE9pZCA9IGRlcHJl Yy0+b2JqaWQ7CisJCQlicmVhazsKKwkJfQorCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7 CisJdGFibGVfY2xvc2UoZGVwUmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIGF1eGls aWFyeUluZGV4T2lkOworfQorCiAvKgogICogZ2V0X2luZGV4X3JlZl9jb25zdHJhaW50cwogICoJ CUdpdmVuIHRoZSBPSUQgb2YgYW4gaW5kZXgsIHJldHVybiB0aGUgT0lEIG9mIGFsbCBmb3JlaWdu IGtleQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCmluZGV4IDljYzRmMDZkYTlmLi4zYWE2NTdjNzljYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwpAQCAtMzA4LDYgKzMwOCw3IEBAIGNyZWF0ZV90b2FzdF90 YWJsZShSZWxhdGlvbiByZWwsIE9pZCB0b2FzdE9pZCwgT2lkIHRvYXN0SW5kZXhPaWQsCiAJaW5k ZXhJbmZvLT5paV9BbSA9IEJUUkVFX0FNX09JRDsKIAlpbmRleEluZm8tPmlpX0FtQ2FjaGUgPSBO VUxMOwogCWluZGV4SW5mby0+aWlfQXV4aWxpYXJ5ID0gZmFsc2U7CisJaW5kZXhJbmZvLT5paV9B dXhpbGlhcnlGb3JJbmRleElkID0gSW52YWxpZE9pZDsKIAlpbmRleEluZm8tPmlpX0NvbnRleHQg PSBDdXJyZW50TWVtb3J5Q29udGV4dDsKIAogCWNvbGxhdGlvbklkc1swXSA9IEludmFsaWRPaWQ7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDM0NjZiZDEzZTRlLi4yNmUzMWE1ZjI5ZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTI0Niw3ICsyNDYsNyBAQCBDaGVja0luZGV4 Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJaW5kZXhJbmZvID0gbWFrZUluZGV4SW5mbyhudW1iZXJP ZkF0dHJpYnV0ZXMsIG51bWJlck9mQXR0cmlidXRlcywKIAkJCQkJCQkgIGFjY2Vzc01ldGhvZElk LCBOSUwsIE5JTCwgZmFsc2UsIGZhbHNlLAogCQkJCQkJCSAgZmFsc2UsIGZhbHNlLCBhbXN1bW1h cml6aW5nLAotCQkJCQkJCSAgaXNXaXRob3V0T3ZlcmxhcHMsIGlzYXV4aWxpYXJ5KTsKKwkJCQkJ CQkgIGlzV2l0aG91dE92ZXJsYXBzLCBpc2F1eGlsaWFyeSwgSW52YWxpZE9pZCk7CiAJdHlwZUlk cyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CiAJY29sbGF0aW9uSWRz ID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKIAlvcGNsYXNzSWRzID0g cGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKQEAgLTk0NCw3ICs5NDQsOCBA QCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJCQkJCQkgIGNvbmN1cnJlbnQsCiAJCQkJCQkJ ICBhbWlzc3VtbWFyaXppbmcsCiAJCQkJCQkJICBzdG10LT5pc3dpdGhvdXRvdmVybGFwcywKLQkJ CQkJCQkgIGZhbHNlKTsKKwkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCSAgSW52YWxpZE9pZCk7CiAK IAl0eXBlSWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKIAljb2xs YXRpb25JZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwpAQCAtMzY4 NCw2ICszNjg1LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAl7CiAJCU9pZAkJCWluZGV4 SWQ7CiAJCU9pZAkJCWF1eEluZGV4SWQ7CisJCU9pZAkJCWp1bmtBdXhJbmRleElkOwogCQlPaWQJ CQl0YWJsZUlkOwogCQlPaWQJCQlhbUlkOwogCQlib29sCQlzYWZlOwkJLyogZm9yIHNldF9pbmRl eHNhZmVfcHJvY2ZsYWdzICovCkBAIC00MDMzLDYgKzQwMzUsNyBAQCBSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29u c3QgUmVpbgogCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHg7CiAJCU9pZAkJCW5ld0luZGV4SWQ7 CiAJCU9pZAkJCWF1eEluZGV4SWQ7CisJCU9pZAkJCWp1bmtBdXhJbmRleElkOwogCQlSZWxhdGlv bglpbmRleFJlbDsKIAkJUmVsYXRpb24JaGVhcFJlbDsKIAkJT2lkCQkJc2F2ZV91c2VyaWQ7CkBA IC00MDQwLDYgKzQwNDMsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVp bmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlpbnQJCQlzYXZl X25lc3RsZXZlbDsKIAkJUmVsYXRpb24JbmV3SW5kZXhSZWw7CiAJCVJlbGF0aW9uCWF1eEluZGV4 UmVsOworCQlSZWxhdGlvbglqdW5rQXV4SW5kZXhSZWw7CiAJCUxvY2tSZWxJZCAgKmxvY2tyZWxp ZDsKIAkJT2lkCQkJdGFibGVzcGFjZWlkOwogCkBAIC00MTEzLDEyICs0MTE3LDE3IEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJCQkJCQkgICB0YWJsZXNwYWNlaWQsCiAJCQkJCQkJ CQkJCQkgICBhdXhDb25jdXJyZW50TmFtZSk7CiAKKwkJLyogU2VhcmNoIGZvciBhdXhpbGlhcnkg aW5kZXggZm9yIHJlaW5kZXhlZCBpbmRleCwgdG8gZHJvcCBpdCAqLworCQlqdW5rQXV4SW5kZXhJ ZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgoaWR4LT5pbmRleElkKTsKKwogCQkvKgogCQkgKiBOb3cg b3BlbiB0aGUgcmVsYXRpb24gb2YgdGhlIG5ldyBpbmRleCwgYSBzZXNzaW9uLWxldmVsIGxvY2sg aXMKIAkJICogYWxzbyBuZWVkZWQgb24gaXQuCiAJCSAqLwogCQluZXdJbmRleFJlbCA9IGluZGV4 X29wZW4obmV3SW5kZXhJZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAkJYXV4SW5kZXhS ZWwgPSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJ CWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkKKwkJCWp1bmtBdXhJbmRleFJlbCA9IGlu ZGV4X29wZW4oanVua0F1eEluZGV4SWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CiAKIAkJ LyoKIAkJICogU2F2ZSB0aGUgbGlzdCBvZiBPSURzIGFuZCBsb2NrcyBpbiBwcml2YXRlIGNvbnRl eHQKQEAgLTQxMjgsNiArNDEzNyw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCW5ld2lk eCA9IHBhbGxvY19vYmplY3QoUmVpbmRleEluZGV4SW5mbyk7CiAJCW5ld2lkeC0+aW5kZXhJZCA9 IG5ld0luZGV4SWQ7CiAJCW5ld2lkeC0+YXV4SW5kZXhJZCA9IGF1eEluZGV4SWQ7CisJCW5ld2lk eC0+anVua0F1eEluZGV4SWQgPSBqdW5rQXV4SW5kZXhJZDsKIAkJbmV3aWR4LT5zYWZlID0gaWR4 LT5zYWZlOwogCQluZXdpZHgtPnRhYmxlSWQgPSBpZHgtPnRhYmxlSWQ7CiAJCW5ld2lkeC0+YW1J ZCA9IGlkeC0+YW1JZDsKQEAgLTQxNDksMTAgKzQxNTksMTggQEAgUmVpbmRleFJlbGF0aW9uQ29u Y3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0 IFJlaW4KIAkJbG9ja3JlbGlkID0gcGFsbG9jX29iamVjdChMb2NrUmVsSWQpOwogCQkqbG9ja3Jl bGlkID0gYXV4SW5kZXhSZWwtPnJkX2xvY2tJbmZvLmxvY2tSZWxJZDsKIAkJcmVsYXRpb25Mb2Nr cyA9IGxhcHBlbmQocmVsYXRpb25Mb2NrcywgbG9ja3JlbGlkKTsKKwkJaWYgKE9pZElzVmFsaWQo anVua0F1eEluZGV4SWQpKQorCQl7CisJCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2JqZWN0KExvY2tS ZWxJZCk7CisJCQkqbG9ja3JlbGlkID0ganVua0F1eEluZGV4UmVsLT5yZF9sb2NrSW5mby5sb2Nr UmVsSWQ7CisJCQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBsb2NrcmVs aWQpOworCQl9CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJCWlu ZGV4X2Nsb3NlKGluZGV4UmVsLCBOb0xvY2spOworCQlpZiAoT2lkSXNWYWxpZChqdW5rQXV4SW5k ZXhJZCkpCisJCQlpbmRleF9jbG9zZShqdW5rQXV4SW5kZXhSZWwsIE5vTG9jayk7CiAJCWluZGV4 X2Nsb3NlKGF1eEluZGV4UmVsLCBOb0xvY2spOwogCQlpbmRleF9jbG9zZShuZXdJbmRleFJlbCwg Tm9Mb2NrKTsKIApAQCAtNDM0MSw3ICs0MzU5LDggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAogCS8qCiAJICogQXQgdGhpcyBtb21lbnQgYWxsIHRhcmdldCBpbmRleGVzIGFyZSBtYXJrZWQg YXMgInJlYWR5LXRvLWluc2VydCIuIFNvLAotCSAqIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHByb2Nl c3Mgb2YgZHJvcHBpbmcgYXV4aWxpYXJ5IGluZGV4ZXMuCisJICogd2UgYXJlIGZyZWUgdG8gc3Rh cnQgcHJvY2VzcyBvZiBkcm9wcGluZyBhdXhpbGlhcnkgaW5kZXhlcyAtIGluY2x1ZGluZworCSAq IGp1c3QgaW5kZXhlcyBkZXRlY3RlZCBlYXJsaWVyLgogCSAqLwogCWZvcmVhY2gobGMsIG5ld0lu ZGV4SWRzKQogCXsKQEAgLTQzNjQsNiArNDM4Myw5IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWlu CiAJCSAqLwogCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsK IAkJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKG5ld2lkeC0+YXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9D TEVBUl9SRUFEWSk7CisJCS8qIEVuc3VyZSBqdXN0IGluZGV4IGlzIG1hcmtlZCBhcyBub24tcmVh ZHkgKi8KKwkJaWYgKE9pZElzVmFsaWQobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCkpCisJCQlpbmRl eF9zZXRfc3RhdGVfZmxhZ3MobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9DTEVB Ul9SRUFEWSk7CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CkBAIC00NTgyLDYgKzQ2MDQsOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50 bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgog CQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAogCQlpbmRl eF9jb25jdXJyZW50bHlfc2V0X2RlYWQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4 SWQpOworCQlpZiAoT2lkSXNWYWxpZChuZXdpZHgtPmp1bmtBdXhJbmRleElkKSkKKwkJCWluZGV4 X2NvbmN1cnJlbnRseV9zZXRfZGVhZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+anVua0F1eElu ZGV4SWQpOwogCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJfQpAQCAtNDYzMyw2ICs0NjU3LDE0 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOwog CiAJCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CisKKwkJCWlm IChPaWRJc1ZhbGlkKGlkeC0+anVua0F1eEluZGV4SWQpKQorCQkJeworCisJCQkJb2JqZWN0Lm9i amVjdElkID0gaWR4LT5qdW5rQXV4SW5kZXhJZDsKKwkJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAw OworCQkJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqZWN0LCBvYmplY3RzKTsKKwkJCX0K IAkJfQogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGVhOTY5NDdkODEzLi43 OTQwOGRkMDFlYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE1MzIsNiArMTUzMiw4 IEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAlMaXN0Q2VsbCAgICpjZWxsOwog CWludAkJCWZsYWdzID0gMDsKIAlMT0NLTU9ERQlsb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxv Y2s7CisJTWVtb3J5Q29udGV4dCBwcml2YXRlX2NvbnRleHQsCisJCQkJICBvbGRjb250ZXh0Owog CiAJLyogRFJPUCBDT05DVVJSRU5UTFkgdXNlcyBhIHdlYWtlciBsb2NrLCBhbmQgaGFzIHNvbWUg cmVzdHJpY3Rpb25zICovCiAJaWYgKGRyb3AtPmNvbmN1cnJlbnQpCkBAIC0xNTkyLDkgKzE1OTQs MjAgQEAgUmVtb3ZlUmVsYXRpb25zKERyb3BTdG10ICpkcm9wKQogCQkJcmVsa2luZCA9IDA7CQkv KiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiAJCQlicmVhazsKIAl9CisJLyoKKwkgKiBDcmVhdGUg YSBtZW1vcnkgY29udGV4dCB0aGF0IHdpbGwgc3Vydml2ZSBmb3JjZWQgdHJhbnNhY3Rpb24gY29t bWl0cyB3ZQorCSAqIG1heSBuZWVkIHRvIGRvIGJlbG93IChpbiBjYXNlIG9mIGNvbmN1cnJlbnQg aW5kZXggZHJvcCkuCisJICogU2luY2UgaXQgaXMgYSBjaGlsZCBvZiBQb3J0YWxDb250ZXh0LCBp dCB3aWxsIGdvIGF3YXkgZXZlbnR1YWxseSBldmVuIGlmCisJICogd2Ugc3VmZmVyIGFuIGVycm9y OyB0aGVyZSdzIG5vIG5lZWQgZm9yIHNwZWNpYWwgYWJvcnQgY2xlYW51cCBsb2dpYy4KKwkgKi8K Kwlwcml2YXRlX2NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoUG9ydGFsQ29udGV4dCwK KwkJCQkJCQkJCQkJIlJlbW92ZVJlbGF0aW9ucyIsCisJCQkJCQkJCQkJCUFMTE9DU0VUX1NNQUxM X1NJWkVTKTsKIAorCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9j b250ZXh0KTsKIAkvKiBMb2NrIGFuZCB2YWxpZGF0ZSBlYWNoIHJlbGF0aW9uOyBidWlsZCBhIGxp c3Qgb2Ygb2JqZWN0IGFkZHJlc3NlcyAqLwogCW9iamVjdHMgPSBuZXdfb2JqZWN0X2FkZHJlc3Nl cygpOworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCWZvcmVhY2goY2Vs bCwgZHJvcC0+b2JqZWN0cykKIAl7CkBAIC0xNjQ2LDYgKzE2NTksMzQgQEAgUmVtb3ZlUmVsYXRp b25zKERyb3BTdG10ICpkcm9wKQogCQkJZmxhZ3MgfD0gUEVSRk9STV9ERUxFVElPTl9DT05DVVJS RU5UTFk7CiAJCX0KIAorCQkvKgorCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3AgcmVxdWlyZXMg dG8gYmUgdGhlIGZpcnN0IHRyYW5zYWN0aW9uLiBCdXQgaW4KKwkJICogY2FzZSB3ZSBoYXZlIGp1 bmsgYXV4aWxpYXJ5IGluZGV4IC0gd2Ugd2FudCB0byBkcm9wIGl0IHRvbyAoYW5kIGFsc28KKwkJ ICogaW4gYSBjb25jdXJyZW50IHdheSkuIEluIHRoaXMgY2FzZSBwZXJmb3JtIHNpbGVudCBpbnRl cm5hbCBkZWxldGlvbgorCQkgKiBvZiBhdXhpbGlhcnkgaW5kZXgsIGFuZCByZXN0b3JlIHRyYW5z YWN0aW9uIHN0YXRlLiBJdCBpcyBmaW5lIHRvIGRvIGl0CisJCSAqIGluIHRoZSBsb29wIGJlY2F1 c2UgdGhlcmUgaXMgb25seSBzaW5nbGUgZWxlbWVudCBpbiBkcm9wLT5vYmplY3RzLgorCQkgKi8K KwkJaWYgKChmbGFncyAmIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVExZKSAhPSAwICYmCisJ CQlzdGF0ZS5hY3R1YWxfcmVsa2luZCA9PSBSRUxLSU5EX0lOREVYKQorCQl7CisJCQlPaWQganVu a0F1eEluZGV4T2lkID0gZ2V0X2F1eGlsaWFyeV9pbmRleChyZWxPaWQpOworCQkJaWYgKE9pZElz VmFsaWQoanVua0F1eEluZGV4T2lkKSkKKwkJCXsKKwkJCQlPYmplY3RBZGRyZXNzIG9iamVjdDsK KwkJCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJCQlvYmplY3Qub2Jq ZWN0SWQgPSBqdW5rQXV4SW5kZXhPaWQ7CisJCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwkJ CQlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwKKwkJCQkJCQkJCQkgUEVS Rk9STV9ERUxFVElPTl9DT05DVVJSRU5UTFkgfAorCQkJCQkJCQkJCSBQRVJGT1JNX0RFTEVUSU9O X0lOVEVSTkFMIHwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9RVUlFVExZKTsKKwkJCQlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCQkJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQkJ CVByZXZlbnRJblRyYW5zYWN0aW9uQmxvY2sodHJ1ZSwgIkRST1AgSU5ERVggQ09OQ1VSUkVOVExZ Iik7CisJCQl9CisJCX0KKwogCQkvKgogCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3AgY2Fubm90 IGJlIHVzZWQgd2l0aCBwYXJ0aXRpb25lZCBpbmRleGVzLAogCQkgKiBlaXRoZXIuCkBAIC0xNjc0 LDEyICsxNzE1LDE3IEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAkJb2JqLm9i amVjdElkID0gcmVsT2lkOwogCQlvYmoub2JqZWN0U3ViSWQgPSAwOwogCisJCW9sZGNvbnRleHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAkJYWRkX2V4YWN0X29i amVjdF9hZGRyZXNzKCZvYmosIG9iamVjdHMpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y29udGV4dCk7CiAJfQogCisJLyogRGVsZXRpb24gbWF5IGludm9sdmUgbXVsdGlwbGUgY29tbWl0 cywgc28sIHN3aXRjaCB0byBtZW1vcnkgY29udGV4dCAqLworCW9sZGNvbnRleHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAlwZXJmb3JtTXVsdGlwbGVEZWxldGlv bnMob2JqZWN0cywgZHJvcC0+YmVoYXZpb3IsIGZsYWdzKTsKKwlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY29udGV4dCk7CiAKLQlmcmVlX29iamVjdF9hZGRyZXNzZXMob2JqZWN0cyk7CisJTWVt b3J5Q29udGV4dERlbGV0ZShwcml2YXRlX2NvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVu Y3MuYwppbmRleCBiNTU2YmE0ODE3Yi4uZDdiZTg3MTVkNTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5j CkBAIC04MzQsNyArODM0LDcgQEAgSW5kZXhJbmZvICoKIG1ha2VJbmRleEluZm8oaW50IG51bWF0 dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMsCiAJCQkg IExpc3QgKnByZWRpY2F0ZXMsIGJvb2wgdW5pcXVlLCBib29sIG51bGxzX25vdF9kaXN0aW5jdCwK IAkJCSAgYm9vbCBpc3JlYWR5LCBib29sIGNvbmN1cnJlbnQsIGJvb2wgc3VtbWFyaXppbmcsCi0J CQkgIGJvb2wgd2l0aG91dG92ZXJsYXBzLCBib29sIGF1eGlsaWFyeSkKKwkJCSAgYm9vbCB3aXRo b3V0b3ZlcmxhcHMsIGJvb2wgYXV4aWxpYXJ5LCBPaWQgYXV4aWxpYXJ5X2Zvcl9pbmRleF9pZCkK IHsKIAlJbmRleEluZm8gICpuID0gbWFrZU5vZGUoSW5kZXhJbmZvKTsKIApAQCAtODUxLDYgKzg1 MSw3IEBAIG1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBh bW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMsCiAJbi0+aWlfU3VtbWFyaXppbmcgPSBzdW1tYXJpemlu ZzsKIAluLT5paV9XaXRob3V0T3ZlcmxhcHMgPSB3aXRob3V0b3ZlcmxhcHM7CiAJbi0+aWlfQXV4 aWxpYXJ5ID0gYXV4aWxpYXJ5OworCW4tPmlpX0F1eGlsaWFyeUZvckluZGV4SWQgPSBhdXhpbGlh cnlfZm9yX2luZGV4X2lkOwogCiAJLyogc3VtbWFyaXppbmcgaW5kZXhlcyBjYW5ub3QgY29udGFp biBub24ta2V5IGF0dHJpYnV0ZXMgKi8KIAlBc3NlcnQoIXN1bW1hcml6aW5nIHx8IChudW1rZXlh dHRycyA9PSBudW1hdHRycykpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBl bmRlbmN5LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaAppbmRleCAwZWE3Y2Nm NTI0My4uMDJiY2Y1ZTkzMTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5k ZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCkBAIC0xODAsNiAr MTgwLDcgQEAgZXh0ZXJuIExpc3QgKmdldE93bmVkU2VxdWVuY2VzKE9pZCByZWxpZCk7CiBleHRl cm4gT2lkCWdldElkZW50aXR5U2VxdWVuY2UoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51 bSwgYm9vbCBtaXNzaW5nX29rKTsKIAogZXh0ZXJuIE9pZAlnZXRfaW5kZXhfY29uc3RyYWludChP aWQgaW5kZXhJZCk7CitleHRlcm4gT2lkCWdldF9hdXhpbGlhcnlfaW5kZXgoT2lkIGluZGV4SWQp OwogCiBleHRlcm4gTGlzdCAqZ2V0X2luZGV4X3JlZl9jb25zdHJhaW50cyhPaWQgaW5kZXhJZCk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggZTAyZmM2YWEzZTYuLmQwMzdkMDE1NjM5IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaApAQCAtMjE3LDYgKzIxNyw4IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4 SW5mbwogCWJvb2wJCWlpX1dpdGhvdXRPdmVybGFwczsKIAlpbnQJCQlpaV9QYXJhbGxlbFdvcmtl cnM7CiAJYm9vbAkJaWlfQXV4aWxpYXJ5OworCU9pZAkJCWlpX0F1eGlsaWFyeUZvckluZGV4SWQ7 IC8qIGlmIGNyZWF0aW5nIGFuIGF1eGlsaWFyeSBpbmRleCwKKwkJCQkJCQkJCQkgICB0aGUgT0lE IG9mIHRoZSBtYWluIGluZGV4OyBvdGhlcndpc2UgSW52YWxpZE9pZC4gKi8KIAlPaWQJCQlpaV9B bTsKIAl2b2lkCSAgICppaV9BbUNhY2hlOwogCU1lbW9yeUNvbnRleHQgaWlfQ29udGV4dDsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oIGIvc3JjL2luY2x1ZGUvbm9k ZXMvbWFrZWZ1bmNzLmgKaW5kZXggNDkwNDc0OGY1ZmMuLjM1NzQ1YmM1MjFjIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9t YWtlZnVuY3MuaApAQCAtMTAwLDcgKzEwMCw3IEBAIGV4dGVybiBJbmRleEluZm8gKm1ha2VJbmRl eEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwKIAkJCQkJCQkJ Ym9vbCB1bmlxdWUsIGJvb2wgbnVsbHNfbm90X2Rpc3RpbmN0LAogCQkJCQkJCQlib29sIGlzcmVh ZHksIGJvb2wgY29uY3VycmVudCwKIAkJCQkJCQkJYm9vbCBzdW1tYXJpemluZywgYm9vbCB3aXRo b3V0b3ZlcmxhcHMsCi0JCQkJCQkJCWJvb2wgYXV4aWxpYXJ5KTsKKwkJCQkJCQkJYm9vbCBhdXhp bGlhcnksIE9pZCBhdXhpbGlhcnlfZm9yX2luZGV4X2lkKTsKIAogZXh0ZXJuIE5vZGUgKm1ha2VT dHJpbmdDb25zdChjaGFyICpzdHIsIGludCBsb2NhdGlvbik7CiBleHRlcm4gRGVmRWxlbSAqbWFr ZURlZkVsZW0oY2hhciAqbmFtZSwgTm9kZSAqYXJnLCBpbnQgbG9jYXRpb24pOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CmluZGV4IGNhNzQ4NDRiNWM2Li5hY2E2 ZWM1N2FkNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5k ZXgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dApA QCAtMzI2NSwyMCArMzI2NSwxMDkgQEAgRVJST1I6ICByZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRl eCAiYXV4X2luZGV4X2luZDZfY2NhdXgiIG5vdCBzdXBwb3J0ZWQKIFJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OwogRVJST1I6ICByZWluZGV4IG9mIGF1eGls aWFyeSBpbmRleCAiYXV4X2luZGV4X2luZDZfY2NhdXgiIG5vdCBzdXBwb3J0ZWQKIC0tIFRoaXMg bWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNv bWUgdmFsaWQuCi1ERUxFVEUgRlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsK LUVSUk9SOiAgcmVsYXRpb24gImNvbmN1cl9yZWluZGV4X3RhYjQiIGRvZXMgbm90IGV4aXN0Ci1M SU5FIDE6IERFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOwotICAg ICAgICAgICAgICAgICAgICBeCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9 IDE7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAorUkVJ TkRFWCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMgZHJv cHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhfaW5k ZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZh dWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t CisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgor ICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpCisKK0RST1AgSU5ERVggYXV4 X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4 X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdh aW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1 eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4 ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVkLgor LS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXgg Y2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90YWI1IFdIRVJFIGMxID0g MTsKIC0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWluZGV4Ci1SRUlOREVYIFRBQkxFIGF1 eF9pbmRleF90YWI1OwotRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4 X2luZGV4X2luZDYiCi1ERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KLS0tIFNo b3VsZCBiZSBza2lwcGVkIGR1cmluZyBjb25jdXJyZW50IHJlaW5kZXgKIFJFSU5ERVggVEFCTEUg Q09OQ1VSUkVOVExZIGF1eF9pbmRleF90YWI1OwogV0FSTklORzogIHNraXBwaW5nIHJlaW5kZXgg b2YgaW52YWxpZCBpbmRleCAicHVibGljLmF1eF9pbmRleF9pbmQ2IgogSElOVDogIFVzZSBEUk9Q IElOREVYIG9yIFJFSU5ERVggSU5ERVguCiBXQVJOSU5HOiAgc2tpcHBpbmcgcmVpbmRleCBvZiBh dXhpbGlhcnkgaW5kZXggInB1YmxpYy5hdXhfaW5kZXhfaW5kNl9jY2F1eCIKIE5PVElDRTogIHRh YmxlICJhdXhfaW5kZXhfdGFiNSIgaGFzIG5vIGluZGV4ZXMgdGhhdCBjYW4gYmUgcmVpbmRleGVk IGNvbmN1cnJlbnRseQorLS0gTWFrZSBzdXJlIGl0IGlzIHN0aWxsIGV4aXN0cworXGQgYXV4X2lu ZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1 bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50 ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJhdXhfaW5kZXhf aW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpIElOVkFMSUQKKyAgICAiYXV4X2luZGV4X2luZDZfY2Nh dXgiIHN0aXIgKGMxKSBJTlZBTElECisKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWlu ZGV4IGFuZCBkcm9wcGVkCitSRUlOREVYIFRBQkxFIGF1eF9pbmRleF90YWI1OworLS0gTWFrZSBz dXJlIGF1eCBpbmRleCBpcyBkcm9wcGVkCitcZCBhdXhfaW5kZXhfdGFiNQorICAgICAgICAgICBU YWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRp b24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAg ICAgICAgfCAKK0luZGV4ZXM6CisgICAgImF1eF9pbmRleF9pbmQ2IiBVTklRVUUsIGJ0cmVlIChj MSkKKworRFJPUCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKy0tIEluc2VydCBkdXBsaWNhdGVzIGFn YWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSk7CistLSBDcmVh dGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkg YXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKK0VSUk9SOiAgY291bGQgbm90 IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9 KDEpIGlzIGR1cGxpY2F0ZWQuCistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdv IGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gYXV4X2lu ZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5k ZXggYW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2 OworLS0gTWFrZSBzdXJlIGF1eCBpbmRleCBpcyBkcm9wcGVkCitcZCBhdXhfaW5kZXhfdGFiNQor ICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENvbHVtbiB8ICBUeXBl ICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBpbnRlZ2VyIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgImF1eF9pbmRleF9pbmQ2IiBVTklR VUUsIGJ0cmVlIChjMSkKKworRFJPUCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKKy0tIEluc2VydCBk dXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAo MSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBD T05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKK0VSUk9S OiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgorREVUQUlM OiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91 cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRF IEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gRHJvcCBtYWluIGluZGV4IENP TkNVUlJFTlRMWQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDY7CistLSBN YWtlIHN1cmUgYXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhfdGFiNQor ICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENvbHVtbiB8ICBUeXBl ICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBpbnRlZ2VyIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAKKworRFJPUCBJTkRFWCBhdXhfaW5kZXhfaW5kNjsKK0VSUk9S OiAgaW5kZXggImF1eF9pbmRleF9pbmQ2IiBkb2VzIG5vdCBleGlzdAorLS0gSW5zZXJ0IGR1cGxp Y2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKTsK Ky0tIENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNV UlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworRVJST1I6ICBj b3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYiCitERVRBSUw6ICBL ZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KKy0tIERyb3AgbWFpbiBpbmRleAorRFJPUCBJTkRF WCBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBhdXhpbGlhcnkgaW5kZXggZHJvcHBlZCB0 b28KK1xkIGF1eF9pbmRleF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4 X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVs dCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQor IGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorCiBEUk9QIFRBQkxF IGF1eF9pbmRleF90YWI1OwogLS0gQ2hlY2sgaGFuZGxpbmcgb2YgaW5kZXhlcyB3aXRoIGV4cHJl c3Npb25zIGFuZCBwcmVkaWNhdGVzLiAgVGhlCiAtLSBkZWZpbml0aW9ucyBvZiB0aGUgcmVidWls dCBpbmRleGVzIHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVh dGVfaW5kZXguc3FsCmluZGV4IDJjZmYxYWMyOWJlLi5lMTQ2NGVhYTY3YyAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCkBAIC0xMzQwLDExICsxMzQwLDYyIEBAIFJFSU5ERVgg SU5ERVggYXV4X2luZGV4X2luZDZfY2NhdXg7CiAtLSBDb25jdXJyZW50bHkgYWxzbwogUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDZfY2NhdXg7CiAtLSBUaGlzIG1ha2Vz IHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZh bGlkLgotREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7CitERUxF VEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CistLSBTaG91bGQgYmUgc2tpcHBl ZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAorUkVJTkRFWCBJTkRFWCBhdXhfaW5kZXhfaW5k NjsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUK K0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CisKKy0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWlu CitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUg aW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4 X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKKy0tIFRoaXMgbWFrZXMgdGhlIHBy ZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitE RUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CiAtLSBTaG91bGQgYmUgc2tp cHBlZCBkdXJpbmcgcmVpbmRleAotUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKLS0tIFNo b3VsZCBiZSBza2lwcGVkIGR1cmluZyBjb25jdXJyZW50IHJlaW5kZXgKIFJFSU5ERVggVEFCTEUg Q09OQ1VSUkVOVExZIGF1eF9pbmRleF90YWI1OworLS0gTWFrZSBzdXJlIGl0IGlzIHN0aWxsIGV4 aXN0cworXGQgYXV4X2luZGV4X3RhYjUKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWlu ZGV4IGFuZCBkcm9wcGVkCitSRUlOREVYIFRBQkxFIGF1eF9pbmRleF90YWI1OworLS0gTWFrZSBz dXJlIGF1eCBpbmRleCBpcyBkcm9wcGVkCitcZCBhdXhfaW5kZXhfdGFiNQorRFJPUCBJTkRFWCBh dXhfaW5kZXhfaW5kNjsKKworLS0gSW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRP IGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGluZGV4 IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBP TiBhdXhfaW5kZXhfdGFiNSAoYzEpOworLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVy ZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1 eF9pbmRleF90YWI1IFdIRVJFIGMxID0gMTsKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyBy ZWluZGV4IGFuZCBkcm9wcGVkCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhf aW5kNjsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3Rh YjUKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CisKKy0tIEluc2VydCBkdXBsaWNhdGVzIGFn YWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSk7CistLSBDcmVh dGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkg YXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKKy0tIFRoaXMgbWFrZXMgdGhl IHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQu CitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CistLSBEcm9wIG1haW4g aW5kZXggQ09OQ1VSUkVOVExZCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5k NjsKKy0tIE1ha2Ugc3VyZSBhdXhpbGlhcnkgaW5kZXggZHJvcHBlZCB0b28KK1xkIGF1eF9pbmRl eF90YWI1CitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGljYXRl cyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0g Q3JlYXRlIGludmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVO VExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CistLSBEcm9wIG1haW4g aW5kZXgKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4aWxpYXJ5 IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhfdGFiNQorCiBEUk9QIFRBQkxFIGF1eF9p bmRleF90YWI1OwogCiAtLSBDaGVjayBoYW5kbGluZyBvZiBpbmRleGVzIHdpdGggZXhwcmVzc2lv bnMgYW5kIHByZWRpY2F0ZXMuICBUaGUKLS0gCjIuNDMuMAoK --00000000000027fe8906381ae2a2 Content-Type: application/octet-stream; name="v21-only-part-3-0005-Optimize-auxiliary-index-handling.patch_" Content-Disposition: attachment; filename="v21-only-part-3-0005-Optimize-auxiliary-index-handling.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8v613 RnJvbSA5MTk3MDkwMzMyYWY0ZWUzZGY4MDc5NDgxMzBmNDdkNDNkYTI5ZjFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogTW9uLCAzMCBEZWMgMjAyNCAxNjozNzoxMiArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIxLW9ubHktcGFydC0zIDUvNl0gT3B0aW1pemUgYXV4aWxpYXJ5IGluZGV4IGhhbmRs aW5nCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1V VEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpTa2lwIHVubmVjZXNzYXJ5IGNv bXB1dGF0aW9ucyBmb3IgYXV4aWxpYXJ5IGluZGljZXMgYnk6Ci0gaW4gdGhlIGluZGV44oCQaW5z ZXJ0IHBhdGgsIGRldGVjdCBhdXhpbGlhcnkgaW5kZXhlcyBhbmQgYnlwYXNzIERhdHVtIHZhbHVl IGNvbXB1dGF0aW9uCi0gc2V0IGluZGV4VW5jaGFuZ2VkPWZhbHNlIGZvciBhdXhpbGlhcnkgaW5k aWNlcyB0byBhdm9pZCByZWR1bmRhbnQgY2hlY2tzCgpUaGVzZSBvcHRpbWl6YXRpb25zIHJlZHVj ZSBvdmVyaGVhZCBkdXJpbmcgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25zLgotLS0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgIHwgMTEgKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIHwgMTEgKysrKysrKy0tLS0KIDIgZmlsZXMgY2hh bmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5k ZXggOWFlOTFmMWRlNzIuLmQ3YTVjZDk0YzEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0yOTE2LDYg KzI5MTYsMTcgQEAgRm9ybUluZGV4RGF0dW0oSW5kZXhJbmZvICppbmRleEluZm8sCiAJTGlzdENl bGwgICAqaW5kZXhwcl9pdGVtOwogCWludAkJCWk7CiAKKwkvKiBBdXhpbGlhcnkgaW5kZXggZG9l cyBub3QgbmVlZCBhbnkgdmFsdWVzIHRvIGJlIGNvbXB1dGVkICovCisJaWYgKHVubGlrZWx5KGlu ZGV4SW5mby0+aWlfQXV4aWxpYXJ5KSkKKwl7CisJCWZvciAoaSA9IDA7IGkgPCBpbmRleEluZm8t PmlpX051bUluZGV4QXR0cnM7IGkrKykKKwkJeworCQkJdmFsdWVzW2ldID0gUG9pbnRlckdldERh dHVtKE5VTEwpOworCQkJaXNudWxsW2ldID0gdHJ1ZTsKKwkJfQorCQlyZXR1cm47CisJfQorCiAJ aWYgKGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMgIT0gTklMICYmCiAJCWluZGV4SW5mby0+aWlf RXhwcmVzc2lvbnNTdGF0ZSA9PSBOSUwpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0luZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcu YwppbmRleCA0OTljYmExNDVkZC4uYzhiNTFlMjcyNWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jCkBAIC00NDAsMTEgKzQ0MCwxNCBAQCBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJICogVGhlcmUncyBkZWZpbml0ZWx5IGdvaW5n IHRvIGJlIGFuIGluZGV4X2luc2VydCgpIGNhbGwgZm9yIHRoaXMKIAkJICogaW5kZXguICBJZiB3 ZSdyZSBiZWluZyBjYWxsZWQgYXMgcGFydCBvZiBhbiBVUERBVEUgc3RhdGVtZW50LAogCQkgKiBj b25zaWRlciBpZiB0aGUgJ2luZGV4VW5jaGFuZ2VkJyA9IHRydWUgaGludCBzaG91bGQgYmUgcGFz c2VkLgorCQkgKgorCQkgKiBJbiBjYXNlIG9mIGF1eGlsaWFyeSBpbmRleCBhbHdheXMgcGFzcyBm YWxzZSBhcyBvcHRpbWlzYXRpb24uCiAJCSAqLwotCQlpbmRleFVuY2hhbmdlZCA9IHVwZGF0ZSAm JiBpbmRleF91bmNoYW5nZWRfYnlfdXBkYXRlKHJlc3VsdFJlbEluZm8sCi0JCQkJCQkJCQkJCQkJ CQkgZXN0YXRlLAotCQkJCQkJCQkJCQkJCQkJIGluZGV4SW5mbywKLQkJCQkJCQkJCQkJCQkJCSBp bmRleFJlbGF0aW9uKTsKKwkJaW5kZXhVbmNoYW5nZWQgPSB1cGRhdGUgJiYgbGlrZWx5KCFpbmRl eEluZm8tPmlpX0F1eGlsaWFyeSkgJiYKKwkJCQkJCQkJCWluZGV4X3VuY2hhbmdlZF9ieV91cGRh dGUocmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgZXN0YXRlLAorCQkJCQkJCQkJCQkJ CQkJICBpbmRleEluZm8sCisJCQkJCQkJCQkJCQkJCQkgIGluZGV4UmVsYXRpb24pOwogCiAJCXNh dGlzZmllc0NvbnN0cmFpbnQgPQogCQkJaW5kZXhfaW5zZXJ0KGluZGV4UmVsYXRpb24sIC8qIGlu ZGV4IHJlbGF0aW9uICovCi0tIAoyLjQzLjAKCg== --00000000000027fe8906381ae2a2 Content-Type: application/octet-stream; name="v21-only-part-3-0001-Add-STIR-access-method-and-flags-rel.patch_" Content-Disposition: attachment; filename="v21-only-part-3-0001-Add-STIR-access-method-and-flags-rel.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8v916 RnJvbSA1ZDhkMGZlZTlmOTJiNDVlZjE0ZTBmNWVjMDY5OGU3MDgzNTk4NzZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyMSBEZWMgMjAyNCAxODozNjoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIxLW9ubHktcGFydC0zIDEvNl0gQWRkIFNUSVIgYWNjZXNzIG1ldGhvZCBhbmQgZmxh Z3MgcmVsYXRlZAogdG8gYXV4aWxpYXJ5IGluZGV4ZXMKClRoaXMgcGF0Y2ggcHJvdmlkZXMgaW5m cmFzdHJ1Y3R1cmUgZm9yIGZvbGxvd2luZyBlbmhhbmNlbWVudHMgdG8gY29uY3VycmVudCBpbmRl eCBidWlsZHMgYnk6Ci0gaWlfQXV4aWxpYXJ5IGluIEluZGV4SW5mbzogaW5kaWNhdGVzIHRoYXQg YW4gaW5kZXggaXMgYW4gYXV4aWxpYXJ5IGluZGV4IHVzZWQgZHVyaW5nIGNvbmN1cnJlbnQgaW5k ZXggYnVpbGQKLSB2YWxpZGF0ZV9pbmRleCBpbiBJbmRleFZhY3V1bUluZm86IHNldCBpZiBpbmRl eF9idWxrX2RlbGV0ZSBjYWxsZWQgZHVyaW5nIHRoZSB2YWxpZGF0aW9uIHBoYXNlIG9mIGNvbmN1 cnJlbnQgaW5kZXggYnVpbGQKLSBTVElSKFNob3J0LVRlcm0gSW5kZXggUmVwbGFjZW1lbnQpIGFj Y2VzcyBtZXRob2QgaXMgaW50cm9kdWNlZCwgaW50ZW5kZWQgc29sZWx5IGZvciBzaG9ydC1saXZl ZCwgYXV4aWxpYXJ5IHVzYWdlCgpTVElSIGZ1bmN0aW9ucyBkZXNpZ25lZCBhcyBhbiBlcGhlbWVy YWwgaGVscGVyIGR1cmluZyBjb25jdXJyZW50IGluZGV4IGJ1aWxkcywgdGVtcG9yYXJpbHkgc3Rv cmluZyBUSURzIHdpdGhvdXQgcHJvdmlkaW5nIHRoZSBmdWxsIGZlYXR1cmVzIG9mIGEgdHlwaWNh bCBhY2Nlc3MgbWV0aG9kLiBBcyBzdWNoLCBpdCByYWlzZXMgd2FybmluZ3Mgb3IgZXJyb3JzIHdo ZW4gYWNjZXNzZWQgb3V0c2lkZSBpdHMgc3BlY2lhbGl6ZWQgdXNhZ2UgcGF0aC4KClBsYW5uZWQg dG8gYmUgdXNlZCBpbiBmb2xsb3dpbmcgY29tbWl0cy4KLS0tCiBjb250cmliL3Bnc3RhdHR1cGxl L3Bnc3RhdHR1cGxlLmMgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmls ZSAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYyAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZSAgICAgICAgIHwgIDE4 ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1aWxkICAgICAgfCAgIDUgKwogc3Jj L2JhY2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5jICAgICAgICAgICB8IDU4MSArKysrKysrKysrKysr KysrKysrKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAgICAgICAgIHwgICAxICsKIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tl bmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9ub2Rl cy9tYWtlZnVuY3MuYyAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9nZW5h bS5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMu aCAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaCAgICAgICAgICAg ICAgICB8IDExNyArKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5kYXQgICAgICAgICAg ICB8ICAgMyArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0ICAgICAgIHwgICA0 ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHkuZGF0ICAgICAgfCAgIDIgKwogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS91dGls cy9pbmRleF9zZWxmdW5jcy5oICAgICAgIHwgICA4ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvYW11dGlscy5vdXQgICAgfCAgIDggKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3By X3Nhbml0eS5vdXQgfCAgIDcgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQg ICAgICAgfCAgMjQgKy0KIDI0IGZpbGVzIGNoYW5nZWQsIDc4NiBpbnNlcnRpb25zKCspLCAxOCBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9N YWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29u LmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaAoKZGlmZiAtLWdp dCBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYyBiL2NvbnRyaWIvcGdzdGF0dHVw bGUvcGdzdGF0dHVwbGUuYwppbmRleCAwZDljMmIwYjY1My4uNzIwYTg3MTk3NTUgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYworKysgYi9jb250cmliL3Bnc3Rh dHR1cGxlL3Bnc3RhdHR1cGxlLmMKQEAgLTI4NSw2ICsyODUsOSBAQCBwZ3N0YXRfcmVsYXRpb24o UmVsYXRpb24gcmVsLCBGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAkJCWNhc2UgU1BHSVNUX0FN X09JRDoKIAkJCQllcnIgPSAic3BnaXN0IGluZGV4IjsKIAkJCQlicmVhazsKKwkJCWNhc2UgU1RJ Ul9BTV9PSUQ6CisJCQkJZXJyID0gInN0aXIgaW5kZXgiOworCQkJCWJyZWFrOwogCQkJY2FzZSBC UklOX0FNX09JRDoKIAkJCQllcnIgPSAiYnJpbiBpbmRleCI7CiAJCQkJYnJlYWs7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9hY2Nlc3MvTWFr ZWZpbGUKaW5kZXggMTkzMmQxMWQxNTQuLmNkNjUyNGE1NGFiIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL01ha2VmaWxlCkBA IC05LDYgKzksNiBAQCB0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgogaW5jbHVkZSAkKHRvcF9idWls ZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCiBTVUJESVJTCSAgICA9IGJyaW4gY29tbW9uIGdp biBnaXN0IGhhc2ggaGVhcCBpbmRleCBuYnRyZWUgcm1ncmRlc2Mgc3BnaXN0IFwKLQkJCSAgc2Vx dWVuY2UgdGFibGUgdGFibGVzYW1wbGUgdHJhbnNhbQorCQkJICBzdGlyIHNlcXVlbmNlIHRhYmxl IHRhYmxlc2FtcGxlIHRyYW5zYW0KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5k L2NvbW1vbi5tawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDA5NDE2NDUw YWY5Li44OTNhZWQwYjBkOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAt MzA5OCw2ICszMDk4LDcgQEAgbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0aW9uIGluZHJlbCwg SW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAlpdmluZm8ubWVzc2FnZV9sZXZlbCA9IERF QlVHMjsKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCWl2aW5mby5zdHJh dGVneSA9IHZhY3JlbC0+YnN0cmF0ZWd5OworCWl2aW5mby52YWxpZGF0ZV9pbmRleCA9IGZhbHNl OwogCiAJLyoKIAkgKiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0aW9uLgpAQCAtMzE0 OSw2ICszMTUwLDcgQEAgbGF6eV9jbGVhbnVwX29uZV9pbmRleChSZWxhdGlvbiBpbmRyZWwsIElu ZGV4QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAKIAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0g cmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IHZhY3JlbC0+YnN0cmF0ZWd5OworCWl2aW5m by52YWxpZGF0ZV9pbmRleCA9IGZhbHNlOwogCiAJLyoKIAkgKiBVcGRhdGUgZXJyb3IgdHJhY2Vi YWNrIGluZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1 aWxkIGIvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkCmluZGV4IDdhMmQwZGRiNjg5Li5h MTU2Y2RkZmYzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5idWlsZApAQCAtMTEsNiArMTEsNyBAQCBzdWJk aXIoJ25idHJlZScpCiBzdWJkaXIoJ3JtZ3JkZXNjJykKIHN1YmRpcignc2VxdWVuY2UnKQogc3Vi ZGlyKCdzcGdpc3QnKQorc3ViZGlyKCdzdGlyJykKIHN1YmRpcigndGFibGUnKQogc3ViZGlyKCd0 YWJsZXNhbXBsZScpCiBzdWJkaXIoJ3RyYW5zYW0nKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3N0aXIvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmFlNTg5OGI4ZDcKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZQpAQCAtMCwwICsx LDE4IEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBNYWtlZmlsZS0tCisjICAgIE1ha2VmaWxl IGZvciBhY2Nlc3Mvc3RpcgorIworIyBJREVOVElGSUNBVElPTgorIyAgICBzcmMvYmFja2VuZC9h Y2Nlc3Mvc3Rpci9NYWtlZmlsZQorIworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3ViZGlyID0gc3Jj L2JhY2tlbmQvYWNjZXNzL3N0aXIKK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitpbmNsdWRl ICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCisKK09CSlMgPSBcCisJc3Rpci5v CisKK2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9jb21tb24ubWsKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9t ZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1aWxkCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zOWM2ZWNhODQ4ZAotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsNSBA QAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisKK2JhY2tlbmRfc291cmNlcyArPSBmaWxlcygKKwknc3Rpci5jJywKKykKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9z dGlyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJlMDgzZDk1MmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5jCkBAIC0wLDAgKzEsNTgxIEBACisvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiBzdGlyLmMKKyAqCSAgSW1wbGVtZW50YXRpb24gb2YgU2hvcnQtVGVy bSBJbmRleCBSZXBsYWNlbWVudC4KKyAqCisgKiBTVElSIGlzIGEgc3BlY2lhbGl6ZWQgYWNjZXNz IG1ldGhvZCB0eXBlIGRlc2lnbmVkIGZvciB0ZW1wb3Jhcnkgc3RvcmFnZQorICogb2YgVElEIHZh bHVlcyBkdXJpbmcgY29uY3VyZXJudCBpbmRleCBidWlsZCBvcGVyYXRpb25zLgorICoKKyAqIFRo ZSB0eXBpY2FsIGxpZmVjeWNsZSBvZiBhIFNUSVIgaW5kZXggaXM6CisgKiAxLiBjcmVhdGVkIGFz IGFuIGF1eGlsaWFyeSBpbmRleCBmb3IgQ0lDL1JJQworICogMi4gYWNjZXB0cyBpbnNlcnRzIGZv ciBhIHBlcmlvZAorICogMy4gc3RpcmJ1bGtkZWxldGUgY2FsbGVkIGR1cmluZyBpbmRleCB2YWxp ZGF0aW9uIHBoYXNlCisgKiA1LiBnZXRzIGRyb3BwZWQKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICog SURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvc3Rpci5jCisgKgor ICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVk ZSAiYWNjZXNzL3N0aXIuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJhY2Nl c3MvYW12YWxpZGF0ZS5oIgorI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNs dWRlICJhY2Nlc3MvdGFibGVhbS5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX2Ftb3AuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdmFj dXVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJ1dGlscy9jYXRj YWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKKyNpbmNsdWRlICJ1dGlscy9p bmRleF9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAi dXRpbHMvcmVncHJvYy5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKy8qCisgKiBT dGlyIGhhbmRsZXIgZnVuY3Rpb246IHJldHVybiBJbmRleEFtUm91dGluZSB3aXRoIGFjY2VzcyBt ZXRob2QgcGFyYW1ldGVycworICogYW5kIGNhbGxiYWNrcy4KKyAqLworRGF0dW0KK3N0aXJoYW5k bGVyKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJSW5kZXhBbVJvdXRpbmUgKmFtcm91dGluZSA9IG1h a2VOb2RlKEluZGV4QW1Sb3V0aW5lKTsKKworCS8qIFNldCBTVElSLXNwZWNpZmljIHN0cmF0ZWd5 IGFuZCBwcm9jZWR1cmUgbnVtYmVycyAqLworCWFtcm91dGluZS0+YW1zdHJhdGVnaWVzID0gU1RJ Ul9OU1RSQVRFR0lFUzsKKwlhbXJvdXRpbmUtPmFtc3VwcG9ydCA9IFNUSVJfTlBST0M7CisJYW1y b3V0aW5lLT5hbW9wdHNwcm9jbnVtID0gU1RJUl9PUFRJT05TX1BST0M7CisKKwkvKiBTVElSIGRv ZXNuJ3Qgc3VwcG9ydCBtb3N0IGluZGV4IG9wZXJhdGlvbnMgKi8KKwlhbXJvdXRpbmUtPmFtY2Fu b3JkZXIgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2Fub3JkZXJieW9wID0gZmFsc2U7CisJYW1y b3V0aW5lLT5hbWNhbmJhY2t3YXJkID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbnVuaXF1ZSA9 IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5tdWx0aWNvbCA9IHRydWU7CisJYW1yb3V0aW5lLT5h bW9wdGlvbmFsa2V5ID0gdHJ1ZTsKKwlhbXJvdXRpbmUtPmFtc2VhcmNoYXJyYXkgPSBmYWxzZTsK KwlhbXJvdXRpbmUtPmFtc2VhcmNobnVsbHMgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtc3RvcmFn ZSA9IGZhbHNlOworCWFtcm91dGluZS0+YW1jbHVzdGVyYWJsZSA9IGZhbHNlOworCWFtcm91dGlu ZS0+YW1wcmVkbG9ja3MgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FucGFyYWxsZWwgPSBmYWxz ZTsKKwlhbXJvdXRpbmUtPmFtY2FuYnVpbGRwYXJhbGxlbCA9IGZhbHNlOworCWFtcm91dGluZS0+ YW1jYW5pbmNsdWRlID0gdHJ1ZTsKKwlhbXJvdXRpbmUtPmFtdXNlbWFpbnRlbmFuY2V3b3JrbWVt ID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbXBhcmFsbGVsdmFjdXVtb3B0aW9ucyA9CisJCQlWQUNV VU1fT1BUSU9OX1BBUkFMTEVMX0JVTEtERUwgfCBWQUNVVU1fT1BUSU9OX1BBUkFMTEVMX0NMRUFO VVA7CisJYW1yb3V0aW5lLT5hbWtleXR5cGUgPSBJbnZhbGlkT2lkOworCisJLyogU2V0IHVwIGZ1 bmN0aW9uIGNhbGxiYWNrcyAqLworCWFtcm91dGluZS0+YW1idWlsZCA9IHN0aXJidWlsZDsKKwlh bXJvdXRpbmUtPmFtYnVpbGRlbXB0eSA9IHN0aXJidWlsZGVtcHR5OworCWFtcm91dGluZS0+YW1p bnNlcnQgPSBzdGlyaW5zZXJ0OworCWFtcm91dGluZS0+YW1pbnNlcnRjbGVhbnVwID0gTlVMTDsK KwlhbXJvdXRpbmUtPmFtYnVsa2RlbGV0ZSA9IHN0aXJidWxrZGVsZXRlOworCWFtcm91dGluZS0+ YW12YWN1dW1jbGVhbnVwID0gc3RpcnZhY3V1bWNsZWFudXA7CisJYW1yb3V0aW5lLT5hbWNhbnJl dHVybiA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWNvc3Rlc3RpbWF0ZSA9IHN0aXJjb3N0ZXN0aW1h dGU7CisJYW1yb3V0aW5lLT5hbW9wdGlvbnMgPSBzdGlyb3B0aW9uczsKKwlhbXJvdXRpbmUtPmFt cHJvcGVydHkgPSBOVUxMOworCWFtcm91dGluZS0+YW1idWlsZHBoYXNlbmFtZSA9IE5VTEw7CisJ YW1yb3V0aW5lLT5hbXZhbGlkYXRlID0gc3RpcnZhbGlkYXRlOworCWFtcm91dGluZS0+YW1hZGp1 c3RtZW1iZXJzID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtYmVnaW5zY2FuID0gc3RpcmJlZ2luc2Nh bjsKKwlhbXJvdXRpbmUtPmFtcmVzY2FuID0gc3RpcnJlc2NhbjsKKwlhbXJvdXRpbmUtPmFtZ2V0 dHVwbGUgPSBOVUxMOworCWFtcm91dGluZS0+YW1nZXRiaXRtYXAgPSBOVUxMOworCWFtcm91dGlu ZS0+YW1lbmRzY2FuID0gc3RpcmVuZHNjYW47CisJYW1yb3V0aW5lLT5hbW1hcmtwb3MgPSBOVUxM OworCWFtcm91dGluZS0+YW1yZXN0cnBvcyA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWVzdGltYXRl cGFyYWxsZWxzY2FuID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtaW5pdHBhcmFsbGVsc2NhbiA9IE5V TEw7CisJYW1yb3V0aW5lLT5hbXBhcmFsbGVscmVzY2FuID0gTlVMTDsKKworCVBHX1JFVFVSTl9Q T0lOVEVSKGFtcm91dGluZSk7Cit9CisKKy8qCisgKiBWYWxpZGF0ZXMgb3BlcmF0b3IgY2xhc3Mg Zm9yIFNUSVIgaW5kZXguCisgKgorICogU1RJUiBpcyBub3QgYW4gcmVhbCBpbmRleCwgc28gdmFs aWRhdGlvIG1heSBiZSBza2lwcGVkLgorICogQnV0IHdlIGRvIGl0IGp1c3QgZm9yIGNvbnNpc3Rl bmN5LgorICovCitib29sCitzdGlydmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCit7CisJYm9vbCBy ZXN1bHQgPSB0cnVlOworCUhlYXBUdXBsZSBjbGFzc3R1cDsKKwlGb3JtX3BnX29wY2xhc3MgY2xh c3Nmb3JtOworCU9pZCBvcGZhbWlseW9pZDsKKwlIZWFwVHVwbGUgZmFtaWx5dHVwOworCUZvcm1f cGdfb3BmYW1pbHkgZmFtaWx5Zm9ybTsKKwljaGFyICpvcGZhbWlseW5hbWU7CisJQ2F0Q0xpc3Qg KnByb2NsaXN0LAorCQkJKm9wcmxpc3Q7CisJaW50IGk7CisKKwkvKiBGZXRjaCBvcGNsYXNzIGlu Zm9ybWF0aW9uICovCisJY2xhc3N0dXAgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBPYmplY3RJ ZEdldERhdHVtKG9wY2xhc3NvaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY2xhc3N0dXAp KQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0b3IgY2xhc3Mg JXUiLCBvcGNsYXNzb2lkKTsKKwljbGFzc2Zvcm0gPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJV Q1QoY2xhc3N0dXApOworCisJb3BmYW1pbHlvaWQgPSBjbGFzc2Zvcm0tPm9wY2ZhbWlseTsKKwor CisJLyogRmV0Y2ggb3BmYW1pbHkgaW5mb3JtYXRpb24gKi8KKwlmYW1pbHl0dXAgPSBTZWFyY2hT eXNDYWNoZTEoT1BGQU1JTFlPSUQsIE9iamVjdElkR2V0RGF0dW0ob3BmYW1pbHlvaWQpKTsKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQoZmFtaWx5dHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIG9wZXJhdG9yIGZhbWlseSAldSIsIG9wZmFtaWx5b2lkKTsKKwlmYW1p bHlmb3JtID0gKEZvcm1fcGdfb3BmYW1pbHkpIEdFVFNUUlVDVChmYW1pbHl0dXApOworCisJb3Bm YW1pbHluYW1lID0gTmFtZVN0cihmYW1pbHlmb3JtLT5vcGZuYW1lKTsKKworCS8qIEZldGNoIGFs bCBvcGVyYXRvcnMgYW5kIHN1cHBvcnQgZnVuY3Rpb25zIG9mIHRoZSBvcGZhbWlseSAqLworCW9w cmxpc3QgPSBTZWFyY2hTeXNDYWNoZUxpc3QxKEFNT1BTVFJBVEVHWSwgT2JqZWN0SWRHZXREYXR1 bShvcGZhbWlseW9pZCkpOworCXByb2NsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0MShBTVBST0NO VU0sIE9iamVjdElkR2V0RGF0dW0ob3BmYW1pbHlvaWQpKTsKKworCS8qIENoZWNrIGluZGl2aWR1 YWwgb3BlcmF0b3JzICovCisJZm9yIChpID0gMDsgaSA8IG9wcmxpc3QtPm5fbWVtYmVyczsgaSsr KQorCXsKKwkJSGVhcFR1cGxlIG9wcnR1cCA9ICZvcHJsaXN0LT5tZW1iZXJzW2ldLT50dXBsZTsK KwkJRm9ybV9wZ19hbW9wIG9wcmZvcm0gPSAoRm9ybV9wZ19hbW9wKSBHRVRTVFJVQ1Qob3BydHVw KTsKKworCQkvKiBDaGVjayBpdCdzIGFsbG93ZWQgc3RyYXRlZ3kgZm9yIHN0aXIgKi8KKwkJaWYg KG9wcmZvcm0tPmFtb3BzdHJhdGVneSA8IDEgfHwKKwkJCW9wcmZvcm0tPmFtb3BzdHJhdGVneSA+ IFNUSVJfTlNUUkFURUdJRVMpCisJCXsKKwkJCWVyZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIg b3BmYW1pbHkgJXMgY29udGFpbnMgb3BlcmF0b3IgJXMgd2l0aCBpbnZhbGlkIHN0cmF0ZWd5IG51 bWJlciAlZCIsCisJCQkJCQkJCSAgIG9wZmFtaWx5bmFtZSwKKwkJCQkJCQkJICAgZm9ybWF0X29w ZXJhdG9yKG9wcmZvcm0tPmFtb3BvcHIpLAorCQkJCQkJCQkgICBvcHJmb3JtLT5hbW9wc3RyYXRl Z3kpKSk7CisJCQlyZXN1bHQgPSBmYWxzZTsKKwkJfQorCisJCS8qIHN0aXIgZG9lc24ndCBzdXBw b3J0IE9SREVSIEJZIG9wZXJhdG9ycyAqLworCQlpZiAob3ByZm9ybS0+YW1vcHB1cnBvc2UgIT0g QU1PUF9TRUFSQ0ggfHwKKwkJCU9pZElzVmFsaWQob3ByZm9ybS0+YW1vcHNvcnRmYW1pbHkpKQor CQl7CisJCQllcmVwb3J0KElORk8sCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpF Q1RfREVGSU5JVElPTiksCisJCQkJCQkJZXJybXNnKCJzdGlyIG9wZmFtaWx5ICVzIGNvbnRhaW5z IGludmFsaWQgT1JERVIgQlkgc3BlY2lmaWNhdGlvbiBmb3Igb3BlcmF0b3IgJXMiLAorCQkJCQkJ CQkgICBvcGZhbWlseW5hbWUsCisJCQkJCQkJCSAgIGZvcm1hdF9vcGVyYXRvcihvcHJmb3JtLT5h bW9wb3ByKSkpKTsKKwkJCXJlc3VsdCA9IGZhbHNlOworCQl9CisKKwkJLyogQ2hlY2sgb3BlcmF0 b3Igc2lnbmF0dXJlIC0tLSBzYW1lIGZvciBhbGwgc3RpciBzdHJhdGVnaWVzICovCisJCWlmICgh Y2hlY2tfYW1vcF9zaWduYXR1cmUob3ByZm9ybS0+YW1vcG9wciwgQk9PTE9JRCwKKwkJCQkJCQkJ ICBvcHJmb3JtLT5hbW9wbGVmdHR5cGUsCisJCQkJCQkJCSAgb3ByZm9ybS0+YW1vcHJpZ2h0dHlw ZSkpCisJCXsKKwkJCWVyZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIgb3BmYW1pbHkgJXMgY29u dGFpbnMgb3BlcmF0b3IgJXMgd2l0aCB3cm9uZyBzaWduYXR1cmUiLAorCQkJCQkJCQkgICBvcGZh bWlseW5hbWUsCisJCQkJCQkJCSAgIGZvcm1hdF9vcGVyYXRvcihvcHJmb3JtLT5hbW9wb3ByKSkp KTsKKwkJCXJlc3VsdCA9IGZhbHNlOworCQl9CisJfQorCisKKwlSZWxlYXNlQ2F0Q2FjaGVMaXN0 KHByb2NsaXN0KTsKKwlSZWxlYXNlQ2F0Q2FjaGVMaXN0KG9wcmxpc3QpOworCVJlbGVhc2VTeXND YWNoZShmYW1pbHl0dXApOworCVJlbGVhc2VTeXNDYWNoZShjbGFzc3R1cCk7CisKKwlyZXR1cm4g cmVzdWx0OworfQorCisKKy8qCisgKiBJbml0aWFsaXplIG1ldGFwYWdlIG9mIGEgU1RJUiBpbmRl eC4KKyAqIFRoZSBza2lwSW5zZXJ0cyBmbGFnIGRldGVybWluZXMgaWYgbmV3IGluc2VydHMgd2ls bCBiZSBhY2NlcHRlZCBvciBza2lwcGVkLgorICovCit2b2lkCitTdGlyRmlsbE1ldGFwYWdlKFJl bGF0aW9uIGluZGV4LCBQYWdlIG1ldGFQYWdlLCBib29sIHNraXBJbnNlcnRzKQoreworCVN0aXJN ZXRhUGFnZURhdGEgKm1ldGFkYXRhOworCisJU3RpckluaXRQYWdlKG1ldGFQYWdlLCBTVElSX01F VEEpOworCW1ldGFkYXRhID0gU3RpclBhZ2VHZXRNZXRhKG1ldGFQYWdlKTsKKwltZW1zZXQobWV0 YWRhdGEsIDAsIHNpemVvZihTdGlyTWV0YVBhZ2VEYXRhKSk7CisJbWV0YWRhdGEtPm1hZ2lja051 bWJlciA9IFNUSVJfTUFHSUNLX05VTUJFUjsKKwltZXRhZGF0YS0+c2tpcEluc2VydHMgPSBza2lw SW5zZXJ0czsKKwkoKFBhZ2VIZWFkZXIpIG1ldGFQYWdlKS0+cGRfbG93ZXIgKz0gc2l6ZW9mKFN0 aXJNZXRhUGFnZURhdGEpOworfQorCisvKgorICogQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBt ZXRhcGFnZSBmb3IgYSBTVElSIGluZGV4LgorICogVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGluZGV4 IGNyZWF0aW9uLgorICovCit2b2lkCitTdGlySW5pdE1ldGFwYWdlKFJlbGF0aW9uIGluZGV4LCBG b3JrTnVtYmVyIGZvcmtudW0pCit7CisJQnVmZmVyIG1ldGFCdWZmZXI7CisJUGFnZSBtZXRhUGFn ZTsKKworCUFzc2VydCghUmVsYXRpb25OZWVkc1dBTChpbmRleCkpOworCS8qCisJICogTWFrZSBh IG5ldyBwYWdlOyBzaW5jZSBpdCBpcyBmaXJzdCBwYWdlIGl0IHNob3VsZCBiZSBhc3NvY2lhdGVk IHdpdGgKKwkgKiBibG9jayBudW1iZXIgMCAoU1RJUl9NRVRBUEFHRV9CTEtOTykuICBObyBuZWVk IHRvIGhvbGQgdGhlIGV4dGVuc2lvbgorCSAqIGxvY2sgYmVjYXVzZSB0aGVyZSBjYW5ub3QgYmUg Y29uY3VycmVudCBpbnNlcnRlcnMgeWV0LgorCSAqLworCW1ldGFCdWZmZXIgPSBSZWFkQnVmZmVy RXh0ZW5kZWQoaW5kZXgsIGZvcmtudW0sIFBfTkVXLCBSQk1fTk9STUFMLCBOVUxMKTsKKwlTVEFS VF9DUklUX1NFQ1RJT04oKTsKKwlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX0VY Q0xVU0lWRSk7CisJQXNzZXJ0KEJ1ZmZlckdldEJsb2NrTnVtYmVyKG1ldGFCdWZmZXIpID09IFNU SVJfTUVUQVBBR0VfQkxLTk8pOworCisJbWV0YVBhZ2UgPSAgQnVmZmVyR2V0UGFnZShtZXRhQnVm ZmVyKTsKKwlTdGlyRmlsbE1ldGFwYWdlKGluZGV4LCBtZXRhUGFnZSwgZm9ya251bSA9PSBJTklU X0ZPUktOVU0pOworCisJTWFya0J1ZmZlckRpcnR5KG1ldGFCdWZmZXIpOworCUVORF9DUklUX1NF Q1RJT04oKTsKKwlVbmxvY2tSZWxlYXNlQnVmZmVyKG1ldGFCdWZmZXIpOworfQorCisvKgorICog SW5pdGlhbGl6ZSBhbnkgcGFnZSBvZiBhIHN0aXIgaW5kZXguCisgKi8KK3ZvaWQKK1N0aXJJbml0 UGFnZShQYWdlIHBhZ2UsIHVpbnQxNiBmbGFncykKK3sKKwlTdGlyUGFnZU9wYXF1ZSBvcGFxdWU7 CisKKwlQYWdlSW5pdChwYWdlLCBCTENLU1osIHNpemVvZihTdGlyUGFnZU9wYXF1ZURhdGEpKTsK KworCW9wYXF1ZSA9IFN0aXJQYWdlR2V0T3BhcXVlKHBhZ2UpOworCW9wYXF1ZS0+ZmxhZ3MgPSBm bGFnczsKKwlvcGFxdWUtPnN0aXJfcGFnZV9pZCA9IFNUSVJfUEFHRV9JRDsKK30KKworLyoKKyAq IEFkZCBhIHR1cGxlIHRvIGEgU1RJUiBwYWdlLiBSZXR1cm5zIGZhbHNlIGlmIHR1cGxlIGRvZXNu J3QgZml0LgorICogVGhlIHR1cGxlIGlzIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIHBhZ2UuCisg Ki8KK3N0YXRpYyBib29sCitTdGlyUGFnZUFkZEl0ZW0oUGFnZSBwYWdlLCBTdGlyVHVwbGUgKnR1 cGxlKQoreworCVN0aXJUdXBsZSAqaXR1cDsKKwlTdGlyUGFnZU9wYXF1ZSBvcGFxdWU7CisJUG9p bnRlciBwdHI7CisKKwkvKiBXZSBzaG91bGRuJ3QgYmUgcG9pbnRlZCB0byBhbiBpbnZhbGlkIHBh Z2UgKi8KKwlBc3NlcnQoIVBhZ2VJc05ldyhwYWdlKSk7CisKKwkvKiBEb2VzIG5ldyB0dXBsZSBm aXQgb24gdGhlIHBhZ2U/ICovCisJaWYgKFN0aXJQYWdlR2V0RnJlZVNwYWNlKHN0YXRlLCBwYWdl KSA8IHNpemVvZihTdGlyVHVwbGUpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBDb3B5IG5ldyB0 dXBsZSB0byB0aGUgZW5kIG9mIHBhZ2UgKi8KKwlvcGFxdWUgPSBTdGlyUGFnZUdldE9wYXF1ZShw YWdlKTsKKwlpdHVwID0gU3RpclBhZ2VHZXRUdXBsZShwYWdlLCBvcGFxdWUtPm1heG9mZiArIDEp OworCW1lbWNweSgoUG9pbnRlcikgaXR1cCwgKFBvaW50ZXIpIHR1cGxlLCBzaXplb2YoU3RpclR1 cGxlKSk7CisKKwkvKiBBZGp1c3QgbWF4b2ZmIGFuZCBwZF9sb3dlciAqLworCW9wYXF1ZS0+bWF4 b2ZmKys7CisJcHRyID0gKFBvaW50ZXIpIFN0aXJQYWdlR2V0VHVwbGUocGFnZSwgb3BhcXVlLT5t YXhvZmYgKyAxKTsKKwkoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9sb3dlciA9IHB0ciAtIHBhZ2U7 CisKKwkvKiBBc3NlcnQgd2UgZGlkbid0IG92ZXJydW4gYXZhaWxhYmxlIHNwYWNlICovCisJQXNz ZXJ0KCgoUGFnZUhlYWRlcikgcGFnZSktPnBkX2xvd2VyIDw9ICgoUGFnZUhlYWRlcikgcGFnZSkt PnBkX3VwcGVyKTsKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIEluc2VydCBhIG5ldyB0dXBs ZSBpbnRvIGEgU1RJUiBpbmRleC4KKyAqLworYm9vbAorc3Rpcmluc2VydChSZWxhdGlvbiBpbmRl eCwgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsLAorCQkgIEl0ZW1Qb2ludGVyIGh0X2N0aWQs IFJlbGF0aW9uIGhlYXBSZWwsCisJCSAgSW5kZXhVbmlxdWVDaGVjayBjaGVja1VuaXF1ZSwKKwkJ ICBib29sIGluZGV4VW5jaGFuZ2VkLAorCQkgIHN0cnVjdCBJbmRleEluZm8gKmluZGV4SW5mbykK K3sKKwlTdGlyVHVwbGUgKml0dXA7CisJTWVtb3J5Q29udGV4dCBvbGRDdHg7CisJTWVtb3J5Q29u dGV4dCBpbnNlcnRDdHg7CisJU3Rpck1ldGFQYWdlRGF0YSAqbWV0YURhdGE7CisJQnVmZmVyIGJ1 ZmZlciwKKwkJCW1ldGFCdWZmZXI7CisJUGFnZSBwYWdlOworCXVpbnQxNiBibGtObzsKKworCS8q IENyZWF0ZSB0ZW1wb3JhcnkgY29udGV4dCBmb3IgaW5zZXJ0IG9wZXJhdGlvbiAqLworCWluc2Vy dEN0eCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJ CQkJCSAgIlN0aXIgaW5zZXJ0IHRlbXBvcmFyeSBjb250ZXh0IiwKKwkJCQkJCQkJCSAgQUxMT0NT RVRfREVGQVVMVF9TSVpFUyk7CisKKwlvbGRDdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaW5z ZXJ0Q3R4KTsKKworCS8qIENyZWF0ZSBuZXcgdHVwbGUgd2l0aCBoZWFwIHBvaW50ZXIgKi8KKwlp dHVwID0gKFN0aXJUdXBsZSAqKSBwYWxsb2MwKHNpemVvZihTdGlyVHVwbGUpKTsKKwlpdHVwLT5o ZWFwUHRyID0gKmh0X2N0aWQ7CisKKwlBc3NlcnQoIVJlbGF0aW9uTmVlZHNXQUwoaW5kZXgpKTsK KwltZXRhQnVmZmVyID0gUmVhZEJ1ZmZlcihpbmRleCwgU1RJUl9NRVRBUEFHRV9CTEtOTyk7CisK Kwlmb3IgKDs7KQorCXsKKwkJTG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19TSEFS RSk7CisJCW1ldGFEYXRhID0gU3RpclBhZ2VHZXRNZXRhKEJ1ZmZlckdldFBhZ2UobWV0YUJ1ZmZl cikpOworCQkvKiBDaGVjayBpZiBpbnNlcnRzIGFyZSBhbGxvd2VkICovCisJCWlmIChtZXRhRGF0 YS0+c2tpcEluc2VydHMpCisJCXsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZlcik7 CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwkJYmxrTm8gPSBtZXRhRGF0YS0+bGFzdEJsa05vOwor CQkvKiBEb24ndCBob2xkIG1ldGFidWZmZXIgbG9jayB3aGlsZSBkb2luZyBpbnNlcnQgKi8KKwkJ TG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCisJCWlmIChibGtO byA+IDApCisJCXsKKwkJCWJ1ZmZlciA9IFJlYWRCdWZmZXIoaW5kZXgsIGJsa05vKTsKKwkJCUxv Y2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCQkJU1RBUlRfQ1JJVF9T RUNUSU9OKCk7CisKKwkJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CisKKwkJCUFzc2Vy dCghUGFnZUlzTmV3KHBhZ2UpKTsKKworCQkJLyogVHJ5IHRvIGFkZCB0dXBsZSB0byBleGlzdGlu ZyBwYWdlICovCisJCQlpZiAoU3RpclBhZ2VBZGRJdGVtKHBhZ2UsIGl0dXApKQorCQkJeworCQkJ CS8qIFN1Y2Nlc3MhICBBcHBseSB0aGUgY2hhbmdlLCBjbGVhbiB1cCwgYW5kIGV4aXQgKi8KKwkJ CQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKwkJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CisKKwkJ CQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJCQkJUmVsZWFzZUJ1ZmZlcihtZXRhQnVm ZmVyKTsKKwkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKKwkJCQlNZW1vcnlDb250 ZXh0RGVsZXRlKGluc2VydEN0eCk7CisJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCisJCQlFTkRf Q1JJVF9TRUNUSU9OKCk7CisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJCX0KKwor CQkvKiBOZWVkIHRvIGFkZCBuZXcgcGFnZSAtIGdldCBleGNsdXNpdmUgbG9jayBvbiBtZXRhIHBh Z2UgKi8KKwkJTG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOwor CisJCW1ldGFEYXRhID0gU3RpclBhZ2VHZXRNZXRhKEJ1ZmZlckdldFBhZ2UobWV0YUJ1ZmZlcikp OworCQkvKiBDaGVjayBpZiBhbm90aGVyIGJhY2tlbmQgYWxyZWFkeSBleHRlbmRlZCB0aGUgaW5k ZXggKi8KKworCQlpZiAoYmxrTm8gIT0gbWV0YURhdGEtPmxhc3RCbGtObykKKwkJeworCQkJQXNz ZXJ0KGJsa05vIDwgbWV0YURhdGEtPmxhc3RCbGtObyk7CisJCQkvKiBTb21lb25lIGVsc2UgaW5z ZXJ0ZWQgdGhlIG5ldyBwYWdlIGludG8gdGhlIGluZGV4LCBsZXRzIHRyeSBhZ2FpbiAqLworCQkJ TG9ja0J1ZmZlcihtZXRhQnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCQkJY29udGludWU7 CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBNdXN0IGV4dGVuZCB0aGUgZmlsZSAqLworCQkJYnVm ZmVyID0gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChpbmRleCksIE1BSU5fRk9SS05VTSwgTlVM TCwKKwkJCQkJCQkJCSAgIEVCX0xPQ0tfRklSU1QpOworCQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2Uo YnVmZmVyKTsKKwkJCVNUQVJUX0NSSVRfU0VDVElPTigpOworCisJCQlTdGlySW5pdFBhZ2UocGFn ZSwgMCk7CisKKwkJCWlmICghU3RpclBhZ2VBZGRJdGVtKHBhZ2UsIGl0dXApKQorCQkJeworCQkJ CS8qIFdlIHNob3VsZG4ndCBiZSBoZXJlIHNpbmNlIHdlJ3JlIGluc2VydGluZyB0byBhbiBlbXB0 eSBwYWdlICovCisJCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBhZGQgbmV3IHN0aXIgdHVwbGUg dG8gZW1wdHkgcGFnZSIpOworCQkJfQorCisJCQkvKiBVcGRhdGUgbWV0YSBwYWdlIHdpdGggbmV3 IGxhc3QgYmxvY2sgbnVtYmVyICovCisJCQltZXRhRGF0YS0+bGFzdEJsa05vID0gQnVmZmVyR2V0 QmxvY2tOdW1iZXIoYnVmZmVyKTsKKworCQkJTWFya0J1ZmZlckRpcnR5KG1ldGFCdWZmZXIpOwor CQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisKKwkJCUVORF9DUklUX1NFQ1RJT04oKTsKKwor CQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlciht ZXRhQnVmZmVyKTsKKworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7CisJCQlNZW1v cnlDb250ZXh0RGVsZXRlKGluc2VydEN0eCk7CisKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0K K30KKworLyoKKyAqIFNUSVIgZG9lc24ndCBzdXBwb3J0IHNjYW5zIC0gdGhlc2UgZnVuY3Rpb25z IGFsbCBlcnJvciBvdXQKKyAqLworSW5kZXhTY2FuRGVzYworc3RpcmJlZ2luc2NhbihSZWxhdGlv biByLCBpbnQgbmtleXMsIGludCBub3JkZXJieXMpCit7CisJZXJlcG9ydChFUlJPUiwgKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBpcyBub3Qg YSBub3QgaW1wbGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30KKwordm9pZAorc3RpcnJlc2NhbihJ bmRleFNjYW5EZXNjIHNjYW4sIFNjYW5LZXkgc2NhbmtleSwgaW50IG5zY2Fua2V5cywKKwkJICBT Y2FuS2V5IG9yZGVyYnlzLCBpbnQgbm9yZGVyYnlzKQoreworCWVyZXBvcnQoRVJST1IsIChlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJcIiVzXCIgaXMgbm90 IGEgbm90IGltcGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9CisKK3ZvaWQgc3RpcmVuZHNjYW4o SW5kZXhTY2FuRGVzYyBzY2FuKQoreworCWVyZXBvcnQoRVJST1IsIChlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgbm90IGltcGxl bWVudGVkIiwgX19mdW5jX18pKSk7Cit9CisKKy8qCisgKiBCdWlsZCBhIFNUSVIgaW5kZXggLSBv bmx5IGFsbG93ZWQgZm9yIGF1eGlsaWFyeSBpbmRleGVzLgorICogSnVzdCBpbml0aWFsaXplcyB0 aGUgbWV0YSBwYWdlIHdpdGhvdXQgYW55IGhlYXAgc2NhbnMuCisgKi8KK0luZGV4QnVpbGRSZXN1 bHQgKgorc3RpcmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAorCQkJCQkJICAg c3RydWN0IEluZGV4SW5mbyAqaW5kZXhJbmZvKQoreworCUluZGV4QnVpbGRSZXN1bHQgKnJlc3Vs dDsKKworCWlmICghaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpCisJCWVyZXBvcnQoRVJST1IsIChl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJTVElSIGluZGV4 ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgdG8gYmUgYnVpbHQiKSkpOworCisJU3RpckluaXRNZXRhcGFn ZShpbmRleCwgTUFJTl9GT1JLTlVNKTsKKworCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICop IHBhbGxvYyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOworCXJlc3VsdC0+aGVhcF90dXBsZXMg PSAwOworCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gMDsKKwlyZXR1cm4gcmVzdWx0OworfQorCit2 b2lkIHN0aXJidWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4KQoreworCVN0aXJJbml0TWV0YXBhZ2Uo aW5kZXgsIElOSVRfRk9SS05VTSk7Cit9CisKK0luZGV4QnVsa0RlbGV0ZVJlc3VsdCAqCitzdGly YnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sCisJCQkJCQkJCQkgSW5kZXhCdWxrRGVs ZXRlUmVzdWx0ICpzdGF0cywKKwkJCQkJCQkJCSBJbmRleEJ1bGtEZWxldGVDYWxsYmFjayBjYWxs YmFjaywKKwkJCQkJCQkJCSB2b2lkICpjYWxsYmFja19zdGF0ZSkKK3sKKwlSZWxhdGlvbiBpbmRl eCA9IGluZm8tPmluZGV4OworCUJsb2NrTnVtYmVyIGJsa25vLCBucGFnZXM7CisJQnVmZmVyIGJ1 ZmZlcjsKKwlQYWdlIHBhZ2U7CisKKwkvKiBGb3Igbm9ybWFsIFZBQ1VVTSwgbWFyayB0byBza2lw IGluc2VydHMgYW5kIHdhcm4gYWJvdXQgaW5kZXggZHJvcCBuZWVkZWQgKi8KKwlpZiAoIWluZm8t PnZhbGlkYXRlX2luZGV4KQorCXsKKwkJU3Rpck1hcmtBc1NraXBJbnNlcnRzKGluZGV4KTsKKwor CQllcmVwb3J0KFdBUk5JTkcsIChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQllcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQsIHNlZW1zIGxp a2UgdGhpcyBpbmRleCBuZWVkIHRvIGJlIGRyb3BwZWQiLCBfX2Z1bmNfXykpKTsKKwkJcmV0dXJu IE5VTEw7CisJfQorCisJaWYgKHN0YXRzID09IE5VTEwpCisJCXN0YXRzID0gKEluZGV4QnVsa0Rl bGV0ZVJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihJbmRleEJ1bGtEZWxldGVSZXN1bHQpKTsKKwor CS8qCisJICogSXRlcmF0ZSBvdmVyIHRoZSBwYWdlcy4gV2UgZG9uJ3QgY2FyZSBhYm91dCBjb25j dXJyZW50bHkgYWRkZWQgcGFnZXMsCisJICogYmVjYXVzZSBpbmRleCBpcyBtYXJrZWQgYXMgbm90 LXJlYWR5IGZvciB0aGF0IG1vbW1lbnQgYW5kIGluZGV4IG5vdAorCSAqIHVzZWQgZm9yIGluc2Vy dC4KKwkgKi8KKwlucGFnZXMgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKGluZGV4KTsKKwlm b3IgKGJsa25vID0gU1RJUl9IRUFEX0JMS05POyBibGtubyA8IG5wYWdlczsgYmxrbm8rKykKKwl7 CisJCVN0aXJUdXBsZSAqaXR1cCwgKml0dXBFbmQ7CisKKwkJdmFjdXVtX2RlbGF5X3BvaW50KGZh bHNlKTsKKworCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoaW5kZXgsIE1BSU5fRk9SS05V TSwgYmxrbm8sCisJCQkJCQkJCQlSQk1fTk9STUFMLCBpbmZvLT5zdHJhdGVneSk7CisKKwkJTG9j a0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1NIQVJFKTsKKwkJcGFnZSA9IEJ1ZmZlckdldFBh Z2UoYnVmZmVyKTsKKworCQlpZiAoUGFnZUlzTmV3KHBhZ2UpKQorCQl7CisJCQlVbmxvY2tSZWxl YXNlQnVmZmVyKGJ1ZmZlcik7CisJCQljb250aW51ZTsKKwkJfQorCisJCWl0dXAgPSBTdGlyUGFn ZUdldFR1cGxlKHBhZ2UsIEZpcnN0T2Zmc2V0TnVtYmVyKTsKKwkJaXR1cEVuZCA9IFN0aXJQYWdl R2V0VHVwbGUocGFnZSwgT2Zmc2V0TnVtYmVyTmV4dChTdGlyUGFnZUdldE1heE9mZnNldChwYWdl KSkpOworCQl3aGlsZSAoaXR1cCA8IGl0dXBFbmQpCisJCXsKKwkJCS8qIERvIHdlIGhhdmUgdG8g ZGVsZXRlIHRoaXMgdHVwbGU/ICovCisJCQlpZiAoY2FsbGJhY2soJml0dXAtPmhlYXBQdHIsIGNh bGxiYWNrX3N0YXRlKSkKKwkJCXsKKwkJCQllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygid2UgbmV2ZXIgZGVsZXRlIGluIHN0aXIi KSkpOworCQkJfQorCisJCQlpdHVwID0gU3RpclBhZ2VHZXROZXh0VHVwbGUoaXR1cCk7CisJCX0K KworCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJfQorCisJcmV0dXJuIHN0YXRzOwor fQorCisvKgorICogTWFyayBhIFNUSVIgaW5kZXggdG8gc2tpcCBmdXR1cmUgaW5zZXJ0cworICov Cit2b2lkCitTdGlyTWFya0FzU2tpcEluc2VydHMoUmVsYXRpb24gaW5kZXgpCit7CisJU3Rpck1l dGFQYWdlRGF0YSAqbWV0YURhdGE7CisJQnVmZmVyIG1ldGFCdWZmZXI7CisJUGFnZSBtZXRhUGFn ZTsKKworCUFzc2VydCghUmVsYXRpb25OZWVkc1dBTChpbmRleCkpOworCW1ldGFCdWZmZXIgPSBS ZWFkQnVmZmVyKGluZGV4LCBTVElSX01FVEFQQUdFX0JMS05PKTsKKwlMb2NrQnVmZmVyKG1ldGFC dWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CisK KwltZXRhUGFnZSA9IEJ1ZmZlckdldFBhZ2UobWV0YUJ1ZmZlcik7CisJbWV0YURhdGEgPSBTdGly UGFnZUdldE1ldGEobWV0YVBhZ2UpOworCisJaWYgKCFtZXRhRGF0YS0+c2tpcEluc2VydHMpCisJ eworCQltZXRhRGF0YS0+c2tpcEluc2VydHMgPSB0cnVlOworCQlNYXJrQnVmZmVyRGlydHkobWV0 YUJ1ZmZlcik7CisJfQorCUVORF9DUklUX1NFQ1RJT04oKTsKKwlVbmxvY2tSZWxlYXNlQnVmZmVy KG1ldGFCdWZmZXIpOworfQorCitJbmRleEJ1bGtEZWxldGVSZXN1bHQgKgorc3RpcnZhY3V1bWNs ZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLAorCQkJCQkJCQkJCUluZGV4QnVsa0RlbGV0ZVJl c3VsdCAqc3RhdHMpCit7CisJU3Rpck1hcmtBc1NraXBJbnNlcnRzKGluZm8tPmluZGV4KTsKKwll cmVwb3J0KFdBUk5JTkcsIChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5vdCBpbXBsZW1lbnRlZCwgc2VlbXMgbGlrZSB0 aGlzIGluZGV4IG5lZWQgdG8gYmUgZHJvcHBlZCIsIF9fZnVuY19fKSkpOworCXJldHVybiBOVUxM OworfQorCitieXRlYSAqCitzdGlyb3B0aW9ucyhEYXR1bSByZWxvcHRpb25zLCBib29sIHZhbGlk YXRlKQoreworCXJldHVybiBOVUxMOworfQorCit2b2lkCitzdGlyY29zdGVzdGltYXRlKFBsYW5u ZXJJbmZvICpyb290LCBJbmRleFBhdGggKnBhdGgsCisJCQkJCSBkb3VibGUgbG9vcF9jb3VudCwg Q29zdCAqaW5kZXhTdGFydHVwQ29zdCwKKwkJCQkJIENvc3QgKmluZGV4VG90YWxDb3N0LCBTZWxl Y3Rpdml0eSAqaW5kZXhTZWxlY3Rpdml0eSwKKwkJCQkJIGRvdWJsZSAqaW5kZXhDb3JyZWxhdGlv biwgZG91YmxlICppbmRleFBhZ2VzKQoreworCWVyZXBvcnQoRVJST1IsIChlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgbm90IGlt cGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggYWEyMTY2ODNi NzQuLjg1ZDJmMDJkMzJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0zNDExLDYgKzM0MTEsNyBAQCB2 YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3Qp CiAJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBERUJVRzI7CiAJaXZpbmZvLm51bV9oZWFwX3R1cGxl cyA9IGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5yZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0g TlVMTDsKKwlpdmluZm8udmFsaWRhdGVfaW5kZXggPSB0cnVlOwogCiAJLyoKIAkgKiBFbmNvZGUg VElEcyBhcyBpbnQ4IHZhbHVlcyBmb3IgdGhlIHNvcnQsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHNv cnRpbmcKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwppbmRleCA4NzRhOGZjODlhZC4uOWNjNGYwNmRhOWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYworKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKQEAgLTMwNyw2ICszMDcsNyBAQCBjcmVhdGVfdG9hc3Rf dGFibGUoUmVsYXRpb24gcmVsLCBPaWQgdG9hc3RPaWQsIE9pZCB0b2FzdEluZGV4T2lkLAogCWlu ZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzID0gMDsKIAlpbmRleEluZm8tPmlpX0FtID0gQlRS RUVfQU1fT0lEOwogCWluZGV4SW5mby0+aWlfQW1DYWNoZSA9IE5VTEw7CisJaW5kZXhJbmZvLT5p aV9BdXhpbGlhcnkgPSBmYWxzZTsKIAlpbmRleEluZm8tPmlpX0NvbnRleHQgPSBDdXJyZW50TWVt b3J5Q29udGV4dDsKIAogCWNvbGxhdGlvbklkc1swXSA9IEludmFsaWRPaWQ7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9h bmFseXplLmMKaW5kZXggNGZmZmI3NmU1NTcuLjM4NjAyZTZhNzJkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5h bHl6ZS5jCkBAIC03MjAsNiArNzIwLDcgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVs LCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAkJCWl2aW5mby5tZXNzYWdlX2xldmVsID0gZWxldmVs OwogCQkJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9IG9uZXJlbC0+cmRfcmVsLT5yZWx0dXBsZXM7 CiAJCQlpdmluZm8uc3RyYXRlZ3kgPSB2YWNfc3RyYXRlZ3k7CisJCQlpdmluZm8udmFsaWRhdGVf aW5kZXggPSBmYWxzZTsKIAogCQkJc3RhdHMgPSBpbmRleF92YWN1dW1fY2xlYW51cCgmaXZpbmZv LCBOVUxMKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggMGZlZWEx ZDMwZWMuLjU4MmRiNzdkZGMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1 dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMK QEAgLTg4NCw2ICs4ODQsNyBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19vbmVfaW5kZXgoUGFy YWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBSZWxhdGlvbiBpbmRyZWwsCiAJaXZpbmZvLmVzdGltYXRl ZF9jb3VudCA9IHB2cy0+c2hhcmVkLT5lc3RpbWF0ZWRfY291bnQ7CiAJaXZpbmZvLm51bV9oZWFw X3R1cGxlcyA9IHB2cy0+c2hhcmVkLT5yZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gcHZz LT5ic3RyYXRlZ3k7CisJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gZmFsc2U7CiAKIAkvKiBVcGRh dGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0aW9uICovCiAJcHZzLT5pbmRuYW1lID0gcHN0cmR1 cChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRyZWwpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL25vZGVzL21ha2VmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKaW5k ZXggZTJkOWU5YmU0MWEuLmU5N2UwOTQzZjViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rl cy9tYWtlZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwpAQCAtODc1 LDYgKzg3NSw3IEBAIG1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMs IE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMsCiAJLyogaW5pdGlhbGl6ZSBpbmRleC1idWls ZCBzdGF0ZSB0byBkZWZhdWx0ICovCiAJbi0+aWlfQnJva2VuSG90Q2hhaW4gPSBmYWxzZTsKIAlu LT5paV9QYXJhbGxlbFdvcmtlcnMgPSAwOworCW4tPmlpX0F1eGlsaWFyeSA9IGZhbHNlOwogCiAJ Lyogc2V0IHVwIGZvciBwb3NzaWJsZSB1c2UgYnkgaW5kZXggQU0gKi8KIAluLT5paV9BbSA9IGFt b2lkOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvZ2VuYW0uaAppbmRleCA1YjJhYjE4MWI1Zi4uYjk5OTE2ZWRiNGEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9n ZW5hbS5oCkBAIC03Myw2ICs3Myw3IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4VmFjdXVtSW5mbwog CWJvb2wJCWVzdGltYXRlZF9jb3VudDsJLyogbnVtX2hlYXBfdHVwbGVzIGlzIGFuIGVzdGltYXRl ICovCiAJaW50CQkJbWVzc2FnZV9sZXZlbDsJLyogZXJlcG9ydCBsZXZlbCBmb3IgcHJvZ3Jlc3Mg bWVzc2FnZXMgKi8KIAlkb3VibGUJCW51bV9oZWFwX3R1cGxlczsJLyogdHVwbGVzIHJlbWFpbmlu ZyBpbiBoZWFwICovCisJYm9vbAkJdmFsaWRhdGVfaW5kZXg7IC8qIHZhbGlkYXRpbmcgY29uY3Vy cmVudGx5IGJ1aWx0IGluZGV4PyAqLwogCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5Owkv KiBhY2Nlc3Mgc3RyYXRlZ3kgZm9yIHJlYWRzICovCiB9IEluZGV4VmFjdXVtSW5mbzsKIApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaCBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9yZWxvcHRpb25zLmgKaW5kZXggZGZiYjRjODU0NjAuLmExMjFiNGQzMWM5IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9yZWxvcHRpb25zLmgKQEAgLTUxLDggKzUxLDkgQEAgdHlwZWRlZiBlbnVtIHJlbG9wdF9r aW5kCiAJUkVMT1BUX0tJTkRfVklFVyA9ICgxIDw8IDkpLAogCVJFTE9QVF9LSU5EX0JSSU4gPSAo MSA8PCAxMCksCiAJUkVMT1BUX0tJTkRfUEFSVElUSU9ORUQgPSAoMSA8PCAxMSksCisJUkVMT1BU X0tJTkRfU1RJUiA9ICgxIDw8IDEyKSwKIAkvKiBpZiB5b3UgYWRkIGEgbmV3IGtpbmQsIG1ha2Ug c3VyZSB5b3UgdXBkYXRlICJsYXN0X2RlZmF1bHQiIHRvbyAqLwotCVJFTE9QVF9LSU5EX0xBU1Rf REVGQVVMVCA9IFJFTE9QVF9LSU5EX1BBUlRJVElPTkVELAorCVJFTE9QVF9LSU5EX0xBU1RfREVG QVVMVCA9IFJFTE9QVF9LSU5EX1NUSVIsCiAJLyogc29tZSBjb21waWxlcnMgdHJlYXQgZW51bXMg YXMgc2lnbmVkIGludHMsIHNvIHdlIGNhbid0IHVzZSAxIDw8IDMxICovCiAJUkVMT1BUX0tJTkRf TUFYID0gKDEgPDwgMzApCiB9IHJlbG9wdF9raW5kOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL3N0aXIuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk5NDNjNDJhOTdlCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaApAQCAtMCwwICsxLDExNyBAQAorLyotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKgorICogc3Rpci5oCisgKgkgIGhlYWRlciBmaWxlIGZvciBwb3N0Z3JlcyBzdGly IGFjY2VzcyBtZXRob2QgaW1wbGVtZW50YXRpb24uCisgKgorICoKKyAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisg KiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8K KyNpZm5kZWYgX1NUSVJfSF8KKyNkZWZpbmUgX1NUSVJfSF8KKworI2luY2x1ZGUgImFtYXBpLmgi CisjaW5jbHVkZSAieGxvZy5oIgorI2luY2x1ZGUgImdlbmVyaWNfeGxvZy5oIgorI2luY2x1ZGUg Iml0dXAuaCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAibm9kZXMvcGF0aG5vZGVzLmgi CisKKy8qIFN1cHBvcnQgcHJvY2VkdXJlcyBudW1iZXJzICovCisjZGVmaW5lIFNUSVJfTlBST0MJ CQkJMAorCisvKiBTY2FuIHN0cmF0ZWdpZXMgKi8KKyNkZWZpbmUgU1RJUl9OU1RSQVRFR0lFUwkJ MQorCisjZGVmaW5lIFNUSVJfT1BUSU9OU19QUk9DCQkJCTAKKworLyogTWFjcm9zIGZvciBhY2Nl c3Npbmcgc3RpciBwYWdlIHN0cnVjdHVyZXMgKi8KKyNkZWZpbmUgU3RpclBhZ2VHZXRPcGFxdWUo cGFnZSkgKChTdGlyUGFnZU9wYXF1ZSkgUGFnZUdldFNwZWNpYWxQb2ludGVyKHBhZ2UpKQorI2Rl ZmluZSBTdGlyUGFnZUdldE1heE9mZnNldChwYWdlKSAoU3RpclBhZ2VHZXRPcGFxdWUocGFnZSkt Pm1heG9mZikKKyNkZWZpbmUgU3RpclBhZ2VJc01ldGEocGFnZSkgXAorCSgoU3RpclBhZ2VHZXRP cGFxdWUocGFnZSktPmZsYWdzICYgU1RJUl9NRVRBKSAhPSAwKQorI2RlZmluZSBTdGlyUGFnZUdl dERhdGEocGFnZSkJCSgoU3RpclR1cGxlICopUGFnZUdldENvbnRlbnRzKHBhZ2UpKQorI2RlZmlu ZSBTdGlyUGFnZUdldFR1cGxlKHBhZ2UsIG9mZnNldCkgXAorCSgoU3RpclR1cGxlICopKFBhZ2VH ZXRDb250ZW50cyhwYWdlKSBcCisJCSsgc2l6ZW9mKFN0aXJUdXBsZSkgKiAoKG9mZnNldCkgLSAx KSkpCisjZGVmaW5lIFN0aXJQYWdlR2V0TmV4dFR1cGxlKHR1cGxlKSBcCisJKChTdGlyVHVwbGUg KikoKFBvaW50ZXIpKHR1cGxlKSArIHNpemVvZihTdGlyVHVwbGUpKSkKKworCisKKy8qIFByZXNl cnZlZCBwYWdlIG51bWJlcnMgKi8KKyNkZWZpbmUgU1RJUl9NRVRBUEFHRV9CTEtOTwkoMCkKKyNk ZWZpbmUgU1RJUl9IRUFEX0JMS05PCQkoMSkgLyogZmlyc3QgZGF0YSBwYWdlICovCisKKworLyog T3BhcXVlIGZvciBzdGlyIHBhZ2VzICovCit0eXBlZGVmIHN0cnVjdCBTdGlyUGFnZU9wYXF1ZURh dGEKK3sKKwlPZmZzZXROdW1iZXIgbWF4b2ZmOwkJLyogbnVtYmVyIG9mIGluZGV4IHR1cGxlcyBv biBwYWdlICovCisJdWludDE2CQlmbGFnczsJCQkvKiBzZWUgYml0IGRlZmluaXRpb25zIGJlbG93 ICovCisJdWludDE2CQl1bnVzZWQ7CQkJLyogcGxhY2Vob2xkZXIgdG8gZm9yY2UgbWF4YWxpZ25p bmcgb2Ygc2l6ZSBvZgorCQkJCQkJCQkgKiBTdGlyUGFnZU9wYXF1ZURhdGEgYW5kIHRvIHBsYWNl CisJCQkJCQkJCSAqIHN0aXJfcGFnZV9pZCBleGFjdGx5IGF0IHRoZSBlbmQgb2YgcGFnZSAqLwor CXVpbnQxNgkJc3Rpcl9wYWdlX2lkOwkvKiBmb3IgaWRlbnRpZmljYXRpb24gb2YgU1RJUiBpbmRl eGVzICovCit9IFN0aXJQYWdlT3BhcXVlRGF0YTsKKworLyogU3RpciBwYWdlIGZsYWdzICovCisj ZGVmaW5lIFNUSVJfTUVUQQkJKDE8PDApCisKK3R5cGVkZWYgU3RpclBhZ2VPcGFxdWVEYXRhICpT dGlyUGFnZU9wYXF1ZTsKKworI2RlZmluZSBTVElSX1BBR0VfSUQJCTB4RkY4NAorCisvKiBNZXRh ZGF0YSBvZiBzdGlyIGluZGV4ICovCit0eXBlZGVmIHN0cnVjdCBTdGlyTWV0YVBhZ2VEYXRhCit7 CisJdWludDMyCQltYWdpY2tOdW1iZXI7CisJdWludDE2CQlsYXN0QmxrTm87CisJYm9vbAkJc2tp cEluc2VydHM7CS8qIHNob3VsZCB3ZSBqdXN0IGV4aXQgd2l0aG91dCBhbnkgaW5zZXJ0cyAqLwor fSBTdGlyTWV0YVBhZ2VEYXRhOworCisvKiBNYWdpYyBudW1iZXIgdG8gZGlzdGluZ3Vpc2ggc3Rp ciBwYWdlcyBmcm9tIG90aGVycyAqLworI2RlZmluZSBTVElSX01BR0lDS19OVU1CRVIgKDB4REJB QzBERUYpCisKKyNkZWZpbmUgU3RpclBhZ2VHZXRNZXRhKHBhZ2UpCSgoU3Rpck1ldGFQYWdlRGF0 YSAqKSBQYWdlR2V0Q29udGVudHMocGFnZSkpCisKK3R5cGVkZWYgc3RydWN0IFN0aXJUdXBsZQor eworCUl0ZW1Qb2ludGVyRGF0YSBoZWFwUHRyOworfSBTdGlyVHVwbGU7CisKKyNkZWZpbmUgU3Rp clBhZ2VHZXRGcmVlU3BhY2Uoc3RhdGUsIHBhZ2UpIFwKKwkoQkxDS1NaIC0gTUFYQUxJR04oU2l6 ZU9mUGFnZUhlYWRlckRhdGEpIFwKKwkJLSBTdGlyUGFnZUdldE1heE9mZnNldChwYWdlKSAqIChz aXplb2YoU3RpclR1cGxlKSkgXAorCQktIE1BWEFMSUdOKHNpemVvZihTdGlyUGFnZU9wYXF1ZURh dGEpKSkKKworZXh0ZXJuIHZvaWQgU3RpckZpbGxNZXRhcGFnZShSZWxhdGlvbiBpbmRleCwgUGFn ZSBtZXRhUGFnZSwgYm9vbCBza2lwSW5zZXJ0cyk7CitleHRlcm4gdm9pZCBTdGlySW5pdE1ldGFw YWdlKFJlbGF0aW9uIGluZGV4LCBGb3JrTnVtYmVyIGZvcmtudW0pOworZXh0ZXJuIHZvaWQgU3Rp ckluaXRQYWdlKFBhZ2UgcGFnZSwgdWludDE2IGZsYWdzKTsKK2V4dGVybiB2b2lkIFN0aXJNYXJr QXNTa2lwSW5zZXJ0cyhSZWxhdGlvbiBpbmRleCk7CisKKy8qIGluZGV4IGFjY2VzcyBtZXRob2Qg aW50ZXJmYWNlIGZ1bmN0aW9ucyAqLworZXh0ZXJuIGJvb2wgc3RpcnZhbGlkYXRlKE9pZCBvcGNs YXNzb2lkKTsKK2V4dGVybiBib29sIHN0aXJpbnNlcnQoUmVsYXRpb24gaW5kZXgsIERhdHVtICp2 YWx1ZXMsIGJvb2wgKmlzbnVsbCwKKwkJCQkJIEl0ZW1Qb2ludGVyIGh0X2N0aWQsIFJlbGF0aW9u IGhlYXBSZWwsCisJCQkJCSBJbmRleFVuaXF1ZUNoZWNrIGNoZWNrVW5pcXVlLAorCQkJCQkgYm9v bCBpbmRleFVuY2hhbmdlZCwKKwkJCQkJIHN0cnVjdCBJbmRleEluZm8gKmluZGV4SW5mbyk7Citl eHRlcm4gSW5kZXhTY2FuRGVzYyBzdGlyYmVnaW5zY2FuKFJlbGF0aW9uIHIsIGludCBua2V5cywg aW50IG5vcmRlcmJ5cyk7CitleHRlcm4gdm9pZCBzdGlycmVzY2FuKEluZGV4U2NhbkRlc2Mgc2Nh biwgU2NhbktleSBzY2Fua2V5LCBpbnQgbnNjYW5rZXlzLAorCQkJCQkgU2NhbktleSBvcmRlcmJ5 cywgaW50IG5vcmRlcmJ5cyk7CitleHRlcm4gdm9pZCBzdGlyZW5kc2NhbihJbmRleFNjYW5EZXNj IHNjYW4pOworZXh0ZXJuIEluZGV4QnVpbGRSZXN1bHQgKnN0aXJidWlsZChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwKKwkJCQkJCQkJIHN0cnVjdCBJbmRleEluZm8gKmluZGV4SW5mbyk7 CitleHRlcm4gdm9pZCBzdGlyYnVpbGRlbXB0eShSZWxhdGlvbiBpbmRleCk7CitleHRlcm4gSW5k ZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGlyYnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8s CisJCQkJCQkJCQkJICAgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cywgSW5kZXhCdWxrRGVs ZXRlQ2FsbGJhY2sgY2FsbGJhY2ssCisJCQkJCQkJCQkJICAgdm9pZCAqY2FsbGJhY2tfc3RhdGUp OworZXh0ZXJuIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RpcnZhY3V1bWNsZWFudXAoSW5kZXhW YWN1dW1JbmZvICppbmZvLAorCQkJCQkJCQkJCQkgIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3Rh dHMpOworZXh0ZXJuIGJ5dGVhICpzdGlyb3B0aW9ucyhEYXR1bSByZWxvcHRpb25zLCBib29sIHZh bGlkYXRlKTsKKworI2VuZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2FtLmRhdAppbmRleCAyNmQxNTkyOGExNS4uYTVlY2Y5MjA4YWQgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfYW0uZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW0u ZGF0CkBAIC0zMyw1ICszMyw4IEBACiB7IG9pZCA9PiAnMzU4MCcsIG9pZF9zeW1ib2wgPT4gJ0JS SU5fQU1fT0lEJywKICAgZGVzY3IgPT4gJ2Jsb2NrIHJhbmdlIGluZGV4IChCUklOKSBhY2Nlc3Mg bWV0aG9kJywKICAgYW1uYW1lID0+ICdicmluJywgYW1oYW5kbGVyID0+ICdicmluaGFuZGxlcics IGFtdHlwZSA9PiAnaScgfSwKK3sgb2lkID0+ICc1NTU1Jywgb2lkX3N5bWJvbCA9PiAnU1RJUl9B TV9PSUQnLAorICBkZXNjciA9PiAnc2hvcnQgdGVybSBpbmRleCByZXBsYWNlbWVudCBhY2Nlc3Mg bWV0aG9kJywKKyAgYW1uYW1lID0+ICdzdGlyJywgYW1oYW5kbGVyID0+ICdzdGlyaGFuZGxlcics IGFtdHlwZSA9PiAnaScgfSwKIAogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19vcGNsYXNzLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5kYXQKaW5kZXgg NGE5NjI0ODAyYWEuLjYyMjdjNTY1OGZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX29wY2xhc3MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5kYXQK QEAgLTQ4OCw0ICs0ODgsOCBAQAogCiAjIG5vIGJyaW4gb3BjbGFzcyBmb3IgdGhlIGdlb21ldHJp YyB0eXBlcyBleGNlcHQgYm94CiAKKyMgYWxsb3cgYW55IHR5cGVzIGZvciBTVElSCit7IG9wY21l dGhvZCA9PiAnc3RpcicsIG9pZF9zeW1ib2wgPT4gJ0FOWV9TVElSX09QU19PSUQnLCBvcGNuYW1l ID0+ICdzdGlyX29wcycsCisgIG9wY2ZhbWlseSA9PiAnc3Rpci9hbnlfb3BzJywgb3BjaW50eXBl ID0+ICdhbnknfSwKKwogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZh bWlseS5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFtaWx5LmRhdAppbmRleCBmN2Rj Yjk2YjQzYy4uODM4YWQzMmM5MzIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf b3BmYW1pbHkuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHkuZGF0CkBA IC0zMDQsNSArMzA0LDcgQEAKICAgb3BmbWV0aG9kID0+ICdoYXNoJywgb3BmbmFtZSA9PiAnbXVs dGlyYW5nZV9vcHMnIH0sCiB7IG9pZCA9PiAnNjE1OCcsCiAgIG9wZm1ldGhvZCA9PiAnZ2lzdCcs IG9wZm5hbWUgPT4gJ211bHRpcmFuZ2Vfb3BzJyB9LAoreyBvaWQgPT4gJzU1NTgnLAorICBvcGZt ZXRob2QgPT4gJ3N0aXInLCBvcGZuYW1lID0+ICdhbnlfb3BzJyB9LAogCiBdCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAppbmRleCBkM2QyOGEyNjNmYS4uMTk4Nzk1ZjAxMGYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdApAQCAtOTM1LDYgKzkzNSwxMCBAQAogICBwcm9uYW1lID0+ICdicmluaGFuZGxl cicsIHByb3ZvbGF0aWxlID0+ICd2JywKICAgcHJvcmV0dHlwZSA9PiAnaW5kZXhfYW1faGFuZGxl cicsIHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCcsCiAgIHByb3NyYyA9PiAnYnJpbmhhbmRsZXIn IH0sCit7IG9pZCA9PiAnNTU1NicsIGRlc2NyID0+ICdzaG9ydCB0ZXJtIGluZGV4IHJlcGxhY2Vt ZW50IGFjY2VzcyBtZXRob2QgaGFuZGxlcicsCisgIHByb25hbWUgPT4gJ3N0aXJoYW5kbGVyJywg cHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICdpbmRleF9hbV9oYW5kbGVyJywg cHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywKKyAgcHJvc3JjID0+ICdzdGlyaGFuZGxlcicgfSwK IHsgb2lkID0+ICczOTUyJywgZGVzY3IgPT4gJ2JyaW46IHN0YW5kYWxvbmUgc2NhbiBuZXcgdGFi bGUgcGFnZXMnLAogICBwcm9uYW1lID0+ICdicmluX3N1bW1hcml6ZV9uZXdfdmFsdWVzJywgcHJv dm9sYXRpbGUgPT4gJ3YnLAogICBwcm9wYXJhbGxlbCA9PiAndScsIHByb3JldHR5cGUgPT4gJ2lu dDQnLCBwcm9hcmd0eXBlcyA9PiAncmVnY2xhc3MnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAy NDkyMjgyMjEzZi4uMDM0MWJiNzQzMjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0xODEsMTIg KzE4MSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBFeHByU3RhdGUKICAqCQlCcm9rZW5Ib3RDaGFpbgkJ ZGlkIHdlIGRldGVjdCBhbnkgYnJva2VuIEhPVCBjaGFpbnM/CiAgKgkJU3VtbWFyaXppbmcJCQlp cyBpdCBhIHN1bW1hcml6aW5nIGluZGV4PwogICoJCVBhcmFsbGVsV29ya2VycwkJIyBvZiB3b3Jr ZXJzIHJlcXVlc3RlZCAoZXhjbHVkZXMgbGVhZGVyKQorICoJCUF1eGlsaWFyeQkJCSMgaW5kZXgt aGVscGVyIGZvciBjb25jdXJyZW50IGJ1aWxkPwogICoJCUFtCQkJCQlPaWQgb2YgaW5kZXggQU0K ICAqCQlBbUNhY2hlCQkJCXByaXZhdGUgY2FjaGUgYXJlYSBmb3IgaW5kZXggQU0KICAqCQlDb250 ZXh0CQkJCW1lbW9yeSBjb250ZXh0IGhvbGRpbmcgdGhpcyBJbmRleEluZm8KICAqCi0gKiBpaV9D b25jdXJyZW50LCBpaV9Ccm9rZW5Ib3RDaGFpbiwgYW5kIGlpX1BhcmFsbGVsV29ya2VycyBhcmUg dXNlZCBvbmx5Ci0gKiBkdXJpbmcgaW5kZXggYnVpbGQ7IHRoZXkncmUgY29udmVudGlvbmFsbHkg emVyb2VkIG90aGVyd2lzZS4KKyAqIGlpX0NvbmN1cnJlbnQsIGlpX0Jyb2tlbkhvdENoYWluLCBp aV9BdXhpbGlhcnkgYW5kIGlpX1BhcmFsbGVsV29ya2VycworICogYXJlIHVzZWQgb25seSBkdXJp bmcgaW5kZXggYnVpbGQ7IHRoZXkncmUgY29udmVudGlvbmFsbHkgemVyb2VkIG90aGVyd2lzZS4K ICAqIC0tLS0tLS0tLS0tLS0tLS0KICAqLwogdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJbmZvCkBAIC0y MTUsNiArMjE2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJbmZvCiAJYm9vbAkJaWlfU3VtbWFy aXppbmc7CiAJYm9vbAkJaWlfV2l0aG91dE92ZXJsYXBzOwogCWludAkJCWlpX1BhcmFsbGVsV29y a2VyczsKKwlib29sCQlpaV9BdXhpbGlhcnk7CiAJT2lkCQkJaWlfQW07CiAJdm9pZAkgICAqaWlf QW1DYWNoZTsKIAlNZW1vcnlDb250ZXh0IGlpX0NvbnRleHQ7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9pbmRleF9zZWxmdW5jcy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvaW5kZXhfc2Vs ZnVuY3MuaAppbmRleCA2YzY0ZGI2ZDQ1Ni4uZTBkOTM5ZDY4NTcgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3V0aWxzL2luZGV4X3NlbGZ1bmNzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvaW5k ZXhfc2VsZnVuY3MuaApAQCAtNjIsNiArNjIsMTQgQEAgZXh0ZXJuIHZvaWQgc3BnY29zdGVzdGlt YXRlKHN0cnVjdCBQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQlTZWxlY3Rpdml0eSAqaW5kZXhT ZWxlY3Rpdml0eSwKIAkJCQkJCQlkb3VibGUgKmluZGV4Q29ycmVsYXRpb24sCiAJCQkJCQkJZG91 YmxlICppbmRleFBhZ2VzKTsKK2V4dGVybiB2b2lkIHN0aXJjb3N0ZXN0aW1hdGUoc3RydWN0IFBs YW5uZXJJbmZvICpyb290LAorCQkJCQkJCXN0cnVjdCBJbmRleFBhdGggKnBhdGgsCisJCQkJCQkJ ZG91YmxlIGxvb3BfY291bnQsCisJCQkJCQkJQ29zdCAqaW5kZXhTdGFydHVwQ29zdCwKKwkJCQkJ CQlDb3N0ICppbmRleFRvdGFsQ29zdCwKKwkJCQkJCQlTZWxlY3Rpdml0eSAqaW5kZXhTZWxlY3Rp dml0eSwKKwkJCQkJCQlkb3VibGUgKmluZGV4Q29ycmVsYXRpb24sCisJCQkJCQkJZG91YmxlICpp bmRleFBhZ2VzKTsKIGV4dGVybiB2b2lkIGdpbmNvc3Rlc3RpbWF0ZShzdHJ1Y3QgUGxhbm5lcklu Zm8gKnJvb3QsCiAJCQkJCQkJc3RydWN0IEluZGV4UGF0aCAqcGF0aCwKIAkJCQkJCQlkb3VibGUg bG9vcF9jb3VudCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYW11dGls cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRpbHMub3V0CmluZGV4IDdhYjYx MTNjNjE5Li45MmMwMzNhMjAxMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9hbXV0aWxzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRpbHMub3V0 CkBAIC0xNzMsNyArMTczLDEzIEBAIHNlbGVjdCBhbW5hbWUsIHByb3AsIHBnX2luZGV4YW1faGFz X3Byb3BlcnR5KGEub2lkLCBwcm9wKSBhcyBwCiAgc3BnaXN0IHwgY2FuX2V4Y2x1ZGUgICB8IHQK ICBzcGdpc3QgfCBjYW5faW5jbHVkZSAgIHwgdAogIHNwZ2lzdCB8IGJvZ3VzICAgICAgICAgfCAK LSgzNiByb3dzKQorIHN0aXIgICB8IGNhbl9vcmRlciAgICAgfCBmCisgc3RpciAgIHwgY2FuX3Vu aXF1ZSAgICB8IGYKKyBzdGlyICAgfCBjYW5fbXVsdGlfY29sIHwgdAorIHN0aXIgICB8IGNhbl9l eGNsdWRlICAgfCBmCisgc3RpciAgIHwgY2FuX2luY2x1ZGUgICB8IHQKKyBzdGlyICAgfCBib2d1 cyAgICAgICAgIHwgCisoNDIgcm93cykKIAogLS0KIC0tIGFkZGl0aW9uYWwgY2hlY2tzIGZvciBw Z19pbmRleF9jb2x1bW5faGFzX3Byb3BlcnR5CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL29wcl9zYW5pdHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJf c2FuaXR5Lm91dAppbmRleCAyMGJmOWVhOWNkZi4uZmMxMTZiODRhMjggMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dApAQCAtMjEyMiw5ICsyMTIyLDEwIEBAIEZST00g cGdfb3BjbGFzcyBBUyBjMQogV0hFUkUgTk9UIEVYSVNUUyhTRUxFQ1QgMSBGUk9NIHBnX2Ftb3Ag QVMgYTEKICAgICAgICAgICAgICAgICAgV0hFUkUgYTEuYW1vcGZhbWlseSA9IGMxLm9wY2ZhbWls eQogICAgICAgICAgICAgICAgICAgIEFORCBiaW5hcnlfY29lcmNpYmxlKGMxLm9wY2ludHlwZSwg YTEuYW1vcGxlZnR0eXBlKSk7Ci0gb3BjbmFtZSB8IG9wY2ZhbWlseSAKLS0tLS0tLS0tLSstLS0t LS0tLS0tLQotKDAgcm93cykKKyBvcGNuYW1lICB8IG9wY2ZhbWlseSAKKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0KKyBzdGlyX29wcyB8ICAgICAgNTU1OAorKDEgcm93KQogCiAtLSBDaGVjayB0aGF0 IGVhY2ggb3BlcmF0b3IgbGlzdGVkIGluIHBnX2Ftb3AgaGFzIGFuIGFzc29jaWF0ZWQgb3BjbGFz cywKIC0tIHRoYXQgaXMgb25lIHdob3NlIG9wY2ludHlwZSBtYXRjaGVzIG9wcmxlZnQgKHBvc3Np Ymx5IGJ5IGNvZXJjaW9uKS4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cHNxbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CmluZGV4IGNmNDhh ZTZkMGMyLi41MmRkZTU3NjgwZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wc3FsLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CkBAIC01 MTM3LDcgKzUxMzcsOCBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVhcCAgIHwgVGFibGUK ICBoZWFwMiAgfCBUYWJsZQogIHNwZ2lzdCB8IEluZGV4Ci0oOCByb3dzKQorIHN0aXIgICB8IElu ZGV4CisoOSByb3dzKQogCiBcZEEgKgogTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwpAQCAtNTE1MSw3 ICs1MTUyLDggQEAgTGlzdCBvZiBhY2Nlc3MgbWV0aG9kcwogIGhlYXAgICB8IFRhYmxlCiAgaGVh cDIgIHwgVGFibGUKICBzcGdpc3QgfCBJbmRleAotKDggcm93cykKKyBzdGlyICAgfCBJbmRleAor KDkgcm93cykKIAogXGRBIGgqCiBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCkBAIC01MTc2LDkgKzUx NzgsOSBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAKIFxkQTogZXh0cmEgYXJndW1lbnQgImJh ciIgaWdub3JlZAogXGRBKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFj Y2VzcyBtZXRob2RzCi0gIE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8ICAg ICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgIAotLS0tLS0tLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRo b2RzCisgIE5hbWUgIHwgVHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8ICAgICAgICAgICAg ICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogIGJyaW4gICB8IEluZGV4IHwgYnJpbmhhbmRsZXIgICAgICAgICAgfCBibG9jayByYW5n ZSBpbmRleCAoQlJJTikgYWNjZXNzIG1ldGhvZAogIGJ0cmVlICB8IEluZGV4IHwgYnRoYW5kbGVy ICAgICAgICAgICAgfCBiLXRyZWUgaW5kZXggYWNjZXNzIG1ldGhvZAogIGdpbiAgICB8IEluZGV4 IHwgZ2luaGFuZGxlciAgICAgICAgICAgfCBHSU4gaW5kZXggYWNjZXNzIG1ldGhvZApAQCAtNTE4 NywxMiArNTE4OSwxMyBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVhcCAgIHwgVGFibGUg fCBoZWFwX3RhYmxlYW1faGFuZGxlciB8IGhlYXAgdGFibGUgYWNjZXNzIG1ldGhvZAogIGhlYXAy ICB8IFRhYmxlIHwgaGVhcF90YWJsZWFtX2hhbmRsZXIgfCAKICBzcGdpc3QgfCBJbmRleCB8IHNw Z2hhbmRsZXIgICAgICAgICAgIHwgU1AtR2lTVCBpbmRleCBhY2Nlc3MgbWV0aG9kCi0oOCByb3dz KQorIHN0aXIgICB8IEluZGV4IHwgc3RpcmhhbmRsZXIgICAgICAgICAgfCBzaG9ydCB0ZXJtIGlu ZGV4IHJlcGxhY2VtZW50IGFjY2VzcyBtZXRob2QKKyg5IHJvd3MpCiAKIFxkQSsgKgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCi0gIE5hbWUgIHwg VHlwZSAgfCAgICAgICBIYW5kbGVyICAgICAgICB8ICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAg ICAgICAgICAgICAgIAotLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCisgIE5hbWUgIHwgVHlwZSAgfCAg ICAgICBIYW5kbGVyICAgICAgICB8ICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGJyaW4gICB8IEluZGV4IHwg YnJpbmhhbmRsZXIgICAgICAgICAgfCBibG9jayByYW5nZSBpbmRleCAoQlJJTikgYWNjZXNzIG1l dGhvZAogIGJ0cmVlICB8IEluZGV4IHwgYnRoYW5kbGVyICAgICAgICAgICAgfCBiLXRyZWUgaW5k ZXggYWNjZXNzIG1ldGhvZAogIGdpbiAgICB8IEluZGV4IHwgZ2luaGFuZGxlciAgICAgICAgICAg fCBHSU4gaW5kZXggYWNjZXNzIG1ldGhvZApAQCAtNTIwMSw3ICs1MjA0LDggQEAgTGlzdCBvZiBh Y2Nlc3MgbWV0aG9kcwogIGhlYXAgICB8IFRhYmxlIHwgaGVhcF90YWJsZWFtX2hhbmRsZXIgfCBo ZWFwIHRhYmxlIGFjY2VzcyBtZXRob2QKICBoZWFwMiAgfCBUYWJsZSB8IGhlYXBfdGFibGVhbV9o YW5kbGVyIHwgCiAgc3BnaXN0IHwgSW5kZXggfCBzcGdoYW5kbGVyICAgICAgICAgICB8IFNQLUdp U1QgaW5kZXggYWNjZXNzIG1ldGhvZAotKDggcm93cykKKyBzdGlyICAgfCBJbmRleCB8IHN0aXJo YW5kbGVyICAgICAgICAgIHwgc2hvcnQgdGVybSBpbmRleCByZXBsYWNlbWVudCBhY2Nlc3MgbWV0 aG9kCisoOSByb3dzKQogCiBcZEErIGgqCiAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGFj Y2VzcyBtZXRob2RzCi0tIAoyLjQzLjAKCg== --00000000000027fe8906381ae2a2 Content-Type: application/octet-stream; name="v21-only-part-3-0003-Use-auxiliary-indexes-for-concurrent.patch_" Content-Disposition: attachment; filename="v21-only-part-3-0003-Use-auxiliary-indexes-for-concurrent.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8v815 RnJvbSAyMzFkZDNjMWM5ZjI1ZTZiMjcwZjk4YmFmODFlMDFjNDA4NTQzOTE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAzMSBEZWMgMjAyNCAxNTowMzoxMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIxLW9ubHktcGFydC0zIDMvNl0gVXNlIGF1eGlsaWFyeSBpbmRleGVzIGZvciBjb25j dXJyZW50CiBpbmRleCBvcGVyYXRpb25zCgpSZXBsYWNlIHRoZSBzZWNvbmQgdGFibGUgZnVsbCBz Y2FuIGluIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHdpdGggYW4gYXV4aWxpYXJ5IGluZGV4IGFw cHJvYWNoOgotIGNyZWF0ZSBhIFNUSVIgIGF1eGlsaWFyeSBpbmRleCB3aXRoIHRoZSBzYW1lIHBy ZWRpY2F0ZSAoaWYgZXhpc3RzKSBhcyBpbiBtYWluIGluZGV4Ci0gdXNlIGl0IHRvIHRyYWNrIHR1 cGxlcyBpbnNlcnRlZCBkdXJpbmcgdGhlIGZpcnN0IHBoYXNlCi0gbWVyZ2UgYXV4aWxpYXJ5IGlu ZGV4IHdpdGggbWFpbiBpbmRleCBkdXJpbmcgdmFsaWRhdGlvbiB0byBjYXRjaCB1cCBuZXcgaW5k ZXggd2l0aCBhbnkgdHVwbGVzIG1pc3NlZCBkdXJpbmcgdGhlIGZpcnN0IHBoYXNlCi0gYXV0b21h dGljYWxseSBkcm9wIGF1eGlsaWFyeSB3aGVuIG1haW4gaW5kZXggaXMgcmVhZHkKClRvIG1lcmdl IG1haW4gYW5kIGF1eGlsaWFyeSBpbmRleGVzOgotIGluZGV4X2J1bGtfZGVsZXRlIGNhbGxlZCBm b3IgYm90aCwgVElEcyBwdXQgaW50byB0dXBsZXNvcnQKLSBib3RoIHR1cGxlc29ydCBhcmUgYmVp bmcgc29ydGVkCi0gYm90aCB0dXBsZXNvcnQgc2Nhbm5lZCB3aXRoIHR3byBwb2ludGVycyBsb29r aW5nIGZvciB0aGUgVElEcyBwcmVzZW50IGluIGF1eGlsaWFyeSBpbmRleCwgYnV0IGFic2VudCBp biBtYWluIG9uZQotIGFsbCBzdWNoIFRJRHMgYXJlIHB1dCBpbnRvIHR1cGxlc3RvcmUKLSBhbGwg VElEcyBpbiB0dXBsZXN0b3JlIGFyZSBmZXRjaGVkIHVzaW5nIHRoZSBzdHJlYW0sIHR1cGxlc3Rv cmUgdXNlZCBpbiBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9yZWFkX3N0cmVhbV9uZXh0IHRv IHByb3ZpZGUgdGhlIG5leHQgcGFnZSB0byBwcmVmZXRjaAotIGlmIGZldGNoZWQgdHVwbGUgaXMg YWxpdmUgLSBpdCBpcyBpbnNlcnRlZCBpbnRvIHRoZSBtYWluIGluZGV4CgpUaGlzIGVsaW1pbmF0 ZXMgdGhlIG5lZWQgZm9yIGEgc2Vjb25kIGZ1bGwgdGFibGUgc2NhbiBkdXJpbmcgdmFsaWRhdGlv biwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGVzcGVjaWFsbHkgZm9yIGxhcmdlIHRhYmxlcy4gQWZm ZWN0cyBib3RoIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgYW5kIFJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIG9wZXJhdGlvbnMuCi0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAg ICAgICAgICAgICAgIHwgIDI2ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21s ICAgICAgICAgfCAgMzQgKy0KIGRvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sICAgICAgICAg ICAgICB8ICA0MSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCAgICAgICAg IHwgIDEzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgfCA1 NDQgKysrKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAg ICAgICAgICAgICAgfCAzMTMgKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV92aWV3cy5zcWwgICAgICAgfCAgMTcgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21k cy5jICAgICAgICAgICB8IDM0NCArKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9ub2Rlcy9tYWtl ZnVuY3MuYyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFt LmggICAgICAgICAgICAgICB8ICAyOCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAg ICAgICAgICAgICAgIHwgICA5ICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oICAg ICAgICAgICAgfCAgMTMgKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAg ICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggICAgICAgICAgICAg IHwgICAzICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgfCAg NDIgKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0ICAgICB8ICAgMyAr LQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgIHwgIDE3ICstCiBz cmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsICAgICAgfCAgMjEgKwogMTggZmls ZXMgY2hhbmdlZCwgMTEzMiBpbnNlcnRpb25zKCspLCAzNDQgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9y aW5nLnNnbWwKaW5kZXggNDI2NWEyMmQ0ZGUuLjhjY2Q2OWIxNGMyIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNn bWwKQEAgLTYzMTQsNiArNjMxNCwxOCBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQo KSBBUyBiYWNrZW5kaWQ7CiAgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCiAgICAg ICA8L2VudHJ5PgogICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJh bD53YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXg8L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZPC9jb21tYW5kPiBvciA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFu ZD4gaXMgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zCisgICAgICAgd2l0aCB3cml0ZSBsb2NrcyB0 aGF0IGNhbiBwb3RlbnRpYWxseSBzZWUgdGhlIHRhYmxlIHRvIGZpbmlzaCwgdG8gZW5zdXJlIHVz ZSBvZiBhdXhpbGlhcnkgaW5kZXggZm9yIG5ldyB0dXBsZXMgaW4KKyAgICAgICBmdXR1cmUgdHJh bnNhY3Rpb25zLgorICAgICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBpbiBjb25j dXJyZW50IG1vZGUuCisgICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5sb2NrZXJzX3RvdGFsPC9z dHJ1Y3RuYW1lPiwgPHN0cnVjdG5hbWU+bG9ja2Vyc19kb25lPC9zdHJ1Y3RuYW1lPgorICAgICAg IGFuZCA8c3RydWN0bmFtZT5jdXJyZW50X2xvY2tlcl9waWQ8L3N0cnVjdG5hbWU+IGNvbnRhaW4g dGhlIHByb2dyZXNzCisgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCisgICAgICA8 L2VudHJ5PgorICAgICA8L3Jvdz4KICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD5i dWlsZGluZyBpbmRleDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PgpAQCAtNjM1NCwx MyArNjM2NiwxMiBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5k aWQ7CiAgICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KLSAgICAgIDxlbnRy eT48bGl0ZXJhbD5pbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyB0YWJsZTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPmluZGV4IHZhbGlkYXRpb246IG1lcmdpbmcgaW5k ZXhlczwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PgotICAgICAgIDxjb21tYW5kPkNS RUFURSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGlzIHNjYW5uaW5nIHRoZSB0YWJsZQot ICAgICAgIHRvIHZhbGlkYXRlIHRoZSBpbmRleCB0dXBsZXMgY29sbGVjdGVkIGluIHRoZSBwcmV2 aW91cyB0d28gcGhhc2VzLgorICAgICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5U TFk8L2NvbW1hbmQ+IG1lcmdpbmcgY29udGVudCBvZiBhdXhpbGlhcnkgaW5kZXggd2l0aCB0aGUg dGFyZ2V0IGluZGV4LgogICAgICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBpbiBj b25jdXJyZW50IG1vZGUuCi0gICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5ibG9ja3NfdG90YWw8 L3N0cnVjdG5hbWU+IChzZXQgdG8gdGhlIHRvdGFsIHNpemUgb2YgdGhlIHRhYmxlKQotICAgICAg IGFuZCA8c3RydWN0bmFtZT5ibG9ja3NfZG9uZTwvc3RydWN0bmFtZT4gY29udGFpbiB0aGUgcHJv Z3Jlc3MgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCisgICAgICAgQ29sdW1ucyA8c3RydWN0 bmFtZT50dXBsZXNfdG90YWw8L3N0cnVjdG5hbWU+IChzZXQgdG8gdGhlIG51bWJlciBvZiB0dXBs ZXMgdG8gYmUgbWVyZ2VkKQorICAgICAgIGFuZCA8c3RydWN0bmFtZT50dXBsZXNfZG9uZTwvc3Ry dWN0bmFtZT4gY29udGFpbiB0aGUgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2Uu CiAgICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KQEAgLTYzNzcsOCArNjM4 OCw5IEBAIEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAg ICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD53YWl0aW5nIGZvciByZWFkZXJzIGJlZm9y ZSBtYXJraW5nIGRlYWQ8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KLSAgICAgICA8 Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgd2FpdGluZyBmb3IgdHJh bnNhY3Rpb25zCi0gICAgICAgd2l0aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gs IGJlZm9yZSBtYXJraW5nIHRoZSBvbGQgaW5kZXggZGVhZC4KKyAgICAgICA8Y29tbWFuZD5DUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBpcyB3YWl0aW5nIGZvciB0cmFuc2FjdGlv bnMKKyAgICAgICAgd2l0aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gsIGJlZm9y ZSBtYXJraW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggYXMgZGVhZC4KKyAgICAgICA8Y29tbWFuZD5S RUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgYWxzbyB3YWl0aW5nIGJlZm9yZSBtYXJr aW5nIHRoZSBvbGQgaW5kZXggYXMgZGVhZC4KICAgICAgICBUaGlzIHBoYXNlIGlzIHNraXBwZWQg d2hlbiBub3QgaW4gY29uY3VycmVudCBtb2RlLgogICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+ bG9ja2Vyc190b3RhbDwvc3RydWN0bmFtZT4sIDxzdHJ1Y3RuYW1lPmxvY2tlcnNfZG9uZTwvc3Ry dWN0bmFtZT4KICAgICAgICBhbmQgPHN0cnVjdG5hbWU+Y3VycmVudF9sb2NrZXJfcGlkPC9zdHJ1 Y3RuYW1lPiBjb250YWluIHRoZSBwcm9ncmVzcwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwK aW5kZXggYjljNjc5YzQxZTguLjMwZGIwNzljOGQ4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9pbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4 LnNnbWwKQEAgLTYyMCwxMCArNjIwLDEwIEBAIENSRUFURSBbIFVOSVFVRSBdIElOREVYIFsgQ09O Q1VSUkVOVExZIF0gWyBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9CiAgICAg b3V0IHdyaXRlcy4gIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgc3BlY2lmeWluZyB0aGUKICAg ICA8bGl0ZXJhbD5DT05DVVJSRU5UTFk8L2xpdGVyYWw+IG9wdGlvbiBvZiA8Y29tbWFuZD5DUkVB VEUgSU5ERVg8L2NvbW1hbmQ+LgogICAgIFdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZCwKLSAgICA8 cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0d28gc2Nh bnMgb2YgdGhlIHRhYmxlLCBhbmQgaW4KLSAgICBhZGRpdGlvbiBpdCBtdXN0IHdhaXQgZm9yIGFs bCBleGlzdGluZyB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseQotICAgIG1vZGlm eSBvciB1c2UgdGhlIGluZGV4IHRvIHRlcm1pbmF0ZS4gIFRodXMKLSAgICB0aGlzIG1ldGhvZCBy ZXF1aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4IGJ1aWxkIGFuZCB0 YWtlcworICAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gbXVzdCBwZXJm b3JtIHRhYmxlIHNjYW4gZm9sbG93ZWQgYnkKKyAgICB2YWxpZGF0aW9uIHBoYXNlLCBhbmQgaW4g YWRkaXRpb24gaXQgbXVzdCB3YWl0IGZvciBhbGwgZXhpc3RpbmcgdHJhbnNhY3Rpb25zCisgICAg dGhhdCBjb3VsZCBwb3RlbnRpYWxseSBtb2RpZnkgb3IgdXNlIHRoZSBpbmRleCB0byB0ZXJtaW5h dGUuICBUaHVzCisgICAgdGhpcyBtZXRob2QgcmVxdWlyZXMgbW9yZSB0b3RhbCB3b3JrIHRoYW4g YSBzdGFuZGFyZCBpbmRleCBidWlsZCBhbmQgbWF5IHRha2UKICAgICBzaWduaWZpY2FudGx5IGxv bmdlciB0byBjb21wbGV0ZS4gIEhvd2V2ZXIsIHNpbmNlIGl0IGFsbG93cyBub3JtYWwKICAgICBv cGVyYXRpb25zIHRvIGNvbnRpbnVlIHdoaWxlIHRoZSBpbmRleCBpcyBidWlsdCwgdGhpcyBtZXRo b2QgaXMgdXNlZnVsIGZvcgogICAgIGFkZGluZyBuZXcgaW5kZXhlcyBpbiBhIHByb2R1Y3Rpb24g ZW52aXJvbm1lbnQuICBPZiBjb3Vyc2UsIHRoZSBleHRyYSBDUFUKQEAgLTYzMSwxNCArNjMxLDE0 IEBAIENSRUFURSBbIFVOSVFVRSBdIElOREVYIFsgQ09OQ1VSUkVOVExZIF0gWyBbIElGIE5PVCBF WElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgotICAg IEluIGEgY29uY3VycmVudCBpbmRleCBidWlsZCwgdGhlIGluZGV4IGlzIGFjdHVhbGx5IGVudGVy ZWQgYXMgYW4KLSAgICA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IGluZGV4IGludG8KLSAgICB0aGUg c3lzdGVtIGNhdGFsb2dzIGluIG9uZSB0cmFuc2FjdGlvbiwgdGhlbiB0d28gdGFibGUgc2NhbnMg b2NjdXIgaW4KLSAgICB0d28gbW9yZSB0cmFuc2FjdGlvbnMuICBCZWZvcmUgZWFjaCB0YWJsZSBz Y2FuLCB0aGUgaW5kZXggYnVpbGQgbXVzdAorICAgIEluIGEgY29uY3VycmVudCBpbmRleCBidWls ZCwgdGhlIG1haW4gYW5kIGF1eGlsaWFyeSBpbmRleGVzIGlzIGFjdHVhbGx5CisgICAgZW50ZXJl ZCBhcyBhbiA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IGluZGV4IGludG8KKyAgICB0aGUgc3lzdGVt IGNhdGFsb2dzIGluIG9uZSB0cmFuc2FjdGlvbiwgdGhlbiB0d28gcGhhc2VzIG9jY3VyIGluCisg ICAgbXVsdGlwbGUgdHJhbnNhY3Rpb25zLiAgQmVmb3JlIGVhY2ggcGhhc2UsIHRoZSBpbmRleCBi dWlsZCBtdXN0CiAgICAgd2FpdCBmb3IgZXhpc3RpbmcgdHJhbnNhY3Rpb25zIHRoYXQgaGF2ZSBt b2RpZmllZCB0aGUgdGFibGUgdG8gdGVybWluYXRlLgotICAgIEFmdGVyIHRoZSBzZWNvbmQgc2Nh biwgdGhlIGluZGV4IGJ1aWxkIG11c3Qgd2FpdCBmb3IgYW55IHRyYW5zYWN0aW9ucworICAgIEFm dGVyIHRoZSBzZWNvbmQgcGhhc2UsIHRoZSBpbmRleCBidWlsZCBtdXN0IHdhaXQgZm9yIGFueSB0 cmFuc2FjdGlvbnMKICAgICB0aGF0IGhhdmUgYSBzbmFwc2hvdCAoc2VlIDx4cmVmIGxpbmtlbmQ9 Im12Y2MiLz4pIHByZWRhdGluZyB0aGUgc2Vjb25kCi0gICAgc2NhbiB0byB0ZXJtaW5hdGUsIGlu Y2x1ZGluZyB0cmFuc2FjdGlvbnMgdXNlZCBieSBhbnkgcGhhc2Ugb2YgY29uY3VycmVudAorICAg IHBoYXNlIHRvIHRlcm1pbmF0ZSwgaW5jbHVkaW5nIHRyYW5zYWN0aW9ucyB1c2VkIGJ5IGFueSBw aGFzZSBvZiBjb25jdXJyZW50CiAgICAgaW5kZXggYnVpbGRzIG9uIG90aGVyIHRhYmxlcywgaWYg dGhlIGluZGV4ZXMgaW52b2x2ZWQgYXJlIHBhcnRpYWwgb3IgaGF2ZQogICAgIGNvbHVtbnMgdGhh dCBhcmUgbm90IHNpbXBsZSBjb2x1bW4gcmVmZXJlbmNlcy4KICAgICBUaGVuIGZpbmFsbHkgdGhl IGluZGV4IGNhbiBiZSBtYXJrZWQgPHF1b3RlPnZhbGlkPC9xdW90ZT4gYW5kIHJlYWR5IGZvciB1 c2UsCkBAIC02NTEsMTAgKzY1MSwxMSBAQCBDUkVBVEUgWyBVTklRVUUgXSBJTkRFWCBbIENPTkNV UlJFTlRMWSBdIFsgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPQogICAgPHBh cmE+CiAgICAgSWYgYSBwcm9ibGVtIGFyaXNlcyB3aGlsZSBzY2FubmluZyB0aGUgdGFibGUsIHN1 Y2ggYXMgYSBkZWFkbG9jayBvciBhCiAgICAgdW5pcXVlbmVzcyB2aW9sYXRpb24gaW4gYSB1bmlx dWUgaW5kZXgsIHRoZSA8Y29tbWFuZD5DUkVBVEUgSU5ERVg8L2NvbW1hbmQ+Ci0gICAgY29tbWFu ZCB3aWxsIGZhaWwgYnV0IGxlYXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IGlu ZGV4LiBUaGlzIGluZGV4Ci0gICAgd2lsbCBiZSBpZ25vcmVkIGZvciBxdWVyeWluZyBwdXJwb3Nl cyBiZWNhdXNlIGl0IG1pZ2h0IGJlIGluY29tcGxldGU7Ci0gICAgaG93ZXZlciBpdCB3aWxsIHN0 aWxsIGNvbnN1bWUgdXBkYXRlIG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxp Y2F0aW9uPgotICAgIDxjb21tYW5kPlxkPC9jb21tYW5kPiBjb21tYW5kIHdpbGwgcmVwb3J0IHN1 Y2ggYW4gaW5kZXggYXMgPGxpdGVyYWw+SU5WQUxJRDwvbGl0ZXJhbD46CisgICAgY29tbWFuZCB3 aWxsIGZhaWwgYnV0IGxlYXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IGluZGV4 IGFuZCBpdHMKKyAgICBhc3NvY2lhdGVkIGF1eGlsaWFyeSBpbmRleC4gVGhlc2UgaW5kZXhlcwor ICAgIHdpbGwgYmUgaWdub3JlZCBmb3IgcXVlcnlpbmcgcHVycG9zZXMgYmVjYXVzZSB0aGV5IG1p Z2h0IGJlIGluY29tcGxldGU7CisgICAgaG93ZXZlciB0aGV5IHdpbGwgc3RpbGwgY29uc3VtZSB1 cGRhdGUgb3ZlcmhlYWQuIFRoZSA8YXBwbGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+CisgICAg PGNvbW1hbmQ+XGQ8L2NvbW1hbmQ+IGNvbW1hbmQgd2lsbCByZXBvcnQgc3VjaCBpbmRleGVzIGFz IDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+OgogCiA8cHJvZ3JhbWxpc3Rpbmc+CiBwb3N0Z3Jl cz0jIFxkIHRhYgpAQCAtNjY0LDExICs2NjUsMTIgQEAgcG9zdGdyZXM9IyBcZCB0YWIKICBjb2wg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfAogSW5kZXhlczoKICAgICAiaWR4 IiBidHJlZSAoY29sKSBJTlZBTElECisgICAgImlkeF9jY2F1eCIgc3RpciAoY29sKSBJTlZBTElE CiA8L3Byb2dyYW1saXN0aW5nPgogCiAgICAgVGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5Ci0gICAg bWV0aG9kIGluIHN1Y2ggY2FzZXMgaXMgdG8gZHJvcCB0aGUgaW5kZXggYW5kIHRyeSBhZ2FpbiB0 byBwZXJmb3JtCi0gICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFu ZD4uICAoQW5vdGhlciBwb3NzaWJpbGl0eSBpcworICAgIG1ldGhvZCBpbiBzdWNoIGNhc2VzIGlz IHRvIGRyb3AgdGhlc2UgaW5kZXhlcyBhbmQgdHJ5IGFnYWluIHRvIHBlcmZvcm0KKyAgICA8Y29t bWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPi4gKEFub3RoZXIgcG9zc2li aWxpdHkgaXMKICAgICB0byByZWJ1aWxkIHRoZSBpbmRleCB3aXRoIDxjb21tYW5kPlJFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPikuCiAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4 LnNnbWwKaW5kZXggYzQwNTUzOTcxNDYuLjRlZDNjOTY5MDEyIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvcmVmL3JlaW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dt bApAQCAtMzY4LDkgKzM2OCw4IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAgICAgPHByb2R1 Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBzdXBwb3J0cyByZWJ1aWxkaW5nIGluZGV4 ZXMgd2l0aCBtaW5pbXVtIGxvY2tpbmcKICAgICBvZiB3cml0ZXMuICBUaGlzIG1ldGhvZCBpcyBp bnZva2VkIGJ5IHNwZWNpZnlpbmcgdGhlCiAgICAgPGxpdGVyYWw+Q09OQ1VSUkVOVExZPC9saXRl cmFsPiBvcHRpb24gb2YgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFuZD4uIFdoZW4gdGhpcyBvcHRp b24KLSAgICBpcyB1c2VkLCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11 c3QgcGVyZm9ybSB0d28gc2NhbnMgb2YgdGhlIHRhYmxlCi0gICAgZm9yIGVhY2ggaW5kZXggdGhh dCBuZWVkcyB0byBiZSByZWJ1aWx0IGFuZCB3YWl0IGZvciB0ZXJtaW5hdGlvbiBvZgotICAgIGFs bCBleGlzdGluZyB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSB1c2UgdGhlIGlu ZGV4LgorICAgIGlzIHVzZWQsIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4g bXVzdCBwZXJmb3JtIHNldmVyYWwgc3RlcHMgdG8gZW5zdXJlIGRhdGEKKyAgICBjb25zaXN0ZW5j eSB3aGlsZSBhbGxvd2luZyBub3JtYWwgb3BlcmF0aW9ucyB0byBjb250aW51ZS4KICAgICBUaGlz IG1ldGhvZCByZXF1aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4CiAg ICAgcmVidWlsZCBhbmQgdGFrZXMgc2lnbmlmaWNhbnRseSBsb25nZXIgdG8gY29tcGxldGUgYXMg aXQgbmVlZHMgdG8gd2FpdAogICAgIGZvciB1bmZpbmlzaGVkIHRyYW5zYWN0aW9ucyB0aGF0IG1p Z2h0IG1vZGlmeSB0aGUgaW5kZXguIEhvd2V2ZXIsIHNpbmNlCkBAIC0zODgsNyArMzg3LDcgQEAg UkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFj ZWFibGU+IFssIC4uLl0gKSBdIHsgREEKICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgIDxsaXN0aXRl bT4KICAgICAgIDxwYXJhPgotICAgICAgIEEgbmV3IHRyYW5zaWVudCBpbmRleCBkZWZpbml0aW9u IGlzIGFkZGVkIHRvIHRoZSBjYXRhbG9nCisgICAgICAgQSBuZXcgdHJhbnNpZW50IGluZGV4IGRl ZmluaXRpb24gYW5kIGFuIGF1eGlsaWFyeSBpbmRleCBhcmUgYWRkZWQgdG8gdGhlIGNhdGFsb2cK ICAgICAgICA8bGl0ZXJhbD5wZ19pbmRleDwvbGl0ZXJhbD4uICBUaGlzIGRlZmluaXRpb24gd2ls bCBiZSB1c2VkIHRvIHJlcGxhY2UKICAgICAgICB0aGUgb2xkIGluZGV4LiAgQSA8bGl0ZXJhbD5T SEFSRSBVUERBVEUgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrIGF0CiAgICAgICAgc2Vzc2lvbiBs ZXZlbCBpcyB0YWtlbiBvbiB0aGUgaW5kZXhlcyBiZWluZyByZWluZGV4ZWQgYXMgd2VsbCBhcyB0 aGVpcgpAQCAtMzk4LDcgKzM5NywxNSBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAg IDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgotICAgICAgIEEgZmlyc3QgcGFzcyB0byBidWlsZCB0 aGUgaW5kZXggaXMgZG9uZSBmb3IgZWFjaCBuZXcgaW5kZXguICBPbmNlIHRoZQorICAgICAgIFRo ZSBhdXhpbGlhcnkgaW5kZXggaXMgbWFya2VkIGFzICJyZWFkeSBmb3IgaW5zZXJ0cyIsIG1ha2lu ZworICAgICAgIGl0IHZpc2libGUgdG8gb3RoZXIgc2Vzc2lvbnMuIFRoaXMgaW5kZXggZWZmaWNp ZW50bHkgdHJhY2tzIGFsbCBuZXcKKyAgICAgICB0dXBsZXMgZHVyaW5nIHRoZSByZWluZGV4IHBy b2Nlc3MuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgPGxpc3RpdGVt PgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIG5ldyBtYWluIGluZGV4IGlzIGJ1aWx0IGJ5IHNj YW5uaW5nIHRoZSB0YWJsZS4gIE9uY2UgdGhlCiAgICAgICAgaW5kZXggaXMgYnVpbHQsIGl0cyBm bGFnIDxsaXRlcmFsPnBnX2luZGV4LmluZGlzcmVhZHk8L2xpdGVyYWw+IGlzCiAgICAgICAgc3dp dGNoZWQgdG8gPHF1b3RlPnRydWU8L3F1b3RlPiB0byBtYWtlIGl0IHJlYWR5IGZvciBpbnNlcnRz LCBtYWtpbmcgaXQKICAgICAgICB2aXNpYmxlIHRvIG90aGVyIHNlc3Npb25zIG9uY2UgdGhlIHRy YW5zYWN0aW9uIHRoYXQgcGVyZm9ybWVkIHRoZSBidWlsZApAQCAtNDA5LDkgKzQxNiw5IEBAIFJF SU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2Vh YmxlPiBbLCAuLi5dICkgXSB7IERBCiAKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0g ICAgICAgVGhlbiBhIHNlY29uZCBwYXNzIGlzIHBlcmZvcm1lZCB0byBhZGQgdHVwbGVzIHRoYXQg d2VyZSBhZGRlZCB3aGlsZSB0aGUKLSAgICAgICBmaXJzdCBwYXNzIHdhcyBydW5uaW5nLiAgVGhp cyBzdGVwIGlzIGFsc28gZG9uZSBpbiBhIHNlcGFyYXRlCi0gICAgICAgdHJhbnNhY3Rpb24gZm9y IGVhY2ggaW5kZXguCisgICAgICAgQSB2YWxpZGF0aW9uIHBoYXNlIG1lcmdlcyBhbnkgbWlzc2lu ZyBlbnRyaWVzIGZyb20gdGhlIGF1eGlsaWFyeSBpbmRleAorICAgICAgIGludG8gdGhlIG1haW4g aW5kZXgsIGVuc3VyaW5nIGFsbCBjb25jdXJyZW50IGNoYW5nZXMgYXJlIGNhcHR1cmVkLgorICAg ICAgIFRoaXMgc3RlcCBpcyBhbHNvIGRvbmUgaW4gYSBzZXBhcmF0ZSB0cmFuc2FjdGlvbiBmb3Ig ZWFjaCBpbmRleC4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KIApAQCAtNDI4LDcg KzQzNSw3IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRp b248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAKICAgICAgPGxpc3RpdGVtPgogICAg ICAgPHBhcmE+Ci0gICAgICAgVGhlIG9sZCBpbmRleGVzIGhhdmUgPGxpdGVyYWw+cGdfaW5kZXgu aW5kaXNyZWFkeTwvbGl0ZXJhbD4gc3dpdGNoZWQgdG8KKyAgICAgICBUaGUgb2xkIGFuZCBhdXhp bGlhcnkgaW5kZXhlcyBoYXZlIDxsaXRlcmFsPnBnX2luZGV4LmluZGlzcmVhZHk8L2xpdGVyYWw+ IHN3aXRjaGVkIHRvCiAgICAgICAgPHF1b3RlPmZhbHNlPC9xdW90ZT4gdG8gcHJldmVudCBhbnkg bmV3IHR1cGxlIGluc2VydGlvbnMsIGFmdGVyIHdhaXRpbmcKICAgICAgICBmb3IgcnVubmluZyBx dWVyaWVzIHRoYXQgbWlnaHQgcmVmZXJlbmNlIHRoZSBvbGQgaW5kZXggdG8gY29tcGxldGUuCiAg ICAgICA8L3BhcmE+CkBAIC00MzYsNyArNDQzLDcgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgREEK IAogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBUaGUgb2xkIGluZGV4ZXMg YXJlIGRyb3BwZWQuICBUaGUgPGxpdGVyYWw+U0hBUkUgVVBEQVRFCisgICAgICAgVGhlIG9sZCBh bmQgYXV4aWxpYXJ5IGluZGV4ZXMgYXJlIGRyb3BwZWQuICBUaGUgPGxpdGVyYWw+U0hBUkUgVVBE QVRFCiAgICAgICAgRVhDTFVTSVZFPC9saXRlcmFsPiBzZXNzaW9uIGxvY2tzIGZvciB0aGUgaW5k ZXhlcyBhbmQgdGhlIHRhYmxlIGFyZQogICAgICAgIHJlbGVhc2VkLgogICAgICAgPC9wYXJhPgpA QCAtNDQ3LDExICs0NTQsMTEgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgREEKICAgIDxwYXJhPgog ICAgIElmIGEgcHJvYmxlbSBhcmlzZXMgd2hpbGUgcmVidWlsZGluZyB0aGUgaW5kZXhlcywgc3Vj aCBhcyBhCiAgICAgdW5pcXVlbmVzcyB2aW9sYXRpb24gaW4gYSB1bmlxdWUgaW5kZXgsIHRoZSA8 Y29tbWFuZD5SRUlOREVYPC9jb21tYW5kPgotICAgIGNvbW1hbmQgd2lsbCBmYWlsIGJ1dCBsZWF2 ZSBiZWhpbmQgYW4gPHF1b3RlPmludmFsaWQ8L3F1b3RlPiBuZXcgaW5kZXggaW4gYWRkaXRpb24g dG8KLSAgICB0aGUgcHJlLWV4aXN0aW5nIG9uZS4gVGhpcyBpbmRleCB3aWxsIGJlIGlnbm9yZWQg Zm9yIHF1ZXJ5aW5nIHB1cnBvc2VzCi0gICAgYmVjYXVzZSBpdCBtaWdodCBiZSBpbmNvbXBsZXRl OyBob3dldmVyIGl0IHdpbGwgc3RpbGwgY29uc3VtZSB1cGRhdGUKKyAgICBjb21tYW5kIHdpbGwg ZmFpbCBidXQgbGVhdmUgYmVoaW5kIGFuIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gbmV3IGluZGV4 IGFuZCBpdHMgYXV4aWxpYXJ5IGluZGV4IGluIGFkZGl0aW9uIHRvCisgICAgdGhlIHByZS1leGlz dGluZyBvbmUuIFRoZXNlIGluZGV4ZXMgd2lsbCBiZSBpZ25vcmVkIGZvciBxdWVyeWluZyBwdXJw b3NlcworICAgIGJlY2F1c2UgdGhleSBtaWdodCBiZSBpbmNvbXBsZXRlOyBob3dldmVyIHRoZXkg d2lsbCBzdGlsbCBjb25zdW1lIHVwZGF0ZQogICAgIG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9u PnBzcWw8L2FwcGxpY2F0aW9uPiA8Y29tbWFuZD5cZDwvY29tbWFuZD4gY29tbWFuZCB3aWxsIHJl cG9ydAotICAgIHN1Y2ggYW4gaW5kZXggYXMgPGxpdGVyYWw+SU5WQUxJRDwvbGl0ZXJhbD46Cisg ICAgc3VjaCBpbmRleGVzIGFzIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+OgogCiA8cHJvZ3Jh bWxpc3Rpbmc+CiBwb3N0Z3Jlcz0jIFxkIHRhYgpAQCAtNDYyLDEyICs0NjksMTQgQEAgcG9zdGdy ZXM9IyBcZCB0YWIKIEluZGV4ZXM6CiAgICAgImlkeCIgYnRyZWUgKGNvbCkKICAgICAiaWR4X2Nj bmV3IiBidHJlZSAoY29sKSBJTlZBTElECisgICAgImlkeF9jY2F1eCIgc3RpciAoY29sKSBJTlZB TElECisKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAKICAgICBJZiB0aGUgaW5kZXggbWFya2VkIDxsaXRl cmFsPklOVkFMSUQ8L2xpdGVyYWw+IGlzIHN1ZmZpeGVkCi0gICAgPGxpdGVyYWw+X2NjbmV3PC9s aXRlcmFsPiwgdGhlbiBpdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNpZW50CisgICAgPGxpdGVy YWw+X2NjbmV3PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5fY2NhdXg8L2xpdGVyYWw+LCB0aGVuIGl0 IGNvcnJlc3BvbmRzIHRvIHRoZSB0cmFuc2llbnQgb3IgYXV4aWxpYXJ5CiAgICAgaW5kZXggY3Jl YXRlZCBkdXJpbmcgdGhlIGNvbmN1cnJlbnQgb3BlcmF0aW9uLCBhbmQgdGhlIHJlY29tbWVuZGVk Ci0gICAgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3AgaXQgdXNpbmcgPGxpdGVyYWw+RFJPUCBJ TkRFWDwvbGl0ZXJhbD4sCisgICAgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3AgdGhlc2UgaW5k ZXhlcyB1c2luZyA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiwKICAgICB0aGVuIGF0dGVt cHQgPGNvbW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGFnYWluLgogICAgIElm IHRoZSBpbnZhbGlkIGluZGV4IGlzIGluc3RlYWQgc3VmZml4ZWQgPGxpdGVyYWw+X2Njb2xkPC9s aXRlcmFsPiwKICAgICBpdCBjb3JyZXNwb25kcyB0byB0aGUgb3JpZ2luYWwgaW5kZXggd2hpY2gg Y291bGQgbm90IGJlIGRyb3BwZWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9SRUFETUUuSE9UIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVAppbmRleCA3 NGU0MDdmMzc1YS4uMjhlMmExNjA0YzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL1JFQURNRS5IT1QKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVApA QCAtMzc1LDYgKzM3NSwxMSBAQCBjb25zdHJhaW50IG9uIHdoaWNoIHVwZGF0ZXMgY2FuIGJlIEhP VC4gIE90aGVyIHRyYW5zYWN0aW9ucyBtdXN0IGluY2x1ZGUKIHN1Y2ggYW4gaW5kZXggd2hlbiBk ZXRlcm1pbmluZyBIT1Qtc2FmZXR5IG9mIHVwZGF0ZXMsIGV2ZW4gdGhvdWdoIHRoZXkKIG11c3Qg aWdub3JlIGl0IGZvciBib3RoIGluc2VydGlvbiBhbmQgc2VhcmNoaW5nIHB1cnBvc2VzLgogCitB bHNvLCBzcGVjaWFsIGF1eGlsaWFyeSBpbmRleCBpcyBjcmVhdGVkIHRoZSBzYW1lIHdheS4gSXQg bWFya2VkIGFzCisicmVhZHkgZm9yIGluc2VydHMiIHdpdGhvdXQgYW55IGFjdHVhbCB0YWJsZSBz Y2FuLiBJdHMgcHVycG9zZSBpcyBjb2xsZWN0CituZXcgdHVwbGVzIGluc2VydGVkIGludG8gdGFi bGUgd2hpbGUgb3VyIHRhcmdldCBpbmRleCBpcyBzdGlsbCAibm90IHJlYWR5Citmb3IgaW5zZXJ0 cyIKKwogV2UgbXVzdCBkbyB0aGlzIHRvIGF2b2lkIG1ha2luZyBpbmNvcnJlY3QgaW5kZXggZW50 cmllcy4gIEZvciBleGFtcGxlLAogc3VwcG9zZSB3ZSBhcmUgYnVpbGRpbmcgYW4gaW5kZXggb24g Y29sdW1uIFggYW5kIHdlIG1ha2UgYW4gaW5kZXggZW50cnkgZm9yCiBhIG5vbi1IT1QgdHVwbGUg d2l0aCBYPTEuICBUaGVuIHNvbWUgb3RoZXIgYmFja2VuZCwgdW5hd2FyZSB0aGF0IFggaXMgYW4K QEAgLTM5NCwxMCArMzk5LDEwIEBAIGVudHJ5IGF0IHRoZSByb290IG9mIHRoZSBIT1QtdXBkYXRl IGNoYWluIGJ1dCB3ZSB1c2UgdGhlIGtleSB2YWx1ZSBmcm9tIHRoZQogbGl2ZSB0dXBsZS4KIAog V2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3IgaW5zZXJ0cyAoYnV0IHN0aWxsIG5vdCByZWFkeSBm b3IgcmVhZHMpIHRoZW4KLXdlIGFnYWluIHdhaXQgZm9yIHRyYW5zYWN0aW9ucyB3aGljaCBoYXZl IHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB3ZSB0YWtlCi1hIHNlY29uZCByZWZlcmVuY2Ugc25hcHNo b3QgYW5kIHZhbGlkYXRlIHRoZSBpbmRleC4gIFRoaXMgc2VhcmNoZXMgZm9yCi10dXBsZXMgbWlz c2luZyBmcm9tIHRoZSBpbmRleCwgYW5kIGluc2VydHMgYW55IG1pc3Npbmcgb25lcy4gIEFnYWlu LAotdGhlIGluZGV4IGVudHJpZXMgaGF2ZSB0byBoYXZlIFRJRHMgZXF1YWwgdG8gSE9ULWNoYWlu IHJvb3QgVElEcywgYnV0Cit3ZSBhZ2FpbiB3YWl0IGZvciB0cmFuc2FjdGlvbnMgd2hpY2ggaGF2 ZSB0aGUgdGFibGUgb3Blbi4gIFRoZW4gdmFsaWRhdGUKK3RoZSBpbmRleC4gIFRoaXMgc2VhcmNo ZXMgZm9yIHR1cGxlcyBtaXNzaW5nIGZyb20gdGhlIGluZGV4IGluIGF1eGlsaWFyeQoraW5kZXgs IGFuZCBpbnNlcnRzIGFueSBtaXNzaW5nIG9uZXMgaWYgdGhlbSB2aXNpYmxlIHRvIHJlZmVyZW5j ZSBzbmFwc2hvdC4KK0FnYWluLCB0aGUgaW5kZXggZW50cmllcyBoYXZlIHRvIGhhdmUgVElEcyBl cXVhbCB0byBIT1QtY2hhaW4gcm9vdCBUSURzLCBidXQKIHRoZSB2YWx1ZSB0byBiZSBpbnNlcnRl ZCBpcyB0aGUgb25lIGZyb20gdGhlIGxpdmUgdHVwbGUuCiAKIFRoZW4gd2Ugd2FpdCB1bnRpbCBl dmVyeSB0cmFuc2FjdGlvbiB0aGF0IGNvdWxkIGhhdmUgYSBzbmFwc2hvdCBvbGRlciB0aGFuCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBjYjRiYzM1YzkzZS4u OWFmMTJiMmUzNzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpA QCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFnZS5oIgogI2luY2x1ZGUg InN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNs dWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpAQCAtMTc0 MywyNDIgKzE3NDQsNDA1IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwKIAlyZXR1cm4gcmVsdHVwbGVzOwogfQogCisvKgorICogQ2FsY3VsYXRl IHNldCBkaWZmZXJlbmNlIChyZWxhdGl2ZSBjb21wbGVtZW50KSBvZiBtYWluIGFuZCBhdXgKKyAq IHNldHMuCisgKgorICogQWxsIHJlY29yZHMgd2hpY2ggYXJlIHByZXNlbnQgaW4gYXV4bGlhcnkg dHVwbGVzb3J0IGJ1dCBub3QgaXMKKyAqIG1haW4gYXJlIGFkZGVkIHRvIHRoZSBzdG9yZS4KKyAq CisgKiBJbiBzZXQgdGhlb3J5IG5vdGF0aW9uIHN0b3JlID0gYXV4IC0gbWFpbiBvciBzdG9yZSA9 IGF1eCAvIG1haW4uCisgKgorICogcmV0dXJucyBudW1iZXIgb2YgaXRlbXMgYWRkZWQgdG8gc3Rv cmUKKyAqLworc3RhdGljIGludAoraGVhcGFtX2luZGV4X3ZhbGlkYXRlX3R1cGxlc29ydF9kaWZm ZXJlbmNlKFR1cGxlc29ydHN0YXRlICAqbWFpbiwKKwkJCQkJCQkJCQkgICBUdXBsZXNvcnRzdGF0 ZSAgKmF1eCwKKwkJCQkJCQkJCQkgICBUdXBsZXN0b3Jlc3RhdGUgKnN0b3JlKQoreworCWludAkJ CQludW0gPSAwOworCS8qIHN0YXRlIHZhcmlhYmxlcyBmb3IgdGhlIG1lcmdlICovCisJSXRlbVBv aW50ZXIgCWluZGV4Y3Vyc29yID0gTlVMTCwKKwkJCQkJYXV4aW5kZXhjdXJzb3IgPSBOVUxMOwor CUl0ZW1Qb2ludGVyRGF0YSBkZWNvZGVkLAorCQkJCQlhdXhkZWNvZGVkOworCWJvb2wJCQl0dXBs ZXNvcnRfZW1wdHkgPSBmYWxzZSwKKwkJCQkJYXV4dHVwbGVzb3J0X2VtcHR5ID0gZmFsc2U7CisK KwkvKiBJbml0aWFsaXplIHBvaW50ZXJzLiAqLworCUl0ZW1Qb2ludGVyU2V0SW52YWxpZCgmZGVj b2RlZCk7CisJSXRlbVBvaW50ZXJTZXRJbnZhbGlkKCZhdXhkZWNvZGVkKTsKKworCS8qCisJICog TWFpbiBsb29wOiB3ZSBzdGVwIHRocm91Z2ggdGhlIGF1eGlsaWFyeSBzb3J0IChhdXhTdGF0ZS0+ dHVwbGVzb3J0KSwKKwkgKiB3aGljaCBob2xkcyBUSURzIHRoYXQgbXVzdCBjb21wYXJlZCB0byB0 aG9zZSBmcm9tIHRoZSAibWFpbiIgc29ydAorCSAqIChzdGF0ZS0+dHVwbGVzb3J0KS4KKwkgKi8K Kwl3aGlsZSAoIWF1eHR1cGxlc29ydF9lbXB0eSkKKwl7CisJCURhdHVtCQl0c192YWw7CisJCWJv b2wJCXRzX2lzbnVsbDsKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkvKgorCQkqIEF0 dGVtcHQgdG8gZmV0Y2ggdGhlIG5leHQgVElEIGZyb20gdGhlIGF1eGlsaWFyeSBzb3J0LiBJZiBp dCdzCisJCSogZW1wdHksIHdlIHNldCBhdXhpbmRleGN1cnNvciB0byBOVUxMLgorCQkqLworCQlh dXh0dXBsZXNvcnRfZW1wdHkgPSAhdHVwbGVzb3J0X2dldGRhdHVtKGF1eCwgdHJ1ZSwKKwkJCQkJ CQkJCQkJCSBmYWxzZSwgJnRzX3ZhbCwgJnRzX2lzbnVsbCwKKwkJCQkJCQkJCQkJCSBOVUxMKTsK KwkJQXNzZXJ0KGF1eHR1cGxlc29ydF9lbXB0eSB8fCAhdHNfaXNudWxsKTsKKwkJaWYgKCFhdXh0 dXBsZXNvcnRfZW1wdHkpCisJCXsKKwkJCWl0ZW1wdHJfZGVjb2RlKCZhdXhkZWNvZGVkLCBEYXR1 bUdldEludDY0KHRzX3ZhbCkpOworCQkJYXV4aW5kZXhjdXJzb3IgPSAmYXV4ZGVjb2RlZDsKKwkJ fQorCQllbHNlCisJCXsKKwkJCWF1eGluZGV4Y3Vyc29yID0gTlVMTDsKKwkJfQorCisJCS8qCisJ CSogSWYgdGhlIGF1eGlsaWFyeSBzb3J0IGlzIG5vdCB5ZXQgZW1wdHksIHdlIG5vdyB0cnkgdG8g c3luY2hyb25pemUKKwkJKiB0aGUgIm1haW4iIHNvcnQgY3Vyc29yIChpbmRleGN1cnNvcikgd2l0 aCBhdXhpbmRleGN1cnNvci4gV2UgYWR2YW5jZQorCQkqIHRoZSBtYWluIHNvcnQgY3Vyc29yIHVu dGlsIHdlJ3ZlIHJlYWNoZWQgb3IgcGFzc2VkIHRoZSBhdXhpbGlhcnkgVElELgorCQkqLworCQlp ZiAoIWF1eHR1cGxlc29ydF9lbXB0eSkKKwkJeworCQkJLyoKKwkJCSAqIE1vdmUgdGhlIG1haW4g c29ydCBmb3J3YXJkIHdoaWxlOgorCQkJICogICAoMSkgSXQncyBub3QgZXhoYXVzdGVkICh0dXBs ZXNvcnRfZW1wdHkgPT0gZmFsc2UpLCBhbmQKKwkJCSAqICAgKDIpIEVpdGhlciBpbmRleGN1cnNv ciBpcyBOVUxMIChmaXJzdCBpdGVyYXRpb24pIG9yCisJCQkgKiAgICAgICBpbmRleGN1cnNvciA8 IGF1eGluZGV4Y3Vyc29yIGluIFRJRCBvcmRlci4KKwkJCSAqLworCQkJd2hpbGUgKCF0dXBsZXNv cnRfZW1wdHkgJiYgKGluZGV4Y3Vyc29yID09IE5VTEwgfHwgLyogbnVsbCBvbiBmaXJzdCB0aW1l IGhlcmUgKi8KKwkJCQkJCUl0ZW1Qb2ludGVyQ29tcGFyZShpbmRleGN1cnNvciwgYXV4aW5kZXhj dXJzb3IpIDwgMCkpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBHZXQgdGhlIG5leHQgVElEIGZyb20g dGhlIG1haW4gc29ydC4gSWYgaXQncyBlbXB0eSwKKwkJCQkgKiB3ZSBzZXQgaW5kZXhjdXJzb3Ig dG8gTlVMTC4KKwkJCQkgKi8KKwkJCQl0dXBsZXNvcnRfZW1wdHkgPSAhdHVwbGVzb3J0X2dldGRh dHVtKG1haW4sIHRydWUsCisJCQkJCQkJCQkJCQkJICBmYWxzZSwgJnRzX3ZhbCwgJnRzX2lzbnVs bCwKKwkJCQkJCQkJCQkJCQkgIE5VTEwpOworCQkJCUFzc2VydCh0dXBsZXNvcnRfZW1wdHkgfHwg IXRzX2lzbnVsbCk7CisKKwkJCQlpZiAoIXR1cGxlc29ydF9lbXB0eSkKKwkJCQl7CisJCQkJCWl0 ZW1wdHJfZGVjb2RlKCZkZWNvZGVkLCBEYXR1bUdldEludDY0KHRzX3ZhbCkpOworCQkJCQlpbmRl eGN1cnNvciA9ICZkZWNvZGVkOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlpbmRleGN1 cnNvciA9IE5VTEw7CisJCQkJfQorCisJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJCX0K KworCQkJLyoKKwkJCSAqIE5vdywgaWYgZWl0aGVyOgorCQkJICogIC0gdGhlIG1haW4gc29ydCBp cyBlbXB0eSwgb3IKKwkJCSAqICAtIGluZGV4Y3Vyc29yID4gYXV4aW5kZXhjdXJzb3IsCisJCQkg KgorCQkJICogdGhlbiBhdXhpbmRleGN1cnNvciBpZGVudGlmaWVzIGEgVElEIHRoYXQgZG9lc24n dCBhcHBlYXIgaW4KKwkJCSAqIHRoZSBtYWluIHNvcnQuIFdlIGxpa2VseSBuZWVkIHRvIGluc2Vy dCBpdAorCQkJICogaW50byB0aGUgdGFyZ2V0IGluZGV4IGlmIGl04oCZcyB2aXNpYmxlIGluIHRo ZSBoZWFwLgorCQkJICovCisJCQlpZiAodHVwbGVzb3J0X2VtcHR5IHx8IEl0ZW1Qb2ludGVyQ29t cGFyZShpbmRleGN1cnNvciwgYXV4aW5kZXhjdXJzb3IpID4gMCkKKwkJCXsKKwkJCQl0dXBsZXN0 b3JlX3B1dGRhdHVtKHN0b3JlLCBJbnQ2NEdldERhdHVtKGl0ZW1wdHJfZW5jb2RlKGF1eGluZGV4 Y3Vyc29yKSkpOworCQkJCW51bSsrOworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIG51bTsKK30K KwordHlwZWRlZiBzdHJ1Y3QgVmFsaWRhdGVJbmRleFNjYW5TdGF0ZQoreworCVR1cGxlc3RvcmVz dGF0ZQkJKnN0b3JlOworCUJsb2NrTnVtYmVyCQkJcHJldl9ibG9ja19udW1iZXI7CisJT2Zmc2V0 TnVtYmVyCQlwcmV2X29mZl9vZmZzZXRfbnVtYmVyOworfSBWYWxpZGF0ZUluZGV4U2NhblN0YXRl OworCisvKgorICogVGhpcyBpcyBSZWFkU3RyZWFtQmxvY2tOdW1iZXJDQiBpbXBsZW1lbnRhdGlv biB3aGljaCB3b3JrcyBhcyBmb2xsb3dzOgorICoKKyAqIDEpIEl0IGl0ZXJhdGVzIG92ZXIgYSBz b3J0ZWQgdHVwbGVzdG9yZSwgd2hlcmUgZWFjaCBlbGVtZW50IGlzIGFuIGVuY29kZWQKKyAqICAg IEl0ZW1Qb2ludGVyCisgKgorICogMikgSXQgcmV0dXJucyB0aGUgY3VycmVudCBCbG9ja051bWJl ciBhbmQgY29sbGVjdHMgYWxsIE9mZnNldE51bWJlcnMKKyAqICAgIGZvciB0aGF0IGJsb2NrIGlu IHBlcl9idWZmZXJfZGF0YS4KKyAqCisgKiAzKSBPbmNlIHRoZSBjb2RlIGVuY291bnRlcnMgYSBu ZXcgQmxvY2tOdW1iZXIsIGl0IHN0b3BzIHJlYWRpbmcgbW9yZQorICogICAgb2Zmc2V0cyBhbmQg c2F2ZXMgdGhlIE9mZnNldE51bWJlciBvZiB0aGUgbmV3IGJsb2NrIGZvciB0aGUgbmV4dCBjYWxs LgorICoKKyAqIDQpIFRoZSBsaXN0IG9mIG9mZnNldHMgZm9yIGEgYmxvY2sgaXMgYWx3YXlzIHRl cm1pbmF0ZWQgd2l0aCBJbnZhbGlkT2Zmc2V0TnVtYmVyLgorICoKKyAqIFRoaXMgZnVuY3Rpb24g aXMgaW50ZW5kZWQgdG8gYmUgcmVwZWF0ZWRseSBjYWxsZWQsIGVhY2ggdGltZSByZXR1cm5pbmcK KyAqIHRoZSBuZXh0IGJsb2NrIGFuZCBpdHMgY29ycmVzcG9uZGluZyBzZXQgb2Ygb2Zmc2V0cy4K KyAqLworc3RhdGljIEJsb2NrTnVtYmVyCitoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9yZWFk X3N0cmVhbV9uZXh0KAorCQkJCQkJCQkgIFJlYWRTdHJlYW0gKnN0cmVhbSwKKwkJCQkJCQkJICB2 b2lkICp2b2lkX2NhbGxiYWNrX3ByaXZhdGVfZGF0YSwKKwkJCQkJCQkJICB2b2lkICp2b2lkX3Bl cl9idWZmZXJfZGF0YQorCQkJCQkJCQkgICkKK3sKKwlib29sIHNob3VkX2ZyZWU7CisJRGF0dW0g ZGF0dW07CisJQmxvY2tOdW1iZXIgcmVzdWx0ID0gSW52YWxpZEJsb2NrTnVtYmVyOworCWludCBp ID0gMDsKKworCS8qCisJICogUmV0cmlldmUgdGhlIHNwZWNpYWxpemVkIGNhbGxiYWNrIHN0YXRl IGFuZCB0aGUgb3V0cHV0IGJ1ZmZlci4KKwkgKiBjYWxsYmFja19wcml2YXRlX2RhdGEga2VlcHMg dHJhY2sgb2YgdGhlIHByZXZpb3VzIGJsb2NrIGFuZCBvZmZzZXQKKwkgKiBmcm9tIGEgcHJpb3Ig aW52b2NhdGlvbiwgaWYgYW55LgorCSAqLworCVZhbGlkYXRlSW5kZXhTY2FuU3RhdGUgKmNhbGxi YWNrX3ByaXZhdGVfZGF0YSA9IHZvaWRfY2FsbGJhY2tfcHJpdmF0ZV9kYXRhOworCU9mZnNldE51 bWJlciAqcGVyX2J1ZmZlcl9kYXRhID0gdm9pZF9wZXJfYnVmZmVyX2RhdGE7CisKKwkvKgorCSAq IElmIHRoZXJlIGlzIGEgImxlZnRvdmVyIiBvZmZzZXQgbnVtYmVyIGZyb20gdGhlIHByZXZpb3Vz IGludm9jYXRpb24sCisJICogaXQgbWVhbnMgd2UgaGFkIHN3aXRjaGVkIHRvIGEgbmV3IGJsb2Nr IGluIHRoZSBtaWRkbGUgb2YgdGhlIGxhc3QgY2FsbC4KKwkgKiBXZSBwbGFjZSB0aGF0IGxlZnRv dmVyIG9mZnNldCBudW1iZXIgaW50byB0aGUgYnVmZmVyIGZpcnN0LgorCSAqLworCWlmIChjYWxs YmFja19wcml2YXRlX2RhdGEtPnByZXZfb2ZmX29mZnNldF9udW1iZXIgIT0gSW52YWxpZE9mZnNl dE51bWJlcikKKwl7CisJCUFzc2VydChjYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tf bnVtYmVyICE9IEludmFsaWRCbG9ja051bWJlcik7CisJCS8qCisJCSAqICdyZXN1bHQnIGlzIHRo ZSBibG9jayBudW1iZXIgdG8gcmV0dXJuLiBXZSBzZXQgaXQgdG8gdGhlIGJsb2NrCisJCSAqIGZy b20gdGhlIHByZXZpb3VzIGxlZnRvdmVyIG9mZnNldC4KKwkJICovCisJCXJlc3VsdCA9IGNhbGxi YWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXI7CisJCS8qIFBsYWNlIGxlZnRvdmVy IG9mZnNldCBudW1iZXIgaW4gdGhlIG91dHB1dCBidWZmZXIuICovCisJCXBlcl9idWZmZXJfZGF0 YVtpKytdID0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X29mZl9vZmZzZXRfbnVtYmVyOwor CQkvKgorCQkgKiBDbGVhciB0aGUgbGVmdG92ZXIgb2Zmc2V0IG51bWJlciBzbyBpdCB3b24ndCBi ZSByZXVzZWQgdW5sZXNzCisJCSAqIHdlIGVuY291bnRlciBhbm90aGVyIGJsb2NrIGNoYW5nZS4K KwkJICovCisJCWNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9vZmZfb2Zmc2V0X251bWJlciA9 IEludmFsaWRPZmZzZXROdW1iZXI7CisJfQorCisJLyoKKwkgKiBSZWFkIGZyb20gdGhlIHR1cGxl c3RvcmUgdW50aWwgd2UgZWl0aGVyIHJ1biBvdXQgb2YgdHVwbGVzIG9yIHdlCisJICogZW5jb3Vu dGVyIGEgYmxvY2sgY2hhbmdlLiBGb3IgZWFjaCB0dXBsZToKKwkgKgorCSAqICAgMSkgRGVjb2Rl IGl0cyBibG9jay9vZmZzZXQgZnJvbSB0aGUgRGF0dW0uCisJICogICAyKSBJZiBpdCdzIHRoZSBm aXJzdCB0aW1lIGluIHRoaXMgY2FsbCAocHJldl9ibG9ja19udW1iZXIgPT0gSW52YWxpZEJsb2Nr TnVtYmVyKSwKKwkgKiAgICAgIGluaXRpYWxpemUgcHJldl9ibG9ja19udW1iZXIuCisJICogICAz KSBJZiB0aGUgYmxvY2sgbnVtYmVyIG1hdGNoZXMgdGhlIGN1cnJlbnQgYmxvY2ssIGNvbGxlY3Qg dGhlIG9mZnNldC4KKwkgKiAgIDQpIElmIHRoZSBibG9jayBudW1iZXIgZGlmZmVycywgc2F2ZSB0 aGF0IG9mZnNldCBhcyBsZWZ0b3ZlciBhbmQgYnJlYWsKKwkgKiAgICAgIHNvIHRoYXQgdGhlIG5l eHQgY2FsbCBjYW4gaGFuZGxlIHRoZSBuZXcgYmxvY2suCisJICovCisJd2hpbGUgKHR1cGxlc3Rv cmVfZ2V0ZGF0dW0oY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5zdG9yZSwgdHJ1ZSwgJnNob3VkX2Zy ZWUsICZkYXR1bSkpCisJeworCQlCbG9ja051bWJlciBuZXh0X2Jsb2NrX251bWJlcjsKKwkJSXRl bVBvaW50ZXJEYXRhIG5leHRfZGF0YTsKKworCQkvKiBEZWNvZGUgdGhlIGRhdHVtIGludG8gYW4g SXRlbVBvaW50ZXIgKGJsb2NrICsgb2Zmc2V0KS4gKi8KKwkJaXRlbXB0cl9kZWNvZGUoJm5leHRf ZGF0YSwgRGF0dW1HZXRJbnQ2NChkYXR1bSkpOworCQluZXh0X2Jsb2NrX251bWJlciA9IEl0ZW1Q b2ludGVyR2V0QmxvY2tOdW1iZXIoJm5leHRfZGF0YSk7CisKKwkJLyoKKwkJICogSWYgd2UgaGF2 ZW4ndCBzZXQgYSBibG9jayBudW1iZXIgeWV0IHRoaXMgcm91bmQsIGluaXRpYWxpemUgaXQKKwkJ ICogdXNpbmcgdGhlIGZpcnN0IHR1cGxlIHdlIHJlYWQuCisJCSAqLworCQlpZiAoY2FsbGJhY2tf cHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJlciA9PSBJbnZhbGlkQmxvY2tOdW1iZXIpCisJ CQljYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyID0gbmV4dF9ibG9ja19u dW1iZXI7CisKKwkJLyoKKwkJICogQWx3YXlzIHNldCB0aGUgcmVzdWx0IHRvIGJlIHRoZSAiY3Vy cmVudCIgYmxvY2sgbnVtYmVyCisJCSAqIHdlIGFyZSBmaWxsaW5nIG9mZnNldHMgZm9yLgorCQkg Ki8KKwkJcmVzdWx0ID0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJlcjsK KworCQkvKgorCQkgKiBJZiB0aGlzIHR1cGxlIGlzIGZyb20gdGhlIHNhbWUgYmxvY2ssIGp1c3Qg c3RvcmUgaXRzIG9mZnNldAorCQkgKiBpbiBvdXIgcGVyX2J1ZmZlcl9kYXRhIGFycmF5LgorCQkg Ki8KKwkJaWYgKG5leHRfYmxvY2tfbnVtYmVyID09IGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJl dl9ibG9ja19udW1iZXIpCisJCXsKKwkJCXBlcl9idWZmZXJfZGF0YVtpKytdID0gSXRlbVBvaW50 ZXJHZXRPZmZzZXROdW1iZXIoJm5leHRfZGF0YSk7CisKKwkJCS8qIEZyZWUgdGhlIGRhdHVtIGlm IG5lZWRlZC4gKi8KKwkJCWlmIChzaG91ZF9mcmVlKQorCQkJCXBmcmVlKERhdHVtR2V0UG9pbnRl cihkYXR1bSkpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIElmIHRoZSBibG9jayBq dXN0IGNoYW5nZWQsIHN0b3JlIHRoZSBvZmZzZXQgb2YgdGhlIG5ldyBibG9jaworCQkJICogYXMg bGVmdG92ZXIgZm9yIHRoZSBuZXh0IGludm9jYXRpb24gYW5kIGJyZWFrIG91dC4KKwkJCSAqLwor CQkJY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJlciA9IG5leHRfYmxvY2tf bnVtYmVyOworCQkJY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X29mZl9vZmZzZXRfbnVtYmVy ID0gIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZuZXh0X2RhdGEpOworCisJCQkvKiBGcmVl IHRoZSBkYXR1bSBpZiBuZWVkZWQuICovCisJCQlpZiAoc2hvdWRfZnJlZSkKKwkJCQlwZnJlZShE YXR1bUdldFBvaW50ZXIoZGF0dW0pKTsKKworCQkJLyogQnJlYWsgdG8gbGV0IHRoZSBuZXh0IGNh bGwgaGFuZGxlIHRoZSBuZXcgYmxvY2suICovCisJCQlicmVhazsKKwkJfQorCX0KKworCS8qCisJ ICogVGVybWluYXRlIHRoZSBsaXN0IG9mIG9mZnNldHMgZm9yIHRoaXMgYmxvY2sgd2l0aCBhbiBJ bnZhbGlkT2Zmc2V0TnVtYmVyLgorCSAqLworCXBlcl9idWZmZXJfZGF0YVtpXSA9IEludmFsaWRP ZmZzZXROdW1iZXI7CisJcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIHZvaWQKIGhlYXBhbV9p bmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCSAgIFJlbGF0 aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJCQkgICBJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCQkJ CSAgIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJICAgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0 ZSkKKwkJCQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUsCisJCQkJCQkgICBWYWxpZGF0 ZUluZGV4U3RhdGUgKmF1eFN0YXRlKQogewotCVRhYmxlU2NhbkRlc2Mgc2NhbjsKLQlIZWFwU2Nh bkRlc2MgaHNjYW47Ci0JSGVhcFR1cGxlCWhlYXBUdXBsZTsKIAlEYXR1bQkJdmFsdWVzW0lOREVY X01BWF9LRVlTXTsKIAlib29sCQlpc251bGxbSU5ERVhfTUFYX0tFWVNdOwotCUV4cHJTdGF0ZSAg KnByZWRpY2F0ZTsKLQlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKLQlFU3RhdGUJICAgKmVzdGF0ZTsK LQlFeHByQ29udGV4dCAqZWNvbnRleHQ7Ci0JQmxvY2tOdW1iZXIgcm9vdF9ibGtubyA9IEludmFs aWRCbG9ja051bWJlcjsKLQlPZmZzZXROdW1iZXIgcm9vdF9vZmZzZXRzW01heEhlYXBUdXBsZXNQ ZXJQYWdlXTsKLQlib29sCQlpbl9pbmRleFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07Ci0JQmxvY2tO dW1iZXIgcHJldmlvdXNfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7Ci0KLQkvKiBzdGF0ZSB2 YXJpYWJsZXMgZm9yIHRoZSBtZXJnZSAqLwotCUl0ZW1Qb2ludGVyIGluZGV4Y3Vyc29yID0gTlVM TDsKLQlJdGVtUG9pbnRlckRhdGEgZGVjb2RlZDsKLQlib29sCQl0dXBsZXNvcnRfZW1wdHkgPSBm YWxzZTsKKworCVR1cGxlVGFibGVTbG90ICAqc2xvdDsKKwlFU3RhdGUJCQkqZXN0YXRlOworCUV4 cHJDb250ZXh0CQkqZWNvbnRleHQ7CisJQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5ID0g R2V0QWNjZXNzU3RyYXRlZ3koQkFTX0JVTEtSRUFEKTsKKworCWludAkJCQludW1fdG9fY2hlY2s7 CisJVHVwbGVzdG9yZXN0YXRlICp0dXBsZXNfZm9yX2NoZWNrOworCVZhbGlkYXRlSW5kZXhTY2Fu U3RhdGUgY2FsbGJhY2tfcHJpdmF0ZV9kYXRhOworCisJQnVmZmVyIGJ1ZjsKKwlPZmZzZXROdW1i ZXIqIHR1cGxlczsKKwlSZWFkU3RyZWFtICpyZWFkX3N0cmVhbTsKKworCS8qIFVzZSAxMCUgb2Yg bWVtb3J5IGZvciB0dXBsZSBzdG9yZS4gKi8KKwlpbnQJCXN0b3JlX3dvcmtfbWVtX3BhcnQgPSBt YWludGVuYW5jZV93b3JrX21lbSAvIDEwOworCisJLyoKKwkgKiBFbmNvZGUgVElEcyBhcyBpbnQ4 IHZhbHVlcyBmb3IgdGhlIHNvcnQsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHNvcnRpbmcKKwkgKiBp dGVtIHBvaW50ZXJzLiAgVGhpcyBjYW4gYmUgc2lnbmlmaWNhbnRseSBmYXN0ZXIsIHByaW1hcmls eSBiZWNhdXNlIFRJRAorCSAqIGlzIGEgcGFzcy1ieS1yZWZlcmVuY2UgdHlwZSBvbiBhbGwgcGxh dGZvcm1zLCB3aGVyZWFzIGludDggaXMKKwkgKiBwYXNzLWJ5LXZhbHVlIG9uIG1vc3QgcGxhdGZv cm1zLgorCSAqLworCXR1cGxlc19mb3JfY2hlY2sgPSAgdHVwbGVzdG9yZV9iZWdpbl9kYXR1bShJ TlQ4T0lELCBmYWxzZSwgZmFsc2UsIHN0b3JlX3dvcmtfbWVtX3BhcnQpOwogCiAJLyoKIAkgKiBz YW5pdHkgY2hlY2tzCiAJICovCiAJQXNzZXJ0KE9pZElzVmFsaWQoaW5kZXhSZWxhdGlvbi0+cmRf cmVsLT5yZWxhbSkpOwogCi0JLyoKLQkgKiBOZWVkIGFuIEVTdGF0ZSBmb3IgZXZhbHVhdGlvbiBv ZiBpbmRleCBleHByZXNzaW9ucyBhbmQgcGFydGlhbC1pbmRleAotCSAqIHByZWRpY2F0ZXMuICBB bHNvIGEgc2xvdCB0byBob2xkIHRoZSBjdXJyZW50IHR1cGxlLgotCSAqLworCW51bV90b19jaGVj ayA9IGhlYXBhbV9pbmRleF92YWxpZGF0ZV90dXBsZXNvcnRfZGlmZmVyZW5jZShzdGF0ZS0+dHVw bGVzb3J0LAorCQkJCQkJCQkJCQkJCQkgYXV4U3RhdGUtPnR1cGxlc29ydCwKKwkJCQkJCQkJCQkJ CQkJIHR1cGxlc19mb3JfY2hlY2spOworCisJLyogSXQgaXMgb3VyIHJlc3BvbnNpYmlsaXR5IHRv IGNsb3NlIHR1cGxlIHNvcnQgYXMgZmFzdCBhcyB3ZSBjYW4gKi8KKwl0dXBsZXNvcnRfZW5kKHN0 YXRlLT50dXBsZXNvcnQpOworCXR1cGxlc29ydF9lbmQoYXV4U3RhdGUtPnR1cGxlc29ydCk7CisK KwlzdGF0ZS0+dHVwbGVzb3J0ID0gYXV4U3RhdGUtPnR1cGxlc29ydCA9IE5VTEw7CisKIAllc3Rh dGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CiAJZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4cHJD b250ZXh0KGVzdGF0ZSk7CiAJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlv bkdldERlc2NyKGhlYXBSZWxhdGlvbiksCi0JCQkJCQkJCQkmVFRTT3BzSGVhcFR1cGxlKTsKKwkJ CQkJCQkJCSZUVFNPcHNCdWZmZXJIZWFwVHVwbGUpOwogCiAJLyogQXJyYW5nZSBmb3IgZWNvbnRl eHQncyBzY2FuIHR1cGxlIHRvIGJlIHRoZSB0dXBsZSB1bmRlciB0ZXN0ICovCiAJZWNvbnRleHQt PmVjeHRfc2NhbnR1cGxlID0gc2xvdDsKIAotCS8qIFNldCB1cCBleGVjdXRpb24gc3RhdGUgZm9y IHByZWRpY2F0ZSwgaWYgYW55LiAqLwotCXByZWRpY2F0ZSA9IEV4ZWNQcmVwYXJlUXVhbChpbmRl eEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKKwljYWxsYmFja19wcml2YXRlX2RhdGEucHJl dl9ibG9ja19udW1iZXIgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CisJY2FsbGJhY2tfcHJpdmF0ZV9k YXRhLnN0b3JlID0gdHVwbGVzX2Zvcl9jaGVjazsKKwljYWxsYmFja19wcml2YXRlX2RhdGEucHJl dl9vZmZfb2Zmc2V0X251bWJlciA9IEludmFsaWRPZmZzZXROdW1iZXI7CiAKLQkvKgotCSAqIFBy ZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBXZSBuZWVkIGp1c3QgdGhvc2Ug dHVwbGVzCi0JICogc2F0aXNmeWluZyB0aGUgcGFzc2VkLWluIHJlZmVyZW5jZSBzbmFwc2hvdC4g IFdlIG11c3QgZGlzYWJsZSBzeW5jc2NhbgotCSAqIGhlcmUsIGJlY2F1c2UgaXQncyBjcml0aWNh bCB0aGF0IHdlIHJlYWQgZnJvbSBibG9jayB6ZXJvIGZvcndhcmQgdG8KLQkgKiBtYXRjaCB0aGUg c29ydGVkIFRJRHMuCi0JICovCi0Jc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChoZWFwUmVs YXRpb24sCS8qIHJlbGF0aW9uICovCi0JCQkJCQkJCSBzbmFwc2hvdCwJLyogc25hcHNob3QgKi8K LQkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCi0JCQkJCQkJCSBOVUxMLAkvKiBzY2Fu IGtleSAqLwotCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBPSyAqLwot CQkJCQkJCQkgZmFsc2UpOwkvKiBzeW5jc2NhbiBub3QgT0sgKi8KLQloc2NhbiA9IChIZWFwU2Nh bkRlc2MpIHNjYW47CisJcmVhZF9zdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihS RUFEX1NUUkVBTV9NQUlOVEVOQU5DRSB8IFJFQURfU1RSRUFNX1VTRV9CQVRDSElORywKKwkJCQkJ CQkJCQkJCQkJIGJzdHJhdGVneSwKKwkJCQkJCQkJCQkJCQkJIGhlYXBSZWxhdGlvbiwgTUFJTl9G T1JLTlVNLAorCQkJCQkJCQkJCQkJCQkgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fcmVhZF9z dHJlYW1fbmV4dCwKKwkJCQkJCQkJCQkJCQkJICZjYWxsYmFja19wcml2YXRlX2RhdGEsCisJCQkJ CQkJCQkJCQkJCSAoTWF4SGVhcFR1cGxlc1BlclBhZ2UgKyAxKSAqIHNpemVvZihPZmZzZXROdW1i ZXIpKTsKIAotCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfU0NBTl9CTE9D S1NfVE9UQUwsCi0JCQkJCQkJCSBoc2Nhbi0+cnNfbmJsb2Nrcyk7CisJcGdzdGF0X3Byb2dyZXNz X3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfVFVQTEVTX1RPVEFMLCBudW1fdG9fY2hl Y2spOworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1RV UExFU19ET05FLCAwKTsKIAotCS8qCi0JICogU2NhbiBhbGwgdHVwbGVzIG1hdGNoaW5nIHRoZSBz bmFwc2hvdC4KLQkgKi8KLQl3aGlsZSAoKGhlYXBUdXBsZSA9IGhlYXBfZ2V0bmV4dChzY2FuLCBG b3J3YXJkU2NhbkRpcmVjdGlvbikpICE9IE5VTEwpCisJd2hpbGUgKChidWYgPSByZWFkX3N0cmVh bV9uZXh0X2J1ZmZlcihyZWFkX3N0cmVhbSwgKHZvaWQqKSAmdHVwbGVzKSkgIT0gSW52YWxpZEJ1 ZmZlcikKIAl7Ci0JCUl0ZW1Qb2ludGVyIGhlYXBjdXJzb3IgPSAmaGVhcFR1cGxlLT50X3NlbGY7 Ci0JCUl0ZW1Qb2ludGVyRGF0YSByb290VHVwbGU7Ci0JCU9mZnNldE51bWJlciByb290X29mZm51 bTsKKwkJSGVhcFR1cGxlRGF0YQloZWFwX3R1cGxlX2RhdGFbTWF4SGVhcFR1cGxlc1BlclBhZ2Vd OworCQlpbnQgaTsKKwkJT2Zmc2V0TnVtYmVyIG9mZjsKKwkJQmxvY2tOdW1iZXIgYmxvY2tfbnVt YmVyOwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJc3RhdGUtPmh0dXBzICs9IDE7 CisJCUxvY2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7CisJCWJsb2NrX251bWJlciA9 IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1Zik7CiAKLQkJaWYgKChwcmV2aW91c19ibGtubyA9PSBJ bnZhbGlkQmxvY2tOdW1iZXIpIHx8Ci0JCQkoaHNjYW4tPnJzX2NibG9jayAhPSBwcmV2aW91c19i bGtubykpCisJCWkgPSAwOworCQl3aGlsZSAoKG9mZiA9IHR1cGxlc1tpXSkgIT0gSW52YWxpZE9m ZnNldE51bWJlcikKIAkJewotCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVT U19TQ0FOX0JMT0NLU19ET05FLAotCQkJCQkJCQkJCSBoc2Nhbi0+cnNfY2Jsb2NrKTsKLQkJCXBy ZXZpb3VzX2Jsa25vID0gaHNjYW4tPnJzX2NibG9jazsKKwkJCUl0ZW1Qb2ludGVyRGF0YSB0aWQ7 CisJCQlib29sCQlhbGxfZGVhZCwgZm91bmQ7CisJCQlJdGVtUG9pbnRlclNldCgmdGlkLCBibG9j a19udW1iZXIsIG9mZik7CisKKwkJCWZvdW5kID0gaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcigmdGlk LCBoZWFwUmVsYXRpb24sIGJ1Ziwgc25hcHNob3QsCisJCQkJCQkJCQkJICAgJmhlYXBfdHVwbGVf ZGF0YVtpXSwgJmFsbF9kZWFkLCB0cnVlKTsKKwkJCWlmICghZm91bmQpCisJCQkJSXRlbVBvaW50 ZXJTZXRJbnZhbGlkKCZoZWFwX3R1cGxlX2RhdGFbaV0udF9zZWxmKTsKKwkJCWkrKzsKIAkJfQor CQlMb2NrQnVmZmVyKGJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIAotCQkvKgotCQkgKiBBcyBj b21tZW50ZWQgaW4gdGFibGVfaW5kZXhfYnVpbGRfc2Nhbiwgd2Ugc2hvdWxkIGluZGV4IGhlYXAt b25seQotCQkgKiB0dXBsZXMgdW5kZXIgdGhlIFRJRHMgb2YgdGhlaXIgcm9vdCB0dXBsZXM7IHNv IHdoZW4gd2UgYWR2YW5jZSBvbnRvCi0JCSAqIGEgbmV3IGhlYXAgcGFnZSwgYnVpbGQgYSBtYXAg b2Ygcm9vdCBpdGVtIG9mZnNldHMgb24gdGhlIHBhZ2UuCi0JCSAqCi0JCSAqIFRoaXMgY29tcGxp Y2F0ZXMgbWVyZ2luZyBhZ2FpbnN0IHRoZSB0dXBsZXNvcnQgb3V0cHV0OiB3ZSB3aWxsCi0JCSAq IHZpc2l0IHRoZSBsaXZlIHR1cGxlcyBpbiBvcmRlciBieSB0aGVpciBvZmZzZXRzLCBidXQgdGhl IHJvb3QKLQkJICogb2Zmc2V0cyB0aGF0IHdlIG5lZWQgdG8gY29tcGFyZSBhZ2FpbnN0IHRoZSBp bmRleCBjb250ZW50cyBtaWdodCBiZQotCQkgKiBvcmRlcmVkIGRpZmZlcmVudGx5LiAgU28gd2Ug bWlnaHQgaGF2ZSB0byAibG9vayBiYWNrIiB3aXRoaW4gdGhlCi0JCSAqIHR1cGxlc29ydCBvdXRw dXQsIGJ1dCBvbmx5IHdpdGhpbiB0aGUgY3VycmVudCBwYWdlLiAgV2UgaGFuZGxlIHRoYXQKLQkJ ICogYnkga2VlcGluZyBhIGJvb2wgYXJyYXkgaW5faW5kZXhbXSBzaG93aW5nIGFsbCB0aGUKLQkJ ICogYWxyZWFkeS1wYXNzZWQtb3ZlciB0dXBsZXNvcnQgb3V0cHV0IFRJRHMgb2YgdGhlIGN1cnJl bnQgcGFnZS4gV2UKLQkJICogY2xlYXIgdGhhdCBhcnJheSBoZXJlLCB3aGVuIGFkdmFuY2luZyBv bnRvIGEgbmV3IGhlYXAgcGFnZS4KLQkJICovCi0JCWlmIChoc2Nhbi0+cnNfY2Jsb2NrICE9IHJv b3RfYmxrbm8pCisJCWkgPSAwOworCQl3aGlsZSAoKG9mZiA9IHR1cGxlc1tpXSkgIT0gSW52YWxp ZE9mZnNldE51bWJlcikKIAkJewotCQkJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoaHNjYW4t PnJzX2NidWYpOwotCi0JCQlMb2NrQnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19T SEFSRSk7Ci0JCQloZWFwX2dldF9yb290X3R1cGxlcyhwYWdlLCByb290X29mZnNldHMpOwotCQkJ TG9ja0J1ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKLQotCQkJbWVt c2V0KGluX2luZGV4LCAwLCBzaXplb2YoaW5faW5kZXgpKTsKLQotCQkJcm9vdF9ibGtubyA9IGhz Y2FuLT5yc19jYmxvY2s7Ci0JCX0KLQotCQkvKiBDb252ZXJ0IGFjdHVhbCB0dXBsZSBUSUQgdG8g cm9vdCBUSUQgKi8KLQkJcm9vdFR1cGxlID0gKmhlYXBjdXJzb3I7Ci0JCXJvb3Rfb2ZmbnVtID0g SXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoaGVhcGN1cnNvcik7Ci0KLQkJaWYgKEhlYXBUdXBs ZUlzSGVhcE9ubHkoaGVhcFR1cGxlKSkKLQkJewotCQkJcm9vdF9vZmZudW0gPSByb290X29mZnNl dHNbcm9vdF9vZmZudW0gLSAxXTsKLQkJCWlmICghT2Zmc2V0TnVtYmVySXNWYWxpZChyb290X29m Zm51bSkpCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9D T1JSVVBURUQpLAotCQkJCQkJIGVycm1zZ19pbnRlcm5hbCgiZmFpbGVkIHRvIGZpbmQgcGFyZW50 IHR1cGxlIGZvciBoZWFwLW9ubHkgdHVwbGUgYXQgKCV1LCV1KSBpbiB0YWJsZSBcIiVzXCIiLAot CQkJCQkJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKGhlYXBjdXJzb3IpLAotCQkJCQkJ CQkJCSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcihoZWFwY3Vyc29yKSwKLQkJCQkJCQkJCQkg UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaGVhcFJlbGF0aW9uKSkpKTsKLQkJCUl0ZW1Qb2ludGVy U2V0T2Zmc2V0TnVtYmVyKCZyb290VHVwbGUsIHJvb3Rfb2ZmbnVtKTsKLQkJfQotCi0JCS8qCi0J CSAqICJtZXJnZSIgYnkgc2tpcHBpbmcgdGhyb3VnaCB0aGUgaW5kZXggdHVwbGVzIHVudGlsIHdl IGZpbmQgb3IgcGFzcwotCQkgKiB0aGUgY3VycmVudCByb290IHR1cGxlLgotCQkgKi8KLQkJd2hp bGUgKCF0dXBsZXNvcnRfZW1wdHkgJiYKLQkJCSAgICghaW5kZXhjdXJzb3IgfHwKLQkJCQlJdGVt UG9pbnRlckNvbXBhcmUoaW5kZXhjdXJzb3IsICZyb290VHVwbGUpIDwgMCkpCi0JCXsKLQkJCURh dHVtCQl0c192YWw7Ci0JCQlib29sCQl0c19pc251bGw7Ci0KLQkJCWlmIChpbmRleGN1cnNvcikK KwkJCWlmIChJdGVtUG9pbnRlcklzVmFsaWQoJmhlYXBfdHVwbGVfZGF0YVtpXS50X3NlbGYpKQog CQkJeworCQkJCUl0ZW1Qb2ludGVyRGF0YSByb290X3RpZDsKKwkJCQlJdGVtUG9pbnRlclNldCgm cm9vdF90aWQsIGJsb2NrX251bWJlciwgb2ZmKTsKKworCQkJCS8qIFJlc2V0IHRoZSBwZXItdHVw bGUgbWVtb3J5IGNvbnRleHQgZm9yIHRoZSBuZXh0IGZldGNoLiAqLworCQkJCU1lbW9yeUNvbnRl eHRSZXNldChlY29udGV4dC0+ZWN4dF9wZXJfdHVwbGVfbWVtb3J5KTsKKwkJCQlFeGVjU3RvcmVC dWZmZXJIZWFwVHVwbGUoJmhlYXBfdHVwbGVfZGF0YVtpXSwgc2xvdCwgYnVmKTsKKworCQkJCS8q IENvbXB1dGUgdGhlIGtleSB2YWx1ZXMgYW5kIG51bGwgZmxhZ3MgZm9yIHRoaXMgdHVwbGUuICov CisJCQkJRm9ybUluZGV4RGF0dW0oaW5kZXhJbmZvLAorCQkJCQkJCSAgIHNsb3QsCisJCQkJCQkJ ICAgZXN0YXRlLAorCQkJCQkJCSAgIHZhbHVlcywKKwkJCQkJCQkgICBpc251bGwpOworCiAJCQkJ LyoKLQkJCQkgKiBSZW1lbWJlciBpbmRleCBpdGVtcyBzZWVuIGVhcmxpZXIgb24gdGhlIGN1cnJl bnQgaGVhcCBwYWdlCisJCQkJICogSW5zZXJ0IHRoZSB0dXBsZSBpbnRvIHRoZSB0YXJnZXQgaW5k ZXguCiAJCQkJICovCi0JCQkJaWYgKEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoaW5kZXhjdXJz b3IpID09IHJvb3RfYmxrbm8pCi0JCQkJCWluX2luZGV4W0l0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVt YmVyKGluZGV4Y3Vyc29yKSAtIDFdID0gdHJ1ZTsKKwkJCQlpbmRleF9pbnNlcnQoaW5kZXhSZWxh dGlvbiwKKwkJCQkJCQkgdmFsdWVzLAorCQkJCQkJCSBpc251bGwsCisJCQkJCQkJICZyb290X3Rp ZCwgLyogaW5zZXJ0IHJvb3QgdHVwbGUgKi8KKwkJCQkJCQkgaGVhcFJlbGF0aW9uLAorCQkJCQkJ CSBpbmRleEluZm8tPmlpX1VuaXF1ZSA/CisJCQkJCQkJIFVOSVFVRV9DSEVDS19ZRVMgOiBVTklR VUVfQ0hFQ0tfTk8sCisJCQkJCQkJIGZhbHNlLAorCQkJCQkJCSBpbmRleEluZm8pOwogCQkJfQog Ci0JCQl0dXBsZXNvcnRfZW1wdHkgPSAhdHVwbGVzb3J0X2dldGRhdHVtKHN0YXRlLT50dXBsZXNv cnQsIHRydWUsCi0JCQkJCQkJCQkJCQkgIGZhbHNlLCAmdHNfdmFsLCAmdHNfaXNudWxsLAotCQkJ CQkJCQkJCQkJICBOVUxMKTsKLQkJCUFzc2VydCh0dXBsZXNvcnRfZW1wdHkgfHwgIXRzX2lzbnVs bCk7Ci0JCQlpZiAoIXR1cGxlc29ydF9lbXB0eSkKLQkJCXsKLQkJCQlpdGVtcHRyX2RlY29kZSgm ZGVjb2RlZCwgRGF0dW1HZXRJbnQ2NCh0c192YWwpKTsKLQkJCQlpbmRleGN1cnNvciA9ICZkZWNv ZGVkOwotCQkJfQotCQkJZWxzZQotCQkJewotCQkJCS8qIEJlIHRpZHkgKi8KLQkJCQlpbmRleGN1 cnNvciA9IE5VTEw7Ci0JCQl9CisJCQlzdGF0ZS0+aHR1cHMgKz0gMTsKKwkJCXBnc3RhdF9wcm9n cmVzc19pbmNyX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNfRE9ORSwgMSk7CisJCQlp Kys7CiAJCX0KIAotCQkvKgotCQkgKiBJZiB0aGUgdHVwbGVzb3J0IGhhcyBvdmVyc2hvdCAqYW5k KiB3ZSBkaWRuJ3Qgc2VlIGEgbWF0Y2ggZWFybGllciwKLQkJICogdGhlbiB0aGlzIHR1cGxlIGlz IG1pc3NpbmcgZnJvbSB0aGUgaW5kZXgsIHNvIGluc2VydCBpdC4KLQkJICovCi0JCWlmICgodHVw bGVzb3J0X2VtcHR5IHx8Ci0JCQkgSXRlbVBvaW50ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCAmcm9v dFR1cGxlKSA+IDApICYmCi0JCQkhaW5faW5kZXhbcm9vdF9vZmZudW0gLSAxXSkKLQkJewotCQkJ TWVtb3J5Q29udGV4dFJlc2V0KGVjb250ZXh0LT5lY3h0X3Blcl90dXBsZV9tZW1vcnkpOwotCi0J CQkvKiBTZXQgdXAgZm9yIHByZWRpY2F0ZSBvciBleHByZXNzaW9uIGV2YWx1YXRpb24gKi8KLQkJ CUV4ZWNTdG9yZUhlYXBUdXBsZShoZWFwVHVwbGUsIHNsb3QsIGZhbHNlKTsKLQotCQkJLyoKLQkJ CSAqIEluIGEgcGFydGlhbCBpbmRleCwgZGlzY2FyZCB0dXBsZXMgdGhhdCBkb24ndCBzYXRpc2Z5 IHRoZQotCQkJICogcHJlZGljYXRlLgotCQkJICovCi0JCQlpZiAocHJlZGljYXRlICE9IE5VTEwp Ci0JCQl7Ci0JCQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGUsIGVjb250ZXh0KSkKLQkJCQkJY29u dGludWU7Ci0JCQl9Ci0KLQkJCS8qCi0JCQkgKiBGb3IgdGhlIGN1cnJlbnQgaGVhcCB0dXBsZSwg ZXh0cmFjdCBhbGwgdGhlIGF0dHJpYnV0ZXMgd2UgdXNlCi0JCQkgKiBpbiB0aGlzIGluZGV4LCBh bmQgbm90ZSB3aGljaCBhcmUgbnVsbC4gIFRoaXMgYWxzbyBwZXJmb3JtcwotCQkJICogZXZhbHVh dGlvbiBvZiBhbnkgZXhwcmVzc2lvbnMgbmVlZGVkLgotCQkJICovCi0JCQlGb3JtSW5kZXhEYXR1 bShpbmRleEluZm8sCi0JCQkJCQkgICBzbG90LAotCQkJCQkJICAgZXN0YXRlLAotCQkJCQkJICAg dmFsdWVzLAotCQkJCQkJICAgaXNudWxsKTsKLQotCQkJLyoKLQkJCSAqIFlvdSdkIHRoaW5rIHdl IHNob3VsZCBnbyBhaGVhZCBhbmQgYnVpbGQgdGhlIGluZGV4IHR1cGxlIGhlcmUsCi0JCQkgKiBi dXQgc29tZSBpbmRleCBBTXMgd2FudCB0byBkbyBmdXJ0aGVyIHByb2Nlc3Npbmcgb24gdGhlIGRh dGEKLQkJCSAqIGZpcnN0LiBTbyBwYXNzIHRoZSB2YWx1ZXNbXSBhbmQgaXNudWxsW10gYXJyYXlz LCBpbnN0ZWFkLgotCQkJICovCi0KLQkJCS8qCi0JCQkgKiBJZiB0aGUgdHVwbGUgaXMgYWxyZWFk eSBjb21taXR0ZWQgZGVhZCwgeW91IG1pZ2h0IHRoaW5rIHdlCi0JCQkgKiBjb3VsZCBzdXBwcmVz cyB1bmlxdWVuZXNzIGNoZWNraW5nLCBidXQgdGhpcyBpcyBubyBsb25nZXIgdHJ1ZQotCQkJICog aW4gdGhlIHByZXNlbmNlIG9mIEhPVCwgYmVjYXVzZSB0aGUgaW5zZXJ0IGlzIGFjdHVhbGx5IGEg cHJveHkKLQkJCSAqIGZvciBhIHVuaXF1ZW5lc3MgY2hlY2sgb24gdGhlIHdob2xlIEhPVC1jaGFp bi4gIFRoYXQgaXMsIHRoZQotCQkJICogdHVwbGUgd2UgaGF2ZSBoZXJlIGNvdWxkIGJlIGRlYWQg YmVjYXVzZSBpdCB3YXMgYWxyZWFkeQotCQkJICogSE9ULXVwZGF0ZWQsIGFuZCBpZiBzbyB0aGUg dXBkYXRpbmcgdHJhbnNhY3Rpb24gd2lsbCBub3QgaGF2ZQotCQkJICogdGhvdWdodCBpdCBzaG91 bGQgaW5zZXJ0IGluZGV4IGVudHJpZXMuICBUaGUgaW5kZXggQU0gd2lsbAotCQkJICogY2hlY2sg dGhlIHdob2xlIEhPVC1jaGFpbiBhbmQgY29ycmVjdGx5IGRldGVjdCBhIGNvbmZsaWN0IGlmCi0J CQkgKiB0aGVyZSBpcyBvbmUuCi0JCQkgKi8KLQotCQkJaW5kZXhfaW5zZXJ0KGluZGV4UmVsYXRp b24sCi0JCQkJCQkgdmFsdWVzLAotCQkJCQkJIGlzbnVsbCwKLQkJCQkJCSAmcm9vdFR1cGxlLAot CQkJCQkJIGhlYXBSZWxhdGlvbiwKLQkJCQkJCSBpbmRleEluZm8tPmlpX1VuaXF1ZSA/Ci0JCQkJ CQkgVU5JUVVFX0NIRUNLX1lFUyA6IFVOSVFVRV9DSEVDS19OTywKLQkJCQkJCSBmYWxzZSwKLQkJ CQkJCSBpbmRleEluZm8pOwotCi0JCQlzdGF0ZS0+dHVwc19pbnNlcnRlZCArPSAxOwotCQl9CisJ CVJlbGVhc2VCdWZmZXIoYnVmKTsKIAl9CiAKLQl0YWJsZV9lbmRzY2FuKHNjYW4pOwotCiAJRXhl Y0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKIAogCUZyZWVFeGVjdXRvclN0YXRlKGVz dGF0ZSk7CiAKKwlyZWFkX3N0cmVhbV9lbmQocmVhZF9zdHJlYW0pOworCXR1cGxlc3RvcmVfZW5k KHR1cGxlc19mb3JfY2hlY2spOworCiAJLyogVGhlc2UgbWF5IGhhdmUgYmVlbiBwb2ludGluZyB0 byB0aGUgbm93LWdvbmUgZXN0YXRlICovCiAJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRl ID0gTklMOwogCWluZGV4SW5mby0+aWlfUHJlZGljYXRlU3RhdGUgPSBOVUxMOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jCmluZGV4IDg1ZDJmMDJkMzJlLi5iZTU3NDRjM2I0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAt NzE0LDExICs3MTQsMTYgQEAgVXBkYXRlSW5kZXhSZWxhdGlvbihPaWQgaW5kZXhvaWQsCiAgKgkJ CWFscmVhZHkgZXhpc3RzLgogICoJCUlOREVYX0NSRUFURV9QQVJUSVRJT05FRDoKICAqCQkJY3Jl YXRlIGEgcGFydGl0aW9uZWQgaW5kZXggKHRhYmxlIG11c3QgYmUgcGFydGl0aW9uZWQpCisgKgkJ SU5ERVhfQ1JFQVRFX0FVWElMSUFSWToKKyAqCQkJbWFyayBpbmRleCBhcyBhdXhpbGlhcnkgaW5k ZXgKICAqIGNvbnN0cl9mbGFnczogZmxhZ3MgcGFzc2VkIHRvIGluZGV4X2NvbnN0cmFpbnRfY3Jl YXRlCiAgKgkJKG9ubHkgaWYgSU5ERVhfQ1JFQVRFX0FERF9DT05TVFJBSU5UIGlzIHNldCkKICAq IGFsbG93X3N5c3RlbV90YWJsZV9tb2RzOiBhbGxvdyB0YWJsZSB0byBiZSBhIHN5c3RlbSBjYXRh bG9nCiAgKiBpc19pbnRlcm5hbDogaWYgdHJ1ZSwgcG9zdCBjcmVhdGlvbiBob29rIGZvciBuZXcg aW5kZXgKICAqIGNvbnN0cmFpbnRJZDogaWYgbm90IE5VTEwsIHJlY2VpdmVzIE9JRCBvZiBjcmVh dGVkIGNvbnN0cmFpbnQKKyAqIHJlbHBlcnNpc3RlbmNlOiBwZXJzaXN0ZW5jZSBsZXZlbCB0byB1 c2UgZm9yIGluZGV4LiBJbiBtb3N0IG9mIHRoZQorICoJCWNhc2VzIGl0IGlzIHNob3VsZCBiZSBl cXVhbCB0byBwZXJzaXN0ZW5jZSBsZXZlbCBvZiB0YWJsZSwKKyAqCQlhdXhpbGlhcnkgaW5kZXhl cyBhcmUgb25seSBleGNlcHRpb24gaGVyZS4KICAqCiAgKiBSZXR1cm5zIHRoZSBPSUQgb2YgdGhl IGNyZWF0ZWQgaW5kZXguCiAgKi8KQEAgLTc1OSw2ICs3NjQsNyBAQCBpbmRleF9jcmVhdGUoUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCWJvb2wJCWludmFsaWQgPSAoZmxhZ3MgJiBJTkRFWF9DUkVB VEVfSU5WQUxJRCkgIT0gMDsKIAlib29sCQljb25jdXJyZW50ID0gKGZsYWdzICYgSU5ERVhfQ1JF QVRFX0NPTkNVUlJFTlQpICE9IDA7CiAJYm9vbAkJcGFydGl0aW9uZWQgPSAoZmxhZ3MgJiBJTkRF WF9DUkVBVEVfUEFSVElUSU9ORUQpICE9IDA7CisJYm9vbAkJYXV4aWxpYXJ5ID0gKGZsYWdzICYg SU5ERVhfQ1JFQVRFX0FVWElMSUFSWSkgIT0gMDsKIAljaGFyCQlyZWxraW5kOwogCVRyYW5zYWN0 aW9uSWQgcmVsZnJvemVueGlkOwogCU11bHRpWGFjdElkIHJlbG1pbm14aWQ7CkBAIC03ODQsNyAr NzkwLDEwIEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJbmFtZXNwYWNl SWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShoZWFwUmVsYXRpb24pOwogCXNoYXJlZF9yZWxhdGlv biA9IGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5yZWxpc3NoYXJlZDsKIAltYXBwZWRfcmVsYXRpb24g PSBSZWxhdGlvbklzTWFwcGVkKGhlYXBSZWxhdGlvbik7Ci0JcmVscGVyc2lzdGVuY2UgPSBoZWFw UmVsYXRpb24tPnJkX3JlbC0+cmVscGVyc2lzdGVuY2U7CisJaWYgKGF1eGlsaWFyeSkKKwkJcmVs cGVyc2lzdGVuY2UgPSBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRDsgLyogYXV4IGluZGV4ZXMgYXJl IGFsd2F5cyB1bmxvZ2dlZCAqLworCWVsc2UKKwkJcmVscGVyc2lzdGVuY2UgPSBoZWFwUmVsYXRp b24tPnJkX3JlbC0+cmVscGVyc2lzdGVuY2U7CiAKIAkvKgogCSAqIGNoZWNrIHBhcmFtZXRlcnMK QEAgLTc5Miw2ICs4MDEsMTEgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwK IAlpZiAoaW5kZXhJbmZvLT5paV9OdW1JbmRleEF0dHJzIDwgMSkKIAkJZWxvZyhFUlJPUiwgIm11 c3QgaW5kZXggYXQgbGVhc3Qgb25lIGNvbHVtbiIpOwogCisJaWYgKGluZGV4SW5mby0+aWlfQW0g PT0gU1RJUl9BTV9PSUQgJiYgIWF1eGlsaWFyeSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygidXNlci1k ZWZpbmVkIGluZGV4ZXMgd2l0aCBTVElSIGFjY2VzcyBtZXRob2QgYXJlIG5vdCBzdXBwb3J0ZWQi KSkpOworCiAJaWYgKCFhbGxvd19zeXN0ZW1fdGFibGVfbW9kcyAmJgogCQlJc1N5c3RlbVJlbGF0 aW9uKGhlYXBSZWxhdGlvbikgJiYKIAkJSXNOb3JtYWxQcm9jZXNzaW5nTW9kZSgpKQpAQCAtMTM5 Nyw3ICsxNDExLDggQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJCQkJCQkJZmFsc2UsCS8qIG5vdCByZWFkeSBm b3IgaW5zZXJ0cyAqLwogCQkJCQkJCXRydWUsCiAJCQkJCQkJaW5kZXhSZWxhdGlvbi0+cmRfaW5k YW0tPmFtc3VtbWFyaXppbmcsCi0JCQkJCQkJb2xkSW5mby0+aWlfV2l0aG91dE92ZXJsYXBzKTsK KwkJCQkJCQlvbGRJbmZvLT5paV9XaXRob3V0T3ZlcmxhcHMsCisJCQkJCQkJZmFsc2UpOwogCiAJ LyoKIAkgKiBFeHRyYWN0IHRoZSBsaXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhlIGNvbHVtbiBu dW1iZXJzIGZvciB0aGUgbmV3CkBAIC0xNDcyLDYgKzE0ODcsMTU0IEBAIGluZGV4X2NvbmN1cnJl bnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLAog CXJldHVybiBuZXdJbmRleElkOwogfQogCisvKgorICogaW5kZXhfY29uY3VycmVudGx5X2NyZWF0 ZV9hdXgKKyAqCisgKiBDcmVhdGUgY29uY3VycmVudGx5IGFuIGF1eGlsaWFyeSBpbmRleCBiYXNl ZCBvbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgb25lCisgKiBwcm92aWRlZCBieSBjYWxsZXIuICBU aGUgaW5kZXggaXMgaW5zZXJ0ZWQgaW50byBjYXRhbG9ncyBhbmQgbmVlZHMgdG8gYmUKKyAqIGJ1 aWx0IGxhdGVyIG9uLiBUaGlzIGlzIGNhbGxlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4IHBy b2Nlc3NpbmcuCisgKgorICogInRhYmxlc3BhY2VPaWQiIGlzIHRoZSB0YWJsZXNwYWNlIHRvIHVz ZSBmb3IgdGhpcyBpbmRleC4KKyAqLworT2lkCitpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2F1 eChSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBtYWluSW5kZXhJZCwKKwkJCQkJCQkgICBPaWQg dGFibGVzcGFjZU9pZCwgY29uc3QgY2hhciAqbmV3TmFtZSkKK3sKKwlSZWxhdGlvbglpbmRleFJl bGF0aW9uOworCUluZGV4SW5mbyAgKm9sZEluZm8sCisJCQkqbmV3SW5mbzsKKwlPaWQJCQluZXdJ bmRleElkID0gSW52YWxpZE9pZDsKKwlIZWFwVHVwbGUJaW5kZXhUdXBsZTsKKworCUxpc3QJICAg KmluZGV4Q29sTmFtZXMgPSBOSUw7CisJTGlzdAkgICAqaW5kZXhFeHBycyA9IE5JTDsKKwlMaXN0 CSAgICppbmRleFByZWRzID0gTklMOworCisJT2lkICphdXhPcGNsYXNzSWRzOworCWludDE2ICph dXhDb2xvcHRpb25zOworCisJaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4obWFpbkluZGV4SWQs IFJvd0V4Y2x1c2l2ZUxvY2spOworCisJLyogVGhlIG5ldyBpbmRleCBuZWVkcyBzb21lIGluZm9y bWF0aW9uIGZyb20gdGhlIG9sZCBpbmRleCAqLworCW9sZEluZm8gPSBCdWlsZEluZGV4SW5mbyhp bmRleFJlbGF0aW9uKTsKKworCS8qCisJICogQnVpbGQgb2YgYW4gYXV4aWxpYXJ5IGluZGV4IHdp dGggZXhjbHVzaW9uIGNvbnN0cmFpbnRzIGlzIG5vdAorCSAqIHN1cHBvcnRlZC4KKwkgKi8KKwlp ZiAob2xkSW5mby0+aWlfRXhjbHVzaW9uT3BzICE9IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJZXJybXNn KCJhdXhpbGlhcnkgaW5kZXggY3JlYXRpb24gZm9yIGV4Y2x1c2lvbiBjb25zdHJhaW50cyBpcyBu b3Qgc3VwcG9ydGVkIikpKTsKKworCS8qIEdldCB0aGUgYXJyYXkgb2YgY2xhc3MgYW5kIGNvbHVt biBvcHRpb25zIElEcyBmcm9tIGluZGV4IGluZm8gKi8KKwlpbmRleFR1cGxlID0gU2VhcmNoU3lz Q2FjaGUxKElOREVYUkVMSUQsIE9iamVjdElkR2V0RGF0dW0obWFpbkluZGV4SWQpKTsKKwlpZiAo IUhlYXBUdXBsZUlzVmFsaWQoaW5kZXhUdXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29r dXAgZmFpbGVkIGZvciBpbmRleCAldSIsIG1haW5JbmRleElkKTsKKworCisJLyoKKwkgKiBGZXRj aCB0aGUgbGlzdCBvZiBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRlcyBkaXJlY3RseSBmcm9tIHRo ZQorCSAqIGNhdGFsb2dzLiAgVGhpcyBjYW5ub3QgcmVseSBvbiB0aGUgaW5mb3JtYXRpb24gZnJv bSBJbmRleEluZm8gb2YgdGhlCisJICogb2xkIGluZGV4IGFzIHRoZXNlIGhhdmUgYmVlbiBmbGF0 dGVuZWQgZm9yIHRoZSBwbGFubmVyLgorCSAqLworCWlmIChvbGRJbmZvLT5paV9FeHByZXNzaW9u cyAhPSBOSUwpCisJeworCQlEYXR1bQkJZXhwckRhdHVtOworCQljaGFyCSAgICpleHByU3RyaW5n OworCisJCWV4cHJEYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoSU5ERVhSRUxJRCwgaW5k ZXhUdXBsZSwKKwkJCQkJCQkJCQkgICBBbnVtX3BnX2luZGV4X2luZGV4cHJzKTsKKwkJZXhwclN0 cmluZyA9IFRleHREYXR1bUdldENTdHJpbmcoZXhwckRhdHVtKTsKKwkJaW5kZXhFeHBycyA9IChM aXN0ICopIHN0cmluZ1RvTm9kZShleHByU3RyaW5nKTsKKwkJcGZyZWUoZXhwclN0cmluZyk7CisJ fQorCWlmIChvbGRJbmZvLT5paV9QcmVkaWNhdGUgIT0gTklMKQorCXsKKwkJRGF0dW0JCXByZWRE YXR1bTsKKwkJY2hhcgkgICAqcHJlZFN0cmluZzsKKworCQlwcmVkRGF0dW0gPSBTeXNDYWNoZUdl dEF0dHJOb3ROdWxsKElOREVYUkVMSUQsIGluZGV4VHVwbGUsCisJCQkJCQkJCQkJICAgQW51bV9w Z19pbmRleF9pbmRwcmVkKTsKKwkJcHJlZFN0cmluZyA9IFRleHREYXR1bUdldENTdHJpbmcocHJl ZERhdHVtKTsKKwkJaW5kZXhQcmVkcyA9IChMaXN0ICopIHN0cmluZ1RvTm9kZShwcmVkU3RyaW5n KTsKKworCQkvKiBBbHNvIGNvbnZlcnQgdG8gaW1wbGljaXQtQU5EIGZvcm1hdCAqLworCQlpbmRl eFByZWRzID0gbWFrZV9hbmRzX2ltcGxpY2l0KChFeHByICopIGluZGV4UHJlZHMpOworCQlwZnJl ZShwcmVkU3RyaW5nKTsKKwl9CisKKwkvKgorCSAqIEJ1aWxkIHRoZSBpbmRleCBpbmZvcm1hdGlv biBmb3IgdGhlIG5ldyBpbmRleC4gIE5vdGUgdGhhdCByZWJ1aWxkIG9mCisJICogaW5kZXhlcyB3 aXRoIGV4Y2x1c2lvbiBjb25zdHJhaW50cyBpcyBub3Qgc3VwcG9ydGVkLCBoZW5jZSB0aGVyZSBp cyBubworCSAqIG5lZWQgdG8gZmlsbCBhbGwgdGhlIGlpX0V4Y2x1c2lvbiogZmllbGRzLgorCSAq LworCW5ld0luZm8gPSBtYWtlSW5kZXhJbmZvKG9sZEluZm8tPmlpX051bUluZGV4QXR0cnMsCisJ CQkJCQkJb2xkSW5mby0+aWlfTnVtSW5kZXhLZXlBdHRycywKKwkJCQkJCQlTVElSX0FNX09JRCwg Lyogc3BlY2lhbCBBTSBmb3IgYXV4IGluZGV4ZXMgKi8KKwkJCQkJCQlpbmRleEV4cHJzLAorCQkJ CQkJCWluZGV4UHJlZHMsCisJCQkJCQkJZmFsc2UsCS8qIGF1eCBpbmRleCBhcmUgbm90IHVuaXF1 ZSAqLworCQkJCQkJCW9sZEluZm8tPmlpX051bGxzTm90RGlzdGluY3QsCisJCQkJCQkJZmFsc2Us CS8qIG5vdCByZWFkeSBmb3IgaW5zZXJ0cyAqLworCQkJCQkJCXRydWUsCisJCQkJCQkJZmFsc2Us CS8qIGF1eCBhcmUgbm90IHN1bW1hcml6aW5nICovCisJCQkJCQkJZmFsc2UsCS8qIGF1eCBhcmUg bm90IHdpdGhvdXQgb3ZlcmxhcHMgKi8KKwkJCQkJCQl0cnVlCS8qIGF1eGlsaWFyeSAqLyk7CisK KwkvKgorCSAqIEV4dHJhY3QgdGhlIGxpc3Qgb2YgY29sdW1uIG5hbWVzIGFuZCB0aGUgY29sdW1u IG51bWJlcnMgZm9yIHRoZSBuZXcKKwkgKiBpbmRleCBpbmZvcm1hdGlvbi4gIEFsbCB0aGlzIGlu Zm9ybWF0aW9uIHdpbGwgYmUgdXNlZCBmb3IgdGhlIGluZGV4CisJICogY3JlYXRpb24uCisJICov CisJZm9yIChpbnQgaSA9IDA7IGkgPCBvbGRJbmZvLT5paV9OdW1JbmRleEF0dHJzOyBpKyspCisJ eworCQlUdXBsZURlc2MJaW5kZXhUdXBEZXNjID0gUmVsYXRpb25HZXREZXNjcihpbmRleFJlbGF0 aW9uKTsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cihpbmRleFR1cERl c2MsIGkpOworCisJCWluZGV4Q29sTmFtZXMgPSBsYXBwZW5kKGluZGV4Q29sTmFtZXMsIE5hbWVT dHIoYXR0LT5hdHRuYW1lKSk7CisJCW5ld0luZm8tPmlpX0luZGV4QXR0ck51bWJlcnNbaV0gPSBv bGRJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJzW2ldOworCX0KKworCWF1eE9wY2xhc3NJZHMgPSBw YWxsb2MwKHNpemVvZihPaWQpICogbmV3SW5mby0+aWlfTnVtSW5kZXhBdHRycyk7CisJYXV4Q29s b3B0aW9ucyA9IHBhbGxvYzAoc2l6ZW9mKGludDE2KSAqIG5ld0luZm8tPmlpX051bUluZGV4QXR0 cnMpOworCisJLyogRmlsbCB3aXRoICJhbnkgb3BzIiAqLworCWZvciAoaW50IGkgPSAwOyBpIDwg bmV3SW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQorCXsKKwkJYXV4T3BjbGFzc0lkc1tpXSA9 IEFOWV9TVElSX09QU19PSUQ7CisJCWF1eENvbG9wdGlvbnNbaV0gPSAwOworCX0KKworCW5ld0lu ZGV4SWQgPSBpbmRleF9jcmVhdGUoaGVhcFJlbGF0aW9uLAorCQkJCQkJCSAgbmV3TmFtZSwKKwkJ CQkJCQkgIEludmFsaWRPaWQsICAgIC8qIGluZGV4UmVsYXRpb25JZCAqLworCQkJCQkJCSAgSW52 YWxpZE9pZCwgICAgLyogcGFyZW50SW5kZXhSZWxpZCAqLworCQkJCQkJCSAgSW52YWxpZE9pZCwg ICAgLyogcGFyZW50Q29uc3RyYWludElkICovCisJCQkJCQkJICBJbnZhbGlkUmVsRmlsZU51bWJl ciwgLyogcmVsRmlsZU51bWJlciAqLworCQkJCQkJCSAgbmV3SW5mbywKKwkJCQkJCQkgIGluZGV4 Q29sTmFtZXMsCisJCQkJCQkJICBTVElSX0FNX09JRCwKKwkJCQkJCQkgIHRhYmxlc3BhY2VPaWQs CisJCQkJCQkJICBpbmRleFJlbGF0aW9uLT5yZF9pbmRjb2xsYXRpb24sCisJCQkJCQkJICBhdXhP cGNsYXNzSWRzLAorCQkJCQkJCSAgTlVMTCwKKwkJCQkJCQkgIGF1eENvbG9wdGlvbnMsCisJCQkJ CQkJICBOVUxMLAorCQkJCQkJCSAgKERhdHVtKSAwLAorCQkJCQkJCSAgSU5ERVhfQ1JFQVRFX1NL SVBfQlVJTEQgfCBJTkRFWF9DUkVBVEVfQ09OQ1VSUkVOVCB8IElOREVYX0NSRUFURV9BVVhJTElB UlksCisJCQkJCQkJICAwLAorCQkJCQkJCSAgdHJ1ZSwgLyogYWxsb3cgdGFibGUgdG8gYmUgYSBz eXN0ZW0gY2F0YWxvZz8gKi8KKwkJCQkJCQkgIGZhbHNlLCAgICAvKiBpc19pbnRlcm5hbD8gKi8K KwkJCQkJCQkgIE5VTEwpOworCisJLyogQ2xvc2UgdGhlIHJlbGF0aW9ucyB1c2VkIGFuZCBjbGVh biB1cCAqLworCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7CisJUmVsZWFzZVN5 c0NhY2hlKGluZGV4VHVwbGUpOworCisJcmV0dXJuIG5ld0luZGV4SWQ7Cit9CisKIC8qCiAgKiBp bmRleF9jb25jdXJyZW50bHlfYnVpbGQKICAqCkBAIC0yNDUyLDcgKzI2MTUsOCBAQCBCdWlsZElu ZGV4SW5mbyhSZWxhdGlvbiBpbmRleCkKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzcmVhZHks CiAJCQkJCSAgIGZhbHNlLAogCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcs Ci0JCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5k aXN1bmlxdWUpOworCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24gJiYgaW5kZXhT dHJ1Y3QtPmluZGlzdW5pcXVlLAorCQkJCQkgICBpbmRleC0+cmRfcmVsLT5yZWxhbSA9PSBTVElS X0FNX09JRCAvKiBhdXhpbGlhcnkgaWZmIFNUSVIgKi8pOwogCiAJLyogZmlsbCBpbiBhdHRyaWJ1 dGUgbnVtYmVycyAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1BdHRzOyBpKyspCkBAIC0yNTEyLDcg KzI2NzYsOCBAQCBCdWlsZER1bW15SW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4KQogCQkJCQkgICBp bmRleFN0cnVjdC0+aW5kaXNyZWFkeSwKIAkJCQkJICAgZmFsc2UsCiAJCQkJCSAgIGluZGV4LT5y ZF9pbmRhbS0+YW1zdW1tYXJpemluZywKLQkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVz aW9uICYmIGluZGV4U3RydWN0LT5pbmRpc3VuaXF1ZSk7CisJCQkJCSAgIGluZGV4U3RydWN0LT5p bmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUsCisJCQkJCSAgIGluZGV4 LT5yZF9yZWwtPnJlbGFtID09IFNUSVJfQU1fT0lEIC8qIGF1eGlsaWFyeSBpZmYgU1RJUiAqLyk7 CiAKIAkvKiBmaWxsIGluIGF0dHJpYnV0ZSBudW1iZXJzICovCiAJZm9yIChpID0gMDsgaSA8IG51 bUF0dHM7IGkrKykKQEAgLTMyODgsMTIgKzM0NTMsMjEgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKgogICogV2UgZG8gYSBjb25jdXJyZW50IGluZGV4IGJ1 aWxkIGJ5IGZpcnN0IGluc2VydGluZyB0aGUgY2F0YWxvZyBlbnRyeSBmb3IgdGhlCiAgKiBpbmRl eCB2aWEgaW5kZXhfY3JlYXRlKCksIG1hcmtpbmcgaXQgbm90IGluZGlzcmVhZHkgYW5kIG5vdCBp bmRpc3ZhbGlkLgorICogVGhlbiB3ZSBjcmVhdGUgc3BlY2lhbCBhdXhpbGlhcnkgaW5kZXggdGhl IHNhbWUgd2F5LiBJdCBiYXNlZCBvbiBTVElSIEFNLgogICogVGhlbiB3ZSBjb21taXQgb3VyIHRy YW5zYWN0aW9uIGFuZCBzdGFydCBhIG5ldyBvbmUsIHRoZW4gd2Ugd2FpdCBmb3IgYWxsCiAgKiB0 cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0YWJsZSB0byB0 ZXJtaW5hdGUuICBOb3cKLSAqIHdlIGtub3cgdGhhdCBhbnkgc3Vic2VxdWVudGx5LXN0YXJ0ZWQg dHJhbnNhY3Rpb25zIHdpbGwgc2VlIHRoZSBpbmRleCBhbmQKKyAqIHdlIGtub3cgdGhhdCBhbnkg c3Vic2VxdWVudGx5LXN0YXJ0ZWQgdHJhbnNhY3Rpb25zIHdpbGwgc2VlIGluZGV4ZXMgYW5kCiAg KiBob25vciBpdHMgY29uc3RyYWludHMgb24gSE9UIHVwZGF0ZXM7IHNvIHdoaWxlIGV4aXN0aW5n IEhPVC1jaGFpbnMgbWlnaHQKICAqIGJlIGJyb2tlbiB3aXRoIHJlc3BlY3QgdG8gdGhlIGluZGV4 LCBubyBjdXJyZW50bHkgbGl2ZSB0dXBsZSB3aWxsIGhhdmUgYW4KLSAqIGluY29tcGF0aWJsZSBI T1QgdXBkYXRlIGRvbmUgdG8gaXQuICBXZSBub3cgYnVpbGQgdGhlIGluZGV4IG5vcm1hbGx5IHZp YQorICogaW5jb21wYXRpYmxlIEhPVCB1cGRhdGUgZG9uZSB0byBpdC4KKyAqCisgKiBBZnRlciB3 ZSBidWlsZCBhdXhpbGlhcnkgaW5kZXguIEl0IGlzIGZhc3Qgb3BlcmF0aW9uIHdpdGhvdXQgYW55 IGFjdHVhbAorICogdGFibGUgc2Nhbi4gQXMgcmVzdWx0LCB3ZSBoYXZlIGVtcHR5IFNUSVIgaW5k ZXguIFdlIGNvbW1pdCB0cmFuc2FjdGlvbiBhbmQKKyAqIGFnYWluIHdhaXQgZm9yIGFsbCB0cmFu c2FjdGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0YWJsZQorICogdG8g dGVybWluYXRlLiBBdCB0aGF0IG1vbWVudCBhbGwgbmV3IHR1cGxlcyBhcmUgZ29pbmcgdG8gYmUg aW5zZXJ0ZWQgaW50bworICogYXV4aWxpYXJ5IGluZGV4LgorICoKKyAqIFdlIG5vdyBidWlsZCB0 aGUgaW5kZXggbm9ybWFsbHkgdmlhCiAgKiBpbmRleF9idWlsZCgpLCB3aGlsZSBob2xkaW5nIGEg d2VhayBsb2NrIHRoYXQgYWxsb3dzIGNvbmN1cnJlbnQKICAqIGluc2VydC91cGRhdGUvZGVsZXRl LiAgQWxzbywgd2UgaW5kZXggb25seSB0dXBsZXMgdGhhdCBhcmUgdmFsaWQKICAqIGFzIG9mIHRo ZSBzdGFydCBvZiB0aGUgc2NhbiAoc2VlIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4pLCB3aGVyZWFz IGEgbm9ybWFsCkBAIC0zMzAzLDE0ICszNDc3LDE3IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogICogYm9ndXMgdW5pcXVlLWluZGV4IGZhaWx1cmVzIGR1ZSB0 byBjb25jdXJyZW50IFVQREFURXMgKHdlIG1pZ2h0IHNlZQogICogZGlmZmVyZW50IHZlcnNpb25z IG9mIHRoZSBzYW1lIHJvdyBhcyBiZWluZyB2YWxpZCB3aGVuIHdlIHBhc3Mgb3ZlciB0aGVtLAog ICogaWYgd2UgdXNlZCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0pLiAgVGhpcyBsZWF2ZXMgdXMg d2l0aCBhbiBpbmRleCB0aGF0Ci0gKiBkb2VzIG5vdCBjb250YWluIGFueSB0dXBsZXMgYWRkZWQg dG8gdGhlIHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRleC4KKyAqIGRvZXMgbm90IGNvbnRh aW4gYW55IHR1cGxlcyBhZGRlZCB0byB0aGUgdGFibGUgd2hpbGUgd2UgYnVpbHQgdGhlIGluZGV4 CisgKiAoYnV0IHRoZXNlIHR1cGxlcyBjb250YWluZWQgaW4gYXV4aWxpYXJ5IGluZGV4KS4KICAq CiAgKiBOZXh0LCB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXNyZWFkeSIgKGJ1dCBzdGlsbCBub3Qg ImluZGlzdmFsaWQiKSBhbmQKLSAqIGNvbW1pdCB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uIGFuZCBz dGFydCBhIHRoaXJkLiAgQWdhaW4gd2Ugd2FpdCBmb3IgYWxsCisgKiBjb21taXQgdGhlIHRoaXJk IHRyYW5zYWN0aW9uIGFuZCBzdGFydCBhIGZvdXJ0aC4gIEFnYWluIHdlIHdhaXQgZm9yIGFsbAog ICogdHJhbnNhY3Rpb25zIHRoYXQgY291bGQgaGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUg dG8gdGVybWluYXRlLiAgTm93CiAgKiB3ZSBrbm93IHRoYXQgYW55IHN1YnNlcXVlbnRseS1zdGFy dGVkIHRyYW5zYWN0aW9ucyB3aWxsIHNlZSB0aGUgaW5kZXggYW5kCi0gKiBpbnNlcnQgdGhlaXIg bmV3IHR1cGxlcyBpbnRvIGl0LiAgV2UgdGhlbiB0YWtlIGEgbmV3IHJlZmVyZW5jZSBzbmFwc2hv dAotICogd2hpY2ggaXMgcGFzc2VkIHRvIHZhbGlkYXRlX2luZGV4KCkuICBBbnkgdHVwbGVzIHRo YXQgYXJlIHZhbGlkIGFjY29yZGluZworICogaW5zZXJ0IHRoZWlyIG5ldyB0dXBsZXMgaW50byBp dC4gQXQgdGhlIHNhbWUgbW9tZW50IHdlIGNsZWFyICJpbmRpc3JlYWR5IiBmb3IKKyAqIGF1eGls aWFyeSBpbmRleCwgc2luY2UgaXQgaXMgbm8gbW9yZSByZXF1aXJlZCB0byBiZSB1cGRhdGVkLgor ICoKKyAqIFdlIHRoZW4gdGFrZSBhIG5ldyByZWZlcmVuY2Ugc25hcHNob3QsIGFueSB0dXBsZXMg dGhhdCBhcmUgdmFsaWQgYWNjb3JkaW5nCiAgKiB0byB0aGlzIHNuYXAsIGJ1dCBhcmUgbm90IGlu IHRoZSBpbmRleCwgbXVzdCBiZSBhZGRlZCB0byB0aGUgaW5kZXguCiAgKiAoQW55IHR1cGxlcyBj b21taXR0ZWQgbGl2ZSBhZnRlciB0aGUgc25hcCB3aWxsIGJlIGluc2VydGVkIGludG8gdGhlCiAg KiBpbmRleCBieSB0aGVpciBvcmlnaW5hdGluZyB0cmFuc2FjdGlvbi4gIEFueSB0dXBsZXMgY29t bWl0dGVkIGRlYWQgYmVmb3JlCkBAIC0zMzE4LDEyICszNDk1LDE0IEBAIEluZGV4Q2hlY2tFeGNs dXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogdGhhdCBtaWdodCBjYXJlIGFib3V0IHRo ZW0gYmVmb3JlIHdlIG1hcmsgdGhlIGluZGV4IHZhbGlkLikKICAqCiAgKiB2YWxpZGF0ZV9pbmRl eCgpIHdvcmtzIGJ5IGZpcnN0IGdhdGhlcmluZyBhbGwgdGhlIFRJRHMgY3VycmVudGx5IGluIHRo ZQotICogaW5kZXgsIHVzaW5nIGEgYnVsa2RlbGV0ZSBjYWxsYmFjayB0aGF0IGp1c3Qgc3RvcmVz IHRoZSBUSURzIGFuZCBkb2Vzbid0CisgKiBpbmRleGVzLCB1c2luZyBhIGJ1bGtkZWxldGUgY2Fs bGJhY2sgdGhhdCBqdXN0IHN0b3JlcyB0aGUgVElEcyBhbmQgZG9lc24ndAogICogZXZlciBzYXkg ImRlbGV0ZSBpdCIuICAoVGhpcyBzaG91bGQgYmUgZmFzdGVyIHRoYW4gYSBwbGFpbiBpbmRleHNj YW47CiAgKiBhbHNvLCBub3QgYWxsIGluZGV4IEFNcyBzdXBwb3J0IGZ1bGwtaW5kZXggaW5kZXhz Y2FuLikgIFRoZW4gd2Ugc29ydCB0aGUKLSAqIFRJRHMsIGFuZCBmaW5hbGx5IHNjYW4gdGhlIHRh YmxlIGRvaW5nIGEgIm1lcmdlIGpvaW4iIGFnYWluc3QgdGhlIFRJRCBsaXN0Ci0gKiB0byBzZWUg d2hpY2ggdHVwbGVzIGFyZSBtaXNzaW5nIGZyb20gdGhlIGluZGV4LiAgVGh1cyB3ZSB3aWxsIGVu c3VyZSB0aGF0Ci0gKiBhbGwgdHVwbGVzIHZhbGlkIGFjY29yZGluZyB0byB0aGUgcmVmZXJlbmNl IHNuYXBzaG90IGFyZSBpbiB0aGUgaW5kZXguCisgKiBUSURzIG9mIGJvdGggYXV4aWxpYXJ5IGFu ZCB0YXJnZXQgaW5kZXhlcywgYW5kIGRvaW5nIGEgIm1lcmdlIGpvaW4iIGFnYWluc3QKKyAqIHRo ZSBUSUQgbGlzdHMgdG8gc2VlIHdoaWNoIHR1cGxlcyBmcm9tIGF1eGlsaWFyeSBpbmRleCBhcmUg bWlzc2luZyBmcm9tIHRoZQorICogdGFyZ2V0IGluZGV4LiAgVGh1cyB3ZSB3aWxsIGVuc3VyZSB0 aGF0IGFsbCB0dXBsZXMgdmFsaWQgYWNjb3JkaW5nIHRvIHRoZQorICogcmVmZXJlbmNlIHNuYXBz aG90IGFyZSBpbiB0aGUgaW5kZXguIE5vdGljZSB3ZSBuZWVkIHRvIGRvIGJ1bGtkZWxldGUgaW4g dGhlCisgKiBwYXJ0aWN1bGFyIG9yZGVyOiBhdXhpbGlhcnkgZmlyc3QsIHRhcmdldCBsYXN0Lgog ICoKICAqIEJ1aWxkaW5nIGEgdW5pcXVlIGluZGV4IHRoaXMgd2F5IGlzIHRyaWNreTogd2UgbWln aHQgdHJ5IHRvIGluc2VydCBhCiAgKiB0dXBsZSB0aGF0IGlzIGFscmVhZHkgZGVhZCBvciBpcyBp biBwcm9jZXNzIG9mIGJlaW5nIGRlbGV0ZWQsIGFuZCB3ZQpAQCAtMzM0MSwyMiArMzUyMCwyNiBA QCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIG5vdCBpbmRl eCkuICBUaGVuIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3ZhbGlkIiBhbmQgY29tbWl0LiAgU3Vi c2VxdWVudAogICogdHJhbnNhY3Rpb25zIHdpbGwgYmUgYWJsZSB0byB1c2UgaXQgZm9yIHF1ZXJp ZXMuCiAgKgotICogRG9pbmcgdHdvIGZ1bGwgdGFibGUgc2NhbnMgaXMgYSBicnV0ZS1mb3JjZSBz dHJhdGVneS4gIFdlIGNvdWxkIHRyeSB0byBiZQotICogY2xldmVyZXIsIGVnIHN0b3JpbmcgbmV3 IHR1cGxlcyBpbiBhIHNwZWNpYWwgYXJlYSBvZiB0aGUgdGFibGUgKHBlcmhhcHMKLSAqIG1ha2lu ZyB0aGUgdGFibGUgYXBwZW5kLW9ubHkgYnkgc2V0dGluZyB1c2VfZnNtKS4gIEhvd2V2ZXIgdGhh dCB3b3VsZAotICogYWRkIHlldCBtb3JlIGxvY2tpbmcgaXNzdWVzLgorICogQWxzbywgc29tZSBh Y3Rpb25zIHRvIGNvbmN1cnJlbnQgZHJvcCB0aGUgYXV4aWxpYXJ5IGluZGV4IGFyZSBwZXJmb3Jt ZWQuCiAgKi8KIHZvaWQKLXZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBT bmFwc2hvdCBzbmFwc2hvdCkKK3ZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElk LCBPaWQgYXV4SW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiB7CiAJUmVsYXRpb24JaGVhcFJl bGF0aW9uLAotCQkJCWluZGV4UmVsYXRpb247CisJCQkJaW5kZXhSZWxhdGlvbiwKKwkJCQlhdXhJ bmRleFJlbGF0aW9uOwogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKLQlJbmRleFZhY3V1bUluZm8g aXZpbmZvOwotCVZhbGlkYXRlSW5kZXhTdGF0ZSBzdGF0ZTsKKwlJbmRleFZhY3V1bUluZm8gaXZp bmZvLCBhdXhpdmluZm87CisJVmFsaWRhdGVJbmRleFN0YXRlIHN0YXRlLCBhdXhTdGF0ZTsKIAlP aWQJCQlzYXZlX3VzZXJpZDsKIAlpbnQJCQlzYXZlX3NlY19jb250ZXh0OwogCWludAkJCXNhdmVf bmVzdGxldmVsOworCS8qIFVzZSA4MCUgb2YgbWFpbnRlbmFuY2Vfd29ya19tZW0gdG8gdGFyZ2V0 IGluZGV4IHNvcnRpbmcgYW5kCisJICogMTAlIHJlc3QgZm9yIGF1eGlsaWFyeS4KKwkgKgorCSAq IFJlc3QgMTAlIHdpbGwgYmUgdXNlZCBmb3IgdHVwbGVzdG9yZSBsYXRlci4gKi8KKwlpbnQ2NAkJ bWFpbl93b3JrX21lbV9wYXJ0ID0gKGludDY0KSBtYWludGVuYW5jZV93b3JrX21lbSAqIDggLyAx MDsKKwlpbnQJCQlhdXhfd29ya19tZW1fcGFydCA9IG1haW50ZW5hbmNlX3dvcmtfbWVtIC8gMTA7 CiAKIAl7CiAJCWNvbnN0IGludAlwcm9ncmVzc19pbmRleFtdID0gewpAQCAtMzM4OSw2ICszNTcy LDcgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNu YXBzaG90KQogCVJlc3RyaWN0U2VhcmNoUGF0aCgpOwogCiAJaW5kZXhSZWxhdGlvbiA9IGluZGV4 X29wZW4oaW5kZXhJZCwgUm93RXhjbHVzaXZlTG9jayk7CisJYXV4SW5kZXhSZWxhdGlvbiA9IGlu ZGV4X29wZW4oYXV4SW5kZXhJZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAkvKgogCSAqIEZldGNo IGluZm8gbmVlZGVkIGZvciBpbmRleF9pbnNlcnQuICAoWW91IG1pZ2h0IHRoaW5rIHRoaXMgc2hv dWxkIGJlCkBAIC0zNDEzLDE1ICszNTk3LDU1IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQs IE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAlpdmluZm8uc3RyYXRlZ3kgPSBOVUxM OwogCWl2aW5mby52YWxpZGF0ZV9pbmRleCA9IHRydWU7CiAKKwkvKgorCSAqIENvcHkgYWxsIGlu Zm8gdG8gYXV4aWxpYXJ5IGluZm8sIGNoYW5naW5nIG9ubHkgcmVsYXRpb24uCisJICovCisJYXV4 aXZpbmZvID0gaXZpbmZvOworCWF1eGl2aW5mby5pbmRleCA9IGF1eEluZGV4UmVsYXRpb247CisK IAkvKgogCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZvciB0aGUgc29ydCwgcmF0aGVy IHRoYW4gZGlyZWN0bHkgc29ydGluZwogCSAqIGl0ZW0gcG9pbnRlcnMuICBUaGlzIGNhbiBiZSBz aWduaWZpY2FudGx5IGZhc3RlciwgcHJpbWFyaWx5IGJlY2F1c2UgVElECiAJICogaXMgYSBwYXNz LWJ5LXJlZmVyZW5jZSB0eXBlIG9uIGFsbCBwbGF0Zm9ybXMsIHdoZXJlYXMgaW50OCBpcwogCSAq IHBhc3MtYnktdmFsdWUgb24gbW9zdCBwbGF0Zm9ybXMuCiAJICovCisJYXV4U3RhdGUudHVwbGVz b3J0ID0gdHVwbGVzb3J0X2JlZ2luX2RhdHVtKElOVDhPSUQsIEludDhMZXNzT3BlcmF0b3IsCisJ CQkJCQkJCQkJICAgSW52YWxpZE9pZCwgZmFsc2UsCisJCQkJCQkJCQkJICAgYXV4X3dvcmtfbWVt X3BhcnQsCisJCQkJCQkJCQkJICAgTlVMTCwgVFVQTEVTT1JUX05PTkUpOworCWF1eFN0YXRlLmh0 dXBzID0gYXV4U3RhdGUuaXR1cHMgPSBhdXhTdGF0ZS50dXBzX2luc2VydGVkID0gMDsKKworCSh2 b2lkKSBpbmRleF9idWxrX2RlbGV0ZSgmYXV4aXZpbmZvLCBOVUxMLAorCQkJCQkJCSB2YWxpZGF0 ZV9pbmRleF9jYWxsYmFjaywgJmF1eFN0YXRlKTsKKwkvKiBJZiBhdXggaW5kZXggaXMgZW1wdHks IG1lcmdlIG1heSBiZSBza2lwcGVkICovCisJaWYgKGF1eFN0YXRlLml0dXBzID09IDApCisJewor CQl0dXBsZXNvcnRfZW5kKGF1eFN0YXRlLnR1cGxlc29ydCk7CisJCWF1eFN0YXRlLnR1cGxlc29y dCA9IE5VTEw7CisKKwkJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBp bmRleCBmdW5jdGlvbnMgKi8KKwkJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7 CisKKwkJLyogUmVzdG9yZSB1c2VyaWQgYW5kIHNlY3VyaXR5IGNvbnRleHQgKi8KKwkJU2V0VXNl cklkQW5kU2VjQ29udGV4dChzYXZlX3VzZXJpZCwgc2F2ZV9zZWNfY29udGV4dCk7CisKKwkJLyog Q2xvc2UgcmVscywgYnV0IGtlZXAgbG9ja3MgKi8KKwkJaW5kZXhfY2xvc2UoYXV4SW5kZXhSZWxh dGlvbiwgTm9Mb2NrKTsKKwkJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKKwkJ dGFibGVfY2xvc2UoaGVhcFJlbGF0aW9uLCBOb0xvY2spOworCisJCVB1c2hBY3RpdmVTbmFwc2hv dChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlsaW1pdFhtaW4gPSBHZXRBY3RpdmVTbmFw c2hvdCgpLT54bWluOworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQlJbnZhbGlkYXRlQ2F0YWxv Z1NuYXBzaG90KCk7CisKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKKwkJcmV0dXJuIGxpbWl0WG1pbjsKKwl9CisKIAlzdGF0ZS50dXBsZXNvcnQgPSB0dXBs ZXNvcnRfYmVnaW5fZGF0dW0oSU5UOE9JRCwgSW50OExlc3NPcGVyYXRvciwKIAkJCQkJCQkJCQkJ SW52YWxpZE9pZCwgZmFsc2UsCi0JCQkJCQkJCQkJCW1haW50ZW5hbmNlX3dvcmtfbWVtLAorCQkJ CQkJCQkJCQkoaW50KSBtYWluX3dvcmtfbWVtX3BhcnQsCiAJCQkJCQkJCQkJCU5VTEwsIFRVUExF U09SVF9OT05FKTsKIAlzdGF0ZS5odHVwcyA9IHN0YXRlLml0dXBzID0gc3RhdGUudHVwc19pbnNl cnRlZCA9IDA7CiAKQEAgLTM0NDQsMjcgKzM2NjgsMzAgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhl YXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCQlwZ3N0YXRfcHJvZ3Jlc3Nf dXBkYXRlX211bHRpX3BhcmFtKDMsIHByb2dyZXNzX2luZGV4LCBwcm9ncmVzc192YWxzKTsKIAl9 CiAJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KHN0YXRlLnR1cGxlc29ydCk7CisJdHVwbGVzb3J0X3Bl cmZvcm1zb3J0KGF1eFN0YXRlLnR1cGxlc29ydCk7CiAKIAkvKgotCSAqIE5vdyBzY2FuIHRoZSBo ZWFwIGFuZCAibWVyZ2UiIGl0IHdpdGggdGhlIGluZGV4CisJICogTm93IG1lcmdlIGJvdGggaW5k ZXhlcwogCSAqLwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX1RB QkxFU0NBTik7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURY TUVSR0UpOwogCXRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4oaGVhcFJlbGF0aW9uLAogCQkJCQkJ CSAgaW5kZXhSZWxhdGlvbiwKIAkJCQkJCQkgIGluZGV4SW5mbywKIAkJCQkJCQkgIHNuYXBzaG90 LAotCQkJCQkJCSAgJnN0YXRlKTsKKwkJCQkJCQkgICZzdGF0ZSwKKwkJCQkJCQkgICZhdXhTdGF0 ZSk7CiAKLQkvKiBEb25lIHdpdGggdHVwbGVzb3J0IG9iamVjdCAqLwotCXR1cGxlc29ydF9lbmQo c3RhdGUudHVwbGVzb3J0KTsKKwkvKiBUdXBsZSBzb3J0IGNsb3NlZCBieSB0YWJsZV9pbmRleF92 YWxpZGF0ZV9zY2FuICovCisJQXNzZXJ0KHN0YXRlLnR1cGxlc29ydCA9PSBOVUxMICYmIGF1eFN0 YXRlLnR1cGxlc29ydCA9PSBOVUxMKTsKIAogCS8qIE1ha2Ugc3VyZSB0byByZWxlYXNlIHJlc291 cmNlcyBjYWNoZWQgaW4gaW5kZXhJbmZvIChpZiBuZWVkZWQpLiAqLwogCWluZGV4X2luc2VydF9j bGVhbnVwKGluZGV4UmVsYXRpb24sIGluZGV4SW5mbyk7CiAKIAllbG9nKERFQlVHMiwKLQkJICJ2 YWxpZGF0ZV9pbmRleCBmb3VuZCAlLjBmIGhlYXAgdHVwbGVzLCAlLjBmIGluZGV4IHR1cGxlczsg aW5zZXJ0ZWQgJS4wZiBtaXNzaW5nIHR1cGxlcyIsCi0JCSBzdGF0ZS5odHVwcywgc3RhdGUuaXR1 cHMsIHN0YXRlLnR1cHNfaW5zZXJ0ZWQpOworCQkgInZhbGlkYXRlX2luZGV4IGZldGNoZWQgJS4w ZiBoZWFwIHR1cGxlcywgJS4wZiBpbmRleCB0dXBsZXM7IgorCQkJCQkJIiAlLjBmIGF1eCBpbmRl eCB0dXBsZXM7IGluc2VydGVkICUuMGYgbWlzc2luZyB0dXBsZXMiLAorCQkgc3RhdGUuaHR1cHMs IHN0YXRlLml0dXBzLCBhdXhTdGF0ZS5pdHVwcywgc3RhdGUudHVwc19pbnNlcnRlZCk7CiAKIAkv KiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucyAq LwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOwpAQCAtMzQ3Myw2ICszNzAw LDcgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNu YXBzaG90KQogCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQsIHNhdmVfc2VjX2Nv bnRleHQpOwogCiAJLyogQ2xvc2UgcmVscywgYnV0IGtlZXAgbG9ja3MgKi8KKwlpbmRleF9jbG9z ZShhdXhJbmRleFJlbGF0aW9uLCBOb0xvY2spOwogCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24s IE5vTG9jayk7CiAJdGFibGVfY2xvc2UoaGVhcFJlbGF0aW9uLCBOb0xvY2spOwogfQpAQCAtMzUz Myw2ICszNzYxLDExIEBAIGluZGV4X3NldF9zdGF0ZV9mbGFncyhPaWQgaW5kZXhJZCwgSW5kZXhT dGF0ZUZsYWdzQWN0aW9uIGFjdGlvbikKIAkJCUFzc2VydCghaW5kZXhGb3JtLT5pbmRpc3ZhbGlk KTsKIAkJCWluZGV4Rm9ybS0+aW5kaXN2YWxpZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBJ TkRFWF9EUk9QX0NMRUFSX1JFQURZOgorCQkJLyogQ2xlYXIgaW5kaXNyZWFkeSBkdXJpbmcgYSBD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIHNlcXVlbmNlICovCisJCQlBc3NlcnQoIWluZGV4Rm9y bS0+aW5kaXN2YWxpZCk7CisJCQlpbmRleEZvcm0tPmluZGlzcmVhZHkgPSBmYWxzZTsKKwkJCWJy ZWFrOwogCQljYXNlIElOREVYX0RST1BfQ0xFQVJfVkFMSUQ6CiAKIAkJCS8qCkBAIC0zODA0LDYg KzQwMzcsMTMgQEAgcmVpbmRleF9pbmRleChjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIGlu ZGV4SWQsCiAJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uU3RyYXRzID0gTlVMTDsKIAl9CiAKKwkv KiBBdXhpbGlhcnkgaW5kZXhlcyBhcmUgbm90IGFsbG93ZWQgdG8gYmUgcmVidWlsdCAqLworCWlm IChpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBlcnJtc2coInJlaW5kZXggb2Yg YXV4aWxpYXJ5IGluZGV4IFwiJXNcIiBub3Qgc3VwcG9ydGVkIiwKKwkJCQkJUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUoaVJlbCkpKSk7CisKIAkvKiBTdXBwcmVzcyB1c2Ugb2YgdGhlIHRhcmdldCBp bmRleCB3aGlsZSByZWJ1aWxkaW5nIGl0ICovCiAJU2V0UmVpbmRleFByb2Nlc3NpbmcoaGVhcElk LCBpbmRleElkKTsKIApAQCAtNDA0Niw2ICs0Mjg2LDcgQEAgcmVpbmRleF9yZWxhdGlvbihjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiAJewogCQlPaWQJCQlp bmRleE9pZCA9IGxmaXJzdF9vaWQoaW5kZXhJZCk7CiAJCU9pZAkJCWluZGV4TmFtZXNwYWNlSWQg PSBnZXRfcmVsX25hbWVzcGFjZShpbmRleE9pZCk7CisJCU9pZAkJCWluZGV4QW0gPSBnZXRfcmVs X3JlbGFtKGluZGV4T2lkKTsKIAogCQkvKgogCQkgKiBTa2lwIGFueSBpbnZhbGlkIGluZGV4ZXMg b24gYSBUT0FTVCB0YWJsZS4gIFRoZXNlIGNhbiBvbmx5IGJlCkBAIC00MDcxLDYgKzQzMTIsMTgg QEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGlkLCBp bnQgZmxhZ3MsCiAJCQljb250aW51ZTsKIAkJfQogCisJCWlmIChpbmRleEFtID09IFNUSVJfQU1f T0lEKQorCQl7CisJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygic2tpcHBpbmcgcmVpbmRleCBvZiBh dXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwKKwkJCQkJCQlnZXRfbmFtZXNwYWNlX25hbWUoaW5k ZXhOYW1lc3BhY2VJZCksCisJCQkJCQkJZ2V0X3JlbF9uYW1lKGluZGV4T2lkKSkpKTsKKwkJCWlm IChmbGFncyAmIFJFSU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRSkKKwkJCQlSZW1vdmVSZWlu ZGV4UGVuZGluZyhpbmRleE9pZCk7CisJCQljb250aW51ZTsKKwkJfQorCiAJCXJlaW5kZXhfaW5k ZXgoc3RtdCwgaW5kZXhPaWQsICEoZmxhZ3MgJiBSRUlOREVYX1JFTF9DSEVDS19DT05TVFJBSU5U UyksCiAJCQkJCSAgcGVyc2lzdGVuY2UsIHBhcmFtcyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbAppbmRleCAwOGY3ODBhMmU2My4uYjIwZGVjZDEyMDQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEyODMsMTYgKzEyODMsMTcgQEAgQ1JFQVRFIFZJRVcg cGdfc3RhdF9wcm9ncmVzc19jcmVhdGVfaW5kZXggQVMKICAgICAgICAgICAgICAgICAgICAgICBF TkQgQVMgY29tbWFuZCwKICAgICAgICAgQ0FTRSBTLnBhcmFtMTAgV0hFTiAwIFRIRU4gJ2luaXRp YWxpemluZycKICAgICAgICAgICAgICAgICAgICAgICAgV0hFTiAxIFRIRU4gJ3dhaXRpbmcgZm9y IHdyaXRlcnMgYmVmb3JlIGJ1aWxkJwotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDIgVEhF TiAnYnVpbGRpbmcgaW5kZXgnIHx8CisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMiBUSEVO ICd3YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXgnCisgICAgICAgICAg ICAgICAgICAgICAgIFdIRU4gMyBUSEVOICdidWlsZGluZyBpbmRleCcgfHwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIENPQUxFU0NFKCgnOiAnIHx8IHBnX2luZGV4YW1fcHJvZ3Jlc3NfcGhh c2VuYW1lKFMucGFyYW05OjpvaWQsIFMucGFyYW0xMSkpLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJycpCi0gICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMyBUSEVOICd3 YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9yZSB2YWxpZGF0aW9uJwotICAgICAgICAgICAgICAgICAg ICAgICBXSEVOIDQgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc2Nhbm5pbmcgaW5kZXgnCi0gICAg ICAgICAgICAgICAgICAgICAgIFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzb3J0aW5n IHR1cGxlcycKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2luZGV4IHZhbGlk YXRpb246IHNjYW5uaW5nIHRhYmxlJwotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDcgVEhF TiAnd2FpdGluZyBmb3Igb2xkIHNuYXBzaG90cycKLSAgICAgICAgICAgICAgICAgICAgICAgV0hF TiA4IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIG1hcmtpbmcgZGVhZCcKLSAgICAg ICAgICAgICAgICAgICAgICAgV0hFTiA5IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3Jl IGRyb3BwaW5nJworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDQgVEhFTiAnd2FpdGluZyBm b3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbicKKyAgICAgICAgICAgICAgICAgICAgICAgV0hF TiA1IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIGluZGV4JworICAgICAgICAgICAg ICAgICAgICAgICBXSEVOIDYgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc29ydGluZyB0dXBsZXMn CisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNyBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBt ZXJnaW5nIGluZGV4ZXMnCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gOCBUSEVOICd3YWl0 aW5nIGZvciBvbGQgc25hcHNob3RzJworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDkgVEhF TiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUgbWFya2luZyBkZWFkJworICAgICAgICAgICAg ICAgICAgICAgICBXSEVOIDEwIFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRyb3Bw aW5nJwogICAgICAgICAgICAgICAgICAgICAgICBFTkQgYXMgcGhhc2UsCiAgICAgICAgIFMucGFy YW00IEFTIGxvY2tlcnNfdG90YWwsCiAgICAgICAgIFMucGFyYW01IEFTIGxvY2tlcnNfZG9uZSwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggZTA2NTgwNGNmMjEuLjM0NjZiZDEzZTRlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTgyLDYgKzE4Miw3IEBAIENoZWNrSW5kZXhD b21wYXRpYmxlKE9pZCBvbGRJZCwKIAkJCQkJIGJvb2wgaXNXaXRob3V0T3ZlcmxhcHMpCiB7CiAJ Ym9vbAkJaXNjb25zdHJhaW50OworCWJvb2wJCWlzYXV4aWxpYXJ5OwogCU9pZAkJICAgKnR5cGVJ ZHM7CiAJT2lkCQkgICAqY29sbGF0aW9uSWRzOwogCU9pZAkJICAgKm9wY2xhc3NJZHM7CkBAIC0y MzIsNiArMjMzLDcgQEAgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCiAJYW1jYW5v cmRlciA9IGFtUm91dGluZS0+YW1jYW5vcmRlcjsKIAlhbXN1bW1hcml6aW5nID0gYW1Sb3V0aW5l LT5hbXN1bW1hcml6aW5nOworCWlzYXV4aWxpYXJ5ID0gYWNjZXNzTWV0aG9kSWQgPT0gU1RJUl9B TV9PSUQ7CiAKIAkvKgogCSAqIENvbXB1dGUgdGhlIG9wZXJhdG9yIGNsYXNzZXMsIGNvbGxhdGlv bnMsIGFuZCBleGNsdXNpb24gb3BlcmF0b3JzIGZvcgpAQCAtMjQzLDcgKzI0NSw4IEBAIENoZWNr SW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAkgKi8KIAlpbmRleEluZm8gPSBtYWtlSW5kZXhJ bmZvKG51bWJlck9mQXR0cmlidXRlcywgbnVtYmVyT2ZBdHRyaWJ1dGVzLAogCQkJCQkJCSAgYWNj ZXNzTWV0aG9kSWQsIE5JTCwgTklMLCBmYWxzZSwgZmFsc2UsCi0JCQkJCQkJICBmYWxzZSwgZmFs c2UsIGFtc3VtbWFyaXppbmcsIGlzV2l0aG91dE92ZXJsYXBzKTsKKwkJCQkJCQkgIGZhbHNlLCBm YWxzZSwgYW1zdW1tYXJpemluZywKKwkJCQkJCQkgIGlzV2l0aG91dE92ZXJsYXBzLCBpc2F1eGls aWFyeSk7CiAJdHlwZUlkcyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7 CiAJY29sbGF0aW9uSWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsK IAlvcGNsYXNzSWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKQEAg LTU1Myw2ICs1NTYsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIHsKIAlib29sCQljb25j dXJyZW50OwogCWNoYXIJICAgKmluZGV4UmVsYXRpb25OYW1lOworCWNoYXIJICAgKmF1eEluZGV4 UmVsYXRpb25OYW1lID0gTlVMTDsKIAljaGFyCSAgICphY2Nlc3NNZXRob2ROYW1lOwogCU9pZAkJ ICAgKnR5cGVJZHM7CiAJT2lkCQkgICAqY29sbGF0aW9uSWRzOwpAQCAtNTYyLDYgKzU2Niw3IEBA IERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCU9pZAkJCW5hbWVzcGFjZUlkOwogCU9pZAkJCXRh Ymxlc3BhY2VJZDsKIAlPaWQJCQljcmVhdGVkQ29uc3RyYWludElkID0gSW52YWxpZE9pZDsKKwlP aWQJCQlhdXhJbmRleFJlbGF0aW9uSWQgPSBJbnZhbGlkT2lkOwogCUxpc3QJICAgKmluZGV4Q29s TmFtZXM7CiAJTGlzdAkgICAqYWxsSW5kZXhQYXJhbXM7CiAJUmVsYXRpb24JcmVsOwpAQCAtNTgz LDYgKzU4OCw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCWludAkJCW51bWJlck9mS2V5 QXR0cmlidXRlczsKIAlUcmFuc2FjdGlvbklkIGxpbWl0WG1pbjsKIAlPYmplY3RBZGRyZXNzIGFk ZHJlc3M7CisJT2JqZWN0QWRkcmVzcyBhdXhBZGRyZXNzOwogCUxvY2tSZWxJZAloZWFwcmVsaWQ7 CiAJTE9DS1RBRwkJaGVhcGxvY2t0YWc7CiAJTE9DS01PREUJbG9ja21vZGU7CkBAIC04MzMsNiAr ODM5LDE1IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkJCQkJCQlzdG10LT5leGNs dWRlT3BOYW1lcywKIAkJCQkJCQkJCQkJc3RtdC0+cHJpbWFyeSwKIAkJCQkJCQkJCQkJc3RtdC0+ aXNjb25zdHJhaW50KTsKKwkvKgorCSAqIFNlbGVjdCBuYW1lIGZvciBhdXhpbGlhcnkgaW5kZXgK KwkgKi8KKwlpZiAoY29uY3VycmVudCkKKwkJYXV4SW5kZXhSZWxhdGlvbk5hbWUgPSBDaG9vc2VS ZWxhdGlvbk5hbWUoaW5kZXhSZWxhdGlvbk5hbWUsCisJCQkJCQkJCQkJCQkgIE5VTEwsCisJCQkJ CQkJCQkJCQkgICJjY2F1eCIsCisJCQkJCQkJCQkJCQkgIG5hbWVzcGFjZUlkLAorCQkJCQkJCQkJ CQkJICBmYWxzZSk7CiAKIAkvKgogCSAqIGxvb2sgdXAgdGhlIGFjY2VzcyBtZXRob2QsIHZlcmlm eSBpdCBjYW4gaGFuZGxlIHRoZSByZXF1ZXN0ZWQgZmVhdHVyZXMKQEAgLTkyOCw3ICs5NDMsOCBA QCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJCQkJCQkgICFjb25jdXJyZW50LAogCQkJCQkJ CSAgY29uY3VycmVudCwKIAkJCQkJCQkgIGFtaXNzdW1tYXJpemluZywKLQkJCQkJCQkgIHN0bXQt Pmlzd2l0aG91dG92ZXJsYXBzKTsKKwkJCQkJCQkgIHN0bXQtPmlzd2l0aG91dG92ZXJsYXBzLAor CQkJCQkJCSAgZmFsc2UpOwogCiAJdHlwZUlkcyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9m QXR0cmlidXRlcyk7CiAJY29sbGF0aW9uSWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZB dHRyaWJ1dGVzKTsKQEAgLTE1OTMsNiArMTYwOSwxNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJ ZCwKIAkJcmV0dXJuIGFkZHJlc3M7CiAJfQogCisJLyoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJl bnQgYnVpbGQgLSBjcmVhdGUgYXV4aWxpYXJ5IGluZGV4IHJlY29yZC4KKwkgKi8KKwlpZiAoY29u Y3VycmVudCkKKwl7CisJCWF1eEluZGV4UmVsYXRpb25JZCA9IGluZGV4X2NvbmN1cnJlbnRseV9j cmVhdGVfYXV4KHJlbCwgaW5kZXhSZWxhdGlvbklkLAorCQkJCQkJCQkJCQl0YWJsZXNwYWNlSWQs IGF1eEluZGV4UmVsYXRpb25OYW1lKTsKKwkJT2JqZWN0QWRkcmVzc1NldChhdXhBZGRyZXNzLCBS ZWxhdGlvblJlbGF0aW9uSWQsIGF1eEluZGV4UmVsYXRpb25JZCk7CisJfQorCiAJQXRFT1hhY3Rf R1VDKGZhbHNlLCByb290X3NhdmVfbmVzdGxldmVsKTsKIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0 KHJvb3Rfc2F2ZV91c2VyaWQsIHJvb3Rfc2F2ZV9zZWNfY29udGV4dCk7CiAKQEAgLTE2MjEsMTEg KzE2NDcsMTEgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJLyoKIAkgKiBGb3IgYSBjb25j dXJyZW50IGJ1aWxkLCBpdCdzIGltcG9ydGFudCB0byBtYWtlIHRoZSBjYXRhbG9nIGVudHJpZXMK IAkgKiB2aXNpYmxlIHRvIG90aGVyIHRyYW5zYWN0aW9ucyBiZWZvcmUgd2Ugc3RhcnQgdG8gYnVp bGQgdGhlIGluZGV4LiBUaGF0Ci0JICogd2lsbCBwcmV2ZW50IHRoZW0gZnJvbSBtYWtpbmcgaW5j b21wYXRpYmxlIEhPVCB1cGRhdGVzLiAgVGhlIG5ldyBpbmRleAotCSAqIHdpbGwgYmUgbWFya2Vk IG5vdCBpbmRpc3JlYWR5IGFuZCBub3QgaW5kaXN2YWxpZCwgc28gdGhhdCBubyBvbmUgZWxzZQot CSAqIHRyaWVzIHRvIGVpdGhlciBpbnNlcnQgaW50byBpdCBvciB1c2UgaXQgZm9yIHF1ZXJpZXMu CisJICogd2lsbCBwcmV2ZW50IHRoZW0gZnJvbSBtYWtpbmcgaW5jb21wYXRpYmxlIEhPVCB1cGRh dGVzLiBOZXcgaW5kZXhlcworCSAqIChtYWluIGFuZCBhdXhpbGlhcnkpIHdpbGwgYmUgbWFya2Vk IG5vdCBpbmRpc3JlYWR5IGFuZCBub3QgaW5kaXN2YWxpZCwKKwkgKiBzbyB0aGF0IG5vIG9uZSBl bHNlIHRyaWVzIHRvIGVpdGhlciBpbnNlcnQgaW50byBpdCBvciB1c2UgaXQgZm9yIHF1ZXJpZXMu CiAJICoKLQkgKiBXZSBtdXN0IGNvbW1pdCBvdXIgY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0 IHRoZSBpbmRleCBiZWNvbWVzCisJICogV2UgbXVzdCBjb21taXQgb3VyIGN1cnJlbnQgdHJhbnNh Y3Rpb24gc28gdGhhdCB0aGUgaW5kZXhlcyBiZWNvbWVzCiAJICogdmlzaWJsZTsgdGhlbiBzdGFy dCBhbm90aGVyLiAgTm90ZSB0aGF0IGFsbCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIHdlIGp1c3QKIAkg KiBidWlsdCBhcmUgbG9zdCBpbiB0aGUgY29tbWl0LiAgVGhlIG9ubHkgZGF0YSB3ZSBrZWVwIHBh c3QgaGVyZSBhcmUgdGhlCiAJICogcmVsYXRpb24gSURzLgpAQCAtMTYzNSw3ICsxNjYxLDcgQEAg RGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogY2Fubm90IGJsb2NrLCBldmVuIGlmIHNvbWVv bmUgZWxzZSBpcyB3YWl0aW5nIGZvciBhY2Nlc3MsIGJlY2F1c2Ugd2UKIAkgKiBhbHJlYWR5IGhh dmUgdGhlIHNhbWUgbG9jayB3aXRoaW4gb3VyIHRyYW5zYWN0aW9uLgogCSAqCi0JICogTm90ZTog d2UgZG9uJ3QgY3VycmVudGx5IGJvdGhlciB3aXRoIGEgc2Vzc2lvbiBsb2NrIG9uIHRoZSBpbmRl eCwKKwkgKiBOb3RlOiB3ZSBkb24ndCBjdXJyZW50bHkgYm90aGVyIHdpdGggYSBzZXNzaW9uIGxv Y2sgb24gdGhlIGluZGV4ZXMsCiAJICogYmVjYXVzZSB0aGVyZSBhcmUgbm8gb3BlcmF0aW9ucyB0 aGF0IGNvdWxkIGNoYW5nZSBpdHMgc3RhdGUgd2hpbGUgd2UKIAkgKiBob2xkIGxvY2sgb24gdGhl IHBhcmVudCB0YWJsZS4gIFRoaXMgbWlnaHQgbmVlZCB0byBjaGFuZ2UgbGF0ZXIuCiAJICovCkBA IC0xNjc0LDcgKzE3MDAsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiB3aXRoIHRo ZSBvbGQgbGlzdCBvZiBpbmRleGVzLiAgVXNlIFNoYXJlTG9jayB0byBjb25zaWRlciBydW5uaW5n CiAJICogdHJhbnNhY3Rpb25zIHRoYXQgaG9sZCBsb2NrcyB0aGF0IHBlcm1pdCB3cml0aW5nIHRv IHRoZSB0YWJsZS4gIE5vdGUgd2UKIAkgKiBkbyBub3QgbmVlZCB0byB3b3JyeSBhYm91dCB4YWN0 cyB0aGF0IG9wZW4gdGhlIHRhYmxlIGZvciB3cml0aW5nIGFmdGVyCi0JICogdGhpcyBwb2ludDsg dGhleSB3aWxsIHNlZSB0aGUgbmV3IGluZGV4IHdoZW4gdGhleSBvcGVuIGl0LgorCSAqIHRoaXMg cG9pbnQ7IHRoZXkgd2lsbCBzZWUgdGhlIG5ldyBpbmRleGVzIHdoZW4gdGhleSBvcGVuIGl0Lgog CSAqCiAJICogTm90ZTogdGhlIHJlYXNvbiB3ZSB1c2UgYWN0dWFsIGxvY2sgYWNxdWlzaXRpb24g aGVyZSwgcmF0aGVyIHRoYW4ganVzdAogCSAqIGNoZWNraW5nIHRoZSBQcm9jQXJyYXkgYW5kIHNs ZWVwaW5nLCBpcyB0aGF0IGRlYWRsb2NrIGlzIHBvc3NpYmxlIGlmCkBAIC0xNjg2LDE0ICsxNzEy LDQ0IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCiAJLyoKIAkgKiBBdCB0aGlzIG1vbWVu dCB3ZSBhcmUgc3VyZSB0aGF0IHRoZXJlIGFyZSBubyB0cmFuc2FjdGlvbnMgd2l0aCB0aGUKLQkg KiB0YWJsZSBvcGVuIGZvciB3cml0ZSB0aGF0IGRvbid0IGhhdmUgdGhpcyBuZXcgaW5kZXggaW4g dGhlaXIgbGlzdCBvZgorCSAqIHRhYmxlIG9wZW4gZm9yIHdyaXRlIHRoYXQgZG9uJ3QgaGF2ZSB0 aGlzIG5ldyBpbmRleGVzIGluIHRoZWlyIGxpc3Qgb2YKIAkgKiBpbmRleGVzLiAgV2UgaGF2ZSB3 YWl0ZWQgb3V0IGFsbCB0aGUgZXhpc3RpbmcgdHJhbnNhY3Rpb25zIGFuZCBhbnkgbmV3Ci0JICog dHJhbnNhY3Rpb24gd2lsbCBoYXZlIHRoZSBuZXcgaW5kZXggaW4gaXRzIGxpc3QsIGJ1dCB0aGUg aW5kZXggaXMgc3RpbGwKLQkgKiBtYXJrZWQgYXMgIm5vdC1yZWFkeS1mb3ItaW5zZXJ0cyIuICBU aGUgaW5kZXggaXMgY29uc3VsdGVkIHdoaWxlCisJICogdHJhbnNhY3Rpb24gd2lsbCBoYXZlIGJv dGggbmV3IGluZGV4ZXMgaW4gaXRzIGxpc3QsIGJ1dCBpbmRleGVzIGFyZSBzdGlsbAorCSAqIG1h cmtlZCBhcyAibm90LXJlYWR5LWZvci1pbnNlcnRzIi4gVGhlIGluZGV4ZXMgYXJlIGNvbnN1bHRl ZCB3aGlsZQogCSAqIGRlY2lkaW5nIEhPVC1zYWZldHkgdGhvdWdoLiAgVGhpcyBhcnJhbmdlbWVu dCBlbnN1cmVzIHRoYXQgbm8gbmV3IEhPVAogCSAqIGNoYWlucyBjYW4gYmUgY3JlYXRlZCB3aGVy ZSB0aGUgbmV3IHR1cGxlIGFuZCB0aGUgb2xkIHR1cGxlIGluIHRoZQogCSAqIGNoYWluIGhhdmUg ZGlmZmVyZW50IGluZGV4IGtleXMuCiAJICoKKwkgKiBOb3cgY2FsbCBidWlsZCBvbiBhdXhpbGlh cnkgaW5kZXguIEluZGV4IHdpbGwgYmUgY3JlYXRlZCBlbXB0eSB3aXRob3V0CisJICogYW55IGFj dHVhbCBoZWFwIHNjYW4sIGJ1dCBtYXJrZWQgYXMgInJlYWR5LWZvci1pbnNlcnRzIi4gVGhlIGdv YWwgb2YKKwkgKiB0aGF0IGluZGV4IGlzIGFjY3VtdWxhdGUgbmV3IHR1cGxlcyB3aGlsZSBtYWlu IGluZGV4IGlzIGFjdHVhbGx5IGJ1aWx0LgorCSAqLworCisJLyogU2V0IEFjdGl2ZVNuYXBzaG90 IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhlcyBtYXkgbmVlZCBpdCAqLworCVB1c2hBY3Rp dmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCisJaW5kZXhfY29uY3VycmVu dGx5X2J1aWxkKHRhYmxlSWQsIGF1eEluZGV4UmVsYXRpb25JZCk7CisJLyogd2UgY2FuIGRvIGF3 YXkgd2l0aCBvdXIgc25hcHNob3QgKi8KKwlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJQ29tbWl0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8q IFRlbGwgY29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFs aWZpZXMgKi8KKwlpZiAoc2FmZV9pbmRleCkKKwkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsK KwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwK KwkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7CisJLyoKKwkgKiBOb3cg d2UgbmVlZCB0byBlbnN1cmUgYXJlIG5vIHRyYW5zYWN0aW9ucyB3aXRoIHRoZSB3aXRoIGF1eGls aWFyeSBpbmRleAorCSAqIG1hcmtlZCBhcyAibm90LXJlYWR5LWZvci1pbnNlcnRzIi4KKwkgKi8K KwlXYWl0Rm9yTG9ja2VycyhoZWFwbG9ja3RhZywgU2hhcmVMb2NrLCB0cnVlKTsKKworCS8qCisJ ICogQXQgdGhpcyBtb21lbnQgd2UgYXJlIHN1cmUgd2hhdCBhbGwgbmV3IHR1cGxlcyBpbiB0YWJs ZSBhcmUgaW5zZXJ0ZWQgaW50bworCSAqIGF1eGlsaWFyeSBpbmRleC4gTm93IGl0IGlzIHRpbWUg dG8gYnVpbGQgdGhlIHRhcmdldCBpbmRleCBpdHNlbGYuCisJICoKIAkgKiBXZSBub3cgdGFrZSBh IG5ldyBzbmFwc2hvdCwgYW5kIGJ1aWxkIHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQK IAkgKiBhcmUgdmlzaWJsZSBpbiB0aGlzIHNuYXBzaG90LiAgV2UgY2FuIGJlIHN1cmUgdGhhdCBh bnkgSE9UIHVwZGF0ZXMgdG8KIAkgKiB0aGVzZSB0dXBsZXMgd2lsbCBiZSBjb21wYXRpYmxlIHdp dGggdGhlIGluZGV4LCBzaW5jZSBhbnkgdXBkYXRlcyBtYWRlCkBAIC0xNzI4LDkgKzE3ODQsMjgg QEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogdGhlIGluZGV4IG1hcmtlZCBhcyByZWFk LW9ubHkgZm9yIHVwZGF0ZXMuCiAJICovCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfV0FJVF8yKTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMpOwog CVdhaXRGb3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBTaGFyZUxvY2ssIHRydWUpOwogCisJLyoKKwkg KiBVcGRhdGluZyBwZ19pbmRleCBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28g ZW5zdXJlIHdlCisJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90LgorCSAqLworCVB1c2hBY3RpdmVT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCS8qCisJICogTm93IHRhcmdldCBp bmRleCBpcyBtYXJrZWQgYXMgInJlYWR5IiBmb3IgYWxsIHRyYW5zYWN0aW9ucy4gU28sIGF1eGls aWFyeQorCSAqIGluZGV4IGlzIG5vdCBtb3JlIG5lZWRlZC4gU28sIHN0YXJ0IHJlbW92aW5nIHBy b2Nlc3MgYnkgcmV2ZXJ0aW5nICJyZWFkeSIKKwkgKiBmbGFnLgorCSAqLworCWluZGV4X3NldF9z dGF0ZV9mbGFncyhhdXhJbmRleFJlbGF0aW9uSWQsIElOREVYX0RST1BfQ0xFQVJfUkVBRFkpOwor CVBvcEFjdGl2ZVNuYXBzaG90KCk7CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWls ZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KKwlpZiAoc2FmZV9pbmRleCkK KwkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKwogCS8qCiAJICogTm93IHRha2UgdGhlICJy ZWZlcmVuY2Ugc25hcHNob3QiIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHZhbGlkYXRlX2luZGV4KCkK IAkgKiB0byBmaWx0ZXIgY2FuZGlkYXRlIHR1cGxlcy4gIEJld2FyZSEgIFRoZXJlIG1pZ2h0IHN0 aWxsIGJlIHNuYXBzaG90cyBpbgpAQCAtMTc0OCwyNCArMTgyMywxNCBAQCBEZWZpbmVJbmRleChP aWQgdGFibGVJZCwKIAkgKi8KIAlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpKTsKIAlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwotCiAJLyoK LQkgKiBTY2FuIHRoZSBpbmRleCBhbmQgdGhlIGhlYXAsIGluc2VydCBhbnkgbWlzc2luZyBpbmRl eCBlbnRyaWVzLgotCSAqLwotCXZhbGlkYXRlX2luZGV4KHRhYmxlSWQsIGluZGV4UmVsYXRpb25J ZCwgc25hcHNob3QpOwotCi0JLyoKLQkgKiBEcm9wIHRoZSByZWZlcmVuY2Ugc25hcHNob3QuICBX ZSBtdXN0IGRvIHRoaXMgYmVmb3JlIHdhaXRpbmcgb3V0IG90aGVyCi0JICogc25hcHNob3QgaG9s ZGVycywgZWxzZSB3ZSB3aWxsIGRlYWRsb2NrIGFnYWluc3Qgb3RoZXIgcHJvY2Vzc2VzIGFsc28K LQkgKiBkb2luZyBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZLCB3aGljaCB3b3VsZCBzZWUgb3Vy IHNuYXBzaG90IGFzIG9uZQotCSAqIHRoZXkgbXVzdCB3YWl0IGZvci4gIEJ1dCBmaXJzdCwgc2F2 ZSB0aGUgc25hcHNob3QncyB4bWluIHRvIHVzZSBhcwotCSAqIGxpbWl0WG1pbiBmb3IgR2V0Q3Vy cmVudFZpcnR1YWxYSURzKCkuCisJICogTWVyZ2UgY29udGVudCBvZiBhdXhpbGlhcnkgYW5kIHRh cmdldCBpbmRleGVzIC0gaW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4IGVudHJpZXMuCiAJICovCisJ dmFsaWRhdGVfaW5kZXgodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkLCBhdXhJbmRleFJlbGF0aW9u SWQsIHNuYXBzaG90KTsKIAlsaW1pdFhtaW4gPSBzbmFwc2hvdC0+eG1pbjsKIAogCVBvcEFjdGl2 ZVNuYXBzaG90KCk7CiAJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKLQogCS8qCiAJICog VGhlIHNuYXBzaG90IHN1YnN5c3RlbSBjb3VsZCBzdGlsbCBjb250YWluIHJlZ2lzdGVyZWQgc25h cHNob3RzIHRoYXQKIAkgKiBhcmUgaG9sZGluZyBiYWNrIG91ciBwcm9jZXNzJ3MgYWR2ZXJ0aXNl ZCB4bWluOyBpbiBwYXJ0aWN1bGFyLCBpZgpAQCAtMTc5Miw3ICsxODU3LDcgQEAgRGVmaW5lSW5k ZXgoT2lkIHRhYmxlSWQsCiAJICovCiAJSU5KRUNUSU9OX1BPSU5UKCJkZWZpbmVfaW5kZXhfYmVm b3JlX3NldF92YWxpZCIsIE5VTEwpOwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJP R1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1dBSVRfMyk7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80KTsKIAlX YWl0Rm9yT2xkZXJTbmFwc2hvdHMobGltaXRYbWluLCB0cnVlKTsKIAogCS8qCkBAIC0xODE3LDYg KzE4ODIsNTMgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogdG8gcmVwbGFuOyBzbyBy ZWxjYWNoZSBmbHVzaCBvbiB0aGUgaW5kZXggaXRzZWxmIHdhcyBzdWZmaWNpZW50LikKIAkgKi8K IAlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUJ5UmVsaWQoaGVhcHJlbGlkLnJlbElkKTsKKwlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJ LyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1 YWxpZmllcyAqLworCWlmIChzYWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygp OworCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0UsCisJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzUpOworCS8qIE5vdyB3 YWl0IGZvciBhbGwgdHJhbnNhY3Rpb24gdG8gc2VlIGF1eGlsaWFyeSBhcyAibm9uLXJlYWR5IGZv ciBpbnNlcnRzIiAqLworCVdhaXRGb3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBBY2Nlc3NFeGNsdXNp dmVMb2NrLCB0cnVlKTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJh bnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGlu dm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkgKiBoYXZlIGEgdmFsaWQg c25hcHNob3QuCisJICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNo b3QoKSk7CisJLyogTm93IGl0IGlzIHRpbWUgdG8gbWFyayBhdXhpbGlhcnkgaW5kZXggYXMgZGVh ZCAqLworCWluZGV4X2NvbmN1cnJlbnRseV9zZXRfZGVhZCh0YWJsZUlkLCBhdXhJbmRleFJlbGF0 aW9uSWQpOworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyogVGVsbCBjb25jdXJyZW50 IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLworCWlmIChz YWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCisJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJCQkJCQkJIFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzYpOworCS8qIE5vdyB3YWl0IGZvciBhbGwgdHJhbnNh Y3Rpb24gdG8gaWdub3JlIGF1eGlsaWFyeSBiZWNhdXNlIGl0IGlzIGRlYWQgKi8KKwlXYWl0Rm9y TG9ja2VycyhoZWFwbG9ja3RhZywgQWNjZXNzRXhjbHVzaXZlTG9jaywgdHJ1ZSk7CisKKwlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJ LyoKKwkgKiBEcm9wIGF1eGlsaWFyeSBpbmRleC4KKwkgKgorCSAqIFVzZSBQRVJGT1JNX0RFTEVU SU9OX0NPTkNVUlJFTlRfTE9DSyBzbyB0aGF0IGluZGV4X2Ryb3AoKSB1c2VzIHRoZQorCSAqIHJp Z2h0IGxvY2sgbGV2ZWwuCisJICovCisJcGVyZm9ybURlbGV0aW9uKCZhdXhBZGRyZXNzLCBEUk9Q X1JFU1RSSUNULAorCQkJCQkJCSBQRVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRfTE9DSyB8IFBF UkZPUk1fREVMRVRJT05fSU5URVJOQUwpOwogCiAJLyoKIAkgKiBMYXN0IHRoaW5nIHRvIGRvIGlz IHJlbGVhc2UgdGhlIHNlc3Npb24tbGV2ZWwgbG9jayBvbiB0aGUgcGFyZW50IHRhYmxlLgpAQCAt MzU3MSw2ICszNjgzLDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5k ZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAl0eXBlZGVmIHN0cnVj dCBSZWluZGV4SW5kZXhJbmZvCiAJewogCQlPaWQJCQlpbmRleElkOworCQlPaWQJCQlhdXhJbmRl eElkOwogCQlPaWQJCQl0YWJsZUlkOwogCQlPaWQJCQlhbUlkOwogCQlib29sCQlzYWZlOwkJLyog Zm9yIHNldF9pbmRleHNhZmVfcHJvY2ZsYWdzICovCkBAIC0zNjc2LDggKzM3ODksMTUgQEAgUmVp bmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs YXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJT2lkCQkJY2VsbE9pZCA9IGxmaXJzdF9vaWQobGMp OwogCQkJCQlSZWxhdGlvbglpbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihjZWxsT2lkLAogCQkJ CQkJCQkJCQkJCQkgICBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQkJCQlJbmRleEluZm8q CWluZGV4SW5mbyA9IEJ1aWxkRHVtbXlJbmRleEluZm8oaW5kZXhSZWxhdGlvbik7CiAKLQkJCQkJ aWYgKCFpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kaXN2YWxpZCkKKworCQkJCQlpZiAoaW5k ZXhJbmZvLT5paV9BdXhpbGlhcnkpCisJCQkJCQllcmVwb3J0KFdBUk5JTkcsKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJCSBlcnJtc2coInNraXBwaW5nIHJl aW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXMuJXNcIiIsCisJCQkJCQkJCQlnZXRfbmFtZXNw YWNlX25hbWUoZ2V0X3JlbF9uYW1lc3BhY2UoY2VsbE9pZCkpLAorCQkJCQkJCQkJZ2V0X3JlbF9u YW1lKGNlbGxPaWQpKSkpOworCQkJCQllbHNlIGlmICghaW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgt PmluZGlzdmFsaWQpCiAJCQkJCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJCQkJCShlcnJjb2RlKEVS UkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCQkJCQkgZXJybXNn KCJza2lwcGluZyByZWluZGV4IG9mIGludmFsaWQgaW5kZXggXCIlcy4lc1wiIiwKQEAgLTM3Mjks OCArMzg0OSwxNSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0 bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJCQkJT2lkCQkJY2VsbE9p ZCA9IGxmaXJzdF9vaWQobGMyKTsKIAkJCQkJCVJlbGF0aW9uCWluZGV4UmVsYXRpb24gPSBpbmRl eF9vcGVuKGNlbGxPaWQsCiAJCQkJCQkJCQkJCQkJCQkgICBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxv Y2spOworCQkJCQkJSW5kZXhJbmZvKglpbmRleEluZm8gPSBCdWlsZER1bW15SW5kZXhJbmZvKGlu ZGV4UmVsYXRpb24pOwogCi0JCQkJCQlpZiAoIWluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRp c3ZhbGlkKQorCQkJCQkJaWYgKGluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KQorCQkJCQkJCWVyZXBv cnQoV0FSTklORywKKwkJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKKwkJCQkJCQkJCSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGlu ZGV4IFwiJXMuJXNcIiIsCisJCQkJCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShnZXRfcmVsX25h bWVzcGFjZShjZWxsT2lkKSksCisJCQkJCQkJCQkJCWdldF9yZWxfbmFtZShjZWxsT2lkKSkpKTsK KwkJCQkJCWVsc2UgaWYgKCFpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kaXN2YWxpZCkKIAkJ CQkJCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkJCQkJCSBlcnJtc2coInNraXBwaW5nIHJl aW5kZXggb2YgaW52YWxpZCBpbmRleCBcIiVzLiVzXCIiLApAQCAtMzc5MSw2ICszOTE4LDEzIEBA IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lk IHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAogCQkJCQkJCSBlcnJtc2coImNhbm5vdCByZWluZGV4IGludmFsaWQg aW5kZXggb24gVE9BU1QgdGFibGUiKSkpOwogCisJCQkJLyogQXV4aWxpYXJ5IGluZGV4ZXMgYXJl IG5vdCBhbGxvd2VkIHRvIGJlIHJlYnVpbHQgKi8KKwkJCQlpZiAoZ2V0X3JlbF9yZWxhbShyZWxh dGlvbk9pZCkgPT0gU1RJUl9BTV9PSUQpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJyZWlu ZGV4IG9mIGF1eGlsaWFyeSBpbmRleCBcIiVzXCIgbm90IHN1cHBvcnRlZCIsCisJCQkJCQkJCWdl dF9yZWxfbmFtZShyZWxhdGlvbk9pZCkpKSk7CisKIAkJCQkvKgogCQkJCSAqIENoZWNrIGlmIHBh cmVudCByZWxhdGlvbiBjYW4gYmUgbG9ja2VkIGFuZCBpZiBpdCBleGlzdHMsCiAJCQkJICogdGhp cyBuZWVkcyB0byBiZSBkb25lIGF0IHRoaXMgc3RhZ2UgYXMgdGhlIGxpc3Qgb2YgaW5kZXhlcwpA QCAtMzg5NCwxNSArNDAyOCwxOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCWZvcmVhY2go bGMsIGluZGV4SWRzKQogCXsKIAkJY2hhcgkgICAqY29uY3VycmVudE5hbWU7CisJCWNoYXIJICAg KmF1eENvbmN1cnJlbnROYW1lOwogCQlSZWluZGV4SW5kZXhJbmZvICppZHggPSBsZmlyc3QobGMp OwogCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHg7CiAJCU9pZAkJCW5ld0luZGV4SWQ7CisJCU9p ZAkJCWF1eEluZGV4SWQ7CiAJCVJlbGF0aW9uCWluZGV4UmVsOwogCQlSZWxhdGlvbgloZWFwUmVs OwogCQlPaWQJCQlzYXZlX3VzZXJpZDsKIAkJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAkJaW50 CQkJc2F2ZV9uZXN0bGV2ZWw7CiAJCVJlbGF0aW9uCW5ld0luZGV4UmVsOworCQlSZWxhdGlvbglh dXhJbmRleFJlbDsKIAkJTG9ja1JlbElkICAqbG9ja3JlbGlkOwogCQlPaWQJCQl0YWJsZXNwYWNl aWQ7CiAKQEAgLTM5NTMsNiArNDA5MCwxMSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJ CQkJCQkJCQkiY2NuZXciLAogCQkJCQkJCQkJCQlnZXRfcmVsX25hbWVzcGFjZShpbmRleFJlbC0+ cmRfaW5kZXgtPmluZHJlbGlkKSwKIAkJCQkJCQkJCQkJZmFsc2UpOworCQlhdXhDb25jdXJyZW50 TmFtZSA9IENob29zZVJlbGF0aW9uTmFtZShnZXRfcmVsX25hbWUoaWR4LT5pbmRleElkKSwKKwkJ CQkJCQkJCQkJTlVMTCwKKwkJCQkJCQkJCQkJImNjYXV4IiwKKwkJCQkJCQkJCQkJZ2V0X3JlbF9u YW1lc3BhY2UoaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRyZWxpZCksCisJCQkJCQkJCQkJCWZhbHNl KTsKIAogCQkvKiBDaG9vc2UgdGhlIG5ldyB0YWJsZXNwYWNlLCBpbmRleGVzIG9mIHRvYXN0IHRh YmxlcyBhcmUgbm90IG1vdmVkICovCiAJCWlmIChPaWRJc1ZhbGlkKHBhcmFtcy0+dGFibGVzcGFj ZU9pZCkgJiYKQEAgLTM5NjYsMTIgKzQxMDgsMTcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAkJCQkJCQkJCQkJCQlpZHgtPmluZGV4SWQsCiAJCQkJCQkJCQkJCQkJdGFibGVzcGFjZWlkLAog CQkJCQkJCQkJCQkJCWNvbmN1cnJlbnROYW1lKTsKKwkJYXV4SW5kZXhJZCA9IGluZGV4X2NvbmN1 cnJlbnRseV9jcmVhdGVfYXV4KGhlYXBSZWwsCisJCQkJCQkJCQkJCQkgICBuZXdJbmRleElkLAor CQkJCQkJCQkJCQkJICAgdGFibGVzcGFjZWlkLAorCQkJCQkJCQkJCQkJICAgYXV4Q29uY3VycmVu dE5hbWUpOwogCiAJCS8qCiAJCSAqIE5vdyBvcGVuIHRoZSByZWxhdGlvbiBvZiB0aGUgbmV3IGlu ZGV4LCBhIHNlc3Npb24tbGV2ZWwgbG9jayBpcwogCQkgKiBhbHNvIG5lZWRlZCBvbiBpdC4KIAkJ ICovCiAJCW5ld0luZGV4UmVsID0gaW5kZXhfb3BlbihuZXdJbmRleElkLCBTaGFyZVVwZGF0ZUV4 Y2x1c2l2ZUxvY2spOworCQlhdXhJbmRleFJlbCA9IGluZGV4X29wZW4oYXV4SW5kZXhJZCwgU2hh cmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAogCQkvKgogCQkgKiBTYXZlIHRoZSBsaXN0IG9mIE9J RHMgYW5kIGxvY2tzIGluIHByaXZhdGUgY29udGV4dApAQCAtMzk4MCw2ICs0MTI3LDcgQEAgUmVp bmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs YXRpb25PaWQsIGNvbnN0IFJlaW4KIAogCQluZXdpZHggPSBwYWxsb2Nfb2JqZWN0KFJlaW5kZXhJ bmRleEluZm8pOwogCQluZXdpZHgtPmluZGV4SWQgPSBuZXdJbmRleElkOworCQluZXdpZHgtPmF1 eEluZGV4SWQgPSBhdXhJbmRleElkOwogCQluZXdpZHgtPnNhZmUgPSBpZHgtPnNhZmU7CiAJCW5l d2lkeC0+dGFibGVJZCA9IGlkeC0+dGFibGVJZDsKIAkJbmV3aWR4LT5hbUlkID0gaWR4LT5hbUlk OwpAQCAtMzk5OCwxMCArNDE0NiwxNCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29u c3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlsb2Nr cmVsaWQgPSBwYWxsb2Nfb2JqZWN0KExvY2tSZWxJZCk7CiAJCSpsb2NrcmVsaWQgPSBuZXdJbmRl eFJlbC0+cmRfbG9ja0luZm8ubG9ja1JlbElkOwogCQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChy ZWxhdGlvbkxvY2tzLCBsb2NrcmVsaWQpOworCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2JqZWN0KExv Y2tSZWxJZCk7CisJCSpsb2NrcmVsaWQgPSBhdXhJbmRleFJlbC0+cmRfbG9ja0luZm8ubG9ja1Jl bElkOworCQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBsb2NrcmVsaWQp OwogCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCQlpbmRleF9jbG9z ZShpbmRleFJlbCwgTm9Mb2NrKTsKKwkJaW5kZXhfY2xvc2UoYXV4SW5kZXhSZWwsIE5vTG9jayk7 CiAJCWluZGV4X2Nsb3NlKG5ld0luZGV4UmVsLCBOb0xvY2spOwogCiAJCS8qIFJvbGwgYmFjayBh bnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCkBAIC00MDgyLDEz ICs0MjM0LDYwIEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJICogZG9pbmcgdGhhdCwgd2Fp dCB1bnRpbCBubyBydW5uaW5nIHRyYW5zYWN0aW9ucyBjb3VsZCBoYXZlIHRoZSB0YWJsZSBvZgog CSAqIHRoZSBpbmRleCBvcGVuIHdpdGggdGhlIG9sZCBsaXN0IG9mIGluZGV4ZXMuICBTZWUgInBo YXNlIDIiIGluCiAJICogRGVmaW5lSW5kZXgoKSBmb3IgbW9yZSBkZXRhaWxzLgorCSovCisKKwlw Z3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJ CQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMSk7CisJV2FpdEZvckxvY2tlcnNN dWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVlKTsKKwlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKKworCS8qCisJICogTm93IGJ1aWxkIGFsbCBhdXhpbGlhcnkgaW5kZXhlcyBhbmQg bWFyayB0aGVtIGFzICJyZWFkeS1mb3ItaW5zZXJ0cyIuCisJICovCisJZm9yZWFjaChsYywgbmV3 SW5kZXhJZHMpCisJeworCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOwor CisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJLyoKKwkJICogQ2hlY2sgZm9yIHVz ZXItcmVxdWVzdGVkIGFib3J0LiAgVGhpcyBpcyBpbnNpZGUgYSB0cmFuc2FjdGlvbiBzbyBhcwor CQkgKiB4YWN0LmMgZG9lcyBub3QgaXNzdWUgYSB1c2VsZXNzIFdBUk5JTkcsIGFuZCBlbnN1cmVz IHRoYXQKKwkJICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBhcmUgY2xlYW5lZCB1cCBvbiBhYm9ydC4K KwkJICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyogVGVsbCBjb25jdXJyZW50 IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJCWlmIChuZXdp ZHgtPnNhZmUpCisJCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCisJCS8qIFNldCBBY3Rp dmVTbmFwc2hvdCBzaW5jZSBmdW5jdGlvbnMgaW4gdGhlIGluZGV4ZXMgbWF5IG5lZWQgaXQgKi8K KwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisKKwkJLyog QnVpbGQgYXV4aWxpYXJ5IGluZGV4LCBpdCBpcyBmYXN0IC0gd2l0aG91dCBhbnkgYWN0dWFsIGhl YXAgc2NhbiwganVzdCBhbiBlbXB0eSBpbmRleC4gKi8KKwkJaW5kZXhfY29uY3VycmVudGx5X2J1 aWxkKG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5hdXhJbmRleElkKTsKKworCQlQb3BBY3RpdmVT bmFwc2hvdCgpOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwl9CisKKwlTdGFydFRy YW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBz bmFwc2hvdCBpbiB0aGlzIHRyYW5zYWN0aW9uLCB0aGVyZSdzIG5vIG5lZWQKKwkgKiB0byBzZXQg dGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGhlcmUuCiAJICovCiAKIAlwZ3N0YXRfcHJvZ3Jlc3Nf dXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRV9XQUlUXzEpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BI QVNFX1dBSVRfMik7CisJLyoKKwkgKiBXYWl0IHVudGlsIGFsbCBhdXhpbGlhcnkgaW5kZXhlcyBh cmUgdGFrZW4gaW50byBhY2NvdW50IGJ5IGFsbAorCSAqIHRyYW5zYWN0aW9ucy4KKwkgKi8KIAlX YWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBTaGFyZUxvY2ssIHRydWUpOwogCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCisJLyogTm93IGl0IGlzIHRpbWUgdG8gcGVyZm9ybSB0 YXJnZXQgaW5kZXggYnVpbGQuICovCiAJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCiAJewogCQlS ZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMpOwpAQCAtNDEzNSw2ICs0MzM0LDQx IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJICogbmVlZCB0byBzZXQgdGhlIFBST0NfSU5f U0FGRV9JQyBmbGFnIGhlcmUuCiAJICovCiAKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFt KFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRV9XQUlUXzMpOworCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9j aywgdHJ1ZSk7CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIEF0IHRo aXMgbW9tZW50IGFsbCB0YXJnZXQgaW5kZXhlcyBhcmUgbWFya2VkIGFzICJyZWFkeS10by1pbnNl cnQiLiBTbywKKwkgKiB3ZSBhcmUgZnJlZSB0byBzdGFydCBwcm9jZXNzIG9mIGRyb3BwaW5nIGF1 eGlsaWFyeSBpbmRleGVzLgorCSAqLworCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQorCXsKKwkJ UmVpbmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKKwkJU3RhcnRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKwkJLyoKKwkJICogQ2hlY2sgZm9yIHVzZXItcmVxdWVzdGVkIGFib3J0LiAg VGhpcyBpcyBpbnNpZGUgYSB0cmFuc2FjdGlvbiBzbyBhcworCQkgKiB4YWN0LmMgZG9lcyBub3Qg aXNzdWUgYSB1c2VsZXNzIFdBUk5JTkcsIGFuZCBlbnN1cmVzIHRoYXQKKwkJICogc2Vzc2lvbi1s ZXZlbCBsb2NrcyBhcmUgY2xlYW5lZCB1cCBvbiBhYm9ydC4KKwkJICovCisJCUNIRUNLX0ZPUl9J TlRFUlJVUFRTKCk7CisKKwkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1 cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJCWlmIChuZXdpZHgtPnNhZmUpCisJCQlzZXRfaW5k ZXhzYWZlX3Byb2NmbGFncygpOworCisJCS8qCisJCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0 IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkJICogaGF2ZSBhIHZh bGlkIHNuYXBzaG90LgorCQkgKi8KKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9u U25hcHNob3QoKSk7CisJCWluZGV4X3NldF9zdGF0ZV9mbGFncyhuZXdpZHgtPmF1eEluZGV4SWQs IElOREVYX0RST1BfQ0xFQVJfUkVBRFkpOworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCX0KKwogCS8qCiAJICogUGhhc2UgMyBvZiBSRUlO REVYIENPTkNVUlJFTlRMWQogCSAqCkBAIC00MTQyLDEyICs0Mzc2LDYgQEAgUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQs IGNvbnN0IFJlaW4KIAkgKiB3ZXJlIGNyZWF0ZWQgZHVyaW5nIHRoZSBwcmV2aW91cyBwaGFzZS4g IFNlZSAicGhhc2UgMyIgaW4gRGVmaW5lSW5kZXgoKQogCSAqIGZvciBtb3JlIGRldGFpbHMuCiAJ ICovCi0KLQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOwotCVdhaXRG b3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7Ci0JQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7Ci0KIAlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykKIAl7CiAJCVJl aW5kZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CkBAIC00MTg1LDcgKzQ0MTMsNyBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlwcm9ncmVzc192YWxzWzNdID0gbmV3aWR4LT5h bUlkOwogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDQsIHByb2dyZXNzX2lu ZGV4LCBwcm9ncmVzc192YWxzKTsKIAotCQl2YWxpZGF0ZV9pbmRleChuZXdpZHgtPnRhYmxlSWQs IG5ld2lkeC0+aW5kZXhJZCwgc25hcHNob3QpOworCQl2YWxpZGF0ZV9pbmRleChuZXdpZHgtPnRh YmxlSWQsIG5ld2lkeC0+aW5kZXhJZCwgbmV3aWR4LT5hdXhJbmRleElkLCBzbmFwc2hvdCk7CiAK IAkJLyoKIAkJICogV2UgY2FuIG5vdyBkbyBhd2F5IHdpdGggb3VyIGFjdGl2ZSBzbmFwc2hvdCwg d2Ugc3RpbGwgbmVlZCB0byBzYXZlCkBAIC00MjE0LDcgKzQ0NDIsNyBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCQkgKiB0aGVyZSdzIG5vIG5lZWQgdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVf SUMgZmxhZyBoZXJlLgogCQkgKi8KIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1dBSVRfMyk7CisJCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNCk7CiAJ CVdhaXRGb3JPbGRlclNuYXBzaG90cyhsaW1pdFhtaW4sIHRydWUpOwogCiAJCUNvbW1pdFRyYW5z YWN0aW9uQ29tbWFuZCgpOwpAQCAtNDMwNCwxNCArNDUzMiwxNCBAQCBSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29u c3QgUmVpbgogCS8qCiAJICogUGhhc2UgNSBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCi0J ICogTWFyayB0aGUgb2xkIGluZGV4ZXMgYXMgZGVhZC4gIEZpcnN0IHdlIG11c3Qgd2FpdCB1bnRp bCBubyBydW5uaW5nCi0JICogdHJhbnNhY3Rpb24gY291bGQgYmUgdXNpbmcgdGhlIGluZGV4IGZv ciBhIHF1ZXJ5LiAgU2VlIGFsc28KKwkgKiBNYXJrIHRoZSBvbGQgYW5kIGF1eGlsaWFyeSBpbmRl eGVzIGFzIGRlYWQuIEZpcnN0IHdlIG11c3Qgd2FpdCB1bnRpbCBubworCSAqIHJ1bm5pbmcgdHJh bnNhY3Rpb24gY291bGQgYmUgdXNpbmcgdGhlIGluZGV4IGZvciBhIHF1ZXJ5LiAgU2VlIGFsc28K IAkgKiBpbmRleF9kcm9wKCkgZm9yIG1vcmUgZGV0YWlscy4KIAkgKi8KIAogCUlOSkVDVElPTl9Q T0lOVCgicmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlfYmVmb3JlX3NldF9kZWFkIiwgTlVM TCk7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80KTsKKwkJCQkJCQkJ IFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzUpOwogCVdhaXRGb3JMb2NrZXJzTXVsdGlw bGUobG9ja1RhZ3MsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIHRydWUpOwogCiAJZm9yZWFjaChsYywg aW5kZXhJZHMpCkBAIC00MzM2LDYgKzQ1NjQsMjggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAl9CiAKKwlmb3JlYWNoKGxjLCBuZXdJbmRleElkcykK Kwl7CisJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CisKKwkJLyoKKwkJ ICogQ2hlY2sgZm9yIHVzZXItcmVxdWVzdGVkIGFib3J0LiAgVGhpcyBpcyBpbnNpZGUgYSB0cmFu c2FjdGlvbiBzbyBhcworCQkgKiB4YWN0LmMgZG9lcyBub3QgaXNzdWUgYSB1c2VsZXNzIFdBUk5J TkcsIGFuZCBlbnN1cmVzIHRoYXQKKwkJICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBhcmUgY2xlYW5l ZCB1cCBvbiBhYm9ydC4KKwkJICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyoK KwkJICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3Ms IHNvIGVuc3VyZSB3ZQorCQkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCisJCSAqLworCQlQdXNo QWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKworCQlpbmRleF9jb25j dXJyZW50bHlfc2V0X2RlYWQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4SWQpOwor CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJfQorCiAJLyogQ29tbWl0IHRoaXMgdHJhbnNhY3Rp b24gdG8gbWFrZSB0aGUgdXBkYXRlcyB2aXNpYmxlLiAqLwogCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CkBAIC00MzQ5LDExICs0NTk5LDEx IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJLyoKIAkgKiBQaGFzZSA2IG9mIFJFSU5ERVgg Q09OQ1VSUkVOVExZCiAJICoKLQkgKiBEcm9wIHRoZSBvbGQgaW5kZXhlcy4KKwkgKiBEcm9wIHRo ZSBvbGQgYW5kIGF1eGlsaWFyeSBpbmRleGVzLgogCSAqLwogCiAJcGdzdGF0X3Byb2dyZXNzX3Vw ZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0VfV0FJVF81KTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RV9XQUlUXzYpOwogCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIEFjY2Vzc0V4Y2x1 c2l2ZUxvY2ssIHRydWUpOwogCiAJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25h cHNob3QoKSk7CkBAIC00MzczLDYgKzQ2MjMsMTggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAkJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqZWN0LCBvYmplY3RzKTsKIAkJfQogCisJ CWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQorCQl7CisJCQlSZWluZGV4SW5kZXhJbmZvICppZHgg PSBsZmlyc3QobGMpOworCQkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisKKwkJCW9iamVjdC5jbGFz c0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCQkJb2JqZWN0Lm9iamVjdElkID0gaWR4LT5hdXhJ bmRleElkOworCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKworCQkJYWRkX2V4YWN0X29iamVj dF9hZGRyZXNzKCZvYmplY3QsIG9iamVjdHMpOworCQl9CisKIAkJLyoKIAkJICogVXNlIFBFUkZP Uk1fREVMRVRJT05fQ09OQ1VSUkVOVF9MT0NLIHNvIHRoYXQgaW5kZXhfZHJvcCgpIHVzZXMgdGhl CiAJCSAqIHJpZ2h0IGxvY2sgbGV2ZWwuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9t YWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IGU5N2UwOTQz ZjViLi5iNTU2YmE0ODE3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKQEAgLTgzNCw3ICs4MzQsNyBA QCBJbmRleEluZm8gKgogbWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRy cywgT2lkIGFtb2lkLCBMaXN0ICpleHByZXNzaW9ucywKIAkJCSAgTGlzdCAqcHJlZGljYXRlcywg Ym9vbCB1bmlxdWUsIGJvb2wgbnVsbHNfbm90X2Rpc3RpbmN0LAogCQkJICBib29sIGlzcmVhZHks IGJvb2wgY29uY3VycmVudCwgYm9vbCBzdW1tYXJpemluZywKLQkJCSAgYm9vbCB3aXRob3V0b3Zl cmxhcHMpCisJCQkgIGJvb2wgd2l0aG91dG92ZXJsYXBzLCBib29sIGF1eGlsaWFyeSkKIHsKIAlJ bmRleEluZm8gICpuID0gbWFrZU5vZGUoSW5kZXhJbmZvKTsKIApAQCAtODUwLDYgKzg1MCw3IEBA IG1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwg TGlzdCAqZXhwcmVzc2lvbnMsCiAJbi0+aWlfQ29uY3VycmVudCA9IGNvbmN1cnJlbnQ7CiAJbi0+ aWlfU3VtbWFyaXppbmcgPSBzdW1tYXJpemluZzsKIAluLT5paV9XaXRob3V0T3ZlcmxhcHMgPSB3 aXRob3V0b3ZlcmxhcHM7CisJbi0+aWlfQXV4aWxpYXJ5ID0gYXV4aWxpYXJ5OwogCiAJLyogc3Vt bWFyaXppbmcgaW5kZXhlcyBjYW5ub3QgY29udGFpbiBub24ta2V5IGF0dHJpYnV0ZXMgKi8KIAlB c3NlcnQoIXN1bW1hcml6aW5nIHx8IChudW1rZXlhdHRycyA9PSBudW1hdHRycykpOwpAQCAtODc1 LDcgKzg3Niw2IEBAIG1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMs IE9pZCBhbW9pZCwgTGlzdCAqZXhwcmVzc2lvbnMsCiAJLyogaW5pdGlhbGl6ZSBpbmRleC1idWls ZCBzdGF0ZSB0byBkZWZhdWx0ICovCiAJbi0+aWlfQnJva2VuSG90Q2hhaW4gPSBmYWxzZTsKIAlu LT5paV9QYXJhbGxlbFdvcmtlcnMgPSAwOwotCW4tPmlpX0F1eGlsaWFyeSA9IGZhbHNlOwogCiAJ Lyogc2V0IHVwIGZvciBwb3NzaWJsZSB1c2UgYnkgaW5kZXggQU0gKi8KIAluLT5paV9BbSA9IGFt b2lkOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggODcxM2UxMmNiZmIuLmJkNDY3ODU4MDFjIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy90YWJsZWFtLmgKQEAgLTY5NiwxMSArNjk2LDEyIEBAIHR5cGVkZWYgc3RydWN0IFRhYmxl QW1Sb3V0aW5lCiAJCQkJCQkJCQkJICAgVGFibGVTY2FuRGVzYyBzY2FuKTsKIAogCS8qIHNlZSB0 YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuIGZvciByZWZlcmVuY2UgYWJvdXQgcGFyYW1ldGVycyAq LwotCXZvaWQJCSgqaW5kZXhfdmFsaWRhdGVfc2NhbikgKFJlbGF0aW9uIHRhYmxlX3JlbCwKLQkJ CQkJCQkJCQlSZWxhdGlvbiBpbmRleF9yZWwsCi0JCQkJCQkJCQkJc3RydWN0IEluZGV4SW5mbyAq aW5kZXhfaW5mbywKLQkJCQkJCQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCQkJCQlzdHJ1 Y3QgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSk7CisJdm9pZCAJCSgqaW5kZXhfdmFsaWRhdGVf c2NhbikgKFJlbGF0aW9uIHRhYmxlX3JlbCwKKwkJCQkJCQkJCQkJCVJlbGF0aW9uIGluZGV4X3Jl bCwKKwkJCQkJCQkJCQkJCXN0cnVjdCBJbmRleEluZm8gKmluZGV4X2luZm8sCisJCQkJCQkJCQkJ CQlTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJCQkJCQkJCXN0cnVjdCBWYWxpZGF0ZUluZGV4U3Rh dGUgKnN0YXRlLAorCQkJCQkJCQkJCQkJc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4X3N0 YXRlKTsKIAogCiAJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNzk0LDE5ICsxNzk1LDI0IEBAIHRh YmxlX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gdGFibGVfcmVsLAogICogdGFibGVf aW5kZXhfdmFsaWRhdGVfc2NhbiAtIHNlY29uZCB0YWJsZSBzY2FuIGZvciBjb25jdXJyZW50IGlu ZGV4IGJ1aWxkCiAgKgogICogU2VlIHZhbGlkYXRlX2luZGV4KCkgZm9yIGFuIGV4cGxhbmF0aW9u LgorICoKKyAqIE5vdGU6IGl0IGlzIHJlc3BvbnNpYmlsaXR5IG9mIHRoYXQgZnVuY3Rpb24gdG8g Y2xvc2Ugc29ydHN0YXRlcyBpbgorICogYm90aCBgc3RhdGVgIGFuZCBgYXV4c3RhdGVgLgogICov CiBzdGF0aWMgaW5saW5lIHZvaWQKIHRhYmxlX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24g dGFibGVfcmVsLAogCQkJCQkJICBSZWxhdGlvbiBpbmRleF9yZWwsCiAJCQkJCQkgIHN0cnVjdCBJ bmRleEluZm8gKmluZGV4X2luZm8sCiAJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJ ICBzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSkKKwkJCQkJCSAgc3RydWN0IFZhbGlk YXRlSW5kZXhTdGF0ZSAqc3RhdGUsCisJCQkJCQkgIHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUg KmF1eHN0YXRlKQogewotCXRhYmxlX3JlbC0+cmRfdGFibGVhbS0+aW5kZXhfdmFsaWRhdGVfc2Nh bih0YWJsZV9yZWwsCi0JCQkJCQkJCQkJCSAgIGluZGV4X3JlbCwKLQkJCQkJCQkJCQkJICAgaW5k ZXhfaW5mbywKLQkJCQkJCQkJCQkJICAgc25hcHNob3QsCi0JCQkJCQkJCQkJCSAgIHN0YXRlKTsK KwlyZXR1cm4gdGFibGVfcmVsLT5yZF90YWJsZWFtLT5pbmRleF92YWxpZGF0ZV9zY2FuKHRhYmxl X3JlbCwKKwkJCQkJCQkJCQkJCQkgIGluZGV4X3JlbCwKKwkJCQkJCQkJCQkJCQkgIGluZGV4X2lu Zm8sCisJCQkJCQkJCQkJCQkJICBzbmFwc2hvdCwKKwkJCQkJCQkJCQkJCQkgIHN0YXRlLAorCQkJ CQkJCQkJCQkJCSAgYXV4c3RhdGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvaW5kZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCA0ZGFhOGJl ZjVlZS4uZDUxYjRlOGNkMTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXgu aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTI1LDYgKzI1LDcgQEAgdHlw ZWRlZiBlbnVtCiB7CiAJSU5ERVhfQ1JFQVRFX1NFVF9SRUFEWSwKIAlJTkRFWF9DUkVBVEVfU0VU X1ZBTElELAorCUlOREVYX0RST1BfQ0xFQVJfUkVBRFksCiAJSU5ERVhfRFJPUF9DTEVBUl9WQUxJ RCwKIAlJTkRFWF9EUk9QX1NFVF9ERUFELAogfSBJbmRleFN0YXRlRmxhZ3NBY3Rpb247CkBAIC02 NSw2ICs2Niw3IEBAIGV4dGVybiB2b2lkIGluZGV4X2NoZWNrX3ByaW1hcnlfa2V5KFJlbGF0aW9u IGhlYXBSZWwsCiAjZGVmaW5lCUlOREVYX0NSRUFURV9JRl9OT1RfRVhJU1RTCQkJKDEgPDwgNCkK ICNkZWZpbmUJSU5ERVhfQ1JFQVRFX1BBUlRJVElPTkVECQkJKDEgPDwgNSkKICNkZWZpbmUgSU5E RVhfQ1JFQVRFX0lOVkFMSUQJCQkJKDEgPDwgNikKKyNkZWZpbmUgSU5ERVhfQ1JFQVRFX0FVWElM SUFSWQkJCQkoMSA8PCA3KQogCiBleHRlcm4gT2lkCWluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJCQkJCQkgY29uc3QgY2hhciAqaW5kZXhSZWxhdGlvbk5hbWUsCkBAIC0xMDAs NiArMTAyLDExIEBAIGV4dGVybiBPaWQJaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBPaWQgdGFibGVzcGFjZU9pZCwKIAkJ CQkJCQkJCQkgICBjb25zdCBjaGFyICpuZXdOYW1lKTsKIAorZXh0ZXJuIE9pZAlpbmRleF9jb25j dXJyZW50bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCisJCQkJCQkJCQkJICBP aWQgbWFpbkluZGV4SWQsCisJCQkJCQkJCQkJICBPaWQgdGFibGVzcGFjZU9pZCwKKwkJCQkJCQkJ CQkgIGNvbnN0IGNoYXIgKm5ld05hbWUpOworCiBleHRlcm4gdm9pZCBpbmRleF9jb25jdXJyZW50 bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCQkJCQkJCQkJIE9pZCBpbmRleFJlbGF0aW9u SWQpOwogCkBAIC0xNDUsNyArMTUyLDcgQEAgZXh0ZXJuIHZvaWQgaW5kZXhfYnVpbGQoUmVsYXRp b24gaGVhcFJlbGF0aW9uLAogCQkJCQkJYm9vbCBpc3JlaW5kZXgsCiAJCQkJCQlib29sIHBhcmFs bGVsKTsKIAotZXh0ZXJuIHZvaWQgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4 SWQsIFNuYXBzaG90IHNuYXBzaG90KTsKK2V4dGVybiB2b2lkIHZhbGlkYXRlX2luZGV4KE9pZCBo ZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpOwog CiBleHRlcm4gdm9pZCBpbmRleF9zZXRfc3RhdGVfZmxhZ3MoT2lkIGluZGV4SWQsIEluZGV4U3Rh dGVGbGFnc0FjdGlvbiBhY3Rpb24pOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5k cy9wcm9ncmVzcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaAppbmRleCA3Yzcz NmU3YjAzYi4uNmUxNDU3N2VmOWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3By b2dyZXNzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaApAQCAtOTQsMTQg Kzk0LDE1IEBACiAKIC8qIFBoYXNlcyBvZiBDUkVBVEUgSU5ERVggKGFzIGFkdmVydGlzZWQgdmlh IFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSkgKi8KICNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFX1dBSVRfMQkJCTEKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX0JVSUxE CQkJMgotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yCQkJMwotI2RlZmlu ZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYU0NBTgk0Ci0jZGVmaW5lIFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9TT1JUCQk1Ci0jZGVmaW5lIFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9UQUJMRVNDQU4JNgotI2RlZmluZSBQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0VfV0FJVF8zCQkJNworI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfV0FJVF8yCQkJMgorI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfQlVJTEQJCQkz CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMJCQk0CisjZGVmaW5lIFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9JRFhTQ0FOCTUKKyNkZWZpbmUgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX1NPUlQJCTYKKyNkZWZpbmUgUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFX1ZBTElEQVRFX0lEWE1FUkdFCTcKICNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFX1dBSVRfNAkJCTgKICNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dB SVRfNQkJCTkKKyNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNgkJCTEwCiAK IC8qCiAgKiBTdWJwaGFzZXMgb2YgQ1JFQVRFIElOREVYLCBmb3IgaW5kZXhfYnVpbGQuCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCmluZGV4IDAzNDFiYjc0MzI1Li5lMDJmYzZhYTNlNiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKQEAgLTE4Niw4ICsxODYsOCBAQCB0eXBlZGVmIHN0cnVjdCBFeHByU3RhdGUKICAq CQlBbUNhY2hlCQkJCXByaXZhdGUgY2FjaGUgYXJlYSBmb3IgaW5kZXggQU0KICAqCQlDb250ZXh0 CQkJCW1lbW9yeSBjb250ZXh0IGhvbGRpbmcgdGhpcyBJbmRleEluZm8KICAqCi0gKiBpaV9Db25j dXJyZW50LCBpaV9Ccm9rZW5Ib3RDaGFpbiwgaWlfQXV4aWxpYXJ5IGFuZCBpaV9QYXJhbGxlbFdv cmtlcnMKLSAqIGFyZSB1c2VkIG9ubHkgZHVyaW5nIGluZGV4IGJ1aWxkOyB0aGV5J3JlIGNvbnZl bnRpb25hbGx5IHplcm9lZCBvdGhlcndpc2UuCisgKiBpaV9Db25jdXJyZW50LCBpaV9Ccm9rZW5I b3RDaGFpbiwgYW5kIGlpX1BhcmFsbGVsV29ya2VycyBhcmUgdXNlZCBvbmx5CisgKiBkdXJpbmcg aW5kZXggYnVpbGQ7IHRoZXkncmUgY29udmVudGlvbmFsbHkgemVyb2VkIG90aGVyd2lzZS4KICAq IC0tLS0tLS0tLS0tLS0tLS0KICAqLwogdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJbmZvCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCBiL3NyYy9pbmNsdWRlL25vZGVzL21h a2VmdW5jcy5oCmluZGV4IDU0NzNjZTlhMjg4Li40OTA0NzQ4ZjVmYyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1 bmNzLmgKQEAgLTk5LDcgKzk5LDggQEAgZXh0ZXJuIEluZGV4SW5mbyAqbWFrZUluZGV4SW5mbyhp bnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLAogCQkJCQkJCQlMaXN0ICpl eHByZXNzaW9ucywgTGlzdCAqcHJlZGljYXRlcywKIAkJCQkJCQkJYm9vbCB1bmlxdWUsIGJvb2wg bnVsbHNfbm90X2Rpc3RpbmN0LAogCQkJCQkJCQlib29sIGlzcmVhZHksIGJvb2wgY29uY3VycmVu dCwKLQkJCQkJCQkJYm9vbCBzdW1tYXJpemluZywgYm9vbCB3aXRob3V0b3ZlcmxhcHMpOworCQkJ CQkJCQlib29sIHN1bW1hcml6aW5nLCBib29sIHdpdGhvdXRvdmVybGFwcywKKwkJCQkJCQkJYm9v bCBhdXhpbGlhcnkpOwogCiBleHRlcm4gTm9kZSAqbWFrZVN0cmluZ0NvbnN0KGNoYXIgKnN0ciwg aW50IGxvY2F0aW9uKTsKIGV4dGVybiBEZWZFbGVtICptYWtlRGVmRWxlbShjaGFyICpuYW1lLCBO b2RlICphcmcsIGludCBsb2NhdGlvbik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0 ZV9pbmRleC5vdXQKaW5kZXggOWFkZTdiODM1ZTYuLmNhNzQ4NDRiNWM2IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CkBAIC0xNDIzLDYgKzE0MjMsNyBAQCBE RVRBSUw6ICBLZXkgKGYxKT0oYikgYWxyZWFkeSBleGlzdHMuCiBDUkVBVEUgVU5JUVVFIElOREVY IENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXgzIE9OIGNvbmN1cl9oZWFwKGYyKTsKIEVSUk9SOiAg Y291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImNvbmN1cl9pbmRleDMiCiBERVRBSUw6ICBL ZXkgKGYyKT0oYikgaXMgZHVwbGljYXRlZC4KK0RST1AgSU5ERVggY29uY3VyX2luZGV4M19jY2F1 eDsKIC0tIHRlc3QgdGhhdCBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHBhcnRpYWwgaW5kZXhlcyB3 b3JrIGNvbmN1cnJlbnRseQogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg0 IG9uIGNvbmN1cl9oZWFwKGYyKSBXSEVSRSBmMT0nYSc7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGNvbmN1cl9pbmRleDUgb24gY29uY3VyX2hlYXAoZjIpIFdIRVJFIGYxPSd4JzsKQEAgLTMx OTcsNiArMzE5OCw3IEBAIElOU0VSVCBJTlRPIGNvbmN1cl9yZWluZGV4X3RhYjQgVkFMVUVTICgx KSwgKDEpLCAoMik7CiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVp bmRleF9pbmQ1IE9OIGNvbmN1cl9yZWluZGV4X3RhYjQgKGMxKTsKIEVSUk9SOiAgY291bGQgbm90 IGNyZWF0ZSB1bmlxdWUgaW5kZXggImNvbmN1cl9yZWluZGV4X2luZDUiCiBERVRBSUw6ICBLZXkg KGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KK0RST1AgSU5ERVggY29uY3VyX3JlaW5kZXhfaW5kNV9j Y2F1eDsKIC0tIFJlaW5kZXhpbmcgY29uY3VycmVudGx5IHRoaXMgaW5kZXggZmFpbHMgd2l0aCB0 aGUgc2FtZSBmYWlsdXJlLgogLS0gVGhlIGV4dHJhIGluZGV4IGNyZWF0ZWQgaXMgaXRzZWxmIGlu dmFsaWQsIGFuZCBjYW4gYmUgZHJvcHBlZC4KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNv bmN1cl9yZWluZGV4X2luZDU7CkBAIC0zMjA5LDggKzMyMTEsMTAgQEAgREVUQUlMOiAgS2V5IChj MSk9KDEpIGlzIGR1cGxpY2F0ZWQuCiAgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCiBJbmRleGVzOgogICAgICJjb25jdXJfcmVpbmRleF9pbmQ1IiBVTklRVUUsIGJ0 cmVlIChjMSkgSU5WQUxJRAorICAgICJjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4IiBzdGlyIChj MSkgSU5WQUxJRAogICAgICJjb25jdXJfcmVpbmRleF9pbmQ1X2NjbmV3IiBVTklRVUUsIGJ0cmVl IChjMSkgSU5WQUxJRAogCitEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NhdXg7CiBE Uk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NuZXc7CiAtLSBUaGlzIG1ha2VzIHRoZSBw cmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgog REVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7CkBAIC0zMjM4LDYg KzMyNDIsNDQgQEAgSW5kZXhlczoKICAgICAiY29uY3VyX3JlaW5kZXhfaW5kNSIgVU5JUVVFLCBi dHJlZSAoYzEpCiAKIERST1AgVEFCTEUgY29uY3VyX3JlaW5kZXhfdGFiNDsKKy0tIENoZWNrIGhh bmRsaW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzCitDUkVBVEUgVEFCTEUgYXV4X2luZGV4X3RhYjUg KGMxIGludCk7CitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSksICgy KTsKKy0tIFRoaXMgdHJpY2sgY3JlYXRlcyBhbiBpbnZhbGlkIGluZGV4IGFuZCBhdXhpbGlhcnkg aW5kZXggZm9yIGl0CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhf aW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVu aXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYiCitERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVw bGljYXRlZC4KK1xkIGF1eF9pbmRleF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJsaWMuYXV4 X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwg RGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhl czoKKyAgICAiYXV4X2luZGV4X2luZDYiIFVOSVFVRSwgYnRyZWUgKGMxKSBJTlZBTElECisgICAg ImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBzdGlyIChjMSkgSU5WQUxJRAorCistLSBOb3QgYWxsb3dl ZCB0byByZWluZGV4IGF1eGlsaWFyeSBpbmRleAorUkVJTkRFWCBJTkRFWCBhdXhfaW5kZXhfaW5k Nl9jY2F1eDsKK0VSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9pbmRleF9p bmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVkCistLSBDb25jdXJyZW50bHkgYWxzbworUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDZfY2NhdXg7CitFUlJPUjogIHJlaW5kZXgg b2YgYXV4aWxpYXJ5IGluZGV4ICJhdXhfaW5kZXhfaW5kNl9jY2F1eCIgbm90IHN1cHBvcnRlZAor LS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXgg Y2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUg YzEgPSAxOworRVJST1I6ICByZWxhdGlvbiAiY29uY3VyX3JlaW5kZXhfdGFiNCIgZG9lcyBub3Qg ZXhpc3QKK0xJTkUgMTogREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9 IDE7CisgICAgICAgICAgICAgICAgICAgIF4KKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyBy ZWluZGV4CitSRUlOREVYIFRBQkxFIGF1eF9pbmRleF90YWI1OworRVJST1I6ICBjb3VsZCBub3Qg Y3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYiCitERVRBSUw6ICBLZXkgKGMxKT0o MSkgaXMgZHVwbGljYXRlZC4KKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyBjb25jdXJyZW50 IHJlaW5kZXgKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIGF1eF9pbmRleF90YWI1OworV0FS TklORzogIHNraXBwaW5nIHJlaW5kZXggb2YgaW52YWxpZCBpbmRleCAicHVibGljLmF1eF9pbmRl eF9pbmQ2IgorSElOVDogIFVzZSBEUk9QIElOREVYIG9yIFJFSU5ERVggSU5ERVguCitXQVJOSU5H OiAgc2tpcHBpbmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggInB1YmxpYy5hdXhfaW5kZXhf aW5kNl9jY2F1eCIKK05PVElDRTogIHRhYmxlICJhdXhfaW5kZXhfdGFiNSIgaGFzIG5vIGluZGV4 ZXMgdGhhdCBjYW4gYmUgcmVpbmRleGVkIGNvbmN1cnJlbnRseQorRFJPUCBUQUJMRSBhdXhfaW5k ZXhfdGFiNTsKIC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHByZXNzaW9ucyBh bmQgcHJlZGljYXRlcy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQgaW5kZXhl cyBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsCiAtLSBkZWZpbml0aW9ucy4KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9pbmRleGluZy5vdXQKaW5kZXggYmNmMWRiMTFkNzMuLjNmZWNhYTM4ODUwIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dApAQCAtMTU4NSwxMCArMTU4NSwx MSBAQCBzZWxlY3QgaW5kZXhyZWxpZDo6cmVnY2xhc3MsIGluZGlzdmFsaWQsCiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIHBhcnRlZF9pc3ZhbGlkX2lkeCAg ICAgICAgICAgICB8IGYgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWIgICAgfCAKICBwYXJ0 ZWRfaXN2YWxpZF9pZHhfMTEgICAgICAgICAgfCBmICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRf dGFiXzExIHwgcGFydGVkX2lzdmFsaWRfdGFiXzFfZXhwcl9pZHgKKyBwYXJ0ZWRfaXN2YWxpZF9p ZHhfMTFfY2NhdXggICAgfCBmICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRfdGFiXzExIHwgCiAg cGFydGVkX2lzdmFsaWRfdGFiXzEyX2V4cHJfaWR4IHwgdCAgICAgICAgICB8IHBhcnRlZF9pc3Zh bGlkX3RhYl8xMiB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xX2V4cHJfaWR4CiAgcGFydGVkX2lzdmFs aWRfdGFiXzFfZXhwcl9pZHggIHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xICB8 IHBhcnRlZF9pc3ZhbGlkX2lkeAogIHBhcnRlZF9pc3ZhbGlkX3RhYl8yX2V4cHJfaWR4ICB8IHQg ICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMiAgfCBwYXJ0ZWRfaXN2YWxpZF9pZHgKLSg1 IHJvd3MpCisoNiByb3dzKQogCiBkcm9wIHRhYmxlIHBhcnRlZF9pc3ZhbGlkX3RhYjsKIC0tIENo ZWNrIHN0YXRlIG9mIHJlcGxpY2EgaW5kZXhlcyB3aGVuIGF0dGFjaGluZyBhIHBhcnRpdGlvbi4K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggNmNmODI4Y2E4ZDAuLmVkNmMyMGE0 OTVjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMjA0MSwxNCArMjA0MSwx NSBAQCBwZ19zdGF0X3Byb2dyZXNzX2NyZWF0ZV9pbmRleHwgU0VMRUNUIHMucGlkLAogICAgICAg ICBDQVNFIHMucGFyYW0xMAogICAgICAgICAgICAgV0hFTiAwIFRIRU4gJ2luaXRpYWxpemluZyc6 OnRleHQKICAgICAgICAgICAgIFdIRU4gMSBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9y ZSBidWlsZCc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gMiBUSEVOICgnYnVpbGRpbmcgaW5kZXgn Ojp0ZXh0IHx8IENPQUxFU0NFKCgnOiAnOjp0ZXh0IHx8IHBnX2luZGV4YW1fcHJvZ3Jlc3NfcGhh c2VuYW1lKChzLnBhcmFtOSk6Om9pZCwgcy5wYXJhbTExKSksICcnOjp0ZXh0KSkKLSAgICAgICAg ICAgIFdIRU4gMyBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9yZSB2YWxpZGF0aW9uJzo6 dGV4dAotICAgICAgICAgICAgV0hFTiA0IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNjYW5uaW5n IGluZGV4Jzo6dGV4dAotICAgICAgICAgICAgV0hFTiA1IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246 IHNvcnRpbmcgdHVwbGVzJzo6dGV4dAotICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2luZGV4IHZh bGlkYXRpb246IHNjYW5uaW5nIHRhYmxlJzo6dGV4dAotICAgICAgICAgICAgV0hFTiA3IFRIRU4g J3dhaXRpbmcgZm9yIG9sZCBzbmFwc2hvdHMnOjp0ZXh0Ci0gICAgICAgICAgICBXSEVOIDggVEhF TiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUgbWFya2luZyBkZWFkJzo6dGV4dAotICAgICAg ICAgICAgV0hFTiA5IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRyb3BwaW5nJzo6 dGV4dAorICAgICAgICAgICAgV0hFTiAyIFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMgdG8gdXNl IGF1eGlsaWFyeSBpbmRleCc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gMyBUSEVOICgnYnVpbGRp bmcgaW5kZXgnOjp0ZXh0IHx8IENPQUxFU0NFKCgnOiAnOjp0ZXh0IHx8IHBnX2luZGV4YW1fcHJv Z3Jlc3NfcGhhc2VuYW1lKChzLnBhcmFtOSk6Om9pZCwgcy5wYXJhbTExKSksICcnOjp0ZXh0KSkK KyAgICAgICAgICAgIFdIRU4gNCBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9yZSB2YWxp ZGF0aW9uJzo6dGV4dAorICAgICAgICAgICAgV0hFTiA1IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246 IHNjYW5uaW5nIGluZGV4Jzo6dGV4dAorICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2luZGV4IHZh bGlkYXRpb246IHNvcnRpbmcgdHVwbGVzJzo6dGV4dAorICAgICAgICAgICAgV0hFTiA3IFRIRU4g J2luZGV4IHZhbGlkYXRpb246IG1lcmdpbmcgaW5kZXhlcyc6OnRleHQKKyAgICAgICAgICAgIFdI RU4gOCBUSEVOICd3YWl0aW5nIGZvciBvbGQgc25hcHNob3RzJzo6dGV4dAorICAgICAgICAgICAg V0hFTiA5IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIG1hcmtpbmcgZGVhZCc6OnRl eHQKKyAgICAgICAgICAgIFdIRU4gMTAgVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUg ZHJvcHBpbmcnOjp0ZXh0CiAgICAgICAgICAgICBFTFNFIE5VTEw6OnRleHQKICAgICAgICAgRU5E IEFTIHBoYXNlLAogICAgIHMucGFyYW00IEFTIGxvY2tlcnNfdG90YWwsCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvY3JlYXRlX2luZGV4LnNxbAppbmRleCBlMjFmZjQyNjUxOS4uMmNmZjFhYzI5YmUgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbApAQCAtNDk5LDYgKzQ5OSw3IEBAIENSRUFU RSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIElGIE5PVCBFWElTVFMgY29uY3VyX2luZGV4MiBP TiBjb25jdXJfaGVhcChmMSk7CiBJTlNFUlQgSU5UTyBjb25jdXJfaGVhcCBWQUxVRVMgKCdiJywn eCcpOwogLS0gY2hlY2sgaWYgY29uc3RyYWludCBpcyBlbmZvcmNlZCBwcm9wZXJseSBhdCBidWls ZCB0aW1lCiBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXgzIE9O IGNvbmN1cl9oZWFwKGYyKTsKK0RST1AgSU5ERVggY29uY3VyX2luZGV4M19jY2F1eDsKIC0tIHRl c3QgdGhhdCBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHBhcnRpYWwgaW5kZXhlcyB3b3JrIGNvbmN1 cnJlbnRseQogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg0IG9uIGNvbmN1 cl9oZWFwKGYyKSBXSEVSRSBmMT0nYSc7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1 cl9pbmRleDUgb24gY29uY3VyX2hlYXAoZjIpIFdIRVJFIGYxPSd4JzsKQEAgLTEzMTEsMTAgKzEz MTIsMTIgQEAgQ1JFQVRFIFRBQkxFIGNvbmN1cl9yZWluZGV4X3RhYjQgKGMxIGludCk7CiBJTlNF UlQgSU5UTyBjb25jdXJfcmVpbmRleF90YWI0IFZBTFVFUyAoMSksICgxKSwgKDIpOwogLS0gVGhp cyB0cmljayBjcmVhdGVzIGFuIGludmFsaWQgaW5kZXguCiBDUkVBVEUgVU5JUVVFIElOREVYIENP TkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1IE9OIGNvbmN1cl9yZWluZGV4X3RhYjQgKGMx KTsKK0RST1AgSU5ERVggY29uY3VyX3JlaW5kZXhfaW5kNV9jY2F1eDsKIC0tIFJlaW5kZXhpbmcg Y29uY3VycmVudGx5IHRoaXMgaW5kZXggZmFpbHMgd2l0aCB0aGUgc2FtZSBmYWlsdXJlLgogLS0g VGhlIGV4dHJhIGluZGV4IGNyZWF0ZWQgaXMgaXRzZWxmIGludmFsaWQsIGFuZCBjYW4gYmUgZHJv cHBlZC4KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9yZWluZGV4X2luZDU7CiBc ZCBjb25jdXJfcmVpbmRleF90YWI0CitEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2Nh dXg7CiBEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NuZXc7CiAtLSBUaGlzIG1ha2Vz IHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZh bGlkLgogREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7CkBAIC0x MzI2LDYgKzEzMjksMjQgQEAgUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX3JlaW5k ZXhfaW5kNTsKIFxkIGNvbmN1cl9yZWluZGV4X3RhYjQKIERST1AgVEFCTEUgY29uY3VyX3JlaW5k ZXhfdGFiNDsKIAorLS0gQ2hlY2sgaGFuZGxpbmcgb2YgYXV4aWxpYXJ5IGluZGV4ZXMKK0NSRUFU RSBUQUJMRSBhdXhfaW5kZXhfdGFiNSAoYzEgaW50KTsKK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90 YWI1IFZBTFVFUyAoMSksICgxKSwgKDIpOworLS0gVGhpcyB0cmljayBjcmVhdGVzIGFuIGludmFs aWQgaW5kZXggYW5kIGF1eGlsaWFyeSBpbmRleCBmb3IgaXQKK0NSRUFURSBVTklRVUUgSU5ERVgg Q09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CitcZCBh dXhfaW5kZXhfdGFiNQorLS0gTm90IGFsbG93ZWQgdG8gcmVpbmRleCBhdXhpbGlhcnkgaW5kZXgK K1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDZfY2NhdXg7CistLSBDb25jdXJyZW50bHkgYWxz bworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDZfY2NhdXg7CistLSBU aGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4g YmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9 IDE7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleAorUkVJTkRFWCBUQUJMRSBh dXhfaW5kZXhfdGFiNTsKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyBjb25jdXJyZW50IHJl aW5kZXgKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIGF1eF9pbmRleF90YWI1OworRFJPUCBU QUJMRSBhdXhfaW5kZXhfdGFiNTsKKwogLS0gQ2hlY2sgaGFuZGxpbmcgb2YgaW5kZXhlcyB3aXRo IGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzLiAgVGhlCiAtLSBkZWZpbml0aW9ucyBvZiB0aGUg cmVidWlsdCBpbmRleGVzIHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwKIC0tIGRlZmluaXRpb25z LgotLSAKMi40My4wCgo= --00000000000027fe8906381ae2a2 Content-Type: application/octet-stream; name="v21-only-part-3-0002-Add-Datum-storage-support-to-tuplest.patch_" Content-Disposition: attachment; filename="v21-only-part-3-0002-Add-Datum-storage-support-to-tuplest.patch_" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc6ma8va17 RnJvbSBkNjMyMjNjYmNlMjQ2OTliZGU3NTk5YmNjMmMzMGUzYmYzMTE0YWY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAyNSBKYW4gMjAyNSAxMzozMzoyMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIxLW9ubHktcGFydC0zIDIvNl0gQWRkIERhdHVtIHN0b3JhZ2Ugc3VwcG9ydCB0byB0 dXBsZXN0b3JlCgogRXh0ZW5kIHR1cGxlc3RvcmUgdG8gc3RvcmUgaW5kaXZpZHVhbCBEYXR1bSB2 YWx1ZXM6Ci0gZml4ZWQtbGVuZ3RoIGRhdGF0eXBlczogc3RvcmUgcmF3IGJ5dGVzIHdpdGhvdXQg YSBsZW5ndGggaGVhZGVyCi0gdmFyaWFibGUtbGVuZ3RoIGRhdGF0eXBlczogaW5jbHVkZSBhIGxl bmd0aCBoZWFkZXIgYW5kIHBhZGRpbmcKLSBieS12YWx1ZSB0eXBlczogc3RvcmUgaW5saW5lCgpU aGlzIHN1cHBvcnQgZW5hYmxlcyB1c2FnZXMgdHVwbGVzdG9yZSBmb3Igbm9uLXR1cGxlIGRhdGEg KFRJRHMpIGluIHRoZSBuZXh0IGNvbW1pdC4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1 cGxlc3RvcmUuYyB8IDMwMiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvaW5jbHVk ZS91dGlscy90dXBsZXN0b3JlLmggICAgICB8ICAzMyArLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjYz IGluc2VydGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL3NvcnQvdHVwbGVzdG9yZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXN0 b3JlLmMKaW5kZXggYzlhZWNhYjhkNjYuLjM4MDc2ZjM0NThlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0 L3R1cGxlc3RvcmUuYwpAQCAtMSwxNiArMSwxOSBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgog ICogdHVwbGVzdG9yZS5jCi0gKgkgIEdlbmVyYWxpemVkIHJvdXRpbmVzIGZvciB0ZW1wb3Jhcnkg dHVwbGUgc3RvcmFnZS4KKyAqCSAgR2VuZXJhbGl6ZWQgcm91dGluZXMgZm9yIHRlbXBvcmFyeSBz dG9yYWdlIG9mIHR1cGxlcyBhbmQgRGF0dW1zLgorICoKKyAqIFRoaXMgbW9kdWxlIGhhbmRsZXMg dGVtcG9yYXJ5IHN0b3JhZ2Ugb2YgZWl0aGVyIHR1cGxlcyBvciBzaW5nbGUKKyAqIERhdHVtIHZh bHVlcyBmb3IgcHVycG9zZXMgc3VjaCBhcyBNYXRlcmlhbGl6ZSBub2RlcywgaGFzaGpvaW4gYmF0 Y2gKKyAqIGZpbGVzLCBldGMuIEl0IGlzIGVzc2VudGlhbGx5IGEgZHVtYmVkLWRvd24gdmVyc2lv biBvZiB0dXBsZXNvcnQuYzsKKyAqIGl0IGRvZXMgbm8gc29ydGluZyBvZiB0dXBsZXMgYnV0IGNh biBvbmx5IHN0b3JlIGFuZCByZWd1cmdpdGF0ZSBhIHNlcXVlbmNlCisgKiBvZiB0dXBsZXMuICBI b3dldmVyLCBiZWNhdXNlIG5vIHNvcnQgaXMgcmVxdWlyZWQsIGl0IGlzIGFsbG93ZWQgdG8gc3Rh cnQKKyAqIHJlYWRpbmcgdGhlIHNlcXVlbmNlIGJlZm9yZSBpdCBoYXMgYWxsIGJlZW4gd3JpdHRl bi4KKyAqCisgKiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGN1cnNvcnMsIGJlY2F1 c2UgaXQgYWxsb3dzIHJhbmRvbSBhY2Nlc3MKKyAqIHdpdGhpbiB0aGUgYWxyZWFkeS1zY2FubmVk IHBvcnRpb24gb2YgYSBxdWVyeSB3aXRob3V0IGhhdmluZyB0byBwcm9jZXNzCisgKiB0aGUgdW5k ZXJseWluZyBzY2FuIHRvIGNvbXBsZXRpb24uCiAgKgotICogVGhpcyBtb2R1bGUgaGFuZGxlcyB0 ZW1wb3Jhcnkgc3RvcmFnZSBvZiB0dXBsZXMgZm9yIHB1cnBvc2VzIHN1Y2gKLSAqIGFzIE1hdGVy aWFsaXplIG5vZGVzLCBoYXNoam9pbiBiYXRjaCBmaWxlcywgZXRjLiAgSXQgaXMgZXNzZW50aWFs bHkKLSAqIGEgZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0dXBsZXNvcnQuYzsgaXQgZG9lcyBubyBz b3J0aW5nIG9mIHR1cGxlcwotICogYnV0IGNhbiBvbmx5IHN0b3JlIGFuZCByZWd1cmdpdGF0ZSBh IHNlcXVlbmNlIG9mIHR1cGxlcy4gIEhvd2V2ZXIsCi0gKiBiZWNhdXNlIG5vIHNvcnQgaXMgcmVx dWlyZWQsIGl0IGlzIGFsbG93ZWQgdG8gc3RhcnQgcmVhZGluZyB0aGUgc2VxdWVuY2UKLSAqIGJl Zm9yZSBpdCBoYXMgYWxsIGJlZW4gd3JpdHRlbi4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1 bCBmb3IgY3Vyc29ycywKLSAqIGJlY2F1c2UgaXQgYWxsb3dzIHJhbmRvbSBhY2Nlc3Mgd2l0aGlu IHRoZSBhbHJlYWR5LXNjYW5uZWQgcG9ydGlvbiBvZgotICogYSBxdWVyeSB3aXRob3V0IGhhdmlu ZyB0byBwcm9jZXNzIHRoZSB1bmRlcmx5aW5nIHNjYW4gdG8gY29tcGxldGlvbi4KICAqIEFsc28s IGl0IGlzIHBvc3NpYmxlIHRvIHN1cHBvcnQgbXVsdGlwbGUgaW5kZXBlbmRlbnQgcmVhZCBwb2lu dGVycy4KICAqCiAgKiBBIHRlbXBvcmFyeSBmaWxlIGlzIHVzZWQgdG8gaGFuZGxlIHRoZSBkYXRh IGlmIGl0IGV4Y2VlZHMgdGhlCkBAIC02MSw2ICs2NCw4IEBACiAjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY3V0b3IuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1 ZmZpbGUuaCIKKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVz b3duZXIuaCIKIApAQCAtMTE1LDE2ICsxMjAsMTUgQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQog CUJ1ZkZpbGUgICAgKm15ZmlsZTsJCQkvKiB1bmRlcmx5aW5nIGZpbGUsIG9yIE5VTEwgaWYgbm9u ZSAqLwogCU1lbW9yeUNvbnRleHQgY29udGV4dDsJCS8qIG1lbW9yeSBjb250ZXh0IGZvciBob2xk aW5nIHR1cGxlcyAqLwogCVJlc291cmNlT3duZXIgcmVzb3duZXI7CQkvKiByZXNvd25lciBmb3Ig aG9sZGluZyB0ZW1wIGZpbGVzICovCisJT2lkCQkJZGF0dW1UeXBlOwkJLyogSW52YWxpZE9pZCBv ciBvaWQgb2YgRGF0dW0ncyB0byBiZSBzdG9yZWQgKi8KKwlpbnQxNgkJZGF0dW1UeXBlTGVuOwkv KiB0eXBlbGVuIG9mIHRoYXQgRGF0dW0gKi8KKwlib29sCQlkYXR1bVR5cGVCeVZhbDsgLyogYnkt dmFsdWUgb2YgdGhhdCBhdHVtICovCiAKIAkvKgogCSAqIFRoZXNlIGZ1bmN0aW9uIHBvaW50ZXJz IGRlY291cGxlIHRoZSByb3V0aW5lcyB0aGF0IG11c3Qga25vdyB3aGF0IGtpbmQKIAkgKiBvZiB0 dXBsZSB3ZSBhcmUgaGFuZGxpbmcgZnJvbSB0aGUgcm91dGluZXMgdGhhdCBkb24ndCBuZWVkIHRv IGtub3cgaXQuCiAJICogVGhleSBhcmUgc2V0IHVwIGJ5IHRoZSB0dXBsZXN0b3JlX2JlZ2luX3h4 eCByb3V0aW5lcy4KIAkgKgotCSAqIChBbHRob3VnaCB0dXBsZXN0b3JlLmMgY3VycmVudGx5IG9u bHkgc3VwcG9ydHMgaGVhcCB0dXBsZXMsIEkndmUgY29waWVkCi0JICogdGhpcyBwYXJ0IG9mIHR1 cGxlc29ydC5jIHNvIHRoYXQgZXh0ZW5zaW9uIHRvIG90aGVyIGtpbmRzIG9mIG9iamVjdHMKLQkg KiB3aWxsIGJlIGVhc3kgaWYgaXQncyBldmVyIG5lZWRlZC4pCi0JICoKIAkgKiBGdW5jdGlvbiB0 byBjb3B5IGEgc3VwcGxpZWQgaW5wdXQgdHVwbGUgaW50byBwYWxsb2MnZCBzcGFjZS4gKE5COiB3 ZQogCSAqIGFzc3VtZSB0aGF0IGEgc2luZ2xlIHBmcmVlKCkgaXMgZW5vdWdoIHRvIHJlbGVhc2Ug dGhlIHR1cGxlIGxhdGVyLCBzbwogCSAqIHRoZSByZXByZXNlbnRhdGlvbiBtdXN0IGJlICJmbGF0 IiBpbiBvbmUgcGFsbG9jIGNodW5rLikgc3RhdGUtPmF2YWlsTWVtCkBAIC0xNDMsMTIgKzE0Nywx OCBAQCBzdHJ1Y3QgVHVwbGVzdG9yZXN0YXRlCiAKIAkvKgogCSAqIEZ1bmN0aW9uIHRvIHJlYWQg YSBzdG9yZWQgdHVwbGUgZnJvbSB0YXBlIGJhY2sgaW50byBtZW1vcnkuICdsZW4nIGlzCi0JICog dGhlIGFscmVhZHktcmVhZCBsZW5ndGggb2YgdGhlIHN0b3JlZCB0dXBsZS4gIENyZWF0ZSBhbmQg cmV0dXJuIGEKLQkgKiBwYWxsb2MnZCBjb3B5LCBhbmQgZGVjcmVhc2Ugc3RhdGUtPmF2YWlsTWVt IGJ5IHRoZSBhbW91bnQgb2YgbWVtb3J5Ci0JICogc3BhY2UgY29uc3VtZWQuCisJICogdGhlIGFs cmVhZHkta25vd24gKHJlYWQgb2YgY29uc3RhbnQpIGxlbmd0aCBvZiB0aGUgc3RvcmVkIHR1cGxl LgorCSAqIENyZWF0ZSBhbmQgcmV0dXJuIGEgcGFsbG9jJ2QgY29weSwgYW5kIGRlY3JlYXNlIHN0 YXRlLT5hdmFpbE1lbSBieSB0aGUKKwkgKiBhbW91bnQgb2YgbWVtb3J5IHNwYWNlIGNvbnN1bWVk LgogCSAqLwogCXZvaWQJICAgKigqcmVhZHR1cCkgKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHVu c2lnbmVkIGludCBsZW4pOwogCisJLyoKKwkgKiBGdW5jdGlvbiB0byBnZXQgbGVuZ2ggb2YgdHVw bGUgZnJvbSB0YXBlLiBVc2VkIHRvIHByb3ZpZGUgJ2xlbicgYXJndW1lbnQKKwkgKiBmb3IgcmVh ZHR1cCAoc2VlIGFib3ZlKS4KKwkgKi8KKwl1bnNpZ25lZCBpbnQoKmxlbnR1cCkoVHVwbGVzdG9y ZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSyk7CisKIAkvKgogCSAqIFRoaXMgYXJyYXkgaG9sZHMg cG9pbnRlcnMgdG8gdHVwbGVzIGluIG1lbW9yeSBpZiB3ZSBhcmUgaW4gc3RhdGUgSU5NRU0uCiAJ ICogSW4gc3RhdGVzIFdSSVRFRklMRSBhbmQgUkVBREZJTEUgaXQncyBub3QgdXNlZC4KQEAgLTE4 NSw2ICsxOTUsNyBAQCBzdHJ1Y3QgVHVwbGVzdG9yZXN0YXRlCiAjZGVmaW5lIENPUFlUVVAoc3Rh dGUsdHVwKQkoKCooc3RhdGUpLT5jb3B5dHVwKSAoc3RhdGUsIHR1cCkpCiAjZGVmaW5lIFdSSVRF VFVQKHN0YXRlLHR1cCkgKCgqKHN0YXRlKS0+d3JpdGV0dXApIChzdGF0ZSwgdHVwKSkKICNkZWZp bmUgUkVBRFRVUChzdGF0ZSxsZW4pCSgoKihzdGF0ZSktPnJlYWR0dXApIChzdGF0ZSwgbGVuKSkK KyNkZWZpbmUgTEVOVFVQKHN0YXRlLGVvZk9LKQkoKCooc3RhdGUpLT5sZW50dXApIChzdGF0ZSwg ZW9mT0spKQogI2RlZmluZSBMQUNLTUVNKHN0YXRlKQkJKChzdGF0ZSktPmF2YWlsTWVtIDwgMCkK ICNkZWZpbmUgVVNFTUVNKHN0YXRlLGFtdCkJKChzdGF0ZSktPmF2YWlsTWVtIC09IChhbXQpKQog I2RlZmluZSBGUkVFTUVNKHN0YXRlLGFtdCkJKChzdGF0ZSktPmF2YWlsTWVtICs9IChhbXQpKQpA QCAtMTkzLDkgKzIwNCw5IEBAIHN0cnVjdCBUdXBsZXN0b3Jlc3RhdGUKICAqCiAgKiBOT1RFUyBh Ym91dCBvbi10YXBlIHJlcHJlc2VudGF0aW9uIG9mIHR1cGxlczoKICAqCi0gKiBXZSByZXF1aXJl IHRoZSBmaXJzdCAidW5zaWduZWQgaW50IiBvZiBhIHN0b3JlZCB0dXBsZSB0byBiZSB0aGUgdG90 YWwgc2l6ZQotICogb24tdGFwZSBvZiB0aGUgdHVwbGUsIGluY2x1ZGluZyBpdHNlbGYgKHNvIGl0 IGlzIG5ldmVyIHplcm8pLgotICogVGhlIHJlbWFpbmRlciBvZiB0aGUgc3RvcmVkIHR1cGxlCisg KiBJbiBjYXNlIG9mIHR1cGxlcyB3ZSB1c2UgZmlyc3QgInVuc2lnbmVkIGludCIgb2YgYSBzdG9y ZWQgdHVwbGUKKyAqIHRvIGJlIHRoZSB0b3RhbCBzaXplIG9uLXRhcGUgb2YgdGhlIHR1cGxlLCBp bmNsdWRpbmcgaXRzZWxmCisgKiAoc28gaXQgaXMgbmV2ZXIgemVybykuIFRoZSByZW1haW5kZXIg b2YgdGhlIHN0b3JlZCB0dXBsZQogICogbWF5IG9yIG1heSBub3QgbWF0Y2ggdGhlIGluLW1lbW9y eSByZXByZXNlbnRhdGlvbiBvZiB0aGUgdHVwbGUgLS0tCiAgKiBhbnkgY29udmVyc2lvbiBuZWVk ZWQgaXMgdGhlIGpvYiBvZiB0aGUgd3JpdGV0dXAgYW5kIHJlYWR0dXAgcm91dGluZXMuCiAgKgpA QCAtMjA2LDEwICsyMTcsMTMgQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQogICogc3RhdGUtPmJh Y2t3YXJkIGlzIG5vdCBzZXQsIHRoZSB3cml0ZS9yZWFkIHJvdXRpbmVzIG1heSBvbWl0IHRoZSBl eHRyYQogICogbGVuZ3RoIHdvcmQuCiAgKgorICogSW4gY2FzZSBvZiBEYXR1bSB3aXRoIGNvbnN0 YW50IGxlbmdodCBib3RoICJ1bnNpZ25lZCBpbnQiIGFyZSBvbW1pdHRlZC4KKyAqCiAgKiB3cml0 ZXR1cCBpcyBleHBlY3RlZCB0byB3cml0ZSBib3RoIGxlbmd0aCB3b3JkcyBhcyB3ZWxsIGFzIHRo ZSB0dXBsZQogICogZGF0YS4gIFdoZW4gcmVhZHR1cCBpcyBjYWxsZWQsIHRoZSB0YXBlIGlzIHBv c2l0aW9uZWQganVzdCBhZnRlciB0aGUKLSAqIGZyb250IGxlbmd0aCB3b3JkOyByZWFkdHVwIG11 c3QgcmVhZCB0aGUgdHVwbGUgZGF0YSBhbmQgYWR2YW5jZSBwYXN0Ci0gKiB0aGUgYmFjayBsZW5n dGggd29yZCAoaWYgcHJlc2VudCkuCisgKiBmcm9udCBsZW5ndGggd29yZCAoaWYgaXQgbm90IG9t bWl0dGVkIGxpa2UgaW4gY2FzZSBvZiBjb250YW50LXNpemUgRGF0dW0pOworICogcmVhZHR1cCBt dXN0IHJlYWQgdGhlIHR1cGxlIGRhdGEgYW5kIGFkdmFuY2UgcGFzdCB0aGUgYmFjayBsZW5ndGgg d29yZAorICogKGlmIHByZXNlbnQpLgogICoKICAqIFRoZSB3cml0ZS9yZWFkIHJvdXRpbmVzIGNh biBtYWtlIHVzZSBvZiB0aGUgdHVwbGUgZGVzY3JpcHRpb24gZGF0YQogICogc3RvcmVkIGluIHRo ZSBUdXBsZXN0b3Jlc3RhdGUgcmVjb3JkLCBpZiBuZWVkZWQuIFRoZXkgYXJlIGFsc28gZXhwZWN0 ZWQKQEAgLTI0MSwxMSArMjU1LDE2IEBAIHN0YXRpYyBUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc3Rv cmVfYmVnaW5fY29tbW9uKGludCBlZmxhZ3MsCiBzdGF0aWMgdm9pZCB0dXBsZXN0b3JlX3B1dHR1 cGxlX2NvbW1vbihUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkICp0dXBsZSk7CiBzdGF0aWMg dm9pZCBkdW1wdHVwbGVzKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUpOwogc3RhdGljIHZvaWQgdHVw bGVzdG9yZV91cGRhdGVtYXgoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSk7Ci1zdGF0aWMgdW5zaWdu ZWQgaW50IGdldGxlbihUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKTsKKworc3Rh dGljIHVuc2lnbmVkIGludCBsZW50dXBfaGVhcChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29s IGVvZk9LKTsKIHN0YXRpYyB2b2lkICpjb3B5dHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0 ZSwgdm9pZCAqdHVwKTsKIHN0YXRpYyB2b2lkIHdyaXRldHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRl ICpzdGF0ZSwgdm9pZCAqdHVwKTsKIHN0YXRpYyB2b2lkICpyZWFkdHVwX2hlYXAoVHVwbGVzdG9y ZXN0YXRlICpzdGF0ZSwgdW5zaWduZWQgaW50IGxlbik7CiAKK3N0YXRpYyB1bnNpZ25lZCBpbnQg bGVudHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spOworc3RhdGlj IHZvaWQgKmNvcHl0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCAqZGF0dW0p Oworc3RhdGljIHZvaWQgd3JpdGV0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9p ZCAqZGF0dW0pOworc3RhdGljIHZvaWQgKnJlYWR0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpz dGF0ZSwgdW5zaWduZWQgaW50IGxlbik7CiAKIC8qCiAgKgkJdHVwbGVzdG9yZV9iZWdpbl94eHgK QEAgLTI2OCw2ICsyODcsMTIgQEAgdHVwbGVzdG9yZV9iZWdpbl9jb21tb24oaW50IGVmbGFncywg Ym9vbCBpbnRlclhhY3QsIGludCBtYXhLQnl0ZXMpCiAJc3RhdGUtPmFsbG93ZWRNZW0gPSBtYXhL Qnl0ZXMgKiAoaW50NjQpIDEwMjQ7CiAJc3RhdGUtPmF2YWlsTWVtID0gc3RhdGUtPmFsbG93ZWRN ZW07CiAJc3RhdGUtPm15ZmlsZSA9IE5VTEw7CisJLyoKKwkgKiBTZXQgRGF0dW0gcmVsYXRlZCBk YXRhIHRvIGludmFsaWQgYnkgZGVmYXVsdC4KKwkgKi8KKwlzdGF0ZS0+ZGF0dW1UeXBlID0gSW52 YWxpZE9pZDsKKwlzdGF0ZS0+ZGF0dW1UeXBlTGVuID0gIDA7CisJc3RhdGUtPmRhdHVtVHlwZUJ5 VmFsID0gZmFsc2U7CiAKIAkvKgogCSAqIFRoZSBwYWxsb2MvcGZyZWUgcGF0dGVybiBmb3IgdHVw bGUgbWVtb3J5IGlzIGluIGEgRklGTyBwYXR0ZXJuLiAgQQpAQCAtMzQ1LDYgKzM3MCwzNiBAQCB0 dXBsZXN0b3JlX2JlZ2luX2hlYXAoYm9vbCByYW5kb21BY2Nlc3MsIGJvb2wgaW50ZXJYYWN0LCBp bnQgbWF4S0J5dGVzKQogCXN0YXRlLT5jb3B5dHVwID0gY29weXR1cF9oZWFwOwogCXN0YXRlLT53 cml0ZXR1cCA9IHdyaXRldHVwX2hlYXA7CiAJc3RhdGUtPnJlYWR0dXAgPSByZWFkdHVwX2hlYXA7 CisJc3RhdGUtPmxlbnR1cCA9IGxlbnR1cF9oZWFwOworCisJcmV0dXJuIHN0YXRlOworfQorCisv KgorICogVGhlIHNhbWUgYXMgdHVwbGVzdG9yZV9iZWdpbl9oZWFwIGJ1dCBjcmVhdGUgc3RvcmUg Zm9yIERhdHVtIHZhbHVlcy4KKyAqLworVHVwbGVzdG9yZXN0YXRlICoKK3R1cGxlc3RvcmVfYmVn aW5fZGF0dW0oT2lkIGRhdHVtVHlwZSwgYm9vbCByYW5kb21BY2Nlc3MsIGJvb2wgaW50ZXJYYWN0 LCBpbnQgbWF4S0J5dGVzKQoreworCVR1cGxlc3RvcmVzdGF0ZSAqc3RhdGU7CisJaW50CQkJZWZs YWdzOworCisJLyoKKwkgKiBUaGlzIGludGVycHJldGF0aW9uIG9mIHRoZSBtZWFuaW5nIG9mIHJh bmRvbUFjY2VzcyBpcyBjb21wYXRpYmxlIHdpdGgKKwkgKiB0aGUgcHJlLTguMyBiZWhhdmlvciBv ZiB0dXBsZXN0b3Jlcy4KKwkgKi8KKwllZmxhZ3MgPSByYW5kb21BY2Nlc3MgPworCQkoRVhFQ19G TEFHX0JBQ0tXQVJEIHwgRVhFQ19GTEFHX1JFV0lORCkgOgorCQkoRVhFQ19GTEFHX1JFV0lORCk7 CisKKwlzdGF0ZSA9IHR1cGxlc3RvcmVfYmVnaW5fY29tbW9uKGVmbGFncywgaW50ZXJYYWN0LCBt YXhLQnl0ZXMpOworCXN0YXRlLT5kYXR1bVR5cGUgPSBkYXR1bVR5cGU7CisJZ2V0X3R5cGxlbmJ5 dmFsKHN0YXRlLT5kYXR1bVR5cGUsICZzdGF0ZS0+ZGF0dW1UeXBlTGVuLCAmc3RhdGUtPmRhdHVt VHlwZUJ5VmFsKTsKKworCXN0YXRlLT5jb3B5dHVwID0gY29weXR1cF9kYXR1bTsKKwlzdGF0ZS0+ d3JpdGV0dXAgPSB3cml0ZXR1cF9kYXR1bTsKKwlzdGF0ZS0+cmVhZHR1cCA9IHJlYWR0dXBfZGF0 dW07CisJc3RhdGUtPmxlbnR1cCA9IGxlbnR1cF9kYXR1bTsKIAogCXJldHVybiBzdGF0ZTsKIH0K QEAgLTQ0MywxNiArNDk4LDE5IEBAIHR1cGxlc3RvcmVfY2xlYXIoVHVwbGVzdG9yZXN0YXRlICpz dGF0ZSkKIAl7CiAJCWludDY0CQlhdmFpbE1lbSA9IHN0YXRlLT5hdmFpbE1lbTsKIAotCQkvKgot CQkgKiBCZWxvdywgd2UgcmVzZXQgdGhlIG1lbW9yeSBjb250ZXh0IGZvciBzdG9yaW5nIHR1cGxl cy4gIFRvIHNhdmUKLQkJICogZnJvbSBoYXZpbmcgdG8gYWx3YXlzIGNhbGwgR2V0TWVtb3J5Q2h1 bmtTcGFjZSgpIG9uIGFsbCBzdG9yZWQKLQkJICogdHVwbGVzLCB3ZSBhZGp1c3QgdGhlIGF2YWls TWVtIHRvIGZvcmdldCBhbGwgdGhlIHR1cGxlcyBhbmQganVzdAotCQkgKiByZWNhbGwgVVNFTUVN IGZvciB0aGUgc3BhY2UgdXNlZCBieSB0aGUgbWVtdHVwbGVzIGFycmF5LiAgSGVyZSB3ZQotCQkg KiBqdXN0IEFzc2VydCB0aGF0J3MgY29ycmVjdCBhbmQgdGhlIG1lbW9yeSB0cmFja2luZyBoYXNu J3QgZ29uZQotCQkgKiB3cm9uZyBhbnl3aGVyZS4KLQkJICovCi0JCWZvciAoaSA9IHN0YXRlLT5t ZW10dXBkZWxldGVkOyBpIDwgc3RhdGUtPm1lbXR1cGNvdW50OyBpKyspCi0JCQlhdmFpbE1lbSAr PSBHZXRNZW1vcnlDaHVua1NwYWNlKHN0YXRlLT5tZW10dXBsZXNbaV0pOworCQlpZiAoIXN0YXRl LT5kYXR1bVR5cGVCeVZhbCkKKwkJeworCQkJLyoKKwkJCSAqIEJlbG93LCB3ZSByZXNldCB0aGUg bWVtb3J5IGNvbnRleHQgZm9yIHN0b3JpbmcgdHVwbGVzLiAgVG8gc2F2ZQorCQkJICogZnJvbSBo YXZpbmcgdG8gYWx3YXlzIGNhbGwgR2V0TWVtb3J5Q2h1bmtTcGFjZSgpIG9uIGFsbCBzdG9yZWQK KwkJCSAqIHR1cGxlcywgd2UgYWRqdXN0IHRoZSBhdmFpbE1lbSB0byBmb3JnZXQgYWxsIHRoZSB0 dXBsZXMgYW5kIGp1c3QKKwkJCSAqIHJlY2FsbCBVU0VNRU0gZm9yIHRoZSBzcGFjZSB1c2VkIGJ5 IHRoZSBtZW10dXBsZXMgYXJyYXkuICBIZXJlIHdlCisJCQkgKiBqdXN0IEFzc2VydCB0aGF0J3Mg Y29ycmVjdCBhbmQgdGhlIG1lbW9yeSB0cmFja2luZyBoYXNuJ3QgZ29uZQorCQkJICogd3Jvbmcg YW55d2hlcmUuCisJCQkgKi8KKwkJCWZvciAoaSA9IHN0YXRlLT5tZW10dXBkZWxldGVkOyBpIDwg c3RhdGUtPm1lbXR1cGNvdW50OyBpKyspCisJCQkJYXZhaWxNZW0gKz0gR2V0TWVtb3J5Q2h1bmtT cGFjZShzdGF0ZS0+bWVtdHVwbGVzW2ldKTsKKwkJfQogCiAJCWF2YWlsTWVtICs9IEdldE1lbW9y eUNodW5rU3BhY2Uoc3RhdGUtPm1lbXR1cGxlcyk7CiAKQEAgLTc3Niw2ICs4MzQsMjUgQEAgdHVw bGVzdG9yZV9wdXR0dXBsZShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBIZWFwVHVwbGUgdHVwbGUp CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiB9CiAKKy8qCisgKiBMaWtlIHR1cGxl c3RvcmVfcHV0dHVwbGVzbG90IGJ1dCBmb3Igc2luZ2xlIERhdHVtLgorICovCit2b2lkCit0dXBs ZXN0b3JlX3B1dGRhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIERhdHVtIGRhdHVtKQorewor CU1lbW9yeUNvbnRleHQgb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHN0YXRlLT5jb250 ZXh0KTsKKworCS8qCisJICogQ29weSB0aGUgRGF0dW0uICAoTXVzdCBkbyB0aGlzIGV2ZW4gaW4g V1JJVEVGSUxFIGNhc2UuICBOb3RlIHRoYXQKKwkgKiBDT1BZVFVQIGluY2x1ZGVzIFVTRU1FTSwg c28gd2UgbmVlZG4ndCBkbyB0aGF0IGhlcmUuKQorCSAqLworCWRhdHVtID0gUG9pbnRlckdldERh dHVtKENPUFlUVVAoc3RhdGUsIERhdHVtR2V0UG9pbnRlcihkYXR1bSkpKTsKKworCXR1cGxlc3Rv cmVfcHV0dHVwbGVfY29tbW9uKHN0YXRlLCBEYXR1bUdldFBvaW50ZXIoZGF0dW0pKTsKKworCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworfQorCiAvKgogICogU2ltaWxhciB0byB0dXBs ZXN0b3JlX3B1dHR1cGxlKCksIGJ1dCB3b3JrIGZyb20gdmFsdWVzICsgbnVsbHMgYXJyYXlzLgog ICogVGhpcyBhdm9pZHMgYW4gZXh0cmEgdHVwbGUtY29uc3RydWN0aW9uIG9wZXJhdGlvbi4KQEAg LTEwMjcsMTAgKzExMDQsMTAgQEAgdHVwbGVzdG9yZV9nZXR0dXBsZShUdXBsZXN0b3Jlc3RhdGUg KnN0YXRlLCBib29sIGZvcndhcmQsCiAJCQkvKiBGQUxMVEhST1VHSCAqLwogCiAJCWNhc2UgVFNT X1JFQURGSUxFOgotCQkJKnNob3VsZF9mcmVlID0gdHJ1ZTsKKwkJCSpzaG91bGRfZnJlZSA9ICFz dGF0ZS0+ZGF0dW1UeXBlQnlWYWw7CiAJCQlpZiAoZm9yd2FyZCkKIAkJCXsKLQkJCQlpZiAoKHR1 cGxlbiA9IGdldGxlbihzdGF0ZSwgdHJ1ZSkpICE9IDApCisJCQkJaWYgKCh0dXBsZW4gPSBMRU5U VVAoc3RhdGUsIHRydWUpKSAhPSAwKQogCQkJCXsKIAkJCQkJdHVwID0gUkVBRFRVUChzdGF0ZSwg dHVwbGVuKTsKIAkJCQkJcmV0dXJuIHR1cDsKQEAgLTEwNTksNyArMTEzNiw3IEBAIHR1cGxlc3Rv cmVfZ2V0dHVwbGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAogCQkJCUFz c2VydCghc3RhdGUtPnRydW5jYXRlZCk7CiAJCQkJcmV0dXJuIE5VTEw7CiAJCQl9Ci0JCQl0dXBs ZW4gPSBnZXRsZW4oc3RhdGUsIGZhbHNlKTsKKwkJCXR1cGxlbiA9IExFTlRVUChzdGF0ZSwgZmFs c2UpOwogCiAJCQlpZiAocmVhZHB0ci0+ZW9mX3JlYWNoZWQpCiAJCQl7CkBAIC0xMDkwLDcgKzEx NjcsNyBAQCB0dXBsZXN0b3JlX2dldHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wg Zm9yd2FyZCwKIAkJCQkJQXNzZXJ0KCFzdGF0ZS0+dHJ1bmNhdGVkKTsKIAkJCQkJcmV0dXJuIE5V TEw7CiAJCQkJfQotCQkJCXR1cGxlbiA9IGdldGxlbihzdGF0ZSwgZmFsc2UpOworCQkJCXR1cGxl biA9IExFTlRVUChzdGF0ZSwgZmFsc2UpOwogCQkJfQogCiAJCQkvKgpAQCAtMTE1Miw2ICsxMjI5 LDI1IEBAIHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJv b2wgZm9yd2FyZCwKIAl9CiB9CiAKK2V4dGVybiBib29sIHR1cGxlc3RvcmVfZ2V0ZGF0dW0oVHVw bGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAorCQkJCQkJCQlib29sICpzaG91bGRf ZnJlZSwgRGF0dW0gKnJlc3VsdCkKK3sKKwlEYXR1bSBkYXR1bTsKKwkqc2hvdWxkX2ZyZWUgPSBm YWxzZTsKKworCWRhdHVtID0gKERhdHVtKSB0dXBsZXN0b3JlX2dldHR1cGxlKHN0YXRlLCBmb3J3 YXJkLCBzaG91bGRfZnJlZSk7CisJaWYgKGRhdHVtKQorCXsKKwkJKnJlc3VsdCA9ZGF0dW07CisJ CXJldHVybiB0cnVlOworCX0KKwllbHNlCisJeworCQkqcmVzdWx0ID0gUG9pbnRlckdldERhdHVt KE5VTEwpOworCQlyZXR1cm4gZmFsc2U7CisJfQorfQorCiAvKgogICogdHVwbGVzdG9yZV9hZHZh bmNlIC0gZXhwb3J0ZWQgZnVuY3Rpb24gdG8gYWRqdXN0IHBvc2l0aW9uIHdpdGhvdXQgZmV0Y2hp bmcKICAqCkBAIC0xNDYwLDggKzE1NTYsMTEgQEAgdHVwbGVzdG9yZV90cmltKFR1cGxlc3RvcmVz dGF0ZSAqc3RhdGUpCiAJLyogUmVsZWFzZSBuby1sb25nZXItbmVlZGVkIHR1cGxlcyAqLwogCWZv ciAoaSA9IHN0YXRlLT5tZW10dXBkZWxldGVkOyBpIDwgbnJlbW92ZTsgaSsrKQogCXsKLQkJRlJF RU1FTShzdGF0ZSwgR2V0TWVtb3J5Q2h1bmtTcGFjZShzdGF0ZS0+bWVtdHVwbGVzW2ldKSk7Ci0J CXBmcmVlKHN0YXRlLT5tZW10dXBsZXNbaV0pOworCQlpZiAoIXN0YXRlLT5kYXR1bVR5cGVCeVZh bCkKKwkJeworCQkJRlJFRU1FTShzdGF0ZSwgR2V0TWVtb3J5Q2h1bmtTcGFjZShzdGF0ZS0+bWVt dHVwbGVzW2ldKSk7CisJCQlwZnJlZShzdGF0ZS0+bWVtdHVwbGVzW2ldKTsKKwkJfQogCQlzdGF0 ZS0+bWVtdHVwbGVzW2ldID0gTlVMTDsKIAl9CiAJc3RhdGUtPm1lbXR1cGRlbGV0ZWQgPSBucmVt b3ZlOwpAQCAtMTU1NiwyNSArMTY1NSw2IEBAIHR1cGxlc3RvcmVfaW5fbWVtb3J5KFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUpCiAJcmV0dXJuIChzdGF0ZS0+c3RhdHVzID09IFRTU19JTk1FTSk7CiB9 CiAKLQotLyoKLSAqIFRhcGUgaW50ZXJmYWNlIHJvdXRpbmVzCi0gKi8KLQotc3RhdGljIHVuc2ln bmVkIGludAotZ2V0bGVuKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spCi17Ci0J dW5zaWduZWQgaW50IGxlbjsKLQlzaXplX3QJCW5ieXRlczsKLQotCW5ieXRlcyA9IEJ1ZkZpbGVS ZWFkTWF5YmVFT0Yoc3RhdGUtPm15ZmlsZSwgJmxlbiwgc2l6ZW9mKGxlbiksIGVvZk9LKTsKLQlp ZiAobmJ5dGVzID09IDApCi0JCXJldHVybiAwOwotCWVsc2UKLQkJcmV0dXJuIGxlbjsKLX0KLQot CiAvKgogICogUm91dGluZXMgc3BlY2lhbGl6ZWQgZm9yIEhlYXBUdXBsZSBjYXNlCiAgKgpAQCAt MTU4NSw2ICsxNjY1LDE5IEBAIGdldGxlbihUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVv Zk9LKQogICogdG8gd3JpdGUgdGhhdCBzZXBhcmF0ZWx5LgogICovCiAKK3N0YXRpYyB1bnNpZ25l ZCBpbnQKK2xlbnR1cF9oZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spCit7 CisJdW5zaWduZWQgaW50IGxlbjsKKwlzaXplX3QJCW5ieXRlczsKKworCW5ieXRlcyA9IEJ1ZkZp bGVSZWFkTWF5YmVFT0Yoc3RhdGUtPm15ZmlsZSwgJmxlbiwgc2l6ZW9mKGxlbiksIGVvZk9LKTsK KwlpZiAobmJ5dGVzID09IDApCisJCXJldHVybiAwOworCWVsc2UKKwkJcmV0dXJuIGxlbjsKK30K Kwogc3RhdGljIHZvaWQgKgogY29weXR1cF9oZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZv aWQgKnR1cCkKIHsKQEAgLTE2MzEsMyArMTcyNCw5OCBAQCByZWFkdHVwX2hlYXAoVHVwbGVzdG9y ZXN0YXRlICpzdGF0ZSwgdW5zaWduZWQgaW50IGxlbikKIAkJQnVmRmlsZVJlYWRFeGFjdChzdGF0 ZS0+bXlmaWxlLCAmdHVwbGVuLCBzaXplb2YodHVwbGVuKSk7CiAJcmV0dXJuIHR1cGxlOwogfQor CisvKgorICogUm91dGluZXMgc3BlY2lhbGl6ZWQgZm9yIERhdHVtIGNhc2UuCisgKgorICogSGFu ZGxlcyBib3RoIGZpeGVkIGFuZCB2YXJpYWJsZS1sZW5ndGggRGF0dW1zIGVmZmljaWVudGx5Ogor ICogLSBGaXhlZC1sZW5ndGg6IHN0b3JlcyByYXcgYnl0ZXMgd2l0aG91dCBsZW5ndGggcHJlZml4 CisgKiAtIFZhcmlhYmxlLWxlbmd0aDogaW5jbHVkZXMgbGVuZ3RoIHByZWZpeCAoYW5kIHN1ZmZp eCBpZiBiYWNrd2FyZCBzY2FuKQorICogLSBCeS12YWx1ZSB0eXBlcyBoYW5kbGVkIGlubGluZSB3 aXRob3V0IGV4dHJhIGNvcHlpbmcKKyAqLworCitzdGF0aWMgdW5zaWduZWQgaW50CitsZW50dXBf ZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSykKK3sKKwl1bnNpZ25lZCBp bnQgbGVuOworCXNpemVfdAkJbmJ5dGVzOworCisJQXNzZXJ0KHN0YXRlLT5kYXR1bVR5cGUgIT0g SW52YWxpZE9pZCk7CisKKwlpZiAoc3RhdGUtPmRhdHVtVHlwZUxlbiA+IDApCisJCXJldHVybiBz dGF0ZS0+ZGF0dW1UeXBlTGVuOworCisJbmJ5dGVzID0gQnVmRmlsZVJlYWRNYXliZUVPRihzdGF0 ZS0+bXlmaWxlLCAmbGVuLCBzaXplb2YobGVuKSwgZW9mT0spOworCWlmIChuYnl0ZXMgPT0gMCkK KwkJcmV0dXJuIDA7CisJZWxzZQorCQlyZXR1cm4gbGVuOworfQorCitzdGF0aWMgdm9pZCAqCitj b3B5dHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQqIGRhdHVtKQoreworCUFz c2VydChzdGF0ZS0+ZGF0dW1UeXBlICE9IEludmFsaWRPaWQpOworCWlmIChzdGF0ZS0+ZGF0dW1U eXBlQnlWYWwpCisJCXJldHVybiBEYXR1bUdldFBvaW50ZXIoUG9pbnRlckdldERhdHVtKGRhdHVt KSk7CisJZWxzZQorCXsKKwkJRGF0dW0gZCA9IGRhdHVtQ29weShQb2ludGVyR2V0RGF0dW0oZGF0 dW0pLCBzdGF0ZS0+ZGF0dW1UeXBlQnlWYWwsIHN0YXRlLT5kYXR1bVR5cGVMZW4pOworCQlVU0VN RU0oc3RhdGUsIEdldE1lbW9yeUNodW5rU3BhY2UoRGF0dW1HZXRQb2ludGVyKGQpKSk7CisJCXJl dHVybiBEYXR1bUdldFBvaW50ZXIoZCk7CisJfQorfQorCitzdGF0aWMgdm9pZAord3JpdGV0dXBf ZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCogZGF0dW0pCit7CisJQXNzZXJ0KHN0 YXRlLT5kYXR1bVR5cGUgIT0gSW52YWxpZE9pZCk7CisJaWYgKHN0YXRlLT5kYXR1bVR5cGVCeVZh bCkKKwl7CisJCUFzc2VydChzdGF0ZS0+ZGF0dW1UeXBlTGVuID4gMCk7CisJCUJ1ZkZpbGVXcml0 ZShzdGF0ZS0+bXlmaWxlLCBkYXR1bSwgc3RhdGUtPmRhdHVtVHlwZUxlbik7CisJfQorCWVsc2UK Kwl7CisJCVNpemUgc2l6ZSA9IHN0YXRlLT5kYXR1bVR5cGVMZW47CisJCWlmIChzdGF0ZS0+ZGF0 dW1UeXBlTGVuIDwgMCkKKwkJeworCQkJQnVmRmlsZVdyaXRlKHN0YXRlLT5teWZpbGUsICZzaXpl LCBzaXplb2Yoc2l6ZSkpOworCQkJc2l6ZSA9IGRhdHVtR2V0U2l6ZShQb2ludGVyR2V0RGF0dW0o ZGF0dW0pLCBzdGF0ZS0+ZGF0dW1UeXBlQnlWYWwsIHN0YXRlLT5kYXR1bVR5cGVMZW4pOworCQl9 CisKKwkJQnVmRmlsZVdyaXRlKHN0YXRlLT5teWZpbGUsIGRhdHVtLCBzaXplKTsKKworCQkvKiBu ZWVkIHRyYWlsaW5nIGxlbmd0aCB3b3JkPyAqLworCQlpZiAoc3RhdGUtPmJhY2t3YXJkICYmIHN0 YXRlLT5kYXR1bVR5cGVMZW4gPCAwKQorCQkJQnVmRmlsZVdyaXRlKHN0YXRlLT5teWZpbGUsICZz aXplLCBzaXplb2Yoc2l6ZSkpOworCisJCUZSRUVNRU0oc3RhdGUsIEdldE1lbW9yeUNodW5rU3Bh Y2UoZGF0dW0pKTsKKwkJcGZyZWUoZGF0dW0pOworCX0KK30KKworc3RhdGljIHZvaWQqCityZWFk dHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGludCBsZW4pCit7CisJ QXNzZXJ0KHN0YXRlLT5kYXR1bVR5cGUgIT0gSW52YWxpZE9pZCk7CisJaWYgKHN0YXRlLT5kYXR1 bVR5cGVCeVZhbCkKKwl7CisJCURhdHVtIGRhdHVtID0gUG9pbnRlckdldERhdHVtKE5VTEwpOwor CQlBc3NlcnQoc3RhdGUtPmRhdHVtVHlwZUxlbiA+IDApOworCQlBc3NlcnQobGVuID09IHN0YXRl LT5kYXR1bVR5cGVMZW4pOworCQlCdWZGaWxlUmVhZEV4YWN0KHN0YXRlLT5teWZpbGUsICZkYXR1 bSwgc3RhdGUtPmRhdHVtVHlwZUxlbik7CisJCXJldHVybiBEYXR1bUdldFBvaW50ZXIoZGF0dW0p OworCX0KKwllbHNlCisJeworCQlEYXR1bSAqZGF0dW1zID0gcGFsbG9jKGxlbik7CisJCUJ1ZkZp bGVSZWFkRXhhY3Qoc3RhdGUtPm15ZmlsZSwgJmRhdHVtcywgbGVuKTsKKworCQkvKiBuZWVkIHRy YWlsaW5nIGxlbmd0aCB3b3JkPyAqLworCQlpZiAoc3RhdGUtPmJhY2t3YXJkICYmIHN0YXRlLT5k YXR1bVR5cGVMZW4gPCAwKQorCQkJQnVmRmlsZVJlYWRFeGFjdChzdGF0ZS0+bXlmaWxlLCAmbGVu LCBzaXplb2YobGVuKSk7CisKKwkJcmV0dXJuIERhdHVtR2V0UG9pbnRlcigqZGF0dW1zKTsKKwl9 Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXN0b3JlLmggYi9zcmMvaW5j bHVkZS91dGlscy90dXBsZXN0b3JlLmgKaW5kZXggODY1YmE3YjgyNjUuLjAzNDFjNDdiODUxIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXN0b3JlLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvdHVwbGVzdG9yZS5oCkBAIC0xLDE3ICsxLDE4IEBACiAvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqCiAgKiB0dXBsZXN0b3JlLmgKLSAqCSAgR2VuZXJhbGl6ZWQgcm91dGluZXMgZm9yIHRl bXBvcmFyeSB0dXBsZSBzdG9yYWdlLgorICoJICBHZW5lcmFsaXplZCByb3V0aW5lcyBmb3IgdGVt cG9yYXJ5IHN0b3JhZ2Ugb2YgdHVwbGVzIGFuZCBEYXR1bXMuCiAgKgotICogVGhpcyBtb2R1bGUg aGFuZGxlcyB0ZW1wb3Jhcnkgc3RvcmFnZSBvZiB0dXBsZXMgZm9yIHB1cnBvc2VzIHN1Y2gKLSAq IGFzIE1hdGVyaWFsaXplIG5vZGVzLCBoYXNoam9pbiBiYXRjaCBmaWxlcywgZXRjLiAgSXQgaXMg ZXNzZW50aWFsbHkKLSAqIGEgZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0dXBsZXNvcnQuYzsgaXQg ZG9lcyBubyBzb3J0aW5nIG9mIHR1cGxlcwotICogYnV0IGNhbiBvbmx5IHN0b3JlIGFuZCByZWd1 cmdpdGF0ZSBhIHNlcXVlbmNlIG9mIHR1cGxlcy4gIEhvd2V2ZXIsCi0gKiBiZWNhdXNlIG5vIHNv cnQgaXMgcmVxdWlyZWQsIGl0IGlzIGFsbG93ZWQgdG8gc3RhcnQgcmVhZGluZyB0aGUgc2VxdWVu Y2UKLSAqIGJlZm9yZSBpdCBoYXMgYWxsIGJlZW4gd3JpdHRlbi4gIFRoaXMgaXMgcGFydGljdWxh cmx5IHVzZWZ1bCBmb3IgY3Vyc29ycywKLSAqIGJlY2F1c2UgaXQgYWxsb3dzIHJhbmRvbSBhY2Nl c3Mgd2l0aGluIHRoZSBhbHJlYWR5LXNjYW5uZWQgcG9ydGlvbiBvZgotICogYSBxdWVyeSB3aXRo b3V0IGhhdmluZyB0byBwcm9jZXNzIHRoZSB1bmRlcmx5aW5nIHNjYW4gdG8gY29tcGxldGlvbi4K LSAqIEFsc28sIGl0IGlzIHBvc3NpYmxlIHRvIHN1cHBvcnQgbXVsdGlwbGUgaW5kZXBlbmRlbnQg cmVhZCBwb2ludGVycy4KKyAqIFRoaXMgbW9kdWxlIGhhbmRsZXMgdGVtcG9yYXJ5IHN0b3JhZ2Ug b2YgZWl0aGVyIHR1cGxlcyBvciBzaW5nbGUKKyAqIERhdHVtIHZhbHVlcyBmb3IgcHVycG9zZXMg c3VjaCBhcyBNYXRlcmlhbGl6ZSBub2RlcywgaGFzaGpvaW4gYmF0Y2gKKyAqIGZpbGVzLCBldGMu IEl0IGlzIGVzc2VudGlhbGx5IGEgZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0dXBsZXNvcnQuYzsK KyAqIGl0IGRvZXMgbm8gc29ydGluZyBvZiB0dXBsZXMgYnV0IGNhbiBvbmx5IHN0b3JlIGFuZCBy ZWd1cmdpdGF0ZSBhIHNlcXVlbmNlCisgKiBvZiB0dXBsZXMuICBIb3dldmVyLCBiZWNhdXNlIG5v IHNvcnQgaXMgcmVxdWlyZWQsIGl0IGlzIGFsbG93ZWQgdG8gc3RhcnQKKyAqIHJlYWRpbmcgdGhl IHNlcXVlbmNlIGJlZm9yZSBpdCBoYXMgYWxsIGJlZW4gd3JpdHRlbi4KKyAqCisgKiBUaGlzIGlz IHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGN1cnNvcnMsIGJlY2F1c2UgaXQgYWxsb3dzIHJhbmRv bSBhY2Nlc3MKKyAqIHdpdGhpbiB0aGUgYWxyZWFkeS1zY2FubmVkIHBvcnRpb24gb2YgYSBxdWVy eSB3aXRob3V0IGhhdmluZyB0byBwcm9jZXNzCisgKiB0aGUgdW5kZXJseWluZyBzY2FuIHRvIGNv bXBsZXRpb24uCiAgKgogICogQSB0ZW1wb3JhcnkgZmlsZSBpcyB1c2VkIHRvIGhhbmRsZSB0aGUg ZGF0YSBpZiBpdCBleGNlZWRzIHRoZQogICogc3BhY2UgbGltaXQgc3BlY2lmaWVkIGJ5IHRoZSBj YWxsZXIuCkBAIC0zOSwxNCArNDAsMTMgQEAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgVHVwbGVzdG9y ZXN0YXRlIFR1cGxlc3RvcmVzdGF0ZTsKIAotLyoKLSAqIEN1cnJlbnRseSB3ZSBvbmx5IG5lZWQg dG8gc3RvcmUgTWluaW1hbFR1cGxlcywgYnV0IGl0IHdvdWxkIGJlIGVhc3kKLSAqIHRvIHN1cHBv cnQgdGhlIHNhbWUgYmVoYXZpb3IgZm9yIEluZGV4VHVwbGVzIGFuZC9vciBiYXJlIERhdHVtcy4K LSAqLwotCiBleHRlcm4gVHVwbGVzdG9yZXN0YXRlICp0dXBsZXN0b3JlX2JlZ2luX2hlYXAoYm9v bCByYW5kb21BY2Nlc3MsCiAJCQkJCQkJCQkJCSAgYm9vbCBpbnRlclhhY3QsCiAJCQkJCQkJCQkJ CSAgaW50IG1heEtCeXRlcyk7CitleHRlcm4gVHVwbGVzdG9yZXN0YXRlICp0dXBsZXN0b3JlX2Jl Z2luX2RhdHVtKE9pZCBkYXR1bVR5cGUsCisJCQkJCQkJCQkJCSBib29sIHJhbmRvbUFjY2VzcywK KwkJCQkJCQkJCQkJIGJvb2wgaW50ZXJYYWN0LAorCQkJCQkJCQkJCQkgaW50IG1heEtCeXRlcyk7 CiAKIGV4dGVybiB2b2lkIHR1cGxlc3RvcmVfc2V0X2VmbGFncyhUdXBsZXN0b3Jlc3RhdGUgKnN0 YXRlLCBpbnQgZWZsYWdzKTsKIApAQCAtNTUsNiArNTUsNyBAQCBleHRlcm4gdm9pZCB0dXBsZXN0 b3JlX3B1dHR1cGxlc2xvdChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLAogZXh0ZXJuIHZvaWQgdHVw bGVzdG9yZV9wdXR0dXBsZShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBIZWFwVHVwbGUgdHVwbGUp OwogZXh0ZXJuIHZvaWQgdHVwbGVzdG9yZV9wdXR2YWx1ZXMoVHVwbGVzdG9yZXN0YXRlICpzdGF0 ZSwgVHVwbGVEZXNjIHRkZXNjLAogCQkJCQkJCQkgY29uc3QgRGF0dW0gKnZhbHVlcywgY29uc3Qg Ym9vbCAqaXNudWxsKTsKK2V4dGVybiB2b2lkIHR1cGxlc3RvcmVfcHV0ZGF0dW0oVHVwbGVzdG9y ZXN0YXRlICpzdGF0ZSwgRGF0dW0gZGF0dW0pOwogCiBleHRlcm4gaW50CXR1cGxlc3RvcmVfYWxs b2NfcmVhZF9wb2ludGVyKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGludCBlZmxhZ3MpOwogCkBA IC03Miw2ICs3Myw4IEBAIGV4dGVybiBib29sIHR1cGxlc3RvcmVfaW5fbWVtb3J5KFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUpOwogCiBleHRlcm4gYm9vbCB0dXBsZXN0b3JlX2dldHR1cGxlc2xvdChU dXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQsCiAJCQkJCQkJCQlib29sIGNvcHks IFR1cGxlVGFibGVTbG90ICpzbG90KTsKK2V4dGVybiBib29sIHR1cGxlc3RvcmVfZ2V0ZGF0dW0o VHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAorCQkJCQkJCQlib29sICpzaG91 bGRfZnJlZSwgRGF0dW0gKnJlc3VsdCk7CiAKIGV4dGVybiBib29sIHR1cGxlc3RvcmVfYWR2YW5j ZShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQpOwogCi0tIAoyLjQzLjAKCg== --00000000000027fe8906381ae2a2--