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 1tVLYN-007URa-Nq for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Jan 2025 02:12:16 +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 1tVLYN-00BAHf-4C for pgsql-hackers@arkaria.postgresql.org; Wed, 08 Jan 2025 02:12:14 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tVLYL-00BAFC-QD for pgsql-hackers@lists.postgresql.org; Wed, 08 Jan 2025 02:12:14 +0000 Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tVLYH-000Qqz-2Y for pgsql-hackers@postgresql.org; Wed, 08 Jan 2025 02:12:12 +0000 Received: by mail-ed1-x52e.google.com with SMTP id 4fb4d7f45d1cf-5d3bdccba49so29667113a12.1 for ; Tue, 07 Jan 2025 18:12:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736302329; x=1736907129; 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=AvO3Hpaty1WVxHVP5E0X7nbE0IcL8PbjjfTY8cLRpf4=; b=CCpJLkIEq85cQ5FCDTYScZim+KxMSSfWNfP0WVJbuVmOG4sy8grl5w9UEgbeFZsIcH aQNcjpHegVwqUDEx0oyCAFdWs3ZMzJZooCMF/8P6IOvGzhwVI7Y3GdCms6clsGC5RDdd ykjxjqvaoVQlomyATw5yAtN53zFS28PiRXZ3NyE7ipvkyoYOfGWALiSQ4JwN4wTamx6p flWR19wv2EoHGPp5HxhV4b4uo6x6hTUViGzYK2XZEsQx21fBYXwhsHqVXnkP+16Mj/8G k9sejeq25mvv9ckgjNyktlbpv3Mu5XMfUCHI/P7oFWrRDdmXWTJU7PsNLGmG6jj5gAMt givg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736302329; x=1736907129; 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=AvO3Hpaty1WVxHVP5E0X7nbE0IcL8PbjjfTY8cLRpf4=; b=nTXeNdFa2LfTdF6majPpIvElol8S2nb5mByuQv8ojUNA+DcQ5IH5flawQHVm070e0i y/90M0TNVm4T4YosLSQ8AkCjpQjTRPuqfViNXm+AP6+liiKdXXc9CxwMjrsZmQBi7fjg BvV//Mm/u9WYrb3ToOioEVkDYHu6E5G1kpbsRMh8HYUdJa3WXiN0Q7EO7i0IuC7AP/69 BRhBE8yPoaqUj9bRwyyxOYAJ2vfOgfEmMjaEsdt/lclQzHqDrfaTZ1YsAs0YhHeH8l1+ cXuItDOVpOjzUoRgjCikisMdX3WBSM8tOitZFyfN634SjF6pmNS9vHNaKh1vELGGvvcg 4ETQ== X-Forwarded-Encrypted: i=1; AJvYcCXidxDovUInSSeZVK+OO6vsvlY3xPVxDTh74UZC3Qm7LqjgcKUApbBlW0iJMNvz22Yy+UZXiz3YgEQUBqPJ@postgresql.org X-Gm-Message-State: AOJu0YzeJykusbPB2APPP8nubJbsGi0qrTnHIyL1+LrDCK+Eh0wozzob o3G/Ll8w9ccg/vvctbz3PdO+FTq5IDIf/Kv+Z3EpzWYIIqgB129LTuy3TlTkCJOxkO7oxEjhEft CTjC2/YKvt787+BnhSbSKuNrTHgk= X-Gm-Gg: ASbGncsi9oehM3DudRxYH3wpqjSjP/3twYRkJ2iT1ztVjokIRawfE4Leey9SfdG8mV8 88A3AXb0Ja04Xm0Wjg8pJvzZ+w0XuvrdeHNNvvIngLXturbUk9INXiQLZBQk3BzuXrdX1R+SH X-Google-Smtp-Source: AGHT+IFyTUkizuUqEzM3Xs3UDpfPN+2+qxkpkYkmFsDfotIWnGLZOfSOKjuwcWSuI5tHz/Mf42fh29vrTVskBksRW4M= X-Received: by 2002:a05:6402:2550:b0:5d3:cd85:36c6 with SMTP id 4fb4d7f45d1cf-5d972e4cd30mr802532a12.24.1736302328345; Tue, 07 Jan 2025 18:12:08 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Michail Nikolaev Date: Wed, 8 Jan 2025 03:12:00 +0100 X-Gm-Features: AbW1kvYIdMRi52Tl37yvsI-FEHuNupuh5eWcATXwj3ZxDvkTYXRgAzxH7lSBGao Message-ID: Subject: Re: Revisiting {CREATE INDEX, REINDEX} CONCURRENTLY improvements To: Matthias van de Meent Cc: Michael Paquier , PostgreSQL Hackers , Andrey Borodin , Melanie Plageman Content-Type: multipart/mixed; boundary="000000000000813841062b2863c9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000813841062b2863c9 Content-Type: multipart/alternative; boundary="000000000000813840062b2863c7" --000000000000813840062b2863c7 Content-Type: text/plain; charset="UTF-8" Hello, everyone! Some updates: * Rebased. * Resolved the issue with integer overflow in memory calculation, which caused a performance drop during sorting. * Fixed a broken tag in the documentation. * Added per-tuple progress tracking in the validation phase. Additionally, the anomaly with the GIST index has been clarified. It occurs because the first phase is slow, and many tuples need to be inserted during the validation phase. For each tuple, heapam_index_fetch_tuple is called, even for those on the same page. It might be possible to implement a batched version of heapam_index_fetch_tuple to handle multiple tuples on the same page and mitigate this issue. Best regards, Mikhail. --000000000000813840062b2863c7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello, everyone!

Some update= s:

* Rebased.
* Resolved the issue with integer overflow in memor= y calculation, which caused a performance drop during sorting.
* Fixed a= broken tag in the documentation.
* Added per-tuple progress tracking in= the validation phase.

Additionally, the anomaly w= ith the GIST index has been clarified.

It occurs b= ecause the first phase is slow, and many tuples need to be inserted during = the validation phase.
For each tuple, heapam_index_fetch_tuple is= called, even for those on the same page.
It might be possible to= implement a batched version of heapam_index_fetch_tuple to handle multiple= tuples on the same page and mitigate this issue.

= Best regards,
Mikhail.

X-Attachment-Id: f_m5n7ah9k3 RnJvbSAwMDMyMzMzMThlN2U5MmNmZDAyOWUxYWUyZDdhYjI5NTlhMjUxY2IzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDoxNDozOCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjExIDA4 LzExXSBDb25jdXJyZW50bHkgYnVpbHQgaW5kZXggdmFsaWRhdGlvbiB1c2VzIGZyZXNoCiBzbmFw c2hvdHMKClRoaXMgY29tbWl0IG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MgZm9yIGNv bmN1cnJlbnRseSBidWlsdCBpbmRleGVzIHRvIHVzZSBmcmVzaCBzbmFwc2hvdHMgaW5zdGVhZCBv ZiBhIHNpbmdsZSByZWZlcmVuY2Ugc25hcHNob3QuCgpUaGUgcHJldmlvdXMgYXBwcm9hY2ggb2Yg dXNpbmcgYSBzaW5nbGUgcmVmZXJlbmNlIHNuYXBzaG90IGNvdWxkIGxlYWQgdG8gaXNzdWVzIHdp dGggeG1pbiBwcm9wYWdhdGlvbi4gU3BlY2lmaWNhbGx5LCBpZiB0aGUgaW5kZXggYnVpbGQgdG9v ayBhIGxvbmcgdGltZSwgdGhlIHJlZmVyZW5jZSBzbmFwc2hvdCdzIHhtaW4gY291bGQgYmVjb21l IG91dGRhdGVkLCBjYXVzaW5nIHRoZSBpbmRleCB0byBtaXNzIHR1cGxlcyB0aGF0IHdlcmUgZGVs ZXRlZCBieSB0cmFuc2FjdGlvbnMgdGhhdCBjb21taXR0ZWQgYWZ0ZXIgdGhlIHJlZmVyZW5jZSBz bmFwc2hvdCB3YXMgdGFrZW4uCgpUbyBhZGRyZXNzIHRoaXMsIHRoZSB2YWxpZGF0aW9uIHByb2Nl c3Mgbm93IHBlcmlvZGljYWxseSByZXBsYWNlcyB0aGUgc25hcHNob3Qgd2l0aCBhIG5ld2VyIG9u ZS4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGluZGV4J3MgeG1pbiBpcyBrZXB0IHVwLXRvLWRhdGUg YW5kIHRoYXQgYWxsIHJlbGV2YW50IHR1cGxlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIGluZGV4LgoK VGhlIGludGVydmFsIGZvciByZXBsYWNpbmcgdGhlIHNuYXBzaG90IGlzIGNvbnRyb2xsZWQgYnkg dGhlIGBWQUxJREFURV9JTkRFWF9TTkFQU0hPVF9SRVNFVF9JTlRFUlZBTGAgY29uc3RhbnQsIHdo aWNoIGlzIGN1cnJlbnRseSBzZXQgdG8gMTAwMCBtaWxsaXNlY29uZHMuCi0tLQogZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbCAgICAgICB8IDExICsrKystLQogZG9jL3NyYy9zZ21s L3JlZi9yZWluZGV4LnNnbWwgICAgICAgICAgICB8IDExICsrKy0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvUkVBRE1FLkhPVCAgICAgICB8IDE1ICsrKysrLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIHwgNDUgKysrKysrKysrKysrKysrKysrLS0tLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgICAgfCAxMiArKysrKy0tCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgIHwgMTkgKysrKysrKy0tLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9hY2Nl c3MvdHJhbnNhbS5oICAgICAgICAgICAgIHwgMTUgKysrKysrKysKIDkgZmlsZXMgY2hhbmdlZCwg MTAwIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRl eC5zZ21sCmluZGV4IGUzMzM0NWY2YTM0Li41NDU2NjIyM2NiMCAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfaW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9pbmRleC5zZ21sCkBAIC04NjgsOSArODY4LDE0IEBAIEluZGV4ZXM6CiAgIDwvcGFyYT4KIAog ICA8cGFyYT4KLSAgIExpa2UgYW55IGxvbmctcnVubmluZyB0cmFuc2FjdGlvbiwgPGNvbW1hbmQ+ Q1JFQVRFIElOREVYPC9jb21tYW5kPiBvbiBhCi0gICB0YWJsZSBjYW4gYWZmZWN0IHdoaWNoIHR1 cGxlcyBjYW4gYmUgcmVtb3ZlZCBieSBjb25jdXJyZW50Ci0gICA8Y29tbWFuZD5WQUNVVU08L2Nv bW1hbmQ+IG9uIGFueSBvdGhlciB0YWJsZS4KKyAgIER1ZSB0byB0aGUgaW1wcm92ZWQgaW1wbGVt ZW50YXRpb24gdXNpbmcgcGVyaW9kaWNhbGx5IHJlZnJlc2hlZCBzbmFwc2hvdHMgYW5kCisgICBh dXhpbGlhcnkgaW5kZXhlcywgY29uY3VycmVudCBpbmRleCBidWlsZHMgaGF2ZSBtaW5pbWFsIGlt cGFjdCBvbiBjb25jdXJyZW50CisgICA8Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+IG9wZXJhdGlv bnMuIFRoZSBzeXN0ZW0gYXV0b21hdGljYWxseSBhZHZhbmNlcyBpdHMKKyAgIGludGVybmFsIHRy YW5zYWN0aW9uIGhvcml6b24gZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLCBhbGxvd2luZworICAg PGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiB0byByZW1vdmUgZGVhZCB0dXBsZXMgb24gb3RoZXIg dGFibGVzIHdpdGhvdXQKKyAgIGhhdmluZyB0byB3YWl0IGZvciB0aGUgZW50aXJlIGluZGV4IGJ1 aWxkIHRvIGNvbXBsZXRlLiBPbmx5IGR1cmluZyB2ZXJ5IGJyaWVmCisgICBwZXJpb2RzIHdoZW4g c25hcHNob3RzIGFyZSBiZWluZyByZWZyZXNoZWQgbWlnaHQgdGhlcmUgYmUgYW55IHRlbXBvcmFy eSBlZmZlY3QKKyAgIG9uIGNvbmN1cnJlbnQgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBvcGVy YXRpb25zLgogICA8L3BhcmE+CiAKICAgPHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCmluZGV4IDZh MDU2MjBiZDY3Li42NGM2MzNlMDM5OCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZWlu ZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKQEAgLTQ5NSwxMCAr NDk1LDEzIEBAIEluZGV4ZXM6CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgotICAgIExpa2UgYW55 IGxvbmctcnVubmluZyB0cmFuc2FjdGlvbiwgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFuZD4gb24g YSB0YWJsZQotICAgIGNhbiBhZmZlY3Qgd2hpY2ggdHVwbGVzIGNhbiBiZSByZW1vdmVkIGJ5IGNv bmN1cnJlbnQKLSAgICA8Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+IG9uIGFueSBvdGhlciB0YWJs ZS4KLSAgIDwvcGFyYT4KKyAgICA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFu ZD4gaGFzIG1pbmltYWwKKyAgICBpbXBhY3Qgb24gd2hpY2ggdHVwbGVzIGNhbiBiZSByZW1vdmVk IGJ5IGNvbmN1cnJlbnQgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPgorICAgIG9wZXJhdGlvbnMg b24gb3RoZXIgdGFibGVzLiBUaGlzIGlzIGFjaGlldmVkIHRocm91Z2ggcGVyaW9kaWMgc25hcHNo b3QKKyAgICByZWZyZXNoZXMgYW5kIHRoZSB1c2Ugb2YgYXV4aWxpYXJ5IGluZGV4ZXMgZHVyaW5n IHRoZSByZWJ1aWxkIHByb2Nlc3MsCisgICAgYWxsb3dpbmcgdGhlIHN5c3RlbSB0byBhZHZhbmNl IGl0cyB0cmFuc2FjdGlvbiBob3Jpem9uIHJlZ3VsYXJseSByYXRoZXIgdGhhbgorICAgIG1haW50 YWluaW5nIGEgc2luZ2xlIGxvbmctcnVubmluZyBzbmFwc2hvdC4KKyAgPC9wYXJhPgogCiAgICA8 cGFyYT4KICAgICA8Y29tbWFuZD5SRUlOREVYIFNZU1RFTTwvY29tbWFuZD4gZG9lcyBub3Qgc3Vw cG9ydApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggODI5ZGFkMTE5NGUuLmQ0MTYw OWM5N2NkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTM3NSw2ICszNzUsMTEg QEAgY29uc3RyYWludCBvbiB3aGljaCB1cGRhdGVzIGNhbiBiZSBIT1QuICBPdGhlciB0cmFuc2Fj dGlvbnMgbXVzdCBpbmNsdWRlCiBzdWNoIGFuIGluZGV4IHdoZW4gZGV0ZXJtaW5pbmcgSE9ULXNh ZmV0eSBvZiB1cGRhdGVzLCBldmVuIHRob3VnaCB0aGV5CiBtdXN0IGlnbm9yZSBpdCBmb3IgYm90 aCBpbnNlcnRpb24gYW5kIHNlYXJjaGluZyBwdXJwb3Nlcy4KIAorQWxzbywgc3BlY2lhbCBhdXhp bGlhcnkgaW5kZXggaXMgY3JlYXRlZCB0aGUgc2FtZSB3YXkuIEl0IG1hcmtlZCBhcworInJlYWR5 IGZvciBpbnNlcnRzIiB3aXRob3V0IGFueSBhY3R1YWwgdGFibGUgc2Nhbi4gSXRzIHB1cnBvc2Ug aXMgY29sbGVjdAorbmV3IHR1cGxlcyBpbnNlcnRlZCBpbnRvIHRhYmxlIHdoaWxlIG91ciB0YXJn ZXQgaW5kZXggaXMgc3RpbGwgIm5vdCByZWFkeQorZm9yIGluc2VydHMiCisKIFdlIG11c3QgZG8g dGhpcyB0byBhdm9pZCBtYWtpbmcgaW5jb3JyZWN0IGluZGV4IGVudHJpZXMuICBGb3IgZXhhbXBs ZSwKIHN1cHBvc2Ugd2UgYXJlIGJ1aWxkaW5nIGFuIGluZGV4IG9uIGNvbHVtbiBYIGFuZCB3ZSBt YWtlIGFuIGluZGV4IGVudHJ5IGZvcgogYSBub24tSE9UIHR1cGxlIHdpdGggWD0xLiAgVGhlbiBz b21lIG90aGVyIGJhY2tlbmQsIHVuYXdhcmUgdGhhdCBYIGlzIGFuCkBAIC0zOTQsMTQgKzM5OSwx NCBAQCBBcyBhYm92ZSwgd2UgcG9pbnQgdGhlIGluZGV4IGVudHJ5IGF0IHRoZSByb290IG9mIHRo ZSBIT1QtdXBkYXRlIGNoYWluIGJ1dCB3ZQogdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUgbGl2 ZSB0dXBsZS4KIAogV2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3IgaW5zZXJ0cyAoYnV0IHN0aWxs IG5vdCByZWFkeSBmb3IgcmVhZHMpIHRoZW4KLXdlIGFnYWluIHdhaXQgZm9yIHRyYW5zYWN0aW9u cyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB3ZSB0YWtlCi1hIHNlY29uZCByZWZl cmVuY2Ugc25hcHNob3QgYW5kIHZhbGlkYXRlIHRoZSBpbmRleC4gIFRoaXMgc2VhcmNoZXMgZm9y Ci10dXBsZXMgbWlzc2luZyBmcm9tIHRoZSBpbmRleCwgYW5kIGluc2VydHMgYW55IG1pc3Npbmcg b25lcy4gIEFnYWluLAotdGhlIGluZGV4IGVudHJpZXMgaGF2ZSB0byBoYXZlIFRJRHMgZXF1YWwg dG8gSE9ULWNoYWluIHJvb3QgVElEcywgYnV0Cit3ZSBhZ2FpbiB3YWl0IGZvciB0cmFuc2FjdGlv bnMgd2hpY2ggaGF2ZSB0aGUgdGFibGUgb3Blbi4gIFRoZW4gdmFsaWRhdGUKK3RoZSBpbmRleC4g IFRoaXMgc2VhcmNoZXMgZm9yIHR1cGxlcyBtaXNzaW5nIGZyb20gdGhlIGluZGV4IGluIGF1eGls aWFyeQoraW5kZXgsIGFuZCBpbnNlcnRzIGFueSBtaXNzaW5nIG9uZXMgaWYgdGhlbSB2aXNpYmxl IHRvIGZyZXNoIHNuYXBzaG90LgorQWdhaW4sIHRoZSBpbmRleCBlbnRyaWVzIGhhdmUgdG8gaGF2 ZSBUSURzIGVxdWFsIHRvIEhPVC1jaGFpbiByb290IFRJRHMsIGJ1dAogdGhlIHZhbHVlIHRvIGJl IGluc2VydGVkIGlzIHRoZSBvbmUgZnJvbSB0aGUgbGl2ZSB0dXBsZS4KIAogVGhlbiB3ZSB3YWl0 IHVudGlsIGV2ZXJ5IHRyYW5zYWN0aW9uIHRoYXQgY291bGQgaGF2ZSBhIHNuYXBzaG90IG9sZGVy IHRoYW4KLXRoZSBzZWNvbmQgcmVmZXJlbmNlIHNuYXBzaG90IGlzIGZpbmlzaGVkLiAgVGhpcyBl bnN1cmVzIHRoYXQgbm9ib2R5IGlzCit0aGUgbGF0ZXN0IHVzZWQgc25hcHNob3QgaXMgZmluaXNo ZWQuICBUaGlzIGVuc3VyZXMgdGhhdCBub2JvZHkgaXMKIGFsaXZlIGFueSBsb25nZXIgd2hvIGNv dWxkIG5lZWQgdG8gc2VlIGFueSB0dXBsZXMgdGhhdCBtaWdodCBiZSBtaXNzaW5nCiBmcm9tIHRo ZSBpbmRleCwgYXMgd2VsbCBhcyBlbnN1cmluZyB0aGF0IG5vIG9uZSBjYW4gc2VlIGFueSBpbmNv bnNpc3RlbnQKIHJvd3MgaW4gYSBicm9rZW4gSE9UIGNoYWluICh0aGUgZmlyc3QgY29uZGl0aW9u IGlzIHN0cm9uZ2VyIHRoYW4gdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYwppbmRleCBkMmZhNDYzMjk4Yi4uZTk3NGY5NzliNTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTgwNCwyNyArMTgwNCwzNSBAQCBoZWFwYW1faW5k ZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCWZldGNoZWQ7CiAJ Ym9vbAkJCXR1cGxlc29ydF9lbXB0eSA9IGZhbHNlLAogCQkJCQlhdXh0dXBsZXNvcnRfZW1wdHkg PSBmYWxzZTsKKwlpbnN0cl90aW1lCQlzbmFwc2hvdFRpbWUsCisJCQkJCWN1cnJlbnRUaW1lOwog CiAJQXNzZXJ0KCFIYXZlUmVnaXN0ZXJlZE9yQWN0aXZlU25hcHNob3QoKSk7CiAJQXNzZXJ0KCFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAorI2RlZmluZSBWQUxJREFURV9J TkRFWF9TTkFQU0hPVF9SRVNFVF9JTlRFUlZBTAkxMDAwCiAJLyoKLQkgKiBOb3cgdGFrZSB0aGUg InJlZmVyZW5jZSBzbmFwc2hvdCIgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdG8gZmlsdGVyIGNhbmRp ZGF0ZQotCSAqIHR1cGxlcy4gIEJld2FyZSEgIFRoZXJlIG1pZ2h0IHN0aWxsIGJlIHNuYXBzaG90 cyBpbgotCSAqIHVzZSB0aGF0IHRyZWF0IHNvbWUgdHJhbnNhY3Rpb24gYXMgaW4tcHJvZ3Jlc3Mg dGhhdCBvdXIgcmVmZXJlbmNlCi0JICogc25hcHNob3QgdHJlYXRzIGFzIGNvbW1pdHRlZC4gIElm IHN1Y2ggYSByZWNlbnRseS1jb21taXR0ZWQgdHJhbnNhY3Rpb24KLQkgKiBkZWxldGVkIHR1cGxl cyBpbiB0aGUgdGFibGUsIHdlIHdpbGwgbm90IGluY2x1ZGUgdGhlbSBpbiB0aGUgaW5kZXg7IHll dAotCSAqIHRob3NlIHRyYW5zYWN0aW9ucyB3aGljaCBzZWUgdGhlIGRlbGV0aW5nIG9uZSBhcyBz dGlsbC1pbi1wcm9ncmVzcyB3aWxsCi0JICogZXhwZWN0IHN1Y2ggdHVwbGVzIHRvIGJlIHRoZXJl IG9uY2Ugd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQuCisJICogTm93IHRha2UgdGhlIGZpcnN0 IHNuYXBzaG90IHRoYXQgd2lsbCBiZSB1c2VkIGJ5IHRvIGZpbHRlciBjYW5kaWRhdGUKKwkgKiB0 dXBsZXMuIFdlIGFyZSBnb2luZyB0byByZXBsYWNlIGl0IGJ5IG5ld2VyIHNuYXBzaG90IGV2ZXJ5 IHNvIG9mdGVuCisJICogdG8gcHJvcGFnYXRlIGhvcml6b24uCisJICoKKwkgKiBCZXdhcmUhICBU aGVyZSBtaWdodCBzdGlsbCBiZSBzbmFwc2hvdHMgaW4gdXNlIHRoYXQgdHJlYXQgc29tZSB0cmFu c2FjdGlvbgorCSAqIGFzIGluLXByb2dyZXNzIHRoYXQgb3VyIHRlbXBvcmFyeSBzbmFwc2hvdCB0 cmVhdHMgYXMgY29tbWl0dGVkLgorCSAqCisJICogSWYgc3VjaCBhIHJlY2VudGx5LWNvbW1pdHRl ZCB0cmFuc2FjdGlvbiBkZWxldGVkIHR1cGxlcyBpbiB0aGUgdGFibGUsCisJICogd2Ugd2lsbCBu b3QgaW5jbHVkZSB0aGVtIGluIHRoZSBpbmRleDsgeWV0IHRob3NlIHRyYW5zYWN0aW9ucyB3aGlj aAorCSAqIHNlZSB0aGUgZGVsZXRpbmcgb25lIGFzIHN0aWxsLWluLXByb2dyZXNzIHdpbGwgZXhw ZWN0IHN1Y2ggdHVwbGVzIHRvCisJICogYmUgdGhlcmUgb25jZSB3ZSBtYXJrIHRoZSBpbmRleCBh cyB2YWxpZC4KIAkgKgogCSAqIFdlIHNvbHZlIHRoaXMgYnkgd2FpdGluZyBmb3IgYWxsIGVuZGFu Z2VyZWQgdHJhbnNhY3Rpb25zIHRvIGV4aXQgYmVmb3JlCi0JICogd2UgbWFyayB0aGUgaW5kZXgg YXMgdmFsaWQuCisJICogd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQsIGZvciB0aGF0IHJlYXNv biBsaW1pdFggaXMgc3VwcG9ydGVkLgogCSAqCiAJICogV2UgYWxzbyBzZXQgQWN0aXZlU25hcHNo b3QgdG8gdGhpcyBzbmFwLCBzaW5jZSBmdW5jdGlvbnMgaW4gaW5kZXhlcyBtYXkKIAkgKiBuZWVk IGEgc25hcHNob3QuCiAJICovCi0Jc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5z YWN0aW9uU25hcHNob3QoKSk7CisJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVz dFNuYXBzaG90KCkpOwogCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJSU5TVFJfVElN RV9TRVRfQ1VSUkVOVChzbmFwc2hvdFRpbWUpOwogCWxpbWl0WG1pbiA9IHNuYXBzaG90LT54bWlu OwogCiAJLyoKQEAgLTE4NjUsNiArMTg3MywyMyBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCWJvb2wJCXRzX2lzbnVsbDsKIAkJQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKTsKIAorCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGN1cnJlbnRUaW1lKTsK KwkJSU5TVFJfVElNRV9TVUJUUkFDVChjdXJyZW50VGltZSwgc25hcHNob3RUaW1lKTsKKwkJaWYg KElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGN1cnJlbnRUaW1lKSA+PSBWQUxJREFURV9JTkRFWF9T TkFQU0hPVF9SRVNFVF9JTlRFUlZBTCkKKwkJeworCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJ CVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisJCQkvKiB0byBtYWtlIHN1cmUgd2UgcHJv cGFnYXRlIHhtaW4gKi8KKwkJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwkJCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisKKwkJCXNuYXBzaG90ID0g UmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwkJCVB1c2hBY3RpdmVTbmFw c2hvdChzbmFwc2hvdCk7CisJCQkvKiB4bWluIHNob3VsZCBub3QgZ28gYmFja3dhcmRzLCBidXQg anVzdCBmb3IgdGhlIGNhc2UqLworCQkJbGltaXRYbWluID0gVHJhbnNhY3Rpb25JZE5ld2VyKGxp bWl0WG1pbiwgc25hcHNob3QtPnhtaW4pOworCQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzbmFw c2hvdFRpbWUpOworCQl9CisKIAkJLyoKIAkJKiBBdHRlbXB0IHRvIGZldGNoIHRoZSBuZXh0IFRJ RCBmcm9tIHRoZSBhdXhpbGlhcnkgc29ydC4gSWYgaXQncwogCQkqIGVtcHR5LCB3ZSBzZXQgYXV4 aW5kZXhjdXJzb3IgdG8gTlVMTC4KQEAgLTIwMDcsNyArMjAzMiw3IEBAIGhlYXBhbV9pbmRleF92 YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAloZWFwYW1faW5kZXhfZmV0Y2hf ZW5kKGZldGNoKTsKIAogCS8qCi0JICogRHJvcCB0aGUgcmVmZXJlbmNlIHNuYXBzaG90LiAgV2Ug bXVzdCBkbyB0aGlzIGJlZm9yZSB3YWl0aW5nIG91dCBvdGhlcgorCSAqIERyb3AgdGhlIGxhdGVz dCBzbmFwc2hvdC4gIFdlIG11c3QgZG8gdGhpcyBiZWZvcmUgd2FpdGluZyBvdXQgb3RoZXIKIAkg KiBzbmFwc2hvdCBob2xkZXJzLCBlbHNlIHdlIHdpbGwgZGVhZGxvY2sgYWdhaW5zdCBvdGhlciBw cm9jZXNzZXMgYWxzbwogCSAqIGRvaW5nIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFksIHdoaWNo IHdvdWxkIHNlZSBvdXIgc25hcHNob3QgYXMgb25lCiAJICogdGhleSBtdXN0IHdhaXQgZm9yLgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCA4YjIzNmM4Y2NkNi4uNjJlOTc1MDE2 YWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC00NDQsNyArNDQ0LDcgQEAg X2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWls ZFN0YXRlICpidWlsZHN0YXRlLAogCSAqIGRlYWQgdHVwbGVzKSB3b24ndCBnZXQgdmVyeSBmdWxs LCBzbyB3ZSBnaXZlIGl0IG9ubHkgd29ya19tZW0uCiAJICoKIAkgKiBJbiBjYXNlIG9mIGNvbmN1 cnJlbnQgYnVpbGQgZGVhZCB0dXBsZXMgYXJlIG5vdCBuZWVkIHRvIGJlIHB1dCBpbnRvIGluZGV4 Ci0JICogc2luY2Ugd2Ugd2FpdCBmb3IgYWxsIHNuYXBzaG90cyBvbGRlciB0aGFuIHJlZmVyZW5j ZSBzbmFwc2hvdCBkdXJpbmcgdGhlCisJICogc2luY2Ugd2Ugd2FpdCBmb3IgYWxsIHNuYXBzaG90 cyBvbGRlciB0aGFuIGxhdGVzdCBzbmFwc2hvdCBkdXJpbmcgdGhlCiAJICogdmFsaWRhdGlvbiBw aGFzZS4KIAkgKi8KIAlpZiAoaW5kZXhJbmZvLT5paV9VbmlxdWUgJiYgIWluZGV4SW5mby0+aWlf Q29uY3VycmVudCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFj dXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCmluZGV4IDg5NGFl ZmExOWUxLi42YTZiMWY4Nzk3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lz dC9zcGd2YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5j CkBAIC0xOTAsMTQgKzE5MCwxNiBAQCB2YWN1dW1MZWFmUGFnZShzcGdCdWxrRGVsZXRlU3RhdGUg KmJkcywgUmVsYXRpb24gaW5kZXgsIEJ1ZmZlciBidWZmZXIsCiAJCQkgKiBBZGQgdGFyZ2V0IFRJ RCB0byBwZW5kaW5nIGxpc3QgaWYgdGhlIHJlZGlyZWN0aW9uIGNvdWxkIGhhdmUKIAkJCSAqIGhh cHBlbmVkIHNpbmNlIFZBQ1VVTSBzdGFydGVkLiAgKElmIHhpZCBpcyBpbnZhbGlkLCBhc3N1bWUg aXQKIAkJCSAqIG11c3QgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgVkFDVVVNIHN0YXJ0ZWQsIHNpbmNl IFJFSU5ERVgKLQkJCSAqIENPTkNVUlJFTlRMWSBsb2NrcyBvdXQgVkFDVVVNLikKKwkJCSAqIENP TkNVUlJFTlRMWSBsb2NrcyBvdXQgVkFDVVVNLCBpZiBteVhtaW4gaXMgaW52YWxpZCBpdCBpcwor CQkJICogdmFsaWRhdGlvbiBzY2FuLikKIAkJCSAqCiAJCQkgKiBOb3RlOiB3ZSBjb3VsZCBtYWtl IGEgdGlnaHRlciB0ZXN0IGJ5IHNlZWluZyBpZiB0aGUgeGlkIGlzCiAJCQkgKiAicnVubmluZyIg YWNjb3JkaW5nIHRvIHRoZSBhY3RpdmUgc25hcHNob3Q7IGJ1dCBzbmFwbWdyLmMKIAkJCSAqIGRv ZXNuJ3QgY3VycmVudGx5IGV4cG9ydCBhIHN1aXRhYmxlIEFQSSwgYW5kIGl0J3Mgbm90IGVudGly ZWx5CiAJCQkgKiBjbGVhciB0aGF0IGEgdGlnaHRlciB0ZXN0IGlzIHdvcnRoIHRoZSBjeWNsZXMg YW55d2F5LgogCQkJICovCi0JCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhkdC0+ eGlkLCBiZHMtPm15WG1pbikpCisJCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGJkcy0+bXlY bWluKSB8fAorCQkJCQlUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKGR0LT54aWQsIGJkcy0+ bXlYbWluKSkKIAkJCQlzcGdBZGRQZW5kaW5nVElEKGJkcywgJmR0LT5wb2ludGVyKTsKIAkJfQog CQllbHNlCkBAIC04MTEsNyArODEzLDYgQEAgc3BndmFjdXVtc2NhbihzcGdCdWxrRGVsZXRlU3Rh dGUgKmJkcykKIAkvKiBGaW5pc2ggc2V0dGluZyB1cCBzcGdCdWxrRGVsZXRlU3RhdGUgKi8KIAlp bml0U3BHaXN0U3RhdGUoJmJkcy0+c3Bnc3RhdGUsIGluZGV4KTsKIAliZHMtPnBlbmRpbmdMaXN0 ID0gTlVMTDsKLQliZHMtPm15WG1pbiA9IEdldEFjdGl2ZVNuYXBzaG90KCktPnhtaW47CiAJYmRz LT5sYXN0RmlsbGVkQmxvY2sgPSBTUEdJU1RfTEFTVF9GSVhFRF9CTEtOTzsKIAogCS8qCkBAIC05 MjUsNiArOTI2LDEwIEBAIHNwZ2J1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRl eEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCWJkcy5zdGF0cyA9IHN0YXRzOwogCWJkcy5jYWxs YmFjayA9IGNhbGxiYWNrOwogCWJkcy5jYWxsYmFja19zdGF0ZSA9IGNhbGxiYWNrX3N0YXRlOwor CWlmIChpbmZvLT52YWxpZGF0ZV9pbmRleCkKKwkJYmRzLm15WG1pbiA9IEludmFsaWRUcmFuc2Fj dGlvbklkOworCWVsc2UKKwkJYmRzLm15WG1pbiA9IEdldEFjdGl2ZVNuYXBzaG90KCktPnhtaW47 CiAKIAlzcGd2YWN1dW1zY2FuKCZiZHMpOwogCkBAIC05NjUsNiArOTcwLDcgQEAgc3BndmFjdXVt Y2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3Rh dHMpCiAJCWJkcy5zdGF0cyA9IHN0YXRzOwogCQliZHMuY2FsbGJhY2sgPSBkdW1teV9jYWxsYmFj azsKIAkJYmRzLmNhbGxiYWNrX3N0YXRlID0gTlVMTDsKKwkJYmRzLm15WG1pbiA9IEdldEFjdGl2 ZVNuYXBzaG90KCktPnhtaW47CiAKIAkJc3BndmFjdXVtc2NhbigmYmRzKTsKIAl9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMKaW5kZXggMGUwNjMzNGY0NDcuLjhhYTZiMGEyODMwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBA IC0zNDc3LDggKzM0NzcsOSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxh dGlvbiwKICAqIGluc2VydCB0aGVpciBuZXcgdHVwbGVzIGludG8gaXQuIEF0IHRoZSBzYW1lIG1v bWVudCB3ZSBjbGVhciAiaW5kaXNyZWFkeSIgZm9yCiAgKiBhdXhpbGlhcnkgaW5kZXgsIHNpbmNl IGl0IGlzIG5vIG1vcmUgcmVxdWlyZWQuCiAgKgotICogV2UgdGhlbiB0YWtlIGEgbmV3IHJlZmVy ZW5jZSBzbmFwc2hvdCwgYW55IHR1cGxlcyB0aGF0IGFyZSB2YWxpZCBhY2NvcmRpbmcKLSAqIHRv IHRoaXMgc25hcCwgYnV0IGFyZSBub3QgaW4gdGhlIGluZGV4LCBtdXN0IGJlIGFkZGVkIHRvIHRo ZSBpbmRleC4KKyAqIFdlIHRoZW4gdGFrZSBhIG5ldyBzbmFwc2hvdCwgYW55IHR1cGxlcyB0aGF0 IGFyZSB2YWxpZCBhY2NvcmRpbmcKKyAqIHRvIHRoaXMgc25hcCwgYnV0IGFyZSBub3QgaW4gdGhl IGluZGV4LCBtdXN0IGJlIGFkZGVkIHRvIHRoZSBpbmRleC4gSW4KKyAqIG9yZGVyIHRvIHByb3Bh Z2F0ZSB4bWluIHdlIHJlc2V0IHRoYXQgc25hcHNob3QgZXZlcnkgZmV3IHNvIG9mdGVuLgogICog KEFueSB0dXBsZXMgY29tbWl0dGVkIGxpdmUgYWZ0ZXIgdGhlIHNuYXAgd2lsbCBiZSBpbnNlcnRl ZCBpbnRvIHRoZQogICogaW5kZXggYnkgdGhlaXIgb3JpZ2luYXRpbmcgdHJhbnNhY3Rpb24uICBB bnkgdHVwbGVzIGNvbW1pdHRlZCBkZWFkIGJlZm9yZQogICogdGhlIHNuYXAgbmVlZCBub3QgYmUg aW5kZXhlZCwgYmVjYXVzZSB3ZSB3aWxsIHdhaXQgb3V0IGFsbCB0cmFuc2FjdGlvbnMKQEAgLTM0 OTEsNyArMzQ5Miw3IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogICogVElEcyBvZiBib3RoIGF1eGlsaWFyeSBhbmQgdGFyZ2V0IGluZGV4ZXMsIGFuZCBkb2lu ZyBhICJtZXJnZSBqb2luIiBhZ2FpbnN0CiAgKiB0aGUgVElEIGxpc3RzIHRvIHNlZSB3aGljaCB0 dXBsZXMgZnJvbSBhdXhpbGlhcnkgaW5kZXggYXJlIG1pc3NpbmcgZnJvbSB0aGUKICAqIHRhcmdl dCBpbmRleC4gIFRodXMgd2Ugd2lsbCBlbnN1cmUgdGhhdCBhbGwgdHVwbGVzIHZhbGlkIGFjY29y ZGluZyB0byB0aGUKLSAqIHJlZmVyZW5jZSBzbmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LiBOb3Rp Y2Ugd2UgbmVlZCB0byBkbyBidWxrZGVsZXRlIGluIHRoZQorICogbGF0ZXN0IHNuYXBzaG90IGFy ZSBpbiB0aGUgaW5kZXguIE5vdGljZSB3ZSBuZWVkIHRvIGRvIGJ1bGtkZWxldGUgaW4gdGhlCiAg KiBwYXJ0aWN1bGFyIG9yZGVyOiBhdXhpbGlhcnkgZmlyc3QsIHRhcmdldCBsYXN0LgogICoKICAq IEJ1aWxkaW5nIGEgdW5pcXVlIGluZGV4IHRoaXMgd2F5IGlzIHRyaWNreTogd2UgbWlnaHQgdHJ5 IHRvIGluc2VydCBhCkBAIC0zNjA3LDE5ICszNjA4LDI5IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBo ZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCkKIAkJCQkJCQkJCQkgICBOVUxMLCBU VVBMRVNPUlRfTk9ORSk7CiAJYXV4U3RhdGUuaHR1cHMgPSBhdXhTdGF0ZS5pdHVwcyA9IGF1eFN0 YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwogCisJLyogdHVwbGVzb3J0X2JlZ2luX2RhdHVtIG1heSBy ZXF1aXJlIGNhdGFsb2cgc25hcHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7 CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwogCSh2b2lk KSBpbmRleF9idWxrX2RlbGV0ZSgmYXV4aXZpbmZvLCBOVUxMLAogCQkJCQkJCSB2YWxpZGF0ZV9p bmRleF9jYWxsYmFjaywgJmF1eFN0YXRlKTsKIAorCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFs aWQoTXlQcm9jLT54bWluKSk7CisKIAlzdGF0ZS50dXBsZXNvcnQgPSB0dXBsZXNvcnRfYmVnaW5f ZGF0dW0oSU5UOE9JRCwgSW50OExlc3NPcGVyYXRvciwKIAkJCQkJCQkJCQkJSW52YWxpZE9pZCwg ZmFsc2UsCiAJCQkJCQkJCQkJCShpbnQpIG1haW5fd29ya19tZW1fcGFydCwKIAkJCQkJCQkJCQkJ TlVMTCwgVFVQTEVTT1JUX05PTkUpOwogCXN0YXRlLmh0dXBzID0gc3RhdGUuaXR1cHMgPSBzdGF0 ZS50dXBzX2luc2VydGVkID0gMDsKIAorCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQ cm9jLT54bWluKSk7CisKIAkvKiBhbWJ1bGtkZWxldGUgdXBkYXRlcyBwcm9ncmVzcyBtZXRyaWNz ICovCiAJKHZvaWQpIGluZGV4X2J1bGtfZGVsZXRlKCZpdmluZm8sIE5VTEwsCiAJCQkJCQkJIHZh bGlkYXRlX2luZGV4X2NhbGxiYWNrLCAmc3RhdGUpOwogCisJQXNzZXJ0KCFUcmFuc2FjdGlvbklk SXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwogCS8qIEV4ZWN1dGUgdGhlIHNvcnQgKi8KIAl7CiAJ CWNvbnN0IGludAlwcm9ncmVzc19pbmRleFtdID0gewpAQCAtMzYzNiw4ICszNjQ3LDYgQEAgdmFs aWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIE9pZCBhdXhJbmRleElkKQogCX0K IAl0dXBsZXNvcnRfcGVyZm9ybXNvcnQoc3RhdGUudHVwbGVzb3J0KTsKIAl0dXBsZXNvcnRfcGVy Zm9ybXNvcnQoYXV4U3RhdGUudHVwbGVzb3J0KTsKLQotCUludmFsaWRhdGVDYXRhbG9nU25hcHNo b3QoKTsKIAlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggY2QwZDYzZGVkODIuLmUxMGY2MDk4ZjU4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtNDM1NCw3ICs0MzU0LDcgQEAgUmVpbmRl eFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRp b25PaWQsIGNvbnN0IFJlaW4KIAkJLyoKIAkJICogVGhlIGluZGV4IGlzIG5vdyB2YWxpZCBpbiB0 aGUgc2Vuc2UgdGhhdCBpdCBjb250YWlucyBhbGwgY3VycmVudGx5CiAJCSAqIGludGVyZXN0aW5n IHR1cGxlcy4gIEJ1dCBzaW5jZSBpdCBtaWdodCBub3QgY29udGFpbiB0dXBsZXMgZGVsZXRlZAot CQkgKiBqdXN0IGJlZm9yZSB0aGUgcmVmZXJlbmNlIHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRv IHdhaXQgb3V0IGFueQorCQkgKiBqdXN0IGJlZm9yZSB0aGUgbGF0ZXN0IHNuYXAgd2FzIHRha2Vu LCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQogCQkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBo YXZlIG9sZGVyIHNuYXBzaG90cy4KIAkJICoKIAkJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEg c25hcHNob3Qgb3IgWGlkIGluIHRoaXMgdHJhbnNhY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MvdHJhbnNhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaAppbmRl eCAwY2FiODY1M2YxYi4uM2Q4ZGI5OThjMGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vz cy90cmFuc2FtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaApAQCAtMzU1LDYg KzM1NSwyMSBAQCBOb3JtYWxUcmFuc2FjdGlvbklkT2xkZXIoVHJhbnNhY3Rpb25JZCBhLCBUcmFu c2FjdGlvbklkIGIpCiAJcmV0dXJuIGI7CiB9CiAKKy8qIHJldHVybiB0aGUgbmV3ZXIgb2YgdGhl IHR3byBJRHMgKi8KK3N0YXRpYyBpbmxpbmUgVHJhbnNhY3Rpb25JZAorVHJhbnNhY3Rpb25JZE5l d2VyKFRyYW5zYWN0aW9uSWQgYSwgVHJhbnNhY3Rpb25JZCBiKQoreworCWlmICghVHJhbnNhY3Rp b25JZElzVmFsaWQoYSkpCisJCXJldHVybiBiOworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxp ZChiKSkKKwkJcmV0dXJuIGE7CisKKwlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MoYSwgYikpCisJ CXJldHVybiBhOworCXJldHVybiBiOworfQorCiAvKiByZXR1cm4gdGhlIG5ld2VyIG9mIHRoZSB0 d28gSURzICovCiBzdGF0aWMgaW5saW5lIEZ1bGxUcmFuc2FjdGlvbklkCiBGdWxsVHJhbnNhY3Rp b25JZE5ld2VyKEZ1bGxUcmFuc2FjdGlvbklkIGEsIEZ1bGxUcmFuc2FjdGlvbklkIGIpCi0tIAoy LjQzLjAKCg== --000000000000813841062b2863c9 Content-Type: application/octet-stream; name="v11-0010-Add-proper-handling-of-auxiliary-indexes-during-.patch" Content-Disposition: attachment; filename="v11-0010-Add-proper-handling-of-auxiliary-indexes-during-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5n7ah9g1 RnJvbSBjMTE1YjEzYzAxYjNmZDE2NzBmNDZiYzQ5ODNlY2FiNDRhYWFlYmIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDozNjozMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjExIDEw LzExXSBBZGQgcHJvcGVyIGhhbmRsaW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzIGR1cmluZwogRFJP UC9SRUlOREVYIG9wZXJhdGlvbnMKCkR1cmluZyBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMs IGFuIGF1eGlsaWFyeSBpbmRleCBtYXkgYmUgY3JlYXRlZCB0byBoZWxwCndpdGggdGhlIHByb2Nl c3MuIEluIGNhc2Ugb2YgZXJyb3IgZHVyaW5nIHRoZSBidWlsZGluZyBwcm9jZXNzIChmb3IgZXhh bXBsZSBpbiBjYXNlIG9mIGluZGV4IGNvbnN0cmFpbnQgdmlvbGF0aW9uKSBzdWNoIGluZGV4ZXMg YmVjYW1lIGp1bmstaW5kZXhlcyB3aXRob3V0IGFueSBmdW5jdGlvbi4gVGhpcyBwYXRjaCBpbXBy b3ZlcyB0aGUgaGFuZGxpbmcgb2Ygc3VjaCBhdXhpbGlhcnkgaW5kZXhlczoKCiogQWRkIGF1eGls aWFyeUZvckluZGV4SWQgcGFyYW1ldGVyIHRvIGluZGV4X2NyZWF0ZSgpIHRvIHRyYWNrIGRlcGVu ZGVuY2llcwoqIEF1dG9tYXRpY2FsbHkgZHJvcCBhdXhpbGlhcnkgaW5kZXhlcyB3aGVuIHRoZSBt YWluIGluZGV4IGlzIGRyb3BwZWQKKiBEZWxldGUganVuayBhdXhpbGlhcnkgaW5kZXhlcyBwcm9w ZXJseSBkdXJpbmcgUkVJTkRFWCBvcGVyYXRpb25zCiogQWRkIHJlZ3Jlc3Npb24gdGVzdHMgdG8g dmVyaWZ5IG5ldyBiZWhhdmlvdXIKLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5z Z21sICAgICAgICAgfCAgMTQgKystCiBkb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCAgICAg ICAgICAgICAgfCAgMTkgKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAg ICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAg ICAgfCAgNjQgKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYyAg ICAgICAgICAgIHwgIDU3ICsrKysrKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5n LmMgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j ICAgICAgICAgICB8ICAzNSArKysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YyAgICAgICAgICAgfCAgNDggKysrKysrKysrLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRl bmN5LmggICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRl eC5vdXQgfCAxMDUgKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9j cmVhdGVfaW5kZXguc3FsICAgICAgfCAgNTcgKysrKysrKysrKy0KIDEyIGZpbGVzIGNoYW5nZWQs IDM2MyBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5k ZXguc2dtbAppbmRleCA1NDU2NjIyM2NiMC4uZmI3Y2QxNWY1ZmUgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfaW5kZXguc2dtbApAQCAtNjYxLDEwICs2NjEsMTYgQEAgSW5kZXhlczoKICAgICAiaWR4X2Nj YXV4IiBzdGlyIChjb2wpIElOVkFMSUQKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAKLSAgICBUaGUgcmVj b21tZW5kZWQgcmVjb3ZlcnkKLSAgICBtZXRob2QgaW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRo ZXNlIGluZGV4ZXMgYW5kIHRyeSBhZ2FpbiB0byBwZXJmb3JtCi0gICAgPGNvbW1hbmQ+Q1JFQVRF IElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4uIChBbm90aGVyIHBvc3NpYmlsaXR5IGlzCi0g ICAgdG8gcmVidWlsZCB0aGUgaW5kZXggd2l0aCA8Y29tbWFuZD5SRUlOREVYIElOREVYIENPTkNV UlJFTlRMWTwvY29tbWFuZD4pLgorICAgIFRoZSByZWNvbW1lbmRlZCByZWNvdmVyeSBtZXRob2Qg aW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRoZSBpbmRleCB3aXRoCisgICAgPGNvbW1hbmQ+RFJP UCBJTkRFWDwvY29tbWFuZD4uIFRoZSBhdXhpbGlhcnkgaW5kZXggKHN1ZmZpeGVkIHdpdGgKKyAg ICA8bGl0ZXJhbD5jY2F1eDwvbGl0ZXJhbD4pIHdpbGwgYmUgYXV0b21hdGljYWxseSBkcm9wcGVk IHdoZW4gdGhlIG1haW4KKyAgICBpbmRleCBpcyBkcm9wcGVkLiBBZnRlciBkcm9wcGluZyB0aGUg aW5kZXhlcywgeW91IGNhbiB0cnkgYWdhaW4gdG8gcGVyZm9ybQorICAgIDxjb21tYW5kPkNSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+LiAoQW5vdGhlciBwb3NzaWJpbGl0eSBpcyB0 bworICAgIHJlYnVpbGQgdGhlIGluZGV4IHdpdGggPGNvbW1hbmQ+UkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFk8L2NvbW1hbmQ+LAorICAgIHdoaWNoIHdpbGwgYWxzbyBoYW5kbGUgY2xlYW51cCBv ZiBhbnkgaW52YWxpZCBhdXhpbGlhcnkgaW5kZXhlcy4pCisgICAgSWYgdGhlIG9ubHkgaW52YWxp ZCBpbmRleCBpcyBvbmUgc3VmZml4ZWQgPGxpdGVyYWw+Y2NhdXg8L2xpdGVyYWw+CisgICAgcmVj b21tZW5kZWQgcmVjb3ZlcnkgbWV0aG9kIGlzIGp1c3QgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0 ZXJhbD4KKyAgICBmb3IgdGhhdCBpbmRleC4KICAgIDwvcGFyYT4KIAogICAgPHBhcmE+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv cmVpbmRleC5zZ21sCmluZGV4IDY0YzYzM2UwMzk4Li5jNmRiNWQ1NzE2NyAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWlu ZGV4LnNnbWwKQEAgLTQ3NCwxNCArNDc0LDE3IEBAIEluZGV4ZXM6CiA8L3Byb2dyYW1saXN0aW5n PgogCiAgICAgSWYgdGhlIGluZGV4IG1hcmtlZCA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPiBp cyBzdWZmaXhlZAotICAgIDxsaXRlcmFsPmNjbmV3PC9saXRlcmFsIG9yIDxsaXRlcmFsPmNjYXV4 PC9saXRlcmFsPiwgdGhlbiBpdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNpZW50IG9yIGF1eGls aWFyeQotICAgIGluZGV4IGNyZWF0ZWQgZHVyaW5nIHRoZSBjb25jdXJyZW50IG9wZXJhdGlvbiwg YW5kIHRoZSByZWNvbW1lbmRlZAotICAgIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBkcm9wIHRoZXNl IGluZGV4ZXMgdXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0ZXJhbD4sCi0gICAgdGhlbiBh dHRlbXB0IDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBhZ2Fpbi4KLSAg ICBJZiB0aGUgaW52YWxpZCBpbmRleCBpcyBpbnN0ZWFkIHN1ZmZpeGVkIDxsaXRlcmFsPmNjb2xk PC9saXRlcmFsPiwKLSAgICBpdCBjb3JyZXNwb25kcyB0byB0aGUgb3JpZ2luYWwgaW5kZXggd2hp Y2ggY291bGQgbm90IGJlIGRyb3BwZWQ7Ci0gICAgdGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5IG1l dGhvZCBpcyB0byBqdXN0IGRyb3Agc2FpZCBpbmRleCwgc2luY2UgdGhlCi0gICAgcmVidWlsZCBw cm9wZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bC4KKyAgICA8bGl0ZXJhbD5jY25ldzwvbGl0ZXJhbD4s IHRoZW4gaXQgY29ycmVzcG9uZHMgdG8gdGhlIHRyYW5zaWVudCBpbmRleAorICAgIGNyZWF0ZWQg ZHVyaW5nIHRoZSBjb25jdXJyZW50IG9wZXJhdGlvbi4gVGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5 CisgICAgbWV0aG9kIGlzIHRvIGRyb3AgaXQgdXNpbmcgPGxpdGVyYWw+RFJPUCBJTkRFWDwvbGl0 ZXJhbD4sIHRoZW4gYXR0ZW1wdAorICAgIDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9j b21tYW5kPiBhZ2Fpbi4gVGhlIGF1eGlsaWFyeSBpbmRleAorICAgIChzdWZmaXhlZCB3aXRoIDxs aXRlcmFsPmNjYXV4PC9saXRlcmFsPikgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQKKyAg ICBhbG9uZyB3aXRoIGl0cyBtYWluIGluZGV4LiBJZiB0aGUgaW52YWxpZCBpbmRleCBpcyBpbnN0 ZWFkIHN1ZmZpeGVkCisgICAgPGxpdGVyYWw+Y2NvbGQ8L2xpdGVyYWw+LCBpdCBjb3JyZXNwb25k cyB0byB0aGUgb3JpZ2luYWwgaW5kZXggd2hpY2gKKyAgICBjb3VsZCBub3QgYmUgZHJvcHBlZDsg dGhlIHJlY29tbWVuZGVkIHJlY292ZXJ5IG1ldGhvZCBpcyB0byBqdXN0IGRyb3AKKyAgICBzYWlk IGluZGV4LCBzaW5jZSB0aGUgcmVidWlsZCBwcm9wZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bC4gSWYg dGhlIG9ubHkKKyAgICBpbnZhbGlkIGluZGV4IGlzIG9uZSBzdWZmaXhlZCA8bGl0ZXJhbD5jY2F1 eDwvbGl0ZXJhbD4gcmVjb21tZW5kZWQKKyAgICByZWNvdmVyeSBtZXRob2QgaXMganVzdCA8bGl0 ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiBmb3IgdGhhdCBpbmRleC4KICAgIDwvcGFyYT4KIAog ICAgPHBhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCmluZGV4IDA5NmI2OGM3ZjM5Li4xYzJj ZmM5NGI1NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTI4Niw3ICsyODYsNyBAQCBw ZXJmb3JtRGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCSAqIEFjcXVpcmUg ZGVsZXRpb24gbG9jayBvbiB0aGUgdGFyZ2V0IG9iamVjdC4gIChJZGVhbGx5IHRoZSBjYWxsZXIg aGFzCiAJICogZG9uZSB0aGlzIGFscmVhZHksIGJ1dCBtYW55IHBsYWNlcyBhcmUgc2xvcHB5IGFi b3V0IGl0LikKIAkgKi8KLQlBY3F1aXJlRGVsZXRpb25Mb2NrKG9iamVjdCwgMCk7CisJQWNxdWly ZURlbGV0aW9uTG9jayhvYmplY3QsIGZsYWdzKTsKIAogCS8qCiAJICogQ29uc3RydWN0IGEgbGlz dCBvZiBvYmplY3RzIHRvIGRlbGV0ZSAoaWUsIHRoZSBnaXZlbiBvYmplY3QgcGx1cwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jCmluZGV4IDhhYTZiMGEyODMwLi40OWU4MzE1NTk3MiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpA QCAtNjg3LDYgKzY4Nyw4IEBAIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAogICoJ CXBhcmVudCBpbmRleDsgb3RoZXJ3aXNlIEludmFsaWRPaWQuCiAgKiBwYXJlbnRDb25zdHJhaW50 SWQ6IGlmIGNyZWF0aW5nIGEgY29uc3RyYWludCBvbiBhIHBhcnRpdGlvbiwgdGhlIE9JRAogICoJ CW9mIHRoZSBjb25zdHJhaW50IGluIHRoZSBwYXJlbnQ7IG90aGVyd2lzZSBJbnZhbGlkT2lkLgor ICogYXV4aWxpYXJ5Rm9ySW5kZXhJZDogaWYgY3JlYXRpbmcgYXV4aWxpYXJ5IGluZGV4LCB0aGUg T0lEIG9mIHRoZSBtYWluCisgKgkJaW5kZXg7IG90aGVyd2lzZSBJbnZhbGlkT2lkLgogICogcmVs RmlsZU51bWJlcjogbm9ybWFsbHksIHBhc3MgSW52YWxpZFJlbEZpbGVOdW1iZXIgdG8gZ2V0IG5l dyBzdG9yYWdlLgogICoJCU1heSBiZSBub256ZXJvIHRvIGF0dGFjaCBhbiBleGlzdGluZyB2YWxp ZCBidWlsZC4KICAqIGluZGV4SW5mbzogc2FtZSBpbmZvIGV4ZWN1dG9yIHVzZXMgdG8gaW5zZXJ0 IGludG8gdGhlIGluZGV4CkBAIC03MzMsNiArNzM1LDcgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwKIAkJCSBPaWQgaW5kZXhSZWxhdGlvbklkLAogCQkJIE9pZCBwYXJlbnRJ bmRleFJlbGlkLAogCQkJIE9pZCBwYXJlbnRDb25zdHJhaW50SWQsCisJCQkgT2lkIGF1eGlsaWFy eUZvckluZGV4SWQsCiAJCQkgUmVsRmlsZU51bWJlciByZWxGaWxlTnVtYmVyLAogCQkJIEluZGV4 SW5mbyAqaW5kZXhJbmZvLAogCQkJIGNvbnN0IExpc3QgKmluZGV4Q29sTmFtZXMsCkBAIC03NzUs NiArNzc4LDggQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJICAgKChm bGFncyAmIElOREVYX0NSRUFURV9BRERfQ09OU1RSQUlOVCkgIT0gMCkpOwogCS8qIHBhcnRpdGlv bmVkIGluZGV4ZXMgbXVzdCBuZXZlciBiZSAiYnVpbHQiIGJ5IHRoZW1zZWx2ZXMgKi8KIAlBc3Nl cnQoIXBhcnRpdGlvbmVkIHx8IChmbGFncyAmIElOREVYX0NSRUFURV9TS0lQX0JVSUxEKSk7CisJ LyogYXV4aWxpYXJ5Rm9ySW5kZXhJZCBhbmQgSU5ERVhfQ1JFQVRFX0FVWElMSUFSWSBhcmUgcmVx dWlyZWQgYm90aCBvciBuZWl0aGVyICovCisJQXNzZXJ0KE9pZElzVmFsaWQoYXV4aWxpYXJ5Rm9y SW5kZXhJZCkgPT0gYXV4aWxpYXJ5KTsKIAogCXJlbGtpbmQgPSBwYXJ0aXRpb25lZCA/IFJFTEtJ TkRfUEFSVElUSU9ORURfSU5ERVggOiBSRUxLSU5EX0lOREVYOwogCWlzX2V4Y2x1c2lvbiA9IChp bmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMKTsKQEAgLTExNzYsNiArMTE4MSwxNSBA QCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJcmVjb3JkRGVwZW5kZW5j eU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX1BBUlRJVElPTl9TRUMpOwogCQl9 CiAKKwkJLyoKKwkJICogUmVjb3JkIGRlcGVuZGVuY3kgb24gdGhlIG1haW4gaW5kZXggaW4gY2Fz ZSBvZiBhdXhpbGlhcnkgaW5kZXguCisJCSAqLworCQlpZiAoT2lkSXNWYWxpZChhdXhpbGlhcnlG b3JJbmRleElkKSkKKwkJeworCQkJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlv blJlbGF0aW9uSWQsIGF1eGlsaWFyeUZvckluZGV4SWQpOworCQkJcmVjb3JkRGVwZW5kZW5jeU9u KCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX0FVVE8pOworCQl9CisKIAkJLyogcGxh Y2Vob2xkZXIgZm9yIG5vcm1hbCBkZXBlbmRlbmNpZXMgKi8KIAkJYWRkcnMgPSBuZXdfb2JqZWN0 X2FkZHJlc3NlcygpOwogCkBAIC0xNDU4LDYgKzE0NzIsNyBAQCBpbmRleF9jb25jdXJyZW50bHlf Y3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKIAkJCQkJ CQkgIEludmFsaWRPaWQsCS8qIGluZGV4UmVsYXRpb25JZCAqLwogCQkJCQkJCSAgSW52YWxpZE9p ZCwJLyogcGFyZW50SW5kZXhSZWxpZCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwJLyogcGFyZW50 Q29uc3RyYWludElkICovCisJCQkJCQkJICBJbnZhbGlkT2lkLAkvKiBhdXhpbGlhcnlGb3JJbmRl eElkICovCiAJCQkJCQkJICBJbnZhbGlkUmVsRmlsZU51bWJlciwgLyogcmVsRmlsZU51bWJlciAq LwogCQkJCQkJCSAgbmV3SW5mbywKIAkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCkBAIC0xNjA4LDYg KzE2MjMsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVs YXRpb24sIE9pZCBtYWluSW5kZXhJZCwKIAkJCQkJCQkgIEludmFsaWRPaWQsICAgIC8qIGluZGV4 UmVsYXRpb25JZCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50SW5kZXhSZWxp ZCAqLwogCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50Q29uc3RyYWludElkICovCisJ CQkJCQkJICBtYWluSW5kZXhJZCwgICAvKiBhdXhpbGlhcnlGb3JJbmRleElkICovCiAJCQkJCQkJ ICBJbnZhbGlkUmVsRmlsZU51bWJlciwgLyogcmVsRmlsZU51bWJlciAqLwogCQkJCQkJCSAgbmV3 SW5mbywKIAkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCkBAIC0zODI5LDYgKzM4NDUsNyBAQCByZWlu ZGV4X2luZGV4KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgaW5kZXhJZCwKIAkJCQloZWFw UmVsYXRpb247CiAJT2lkCQkJaGVhcElkOwogCU9pZAkJCXNhdmVfdXNlcmlkOworCU9pZAkJCWp1 bmtBdXhJbmRleElkOwogCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJc2F2ZV9uZXN0 bGV2ZWw7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwpAQCAtMzg4NSw2ICszOTAyLDE5IEBAIHJl aW5kZXhfaW5kZXgoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRleElkLAogCQlwZ3N0 YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDIsIHByb2dyZXNzX2NvbHMsIHByb2dyZXNz X3ZhbHMpOwogCX0KIAorCS8qIENoZWNrIGZvciB0aGUgYXV4aWxpYXJ5IGluZGV4IGZvciB0aGF0 IGluZGV4LCBpdCBuZWVkcyB0byBkcm9wcGVkICovCisJanVua0F1eEluZGV4SWQgPSBnZXRfYXV4 aWxpYXJ5X2luZGV4KGluZGV4SWQpOworCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkK Kwl7CisJCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9u UmVsYXRpb25JZDsKKwkJb2JqZWN0Lm9iamVjdElkID0ganVua0F1eEluZGV4SWQ7CisJCW9iamVj dC5vYmplY3RTdWJJZCA9IDA7CisJCXBlcmZvcm1EZWxldGlvbigmb2JqZWN0LCBEUk9QX1JFU1RS SUNULAorCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCB8CisJCQkJCQkJCSBQRVJG T1JNX0RFTEVUSU9OX1FVSUVUTFkpOworCX0KKwogCS8qCiAJICogT3BlbiB0aGUgdGFyZ2V0IGlu ZGV4IHJlbGF0aW9uIGFuZCBnZXQgYW4gZXhjbHVzaXZlIGxvY2sgb24gaXQsIHRvCiAJICogZW5z dXJlIHRoYXQgbm8gb25lIGVsc2UgaXMgdG91Y2hpbmcgdGhpcyBwYXJ0aWN1bGFyIGluZGV4LgpA QCAtNDE3Myw3ICs0MjAzLDggQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAq c3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiB7CiAJUmVsYXRpb24JcmVsOwogCU9pZAkJCXRv YXN0X3JlbGlkOwotCUxpc3QJICAgKmluZGV4SWRzOworCUxpc3QJICAgKmluZGV4SWRzLAorCQkJ ICAgKmF1eEluZGV4SWRzID0gTklMOwogCWNoYXIJCXBlcnNpc3RlbmNlOwogCWJvb2wJCXJlc3Vs dCA9IGZhbHNlOwogCUxpc3RDZWxsICAgKmluZGV4SWQ7CkBAIC00MjYyLDEzICs0MjkzLDMwIEBA IHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxpZCwgaW50 IGZsYWdzLAogCWVsc2UKIAkJcGVyc2lzdGVuY2UgPSByZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVu Y2U7CiAKKwlmb3JlYWNoKGluZGV4SWQsIGluZGV4SWRzKQorCXsKKwkJT2lkCQkJaW5kZXhPaWQg PSBsZmlyc3Rfb2lkKGluZGV4SWQpOworCQlPaWQJCQlpbmRleEFtID0gZ2V0X3JlbF9yZWxhbShp bmRleE9pZCk7CisKKwkJLyogQWxsIFNUSVIgaW5kZXhlcyBhcmUgYXV4aWxpYXJ5IGluZGV4ZXMg Ki8KKwkJaWYgKGluZGV4QW0gPT0gU1RJUl9BTV9PSUQpCisJCXsKKwkJCWlmIChmbGFncyAmIFJF SU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRSkKKwkJCQlSZW1vdmVSZWluZGV4UGVuZGluZyhp bmRleE9pZCk7CisJCQlhdXhJbmRleElkcyA9IGxhcHBlbmRfb2lkKGF1eEluZGV4SWRzLCBpbmRl eE9pZCk7CisJCX0KKwl9CisKIAkvKiBSZWluZGV4IGFsbCB0aGUgaW5kZXhlcy4gKi8KIAlpID0g MTsKIAlmb3JlYWNoKGluZGV4SWQsIGluZGV4SWRzKQogCXsKIAkJT2lkCQkJaW5kZXhPaWQgPSBs Zmlyc3Rfb2lkKGluZGV4SWQpOwogCQlPaWQJCQlpbmRleE5hbWVzcGFjZUlkID0gZ2V0X3JlbF9u YW1lc3BhY2UoaW5kZXhPaWQpOwotCQlPaWQJCQlpbmRleEFtID0gZ2V0X3JlbF9yZWxhbShpbmRl eE9pZCk7CisKKwkJLyogQXV4aWxpYXJ5IGluZGV4ZXMgYXJlIGdvaW5nIHRvIGJlIGRyb3BwZWQg ZHVyaW5nIG1haW4gaW5kZXggcmVidWlsZCAqLworCQlpZiAobGlzdF9tZW1iZXJfb2lkKGF1eElu ZGV4SWRzLCBpbmRleE9pZCkpCisJCQljb250aW51ZTsKIAogCQkvKgogCQkgKiBTa2lwIGFueSBp bnZhbGlkIGluZGV4ZXMgb24gYSBUT0FTVCB0YWJsZS4gIFRoZXNlIGNhbiBvbmx5IGJlCkBAIC00 Mjk0LDE4ICs0MzQyLDYgQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAqc3Rt dCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiAJCQljb250aW51ZTsKIAkJfQogCi0JCWlmIChpbmRl eEFtID09IFNUSVJfQU1fT0lEKQotCQl7Ci0JCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJIGVycm1zZygic2tpcHBp bmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwKLQkJCQkJCQlnZXRfbmFt ZXNwYWNlX25hbWUoaW5kZXhOYW1lc3BhY2VJZCksCi0JCQkJCQkJZ2V0X3JlbF9uYW1lKGluZGV4 T2lkKSkpKTsKLQkJCWlmIChmbGFncyAmIFJFSU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRSkK LQkJCQlSZW1vdmVSZWluZGV4UGVuZGluZyhpbmRleE9pZCk7Ci0JCQljb250aW51ZTsKLQkJfQot CiAJCXJlaW5kZXhfaW5kZXgoc3RtdCwgaW5kZXhPaWQsICEoZmxhZ3MgJiBSRUlOREVYX1JFTF9D SEVDS19DT05TVFJBSU5UUyksCiAJCQkJCSAgcGVyc2lzdGVuY2UsIHBhcmFtcyk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZGVwZW5kLmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2RlcGVuZC5jCmluZGV4IGM4YjExZjg4N2UyLi4xYzI3NWVmMzczZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19kZXBlbmQuYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2RlcGVuZC5jCkBAIC0xMDM1LDYgKzEwMzUsNjMgQEAgZ2V0X2luZGV4X2NvbnN0cmFp bnQoT2lkIGluZGV4SWQpCiAJcmV0dXJuIGNvbnN0cmFpbnRJZDsKIH0KIAorLyoKKyAqIGdldF9h dXhpbGlhcnlfaW5kZXgKKyAqCQlHaXZlbiB0aGUgT0lEIG9mIGFuIGluZGV4LCByZXR1cm4gdGhl IE9JRCBvZiBpdHMgYXV4aWxpYXJ5CisgKgkJaW5kZXgsIG9yIEludmFsaWRPaWQgaWYgdGhlcmUg aXMgbm8gYXV4aWxpYXJ5IGluZGV4LgorICovCitPaWQKK2dldF9hdXhpbGlhcnlfaW5kZXgoT2lk IGluZGV4SWQpCit7CisJT2lkCQkJYXV4aWxpYXJ5SW5kZXhPaWQgPSBJbnZhbGlkT2lkOworCVJl bGF0aW9uCWRlcFJlbDsKKwlTY2FuS2V5RGF0YSBrZXlbM107CisJU3lzU2NhbkRlc2Mgc2NhbjsK KwlIZWFwVHVwbGUJdHVwOworCisJLyogU2VhcmNoIHRoZSBkZXBlbmRlbmN5IHRhYmxlIGZvciB0 aGUgaW5kZXggKi8KKwlkZXBSZWwgPSB0YWJsZV9vcGVuKERlcGVuZFJlbGF0aW9uSWQsIEFjY2Vz c1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgma2V5WzBdLAorCQkJCUFudW1fcGdfZGVwZW5k X3JlZmNsYXNzaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9i amVjdElkR2V0RGF0dW0oUmVsYXRpb25SZWxhdGlvbklkKSk7CisJU2NhbktleUluaXQoJmtleVsx XSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9yZWZvYmppZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1i ZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShpbmRleElkKSk7CisJU2NhbktleUlu aXQoJmtleVsyXSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9yZWZvYmpzdWJpZCwKKwkJCQlCVEVxdWFs U3RyYXRlZ3lOdW1iZXIsIEZfSU5UNEVRLAorCQkJCUludDMyR2V0RGF0dW0oMCkpOworCisJc2Nh biA9IHN5c3RhYmxlX2JlZ2luc2NhbihkZXBSZWwsIERlcGVuZFJlZmVyZW5jZUluZGV4SWQsIHRy dWUsCisJCQkJCQkJICBOVUxMLCAzLCBrZXkpOworCisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxp ZCh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfZGVwZW5kIGRl cHJlYyA9IChGb3JtX3BnX2RlcGVuZCkgR0VUU1RSVUNUKHR1cCk7CisKKwkJLyoKKwkJICogV2Ug YXNzdW1lIGFueSBBVVRPIGRlcGVuZGVuY3kgb24gaW5kZXggd2l0aCByZWxfa2luZAorCQkgKiBv ZiBSRUxLSU5EX0lOREVYIGlzIHRoYXQgd2UgYXJlIGxvb2tpbmcgZm9yLgorCQkgKi8KKwkJaWYg KGRlcHJlYy0+Y2xhc3NpZCA9PSBSZWxhdGlvblJlbGF0aW9uSWQgJiYKKwkJCShkZXByZWMtPmRl cHR5cGUgPT0gREVQRU5ERU5DWV9BVVRPKSAmJgorCQkJZ2V0X3JlbF9yZWxraW5kKGRlcHJlYy0+ b2JqaWQpID09IFJFTEtJTkRfSU5ERVgpCisJCXsKKwkJCWF1eGlsaWFyeUluZGV4T2lkID0gZGVw cmVjLT5vYmppZDsKKwkJCWJyZWFrOworCQl9CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2Fu KTsKKwl0YWJsZV9jbG9zZShkZXBSZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gYXV4 aWxpYXJ5SW5kZXhPaWQ7Cit9CisKIC8qCiAgKiBnZXRfaW5kZXhfcmVmX2NvbnN0cmFpbnRzCiAg KgkJR2l2ZW4gdGhlIE9JRCBvZiBhbiBpbmRleCwgcmV0dXJuIHRoZSBPSUQgb2YgYWxsIGZvcmVp Z24ga2V5CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKaW5kZXggMGVlMmZkNWU3ZGUuLjBlZThjYmY0Y2E2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCkBAIC0zMTksNyArMzE5LDcgQEAgY3JlYXRlX3RvYXN0 X3RhYmxlKFJlbGF0aW9uIHJlbCwgT2lkIHRvYXN0T2lkLCBPaWQgdG9hc3RJbmRleE9pZCwKIAlj b2xvcHRpb25zWzFdID0gMDsKIAogCWluZGV4X2NyZWF0ZSh0b2FzdF9yZWwsIHRvYXN0X2lkeG5h bWUsIHRvYXN0SW5kZXhPaWQsIEludmFsaWRPaWQsCi0JCQkJIEludmFsaWRPaWQsIEludmFsaWRP aWQsCisJCQkJIEludmFsaWRPaWQsIEludmFsaWRPaWQsIEludmFsaWRPaWQsCiAJCQkJIGluZGV4 SW5mbywKIAkJCQkgbGlzdF9tYWtlMigiY2h1bmtfaWQiLCAiY2h1bmtfc2VxIiksCiAJCQkJIEJU UkVFX0FNX09JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggYjk4ODUxYTllMzUuLmFi NmRiZDMyZDlmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTIyNCw3ICsxMjI0LDcg QEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAlpbmRleFJlbGF0aW9uSWQgPQogCQlpbmRl eF9jcmVhdGUocmVsLCBpbmRleFJlbGF0aW9uTmFtZSwgaW5kZXhSZWxhdGlvbklkLCBwYXJlbnRJ bmRleElkLAotCQkJCQkgcGFyZW50Q29uc3RyYWludElkLAorCQkJCQkgcGFyZW50Q29uc3RyYWlu dElkLCBJbnZhbGlkT2lkLAogCQkJCQkgc3RtdC0+b2xkTnVtYmVyLCBpbmRleEluZm8sIGluZGV4 Q29sTmFtZXMsCiAJCQkJCSBhY2Nlc3NNZXRob2RJZCwgdGFibGVzcGFjZUlkLAogCQkJCQkgY29s bGF0aW9uSWRzLCBvcGNsYXNzSWRzLCBvcGNsYXNzT3B0aW9ucywKQEAgLTM1OTMsNiArMzU5Myw3 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJewogCQlPaWQJCQlpbmRleElkOwogCQlPaWQJ CQlhdXhJbmRleElkOworCQlPaWQJCQlqdW5rQXV4SW5kZXhJZDsKIAkJT2lkCQkJdGFibGVJZDsK IAkJT2lkCQkJYW1JZDsKIAl9IFJlaW5kZXhJbmRleEluZm87CkBAIC0zOTQxLDYgKzM5NDIsNyBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHg7CiAJ CU9pZAkJCW5ld0luZGV4SWQ7CiAJCU9pZAkJCWF1eEluZGV4SWQ7CisJCU9pZAkJCWp1bmtBdXhJ bmRleElkOwogCQlSZWxhdGlvbglpbmRleFJlbDsKIAkJUmVsYXRpb24JaGVhcFJlbDsKIAkJT2lk CQkJc2F2ZV91c2VyaWQ7CkBAIC0zOTQ4LDYgKzM5NTAsNyBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCQlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIAkJUmVsYXRpb24JbmV3SW5kZXhSZWw7CiAJ CVJlbGF0aW9uCWF1eEluZGV4UmVsOworCQlSZWxhdGlvbglqdW5rQXV4SW5kZXhSZWw7CiAJCUxv Y2tSZWxJZCAgKmxvY2tyZWxpZDsKIAkJT2lkCQkJdGFibGVzcGFjZWlkOwogCkBAIC00MDEwLDEy ICs0MDEzLDE3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJCQkJCQkgICB0YWJs ZXNwYWNlaWQsCiAJCQkJCQkJCQkJCQkgICBhdXhDb25jdXJyZW50TmFtZSk7CiAKKwkJLyogU2Vh cmNoIGZvciBhdXhpbGlhcnkgaW5kZXggZm9yIHJlaW5kZXhlZCBpbmRleCwgdG8gZHJvcCBpdCAq LworCQlqdW5rQXV4SW5kZXhJZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgoaWR4LT5pbmRleElkKTsK KwogCQkvKgogCQkgKiBOb3cgb3BlbiB0aGUgcmVsYXRpb24gb2YgdGhlIG5ldyBpbmRleCwgYSBz ZXNzaW9uLWxldmVsIGxvY2sgaXMKIAkJICogYWxzbyBuZWVkZWQgb24gaXQuCiAJCSAqLwogCQlu ZXdJbmRleFJlbCA9IGluZGV4X29wZW4obmV3SW5kZXhJZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVM b2NrKTsKIAkJYXV4SW5kZXhSZWwgPSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFNoYXJlVXBkYXRl RXhjbHVzaXZlTG9jayk7CisJCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkKKwkJCWp1 bmtBdXhJbmRleFJlbCA9IGluZGV4X29wZW4oanVua0F1eEluZGV4SWQsIFNoYXJlVXBkYXRlRXhj bHVzaXZlTG9jayk7CiAKIAkJLyoKIAkJICogU2F2ZSB0aGUgbGlzdCBvZiBPSURzIGFuZCBsb2Nr cyBpbiBwcml2YXRlIGNvbnRleHQKQEAgLTQwMjUsNiArNDAzMyw3IEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJCW5ld2lkeCA9IHBhbGxvY19vYmplY3QoUmVpbmRleEluZGV4SW5mbyk7CiAJ CW5ld2lkeC0+aW5kZXhJZCA9IG5ld0luZGV4SWQ7CiAJCW5ld2lkeC0+YXV4SW5kZXhJZCA9IGF1 eEluZGV4SWQ7CisJCW5ld2lkeC0+anVua0F1eEluZGV4SWQgPSBqdW5rQXV4SW5kZXhJZDsKIAkJ bmV3aWR4LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwogCQluZXdpZHgtPmFtSWQgPSBpZHgtPmFt SWQ7CiAKQEAgLTQwNDUsMTAgKzQwNTQsMTggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5 KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJ bG9ja3JlbGlkID0gcGFsbG9jX29iamVjdChMb2NrUmVsSWQpOwogCQkqbG9ja3JlbGlkID0gYXV4 SW5kZXhSZWwtPnJkX2xvY2tJbmZvLmxvY2tSZWxJZDsKIAkJcmVsYXRpb25Mb2NrcyA9IGxhcHBl bmQocmVsYXRpb25Mb2NrcywgbG9ja3JlbGlkKTsKKwkJaWYgKE9pZElzVmFsaWQoanVua0F1eElu ZGV4SWQpKQorCQl7CisJCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2JqZWN0KExvY2tSZWxJZCk7CisJ CQkqbG9ja3JlbGlkID0ganVua0F1eEluZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CisJ CQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBsb2NrcmVsaWQpOworCQl9 CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJCWluZGV4X2Nsb3Nl KGluZGV4UmVsLCBOb0xvY2spOworCQlpZiAoT2lkSXNWYWxpZChqdW5rQXV4SW5kZXhJZCkpCisJ CQlpbmRleF9jbG9zZShqdW5rQXV4SW5kZXhSZWwsIE5vTG9jayk7CiAJCWluZGV4X2Nsb3NlKGF1 eEluZGV4UmVsLCBOb0xvY2spOwogCQlpbmRleF9jbG9zZShuZXdJbmRleFJlbCwgTm9Mb2NrKTsK IApAQCAtNDIwNSw3ICs0MjIyLDggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAogCS8qCiAJ ICogQXQgdGhpcyBtb21lbnQgYWxsIHRhcmdldCBpbmRleGVzIGFyZSBtYXJrZWQgYXMgInJlYWR5 LXRvLWluc2VydCIuIFNvLAotCSAqIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHByb2Nlc3Mgb2YgZHJv cHBpbmcgYXV4aWxpYXJ5IGluZGV4ZXMuCisJICogd2UgYXJlIGZyZWUgdG8gc3RhcnQgcHJvY2Vz cyBvZiBkcm9wcGluZyBhdXhpbGlhcnkgaW5kZXhlcyAtIGluY2x1ZGluZworCSAqIGp1c3QgaW5k ZXhlcyBkZXRlY3RlZCBlYXJsaWVyLgogCSAqLwogCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQog CXsKQEAgLTQyMjQsNiArNDI0Miw5IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqLwog CQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkJaW5kZXhf c2V0X3N0YXRlX2ZsYWdzKG5ld2lkeC0+YXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFE WSk7CisJCS8qIEVuc3VyZSBqdXN0IGluZGV4IGlzIG1hcmtlZCBhcyBub24tcmVhZHkgKi8KKwkJ aWYgKE9pZElzVmFsaWQobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCkpCisJCQlpbmRleF9zZXRfc3Rh dGVfZmxhZ3MobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSk7 CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CkBAIC00NDA2LDYgKzQ0MjcsOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAogCQlpbmRleF9jb25jdXJy ZW50bHlfc2V0X2RlYWQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4SWQpOworCQlp ZiAoT2lkSXNWYWxpZChuZXdpZHgtPmp1bmtBdXhJbmRleElkKSkKKwkJCWluZGV4X2NvbmN1cnJl bnRseV9zZXRfZGVhZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+anVua0F1eEluZGV4SWQpOwog CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJfQpAQCAtNDQ1MSw2ICs0NDc0LDE0IEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOwogCiAJCQlhZGRf ZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CisKKwkJCWlmIChPaWRJc1Zh bGlkKGlkeC0+anVua0F1eEluZGV4SWQpKQorCQkJeworCisJCQkJb2JqZWN0Lm9iamVjdElkID0g aWR4LT5qdW5rQXV4SW5kZXhJZDsKKwkJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCQkJCWFk ZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqZWN0LCBvYmplY3RzKTsKKwkJCX0KIAkJfQogCiAJ CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDQxODFjMTEwZWI3Li5lOWI2ZGVkNmE1 NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE0OTIsNiArMTQ5Miw4IEBAIFJlbW92 ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAlMaXN0Q2VsbCAgICpjZWxsOwogCWludAkJCWZs YWdzID0gMDsKIAlMT0NLTU9ERQlsb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CisJTWVt b3J5Q29udGV4dCBwcml2YXRlX2NvbnRleHQsCisJCQkJICBvbGRjb250ZXh0OwogCiAJLyogRFJP UCBDT05DVVJSRU5UTFkgdXNlcyBhIHdlYWtlciBsb2NrLCBhbmQgaGFzIHNvbWUgcmVzdHJpY3Rp b25zICovCiAJaWYgKGRyb3AtPmNvbmN1cnJlbnQpCkBAIC0xNTUyLDkgKzE1NTQsMjAgQEAgUmVt b3ZlUmVsYXRpb25zKERyb3BTdG10ICpkcm9wKQogCQkJcmVsa2luZCA9IDA7CQkvKiBrZWVwIGNv bXBpbGVyIHF1aWV0ICovCiAJCQlicmVhazsKIAl9CisJLyoKKwkgKiBDcmVhdGUgYSBtZW1vcnkg Y29udGV4dCB0aGF0IHdpbGwgc3Vydml2ZSBmb3JjZWQgdHJhbnNhY3Rpb24gY29tbWl0cyB3ZQor CSAqIG1heSBuZWVkIHRvIGRvIGJlbG93IChpbiBjYXNlIG9mIGNvbmN1cnJlbnQgaW5kZXggZHJv cCkuCisJICogU2luY2UgaXQgaXMgYSBjaGlsZCBvZiBQb3J0YWxDb250ZXh0LCBpdCB3aWxsIGdv IGF3YXkgZXZlbnR1YWxseSBldmVuIGlmCisJICogd2Ugc3VmZmVyIGFuIGVycm9yOyB0aGVyZSdz IG5vIG5lZWQgZm9yIHNwZWNpYWwgYWJvcnQgY2xlYW51cCBsb2dpYy4KKwkgKi8KKwlwcml2YXRl X2NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoUG9ydGFsQ29udGV4dCwKKwkJCQkJCQkJ CQkJIlJlbW92ZVJlbGF0aW9ucyIsCisJCQkJCQkJCQkJCUFMTE9DU0VUX1NNQUxMX1NJWkVTKTsK IAorCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsK IAkvKiBMb2NrIGFuZCB2YWxpZGF0ZSBlYWNoIHJlbGF0aW9uOyBidWlsZCBhIGxpc3Qgb2Ygb2Jq ZWN0IGFkZHJlc3NlcyAqLwogCW9iamVjdHMgPSBuZXdfb2JqZWN0X2FkZHJlc3NlcygpOworCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCWZvcmVhY2goY2VsbCwgZHJvcC0+ b2JqZWN0cykKIAl7CkBAIC0xNjA2LDYgKzE2MTksMzQgQEAgUmVtb3ZlUmVsYXRpb25zKERyb3BT dG10ICpkcm9wKQogCQkJZmxhZ3MgfD0gUEVSRk9STV9ERUxFVElPTl9DT05DVVJSRU5UTFk7CiAJ CX0KIAorCQkvKgorCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3AgcmVxdWlyZXMgdG8gYmUgdGhl IGZpcnN0IHRyYW5zYWN0aW9uLiBCdXQgaW4KKwkJICogY2FzZSB3ZSBoYXZlIGp1bmsgYXV4aWxp YXJ5IGluZGV4IC0gd2Ugd2FudCB0byBkcm9wIGl0IHRvbyAoYW5kIGFsc28KKwkJICogaW4gYSBj b25jdXJyZW50IHdheSkuIEluIHRoaXMgY2FzZSBwZXJmb3JtIHNpbGVudCBpbnRlcm5hbCBkZWxl dGlvbgorCQkgKiBvZiBhdXhpbGlhcnkgaW5kZXgsIGFuZCByZXN0b3JlIHRyYW5zYWN0aW9uIHN0 YXRlLiBJdCBpcyBmaW5lIHRvIGRvIGl0CisJCSAqIGluIHRoZSBsb29wIGJlY2F1c2UgdGhlcmUg aXMgb25seSBzaW5nbGUgZWxlbWVudCBpbiBkcm9wLT5vYmplY3RzLgorCQkgKi8KKwkJaWYgKChm bGFncyAmIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVExZKSAhPSAwICYmCisJCQlzdGF0ZS5h Y3R1YWxfcmVsa2luZCA9PSBSRUxLSU5EX0lOREVYKQorCQl7CisJCQlPaWQganVua0F1eEluZGV4 T2lkID0gZ2V0X2F1eGlsaWFyeV9pbmRleChyZWxPaWQpOworCQkJaWYgKE9pZElzVmFsaWQoanVu a0F1eEluZGV4T2lkKSkKKwkJCXsKKwkJCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwkJCQlvYmpl Y3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJCQlvYmplY3Qub2JqZWN0SWQgPSBq dW5rQXV4SW5kZXhPaWQ7CisJCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwkJCQlwZXJmb3Jt RGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxF VElPTl9DT05DVVJSRU5UTFkgfAorCQkJCQkJCQkJCSBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFM IHwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9RVUlFVExZKTsKKwkJCQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJCVB1 c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQkJCVByZXZlbnRJ blRyYW5zYWN0aW9uQmxvY2sodHJ1ZSwgIkRST1AgSU5ERVggQ09OQ1VSUkVOVExZIik7CisJCQl9 CisJCX0KKwogCQkvKgogCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3AgY2Fubm90IGJlIHVzZWQg d2l0aCBwYXJ0aXRpb25lZCBpbmRleGVzLAogCQkgKiBlaXRoZXIuCkBAIC0xNjM0LDEyICsxNjc1 LDE3IEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAkJb2JqLm9iamVjdElkID0g cmVsT2lkOwogCQlvYmoub2JqZWN0U3ViSWQgPSAwOwogCisJCW9sZGNvbnRleHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAkJYWRkX2V4YWN0X29iamVjdF9hZGRy ZXNzKCZvYmosIG9iamVjdHMpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7 CiAJfQogCisJLyogRGVsZXRpb24gbWF5IGludm9sdmUgbXVsdGlwbGUgY29tbWl0cywgc28sIHN3 aXRjaCB0byBtZW1vcnkgY29udGV4dCAqLworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsKIAlwZXJmb3JtTXVsdGlwbGVEZWxldGlvbnMob2JqZWN0 cywgZHJvcC0+YmVoYXZpb3IsIGZsYWdzKTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7CiAKLQlmcmVlX29iamVjdF9hZGRyZXNzZXMob2JqZWN0cyk7CisJTWVtb3J5Q29udGV4 dERlbGV0ZShwcml2YXRlX2NvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3ku aAppbmRleCAwZWE3Y2NmNTI0My4uMDJiY2Y1ZTkzMTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5j eS5oCkBAIC0xODAsNiArMTgwLDcgQEAgZXh0ZXJuIExpc3QgKmdldE93bmVkU2VxdWVuY2VzKE9p ZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldElkZW50aXR5U2VxdWVuY2UoUmVsYXRpb24gcmVsLCBB dHRyTnVtYmVyIGF0dG51bSwgYm9vbCBtaXNzaW5nX29rKTsKIAogZXh0ZXJuIE9pZAlnZXRfaW5k ZXhfY29uc3RyYWludChPaWQgaW5kZXhJZCk7CitleHRlcm4gT2lkCWdldF9hdXhpbGlhcnlfaW5k ZXgoT2lkIGluZGV4SWQpOwogCiBleHRlcm4gTGlzdCAqZ2V0X2luZGV4X3JlZl9jb25zdHJhaW50 cyhPaWQgaW5kZXhJZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXgu aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCAwMWY4NWU1N2VhMi4uOGZlMGFj YzFlNmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTczLDYgKzczLDcgQEAgZXh0ZXJuIE9pZAlpbmRl eF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJIE9pZCBpbmRleFJlbGF0aW9u SWQsCiAJCQkJCQkgT2lkIHBhcmVudEluZGV4UmVsaWQsCiAJCQkJCQkgT2lkIHBhcmVudENvbnN0 cmFpbnRJZCwKKwkJCQkJCSBPaWQgYXV4aWxpYXJ5Rm9ySW5kZXhJZCwKIAkJCQkJCSBSZWxGaWxl TnVtYmVyIHJlbEZpbGVOdW1iZXIsCiAJCQkJCQkgSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkJ CQkgY29uc3QgTGlzdCAqaW5kZXhDb2xOYW1lcywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y3JlYXRlX2luZGV4Lm91dAppbmRleCAzNDMzMWU0ZDQ4Yi4uZDg1ODU0NWRiYTMgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTMwOTYsMjAgKzMwOTYs MTA5IEBAIEVSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9pbmRleF9pbmQ2 X2NjYXV4IiBub3Qgc3VwcG9ydGVkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5k ZXhfaW5kNl9jY2F1eDsKIEVSUk9SOiAgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggImF1eF9p bmRleF9pbmQ2X2NjYXV4IiBub3Qgc3VwcG9ydGVkCiAtLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91 cyBmYWlsdXJlIGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgotREVMRVRF IEZST00gY29uY3VyX3JlaW5kZXhfdGFiNCBXSEVSRSBjMSA9IDE7Ci1FUlJPUjogIHJlbGF0aW9u ICJjb25jdXJfcmVpbmRleF90YWI0IiBkb2VzIG5vdCBleGlzdAotTElORSAxOiBERUxFVEUgRlJP TSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKLSAgICAgICAgICAgICAgICAgICAg XgorREVMRVRFIEZST00gYXV4X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJl IHNraXBwZWQgZHVyaW5nIHJlaW5kZXggYW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggYXV4X2lu ZGV4X2luZDY7CistLSBNYWtlIHN1cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRl eF90YWI1CisgICAgICAgICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1u IHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2lu ZDYiIFVOSVFVRSwgYnRyZWUgKGMxKQorCitEUk9QIElOREVYIGF1eF9pbmRleF9pbmQ2OworLS0g SW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJTlRPIGF1eF9pbmRleF90YWI1IFZBTFVF UyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGluZGV4IGFnYWluCitDUkVBVEUgVU5JUVVF IElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEp OworRVJST1I6ICBjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCAiYXV4X2luZGV4X2luZDYi CitERVRBSUw6ICBLZXkgKGMxKT0oMSkgaXMgZHVwbGljYXRlZC4KKy0tIFRoaXMgbWFrZXMgdGhl IHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQu CitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVSRSBjMSA9IDE7CiAtLSBTaG91bGQgYmUg c2tpcHBlZCBkdXJpbmcgcmVpbmRleAotUkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKLUVS Uk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgotREVU QUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCi0tLSBTaG91bGQgYmUgc2tpcHBlZCBk dXJpbmcgY29uY3VycmVudCByZWluZGV4CiBSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhf aW5kZXhfdGFiNTsKIFdBUk5JTkc6ICBza2lwcGluZyByZWluZGV4IG9mIGludmFsaWQgaW5kZXgg InB1YmxpYy5hdXhfaW5kZXhfaW5kNiIKIEhJTlQ6ICBVc2UgRFJPUCBJTkRFWCBvciBSRUlOREVY IElOREVYLgogV0FSTklORzogIHNraXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJw dWJsaWMuYXV4X2luZGV4X2luZDZfY2NhdXgiCiBOT1RJQ0U6ICB0YWJsZSAiYXV4X2luZGV4X3Rh YjUiIGhhcyBubyBpbmRleGVzIHRoYXQgY2FuIGJlIHJlaW5kZXhlZCBjb25jdXJyZW50bHkKKy0t IE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCBleGlzdHMKK1xkIGF1eF9pbmRleF90YWI1CisgICAgICAg ICAgIFRhYmxlICJwdWJsaWMuYXV4X2luZGV4X3RhYjUiCisgQ29sdW1uIHwgIFR5cGUgICB8IENv bGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAiYXV4X2luZGV4X2luZDYiIFVOSVFVRSwgYnRy ZWUgKGMxKSBJTlZBTElECisgICAgImF1eF9pbmRleF9pbmQ2X2NjYXV4IiBzdGlyIChjMSkgSU5W QUxJRAorCistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAor UkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMg ZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUgInB1YmxpYy5hdXhf aW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBE ZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVz OgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpCisKK0RST1AgSU5ERVgg YXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8g YXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXgg YWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9O IGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGlu ZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVk LgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5k ZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90YWI1IFdIRVJFIGMx ID0gMTsKKy0tIFNob3VsZCBiZSBza2lwcGVkIGR1cmluZyByZWluZGV4IGFuZCBkcm9wcGVkCitS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5kNjsKKy0tIE1ha2Ugc3VyZSBh dXggaW5kZXggaXMgZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUg InB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCitJbmRleGVzOgorICAgICJhdXhfaW5kZXhfaW5kNiIgVU5JUVVFLCBidHJlZSAoYzEpCisK K0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2Fpbgor SU5TRVJUIElOVE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGlu dmFsaWQgaW5kZXggYWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9p bmRleF9pbmQ2IE9OIGF1eF9pbmRleF90YWI1IChjMSk7CitFUlJPUjogIGNvdWxkIG5vdCBjcmVh dGUgdW5pcXVlIGluZGV4ICJhdXhfaW5kZXhfaW5kNiIKK0RFVEFJTDogIEtleSAoYzEpPSgxKSBp cyBkdXBsaWNhdGVkLgorLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5 LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9NIGF1eF9pbmRleF90 YWI1IFdIRVJFIGMxID0gMTsKKy0tIERyb3AgbWFpbiBpbmRleCBDT05DVVJSRU5UTFkKK0RST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eGlsaWFy eSBpbmRleCBkcm9wcGVkIHRvbworXGQgYXV4X2luZGV4X3RhYjUKKyAgICAgICAgICAgVGFibGUg InB1YmxpYy5hdXhfaW5kZXhfdGFiNSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgYzEgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCisKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CitFUlJPUjogIGluZGV4ICJhdXhfaW5k ZXhfaW5kNiIgZG9lcyBub3QgZXhpc3QKKy0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNF UlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxp ZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4 X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMxKTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1 bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1 cGxpY2F0ZWQuCistLSBEcm9wIG1haW4gaW5kZXgKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7 CistLSBNYWtlIHN1cmUgYXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhf dGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENvbHVtbiB8 ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKwogRFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsK IC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHByZXNzaW9ucyBhbmQgcHJlZGlj YXRlcy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQgaW5kZXhlcyBzaG91bGQg bWF0Y2ggdGhlIG9yaWdpbmFsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVh dGVfaW5kZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAppbmRl eCBiNDEwZmE1YzU0MS4uOTVlNmY3MmZkNGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2lu ZGV4LnNxbApAQCAtMTI3MywxMSArMTI3Myw2MiBAQCBSRUlOREVYIElOREVYIGF1eF9pbmRleF9p bmQ2X2NjYXV4OwogLS0gQ29uY3VycmVudGx5IGFsc28KIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFp bHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KLURFTEVURSBGUk9N IGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworREVMRVRFIEZST00gYXV4X2luZGV4 X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5kZXgg YW5kIGRyb3BwZWQKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUg YXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CitEUk9QIElOREVYIGF1eF9p bmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8gYXV4 X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXggYWdh aW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9OIGF1 eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJlIGdv IGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gYXV4X2lu ZGV4X3RhYjUgV0hFUkUgYzEgPSAxOwogLS0gU2hvdWxkIGJlIHNraXBwZWQgZHVyaW5nIHJlaW5k ZXgKLVJFSU5ERVggVEFCTEUgYXV4X2luZGV4X3RhYjU7Ci0tLSBTaG91bGQgYmUgc2tpcHBlZCBk dXJpbmcgY29uY3VycmVudCByZWluZGV4CiBSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSBhdXhf aW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCBleGlzdHMKK1xkIGF1eF9pbmRl eF90YWI1CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBlZAor UkVJTkRFWCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKKy0tIE1ha2Ugc3VyZSBhdXggaW5kZXggaXMg ZHJvcHBlZAorXGQgYXV4X2luZGV4X3RhYjUKK0RST1AgSU5ERVggYXV4X2luZGV4X2luZDY7CisK Ky0tIEluc2VydCBkdXBsaWNhdGVzIGFnYWluCitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBW QUxVRVMgKDEpLCAoMSk7CistLSBDcmVhdGUgaW52YWxpZCBpbmRleCBhZ2FpbgorQ1JFQVRFIFVO SVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUg KGMxKTsKKy0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhl IGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUgRlJPTSBhdXhfaW5kZXhfdGFiNSBXSEVS RSBjMSA9IDE7CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleCBhbmQgZHJvcHBl ZAorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1 cmUgYXV4IGluZGV4IGlzIGRyb3BwZWQKK1xkIGF1eF9pbmRleF90YWI1CitEUk9QIElOREVYIGF1 eF9pbmRleF9pbmQ2OworCistLSBJbnNlcnQgZHVwbGljYXRlcyBhZ2FpbgorSU5TRVJUIElOVE8g YXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpOworLS0gQ3JlYXRlIGludmFsaWQgaW5kZXgg YWdhaW4KK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2IE9O IGF1eF9pbmRleF90YWI1IChjMSk7CistLSBUaGlzIG1ha2VzIHRoZSBwcmV2aW91cyBmYWlsdXJl IGdvIGF3YXksIHNvIHRoZSBpbmRleCBjYW4gYmVjb21lIHZhbGlkLgorREVMRVRFIEZST00gYXV4 X2luZGV4X3RhYjUgV0hFUkUgYzEgPSAxOworLS0gRHJvcCBtYWluIGluZGV4IENPTkNVUlJFTlRM WQorRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDY7CistLSBNYWtlIHN1cmUg YXV4aWxpYXJ5IGluZGV4IGRyb3BwZWQgdG9vCitcZCBhdXhfaW5kZXhfdGFiNQorRFJPUCBJTkRF WCBhdXhfaW5kZXhfaW5kNjsKKworLS0gSW5zZXJ0IGR1cGxpY2F0ZXMgYWdhaW4KK0lOU0VSVCBJ TlRPIGF1eF9pbmRleF90YWI1IFZBTFVFUyAoMSksICgxKTsKKy0tIENyZWF0ZSBpbnZhbGlkIGlu ZGV4IGFnYWluCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5k NiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworLS0gRHJvcCBtYWluIGluZGV4CitEUk9QIElOREVY IGF1eF9pbmRleF9pbmQ2OworLS0gTWFrZSBzdXJlIGF1eGlsaWFyeSBpbmRleCBkcm9wcGVkIHRv bworXGQgYXV4X2luZGV4X3RhYjUKKwogRFJPUCBUQUJMRSBhdXhfaW5kZXhfdGFiNTsKIAogLS0g Q2hlY2sgaGFuZGxpbmcgb2YgaW5kZXhlcyB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVz LiAgVGhlCi0tIAoyLjQzLjAKCg== --000000000000813841062b2863c9 Content-Type: application/octet-stream; name="v11-0011-Updates-index-insert-and-value-computation-logic.patch" Content-Disposition: attachment; filename="v11-0011-Updates-index-insert-and-value-computation-logic.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5n7ah9b0 RnJvbSBmNDA4ZDdmYmRkNzUwYjg4NTczNzI2Y2Y3YzJkZTNkNzExNzBjMmI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxua2V5QHRvbG9rYS5haT4KRGF0ZTogTW9uLCAzMCBE ZWMgMjAyNCAxNjozNzoxMiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjExIDExLzExXSBVcGRhdGVz IGluZGV4IGluc2VydCBhbmQgdmFsdWUgY29tcHV0YXRpb24gbG9naWMgdG8KIG9wdGltaXplIGF1 eGlsaWFyeSBpbmRleCBoYW5kbGluZy4KCiogU2tpcCBpbmRleCB2YWx1ZSBjb21wdXRhdGlvbiBm b3IgYXV4aWxpYXJ5IGluZGljZXMgc2luY2UgdGhleSBhcmUgbm90IG5lZWRlZAoqIFNldCBpbmRl eFVuY2hhbmdlZD1mYWxzZSBmb3IgYXV4aWxpYXJ5IGluZGljZXMgdG8gYXZvaWQgdW5uZWNlc3Nh cnkgY2hlY2tzCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgfCAxMSAr KysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgfCAxMSArKysr KysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYwppbmRleCA0OWU4MzE1NTk3Mi4uZWFmMDhmNGY2NmEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMKQEAgLTI5MjksNiArMjkyOSwxNyBAQCBGb3JtSW5kZXhEYXR1bShJbmRleEluZm8g KmluZGV4SW5mbywKIAlMaXN0Q2VsbCAgICppbmRleHByX2l0ZW07CiAJaW50CQkJaTsKIAorCS8q IEF1eGlsaWFyeSBpbmRleCBkb2VzIG5vdCBuZWVkIGFueSB2YWx1ZXMgdG8gYmUgY29tcHV0ZWQg Ki8KKwlpZiAodW5saWtlbHkoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpKQorCXsKKwkJZm9yIChp ID0gMDsgaSA8IGluZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQorCQl7CisJCQl2YWx1 ZXNbaV0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJCQlpc251bGxbaV0gPSB0cnVlOworCQl9 CisJCXJldHVybjsKKwl9CisKIAlpZiAoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyAhPSBOSUwg JiYKIAkJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID09IE5JTCkKIAl7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmluZGV4IGFlMTFjMWRkNDYzLi5kMDcwZjgwNzk1ZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKQEAgLTQzNCwxMSArNDM0LDE0IEBAIEV4ZWNJ bnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkgKiBUaGVy ZSdzIGRlZmluaXRlbHkgZ29pbmcgdG8gYmUgYW4gaW5kZXhfaW5zZXJ0KCkgY2FsbCBmb3IgdGhp cwogCQkgKiBpbmRleC4gIElmIHdlJ3JlIGJlaW5nIGNhbGxlZCBhcyBwYXJ0IG9mIGFuIFVQREFU RSBzdGF0ZW1lbnQsCiAJCSAqIGNvbnNpZGVyIGlmIHRoZSAnaW5kZXhVbmNoYW5nZWQnID0gdHJ1 ZSBoaW50IHNob3VsZCBiZSBwYXNzZWQuCisJCSAqCisJCSAqIEluIGNhc2Ugb2YgYXV4aWxpYXJ5 IGluZGV4IGFsd2F5cyBwYXNzIGZhbHNlIGFzIG9wdGltaXNhdGlvbi4KIAkJICovCi0JCWluZGV4 VW5jaGFuZ2VkID0gdXBkYXRlICYmIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUocmVzdWx0UmVs SW5mbywKLQkJCQkJCQkJCQkJCQkJCSBlc3RhdGUsCi0JCQkJCQkJCQkJCQkJCQkgaW5kZXhJbmZv LAotCQkJCQkJCQkJCQkJCQkJIGluZGV4UmVsYXRpb24pOworCQlpbmRleFVuY2hhbmdlZCA9IHVw ZGF0ZSAmJiBsaWtlbHkoIWluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KSAmJgorCQkJCQkJCQkJaW5k ZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCQkJCQkJICBl c3RhdGUsCisJCQkJCQkJCQkJCQkJCQkgIGluZGV4SW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgaW5k ZXhSZWxhdGlvbik7CiAKIAkJc2F0aXNmaWVzQ29uc3RyYWludCA9CiAJCQlpbmRleF9pbnNlcnQo aW5kZXhSZWxhdGlvbiwgLyogaW5kZXggcmVsYXRpb24gKi8KLS0gCjIuNDMuMAoK --000000000000813841062b2863c9 Content-Type: application/octet-stream; name="v11-0009-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Disposition: attachment; filename="v11-0009-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5n7ah9i2 RnJvbSA5M2JkMDhiNzA4NzY5ZTMzMDUyZWUzNGZmY2E5MjYzOTE1YzFjMzY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDoyNDo0OCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjExIDA5 LzExXSBSZW1vdmUgUFJPQ19JTl9TQUZFX0lDIG9wdGltaXphdGlvbgoKUmVtb3ZlIHRoZSBvcHRp bWl6YXRpb24gdGhhdCBhbGxvd2VkIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSBv dGhlcgpjb25jdXJyZW50IGJ1aWxkcyBvZiAic2FmZSIgaW5kZXhlcyAodGhvc2Ugd2l0aG91dCBl eHByZXNzaW9ucyBvciBwcmVkaWNhdGVzKS4KVGhpcyBvcHRpbWl6YXRpb24gaXMgbm8gbG9uZ2Vy IG5lZWRlZCB3aXRoIHRoZSBuZXcgc25hcHNob3QgaGFuZGxpbmcgYXBwcm9hY2gKdGhhdCB1c2Vz IHBlcmlvZGljYWxseSByZWZyZXNoZWQgc25hcHNob3RzIGluc3RlYWQgb2YgYSBzaW5nbGUgcmVm ZXJlbmNlCnNuYXBzaG90LgoKVGhlIGNoYW5nZSBncmVhdGx5IHNpbXBsaWZpZXMgdGhlIGNvbmN1 cnJlbnQgaW5kZXggYnVpbGQgY29kZSBieToKLSBSZW1vdmluZyB0aGUgUFJPQ19JTl9TQUZFX0lD IHByb2Nlc3Mgc3RhdHVzIGZsYWcKLSBSZW1vdmluZyBhbGwgc2V0X2luZGV4c2FmZV9wcm9jZmxh Z3MoKSBjYWxscyBhbmQgcmVsYXRlZCBsb2dpYwotIFJlbW92aW5nIHNwZWNpYWwgY2FzZSBoYW5k bGluZyBpbiBHZXRDdXJyZW50VmlydHVhbFhJRHMoKQotIFJlbW92aW5nIHJlbGF0ZWQgdGVzdCBj YXNlcyBhbmQgaW5qZWN0aW9uIHBvaW50cwoKVGhpcyBpcyBwYXJ0IG9mIGltcHJvdmluZyBjb25j dXJyZW50IGluZGV4IGJ1aWxkcyB0byBiZXR0ZXIgaGFuZGxlIHhtaW4KcHJvcGFnYXRpb24gZHVy aW5nIGxvbmctcnVubmluZyBvcGVyYXRpb25zLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW4uYyAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRzb3J0LmMgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRl eGNtZHMuYyAgICAgICAgICAgICAgfCAxNDIgKy0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVk ZS9zdG9yYWdlL3Byb2MuaCAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZSAgICB8ICAgMiArLQogLi4uL2V4cGVjdGVk L3JlaW5kZXhfY29uYy5vdXQgICAgICAgICAgICAgICAgIHwgIDUxIC0tLS0tLS0KIHNyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCB8ICAgMSAtCiAuLi4vaW5qZWN0 aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNxbCAgICAgfCAgMjggLS0tLQogOCBmaWxlcyBj aGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAyMzMgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhf Y29uYy5vdXQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggZTU4 MDQ4M2E3Y2IuLmI0YjM2YmRhMDE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0yODg1LDEx ICsyODg1LDkgQEAgX2JyaW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBz aG1fdG9jICp0b2MpCiAJaW50CQkJc29ydG1lbTsKIAogCS8qCi0JICogVGhlIG9ubHkgcG9zc2li bGUgc3RhdHVzIGZsYWcgdGhhdCBjYW4gYmUgc2V0IHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIgaXMK LQkgKiBQUk9DX0lOX1NBRkVfSUMuCisJICogVGhlcmUgYXJlIG5vIHBvc3NpYmxlIHN0YXR1cyBm bGFnIHRoYXQgY2FuIGJlIHNldCB0byB0aGUgcGFyYWxsZWwgd29ya2VyLgogCSAqLwotCUFzc2Vy dCgoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSAwKSB8fAotCQkgICAoTXlQcm9jLT5zdGF0dXNGbGFn cyA9PSBQUk9DX0lOX1NBRkVfSUMpKTsKKwlBc3NlcnQoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSAw KTsKIAogCS8qIFNldCBkZWJ1Z19xdWVyeV9zdHJpbmcgZm9yIGluZGl2aWR1YWwgd29ya2VycyBm aXJzdCAqLwogCXNoYXJlZHF1ZXJ5ID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlf UVVFUllfVEVYVCwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IDYy ZTk3NTAxNmFkLi4xZWI0Mjk5ODI2ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMK QEAgLTE5MTEsMTEgKzE5MTEsOSBAQCBfYnRfcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVu dCAqc2VnLCBzaG1fdG9jICp0b2MpCiAjZW5kaWYJCQkJCQkJLyogQlRSRUVfQlVJTERfU1RBVFMg Ki8KIAogCS8qCi0JICogVGhlIG9ubHkgcG9zc2libGUgc3RhdHVzIGZsYWcgdGhhdCBjYW4gYmUg c2V0IHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIgaXMKLQkgKiBQUk9DX0lOX1NBRkVfSUMuCisJICog VGhlcmUgYXJlIG5vIHBvc3NpYmxlIHN0YXR1cyBmbGFnIHRoYXQgY2FuIGJlIHNldCB0byB0aGUg cGFyYWxsZWwgd29ya2VyLgogCSAqLwotCUFzc2VydCgoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSAw KSB8fAotCQkgICAoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSBQUk9DX0lOX1NBRkVfSUMpKTsKKwlB c3NlcnQoTXlQcm9jLT5zdGF0dXNGbGFncyA9PSAwKTsKIAogCS8qIFNldCBkZWJ1Z19xdWVyeV9z dHJpbmcgZm9yIGluZGl2aWR1YWwgd29ya2VycyBmaXJzdCAqLwogCXNoYXJlZHF1ZXJ5ID0gc2ht X3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUVVFUllfVEVYVCwgdHJ1ZSk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2luZGV4Y21kcy5jCmluZGV4IGUxMGY2MDk4ZjU4Li5iOTg4NTFhOWUzNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvaW5kZXhjbWRzLmMKQEAgLTExNiw3ICsxMTYsNiBAQCBzdGF0aWMgYm9vbCBSZWluZGV4 UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsCiAJCQkJCQkJCQkJ T2lkIHJlbGF0aW9uT2lkLAogCQkJCQkJCQkJCWNvbnN0IFJlaW5kZXhQYXJhbXMgKnBhcmFtcyk7 CiBzdGF0aWMgdm9pZCB1cGRhdGVfcmVsaXNwYXJ0aXRpb24oT2lkIHJlbGF0aW9uSWQsIGJvb2wg bmV3dmFsKTsKLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfaW5kZXhzYWZlX3Byb2NmbGFncyh2b2lk KTsKIAogLyoKICAqIGNhbGxiYWNrIGFyZ3VtZW50IHR5cGUgZm9yIFJhbmdlVmFyQ2FsbGJhY2tG b3JSZWluZGV4SW5kZXgoKQpAQCAtNDE5LDEwICs0MTgsNyBAQCBDb21wYXJlT3BjbGFzc09wdGlv bnMoY29uc3QgRGF0dW0gKm9wdHMxLCBjb25zdCBEYXR1bSAqb3B0czIsIGludCBuYXR0cykKICAq IGxhenkgVkFDVVVNcywgYmVjYXVzZSB0aGV5IHdvbid0IGJlIGZhemVkIGJ5IG1pc3NpbmcgaW5k ZXggZW50cmllcwogICogZWl0aGVyLiAgKE1hbnVhbCBBTkFMWVpFcywgaG93ZXZlciwgY2FuJ3Qg YmUgZXhjbHVkZWQgYmVjYXVzZSB0aGV5CiAgKiBtaWdodCBiZSB3aXRoaW4gdHJhbnNhY3Rpb25z IHRoYXQgYXJlIGdvaW5nIHRvIGRvIGFyYml0cmFyeSBvcGVyYXRpb25zCi0gKiBsYXRlci4pICBQ cm9jZXNzZXMgcnVubmluZyBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG9yIFJFSU5ERVggQ09O Q1VSUkVOVExZCi0gKiBvbiBpbmRleGVzIHRoYXQgYXJlIG5laXRoZXIgZXhwcmVzc2lvbmFsIG5v ciBwYXJ0aWFsIGFyZSBhbHNvIHNhZmUgdG8KLSAqIGlnbm9yZSwgc2luY2Ugd2Uga25vdyB0aGF0 IHRob3NlIHByb2Nlc3NlcyB3b24ndCBleGFtaW5lIGFueSBkYXRhCi0gKiBvdXRzaWRlIHRoZSB0 YWJsZSB0aGV5J3JlIGluZGV4aW5nLgorICogbGF0ZXIuKQogICoKICAqIEFsc28sIEdldEN1cnJl bnRWaXJ0dWFsWElEcyBuZXZlciByZXBvcnRzIG91ciBvd24gdnhpZCwgc28gd2UgbmVlZCBub3QK ICAqIGNoZWNrIGZvciB0aGF0LgpAQCAtNDQzLDggKzQzOSw3IEBAIFdhaXRGb3JPbGRlclNuYXBz aG90cyhUcmFuc2FjdGlvbklkIGxpbWl0WG1pbiwgYm9vbCBwcm9ncmVzcykKIAlWaXJ0dWFsVHJh bnNhY3Rpb25JZCAqb2xkX3NuYXBzaG90czsKIAogCW9sZF9zbmFwc2hvdHMgPSBHZXRDdXJyZW50 VmlydHVhbFhJRHMobGltaXRYbWluLCB0cnVlLCBmYWxzZSwKLQkJCQkJCQkJCQkgIFBST0NfSVNf QVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNCi0JCQkJCQkJCQkJICB8IFBST0NfSU5fU0FGRV9J QywKKwkJCQkJCQkJCQkgIFBST0NfSVNfQVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNLAogCQkJ CQkJCQkJCSAgJm5fb2xkX3NuYXBzaG90cyk7CiAJaWYgKHByb2dyZXNzKQogCQlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1dBSVRGT1JfVE9UQUwsIG5fb2xkX3NuYXBzaG90 cyk7CkBAIC00NjQsOCArNDU5LDcgQEAgV2FpdEZvck9sZGVyU25hcHNob3RzKFRyYW5zYWN0aW9u SWQgbGltaXRYbWluLCBib29sIHByb2dyZXNzKQogCiAJCQluZXdlcl9zbmFwc2hvdHMgPSBHZXRD dXJyZW50VmlydHVhbFhJRHMobGltaXRYbWluLAogCQkJCQkJCQkJCQkJCXRydWUsIGZhbHNlLAot CQkJCQkJCQkJCQkJCVBST0NfSVNfQVVUT1ZBQ1VVTSB8IFBST0NfSU5fVkFDVVVNCi0JCQkJCQkJ CQkJCQkJfCBQUk9DX0lOX1NBRkVfSUMsCisJCQkJCQkJCQkJCQkJUFJPQ19JU19BVVRPVkFDVVVN IHwgUFJPQ19JTl9WQUNVVU0sCiAJCQkJCQkJCQkJCQkJJm5fbmV3ZXJfc25hcHNob3RzKTsKIAkJ CWZvciAoaiA9IGk7IGogPCBuX29sZF9zbmFwc2hvdHM7IGorKykKIAkJCXsKQEAgLTU3OSw3ICs1 NzMsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlhbW9wdGlvbnNfZnVuY3Rpb24gYW1v cHRpb25zOwogCWJvb2wJCWV4Y2x1c2lvbjsKIAlib29sCQlwYXJ0aXRpb25lZDsKLQlib29sCQlz YWZlX2luZGV4OwogCURhdHVtCQlyZWxvcHRpb25zOwogCWludDE2CSAgICpjb2xvcHRpb25zOwog CUluZGV4SW5mbyAgKmluZGV4SW5mbzsKQEAgLTExNTcsMTAgKzExNTAsNiBAQCBEZWZpbmVJbmRl eChPaWQgdGFibGVJZCwKIAkJfQogCX0KIAotCS8qIElzIGluZGV4IHNhZmUgZm9yIG90aGVycyB0 byBpZ25vcmU/ICBTZWUgc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKSAqLwotCXNhZmVfaW5kZXgg PSBpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zID09IE5JTCAmJgotCQlpbmRleEluZm8tPmlpX1By ZWRpY2F0ZSA9PSBOSUw7Ci0KIAkvKgogCSAqIFJlcG9ydCBpbmRleCBjcmVhdGlvbiBpZiBhcHBy b3ByaWF0ZSAoZGVsYXkgdGhpcyB0aWxsIGFmdGVyIG1vc3Qgb2YgdGhlCiAJICogZXJyb3IgY2hl Y2tzKQpAQCAtMTY0NywxMCArMTYzNiw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAK LQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXgg cXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdz KCk7Ci0KIAkvKgogCSAqIFRoZSBpbmRleCBpcyBub3cgdmlzaWJsZSwgc28gd2UgY2FuIHJlcG9y dCB0aGUgT0lELiAgV2hpbGUgb24gaXQsCiAJICogaW5jbHVkZSB0aGUgcmVwb3J0IGZvciB0aGUg YmVnaW5uaW5nIG9mIHBoYXNlIDIuCkBAIC0xNzA1LDkgKzE2OTAsNiBAQCBEZWZpbmVJbmRleChP aWQgdGFibGVJZCwKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0 aW9uQ29tbWFuZCgpOwogCi0JLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25v cmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5k ZXhzYWZlX3Byb2NmbGFncygpOwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJ VF8yKTsKIAkvKgpAQCAtMTczNywxMCArMTcxOSw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlk LAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5k KCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYg aW5kZXggcXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJv Y2ZsYWdzKCk7Ci0KIAkvKgogCSAqIFBoYXNlIDMgb2YgY29uY3VycmVudCBpbmRleCBidWlsZAog CSAqCkBAIC0xNzY2LDkgKzE3NDQsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAogCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0J LyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1 YWxpZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygp OworCiAJLyoKIAkgKiBNZXJnZSBjb250ZW50IG9mIGF1eGlsaWFyeSBhbmQgdGFyZ2V0IGluZGV4 ZXMgLSBpbnNlcnQgYW55IG1pc3NpbmcgaW5kZXggZW50cmllcy4KIAkgKi8KQEAgLTE3ODUsOSAr MTc2MSw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJl bnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JaWYg KHNhZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CiAKIAkvKiBXZSBzaG91 bGQgbm93IGRlZmluaXRlbHkgbm90IGJlIGFkdmVydGlzaW5nIGFueSB4bWluLiAqLwogCUFzc2Vy dChNeVByb2MtPnhtaW4gPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpOwpAQCAtMTgyOCwxMCArMTgw MSw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJlbnQg aW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JaWYgKHNh ZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNSk7CiAJLyogTm93IHdhaXQgZm9yIGFsbCB0cmFuc2Fj dGlvbiB0byBzZWUgYXV4aWxpYXJ5IGFzICJub24tcmVhZHkgZm9yIGluc2VydHMiICovCkBAIC0x ODUyLDEwICsxODIxLDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFRlbGwg Y29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMg Ki8KLQlpZiAoc2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJ CQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF82KTsKIAkvKiBOb3cgd2FpdCBmb3Ig YWxsIHRyYW5zYWN0aW9uIHRvIGlnbm9yZSBhdXhpbGlhcnkgYmVjYXVzZSBpdCBpcyBkZWFkICov CkBAIC0zNjMwLDcgKzM1OTUsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlPaWQJCQlh dXhJbmRleElkOwogCQlPaWQJCQl0YWJsZUlkOwogCQlPaWQJCQlhbUlkOwotCQlib29sCQlzYWZl OwkJLyogZm9yIHNldF9pbmRleHNhZmVfcHJvY2ZsYWdzICovCiAJfSBSZWluZGV4SW5kZXhJbmZv OwogCUxpc3QJICAgKmhlYXBSZWxhdGlvbklkcyA9IE5JTDsKIAlMaXN0CSAgICppbmRleElkcyA9 IE5JTDsKQEAgLTQwMDIsMTcgKzM5NjYsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlz YXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOwogCQlSZXN0cmljdFNlYXJjaFBhdGgo KTsKIAotCQkvKiBkZXRlcm1pbmUgc2FmZXR5IG9mIHRoaXMgaW5kZXggZm9yIHNldF9pbmRleHNh ZmVfcHJvY2ZsYWdzICovCi0JCWlkeC0+c2FmZSA9IChSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lv bnMoaW5kZXhSZWwpID09IE5JTCAmJgotCQkJCQkgUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShp bmRleFJlbCkgPT0gTklMKTsKLQotI2lmZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCi0JCWlmIChp ZHgtPnNhZmUpCi0JCQlJTkpFQ1RJT05fUE9JTlQoInJlaW5kZXgtY29uYy1pbmRleC1zYWZlIik7 Ci0JCWVsc2UKLQkJCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZl Iik7Ci0jZW5kaWYKLQogCQlpZHgtPnRhYmxlSWQgPSBSZWxhdGlvbkdldFJlbGlkKGhlYXBSZWwp OwogCQlpZHgtPmFtSWQgPSBpbmRleFJlbC0+cmRfcmVsLT5yZWxhbTsKIApAQCAtNDA3Miw3ICs0 MDI1LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpz dG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJbmV3aWR4ID0gcGFsbG9jX29iamVj dChSZWluZGV4SW5kZXhJbmZvKTsKIAkJbmV3aWR4LT5pbmRleElkID0gbmV3SW5kZXhJZDsKIAkJ bmV3aWR4LT5hdXhJbmRleElkID0gYXV4SW5kZXhJZDsKLQkJbmV3aWR4LT5zYWZlID0gaWR4LT5z YWZlOwogCQluZXdpZHgtPnRhYmxlSWQgPSBpZHgtPnRhYmxlSWQ7CiAJCW5ld2lkeC0+YW1JZCA9 IGlkeC0+YW1JZDsKIApAQCAtNDE2NSwxMSArNDExNyw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1 cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBS ZWluCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKIAotCS8qCi0JICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3QgaW4gdGhp cyB0cmFuc2FjdGlvbiwgdGhlcmUncyBubyBuZWVkCi0JICogdG8gc2V0IHRoZSBQUk9DX0lOX1NB RkVfSUMgZmxhZyBoZXJlLgotCSAqLwotCiAJLyoKIAkgKiBQaGFzZSAyIG9mIFJFSU5ERVggQ09O Q1VSUkVOVExZCiAJICoKQEAgLTQyMDAsMTAgKzQxNDcsNiBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCQkgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkvKiBUZWxsIGNvbmN1 cnJlbnQgaW5kZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQkJaWYg KG5ld2lkeC0+c2FmZSkKLQkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAkJLyogQnVp bGQgYXV4aWxpYXJ5IGluZGV4LCBpdCBpcyBmYXN0IC0gd2l0aG91dCBhbnkgYWN0dWFsIGhlYXAg c2NhbiwganVzdCBhbiBlbXB0eSBpbmRleC4gKi8KIAkJaW5kZXhfY29uY3VycmVudGx5X2J1aWxk KG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5hdXhJbmRleElkKTsKIApAQCAtNDIxMiwxMSArNDE1 NSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3Rt dCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwogCi0JLyoKLQkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBpbiB0aGlz IHRyYW5zYWN0aW9uLCB0aGVyZSdzIG5vIG5lZWQKLQkgKiB0byBzZXQgdGhlIFBST0NfSU5fU0FG RV9JQyBmbGFnIGhlcmUuCi0JICovCi0KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RV9XQUlUXzIpOwogCS8qCkBAIC00MjQxLDEwICs0MTc5LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29u Y3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0 IFJlaW4KIAkJICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJLyogVGVsbCBjb25j dXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JCWlm IChuZXdpZHgtPnNhZmUpCi0JCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwotCiAJCS8qCiAJ CSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxkLCB3aXRoIHRoZSBjb3Jy ZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAgLTQyNjQsMTEgKzQxOTgsNiBAQCBS ZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBy ZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAot CS8qCi0JICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3Qgb3IgWGlkIGluIHRoaXMg dHJhbnNhY3Rpb24sIHRoZXJlJ3Mgbm8KLQkgKiBuZWVkIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZF X0lDIGZsYWcgaGVyZS4KLQkgKi8KLQogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJP R1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1dBSVRfMyk7CiAJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0 cnVlKTsKQEAgLTQyODksMTAgKzQyMTgsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkg Ki8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5k ZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQkJaWYgKG5ld2lkeC0+ c2FmZSkKLQkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAkJLyoKIAkJICogVXBkYXRp bmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3 ZQogCQkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCkBAIC00MzI1LDEwICs0MjUwLDYgQEAgUmVp bmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVs YXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAK LQkJLyogVGVsbCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVh bGlmaWVzICovCi0JCWlmIChuZXdpZHgtPnNhZmUpCi0JCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFn cygpOwotCiAJCS8qCiAJCSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxk LCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAgLTQzNTYs OSArNDI3Nyw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqIGludGVyZXN0aW5nIHR1 cGxlcy4gIEJ1dCBzaW5jZSBpdCBtaWdodCBub3QgY29udGFpbiB0dXBsZXMgZGVsZXRlZAogCQkg KiBqdXN0IGJlZm9yZSB0aGUgbGF0ZXN0IHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQg b3V0IGFueQogCQkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90 cy4KLQkJICoKLQkJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3Qgb3IgWGlkIGlu IHRoaXMgdHJhbnNhY3Rpb24sCi0JCSAqIHRoZXJlJ3Mgbm8gbmVlZCB0byBzZXQgdGhlIFBST0Nf SU5fU0FGRV9JQyBmbGFnIGhlcmUuCiAJCSAqLwogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3Bh cmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfV0FJVF80KTsKQEAgLTQzODAsMTMgKzQyOTgsNiBAQCBSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29u c3QgUmVpbgogCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleF9yZWxhdGlvbl9jb25jdXJyZW50bHlf YmVmb3JlX3N3YXAiKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyoKLQkgKiBC ZWNhdXNlIHRoaXMgdHJhbnNhY3Rpb24gb25seSBkb2VzIGNhdGFsb2cgbWFuaXB1bGF0aW9ucyBh bmQgZG9lc24ndCBkbwotCSAqIGFueSBpbmRleCBvcGVyYXRpb25zLCB3ZSBjYW4gc2V0IHRoZSBQ Uk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJlCi0JICogdW5jb25kaXRpb25hbGx5LgotCSAqLwotCXNl dF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAlmb3Jib3RoKGxjLCBpbmRleElkcywgbGMyLCBu ZXdJbmRleElkcykKIAl7CiAJCVJlaW5kZXhJbmRleEluZm8gKm9sZGlkeCA9IGxmaXJzdChsYyk7 CkBAIC00NDQyLDEyICs0MzUzLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyoK LQkgKiBXaGlsZSB3ZSBjb3VsZCBzZXQgUFJPQ19JTl9TQUZFX0lDIGlmIGFsbCBpbmRleGVzIHF1 YWxpZmllZCwgdGhlcmUncyBubwotCSAqIHJlYWwgbmVlZCBmb3IgdGhhdCwgYmVjYXVzZSB3ZSBv bmx5IGFjcXVpcmUgYW4gWGlkIGFmdGVyIHRoZSB3YWl0IGlzCi0JICogZG9uZSwgYW5kIHRoYXQg bGFzdHMgZm9yIGEgdmVyeSBzaG9ydCBwZXJpb2QuCi0JICovCi0KIAkvKgogCSAqIFBoYXNlIDUg b2YgUkVJTkRFWCBDT05DVVJSRU5UTFkKIAkgKgpAQCAtNDUwOSwxMiArNDQxNCw2IEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qCi0JICogV2hpbGUgd2UgY291bGQgc2V0IFBST0Nf SU5fU0FGRV9JQyBpZiBhbGwgaW5kZXhlcyBxdWFsaWZpZWQsIHRoZXJlJ3Mgbm8KLQkgKiByZWFs IG5lZWQgZm9yIHRoYXQsIGJlY2F1c2Ugd2Ugb25seSBhY3F1aXJlIGFuIFhpZCBhZnRlciB0aGUg d2FpdCBpcwotCSAqIGRvbmUsIGFuZCB0aGF0IGxhc3RzIGZvciBhIHZlcnkgc2hvcnQgcGVyaW9k LgotCSAqLwotCiAJLyoKIAkgKiBQaGFzZSA2IG9mIFJFSU5ERVggQ09OQ1VSUkVOVExZCiAJICoK QEAgLTQ3NzQsMzYgKzQ2NzMsMyBAQCB1cGRhdGVfcmVsaXNwYXJ0aXRpb24oT2lkIHJlbGF0aW9u SWQsIGJvb2wgbmV3dmFsKQogCXRhYmxlX2Nsb3NlKGNsYXNzUmVsLCBSb3dFeGNsdXNpdmVMb2Nr KTsKIH0KIAotLyoKLSAqIFNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaW4gTXlQcm9jLT5z dGF0dXNGbGFncy4KLSAqCi0gKiBXaGVuIGRvaW5nIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB3 ZSBjYW4gc2V0IHRoaXMgZmxhZwotICogdG8gdGVsbCBvdGhlciBwcm9jZXNzZXMgY29uY3VycmVu dGx5IHJ1bm5pbmcgQ1JFQVRFCi0gKiBJTkRFWCBDT05DVVJSRU5UTFkgb3IgUkVJTkRFWCBDT05D VVJSRU5UTFkgdG8gaWdub3JlIHVzIHdoZW4KLSAqIGRvaW5nIHRoZWlyIHdhaXRzIGZvciBjb25j dXJyZW50IHNuYXBzaG90cy4gIE9uIG9uZSBoYW5kIGl0Ci0gKiBhdm9pZHMgcG9pbnRsZXNzbHkg d2FpdGluZyBmb3IgYSBwcm9jZXNzIHRoYXQncyBub3QgaW50ZXJlc3RpbmcKLSAqIGFueXdheTsg YnV0IG1vcmUgaW1wb3J0YW50bHkgaXQgYXZvaWRzIGRlYWRsb2NrcyBpbiBzb21lIGNhc2VzLgot ICoKLSAqIFRoaXMgY2FuIGJlIGRvbmUgc2FmZWx5IG9ubHkgZm9yIGluZGV4ZXMgdGhhdCBkb24n dCBleGVjdXRlIGFueQotICogZXhwcmVzc2lvbnMgdGhhdCBjb3VsZCBhY2Nlc3Mgb3RoZXIgdGFi bGVzLCBzbyBpbmRleCBtdXN0IG5vdCBiZQotICogZXhwcmVzc2lvbmFsIG5vciBwYXJ0aWFsLiAg Q2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBvbmx5IGNhbGxpbmcKLSAqIHRoaXMgcm91dGluZSB3 aGVuIHRoYXQgYXNzdW1wdGlvbiBob2xkcyB0cnVlLgotICoKLSAqIChUaGUgZmxhZyBpcyByZXNl dCBhdXRvbWF0aWNhbGx5IGF0IHRyYW5zYWN0aW9uIGVuZCwgc28gaXQgbXVzdCBiZQotICogc2V0 IGZvciBlYWNoIHRyYW5zYWN0aW9uLikKLSAqLwotc3RhdGljIGlubGluZSB2b2lkCi1zZXRfaW5k ZXhzYWZlX3Byb2NmbGFncyh2b2lkKQotewotCS8qCi0JICogVGhpcyBzaG91bGQgb25seSBiZSBj YWxsZWQgYmVmb3JlIGluc3RhbGxpbmcgeGlkIG9yIHhtaW4gaW4gTXlQcm9jOwotCSAqIG90aGVy d2lzZSwgY29uY3VycmVudCBwcm9jZXNzZXMgY291bGQgc2VlIGFuIFhtaW4gdGhhdCBtb3ZlcyBi YWNrd2FyZHMuCi0JICovCi0JQXNzZXJ0KE15UHJvYy0+eGlkID09IEludmFsaWRUcmFuc2FjdGlv bklkICYmCi0JCSAgIE15UHJvYy0+eG1pbiA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7Ci0KLQlM V0xvY2tBY3F1aXJlKFByb2NBcnJheUxvY2ssIExXX0VYQ0xVU0lWRSk7Ci0JTXlQcm9jLT5zdGF0 dXNGbGFncyB8PSBQUk9DX0lOX1NBRkVfSUM7Ci0JUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3NbTXlQ cm9jLT5wZ3hhY3RvZmZdID0gTXlQcm9jLT5zdGF0dXNGbGFnczsKLQlMV0xvY2tSZWxlYXNlKFBy b2NBcnJheUxvY2spOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAppbmRleCAyMDc3N2Y3ZDVhZS4uNGJkMjRiYzAy ZDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisrKyBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcHJvYy5oCkBAIC01NiwxMCArNTYsNiBAQCBzdHJ1Y3QgWGlkQ2FjaGUKICAq LwogI2RlZmluZQkJUFJPQ19JU19BVVRPVkFDVVVNCTB4MDEJLyogaXMgaXQgYW4gYXV0b3ZhYyB3 b3JrZXI/ICovCiAjZGVmaW5lCQlQUk9DX0lOX1ZBQ1VVTQkJMHgwMgkvKiBjdXJyZW50bHkgcnVu bmluZyBsYXp5IHZhY3V1bSAqLwotI2RlZmluZQkJUFJPQ19JTl9TQUZFX0lDCQkweDA0CS8qIGN1 cnJlbnRseSBydW5uaW5nIENSRUFURSBJTkRFWAotCQkJCQkJCQkJCSAqIENPTkNVUlJFTlRMWSBv ciBSRUlOREVYCi0JCQkJCQkJCQkJICogQ09OQ1VSUkVOVExZIG9uIG5vbi1leHByZXNzaW9uYWws Ci0JCQkJCQkJCQkJICogbm9uLXBhcnRpYWwgaW5kZXggKi8KICNkZWZpbmUJCVBST0NfVkFDVVVN X0ZPUl9XUkFQQVJPVU5ECTB4MDgJLyogc2V0IGJ5IGF1dG92YWMgb25seSAqLwogI2RlZmluZQkJ UFJPQ19JTl9MT0dJQ0FMX0RFQ09ESU5HCTB4MTAJLyogY3VycmVudGx5IGRvaW5nIGxvZ2ljYWwK IAkJCQkJCQkJCQkJCSAqIGRlY29kaW5nIG91dHNpZGUgeGFjdCAqLwpAQCAtNjksMTMgKzY1LDEz IEBAIHN0cnVjdCBYaWRDYWNoZQogCiAvKiBmbGFncyByZXNldCBhdCBFT1hhY3QgKi8KICNkZWZp bmUJCVBST0NfVkFDVVVNX1NUQVRFX01BU0sgXAotCShQUk9DX0lOX1ZBQ1VVTSB8IFBST0NfSU5f U0FGRV9JQyB8IFBST0NfVkFDVVVNX0ZPUl9XUkFQQVJPVU5EKQorCShQUk9DX0lOX1ZBQ1VVTSB8 IFBST0NfVkFDVVVNX0ZPUl9XUkFQQVJPVU5EKQogCiAvKgogICogWG1pbi1yZWxhdGVkIGZsYWdz LiBNYWtlIHN1cmUgYW55IGZsYWdzIHRoYXQgYWZmZWN0IGhvdyB0aGUgcHJvY2VzcycgWG1pbgog ICogdmFsdWUgaXMgaW50ZXJwcmV0ZWQgYnkgVkFDVVVNIGFyZSBpbmNsdWRlZCBoZXJlLgogICov Ci0jZGVmaW5lCQlQUk9DX1hNSU5fRkxBR1MgKFBST0NfSU5fVkFDVVVNIHwgUFJPQ19JTl9TQUZF X0lDKQorI2RlZmluZQkJUFJPQ19YTUlOX0ZMQUdTIChQUk9DX0lOX1ZBQ1VVTSkKIAogLyoKICAq IFdlIGFsbG93IGEgbGltaXRlZCBudW1iZXIgb2YgIndlYWsiIHJlbGF0aW9uIGxvY2tzIChBY2Nl c3NTaGFyZUxvY2ssCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUK aW5kZXggMjIyNWNkMGJmODcuLmIyNTdhMDM0NGE4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL01ha2VmaWxlCkBAIC0xMCw3ICsxMCw3IEBAIEVYVEVOU0lPTiA9IGluamVj dGlvbl9wb2ludHMKIERBVEEgPSBpbmplY3Rpb25fcG9pbnRzLS0xLjAuc3FsCiBQR0ZJTEVERVND ID0gImluamVjdGlvbl9wb2ludHMgLSBmYWNpbGl0eSBmb3IgaW5qZWN0aW9uIHBvaW50cyIKIAot UkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMgcmVpbmRleF9jb25jIGNpY19yZXNldF9zbmFwc2hv dHMKK1JFR1JFU1MgPSBpbmplY3Rpb25fcG9pbnRzIGNpY19yZXNldF9zbmFwc2hvdHMKIFJFR1JF U1NfT1BUUyA9IC0tZGxwYXRoPSQodG9wX2J1aWxkZGlyKS9zcmMvdGVzdC9yZWdyZXNzCiAKIElT T0xBVElPTiA9IGJhc2ljIGlucGxhY2UKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0IGIvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3JlaW5kZXhfY29uYy5vdXQKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGRiOGRlNGJiZTg1Li4wMDAwMDAwMDAwMAotLS0gYS9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvcmVpbmRleF9jb25jLm91dAorKysg L2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS0tIFRlc3RzIGZvciBSRUlOREVYIENPTkNVUlJF TlRMWQotQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwotLS0gQ2hlY2sgc2FmZXR5 IG9mIGluZGV4ZXMgd2l0aCBwcmVkaWNhdGVzIGFuZCBleHByZXNzaW9ucy4KLVNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwotIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1TRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ3JlaW5kZXgtY29uYy1pbmRleC1zYWZlJywgJ25vdGljZScpOwot IGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIAot KDEgcm93KQotCi1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3JlaW5kZXgtY29uYy1p bmRleC1ub3Qtc2FmZScsICdub3RpY2UnKTsKLSBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLSgxIHJvdykKLQotQ1JFQVRFIFNDSEVNQSByZWlu ZGV4X2luajsKLUNSRUFURSBUQUJMRSByZWluZGV4X2luai50YmwoaSBpbnQgcHJpbWFyeSBrZXks IHVwZGF0ZWRfYXQgdGltZXN0YW1wKTsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX3NpbXBsZSBP TiByZWluZGV4X2luai50YmwoaSk7Ci1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9leHByIE9OIHJl aW5kZXhfaW5qLnRibChBQlMoaSkpOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfcHJlZCBPTiBy ZWluZGV4X2luai50YmwoaSkgV0hFUkUgbW9kKGksIDIpID0gMDsKLUNSRUFURSBVTklRVUUgSU5E RVggaW5kX2V4cHJfcHJlZCBPTiByZWluZGV4X2luai50YmwoYWJzKGkpKSBXSEVSRSBtb2QoaSwg MikgPSAwOwotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX3NpbXBs ZTsKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCByZWluZGV4 LWNvbmMtaW5kZXgtc2FmZQotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmou aW5kX2V4cHI7Ci1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg cmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlCi1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBy ZWluZGV4X2luai5pbmRfcHJlZDsKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCByZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUKLVJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9leHByX3ByZWQ7Ci1OT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgcmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlCi0t LSBDbGVhbnVwCi1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXgtY29uYy1p bmRleC1zYWZlJyk7Ci0gaW5qZWN0aW9uX3BvaW50c19kZXRhY2ggCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgn cmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlJyk7Ci0gaW5qZWN0aW9uX3BvaW50c19kZXRhY2gg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLURST1AgVEFCTEUgcmVp bmRleF9pbmoudGJsOwotRFJPUCBTQ0hFTUEgcmVpbmRleF9pbmo7Ci1EUk9QIEVYVEVOU0lPTiBp bmplY3Rpb25fcG9pbnRzOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21l c29uLmJ1aWxkCmluZGV4IGZiMTMxMjcwNjY4Li4wNTFiM2U3ODljMSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZApAQCAtMzQsNyArMzQsNiBAQCB0 ZXN0cyArPSB7CiAgICdyZWdyZXNzJzogewogICAgICdzcWwnOiBbCiAgICAgICAnaW5qZWN0aW9u X3BvaW50cycsCi0gICAgICAncmVpbmRleF9jb25jJywKICAgICAgICdjaWNfcmVzZXRfc25hcHNo b3RzJywKICAgICBdLAogICAgICdyZWdyZXNzX2FyZ3MnOiBbJy0tZGxwYXRoJywgbWVzb24uYnVp bGRfcm9vdCgpIC8gJ3NyYy90ZXN0L3JlZ3Jlc3MnXSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNxbCBiL3NyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNxbApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggNmNmMjExZTZkNWQuLjAwMDAwMDAwMDAwCi0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvcmVpbmRleF9jb25jLnNxbAorKysgL2Rldi9u dWxsCkBAIC0xLDI4ICswLDAgQEAKLS0tIFRlc3RzIGZvciBSRUlOREVYIENPTkNVUlJFTlRMWQot Q1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwotCi0tLSBDaGVjayBzYWZldHkgb2Yg aW5kZXhlcyB3aXRoIHByZWRpY2F0ZXMgYW5kIGV4cHJlc3Npb25zLgotU0VMRUNUIGluamVjdGlv bl9wb2ludHNfc2V0X2xvY2FsKCk7Ci1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3Jl aW5kZXgtY29uYy1pbmRleC1zYWZlJywgJ25vdGljZScpOwotU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfYXR0YWNoKCdyZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUnLCAnbm90aWNlJyk7Ci0KLUNS RUFURSBTQ0hFTUEgcmVpbmRleF9pbmo7Ci1DUkVBVEUgVEFCTEUgcmVpbmRleF9pbmoudGJsKGkg aW50IHByaW1hcnkga2V5LCB1cGRhdGVkX2F0IHRpbWVzdGFtcCk7Ci0KLUNSRUFURSBVTklRVUUg SU5ERVggaW5kX3NpbXBsZSBPTiByZWluZGV4X2luai50YmwoaSk7Ci1DUkVBVEUgVU5JUVVFIElO REVYIGluZF9leHByIE9OIHJlaW5kZXhfaW5qLnRibChBQlMoaSkpOwotQ1JFQVRFIFVOSVFVRSBJ TkRFWCBpbmRfcHJlZCBPTiByZWluZGV4X2luai50YmwoaSkgV0hFUkUgbW9kKGksIDIpID0gMDsK LUNSRUFURSBVTklRVUUgSU5ERVggaW5kX2V4cHJfcHJlZCBPTiByZWluZGV4X2luai50YmwoYWJz KGkpKSBXSEVSRSBtb2QoaSwgMikgPSAwOwotCi1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBy ZWluZGV4X2luai5pbmRfc2ltcGxlOwotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRl eF9pbmouaW5kX2V4cHI7Ci1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5p bmRfcHJlZDsKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9leHBy X3ByZWQ7Ci0KLS0tIENsZWFudXAKLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVp bmRleC1jb25jLWluZGV4LXNhZmUnKTsKLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgn cmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlJyk7Ci1EUk9QIFRBQkxFIHJlaW5kZXhfaW5qLnRi bDsKLURST1AgU0NIRU1BIHJlaW5kZXhfaW5qOwotCi1EUk9QIEVYVEVOU0lPTiBpbmplY3Rpb25f cG9pbnRzOwotLSAKMi40My4wCgo= --000000000000813841062b2863c9 Content-Type: application/octet-stream; name="v11-0007-Improve-CREATE-REINDEX-INDEX-CONCURRENTLY-using-.patch" Content-Disposition: attachment; filename="v11-0007-Improve-CREATE-REINDEX-INDEX-CONCURRENTLY-using-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5n7ah9l4 RnJvbSA0NTZhZGIyYTQxMTE2NzdlNTM5Nzk5MjE5OTkyNzk5ZmE2Y2UyYjc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNTowMzoxMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjExIDA3 LzExXSBJbXByb3ZlIENSRUFURS9SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB1c2luZwogYXV4 aWxpYXJ5IGluZGV4CgpNb2RpZnkgdGhlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRpbmcgcHJvY2Vz cyB0byB1c2UgYW4gYXV4aWxpYXJ5IHVubG9nZ2VkIGluZGV4CmR1cmluZyBjb25zdHJ1Y3Rpb24u IFRoaXMgaW1wcm92ZXMgZWZmaWNpZW5jeSBvZiBjb25jdXJyZW50CmluZGV4IG9wZXJhdGlvbnMg Ynk6CgotIENyZWF0aW5nIGFuIGF1eGlsaWFyeSBTVElSIChTaG9ydCBUZXJtIEluZGV4IFJlcGxh Y2VtZW50KSBpbmRleCB0byB0cmFjayBuZXcgdHVwbGVzIGR1cmluZyB0aGUgbWFpbiBpbmRleCBi dWlsZAotIFVzaW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggdG8gY2F0Y2ggYWxsIHR1cGxlcyBpbnNl cnRlZCBkdXJpbmcgdGhlIGJ1aWxkIHBoYXNlIGluc3RlYWQgb2YgcmVseWluZyBvbiBhIHNlY29u ZCBoZWFwIHNjYW4KLSBNZXJnaW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggY29udGVudCB3aXRoIHRo ZSBtYWluIGluZGV4IGR1cmluZyB2YWxpZGF0aW9uCi0gQXV0b21hdGljYWxseSBjbGVhbmluZyB1 cCB0aGUgYXV4aWxpYXJ5IGluZGV4IGFmdGVyIHRoZSBtYWluIGluZGV4IGlzIHJlYWR5CgpUaGlz IGFwcHJvYWNoIGVsaW1pbmF0ZXMgdGhlIG5lZWQgZm9yIGEgc2Vjb25kIGZ1bGwgdGFibGUgc2Nh biBkdXJpbmcgaW5kZXgKdmFsaWRhdGlvbiwgbWFraW5nIHRoZSBwcm9jZXNzIG1vcmUgZWZmaWNp ZW50IGVzcGVjaWFsbHkgZm9yIGxhcmdlIHRhYmxlcy4KVGhlIGF1eGlsaWFyeSBpbmRleCBpcyBh dXRvbWF0aWNhbGx5IGRyb3BwZWQgYWZ0ZXIgdGhlIG1haW4gaW5kZXggYmVjb21lcyB2YWxpZC4K ClRoaXMgY2hhbmdlIGFmZmVjdHMgYm90aCBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGFuZCBS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWQpvcGVyYXRpb25zLiBUaGUgU1RJUiBhY2Nlc3MgbWV0 aG9kIGlzIGFkZGVkIHNwZWNpZmljYWxseSBmb3IgdGhlc2UgYXV4aWxpYXJ5CmluZGV4ZXMgYW5k IGNhbm5vdCBiZSB1c2VkIGRpcmVjdGx5IGJ5IHVzZXJzLgotLS0KIGRvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAyNiArLQogZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfaW5kZXguc2dtbCAgICAgICAgICAgIHwgIDMzICstCiBkb2Mvc3JjL3NnbWwvcmVmL3Jl aW5kZXguc2dtbCAgICAgICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgMzY4ICsrKysrKysrLS0tLS0tLS0tCiBzcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAzMDggKysrKysrKysrKysr LS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICB8ICAxNyAr LQogc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jICAgICAgICAgICAgICAgIHwgICAzICst CiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAgICAgICAgfCAzNzYgKysr KysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyAgICAgICAgICAg ICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAg ICAgICB8ICAyOCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAg ICAgIHwgIDEyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oICAgICAgICAgICAg ICAgfCAgMTMgKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAg ICB8ICAgNCArLQogc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggICAgICAgICAgICAgICAg IHwgICAzICstCiAuLi4vZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgICAgICAgICAg fCAgMjggKysKIC4uLi9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgICAgfCAg NDIgKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0ICAgICAgICB8ICAg MyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgIDE3 ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsICAgICAgICAgfCAgMjEg KwogMjEgZmlsZXMgY2hhbmdlZCwgOTY4IGluc2VydGlvbnMoKyksIDM4NCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21s L21vbml0b3Jpbmcuc2dtbAppbmRleCBkMGQxNzZjYzU0Zi4uY2Y3YTNiZjUyNzEgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0 b3Jpbmcuc2dtbApAQCAtNjIwMiw2ICs2MjAyLDE4IEBAIEZST00gcGdfc3RhdF9nZXRfYmFja2Vu ZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAgICAgICBpbmZvcm1hdGlvbiBmb3IgdGhpcyBwaGFz ZS4KICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5 PjxsaXRlcmFsPndhaXRpbmcgZm9yIHdyaXRlcnMgdG8gdXNlIGF1eGlsaWFyeSBpbmRleDwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIDxjb21tYW5kPkNSRUFURSBJTkRF WCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IG9yIDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZ PC9jb21tYW5kPiBpcyB3YWl0aW5nIGZvciB0cmFuc2FjdGlvbnMKKyAgICAgICB3aXRoIHdyaXRl IGxvY2tzIHRoYXQgY2FuIHBvdGVudGlhbGx5IHNlZSB0aGUgdGFibGUgdG8gZmluaXNoLCB0byBl bnN1cmUgdXNlIG9mIGF1eGlsaWFyeSBpbmRleCBmb3IgbmV3IHR1cGxlcyBpbgorICAgICAgIGZ1 dHVyZSB0cmFuc2FjdGlvbnMuCisgICAgICAgVGhpcyBwaGFzZSBpcyBza2lwcGVkIHdoZW4gbm90 IGluIGNvbmN1cnJlbnQgbW9kZS4KKyAgICAgICBDb2x1bW5zIDxzdHJ1Y3RuYW1lPmxvY2tlcnNf dG90YWw8L3N0cnVjdG5hbWU+LCA8c3RydWN0bmFtZT5sb2NrZXJzX2RvbmU8L3N0cnVjdG5hbWU+ CisgICAgICAgYW5kIDxzdHJ1Y3RuYW1lPmN1cnJlbnRfbG9ja2VyX3BpZDwvc3RydWN0bmFtZT4g Y29udGFpbiB0aGUgcHJvZ3Jlc3MKKyAgICAgICBpbmZvcm1hdGlvbiBmb3IgdGhpcyBwaGFzZS4K KyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgogICAgICA8cm93PgogICAgICAgPGVudHJ5Pjxs aXRlcmFsPmJ1aWxkaW5nIGluZGV4PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+CkBA IC02MjQyLDEzICs2MjU0LDEyIEBAIEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFT IGJhY2tlbmRpZDsKICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgogICAgICA8cm93PgotICAg ICAgPGVudHJ5PjxsaXRlcmFsPmluZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIHRhYmxlPC9saXRl cmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+aW5kZXggdmFsaWRhdGlvbjogbWVy Z2luZyBpbmRleGVzPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+Ci0gICAgICAgPGNv bW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgc2Nhbm5pbmcgdGhl IHRhYmxlCi0gICAgICAgdG8gdmFsaWRhdGUgdGhlIGluZGV4IHR1cGxlcyBjb2xsZWN0ZWQgaW4g dGhlIHByZXZpb3VzIHR3byBwaGFzZXMuCisgICAgICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENP TkNVUlJFTlRMWTwvY29tbWFuZD4gbWVyZ2luZyBjb250ZW50IG9mIGF1eGlsaWFyeSBpbmRleCB3 aXRoIHRoZSB0YXJnZXQgaW5kZXguCiAgICAgICAgVGhpcyBwaGFzZSBpcyBza2lwcGVkIHdoZW4g bm90IGluIGNvbmN1cnJlbnQgbW9kZS4KLSAgICAgICBDb2x1bW5zIDxzdHJ1Y3RuYW1lPmJsb2Nr c190b3RhbDwvc3RydWN0bmFtZT4gKHNldCB0byB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgdGFibGUp Ci0gICAgICAgYW5kIDxzdHJ1Y3RuYW1lPmJsb2Nrc19kb25lPC9zdHJ1Y3RuYW1lPiBjb250YWlu IHRoZSBwcm9ncmVzcyBpbmZvcm1hdGlvbiBmb3IgdGhpcyBwaGFzZS4KKyAgICAgICBDb2x1bW5z IDxzdHJ1Y3RuYW1lPnR1cGxlc190b3RhbDwvc3RydWN0bmFtZT4gKHNldCB0byB0aGUgbnVtYmVy IG9mIHR1cGxlcyB0byBiZSBtZXJnZWQpCisgICAgICAgYW5kIDxzdHJ1Y3RuYW1lPnR1cGxlc19k b25lPC9zdHJ1Y3RuYW1lPiBjb250YWluIHRoZSBwcm9ncmVzcyBpbmZvcm1hdGlvbiBmb3IgdGhp cyBwaGFzZS4KICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgogICAgICA8cm93PgpAQCAtNjI2 NSw4ICs2Mjc2LDkgQEAgRlJPTSBwZ19zdGF0X2dldF9iYWNrZW5kX2lkc2V0KCkgQVMgYmFja2Vu ZGlkOwogICAgICA8cm93PgogICAgICAgPGVudHJ5PjxsaXRlcmFsPndhaXRpbmcgZm9yIHJlYWRl cnMgYmVmb3JlIG1hcmtpbmcgZGVhZDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5Pgot ICAgICAgIDxjb21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBpcyB3YWl0aW5n IGZvciB0cmFuc2FjdGlvbnMKLSAgICAgICB3aXRoIHJlYWQgbG9ja3Mgb24gdGhlIHRhYmxlIHRv IGZpbmlzaCwgYmVmb3JlIG1hcmtpbmcgdGhlIG9sZCBpbmRleCBkZWFkLgorICAgICAgIDxjb21t YW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGlzIHdhaXRpbmcgZm9yIHRy YW5zYWN0aW9ucworICAgICAgICB3aXRoIHJlYWQgbG9ja3Mgb24gdGhlIHRhYmxlIHRvIGZpbmlz aCwgYmVmb3JlIG1hcmtpbmcgdGhlIGF1eGlsaWFyeSBpbmRleCBhcyBkZWFkLgorICAgICAgIDxj b21tYW5kPlJFSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBpcyBhbHNvIHdhaXRpbmcgYmVm b3JlIG1hcmtpbmcgdGhlIG9sZCBpbmRleCBhcyBkZWFkLgogICAgICAgIFRoaXMgcGhhc2UgaXMg c2tpcHBlZCB3aGVuIG5vdCBpbiBjb25jdXJyZW50IG1vZGUuCiAgICAgICAgQ29sdW1ucyA8c3Ry dWN0bmFtZT5sb2NrZXJzX3RvdGFsPC9zdHJ1Y3RuYW1lPiwgPHN0cnVjdG5hbWU+bG9ja2Vyc19k b25lPC9zdHJ1Y3RuYW1lPgogICAgICAgIGFuZCA8c3RydWN0bmFtZT5jdXJyZW50X2xvY2tlcl9w aWQ8L3N0cnVjdG5hbWU+IGNvbnRhaW4gdGhlIHByb2dyZXNzCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5k ZXguc2dtbAppbmRleCAyMDgzODllODAwNi4uZTMzMzQ1ZjZhMzQgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfaW5kZXguc2dtbApAQCAtNjE0LDI1ICs2MTQsMjQgQEAgQ1JFQVRFIFsgVU5JUVVFIF0gSU5E RVggWyBDT05DVVJSRU5UTFkgXSBbIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFz cz0KICAgICBvdXQgd3JpdGVzLiAgVGhpcyBtZXRob2QgaXMgaW52b2tlZCBieSBzcGVjaWZ5aW5n IHRoZQogICAgIDxsaXRlcmFsPkNPTkNVUlJFTlRMWTwvbGl0ZXJhbD4gb3B0aW9uIG9mIDxjb21t YW5kPkNSRUFURSBJTkRFWDwvY29tbWFuZD4uCiAgICAgV2hlbiB0aGlzIG9wdGlvbiBpcyB1c2Vk LAotICAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gbXVzdCBwZXJmb3Jt IHR3byBzY2FucyBvZiB0aGUgdGFibGUsIGFuZCBpbgotICAgIGFkZGl0aW9uIGl0IG11c3Qgd2Fp dCBmb3IgYWxsIGV4aXN0aW5nIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5Ci0g ICAgbW9kaWZ5IG9yIHVzZSB0aGUgaW5kZXggdG8gdGVybWluYXRlLiAgVGh1cwotICAgIHRoaXMg bWV0aG9kIHJlcXVpcmVzIG1vcmUgdG90YWwgd29yayB0aGFuIGEgc3RhbmRhcmQgaW5kZXggYnVp bGQgYW5kIHRha2VzCi0gICAgc2lnbmlmaWNhbnRseSBsb25nZXIgdG8gY29tcGxldGUuICBIb3dl dmVyLCBzaW5jZSBpdCBhbGxvd3Mgbm9ybWFsCisgICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8 L3Byb2R1Y3RuYW1lPiBtdXN0IHBlcmZvcm0gc2V2ZXJhbCBzdGVwcyB0byBlbnN1cmUgZGF0YQor ICAgIGNvbnNpc3RlbmN5IHdoaWxlIGFsbG93aW5nIG5vcm1hbCBvcGVyYXRpb25zIHRvIGNvbnRp bnVlLgorICAgIFRoaXMgbWV0aG9kIHJlcXVpcmVzIG1vcmUgdG90YWwgd29yayB0aGFuIGEgc3Rh bmRhcmQgaW5kZXggYnVpbGQgYW5kIHRha2VzCisgICAgbG9uZ2VyIHRvIGNvbXBsZXRlLiAgSG93 ZXZlciwgc2luY2UgaXQgYWxsb3dzIG5vcm1hbAogICAgIG9wZXJhdGlvbnMgdG8gY29udGludWUg d2hpbGUgdGhlIGluZGV4IGlzIGJ1aWx0LCB0aGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yCiAgICAg YWRkaW5nIG5ldyBpbmRleGVzIGluIGEgcHJvZHVjdGlvbiBlbnZpcm9ubWVudC4gIE9mIGNvdXJz ZSwgdGhlIGV4dHJhIENQVQogICAgIGFuZCBJL08gbG9hZCBpbXBvc2VkIGJ5IHRoZSBpbmRleCBj cmVhdGlvbiBtaWdodCBzbG93IG90aGVyIG9wZXJhdGlvbnMuCiAgICA8L3BhcmE+CiAKICAgIDxw YXJhPgotICAgIEluIGEgY29uY3VycmVudCBpbmRleCBidWlsZCwgdGhlIGluZGV4IGlzIGFjdHVh bGx5IGVudGVyZWQgYXMgYW4KKyAgICBJbiBhIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsIHRoZSBt YWluIGFuZCBhdXhpbGlhcnkgaW5kZXhlcyBpcyBhY3R1YWxseSBlbnRlcmVkIGFzIGFuCiAgICAg PHF1b3RlPmludmFsaWQ8L3F1b3RlPiBpbmRleCBpbnRvCi0gICAgdGhlIHN5c3RlbSBjYXRhbG9n cyBpbiBvbmUgdHJhbnNhY3Rpb24sIHRoZW4gdHdvIHRhYmxlIHNjYW5zIG9jY3VyIGluCi0gICAg dHdvIG1vcmUgdHJhbnNhY3Rpb25zLiAgQmVmb3JlIGVhY2ggdGFibGUgc2NhbiwgdGhlIGluZGV4 IGJ1aWxkIG11c3QKKyAgICB0aGUgc3lzdGVtIGNhdGFsb2dzIGluIG9uZSB0cmFuc2FjdGlvbiwg dGhlbiB0d28gcGhhc2VzIG9jY3VyIGluCisgICAgbXVsdGlwbGUgdHJhbnNhY3Rpb25zLiAgQmVm b3JlIGVhY2ggcGhhc2UsIHRoZSBpbmRleCBidWlsZCBtdXN0CiAgICAgd2FpdCBmb3IgZXhpc3Rp bmcgdHJhbnNhY3Rpb25zIHRoYXQgaGF2ZSBtb2RpZmllZCB0aGUgdGFibGUgdG8gdGVybWluYXRl LgotICAgIEFmdGVyIHRoZSBzZWNvbmQgc2NhbiwgdGhlIGluZGV4IGJ1aWxkIG11c3Qgd2FpdCBm b3IgYW55IHRyYW5zYWN0aW9ucworICAgIEFmdGVyIHRoZSBzZWNvbmQgcGhhc2UsIHRoZSBpbmRl eCBidWlsZCBtdXN0IHdhaXQgZm9yIGFueSB0cmFuc2FjdGlvbnMKICAgICB0aGF0IGhhdmUgYSBz bmFwc2hvdCAoc2VlIDx4cmVmIGxpbmtlbmQ9Im12Y2MiLz4pIHByZWRhdGluZyB0aGUgc2Vjb25k Ci0gICAgc2NhbiB0byB0ZXJtaW5hdGUsIGluY2x1ZGluZyB0cmFuc2FjdGlvbnMgdXNlZCBieSBh bnkgcGhhc2Ugb2YgY29uY3VycmVudAorICAgIHBoYXNlIHRvIHRlcm1pbmF0ZSwgaW5jbHVkaW5n IHRyYW5zYWN0aW9ucyB1c2VkIGJ5IGFueSBwaGFzZSBvZiBjb25jdXJyZW50CiAgICAgaW5kZXgg YnVpbGRzIG9uIG90aGVyIHRhYmxlcywgaWYgdGhlIGluZGV4ZXMgaW52b2x2ZWQgYXJlIHBhcnRp YWwgb3IgaGF2ZQogICAgIGNvbHVtbnMgdGhhdCBhcmUgbm90IHNpbXBsZSBjb2x1bW4gcmVmZXJl bmNlcy4KICAgICBUaGVuIGZpbmFsbHkgdGhlIGluZGV4IGNhbiBiZSBtYXJrZWQgPHF1b3RlPnZh bGlkPC9xdW90ZT4gYW5kIHJlYWR5IGZvciB1c2UsCkBAIC02NDUsMTAgKzY0NCwxMSBAQCBDUkVB VEUgWyBVTklRVUUgXSBJTkRFWCBbIENPTkNVUlJFTlRMWSBdIFsgWyBJRiBOT1QgRVhJU1RTIF0g PHJlcGxhY2VhYmxlIGNsYXNzPQogICAgPHBhcmE+CiAgICAgSWYgYSBwcm9ibGVtIGFyaXNlcyB3 aGlsZSBzY2FubmluZyB0aGUgdGFibGUsIHN1Y2ggYXMgYSBkZWFkbG9jayBvciBhCiAgICAgdW5p cXVlbmVzcyB2aW9sYXRpb24gaW4gYSB1bmlxdWUgaW5kZXgsIHRoZSA8Y29tbWFuZD5DUkVBVEUg SU5ERVg8L2NvbW1hbmQ+Ci0gICAgY29tbWFuZCB3aWxsIGZhaWwgYnV0IGxlYXZlIGJlaGluZCBh biA8cXVvdGU+aW52YWxpZDwvcXVvdGU+IGluZGV4LiBUaGlzIGluZGV4Ci0gICAgd2lsbCBiZSBp Z25vcmVkIGZvciBxdWVyeWluZyBwdXJwb3NlcyBiZWNhdXNlIGl0IG1pZ2h0IGJlIGluY29tcGxl dGU7Ci0gICAgaG93ZXZlciBpdCB3aWxsIHN0aWxsIGNvbnN1bWUgdXBkYXRlIG92ZXJoZWFkLiBU aGUgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPgotICAgIDxjb21tYW5kPlxkPC9jb21t YW5kPiBjb21tYW5kIHdpbGwgcmVwb3J0IHN1Y2ggYW4gaW5kZXggYXMgPGxpdGVyYWw+SU5WQUxJ RDwvbGl0ZXJhbD46CisgICAgY29tbWFuZCB3aWxsIGZhaWwgYnV0IGxlYXZlIGJlaGluZCBhbiA8 cXVvdGU+aW52YWxpZDwvcXVvdGU+IGluZGV4IGFuZCBpdHMKKyAgICBhc3NvY2lhdGVkIGF1eGls aWFyeSBpbmRleC4gVGhlc2UgaW5kZXhlcworICAgIHdpbGwgYmUgaWdub3JlZCBmb3IgcXVlcnlp bmcgcHVycG9zZXMgYmVjYXVzZSB0aGV5IG1pZ2h0IGJlIGluY29tcGxldGU7CisgICAgaG93ZXZl ciB0aGV5IHdpbGwgc3RpbGwgY29uc3VtZSB1cGRhdGUgb3ZlcmhlYWQuIFRoZSA8YXBwbGljYXRp b24+cHNxbDwvYXBwbGljYXRpb24+CisgICAgPGNvbW1hbmQ+XGQ8L2NvbW1hbmQ+IGNvbW1hbmQg d2lsbCByZXBvcnQgc3VjaCBpbmRleGVzIGFzIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+Ogog CiA8cHJvZ3JhbWxpc3Rpbmc+CiBwb3N0Z3Jlcz0jIFxkIHRhYgpAQCAtNjU4LDExICs2NTgsMTIg QEAgcG9zdGdyZXM9IyBcZCB0YWIKICBjb2wgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAg ICAgICAgfAogSW5kZXhlczoKICAgICAiaWR4IiBidHJlZSAoY29sKSBJTlZBTElECisgICAgImlk eF9jY2F1eCIgc3RpciAoY29sKSBJTlZBTElECiA8L3Byb2dyYW1saXN0aW5nPgogCiAgICAgVGhl IHJlY29tbWVuZGVkIHJlY292ZXJ5Ci0gICAgbWV0aG9kIGluIHN1Y2ggY2FzZXMgaXMgdG8gZHJv cCB0aGUgaW5kZXggYW5kIHRyeSBhZ2FpbiB0byBwZXJmb3JtCi0gICAgPGNvbW1hbmQ+Q1JFQVRF IElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4uICAoQW5vdGhlciBwb3NzaWJpbGl0eSBpcwor ICAgIG1ldGhvZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRyb3AgdGhlc2UgaW5kZXhlcyBhbmQgdHJ5 IGFnYWluIHRvIHBlcmZvcm0KKyAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ PC9jb21tYW5kPi4gKEFub3RoZXIgcG9zc2liaWxpdHkgaXMKICAgICB0byByZWJ1aWxkIHRoZSBp bmRleCB3aXRoIDxjb21tYW5kPlJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiku CiAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKaW5kZXggNWIzYzc2OTgwMGUuLjZhMDU2 MjBiZDY3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbApAQCAtMzY4LDExICszNjgsMTAgQEAgUkVJTkRF WCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+ IFssIC4uLl0gKSBdIHsgREEKICAgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5h bWU+IHN1cHBvcnRzIHJlYnVpbGRpbmcgaW5kZXhlcyB3aXRoIG1pbmltdW0gbG9ja2luZwogICAg IG9mIHdyaXRlcy4gIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgc3BlY2lmeWluZyB0aGUKICAg ICA8bGl0ZXJhbD5DT05DVVJSRU5UTFk8L2xpdGVyYWw+IG9wdGlvbiBvZiA8Y29tbWFuZD5SRUlO REVYPC9jb21tYW5kPi4gV2hlbiB0aGlzIG9wdGlvbgotICAgIGlzIHVzZWQsIDxwcm9kdWN0bmFt ZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gbXVzdCBwZXJmb3JtIHR3byBzY2FucyBvZiB0aGUg dGFibGUKLSAgICBmb3IgZWFjaCBpbmRleCB0aGF0IG5lZWRzIHRvIGJlIHJlYnVpbHQgYW5kIHdh aXQgZm9yIHRlcm1pbmF0aW9uIG9mCi0gICAgYWxsIGV4aXN0aW5nIHRyYW5zYWN0aW9ucyB0aGF0 IGNvdWxkIHBvdGVudGlhbGx5IHVzZSB0aGUgaW5kZXguCisgICAgaXMgdXNlZCwgPHByb2R1Y3Ru YW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBtdXN0IHBlcmZvcm0gc2V2ZXJhbCBzdGVwcyB0 byBlbnN1cmUgZGF0YQorICAgIGNvbnNpc3RlbmN5IHdoaWxlIGFsbG93aW5nIG5vcm1hbCBvcGVy YXRpb25zIHRvIGNvbnRpbnVlLgogICAgIFRoaXMgbWV0aG9kIHJlcXVpcmVzIG1vcmUgdG90YWwg d29yayB0aGFuIGEgc3RhbmRhcmQgaW5kZXgKLSAgICByZWJ1aWxkIGFuZCB0YWtlcyBzaWduaWZp Y2FudGx5IGxvbmdlciB0byBjb21wbGV0ZSBhcyBpdCBuZWVkcyB0byB3YWl0CisgICAgcmVidWls ZCBhbmQgdGFrZXMgbG9uZ2VyIHRvIGNvbXBsZXRlIGFzIGl0IG5lZWRzIHRvIHdhaXQKICAgICBm b3IgdW5maW5pc2hlZCB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBtb2RpZnkgdGhlIGluZGV4LiBI b3dldmVyLCBzaW5jZQogICAgIGl0IGFsbG93cyBub3JtYWwgb3BlcmF0aW9ucyB0byBjb250aW51 ZSB3aGlsZSB0aGUgaW5kZXggaXMgYmVpbmcgcmVidWlsdCwgdGhpcwogICAgIG1ldGhvZCBpcyB1 c2VmdWwgZm9yIHJlYnVpbGRpbmcgaW5kZXhlcyBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQu IE9mCkBAIC0zODgsNyArMzg3LDcgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgREEKICAgICA8b3Jk ZXJlZGxpc3Q+CiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgotICAgICAgIEEgbmV3IHRy YW5zaWVudCBpbmRleCBkZWZpbml0aW9uIGlzIGFkZGVkIHRvIHRoZSBjYXRhbG9nCisgICAgICAg QSBuZXcgdHJhbnNpZW50IGluZGV4IGRlZmluaXRpb24gYW5kIGFuIGF1eGlsaWFyeSBpbmRleCBh cmUgYWRkZWQgdG8gdGhlIGNhdGFsb2cKICAgICAgICA8bGl0ZXJhbD5wZ19pbmRleDwvbGl0ZXJh bD4uICBUaGlzIGRlZmluaXRpb24gd2lsbCBiZSB1c2VkIHRvIHJlcGxhY2UKICAgICAgICB0aGUg b2xkIGluZGV4LiAgQSA8bGl0ZXJhbD5TSEFSRSBVUERBVEUgRVhDTFVTSVZFPC9saXRlcmFsPiBs b2NrIGF0CiAgICAgICAgc2Vzc2lvbiBsZXZlbCBpcyB0YWtlbiBvbiB0aGUgaW5kZXhlcyBiZWlu ZyByZWluZGV4ZWQgYXMgd2VsbCBhcyB0aGVpcgpAQCAtMzk4LDcgKzM5NywxNSBAQCBSRUlOREVY IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4g WywgLi4uXSApIF0geyBEQQogCiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgotICAgICAg IEEgZmlyc3QgcGFzcyB0byBidWlsZCB0aGUgaW5kZXggaXMgZG9uZSBmb3IgZWFjaCBuZXcgaW5k ZXguICBPbmNlIHRoZQorICAgICAgIFRoZSBhdXhpbGlhcnkgaW5kZXggaXMgbWFya2VkIGFzICJy ZWFkeSBmb3IgaW5zZXJ0cyIsIG1ha2luZworICAgICAgIGl0IHZpc2libGUgdG8gb3RoZXIgc2Vz c2lvbnMuIFRoaXMgaW5kZXggZWZmaWNpZW50bHkgdHJhY2tzIGFsbCBuZXcKKyAgICAgICB0dXBs ZXMgZHVyaW5nIHRoZSByZWluZGV4IHByb2Nlc3MuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlz dGl0ZW0+CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIG5ldyBt YWluIGluZGV4IGlzIGJ1aWx0IGJ5IHNjYW5uaW5nIHRoZSB0YWJsZS4gIE9uY2UgdGhlCiAgICAg ICAgaW5kZXggaXMgYnVpbHQsIGl0cyBmbGFnIDxsaXRlcmFsPnBnX2luZGV4LmluZGlzcmVhZHk8 L2xpdGVyYWw+IGlzCiAgICAgICAgc3dpdGNoZWQgdG8gPHF1b3RlPnRydWU8L3F1b3RlPiB0byBt YWtlIGl0IHJlYWR5IGZvciBpbnNlcnRzLCBtYWtpbmcgaXQKICAgICAgICB2aXNpYmxlIHRvIG90 aGVyIHNlc3Npb25zIG9uY2UgdGhlIHRyYW5zYWN0aW9uIHRoYXQgcGVyZm9ybWVkIHRoZSBidWls ZApAQCAtNDA5LDkgKzQxNiw5IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAKICAgICAgPGxp c3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAgICAgVGhlbiBhIHNlY29uZCBwYXNzIGlzIHBlcmZv cm1lZCB0byBhZGQgdHVwbGVzIHRoYXQgd2VyZSBhZGRlZCB3aGlsZSB0aGUKLSAgICAgICBmaXJz dCBwYXNzIHdhcyBydW5uaW5nLiAgVGhpcyBzdGVwIGlzIGFsc28gZG9uZSBpbiBhIHNlcGFyYXRl Ci0gICAgICAgdHJhbnNhY3Rpb24gZm9yIGVhY2ggaW5kZXguCisgICAgICAgQSB2YWxpZGF0aW9u IHBoYXNlIG1lcmdlcyBhbnkgbWlzc2luZyBlbnRyaWVzIGZyb20gdGhlIGF1eGlsaWFyeSBpbmRl eAorICAgICAgIGludG8gdGhlIG1haW4gaW5kZXgsIGVuc3VyaW5nIGFsbCBjb25jdXJyZW50IGNo YW5nZXMgYXJlIGNhcHR1cmVkLgorICAgICAgIFRoaXMgc3RlcCBpcyBhbHNvIGRvbmUgaW4gYSBz ZXBhcmF0ZSB0cmFuc2FjdGlvbiBmb3IgZWFjaCBpbmRleC4KICAgICAgIDwvcGFyYT4KICAgICAg PC9saXN0aXRlbT4KIApAQCAtNDI4LDcgKzQzNSw3IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERB CiAKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAgICAgVGhlIG9sZCBpbmRleGVz IGhhdmUgPGxpdGVyYWw+cGdfaW5kZXguaW5kaXNyZWFkeTwvbGl0ZXJhbD4gc3dpdGNoZWQgdG8K KyAgICAgICBUaGUgb2xkIGFuZCBhdXhpbGlhcnkgaW5kZXhlcyBoYXZlIDxsaXRlcmFsPnBnX2lu ZGV4LmluZGlzcmVhZHk8L2xpdGVyYWw+IHN3aXRjaGVkIHRvCiAgICAgICAgPHF1b3RlPmZhbHNl PC9xdW90ZT4gdG8gcHJldmVudCBhbnkgbmV3IHR1cGxlIGluc2VydGlvbnMsIGFmdGVyIHdhaXRp bmcKICAgICAgICBmb3IgcnVubmluZyBxdWVyaWVzIHRoYXQgbWlnaHQgcmVmZXJlbmNlIHRoZSBv bGQgaW5kZXggdG8gY29tcGxldGUuCiAgICAgICA8L3BhcmE+CkBAIC00MzYsNyArNDQzLDcgQEAg UkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFj ZWFibGU+IFssIC4uLl0gKSBdIHsgREEKIAogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4K LSAgICAgICBUaGUgb2xkIGluZGV4ZXMgYXJlIGRyb3BwZWQuICBUaGUgPGxpdGVyYWw+U0hBUkUg VVBEQVRFCisgICAgICAgVGhlIG9sZCBhbmQgYXV4aWxpYXJ5IGluZGV4ZXMgYXJlIGRyb3BwZWQu ICBUaGUgPGxpdGVyYWw+U0hBUkUgVVBEQVRFCiAgICAgICAgRVhDTFVTSVZFPC9saXRlcmFsPiBz ZXNzaW9uIGxvY2tzIGZvciB0aGUgaW5kZXhlcyBhbmQgdGhlIHRhYmxlIGFyZQogICAgICAgIHJl bGVhc2VkLgogICAgICAgPC9wYXJhPgpAQCAtNDQ3LDExICs0NTQsMTEgQEAgUkVJTkRFWCBbICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4u Ll0gKSBdIHsgREEKICAgIDxwYXJhPgogICAgIElmIGEgcHJvYmxlbSBhcmlzZXMgd2hpbGUgcmVi dWlsZGluZyB0aGUgaW5kZXhlcywgc3VjaCBhcyBhCiAgICAgdW5pcXVlbmVzcyB2aW9sYXRpb24g aW4gYSB1bmlxdWUgaW5kZXgsIHRoZSA8Y29tbWFuZD5SRUlOREVYPC9jb21tYW5kPgotICAgIGNv bW1hbmQgd2lsbCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmludmFsaWQ8L3F1b3Rl PiBuZXcgaW5kZXggaW4gYWRkaXRpb24gdG8KLSAgICB0aGUgcHJlLWV4aXN0aW5nIG9uZS4gVGhp cyBpbmRleCB3aWxsIGJlIGlnbm9yZWQgZm9yIHF1ZXJ5aW5nIHB1cnBvc2VzCi0gICAgYmVjYXVz ZSBpdCBtaWdodCBiZSBpbmNvbXBsZXRlOyBob3dldmVyIGl0IHdpbGwgc3RpbGwgY29uc3VtZSB1 cGRhdGUKKyAgICBjb21tYW5kIHdpbGwgZmFpbCBidXQgbGVhdmUgYmVoaW5kIGFuIDxxdW90ZT5p bnZhbGlkPC9xdW90ZT4gbmV3IGluZGV4IGFuZCBpdHMgYXV4aWxpYXJ5IGluZGV4IGluIGFkZGl0 aW9uIHRvCisgICAgdGhlIHByZS1leGlzdGluZyBvbmUuIFRoZXNlIGluZGV4ZXMgd2lsbCBiZSBp Z25vcmVkIGZvciBxdWVyeWluZyBwdXJwb3NlcworICAgIGJlY2F1c2UgdGhleSBtaWdodCBiZSBp bmNvbXBsZXRlOyBob3dldmVyIHRoZXkgd2lsbCBzdGlsbCBjb25zdW1lIHVwZGF0ZQogICAgIG92 ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPiA8Y29tbWFuZD5cZDwv Y29tbWFuZD4gY29tbWFuZCB3aWxsIHJlcG9ydAotICAgIHN1Y2ggYW4gaW5kZXggYXMgPGxpdGVy YWw+SU5WQUxJRDwvbGl0ZXJhbD46CisgICAgc3VjaCBpbmRleGVzIGFzIDxsaXRlcmFsPklOVkFM SUQ8L2xpdGVyYWw+OgogCiA8cHJvZ3JhbWxpc3Rpbmc+CiBwb3N0Z3Jlcz0jIFxkIHRhYgpAQCAt NDYyLDEyICs0NjksMTQgQEAgcG9zdGdyZXM9IyBcZCB0YWIKIEluZGV4ZXM6CiAgICAgImlkeCIg YnRyZWUgKGNvbCkKICAgICAiaWR4X2NjbmV3IiBidHJlZSAoY29sKSBJTlZBTElECisgICAgImlk eF9jY2F1eCIgc3RpciAoY29sKSBJTlZBTElECisKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAKICAgICBJ ZiB0aGUgaW5kZXggbWFya2VkIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+IGlzIHN1ZmZpeGVk Ci0gICAgPGxpdGVyYWw+Y2NuZXc8L2xpdGVyYWw+LCB0aGVuIGl0IGNvcnJlc3BvbmRzIHRvIHRo ZSB0cmFuc2llbnQKKyAgICA8bGl0ZXJhbD5jY25ldzwvbGl0ZXJhbCBvciA8bGl0ZXJhbD5jY2F1 eDwvbGl0ZXJhbD4sIHRoZW4gaXQgY29ycmVzcG9uZHMgdG8gdGhlIHRyYW5zaWVudCBvciBhdXhp bGlhcnkKICAgICBpbmRleCBjcmVhdGVkIGR1cmluZyB0aGUgY29uY3VycmVudCBvcGVyYXRpb24s IGFuZCB0aGUgcmVjb21tZW5kZWQKLSAgICByZWNvdmVyeSBtZXRob2QgaXMgdG8gZHJvcCBpdCB1 c2luZyA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiwKKyAgICByZWNvdmVyeSBtZXRob2Qg aXMgdG8gZHJvcCB0aGVzZSBpbmRleGVzIHVzaW5nIDxsaXRlcmFsPkRST1AgSU5ERVg8L2xpdGVy YWw+LAogICAgIHRoZW4gYXR0ZW1wdCA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29t bWFuZD4gYWdhaW4uCiAgICAgSWYgdGhlIGludmFsaWQgaW5kZXggaXMgaW5zdGVhZCBzdWZmaXhl ZCA8bGl0ZXJhbD5jY29sZDwvbGl0ZXJhbD4sCiAgICAgaXQgY29ycmVzcG9uZHMgdG8gdGhlIG9y aWdpbmFsIGluZGV4IHdoaWNoIGNvdWxkIG5vdCBiZSBkcm9wcGVkOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwppbmRleCBmZDNjZWI3NTRiMC4uZjk2ODQ1YjExZDAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbS5jCkBAIC02NDIsNyArNjQyLDcgQEAgaGVhcF9mZXRjaF9uZXh0X2J1ZmZlcihIZWFw U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nh bi0+cnNfY2J1ZikpCiAJewogCQlzY2FuLT5yc19jYmxvY2sgPSBCdWZmZXJHZXRCbG9ja051bWJl cihzY2FuLT5yc19jYnVmKTsKLSNkZWZpbmUgU09fUkVTRVRfU05BUFNIT1RfRUFDSF9OX1BBR0Ug NjQKKyNkZWZpbmUgU09fUkVTRVRfU05BUFNIT1RfRUFDSF9OX1BBR0UgMTAyNAogCQlpZiAoKHNj YW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19SRVNFVF9TTkFQU0hPVCkgJiYKIAkJCShzY2FuLT5y c19jYmxvY2sgJSBTT19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSA9PSAwKSkKIAkJCWhlYXBf cmVzZXRfc2Nhbl9zbmFwc2hvdCgoVGFibGVTY2FuRGVzYykgc2Nhbik7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBiYzNkMzczOGVkZS4uZDJmYTQ2MzI5OGIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtNDEsNiArNDEs NyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFnZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1n ci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9w cm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJzdG9yYWdl L3NtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpAQCAtMTc3NywyNDYgKzE3Nzgs MjUzIEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKIAlyZXR1cm4gcmVsdHVwbGVzOwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGljIFRyYW5zYWN0 aW9uSWQKIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwK IAkJCQkJCSAgIFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJCQkgICBJbmRleEluZm8gKmlu ZGV4SW5mbywKLQkJCQkJCSAgIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJICAgVmFsaWRhdGVJ bmRleFN0YXRlICpzdGF0ZSkKKwkJCQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUsCisJ CQkJCQkgICBWYWxpZGF0ZUluZGV4U3RhdGUgKmF1eFN0YXRlKQogewotCVRhYmxlU2NhbkRlc2Mg c2NhbjsKLQlIZWFwU2NhbkRlc2MgaHNjYW47Ci0JSGVhcFR1cGxlCWhlYXBUdXBsZTsKKwlJbmRl eEZldGNoVGFibGVEYXRhICpmZXRjaDsKKwlUcmFuc2FjdGlvbklkIGxpbWl0WG1pbjsKKwogCURh dHVtCQl2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOwogCWJvb2wJCWlzbnVsbFtJTkRFWF9NQVhfS0VZ U107Ci0JRXhwclN0YXRlICAqcHJlZGljYXRlOwotCVR1cGxlVGFibGVTbG90ICpzbG90OwotCUVT dGF0ZQkgICAqZXN0YXRlOwotCUV4cHJDb250ZXh0ICplY29udGV4dDsKLQlCbG9ja051bWJlciBy b290X2Jsa25vID0gSW52YWxpZEJsb2NrTnVtYmVyOwotCU9mZnNldE51bWJlciByb290X29mZnNl dHNbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwotCWJvb2wJCWluX2luZGV4W01heEhlYXBUdXBsZXNQ ZXJQYWdlXTsKLQlCbG9ja051bWJlciBwcmV2aW91c19ibGtubyA9IEludmFsaWRCbG9ja051bWJl cjsKKworCVNuYXBzaG90CQlzbmFwc2hvdDsKKwlUdXBsZVRhYmxlU2xvdCAgKnNsb3Q7CisJRVN0 YXRlCQkJKmVzdGF0ZTsKKwlFeHByQ29udGV4dAkJKmVjb250ZXh0OwogCiAJLyogc3RhdGUgdmFy aWFibGVzIGZvciB0aGUgbWVyZ2UgKi8KLQlJdGVtUG9pbnRlciBpbmRleGN1cnNvciA9IE5VTEw7 Ci0JSXRlbVBvaW50ZXJEYXRhIGRlY29kZWQ7Ci0JYm9vbAkJdHVwbGVzb3J0X2VtcHR5ID0gZmFs c2U7CisJSXRlbVBvaW50ZXIgCWluZGV4Y3Vyc29yID0gTlVMTCwKKwkJCQkJYXV4aW5kZXhjdXJz b3IgPSBOVUxMOworCUl0ZW1Qb2ludGVyRGF0YSBkZWNvZGVkLAorCQkJCQlhdXhkZWNvZGVkLAor CQkJCQlmZXRjaGVkOworCWJvb2wJCQl0dXBsZXNvcnRfZW1wdHkgPSBmYWxzZSwKKwkJCQkJYXV4 dHVwbGVzb3J0X2VtcHR5ID0gZmFsc2U7CisKKwlBc3NlcnQoIUhhdmVSZWdpc3RlcmVkT3JBY3Rp dmVTbmFwc2hvdCgpKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOworCisJLyoKKwkgKiBOb3cgdGFrZSB0aGUgInJlZmVyZW5jZSBzbmFwc2hvdCIgdGhhdCB3 aWxsIGJlIHVzZWQgYnkgdG8gZmlsdGVyIGNhbmRpZGF0ZQorCSAqIHR1cGxlcy4gIEJld2FyZSEg IFRoZXJlIG1pZ2h0IHN0aWxsIGJlIHNuYXBzaG90cyBpbgorCSAqIHVzZSB0aGF0IHRyZWF0IHNv bWUgdHJhbnNhY3Rpb24gYXMgaW4tcHJvZ3Jlc3MgdGhhdCBvdXIgcmVmZXJlbmNlCisJICogc25h cHNob3QgdHJlYXRzIGFzIGNvbW1pdHRlZC4gIElmIHN1Y2ggYSByZWNlbnRseS1jb21taXR0ZWQg dHJhbnNhY3Rpb24KKwkgKiBkZWxldGVkIHR1cGxlcyBpbiB0aGUgdGFibGUsIHdlIHdpbGwgbm90 IGluY2x1ZGUgdGhlbSBpbiB0aGUgaW5kZXg7IHlldAorCSAqIHRob3NlIHRyYW5zYWN0aW9ucyB3 aGljaCBzZWUgdGhlIGRlbGV0aW5nIG9uZSBhcyBzdGlsbC1pbi1wcm9ncmVzcyB3aWxsCisJICog ZXhwZWN0IHN1Y2ggdHVwbGVzIHRvIGJlIHRoZXJlIG9uY2Ugd2UgbWFyayB0aGUgaW5kZXggYXMg dmFsaWQuCisJICoKKwkgKiBXZSBzb2x2ZSB0aGlzIGJ5IHdhaXRpbmcgZm9yIGFsbCBlbmRhbmdl cmVkIHRyYW5zYWN0aW9ucyB0byBleGl0IGJlZm9yZQorCSAqIHdlIG1hcmsgdGhlIGluZGV4IGFz IHZhbGlkLgorCSAqCisJICogV2UgYWxzbyBzZXQgQWN0aXZlU25hcHNob3QgdG8gdGhpcyBzbmFw LCBzaW5jZSBmdW5jdGlvbnMgaW4gaW5kZXhlcyBtYXkKKwkgKiBuZWVkIGEgc25hcHNob3QuCisJ ICovCisJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3Qo KSk7CisJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKKwlsaW1pdFhtaW4gPSBzbmFwc2hv dC0+eG1pbjsKIAogCS8qCiAJICogc2FuaXR5IGNoZWNrcwogCSAqLwogCUFzc2VydChPaWRJc1Zh bGlkKGluZGV4UmVsYXRpb24tPnJkX3JlbC0+cmVsYW0pKTsKIAotCS8qCi0JICogTmVlZCBhbiBF U3RhdGUgZm9yIGV2YWx1YXRpb24gb2YgaW5kZXggZXhwcmVzc2lvbnMgYW5kIHBhcnRpYWwtaW5k ZXgKLQkgKiBwcmVkaWNhdGVzLiAgQWxzbyBhIHNsb3QgdG8gaG9sZCB0aGUgY3VycmVudCB0dXBs ZS4KLQkgKi8KIAllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CiAJZWNvbnRleHQgPSBH ZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CiAJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRh YmxlU2xvdChSZWxhdGlvbkdldERlc2NyKGhlYXBSZWxhdGlvbiksCi0JCQkJCQkJCQkmVFRTT3Bz SGVhcFR1cGxlKTsKKwkJCQkJCQkJCSZUVFNPcHNCdWZmZXJIZWFwVHVwbGUpOwogCiAJLyogQXJy YW5nZSBmb3IgZWNvbnRleHQncyBzY2FuIHR1cGxlIHRvIGJlIHRoZSB0dXBsZSB1bmRlciB0ZXN0 ICovCiAJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2xvdDsKIAotCS8qIFNldCB1cCBleGVj dXRpb24gc3RhdGUgZm9yIHByZWRpY2F0ZSwgaWYgYW55LiAqLwotCXByZWRpY2F0ZSA9IEV4ZWNQ cmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKLQogCS8qCi0JICog UHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIFdlIG5lZWQganVzdCB0aG9z ZSB0dXBsZXMKLQkgKiBzYXRpc2Z5aW5nIHRoZSBwYXNzZWQtaW4gcmVmZXJlbmNlIHNuYXBzaG90 LiAgV2UgbXVzdCBkaXNhYmxlIHN5bmNzY2FuCi0JICogaGVyZSwgYmVjYXVzZSBpdCdzIGNyaXRp Y2FsIHRoYXQgd2UgcmVhZCBmcm9tIGJsb2NrIHplcm8gZm9yd2FyZCB0bwotCSAqIG1hdGNoIHRo ZSBzb3J0ZWQgVElEcy4KKwkgKiBQcmVwYXJlIHRvIGZldGNoIGhlYXAgdHVwbGVzIGluIGluZGV4 IHN0eWxlLiBUaGlzIGhlbHBzIHRvIHJlY29uc3RydWN0CisJICogYSB0dXBsZSBmcm9tIHRoZSBo ZWFwIHdoZW4gd2Ugb25seSBoYXZlIGFuIEl0ZW1Qb2ludGVyLgogCSAqLwotCXNjYW4gPSB0YWJs ZV9iZWdpbnNjYW5fc3RyYXQoaGVhcFJlbGF0aW9uLAkvKiByZWxhdGlvbiAqLwotCQkJCQkJCQkg c25hcHNob3QsCS8qIHNuYXBzaG90ICovCi0JCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAq LwotCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkgKi8KLQkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZl ciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJIGZhbHNlLAkvKiBzeW5jc2NhbiBub3Qg T0sgKi8KLQkJCQkJCQkJIGZhbHNlKTsKLQloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47CisJ ZmV0Y2ggPSBoZWFwYW1faW5kZXhfZmV0Y2hfYmVnaW4oaGVhcFJlbGF0aW9uKTsKKworCS8qIElu aXRpYWxpemUgcG9pbnRlcnMuICovCisJSXRlbVBvaW50ZXJTZXRJbnZhbGlkKCZkZWNvZGVkKTsK KwlJdGVtUG9pbnRlclNldEludmFsaWQoJmF1eGRlY29kZWQpOworCUl0ZW1Qb2ludGVyU2V0SW52 YWxpZCgmZmV0Y2hlZCk7CiAKLQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNT X1NDQU5fQkxPQ0tTX1RPVEFMLAotCQkJCQkJCQkgaHNjYW4tPnJzX25ibG9ja3MpOworCXBnc3Rh dF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1RVUExFU19UT1RBTCwg KGludDY0KSBzdGF0ZS0+aXR1cHMpOworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJP R1JFU1NfQ1JFQVRFSURYX1RVUExFU19ET05FLCAwKTsKIAogCS8qCi0JICogU2NhbiBhbGwgdHVw bGVzIG1hdGNoaW5nIHRoZSBzbmFwc2hvdC4KKwkgKiBNYWluIGxvb3A6IHdlIHN0ZXAgdGhyb3Vn aCB0aGUgYXV4aWxpYXJ5IHNvcnQgKGF1eFN0YXRlLT50dXBsZXNvcnQpLAorCSAqIHdoaWNoIGhv bGRzIFRJRHMgdGhhdCBtdXN0IGJlIG1lcmdlZCB3aXRoIG9yIGNvbXBhcmVkIHRvIHRob3NlIGZy b20KKwkgKiB0aGUgIm1haW4iIHNvcnQgKHN0YXRlLT50dXBsZXNvcnQpLgogCSAqLwotCXdoaWxl ICgoaGVhcFR1cGxlID0gaGVhcF9nZXRuZXh0KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uKSkg IT0gTlVMTCkKKwl3aGlsZSAoIWF1eHR1cGxlc29ydF9lbXB0eSkKIAl7Ci0JCUl0ZW1Qb2ludGVy IGhlYXBjdXJzb3IgPSAmaGVhcFR1cGxlLT50X3NlbGY7Ci0JCUl0ZW1Qb2ludGVyRGF0YSByb290 VHVwbGU7Ci0JCU9mZnNldE51bWJlciByb290X29mZm51bTsKLQorCQlEYXR1bQkJdHNfdmFsOwor CQlib29sCQl0c19pc251bGw7CiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJc3RhdGUt Pmh0dXBzICs9IDE7Ci0KLQkJaWYgKChwcmV2aW91c19ibGtubyA9PSBJbnZhbGlkQmxvY2tOdW1i ZXIpIHx8Ci0JCQkoaHNjYW4tPnJzX2NibG9jayAhPSBwcmV2aW91c19ibGtubykpCi0JCXsKLQkJ CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfU0NBTl9CTE9DS1NfRE9ORSwK LQkJCQkJCQkJCQkgaHNjYW4tPnJzX2NibG9jayk7Ci0JCQlwcmV2aW91c19ibGtubyA9IGhzY2Fu LT5yc19jYmxvY2s7Ci0JCX0KLQogCQkvKgotCQkgKiBBcyBjb21tZW50ZWQgaW4gdGFibGVfaW5k ZXhfYnVpbGRfc2Nhbiwgd2Ugc2hvdWxkIGluZGV4IGhlYXAtb25seQotCQkgKiB0dXBsZXMgdW5k ZXIgdGhlIFRJRHMgb2YgdGhlaXIgcm9vdCB0dXBsZXM7IHNvIHdoZW4gd2UgYWR2YW5jZSBvbnRv Ci0JCSAqIGEgbmV3IGhlYXAgcGFnZSwgYnVpbGQgYSBtYXAgb2Ygcm9vdCBpdGVtIG9mZnNldHMg b24gdGhlIHBhZ2UuCi0JCSAqCi0JCSAqIFRoaXMgY29tcGxpY2F0ZXMgbWVyZ2luZyBhZ2FpbnN0 IHRoZSB0dXBsZXNvcnQgb3V0cHV0OiB3ZSB3aWxsCi0JCSAqIHZpc2l0IHRoZSBsaXZlIHR1cGxl cyBpbiBvcmRlciBieSB0aGVpciBvZmZzZXRzLCBidXQgdGhlIHJvb3QKLQkJICogb2Zmc2V0cyB0 aGF0IHdlIG5lZWQgdG8gY29tcGFyZSBhZ2FpbnN0IHRoZSBpbmRleCBjb250ZW50cyBtaWdodCBi ZQotCQkgKiBvcmRlcmVkIGRpZmZlcmVudGx5LiAgU28gd2UgbWlnaHQgaGF2ZSB0byAibG9vayBi YWNrIiB3aXRoaW4gdGhlCi0JCSAqIHR1cGxlc29ydCBvdXRwdXQsIGJ1dCBvbmx5IHdpdGhpbiB0 aGUgY3VycmVudCBwYWdlLiAgV2UgaGFuZGxlIHRoYXQKLQkJICogYnkga2VlcGluZyBhIGJvb2wg YXJyYXkgaW5faW5kZXhbXSBzaG93aW5nIGFsbCB0aGUKLQkJICogYWxyZWFkeS1wYXNzZWQtb3Zl ciB0dXBsZXNvcnQgb3V0cHV0IFRJRHMgb2YgdGhlIGN1cnJlbnQgcGFnZS4gV2UKLQkJICogY2xl YXIgdGhhdCBhcnJheSBoZXJlLCB3aGVuIGFkdmFuY2luZyBvbnRvIGEgbmV3IGhlYXAgcGFnZS4K LQkJICovCi0JCWlmIChoc2Nhbi0+cnNfY2Jsb2NrICE9IHJvb3RfYmxrbm8pCisJCSogQXR0ZW1w dCB0byBmZXRjaCB0aGUgbmV4dCBUSUQgZnJvbSB0aGUgYXV4aWxpYXJ5IHNvcnQuIElmIGl0J3MK KwkJKiBlbXB0eSwgd2Ugc2V0IGF1eGluZGV4Y3Vyc29yIHRvIE5VTEwuCisJCSovCisJCWF1eHR1 cGxlc29ydF9lbXB0eSA9ICF0dXBsZXNvcnRfZ2V0ZGF0dW0oYXV4U3RhdGUtPnR1cGxlc29ydCwg dHJ1ZSwKKwkJCQkJCQkJCQkJCSBmYWxzZSwgJnRzX3ZhbCwgJnRzX2lzbnVsbCwKKwkJCQkJCQkJ CQkJCSBOVUxMKTsKKwkJQXNzZXJ0KGF1eHR1cGxlc29ydF9lbXB0eSB8fCAhdHNfaXNudWxsKTsK KwkJaWYgKCFhdXh0dXBsZXNvcnRfZW1wdHkpCiAJCXsKLQkJCVBhZ2UJCXBhZ2UgPSBCdWZmZXJH ZXRQYWdlKGhzY2FuLT5yc19jYnVmKTsKLQotCQkJTG9ja0J1ZmZlcihoc2Nhbi0+cnNfY2J1Ziwg QlVGRkVSX0xPQ0tfU0hBUkUpOwotCQkJaGVhcF9nZXRfcm9vdF90dXBsZXMocGFnZSwgcm9vdF9v ZmZzZXRzKTsKLQkJCUxvY2tCdWZmZXIoaHNjYW4tPnJzX2NidWYsIEJVRkZFUl9MT0NLX1VOTE9D Syk7Ci0KLQkJCW1lbXNldChpbl9pbmRleCwgMCwgc2l6ZW9mKGluX2luZGV4KSk7Ci0KLQkJCXJv b3RfYmxrbm8gPSBoc2Nhbi0+cnNfY2Jsb2NrOworCQkJaXRlbXB0cl9kZWNvZGUoJmF1eGRlY29k ZWQsIERhdHVtR2V0SW50NjQodHNfdmFsKSk7CisJCQlhdXhpbmRleGN1cnNvciA9ICZhdXhkZWNv ZGVkOwogCQl9Ci0KLQkJLyogQ29udmVydCBhY3R1YWwgdHVwbGUgVElEIHRvIHJvb3QgVElEICov Ci0JCXJvb3RUdXBsZSA9ICpoZWFwY3Vyc29yOwotCQlyb290X29mZm51bSA9IEl0ZW1Qb2ludGVy R2V0T2Zmc2V0TnVtYmVyKGhlYXBjdXJzb3IpOwotCi0JCWlmIChIZWFwVHVwbGVJc0hlYXBPbmx5 KGhlYXBUdXBsZSkpCisJCWVsc2UKIAkJewotCQkJcm9vdF9vZmZudW0gPSByb290X29mZnNldHNb cm9vdF9vZmZudW0gLSAxXTsKLQkJCWlmICghT2Zmc2V0TnVtYmVySXNWYWxpZChyb290X29mZm51 bSkpCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JS VVBURUQpLAotCQkJCQkJIGVycm1zZ19pbnRlcm5hbCgiZmFpbGVkIHRvIGZpbmQgcGFyZW50IHR1 cGxlIGZvciBoZWFwLW9ubHkgdHVwbGUgYXQgKCV1LCV1KSBpbiB0YWJsZSBcIiVzXCIiLAotCQkJ CQkJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKGhlYXBjdXJzb3IpLAotCQkJCQkJCQkJ CSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcihoZWFwY3Vyc29yKSwKLQkJCQkJCQkJCQkgUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUoaGVhcFJlbGF0aW9uKSkpKTsKLQkJCUl0ZW1Qb2ludGVyU2V0 T2Zmc2V0TnVtYmVyKCZyb290VHVwbGUsIHJvb3Rfb2ZmbnVtKTsKKwkJCWF1eGluZGV4Y3Vyc29y ID0gTlVMTDsKIAkJfQogCiAJCS8qCi0JCSAqICJtZXJnZSIgYnkgc2tpcHBpbmcgdGhyb3VnaCB0 aGUgaW5kZXggdHVwbGVzIHVudGlsIHdlIGZpbmQgb3IgcGFzcwotCQkgKiB0aGUgY3VycmVudCBy b290IHR1cGxlLgotCQkgKi8KLQkJd2hpbGUgKCF0dXBsZXNvcnRfZW1wdHkgJiYKLQkJCSAgICgh aW5kZXhjdXJzb3IgfHwKLQkJCQlJdGVtUG9pbnRlckNvbXBhcmUoaW5kZXhjdXJzb3IsICZyb290 VHVwbGUpIDwgMCkpCisJCSogSWYgdGhlIGF1eGlsaWFyeSBzb3J0IGlzIG5vdCB5ZXQgZW1wdHks IHdlIG5vdyB0cnkgdG8gc3luY2hyb25pemUKKwkJKiB0aGUgIm1haW4iIHNvcnQgY3Vyc29yIChp bmRleGN1cnNvcikgd2l0aCBhdXhpbmRleGN1cnNvci4gV2UgYWR2YW5jZQorCQkqIHRoZSBtYWlu IHNvcnQgY3Vyc29yIHVudGlsIHdlJ3ZlIHJlYWNoZWQgb3IgcGFzc2VkIHRoZSBhdXhpbGlhcnkg VElELgorCQkqLworCQlpZiAoIWF1eHR1cGxlc29ydF9lbXB0eSkKIAkJewotCQkJRGF0dW0JCXRz X3ZhbDsKLQkJCWJvb2wJCXRzX2lzbnVsbDsKLQotCQkJaWYgKGluZGV4Y3Vyc29yKQorCQkJLyoK KwkJCSAqIE1vdmUgdGhlIG1haW4gc29ydCBmb3J3YXJkIHdoaWxlOgorCQkJICogICAoMSkgSXQn cyBub3QgZXhoYXVzdGVkICh0dXBsZXNvcnRfZW1wdHkgPT0gZmFsc2UpLCBhbmQKKwkJCSAqICAg KDIpIEVpdGhlciBpbmRleGN1cnNvciBpcyBOVUxMIChmaXJzdCBpdGVyYXRpb24pIG9yCisJCQkg KiAgICAgICBpbmRleGN1cnNvciA8IGF1eGluZGV4Y3Vyc29yIGluIFRJRCBvcmRlci4KKwkJCSAq LworCQkJd2hpbGUgKCF0dXBsZXNvcnRfZW1wdHkgJiYgKGluZGV4Y3Vyc29yID09IE5VTEwgfHwg LyogbnVsbCBvbiBmaXJzdCB0aW1lIGhlcmUgKi8KKwkJCQkJCUl0ZW1Qb2ludGVyQ29tcGFyZShp bmRleGN1cnNvciwgYXV4aW5kZXhjdXJzb3IpIDwgMCkpCiAJCQl7CiAJCQkJLyoKLQkJCQkgKiBS ZW1lbWJlciBpbmRleCBpdGVtcyBzZWVuIGVhcmxpZXIgb24gdGhlIGN1cnJlbnQgaGVhcCBwYWdl CisJCQkJICogR2V0IHRoZSBuZXh0IFRJRCBmcm9tIHRoZSBtYWluIHNvcnQuIElmIGl0J3MgZW1w dHksCisJCQkJICogd2Ugc2V0IGluZGV4Y3Vyc29yIHRvIE5VTEwuCiAJCQkJICovCi0JCQkJaWYg KEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoaW5kZXhjdXJzb3IpID09IHJvb3RfYmxrbm8pCi0J CQkJCWluX2luZGV4W0l0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKGluZGV4Y3Vyc29yKSAtIDFd ID0gdHJ1ZTsKLQkJCX0KLQotCQkJdHVwbGVzb3J0X2VtcHR5ID0gIXR1cGxlc29ydF9nZXRkYXR1 bShzdGF0ZS0+dHVwbGVzb3J0LCB0cnVlLAotCQkJCQkJCQkJCQkJICBmYWxzZSwgJnRzX3ZhbCwg JnRzX2lzbnVsbCwKLQkJCQkJCQkJCQkJCSAgTlVMTCk7Ci0JCQlBc3NlcnQodHVwbGVzb3J0X2Vt cHR5IHx8ICF0c19pc251bGwpOwotCQkJaWYgKCF0dXBsZXNvcnRfZW1wdHkpCi0JCQl7Ci0JCQkJ aXRlbXB0cl9kZWNvZGUoJmRlY29kZWQsIERhdHVtR2V0SW50NjQodHNfdmFsKSk7Ci0JCQkJaW5k ZXhjdXJzb3IgPSAmZGVjb2RlZDsKLQkJCX0KLQkJCWVsc2UKLQkJCXsKLQkJCQkvKiBCZSB0aWR5 ICovCi0JCQkJaW5kZXhjdXJzb3IgPSBOVUxMOworCQkJCXR1cGxlc29ydF9lbXB0eSA9ICF0dXBs ZXNvcnRfZ2V0ZGF0dW0oc3RhdGUtPnR1cGxlc29ydCwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQkgIGZh bHNlLCAmdHNfdmFsLCAmdHNfaXNudWxsLAorCQkJCQkJCQkJCQkJCSAgTlVMTCk7CisJCQkJQXNz ZXJ0KHR1cGxlc29ydF9lbXB0eSB8fCAhdHNfaXNudWxsKTsKKworCQkJCXBnc3RhdF9wcm9ncmVz c19pbmNyX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNfRE9ORSwgMSk7CisKKwkJCQlp ZiAoIXR1cGxlc29ydF9lbXB0eSkKKwkJCQl7CisJCQkJCWl0ZW1wdHJfZGVjb2RlKCZkZWNvZGVk LCBEYXR1bUdldEludDY0KHRzX3ZhbCkpOworCQkJCQlpbmRleGN1cnNvciA9ICZkZWNvZGVkOwor CQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlpbmRleGN1cnNvciA9IE5VTEw7CisJCQkJfQor CisJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJCX0KLQkJfQotCi0JCS8qCi0JCSAqIElm IHRoZSB0dXBsZXNvcnQgaGFzIG92ZXJzaG90ICphbmQqIHdlIGRpZG4ndCBzZWUgYSBtYXRjaCBl YXJsaWVyLAotCQkgKiB0aGVuIHRoaXMgdHVwbGUgaXMgbWlzc2luZyBmcm9tIHRoZSBpbmRleCwg c28gaW5zZXJ0IGl0LgotCQkgKi8KLQkJaWYgKCh0dXBsZXNvcnRfZW1wdHkgfHwKLQkJCSBJdGVt UG9pbnRlckNvbXBhcmUoaW5kZXhjdXJzb3IsICZyb290VHVwbGUpID4gMCkgJiYKLQkJCSFpbl9p bmRleFtyb290X29mZm51bSAtIDFdKQotCQl7Ci0JCQlNZW1vcnlDb250ZXh0UmVzZXQoZWNvbnRl eHQtPmVjeHRfcGVyX3R1cGxlX21lbW9yeSk7Ci0KLQkJCS8qIFNldCB1cCBmb3IgcHJlZGljYXRl IG9yIGV4cHJlc3Npb24gZXZhbHVhdGlvbiAqLwotCQkJRXhlY1N0b3JlSGVhcFR1cGxlKGhlYXBU dXBsZSwgc2xvdCwgZmFsc2UpOwogCiAJCQkvKgotCQkJICogSW4gYSBwYXJ0aWFsIGluZGV4LCBk aXNjYXJkIHR1cGxlcyB0aGF0IGRvbid0IHNhdGlzZnkgdGhlCi0JCQkgKiBwcmVkaWNhdGUuCisJ CQkgKiBOb3csIGlmIGVpdGhlcjoKKwkJCSAqICAtIHRoZSBtYWluIHNvcnQgaXMgZW1wdHksIG9y CisJCQkgKiAgLSBpbmRleGN1cnNvciA+IGF1eGluZGV4Y3Vyc29yLAorCQkJICoKKwkJCSAqIHRo ZW4gYXV4aW5kZXhjdXJzb3IgaWRlbnRpZmllcyBhIFRJRCB0aGF0IGRvZXNuJ3QgYXBwZWFyIGlu CisJCQkgKiB0aGUgbWFpbiBzb3J0LiBXZSBsaWtlbHkgbmVlZCB0byBpbnNlcnQgaXQKKwkJCSAq IGludG8gdGhlIHRhcmdldCBpbmRleCBpZiBpdOKAmXMgdmlzaWJsZSBpbiB0aGUgaGVhcC4KIAkJ CSAqLwotCQkJaWYgKHByZWRpY2F0ZSAhPSBOVUxMKQorCQkJaWYgKHR1cGxlc29ydF9lbXB0eSB8 fCBJdGVtUG9pbnRlckNvbXBhcmUoaW5kZXhjdXJzb3IsIGF1eGluZGV4Y3Vyc29yKSA+IDApCiAJ CQl7Ci0JCQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGUsIGVjb250ZXh0KSkKLQkJCQkJY29udGlu dWU7Ci0JCQl9CisJCQkJYm9vbCBjYWxsX2FnYWluID0gZmFsc2U7CisJCQkJYm9vbCBhbGxfZGVh ZCA9IGZhbHNlOworCQkJCUl0ZW1Qb2ludGVyIHRpZDsKIAotCQkJLyoKLQkJCSAqIEZvciB0aGUg Y3VycmVudCBoZWFwIHR1cGxlLCBleHRyYWN0IGFsbCB0aGUgYXR0cmlidXRlcyB3ZSB1c2UKLQkJ CSAqIGluIHRoaXMgaW5kZXgsIGFuZCBub3RlIHdoaWNoIGFyZSBudWxsLiAgVGhpcyBhbHNvIHBl cmZvcm1zCi0JCQkgKiBldmFsdWF0aW9uIG9mIGFueSBleHByZXNzaW9ucyBuZWVkZWQuCi0JCQkg Ki8KLQkJCUZvcm1JbmRleERhdHVtKGluZGV4SW5mbywKLQkJCQkJCSAgIHNsb3QsCi0JCQkJCQkg ICBlc3RhdGUsCi0JCQkJCQkgICB2YWx1ZXMsCi0JCQkJCQkgICBpc251bGwpOworCQkJCS8qIENv cHkgdGhlIGF1eGluZGV4Y3Vyc29yIFRJRCBpbnRvIGZldGNoZWQuICovCisJCQkJZmV0Y2hlZCA9 ICphdXhpbmRleGN1cnNvcjsKKwkJCQl0aWQgPSAmZmV0Y2hlZDsKIAotCQkJLyoKLQkJCSAqIFlv dSdkIHRoaW5rIHdlIHNob3VsZCBnbyBhaGVhZCBhbmQgYnVpbGQgdGhlIGluZGV4IHR1cGxlIGhl cmUsCi0JCQkgKiBidXQgc29tZSBpbmRleCBBTXMgd2FudCB0byBkbyBmdXJ0aGVyIHByb2Nlc3Np bmcgb24gdGhlIGRhdGEKLQkJCSAqIGZpcnN0LiBTbyBwYXNzIHRoZSB2YWx1ZXNbXSBhbmQgaXNu dWxsW10gYXJyYXlzLCBpbnN0ZWFkLgotCQkJICovCi0KLQkJCS8qCi0JCQkgKiBJZiB0aGUgdHVw bGUgaXMgYWxyZWFkeSBjb21taXR0ZWQgZGVhZCwgeW91IG1pZ2h0IHRoaW5rIHdlCi0JCQkgKiBj b3VsZCBzdXBwcmVzcyB1bmlxdWVuZXNzIGNoZWNraW5nLCBidXQgdGhpcyBpcyBubyBsb25nZXIg dHJ1ZQotCQkJICogaW4gdGhlIHByZXNlbmNlIG9mIEhPVCwgYmVjYXVzZSB0aGUgaW5zZXJ0IGlz IGFjdHVhbGx5IGEgcHJveHkKLQkJCSAqIGZvciBhIHVuaXF1ZW5lc3MgY2hlY2sgb24gdGhlIHdo b2xlIEhPVC1jaGFpbi4gIFRoYXQgaXMsIHRoZQotCQkJICogdHVwbGUgd2UgaGF2ZSBoZXJlIGNv dWxkIGJlIGRlYWQgYmVjYXVzZSBpdCB3YXMgYWxyZWFkeQotCQkJICogSE9ULXVwZGF0ZWQsIGFu ZCBpZiBzbyB0aGUgdXBkYXRpbmcgdHJhbnNhY3Rpb24gd2lsbCBub3QgaGF2ZQotCQkJICogdGhv dWdodCBpdCBzaG91bGQgaW5zZXJ0IGluZGV4IGVudHJpZXMuICBUaGUgaW5kZXggQU0gd2lsbAot CQkJICogY2hlY2sgdGhlIHdob2xlIEhPVC1jaGFpbiBhbmQgY29ycmVjdGx5IGRldGVjdCBhIGNv bmZsaWN0IGlmCi0JCQkgKiB0aGVyZSBpcyBvbmUuCi0JCQkgKi8KKwkJCQkvKiBSZXNldCB0aGUg cGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGZvciB0aGUgbmV4dCBmZXRjaC4gKi8KKwkJCQlNZW1v cnlDb250ZXh0UmVzZXQoZWNvbnRleHQtPmVjeHRfcGVyX3R1cGxlX21lbW9yeSk7CisJCQkJc3Rh dGUtPmh0dXBzICs9IDE7CiAKLQkJCWluZGV4X2luc2VydChpbmRleFJlbGF0aW9uLAotCQkJCQkJ IHZhbHVlcywKLQkJCQkJCSBpc251bGwsCi0JCQkJCQkgJnJvb3RUdXBsZSwKLQkJCQkJCSBoZWFw UmVsYXRpb24sCi0JCQkJCQkgaW5kZXhJbmZvLT5paV9VbmlxdWUgPwotCQkJCQkJIFVOSVFVRV9D SEVDS19ZRVMgOiBVTklRVUVfQ0hFQ0tfTk8sCi0JCQkJCQkgZmFsc2UsCi0JCQkJCQkgaW5kZXhJ bmZvKTsKLQotCQkJc3RhdGUtPnR1cHNfaW5zZXJ0ZWQgKz0gMTsKKwkJCQkvKgorCQkJCSAqIEZl dGNoIHRoZSB0dXBsZSBmcm9tIHRoZSBoZWFwIHRvIHNlZSBpZiBpdCdzIHZpc2libGUKKwkJCQkg KiB1bmRlciBvdXIgc25hcHNob3QuIElmIGl0IGlzLCBmb3JtIHRoZSBpbmRleCBrZXkgdmFsdWVz CisJCQkJICogYW5kIGluc2VydCBhIG5ldyBlbnRyeSBpbnRvIHRoZSB0YXJnZXQgaW5kZXguCisJ CQkJICovCisJCQkJaWYgKGhlYXBhbV9pbmRleF9mZXRjaF90dXBsZShmZXRjaCwgdGlkLCBzbmFw c2hvdCwgc2xvdCwgJmNhbGxfYWdhaW4sICZhbGxfZGVhZCkpCisJCQkJeworCisJCQkJCS8qIENv bXB1dGUgdGhlIGtleSB2YWx1ZXMgYW5kIG51bGwgZmxhZ3MgZm9yIHRoaXMgdHVwbGUuICovCisJ CQkJCUZvcm1JbmRleERhdHVtKGluZGV4SW5mbywKKwkJCQkJCQkJICAgc2xvdCwKKwkJCQkJCQkJ ICAgZXN0YXRlLAorCQkJCQkJCQkgICB2YWx1ZXMsCisJCQkJCQkJCSAgIGlzbnVsbCk7CisKKwkJ CQkJLyoKKwkJCQkJICogSW5zZXJ0IHRoZSB0dXBsZSBpbnRvIHRoZSB0YXJnZXQgaW5kZXguCisJ CQkJCSAqLworCQkJCQlpbmRleF9pbnNlcnQoaW5kZXhSZWxhdGlvbiwKKwkJCQkJCQkJIHZhbHVl cywKKwkJCQkJCQkJIGlzbnVsbCwKKwkJCQkJCQkJIGF1eGluZGV4Y3Vyc29yLCAvKiBpbnNlcnQg cm9vdCB0dXBsZSAqLworCQkJCQkJCQkgaGVhcFJlbGF0aW9uLAorCQkJCQkJCQkgaW5kZXhJbmZv LT5paV9VbmlxdWUgPworCQkJCQkJCQkgVU5JUVVFX0NIRUNLX1lFUyA6IFVOSVFVRV9DSEVDS19O TywKKwkJCQkJCQkJIGZhbHNlLAorCQkJCQkJCQkgaW5kZXhJbmZvKTsKKworCQkJCQlzdGF0ZS0+ dHVwc19pbnNlcnRlZCArPSAxOworCisJCQkJCWVsb2coREVCVUc1LCAiaW5zZXJ0ZWQgdGlkOiAo JXUsJXUpLCByb290OiAoJXUsICV1KSIsCisJCQkJCQkJCQkJCUl0ZW1Qb2ludGVyR2V0QmxvY2tO dW1iZXIoYXV4aW5kZXhjdXJzb3IpLAorCQkJCQkJCQkJCQlJdGVtUG9pbnRlckdldE9mZnNldE51 bWJlcihhdXhpbmRleGN1cnNvciksCisJCQkJCQkJCQkJCUl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1i ZXIodGlkKSwKKwkJCQkJCQkJCQkJSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIodGlkKSk7CisJ CQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIFRoZSB0dXBsZSB3YXNuJ3Qg dmlzaWJsZSB1bmRlciBvdXIgc25hcHNob3QuIFdlCisJCQkJCSAqIHNraXAgaW5zZXJ0aW5nIGl0 IGludG8gdGhlIHRhcmdldCBpbmRleCBiZWNhdXNlCisJCQkJCSAqIGZyb20gb3VyIHBlcnNwZWN0 aXZlLCBpdCBkb2Vzbid0IGV4aXN0LgorCQkJCQkgKi8KKwkJCQkJZWxvZyhERUJVRzUsICJza2lw cGluZyBpbnNlcnQgdG8gdGFyZ2V0IGluZGV4IGJlY2F1c2UgdGlkIG5vdCB2aXNpYmxlOiAoJXUs JXUpIiwKKwkJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKGF1eGluZGV4Y3Vyc29yKSwK KwkJCQkJCSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcihhdXhpbmRleGN1cnNvcikpOworCQkJ CX0KKwkJCX0KIAkJfQogCX0KIAotCXRhYmxlX2VuZHNjYW4oc2Nhbik7CisJLyogV2UgbWF5IGV4 aXQgZWFybHkgZHVlIGVuZCBvZiBhdXggdHVwbGVzLCBzbywgbWFrZSBzdXJlIHdlIGFyZSBkb25l IGluIHRoZSBwcm9ncmVzcyB2aWV3ICovCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfVFVQTEVTX0RPTkUsIChpbnQ2NCkgc3RhdGUtPml0dXBzKTsKIAog CUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CiAKIAlGcmVlRXhlY3V0b3JTdGF0 ZShlc3RhdGUpOwogCisJaGVhcGFtX2luZGV4X2ZldGNoX2VuZChmZXRjaCk7CisKKwkvKgorCSAq IERyb3AgdGhlIHJlZmVyZW5jZSBzbmFwc2hvdC4gIFdlIG11c3QgZG8gdGhpcyBiZWZvcmUgd2Fp dGluZyBvdXQgb3RoZXIKKwkgKiBzbmFwc2hvdCBob2xkZXJzLCBlbHNlIHdlIHdpbGwgZGVhZGxv Y2sgYWdhaW5zdCBvdGhlciBwcm9jZXNzZXMgYWxzbworCSAqIGRvaW5nIENSRUFURSBJTkRFWCBD T05DVVJSRU5UTFksIHdoaWNoIHdvdWxkIHNlZSBvdXIgc25hcHNob3QgYXMgb25lCisJICogdGhl eSBtdXN0IHdhaXQgZm9yLgorCSAqLworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJVW5yZWdpc3Rl clNuYXBzaG90KHNuYXBzaG90KTsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNz ZXJ0KE15UHJvYy0+eG1pbiA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CisjaWYgVVNFX0lOSkVD VElPTl9QT0lOVFMKKwlpZiAoTXlQcm9jLT54aWQgPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpCisJ CUlOSkVDVElPTl9QT0lOVCgiaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkIik7Cisj ZW5kaWYKIAkvKiBUaGVzZSBtYXkgaGF2ZSBiZWVuIHBvaW50aW5nIHRvIHRoZSBub3ctZ29uZSBl c3RhdGUgKi8KIAlpbmRleEluZm8tPmlpX0V4cHJlc3Npb25zU3RhdGUgPSBOSUw7CiAJaW5kZXhJ bmZvLT5paV9QcmVkaWNhdGVTdGF0ZSA9IE5VTEw7CisKKwlyZXR1cm4gbGltaXRYbWluOwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDJkYmY4ZjgyMTQxLi4wZTA2MzM0ZjQ0NyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYwpAQCAtNzE0LDExICs3MTQsMTYgQEAgVXBkYXRlSW5kZXhSZWxhdGlvbihPaWQg aW5kZXhvaWQsCiAgKgkJCWFscmVhZHkgZXhpc3RzLgogICoJCUlOREVYX0NSRUFURV9QQVJUSVRJ T05FRDoKICAqCQkJY3JlYXRlIGEgcGFydGl0aW9uZWQgaW5kZXggKHRhYmxlIG11c3QgYmUgcGFy dGl0aW9uZWQpCisgKgkJSU5ERVhfQ1JFQVRFX0FVWElMSUFSWToKKyAqCQkJbWFyayBpbmRleCBh cyBhdXhpbGlhcnkgaW5kZXgKICAqIGNvbnN0cl9mbGFnczogZmxhZ3MgcGFzc2VkIHRvIGluZGV4 X2NvbnN0cmFpbnRfY3JlYXRlCiAgKgkJKG9ubHkgaWYgSU5ERVhfQ1JFQVRFX0FERF9DT05TVFJB SU5UIGlzIHNldCkKICAqIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzOiBhbGxvdyB0YWJsZSB0byBi ZSBhIHN5c3RlbSBjYXRhbG9nCiAgKiBpc19pbnRlcm5hbDogaWYgdHJ1ZSwgcG9zdCBjcmVhdGlv biBob29rIGZvciBuZXcgaW5kZXgKICAqIGNvbnN0cmFpbnRJZDogaWYgbm90IE5VTEwsIHJlY2Vp dmVzIE9JRCBvZiBjcmVhdGVkIGNvbnN0cmFpbnQKKyAqIHJlbHBlcnNpc3RlbmNlOiBwZXJzaXN0 ZW5jZSBsZXZlbCB0byB1c2UgZm9yIGluZGV4LiBJbiBtb3N0IG9mIHRoZQorICoJCWNhc2VzIGl0 IGlzIHNob3VsZCBiZSBlcXVhbCB0byBwZXJzaXN0ZW5jZSBsZXZlbCBvZiB0YWJsZSwKKyAqCQlh dXhpbGlhcnkgaW5kZXhlcyBhcmUgb25seSBleGNlcHRpb24gaGVyZS4KICAqCiAgKiBSZXR1cm5z IHRoZSBPSUQgb2YgdGhlIGNyZWF0ZWQgaW5kZXguCiAgKi8KQEAgLTc0Myw3ICs3NDgsOCBAQCBp bmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJIGJpdHMxNiBjb25zdHJfZmxh Z3MsCiAJCQkgYm9vbCBhbGxvd19zeXN0ZW1fdGFibGVfbW9kcywKIAkJCSBib29sIGlzX2ludGVy bmFsLAotCQkJIE9pZCAqY29uc3RyYWludElkKQorCQkJIE9pZCAqY29uc3RyYWludElkLAorCQkJ IGNoYXIgcmVscGVyc2lzdGVuY2UpCiB7CiAJT2lkCQkJaGVhcFJlbGF0aW9uSWQgPSBSZWxhdGlv bkdldFJlbGlkKGhlYXBSZWxhdGlvbik7CiAJUmVsYXRpb24JcGdfY2xhc3M7CkBAIC03NTQsMTEg Kzc2MCwxMSBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCWJvb2wJCWlz X2V4Y2x1c2lvbjsKIAlPaWQJCQluYW1lc3BhY2VJZDsKIAlpbnQJCQlpOwotCWNoYXIJCXJlbHBl cnNpc3RlbmNlOwogCWJvb2wJCWlzcHJpbWFyeSA9IChmbGFncyAmIElOREVYX0NSRUFURV9JU19Q UklNQVJZKSAhPSAwOwogCWJvb2wJCWludmFsaWQgPSAoZmxhZ3MgJiBJTkRFWF9DUkVBVEVfSU5W QUxJRCkgIT0gMDsKIAlib29sCQljb25jdXJyZW50ID0gKGZsYWdzICYgSU5ERVhfQ1JFQVRFX0NP TkNVUlJFTlQpICE9IDA7CiAJYm9vbAkJcGFydGl0aW9uZWQgPSAoZmxhZ3MgJiBJTkRFWF9DUkVB VEVfUEFSVElUSU9ORUQpICE9IDA7CisJYm9vbAkJYXV4aWxpYXJ5ID0gKGZsYWdzICYgSU5ERVhf Q1JFQVRFX0FVWElMSUFSWSkgIT0gMDsKIAljaGFyCQlyZWxraW5kOwogCVRyYW5zYWN0aW9uSWQg cmVsZnJvemVueGlkOwogCU11bHRpWGFjdElkIHJlbG1pbm14aWQ7CkBAIC03ODQsNyArNzkwLDYg QEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAluYW1lc3BhY2VJZCA9IFJl bGF0aW9uR2V0TmFtZXNwYWNlKGhlYXBSZWxhdGlvbik7CiAJc2hhcmVkX3JlbGF0aW9uID0gaGVh cFJlbGF0aW9uLT5yZF9yZWwtPnJlbGlzc2hhcmVkOwogCW1hcHBlZF9yZWxhdGlvbiA9IFJlbGF0 aW9uSXNNYXBwZWQoaGVhcFJlbGF0aW9uKTsKLQlyZWxwZXJzaXN0ZW5jZSA9IGhlYXBSZWxhdGlv bi0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZTsKIAogCS8qCiAJICogY2hlY2sgcGFyYW1ldGVycwpA QCAtNzkyLDYgKzc5NywxMSBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog CWlmIChpbmRleEluZm8tPmlpX051bUluZGV4QXR0cnMgPCAxKQogCQllbG9nKEVSUk9SLCAibXVz dCBpbmRleCBhdCBsZWFzdCBvbmUgY29sdW1uIik7CiAKKwlpZiAoaW5kZXhJbmZvLT5paV9BbSA9 PSBTVElSX0FNX09JRCAmJiAhYXV4aWxpYXJ5KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJ1c2VyLWRl ZmluZWQgaW5kZXhlcyB3aXRoIFNUSVIgYWNjZXNzIG1ldGhvZCBhcmUgbm90IHN1cHBvcnRlZCIp KSk7CisKIAlpZiAoIWFsbG93X3N5c3RlbV90YWJsZV9tb2RzICYmCiAJCUlzU3lzdGVtUmVsYXRp b24oaGVhcFJlbGF0aW9uKSAmJgogCQlJc05vcm1hbFByb2Nlc3NpbmdNb2RlKCkpCkBAIC0xMzk3 LDcgKzE0MDcsOCBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVh cFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKIAkJCQkJCQlmYWxzZSwJLyogbm90IHJlYWR5IGZv ciBpbnNlcnRzICovCiAJCQkJCQkJdHJ1ZSwKIAkJCQkJCQlpbmRleFJlbGF0aW9uLT5yZF9pbmRh bS0+YW1zdW1tYXJpemluZywKLQkJCQkJCQlvbGRJbmZvLT5paV9XaXRob3V0T3ZlcmxhcHMpOwor CQkJCQkJCW9sZEluZm8tPmlpX1dpdGhvdXRPdmVybGFwcywKKwkJCQkJCQlmYWxzZSk7CiAKIAkv KgogCSAqIEV4dHJhY3QgdGhlIGxpc3Qgb2YgY29sdW1uIG5hbWVzIGFuZCB0aGUgY29sdW1uIG51 bWJlcnMgZm9yIHRoZSBuZXcKQEAgLTE0NjIsNyArMTQ3Myw4IEBAIGluZGV4X2NvbmN1cnJlbnRs eV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLAogCQkJ CQkJCSAgMCwKIAkJCQkJCQkgIHRydWUsIC8qIGFsbG93IHRhYmxlIHRvIGJlIGEgc3lzdGVtIGNh dGFsb2c/ICovCiAJCQkJCQkJICBmYWxzZSwJLyogaXNfaW50ZXJuYWw/ICovCi0JCQkJCQkJICBO VUxMKTsKKwkJCQkJCQkgIE5VTEwsCisJCQkJCQkJICBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVs cGVyc2lzdGVuY2UpOwogCiAJLyogQ2xvc2UgdGhlIHJlbGF0aW9ucyB1c2VkIGFuZCBjbGVhbiB1 cCAqLwogCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7CkBAIC0xNDcyLDYgKzE0 ODQsMTU1IEBAIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVs YXRpb24sIE9pZCBvbGRJbmRleElkLAogCXJldHVybiBuZXdJbmRleElkOwogfQogCisvKgorICog aW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9hdXgKKyAqCisgKiBDcmVhdGUgY29uY3VycmVudGx5 IGFuIGF1eGlsaWFyeSBpbmRleCBiYXNlZCBvbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgb25lCisg KiBwcm92aWRlZCBieSBjYWxsZXIuICBUaGUgaW5kZXggaXMgaW5zZXJ0ZWQgaW50byBjYXRhbG9n cyBhbmQgbmVlZHMgdG8gYmUKKyAqIGJ1aWx0IGxhdGVyIG9uLiBUaGlzIGlzIGNhbGxlZCBkdXJp bmcgY29uY3VycmVudCByZWluZGV4IHByb2Nlc3NpbmcuCisgKgorICogInRhYmxlc3BhY2VPaWQi IGlzIHRoZSB0YWJsZXNwYWNlIHRvIHVzZSBmb3IgdGhpcyBpbmRleC4KKyAqLworT2lkCitpbmRl eF9jb25jdXJyZW50bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBtYWlu SW5kZXhJZCwKKwkJCQkJCQkgICBPaWQgdGFibGVzcGFjZU9pZCwgY29uc3QgY2hhciAqbmV3TmFt ZSkKK3sKKwlSZWxhdGlvbglpbmRleFJlbGF0aW9uOworCUluZGV4SW5mbyAgKm9sZEluZm8sCisJ CQkqbmV3SW5mbzsKKwlPaWQJCQluZXdJbmRleElkID0gSW52YWxpZE9pZDsKKwlIZWFwVHVwbGUJ aW5kZXhUdXBsZTsKKworCUxpc3QJICAgKmluZGV4Q29sTmFtZXMgPSBOSUw7CisJTGlzdAkgICAq aW5kZXhFeHBycyA9IE5JTDsKKwlMaXN0CSAgICppbmRleFByZWRzID0gTklMOworCisJT2lkICph dXhPcGNsYXNzSWRzOworCWludDE2ICphdXhDb2xvcHRpb25zOworCisJaW5kZXhSZWxhdGlvbiA9 IGluZGV4X29wZW4obWFpbkluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJLyogVGhlIG5l dyBpbmRleCBuZWVkcyBzb21lIGluZm9ybWF0aW9uIGZyb20gdGhlIG9sZCBpbmRleCAqLworCW9s ZEluZm8gPSBCdWlsZEluZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKKworCS8qCisJICogQnVpbGQg b2YgYW4gYXV4aWxpYXJ5IGluZGV4IHdpdGggZXhjbHVzaW9uIGNvbnN0cmFpbnRzIGlzIG5vdAor CSAqIHN1cHBvcnRlZC4KKwkgKi8KKwlpZiAob2xkSW5mby0+aWlfRXhjbHVzaW9uT3BzICE9IE5V TEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAorCQkJCQkJZXJybXNnKCJhdXhpbGlhcnkgaW5kZXggY3JlYXRpb24gZm9yIGV4 Y2x1c2lvbiBjb25zdHJhaW50cyBpcyBub3Qgc3VwcG9ydGVkIikpKTsKKworCS8qIEdldCB0aGUg YXJyYXkgb2YgY2xhc3MgYW5kIGNvbHVtbiBvcHRpb25zIElEcyBmcm9tIGluZGV4IGluZm8gKi8K KwlpbmRleFR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKElOREVYUkVMSUQsIE9iamVjdElkR2V0RGF0 dW0obWFpbkluZGV4SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoaW5kZXhUdXBsZSkpCisJ CWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBpbmRleCAldSIsIG1haW5JbmRl eElkKTsKKworCisJLyoKKwkgKiBGZXRjaCB0aGUgbGlzdCBvZiBleHByZXNzaW9ucyBhbmQgcHJl ZGljYXRlcyBkaXJlY3RseSBmcm9tIHRoZQorCSAqIGNhdGFsb2dzLiAgVGhpcyBjYW5ub3QgcmVs eSBvbiB0aGUgaW5mb3JtYXRpb24gZnJvbSBJbmRleEluZm8gb2YgdGhlCisJICogb2xkIGluZGV4 IGFzIHRoZXNlIGhhdmUgYmVlbiBmbGF0dGVuZWQgZm9yIHRoZSBwbGFubmVyLgorCSAqLworCWlm IChvbGRJbmZvLT5paV9FeHByZXNzaW9ucyAhPSBOSUwpCisJeworCQlEYXR1bQkJZXhwckRhdHVt OworCQljaGFyCSAgICpleHByU3RyaW5nOworCisJCWV4cHJEYXR1bSA9IFN5c0NhY2hlR2V0QXR0 ck5vdE51bGwoSU5ERVhSRUxJRCwgaW5kZXhUdXBsZSwKKwkJCQkJCQkJCQkgICBBbnVtX3BnX2lu ZGV4X2luZGV4cHJzKTsKKwkJZXhwclN0cmluZyA9IFRleHREYXR1bUdldENTdHJpbmcoZXhwckRh dHVtKTsKKwkJaW5kZXhFeHBycyA9IChMaXN0ICopIHN0cmluZ1RvTm9kZShleHByU3RyaW5nKTsK KwkJcGZyZWUoZXhwclN0cmluZyk7CisJfQorCWlmIChvbGRJbmZvLT5paV9QcmVkaWNhdGUgIT0g TklMKQorCXsKKwkJRGF0dW0JCXByZWREYXR1bTsKKwkJY2hhcgkgICAqcHJlZFN0cmluZzsKKwor CQlwcmVkRGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKElOREVYUkVMSUQsIGluZGV4VHVw bGUsCisJCQkJCQkJCQkJICAgQW51bV9wZ19pbmRleF9pbmRwcmVkKTsKKwkJcHJlZFN0cmluZyA9 IFRleHREYXR1bUdldENTdHJpbmcocHJlZERhdHVtKTsKKwkJaW5kZXhQcmVkcyA9IChMaXN0ICop IHN0cmluZ1RvTm9kZShwcmVkU3RyaW5nKTsKKworCQkvKiBBbHNvIGNvbnZlcnQgdG8gaW1wbGlj aXQtQU5EIGZvcm1hdCAqLworCQlpbmRleFByZWRzID0gbWFrZV9hbmRzX2ltcGxpY2l0KChFeHBy ICopIGluZGV4UHJlZHMpOworCQlwZnJlZShwcmVkU3RyaW5nKTsKKwl9CisKKwkvKgorCSAqIEJ1 aWxkIHRoZSBpbmRleCBpbmZvcm1hdGlvbiBmb3IgdGhlIG5ldyBpbmRleC4gIE5vdGUgdGhhdCBy ZWJ1aWxkIG9mCisJICogaW5kZXhlcyB3aXRoIGV4Y2x1c2lvbiBjb25zdHJhaW50cyBpcyBub3Qg c3VwcG9ydGVkLCBoZW5jZSB0aGVyZSBpcyBubworCSAqIG5lZWQgdG8gZmlsbCBhbGwgdGhlIGlp X0V4Y2x1c2lvbiogZmllbGRzLgorCSAqLworCW5ld0luZm8gPSBtYWtlSW5kZXhJbmZvKG9sZElu Zm8tPmlpX051bUluZGV4QXR0cnMsCisJCQkJCQkJb2xkSW5mby0+aWlfTnVtSW5kZXhLZXlBdHRy cywKKwkJCQkJCQlTVElSX0FNX09JRCwgLyogc3BlY2lhbCBBTSBmb3IgYXV4IGluZGV4ZXMgKi8K KwkJCQkJCQlpbmRleEV4cHJzLAorCQkJCQkJCWluZGV4UHJlZHMsCisJCQkJCQkJZmFsc2UsCS8q IGF1eCBpbmRleCBhcmUgbm90IHVuaXF1ZSAqLworCQkJCQkJCW9sZEluZm8tPmlpX051bGxzTm90 RGlzdGluY3QsCisJCQkJCQkJZmFsc2UsCS8qIG5vdCByZWFkeSBmb3IgaW5zZXJ0cyAqLworCQkJ CQkJCXRydWUsCisJCQkJCQkJZmFsc2UsCS8qIGF1eCBhcmUgbm90IHN1bW1hcml6aW5nICovCisJ CQkJCQkJZmFsc2UsCS8qIGF1eCBhcmUgbm90IHdpdGhvdXQgb3ZlcmxhcHMgKi8KKwkJCQkJCQl0 cnVlCS8qIGF1eGlsaWFyeSAqLyk7CisKKwkvKgorCSAqIEV4dHJhY3QgdGhlIGxpc3Qgb2YgY29s dW1uIG5hbWVzIGFuZCB0aGUgY29sdW1uIG51bWJlcnMgZm9yIHRoZSBuZXcKKwkgKiBpbmRleCBp bmZvcm1hdGlvbi4gIEFsbCB0aGlzIGluZm9ybWF0aW9uIHdpbGwgYmUgdXNlZCBmb3IgdGhlIGlu ZGV4CisJICogY3JlYXRpb24uCisJICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBvbGRJbmZvLT5p aV9OdW1JbmRleEF0dHJzOyBpKyspCisJeworCQlUdXBsZURlc2MJaW5kZXhUdXBEZXNjID0gUmVs YXRpb25HZXREZXNjcihpbmRleFJlbGF0aW9uKTsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0g VHVwbGVEZXNjQXR0cihpbmRleFR1cERlc2MsIGkpOworCisJCWluZGV4Q29sTmFtZXMgPSBsYXBw ZW5kKGluZGV4Q29sTmFtZXMsIE5hbWVTdHIoYXR0LT5hdHRuYW1lKSk7CisJCW5ld0luZm8tPmlp X0luZGV4QXR0ck51bWJlcnNbaV0gPSBvbGRJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJzW2ldOwor CX0KKworCWF1eE9wY2xhc3NJZHMgPSBwYWxsb2MwKHNpemVvZihPaWQpICogbmV3SW5mby0+aWlf TnVtSW5kZXhBdHRycyk7CisJYXV4Q29sb3B0aW9ucyA9IHBhbGxvYzAoc2l6ZW9mKGludDE2KSAq IG5ld0luZm8tPmlpX051bUluZGV4QXR0cnMpOworCisJLyogRmlsbCB3aXRoICJhbnkgb3BzIiAq LworCWZvciAoaW50IGkgPSAwOyBpIDwgbmV3SW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQor CXsKKwkJYXV4T3BjbGFzc0lkc1tpXSA9IEFOWV9TVElSX09QU19PSUQ7CisJCWF1eENvbG9wdGlv bnNbaV0gPSAwOworCX0KKworCW5ld0luZGV4SWQgPSBpbmRleF9jcmVhdGUoaGVhcFJlbGF0aW9u LAorCQkJCQkJCSAgbmV3TmFtZSwKKwkJCQkJCQkgIEludmFsaWRPaWQsICAgIC8qIGluZGV4UmVs YXRpb25JZCAqLworCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50SW5kZXhSZWxpZCAq LworCQkJCQkJCSAgSW52YWxpZE9pZCwgICAgLyogcGFyZW50Q29uc3RyYWludElkICovCisJCQkJ CQkJICBJbnZhbGlkUmVsRmlsZU51bWJlciwgLyogcmVsRmlsZU51bWJlciAqLworCQkJCQkJCSAg bmV3SW5mbywKKwkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCisJCQkJCQkJICBTVElSX0FNX09JRCwK KwkJCQkJCQkgIHRhYmxlc3BhY2VPaWQsCisJCQkJCQkJICBpbmRleFJlbGF0aW9uLT5yZF9pbmRj b2xsYXRpb24sCisJCQkJCQkJICBhdXhPcGNsYXNzSWRzLAorCQkJCQkJCSAgTlVMTCwKKwkJCQkJ CQkgIGF1eENvbG9wdGlvbnMsCisJCQkJCQkJICBOVUxMLAorCQkJCQkJCSAgKERhdHVtKSAwLAor CQkJCQkJCSAgSU5ERVhfQ1JFQVRFX1NLSVBfQlVJTEQgfCBJTkRFWF9DUkVBVEVfQ09OQ1VSUkVO VCB8IElOREVYX0NSRUFURV9BVVhJTElBUlksCisJCQkJCQkJICAwLAorCQkJCQkJCSAgdHJ1ZSwg LyogYWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0gY2F0YWxvZz8gKi8KKwkJCQkJCQkgIGZhbHNl LCAgICAvKiBpc19pbnRlcm5hbD8gKi8KKwkJCQkJCQkgIE5VTEwsCisJCQkJCQkJICBSRUxQRVJT SVNURU5DRV9VTkxPR0dFRCk7IC8qIGF1eCBpbmRleGVzIHVubG9nZ2VkICovCisKKwkvKiBDbG9z ZSB0aGUgcmVsYXRpb25zIHVzZWQgYW5kIGNsZWFuIHVwICovCisJaW5kZXhfY2xvc2UoaW5kZXhS ZWxhdGlvbiwgTm9Mb2NrKTsKKwlSZWxlYXNlU3lzQ2FjaGUoaW5kZXhUdXBsZSk7CisKKwlyZXR1 cm4gbmV3SW5kZXhJZDsKK30KKwogLyoKICAqIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZAogICoK QEAgLTI0NjcsNyArMjYyOCw4IEBAIEJ1aWxkSW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4KQogCQkJ CQkgICBpbmRleFN0cnVjdC0+aW5kaXNyZWFkeSwKIAkJCQkJICAgZmFsc2UsCiAJCQkJCSAgIGlu ZGV4LT5yZF9pbmRhbS0+YW1zdW1tYXJpemluZywKLQkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlz ZXhjbHVzaW9uICYmIGluZGV4U3RydWN0LT5pbmRpc3VuaXF1ZSk7CisJCQkJCSAgIGluZGV4U3Ry dWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUsCisJCQkJCSAg IGluZGV4LT5yZF9yZWwtPnJlbGFtID09IFNUSVJfQU1fT0lEIC8qIGF1eGlsaWFyeSBpZmYgU1RJ UiAqLyk7CiAKIAkvKiBmaWxsIGluIGF0dHJpYnV0ZSBudW1iZXJzICovCiAJZm9yIChpID0gMDsg aSA8IG51bUF0dHM7IGkrKykKQEAgLTI1MjcsNyArMjY4OSw4IEBAIEJ1aWxkRHVtbXlJbmRleElu Zm8oUmVsYXRpb24gaW5kZXgpCiAJCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc3JlYWR5LAogCQkJ CQkgICBmYWxzZSwKIAkJCQkJICAgaW5kZXgtPnJkX2luZGFtLT5hbXN1bW1hcml6aW5nLAotCQkJ CQkgICBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24gJiYgaW5kZXhTdHJ1Y3QtPmluZGlzdW5p cXVlKTsKKwkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYmIGluZGV4U3RydWN0 LT5pbmRpc3VuaXF1ZSwKKwkJCQkJICAgaW5kZXgtPnJkX3JlbC0+cmVsYW0gPT0gU1RJUl9BTV9P SUQgLyogYXV4aWxpYXJ5IGlmZiBTVElSICovKTsKIAogCS8qIGZpbGwgaW4gYXR0cmlidXRlIG51 bWJlcnMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnVtQXR0czsgaSsrKQpAQCAtMzI3NiwxMiArMzQz OSwyMSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqCiAg KiBXZSBkbyBhIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQgYnkgZmlyc3QgaW5zZXJ0aW5nIHRoZSBj YXRhbG9nIGVudHJ5IGZvciB0aGUKICAqIGluZGV4IHZpYSBpbmRleF9jcmVhdGUoKSwgbWFya2lu ZyBpdCBub3QgaW5kaXNyZWFkeSBhbmQgbm90IGluZGlzdmFsaWQuCisgKiBUaGVuIHdlIGNyZWF0 ZSBzcGVjaWFsIGF1eGlsaWFyeSBpbmRleCB0aGUgc2FtZSB3YXkuIEl0IGJhc2VkIG9uIFNUSVIg QU0uCiAgKiBUaGVuIHdlIGNvbW1pdCBvdXIgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEgbmV3IG9u ZSwgdGhlbiB3ZSB3YWl0IGZvciBhbGwKICAqIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIGhhdmUg YmVlbiBtb2RpZnlpbmcgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4gIE5vdwotICogd2Uga25vdyB0 aGF0IGFueSBzdWJzZXF1ZW50bHktc3RhcnRlZCB0cmFuc2FjdGlvbnMgd2lsbCBzZWUgdGhlIGlu ZGV4IGFuZAorICogd2Uga25vdyB0aGF0IGFueSBzdWJzZXF1ZW50bHktc3RhcnRlZCB0cmFuc2Fj dGlvbnMgd2lsbCBzZWUgaW5kZXhlcyBhbmQKICAqIGhvbm9yIGl0cyBjb25zdHJhaW50cyBvbiBI T1QgdXBkYXRlczsgc28gd2hpbGUgZXhpc3RpbmcgSE9ULWNoYWlucyBtaWdodAogICogYmUgYnJv a2VuIHdpdGggcmVzcGVjdCB0byB0aGUgaW5kZXgsIG5vIGN1cnJlbnRseSBsaXZlIHR1cGxlIHdp bGwgaGF2ZSBhbgotICogaW5jb21wYXRpYmxlIEhPVCB1cGRhdGUgZG9uZSB0byBpdC4gIFdlIG5v dyBidWlsZCB0aGUgaW5kZXggbm9ybWFsbHkgdmlhCisgKiBpbmNvbXBhdGlibGUgSE9UIHVwZGF0 ZSBkb25lIHRvIGl0LgorICoKKyAqIEFmdGVyIHdlIGJ1aWxkIGF1eGlsaWFyeSBpbmRleC4gSXQg aXMgZmFzdCBvcGVyYXRpb24gd2l0aG91dCBhbnkgYWN0dWFsCisgKiB0YWJsZSBzY2FuLiBBcyBy ZXN1bHQsIHdlIGhhdmUgZW1wdHkgU1RJUiBpbmRleC4gV2UgY29tbWl0IHRyYW5zYWN0aW9uIGFu ZAorICogYWdhaW4gd2FpdCBmb3IgYWxsIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIGhhdmUgYmVl biBtb2RpZnlpbmcgdGhlIHRhYmxlCisgKiB0byB0ZXJtaW5hdGUuIEF0IHRoYXQgbW9tZW50IGFs bCBuZXcgdHVwbGVzIGFyZSBnb2luZyB0byBiZSBpbnNlcnRlZCBpbnRvCisgKiBhdXhpbGlhcnkg aW5kZXguCisgKgorICogV2Ugbm93IGJ1aWxkIHRoZSBpbmRleCBub3JtYWxseSB2aWEKICAqIGlu ZGV4X2J1aWxkKCksIHdoaWxlIGhvbGRpbmcgYSB3ZWFrIGxvY2sgdGhhdCBhbGxvd3MgY29uY3Vy cmVudAogICogaW5zZXJ0L3VwZGF0ZS9kZWxldGUuICBBbHNvLCB3ZSBpbmRleCBvbmx5IHR1cGxl cyB0aGF0IGFyZSB2YWxpZAogICogYXMgb2YgdGhlIHN0YXJ0IG9mIHRoZSBzY2FuIChzZWUgdGFi bGVfaW5kZXhfYnVpbGRfc2NhbiksIHdoZXJlYXMgYSBub3JtYWwKQEAgLTMyOTEsMTggKzM0NjMs MjEgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKiBib2d1 cyB1bmlxdWUtaW5kZXggZmFpbHVyZXMgZHVlIHRvIGNvbmN1cnJlbnQgVVBEQVRFcyAod2UgbWln aHQgc2VlCiAgKiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIHNhbWUgcm93IGFzIGJlaW5nIHZh bGlkIHdoZW4gd2UgcGFzcyBvdmVyIHRoZW0sCiAgKiBpZiB3ZSB1c2VkIEhlYXBUdXBsZVNhdGlz Zmllc1ZhY3V1bSkuICBUaGlzIGxlYXZlcyB1cyB3aXRoIGFuIGluZGV4IHRoYXQKLSAqIGRvZXMg bm90IGNvbnRhaW4gYW55IHR1cGxlcyBhZGRlZCB0byB0aGUgdGFibGUgd2hpbGUgd2UgYnVpbHQg dGhlIGluZGV4LgorICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0 YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXgKKyAqICh1dCB0aGVzZSB0dXBsZXMgY29udGFp bmVkIGluIGF1eGlsaWFyeSBpbmRleCkuCiAgKgogICogRnVydGhlcm1vcmUsIHdlIHNldCBTT19S RVNFVF9TTkFQU0hPVCBmb3IgdGhlIHNjYW4sIHdoaWNoIGNhdXNlcyBuZXcKICAqIHNuYXBzaG90 IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFzb24gIGZvciB0aGF0 IGlzIHRvCiAgKiBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgogICoKICAqIE5l eHQsIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAiaW5kaXN2 YWxpZCIpIGFuZAotICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEg dGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKKyAqIGNvbW1pdCB0aGUgdGhpcmQgdHJhbnNh Y3Rpb24gYW5kIHN0YXJ0IGEgZm91cnRoLiAgQWdhaW4gd2Ugd2FpdCBmb3IgYWxsCiAgKiB0cmFu c2FjdGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0YWJsZSB0byB0ZXJt aW5hdGUuICBOb3cKICAqIHdlIGtub3cgdGhhdCBhbnkgc3Vic2VxdWVudGx5LXN0YXJ0ZWQgdHJh bnNhY3Rpb25zIHdpbGwgc2VlIHRoZSBpbmRleCBhbmQKLSAqIGluc2VydCB0aGVpciBuZXcgdHVw bGVzIGludG8gaXQuICBXZSB0aGVuIHRha2UgYSBuZXcgcmVmZXJlbmNlIHNuYXBzaG90Ci0gKiB3 aGljaCBpcyBwYXNzZWQgdG8gdmFsaWRhdGVfaW5kZXgoKS4gIEFueSB0dXBsZXMgdGhhdCBhcmUg dmFsaWQgYWNjb3JkaW5nCisgKiBpbnNlcnQgdGhlaXIgbmV3IHR1cGxlcyBpbnRvIGl0LiBBdCB0 aGUgc2FtZSBtb21lbnQgd2UgY2xlYXIgImluZGlzcmVhZHkiIGZvcgorICogYXV4aWxpYXJ5IGlu ZGV4LCBzaW5jZSBpdCBpcyBubyBtb3JlIHJlcXVpcmVkLgorICoKKyAqIFdlIHRoZW4gdGFrZSBh IG5ldyByZWZlcmVuY2Ugc25hcHNob3QsIGFueSB0dXBsZXMgdGhhdCBhcmUgdmFsaWQgYWNjb3Jk aW5nCiAgKiB0byB0aGlzIHNuYXAsIGJ1dCBhcmUgbm90IGluIHRoZSBpbmRleCwgbXVzdCBiZSBh ZGRlZCB0byB0aGUgaW5kZXguCiAgKiAoQW55IHR1cGxlcyBjb21taXR0ZWQgbGl2ZSBhZnRlciB0 aGUgc25hcCB3aWxsIGJlIGluc2VydGVkIGludG8gdGhlCiAgKiBpbmRleCBieSB0aGVpciBvcmln aW5hdGluZyB0cmFuc2FjdGlvbi4gIEFueSB0dXBsZXMgY29tbWl0dGVkIGRlYWQgYmVmb3JlCkBA IC0zMzEwLDEyICszNDg1LDE0IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJl bGF0aW9uLAogICogdGhhdCBtaWdodCBjYXJlIGFib3V0IHRoZW0gYmVmb3JlIHdlIG1hcmsgdGhl IGluZGV4IHZhbGlkLikKICAqCiAgKiB2YWxpZGF0ZV9pbmRleCgpIHdvcmtzIGJ5IGZpcnN0IGdh dGhlcmluZyBhbGwgdGhlIFRJRHMgY3VycmVudGx5IGluIHRoZQotICogaW5kZXgsIHVzaW5nIGEg YnVsa2RlbGV0ZSBjYWxsYmFjayB0aGF0IGp1c3Qgc3RvcmVzIHRoZSBUSURzIGFuZCBkb2Vzbid0 CisgKiBpbmRleGVzLCB1c2luZyBhIGJ1bGtkZWxldGUgY2FsbGJhY2sgdGhhdCBqdXN0IHN0b3Jl cyB0aGUgVElEcyBhbmQgZG9lc24ndAogICogZXZlciBzYXkgImRlbGV0ZSBpdCIuICAoVGhpcyBz aG91bGQgYmUgZmFzdGVyIHRoYW4gYSBwbGFpbiBpbmRleHNjYW47CiAgKiBhbHNvLCBub3QgYWxs IGluZGV4IEFNcyBzdXBwb3J0IGZ1bGwtaW5kZXggaW5kZXhzY2FuLikgIFRoZW4gd2Ugc29ydCB0 aGUKLSAqIFRJRHMsIGFuZCBmaW5hbGx5IHNjYW4gdGhlIHRhYmxlIGRvaW5nIGEgIm1lcmdlIGpv aW4iIGFnYWluc3QgdGhlIFRJRCBsaXN0Ci0gKiB0byBzZWUgd2hpY2ggdHVwbGVzIGFyZSBtaXNz aW5nIGZyb20gdGhlIGluZGV4LiAgVGh1cyB3ZSB3aWxsIGVuc3VyZSB0aGF0Ci0gKiBhbGwgdHVw bGVzIHZhbGlkIGFjY29yZGluZyB0byB0aGUgcmVmZXJlbmNlIHNuYXBzaG90IGFyZSBpbiB0aGUg aW5kZXguCisgKiBUSURzIG9mIGJvdGggYXV4aWxpYXJ5IGFuZCB0YXJnZXQgaW5kZXhlcywgYW5k IGRvaW5nIGEgIm1lcmdlIGpvaW4iIGFnYWluc3QKKyAqIHRoZSBUSUQgbGlzdHMgdG8gc2VlIHdo aWNoIHR1cGxlcyBmcm9tIGF1eGlsaWFyeSBpbmRleCBhcmUgbWlzc2luZyBmcm9tIHRoZQorICog dGFyZ2V0IGluZGV4LiAgVGh1cyB3ZSB3aWxsIGVuc3VyZSB0aGF0IGFsbCB0dXBsZXMgdmFsaWQg YWNjb3JkaW5nIHRvIHRoZQorICogcmVmZXJlbmNlIHNuYXBzaG90IGFyZSBpbiB0aGUgaW5kZXgu IE5vdGljZSB3ZSBuZWVkIHRvIGRvIGJ1bGtkZWxldGUgaW4gdGhlCisgKiBwYXJ0aWN1bGFyIG9y ZGVyOiBhdXhpbGlhcnkgZmlyc3QsIHRhcmdldCBsYXN0LgogICoKICAqIEJ1aWxkaW5nIGEgdW5p cXVlIGluZGV4IHRoaXMgd2F5IGlzIHRyaWNreTogd2UgbWlnaHQgdHJ5IHRvIGluc2VydCBhCiAg KiB0dXBsZSB0aGF0IGlzIGFscmVhZHkgZGVhZCBvciBpcyBpbiBwcm9jZXNzIG9mIGJlaW5nIGRl bGV0ZWQsIGFuZCB3ZQpAQCAtMzMzMywyMiArMzUxMCwyNCBAQCBJbmRleENoZWNrRXhjbHVzaW9u KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIG5vdCBpbmRleCkuICBUaGVuIHdlIG1hcmsgdGhl IGluZGV4ICJpbmRpc3ZhbGlkIiBhbmQgY29tbWl0LiAgU3Vic2VxdWVudAogICogdHJhbnNhY3Rp b25zIHdpbGwgYmUgYWJsZSB0byB1c2UgaXQgZm9yIHF1ZXJpZXMuCiAgKgotICogRG9pbmcgdHdv IGZ1bGwgdGFibGUgc2NhbnMgaXMgYSBicnV0ZS1mb3JjZSBzdHJhdGVneS4gIFdlIGNvdWxkIHRy eSB0byBiZQotICogY2xldmVyZXIsIGVnIHN0b3JpbmcgbmV3IHR1cGxlcyBpbiBhIHNwZWNpYWwg YXJlYSBvZiB0aGUgdGFibGUgKHBlcmhhcHMKLSAqIG1ha2luZyB0aGUgdGFibGUgYXBwZW5kLW9u bHkgYnkgc2V0dGluZyB1c2VfZnNtKS4gIEhvd2V2ZXIgdGhhdCB3b3VsZAotICogYWRkIHlldCBt b3JlIGxvY2tpbmcgaXNzdWVzLgorICogQWxzbywgc29tZSBhY3Rpb25zIHRvIGNvbmN1cnJlbnQg ZHJvcCB0aGUgYXV4aWxpYXJ5IGluZGV4IGFyZSBwZXJmb3JtZWQuCiAgKi8KLXZvaWQKLXZhbGlk YXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFwc2hvdCkKK1Ry YW5zYWN0aW9uSWQKK3ZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQg YXV4SW5kZXhJZCkKIHsKIAlSZWxhdGlvbgloZWFwUmVsYXRpb24sCi0JCQkJaW5kZXhSZWxhdGlv bjsKKwkJCQlpbmRleFJlbGF0aW9uLAorCQkJCWF1eEluZGV4UmVsYXRpb247CiAJSW5kZXhJbmZv ICAqaW5kZXhJbmZvOwotCUluZGV4VmFjdXVtSW5mbyBpdmluZm87Ci0JVmFsaWRhdGVJbmRleFN0 YXRlIHN0YXRlOworCVRyYW5zYWN0aW9uSWQgbGltaXRYbWluOworCUluZGV4VmFjdXVtSW5mbyBp dmluZm8sIGF1eGl2aW5mbzsKKwlWYWxpZGF0ZUluZGV4U3RhdGUgc3RhdGUsIGF1eFN0YXRlOwog CU9pZAkJCXNhdmVfdXNlcmlkOwogCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJc2F2 ZV9uZXN0bGV2ZWw7CisJLyogVXNlIDgwJSBvZiBtYWludGVuYW5jZV93b3JrX21lbSB0byB0YXJn ZXQgaW5kZXggc29ydGluZyBhbmQKKwkgKiByZXN0IGZvciBhdXhpbGlhcnkgKi8KKwlpbnQ2NAkJ bWFpbl93b3JrX21lbV9wYXJ0ID0gKGludDY0KSBtYWludGVuYW5jZV93b3JrX21lbSAqIDggLyAx MDsKIAogCXsKIAkJY29uc3QgaW50CXByb2dyZXNzX2luZGV4W10gPSB7CkBAIC0zMzgxLDEzICsz NTYwLDE4IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hv dCBzbmFwc2hvdCkKIAlSZXN0cmljdFNlYXJjaFBhdGgoKTsKIAogCWluZGV4UmVsYXRpb24gPSBp bmRleF9vcGVuKGluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCWF1eEluZGV4UmVsYXRpb24g PSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJLyoKIAkgKiBG ZXRjaCBpbmZvIG5lZWRlZCBmb3IgaW5kZXhfaW5zZXJ0LiAgKFlvdSBtaWdodCB0aGluayB0aGlz IHNob3VsZCBiZQogCSAqIHBhc3NlZCBpbiBmcm9tIERlZmluZUluZGV4LCBidXQgaXRzIGNvcHkg aXMgbG9uZyBnb25lIGR1ZSB0byBoYXZpbmcKIAkgKiBiZWVuIGJ1aWx0IGluIGEgcHJldmlvdXMg dHJhbnNhY3Rpb24uKQorCSAqCisJICogV2UgbWlnaHQgbmVlZCBzbmFwc2hvdCBmb3IgaW5kZXgg ZXhwcmVzc2lvbnMgb3IgcHJlZGljYXRlcy4KIAkgKi8KKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0 VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAlpbmRleEluZm8gPSBCdWlsZEluZGV4SW5mbyhpbmRl eFJlbGF0aW9uKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJLyogbWFyayBidWlsZCBpcyBj b25jdXJyZW50IGp1c3QgZm9yIGNvbnNpc3RlbmN5ICovCiAJaW5kZXhJbmZvLT5paV9Db25jdXJy ZW50ID0gdHJ1ZTsKQEAgLTM0MDUsMTUgKzM1ODksMzAgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhl YXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCWl2aW5mby5zdHJhdGVneSA9 IE5VTEw7CiAJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gdHJ1ZTsKIAorCS8qCisJICogQ29weSBh bGwgaW5mbyB0byBhdXhpbGlhcnkgaW5mbywgY2hhbmdpbmcgb25seSByZWxhdGlvbi4KKwkgKi8K KwlhdXhpdmluZm8gPSBpdmluZm87CisJYXV4aXZpbmZvLmluZGV4ID0gYXV4SW5kZXhSZWxhdGlv bjsKKwogCS8qCiAJICogRW5jb2RlIFRJRHMgYXMgaW50OCB2YWx1ZXMgZm9yIHRoZSBzb3J0LCBy YXRoZXIgdGhhbiBkaXJlY3RseSBzb3J0aW5nCiAJICogaXRlbSBwb2ludGVycy4gIFRoaXMgY2Fu IGJlIHNpZ25pZmljYW50bHkgZmFzdGVyLCBwcmltYXJpbHkgYmVjYXVzZSBUSUQKIAkgKiBpcyBh IHBhc3MtYnktcmVmZXJlbmNlIHR5cGUgb24gYWxsIHBsYXRmb3Jtcywgd2hlcmVhcyBpbnQ4IGlz CiAJICogcGFzcy1ieS12YWx1ZSBvbiBtb3N0IHBsYXRmb3Jtcy4KIAkgKi8KKwlhdXhTdGF0ZS50 dXBsZXNvcnQgPSB0dXBsZXNvcnRfYmVnaW5fZGF0dW0oSU5UOE9JRCwgSW50OExlc3NPcGVyYXRv ciwKKwkJCQkJCQkJCQkgICBJbnZhbGlkT2lkLCBmYWxzZSwKKwkJCQkJCQkJCQkgICBtYWludGVu YW5jZV93b3JrX21lbSAtIChpbnQpIG1haW5fd29ya19tZW1fcGFydCwKKwkJCQkJCQkJCQkgICBO VUxMLCBUVVBMRVNPUlRfTk9ORSk7CisJYXV4U3RhdGUuaHR1cHMgPSBhdXhTdGF0ZS5pdHVwcyA9 IGF1eFN0YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOworCisJKHZvaWQpIGluZGV4X2J1bGtfZGVsZXRl KCZhdXhpdmluZm8sIE5VTEwsCisJCQkJCQkJIHZhbGlkYXRlX2luZGV4X2NhbGxiYWNrLCAmYXV4 U3RhdGUpOworCiAJc3RhdGUudHVwbGVzb3J0ID0gdHVwbGVzb3J0X2JlZ2luX2RhdHVtKElOVDhP SUQsIEludDhMZXNzT3BlcmF0b3IsCiAJCQkJCQkJCQkJCUludmFsaWRPaWQsIGZhbHNlLAotCQkJ CQkJCQkJCQltYWludGVuYW5jZV93b3JrX21lbSwKKwkJCQkJCQkJCQkJKGludCkgbWFpbl93b3Jr X21lbV9wYXJ0LAogCQkJCQkJCQkJCQlOVUxMLCBUVVBMRVNPUlRfTk9ORSk7CiAJc3RhdGUuaHR1 cHMgPSBzdGF0ZS5pdHVwcyA9IHN0YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwogCkBAIC0zNDM2LDI3 ICszNjM1LDMzIEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFw c2hvdCBzbmFwc2hvdCkKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSgzLCBw cm9ncmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7CiAJfQogCXR1cGxlc29ydF9wZXJmb3Jtc29y dChzdGF0ZS50dXBsZXNvcnQpOworCXR1cGxlc29ydF9wZXJmb3Jtc29ydChhdXhTdGF0ZS50dXBs ZXNvcnQpOworCisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghVHJhbnNh Y3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgotCSAqIE5vdyBzY2FuIHRoZSBo ZWFwIGFuZCAibWVyZ2UiIGl0IHdpdGggdGhlIGluZGV4CisJICogTm93IG1lcmdlIGJvdGggaW5k ZXhlcwogCSAqLwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX1RB QkxFU0NBTik7Ci0JdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbihoZWFwUmVsYXRpb24sCi0JCQkJ CQkJICBpbmRleFJlbGF0aW9uLAotCQkJCQkJCSAgaW5kZXhJbmZvLAotCQkJCQkJCSAgc25hcHNo b3QsCi0JCQkJCQkJICAmc3RhdGUpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1ZBTElEQVRFX0lEWE1FUkdFKTsKKwlsaW1pdFhtaW4gPSB0YWJsZV9pbmRleF92YWxpZGF0ZV9z Y2FuKGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkgIGluZGV4UmVsYXRpb24sCisJCQkJCQkJCQkJ ICBpbmRleEluZm8sCisJCQkJCQkJCQkJICAmc3RhdGUsCisJCQkJCQkJCQkJICAmYXV4U3RhdGUp OwogCi0JLyogRG9uZSB3aXRoIHR1cGxlc29ydCBvYmplY3QgKi8KKwkvKiBEb25lIHdpdGggdHVw bGVzb3J0IG9iamVjdHMgKi8KIAl0dXBsZXNvcnRfZW5kKHN0YXRlLnR1cGxlc29ydCk7CisJdHVw bGVzb3J0X2VuZChhdXhTdGF0ZS50dXBsZXNvcnQpOwogCiAJLyogTWFrZSBzdXJlIHRvIHJlbGVh c2UgcmVzb3VyY2VzIGNhY2hlZCBpbiBpbmRleEluZm8gKGlmIG5lZWRlZCkuICovCiAJaW5kZXhf aW5zZXJ0X2NsZWFudXAoaW5kZXhSZWxhdGlvbiwgaW5kZXhJbmZvKTsKIAogCWVsb2coREVCVUcy LAotCQkgInZhbGlkYXRlX2luZGV4IGZvdW5kICUuMGYgaGVhcCB0dXBsZXMsICUuMGYgaW5kZXgg dHVwbGVzOyBpbnNlcnRlZCAlLjBmIG1pc3NpbmcgdHVwbGVzIiwKLQkJIHN0YXRlLmh0dXBzLCBz dGF0ZS5pdHVwcywgc3RhdGUudHVwc19pbnNlcnRlZCk7CisJCSAidmFsaWRhdGVfaW5kZXggZmV0 Y2hlZCAlLjBmIGhlYXAgdHVwbGVzLCAlLjBmIGluZGV4IHR1cGxlczsiCisJCQkJCQkiICUuMGYg YXV4IGluZGV4IHR1cGxlczsgaW5zZXJ0ZWQgJS4wZiBtaXNzaW5nIHR1cGxlcyIsCisJCSBzdGF0 ZS5odHVwcywgc3RhdGUuaXR1cHMsIGF1eFN0YXRlLml0dXBzLCBzdGF0ZS50dXBzX2luc2VydGVk KTsKIAogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVu Y3Rpb25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CkBAIC0zNDY1 LDggKzM2NzAsMTIgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNu YXBzaG90IHNuYXBzaG90KQogCVNldFVzZXJJZEFuZFNlY0NvbnRleHQoc2F2ZV91c2VyaWQsIHNh dmVfc2VjX2NvbnRleHQpOwogCiAJLyogQ2xvc2UgcmVscywgYnV0IGtlZXAgbG9ja3MgKi8KKwlp bmRleF9jbG9zZShhdXhJbmRleFJlbGF0aW9uLCBOb0xvY2spOwogCWluZGV4X2Nsb3NlKGluZGV4 UmVsYXRpb24sIE5vTG9jayk7CiAJdGFibGVfY2xvc2UoaGVhcFJlbGF0aW9uLCBOb0xvY2spOwor CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlyZXR1cm4g bGltaXRYbWluOwogfQogCiAvKgpAQCAtMzUyNSw2ICszNzM0LDExIEBAIGluZGV4X3NldF9zdGF0 ZV9mbGFncyhPaWQgaW5kZXhJZCwgSW5kZXhTdGF0ZUZsYWdzQWN0aW9uIGFjdGlvbikKIAkJCUFz c2VydCghaW5kZXhGb3JtLT5pbmRpc3ZhbGlkKTsKIAkJCWluZGV4Rm9ybS0+aW5kaXN2YWxpZCA9 IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBJTkRFWF9EUk9QX0NMRUFSX1JFQURZOgorCQkJLyog Q2xlYXIgaW5kaXNyZWFkeSBkdXJpbmcgYSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIHNlcXVl bmNlICovCisJCQlBc3NlcnQoIWluZGV4Rm9ybS0+aW5kaXN2YWxpZCk7CisJCQlpbmRleEZvcm0t PmluZGlzcmVhZHkgPSBmYWxzZTsKKwkJCWJyZWFrOwogCQljYXNlIElOREVYX0RST1BfQ0xFQVJf VkFMSUQ6CiAKIAkJCS8qCkBAIC0zNzk2LDYgKzQwMTAsMTMgQEAgcmVpbmRleF9pbmRleChjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIGluZGV4SWQsCiAJCWluZGV4SW5mby0+aWlfRXhjbHVz aW9uU3RyYXRzID0gTlVMTDsKIAl9CiAKKwkvKiBBdXhpbGlhcnkgaW5kZXhlcyBhcmUgbm90IGFs bG93ZWQgdG8gYmUgcmVidWlsdCAqLworCWlmIChpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCSBlcnJtc2coInJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXNcIiBub3Qgc3Vw cG9ydGVkIiwKKwkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaVJlbCkpKSk7CisKIAkvKiBT dXBwcmVzcyB1c2Ugb2YgdGhlIHRhcmdldCBpbmRleCB3aGlsZSByZWJ1aWxkaW5nIGl0ICovCiAJ U2V0UmVpbmRleFByb2Nlc3NpbmcoaGVhcElkLCBpbmRleElkKTsKIApAQCAtNDAzOCw2ICs0MjU5 LDcgQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGlk LCBpbnQgZmxhZ3MsCiAJewogCQlPaWQJCQlpbmRleE9pZCA9IGxmaXJzdF9vaWQoaW5kZXhJZCk7 CiAJCU9pZAkJCWluZGV4TmFtZXNwYWNlSWQgPSBnZXRfcmVsX25hbWVzcGFjZShpbmRleE9pZCk7 CisJCU9pZAkJCWluZGV4QW0gPSBnZXRfcmVsX3JlbGFtKGluZGV4T2lkKTsKIAogCQkvKgogCQkg KiBTa2lwIGFueSBpbnZhbGlkIGluZGV4ZXMgb24gYSBUT0FTVCB0YWJsZS4gIFRoZXNlIGNhbiBv bmx5IGJlCkBAIC00MDYzLDYgKzQyODUsMTggQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWlu ZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiAJCQljb250aW51ZTsKIAkJfQog CisJCWlmIChpbmRleEFtID09IFNUSVJfQU1fT0lEKQorCQl7CisJCQllcmVwb3J0KFdBUk5JTkcs CisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVy cm1zZygic2tpcHBpbmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwKKwkJ CQkJCQlnZXRfbmFtZXNwYWNlX25hbWUoaW5kZXhOYW1lc3BhY2VJZCksCisJCQkJCQkJZ2V0X3Jl bF9uYW1lKGluZGV4T2lkKSkpKTsKKwkJCWlmIChmbGFncyAmIFJFSU5ERVhfUkVMX1NVUFBSRVNT X0lOREVYX1VTRSkKKwkJCQlSZW1vdmVSZWluZGV4UGVuZGluZyhpbmRleE9pZCk7CisJCQljb250 aW51ZTsKKwkJfQorCiAJCXJlaW5kZXhfaW5kZXgoc3RtdCwgaW5kZXhPaWQsICEoZmxhZ3MgJiBS RUlOREVYX1JFTF9DSEVDS19DT05TVFJBSU5UUyksCiAJCQkJCSAgcGVyc2lzdGVuY2UsIHBhcmFt cyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA3YTU5NWM4NGRiOS4u MGU0ZDk3N2RiODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdz LnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEyNjUs MTYgKzEyNjUsMTcgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9wcm9ncmVzc19jcmVhdGVfaW5kZXgg QVMKICAgICAgICAgICAgICAgICAgICAgICBFTkQgQVMgY29tbWFuZCwKICAgICAgICAgQ0FTRSBT LnBhcmFtMTAgV0hFTiAwIFRIRU4gJ2luaXRpYWxpemluZycKICAgICAgICAgICAgICAgICAgICAg ICAgV0hFTiAxIFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMgYmVmb3JlIGJ1aWxkJwotICAgICAg ICAgICAgICAgICAgICAgICBXSEVOIDIgVEhFTiAnYnVpbGRpbmcgaW5kZXgnIHx8CisgICAgICAg ICAgICAgICAgICAgICAgIFdIRU4gMiBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBh dXhpbGlhcnkgaW5kZXgnCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMyBUSEVOICdidWls ZGluZyBpbmRleCcgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPQUxFU0NFKCgnOiAn IHx8IHBnX2luZGV4YW1fcHJvZ3Jlc3NfcGhhc2VuYW1lKFMucGFyYW05OjpvaWQsIFMucGFyYW0x MSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCi0gICAgICAgICAg ICAgICAgICAgICAgIFdIRU4gMyBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9yZSB2YWxp ZGF0aW9uJwotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDQgVEhFTiAnaW5kZXggdmFsaWRh dGlvbjogc2Nhbm5pbmcgaW5kZXgnCi0gICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNSBUSEVO ICdpbmRleCB2YWxpZGF0aW9uOiBzb3J0aW5nIHR1cGxlcycKLSAgICAgICAgICAgICAgICAgICAg ICAgV0hFTiA2IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNjYW5uaW5nIHRhYmxlJwotICAgICAg ICAgICAgICAgICAgICAgICBXSEVOIDcgVEhFTiAnd2FpdGluZyBmb3Igb2xkIHNuYXBzaG90cycK LSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA4IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMg YmVmb3JlIG1hcmtpbmcgZGVhZCcKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA5IFRIRU4g J3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRyb3BwaW5nJworICAgICAgICAgICAgICAgICAg ICAgICBXSEVOIDQgVEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbicK KyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA1IFRIRU4gJ2luZGV4IHZhbGlkYXRpb246IHNj YW5uaW5nIGluZGV4JworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDYgVEhFTiAnaW5kZXgg dmFsaWRhdGlvbjogc29ydGluZyB0dXBsZXMnCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4g NyBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBtZXJnaW5nIGluZGV4ZXMnCisgICAgICAgICAgICAg ICAgICAgICAgIFdIRU4gOCBUSEVOICd3YWl0aW5nIGZvciBvbGQgc25hcHNob3RzJworICAgICAg ICAgICAgICAgICAgICAgICBXSEVOIDkgVEhFTiAnd2FpdGluZyBmb3IgcmVhZGVycyBiZWZvcmUg bWFya2luZyBkZWFkJworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDEwIFRIRU4gJ3dhaXRp bmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRyb3BwaW5nJwogICAgICAgICAgICAgICAgICAgICAgICBF TkQgYXMgcGhhc2UsCiAgICAgICAgIFMucGFyYW00IEFTIGxvY2tlcnNfdG90YWwsCiAgICAgICAg IFMucGFyYW01IEFTIGxvY2tlcnNfZG9uZSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvdG9hc3RpbmcuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9hc3RpbmcuYwppbmRleCA4NzRh OGZjODlhZC4uMGVlMmZkNWU3ZGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvdG9h c3RpbmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKQEAgLTMyNSw3ICsz MjUsOCBAQCBjcmVhdGVfdG9hc3RfdGFibGUoUmVsYXRpb24gcmVsLCBPaWQgdG9hc3RPaWQsIE9p ZCB0b2FzdEluZGV4T2lkLAogCQkJCSBCVFJFRV9BTV9PSUQsCiAJCQkJIHJlbC0+cmRfcmVsLT5y ZWx0YWJsZXNwYWNlLAogCQkJCSBjb2xsYXRpb25JZHMsIG9wY2xhc3NJZHMsIE5VTEwsIGNvbG9w dGlvbnMsIE5VTEwsIChEYXR1bSkgMCwKLQkJCQkgSU5ERVhfQ1JFQVRFX0lTX1BSSU1BUlksIDAs IHRydWUsIHRydWUsIE5VTEwpOworCQkJCSBJTkRFWF9DUkVBVEVfSVNfUFJJTUFSWSwgMCwgdHJ1 ZSwgdHJ1ZSwgTlVMTCwKKwkJCQkgdG9hc3RfcmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlKTsK IAogCXRhYmxlX2Nsb3NlKHRvYXN0X3JlbCwgTm9Mb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYwppbmRleCA1OTIxZGNmNjhhMS4uY2QwZDYzZGVkODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jCkBAIC0xODMsNiArMTgzLDcgQEAgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElk LAogCQkJCQkgYm9vbCBpc1dpdGhvdXRPdmVybGFwcykKIHsKIAlib29sCQlpc2NvbnN0cmFpbnQ7 CisJYm9vbAkJaXNhdXhpbGlhcnk7CiAJT2lkCQkgICAqdHlwZUlkczsKIAlPaWQJCSAgICpjb2xs YXRpb25JZHM7CiAJT2lkCQkgICAqb3BjbGFzc0lkczsKQEAgLTIzMyw2ICsyMzQsNyBAQCBDaGVj a0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAKIAlhbWNhbm9yZGVyID0gYW1Sb3V0aW5lLT5h bWNhbm9yZGVyOwogCWFtc3VtbWFyaXppbmcgPSBhbVJvdXRpbmUtPmFtc3VtbWFyaXppbmc7CisJ aXNhdXhpbGlhcnkgPSBhY2Nlc3NNZXRob2RJZCA9PSBTVElSX0FNX09JRDsKIAogCS8qCiAJICog Q29tcHV0ZSB0aGUgb3BlcmF0b3IgY2xhc3NlcywgY29sbGF0aW9ucywgYW5kIGV4Y2x1c2lvbiBv cGVyYXRvcnMgZm9yCkBAIC0yNDQsNyArMjQ2LDggQEAgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lk IG9sZElkLAogCSAqLwogCWluZGV4SW5mbyA9IG1ha2VJbmRleEluZm8obnVtYmVyT2ZBdHRyaWJ1 dGVzLCBudW1iZXJPZkF0dHJpYnV0ZXMsCiAJCQkJCQkJICBhY2Nlc3NNZXRob2RJZCwgTklMLCBO SUwsIGZhbHNlLCBmYWxzZSwKLQkJCQkJCQkgIGZhbHNlLCBmYWxzZSwgYW1zdW1tYXJpemluZywg aXNXaXRob3V0T3ZlcmxhcHMpOworCQkJCQkJCSAgZmFsc2UsIGZhbHNlLCBhbXN1bW1hcml6aW5n LAorCQkJCQkJCSAgaXNXaXRob3V0T3ZlcmxhcHMsIGlzYXV4aWxpYXJ5KTsKIAl0eXBlSWRzID0g cGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKIAljb2xsYXRpb25JZHMgPSBw YWxsb2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwogCW9wY2xhc3NJZHMgPSBwYWxs b2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwpAQCAtNTU0LDYgKzU1Nyw3IEBAIERl ZmluZUluZGV4KE9pZCB0YWJsZUlkLAogewogCWJvb2wJCWNvbmN1cnJlbnQ7CiAJY2hhcgkgICAq aW5kZXhSZWxhdGlvbk5hbWU7CisJY2hhcgkgICAqYXV4SW5kZXhSZWxhdGlvbk5hbWUgPSBOVUxM OwogCWNoYXIJICAgKmFjY2Vzc01ldGhvZE5hbWU7CiAJT2lkCQkgICAqdHlwZUlkczsKIAlPaWQJ CSAgICpjb2xsYXRpb25JZHM7CkBAIC01NjMsNiArNTY3LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRh YmxlSWQsCiAJT2lkCQkJbmFtZXNwYWNlSWQ7CiAJT2lkCQkJdGFibGVzcGFjZUlkOwogCU9pZAkJ CWNyZWF0ZWRDb25zdHJhaW50SWQgPSBJbnZhbGlkT2lkOworCU9pZAkJCWF1eEluZGV4UmVsYXRp b25JZCA9IEludmFsaWRPaWQ7CiAJTGlzdAkgICAqaW5kZXhDb2xOYW1lczsKIAlMaXN0CSAgICph bGxJbmRleFBhcmFtczsKIAlSZWxhdGlvbglyZWw7CkBAIC01ODQsMTAgKzU4OSwxMCBAQCBEZWZp bmVJbmRleChPaWQgdGFibGVJZCwKIAlpbnQJCQludW1iZXJPZktleUF0dHJpYnV0ZXM7CiAJVHJh bnNhY3Rpb25JZCBsaW1pdFhtaW47CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCU9iamVjdEFk ZHJlc3MgYXV4QWRkcmVzczsKIAlMb2NrUmVsSWQJaGVhcHJlbGlkOwogCUxPQ0tUQUcJCWhlYXBs b2NrdGFnOwogCUxPQ0tNT0RFCWxvY2ttb2RlOwotCVNuYXBzaG90CXNuYXBzaG90OwogCU9pZAkJ CXJvb3Rfc2F2ZV91c2VyaWQ7CiAJaW50CQkJcm9vdF9zYXZlX3NlY19jb250ZXh0OwogCWludAkJ CXJvb3Rfc2F2ZV9uZXN0bGV2ZWw7CkBAIC04MzQsNiArODM5LDE1IEBAIERlZmluZUluZGV4KE9p ZCB0YWJsZUlkLAogCQkJCQkJCQkJCQlzdG10LT5leGNsdWRlT3BOYW1lcywKIAkJCQkJCQkJCQkJ c3RtdC0+cHJpbWFyeSwKIAkJCQkJCQkJCQkJc3RtdC0+aXNjb25zdHJhaW50KTsKKwkvKgorCSAq IFNlbGVjdCBuYW1lIGZvciBhdXhpbGlhcnkgaW5kZXgKKwkgKi8KKwlpZiAoY29uY3VycmVudCkK KwkJYXV4SW5kZXhSZWxhdGlvbk5hbWUgPSBDaG9vc2VSZWxhdGlvbk5hbWUoaW5kZXhSZWxhdGlv bk5hbWUsCisJCQkJCQkJCQkJCQkgIE5VTEwsCisJCQkJCQkJCQkJCQkgICJjY2F1eCIsCisJCQkJ CQkJCQkJCQkgIG5hbWVzcGFjZUlkLAorCQkJCQkJCQkJCQkJICBmYWxzZSk7CiAKIAkvKgogCSAq IGxvb2sgdXAgdGhlIGFjY2VzcyBtZXRob2QsIHZlcmlmeSBpdCBjYW4gaGFuZGxlIHRoZSByZXF1 ZXN0ZWQgZmVhdHVyZXMKQEAgLTkyOSw3ICs5NDMsOCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJ ZCwKIAkJCQkJCQkgICFjb25jdXJyZW50LAogCQkJCQkJCSAgY29uY3VycmVudCwKIAkJCQkJCQkg IGFtaXNzdW1tYXJpemluZywKLQkJCQkJCQkgIHN0bXQtPmlzd2l0aG91dG92ZXJsYXBzKTsKKwkJ CQkJCQkgIHN0bXQtPmlzd2l0aG91dG92ZXJsYXBzLAorCQkJCQkJCSAgZmFsc2UpOwogCiAJdHlw ZUlkcyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CiAJY29sbGF0aW9u SWRzID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKQEAgLTEyMjcsNyAr MTI0Miw4IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkgY29sb3B0aW9ucywgTlVM TCwgcmVsb3B0aW9ucywKIAkJCQkJIGZsYWdzLCBjb25zdHJfZmxhZ3MsCiAJCQkJCSBhbGxvd1N5 c3RlbVRhYmxlTW9kcywgIWNoZWNrX3JpZ2h0cywKLQkJCQkJICZjcmVhdGVkQ29uc3RyYWludElk KTsKKwkJCQkJICZjcmVhdGVkQ29uc3RyYWludElkLAorCQkJCQkgcmVsLT5yZF9yZWwtPnJlbHBl cnNpc3RlbmNlKTsKIAogCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVzcywgUmVsYXRpb25SZWxhdGlv bklkLCBpbmRleFJlbGF0aW9uSWQpOwogCkBAIC0xNTY5LDYgKzE1ODUsMTYgQEAgRGVmaW5lSW5k ZXgoT2lkIHRhYmxlSWQsCiAJCXJldHVybiBhZGRyZXNzOwogCX0KIAorCS8qCisJICogSW4gY2Fz ZSBvZiBjb25jdXJyZW50IGJ1aWxkIC0gY3JlYXRlIGF1eGlsaWFyeSBpbmRleCByZWNvcmQuCisJ ICovCisJaWYgKGNvbmN1cnJlbnQpCisJeworCQlhdXhJbmRleFJlbGF0aW9uSWQgPSBpbmRleF9j b25jdXJyZW50bHlfY3JlYXRlX2F1eChyZWwsIGluZGV4UmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJ dGFibGVzcGFjZUlkLCBhdXhJbmRleFJlbGF0aW9uTmFtZSk7CisJCU9iamVjdEFkZHJlc3NTZXQo YXV4QWRkcmVzcywgUmVsYXRpb25SZWxhdGlvbklkLCBhdXhJbmRleFJlbGF0aW9uSWQpOworCX0K KwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgcm9vdF9zYXZlX25lc3RsZXZlbCk7CiAJU2V0VXNlcklk QW5kU2VjQ29udGV4dChyb290X3NhdmVfdXNlcmlkLCByb290X3NhdmVfc2VjX2NvbnRleHQpOwog CkBAIC0xNTk3LDExICsxNjIzLDExIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCS8qCiAJ ICogRm9yIGEgY29uY3VycmVudCBidWlsZCwgaXQncyBpbXBvcnRhbnQgdG8gbWFrZSB0aGUgY2F0 YWxvZyBlbnRyaWVzCiAJICogdmlzaWJsZSB0byBvdGhlciB0cmFuc2FjdGlvbnMgYmVmb3JlIHdl IHN0YXJ0IHRvIGJ1aWxkIHRoZSBpbmRleC4gVGhhdAotCSAqIHdpbGwgcHJldmVudCB0aGVtIGZy b20gbWFraW5nIGluY29tcGF0aWJsZSBIT1QgdXBkYXRlcy4gIFRoZSBuZXcgaW5kZXgKLQkgKiB3 aWxsIGJlIG1hcmtlZCBub3QgaW5kaXNyZWFkeSBhbmQgbm90IGluZGlzdmFsaWQsIHNvIHRoYXQg bm8gb25lIGVsc2UKLQkgKiB0cmllcyB0byBlaXRoZXIgaW5zZXJ0IGludG8gaXQgb3IgdXNlIGl0 IGZvciBxdWVyaWVzLgorCSAqIHdpbGwgcHJldmVudCB0aGVtIGZyb20gbWFraW5nIGluY29tcGF0 aWJsZSBIT1QgdXBkYXRlcy4gTmV3IGluZGV4ZXMKKwkgKiAobWFpbiBhbmQgYXV4aWxpYXJ5KSB3 aWxsIGJlIG1hcmtlZCBub3QgaW5kaXNyZWFkeSBhbmQgbm90IGluZGlzdmFsaWQsCisJICogc28g dGhhdCBubyBvbmUgZWxzZSB0cmllcyB0byBlaXRoZXIgaW5zZXJ0IGludG8gaXQgb3IgdXNlIGl0 IGZvciBxdWVyaWVzLgogCSAqCi0JICogV2UgbXVzdCBjb21taXQgb3VyIGN1cnJlbnQgdHJhbnNh Y3Rpb24gc28gdGhhdCB0aGUgaW5kZXggYmVjb21lcworCSAqIFdlIG11c3QgY29tbWl0IG91ciBj dXJyZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlIGluZGV4ZXMgYmVjb21lcwogCSAqIHZpc2li bGU7IHRoZW4gc3RhcnQgYW5vdGhlci4gIE5vdGUgdGhhdCBhbGwgdGhlIGRhdGEgc3RydWN0dXJl cyB3ZSBqdXN0CiAJICogYnVpbHQgYXJlIGxvc3QgaW4gdGhlIGNvbW1pdC4gIFRoZSBvbmx5IGRh dGEgd2Uga2VlcCBwYXN0IGhlcmUgYXJlIHRoZQogCSAqIHJlbGF0aW9uIElEcy4KQEAgLTE2MTEs NyArMTYzNyw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIGNhbm5vdCBibG9jaywg ZXZlbiBpZiBzb21lb25lIGVsc2UgaXMgd2FpdGluZyBmb3IgYWNjZXNzLCBiZWNhdXNlIHdlCiAJ ICogYWxyZWFkeSBoYXZlIHRoZSBzYW1lIGxvY2sgd2l0aGluIG91ciB0cmFuc2FjdGlvbi4KIAkg KgotCSAqIE5vdGU6IHdlIGRvbid0IGN1cnJlbnRseSBib3RoZXIgd2l0aCBhIHNlc3Npb24gbG9j ayBvbiB0aGUgaW5kZXgsCisJICogTm90ZTogd2UgZG9uJ3QgY3VycmVudGx5IGJvdGhlciB3aXRo IGEgc2Vzc2lvbiBsb2NrIG9uIHRoZSBpbmRleGVzLAogCSAqIGJlY2F1c2UgdGhlcmUgYXJlIG5v IG9wZXJhdGlvbnMgdGhhdCBjb3VsZCBjaGFuZ2UgaXRzIHN0YXRlIHdoaWxlIHdlCiAJICogaG9s ZCBsb2NrIG9uIHRoZSBwYXJlbnQgdGFibGUuICBUaGlzIG1pZ2h0IG5lZWQgdG8gY2hhbmdlIGxh dGVyLgogCSAqLwpAQCAtMTY1MCw3ICsxNjc2LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQs CiAJICogd2l0aCB0aGUgb2xkIGxpc3Qgb2YgaW5kZXhlcy4gIFVzZSBTaGFyZUxvY2sgdG8gY29u c2lkZXIgcnVubmluZwogCSAqIHRyYW5zYWN0aW9ucyB0aGF0IGhvbGQgbG9ja3MgdGhhdCBwZXJt aXQgd3JpdGluZyB0byB0aGUgdGFibGUuICBOb3RlIHdlCiAJICogZG8gbm90IG5lZWQgdG8gd29y cnkgYWJvdXQgeGFjdHMgdGhhdCBvcGVuIHRoZSB0YWJsZSBmb3Igd3JpdGluZyBhZnRlcgotCSAq IHRoaXMgcG9pbnQ7IHRoZXkgd2lsbCBzZWUgdGhlIG5ldyBpbmRleCB3aGVuIHRoZXkgb3BlbiBp dC4KKwkgKiB0aGlzIHBvaW50OyB0aGV5IHdpbGwgc2VlIHRoZSBuZXcgaW5kZXhlcyB3aGVuIHRo ZXkgb3BlbiBpdC4KIAkgKgogCSAqIE5vdGU6IHRoZSByZWFzb24gd2UgdXNlIGFjdHVhbCBsb2Nr IGFjcXVpc2l0aW9uIGhlcmUsIHJhdGhlciB0aGFuIGp1c3QKIAkgKiBjaGVja2luZyB0aGUgUHJv Y0FycmF5IGFuZCBzbGVlcGluZywgaXMgdGhhdCBkZWFkbG9jayBpcyBwb3NzaWJsZSBpZgpAQCAt MTY2MiwxNSArMTY4OCwzOSBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAogCS8qCiAJICog QXQgdGhpcyBtb21lbnQgd2UgYXJlIHN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gdHJhbnNhY3Rpb25z IHdpdGggdGhlCi0JICogdGFibGUgb3BlbiBmb3Igd3JpdGUgdGhhdCBkb24ndCBoYXZlIHRoaXMg bmV3IGluZGV4IGluIHRoZWlyIGxpc3Qgb2YKKwkgKiB0YWJsZSBvcGVuIGZvciB3cml0ZSB0aGF0 IGRvbid0IGhhdmUgdGhpcyBuZXcgaW5kZXhlcyBpbiB0aGVpciBsaXN0IG9mCiAJICogaW5kZXhl cy4gIFdlIGhhdmUgd2FpdGVkIG91dCBhbGwgdGhlIGV4aXN0aW5nIHRyYW5zYWN0aW9ucyBhbmQg YW55IG5ldwotCSAqIHRyYW5zYWN0aW9uIHdpbGwgaGF2ZSB0aGUgbmV3IGluZGV4IGluIGl0cyBs aXN0LCBidXQgdGhlIGluZGV4IGlzIHN0aWxsCi0JICogbWFya2VkIGFzICJub3QtcmVhZHktZm9y LWluc2VydHMiLiAgVGhlIGluZGV4IGlzIGNvbnN1bHRlZCB3aGlsZQorCSAqIHRyYW5zYWN0aW9u IHdpbGwgaGF2ZSBib3RoIG5ldyBpbmRleGVzIGluIGl0cyBsaXN0LCBidXQgaW5kZXhlcyBhcmUg c3RpbGwKKwkgKiBtYXJrZWQgYXMgIm5vdC1yZWFkeS1mb3ItaW5zZXJ0cyIuIFRoZSBpbmRleGVz IGFyZSBjb25zdWx0ZWQgd2hpbGUKIAkgKiBkZWNpZGluZyBIT1Qtc2FmZXR5IHRob3VnaC4gIFRo aXMgYXJyYW5nZW1lbnQgZW5zdXJlcyB0aGF0IG5vIG5ldyBIT1QKIAkgKiBjaGFpbnMgY2FuIGJl IGNyZWF0ZWQgd2hlcmUgdGhlIG5ldyB0dXBsZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkg KiBjaGFpbiBoYXZlIGRpZmZlcmVudCBpbmRleCBrZXlzLgogCSAqCi0JICogV2UgYnVpbGQgdGhl IGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBtdWx0aXBsZQor CSAqIE5vdyBjYWxsIGJ1aWxkIG9uIGF1eGlsaWFyeSBpbmRleC4gSW5kZXggd2lsbCBiZSBjcmVh dGVkIGVtcHR5IHdpdGhvdXQKKwkgKiBhbnkgYWN0dWFsIGhlYXAgc2NhbiwgYnV0IG1hcmtlZCBh cyAicmVhZHktZm9yLWluc2VydHMiLiBUaGUgZ29hbCBvZgorCSAqIHRoYXQgaW5kZXggaXMgYWNj dW11bGF0ZSBuZXcgdHVwbGVzIHdoaWxlIG1haW4gaW5kZXggaXMgYWN0dWFsbHkgYnVpbHQuCisJ ICovCisJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKHRhYmxlSWQsIGF1eEluZGV4UmVsYXRpb25J ZCk7CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29t bWFuZCgpOworCisJLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMs IGlmIGluZGV4IHF1YWxpZmllcyAqLworCWlmIChzYWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZl X3Byb2NmbGFncygpOworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFLAorCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsK KwkvKgorCSAqIE5vdyB3ZSBuZWVkIHRvIGVuc3VyZSBhcmUgbm8gdHJhbnNhY3Rpb25zIHdpdGgg dGhlIHdpdGggYXV4aWxpYXJ5IGluZGV4CisJICogbWFya2VkIGFzICJub3QtcmVhZHktZm9yLWlu c2VydHMiLgorCSAqLworCVdhaXRGb3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBTaGFyZUxvY2ssIHRy dWUpOworCisJLyoKKwkgKiBBdCB0aGlzIG1vbWVudCB3ZSBhcmUgc3VyZSB3aGF0IGFsbCBuZXcg dHVwbGVzIGluIHRhYmxlIGFyZSBpbnNlcnRlZCBpbnRvCisJICogYXV4aWxpYXJ5IGluZGV4LiBO b3cgaXQgaXMgdGltZSB0byBidWlsZCB0aGUgdGFyZ2V0IGluZGV4IGl0c2VsZi4KKwkgKgorCSAq IFdlIGJ1aWxkIHRoYXQgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0IGFyZSB2aXNpYmxlIHVz aW5nIG11bHRpcGxlCiAJICogcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdlIGNhbiBiZSBzdXJlIHRo YXQgYW55IEhPVCB1cGRhdGVzIHRvCiAJICogdGhlc2UgdHVwbGVzIHdpbGwgYmUgY29tcGF0aWJs ZSB3aXRoIHRoZSBpbmRleCwgc2luY2UgYW55IHVwZGF0ZXMgbWFkZQogCSAqIGJ5IHRyYW5zYWN0 aW9ucyB0aGF0IGRpZG4ndCBrbm93IGFib3V0IHRoZSBpbmRleCBhcmUgbm93IGNvbW1pdHRlZCBv cgpAQCAtMTY5OCw0MyArMTc0OCwzMSBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiB0 aGUgaW5kZXggbWFya2VkIGFzIHJlYWQtb25seSBmb3IgdXBkYXRlcy4KIAkgKi8KIAlwZ3N0YXRf cHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJ IFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFX1dBSVRfMyk7CiAJV2FpdEZvckxvY2tlcnMoaGVhcGxvY2t0YWcsIFNoYXJl TG9jaywgdHJ1ZSk7CiAKIAkvKgotCSAqIE5vdyB0YWtlIHRoZSAicmVmZXJlbmNlIHNuYXBzaG90 IiB0aGF0IHdpbGwgYmUgdXNlZCBieSB2YWxpZGF0ZV9pbmRleCgpCi0JICogdG8gZmlsdGVyIGNh bmRpZGF0ZSB0dXBsZXMuICBCZXdhcmUhICBUaGVyZSBtaWdodCBzdGlsbCBiZSBzbmFwc2hvdHMg aW4KLQkgKiB1c2UgdGhhdCB0cmVhdCBzb21lIHRyYW5zYWN0aW9uIGFzIGluLXByb2dyZXNzIHRo YXQgb3VyIHJlZmVyZW5jZQotCSAqIHNuYXBzaG90IHRyZWF0cyBhcyBjb21taXR0ZWQuICBJZiBz dWNoIGEgcmVjZW50bHktY29tbWl0dGVkIHRyYW5zYWN0aW9uCi0JICogZGVsZXRlZCB0dXBsZXMg aW4gdGhlIHRhYmxlLCB3ZSB3aWxsIG5vdCBpbmNsdWRlIHRoZW0gaW4gdGhlIGluZGV4OyB5ZXQK LQkgKiB0aG9zZSB0cmFuc2FjdGlvbnMgd2hpY2ggc2VlIHRoZSBkZWxldGluZyBvbmUgYXMgc3Rp bGwtaW4tcHJvZ3Jlc3Mgd2lsbAotCSAqIGV4cGVjdCBzdWNoIHR1cGxlcyB0byBiZSB0aGVyZSBv bmNlIHdlIG1hcmsgdGhlIGluZGV4IGFzIHZhbGlkLgotCSAqCi0JICogV2Ugc29sdmUgdGhpcyBi eSB3YWl0aW5nIGZvciBhbGwgZW5kYW5nZXJlZCB0cmFuc2FjdGlvbnMgdG8gZXhpdCBiZWZvcmUK LQkgKiB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KLQkgKgotCSAqIFdlIGFsc28gc2V0IEFj dGl2ZVNuYXBzaG90IHRvIHRoaXMgc25hcCwgc2luY2UgZnVuY3Rpb25zIGluIGluZGV4ZXMgbWF5 Ci0JICogbmVlZCBhIHNuYXBzaG90LgorCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9s dmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkgKiBoYXZlIGEgdmFsaWQgc25h cHNob3QuCiAJICovCi0Jc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9u U25hcHNob3QoKSk7Ci0JUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKLQorCVB1c2hBY3Rp dmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCS8qCi0JICogU2NhbiB0aGUg aW5kZXggYW5kIHRoZSBoZWFwLCBpbnNlcnQgYW55IG1pc3NpbmcgaW5kZXggZW50cmllcy4KKwkg KiBOb3cgdGFyZ2V0IGluZGV4IGlzIG1hcmtlZCBhcyAicmVhZHkiIGZvciBhbGwgdHJhbnNhY3Rp b25zLiBTbywgYXV4aWxpYXJ5CisJICogaW5kZXggaXMgbm90IG1vcmUgbmVlZGVkLiBTbywgc3Rh cnQgcmVtb3ZpbmcgcHJvY2VzcyBieSByZXZlcnRpbmcgInJlYWR5IgorCSAqIGZsYWcuCiAJICov Ci0JdmFsaWRhdGVfaW5kZXgodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkLCBzbmFwc2hvdCk7Ci0K LQkvKgotCSAqIERyb3AgdGhlIHJlZmVyZW5jZSBzbmFwc2hvdC4gIFdlIG11c3QgZG8gdGhpcyBi ZWZvcmUgd2FpdGluZyBvdXQgb3RoZXIKLQkgKiBzbmFwc2hvdCBob2xkZXJzLCBlbHNlIHdlIHdp bGwgZGVhZGxvY2sgYWdhaW5zdCBvdGhlciBwcm9jZXNzZXMgYWxzbwotCSAqIGRvaW5nIENSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFksIHdoaWNoIHdvdWxkIHNlZSBvdXIgc25hcHNob3QgYXMgb25l Ci0JICogdGhleSBtdXN0IHdhaXQgZm9yLiAgQnV0IGZpcnN0LCBzYXZlIHRoZSBzbmFwc2hvdCdz IHhtaW4gdG8gdXNlIGFzCi0JICogbGltaXRYbWluIGZvciBHZXRDdXJyZW50VmlydHVhbFhJRHMo KS4KLQkgKi8KLQlsaW1pdFhtaW4gPSBzbmFwc2hvdC0+eG1pbjsKLQorCWluZGV4X3NldF9zdGF0 ZV9mbGFncyhhdXhJbmRleFJlbGF0aW9uSWQsIElOREVYX0RST1BfQ0xFQVJfUkVBRFkpOwogCVBv cEFjdGl2ZVNuYXBzaG90KCk7Ci0JVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKworCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJ LyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1 YWxpZmllcyAqLworCWlmIChzYWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygp OworCS8qCisJICogTWVyZ2UgY29udGVudCBvZiBhdXhpbGlhcnkgYW5kIHRhcmdldCBpbmRleGVz IC0gaW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4IGVudHJpZXMuCisJICovCisJbGltaXRYbWluID0g dmFsaWRhdGVfaW5kZXgodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkLCBhdXhJbmRleFJlbGF0aW9u SWQpOwogCiAJLyoKIAkgKiBUaGUgc25hcHNob3Qgc3Vic3lzdGVtIGNvdWxkIHN0aWxsIGNvbnRh aW4gcmVnaXN0ZXJlZCBzbmFwc2hvdHMgdGhhdApAQCAtMTc1NywxMiArMTc5NSwxMiBAQCBEZWZp bmVJbmRleChPaWQgdGFibGVJZCwKIAkvKgogCSAqIFRoZSBpbmRleCBpcyBub3cgdmFsaWQgaW4g dGhlIHNlbnNlIHRoYXQgaXQgY29udGFpbnMgYWxsIGN1cnJlbnRseQogCSAqIGludGVyZXN0aW5n IHR1cGxlcy4gIEJ1dCBzaW5jZSBpdCBtaWdodCBub3QgY29udGFpbiB0dXBsZXMgZGVsZXRlZCBq dXN0Ci0JICogYmVmb3JlIHRoZSByZWZlcmVuY2Ugc25hcCB3YXMgdGFrZW4sIHdlIGhhdmUgdG8g d2FpdCBvdXQgYW55Ci0JICogdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgaGF2ZSBvbGRlciBzbmFw c2hvdHMuCisJICogYmVmb3JlIHRoZSBsYXN0IHNuYXBzaG90IGR1cmluZyB2YWxpZGF0aW5nIHdh cyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0CisJICogb3V0IGFueSB0cmFuc2FjdGlvbnMgdGhhdCBt aWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkgKi8KIAlJTkpFQ1RJT05fUE9JTlQoImRlZmlu ZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkIik7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJh bShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0VfV0FJVF8zKTsKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQp OwogCVdhaXRGb3JPbGRlclNuYXBzaG90cyhsaW1pdFhtaW4sIHRydWUpOwogCiAJLyoKQEAgLTE3 ODcsNiArMTgyNSw1MyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiB0byByZXBsYW47 IHNvIHJlbGNhY2hlIGZsdXNoIG9uIHRoZSBpbmRleCBpdHNlbGYgd2FzIHN1ZmZpY2llbnQuKQog CSAqLwogCUNhY2hlSW52YWxpZGF0ZVJlbGNhY2hlQnlSZWxpZChoZWFwcmVsaWQucmVsSWQpOwor CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CisKKwkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5k ZXggcXVhbGlmaWVzICovCisJaWYgKHNhZmVfaW5kZXgpCisJCXNldF9pbmRleHNhZmVfcHJvY2Zs YWdzKCk7CisKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRSwKKwkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNSk7CisJLyog Tm93IHdhaXQgZm9yIGFsbCB0cmFuc2FjdGlvbiB0byBzZWUgYXV4aWxpYXJ5IGFzICJub24tcmVh ZHkgZm9yIGluc2VydHMiICovCisJV2FpdEZvckxvY2tlcnMoaGVhcGxvY2t0YWcsIEFjY2Vzc0V4 Y2x1c2l2ZUxvY2ssIHRydWUpOworCisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJU3Rh cnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogVXBkYXRpbmcgcGdfaW5kZXggbWln aHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3MsIHNvIGVuc3VyZSB3ZQorCSAqIGhhdmUgYSB2 YWxpZCBzbmFwc2hvdC4KKwkgKi8KKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25T bmFwc2hvdCgpKTsKKwkvKiBOb3cgaXQgaXMgdGltZSB0byBtYXJrIGF1eGlsaWFyeSBpbmRleCBh cyBkZWFkICovCisJaW5kZXhfY29uY3VycmVudGx5X3NldF9kZWFkKHRhYmxlSWQsIGF1eEluZGV4 UmVsYXRpb25JZCk7CisJUG9wQWN0aXZlU25hcHNob3QoKTsKKworCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKiBUZWxsIGNvbmN1 cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJ aWYgKHNhZmVfaW5kZXgpCisJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CisKKwlwZ3N0YXRf cHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNik7CisJLyogTm93IHdhaXQgZm9yIGFsbCB0 cmFuc2FjdGlvbiB0byBpZ25vcmUgYXV4aWxpYXJ5IGJlY2F1c2UgaXQgaXMgZGVhZCAqLworCVdh aXRGb3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCB0cnVlKTsKKwor CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CisKKwkvKgorCSAqIERyb3AgYXV4aWxpYXJ5IGluZGV4LgorCSAqCisJICogVXNlIFBFUkZPUk1f REVMRVRJT05fQ09OQ1VSUkVOVF9MT0NLIHNvIHRoYXQgaW5kZXhfZHJvcCgpIHVzZXMgdGhlCisJ ICogcmlnaHQgbG9jayBsZXZlbC4KKwkgKi8KKwlwZXJmb3JtRGVsZXRpb24oJmF1eEFkZHJlc3Ms IERST1BfUkVTVFJJQ1QsCisJCQkJCQkJIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVF9MT0NL IHwgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCk7CiAKIAkvKgogCSAqIExhc3QgdGhpbmcgdG8g ZG8gaXMgcmVsZWFzZSB0aGUgc2Vzc2lvbi1sZXZlbCBsb2NrIG9uIHRoZSBwYXJlbnQgdGFibGUu CkBAIC0zNTQyLDYgKzM2MjcsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCXR5cGVkZWYg c3RydWN0IFJlaW5kZXhJbmRleEluZm8KIAl7CiAJCU9pZAkJCWluZGV4SWQ7CisJCU9pZAkJCWF1 eEluZGV4SWQ7CiAJCU9pZAkJCXRhYmxlSWQ7CiAJCU9pZAkJCWFtSWQ7CiAJCWJvb2wJCXNhZmU7 CQkvKiBmb3Igc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MgKi8KQEAgLTM2NDcsOCArMzczMywxNSBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJCQlPaWQJCQljZWxsT2lkID0gbGZpcnN0X29p ZChsYyk7CiAJCQkJCVJlbGF0aW9uCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKGNlbGxPaWQs CiAJCQkJCQkJCQkJCQkJCSAgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJCQkJCUluZGV4 SW5mbyoJaW5kZXhJbmZvID0gQnVpbGREdW1teUluZGV4SW5mbyhpbmRleFJlbGF0aW9uKTsKIAot CQkJCQlpZiAoIWluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRpc3ZhbGlkKQorCisJCQkJCWlm IChpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJCQkJCWVyZXBvcnQoV0FSTklORywoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJIGVycm1zZygic2tpcHBp bmcgcmVpbmRleCBvZiBhdXhpbGlhcnkgaW5kZXggXCIlcy4lc1wiIiwKKwkJCQkJCQkJCWdldF9u YW1lc3BhY2VfbmFtZShnZXRfcmVsX25hbWVzcGFjZShjZWxsT2lkKSksCisJCQkJCQkJCQlnZXRf cmVsX25hbWUoY2VsbE9pZCkpKSk7CisJCQkJCWVsc2UgaWYgKCFpbmRleFJlbGF0aW9uLT5yZF9p bmRleC0+aW5kaXN2YWxpZCkKIAkJCQkJCWVyZXBvcnQoV0FSTklORywKIAkJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJCQkJCSBl cnJtc2coInNraXBwaW5nIHJlaW5kZXggb2YgaW52YWxpZCBpbmRleCBcIiVzLiVzXCIiLApAQCAt MzcwMCw4ICszNzkzLDE1IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWlu ZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQlPaWQJCQlj ZWxsT2lkID0gbGZpcnN0X29pZChsYzIpOwogCQkJCQkJUmVsYXRpb24JaW5kZXhSZWxhdGlvbiA9 IGluZGV4X29wZW4oY2VsbE9pZCwKIAkJCQkJCQkJCQkJCQkJCSAgIFNoYXJlVXBkYXRlRXhjbHVz aXZlTG9jayk7CisJCQkJCQlJbmRleEluZm8qCWluZGV4SW5mbyA9IEJ1aWxkRHVtbXlJbmRleElu Zm8oaW5kZXhSZWxhdGlvbik7CiAKLQkJCQkJCWlmICghaW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgt PmluZGlzdmFsaWQpCisJCQkJCQlpZiAoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpCisJCQkJCQkJ ZXJlcG9ydChXQVJOSU5HLAorCQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAorCQkJCQkJCQkJIGVycm1zZygic2tpcHBpbmcgcmVpbmRleCBvZiBhdXhpbGlh cnkgaW5kZXggXCIlcy4lc1wiIiwKKwkJCQkJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGdldF9y ZWxfbmFtZXNwYWNlKGNlbGxPaWQpKSwKKwkJCQkJCQkJCQkJZ2V0X3JlbF9uYW1lKGNlbGxPaWQp KSkpOworCQkJCQkJZWxzZSBpZiAoIWluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRpc3ZhbGlk KQogCQkJCQkJCWVyZXBvcnQoV0FSTklORywKIAkJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCQkJCQkJIGVycm1zZygic2tpcHBp bmcgcmVpbmRleCBvZiBpbnZhbGlkIGluZGV4IFwiJXMuJXNcIiIsCkBAIC0zNzYyLDYgKzM4NjIs MTMgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10 LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCQkJIGVycm1zZygiY2Fubm90IHJlaW5kZXggaW52 YWxpZCBpbmRleCBvbiBUT0FTVCB0YWJsZSIpKSk7CiAKKwkJCQkvKiBBdXhpbGlhcnkgaW5kZXhl cyBhcmUgbm90IGFsbG93ZWQgdG8gYmUgcmVidWlsdCAqLworCQkJCWlmIChnZXRfcmVsX3JlbGFt KHJlbGF0aW9uT2lkKSA9PSBTVElSX0FNX09JRCkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2co InJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXNcIiBub3Qgc3VwcG9ydGVkIiwKKwkJCQkJ CQkJZ2V0X3JlbF9uYW1lKHJlbGF0aW9uT2lkKSkpKTsKKwogCQkJCS8qCiAJCQkJICogQ2hlY2sg aWYgcGFyZW50IHJlbGF0aW9uIGNhbiBiZSBsb2NrZWQgYW5kIGlmIGl0IGV4aXN0cywKIAkJCQkg KiB0aGlzIG5lZWRzIHRvIGJlIGRvbmUgYXQgdGhpcyBzdGFnZSBhcyB0aGUgbGlzdCBvZiBpbmRl eGVzCkBAIC0zODY1LDE1ICszOTcyLDE4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJZm9y ZWFjaChsYywgaW5kZXhJZHMpCiAJewogCQljaGFyCSAgICpjb25jdXJyZW50TmFtZTsKKwkJY2hh cgkgICAqYXV4Q29uY3VycmVudE5hbWU7CiAJCVJlaW5kZXhJbmRleEluZm8gKmlkeCA9IGxmaXJz dChsYyk7CiAJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeDsKIAkJT2lkCQkJbmV3SW5kZXhJZDsK KwkJT2lkCQkJYXV4SW5kZXhJZDsKIAkJUmVsYXRpb24JaW5kZXhSZWw7CiAJCVJlbGF0aW9uCWhl YXBSZWw7CiAJCU9pZAkJCXNhdmVfdXNlcmlkOwogCQlpbnQJCQlzYXZlX3NlY19jb250ZXh0Owog CQlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIAkJUmVsYXRpb24JbmV3SW5kZXhSZWw7CisJCVJlbGF0 aW9uCWF1eEluZGV4UmVsOwogCQlMb2NrUmVsSWQgICpsb2NrcmVsaWQ7CiAJCU9pZAkJCXRhYmxl c3BhY2VpZDsKIApAQCAtMzkyNCw2ICs0MDM0LDExIEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWlu CiAJCQkJCQkJCQkJCSJjY25ldyIsCiAJCQkJCQkJCQkJCWdldF9yZWxfbmFtZXNwYWNlKGluZGV4 UmVsLT5yZF9pbmRleC0+aW5kcmVsaWQpLAogCQkJCQkJCQkJCQlmYWxzZSk7CisJCWF1eENvbmN1 cnJlbnROYW1lID0gQ2hvb3NlUmVsYXRpb25OYW1lKGdldF9yZWxfbmFtZShpZHgtPmluZGV4SWQp LAorCQkJCQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkiY2NhdXgiLAorCQkJCQkJCQkJCQlnZXRf cmVsX25hbWVzcGFjZShpbmRleFJlbC0+cmRfaW5kZXgtPmluZHJlbGlkKSwKKwkJCQkJCQkJCQkJ ZmFsc2UpOwogCiAJCS8qIENob29zZSB0aGUgbmV3IHRhYmxlc3BhY2UsIGluZGV4ZXMgb2YgdG9h c3QgdGFibGVzIGFyZSBub3QgbW92ZWQgKi8KIAkJaWYgKE9pZElzVmFsaWQocGFyYW1zLT50YWJs ZXNwYWNlT2lkKSAmJgpAQCAtMzkzNywxMiArNDA1MiwxNyBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCQkJCQkJCQkJCQkJCWlkeC0+aW5kZXhJZCwKIAkJCQkJCQkJCQkJCQl0YWJsZXNwYWNl aWQsCiAJCQkJCQkJCQkJCQkJY29uY3VycmVudE5hbWUpOworCQlhdXhJbmRleElkID0gaW5kZXhf Y29uY3VycmVudGx5X2NyZWF0ZV9hdXgoaGVhcFJlbCwKKwkJCQkJCQkJCQkJCSAgIG5ld0luZGV4 SWQsCisJCQkJCQkJCQkJCQkgICB0YWJsZXNwYWNlaWQsCisJCQkJCQkJCQkJCQkgICBhdXhDb25j dXJyZW50TmFtZSk7CiAKIAkJLyoKIAkJICogTm93IG9wZW4gdGhlIHJlbGF0aW9uIG9mIHRoZSBu ZXcgaW5kZXgsIGEgc2Vzc2lvbi1sZXZlbCBsb2NrIGlzCiAJCSAqIGFsc28gbmVlZGVkIG9uIGl0 LgogCQkgKi8KIAkJbmV3SW5kZXhSZWwgPSBpbmRleF9vcGVuKG5ld0luZGV4SWQsIFNoYXJlVXBk YXRlRXhjbHVzaXZlTG9jayk7CisJCWF1eEluZGV4UmVsID0gaW5kZXhfb3BlbihhdXhJbmRleElk LCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCiAJCS8qCiAJCSAqIFNhdmUgdGhlIGxpc3Qg b2YgT0lEcyBhbmQgbG9ja3MgaW4gcHJpdmF0ZSBjb250ZXh0CkBAIC0zOTUxLDYgKzQwNzEsNyBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCiAJCW5ld2lkeCA9IHBhbGxvY19vYmplY3QoUmVp bmRleEluZGV4SW5mbyk7CiAJCW5ld2lkeC0+aW5kZXhJZCA9IG5ld0luZGV4SWQ7CisJCW5ld2lk eC0+YXV4SW5kZXhJZCA9IGF1eEluZGV4SWQ7CiAJCW5ld2lkeC0+c2FmZSA9IGlkeC0+c2FmZTsK IAkJbmV3aWR4LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwogCQluZXdpZHgtPmFtSWQgPSBpZHgt PmFtSWQ7CkBAIC0zOTY5LDEwICs0MDkwLDE0IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRs eShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJ CWxvY2tyZWxpZCA9IHBhbGxvY19vYmplY3QoTG9ja1JlbElkKTsKIAkJKmxvY2tyZWxpZCA9IG5l d0luZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CiAJCXJlbGF0aW9uTG9ja3MgPSBsYXBw ZW5kKHJlbGF0aW9uTG9ja3MsIGxvY2tyZWxpZCk7CisJCWxvY2tyZWxpZCA9IHBhbGxvY19vYmpl Y3QoTG9ja1JlbElkKTsKKwkJKmxvY2tyZWxpZCA9IGF1eEluZGV4UmVsLT5yZF9sb2NrSW5mby5s b2NrUmVsSWQ7CisJCXJlbGF0aW9uTG9ja3MgPSBsYXBwZW5kKHJlbGF0aW9uTG9ja3MsIGxvY2ty ZWxpZCk7CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJCWluZGV4 X2Nsb3NlKGluZGV4UmVsLCBOb0xvY2spOworCQlpbmRleF9jbG9zZShhdXhJbmRleFJlbCwgTm9M b2NrKTsKIAkJaW5kZXhfY2xvc2UobmV3SW5kZXhSZWwsIE5vTG9jayk7CiAKIAkJLyogUm9sbCBi YWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KQEAgLTQw NTMsMTMgKzQxNzgsNTUgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5k ZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkgKiBkb2luZyB0aGF0 LCB3YWl0IHVudGlsIG5vIHJ1bm5pbmcgdHJhbnNhY3Rpb25zIGNvdWxkIGhhdmUgdGhlIHRhYmxl IG9mCiAJICogdGhlIGluZGV4IG9wZW4gd2l0aCB0aGUgb2xkIGxpc3Qgb2YgaW5kZXhlcy4gIFNl ZSAicGhhc2UgMiIgaW4KIAkgKiBEZWZpbmVJbmRleCgpIGZvciBtb3JlIGRldGFpbHMuCisJKi8K KwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwK KwkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMSk7CisJV2FpdEZvckxvY2tl cnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVlKTsKKwlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKworCS8qCisJICogTm93IGJ1aWxkIGFsbCBhdXhpbGlhcnkgaW5kZXhlcyBh bmQgbWFyayB0aGVtIGFzICJyZWFkeS1mb3ItaW5zZXJ0cyIuCisJICovCisJZm9yZWFjaChsYywg bmV3SW5kZXhJZHMpCisJeworCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBsZmlyc3QobGMp OworCisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJLyoKKwkJICogQ2hlY2sgZm9y IHVzZXItcmVxdWVzdGVkIGFib3J0LiAgVGhpcyBpcyBpbnNpZGUgYSB0cmFuc2FjdGlvbiBzbyBh cworCQkgKiB4YWN0LmMgZG9lcyBub3QgaXNzdWUgYSB1c2VsZXNzIFdBUk5JTkcsIGFuZCBlbnN1 cmVzIHRoYXQKKwkJICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBhcmUgY2xlYW5lZCB1cCBvbiBhYm9y dC4KKwkJICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyogVGVsbCBjb25jdXJy ZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCisJCWlmIChu ZXdpZHgtPnNhZmUpCisJCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCisJCS8qIEJ1aWxk IGF1eGlsaWFyeSBpbmRleCwgaXQgaXMgZmFzdCAtIHdpdGhvdXQgYW55IGFjdHVhbCBoZWFwIHNj YW4sIGp1c3QgYW4gZW1wdHkgaW5kZXguICovCisJCWluZGV4X2NvbmN1cnJlbnRseV9idWlsZChu ZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CisKKwkJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CisJfQorCisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJ ICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3QgaW4gdGhpcyB0cmFuc2FjdGlvbiwg dGhlcmUncyBubyBuZWVkCisJICogdG8gc2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBoZXJl LgogCSAqLwogCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8xKTsKKwkJ CQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIpOworCS8qCisJICogV2FpdCB1 bnRpbCBhbGwgYXV4aWxpYXJ5IGluZGV4ZXMgYXJlIHRha2VuIGludG8gYWNjb3VudCBieSBhbGwK KwkgKiB0cmFuc2FjdGlvbnMuCisJICovCiAJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFn cywgU2hhcmVMb2NrLCB0cnVlKTsKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAorCS8q IE5vdyBpdCBpcyB0aW1lIHRvIHBlcmZvcm0gdGFyZ2V0IGluZGV4IGJ1aWxkLiAqLwogCWZvcmVh Y2gobGMsIG5ld0luZGV4SWRzKQogCXsKIAkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZp cnN0KGxjKTsKQEAgLTQxMDIsMjQgKzQyNjksNTIgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4K IAkgKiBuZWVkIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVyZS4KIAkgKi8KIAor CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAor CQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMyk7CisJV2FpdEZvckxvY2tl cnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVlKTsKKwlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKworCS8qCisJICogQXQgdGhpcyBtb21lbnQgYWxsIHRhcmdldCBpbmRleGVz IGFyZSBtYXJrZWQgYXMgInJlYWR5LXRvLWluc2VydCIuIFNvLAorCSAqIHdlIGFyZSBmcmVlIHRv IHN0YXJ0IHByb2Nlc3Mgb2YgZHJvcHBpbmcgYXV4aWxpYXJ5IGluZGV4ZXMuCisJICovCisJZm9y ZWFjaChsYywgbmV3SW5kZXhJZHMpCisJeworCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHggPSBs Zmlyc3QobGMpOworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkvKgorCQkgKiBDaGVj ayBmb3IgdXNlci1yZXF1ZXN0ZWQgYWJvcnQuICBUaGlzIGlzIGluc2lkZSBhIHRyYW5zYWN0aW9u IHNvIGFzCisJCSAqIHhhY3QuYyBkb2VzIG5vdCBpc3N1ZSBhIHVzZWxlc3MgV0FSTklORywgYW5k IGVuc3VyZXMgdGhhdAorCQkgKiBzZXNzaW9uLWxldmVsIGxvY2tzIGFyZSBjbGVhbmVkIHVwIG9u IGFib3J0LgorCQkgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkvKiBUZWxsIGNv bmN1cnJlbnQgaW5kZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KKwkJ aWYgKG5ld2lkeC0+c2FmZSkKKwkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CisKKwkJLyoK KwkJICogVXBkYXRpbmcgcGdfaW5kZXggbWlnaHQgaW52b2x2ZSBUT0FTVCB0YWJsZSBhY2Nlc3Ms IHNvIGVuc3VyZSB3ZQorCQkgKiBoYXZlIGEgdmFsaWQgc25hcHNob3QuCisJCSAqLworCQlQdXNo QWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJaW5kZXhfc2V0X3N0 YXRlX2ZsYWdzKG5ld2lkeC0+YXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSk7CisJ CVBvcEFjdGl2ZVNuYXBzaG90KCk7CisKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJ fQorCiAJLyoKIAkgKiBQaGFzZSAzIG9mIFJFSU5ERVggQ09OQ1VSUkVOVExZCiAJICoKLQkgKiBE dXJpbmcgdGhpcyBwaGFzZSB0aGUgb2xkIGluZGV4ZXMgY2F0Y2ggdXAgd2l0aCBhbnkgbmV3IHR1 cGxlcyB0aGF0CisJICogRHVyaW5nIHRoaXMgcGhhc2UgdGhlIG5ldyBpbmRleGVzIGNhdGNoIHVw IHdpdGggYW55IG5ldyB0dXBsZXMgdGhhdAogCSAqIHdlcmUgY3JlYXRlZCBkdXJpbmcgdGhlIHBy ZXZpb3VzIHBoYXNlLiAgU2VlICJwaGFzZSAzIiBpbiBEZWZpbmVJbmRleCgpCiAJICogZm9yIG1v cmUgZGV0YWlscy4KIAkgKi8KLQotCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dB SVRfMik7Ci0JV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVl KTsKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKLQogCWZvcmVhY2gobGMsIG5ld0luZGV4 SWRzKQogCXsKIAkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKIAkJVHJh bnNhY3Rpb25JZCBsaW1pdFhtaW47Ci0JCVNuYXBzaG90CXNuYXBzaG90OwogCiAJCVN0YXJ0VHJh bnNhY3Rpb25Db21tYW5kKCk7CiAKQEAgLTQxMzQsMTMgKzQzMjksNiBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCQlpZiAobmV3aWR4LT5zYWZlKQogCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxh Z3MoKTsKIAotCQkvKgotCQkgKiBUYWtlIHRoZSAicmVmZXJlbmNlIHNuYXBzaG90IiB0aGF0IHdp bGwgYmUgdXNlZCBieSB2YWxpZGF0ZV9pbmRleCgpCi0JCSAqIHRvIGZpbHRlciBjYW5kaWRhdGUg dHVwbGVzLgotCQkgKi8KLQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0 aW9uU25hcHNob3QoKSk7Ci0JCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7Ci0KIAkJLyoK IAkJICogVXBkYXRlIHByb2dyZXNzIGZvciB0aGUgaW5kZXggdG8gYnVpbGQsIHdpdGggdGhlIGNv cnJlY3QgcGFyZW50CiAJCSAqIHRhYmxlIGludm9sdmVkLgpAQCAtNDE1MiwxNiArNDM0MCw4IEBA IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lk IHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCXByb2dyZXNzX3ZhbHNbM10gPSBuZXdpZHgtPmFt SWQ7CiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oNCwgcHJvZ3Jlc3NfaW5k ZXgsIHByb2dyZXNzX3ZhbHMpOwogCi0JCXZhbGlkYXRlX2luZGV4KG5ld2lkeC0+dGFibGVJZCwg bmV3aWR4LT5pbmRleElkLCBzbmFwc2hvdCk7Ci0KLQkJLyoKLQkJICogV2UgY2FuIG5vdyBkbyBh d2F5IHdpdGggb3VyIGFjdGl2ZSBzbmFwc2hvdCwgd2Ugc3RpbGwgbmVlZCB0byBzYXZlCi0JCSAq IHRoZSB4bWluIGxpbWl0IHRvIHdhaXQgZm9yIG9sZGVyIHNuYXBzaG90cy4KLQkJICovCi0JCWxp bWl0WG1pbiA9IHNuYXBzaG90LT54bWluOwotCi0JCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0JCVVu cmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisJCWxpbWl0WG1pbiA9IHZhbGlkYXRlX2luZGV4 KG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRleElkLCBuZXdpZHgtPmF1eEluZGV4SWQpOwor CQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJCS8qCiAJ CSAqIFRvIGVuc3VyZSBubyBkZWFkbG9ja3MsIHdlIG11c3QgY29tbWl0IGFuZCBzdGFydCB5ZXQg YW5vdGhlcgpAQCAtNDE4MSw3ICs0MzYxLDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5 KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJ ICogdGhlcmUncyBubyBuZWVkIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVyZS4K IAkJICovCiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFLAotCQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMpOworCQkJ CQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQpOwogCQlXYWl0Rm9yT2xkZXJT bmFwc2hvdHMobGltaXRYbWluLCB0cnVlKTsKIAogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKQEAgLTQyNzEsMTQgKzQ0NTEsMTQgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNv bnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkvKgog CSAqIFBoYXNlIDUgb2YgUkVJTkRFWCBDT05DVVJSRU5UTFkKIAkgKgotCSAqIE1hcmsgdGhlIG9s ZCBpbmRleGVzIGFzIGRlYWQuICBGaXJzdCB3ZSBtdXN0IHdhaXQgdW50aWwgbm8gcnVubmluZwot CSAqIHRyYW5zYWN0aW9uIGNvdWxkIGJlIHVzaW5nIHRoZSBpbmRleCBmb3IgYSBxdWVyeS4gIFNl ZSBhbHNvCisJICogTWFyayB0aGUgb2xkIGFuZCBhdXhpbGlhcnkgaW5kZXhlcyBhcyBkZWFkLiBG aXJzdCB3ZSBtdXN0IHdhaXQgdW50aWwgbm8KKwkgKiBydW5uaW5nIHRyYW5zYWN0aW9uIGNvdWxk IGJlIHVzaW5nIHRoZSBpbmRleCBmb3IgYSBxdWVyeS4gIFNlZSBhbHNvCiAJICogaW5kZXhfZHJv cCgpIGZvciBtb3JlIGRldGFpbHMuCiAJICovCiAKIAlJTkpFQ1RJT05fUE9JTlQoInJlaW5kZXhf cmVsYXRpb25fY29uY3VycmVudGx5X2JlZm9yZV9zZXRfZGVhZCIpOwogCXBnc3RhdF9wcm9ncmVz c191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNCk7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0VfV0FJVF81KTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NF eGNsdXNpdmVMb2NrLCB0cnVlKTsKIAogCWZvcmVhY2gobGMsIGluZGV4SWRzKQpAQCAtNDMwMyw2 ICs0NDgzLDI4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCVBvcEFjdGl2ZVNuYXBzaG90 KCk7CiAJfQogCisJZm9yZWFjaChsYywgbmV3SW5kZXhJZHMpCisJeworCQlSZWluZGV4SW5kZXhJ bmZvICpuZXdpZHggPSBsZmlyc3QobGMpOworCisJCS8qCisJCSAqIENoZWNrIGZvciB1c2VyLXJl cXVlc3RlZCBhYm9ydC4gIFRoaXMgaXMgaW5zaWRlIGEgdHJhbnNhY3Rpb24gc28gYXMKKwkJICog eGFjdC5jIGRvZXMgbm90IGlzc3VlIGEgdXNlbGVzcyBXQVJOSU5HLCBhbmQgZW5zdXJlcyB0aGF0 CisJCSAqIHNlc3Npb24tbGV2ZWwgbG9ja3MgYXJlIGNsZWFuZWQgdXAgb24gYWJvcnQuCisJCSAq LworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qCisJCSAqIFVwZGF0aW5nIHBnX2lu ZGV4IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkJICog aGF2ZSBhIHZhbGlkIHNuYXBzaG90LgorCQkgKi8KKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRy YW5zYWN0aW9uU25hcHNob3QoKSk7CisKKwkJaW5kZXhfY29uY3VycmVudGx5X3NldF9kZWFkKG5l d2lkeC0+dGFibGVJZCwgbmV3aWR4LT5hdXhJbmRleElkKTsKKworCQlQb3BBY3RpdmVTbmFwc2hv dCgpOworCX0KKwogCS8qIENvbW1pdCB0aGlzIHRyYW5zYWN0aW9uIHRvIG1ha2UgdGhlIHVwZGF0 ZXMgdmlzaWJsZS4gKi8KIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5z YWN0aW9uQ29tbWFuZCgpOwpAQCAtNDMxNiwxMSArNDUxOCwxMSBAQCBSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29u c3QgUmVpbgogCS8qCiAJICogUGhhc2UgNiBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCi0J ICogRHJvcCB0aGUgb2xkIGluZGV4ZXMuCisJICogRHJvcCB0aGUgb2xkIGFuZCBhdXhpbGlhcnkg aW5kZXhlcy4KIAkgKi8KIAogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRf NSk7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF82KTsKIAlXYWl0Rm9y TG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NFeGNsdXNpdmVMb2NrLCB0cnVlKTsKIAog CVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwpAQCAtNDM0MCw2 ICs0NTQyLDE4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQlhZGRfZXhhY3Rfb2JqZWN0 X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CiAJCX0KIAorCQlmb3JlYWNoKGxjLCBuZXdJbmRl eElkcykKKwkJeworCQkJUmVpbmRleEluZGV4SW5mbyAqaWR4ID0gbGZpcnN0KGxjKTsKKwkJCU9i amVjdEFkZHJlc3Mgb2JqZWN0OworCisJCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRp b25JZDsKKwkJCW9iamVjdC5vYmplY3RJZCA9IGlkeC0+YXV4SW5kZXhJZDsKKwkJCW9iamVjdC5v YmplY3RTdWJJZCA9IDA7CisKKwkJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqZWN0LCBv YmplY3RzKTsKKwkJfQorCiAJCS8qCiAJCSAqIFVzZSBQRVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJF TlRfTE9DSyBzbyB0aGF0IGluZGV4X2Ryb3AoKSB1c2VzIHRoZQogCQkgKiByaWdodCBsb2NrIGxl dmVsLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgYi9zcmMvYmFj a2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwppbmRleCA2OTRhMjUxOGJhNS4uNGFmM2QzZjc0NTUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jCkBAIC03ODQsNyArNzg0LDcgQEAgSW5kZXhJbmZvICoKIG1ha2VJ bmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAq ZXhwcmVzc2lvbnMsCiAJCQkgIExpc3QgKnByZWRpY2F0ZXMsIGJvb2wgdW5pcXVlLCBib29sIG51 bGxzX25vdF9kaXN0aW5jdCwKIAkJCSAgYm9vbCBpc3JlYWR5LCBib29sIGNvbmN1cnJlbnQsIGJv b2wgc3VtbWFyaXppbmcsCi0JCQkgIGJvb2wgd2l0aG91dG92ZXJsYXBzKQorCQkJICBib29sIHdp dGhvdXRvdmVybGFwcywgYm9vbCBhdXhpbGlhcnkpCiB7CiAJSW5kZXhJbmZvICAqbiA9IG1ha2VO b2RlKEluZGV4SW5mbyk7CiAKQEAgLTgwMCw2ICs4MDAsNyBAQCBtYWtlSW5kZXhJbmZvKGludCBu dW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Npb25zLAog CW4tPmlpX0NvbmN1cnJlbnQgPSBjb25jdXJyZW50OwogCW4tPmlpX1N1bW1hcml6aW5nID0gc3Vt bWFyaXppbmc7CiAJbi0+aWlfV2l0aG91dE92ZXJsYXBzID0gd2l0aG91dG92ZXJsYXBzOworCW4t PmlpX0F1eGlsaWFyeSA9IGF1eGlsaWFyeTsKIAogCS8qIHN1bW1hcml6aW5nIGluZGV4ZXMgY2Fu bm90IGNvbnRhaW4gbm9uLWtleSBhdHRyaWJ1dGVzICovCiAJQXNzZXJ0KCFzdW1tYXJpemluZyB8 fCAobnVta2V5YXR0cnMgPT0gbnVtYXR0cnMpKTsKQEAgLTgyNSw3ICs4MjYsNiBAQCBtYWtlSW5k ZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsIExpc3QgKmV4 cHJlc3Npb25zLAogCS8qIGluaXRpYWxpemUgaW5kZXgtYnVpbGQgc3RhdGUgdG8gZGVmYXVsdCAq LwogCW4tPmlpX0Jyb2tlbkhvdENoYWluID0gZmFsc2U7CiAJbi0+aWlfUGFyYWxsZWxXb3JrZXJz ID0gMDsKLQluLT5paV9BdXhpbGlhcnkgPSBmYWxzZTsKIAogCS8qIHNldCB1cCBmb3IgcG9zc2li bGUgdXNlIGJ5IGluZGV4IEFNICovCiAJbi0+aWlfQW0gPSBhbW9pZDsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5o CmluZGV4IGQ2OWJhYWEzNjRmLi5kMjA2MGZjZTdjYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv YWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC03 MTQsMTEgKzcxNCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBUYWJsZUFtUm91dGluZQogCQkJCQkJCQkJ CSAgIFRhYmxlU2NhbkRlc2Mgc2Nhbik7CiAKIAkvKiBzZWUgdGFibGVfaW5kZXhfdmFsaWRhdGVf c2NhbiBmb3IgcmVmZXJlbmNlIGFib3V0IHBhcmFtZXRlcnMgKi8KLQl2b2lkCQkoKmluZGV4X3Zh bGlkYXRlX3NjYW4pIChSZWxhdGlvbiB0YWJsZV9yZWwsCi0JCQkJCQkJCQkJUmVsYXRpb24gaW5k ZXhfcmVsLAotCQkJCQkJCQkJCXN0cnVjdCBJbmRleEluZm8gKmluZGV4X2luZm8sCi0JCQkJCQkJ CQkJU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkJCQkJc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0 ZSAqc3RhdGUpOworCVRyYW5zYWN0aW9uSWQgCQkoKmluZGV4X3ZhbGlkYXRlX3NjYW4pIChSZWxh dGlvbiB0YWJsZV9yZWwsCisJCQkJCQkJCQkJCQlSZWxhdGlvbiBpbmRleF9yZWwsCisJCQkJCQkJ CQkJCQlzdHJ1Y3QgSW5kZXhJbmZvICppbmRleF9pbmZvLAorCQkJCQkJCQkJCQkJc3RydWN0IFZh bGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUsCisJCQkJCQkJCQkJCQlzdHJ1Y3QgVmFsaWRhdGVJbmRl eFN0YXRlICphdXhfc3RhdGUpOwogCiAKIAkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE4NjIsMjIg KzE4NjIsMjIgQEAgdGFibGVfaW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiB0YWJsZV9y ZWwsCiB9CiAKIC8qCi0gKiB0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuIC0gc2Vjb25kIHRhYmxl IHNjYW4gZm9yIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQKKyAqIHRhYmxlX2luZGV4X3ZhbGlkYXRl X3NjYW4gLSB2YWxpZGF0aW9uIHNjYW4gZm9yIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQKICAqCiAg KiBTZWUgdmFsaWRhdGVfaW5kZXgoKSBmb3IgYW4gZXhwbGFuYXRpb24uCiAgKi8KLXN0YXRpYyBp bmxpbmUgdm9pZAorc3RhdGljIGlubGluZSBUcmFuc2FjdGlvbklkCiB0YWJsZV9pbmRleF92YWxp ZGF0ZV9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKIAkJCQkJCSAgUmVsYXRpb24gaW5kZXhfcmVs LAogCQkJCQkJICBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleF9pbmZvLAotCQkJCQkJICBTbmFwc2hv dCBzbmFwc2hvdCwKLQkJCQkJCSAgc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUpCisJ CQkJCQkgIHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlLAorCQkJCQkJICBzdHJ1Y3Qg VmFsaWRhdGVJbmRleFN0YXRlICphdXhzdGF0ZSkKIHsKLQl0YWJsZV9yZWwtPnJkX3RhYmxlYW0t PmluZGV4X3ZhbGlkYXRlX3NjYW4odGFibGVfcmVsLAotCQkJCQkJCQkJCQkgICBpbmRleF9yZWws Ci0JCQkJCQkJCQkJCSAgIGluZGV4X2luZm8sCi0JCQkJCQkJCQkJCSAgIHNuYXBzaG90LAotCQkJ CQkJCQkJCQkgICBzdGF0ZSk7CisJcmV0dXJuIHRhYmxlX3JlbC0+cmRfdGFibGVhbS0+aW5kZXhf dmFsaWRhdGVfc2Nhbih0YWJsZV9yZWwsCisJCQkJCQkJCQkJCQkJICBpbmRleF9yZWwsCisJCQkJ CQkJCQkJCQkJICBpbmRleF9pbmZvLAorCQkJCQkJCQkJCQkJCSAgc3RhdGUsCisJCQkJCQkJCQkJ CQkJICBhdXhzdGF0ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9p bmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmluZGV4IDRkYWE4YmVmNWVlLi4w MWY4NWU1N2VhMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMjUsNiArMjUsNyBAQCB0eXBlZGVmIGVu dW0KIHsKIAlJTkRFWF9DUkVBVEVfU0VUX1JFQURZLAogCUlOREVYX0NSRUFURV9TRVRfVkFMSUQs CisJSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSwKIAlJTkRFWF9EUk9QX0NMRUFSX1ZBTElELAogCUlO REVYX0RST1BfU0VUX0RFQUQsCiB9IEluZGV4U3RhdGVGbGFnc0FjdGlvbjsKQEAgLTY1LDYgKzY2 LDcgQEAgZXh0ZXJuIHZvaWQgaW5kZXhfY2hlY2tfcHJpbWFyeV9rZXkoUmVsYXRpb24gaGVhcFJl bCwKICNkZWZpbmUJSU5ERVhfQ1JFQVRFX0lGX05PVF9FWElTVFMJCQkoMSA8PCA0KQogI2RlZmlu ZQlJTkRFWF9DUkVBVEVfUEFSVElUSU9ORUQJCQkoMSA8PCA1KQogI2RlZmluZSBJTkRFWF9DUkVB VEVfSU5WQUxJRAkJCQkoMSA8PCA2KQorI2RlZmluZSBJTkRFWF9DUkVBVEVfQVVYSUxJQVJZCQkJ CSgxIDw8IDcpCiAKIGV4dGVybiBPaWQJaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKIAkJCQkJCSBjb25zdCBjaGFyICppbmRleFJlbGF0aW9uTmFtZSwKQEAgLTg2LDcgKzg4LDgg QEAgZXh0ZXJuIE9pZAlpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJ IGJpdHMxNiBjb25zdHJfZmxhZ3MsCiAJCQkJCQkgYm9vbCBhbGxvd19zeXN0ZW1fdGFibGVfbW9k cywKIAkJCQkJCSBib29sIGlzX2ludGVybmFsLAotCQkJCQkJIE9pZCAqY29uc3RyYWludElkKTsK KwkJCQkJCSBPaWQgKmNvbnN0cmFpbnRJZCwKKwkJCQkJCSBjaGFyIHJlbHBlcnNpc3RlbmNlKTsK IAogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX01BUktfQVNfUFJJTUFSWQkoMSA8PCAwKQog I2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX0RFRkVSUkFCTEUJCSgxIDw8IDEpCkBAIC0xMDAs NiArMTAzLDExIEBAIGV4dGVybiBPaWQJaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBPaWQgdGFibGVzcGFjZU9pZCwKIAkJ CQkJCQkJCQkgICBjb25zdCBjaGFyICpuZXdOYW1lKTsKIAorZXh0ZXJuIE9pZAlpbmRleF9jb25j dXJyZW50bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCisJCQkJCQkJCQkJICBP aWQgbWFpbkluZGV4SWQsCisJCQkJCQkJCQkJICBPaWQgdGFibGVzcGFjZU9pZCwKKwkJCQkJCQkJ CQkgIGNvbnN0IGNoYXIgKm5ld05hbWUpOworCiBleHRlcm4gdm9pZCBpbmRleF9jb25jdXJyZW50 bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCQkJCQkJCQkJIE9pZCBpbmRleFJlbGF0aW9u SWQpOwogCkBAIC0xNDUsNyArMTUzLDcgQEAgZXh0ZXJuIHZvaWQgaW5kZXhfYnVpbGQoUmVsYXRp b24gaGVhcFJlbGF0aW9uLAogCQkJCQkJYm9vbCBpc3JlaW5kZXgsCiAJCQkJCQlib29sIHBhcmFs bGVsKTsKIAotZXh0ZXJuIHZvaWQgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4 SWQsIFNuYXBzaG90IHNuYXBzaG90KTsKK2V4dGVybiBUcmFuc2FjdGlvbklkIHZhbGlkYXRlX2lu ZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCk7CiAKIGV4dGVybiB2 b2lkIGluZGV4X3NldF9zdGF0ZV9mbGFncyhPaWQgaW5kZXhJZCwgSW5kZXhTdGF0ZUZsYWdzQWN0 aW9uIGFjdGlvbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNz LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oCmluZGV4IDE4ZTMxNzllZjYzLi40 YzNlYTY4NjQ5NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaAor KysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oCkBAIC05MiwxNCArOTIsMTUgQEAK IAogLyogUGhhc2VzIG9mIENSRUFURSBJTkRFWCAoYXMgYWR2ZXJ0aXNlZCB2aWEgUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFKSAqLwogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJ VF8xCQkJMQotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfQlVJTEQJCQkyCi0jZGVm aW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIJCQkzCi0jZGVmaW5lIFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRV9WQUxJREFURV9JRFhTQ0FOCTQKLSNkZWZpbmUgUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFX1ZBTElEQVRFX1NPUlQJCTUKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFX1ZBTElEQVRFX1RBQkxFU0NBTgk2Ci0jZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9Q SEFTRV9XQUlUXzMJCQk3CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIJ CQkyCisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9CVUlMRAkJCTMKKyNkZWZpbmUg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMwkJCTQKKyNkZWZpbmUgUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFX1ZBTElEQVRFX0lEWFNDQU4JNQorI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJ RFhfUEhBU0VfVkFMSURBVEVfU09SVAkJNgorI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfVkFMSURBVEVfSURYTUVSR0UJNwogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Vf V0FJVF80CQkJOAogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF81CQkJOQor I2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF82CQkJMTAKIAogLyoKICAqIFN1 YnBoYXNlcyBvZiBDUkVBVEUgSU5ERVgsIGZvciBpbmRleF9idWlsZC4KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmgKaW5kZXggN2JmZTBhY2I5MWMuLjhhYjc0ZTJiMWQ5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApA QCAtMTc3LDggKzE3Nyw4IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogICoJCUFtQ2FjaGUJ CQkJcHJpdmF0ZSBjYWNoZSBhcmVhIGZvciBpbmRleCBBTQogICoJCUNvbnRleHQJCQkJbWVtb3J5 IGNvbnRleHQgaG9sZGluZyB0aGlzIEluZGV4SW5mbwogICoKLSAqIGlpX0NvbmN1cnJlbnQsIGlp X0Jyb2tlbkhvdENoYWluLCBpaV9BdXhpbGlhcnkgYW5kIGlpX1BhcmFsbGVsV29ya2VycwotICog YXJlIHVzZWQgb25seSBkdXJpbmcgaW5kZXggYnVpbGQ7IHRoZXkncmUgY29udmVudGlvbmFsbHkg emVyb2VkIG90aGVyd2lzZS4KKyAqIGlpX0NvbmN1cnJlbnQsIGlpX0Jyb2tlbkhvdENoYWluLCBh bmQgaWlfUGFyYWxsZWxXb3JrZXJzIGFyZSB1c2VkIG9ubHkKKyAqIGR1cmluZyBpbmRleCBidWls ZDsgdGhleSdyZSBjb252ZW50aW9uYWxseSB6ZXJvZWQgb3RoZXJ3aXNlLgogICogLS0tLS0tLS0t LS0tLS0tLQogICovCiB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL21ha2VmdW5jcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgK aW5kZXggNTQ3M2NlOWEyODguLjQ5MDQ3NDhmNWZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9tYWtlZnVuY3MuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaApAQCAt OTksNyArOTksOCBAQCBleHRlcm4gSW5kZXhJbmZvICptYWtlSW5kZXhJbmZvKGludCBudW1hdHRy cywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsCiAJCQkJCQkJCUxpc3QgKmV4cHJlc3Npb25z LCBMaXN0ICpwcmVkaWNhdGVzLAogCQkJCQkJCQlib29sIHVuaXF1ZSwgYm9vbCBudWxsc19ub3Rf ZGlzdGluY3QsCiAJCQkJCQkJCWJvb2wgaXNyZWFkeSwgYm9vbCBjb25jdXJyZW50LAotCQkJCQkJ CQlib29sIHN1bW1hcml6aW5nLCBib29sIHdpdGhvdXRvdmVybGFwcyk7CisJCQkJCQkJCWJvb2wg c3VtbWFyaXppbmcsIGJvb2wgd2l0aG91dG92ZXJsYXBzLAorCQkJCQkJCQlib29sIGF1eGlsaWFy eSk7CiAKIGV4dGVybiBOb2RlICptYWtlU3RyaW5nQ29uc3QoY2hhciAqc3RyLCBpbnQgbG9jYXRp b24pOwogZXh0ZXJuIERlZkVsZW0gKm1ha2VEZWZFbGVtKGNoYXIgKm5hbWUsIE5vZGUgKmFyZywg aW50IGxvY2F0aW9uKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMv aW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCA5 ZjAzZmEzMDMzYy4uNzgwMzEzZjQ3N2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90 cy5vdXQKQEAgLTIzLDYgKzIzLDEyIEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn dGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7CiAgCiAoMSByb3cpCiAK K1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3Nj YW5fbm9feGlkJywgJ25vdGljZScpOworIGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNl dF9zbmFwOwogQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtl eSwgaiBpbnQpOwogSU5TRVJUIElOVE8gY2ljX3Jlc2V0X3NuYXAudGJsIFNFTEVDVCBpLCBpICog SSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIHMoaSk7CkBAIC00MywzMCArNDksMzggQEAg QUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0wKTsK IENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50 YmwoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFi bGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3Rp dmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1f aW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBz aG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHgg T04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3Nj YW5fc25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3Nu YXBzaG90cwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQK IERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdI RVJFIE1PRChpLCAyKSA9IDA7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3Rz CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNl dF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9z bmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nh bl9zbmFwc2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25h cHNob3RzCiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVh cF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAog RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19y ZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKIE5PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRf c25hcHNob3RzCkBAIC03Niw5ICs5MCwxMSBAQCBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9z Y2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9z bmFwc2hvdHMKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBo ZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlk CiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiAtLSBUaGUgc2Ft ZSBpbiBwYXJhbGxlbCBtb2RlCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChw YXJhbGxlbF93b3JrZXJzPTIpOwpAQCAtOTEsMjMgKzEwNywzMSBAQCBTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19kZXRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnKTsKIAog Q1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRi bChpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJs ZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFs aXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFt X2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194 aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNj YW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHgg T04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsK IE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJh bGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4 X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKIE5P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNj YW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVY IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0 X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50 IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04g Y2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9z dGFibGVfbm9fcGFyYW0oKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQpAQCAtMTE2LDEzICsxNDAsMTcg QEAgTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSBERVNDIE5VTExTIExBU1QpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRl X3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVf cGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOwogTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9p bml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg aGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVf c2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK IERST1AgU0NIRU1BIGNpY19yZXNldF9zbmFwIENBU0NBREU7CiBOT1RJQ0U6ICBkcm9wIGNhc2Nh ZGVzIHRvIDMgb3RoZXIgb2JqZWN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbCBiL3NyYy90ZXN0L21vZHVs ZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKaW5kZXggMjk0 MWFhN2FlMzguLjI0OWQxMDYxYWRhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKQEAgLTQs NiArNCw3IEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZl JywgJ25vdGljZScpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGljZScpOwogU0VMRUNUIGluamVjdGlv bl9wb2ludHNfYXR0YWNoKCd0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZScsICdub3RpY2Un KTsKK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcGFtX2luZGV4X3ZhbGlkYXRl X3NjYW5fbm9feGlkJywgJ25vdGljZScpOwogCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFw OwogQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBp bnQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CmluZGV4IDgw MTFjMTQxYmY4Li4zNDMzMWU0ZDQ4YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9jcmVhdGVfaW5kZXgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3Jl YXRlX2luZGV4Lm91dApAQCAtMTQyMyw2ICsxNDIzLDcgQEAgREVUQUlMOiAgS2V5IChmMSk9KGIp IGFscmVhZHkgZXhpc3RzLgogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3Vy X2luZGV4MyBPTiBjb25jdXJfaGVhcChmMik7CiBFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5p cXVlIGluZGV4ICJjb25jdXJfaW5kZXgzIgogREVUQUlMOiAgS2V5IChmMik9KGIpIGlzIGR1cGxp Y2F0ZWQuCitEUk9QIElOREVYIGNvbmN1cl9pbmRleDNfY2NhdXg7CiAtLSB0ZXN0IHRoYXQgZXhw cmVzc2lvbiBpbmRleGVzIGFuZCBwYXJ0aWFsIGluZGV4ZXMgd29yayBjb25jdXJyZW50bHkKIENS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4NCBvbiBjb25jdXJfaGVhcChmMikg V0hFUkUgZjE9J2EnOwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg1IG9u IGNvbmN1cl9oZWFwKGYyKSBXSEVSRSBmMT0neCc7CkBAIC0zMDI4LDYgKzMwMjksNyBAQCBJTlNF UlQgSU5UTyBjb25jdXJfcmVpbmRleF90YWI0IFZBTFVFUyAoMSksICgxKSwgKDIpOwogQ1JFQVRF IFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX3JlaW5kZXhfaW5kNSBPTiBjb25jdXJf cmVpbmRleF90YWI0IChjMSk7CiBFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4 ICJjb25jdXJfcmVpbmRleF9pbmQ1IgogREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0 ZWQuCitEUk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NhdXg7CiAtLSBSZWluZGV4aW5n IGNvbmN1cnJlbnRseSB0aGlzIGluZGV4IGZhaWxzIHdpdGggdGhlIHNhbWUgZmFpbHVyZS4KIC0t IFRoZSBleHRyYSBpbmRleCBjcmVhdGVkIGlzIGl0c2VsZiBpbnZhbGlkLCBhbmQgY2FuIGJlIGRy b3BwZWQuCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1OwpA QCAtMzA0MCw4ICszMDQyLDEwIEBAIERFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVk LgogIGMxICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAogSW5kZXhlczoK ICAgICAiY29uY3VyX3JlaW5kZXhfaW5kNSIgVU5JUVVFLCBidHJlZSAoYzEpIElOVkFMSUQKKyAg ICAiY29uY3VyX3JlaW5kZXhfaW5kNV9jY2F1eCIgc3RpciAoYzEpIElOVkFMSUQKICAgICAiY29u Y3VyX3JlaW5kZXhfaW5kNV9jY25ldyIgVU5JUVVFLCBidHJlZSAoYzEpIElOVkFMSUQKIAorRFJP UCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4OwogRFJPUCBJTkRFWCBjb25jdXJfcmVp bmRleF9pbmQ1X2NjbmV3OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBh d2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KIERFTEVURSBGUk9NIGNvbmN1cl9y ZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOwpAQCAtMzA2OSw2ICszMDczLDQ0IEBAIEluZGV4ZXM6 CiAgICAgImNvbmN1cl9yZWluZGV4X2luZDUiIFVOSVFVRSwgYnRyZWUgKGMxKQogCiBEUk9QIFRB QkxFIGNvbmN1cl9yZWluZGV4X3RhYjQ7CistLSBDaGVjayBoYW5kbGluZyBvZiBhdXhpbGlhcnkg aW5kZXhlcworQ1JFQVRFIFRBQkxFIGF1eF9pbmRleF90YWI1IChjMSBpbnQpOworSU5TRVJUIElO VE8gYXV4X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpLCAoMik7CistLSBUaGlzIHRyaWNrIGNy ZWF0ZXMgYW4gaW52YWxpZCBpbmRleCBhbmQgYXV4aWxpYXJ5IGluZGV4IGZvciBpdAorQ1JFQVRF IFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3Rh YjUgKGMxKTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRl eF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCitcZCBhdXhfaW5k ZXhfdGFiNQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENvbHVt biB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgImF1eF9pbmRleF9p bmQ2IiBVTklRVUUsIGJ0cmVlIChjMSkgSU5WQUxJRAorICAgICJhdXhfaW5kZXhfaW5kNl9jY2F1 eCIgc3RpciAoYzEpIElOVkFMSUQKKworLS0gTm90IGFsbG93ZWQgdG8gcmVpbmRleCBhdXhpbGlh cnkgaW5kZXgKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDZfY2NhdXg7CitFUlJPUjogIHJl aW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4ICJhdXhfaW5kZXhfaW5kNl9jY2F1eCIgbm90IHN1cHBv cnRlZAorLS0gQ29uY3VycmVudGx5IGFsc28KK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGF1 eF9pbmRleF9pbmQ2X2NjYXV4OworRVJST1I6ICByZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCAi YXV4X2luZGV4X2luZDZfY2NhdXgiIG5vdCBzdXBwb3J0ZWQKKy0tIFRoaXMgbWFrZXMgdGhlIHBy ZXZpb3VzIGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitE RUxFVEUgRlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKK0VSUk9SOiAgcmVs YXRpb24gImNvbmN1cl9yZWluZGV4X3RhYjQiIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IERFTEVU RSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworICAgICAgICAgICAgICAg ICAgICBeCistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleAorUkVJTkRFWCBUQUJM RSBhdXhfaW5kZXhfdGFiNTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXgg ImF1eF9pbmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCist LSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CitSRUlOREVYIFRB QkxFIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKK1dBUk5JTkc6ICBza2lwcGluZyByZWlu ZGV4IG9mIGludmFsaWQgaW5kZXggInB1YmxpYy5hdXhfaW5kZXhfaW5kNiIKK0hJTlQ6ICBVc2Ug RFJPUCBJTkRFWCBvciBSRUlOREVYIElOREVYLgorV0FSTklORzogIHNraXBwaW5nIHJlaW5kZXgg b2YgYXV4aWxpYXJ5IGluZGV4ICJwdWJsaWMuYXV4X2luZGV4X2luZDZfY2NhdXgiCitOT1RJQ0U6 ICB0YWJsZSAiYXV4X2luZGV4X3RhYjUiIGhhcyBubyBpbmRleGVzIHRoYXQgY2FuIGJlIHJlaW5k ZXhlZCBjb25jdXJyZW50bHkKK0RST1AgVEFCTEUgYXV4X2luZGV4X3RhYjU7CiAtLSBDaGVjayBo YW5kbGluZyBvZiBpbmRleGVzIHdpdGggZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMuICBUaGUK IC0tIGRlZmluaXRpb25zIG9mIHRoZSByZWJ1aWx0IGluZGV4ZXMgc2hvdWxkIG1hdGNoIHRoZSBv cmlnaW5hbAogLS0gZGVmaW5pdGlvbnMuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2luZGV4aW5nLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcu b3V0CmluZGV4IGJjZjFkYjExZDczLi4zZmVjYWEzODg1MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9pbmRleGluZy5vdXQKQEAgLTE1ODUsMTAgKzE1ODUsMTEgQEAgc2VsZWN0IGluZGV4cmVs aWQ6OnJlZ2NsYXNzLCBpbmRpc3ZhbGlkLAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICBwYXJ0ZWRfaXN2YWxpZF9pZHggICAgICAgICAgICAgfCBmICAgICAg ICAgIHwgcGFydGVkX2lzdmFsaWRfdGFiICAgIHwgCiAgcGFydGVkX2lzdmFsaWRfaWR4XzExICAg ICAgICAgIHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xMSB8IHBhcnRlZF9pc3Zh bGlkX3RhYl8xX2V4cHJfaWR4CisgcGFydGVkX2lzdmFsaWRfaWR4XzExX2NjYXV4ICAgIHwgZiAg ICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xMSB8IAogIHBhcnRlZF9pc3ZhbGlkX3RhYl8x Ml9leHByX2lkeCB8IHQgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMTIgfCBwYXJ0ZWRf aXN2YWxpZF90YWJfMV9leHByX2lkeAogIHBhcnRlZF9pc3ZhbGlkX3RhYl8xX2V4cHJfaWR4ICB8 IGYgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMSAgfCBwYXJ0ZWRfaXN2YWxpZF9pZHgK ICBwYXJ0ZWRfaXN2YWxpZF90YWJfMl9leHByX2lkeCAgfCB0ICAgICAgICAgIHwgcGFydGVkX2lz dmFsaWRfdGFiXzIgIHwgcGFydGVkX2lzdmFsaWRfaWR4Ci0oNSByb3dzKQorKDYgcm93cykKIAog ZHJvcCB0YWJsZSBwYXJ0ZWRfaXN2YWxpZF90YWI7CiAtLSBDaGVjayBzdGF0ZSBvZiByZXBsaWNh IGluZGV4ZXMgd2hlbiBhdHRhY2hpbmcgYSBwYXJ0aXRpb24uCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cnVsZXMub3V0CmluZGV4IDMwMTRkMDQ3ZmVmLi5lMGE0NmMwYTQyYSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ydWxlcy5vdXQKQEAgLTIwMTMsMTQgKzIwMTMsMTUgQEAgcGdfc3RhdF9wcm9ncmVz c19jcmVhdGVfaW5kZXh8IFNFTEVDVCBzLnBpZCwKICAgICAgICAgQ0FTRSBzLnBhcmFtMTAKICAg ICAgICAgICAgIFdIRU4gMCBUSEVOICdpbml0aWFsaXppbmcnOjp0ZXh0CiAgICAgICAgICAgICBX SEVOIDEgVEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgYnVpbGQnOjp0ZXh0Ci0gICAg ICAgICAgICBXSEVOIDIgVEhFTiAoJ2J1aWxkaW5nIGluZGV4Jzo6dGV4dCB8fCBDT0FMRVNDRSgo JzogJzo6dGV4dCB8fCBwZ19pbmRleGFtX3Byb2dyZXNzX3BoYXNlbmFtZSgocy5wYXJhbTkpOjpv aWQsIHMucGFyYW0xMSkpLCAnJzo6dGV4dCkpCi0gICAgICAgICAgICBXSEVOIDMgVEhFTiAnd2Fp dGluZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbic6OnRleHQKLSAgICAgICAgICAgIFdI RU4gNCBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBpbmRleCc6OnRleHQKLSAgICAg ICAgICAgIFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzb3J0aW5nIHR1cGxlcyc6OnRl eHQKLSAgICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyB0 YWJsZSc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gNyBUSEVOICd3YWl0aW5nIGZvciBvbGQgc25h cHNob3RzJzo6dGV4dAotICAgICAgICAgICAgV0hFTiA4IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRl cnMgYmVmb3JlIG1hcmtpbmcgZGVhZCc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gOSBUSEVOICd3 YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBkcm9wcGluZyc6OnRleHQKKyAgICAgICAgICAgIFdI RU4gMiBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXgnOjp0 ZXh0CisgICAgICAgICAgICBXSEVOIDMgVEhFTiAoJ2J1aWxkaW5nIGluZGV4Jzo6dGV4dCB8fCBD T0FMRVNDRSgoJzogJzo6dGV4dCB8fCBwZ19pbmRleGFtX3Byb2dyZXNzX3BoYXNlbmFtZSgocy5w YXJhbTkpOjpvaWQsIHMucGFyYW0xMSkpLCAnJzo6dGV4dCkpCisgICAgICAgICAgICBXSEVOIDQg VEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbic6OnRleHQKKyAgICAg ICAgICAgIFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBpbmRleCc6OnRl eHQKKyAgICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzb3J0aW5nIHR1 cGxlcyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gNyBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBt ZXJnaW5nIGluZGV4ZXMnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDggVEhFTiAnd2FpdGluZyBm b3Igb2xkIHNuYXBzaG90cyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gOSBUSEVOICd3YWl0aW5n IGZvciByZWFkZXJzIGJlZm9yZSBtYXJraW5nIGRlYWQnOjp0ZXh0CisgICAgICAgICAgICBXSEVO IDEwIFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRyb3BwaW5nJzo6dGV4dAogICAg ICAgICAgICAgRUxTRSBOVUxMOjp0ZXh0CiAgICAgICAgIEVORCBBUyBwaGFzZSwKICAgICBzLnBh cmFtNCBBUyBsb2NrZXJzX3RvdGFsLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Y3JlYXRlX2luZGV4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwK aW5kZXggMDY4YzY2Yjk1YTUuLmI0MTBmYTVjNTQxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0 ZV9pbmRleC5zcWwKQEAgLTQ5OSw2ICs0OTksNyBAQCBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNV UlJFTlRMWSBJRiBOT1QgRVhJU1RTIGNvbmN1cl9pbmRleDIgT04gY29uY3VyX2hlYXAoZjEpOwog SU5TRVJUIElOVE8gY29uY3VyX2hlYXAgVkFMVUVTICgnYicsJ3gnKTsKIC0tIGNoZWNrIGlmIGNv bnN0cmFpbnQgaXMgZW5mb3JjZWQgcHJvcGVybHkgYXQgYnVpbGQgdGltZQogQ1JFQVRFIFVOSVFV RSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4MyBPTiBjb25jdXJfaGVhcChmMik7CitE Uk9QIElOREVYIGNvbmN1cl9pbmRleDNfY2NhdXg7CiAtLSB0ZXN0IHRoYXQgZXhwcmVzc2lvbiBp bmRleGVzIGFuZCBwYXJ0aWFsIGluZGV4ZXMgd29yayBjb25jdXJyZW50bHkKIENSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4NCBvbiBjb25jdXJfaGVhcChmMikgV0hFUkUgZjE9 J2EnOwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg1IG9uIGNvbmN1cl9o ZWFwKGYyKSBXSEVSRSBmMT0neCc7CkBAIC0xMjQ0LDEwICsxMjQ1LDEyIEBAIENSRUFURSBUQUJM RSBjb25jdXJfcmVpbmRleF90YWI0IChjMSBpbnQpOwogSU5TRVJUIElOVE8gY29uY3VyX3JlaW5k ZXhfdGFiNCBWQUxVRVMgKDEpLCAoMSksICgyKTsKIC0tIFRoaXMgdHJpY2sgY3JlYXRlcyBhbiBp bnZhbGlkIGluZGV4LgogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX3Jl aW5kZXhfaW5kNSBPTiBjb25jdXJfcmVpbmRleF90YWI0IChjMSk7CitEUk9QIElOREVYIGNvbmN1 cl9yZWluZGV4X2luZDVfY2NhdXg7CiAtLSBSZWluZGV4aW5nIGNvbmN1cnJlbnRseSB0aGlzIGlu ZGV4IGZhaWxzIHdpdGggdGhlIHNhbWUgZmFpbHVyZS4KIC0tIFRoZSBleHRyYSBpbmRleCBjcmVh dGVkIGlzIGl0c2VsZiBpbnZhbGlkLCBhbmQgY2FuIGJlIGRyb3BwZWQuCiBSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1OwogXGQgY29uY3VyX3JlaW5kZXhfdGFi NAorRFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4OwogRFJPUCBJTkRFWCBjb25j dXJfcmVpbmRleF9pbmQ1X2NjbmV3OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVy ZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KIERFTEVURSBGUk9NIGNv bmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOwpAQCAtMTI1OSw2ICsxMjYyLDI0IEBAIFJF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9yZWluZGV4X2luZDU7CiBcZCBjb25jdXJf cmVpbmRleF90YWI0CiBEUk9QIFRBQkxFIGNvbmN1cl9yZWluZGV4X3RhYjQ7CiAKKy0tIENoZWNr IGhhbmRsaW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzCitDUkVBVEUgVEFCTEUgYXV4X2luZGV4X3Rh YjUgKGMxIGludCk7CitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSks ICgyKTsKKy0tIFRoaXMgdHJpY2sgY3JlYXRlcyBhbiBpbnZhbGlkIGluZGV4IGFuZCBhdXhpbGlh cnkgaW5kZXggZm9yIGl0CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5k ZXhfaW5kNiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworXGQgYXV4X2luZGV4X3RhYjUKKy0tIE5v dCBhbGxvd2VkIHRvIHJlaW5kZXggYXV4aWxpYXJ5IGluZGV4CitSRUlOREVYIElOREVYIGF1eF9p bmRleF9pbmQ2X2NjYXV4OworLS0gQ29uY3VycmVudGx5IGFsc28KK1JFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OworLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlv dXMgZmFpbHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVU RSBGUk9NIGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJlIHNr aXBwZWQgZHVyaW5nIHJlaW5kZXgKK1JFSU5ERVggVEFCTEUgYXV4X2luZGV4X3RhYjU7CistLSBT aG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CitSRUlOREVYIFRBQkxF IENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKK0RST1AgVEFCTEUgYXV4X2luZGV4X3RhYjU7 CisKIC0tIENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHByZXNzaW9ucyBhbmQgcHJl ZGljYXRlcy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQgaW5kZXhlcyBzaG91 bGQgbWF0Y2ggdGhlIG9yaWdpbmFsCiAtLSBkZWZpbml0aW9ucy4KLS0gCjIuNDMuMAoK --000000000000813841062b2863c9 Content-Type: application/octet-stream; name="v11-0006-Add-STIR-Short-Term-Index-Replacement-access-met.patch" Content-Disposition: attachment; filename="v11-0006-Add-STIR-Short-Term-Index-Replacement-access-met.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5n7ah9n5 RnJvbSA0ODJlOThhODg3YTQ0NDY0M2UyNzExMWM0MTcxNDlhOWVmYTQ4MzJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyMSBEZWMgMjAyNCAxODozNjoxMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjExIDA2 LzExXSBBZGQgU1RJUiAoU2hvcnQtVGVybSBJbmRleCBSZXBsYWNlbWVudCkgYWNjZXNzCiBtZXRo b2QKClRoaXMgcGF0Y2ggcHJvdmlkZXMgZm91bmRhdGlvbmFsIGluZnJhc3RydWN0dXJlIGZvciB1 cGNvbWluZyBlbmhhbmNlbWVudHMgdG8KY29uY3VycmVudCBpbmRleCBidWlsZHMgYnkgaW50cm9k dWNpbmc6CgotICoqaWlfQXV4aWxpYXJ5KiogaW4gYEluZGV4SW5mb2A6IEluZGljYXRlcyB0aGF0 IGFuIGluZGV4IGlzIGFuIGF1eGlsaWFyeQogIGluZGV4LCBzcGVjaWZpY2FsbHkgZm9yIHVzZSBk dXJpbmcgY29uY3VycmVudCBpbmRleCBidWlsZHMuCi0gKip2YWxpZGF0ZV9pbmRleCoqIGluIGBJ bmRleFZhY3V1bUluZm9gOiBTaWduYWxzIHdoZW4gYSB2YWN1dW0gb3IgY2xlYW51cAogIG9wZXJh dGlvbiBpcyB2YWxpZGF0aW5nIGEgbmV3bHkgYnVpbHQgaW5kZXggKGUuZy4sIGR1cmluZyBjb25j dXJyZW50IGJ1aWxkKS4KCkFkZGl0aW9uYWxseSwgYSBuZXcgKipTVElSIChTaG9ydC1UZXJtIElu ZGV4IFJlcGxhY2VtZW50KSoqIGFjY2VzcyBtZXRob2QgaXMKaW50cm9kdWNlZCwgaW50ZW5kZWQg c29sZWx5IGZvciBzaG9ydC1saXZlZCwgYXV4aWxpYXJ5IHVzYWdlLiBTVElSIGZ1bmN0aW9ucwph cyBhbiBlcGhlbWVyYWwgaGVscGVyIGR1cmluZyBjb25jdXJyZW50IGluZGV4IGJ1aWxkcywgdGVt cG9yYXJpbHkgc3RvcmluZyBUSURzCndpdGhvdXQgcHJvdmlkaW5nIHRoZSBmdWxsIGZlYXR1cmVz IG9mIGEgdHlwaWNhbCBpbmRleC4gQXMgc3VjaCwgaXQgcmFpc2VzCndhcm5pbmdzIG9yIGVycm9y cyB3aGVuIGFjY2Vzc2VkIG91dHNpZGUgaXRzIHNwZWNpYWxpemVkIHVzYWdlIHBhdGguCgpUaGVz ZSBjaGFuZ2VzIGxheSBlc3NlbnRpYWwgZ3JvdW5kd29yayBmb3IgZnVydGhlciBpbXByb3ZlbWVu dHMgdG8gY29uY3VycmVudAppbmRleCBidWlsZHMuCi0tLQogY29udHJpYi9wZ3N0YXR0dXBsZS9w Z3N0YXR0dXBsZS5jICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZpbGUg ICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5idWlsZCAgICAgICAgICAg fCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvTWFrZWZpbGUgICAgICAgICB8ICAxOCAr CiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9tZXNvbi5idWlsZCAgICAgIHwgICA1ICsKIHNyYy9i YWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYyAgICAgICAgICAgfCA1NzYgKysrKysrKysrKysrKysr KysrKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICB8ICAgMSArCiBzcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNz L2dlbmFtLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0 aW9ucy5oICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oICAgICAg ICAgICAgICAgIHwgMTE3ICsrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdCAgICAg ICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5kYXQgICAgICAg fCAgIDQgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQgICAgICB8ICAgMiAr CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgIHwgICA0ICsKIHNyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRl L3V0aWxzL2luZGV4X3NlbGZ1bmNzLmggICAgICAgfCAgIDggKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9hbXV0aWxzLm91dCAgICB8ICAgOCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9vcHJfc2FuaXR5Lm91dCB8ICAgNyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3Fs Lm91dCAgICAgICB8ICAyNCArLQogMjMgZmlsZXMgY2hhbmdlZCwgNzgwIGluc2VydGlvbnMoKyks IDE4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9z dGlyL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIv bWVzb24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9z dGlyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCgpkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0 YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCmluZGV4IGZmN2NjMDdkZjk5Li4wMDdlZmM0ZWQwYyAxMDA2 NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCisrKyBiL2NvbnRyaWIv cGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwpAQCAtMjgyLDYgKzI4Miw5IEBAIHBnc3RhdF9yZWxh dGlvbihSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCQkJY2FzZSBTUEdJ U1RfQU1fT0lEOgogCQkJCWVyciA9ICJzcGdpc3QgaW5kZXgiOwogCQkJCWJyZWFrOworCQkJY2Fz ZSBTVElSX0FNX09JRDoKKwkJCQllcnIgPSAic3RpciBpbmRleCI7CisJCQkJYnJlYWs7CiAJCQlj YXNlIEJSSU5fQU1fT0lEOgogCQkJCWVyciA9ICJicmluIGluZGV4IjsKIAkJCQlicmVhazsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9NYWtlZmlsZQppbmRleCAxOTMyZDExZDE1NC4uY2Q2NTI0YTU0YWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZp bGUKQEAgLTksNiArOSw2IEBAIHRvcF9idWlsZGRpciA9IC4uLy4uLy4uCiBpbmNsdWRlICQodG9w X2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiAKIFNVQkRJUlMJICAgID0gYnJpbiBjb21t b24gZ2luIGdpc3QgaGFzaCBoZWFwIGluZGV4IG5idHJlZSBybWdyZGVzYyBzcGdpc3QgXAotCQkJ ICBzZXF1ZW5jZSB0YWJsZSB0YWJsZXNhbXBsZSB0cmFuc2FtCisJCQkgIHN0aXIgc2VxdWVuY2Ug dGFibGUgdGFibGVzYW1wbGUgdHJhbnNhbQogCiBpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2Jh Y2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMDlm YWIwOGI4ZTEuLmFhZjU1ZDY4OWQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CkBAIC0yNTM4LDYgKzI1MzgsNyBAQCBsYXp5X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5k cmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCWl2aW5mby5tZXNzYWdlX2xldmVs ID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZv LnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRlZ3k7CisJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0g ZmFsc2U7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24uCkBA IC0yNTg5LDYgKzI1OTAsNyBAQCBsYXp5X2NsZWFudXBfb25lX2luZGV4KFJlbGF0aW9uIGluZHJl bCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAogCWl2aW5mby5udW1faGVhcF90dXBs ZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRlZ3k7CisJ aXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gZmFsc2U7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0 cmFjZWJhY2sgaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbWVz b24uYnVpbGQgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVpbGQKaW5kZXggN2EyZDBkZGI2 ODkuLmExNTZjZGRmZjM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbWVzb24uYnVp bGQKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL21lc29uLmJ1aWxkCkBAIC0xMSw2ICsxMSw3IEBA IHN1YmRpcignbmJ0cmVlJykKIHN1YmRpcigncm1ncmRlc2MnKQogc3ViZGlyKCdzZXF1ZW5jZScp CiBzdWJkaXIoJ3NwZ2lzdCcpCitzdWJkaXIoJ3N0aXInKQogc3ViZGlyKCd0YWJsZScpCiBzdWJk aXIoJ3RhYmxlc2FtcGxlJykKIHN1YmRpcigndHJhbnNhbScpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3Mvc3Rpci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2Vm aWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mYWU1ODk4YjhkNwot LS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlCkBAIC0w LDAgKzEsMTggQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjIE1ha2VmaWxlLS0KKyMgICAgTWFr ZWZpbGUgZm9yIGFjY2Vzcy9zdGlyCisjCisjIElERU5USUZJQ0FUSU9OCisjICAgIHNyYy9iYWNr ZW5kL2FjY2Vzcy9zdGlyL01ha2VmaWxlCisjCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdWJkaXIg PSBzcmMvYmFja2VuZC9hY2Nlc3Mvc3RpcgordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2lu Y2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKKworT0JKUyA9IFwKKwlz dGlyLm8KKworaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2NvbW1vbi5tawpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9z dGlyL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM5YzZlY2E4NDhkCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvbWVzb24uYnVpbGQKQEAgLTAsMCAr MSw1IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKworYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAorCSdzdGlyLmMnLAorKQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9z dGlyL3N0aXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODNhYTI1NTE3NmYKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMKQEAgLTAsMCArMSw1NzYgQEAKKy8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIHN0aXIuYworICoJICBJbXBsZW1lbnRhdGlvbiBvZiBTaG9y dC1UZXJtIEluZGV4IFJlcGxhY2VtZW50LgorICoKKyAqIFNUSVIgaXMgYSBzcGVjaWFsaXplZCBh Y2Nlc3MgbWV0aG9kIHR5cGUgZGVzaWduZWQgZm9yIHRlbXBvcmFyeSBzdG9yYWdlCisgKiBvZiBU SUQgdmFsdWVzIGR1cmluZyBjb25jdXJlcm50IGluZGV4IGJ1aWxkIG9wZXJhdGlvbnMuCisgKgor ICogVGhlIHR5cGljYWwgbGlmZWN5Y2xlIG9mIGEgU1RJUiBpbmRleCBpczoKKyAqIDEuIGNyZWF0 ZWQgYXMgYW4gYXV4aWxpYXJ5IGluZGV4IGZvciBDSUMvUklDCisgKiAyLiBhY2NlcHRzIGluc2Vy dHMgZm9yIGEgcGVyaW9kCisgKiAzLiBzdGlyYnVsa2RlbGV0ZSBjYWxsZWQgZHVyaW5nIGluZGV4 IHZhbGlkYXRpb24gcGhhc2UKKyAqIDUuIGdldHMgZHJvcHBlZAorICoKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNp bmNsdWRlICJhY2Nlc3Mvc3Rpci5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgorI2lu Y2x1ZGUgInV0aWxzL2luZGV4X3NlbGZ1bmNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNs YXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWlseS5oIgorI2luY2x1ZGUgInV0aWxz L2NhdGNhY2hlLmgiCisjaW5jbHVkZSAiYWNjZXNzL2FtdmFsaWRhdGUuaCIKKyNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgorI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX2FtcHJvYy5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX2Ftb3AuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWdwcm9jLmgiCisj aW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgor I2luY2x1ZGUgImFjY2Vzcy9yZWxvcHRpb25zLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMu aCIKKyNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisKKy8qCisgKiBTdGlyIGhhbmRsZXIg ZnVuY3Rpb246IHJldHVybiBJbmRleEFtUm91dGluZSB3aXRoIGFjY2VzcyBtZXRob2QgcGFyYW1l dGVycworICogYW5kIGNhbGxiYWNrcy4KKyAqLworRGF0dW0KK3N0aXJoYW5kbGVyKFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJSW5kZXhBbVJvdXRpbmUgKmFtcm91dGluZSA9IG1ha2VOb2RlKEluZGV4 QW1Sb3V0aW5lKTsKKworCS8qIFNldCBTVElSLXNwZWNpZmljIHN0cmF0ZWd5IGFuZCBwcm9jZWR1 cmUgbnVtYmVycyAqLworCWFtcm91dGluZS0+YW1zdHJhdGVnaWVzID0gU1RJUl9OU1RSQVRFR0lF UzsKKwlhbXJvdXRpbmUtPmFtc3VwcG9ydCA9IFNUSVJfTlBST0M7CisJYW1yb3V0aW5lLT5hbW9w dHNwcm9jbnVtID0gU1RJUl9PUFRJT05TX1BST0M7CisKKwkvKiBTVElSIGRvZXNuJ3Qgc3VwcG9y dCBtb3N0IGluZGV4IG9wZXJhdGlvbnMgKi8KKwlhbXJvdXRpbmUtPmFtY2Fub3JkZXIgPSBmYWxz ZTsKKwlhbXJvdXRpbmUtPmFtY2Fub3JkZXJieW9wID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNh bmJhY2t3YXJkID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbnVuaXF1ZSA9IGZhbHNlOworCWFt cm91dGluZS0+YW1jYW5tdWx0aWNvbCA9IHRydWU7CisJYW1yb3V0aW5lLT5hbW9wdGlvbmFsa2V5 ID0gdHJ1ZTsKKwlhbXJvdXRpbmUtPmFtc2VhcmNoYXJyYXkgPSBmYWxzZTsKKwlhbXJvdXRpbmUt PmFtc2VhcmNobnVsbHMgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtc3RvcmFnZSA9IGZhbHNlOwor CWFtcm91dGluZS0+YW1jbHVzdGVyYWJsZSA9IGZhbHNlOworCWFtcm91dGluZS0+YW1wcmVkbG9j a3MgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FucGFyYWxsZWwgPSBmYWxzZTsKKwlhbXJvdXRp bmUtPmFtY2FuYnVpbGRwYXJhbGxlbCA9IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5pbmNsdWRl ID0gdHJ1ZTsKKwlhbXJvdXRpbmUtPmFtdXNlbWFpbnRlbmFuY2V3b3JrbWVtID0gZmFsc2U7CisJ YW1yb3V0aW5lLT5hbXBhcmFsbGVsdmFjdXVtb3B0aW9ucyA9CisJCQlWQUNVVU1fT1BUSU9OX1BB UkFMTEVMX0JVTEtERUwgfCBWQUNVVU1fT1BUSU9OX1BBUkFMTEVMX0NMRUFOVVA7CisJYW1yb3V0 aW5lLT5hbWtleXR5cGUgPSBJbnZhbGlkT2lkOworCisJLyogU2V0IHVwIGZ1bmN0aW9uIGNhbGxi YWNrcyAqLworCWFtcm91dGluZS0+YW1idWlsZCA9IHN0aXJidWlsZDsKKwlhbXJvdXRpbmUtPmFt YnVpbGRlbXB0eSA9IHN0aXJidWlsZGVtcHR5OworCWFtcm91dGluZS0+YW1pbnNlcnQgPSBzdGly aW5zZXJ0OworCWFtcm91dGluZS0+YW1pbnNlcnRjbGVhbnVwID0gTlVMTDsKKwlhbXJvdXRpbmUt PmFtYnVsa2RlbGV0ZSA9IHN0aXJidWxrZGVsZXRlOworCWFtcm91dGluZS0+YW12YWN1dW1jbGVh bnVwID0gc3RpcnZhY3V1bWNsZWFudXA7CisJYW1yb3V0aW5lLT5hbWNhbnJldHVybiA9IE5VTEw7 CisJYW1yb3V0aW5lLT5hbWNvc3Rlc3RpbWF0ZSA9IHN0aXJjb3N0ZXN0aW1hdGU7CisJYW1yb3V0 aW5lLT5hbW9wdGlvbnMgPSBzdGlyb3B0aW9uczsKKwlhbXJvdXRpbmUtPmFtcHJvcGVydHkgPSBO VUxMOworCWFtcm91dGluZS0+YW1idWlsZHBoYXNlbmFtZSA9IE5VTEw7CisJYW1yb3V0aW5lLT5h bXZhbGlkYXRlID0gc3RpcnZhbGlkYXRlOworCWFtcm91dGluZS0+YW1hZGp1c3RtZW1iZXJzID0g TlVMTDsKKwlhbXJvdXRpbmUtPmFtYmVnaW5zY2FuID0gc3RpcmJlZ2luc2NhbjsKKwlhbXJvdXRp bmUtPmFtcmVzY2FuID0gc3RpcnJlc2NhbjsKKwlhbXJvdXRpbmUtPmFtZ2V0dHVwbGUgPSBOVUxM OworCWFtcm91dGluZS0+YW1nZXRiaXRtYXAgPSBOVUxMOworCWFtcm91dGluZS0+YW1lbmRzY2Fu ID0gc3RpcmVuZHNjYW47CisJYW1yb3V0aW5lLT5hbW1hcmtwb3MgPSBOVUxMOworCWFtcm91dGlu ZS0+YW1yZXN0cnBvcyA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWVzdGltYXRlcGFyYWxsZWxzY2Fu ID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtaW5pdHBhcmFsbGVsc2NhbiA9IE5VTEw7CisJYW1yb3V0 aW5lLT5hbXBhcmFsbGVscmVzY2FuID0gTlVMTDsKKworCVBHX1JFVFVSTl9QT0lOVEVSKGFtcm91 dGluZSk7Cit9CisKKy8qCisgKiBWYWxpZGF0ZXMgb3BlcmF0b3IgY2xhc3MgZm9yIFNUSVIgaW5k ZXguCisgKgorICogU1RJUiBpcyBub3QgYW4gcmVhbCBpbmRleCwgc28gdmFsaWRhdGlvIG1heSBi ZSBza2lwcGVkLgorICogQnV0IHdlIGRvIGl0IGp1c3QgZm9yIGNvbnNpc3RlbmN5LgorICovCiti b29sCitzdGlydmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCit7CisJYm9vbCByZXN1bHQgPSB0cnVl OworCUhlYXBUdXBsZSBjbGFzc3R1cDsKKwlGb3JtX3BnX29wY2xhc3MgY2xhc3Nmb3JtOworCU9p ZCBvcGZhbWlseW9pZDsKKwlIZWFwVHVwbGUgZmFtaWx5dHVwOworCUZvcm1fcGdfb3BmYW1pbHkg ZmFtaWx5Zm9ybTsKKwljaGFyICpvcGZhbWlseW5hbWU7CisJQ2F0Q0xpc3QgKnByb2NsaXN0LAor CQkJKm9wcmxpc3Q7CisJaW50IGk7CisKKwkvKiBGZXRjaCBvcGNsYXNzIGluZm9ybWF0aW9uICov CisJY2xhc3N0dXAgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBPYmplY3RJZEdldERhdHVtKG9w Y2xhc3NvaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY2xhc3N0dXApKQorCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0b3IgY2xhc3MgJXUiLCBvcGNsYXNz b2lkKTsKKwljbGFzc2Zvcm0gPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJVQ1QoY2xhc3N0dXAp OworCisJb3BmYW1pbHlvaWQgPSBjbGFzc2Zvcm0tPm9wY2ZhbWlseTsKKworCisJLyogRmV0Y2gg b3BmYW1pbHkgaW5mb3JtYXRpb24gKi8KKwlmYW1pbHl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoT1BG QU1JTFlPSUQsIE9iamVjdElkR2V0RGF0dW0ob3BmYW1pbHlvaWQpKTsKKwlpZiAoIUhlYXBUdXBs ZUlzVmFsaWQoZmFtaWx5dHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQg Zm9yIG9wZXJhdG9yIGZhbWlseSAldSIsIG9wZmFtaWx5b2lkKTsKKwlmYW1pbHlmb3JtID0gKEZv cm1fcGdfb3BmYW1pbHkpIEdFVFNUUlVDVChmYW1pbHl0dXApOworCisJb3BmYW1pbHluYW1lID0g TmFtZVN0cihmYW1pbHlmb3JtLT5vcGZuYW1lKTsKKworCS8qIEZldGNoIGFsbCBvcGVyYXRvcnMg YW5kIHN1cHBvcnQgZnVuY3Rpb25zIG9mIHRoZSBvcGZhbWlseSAqLworCW9wcmxpc3QgPSBTZWFy Y2hTeXNDYWNoZUxpc3QxKEFNT1BTVFJBVEVHWSwgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseW9p ZCkpOworCXByb2NsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0MShBTVBST0NOVU0sIE9iamVjdElk R2V0RGF0dW0ob3BmYW1pbHlvaWQpKTsKKworCS8qIENoZWNrIGluZGl2aWR1YWwgb3BlcmF0b3Jz ICovCisJZm9yIChpID0gMDsgaSA8IG9wcmxpc3QtPm5fbWVtYmVyczsgaSsrKQorCXsKKwkJSGVh cFR1cGxlIG9wcnR1cCA9ICZvcHJsaXN0LT5tZW1iZXJzW2ldLT50dXBsZTsKKwkJRm9ybV9wZ19h bW9wIG9wcmZvcm0gPSAoRm9ybV9wZ19hbW9wKSBHRVRTVFJVQ1Qob3BydHVwKTsKKworCQkvKiBD aGVjayBpdCdzIGFsbG93ZWQgc3RyYXRlZ3kgZm9yIHN0aXIgKi8KKwkJaWYgKG9wcmZvcm0tPmFt b3BzdHJhdGVneSA8IDEgfHwKKwkJCW9wcmZvcm0tPmFtb3BzdHJhdGVneSA+IFNUSVJfTlNUUkFU RUdJRVMpCisJCXsKKwkJCWVyZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIgb3BmYW1pbHkgJXMg Y29udGFpbnMgb3BlcmF0b3IgJXMgd2l0aCBpbnZhbGlkIHN0cmF0ZWd5IG51bWJlciAlZCIsCisJ CQkJCQkJCSAgIG9wZmFtaWx5bmFtZSwKKwkJCQkJCQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZv cm0tPmFtb3BvcHIpLAorCQkJCQkJCQkgICBvcHJmb3JtLT5hbW9wc3RyYXRlZ3kpKSk7CisJCQly ZXN1bHQgPSBmYWxzZTsKKwkJfQorCisJCS8qIHN0aXIgZG9lc24ndCBzdXBwb3J0IE9SREVSIEJZ IG9wZXJhdG9ycyAqLworCQlpZiAob3ByZm9ybS0+YW1vcHB1cnBvc2UgIT0gQU1PUF9TRUFSQ0gg fHwKKwkJCU9pZElzVmFsaWQob3ByZm9ybS0+YW1vcHNvcnRmYW1pbHkpKQorCQl7CisJCQllcmVw b3J0KElORk8sCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElP TiksCisJCQkJCQkJZXJybXNnKCJzdGlyIG9wZmFtaWx5ICVzIGNvbnRhaW5zIGludmFsaWQgT1JE RVIgQlkgc3BlY2lmaWNhdGlvbiBmb3Igb3BlcmF0b3IgJXMiLAorCQkJCQkJCQkgICBvcGZhbWls eW5hbWUsCisJCQkJCQkJCSAgIGZvcm1hdF9vcGVyYXRvcihvcHJmb3JtLT5hbW9wb3ByKSkpKTsK KwkJCXJlc3VsdCA9IGZhbHNlOworCQl9CisKKwkJLyogQ2hlY2sgb3BlcmF0b3Igc2lnbmF0dXJl IC0tLSBzYW1lIGZvciBhbGwgc3RpciBzdHJhdGVnaWVzICovCisJCWlmICghY2hlY2tfYW1vcF9z aWduYXR1cmUob3ByZm9ybS0+YW1vcG9wciwgQk9PTE9JRCwKKwkJCQkJCQkJICBvcHJmb3JtLT5h bW9wbGVmdHR5cGUsCisJCQkJCQkJCSAgb3ByZm9ybS0+YW1vcHJpZ2h0dHlwZSkpCisJCXsKKwkJ CWVyZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJ TklUSU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIgb3BmYW1pbHkgJXMgY29udGFpbnMgb3BlcmF0 b3IgJXMgd2l0aCB3cm9uZyBzaWduYXR1cmUiLAorCQkJCQkJCQkgICBvcGZhbWlseW5hbWUsCisJ CQkJCQkJCSAgIGZvcm1hdF9vcGVyYXRvcihvcHJmb3JtLT5hbW9wb3ByKSkpKTsKKwkJCXJlc3Vs dCA9IGZhbHNlOworCQl9CisJfQorCisKKwlSZWxlYXNlQ2F0Q2FjaGVMaXN0KHByb2NsaXN0KTsK KwlSZWxlYXNlQ2F0Q2FjaGVMaXN0KG9wcmxpc3QpOworCVJlbGVhc2VTeXNDYWNoZShmYW1pbHl0 dXApOworCVJlbGVhc2VTeXNDYWNoZShjbGFzc3R1cCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQor CisKKy8qCisgKiBJbml0aWFsaXplIG1ldGFwYWdlIG9mIGEgU1RJUiBpbmRleC4KKyAqIFRoZSBz a2lwSW5zZXJ0cyBmbGFnIGRldGVybWluZXMgaWYgbmV3IGluc2VydHMgd2lsbCBiZSBhY2NlcHRl ZCBvciBza2lwcGVkLgorICovCit2b2lkCitTdGlyRmlsbE1ldGFwYWdlKFJlbGF0aW9uIGluZGV4 LCBQYWdlIG1ldGFQYWdlLCBib29sIHNraXBJbnNlcnRzKQoreworCVN0aXJNZXRhUGFnZURhdGEg Km1ldGFkYXRhOworCisJU3RpckluaXRQYWdlKG1ldGFQYWdlLCBTVElSX01FVEEpOworCW1ldGFk YXRhID0gU3RpclBhZ2VHZXRNZXRhKG1ldGFQYWdlKTsKKwltZW1zZXQobWV0YWRhdGEsIDAsIHNp emVvZihTdGlyTWV0YVBhZ2VEYXRhKSk7CisJbWV0YWRhdGEtPm1hZ2lja051bWJlciA9IFNUSVJf TUFHSUNLX05VTUJFUjsKKwltZXRhZGF0YS0+c2tpcEluc2VydHMgPSBza2lwSW5zZXJ0czsKKwko KFBhZ2VIZWFkZXIpIG1ldGFQYWdlKS0+cGRfbG93ZXIgKz0gc2l6ZW9mKFN0aXJNZXRhUGFnZURh dGEpOworfQorCisvKgorICogQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBtZXRhcGFnZSBmb3Ig YSBTVElSIGluZGV4LgorICogVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGluZGV4IGNyZWF0aW9uLgor ICovCit2b2lkCitTdGlySW5pdE1ldGFwYWdlKFJlbGF0aW9uIGluZGV4LCBGb3JrTnVtYmVyIGZv cmtudW0pCit7CisJQnVmZmVyIG1ldGFCdWZmZXI7CisJUGFnZSBtZXRhUGFnZTsKKwlHZW5lcmlj WExvZ1N0YXRlICpzdGF0ZTsKKworCS8qCisJICogTWFrZSBhIG5ldyBwYWdlOyBzaW5jZSBpdCBp cyBmaXJzdCBwYWdlIGl0IHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGgKKwkgKiBibG9jayBudW1i ZXIgMCAoU1RJUl9NRVRBUEFHRV9CTEtOTykuICBObyBuZWVkIHRvIGhvbGQgdGhlIGV4dGVuc2lv bgorCSAqIGxvY2sgYmVjYXVzZSB0aGVyZSBjYW5ub3QgYmUgY29uY3VycmVudCBpbnNlcnRlcnMg eWV0LgorCSAqLworCW1ldGFCdWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoaW5kZXgsIGZvcmtu dW0sIFBfTkVXLCBSQk1fTk9STUFMLCBOVUxMKTsKKwlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJV RkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJQXNzZXJ0KEJ1ZmZlckdldEJsb2NrTnVtYmVyKG1ldGFC dWZmZXIpID09IFNUSVJfTUVUQVBBR0VfQkxLTk8pOworCisJLyogSW5pdGlhbGl6ZSBjb250ZW50 cyBvZiBtZXRhIHBhZ2UgKi8KKwlzdGF0ZSA9IEdlbmVyaWNYTG9nU3RhcnQoaW5kZXgpOworCW1l dGFQYWdlID0gR2VuZXJpY1hMb2dSZWdpc3RlckJ1ZmZlcihzdGF0ZSwgbWV0YUJ1ZmZlciwKKwkJ CQkJCQkJCQkgR0VORVJJQ19YTE9HX0ZVTExfSU1BR0UpOworCVN0aXJGaWxsTWV0YXBhZ2UoaW5k ZXgsIG1ldGFQYWdlLCBmb3JrbnVtID09IElOSVRfRk9SS05VTSk7CisJR2VuZXJpY1hMb2dGaW5p c2goc3RhdGUpOworCisJVW5sb2NrUmVsZWFzZUJ1ZmZlcihtZXRhQnVmZmVyKTsKK30KKworLyoK KyAqIEluaXRpYWxpemUgYW55IHBhZ2Ugb2YgYSBzdGlyIGluZGV4LgorICovCit2b2lkCitTdGly SW5pdFBhZ2UoUGFnZSBwYWdlLCB1aW50MTYgZmxhZ3MpCit7CisJU3RpclBhZ2VPcGFxdWUgb3Bh cXVlOworCisJUGFnZUluaXQocGFnZSwgQkxDS1NaLCBzaXplb2YoU3RpclBhZ2VPcGFxdWVEYXRh KSk7CisKKwlvcGFxdWUgPSBTdGlyUGFnZUdldE9wYXF1ZShwYWdlKTsKKwlvcGFxdWUtPmZsYWdz ID0gZmxhZ3M7CisJb3BhcXVlLT5zdGlyX3BhZ2VfaWQgPSBTVElSX1BBR0VfSUQ7Cit9CisKKy8q CisgKiBBZGQgYSB0dXBsZSB0byBhIFNUSVIgcGFnZS4gUmV0dXJucyBmYWxzZSBpZiB0dXBsZSBk b2Vzbid0IGZpdC4KKyAqIFRoZSB0dXBsZSBpcyBhZGRlZCB0byB0aGUgZW5kIG9mIHRoZSBwYWdl LgorICovCitzdGF0aWMgYm9vbAorU3RpclBhZ2VBZGRJdGVtKFBhZ2UgcGFnZSwgU3RpclR1cGxl ICp0dXBsZSkKK3sKKwlTdGlyVHVwbGUgKml0dXA7CisJU3RpclBhZ2VPcGFxdWUgb3BhcXVlOwor CVBvaW50ZXIgcHRyOworCisJLyogV2Ugc2hvdWxkbid0IGJlIHBvaW50ZWQgdG8gYW4gaW52YWxp ZCBwYWdlICovCisJQXNzZXJ0KCFQYWdlSXNOZXcocGFnZSkpOworCisJLyogRG9lcyBuZXcgdHVw bGUgZml0IG9uIHRoZSBwYWdlPyAqLworCWlmIChTdGlyUGFnZUdldEZyZWVTcGFjZShzdGF0ZSwg cGFnZSkgPCBzaXplb2YoU3RpclR1cGxlKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogQ29weSBu ZXcgdHVwbGUgdG8gdGhlIGVuZCBvZiBwYWdlICovCisJb3BhcXVlID0gU3RpclBhZ2VHZXRPcGFx dWUocGFnZSk7CisJaXR1cCA9IFN0aXJQYWdlR2V0VHVwbGUocGFnZSwgb3BhcXVlLT5tYXhvZmYg KyAxKTsKKwltZW1jcHkoKFBvaW50ZXIpIGl0dXAsIChQb2ludGVyKSB0dXBsZSwgc2l6ZW9mKFN0 aXJUdXBsZSkpOworCisJLyogQWRqdXN0IG1heG9mZiBhbmQgcGRfbG93ZXIgKi8KKwlvcGFxdWUt Pm1heG9mZisrOworCXB0ciA9IChQb2ludGVyKSBTdGlyUGFnZUdldFR1cGxlKHBhZ2UsIG9wYXF1 ZS0+bWF4b2ZmICsgMSk7CisJKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfbG93ZXIgPSBwdHIgLSBw YWdlOworCisJLyogQXNzZXJ0IHdlIGRpZG4ndCBvdmVycnVuIGF2YWlsYWJsZSBzcGFjZSAqLwor CUFzc2VydCgoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9sb3dlciA8PSAoKFBhZ2VIZWFkZXIpIHBh Z2UpLT5wZF91cHBlcik7CisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBJbnNlcnQgYSBuZXcg dHVwbGUgaW50byBhIFNUSVIgaW5kZXguCisgKi8KK2Jvb2wKK3N0aXJpbnNlcnQoUmVsYXRpb24g aW5kZXgsIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCwKKwkJICBJdGVtUG9pbnRlciBodF9j dGlkLCBSZWxhdGlvbiBoZWFwUmVsLAorCQkgIEluZGV4VW5pcXVlQ2hlY2sgY2hlY2tVbmlxdWUs CisJCSAgYm9vbCBpbmRleFVuY2hhbmdlZCwKKwkJICBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleElu Zm8pCit7CisJU3RpclR1cGxlICppdHVwOworCU1lbW9yeUNvbnRleHQgb2xkQ3R4OworCU1lbW9y eUNvbnRleHQgaW5zZXJ0Q3R4OworCVN0aXJNZXRhUGFnZURhdGEgKm1ldGFEYXRhOworCUJ1ZmZl ciBidWZmZXIsCisJCQltZXRhQnVmZmVyOworCVBhZ2UgcGFnZTsKKwlHZW5lcmljWExvZ1N0YXRl ICpzdGF0ZTsKKwl1aW50MTYgYmxrTm87CisKKwkvKiBDcmVhdGUgdGVtcG9yYXJ5IGNvbnRleHQg Zm9yIGluc2VydCBvcGVyYXRpb24gKi8KKwlpbnNlcnRDdHggPSBBbGxvY1NldENvbnRleHRDcmVh dGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkgICJTdGlyIGluc2VydCB0ZW1wb3Jh cnkgY29udGV4dCIsCisJCQkJCQkJCQkgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJb2xk Q3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGluc2VydEN0eCk7CisKKwkvKiBDcmVhdGUgbmV3 IHR1cGxlIHdpdGggaGVhcCBwb2ludGVyICovCisJaXR1cCA9IChTdGlyVHVwbGUgKikgcGFsbG9j MChzaXplb2YoU3RpclR1cGxlKSk7CisJaXR1cC0+aGVhcFB0ciA9ICpodF9jdGlkOworCisJbWV0 YUJ1ZmZlciA9IFJlYWRCdWZmZXIoaW5kZXgsIFNUSVJfTUVUQVBBR0VfQkxLTk8pOworCisJZm9y ICg7OykKKwl7CisJCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xPQ0tfU0hBUkUpOwor CQltZXRhRGF0YSA9IFN0aXJQYWdlR2V0TWV0YShCdWZmZXJHZXRQYWdlKG1ldGFCdWZmZXIpKTsK KwkJLyogQ2hlY2sgaWYgaW5zZXJ0cyBhcmUgYWxsb3dlZCAqLworCQlpZiAobWV0YURhdGEtPnNr aXBJbnNlcnRzKQorCQl7CisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKG1ldGFCdWZmZXIpOworCQkJ cmV0dXJuIGZhbHNlOworCQl9CisJCWJsa05vID0gbWV0YURhdGEtPmxhc3RCbGtObzsKKwkJLyog RG9uJ3QgaG9sZCBtZXRhYnVmZmVyIGxvY2sgd2hpbGUgZG9pbmcgaW5zZXJ0ICovCisJCUxvY2tC dWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKworCQlpZiAoYmxrTm8gPiAw KQorCQl7CisJCQlidWZmZXIgPSBSZWFkQnVmZmVyKGluZGV4LCBibGtObyk7CisJCQlMb2NrQnVm ZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKKworCQkJc3RhdGUgPSBHZW5lcmlj WExvZ1N0YXJ0KGluZGV4KTsKKwkJCXBhZ2UgPSBHZW5lcmljWExvZ1JlZ2lzdGVyQnVmZmVyKHN0 YXRlLCBidWZmZXIsIDApOworCisJCQlBc3NlcnQoIVBhZ2VJc05ldyhwYWdlKSk7CisKKwkJCS8q IFRyeSB0byBhZGQgdHVwbGUgdG8gZXhpc3RpbmcgcGFnZSAqLworCQkJaWYgKFN0aXJQYWdlQWRk SXRlbShwYWdlLCBpdHVwKSkKKwkJCXsKKwkJCQkvKiBTdWNjZXNzISAgQXBwbHkgdGhlIGNoYW5n ZSwgY2xlYW4gdXAsIGFuZCBleGl0ICovCisJCQkJR2VuZXJpY1hMb2dGaW5pc2goc3RhdGUpOwor CQkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJCQlSZWxlYXNlQnVmZmVyKG1ldGFC dWZmZXIpOworCQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDdHgpOworCQkJCU1lbW9yeUNv bnRleHREZWxldGUoaW5zZXJ0Q3R4KTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisKKwkJCS8q IERpZG4ndCBmaXQsIG11c3QgdHJ5IG90aGVyIHBhZ2VzICovCisJCQlHZW5lcmljWExvZ0Fib3J0 KHN0YXRlKTsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJfQorCisJCS8qIE5l ZWQgdG8gYWRkIG5ldyBwYWdlIC0gZ2V0IGV4Y2x1c2l2ZSBsb2NrIG9uIG1ldGEgcGFnZSAqLwor CQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisKKwkJc3Rh dGUgPSBHZW5lcmljWExvZ1N0YXJ0KGluZGV4KTsKKwkJbWV0YURhdGEgPSBTdGlyUGFnZUdldE1l dGEoR2VuZXJpY1hMb2dSZWdpc3RlckJ1ZmZlcihzdGF0ZSwgbWV0YUJ1ZmZlciwgR0VORVJJQ19Y TE9HX0ZVTExfSU1BR0UpKTsKKwkJLyogQ2hlY2sgaWYgYW5vdGhlciBiYWNrZW5kIGFscmVhZHkg ZXh0ZW5kZWQgdGhlIGluZGV4ICovCisKKwkJaWYgKGJsa05vICE9IG1ldGFEYXRhLT5sYXN0Qmxr Tm8pCisJCXsKKwkJCUFzc2VydChibGtObyA8IG1ldGFEYXRhLT5sYXN0QmxrTm8pOworCQkJLyog U29tZW9uZSBlbHNlIGluc2VydGVkIHRoZSBuZXcgcGFnZSBpbnRvIHRoZSBpbmRleCwgbGV0cyB0 cnkgYWdhaW4gLworCQkJICovCisJCQlHZW5lcmljWExvZ0Fib3J0KHN0YXRlKTsKKwkJCUxvY2tC dWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJCWNvbnRpbnVlOworCQl9 CisJCWVsc2UKKwkJeworCQkJLyogTXVzdCBleHRlbmQgdGhlIGZpbGUgKi8KKwkJCWJ1ZmZlciA9 IEV4dGVuZEJ1ZmZlcmVkUmVsKEJNUl9SRUwoaW5kZXgpLCBNQUlOX0ZPUktOVU0sIE5VTEwsCisJ CQkJCQkJCQkgICBFQl9MT0NLX0ZJUlNUKTsKKworCQkJcGFnZSA9IEdlbmVyaWNYTG9nUmVnaXN0 ZXJCdWZmZXIoc3RhdGUsIGJ1ZmZlciwgR0VORVJJQ19YTE9HX0ZVTExfSU1BR0UpOworCQkJU3Rp ckluaXRQYWdlKHBhZ2UsIDApOworCisJCQlpZiAoIVN0aXJQYWdlQWRkSXRlbShwYWdlLCBpdHVw KSkKKwkJCXsKKwkJCQkvKiBXZSBzaG91bGRuJ3QgYmUgaGVyZSBzaW5jZSB3ZSdyZSBpbnNlcnRp bmcgdG8gYW4gZW1wdHkgcGFnZSAqLworCQkJCWVsb2coRVJST1IsICJjb3VsZCBub3QgYWRkIG5l dyBzdGlyIHR1cGxlIHRvIGVtcHR5IHBhZ2UiKTsKKwkJCX0KKworCQkJLyogVXBkYXRlIG1ldGEg cGFnZSB3aXRoIG5ldyBsYXN0IGJsb2NrIG51bWJlciAqLworCQkJbWV0YURhdGEtPmxhc3RCbGtO byA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlcik7CisJCQlHZW5lcmljWExvZ0ZpbmlzaChz dGF0ZSk7CisKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJCVVubG9ja1JlbGVh c2VCdWZmZXIobWV0YUJ1ZmZlcik7CisKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDdHgp OworCQkJTWVtb3J5Q29udGV4dERlbGV0ZShpbnNlcnRDdHgpOworCisJCQlyZXR1cm4gZmFsc2U7 CisJCX0KKwl9Cit9CisKKy8qCisgKiBTVElSIGRvZXNuJ3Qgc3VwcG9ydCBzY2FucyAtIHRoZXNl IGZ1bmN0aW9ucyBhbGwgZXJyb3Igb3V0CisgKi8KK0luZGV4U2NhbkRlc2Mgc3RpcmJlZ2luc2Nh bihSZWxhdGlvbiByLCBpbnQgbmtleXMsIGludCBub3JkZXJieXMpCit7CisJZXJlcG9ydChFUlJP UiwgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNc IiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30KKwordm9pZAorc3Rp cnJlc2NhbihJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5LZXkgc2NhbmtleSwgaW50IG5zY2Fua2V5 cywKKwkJICBTY2FuS2V5IG9yZGVyYnlzLCBpbnQgbm9yZGVyYnlzKQoreworCWVyZXBvcnQoRVJS T1IsIChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJcIiVz XCIgaXMgbm90IGEgbm90IGltcGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9CisKK3ZvaWQgc3Rp cmVuZHNjYW4oSW5kZXhTY2FuRGVzYyBzY2FuKQoreworCWVyZXBvcnQoRVJST1IsIChlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEg bm90IGltcGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9CisKKy8qCisgKiBCdWlsZCBhIFNUSVIg aW5kZXggLSBvbmx5IGFsbG93ZWQgZm9yIGF1eGlsaWFyeSBpbmRleGVzLgorICogSnVzdCBpbml0 aWFsaXplcyB0aGUgbWV0YSBwYWdlIHdpdGhvdXQgYW55IGhlYXAgc2NhbnMuCisgKi8KK0luZGV4 QnVpbGRSZXN1bHQgKnN0aXJidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKKwkJ CQkJCSAgIHN0cnVjdCBJbmRleEluZm8gKmluZGV4SW5mbykKK3sKKwlJbmRleEJ1aWxkUmVzdWx0 ICpyZXN1bHQ7CisKKwlpZiAoIWluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KQorCQllcmVwb3J0KEVS Uk9SLCAoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiU1RJ UiBpbmRleGVzIGFyZSBub3Qgc3VwcG9ydGVkIHRvIGJlIGJ1aWx0IikpKTsKKworCVN0aXJJbml0 TWV0YXBhZ2UoaW5kZXgsIE1BSU5fRk9SS05VTSk7CisKKwlyZXN1bHQgPSAoSW5kZXhCdWlsZFJl c3VsdCAqKSBwYWxsb2Moc2l6ZW9mKEluZGV4QnVpbGRSZXN1bHQpKTsKKwlyZXN1bHQtPmhlYXBf dHVwbGVzID0gMDsKKwlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IDA7CisJcmV0dXJuIHJlc3VsdDsK K30KKwordm9pZCBzdGlyYnVpbGRlbXB0eShSZWxhdGlvbiBpbmRleCkKK3sKKwlTdGlySW5pdE1l dGFwYWdlKGluZGV4LCBJTklUX0ZPUktOVU0pOworfQorCitJbmRleEJ1bGtEZWxldGVSZXN1bHQg KnN0aXJidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywKKwkJCQkJCQkJCSBJbmRleEJ1 bGtEZWxldGVSZXN1bHQgKnN0YXRzLAorCQkJCQkJCQkJIEluZGV4QnVsa0RlbGV0ZUNhbGxiYWNr IGNhbGxiYWNrLAorCQkJCQkJCQkJIHZvaWQgKmNhbGxiYWNrX3N0YXRlKQoreworCVJlbGF0aW9u IGluZGV4ID0gaW5mby0+aW5kZXg7CisJQmxvY2tOdW1iZXIgYmxrbm8sIG5wYWdlczsKKwlCdWZm ZXIgYnVmZmVyOworCVBhZ2UgcGFnZTsKKworCS8qIEZvciBub3JtYWwgVkFDVVVNLCBtYXJrIHRv IHNraXAgaW5zZXJ0cyBhbmQgd2FybiBhYm91dCBpbmRleCBkcm9wIG5lZWRlZCAqLworCWlmICgh aW5mby0+dmFsaWRhdGVfaW5kZXgpCisJeworCQlTdGlyTWFya0FzU2tpcEluc2VydHMoaW5kZXgp OworCisJCWVyZXBvcnQoV0FSTklORywgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCWVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5vdCBpbXBsZW1lbnRlZCwgc2Vl bXMgbGlrZSB0aGlzIGluZGV4IG5lZWQgdG8gYmUgZHJvcHBlZCIsIF9fZnVuY19fKSkpOworCQly ZXR1cm4gTlVMTDsKKwl9CisKKwlpZiAoc3RhdHMgPT0gTlVMTCkKKwkJc3RhdHMgPSAoSW5kZXhC dWxrRGVsZXRlUmVzdWx0ICopIHBhbGxvYzAoc2l6ZW9mKEluZGV4QnVsa0RlbGV0ZVJlc3VsdCkp OworCisJLyoKKwkgKiBJdGVyYXRlIG92ZXIgdGhlIHBhZ2VzLiBXZSBkb24ndCBjYXJlIGFib3V0 IGNvbmN1cnJlbnRseSBhZGRlZCBwYWdlcywKKwkgKiBiZWNhdXNlIGluZGV4IGlzIG1hcmtlZCBh cyBub3QtcmVhZHkgZm9yIHRoYXQgbW9tbWVudCBhbmQgaW5kZXggbm90CisJICogdXNlZCBmb3Ig aW5zZXJ0LgorCSAqLworCW5wYWdlcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3MoaW5kZXgp OworCWZvciAoYmxrbm8gPSBTVElSX0hFQURfQkxLTk87IGJsa25vIDwgbnBhZ2VzOyBibGtubysr KQorCXsKKwkJU3RpclR1cGxlICppdHVwLCAqaXR1cEVuZDsKKworCQl2YWN1dW1fZGVsYXlfcG9p bnQoKTsKKworCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoaW5kZXgsIE1BSU5fRk9SS05V TSwgYmxrbm8sCisJCQkJCQkJCQlSQk1fTk9STUFMLCBpbmZvLT5zdHJhdGVneSk7CisKKwkJTG9j a0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1NIQVJFKTsKKwkJcGFnZSA9IEJ1ZmZlckdldFBh Z2UoYnVmZmVyKTsKKworCQlpZiAoUGFnZUlzTmV3KHBhZ2UpKQorCQl7CisJCQlVbmxvY2tSZWxl YXNlQnVmZmVyKGJ1ZmZlcik7CisJCQljb250aW51ZTsKKwkJfQorCisJCWl0dXAgPSBTdGlyUGFn ZUdldFR1cGxlKHBhZ2UsIEZpcnN0T2Zmc2V0TnVtYmVyKTsKKwkJaXR1cEVuZCA9IFN0aXJQYWdl R2V0VHVwbGUocGFnZSwgT2Zmc2V0TnVtYmVyTmV4dChTdGlyUGFnZUdldE1heE9mZnNldChwYWdl KSkpOworCQl3aGlsZSAoaXR1cCA8IGl0dXBFbmQpCisJCXsKKwkJCS8qIERvIHdlIGhhdmUgdG8g ZGVsZXRlIHRoaXMgdHVwbGU/ICovCisJCQlpZiAoY2FsbGJhY2soJml0dXAtPmhlYXBQdHIsIGNh bGxiYWNrX3N0YXRlKSkKKwkJCXsKKwkJCQllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygid2UgbmV2ZXIgZGVsZXRlIGluIHN0aXIi KSkpOworCQkJfQorCisJCQlpdHVwID0gU3RpclBhZ2VHZXROZXh0VHVwbGUoaXR1cCk7CisJCX0K KworCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJfQorCisJcmV0dXJuIHN0YXRzOwor fQorCisvKgorICogTWFyayBhIFNUSVIgaW5kZXggdG8gc2tpcCBmdXR1cmUgaW5zZXJ0cworICov Cit2b2lkIFN0aXJNYXJrQXNTa2lwSW5zZXJ0cyhSZWxhdGlvbiBpbmRleCkKK3sKKwlTdGlyTWV0 YVBhZ2VEYXRhICptZXRhRGF0YTsKKwlCdWZmZXIgbWV0YUJ1ZmZlcjsKKwlQYWdlIG1ldGFQYWdl OworCUdlbmVyaWNYTG9nU3RhdGUgKnN0YXRlOworCisJbWV0YUJ1ZmZlciA9IFJlYWRCdWZmZXIo aW5kZXgsIFNUSVJfTUVUQVBBR0VfQkxLTk8pOworCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVG RkVSX0xPQ0tfRVhDTFVTSVZFKTsKKworCXN0YXRlID0gR2VuZXJpY1hMb2dTdGFydChpbmRleCk7 CisJbWV0YVBhZ2UgPSBHZW5lcmljWExvZ1JlZ2lzdGVyQnVmZmVyKHN0YXRlLCBtZXRhQnVmZmVy LAorCQkJCQkJCQkJCSBHRU5FUklDX1hMT0dfRlVMTF9JTUFHRSk7CisJbWV0YURhdGEgPSBTdGly UGFnZUdldE1ldGEobWV0YVBhZ2UpOworCWlmICghbWV0YURhdGEtPnNraXBJbnNlcnRzKQorCXsK KwkJbWV0YURhdGEtPnNraXBJbnNlcnRzID0gdHJ1ZTsKKwkJR2VuZXJpY1hMb2dGaW5pc2goc3Rh dGUpOworCX0KKwllbHNlCisJeworCQlHZW5lcmljWExvZ0Fib3J0KHN0YXRlKTsKKwl9CisJVW5s b2NrUmVsZWFzZUJ1ZmZlcihtZXRhQnVmZmVyKTsKK30KKworSW5kZXhCdWxrRGVsZXRlUmVzdWx0 ICpzdGlydmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sCisJCQkJCQkJCQkJSW5k ZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKK3sKKwlTdGlyTWFya0FzU2tpcEluc2VydHMoaW5m by0+aW5kZXgpOworCWVyZXBvcnQoV0FSTklORywgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLAorCQkJZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgbm90IGltcGxlbWVudGVk LCBzZWVtcyBsaWtlIHRoaXMgaW5kZXggbmVlZCB0byBiZSBkcm9wcGVkIiwgX19mdW5jX18pKSk7 CisJcmV0dXJuIE5VTEw7Cit9CisKK2J5dGVhICpzdGlyb3B0aW9ucyhEYXR1bSByZWxvcHRpb25z LCBib29sIHZhbGlkYXRlKQoreworCXJldHVybiBOVUxMOworfQorCit2b2lkIHN0aXJjb3N0ZXN0 aW1hdGUoUGxhbm5lckluZm8gKnJvb3QsIEluZGV4UGF0aCAqcGF0aCwKKwkJCQkJIGRvdWJsZSBs b29wX2NvdW50LCBDb3N0ICppbmRleFN0YXJ0dXBDb3N0LAorCQkJCQkgQ29zdCAqaW5kZXhUb3Rh bENvc3QsIFNlbGVjdGl2aXR5ICppbmRleFNlbGVjdGl2aXR5LAorCQkJCQkgZG91YmxlICppbmRl eENvcnJlbGF0aW9uLCBkb3VibGUgKmluZGV4UGFnZXMpCit7CisJZXJlcG9ydChFUlJPUiwgKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlwiJXNcIiBpcyBu b3QgYSBub3QgaW1wbGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30KXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggZDkzN2JhNjVjOWMuLjJkYmY4ZjgyMTQxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9pbmRleC5jCkBAIC0zNDAzLDYgKzM0MDMsNyBAQCB2YWxpZGF0ZV9pbmRleChPaWQg aGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJaXZpbmZvLm1lc3NhZ2Vf bGV2ZWwgPSBERUJVRzI7CiAJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9IGhlYXBSZWxhdGlvbi0+ cmRfcmVsLT5yZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gTlVMTDsKKwlpdmluZm8udmFs aWRhdGVfaW5kZXggPSB0cnVlOwogCiAJLyoKIAkgKiBFbmNvZGUgVElEcyBhcyBpbnQ4IHZhbHVl cyBmb3IgdGhlIHNvcnQsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHNvcnRpbmcKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Fu YWx5emUuYwppbmRleCAyYTc3NjliMWZkMS4uZjI3ZDkwNDFlMmMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFs eXplLmMKQEAgLTcxOCw2ICs3MTgsNyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWws IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCQkJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBlbGV2ZWw7 CiAJCQlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gb25lcmVsLT5yZF9yZWwtPnJlbHR1cGxlczsK IAkJCWl2aW5mby5zdHJhdGVneSA9IHZhY19zdHJhdGVneTsKKwkJCWl2aW5mby52YWxpZGF0ZV9p bmRleCA9IGZhbHNlOwogCiAJCQlzdGF0cyA9IGluZGV4X3ZhY3V1bV9jbGVhbnVwKCZpdmluZm8s IE5VTEwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxl bC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCAwZDkyZTY5 NGQ2YS4uYTM5ZDM2YzM1MzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpA QCAtODg0LDYgKzg4NCw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX29uZV9pbmRleChQYXJh bGxlbFZhY3V1bVN0YXRlICpwdnMsIFJlbGF0aW9uIGluZHJlbCwKIAlpdmluZm8uZXN0aW1hdGVk X2NvdW50ID0gcHZzLT5zaGFyZWQtPmVzdGltYXRlZF9jb3VudDsKIAlpdmluZm8ubnVtX2hlYXBf dHVwbGVzID0gcHZzLT5zaGFyZWQtPnJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSBwdnMt PmJzdHJhdGVneTsKKwlpdmluZm8udmFsaWRhdGVfaW5kZXggPSBmYWxzZTsKIAogCS8qIFVwZGF0 ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24gKi8KIAlwdnMtPmluZG5hbWUgPSBwc3RyZHVw KFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZHJlbCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbm9kZXMvbWFrZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwppbmRl eCA2YjY2YmMxODI4Ni4uNjk0YTI1MThiYTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVz L21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBAIC04MjUs NiArODI1LDcgQEAgbWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywg T2lkIGFtb2lkLCBMaXN0ICpleHByZXNzaW9ucywKIAkvKiBpbml0aWFsaXplIGluZGV4LWJ1aWxk IHN0YXRlIHRvIGRlZmF1bHQgKi8KIAluLT5paV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNlOwogCW4t PmlpX1BhcmFsbGVsV29ya2VycyA9IDA7CisJbi0+aWlfQXV4aWxpYXJ5ID0gZmFsc2U7CiAKIAkv KiBzZXQgdXAgZm9yIHBvc3NpYmxlIHVzZSBieSBpbmRleCBBTSAqLwogCW4tPmlpX0FtID0gYW1v aWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9nZW5hbS5oCmluZGV4IDFiZTg3Mzk1NzNmLi40NGY4YTBkNTYwNiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dl bmFtLmgKQEAgLTUyLDYgKzUyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhWYWN1dW1JbmZvCiAJ Ym9vbAkJZXN0aW1hdGVkX2NvdW50OwkvKiBudW1faGVhcF90dXBsZXMgaXMgYW4gZXN0aW1hdGUg Ki8KIAlpbnQJCQltZXNzYWdlX2xldmVsOwkvKiBlcmVwb3J0IGxldmVsIGZvciBwcm9ncmVzcyBt ZXNzYWdlcyAqLwogCWRvdWJsZQkJbnVtX2hlYXBfdHVwbGVzOwkvKiB0dXBsZXMgcmVtYWluaW5n IGluIGhlYXAgKi8KKwlib29sCQl2YWxpZGF0ZV9pbmRleDsgLyogdmFsaWRhdGluZyBjb25jdXJy ZW50bHkgYnVpbHQgaW5kZXg/ICovCiAJQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3k7CS8q IGFjY2VzcyBzdHJhdGVneSBmb3IgcmVhZHMgKi8KIH0gSW5kZXhWYWN1dW1JbmZvOwogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3JlbG9wdGlvbnMuaAppbmRleCA0MzQ0NWNkY2M2Yy4uMjZkZGQ1ZWM1NzcgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3JlbG9wdGlvbnMuaApAQCAtNTEsOCArNTEsOSBAQCB0eXBlZGVmIGVudW0gcmVsb3B0X2tp bmQKIAlSRUxPUFRfS0lORF9WSUVXID0gKDEgPDwgOSksCiAJUkVMT1BUX0tJTkRfQlJJTiA9ICgx IDw8IDEwKSwKIAlSRUxPUFRfS0lORF9QQVJUSVRJT05FRCA9ICgxIDw8IDExKSwKKwlSRUxPUFRf S0lORF9TVElSID0gKDEgPDwgMTIpLAogCS8qIGlmIHlvdSBhZGQgYSBuZXcga2luZCwgbWFrZSBz dXJlIHlvdSB1cGRhdGUgImxhc3RfZGVmYXVsdCIgdG9vICovCi0JUkVMT1BUX0tJTkRfTEFTVF9E RUZBVUxUID0gUkVMT1BUX0tJTkRfUEFSVElUSU9ORUQsCisJUkVMT1BUX0tJTkRfTEFTVF9ERUZB VUxUID0gUkVMT1BUX0tJTkRfU1RJUiwKIAkvKiBzb21lIGNvbXBpbGVycyB0cmVhdCBlbnVtcyBh cyBzaWduZWQgaW50cywgc28gd2UgY2FuJ3QgdXNlIDEgPDwgMzEgKi8KIAlSRUxPUFRfS0lORF9N QVggPSAoMSA8PCAzMCkKIH0gcmVsb3B0X2tpbmQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3Mvc3Rpci5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTk0M2M0MmE5N2UKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCkBAIC0wLDAgKzEsMTE3IEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiBzdGlyLmgKKyAqCSAgaGVhZGVyIGZpbGUgZm9yIHBvc3RncmVzIHN0aXIg YWNjZXNzIG1ldGhvZCBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAq IHNyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwor I2lmbmRlZiBfU1RJUl9IXworI2RlZmluZSBfU1RJUl9IXworCisjaW5jbHVkZSAiYW1hcGkuaCIK KyNpbmNsdWRlICJ4bG9nLmgiCisjaW5jbHVkZSAiZ2VuZXJpY194bG9nLmgiCisjaW5jbHVkZSAi aXR1cC5oIgorI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXRobm9kZXMuaCIK KworLyogU3VwcG9ydCBwcm9jZWR1cmVzIG51bWJlcnMgKi8KKyNkZWZpbmUgU1RJUl9OUFJPQwkJ CQkwCisKKy8qIFNjYW4gc3RyYXRlZ2llcyAqLworI2RlZmluZSBTVElSX05TVFJBVEVHSUVTCQkx CisKKyNkZWZpbmUgU1RJUl9PUFRJT05TX1BST0MJCQkJMAorCisvKiBNYWNyb3MgZm9yIGFjY2Vz c2luZyBzdGlyIHBhZ2Ugc3RydWN0dXJlcyAqLworI2RlZmluZSBTdGlyUGFnZUdldE9wYXF1ZShw YWdlKSAoKFN0aXJQYWdlT3BhcXVlKSBQYWdlR2V0U3BlY2lhbFBvaW50ZXIocGFnZSkpCisjZGVm aW5lIFN0aXJQYWdlR2V0TWF4T2Zmc2V0KHBhZ2UpIChTdGlyUGFnZUdldE9wYXF1ZShwYWdlKS0+ bWF4b2ZmKQorI2RlZmluZSBTdGlyUGFnZUlzTWV0YShwYWdlKSBcCisJKChTdGlyUGFnZUdldE9w YXF1ZShwYWdlKS0+ZmxhZ3MgJiBTVElSX01FVEEpICE9IDApCisjZGVmaW5lIFN0aXJQYWdlR2V0 RGF0YShwYWdlKQkJKChTdGlyVHVwbGUgKilQYWdlR2V0Q29udGVudHMocGFnZSkpCisjZGVmaW5l IFN0aXJQYWdlR2V0VHVwbGUocGFnZSwgb2Zmc2V0KSBcCisJKChTdGlyVHVwbGUgKikoUGFnZUdl dENvbnRlbnRzKHBhZ2UpIFwKKwkJKyBzaXplb2YoU3RpclR1cGxlKSAqICgob2Zmc2V0KSAtIDEp KSkKKyNkZWZpbmUgU3RpclBhZ2VHZXROZXh0VHVwbGUodHVwbGUpIFwKKwkoKFN0aXJUdXBsZSAq KSgoUG9pbnRlcikodHVwbGUpICsgc2l6ZW9mKFN0aXJUdXBsZSkpKQorCisKKworLyogUHJlc2Vy dmVkIHBhZ2UgbnVtYmVycyAqLworI2RlZmluZSBTVElSX01FVEFQQUdFX0JMS05PCSgwKQorI2Rl ZmluZSBTVElSX0hFQURfQkxLTk8JCSgxKSAvKiBmaXJzdCBkYXRhIHBhZ2UgKi8KKworCisvKiBP cGFxdWUgZm9yIHN0aXIgcGFnZXMgKi8KK3R5cGVkZWYgc3RydWN0IFN0aXJQYWdlT3BhcXVlRGF0 YQoreworCU9mZnNldE51bWJlciBtYXhvZmY7CQkvKiBudW1iZXIgb2YgaW5kZXggdHVwbGVzIG9u IHBhZ2UgKi8KKwl1aW50MTYJCWZsYWdzOwkJCS8qIHNlZSBiaXQgZGVmaW5pdGlvbnMgYmVsb3cg Ki8KKwl1aW50MTYJCXVudXNlZDsJCQkvKiBwbGFjZWhvbGRlciB0byBmb3JjZSBtYXhhbGlnbmlu ZyBvZiBzaXplIG9mCisJCQkJCQkJCSAqIFN0aXJQYWdlT3BhcXVlRGF0YSBhbmQgdG8gcGxhY2UK KwkJCQkJCQkJICogc3Rpcl9wYWdlX2lkIGV4YWN0bHkgYXQgdGhlIGVuZCBvZiBwYWdlICovCisJ dWludDE2CQlzdGlyX3BhZ2VfaWQ7CS8qIGZvciBpZGVudGlmaWNhdGlvbiBvZiBTVElSIGluZGV4 ZXMgKi8KK30gU3RpclBhZ2VPcGFxdWVEYXRhOworCisvKiBTdGlyIHBhZ2UgZmxhZ3MgKi8KKyNk ZWZpbmUgU1RJUl9NRVRBCQkoMTw8MCkKKwordHlwZWRlZiBTdGlyUGFnZU9wYXF1ZURhdGEgKlN0 aXJQYWdlT3BhcXVlOworCisjZGVmaW5lIFNUSVJfUEFHRV9JRAkJMHhGRjg0CisKKy8qIE1ldGFk YXRhIG9mIHN0aXIgaW5kZXggKi8KK3R5cGVkZWYgc3RydWN0IFN0aXJNZXRhUGFnZURhdGEKK3sK Kwl1aW50MzIJCW1hZ2lja051bWJlcjsKKwl1aW50MTYJCWxhc3RCbGtObzsKKwlib29sCQlza2lw SW5zZXJ0czsJLyogc2hvdWxkIHdlIGp1c3QgZXhpdCB3aXRob3V0IGFueSBpbnNlcnRzICovCit9 IFN0aXJNZXRhUGFnZURhdGE7CisKKy8qIE1hZ2ljIG51bWJlciB0byBkaXN0aW5ndWlzaCBzdGly IHBhZ2VzIGZyb20gb3RoZXJzICovCisjZGVmaW5lIFNUSVJfTUFHSUNLX05VTUJFUiAoMHhEQkFD MERFRikKKworI2RlZmluZSBTdGlyUGFnZUdldE1ldGEocGFnZSkJKChTdGlyTWV0YVBhZ2VEYXRh ICopIFBhZ2VHZXRDb250ZW50cyhwYWdlKSkKKwordHlwZWRlZiBzdHJ1Y3QgU3RpclR1cGxlCit7 CisJSXRlbVBvaW50ZXJEYXRhIGhlYXBQdHI7Cit9IFN0aXJUdXBsZTsKKworI2RlZmluZSBTdGly UGFnZUdldEZyZWVTcGFjZShzdGF0ZSwgcGFnZSkgXAorCShCTENLU1ogLSBNQVhBTElHTihTaXpl T2ZQYWdlSGVhZGVyRGF0YSkgXAorCQktIFN0aXJQYWdlR2V0TWF4T2Zmc2V0KHBhZ2UpICogKHNp emVvZihTdGlyVHVwbGUpKSBcCisJCS0gTUFYQUxJR04oc2l6ZW9mKFN0aXJQYWdlT3BhcXVlRGF0 YSkpKQorCitleHRlcm4gdm9pZCBTdGlyRmlsbE1ldGFwYWdlKFJlbGF0aW9uIGluZGV4LCBQYWdl IG1ldGFQYWdlLCBib29sIHNraXBJbnNlcnRzKTsKK2V4dGVybiB2b2lkIFN0aXJJbml0TWV0YXBh Z2UoUmVsYXRpb24gaW5kZXgsIEZvcmtOdW1iZXIgZm9ya251bSk7CitleHRlcm4gdm9pZCBTdGly SW5pdFBhZ2UoUGFnZSBwYWdlLCB1aW50MTYgZmxhZ3MpOworZXh0ZXJuIHZvaWQgU3Rpck1hcmtB c1NraXBJbnNlcnRzKFJlbGF0aW9uIGluZGV4KTsKKworLyogaW5kZXggYWNjZXNzIG1ldGhvZCBp bnRlcmZhY2UgZnVuY3Rpb25zICovCitleHRlcm4gYm9vbCBzdGlydmFsaWRhdGUoT2lkIG9wY2xh c3NvaWQpOworZXh0ZXJuIGJvb2wgc3Rpcmluc2VydChSZWxhdGlvbiBpbmRleCwgRGF0dW0gKnZh bHVlcywgYm9vbCAqaXNudWxsLAorCQkJCQkgSXRlbVBvaW50ZXIgaHRfY3RpZCwgUmVsYXRpb24g aGVhcFJlbCwKKwkJCQkJIEluZGV4VW5pcXVlQ2hlY2sgY2hlY2tVbmlxdWUsCisJCQkJCSBib29s IGluZGV4VW5jaGFuZ2VkLAorCQkJCQkgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJbmZvKTsKK2V4 dGVybiBJbmRleFNjYW5EZXNjIHN0aXJiZWdpbnNjYW4oUmVsYXRpb24gciwgaW50IG5rZXlzLCBp bnQgbm9yZGVyYnlzKTsKK2V4dGVybiB2b2lkIHN0aXJyZXNjYW4oSW5kZXhTY2FuRGVzYyBzY2Fu LCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2NhbmtleXMsCisJCQkJCSBTY2FuS2V5IG9yZGVyYnlz LCBpbnQgbm9yZGVyYnlzKTsKK2V4dGVybiB2b2lkIHN0aXJlbmRzY2FuKEluZGV4U2NhbkRlc2Mg c2Nhbik7CitleHRlcm4gSW5kZXhCdWlsZFJlc3VsdCAqc3RpcmJ1aWxkKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LAorCQkJCQkJCQkgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJbmZvKTsK K2V4dGVybiB2b2lkIHN0aXJidWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4KTsKK2V4dGVybiBJbmRl eEJ1bGtEZWxldGVSZXN1bHQgKnN0aXJidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywK KwkJCQkJCQkJCQkgICBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLCBJbmRleEJ1bGtEZWxl dGVDYWxsYmFjayBjYWxsYmFjaywKKwkJCQkJCQkJCQkgICB2b2lkICpjYWxsYmFja19zdGF0ZSk7 CitleHRlcm4gSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGlydmFjdXVtY2xlYW51cChJbmRleFZh Y3V1bUluZm8gKmluZm8sCisJCQkJCQkJCQkJCSAgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0 cyk7CitleHRlcm4gYnl0ZWEgKnN0aXJvcHRpb25zKERhdHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFs aWRhdGUpOworCisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf YW0uZGF0CmluZGV4IDI2ZDE1OTI4YTE1Li5hNWVjZjkyMDhhZCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19hbS5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5k YXQKQEAgLTMzLDUgKzMzLDggQEAKIHsgb2lkID0+ICczNTgwJywgb2lkX3N5bWJvbCA9PiAnQlJJ Tl9BTV9PSUQnLAogICBkZXNjciA9PiAnYmxvY2sgcmFuZ2UgaW5kZXggKEJSSU4pIGFjY2VzcyBt ZXRob2QnLAogICBhbW5hbWUgPT4gJ2JyaW4nLCBhbWhhbmRsZXIgPT4gJ2JyaW5oYW5kbGVyJywg YW10eXBlID0+ICdpJyB9LAoreyBvaWQgPT4gJzU1NTUnLCBvaWRfc3ltYm9sID0+ICdTVElSX0FN X09JRCcsCisgIGRlc2NyID0+ICdzaG9ydCB0ZXJtIGluZGV4IHJlcGxhY2VtZW50IGFjY2VzcyBt ZXRob2QnLAorICBhbW5hbWUgPT4gJ3N0aXInLCBhbWhhbmRsZXIgPT4gJ3N0aXJoYW5kbGVyJywg YW10eXBlID0+ICdpJyB9LAogCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X29wY2xhc3MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGNsYXNzLmRhdAppbmRleCA0 YTk2MjQ4MDJhYS4uNjIyN2M1NjU4ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfb3BjbGFzcy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGNsYXNzLmRhdApA QCAtNDg4LDQgKzQ4OCw4IEBACiAKICMgbm8gYnJpbiBvcGNsYXNzIGZvciB0aGUgZ2VvbWV0cmlj IHR5cGVzIGV4Y2VwdCBib3gKIAorIyBhbGxvdyBhbnkgdHlwZXMgZm9yIFNUSVIKK3sgb3BjbWV0 aG9kID0+ICdzdGlyJywgb2lkX3N5bWJvbCA9PiAnQU5ZX1NUSVJfT1BTX09JRCcsIG9wY25hbWUg PT4gJ3N0aXJfb3BzJywKKyAgb3BjZmFtaWx5ID0+ICdzdGlyL2FueV9vcHMnLCBvcGNpbnR5cGUg PT4gJ2FueSd9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZmFt aWx5LmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1pbHkuZGF0CmluZGV4IGY3ZGNi OTZiNDNjLi44MzhhZDMyYzkzMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19v cGZhbWlseS5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQKQEAg LTMwNCw1ICszMDQsNyBAQAogICBvcGZtZXRob2QgPT4gJ2hhc2gnLCBvcGZuYW1lID0+ICdtdWx0 aXJhbmdlX29wcycgfSwKIHsgb2lkID0+ICc2MTU4JywKICAgb3BmbWV0aG9kID0+ICdnaXN0Jywg b3BmbmFtZSA9PiAnbXVsdGlyYW5nZV9vcHMnIH0sCit7IG9pZCA9PiAnNTU1OCcsCisgIG9wZm1l dGhvZCA9PiAnc3RpcicsIG9wZm5hbWUgPT4gJ2FueV9vcHMnIH0sCiAKIF0KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CmluZGV4IGIzN2U4YTZmODgyLi41ZWEyYjEyYmYwYSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CkBAIC05MzUsNiArOTM1LDEwIEBACiAgIHByb25hbWUgPT4gJ2JyaW5oYW5kbGVy JywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9yZXR0eXBlID0+ICdpbmRleF9hbV9oYW5kbGVy JywgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywKICAgcHJvc3JjID0+ICdicmluaGFuZGxlcicg fSwKK3sgb2lkID0+ICc1NTU2JywgZGVzY3IgPT4gJ3Nob3J0IHRlcm0gaW5kZXggcmVwbGFjZW1l bnQgYWNjZXNzIG1ldGhvZCBoYW5kbGVyJywKKyAgcHJvbmFtZSA9PiAnc3RpcmhhbmRsZXInLCBw cm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ2luZGV4X2FtX2hhbmRsZXInLCBw cm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLAorICBwcm9zcmMgPT4gJ3N0aXJoYW5kbGVyJyB9LAog eyBvaWQgPT4gJzM5NTInLCBkZXNjciA9PiAnYnJpbjogc3RhbmRhbG9uZSBzY2FuIG5ldyB0YWJs ZSBwYWdlcycsCiAgIHByb25hbWUgPT4gJ2JyaW5fc3VtbWFyaXplX25ld192YWx1ZXMnLCBwcm92 b2xhdGlsZSA9PiAndicsCiAgIHByb3BhcmFsbGVsID0+ICd1JywgcHJvcmV0dHlwZSA9PiAnaW50 NCcsIHByb2FyZ3R5cGVzID0+ICdyZWdjbGFzcycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGIz ZjdhYTI5OWY1Li43YmZlMGFjYjkxYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTE3MiwxMiAr MTcyLDEzIEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogICoJCUJyb2tlbkhvdENoYWluCQlk aWQgd2UgZGV0ZWN0IGFueSBicm9rZW4gSE9UIGNoYWlucz8KICAqCQlTdW1tYXJpemluZwkJCWlz IGl0IGEgc3VtbWFyaXppbmcgaW5kZXg/CiAgKgkJUGFyYWxsZWxXb3JrZXJzCQkjIG9mIHdvcmtl cnMgcmVxdWVzdGVkIChleGNsdWRlcyBsZWFkZXIpCisgKgkJQXV4aWxpYXJ5CQkJIyBpbmRleC1o ZWxwZXIgZm9yIGNvbmN1cnJlbnQgYnVpbGQ/CiAgKgkJQW0JCQkJCU9pZCBvZiBpbmRleCBBTQog ICoJCUFtQ2FjaGUJCQkJcHJpdmF0ZSBjYWNoZSBhcmVhIGZvciBpbmRleCBBTQogICoJCUNvbnRl eHQJCQkJbWVtb3J5IGNvbnRleHQgaG9sZGluZyB0aGlzIEluZGV4SW5mbwogICoKLSAqIGlpX0Nv bmN1cnJlbnQsIGlpX0Jyb2tlbkhvdENoYWluLCBhbmQgaWlfUGFyYWxsZWxXb3JrZXJzIGFyZSB1 c2VkIG9ubHkKLSAqIGR1cmluZyBpbmRleCBidWlsZDsgdGhleSdyZSBjb252ZW50aW9uYWxseSB6 ZXJvZWQgb3RoZXJ3aXNlLgorICogaWlfQ29uY3VycmVudCwgaWlfQnJva2VuSG90Q2hhaW4sIGlp X0F1eGlsaWFyeSBhbmQgaWlfUGFyYWxsZWxXb3JrZXJzCisgKiBhcmUgdXNlZCBvbmx5IGR1cmlu ZyBpbmRleCBidWlsZDsgdGhleSdyZSBjb252ZW50aW9uYWxseSB6ZXJvZWQgb3RoZXJ3aXNlLgog ICogLS0tLS0tLS0tLS0tLS0tLQogICovCiB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8KQEAgLTIw Niw2ICsyMDcsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8KIAlib29sCQlpaV9TdW1tYXJp emluZzsKIAlib29sCQlpaV9XaXRob3V0T3ZlcmxhcHM7CiAJaW50CQkJaWlfUGFyYWxsZWxXb3Jr ZXJzOworCWJvb2wJCWlpX0F1eGlsaWFyeTsKIAlPaWQJCQlpaV9BbTsKIAl2b2lkCSAgICppaV9B bUNhY2hlOwogCU1lbW9yeUNvbnRleHQgaWlfQ29udGV4dDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL2luZGV4X3NlbGZ1bmNzLmggYi9zcmMvaW5jbHVkZS91dGlscy9pbmRleF9zZWxm dW5jcy5oCmluZGV4IDZjNjRkYjZkNDU2Li5lMGQ5MzlkNjg1NyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdXRpbHMvaW5kZXhfc2VsZnVuY3MuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9pbmRl eF9zZWxmdW5jcy5oCkBAIC02Miw2ICs2MiwxNCBAQCBleHRlcm4gdm9pZCBzcGdjb3N0ZXN0aW1h dGUoc3RydWN0IFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCVNlbGVjdGl2aXR5ICppbmRleFNl bGVjdGl2aXR5LAogCQkJCQkJCWRvdWJsZSAqaW5kZXhDb3JyZWxhdGlvbiwKIAkJCQkJCQlkb3Vi bGUgKmluZGV4UGFnZXMpOworZXh0ZXJuIHZvaWQgc3RpcmNvc3Rlc3RpbWF0ZShzdHJ1Y3QgUGxh bm5lckluZm8gKnJvb3QsCisJCQkJCQkJc3RydWN0IEluZGV4UGF0aCAqcGF0aCwKKwkJCQkJCQlk b3VibGUgbG9vcF9jb3VudCwKKwkJCQkJCQlDb3N0ICppbmRleFN0YXJ0dXBDb3N0LAorCQkJCQkJ CUNvc3QgKmluZGV4VG90YWxDb3N0LAorCQkJCQkJCVNlbGVjdGl2aXR5ICppbmRleFNlbGVjdGl2 aXR5LAorCQkJCQkJCWRvdWJsZSAqaW5kZXhDb3JyZWxhdGlvbiwKKwkJCQkJCQlkb3VibGUgKmlu ZGV4UGFnZXMpOwogZXh0ZXJuIHZvaWQgZ2luY29zdGVzdGltYXRlKHN0cnVjdCBQbGFubmVySW5m byAqcm9vdCwKIAkJCQkJCQlzdHJ1Y3QgSW5kZXhQYXRoICpwYXRoLAogCQkJCQkJCWRvdWJsZSBs b29wX2NvdW50LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbXV0aWxz Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYW11dGlscy5vdXQKaW5kZXggN2FiNjEx M2M2MTkuLjkyYzAzM2EyMDEwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2FtdXRpbHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYW11dGlscy5vdXQK QEAgLTE3Myw3ICsxNzMsMTMgQEAgc2VsZWN0IGFtbmFtZSwgcHJvcCwgcGdfaW5kZXhhbV9oYXNf cHJvcGVydHkoYS5vaWQsIHByb3ApIGFzIHAKICBzcGdpc3QgfCBjYW5fZXhjbHVkZSAgIHwgdAog IHNwZ2lzdCB8IGNhbl9pbmNsdWRlICAgfCB0CiAgc3BnaXN0IHwgYm9ndXMgICAgICAgICB8IAot KDM2IHJvd3MpCisgc3RpciAgIHwgY2FuX29yZGVyICAgICB8IGYKKyBzdGlyICAgfCBjYW5fdW5p cXVlICAgIHwgZgorIHN0aXIgICB8IGNhbl9tdWx0aV9jb2wgfCB0Cisgc3RpciAgIHwgY2FuX2V4 Y2x1ZGUgICB8IGYKKyBzdGlyICAgfCBjYW5faW5jbHVkZSAgIHwgdAorIHN0aXIgICB8IGJvZ3Vz ICAgICAgICAgfCAKKyg0MiByb3dzKQogCiAtLQogLS0gYWRkaXRpb25hbCBjaGVja3MgZm9yIHBn X2luZGV4X2NvbHVtbl9oYXNfcHJvcGVydHkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9z YW5pdHkub3V0CmluZGV4IGI2NzM2NDJhZDFkLi4yNjQ1ZDk3MDYyOSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CkBAIC0yMTE5LDkgKzIxMTksMTAgQEAgRlJPTSBw Z19vcGNsYXNzIEFTIGMxCiBXSEVSRSBOT1QgRVhJU1RTKFNFTEVDVCAxIEZST00gcGdfYW1vcCBB UyBhMQogICAgICAgICAgICAgICAgICBXSEVSRSBhMS5hbW9wZmFtaWx5ID0gYzEub3BjZmFtaWx5 CiAgICAgICAgICAgICAgICAgICAgQU5EIGJpbmFyeV9jb2VyY2libGUoYzEub3BjaW50eXBlLCBh MS5hbW9wbGVmdHR5cGUpKTsKLSBvcGNuYW1lIHwgb3BjZmFtaWx5IAotLS0tLS0tLS0tKy0tLS0t LS0tLS0tCi0oMCByb3dzKQorIG9wY25hbWUgIHwgb3BjZmFtaWx5IAorLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIHN0aXJfb3BzIHwgICAgICA1NTU4CisoMSByb3cpCiAKIC0tIENoZWNrIHRoYXQg ZWFjaCBvcGVyYXRvciBsaXN0ZWQgaW4gcGdfYW1vcCBoYXMgYW4gYXNzb2NpYXRlZCBvcGNsYXNz LAogLS0gdGhhdCBpcyBvbmUgd2hvc2Ugb3BjaW50eXBlIG1hdGNoZXMgb3BybGVmdCAocG9zc2li bHkgYnkgY29lcmNpb24pLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w c3FsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKaW5kZXggMzZkYzMx YzE2YzQuLmE2ZDg2Y2I0Y2EwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BzcWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKQEAgLTUw NzQsNyArNTA3NCw4IEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKICBoZWFwICAgfCBUYWJsZQog IGhlYXAyICB8IFRhYmxlCiAgc3BnaXN0IHwgSW5kZXgKLSg4IHJvd3MpCisgc3RpciAgIHwgSW5k ZXgKKyg5IHJvd3MpCiAKIFxkQSAqCiBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCkBAIC01MDg4LDcg KzUwODksOCBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVhcCAgIHwgVGFibGUKICBoZWFw MiAgfCBUYWJsZQogIHNwZ2lzdCB8IEluZGV4Ci0oOCByb3dzKQorIHN0aXIgICB8IEluZGV4Ciso OSByb3dzKQogCiBcZEEgaCoKIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKQEAgLTUxMTMsOSArNTEx NSw5IEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKIAogXGRBOiBleHRyYSBhcmd1bWVudCAiYmFy IiBpZ25vcmVkCiBcZEErCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNj ZXNzIG1ldGhvZHMKLSAgTmFtZSAgfCBUeXBlICB8ICAgICAgIEhhbmRsZXIgICAgICAgIHwgICAg ICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgCi0tLS0tLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhv ZHMKKyAgTmFtZSAgfCBUeXBlICB8ICAgICAgIEhhbmRsZXIgICAgICAgIHwgICAgICAgICAgICAg ICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgYnJpbiAgIHwgSW5kZXggfCBicmluaGFuZGxlciAgICAgICAgICB8IGJsb2NrIHJhbmdl IGluZGV4IChCUklOKSBhY2Nlc3MgbWV0aG9kCiAgYnRyZWUgIHwgSW5kZXggfCBidGhhbmRsZXIg ICAgICAgICAgICB8IGItdHJlZSBpbmRleCBhY2Nlc3MgbWV0aG9kCiAgZ2luICAgIHwgSW5kZXgg fCBnaW5oYW5kbGVyICAgICAgICAgICB8IEdJTiBpbmRleCBhY2Nlc3MgbWV0aG9kCkBAIC01MTI0 LDEyICs1MTI2LDEzIEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKICBoZWFwICAgfCBUYWJsZSB8 IGhlYXBfdGFibGVhbV9oYW5kbGVyIHwgaGVhcCB0YWJsZSBhY2Nlc3MgbWV0aG9kCiAgaGVhcDIg IHwgVGFibGUgfCBoZWFwX3RhYmxlYW1faGFuZGxlciB8IAogIHNwZ2lzdCB8IEluZGV4IHwgc3Bn aGFuZGxlciAgICAgICAgICAgfCBTUC1HaVNUIGluZGV4IGFjY2VzcyBtZXRob2QKLSg4IHJvd3Mp Cisgc3RpciAgIHwgSW5kZXggfCBzdGlyaGFuZGxlciAgICAgICAgICB8IHNob3J0IHRlcm0gaW5k ZXggcmVwbGFjZW1lbnQgYWNjZXNzIG1ldGhvZAorKDkgcm93cykKIAogXGRBKyAqCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKLSAgTmFtZSAgfCBU eXBlICB8ICAgICAgIEhhbmRsZXIgICAgICAgIHwgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAg ICAgICAgICAgICAgCi0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKKyAgTmFtZSAgfCBUeXBlICB8ICAg ICAgIEhhbmRsZXIgICAgICAgIHwgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgYnJpbiAgIHwgSW5kZXggfCBi cmluaGFuZGxlciAgICAgICAgICB8IGJsb2NrIHJhbmdlIGluZGV4IChCUklOKSBhY2Nlc3MgbWV0 aG9kCiAgYnRyZWUgIHwgSW5kZXggfCBidGhhbmRsZXIgICAgICAgICAgICB8IGItdHJlZSBpbmRl eCBhY2Nlc3MgbWV0aG9kCiAgZ2luICAgIHwgSW5kZXggfCBnaW5oYW5kbGVyICAgICAgICAgICB8 IEdJTiBpbmRleCBhY2Nlc3MgbWV0aG9kCkBAIC01MTM4LDcgKzUxNDEsOCBAQCBMaXN0IG9mIGFj Y2VzcyBtZXRob2RzCiAgaGVhcCAgIHwgVGFibGUgfCBoZWFwX3RhYmxlYW1faGFuZGxlciB8IGhl YXAgdGFibGUgYWNjZXNzIG1ldGhvZAogIGhlYXAyICB8IFRhYmxlIHwgaGVhcF90YWJsZWFtX2hh bmRsZXIgfCAKICBzcGdpc3QgfCBJbmRleCB8IHNwZ2hhbmRsZXIgICAgICAgICAgIHwgU1AtR2lT VCBpbmRleCBhY2Nlc3MgbWV0aG9kCi0oOCByb3dzKQorIHN0aXIgICB8IEluZGV4IHwgc3Rpcmhh bmRsZXIgICAgICAgICAgfCBzaG9ydCB0ZXJtIGluZGV4IHJlcGxhY2VtZW50IGFjY2VzcyBtZXRo b2QKKyg5IHJvd3MpCiAKIFxkQSsgaCoKICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNj ZXNzIG1ldGhvZHMKLS0gCjIuNDMuMAoK --000000000000813841062b2863c9 Content-Type: application/octet-stream; name="v11-0003-Allow-advancing-xmin-during-non-unique-non-paral.patch" Content-Disposition: attachment; filename="v11-0003-Allow-advancing-xmin-during-non-unique-non-paral.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5n7ah9r8 RnJvbSA2N2IyYmU4ZGM0MDgzMmVhYzdmYzMwMDQ4MDNlOTNjOGJlNDlmOGVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAyMToxMDoyMyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjExIDAz LzExXSBBbGxvdyBhZHZhbmNpbmcgeG1pbiBkdXJpbmcgbm9uLXVuaXF1ZSwKIG5vbi1wYXJhbGxl bCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyBieSBwZXJpb2RpY2FsbHkgcmVzZXR0aW5nIHNuYXBz aG90cwoKTG9uZy1ydW5uaW5nIHRyYW5zYWN0aW9ucyBsaWtlIHRob3NlIHVzZWQgYnkgQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBDT05DVVJSRU5UTFkgY2FuIGhvbGQgYmFj ayB0aGUgZ2xvYmFsIHhtaW4gaG9yaXpvbiwgcHJldmVudGluZyBWQUNVVU0gZnJvbSBjbGVhbmlu ZyB1cCBkZWFkIHR1cGxlcyBhbmQgcG90ZW50aWFsbHkgbGVhZGluZyB0byB0cmFuc2FjdGlvbiBJ RCB3cmFwYXJvdW5kIGlzc3Vlcy4gSW4gUG9zdGdyZVNRTCAxNCwgY29tbWl0IGQ5ZDA3NjIyMmY1 YiBhdHRlbXB0ZWQgdG8gYWxsb3cgVkFDVVVNIHRvIGlnbm9yZSBpbmRleGluZyB0cmFuc2FjdGlv bnMgd2l0aCBDT05DVVJSRU5UTFkgdG8gbWl0aWdhdGUgdGhpcyBwcm9ibGVtLiBIb3dldmVyLCB0 aGlzIHdhcyByZXZlcnRlZCBpbiBjb21taXQgZTI4YmI4ODUxOTY5IGJlY2F1c2UgaXQgY291bGQg Y2F1c2UgaW5kZXhlcyB0byBtaXNzIGhlYXAgdHVwbGVzIHRoYXQgd2VyZSBIT1QtdXBkYXRlZCBh bmQgSE9ULXBydW5lZCBkdXJpbmcgdGhlIGluZGV4IGNyZWF0aW9uLCBsZWFkaW5nIHRvIGluZGV4 IGNvcnJ1cHRpb24uCgpUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBzYWZlIGFsdGVybmF0aXZlIGJ5 IHBlcmlvZGljYWxseSByZXNldHRpbmcgdGhlIHNuYXBzaG90IHVzZWQgZHVyaW5nIG5vbi11bmlx dWUsIG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcy4gQnkgcmVzZXR0aW5nIHRo ZSBzbmFwc2hvdCBldmVyeSBOIHBhZ2VzIGR1cmluZyB0aGUgaGVhcCBzY2FuLCB3ZSBhbGxvdyB0 aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2Ugd2l0aG91dCByaXNraW5nIGluZGV4IGNvcnJ1cHRp b24uIFRoaXMgYXBwcm9hY2ggaXMgc2FmZSBmb3Igbm9uLXVuaXF1ZSBpbmRleCBidWlsZHMgYmVj YXVzZSB0aGV5IGRvIG5vdCBlbmZvcmNlIHVuaXF1ZW5lc3MgY29uc3RyYWludHMgdGhhdCByZXF1 aXJlIGEgY29uc2lzdGVudCBzbmFwc2hvdCBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLgoKQ3VycmVu dGx5LCB0aGlzIHRlY2huaXF1ZSBpcyBhcHBsaWVkIHRvOgoKTm9uLXBhcmFsbGVsIGluZGV4IGJ1 aWxkczogUGFyYWxsZWwgaW5kZXggYnVpbGRzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCBhbmQgd2ls bCBiZSBhZGRyZXNzZWQgaW4gYSBmdXR1cmUgY29tbWl0LgpOb24tdW5pcXVlIGluZGV4ZXM6IFVu aXF1ZSBpbmRleCBidWlsZHMgc3RpbGwgcmVxdWlyZSBhIGNvbnNpc3RlbnQgc25hcHNob3QgdG8g ZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLCBhbmQgc3VwcG9ydCBmb3IgdGhlbSBtYXkg YmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KT25seSBkdXJpbmcgdGhlIGZpcnN0IHNjYW4gb2YgdGhl IGhlYXA6IFRoZSBzZWNvbmQgc2NhbiBkdXJpbmcgaW5kZXggdmFsaWRhdGlvbiBzdGlsbCB1c2Vz IGEgc2luZ2xlIHNuYXBzaG90IHRvIGVuc3VyZSBpbmRleCBjb3JyZWN0bmVzcy4KClRvIGltcGxl bWVudCB0aGlzLCBhIG5ldyBzY2FuIG9wdGlvbiBTT19SRVNFVF9TTkFQU0hPVCBpcyBpbnRyb2R1 Y2VkLiBXaGVuIHNldCwgaXQgY2F1c2VzIHRoZSBzbmFwc2hvdCB0byBiZSByZXNldCBldmVyeSBT T19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSBwYWdlcyBkdXJpbmcgdGhlIHNjYW4uIFRoZSBo ZWFwIHNjYW4gY29kZSBpcyBhZGp1c3RlZCB0byBzdXBwb3J0IHRoaXMgb3B0aW9uLCBhbmQgdGhl IGluZGV4IGJ1aWxkIGNvZGUgaXMgbW9kaWZpZWQgdG8gdXNlIGl0IGZvciBhcHBsaWNhYmxlIGNv bmN1cnJlbnQgaW5kZXggYnVpbGRzIHRoYXQgYXJlIG5vdCBvbiBzeXN0ZW0gY2F0YWxvZ3MgYW5k IG5vdCB1c2luZyBwYXJhbGxlbCB3b3JrZXJzLgoKVGhpcyBhZGRyZXNzZXMgdGhlIGlzc3VlcyB0 aGF0IGxlZCB0byB0aGUgcmV2ZXJzaW9uIG9mIGNvbW1pdCBkOWQwNzYyMjJmNWIsIHByb3ZpZGlu ZyBhIHNhZmUgd2F5IHRvIGFsbG93IHhtaW4gYWR2YW5jZW1lbnQgZHVyaW5nIGxvbmctcnVubmlu ZyBub24tdW5pcXVlLCBub24tcGFyYWxsZWwgY29uY3VycmVudCBpbmRleCBidWlsZHMgd2hpbGUg ZW5zdXJpbmcgaW5kZXggY29ycmVjdG5lc3MuCgpSZWdyZXNzaW9uIHRlc3RzIGFyZSBhZGRlZCB0 byB2ZXJpZnkgdGhlIGJlaGF2aW9yLgotLS0KIGNvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVl LmMgICAgICAgICAgICAgICB8ICAgMyArLQogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBs ZS5jICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMg ICAgICAgICAgICAgICAgfCAgMTYgKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2Vy dC5jICAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxk LmMgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAg ICAgICAgICAgfCAgNDYgKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMgICAgICB8ICA1NyArKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgv Z2VuYW0uYyAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0c29ydC5jICAgICAgICAgICB8ICAzMCArKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lz dC9zcGdpbnNlcnQuYyAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YyAgICAgICAgICAgICAgICAgICB8ICAzMCArKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgICAgICAgICAgICAgIHwgIDE0ICstLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcGxhbm5lci5jICAgICAgICAgIHwgICA5ICsrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oICAgICAgICAgICAgICAgICAgfCAgMjggKysrKy0KIHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9NYWtlZmlsZSAgICB8ICAgMiArLQogLi4uL2V4cGVjdGVkL2NpY19yZXNldF9z bmFwc2hvdHMub3V0ICAgICAgICAgIHwgMTA1ICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkIHwgICAxICsKIC4uLi9zcWwvY2lj X3Jlc2V0X3NuYXBzaG90cy5zcWwgICAgICAgICAgICAgICB8ICA4NiArKysrKysrKysrKysrKwog MTkgZmlsZXMgY2hhbmdlZCwgNDA2IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3Rl ZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21v ZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKCmRpZmYg LS1naXQgYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jIGIvY29udHJpYi9hbWNoZWNr L3ZlcmlmeV9uYnRyZWUuYwppbmRleCA3ZjdiNTVkOTAyYS4uYTAyNmZiYzY5MmEgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKKysrIGIvY29udHJpYi9hbWNoZWNr L3ZlcmlmeV9uYnRyZWUuYwpAQCAtNjg5LDcgKzY4OSw4IEBAIGJ0X2NoZWNrX2V2ZXJ5X2xldmVs KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsCiAJCQkJ CQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8KIAkJCQkJCQkJCSBOVUxMLAkvKiBzY2FuIGtl eSAqLwogCQkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJ CQkJCQkJCSB0cnVlKTsgLyogc3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkgdHJ1ZSwgLyogc3lu Y3NjYW4gT0s/ICovCisJCQkJCQkJCQkgZmFsc2UpOwogCiAJCS8qCiAJCSAqIFNjYW4gd2lsbCBi ZWhhdmUgYXMgdGhlIGZpcnN0IHNjYW4gb2YgYSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZCmRp ZmYgLS1naXQgYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMgYi9jb250cmliL3Bn c3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKaW5kZXggNDhjYjhmNTljNGYuLmZmN2NjMDdkZjk5IDEw MDY0NAotLS0gYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKKysrIGIvY29udHJp Yi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCkBAIC0zMzIsNyArMzMyLDcgQEAgcGdzdGF0X2hl YXAoUmVsYXRpb24gcmVsLCBGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAkJCQkgZXJybXNnKCJv bmx5IGhlYXAgQU0gaXMgc3VwcG9ydGVkIikpKTsKIAogCS8qIERpc2FibGUgc3luY3NjYW4gYmVj YXVzZSB3ZSBhc3N1bWUgd2Ugc2NhbiBmcm9tIGJsb2NrIHplcm8gdXB3YXJkcyAqLwotCXNjYW4g PSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCwgdHJ1ZSwg ZmFsc2UpOworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQocmVsLCBTbmFwc2hvdEFueSwg MCwgTlVMTCwgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKIAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNj YW47CiAKIAlJbml0RGlydHlTbmFwc2hvdChTbmFwc2hvdERpcnR5KTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW4uYwppbmRleCA5YTk4NDU0NzU3OC4uYzIxNjA4YTZmZDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu LmMKQEAgLTEyMjQsNiArMTIyNCw3IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlv biBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4 X2J1aWxkX3NjYW4oaGVhcCwgaW5kZXgsIGluZGV4SW5mbywgZmFsc2UsIHRydWUsCiAJCQkJCQkJ CQkJICAgYnJpbmJ1aWxkQ2FsbGJhY2ssIHN0YXRlLCBOVUxMKTsKIAorCQlJbnZhbGlkYXRlQ2F0 YWxvZ1NuYXBzaG90KCk7CiAJCS8qCiAJCSAqIHByb2Nlc3MgdGhlIGZpbmFsIGJhdGNoCiAJCSAq CkBAIC0xMjQzLDYgKzEyNDQsNyBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlicmluX2ZpbGxfZW1wdHlfcmFuZ2VzKHN0 YXRlLAogCQkJCQkJCSAgIHN0YXRlLT5ic19jdXJyUmFuZ2VTdGFydCwKIAkJCQkJCQkgICBzdGF0 ZS0+YnNfbWF4UmFuZ2VTdGFydCk7CisJCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50 IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAKIAkvKiByZWxl YXNlIHJlc291cmNlcyAqLwpAQCAtMjM2Niw2ICsyMzY4LDcgQEAgX2JyaW5fYmVnaW5fcGFyYWxs ZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGlu ZGV4LAogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsK IAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOworCWJvb2wJCW5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCA9IHRydWU7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xF QURFUl9QQVJUSUNJUEFUSU9OCkBAIC0yMzkxLDkgKzIzOTQsMTYgQEAgX2JyaW5fYmVnaW5fcGFy YWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCiAJICovCiAJaWYgKCFpc2NvbmN1 cnJlbnQpCisJeworCQlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCXNuYXBzaG90ID0g U25hcHNob3RBbnk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOworCX0KIAll bHNlCisJewogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7 CisJfQogCiAJLyoKIAkgKiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFMTEVMX0tFWV9C UklOX1NIQVJFRCB3b3Jrc3BhY2UuCkBAIC0yNDM2LDYgKzI0NDYsOCBAQCBfYnJpbl9iZWdpbl9w YXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsCiAJLyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQg KGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAo bmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYg KElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hv dCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBAIC0yNTE1LDYgKzI1MjcsOCBA QCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3Nm dWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+ bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNo b3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlfYnJpbl9lbmRfcGFyYWxsZWwoYnJpbmxl YWRlciwgTlVMTCk7CiAJCXJldHVybjsKIAl9CkBAIC0yNTMxLDYgKzI1NDUsOCBAQCBfYnJpbl9i ZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwg UmVsYXRpb24gaW5kZXgsCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ug d2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwogCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0 dGFjaChwY3h0KTsKKwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVT bmFwc2hvdCgpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5kZXggOGUx Nzg4ZGJjZjcuLjk3ZWYxMGMwMDk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lu L2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKQEAg LTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNpbmNsdWRlICJz dG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRl ICJ1dGlscy9yZWwuaCIKIApAQCAtMzc1LDYgKzM3Niw3IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhl YXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlidWlsZHN0YXRlLmFj Y3VtLmdpbnN0YXRlID0gJmJ1aWxkc3RhdGUuZ2luc3RhdGU7CiAJZ2luSW5pdEJBKCZidWlsZHN0 YXRlLmFjY3VtKTsKIAorCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwogCS8qCiAJICogRG8gdGhlIGhlYXAgc2Nh bi4gIFdlIGRpc2FsbG93IHN5bmMgc2NhbiBoZXJlIGJlY2F1c2UgZGF0YVBsYWNlVG9QYWdlCiAJ ICogcHJlZmVycyB0byByZWNlaXZlIHR1cGxlcyBpbiBUSUQgb3JkZXIuCkBAIC00MjMsNiArNDI1 LDcgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAq aW5kZXhJbmZvKQogCXJlc3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVzdWx0LT5p bmRleF90dXBsZXMgPSBidWlsZHN0YXRlLmluZHR1cGxlczsKIAorCUFzc2VydCghaW5kZXhJbmZv LT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwog CXJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0 L2dpc3RidWlsZC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKaW5kZXgg OWU3MDcxNjdkOTguLjU2OTgxMTQ3YWUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0YnVpbGQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQu YwpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKICNp bmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVsa193cml0ZS5o IgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMu aCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKQEAgLTI1OSw2ICsyNjAsNyBAQCBnaXN0YnVpbGQo UmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCWJ1 aWxkc3RhdGUuaW5kdHVwbGVzID0gMDsKIAlidWlsZHN0YXRlLmluZHR1cGxlc1NpemUgPSAwOwog CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eGlkKSk7CiAJaWYgKGJ1aWxkc3RhdGUuYnVpbGRNb2RlID09IEdJU1RfU09S VEVEX0JVSUxEKQogCXsKIAkJLyoKQEAgLTM1MCw2ICszNTIsNyBAQCBnaXN0YnVpbGQoUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0 LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IChkb3Vi bGUpIGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJy ZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwogCiAJcmV0dXJuIHJl c3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYwppbmRleCBmOTUwYjk5MjVmNS4uOTAxYWE2Njdh YTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKQEAgLTE5MSw2ICsxOTEsNyBAQCBoYXNoYnVpbGQo UmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJ cmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9 IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50 IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwogCiAJcmV0dXJuIHJlc3Vs dDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNDg1NTI1ZjRkNjQuLmZkM2NlYjc1 NGIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1 ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1 dGlscy9zcGNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAK IHN0YXRpYyBIZWFwVHVwbGUgaGVhcF9wcmVwYXJlX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwg SGVhcFR1cGxlIHR1cCwKQEAgLTU2OCw2ICs1NjksMzYgQEAgaGVhcF9wcmVwYXJlX3BhZ2VzY2Fu KFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VO TE9DSyk7CiB9CiAKKy8qCisgKiBSZXNldCB0aGUgYWN0aXZlIHNuYXBzaG90IGR1cmluZyBhIHNj YW4uCisgKiBUaGlzIGVuc3VyZXMgdGhlIHhtaW4gaG9yaXpvbiBjYW4gYWR2YW5jZSB3aGlsZSBt YWludGFpbmluZyBzYWZlIHR1cGxlIHZpc2liaWxpdHkuCisgKiBOb3RlOiBObyBvdGhlciBzbmFw c2hvdCBzaG91bGQgYmUgYWN0aXZlIGR1cmluZyB0aGlzIG9wZXJhdGlvbi4KKyAqLworc3RhdGlj IGlubGluZSB2b2lkCitoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3QoVGFibGVTY2FuRGVzYyBzc2Nh bikKK3sKKwkvKiBNYWtlIHN1cmUgbm8gb3RoZXIgc25hcHNob3Qgd2FzIHNldCBhcyBhY3RpdmUu ICovCisJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCkgPT0gc3NjYW4tPnJzX3NuYXBzaG90KTsK KwkvKiBBbmQgbWFrZSBzdXJlIGFjdGl2ZSBzbmFwc2hvdCBpcyBub3QgcmVnaXN0ZXJlZC4gKi8K KwlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKS0+cmVnZF9jb3VudCA9PSAwKTsKKwlQb3BBY3Rp dmVTbmFwc2hvdCgpOworCisJc3NjYW4tPnJzX3NuYXBzaG90ID0gSW52YWxpZFNuYXBzaG90OyAv KiBqdXN0IG90IGJlIHRpZHkgKi8KKwlBc3NlcnQoIUhhdmVSZWdpc3RlcmVkT3JBY3RpdmVTbmFw c2hvdCgpKTsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisKKwkvKiBHb2FsIG9mIHNu YXBzaG90IHJlc2V0IGlzIHRvIGFsbG93IGhvcml6b24gdG8gYWR2YW5jZS4gKi8KKwlBc3NlcnQo IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworI2lmIFVTRV9JTkpFQ1RJT05f UE9JTlRTCisJLyogSW4gc29tZSBjYXNlcyBpdCBpcyBzdGlsbCBub3QgcG9zc2libGUgZHVlIHhp ZCBhc3NpZ24uICovCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpCisJ CUlOSkVDVElPTl9QT0lOVCgiaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZSIpOwor I2VuZGlmCisKKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJc3Nj YW4tPnJzX3NuYXBzaG90ID0gR2V0QWN0aXZlU25hcHNob3QoKTsKK30KKwogLyoKICAqIGhlYXBf ZmV0Y2hfbmV4dF9idWZmZXIgLSByZWFkIGFuZCBwaW4gdGhlIG5leHQgYmxvY2sgZnJvbSBNQUlO X0ZPUktOVU0uCiAgKgpAQCAtNjA5LDcgKzY0MCwxMyBAQCBoZWFwX2ZldGNoX25leHRfYnVmZmVy KEhlYXBTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcikKIAogCXNjYW4tPnJzX2NidWYg PSByZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihzY2FuLT5yc19yZWFkX3N0cmVhbSwgTlVMTCk7CiAJ aWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfY2J1ZikpCisJewogCQlzY2FuLT5yc19jYmxvY2sg PSBCdWZmZXJHZXRCbG9ja051bWJlcihzY2FuLT5yc19jYnVmKTsKKyNkZWZpbmUgU09fUkVTRVRf U05BUFNIT1RfRUFDSF9OX1BBR0UgNjQKKwkJaWYgKChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYg U09fUkVTRVRfU05BUFNIT1QpICYmCisJCQkoc2Nhbi0+cnNfY2Jsb2NrICUgU09fUkVTRVRfU05B UFNIT1RfRUFDSF9OX1BBR0UgPT0gMCkpCisJCQloZWFwX3Jlc2V0X3NjYW5fc25hcHNob3QoKFRh YmxlU2NhbkRlc2MpIHNjYW4pOworCX0KIH0KIAogLyoKQEAgLTEyMzYsNiArMTI3MywxNSBAQCBo ZWFwX2VuZHNjYW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAlpZiAoc2Nhbi0+cnNfcGFyYWxsZWx3 b3JrZXJkYXRhICE9IE5VTEwpCiAJCXBmcmVlKHNjYW4tPnJzX3BhcmFsbGVsd29ya2VyZGF0YSk7 CiAKKwlpZiAoc2Nhbi0+cnNfYmFzZS5yc19mbGFncyAmIFNPX1JFU0VUX1NOQVBTSE9UKQorCXsK KwkJQXNzZXJ0KCEoc2Nhbi0+cnNfYmFzZS5yc19mbGFncyAmIFNPX1RFTVBfU05BUFNIT1QpKTsK KwkJLyogTWFrZSBzdXJlIG5vIG90aGVyIHNuYXBzaG90IHdhcyBzZXQgYXMgYWN0aXZlLiAqLwor CQlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKSA9PSBzc2Nhbi0+cnNfc25hcHNob3QpOworCQkv KiBBbmQgbWFrZSBzdXJlIHNuYXBzaG90IGlzIG5vdCByZWdpc3RlcmVkLiAqLworCQlBc3NlcnQo R2V0QWN0aXZlU25hcHNob3QoKS0+cmVnZF9jb3VudCA9PSAwKTsKKwl9CisKIAlpZiAoc2Nhbi0+ cnNfYmFzZS5yc19mbGFncyAmIFNPX1RFTVBfU05BUFNIT1QpCiAJCVVucmVnaXN0ZXJTbmFwc2hv dChzY2FuLT5yc19iYXNlLnJzX3NuYXBzaG90KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV9oYW5kbGVyLmMKaW5kZXggZTgxN2Y4ZjhmODQuLjU4MGVjN2Y5YWE4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTExOTAsNiArMTE5MCw4IEBAIGhl YXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlFeHBy Q29udGV4dCAqZWNvbnRleHQ7CiAJU25hcHNob3QJc25hcHNob3Q7CiAJYm9vbAkJbmVlZF91bnJl Z2lzdGVyX3NuYXBzaG90ID0gZmFsc2U7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 ID0gZmFsc2U7CisJYm9vbAkJcmVzZXRfc25hcHNob3RzID0gZmFsc2U7CiAJVHJhbnNhY3Rpb25J ZCBPbGRlc3RYbWluOwogCUJsb2NrTnVtYmVyIHByZXZpb3VzX2Jsa25vID0gSW52YWxpZEJsb2Nr TnVtYmVyOwogCUJsb2NrTnVtYmVyIHJvb3RfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7CkBA IC0xMjI0LDkgKzEyMjYsNiBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAJLyogQXJyYW5nZSBmb3IgZWNvbnRleHQncyBzY2FuIHR1cGxlIHRv IGJlIHRoZSB0dXBsZSB1bmRlciB0ZXN0ICovCiAJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0g c2xvdDsKIAotCS8qIFNldCB1cCBleGVjdXRpb24gc3RhdGUgZm9yIHByZWRpY2F0ZSwgaWYgYW55 LiAqLwotCXByZWRpY2F0ZSA9IEV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0 ZSwgZXN0YXRlKTsKLQogCS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxh dGlvbi4gIEluIGEgbm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBi ZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCkBA IC0xMjM2LDYgKzEyMzUsMTUgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRp b24gaGVhcFJlbGF0aW9uLAogCSAqLwogCU9sZGVzdFhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAorCS8qCisJICogRm9yIHVuaXF1ZSBpbmRleCB3ZSBuZWVkIGNvbnNpc3RlbnQgc25hcHNo b3QgZm9yIHRoZSB3aG9sZSBzY2FuLgorCSAqIEluIGNhc2Ugb2YgcGFyYWxsZWwgc2NhbiBzb21l IGFkZGl0aW9uYWwgaW5mcmFzdHJ1Y3R1cmUgcmVxdWlyZWQKKwkgKiB0byBwZXJmb3JtIHNjYW4g d2l0aCBTT19SRVNFVF9TTkFQU0hPVCB3aGljaCBpcyBub3QgeWV0IHJlYWR5LgorCSAqLworCXJl c2V0X3NuYXBzaG90cyA9IGluZGV4SW5mby0+aWlfQ29uY3VycmVudCAmJgorCQkJCQkgICFpbmRl eEluZm8tPmlpX1VuaXF1ZSAmJgorCQkJCQkgICFpc19zeXN0ZW1fY2F0YWxvZzsgLyoganVzdCBm b3IgdGhlIGNhc2UgKi8KKwogCS8qIG9rYXkgdG8gaWdub3JlIGxhenkgVkFDVVVNcyBoZXJlICov CiAJaWYgKCFJc0Jvb3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkgJiYgIWluZGV4SW5mby0+aWlfQ29u Y3VycmVudCkKIAkJT2xkZXN0WG1pbiA9IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9u SWQoaGVhcFJlbGF0aW9uKTsKQEAgLTEyNDQsMjQgKzEyNTIsNDEgQEAgaGVhcGFtX2luZGV4X2J1 aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXsKIAkJLyoKIAkJICogU2Vy aWFsIGluZGV4IGJ1aWxkLgotCQkgKgotCQkgKiBNdXN0IGJlZ2luIG91ciBvd24gaGVhcCBzY2Fu IGluIHRoaXMgY2FzZS4gIFdlIG1heSBhbHNvIG5lZWQgdG8KLQkJICogcmVnaXN0ZXIgYSBzbmFw c2hvdCB3aG9zZSBsaWZldGltZSBpcyB1bmRlciBvdXIgZGlyZWN0IGNvbnRyb2wuCiAJCSAqLwog CQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pKQogCQl7Ci0JCQlzbmFwc2hv dCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJCW5lZWRf dW5yZWdpc3Rlcl9zbmFwc2hvdCA9IHRydWU7CisJCQlzbmFwc2hvdCA9IEdldFRyYW5zYWN0aW9u U25hcHNob3QoKTsKKwkJCS8qCisJCQkgKiBNdXN0IGJlZ2luIG91ciBvd24gaGVhcCBzY2FuIGlu IHRoaXMgY2FzZS4gIFdlIG1heSBhbHNvIG5lZWQgdG8KKwkJCSAqIHJlZ2lzdGVyIGEgc25hcHNo b3Qgd2hvc2UgbGlmZXRpbWUgaXMgdW5kZXIgb3VyIGRpcmVjdCBjb250cm9sLgorCQkJICogSW4g Y2FzZSBvZiByZXNldHRpbmcgb2Ygc25hcHNob3QgZHVyaW5nIHRoZSBzY2FuIHJlZ2lzdHJhdGlv biBpcworCQkJICogbm90IGFsbG93ZWQgYmVjYXVzZSBzbmFwc2hvdCBpcyBnb2luZyB0byBiZSBj aGFuZ2VkIGV2ZXJ5IHNvCisJCQkgKiBvZnRlbi4KKwkJCSAqLworCQkJaWYgKCFyZXNldF9zbmFw c2hvdHMpCisJCQl7CisJCQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsK KwkJCQluZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSB0cnVlOworCQkJfQorCQkJQXNzZXJ0KCFB Y3RpdmVTbmFwc2hvdFNldCgpKTsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJ CQkvKiBzdG9yZSBsaW5rIHRvIHNuYXBzaG90IGJlY2F1c2UgaXQgbWF5IGJlIGNvcGllZCAqLwor CQkJc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOworCQkJbmVlZF9wb3BfYWN0aXZlX3Nu YXBzaG90ID0gdHJ1ZTsKIAkJfQogCQllbHNlCisJCXsKKwkJCUFzc2VydCghaW5kZXhJbmZvLT5p aV9Db25jdXJyZW50KTsKIAkJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CisJCX0KIAogCQlzY2Fu ID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KGhlYXBSZWxhdGlvbiwJLyogcmVsYXRpb24gKi8KIAkJ CQkJCQkJCSBzbmFwc2hvdCwJLyogc25hcHNob3QgKi8KIAkJCQkJCQkJCSAwLCAvKiBudW1iZXIg b2Yga2V5cyAqLwogCQkJCQkJCQkJIE5VTEwsCS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCQkgdHJ1 ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBPSyAqLwotCQkJCQkJCQkJIGFsbG93X3N5bmMp OwkvKiBzeW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSBhbGxvd19zeW5jLAkvKiBzeW5jc2NhbiBP Sz8gKi8KKwkJCQkJCQkJCSByZXNldF9zbmFwc2hvdHMgLyogcmVzZXQgc25hcHNob3RzPyAqLyk7 CiAJfQogCWVsc2UKIAl7CkBAIC0xMjc1LDYgKzEzMDAsOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRf cmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCUFzc2VydCghSXNCb290c3RyYXBQ cm9jZXNzaW5nTW9kZSgpKTsKIAkJQXNzZXJ0KGFsbG93X3N5bmMpOwogCQlzbmFwc2hvdCA9IHNj YW4tPnJzX3NuYXBzaG90OworCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCQluZWVk X3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOwogCX0KIAogCWhzY2FuID0gKEhlYXBTY2FuRGVz Yykgc2NhbjsKQEAgLTEyODksNiArMTMxNiwxMyBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vf c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90 QW55ID8gVHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikgOgogCQkgICAhVHJhbnNhY3Rp b25JZElzVmFsaWQoT2xkZXN0WG1pbikpOwogCUFzc2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFu eSB8fCAhYW55dmlzaWJsZSk7CisJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55IHx8IEFj dGl2ZVNuYXBzaG90U2V0KCkpOworCisJLyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJl ZGljYXRlLCBpZiBhbnkuICovCisJcHJlZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5m by0+aWlfUHJlZGljYXRlLCBlc3RhdGUpOworCS8qIENsZWFyIHJlZmVyZW5jZSB0byBzbmFwc2hv dCBzaW5jZSBpdCBtYXkgYmUgY2hhbmdlZCBieSB0aGUgc2NhbiBpdHNlbGYuICovCisJaWYgKHJl c2V0X3NuYXBzaG90cykKKwkJc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7CiAKIAkvKiBQdWJs aXNoIG51bWJlciBvZiBibG9ja3MgdG8gc2NhbiAqLwogCWlmIChwcm9ncmVzcykKQEAgLTE3MjQs NiArMTc1OCw4IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBS ZWxhdGlvbiwKIAogCXRhYmxlX2VuZHNjYW4oc2Nhbik7CiAKKwlpZiAobmVlZF9wb3BfYWN0aXZl X3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCS8qIHdlIGNhbiBub3cgZm9yZ2V0 IG91ciBzbmFwc2hvdCwgaWYgc2V0IGFuZCByZWdpc3RlcmVkIGJ5IHVzICovCiAJaWYgKG5lZWRf dW5yZWdpc3Rlcl9zbmFwc2hvdCkKIAkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKQEAg LTE3OTYsNyArMTgzMiw4IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCSBO VUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJh dGVneSBPSyAqLwotCQkJCQkJCQkgZmFsc2UpOwkvKiBzeW5jc2NhbiBub3QgT0sgKi8KKwkJCQkJ CQkJIGZhbHNlLAkvKiBzeW5jc2NhbiBub3QgT0sgKi8KKwkJCQkJCQkJIGZhbHNlKTsKIAloc2Nh biA9IChIZWFwU2NhbkRlc2MpIHNjYW47CiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFt KFBST0dSRVNTX1NDQU5fQkxPQ0tTX1RPVEFMLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRl eCAwN2JhZTM0MmUyNS4uMGQyNjJhNDE4OGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9pbmRleC9nZW5hbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCkBA IC00NjMsNyArNDYzLDcgQEAgc3lzdGFibGVfYmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKIAkJICovCiAJCXN5c3NjYW4tPnNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoaGVhcFJl bGF0aW9uLCBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJICBua2V5cywga2V5LAotCQkJCQkJCQkJCQkg IHRydWUsIGZhbHNlKTsKKwkJCQkJCQkJCQkJICB0cnVlLCBmYWxzZSwgZmFsc2UpOwogCQlzeXNz Y2FuLT5pc2NhbiA9IE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmlu ZGV4IDdhYmE4NTJkYjkwLi5iNDkwZGEwZWVlZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRz b3J0LmMKQEAgLTI1OCw3ICsyNTgsNyBAQCBzdGF0aWMgZG91YmxlIF9idF9zcG9vbHNfaGVhcHNj YW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiBzdGF0aWMgdm9pZCBfYnRfc3Bvb2xk ZXN0cm95KEJUU3Bvb2wgKmJ0c3Bvb2wpOwogc3RhdGljIHZvaWQgX2J0X3Nwb29sKEJUU3Bvb2wg KmJ0c3Bvb2wsIEl0ZW1Qb2ludGVyIHNlbGYsCiAJCQkJCSAgRGF0dW0gKnZhbHVlcywgYm9vbCAq aXNudWxsKTsKLXN0YXRpYyB2b2lkIF9idF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRT cG9vbCAqYnRzcG9vbDIpOworc3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNw b29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpOwogc3RhdGljIHZv aWQgX2J0X2J1aWxkX2NhbGxiYWNrKFJlbGF0aW9uIGluZGV4LCBJdGVtUG9pbnRlciB0aWQsIERh dHVtICp2YWx1ZXMsCiAJCQkJCQkJICAgYm9vbCAqaXNudWxsLCBib29sIHR1cGxlSXNBbGl2ZSwg dm9pZCAqc3RhdGUpOwogc3RhdGljIEJ1bGtXcml0ZUJ1ZmZlciBfYnRfYmxuZXdwYWdlKEJUV3Jp dGVTdGF0ZSAqd3N0YXRlLCB1aW50MzIgbGV2ZWwpOwpAQCAtMzIxLDE4ICszMjEsMjIgQEAgYnRi dWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8p CiAJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kZXgpKTsKIAogCXJlbHR1cGxlcyA9IF9i dF9zcG9vbHNfaGVhcHNjYW4oaGVhcCwgaW5kZXgsICZidWlsZHN0YXRlLCBpbmRleEluZm8pOwor CUFzc2VydChpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1Vu aXF1ZSB8fAorCQkgICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBGaW5pc2ggdGhlIGJ1aWxkIGJ5ICgx KSBjb21wbGV0aW5nIHRoZSBzb3J0IG9mIHRoZSBzcG9vbCBmaWxlLCAoMikKIAkgKiBpbnNlcnRp bmcgdGhlIHNvcnRlZCB0dXBsZXMgaW50byBidHJlZSBwYWdlcyBhbmQgKDMpIGJ1aWxkaW5nIHRo ZSB1cHBlcgogCSAqIGxldmVscy4gIEZpbmFsbHksIGl0IG1heSBhbHNvIGJlIG5lY2Vzc2FyeSB0 byBlbmQgdXNlIG9mIHBhcmFsbGVsaXNtLgogCSAqLwotCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0 ZS5zcG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIpOworCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0ZS5z cG9vbCwgYnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyAm JiBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOwogCV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0 ZS5zcG9vbCk7CiAJaWYgKGJ1aWxkc3RhdGUuc3Bvb2wyKQogCQlfYnRfc3Bvb2xkZXN0cm95KGJ1 aWxkc3RhdGUuc3Bvb2wyKTsKIAlpZiAoYnVpbGRzdGF0ZS5idGxlYWRlcikKIAkJX2J0X2VuZF9w YXJhbGxlbChidWlsZHN0YXRlLmJ0bGVhZGVyKTsKKwlBc3NlcnQoaW5kZXhJbmZvLT5paV9QYXJh bGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKKwkJICAhaW5kZXhJbmZvLT5p aV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAog CXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxvYyhzaXplb2YoSW5kZXhCdWlsZFJl c3VsdCkpOwogCkBAIC00ODAsNiArNDg0LDkgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlv biBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCWVsc2UK IAkJcmVsdHVwbGVzID0gX2J0X3BhcmFsbGVsX2hlYXBzY2FuKGJ1aWxkc3RhdGUsCiAJCQkJCQkJ CQkJICAmaW5kZXhJbmZvLT5paV9Ccm9rZW5Ib3RDaGFpbik7CisJSW52YWxpZGF0ZUNhdGFsb2dT bmFwc2hvdCgpOworCUFzc2VydChpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRl eEluZm8tPmlpX1VuaXF1ZSB8fAorCQkgICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBTZXQgdGhlIHBy b2dyZXNzIHRhcmdldCBmb3IgdGhlIG5leHQgcGhhc2UuICBSZXNldCB0aGUgYmxvY2sgbnVtYmVy CkBAIC01MzUsNyArNTQyLDcgQEAgX2J0X3Nwb29sKEJUU3Bvb2wgKmJ0c3Bvb2wsIEl0ZW1Qb2lu dGVyIHNlbGYsIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCkKICAqIGNyZWF0ZSBhbiBlbnRp cmUgYnRyZWUuCiAgKi8KIHN0YXRpYyB2b2lkCi1fYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bv b2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQorX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBC VFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpCiB7CiAJQlRXcml0ZVN0YXRl IHdzdGF0ZTsKIApAQCAtNTU3LDE4ICs1NjQsMjEgQEAgX2J0X2xlYWZidWlsZChCVFNwb29sICpi dHNwb29sLCBCVFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJCSBQUk9HUkVTU19CVFJFRV9QSEFT RV9QRVJGT1JNU09SVF8yKTsKIAkJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KGJ0c3Bvb2wyLT5zb3J0 c3RhdGUpOwogCX0KKwlBc3NlcnQoIXJlc2V0X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAl3c3RhdGUuaGVhcCA9IGJ0c3Bvb2wtPmhlYXA7CiAJ d3N0YXRlLmluZGV4ID0gYnRzcG9vbC0+aW5kZXg7CiAJd3N0YXRlLmluc2tleSA9IF9idF9ta3Nj YW5rZXkod3N0YXRlLmluZGV4LCBOVUxMKTsKIAkvKiBfYnRfbWtzY2Fua2V5KCkgd29uJ3Qgc2V0 IGFsbGVxdWFsaW1hZ2Ugd2l0aG91dCBtZXRhcGFnZSAqLwogCXdzdGF0ZS5pbnNrZXktPmFsbGVx dWFsaW1hZ2UgPSBfYnRfYWxsZXF1YWxpbWFnZSh3c3RhdGUuaW5kZXgsIHRydWUpOworCUludmFs aWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAogCS8qIHJlc2VydmUgdGhlIG1ldGFwYWdlICovCiAJ d3N0YXRlLmJ0d3NfcGFnZXNfYWxsb2NlZCA9IEJUUkVFX01FVEFQQUdFICsgMTsKIAogCXBnc3Rh dF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAogCQkJ CQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfTEVBRl9MT0FEKTsKKwlBc3NlcnQoIXJlc2V0X3Nu YXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJX2J0X2xv YWQoJndzdGF0ZSwgYnRzcG9vbCwgYnRzcG9vbDIpOwogfQogCkBAIC0xNDEwLDYgKzE0MjAsNyBA QCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29u Y3VycmVudCwgaW50IHJlcXVlc3QpCiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNh Z2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CisJYm9v bAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIAog I2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MzUsOSArMTQ0NiwxNiBA QCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29u Y3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8K IAlpZiAoIWlzY29uY3VycmVudCkKKwl7CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsK IAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0g ZmFsc2U7CisJfQogCWVsc2UKKwl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRU cmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwor CX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfQlRS RUVfU0hBUkVEIHdvcmtzcGFjZSwgYW5kCkBAIC0xNDkxLDYgKzE1MDksOCBAQCBfYnRfYmVnaW5f cGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50 IHJlcXVlc3QpCiAJLyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQg KGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAo bmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYg KElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hv dCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBAIC0xNTg1LDYgKzE2MDUsOCBA QCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29u Y3VycmVudCwgaW50IHJlcXVlc3QpCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxs eSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndv cmtlcnNfbGF1bmNoZWQgPT0gMCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3Qp CisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlfYnRfZW5kX3BhcmFsbGVsKGJ0bGVhZGVyKTsK IAkJcmV0dXJuOwogCX0KQEAgLTE2MDEsNiArMTYyMyw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChC VEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkK IAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZv cmV2ZXIuCiAJICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlm IChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAK IC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYwppbmRleCA2YTYxZTA5M2ZhMC4u MDZjMDFjZjMzNjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5z ZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYwpAQCAtMjQs NiArMjQsNyBAQAogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWxrX3dyaXRlLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1 dGlscy9yZWwuaCIKIApAQCAtMTQzLDYgKzE0NCw3IEBAIHNwZ2J1aWxkKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlyZXN1bHQgPSAoSW5kZXhC dWlsZFJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihJbmRleEJ1aWxkUmVzdWx0KSk7CiAJcmVzdWx0 LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxk c3RhdGUuaW5kdHVwbGVzOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1bHQ7CiB9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMKaW5kZXggMjIxZmJiNGUyODYuLjhjNmRmZWNmNTE1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jCkBAIC03OSw2ICs3OSw3IEBACiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2lu Y2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzb3J0LmgiCisj aW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAKIC8qIFBvdGVudGlhbGx5IHNldCBieSBwZ191cGdy YWRlX3N1cHBvcnQgZnVuY3Rpb25zICovCiBPaWQJCQliaW5hcnlfdXBncmFkZV9uZXh0X2luZGV4 X3BnX2NsYXNzX29pZCA9IEludmFsaWRPaWQ7CkBAIC0xNDkxLDggKzE0OTIsOCBAQCBpbmRleF9j b25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCVJlbGF0aW9uCWluZGV4UmVs YXRpb247CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwogCi0JLyogVGhpcyBoYWQgYmV0dGVyIG1h a2Ugc3VyZSB0aGF0IGEgc25hcHNob3QgaXMgYWN0aXZlICovCi0JQXNzZXJ0KEFjdGl2ZVNuYXBz aG90U2V0KCkpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7 CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwogCiAJLyogT3Bl biBhbmQgbG9jayB0aGUgcGFyZW50IGhlYXAgcmVsYXRpb24gKi8KIAloZWFwUmVsID0gdGFibGVf b3BlbihoZWFwUmVsYXRpb25JZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKQEAgLTE1MTAs MTkgKzE1MTEsMjggQEAgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25J ZCwKIAogCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKGluZGV4UmVsYXRpb25JZCwgUm93RXhj bHVzaXZlTG9jayk7CiAKKwkvKiBCdWlsZEluZGV4SW5mbyBtYXkgcmVxdWlyZSBhcyBzbmFwc2hv dCBmb3IgZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMgKi8KKwlQdXNoQWN0aXZlU25hcHNob3Qo R2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkvKgogCSAqIFdlIGhhdmUgdG8gcmUtYnVpbGQg dGhlIEluZGV4SW5mbyBzdHJ1Y3QsIHNpbmNlIGl0IHdhcyBsb3N0IGluIHRoZQogCSAqIGNvbW1p dCBvZiB0aGUgdHJhbnNhY3Rpb24gd2hlcmUgdGhpcyBjb25jdXJyZW50IGluZGV4IHdhcyBjcmVh dGVkIGF0CiAJICogdGhlIGNhdGFsb2cgbGV2ZWwuCiAJICovCiAJaW5kZXhJbmZvID0gQnVpbGRJ bmRleEluZm8oaW5kZXhSZWxhdGlvbik7CisJLyogRG9uZSB3aXRoIHNuYXBzaG90ICovCisJUG9w QWN0aXZlU25hcHNob3QoKTsKIAlBc3NlcnQoIWluZGV4SW5mby0+aWlfUmVhZHlGb3JJbnNlcnRz KTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSB0cnVlOwogCWluZGV4SW5mby0+aWlfQnJv a2VuSG90Q2hhaW4gPSBmYWxzZTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOwogCiAJLyogTm93IGJ1aWxkIHRoZSBpbmRleCAqLwogCWluZGV4X2J1aWxkKGhl YXBSZWwsIGluZGV4UmVsYXRpb24sIGluZGV4SW5mbywgZmFsc2UsIHRydWUpOwogCisJLyogSW52 YWxpZGF0ZSBjYXRhbG9nIHNuYXBzaG90IGp1c3QgZm9yIGFzc2VydCAqLworCUludmFsaWRhdGVD YXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoKGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJz IHx8IGluZGV4SW5mby0+aWlfVW5pcXVlKSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54bWluKSk7CisKIAkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGlu ZGV4IGZ1bmN0aW9ucyAqLwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOwog CkBAIC0xNTMzLDEyICsxNTQzLDE5IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVh cFJlbGF0aW9uSWQsCiAJdGFibGVfY2xvc2UoaGVhcFJlbCwgTm9Mb2NrKTsKIAlpbmRleF9jbG9z ZShpbmRleFJlbGF0aW9uLCBOb0xvY2spOwogCisJLyoKKwkgKiBVcGRhdGluZyBwZ19pbmRleCBt aWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBh IHZhbGlkIHNuYXBzaG90LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOwogCS8qCiAJICogVXBkYXRlIHRoZSBwZ19pbmRleCByb3cgdG8gbWFyayB0 aGUgaW5kZXggYXMgcmVhZHkgZm9yIGluc2VydHMuIE9uY2Ugd2UKIAkgKiBjb21taXQgdGhpcyB0 cmFuc2FjdGlvbiwgYW55IG5ldyB0cmFuc2FjdGlvbnMgdGhhdCBvcGVuIHRoZSB0YWJsZSBtdXN0 CiAJICogaW5zZXJ0IG5ldyBlbnRyaWVzIGludG8gdGhlIGluZGV4IGZvciBpbnNlcnRpb25zIGFu ZCBub24tSE9UIHVwZGF0ZXMuCiAJICovCiAJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGluZGV4UmVs YXRpb25JZCwgSU5ERVhfQ1JFQVRFX1NFVF9SRUFEWSk7CisJLyogd2UgY2FuIGRvIGF3YXkgd2l0 aCBvdXIgc25hcHNob3QgKi8KKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQogCiAvKgpAQCAtMzIw Niw3ICszMjIzLDggQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAJCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkgTlVMTCwJLyogc2Nh biBrZXkgKi8KIAkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8K LQkJCQkJCQkJIHRydWUpOyAvKiBzeW5jc2NhbiBPSyAqLworCQkJCQkJCQkgdHJ1ZSwgLyogc3lu Y3NjYW4gT0sgKi8KKwkJCQkJCQkJIGZhbHNlKTsKIAogCXdoaWxlICh0YWJsZV9zY2FuX2dldG5l eHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkKIAl7CkBAIC0zMjY5LDEy ICszMjg3LDE2IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog ICogYXMgb2YgdGhlIHN0YXJ0IG9mIHRoZSBzY2FuIChzZWUgdGFibGVfaW5kZXhfYnVpbGRfc2Nh biksIHdoZXJlYXMgYSBub3JtYWwKICAqIGJ1aWxkIHRha2VzIGNhcmUgdG8gaW5jbHVkZSByZWNl bnRseS1kZWFkIHR1cGxlcy4gIFRoaXMgaXMgT0sgYmVjYXVzZQogICogd2Ugd29uJ3QgbWFyayB0 aGUgaW5kZXggdmFsaWQgdW50aWwgYWxsIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGJlIGFibGUK LSAqIHRvIHNlZSB0aG9zZSB0dXBsZXMgYXJlIGdvbmUuICBUaGUgcmVhc29uIGZvciBkb2luZyB0 aGF0IGlzIHRvIGF2b2lkCisgKiB0byBzZWUgdGhvc2UgdHVwbGVzIGFyZSBnb25lLiAgT25lIG9m IHJlYXNvbnMgZm9yIGRvaW5nIHRoYXQgaXMgdG8gYXZvaWQKICAqIGJvZ3VzIHVuaXF1ZS1pbmRl eCBmYWlsdXJlcyBkdWUgdG8gY29uY3VycmVudCBVUERBVEVzICh3ZSBtaWdodCBzZWUKICAqIGRp ZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgc2FtZSByb3cgYXMgYmVpbmcgdmFsaWQgd2hlbiB3ZSBw YXNzIG92ZXIgdGhlbSwKICAqIGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4g IFRoaXMgbGVhdmVzIHVzIHdpdGggYW4gaW5kZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBh bnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAg KgorICogRnVydGhlcm1vcmUsIGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09f UkVTRVRfU05BUFNIT1QgZm9yIHRoZQorICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hv dCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uCisgKiBmb3Ig dGhhdCBpcyB0byBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgorICoKICAqIE5l eHQsIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAiaW5kaXN2 YWxpZCIpIGFuZAogICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEg dGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKICAqIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxk IGhhdmUgYmVlbiBtb2RpZnlpbmcgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4gIE5vdwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9pbmRleGNtZHMuYwppbmRleCAwZmY0OThjNGUxNC4uYzhlNzg4MGY5NTQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNjcwLDIzICsxNjcwLDE3IEBAIERlZmluZUluZGV4KE9p ZCB0YWJsZUlkLAogCSAqIGNoYWlucyBjYW4gYmUgY3JlYXRlZCB3aGVyZSB0aGUgbmV3IHR1cGxl IGFuZCB0aGUgb2xkIHR1cGxlIGluIHRoZQogCSAqIGNoYWluIGhhdmUgZGlmZmVyZW50IGluZGV4 IGtleXMuCiAJICoKLQkgKiBXZSBub3cgdGFrZSBhIG5ldyBzbmFwc2hvdCwgYW5kIGJ1aWxkIHRo ZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQKLQkgKiBhcmUgdmlzaWJsZSBpbiB0aGlzIHNu YXBzaG90LiAgV2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KKwkgKiBXZSBi dWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5nIHNp bmdsZSBvcgorCSAqIG11bHRpcGxlIHJlZnJlc2hpbmcgc25hcHNob3RzLiBXZSBjYW4gYmUgc3Vy ZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bwogCSAqIHRoZXNlIHR1cGxlcyB3aWxsIGJlIGNvbXBh dGlibGUgd2l0aCB0aGUgaW5kZXgsIHNpbmNlIGFueSB1cGRhdGVzIG1hZGUKIAkgKiBieSB0cmFu c2FjdGlvbnMgdGhhdCBkaWRuJ3Qga25vdyBhYm91dCB0aGUgaW5kZXggYXJlIG5vdyBjb21taXR0 ZWQgb3IKIAkgKiByb2xsZWQgYmFjay4gIFRodXMsIGVhY2ggdmlzaWJsZSB0dXBsZSBpcyBlaXRo ZXIgdGhlIGVuZCBvZiBpdHMKIAkgKiBIT1QtY2hhaW4gb3IgdGhlIGV4dGVuc2lvbiBvZiB0aGUg Y2hhaW4gaXMgSE9ULXNhZmUgZm9yIHRoaXMgaW5kZXguCiAJICovCiAKLQkvKiBTZXQgQWN0aXZl U25hcHNob3Qgc2luY2UgZnVuY3Rpb25zIGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCi0J UHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0KIAkvKiBQZXJm b3JtIGNvbmN1cnJlbnQgYnVpbGQgb2YgaW5kZXggKi8KIAlpbmRleF9jb25jdXJyZW50bHlfYnVp bGQodGFibGVJZCwgaW5kZXhSZWxhdGlvbklkKTsKIAotCS8qIHdlIGNhbiBkbyBhd2F5IHdpdGgg b3VyIHNuYXBzaG90ICovCi0JUG9wQWN0aXZlU25hcHNob3QoKTsKLQogCS8qCiAJICogQ29tbWl0 IHRoaXMgdHJhbnNhY3Rpb24gdG8gbWFrZSB0aGUgaW5kaXNyZWFkeSB1cGRhdGUgdmlzaWJsZS4K IAkgKi8KQEAgLTQwODQsOSArNDA3OCw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCWlm IChuZXdpZHgtPnNhZmUpCiAJCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwogCi0JCS8qIFNl dCBBY3RpdmVTbmFwc2hvdCBzaW5jZSBmdW5jdGlvbnMgaW4gdGhlIGluZGV4ZXMgbWF5IG5lZWQg aXQgKi8KLQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0K IAkJLyoKIAkJICogVXBkYXRlIHByb2dyZXNzIGZvciB0aGUgaW5kZXggdG8gYnVpbGQsIHdpdGgg dGhlIGNvcnJlY3QgcGFyZW50CiAJCSAqIHRhYmxlIGludm9sdmVkLgpAQCAtNDEwMSw3ICs0MDky LDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10 LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJLyogUGVyZm9ybSBjb25jdXJyZW50IGJ1 aWxkIG9mIG5ldyBpbmRleCAqLwogCQlpbmRleF9jb25jdXJyZW50bHlfYnVpbGQobmV3aWR4LT50 YWJsZUlkLCBuZXdpZHgtPmluZGV4SWQpOwogCi0JCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jCmluZGV4IGU5MmUxMDhiNmI2Li5hMjZlMDgzMmUzOCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYwpAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NlbGZ1bmNz LmgiCisjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogCiAvKiBHVUMgcGFyYW1ldGVycyAqLwog ZG91YmxlCQljdXJzb3JfdHVwbGVfZnJhY3Rpb24gPSBERUZBVUxUX0NVUlNPUl9UVVBMRV9GUkFD VElPTjsKQEAgLTY3NzgsNiArNjc3OSw3IEBAIHBsYW5fY3JlYXRlX2luZGV4X3dvcmtlcnMoT2lk IHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQpCiAJUmVsYXRpb24JaGVhcDsKIAlSZWxhdGlvbglpbmRl eDsKIAlSZWxPcHRJbmZvICpyZWw7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0g ZmFsc2U7CiAJaW50CQkJcGFyYWxsZWxfd29ya2VyczsKIAlCbG9ja051bWJlciBoZWFwX2Jsb2Nr czsKIAlkb3VibGUJCXJlbHR1cGxlczsKQEAgLTY4MzMsNiArNjgzNSwxMSBAQCBwbGFuX2NyZWF0 ZV9pbmRleF93b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkKQogCWhlYXAgPSB0YWJs ZV9vcGVuKHRhYmxlT2lkLCBOb0xvY2spOwogCWluZGV4ID0gaW5kZXhfb3BlbihpbmRleE9pZCwg Tm9Mb2NrKTsKIAorCS8qIFNldCBBY3RpdmVTbmFwc2hvdCBzaW5jZSBmdW5jdGlvbnMgaW4gdGhl IGluZGV4ZXMgbWF5IG5lZWQgaXQgKi8KKwlpZiAoIUFjdGl2ZVNuYXBzaG90U2V0KCkpIHsKKwkJ UHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCW5lZWRfcG9w X2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJfQogCS8qCiAJICogRGV0ZXJtaW5lIGlmIGl0J3Mg c2FmZSB0byBwcm9jZWVkLgogCSAqCkBAIC02ODkwLDYgKzY4OTcsOCBAQCBwbGFuX2NyZWF0ZV9p bmRleF93b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkKQogCQlwYXJhbGxlbF93b3Jr ZXJzLS07CiAKIGRvbmU6CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0 aXZlU25hcHNob3QoKTsKIAlpbmRleF9jbG9zZShpbmRleCwgTm9Mb2NrKTsKIAl0YWJsZV9jbG9z ZShoZWFwLCBOb0xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCAwOWI5YjM5NGUwZS4uZWM4 OTI4YWQ5MGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUg InN0b3JhZ2UvcmVhZF9zdHJlYW0uaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRl ICJ1dGlscy9zbmFwc2hvdC5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgog CiAKICNkZWZpbmUgREVGQVVMVF9UQUJMRV9BQ0NFU1NfTUVUSE9ECSJoZWFwIgpAQCAtNjksNiAr NzAsMTcgQEAgdHlwZWRlZiBlbnVtIFNjYW5PcHRpb25zCiAJICogbmVlZGVkLiBJZiB0YWJsZSBk YXRhIG1heSBiZSBuZWVkZWQsIHNldCBTT19ORUVEX1RVUExFUy4KIAkgKi8KIAlTT19ORUVEX1RV UExFUyA9IDEgPDwgMTAsCisJLyoKKwkgKiBSZXNldCBzY2FuIGFuZCBjYXRhbG9nIHNuYXBzaG90 IGV2ZXJ5IHNvIG9mdGVuPyBJZiBzbywgZWFjaAorCSAqIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hf Tl9QQUdFIHBhZ2VzIGFjdGl2ZSBzbmFwc2hvdCBpcyBwb3BwZWQsCisJICogY2F0YWxvZyBzbmFw c2hvdCBpbnZhbGlkYXRlZCwgbGF0ZXN0IHNuYXBzaG90IHB1c2hlZCBhcyBhY3RpdmUuCisJICoK KwkgKiBBdCB0aGUgZW5kIG9mIHRoZSBzY2FuIHNuYXBzaG90IGlzIG5vdCBwb3BwZWQuCisJICog R29hbCBvZiBzdWNoIG1vZGUgaXMga2VlcCB4bWluIHByb3BhZ2F0aW5nIGhvcml6b24gZm9yd2Fy ZC4KKwkgKgorCSAqIHNlZSBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3QgZm9yIGRldGFpbHMuCisJ ICovCisJU09fUkVTRVRfU05BUFNIT1QgPSAxIDw8IDExLAogfQkJCVNjYW5PcHRpb25zOwogCiAv KgpAQCAtOTM1LDcgKzk0Nyw4IEBAIGV4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nh bl9jYXRhbG9nKFJlbGF0aW9uIHJlbGF0aW9uLCBpbnQgbmtleXMsCiBzdGF0aWMgaW5saW5lIFRh YmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90 IHNuYXBzaG90LAogCQkJCQkgIGludCBua2V5cywgc3RydWN0IFNjYW5LZXlEYXRhICprZXksCi0J CQkJCSAgYm9vbCBhbGxvd19zdHJhdCwgYm9vbCBhbGxvd19zeW5jKQorCQkJCQkgIGJvb2wgYWxs b3dfc3RyYXQsIGJvb2wgYWxsb3dfc3luYywKKwkJCQkJICBib29sIHJlc2V0X3NuYXBzaG90KQog ewogCXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfCBTT19BTExPV19QQUdFTU9ERTsK IApAQCAtOTQzLDYgKzk1NiwxNSBAQCB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoUmVsYXRpb24gcmVs LCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJZmxhZ3MgfD0gU09fQUxMT1dfU1RSQVQ7CiAJaWYgKGFs bG93X3N5bmMpCiAJCWZsYWdzIHw9IFNPX0FMTE9XX1NZTkM7CisJaWYgKHJlc2V0X3NuYXBzaG90 KQorCXsKKwkJSU5KRUNUSU9OX1BPSU5UKCJ0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25h cHNob3RzIik7CisJCS8qIEFjdGl2ZSBzbmFwc2hvdCBpcyByZXF1aXJlZCBvbiBzdGFydC4gKi8K KwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCkgPT0gc25hcHNob3QpOworCQkvKiBBY3RpdmUg c25hcHNob3Qgc2hvdWxkIG5vdCBiZSByZWdpc3RlcmVkIHRvIGtlZXAgeG1pbiBwcm9wYWdhdGlu Zy4gKi8KKwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJ CWZsYWdzIHw9IChTT19SRVNFVF9TTkFQU0hPVCk7CisJfQogCiAJcmV0dXJuIHJlbC0+cmRfdGFi bGVhbS0+c2Nhbl9iZWdpbihyZWwsIHNuYXBzaG90LCBua2V5cywga2V5LCBOVUxMLCBmbGFncyk7 CiB9CkBAIC0xNzc1LDYgKzE3OTcsMTAgQEAgdGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUo VGFibGVTY2FuRGVzYyBzY2FuLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAgKiB2ZXJ5IGhh cmQgdG8gZGV0ZWN0IHdoZXRoZXIgdGhleSdyZSByZWFsbHkgaW5jb21wYXRpYmxlIHdpdGggdGhl IGNoYWluIHRpcC4KICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0s IGl0IG1pZ2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIu CisgKgorICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IGFuZCBub24tcGFyYWxsZWwgY29u Y3VycmVudCBidWlsZAorICogU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNj YW4uIFRoYXQgbGVhZHMgZm9yIGNoYW5naW5nIHNuYXBzaG90cworICogb24gdGhlIGZseSB0byBh bGxvdyB4bWluIGhvcml6b24gcHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQog dGFibGVfaW5kZXhfYnVpbGRfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKaW5kZXggMDc1M2E5ZGY1OGMuLjIyMjVjZDBi Zjg3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZp bGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCkBAIC0x MCw3ICsxMCw3IEBAIEVYVEVOU0lPTiA9IGluamVjdGlvbl9wb2ludHMKIERBVEEgPSBpbmplY3Rp b25fcG9pbnRzLS0xLjAuc3FsCiBQR0ZJTEVERVNDID0gImluamVjdGlvbl9wb2ludHMgLSBmYWNp bGl0eSBmb3IgaW5qZWN0aW9uIHBvaW50cyIKIAotUkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMg cmVpbmRleF9jb25jCitSRUdSRVNTID0gaW5qZWN0aW9uX3BvaW50cyByZWluZGV4X2NvbmMgY2lj X3Jlc2V0X3NuYXBzaG90cwogUkVHUkVTU19PUFRTID0gLS1kbHBhdGg9JCh0b3BfYnVpbGRkaXIp L3NyYy90ZXN0L3JlZ3Jlc3MKIAogSVNPTEFUSU9OID0gYmFzaWMgaW5wbGFjZQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9z bmFwc2hvdHMub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVk L2NpY19yZXNldF9zbmFwc2hvdHMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi45NDhkMTIzMmFhMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv aW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dApAQCAtMCww ICsxLDEwNSBAQAorQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOworU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CisgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScs ICdub3RpY2UnKTsKKyBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0 YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGljZScpOworIGluamVj dGlvbl9wb2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOworQ1JFQVRFIFRBQkxFIGNpY19yZXNl dF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOworSU5TRVJUIElOVE8gY2ljX3Jl c2V0X3NuYXAudGJsIFNFTEVDVCBpLCBpICogSSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDAp IHMoaSk7CitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShp bnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdz cWwgQVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAg ICBSRVRVUk4gTU9EKCQxLCAyKSA9IDA7CitFTkQ7ICQkOworQ1JFQVRFIEZVTkNUSU9OIGNpY19y ZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKSBSRVRVUk5TIGJvb2wgSU1NVVRB QkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAgRVhFQ1VU RSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRVUk4gZmFsc2U7CitFTkQ7ICQkOwor LS0tLS0tLS0tLS0tLS0tLQorQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFy YWxsZWxfd29ya2Vycz0wKTsKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVf YmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUK K1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3Ry YXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRM WSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIp ID0gMDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJs ZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2 ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNF OiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9z dHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAu cHJlZGljYXRlX3N0YWJsZShpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3Nu YXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRh YmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0 aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUg Y2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJs ZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitEUk9QIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNo b3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9y ZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25h cHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CistLSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRf c25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNp Y19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0Qo aSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNj YW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRF WCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRl X3N0YWJsZV9ub19wYXJhbSgpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkgREVT QyBOVUxMUyBMQVNUKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklO KGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJP UCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBTQ0hFTUEgY2lj X3Jlc2V0X3NuYXAgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMyBvdGhlciBv YmplY3RzCitERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNpY19yZXNldF9zbmFwLnRi bAorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3Rh YmxlKGludGVnZXIpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGNpY19yZXNldF9zbmFwLnBy ZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKQorRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50 czsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5i dWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAppbmRl eCA5ODliNGRiMjI2Yi4uZmIxMzEyNzA2NjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv aW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvbWVzb24uYnVpbGQKQEAgLTM1LDYgKzM1LDcgQEAgdGVzdHMgKz0gewogICAg ICdzcWwnOiBbCiAgICAgICAnaW5qZWN0aW9uX3BvaW50cycsCiAgICAgICAncmVpbmRleF9jb25j JywKKyAgICAgICdjaWNfcmVzZXRfc25hcHNob3RzJywKICAgICBdLAogICAgICdyZWdyZXNzX2Fy Z3MnOiBbJy0tZGxwYXRoJywgbWVzb24uYnVpbGRfcm9vdCgpIC8gJ3NyYy90ZXN0L3JlZ3Jlc3Mn XSwKICAgICAjIFRoZSBpbmplY3Rpb24gcG9pbnRzIGFyZSBjbHVzdGVyLXdpZGUsIHNvIGRpc2Fi bGUgaW5zdGFsbGNoZWNrCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTA3MjUzNWIzNTUKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMu c3FsCkBAIC0wLDAgKzEsODYgQEAKK0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsK KworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CitTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90 aWNlJyk7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9z dHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CisKKworQ1JFQVRFIFNDSEVNQSBjaWNf cmVzZXRfc25hcDsKK0NSRUFURSBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwoaSBpbnQgcHJpbWFy eSBrZXksIGogaW50KTsKK0lOU0VSVCBJTlRPIGNpY19yZXNldF9zbmFwLnRibCBTRUxFQ1QgaSwg aSAqIEkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBzKGkpOworCitDUkVBVEUgRlVOQ1RJ T04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpbnRlZ2VyKSBSRVRVUk5TIGJvb2wg SU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lOCisgICAg RVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAgICBSRVRVUk4gTU9EKCQxLCAyKSA9 IDA7CitFTkQ7ICQkOworCitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRl X3N0YWJsZV9ub19wYXJhbSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFO R1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJy ZW50KCknOworICAgIFJFVFVSTiBmYWxzZTsKK0VORDsgJCQ7CisKKy0tLS0tLS0tLS0tLS0tLS0K K0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9MCk7 CisKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBp ZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0g MDsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNl dF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFw LnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFt KCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9Q IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOworUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCistLSBUaGUgc2FtZSBpbiBwYXJhbGxl bCBtb2RlCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3Jr ZXJzPTIpOworCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChp LCAyKSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBj aWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9u b19wYXJhbSgpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExT IExBU1QpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5E RVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsK K1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworRFJPUCBTQ0hFTUEgY2ljX3Jl c2V0X3NuYXAgQ0FTQ0FERTsKKworRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKLS0g CjIuNDMuMAoK --000000000000813841062b2863c9 Content-Type: application/octet-stream; name="v11-0005-Allow-snapshot-resets-in-concurrent-unique-index.patch" Content-Disposition: attachment; filename="v11-0005-Allow-snapshot-resets-in-concurrent-unique-index.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5n7ah9o6 RnJvbSA0ZGZlYzc0Y2ExMzVlMDM3MTE1NmQ2OGNkMzAzZTgzMDJhMzI4ZTY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCA3IERlYyAyMDI0IDIzOjI3OjM0ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MTEgMDUv MTFdIEFsbG93IHNuYXBzaG90IHJlc2V0cyBpbiBjb25jdXJyZW50IHVuaXF1ZSBpbmRleAogYnVp bGRzCgpQcmV2aW91c2x5LCBjb25jdXJyZW50IHVuaXF1ZSBpbmRleCBidWlsZHMgdXNlZCBhIGZp eGVkIHNuYXBzaG90IGZvciB0aGUgZW50aXJlCnNjYW4gdG8gZW5zdXJlIHByb3BlciB1bmlxdWVu ZXNzIGNoZWNrcy4gVGhpcyBjb3VsZCBkZWxheSB2YWN1dW0ncyBhYmlsaXR5IHRvCmNsZWFuIHVw IGRlYWQgdHVwbGVzLgoKTm93IHJlc2V0IHNuYXBzaG90cyBwZXJpb2RpY2FsbHkgZHVyaW5nIGNv bmN1cnJlbnQgdW5pcXVlIGluZGV4IGJ1aWxkcywgd2hpbGUKc3RpbGwgbWFpbnRhaW5pbmcgdW5p cXVlbmVzcyBieToKCjEuIElnbm9yaW5nIGRlYWQgdHVwbGVzIGR1cmluZyB1bmlxdWVuZXNzIGNo ZWNrcyBpbiB0dXBsZXNvcnQKMi4gQWRkaW5nIGEgdW5pcXVlbmVzcyBjaGVjayBpbiBfYnRfbG9h ZCB0aGF0IGRldGVjdHMgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIHdpdGggdGhlIHNhbWUga2V5IHZh bHVlcwoKVGhpcyBpbXByb3ZlcyB2YWN1dW0gZWZmZWN0aXZlbmVzcyBkdXJpbmcgbG9uZy1ydW5u aW5nIGluZGV4IGJ1aWxkcyB3aXRob3V0CmNvbXByb21pc2luZyBpbmRleCB1bmlxdWVuZXNzIGVu Zm9yY2VtZW50LgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QgICAgICAg ICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAg ICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMgICAgICAg ICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAg ICB8IDE5MiArKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c3BsaXRsb2MuYyAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1 dGlscy5jICAgICAgICAgIHwgIDI5ICsrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAg ICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0 dmFyaWFudHMuYyAgICB8ICA2OSArKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgg ICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgg ICAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0Lmgg ICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3Rz Lm91dCAgICAgICAgICB8ICAgNiArCiAxMyBmaWxlcyBjaGFuZ2VkLCAyNjMgaW5zZXJ0aW9ucygr KSwgOTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv UkVBRE1FLkhPVCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggNzRl NDA3ZjM3NWEuLjgyOWRhZDExOTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9SRUFETUUuSE9UCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAg LTM4NiwxMiArMzg2LDEyIEBAIGhhdmUgdGhlIEhPVC1zYWZldHkgcHJvcGVydHkgZW5mb3JjZWQg YmVmb3JlIHdlIHN0YXJ0IHRvIGJ1aWxkIHRoZSBuZXcKIGluZGV4LgogCiBBZnRlciB3YWl0aW5n IGZvciB0cmFuc2FjdGlvbnMgd2hpY2ggaGFkIHRoZSB0YWJsZSBvcGVuLCB3ZSBidWlsZCB0aGUg aW5kZXgKLWZvciBhbGwgcm93cyB0aGF0IGFyZSB2YWxpZCBpbiBhIGZyZXNoIHNuYXBzaG90LiAg QW55IHR1cGxlcyB2aXNpYmxlIGluIHRoZQotc25hcHNob3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQg Zm9yd2FyZC1ncm93aW5nIEhPVCBjaGFpbnMuICAoVGhleSBtaWdodCBoYXZlCi1vbGRlciBIT1Qg dXBkYXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUgYnJva2VuLCBidXQgdGhpcyBpcyBPSyBmb3Ig dGhlIHNhbWUKLXJlYXNvbiBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBidWlsZC4pICBBcyBh Ym92ZSwgd2UgcG9pbnQgdGhlIGluZGV4Ci1lbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVw ZGF0ZSBjaGFpbiBidXQgd2UgdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUKLWxpdmUgdHVwbGUu Citmb3IgYWxsIHJvd3MgdGhhdCBhcmUgdmFsaWQgaW4gYSBmcmVzaCBzbmFwc2hvdCwgd2hpY2gg aXMgdXBkYXRlZCBldmVyeSBzbworb2Z0ZW4uIEFueSB0dXBsZXMgdmlzaWJsZSBpbiB0aGUgc25h cHNob3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5nCitIT1QgY2hhaW5zLiAg KFRoZXkgbWlnaHQgaGF2ZSBvbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUg YnJva2VuLAorYnV0IHRoaXMgaXMgT0sgZm9yIHRoZSBzYW1lIHJlYXNvbiBpdCdzIE9LIGluIGEg cmVndWxhciBpbmRleCBidWlsZC4pCitBcyBhYm92ZSwgd2UgcG9pbnQgdGhlIGluZGV4IGVudHJ5 IGF0IHRoZSByb290IG9mIHRoZSBIT1QtdXBkYXRlIGNoYWluIGJ1dCB3ZQordXNlIHRoZSBrZXkg dmFsdWUgZnJvbSB0aGUgbGl2ZSB0dXBsZS4KIAogV2UgbWFyayB0aGUgaW5kZXggb3BlbiBmb3Ig aW5zZXJ0cyAoYnV0IHN0aWxsIG5vdCByZWFkeSBmb3IgcmVhZHMpIHRoZW4KIHdlIGFnYWluIHdh aXQgZm9yIHRyYW5zYWN0aW9ucyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVuLiAgVGhlbiB3ZSB0 YWtlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCAzYjNjYmU1 NzFhYy4uYmMzZDM3MzhlZGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRs ZXIuYwpAQCAtMTIzMiwxNSArMTIzMiwxNSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2 ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1 aWxkLCBvciBkdXJpbmcgYm9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90 CiAJICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCB3aGlsZSB0 aGF0IHNuYXBzaG90IGlzIHJlc2V0Ci0JICogZXZlcnkgc28gb2Z0ZW4gKGluIGNhc2Ugb2Ygbm9u LXVuaXF1ZSBpbmRleCkuCisJICogZXZlcnkgc28gb2Z0ZW4uCiAJICovCiAJT2xkZXN0WG1pbiA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJLyoKLQkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5l ZWQgY29uc2lzdGVudCBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJICogRm9yIGNvbmN1 cnJlbnQgYnVpbGRzIG9mIG5vbi1zeXN0ZW0gaW5kZXhlcywgd2UgbWF5IHdhbnQgdG8gcGVyaW9k aWNhbGx5CisJICogcmVzZXQgc25hcHNob3RzIHRvIGFsbG93IHZhY3V1bSB0byBjbGVhbiB1cCB0 dXBsZXMuCiAJICovCiAJcmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJyZW50 ICYmCi0JCQkJCSAgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmCiAJCQkJCSAgIWlzX3N5c3RlbV9j YXRhbG9nOyAvKiBqdXN0IGZvciB0aGUgY2FzZSAqLwogCiAJLyogb2theSB0byBpZ25vcmUgbGF6 eSBWQUNVVU1zIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0ZGVkdXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYwppbmRleCA1 MzM2M2VlNjk1YS4uZjg5NzZkZTY3ODQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0ZGVkdXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVw LmMKQEAgLTE0OCw3ICsxNDgsNyBAQCBfYnRfZGVkdXBfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWYsIEluZGV4VHVwbGUgbmV3aXRlbSwgU2l6ZSBuZXdpdGVtc3osCiAJCQlfYnRfZGVkdXBf c3RhcnRfcGVuZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQogCQllbHNlIGlmIChzdGF0 ZS0+ZGVkdXBsaWNhdGUgJiYKLQkJCQkgX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5i YXNlLCBpdHVwKSA+IG5rZXlhdHRzICYmCisJCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBz dGF0ZS0+YmFzZSwgaXR1cCwgTlVMTCkgPiBua2V5YXR0cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2 ZV9odGlkKHN0YXRlLCBpdHVwKSkKIAkJewogCQkJLyoKQEAgLTM3NCw3ICszNzQsNyBAQCBfYnRf Ym90dG9tdXBkZWxfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBS ZWwsCiAJCQkvKiBpdHVwIHN0YXJ0cyBmaXJzdCBwZW5kaW5nIGludGVydmFsICovCiAJCQlfYnRf ZGVkdXBfc3RhcnRfcGVuZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQotCQllbHNlIGlm IChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXApID4gbmtleWF0dHMg JiYKKwkJZWxzZSBpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVw LCBOVUxMKSA+IG5rZXlhdHRzICYmCiAJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoc3RhdGUsIGl0 dXApKQogCQl7CiAJCQkvKiBUdXBsZSBpcyBlcXVhbDsganVzdCBhZGRlZCBpdHMgVElEcyB0byBw ZW5kaW5nIGludGVydmFsICovCkBAIC03ODksMTIgKzc4OSwxMiBAQCBfYnRfZG9fc2luZ2xldmFs KFJlbGF0aW9uIHJlbCwgUGFnZSBwYWdlLCBCVERlZHVwU3RhdGUgc3RhdGUsCiAJaXRlbWlkID0g UGFnZUdldEl0ZW1JZChwYWdlLCBtaW5vZmYpOwogCWl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdl dEl0ZW0ocGFnZSwgaXRlbWlkKTsKIAotCWlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbmV3 aXRlbSwgaXR1cCkgPiBua2V5YXR0cykKKwlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5l d2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRl bUlkKHBhZ2UsIFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkpOwogCQlpdHVwID0gKEluZGV4 VHVwbGUpIFBhZ2VHZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQkJaWYgKF9idF9rZWVwX25hdHRz X2Zhc3QocmVsLCBuZXdpdGVtLCBpdHVwKSA+IG5rZXlhdHRzKQorCQlpZiAoX2J0X2tlZXBfbmF0 dHNfZmFzdChyZWwsIG5ld2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJCQlyZXR1cm4g dHJ1ZTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29y dC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggODEwZjgwZmM4 ZTYuLjhiMjM2YzhjY2Q2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtODMs NiArODMsNyBAQCB0eXBlZGVmIHN0cnVjdCBCVFNwb29sCiAJUmVsYXRpb24JaW5kZXg7CiAJYm9v bAkJaXN1bmlxdWU7CiAJYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OworCWJvb2wJCXVuaXF1ZV9k ZWFkX2lnbm9yZWQ7CiB9IEJUU3Bvb2w7CiAKIC8qCkBAIC0xMDEsNiArMTAyLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgQlRTaGFyZWQKIAlPaWQJCQlpbmRleHJlbGlkOwogCWJvb2wJCWlzdW5pcXVlOwog CWJvb2wJCW51bGxzX25vdF9kaXN0aW5jdDsKKwlib29sCQl1bmlxdWVfZGVhZF9pZ25vcmVkOwog CWJvb2wJCWlzY29uY3VycmVudDsKIAlpbnQJCQlzY2FudHVwbGVzb3J0c3RhdGVzOwogCkBAIC0y MDMsMTUgKzIwNSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBCVExlYWRlcgogICovCiB0eXBlZGVmIHN0 cnVjdCBCVEJ1aWxkU3RhdGUKIHsKLQlib29sCQlpc3VuaXF1ZTsKLQlib29sCQludWxsc19ub3Rf ZGlzdGluY3Q7CiAJYm9vbAkJaGF2ZWRlYWQ7CiAJUmVsYXRpb24JaGVhcDsKIAlCVFNwb29sICAg ICpzcG9vbDsKIAogCS8qCi0JICogc3Bvb2wyIGlzIG5lZWRlZCBvbmx5IHdoZW4gdGhlIGluZGV4 IGlzIGEgdW5pcXVlIGluZGV4LiBEZWFkIHR1cGxlcyBhcmUKLQkgKiBwdXQgaW50byBzcG9vbDIg aW5zdGVhZCBvZiBzcG9vbCBpbiBvcmRlciB0byBhdm9pZCB1bmlxdWVuZXNzIGNoZWNrLgorCSAq IHNwb29sMiBpcyBuZWVkZWQgb25seSB3aGVuIHRoZSBpbmRleCBpcyBhIHVuaXF1ZSBpbmRleCBh bmQgYnVpbGQgbm9uLWNvbmN1cnJlbnRseS4KKwkgKiBEZWFkIHR1cGxlcyBhcmUgcHV0IGludG8g c3Bvb2wyIGluc3RlYWQgb2Ygc3Bvb2wgaW4gb3JkZXIgdG8gYXZvaWQgdW5pcXVlbmVzcyBjaGVj ay4KIAkgKi8KIAlCVFNwb29sICAgICpzcG9vbDI7CiAJZG91YmxlCQlpbmR0dXBsZXM7CkBAIC0y NTgsNyArMjU4LDcgQEAgc3RhdGljIGRvdWJsZSBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LAogc3RhdGljIHZvaWQgX2J0X3Nwb29sZGVzdHJveShCVFNw b29sICpidHNwb29sKTsKIHN0YXRpYyB2b2lkIF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBJ dGVtUG9pbnRlciBzZWxmLAogCQkJCQkgIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCk7Ci1z dGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bv b2wyLCBib29sIHJlc2V0X3NuYXBzaG90cyk7CitzdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJU U3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIGlzY29uY3VycmVudCk7CiBz dGF0aWMgdm9pZCBfYnRfYnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2ludGVy IHRpZCwgRGF0dW0gKnZhbHVlcywKIAkJCQkJCQkgICBib29sICppc251bGwsIGJvb2wgdHVwbGVJ c0FsaXZlLCB2b2lkICpzdGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVyIF9idF9ibG5ld3Bh Z2UoQlRXcml0ZVN0YXRlICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0zMDMsOCArMzAzLDYg QEAgYnRidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRl eEluZm8pCiAJCVJlc2V0VXNhZ2UoKTsKICNlbmRpZgkJCQkJCQkvKiBCVFJFRV9CVUlMRF9TVEFU UyAqLwogCi0JYnVpbGRzdGF0ZS5pc3VuaXF1ZSA9IGluZGV4SW5mby0+aWlfVW5pcXVlOwotCWJ1 aWxkc3RhdGUubnVsbHNfbm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3Rp bmN0OwogCWJ1aWxkc3RhdGUuaGF2ZWRlYWQgPSBmYWxzZTsKIAlidWlsZHN0YXRlLmhlYXAgPSBo ZWFwOwogCWJ1aWxkc3RhdGUuc3Bvb2wgPSBOVUxMOwpAQCAtMzIxLDIwICszMTksMjAgQEAgYnRi dWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8p CiAJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kZXgpKTsKIAogCXJlbHR1cGxlcyA9IF9i dF9zcG9vbHNfaGVhcHNjYW4oaGVhcCwgaW5kZXgsICZidWlsZHN0YXRlLCBpbmRleEluZm8pOwot CUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVl IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4 SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWlu KSk7CiAKIAkvKgogCSAqIEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhlIHNv cnQgb2YgdGhlIHNwb29sIGZpbGUsICgyKQogCSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1cGxl cyBpbnRvIGJ0cmVlIHBhZ2VzIGFuZCAoMykgYnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2ZWxz LiAgRmluYWxseSwgaXQgbWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFyYWxs ZWxpc20uCiAJICovCi0JX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRl LnNwb29sMiwgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVu dCk7CisJX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwg aW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKIAlfYnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3RhdGUu c3Bvb2wpOwogCWlmIChidWlsZHN0YXRlLnNwb29sMikKIAkJX2J0X3Nwb29sZGVzdHJveShidWls ZHN0YXRlLnNwb29sMik7CiAJaWYgKGJ1aWxkc3RhdGUuYnRsZWFkZXIpCiAJCV9idF9lbmRfcGFy YWxsZWwoYnVpbGRzdGF0ZS5idGxlYWRlcik7Ci0JQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1 cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJlc3VsdCA9IChJbmRleEJ1aWxk UmVzdWx0ICopIHBhbGxvYyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOwogCkBAIC0zODEsNiAr Mzc5LDExIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAlidHNwb29sLT5pbmRleCA9IGluZGV4Owog CWJ0c3Bvb2wtPmlzdW5pcXVlID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7CiAJYnRzcG9vbC0+bnVs bHNfbm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0OworICAgIC8q CisgICAgICogV2UgbmVlZCB0byBpZ25vcmUgZGVhZCB0dXBsZXMgZm9yIHVuaXF1ZSBjaGVja3Mg aW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkLgorICAgICAqIEl0IGlzIHJlcXVpcmVkIGJlY2F1 c2Ugb3IgcGVyaW9kaWMgcmVzZXQgb2Ygc25hcHNob3QuCisgICAgICovCisJYnRzcG9vbC0+dW5p cXVlX2RlYWRfaWdub3JlZCA9IGluZGV4SW5mby0+aWlfQ29uY3VycmVudCAmJiBpbmRleEluZm8t PmlpX1VuaXF1ZTsKIAogCS8qIFNhdmUgYXMgcHJpbWFyeSBzcG9vbCAqLwogCWJ1aWxkc3RhdGUt PnNwb29sID0gYnRzcG9vbDsKQEAgLTQyOSw4ICs0MzIsOSBAQCBfYnRfc3Bvb2xzX2hlYXBzY2Fu KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs CiAJICogdGhlIHVzZSBvZiBwYXJhbGxlbGlzbSBvciBhbnkgb3RoZXIgZmFjdG9yLgogCSAqLwog CWJ1aWxkc3RhdGUtPnNwb29sLT5zb3J0c3RhdGUgPQotCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhf YnRyZWUoaGVhcCwgaW5kZXgsIGJ1aWxkc3RhdGUtPmlzdW5pcXVlLAotCQkJCQkJCQkJYnVpbGRz dGF0ZS0+bnVsbHNfbm90X2Rpc3RpbmN0LAorCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUo aGVhcCwgaW5kZXgsIGJ0c3Bvb2wtPmlzdW5pcXVlLAorCQkJCQkJCQkJYnRzcG9vbC0+bnVsbHNf bm90X2Rpc3RpbmN0LAorCQkJCQkJCQkJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJ CQkJCQkJCW1haW50ZW5hbmNlX3dvcmtfbWVtLCBjb29yZGluYXRlLAogCQkJCQkJCQkJVFVQTEVT T1JUX05PTkUpOwogCkBAIC00MzgsOCArNDQyLDEyIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkg KiBJZiBidWlsZGluZyBhIHVuaXF1ZSBpbmRleCwgcHV0IGRlYWQgdHVwbGVzIGluIGEgc2Vjb25k IHNwb29sIHRvIGtlZXAKIAkgKiB0aGVtIG91dCBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjay4gIFdl IGV4cGVjdCB0aGF0IHRoZSBzZWNvbmQgc3Bvb2wgKGZvcgogCSAqIGRlYWQgdHVwbGVzKSB3b24n dCBnZXQgdmVyeSBmdWxsLCBzbyB3ZSBnaXZlIGl0IG9ubHkgd29ya19tZW0uCisJICoKKwkgKiBJ biBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgZGVhZCB0dXBsZXMgYXJlIG5vdCBuZWVkIHRvIGJl IHB1dCBpbnRvIGluZGV4CisJICogc2luY2Ugd2Ugd2FpdCBmb3IgYWxsIHNuYXBzaG90cyBvbGRl ciB0aGFuIHJlZmVyZW5jZSBzbmFwc2hvdCBkdXJpbmcgdGhlCisJICogdmFsaWRhdGlvbiBwaGFz ZS4KIAkgKi8KLQlpZiAoaW5kZXhJbmZvLT5paV9VbmlxdWUpCisJaWYgKGluZGV4SW5mby0+aWlf VW5pcXVlICYmICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpCiAJewogCQlCVFNwb29sICAgICpi dHNwb29sMiA9IChCVFNwb29sICopIHBhbGxvYzAoc2l6ZW9mKEJUU3Bvb2wpKTsKIAkJU29ydENv b3JkaW5hdGUgY29vcmRpbmF0ZTIgPSBOVUxMOwpAQCAtNDcwLDcgKzQ3OCw3IEBAIF9idF9zcG9v bHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwKIAkJICogZnVsbCwgc28gd2UgZ2l2ZSBpdCBvbmx5IHdvcmtfbWVtCiAJCSAq LwogCQlidWlsZHN0YXRlLT5zcG9vbDItPnNvcnRzdGF0ZSA9Ci0JCQl0dXBsZXNvcnRfYmVnaW5f aW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZhbHNlLCBmYWxzZSwgd29ya19tZW0sCisJCQl0dXBs ZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IHdvcmtfbWVtLAogCQkJCQkJCQkJCWNvb3JkaW5hdGUyLCBUVVBMRVNPUlRfTk9ORSk7CiAJfQog CkBAIC00ODMsNyArNDkxLDcgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCQlyZWx0dXBsZXMgPSBf YnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRzdGF0ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8t PmlpX0Jyb2tlbkhvdENoYWluKTsKIAlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNz ZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwg IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZv LT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsK IAogCS8qCiAJICogU2V0IHRoZSBwcm9ncmVzcyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAg UmVzZXQgdGhlIGJsb2NrIG51bWJlcgpAQCAtNTM5LDcgKzU0Nyw3IEBAIF9idF9zcG9vbChCVFNw b29sICpidHNwb29sLCBJdGVtUG9pbnRlciBzZWxmLCBEYXR1bSAqdmFsdWVzLCBib29sICppc251 bGwpCiAgKiBjcmVhdGUgYW4gZW50aXJlIGJ0cmVlLgogICovCiBzdGF0aWMgdm9pZAotX2J0X2xl YWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9z bmFwc2hvdHMpCitfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bv b2wyLCBib29sIGlzY29uY3VycmVudCkKIHsKIAlCVFdyaXRlU3RhdGUgd3N0YXRlOwogCkBAIC01 NjEsNyArNTY5LDcgQEAgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpi dHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpCiAJCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVf UEhBU0VfUEVSRk9STVNPUlRfMik7CiAJCXR1cGxlc29ydF9wZXJmb3Jtc29ydChidHNwb29sMi0+ c29ydHN0YXRlKTsKIAl9Ci0JQXNzZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghaXNjb25jdXJyZW50IHx8ICFUcmFu c2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXdzdGF0ZS5oZWFwID0gYnRzcG9v bC0+aGVhcDsKIAl3c3RhdGUuaW5kZXggPSBidHNwb29sLT5pbmRleDsKQEAgLTU3NSw3ICs1ODMs NyBAQCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBi b29sIHJlc2V0X3NuYXBzaG90cykKIAogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJP R1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0Vf TEVBRl9MT0FEKTsKLQlBc3NlcnQoIXJlc2V0X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpc2NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCV9idF9sb2FkKCZ3c3RhdGUsIGJ0c3Bvb2ws IGJ0c3Bvb2wyKTsKIH0KIApAQCAtMTE1NCwxMyArMTE2MiwxMTcgQEAgX2J0X2xvYWQoQlRXcml0 ZVN0YXRlICp3c3RhdGUsIEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCVNv cnRTdXBwb3J0IHNvcnRLZXlzOwogCWludDY0CQl0dXBsZXNfZG9uZSA9IDA7CiAJYm9vbAkJZGVk dXBsaWNhdGU7CisJYm9vbAkJZmFpbF9vbl9hbGl2ZV9kdXBsaWNhdGU7CiAKIAl3c3RhdGUtPmJ1 bGtzdGF0ZSA9IHNtZ3JfYnVsa19zdGFydF9yZWwod3N0YXRlLT5pbmRleCwgTUFJTl9GT1JLTlVN KTsKIAogCWRlZHVwbGljYXRlID0gd3N0YXRlLT5pbnNrZXktPmFsbGVxdWFsaW1hZ2UgJiYgIWJ0 c3Bvb2wtPmlzdW5pcXVlICYmCiAJCUJUR2V0RGVkdXBsaWNhdGVJdGVtcyh3c3RhdGUtPmluZGV4 KTsKKwkvKgorCSAqIFRoZSB1bmlxdWVfZGVhZF9pZ25vcmVkIGRvZXMgbm90IGd1YXJhbnRlZSBh YnNlbmNlIG9mIG11bHRpcGxlIGFsaXZlCisJICogdHVwbGVzIHdpdGggc2FtZSB2YWx1ZXMgZXhp c3RzIGluIHRoZSBzcG9vbC4gU3VjaCB0aGluZyBtYXkgaGFwcGVuIGlmCisJICogYWxpdmUgdHVw bGVzIGFyZSBsb2NhdGVkIGJldHdlZW4gYSBmZXcgZGVhZCB0dXBsZXMsIGxpa2UgdGhpczogYWRk ZGEuCisJICovCisJZmFpbF9vbl9hbGl2ZV9kdXBsaWNhdGUgPSBidHNwb29sLT51bmlxdWVfZGVh ZF9pZ25vcmVkOwogCi0JaWYgKG1lcmdlKQorCWlmIChmYWlsX29uX2FsaXZlX2R1cGxpY2F0ZSkK Kwl7CisJCWJvb2wJc2Vlbl9hbGl2ZSA9IGZhbHNlLAorCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7 CisJCUluZGV4VHVwbGUgcHJldiA9IE5VTEw7CisJCVR1cGxlVGFibGVTbG90IAkJKnNsb3QgPSBN YWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcih3c3RhdGUtPmhlYXApLAor CQkJCQkJCQkJCQkJCQkJICAgJlRUU09wc0J1ZmZlckhlYXBUdXBsZSk7CisJCUluZGV4RmV0Y2hU YWJsZURhdGEgKmZldGNoID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4od3N0YXRlLT5oZWFwKTsK KworCQlBc3NlcnQoYnRzcG9vbC0+aXN1bmlxdWUpOworCQlBc3NlcnQoIWJ0c3Bvb2wyKTsKKwor CQl3aGlsZSAoKGl0dXAgPSB0dXBsZXNvcnRfZ2V0aW5kZXh0dXBsZShidHNwb29sLT5zb3J0c3Rh dGUsIHRydWUpKSAhPSBOVUxMKQorCQl7CisJCQlib29sCXR1cGxlc19lcXVhbCA9IGZhbHNlOwor CisJCQkvKiBXaGVuIHdlIHNlZSBmaXJzdCB0dXBsZSwgY3JlYXRlIGZpcnN0IGluZGV4IHBhZ2Ug Ki8KKwkJCWlmIChzdGF0ZSA9PSBOVUxMKQorCQkJCXN0YXRlID0gX2J0X3BhZ2VzdGF0ZSh3c3Rh dGUsIDApOworCisJCQlpZiAocHJldiAhPSBOVUxMKSAvKiBpZiBpcyBub3QgdGhlIGZpcnN0IHR1 cGxlICovCisJCQl7CisJCQkJYm9vbAloYXNfbnVsbHMgPSBmYWxzZSwKKwkJCQkJCWNhbGxfYWdh aW4sIC8qIGp1c3QgdG8gcGFzcyBzb21ldGhpbmcgKi8KKwkJCQkJCWlnbm9yZWQsICAvKiBqdXN0 IHRvIHBhc3Mgc29tZXRoaW5nICovCisJCQkJCQlub3dfYWxpdmU7CisJCQkJSXRlbVBvaW50ZXJE YXRhIHRpZDsKKworCQkJCS8qIGlmIHRoaXMgdHVwbGVzIGVxdWFsIHRvIHByZXZpb3VzZSBvbmU/ ICovCisJCQkJaWYgKHdzdGF0ZS0+aW5za2V5LT5hbGxlcXVhbGltYWdlKQorCQkJCQl0dXBsZXNf ZXF1YWwgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHdzdGF0ZS0+aW5kZXgsIHByZXYsIGl0dXAsICZo YXNfbnVsbHMpID4ga2V5c3o7CisJCQkJZWxzZQorCQkJCQl0dXBsZXNfZXF1YWwgPSBfYnRfa2Vl cF9uYXR0cyh3c3RhdGUtPmluZGV4LCBwcmV2LCBpdHVwLHdzdGF0ZS0+aW5za2V5LCAmaGFzX251 bGxzKSA+IGtleXN6OworCisJCQkJLyogaGFuZGxlIG51bGwgdmFsdWVzIGNvcnJlY3RseSAqLwor CQkJCWlmIChoYXNfbnVsbHMgJiYgIWJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0aW5jdCkKKwkJCQkJ dHVwbGVzX2VxdWFsID0gZmFsc2U7CisKKwkJCQlpZiAodHVwbGVzX2VxdWFsKQorCQkJCXsKKwkJ CQkJLyogY2hlY2sgcHJldmlvdXMgdHVwbGUgaWYgbm90IHlldCAqLworCQkJCQlpZiAoIXByZXZf dGVzdGVkKQorCQkJCQl7CisJCQkJCQljYWxsX2FnYWluID0gZmFsc2U7CisJCQkJCQl0aWQgPSBw cmV2LT50X3RpZDsKKwkJCQkJCXNlZW5fYWxpdmUgPSB0YWJsZV9pbmRleF9mZXRjaF90dXBsZShm ZXRjaCwgJnRpZCwgU25hcHNob3RTZWxmLCBzbG90LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQpOwor CQkJCQkJcHJldl90ZXN0ZWQgPSB0cnVlOworCQkJCQl9CisKKwkJCQkJY2FsbF9hZ2FpbiA9IGZh bHNlOworCQkJCQl0aWQgPSBpdHVwLT50X3RpZDsKKwkJCQkJbm93X2FsaXZlID0gdGFibGVfaW5k ZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQsIFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdh aW4sICZpZ25vcmVkKTsKKworCQkJCQkvKiBhcmUgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIGRldGVj dGVkIGluIGVxdWFsIGdyb3VwPyAqLworCQkJCQlpZiAoc2Vlbl9hbGl2ZSAmJiBub3dfYWxpdmUp CisJCQkJCXsKKwkJCQkJCWNoYXIgKmtleV9kZXNjOworCQkJCQkJVHVwbGVEZXNjIHR1cERlcyA9 IFJlbGF0aW9uR2V0RGVzY3Iod3N0YXRlLT5pbmRleCk7CisJCQkJCQlib29sIGlzbnVsbFtJTkRF WF9NQVhfS0VZU107CisJCQkJCQlEYXR1bSB2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOworCisJCQkJ CQlpbmRleF9kZWZvcm1fdHVwbGUoaXR1cCwgdHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJ CQkJCWtleV9kZXNjID0gQnVpbGRJbmRleFZhbHVlRGVzY3JpcHRpb24od3N0YXRlLT5pbmRleCwg dmFsdWVzLCBpc251bGwpOworCisJCQkJCQkvKiBrZWVwIHRoaXMgbWVzc2FnZSBpbiBzeW5jIHdp dGggdGhlIHNhbWUgaW4gY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayAqLworCQkJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9O KSwKKwkJCQkJCQkJCQllcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNc IiIsCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5kZXgp KSwKKwkJCQkJCQkJCQlrZXlfZGVzYyA/IGVycmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQu Iiwga2V5X2Rlc2MpIDoKKwkJCQkJCQkJCQllcnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0 LiIpLAorCQkJCQkJCQkJCWVycnRhYmxlY29uc3RyYWludCh3c3RhdGUtPmhlYXAsCisJCQkJCQkJ CQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5kZXgpKSkpOworCQkJ CQl9CisJCQkJCXNlZW5fYWxpdmUgfD0gbm93X2FsaXZlOworCQkJCX0KKwkJCX0KKworCQkJaWYg KCF0dXBsZXNfZXF1YWwpCisJCQl7CisJCQkJc2Vlbl9hbGl2ZSA9IGZhbHNlOworCQkJCXByZXZf dGVzdGVkID0gZmFsc2U7CisJCQl9CisKKwkJCV9idF9idWlsZGFkZCh3c3RhdGUsIHN0YXRlLCBp dHVwLCAwKTsKKwkJCWlmIChwcmV2KSBwZnJlZShwcmV2KTsKKwkJCXByZXYgPSBDb3B5SW5kZXhU dXBsZShpdHVwKTsKKworCQkJLyogUmVwb3J0IHByb2dyZXNzICovCisJCQlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNfRE9ORSwKKwkJCQkJCQkJ CQkgKyt0dXBsZXNfZG9uZSk7CisJCX0KKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChz bG90KTsKKwkJdGFibGVfaW5kZXhfZmV0Y2hfZW5kKGZldGNoKTsKKwkJQXNzZXJ0KCFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwl9CisJZWxzZSBpZiAobWVyZ2UpCiAJewog CQkvKgogCQkgKiBBbm90aGVyIEJUU3Bvb2wgZm9yIGRlYWQgdHVwbGVzIGV4aXN0cy4gTm93IHdl IGhhdmUgdG8gbWVyZ2UKQEAgLTEzMjEsNyArMTQzMyw3IEBAIF9idF9sb2FkKEJUV3JpdGVTdGF0 ZSAqd3N0YXRlLCBCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJ CQlJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAkJCX0KIAkJCWVsc2UgaWYgKF9idF9rZWVwX25hdHRz X2Zhc3Qod3N0YXRlLT5pbmRleCwgZHN0YXRlLT5iYXNlLAotCQkJCQkJCQkJCSBpdHVwKSA+IGtl eXN6ICYmCisJCQkJCQkJCQkJIGl0dXAsIE5VTEwpID4ga2V5c3ogJiYKIAkJCQkJIF9idF9kZWR1 cF9zYXZlX2h0aWQoZHN0YXRlLCBpdHVwKSkKIAkJCXsKIAkJCQkvKgpAQCAtMTQxOCw3ICsxNTMw LDYgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBp c2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAli b29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9z bmFwc2hvdCA9IHRydWU7Ci0JYm9vbAkJcmVzZXRfc25hcHNob3Q7CiAJaW50CQkJcXVlcnlsZW47 CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC0xNDM2LDIxICsxNTQ3 LDEyIEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wg aXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFk ZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0ICsgMSA6IHJlcXVlc3Q7CiAKLSAgICAvKgotCSAqIEZv ciBjb25jdXJyZW50IG5vbi11bmlxdWUgaW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5 IHJlc2V0IHNuYXBzaG90cwotCSAqIHRvIGFsbG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5j ZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRoZXNlIGJ1aWxkcyBkb24ndAotCSAqIHJlcXVpcmUgYSBj b25zaXN0ZW50IHZpZXcgYWNyb3NzIHRoZSBlbnRpcmUgc2Nhbi4gVW5pcXVlIGluZGV4ZXMgc3Rp bGwgbmVlZAotCSAqIGEgc3RhYmxlIHNuYXBzaG90IHRvIHByb3Blcmx5IGVuZm9yY2UgdW5pcXVl bmVzcyBjb25zdHJhaW50cy4KLSAgICAgKi8KLQlyZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVu dCAmJiAhYnRzcG9vbC0+aXN1bmlxdWU7Ci0KIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2Yg dGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICog U25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91 ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVD RU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQogCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2Ug YSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFj Y29yZGluZyB0byB0aGF0LCB3aGlsZSB0aGF0IHNuYXBzaG90IG1heSBiZSByZXNldCBwZXJpb2Rp Y2FsbHkgaW4KLQkgKiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXguCisJICogbGl2ZSBhY2NvcmRp bmcgdG8gdGhhdCwgd2hpbGUgdGhhdCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5 LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQogCXsKQEAgLTE0NTgsMTYgKzE1NjAsMTYgQEAg X2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1 cnJlbnQsIGludCByZXF1ZXN0KQogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKIAl9Ci0JZWxzZSBpZiAocmVzZXRfc25hcHNob3Qp CisJZWxzZQogCXsKKwkJLyoKKwkJICogRm9yIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzLCB3ZSBj YW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cyB0byBhbGxvdworCQkgKiB0aGUgeG1pbiBo b3Jpem9uIHRvIGFkdmFuY2UuIFRoaXMgaXMgc2FmZSBzaW5jZSB0aGVzZSBidWlsZHMgZG9uJ3QK KwkJICogcmVxdWlyZSBhIGNvbnNpc3RlbnQgdmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLgor CQkgKi8KIAkJc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7CiAJCVB1c2hBY3RpdmVTbmFwc2hv dChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCX0KLQllbHNlCi0JewotCQlzbmFwc2hvdCA9 IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJUHVzaEFjdGl2 ZVNuYXBzaG90KHNuYXBzaG90KTsKLQl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91 ciBvd24gUEFSQUxMRUxfS0VZX0JUUkVFX1NIQVJFRCB3b3Jrc3BhY2UsIGFuZApAQCAtMTUzNyw2 ICsxNjM5LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwg Ym9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCWJ0c2hhcmVkLT5pbmRleHJlbGlkID0g UmVsYXRpb25HZXRSZWxpZChidHNwb29sLT5pbmRleCk7CiAJYnRzaGFyZWQtPmlzdW5pcXVlID0g YnRzcG9vbC0+aXN1bmlxdWU7CiAJYnRzaGFyZWQtPm51bGxzX25vdF9kaXN0aW5jdCA9IGJ0c3Bv b2wtPm51bGxzX25vdF9kaXN0aW5jdDsKKwlidHNoYXJlZC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9 IGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAJYnRzaGFyZWQtPmlzY29uY3VycmVudCA9 IGlzY29uY3VycmVudDsKIAlidHNoYXJlZC0+c2NhbnR1cGxlc29ydHN0YXRlcyA9IHNjYW50dXBs ZXNvcnRzdGF0ZXM7CiAJYnRzaGFyZWQtPnF1ZXJ5aWQgPSBwZ3N0YXRfZ2V0X215X3F1ZXJ5X2lk KCk7CkBAIC0xNTUxLDcgKzE2NTQsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUoYnRzcG9vbC0+aGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRh YmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCksCiAJCQkJCQkJCSAgc25hcHNob3QsCi0JCQkJ CQkJCSAgcmVzZXRfc25hcHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgog CSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJl c2VydmVkIHNwYWNlLgpAQCAtMTYzMSw3ICsxNzM0LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJU QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQog CSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJl IHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKiBXYWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVk IGluaXRpYWwgc25hcHNob3QuCiAJICovCi0JaWYgKHJlc2V0X3NuYXBzaG90KQorCWlmIChpc2Nv bmN1cnJlbnQpCiAJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsK IAogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNlbHZlcyAqLwpAQCAtMTY0Miw3ICsxNzQ1LDcgQEAg X2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1 cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIENhbGxlciBuZWVkcyB0byB3YWl0IGZvciBhbGwgbGF1 bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UKIAkgKiBzdXJlIHRoYXQgdGhlIGZh aWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCi0JaWYgKCFy ZXNldF9zbmFwc2hvdCkKKwlpZiAoIWlzY29uY3VycmVudCkKIAkJV2FpdEZvclBhcmFsbGVsV29y a2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwpAQCAtMTc0NSw2ICsxODQ4LDcgQEAgX2J0X2xlYWRl cl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlKQogCWxlYWRl cndvcmtlci0+aW5kZXggPSBidWlsZHN0YXRlLT5zcG9vbC0+aW5kZXg7CiAJbGVhZGVyd29ya2Vy LT5pc3VuaXF1ZSA9IGJ1aWxkc3RhdGUtPnNwb29sLT5pc3VuaXF1ZTsKIAlsZWFkZXJ3b3JrZXIt Pm51bGxzX25vdF9kaXN0aW5jdCA9IGJ1aWxkc3RhdGUtPnNwb29sLT5udWxsc19ub3RfZGlzdGlu Y3Q7CisJbGVhZGVyd29ya2VyLT51bmlxdWVfZGVhZF9pZ25vcmVkID0gYnVpbGRzdGF0ZS0+c3Bv b2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAKIAkvKiBJbml0aWFsaXplIHNlY29uZCBzcG9vbCwg aWYgcmVxdWlyZWQgKi8KIAlpZiAoIWJ0bGVhZGVyLT5idHNoYXJlZC0+aXN1bmlxdWUpCkBAIC0x ODQ4LDExICsxOTUyLDEyIEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpz ZWcsIHNobV90b2MgKnRvYykKIAlidHNwb29sLT5pbmRleCA9IGluZGV4UmVsOwogCWJ0c3Bvb2wt PmlzdW5pcXVlID0gYnRzaGFyZWQtPmlzdW5pcXVlOwogCWJ0c3Bvb2wtPm51bGxzX25vdF9kaXN0 aW5jdCA9IGJ0c2hhcmVkLT5udWxsc19ub3RfZGlzdGluY3Q7CisJYnRzcG9vbC0+dW5pcXVlX2Rl YWRfaWdub3JlZCA9IGJ0c2hhcmVkLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCiAJLyogTG9vayB1 cCBzaGFyZWQgc3RhdGUgcHJpdmF0ZSB0byB0dXBsZXNvcnQuYyAqLwogCXNoYXJlZHNvcnQgPSBz aG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9UVVBMRVNPUlQsIGZhbHNlKTsKIAl0dXBs ZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRzb3J0LCBzZWcpOwotCWlmICghYnRzaGFyZWQtPmlz dW5pcXVlKQorCWlmICghYnRzaGFyZWQtPmlzdW5pcXVlIHx8IGJ0c2hhcmVkLT5pc2NvbmN1cnJl bnQpCiAJewogCQlidHNwb29sMiA9IE5VTEw7CiAJCXNoYXJlZHNvcnQyID0gTlVMTDsKQEAgLTE5 MzIsNiArMjAzNyw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bv b2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQkJCQkJCQkJCQkJCSBidHNwb29sLT5pbmRleCwKIAkJ CQkJCQkJCQkJCQkgYnRzcG9vbC0+aXN1bmlxdWUsCiAJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wtPm51 bGxzX25vdF9kaXN0aW5jdCwKKwkJCQkJCQkJCQkJCQkgYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdu b3JlZCwKIAkJCQkJCQkJCQkJCQkgc29ydG1lbSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJCQkg VFVQTEVTT1JUX05PTkUpOwogCkBAIC0xOTU0LDE0ICsyMDYwLDEyIEBAIF9idF9wYXJhbGxlbF9z Y2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCQljb29y ZGluYXRlMi0+blBhcnRpY2lwYW50cyA9IC0xOwogCQljb29yZGluYXRlMi0+c2hhcmVkc29ydCA9 IHNoYXJlZHNvcnQyOwogCQlidHNwb29sMi0+c29ydHN0YXRlID0KLQkJCXR1cGxlc29ydF9iZWdp bl9pbmRleF9idHJlZShidHNwb29sLT5oZWFwLCBidHNwb29sLT5pbmRleCwgZmFsc2UsIGZhbHNl LAorCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wt PmluZGV4LCBmYWxzZSwgZmFsc2UsIGZhbHNlLAogCQkJCQkJCQkJCU1pbihzb3J0bWVtLCB3b3Jr X21lbSksIGNvb3JkaW5hdGUyLAogCQkJCQkJCQkJCWZhbHNlKTsKIAl9CiAKIAkvKiBGaWxsIGlu IGJ1aWxkc3RhdGUgZm9yIF9idF9idWlsZF9jYWxsYmFjaygpICovCi0JYnVpbGRzdGF0ZS5pc3Vu aXF1ZSA9IGJ0c2hhcmVkLT5pc3VuaXF1ZTsKLQlidWlsZHN0YXRlLm51bGxzX25vdF9kaXN0aW5j dCA9IGJ0c2hhcmVkLT5udWxsc19ub3RfZGlzdGluY3Q7CiAJYnVpbGRzdGF0ZS5oYXZlZGVhZCA9 IGZhbHNlOwogCWJ1aWxkc3RhdGUuaGVhcCA9IGJ0c3Bvb2wtPmhlYXA7CiAJYnVpbGRzdGF0ZS5z cG9vbCA9IGJ0c3Bvb2w7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dHNwbGl0bG9jLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKaW5k ZXggZTZjOWFhYTA0NTQuLjdjYjFmM2UxYmM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNwbGl0bG9jLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzcGxpdGxvYy5jCkBAIC02ODcsNyArNjg3LDcgQEAgX2J0X2FmdGVybmV3aXRlbW9mZihGaW5k U3BsaXREYXRhICpzdGF0ZSwgT2Zmc2V0TnVtYmVyIG1heG9mZiwKIAl7CiAJCWl0ZW1pZCA9IFBh Z2VHZXRJdGVtSWQoc3RhdGUtPm9yaWdwYWdlLCBtYXhvZmYpOwogCQl0dXAgPSAoSW5kZXhUdXBs ZSkgUGFnZUdldEl0ZW0oc3RhdGUtPm9yaWdwYWdlLCBpdGVtaWQpOwotCQlrZWVwbmF0dHMgPSBf YnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0ZW0pOworCQlr ZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5l d2l0ZW0sIE5VTEwpOwogCiAJCWlmIChrZWVwbmF0dHMgPiAxICYmIGtlZXBuYXR0cyA8PSBua2V5 YXR0cykKIAkJewpAQCAtNzE4LDcgKzcxOCw3IEBAIF9idF9hZnRlcm5ld2l0ZW1vZmYoRmluZFNw bGl0RGF0YSAqc3RhdGUsIE9mZnNldE51bWJlciBtYXhvZmYsCiAJCSFfYnRfYWRqYWNlbnRodGlk KCZ0dXAtPnRfdGlkLCAmc3RhdGUtPm5ld2l0ZW0tPnRfdGlkKSkKIAkJcmV0dXJuIGZhbHNlOwog CS8qIENoZWNrIHNhbWUgY29uZGl0aW9ucyBhcyByaWdodG1vc3QgaXRlbSBjYXNlLCB0b28gKi8K LQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUt Pm5ld2l0ZW0pOworCWtlZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwg dHVwLCBzdGF0ZS0+bmV3aXRlbSwgTlVMTCk7CiAKIAlpZiAoa2VlcG5hdHRzID4gMSAmJiBrZWVw bmF0dHMgPD0gbmtleWF0dHMpCiAJewpAQCAtOTY3LDcgKzk2Nyw3IEBAIF9idF9zdHJhdGVneShG aW5kU3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQb2ludCAqbGVmdHBhZ2UsCiAJICogYXZvaWQgYXBw ZW5kaW5nIGEgaGVhcCBUSUQgaW4gbmV3IGhpZ2gga2V5LCB3ZSdyZSBkb25lLiAgRmluaXNoIHNw bGl0CiAJICogd2l0aCBkZWZhdWx0IHN0cmF0ZWd5IGFuZCBpbml0aWFsIHNwbGl0IGludGVydmFs LgogCSAqLwotCXBlcmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVs LCBsZWZ0bW9zdCwgcmlnaHRtb3N0KTsKKwlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRz X2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3QsIHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZl Y3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQogCQlyZXR1cm4gcGVyZmVjdHBlbmFsdHk7CiAKQEAg LTk4OCw3ICs5ODgsNyBAQCBfYnRfc3RyYXRlZ3koRmluZFNwbGl0RGF0YSAqc3RhdGUsIFNwbGl0 UG9pbnQgKmxlZnRwYWdlLAogCSAqIElmIHBhZ2UgaXMgZW50aXJlbHkgZnVsbCBvZiBkdXBsaWNh dGVzLCBhIHNpbmdsZSB2YWx1ZSBzdHJhdGVneSBzcGxpdAogCSAqIHdpbGwgYmUgcGVyZm9ybWVk LgogCSAqLwotCXBlcmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVs LCBsZWZ0bW9zdCwgcmlnaHRtb3N0KTsKKwlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRz X2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3QsIHJpZ2h0bW9zdCwgTlVMTCk7CiAJaWYgKHBlcmZl Y3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQogCXsKIAkJKnN0cmF0ZWd5ID0gU1BMSVRfTUFOWV9E VVBMSUNBVEVTOwpAQCAtMTAyNyw3ICsxMDI3LDcgQEAgX2J0X3N0cmF0ZWd5KEZpbmRTcGxpdERh dGEgKnN0YXRlLCBTcGxpdFBvaW50ICpsZWZ0cGFnZSwKIAkJaXRlbWlkID0gUGFnZUdldEl0ZW1J ZChzdGF0ZS0+b3JpZ3BhZ2UsIFBfSElLRVkpOwogCQloaWtleSA9IChJbmRleFR1cGxlKSBQYWdl R2V0SXRlbShzdGF0ZS0+b3JpZ3BhZ2UsIGl0ZW1pZCk7CiAJCXBlcmZlY3RwZW5hbHR5ID0gX2J0 X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBoaWtleSwKLQkJCQkJCQkJCQkJIHN0YXRlLT5u ZXdpdGVtKTsKKwkJCQkJCQkJCQkJIHN0YXRlLT5uZXdpdGVtLCBOVUxMKTsKIAkJaWYgKHBlcmZl Y3RwZW5hbHR5IDw9IGluZG5rZXlhdHRzKQogCQkJKnN0cmF0ZWd5ID0gU1BMSVRfU0lOR0xFX1ZB TFVFOwogCQllbHNlCkBAIC0xMTQ5LDcgKzExNDksNyBAQCBfYnRfc3BsaXRfcGVuYWx0eShGaW5k U3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQb2ludCAqc3BsaXQpCiAJbGFzdGxlZnQgPSBfYnRfc3Bs aXRfbGFzdGxlZnQoc3RhdGUsIHNwbGl0KTsKIAlmaXJzdHJpZ2h0ID0gX2J0X3NwbGl0X2ZpcnN0 cmlnaHQoc3RhdGUsIHNwbGl0KTsKIAotCXJldHVybiBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRl LT5yZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0KTsKKwlyZXR1cm4gX2J0X2tlZXBfbmF0dHNfZmFz dChzdGF0ZS0+cmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgTlVMTCk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKaW5kZXggMDBlMTdhMWYwZjkuLjY0N2Y4ZTdiM2Fm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCkBAIC0xMDAsOCArMTAwLDYgQEAg c3RhdGljIGJvb2wgX2J0X2NoZWNrX3Jvd2NvbXBhcmUoU2NhbktleSBza2V5LAogCQkJCQkJCQkg U2NhbkRpcmVjdGlvbiBkaXIsIGJvb2wgKmNvbnRpbnVlc2Nhbik7CiBzdGF0aWMgdm9pZCBfYnRf Y2hlY2trZXlzX2xvb2tfYWhlYWQoSW5kZXhTY2FuRGVzYyBzY2FuLCBCVFJlYWRQYWdlU3RhdGUg KnBzdGF0ZSwKIAkJCQkJCQkJCSBpbnQgdHVwbmF0dHMsIFR1cGxlRGVzYyB0dXBkZXNjKTsKLXN0 YXRpYyBpbnQJX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0 LAotCQkJCQkJICAgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LCBCVFNjYW5JbnNlcnQgaXR1cF9rZXkp OwogCiAKIC8qCkBAIC00Njg0LDcgKzQ2ODIsNyBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVs LCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAJQXNzZXJ0KCFC VHJlZVR1cGxlSXNQaXZvdChsYXN0bGVmdCkgJiYgIUJUcmVlVHVwbGVJc1Bpdm90KGZpcnN0cmln aHQpKTsKIAogCS8qIERldGVybWluZSBob3cgbWFueSBhdHRyaWJ1dGVzIG11c3QgYmUga2VwdCBp biB0cnVuY2F0ZWQgdHVwbGUgKi8KLQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0cyhyZWwsIGxh c3RsZWZ0LCBmaXJzdHJpZ2h0LCBpdHVwX2tleSk7CisJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0 dHMocmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgaXR1cF9rZXksIE5VTEwpOwogCiAjaWZkZWYg REVCVUdfTk9fVFJVTkNBVEUKIAkvKiBGb3JjZSB0cnVuY2F0aW9uIHRvIGJlIGluZWZmZWN0aXZl IGZvciB0ZXN0aW5nIHB1cnBvc2VzICovCkBAIC00ODAyLDE3ICs0ODAwLDI0IEBAIF9idF90cnVu Y2F0ZShSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3Ry aWdodCwKIC8qCiAgKiBfYnRfa2VlcF9uYXR0cyAtIGhvdyBtYW55IGtleSBhdHRyaWJ1dGVzIHRv IGtlZXAgd2hlbiB0cnVuY2F0aW5nLgogICoKKyAqIFRoaXMgaXMgZXhwb3J0ZWQgdG8gYmUgdXNl ZCBhcyBjb21wYXJpc29uIGZ1bmN0aW9uIGR1cmluZyBjb25jdXJyZW50CisgKiB1bmlxdWUgaW5k ZXggYnVpbGQgaW4gY2FzZSBfYnRfa2VlcF9uYXR0c19mYXN0IGlzIG5vdCBzdWl0YWJsZSBiZWNh dXNlCisgKiBjb2xsYXRpb24gaXMgbm90ICJhbGxlcXVhbGltYWdlIi9kZWR1cGxpY2F0aW9uLXNh ZmUuCisgKgogICogQ2FsbGVyIHByb3ZpZGVzIHR3byB0dXBsZXMgdGhhdCBlbmNsb3NlIGEgc3Bs aXQgcG9pbnQuICBDYWxsZXIncyBpbnNlcnRpb24KICAqIHNjYW5rZXkgaXMgdXNlZCB0byBjb21w YXJlIHRoZSB0dXBsZXM7IHRoZSBzY2Fua2V5J3MgYXJndW1lbnQgdmFsdWVzIGFyZQogICogbm90 IGNvbnNpZGVyZWQgaGVyZS4KICAqCisgKiBoYXNudWxscyB2YWx1ZSBzZXQgdG8gdHJ1ZSBpbiBj YXNlIG9mIGFueSBudWxsIGNvbHVtbiBpbiBhbnkgdHVwbGUuCisgKgogICogVGhpcyBjYW4gcmV0 dXJuIGEgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgdGhhdCBpcyBvbmUgZ3JlYXRlciB0aGFuIHRoZQog ICogbnVtYmVyIG9mIGtleSBhdHRyaWJ1dGVzIGZvciB0aGUgaW5kZXggcmVsYXRpb24uICBUaGlz IGluZGljYXRlcyB0aGF0IHRoZQogICogY2FsbGVyIG11c3QgdXNlIGEgaGVhcCBUSUQgYXMgYSB1 bmlxdWUtaWZpZXIgaW4gbmV3IHBpdm90IHR1cGxlLgogICovCi1zdGF0aWMgaW50CitpbnQKIF9i dF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBs ZSBmaXJzdHJpZ2h0LAotCQkJICAgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5KQorCQkJICAgQlRTY2Fu SW5zZXJ0IGl0dXBfa2V5LAorCQkJICAgYm9vbCAqaGFzbnVsbHMpCiB7CiAJaW50CQkJbmtleWF0 dHMgPSBJbmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKHJlbCk7CiAJVHVwbGVE ZXNjCWl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOwpAQCAtNDgzOCw2ICs0ODQzLDgg QEAgX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRl eFR1cGxlIGZpcnN0cmlnaHQsCiAKIAkJZGF0dW0xID0gaW5kZXhfZ2V0YXR0cihsYXN0bGVmdCwg YXR0bnVtLCBpdHVwZGVzYywgJmlzTnVsbDEpOwogCQlkYXR1bTIgPSBpbmRleF9nZXRhdHRyKGZp cnN0cmlnaHQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwyKTsKKwkJaWYgKGhhc251bGxzKQor CQkJKCpoYXNudWxscykgfD0gKGlzTnVsbDEgfHwgaXNOdWxsMik7CiAKIAkJaWYgKGlzTnVsbDEg IT0gaXNOdWxsMikKIAkJCWJyZWFrOwpAQCAtNDg1Nyw3ICs0ODY0LDcgQEAgX2J0X2tlZXBfbmF0 dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmln aHQsCiAJICogZXhwZWN0ZWQgaW4gYW4gYWxsZXF1YWxpbWFnZSBpbmRleC4KIAkgKi8KIAlBc3Nl cnQoIWl0dXBfa2V5LT5hbGxlcXVhbGltYWdlIHx8Ci0JCSAgIGtlZXBuYXR0cyA9PSBfYnRfa2Vl cF9uYXR0c19mYXN0KHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQpKTsKKwkJICAga2VlcG5hdHRz ID09IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgTlVMTCkp OwogCiAJcmV0dXJuIGtlZXBuYXR0czsKIH0KQEAgLTQ4NjgsNyArNDg3NSw4IEBAIF9idF9rZWVw X25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJz dHJpZ2h0LAogICogVGhpcyBpcyBleHBvcnRlZCBzbyB0aGF0IGEgY2FuZGlkYXRlIHNwbGl0IHBv aW50IGNhbiBoYXZlIGl0cyBlZmZlY3Qgb24KICAqIHN1ZmZpeCB0cnVuY2F0aW9uIGluZXhwZW5z aXZlbHkgZXZhbHVhdGVkIGFoZWFkIG9mIHRpbWUgd2hlbiBmaW5kaW5nIGEKICAqIHNwbGl0IGxv Y2F0aW9uLiAgQSBuYWl2ZSBiaXR3aXNlIGFwcHJvYWNoIHRvIGRhdHVtIGNvbXBhcmlzb25zIGlz IHVzZWQgdG8KLSAqIHNhdmUgY3ljbGVzLgorICogc2F2ZSBjeWNsZXMuIEFsc28sIGl0IG1heSBi ZSB1c2VkIGFzIGNvbXBhcmlzb24gZnVuY3Rpb24gZHVyaW5nIGNvbmN1cnJlbnQKKyAqIGJ1aWxk IG9mIHVuaXF1ZSBpbmRleC4KICAqCiAgKiBUaGUgYXBwcm9hY2ggdGFrZW4gaGVyZSB1c3VhbGx5 IHByb3ZpZGVzIHRoZSBzYW1lIGFuc3dlciBhcyBfYnRfa2VlcF9uYXR0cwogICogd2lsbCAoZm9y IHRoZSBzYW1lIHBhaXIgb2YgdHVwbGVzIGZyb20gYSBoZWFwa2V5c3BhY2UgaW5kZXgpLCBzaW5j ZSB0aGUKQEAgLTQ4NzcsNiArNDg4NSw4IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwg SW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogICogImVxdWFsIGlt YWdlIiBjb2x1bW5zLCByb3V0aW5lIGlzIGd1YXJhbnRlZWQgdG8gZ2l2ZSB0aGUgc2FtZSByZXN1 bHQgYXMKICAqIF9idF9rZWVwX25hdHRzIHdvdWxkLgogICoKKyAqIGhhc251bGxzIHZhbHVlIHNl dCB0byB0cnVlIGluIGNhc2Ugb2YgYW55IG51bGwgY29sdW1uIGluIGFueSB0dXBsZS4KKyAqCiAg KiBDYWxsZXJzIGNhbiByZWx5IG9uIHRoZSBmYWN0IHRoYXQgYXR0cmlidXRlcyBjb25zaWRlcmVk IGVxdWFsIGhlcmUgYXJlCiAgKiBkZWZpbml0ZWx5IGFsc28gZXF1YWwgYWNjb3JkaW5nIHRvIF9i dF9rZWVwX25hdHRzLCBldmVuIHdoZW4gdGhlIGluZGV4IHVzZXMKICAqIGFuIG9wY2xhc3Mgb3Ig Y29sbGF0aW9uIHRoYXQgaXMgbm90ICJhbGxlcXVhbGltYWdlIi9kZWR1cGxpY2F0aW9uLXNhZmUu CkBAIC00ODg1LDcgKzQ4OTUsOCBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4 VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKICAqIG1vcmUgYmFsYW5jZWQg c3BsaXQgcG9pbnQuCiAgKi8KIGludAotX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWws IEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCkKK19idF9rZWVwX25h dHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZp cnN0cmlnaHQsCisJCQkJCWJvb2wgKmhhc251bGxzKQogewogCVR1cGxlRGVzYwlpdHVwZGVzYyA9 IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKIAlpbnQJCQlrZXlzeiA9IEluZGV4UmVsYXRpb25HZXRO dW1iZXJPZktleUF0dHJpYnV0ZXMocmVsKTsKQEAgLTQ5MDIsNiArNDkxMyw4IEBAIF9idF9rZWVw X25hdHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxl IGZpcnN0cmlnaHQpCiAKIAkJZGF0dW0xID0gaW5kZXhfZ2V0YXR0cihsYXN0bGVmdCwgYXR0bnVt LCBpdHVwZGVzYywgJmlzTnVsbDEpOwogCQlkYXR1bTIgPSBpbmRleF9nZXRhdHRyKGZpcnN0cmln aHQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwyKTsKKwkJaWYgKGhhc251bGxzKQorCQkJKmhh c251bGxzIHw9IChpc051bGwxIHwgaXNOdWxsMik7CiAJCWF0dCA9IFR1cGxlRGVzY0NvbXBhY3RB dHRyKGl0dXBkZXNjLCBhdHRudW0gLSAxKTsKIAogCQlpZiAoaXNOdWxsMSAhPSBpc051bGwyKQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jCmluZGV4IDcwN2ZmMzllZjQwLi5kOTM3YmE2NWM5YyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5k ZXguYwpAQCAtMTUzMSw3ICsxNTMxLDcgQEAgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBo ZWFwUmVsYXRpb25JZCwKIAogCS8qIEludmFsaWRhdGUgY2F0YWxvZyBzbmFwc2hvdCBqdXN0IGZv ciBhc3NlcnQgKi8KIAlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNzZXJ0KGluZGV4 SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsK KwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogUm9s bCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KIAlB dEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKQEAgLTMyOTMsOSArMzI5Myw5IEBA IEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogaWYgd2UgdXNl ZCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0pLiAgVGhpcyBsZWF2ZXMgdXMgd2l0aCBhbiBpbmRl eCB0aGF0CiAgKiBkb2VzIG5vdCBjb250YWluIGFueSB0dXBsZXMgYWRkZWQgdG8gdGhlIHRhYmxl IHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRleC4KICAqCi0gKiBGdXJ0aGVybW9yZSwgaW4gY2FzZSBv ZiBub24tdW5pcXVlIGluZGV4IHdlIHNldCBTT19SRVNFVF9TTkFQU0hPVCBmb3IgdGhlCi0gKiBz Y2FuLCB3aGljaCBjYXVzZXMgbmV3IHNuYXBzaG90IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkg c28gb2Z0ZW4uIFRoZSByZWFzb24KLSAqIGZvciB0aGF0IGlzIHRvIHByb3BhZ2F0ZSB0aGUgeG1p biBob3Jpem9uIGZvcndhcmQuCisgKiBGdXJ0aGVybW9yZSwgd2Ugc2V0IFNPX1JFU0VUX1NOQVBT SE9UIGZvciB0aGUgc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldworICogc25hcHNob3QgdG8gYmUgc2V0 IGFzIGFjdGl2ZSBldmVyeSBzbyBvZnRlbi4gVGhlIHJlYXNvbiAgZm9yIHRoYXQgaXMgdG8KKyAq IHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZvcndhcmQuCiAgKgogICogTmV4dCwgd2UgbWFy ayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQgc3RpbGwgbm90ICJpbmRpc3ZhbGlkIikgYW5k CiAgKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBhbmQgc3RhcnQgYSB0aGlyZC4gIEFn YWluIHdlIHdhaXQgZm9yIGFsbApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBjOGU3ODgw Zjk1NC4uNTkyMWRjZjY4YTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNjcwLDgg KzE2NzAsOCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBjaGFpbnMgY2FuIGJlIGNy ZWF0ZWQgd2hlcmUgdGhlIG5ldyB0dXBsZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBj aGFpbiBoYXZlIGRpZmZlcmVudCBpbmRleCBrZXlzLgogCSAqCi0JICogV2UgYnVpbGQgdGhlIGlu ZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBzaW5nbGUgb3IKLQkg KiBtdWx0aXBsZSByZWZyZXNoaW5nIHNuYXBzaG90cy4gV2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkg SE9UIHVwZGF0ZXMgdG8KKwkgKiBXZSBidWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0 aGF0IGFyZSB2aXNpYmxlIHVzaW5nIG11bHRpcGxlCisJICogcmVmcmVzaGluZyBzbmFwc2hvdHMu IFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCiAJICogdGhlc2UgdHVwbGVz IHdpbGwgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBpbmRleCwgc2luY2UgYW55IHVwZGF0ZXMgbWFk ZQogCSAqIGJ5IHRyYW5zYWN0aW9ucyB0aGF0IGRpZG4ndCBrbm93IGFib3V0IHRoZSBpbmRleCBh cmUgbm93IGNvbW1pdHRlZCBvcgogCSAqIHJvbGxlZCBiYWNrLiAgVGh1cywgZWFjaCB2aXNpYmxl IHR1cGxlIGlzIGVpdGhlciB0aGUgZW5kIG9mIGl0cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90 dXBsZXNvcnR2YXJpYW50cy5jCmluZGV4IDkxM2M0ZWY0NTVlLi4wYjI1OTI2YmM1NiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYwpAQCAtMzAsNiArMzAsNyBA QAogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3R1cGxlc29ydC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgog CiAKIC8qIHNvcnQtdHlwZSBjb2RlcyBmb3Igc29ydF9fc3RhcnQgcHJvYmVzICovCkBAIC0xMjMs NiArMTI0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAogCWJvb2wJCWVuZm9yY2VVbmlxdWU7CS8qIGNv bXBsYWluIGlmIHdlIGZpbmQgZHVwbGljYXRlIHR1cGxlcyAqLwogCWJvb2wJCXVuaXF1ZU51bGxz Tm90RGlzdGluY3Q7IC8qIHVuaXF1ZSBjb25zdHJhaW50IG51bGwgdHJlYXRtZW50ICovCisJYm9v bAkJdW5pcXVlRGVhZElnbm9yZWQ7IC8qIGlnbm9yZSBkZWFkIHR1cGxlcyBpbiB1bmlxdWUgY2hl Y2sgKi8KIH0gVHVwbGVzb3J0SW5kZXhCVHJlZUFyZzsKIAogLyoKQEAgLTM0OSw2ICszNTEsNyBA QCB0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJCQlS ZWxhdGlvbiBpbmRleFJlbCwKIAkJCQkJCQlib29sIGVuZm9yY2VVbmlxdWUsCiAJCQkJCQkJYm9v bCB1bmlxdWVOdWxsc05vdERpc3RpbmN0LAorCQkJCQkJCWJvb2wgdW5pcXVlRGVhZElnbm9yZWQs CiAJCQkJCQkJaW50IHdvcmtNZW0sCiAJCQkJCQkJU29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZSwK IAkJCQkJCQlpbnQgc29ydG9wdCkKQEAgLTM5MSw2ICszOTQsNyBAQCB0dXBsZXNvcnRfYmVnaW5f aW5kZXhfYnRyZWUoUmVsYXRpb24gaGVhcFJlbCwKIAlhcmctPmluZGV4LmluZGV4UmVsID0gaW5k ZXhSZWw7CiAJYXJnLT5lbmZvcmNlVW5pcXVlID0gZW5mb3JjZVVuaXF1ZTsKIAlhcmctPnVuaXF1 ZU51bGxzTm90RGlzdGluY3QgPSB1bmlxdWVOdWxsc05vdERpc3RpbmN0OworCWFyZy0+dW5pcXVl RGVhZElnbm9yZWQgPSB1bmlxdWVEZWFkSWdub3JlZDsKIAogCWluZGV4U2NhbktleSA9IF9idF9t a3NjYW5rZXkoaW5kZXhSZWwsIE5VTEwpOwogCkBAIC0xNTIwLDYgKzE1MjQsNyBAQCBjb21wYXJl dHVwX2luZGV4X2J0cmVlX3RpZWJyZWFrKGNvbnN0IFNvcnRUdXBsZSAqYSwgY29uc3QgU29ydFR1 cGxlICpiLAogCQlEYXR1bQkJdmFsdWVzW0lOREVYX01BWF9LRVlTXTsKIAkJYm9vbAkJaXNudWxs W0lOREVYX01BWF9LRVlTXTsKIAkJY2hhcgkgICAqa2V5X2Rlc2M7CisJCWJvb2wJCXVuaXF1ZUNo ZWNrRmFpbCA9IHRydWU7CiAKIAkJLyoKIAkJICogU29tZSByYXRoZXIgYnJhaW4tZGVhZCBpbXBs ZW1lbnRhdGlvbnMgb2YgcXNvcnQgKHN1Y2ggYXMgdGhlIG9uZSBpbgpAQCAtMTUyOSwxOCArMTUz NCw1OCBAQCBjb21wYXJldHVwX2luZGV4X2J0cmVlX3RpZWJyZWFrKGNvbnN0IFNvcnRUdXBsZSAq YSwgY29uc3QgU29ydFR1cGxlICpiLAogCQkgKi8KIAkJQXNzZXJ0KHR1cGxlMSAhPSB0dXBsZTIp OwogCi0JCWluZGV4X2RlZm9ybV90dXBsZSh0dXBsZTEsIHR1cERlcywgdmFsdWVzLCBpc251bGwp OwotCi0JCWtleV9kZXNjID0gQnVpbGRJbmRleFZhbHVlRGVzY3JpcHRpb24oYXJnLT5pbmRleC5p bmRleFJlbCwgdmFsdWVzLCBpc251bGwpOwotCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNv ZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9OKSwKLQkJCQkgZXJybXNnKCJjb3VsZCBub3QgY3Jl YXRlIHVuaXF1ZSBpbmRleCBcIiVzXCIiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo YXJnLT5pbmRleC5pbmRleFJlbCkpLAotCQkJCSBrZXlfZGVzYyA/IGVycmRldGFpbCgiS2V5ICVz IGlzIGR1cGxpY2F0ZWQuIiwga2V5X2Rlc2MpIDoKLQkJCQkgZXJyZGV0YWlsKCJEdXBsaWNhdGUg a2V5cyBleGlzdC4iKSwKLQkJCQkgZXJydGFibGVjb25zdHJhaW50KGFyZy0+aW5kZXguaGVhcFJl bCwKLQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwp KSkpOworCQkvKiBUaGlzIGlzIGZhaWwtZmFzdCBjaGVjaywgc2VlIF9idF9sb2FkIGZvciBkZXRh aWxzLiAqLworCQlpZiAoYXJnLT51bmlxdWVEZWFkSWdub3JlZCkKKwkJeworCQkJYm9vbAlhbnlf dHVwbGVfZGVhZCwKKwkJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlLAorCQkJCQlpZ25vcmVkOworCisJ CQlUdXBsZVRhYmxlU2xvdAkqc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlv bkdldERlc2NyKGFyZy0+aW5kZXguaGVhcFJlbCksCisJCQkJCQkJCQkJCQkJCQkgJlRUU09wc0J1 ZmZlckhlYXBUdXBsZSk7CisJCQlJdGVtUG9pbnRlckRhdGEgdGlkID0gdHVwbGUxLT50X3RpZDsK KworCQkJSW5kZXhGZXRjaFRhYmxlRGF0YSAqZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdp bihhcmctPmluZGV4LmhlYXBSZWwpOworCQkJYW55X3R1cGxlX2RlYWQgPSAhdGFibGVfaW5kZXhf ZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQsIFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4s ICZpZ25vcmVkKTsKKworCQkJaWYgKCFhbnlfdHVwbGVfZGVhZCkKKwkJCXsKKwkJCQljYWxsX2Fn YWluID0gZmFsc2U7CisJCQkJdGlkID0gdHVwbGUyLT50X3RpZDsKKwkJCQlhbnlfdHVwbGVfZGVh ZCA9ICF0YWJsZV9pbmRleF9mZXRjaF90dXBsZShmZXRjaCwgJnR1cGxlMi0+dF90aWQsIFNuYXBz aG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4sCisJCQkJCQkJCQkJCQkJCSAgJmlnbm9yZWQpOwor CQkJfQorCisJCQlpZiAoYW55X3R1cGxlX2RlYWQpCisJCQl7CisJCQkJZWxvZyhERUJVRzUsICJz a2lwcGluZyBkdXBsaWNhdGUgdmFsdWVzIGJlY2F1c2Ugc29tZSBvZiB0aGVtIGFyZSBkZWFkOiAo JXUsJXUpIHZzICgldSwldSkiLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmdHVw bGUxLT50X3RpZCksCisJCQkJCSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdHVwbGUxLT50 X3RpZCksCisJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZ0dXBsZTItPnRfdGlkKSwK KwkJCQkJIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZ0dXBsZTItPnRfdGlkKSk7CisKKwkJ CQl1bmlxdWVDaGVja0ZhaWwgPSBmYWxzZTsKKwkJCX0KKwkJCUV4ZWNEcm9wU2luZ2xlVHVwbGVU YWJsZVNsb3Qoc2xvdCk7CisJCQl0YWJsZV9pbmRleF9mZXRjaF9lbmQoZmV0Y2gpOworCQkJQXNz ZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwkJfQorCQlpZiAodW5p cXVlQ2hlY2tGYWlsKQorCQl7CisJCQlpbmRleF9kZWZvcm1fdHVwbGUodHVwbGUxLCB0dXBEZXMs IHZhbHVlcywgaXNudWxsKTsKKworCQkJa2V5X2Rlc2MgPSBCdWlsZEluZGV4VmFsdWVEZXNjcmlw dGlvbihhcmctPmluZGV4LmluZGV4UmVsLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCS8qIGtlZXAg dGhpcyBlcnJvciBtZXNzYWdlIGluIHN5bmMgd2l0aCB0aGUgc2FtZSBpbiBfYnRfbG9hZCAqLwor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9O KSwKKwkJCQkJCQllcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNcIiIs CisJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwp KSwKKwkJCQkJCQlrZXlfZGVzYyA/IGVycmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQuIiwg a2V5X2Rlc2MpIDoKKwkJCQkJCQllcnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0LiIpLAor CQkJCQkJCWVycnRhYmxlY29uc3RyYWludChhcmctPmluZGV4LmhlYXBSZWwsCisJCQkJCQkJCQkJ CSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGFyZy0+aW5kZXguaW5kZXhSZWwpKSkpOworCQl9 CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaAppbmRleCBiODhiZDQ0MzU1NC4uZTc1NmFkOWI1YjAg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvbmJ0cmVlLmgKQEAgLTEyOTcsOCArMTI5NywxMCBAQCBleHRlcm4gYm9vbCBidHBy b3BlcnR5KE9pZCBpbmRleF9vaWQsIGludCBhdHRubywKIGV4dGVybiBjaGFyICpidGJ1aWxkcGhh c2VuYW1lKGludDY0IHBoYXNlbnVtKTsKIGV4dGVybiBJbmRleFR1cGxlIF9idF90cnVuY2F0ZShS ZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsCiAJCQkJCQkJICAgSW5kZXhUdXBsZSBm aXJzdHJpZ2h0LCBCVFNjYW5JbnNlcnQgaXR1cF9rZXkpOworZXh0ZXJuIGludAlfYnRfa2VlcF9u YXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3Ry aWdodCwKKwkJCQkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSwgYm9vbCAqaGFzbnVsbHMpOwog ZXh0ZXJuIGludAlfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBs YXN0bGVmdCwKLQkJCQkJCQkJSW5kZXhUdXBsZSBmaXJzdHJpZ2h0KTsKKwkJCQkJCQkJSW5kZXhU dXBsZSBmaXJzdHJpZ2h0LCBib29sICpoYXNudWxscyk7CiBleHRlcm4gYm9vbCBfYnRfY2hlY2tf bmF0dHMoUmVsYXRpb24gcmVsLCBib29sIGhlYXBrZXlzcGFjZSwgUGFnZSBwYWdlLAogCQkJCQkJ CU9mZnNldE51bWJlciBvZmZudW0pOwogZXh0ZXJuIHZvaWQgX2J0X2NoZWNrX3RoaXJkX3BhZ2Uo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggOWE5YjA5 NGYzZjEuLmQ2OWJhYWEzNjRmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTE3OTksOSArMTc5OSw4 IEBAIHRhYmxlX3NjYW5fYW5hbHl6ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwgVHJh bnNhY3Rpb25JZCBPbGRlc3RYbWluLAogICogVGhpcyBvbmx5IHJlYWxseSBtYWtlcyBzZW5zZSBm b3IgaGVhcCBBTSwgaXQgbWlnaHQgbmVlZCB0byBiZSBnZW5lcmFsaXplZAogICogZm9yIG90aGVy IEFNcyBsYXRlci4KICAqCi0gKiBJbiBjYXNlIG9mIG5vbi11bmlxdWUgY29uY3VycmVudCAgaW5k ZXggYnVpbGQgU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZAotICogZm9yIHRoZSBzY2FuLiBU aGF0IGxlYWRzIGZvciBjaGFuZ2luZyBzbmFwc2hvdHMgb24gdGhlIGZseSB0byBhbGxvdyB4bWlu Ci0gKiBob3Jpem9uIHByb3BhZ2F0ZS4KKyAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBpbmRleCBi dWlsZCBTT19SRVNFVF9TTkFQU0hPVCBpcyBhcHBsaWVkIGZvciB0aGUgc2Nhbi4KKyAqIFRoYXQg bGVhZHMgZm9yIGNoYW5naW5nIHNuYXBzaG90cyBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4gaG9y aXpvbiBwcm9wYWdhdGUuCiAgKi8KIHN0YXRpYyBpbmxpbmUgZG91YmxlCiB0YWJsZV9pbmRleF9i dWlsZF9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL3R1cGxlc29ydC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKaW5kZXggYzYz ZjFlNWQ2ZGEuLjc2MTMxYjZmMmUxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy90dXBs ZXNvcnQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaApAQCAtNDI4LDYgKzQy OCw3IEBAIGV4dGVybiBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVl KFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCQkJCQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbCwKIAkJ CQkJCQkJCQkJCSAgIGJvb2wgZW5mb3JjZVVuaXF1ZSwKIAkJCQkJCQkJCQkJCSAgIGJvb2wgdW5p cXVlTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQkJCQkJCSAgIGJvb2wJdW5pcXVlRGVhZElnbm9y ZWQsCiAJCQkJCQkJCQkJCQkgICBpbnQgd29ya01lbSwgU29ydENvb3JkaW5hdGUgY29vcmRpbmF0 ZSwKIAkJCQkJCQkJCQkJCSAgIGludCBzb3J0b3B0KTsKIGV4dGVybiBUdXBsZXNvcnRzdGF0ZSAq dHVwbGVzb3J0X2JlZ2luX2luZGV4X2hhc2goUmVsYXRpb24gaGVhcFJlbCwKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25h cHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9j aWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCA1OTVhNDAwMGNlMC4uOWYwM2ZhMzAzM2MgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNf cmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTQxLDcgKzQxLDExIEBAIEVO RDsgJCQ7CiAtLS0tLS0tLS0tLS0tLS0tCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50Ymwg U0VUIChwYXJhbGxlbF93b3JrZXJzPTApOwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5U TFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNo b3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9y ZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25h cHNob3RfZWZmZWN0aXZlCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVf YmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwpAQCAtODYsNyArOTAsOSBAQCBTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3Rp dmUnKTsKICgxIHJvdykKIAogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9O IGNpY19yZXNldF9zbmFwLnRibChpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUKLS0gCjIuNDMuMAoK --000000000000813841062b2863c9 Content-Type: application/octet-stream; name="v11-0004-Allow-snapshot-resets-during-parallel-concurrent.patch" Content-Disposition: attachment; filename="v11-0004-Allow-snapshot-resets-during-parallel-concurrent.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5n7ah9q7 RnJvbSAwYmY0OWEwNzNhMWJkODk0NjAzNzRkZDE2ZGZlMjVjNDlhODFkZGFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAxIEphbiAyMDI1IDE1OjI1OjIwICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MTEgMDQv MTFdIEFsbG93IHNuYXBzaG90IHJlc2V0cyBkdXJpbmcgcGFyYWxsZWwgY29uY3VycmVudAogaW5k ZXggYnVpbGRzCgpQcmV2aW91c2x5LCBub24tdW5pcXVlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRz IGluIHBhcmFsbGVsIG1vZGUgcmVxdWlyZWQgYQpjb25zaXN0ZW50IE1WQ0Mgc25hcHNob3QgdGhy b3VnaG91dCB0aGUgYnVpbGQsIHdoaWNoIGNvdWxkIGhvbGQgYmFjayB0aGUgeG1pbgpob3Jpem9u IGFuZCBwcmV2ZW50IGRlYWQgdHVwbGUgY2xlYW51cC4gVGhpcyBwYXRjaCBleHRlbmRzIHRoZSBw cmV2aW91cyB3b3JrCm9uIHNuYXBzaG90IHJlc2V0cyAoaW50cm9kdWNlZCBmb3Igbm9uLXBhcmFs bGVsIGJ1aWxkcykgdG8gYWxzbyBzdXBwb3J0CnBhcmFsbGVsIGJ1aWxkcy4KCktleSBjaGFuZ2Vz OgotIEFkZCBpbmZyYXN0cnVjdHVyZSB0byB0cmFjayBzbmFwc2hvdCByZXN0b3JhdGlvbiBpbiBw YXJhbGxlbCB3b3JrZXJzCi0gRXh0ZW5kIHBhcmFsbGVsIHNjYW4gaW5pdGlhbGl6YXRpb24gdG8g c3VwcG9ydCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMKLSBXYWl0IGZvciBwYXJhbGxlbCB3b3Jr ZXJzIHRvIHJlc3RvcmUgdGhlaXIgaW5pdGlhbCBzbmFwc2hvdHMgYmVmb3JlIHByb2NlZWRpbmcg d2l0aCBzY2FuCi0gQWRkIHJlZ3Jlc3Npb24gdGVzdHMgdG8gdmVyaWZ5IGJlaGF2aW9yIHdpdGgg dmFyaW91cyBpbmRleCB0eXBlcwoKVGhlIHNuYXBzaG90IHJlc2V0IGFwcHJvYWNoIGlzIHNhZmUg Zm9yIG5vbi11bmlxdWUgaW5kZXhlcyBzaW5jZSB0aGV5IGRvbid0Cm5lZWQgc25hcHNob3QgY29u c2lzdGVuY3kgYWNyb3NzIHRoZSBlbnRpcmUgc2Nhbi4gRm9yIHVuaXF1ZSBpbmRleGVzLCB3ZQpj b250aW51ZSB0byBtYWludGFpbiBhIGNvbnNpc3RlbnQgc25hcHNob3QgdG8gcHJvcGVybHkgZW5m b3JjZSB1bmlxdWVuZXNzCmNvbnN0cmFpbnRzLgoKVGhpcyBoZWxwcyByZWR1Y2UgdGhlIHhtaW4g aG9yaXpvbiBpbXBhY3Qgb2YgbG9uZy1ydW5uaW5nIGNvbmN1cnJlbnQgaW5kZXgKYnVpbGRzIGlu IHBhcmFsbGVsIG1vZGUsIGltcHJvdmluZyBWQUNVVU0ncyBhYmlsaXR5IHRvIGNsZWFuIHVwIGRl YWQgdHVwbGVzLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyAgICAgICAgICAg ICAgICB8IDQ5ICsrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bV9oYW5kbGVyLmMgICAgICB8IDEyICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c29ydC5jICAgICAgICAgICB8IDU3ICsrKysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy90YWJsZS90YWJsZWFtLmMgICAgICAgICAgICB8IDM3ICsrKysrKysrKystLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyAgICAgICAgIHwgNTAgKysrKysrKysrKysr KystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAgICAgICB8ICAzICst CiBzcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyAgICAgICAgICAgICAgfCAgOCAtLS0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oICAgICAgICAgICAgICAgICB8ICAzICstCiBz cmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oICAgICAgICAgICAgICAgICAgfCAgMSArCiBzcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgOSArLS0KIC4uLi9l eHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8IDI1ICsrKysrKystCiAu Li4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAgICAgICAgfCAgNyArKy0KIDEz IGZpbGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCspLCA2NyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMKaW5kZXggYzIxNjA4YTZmZDguLmU1ODA0ODNhN2NiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbi5jCkBAIC0xNDMsNyArMTQzLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpbkxlYWRl cgogCSAqLwogCUJyaW5TaGFyZWQgKmJyaW5zaGFyZWQ7CiAJU2hhcmVkc29ydCAqc2hhcmVkc29y dDsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJV c2FnZSAqYnVmZmVydXNhZ2U7CiB9IEJyaW5MZWFkZXI7CkBAIC0yMzEsNyArMjMwLDcgQEAgc3Rh dGljIHZvaWQgYnJpbl9maWxsX2VtcHR5X3JhbmdlcyhCcmluQnVpbGRTdGF0ZSAqc3RhdGUsCiBz dGF0aWMgdm9pZCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJCQkJCSBib29sIGlzY29uY3Vy cmVudCwgaW50IHJlcXVlc3QpOwogc3RhdGljIHZvaWQgX2JyaW5fZW5kX3BhcmFsbGVsKEJyaW5M ZWFkZXIgKmJyaW5sZWFkZXIsIEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7Ci1zdGF0aWMgU2l6ZSBf YnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25h cHNob3QpOworc3RhdGljIFNpemUgX2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0 aW9uIGhlYXApOwogc3RhdGljIGRvdWJsZSBfYnJpbl9wYXJhbGxlbF9oZWFwc2NhbihCcmluQnVp bGRTdGF0ZSAqc3RhdGUpOwogc3RhdGljIGRvdWJsZSBfYnJpbl9wYXJhbGxlbF9tZXJnZShCcmlu QnVpbGRTdGF0ZSAqc3RhdGUpOwogc3RhdGljIHZvaWQgX2JyaW5fbGVhZGVyX3BhcnRpY2lwYXRl X2FzX3dvcmtlcihCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKQEAgLTEyNDQsNyArMTI0Myw2 IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICpp bmRleEluZm8pCiAJCWJyaW5fZmlsbF9lbXB0eV9yYW5nZXMoc3RhdGUsCiAJCQkJCQkJICAgc3Rh dGUtPmJzX2N1cnJSYW5nZVN0YXJ0LAogCQkJCQkJCSAgIHN0YXRlLT5ic19tYXhSYW5nZVN0YXJ0 KTsKLQkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAogCS8qIHJlbGVhc2UgcmVzb3VyY2VzICovCkBA IC0xMjU5LDYgKzEyNTcsNyBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1 cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGlkeHR1cGxlczsKKwlBc3NlcnQoIWluZGV4 SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQp KTsKIAogCXJldHVybiByZXN1bHQ7CiB9CkBAIC0yMzU5LDcgKzIzNTgsNiBAQCBfYnJpbl9iZWdp bl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiB7CiAJUGFyYWxsZWxDb250ZXh0ICpwY3h0OwogCWludAkJCXNjYW50dXBs ZXNvcnRzdGF0ZXM7Ci0JU25hcHNob3QJc25hcHNob3Q7CiAJU2l6ZQkJZXN0YnJpbnNoYXJlZDsK IAlTaXplCQllc3Rzb3J0OwogCUJyaW5TaGFyZWQgKmJyaW5zaGFyZWQ7CkBAIC0yMzkwLDI1ICsy Mzg4LDI1IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRl LCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9m IHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQogCSAq IFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBv dXIgb3duIHRpbWUKIAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4IFJF Q0VOVExZX0RFQUQgdHVwbGVzKS4gIEluIGEKLQkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtl IGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBpbmRleCB3aGF0ZXZlcidzCi0JICogbGl2ZSBh Y2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxh ciBNVkNDIHNuYXBzaG90IGFuZCBwdXNoIGl0IGFzIGFjdGl2ZS4KKwkgKiBMYXRlciB3ZSBpbmRl eCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQgc25hcHNob3Qgd2hpbGUgdGhhdAor CSAqIHNuYXBzaG90IGlzIHJlc2V0IHBlcmlvZGljYWxseS4KIAkgKi8KIAlpZiAoIWlzY29uY3Vy cmVudCkKIAl7CiAJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKLQkJc25hcHNob3QgPSBT bmFwc2hvdEFueTsKIAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CiAJfQogCWVs c2UKIAl7Ci0JCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBz aG90KCkpOworCQlBc3NlcnQoIUFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlQdXNoQWN0aXZlU25h cHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAl9CiAKIAkvKgogCSAqIEVzdGltYXRl IHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JSSU5fU0hBUkVEIHdvcmtzcGFjZS4KIAkg Ki8KLQllc3Ricmluc2hhcmVkID0gX2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXAs IHNuYXBzaG90KTsKKwllc3Ricmluc2hhcmVkID0gX2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hh cmVkKGhlYXApOwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgZXN0 YnJpbnNoYXJlZCk7CiAJZXN0c29ydCA9IHR1cGxlc29ydF9lc3RpbWF0ZV9zaGFyZWQoc2NhbnR1 cGxlc29ydHN0YXRlcyk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9y LCBlc3Rzb3J0KTsKQEAgLTI0NDgsOCArMjQ0Niw2IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJy aW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwK IAl7CiAJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCQlQb3BBY3RpdmVTbmFwc2hv dCgpOwotCQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQotCQkJVW5yZWdpc3RlclNuYXBz aG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29udGV4dChwY3h0KTsKIAkJRXhpdFBh cmFsbGVsTW9kZSgpOwogCQlyZXR1cm47CkBAIC0yNDc0LDcgKzI0NzAsOCBAQCBfYnJpbl9iZWdp bl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsCiAKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShoZWFwLAogCQkJ CQkJCQkgIFBhcmFsbGVsVGFibGVTY2FuRnJvbUJyaW5TaGFyZWQoYnJpbnNoYXJlZCksCi0JCQkJ CQkJCSAgc25hcHNob3QpOworCQkJCQkJCQkgIGlzY29uY3VycmVudCA/IEludmFsaWRTbmFwc2hv dCA6IFNuYXBzaG90QW55LAorCQkJCQkJCQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0 b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVk IHNwYWNlLgpAQCAtMjUyMCw3ICsyNTE3LDYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1 aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCQli cmlubGVhZGVyLT5ucGFydGljaXBhbnR0dXBsZXNvcnRzKys7CiAJYnJpbmxlYWRlci0+YnJpbnNo YXJlZCA9IGJyaW5zaGFyZWQ7CiAJYnJpbmxlYWRlci0+c2hhcmVkc29ydCA9IHNoYXJlZHNvcnQ7 Ci0JYnJpbmxlYWRlci0+c25hcHNob3QgPSBzbmFwc2hvdDsKIAlicmlubGVhZGVyLT53YWx1c2Fn ZSA9IHdhbHVzYWdlOwogCWJyaW5sZWFkZXItPmJ1ZmZlcnVzYWdlID0gYnVmZmVydXNhZ2U7CiAK QEAgLTI1MzYsNiArMjUzMiwxMyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogU2F2ZSBs ZWFkZXIgc3RhdGUgbm93IHRoYXQgaXQncyBjbGVhciBidWlsZCB3aWxsIGJlIHBhcmFsbGVsICov CiAJYnVpbGRzdGF0ZS0+YnNfbGVhZGVyID0gYnJpbmxlYWRlcjsKIAorCS8qCisJICogSW4gY2Fz ZSBvZiBjb25jdXJyZW50IGJ1aWxkIHNuYXBzaG90cyBhcmUgZ29pbmcgdG8gYmUgcmVzZXQgcGVy aW9kaWNhbGx5LgorCSAqIFdlIG5lZWQgdG8gd2FpdCB1bnRpbCBhbGwgd29ya2VycyBpbXBvcnRl ZCBpbml0aWFsIHNuYXBzaG90LgorCSAqLworCWlmIChpc2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQ YXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCB0cnVlKTsKKwogCS8qIEpvaW4gaGVhcCBzY2Fu IG91cnNlbHZlcyAqLwogCWlmIChsZWFkZXJwYXJ0aWNpcGF0ZXMpCiAJCV9icmluX2xlYWRlcl9w YXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSwgaGVhcCwgaW5kZXgpOwpAQCAtMjU0NCw3 ICsyNTQ3LDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIENhbGxlciBuZWVkcyB0byB3 YWl0IGZvciBhbGwgbGF1bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UKIAkgKiBz dXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIu CiAJICovCi0JV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmICghaXNj b25jdXJyZW50KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgZmFsc2Up OwogCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CiB9CkBAIC0yNTY3LDkgKzI1NzEsNiBAQCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJpbkxlYWRlciAq YnJpbmxlYWRlciwgQnJpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCWZvciAoaSA9IDA7IGkgPCBicmlu bGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxs ZWxRdWVyeSgmYnJpbmxlYWRlci0+YnVmZmVydXNhZ2VbaV0sICZicmlubGVhZGVyLT53YWx1c2Fn ZVtpXSk7CiAKLQkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9u ZSB3YXMgdXNlZCAqLwotCWlmIChJc01WQ0NTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hvdCkp Ci0JCVVucmVnaXN0ZXJTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hvdCk7CiAJRGVzdHJveVBh cmFsbGVsQ29udGV4dChicmlubGVhZGVyLT5wY3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CiB9 CkBAIC0yNzY5LDE0ICsyNzcwLDE0IEBAIF9icmluX3BhcmFsbGVsX21lcmdlKEJyaW5CdWlsZFN0 YXRlICpzdGF0ZSkKIAogLyoKICAqIFJldHVybnMgc2l6ZSBvZiBzaGFyZWQgbWVtb3J5IHJlcXVp cmVkIHRvIHN0b3JlIHN0YXRlIGZvciBhIHBhcmFsbGVsCi0gKiBicmluIGluZGV4IGJ1aWxkIGJh c2VkIG9uIHRoZSBzbmFwc2hvdCBpdHMgcGFyYWxsZWwgc2NhbiB3aWxsIHVzZS4KKyAqIGJyaW4g aW5kZXggYnVpbGQuCiAgKi8KIHN0YXRpYyBTaXplCi1fYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9z aGFyZWQoUmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25hcHNob3QpCitfYnJpbl9wYXJhbGxlbF9l c3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCkKIHsKIAkvKiBjLmYuIHNobV90b2NfYWxsb2Nh dGUgYXMgdG8gd2h5IEJVRkZFUkFMSUdOIGlzIHVzZWQgKi8KIAlyZXR1cm4gYWRkX3NpemUoQlVG RkVSQUxJR04oc2l6ZW9mKEJyaW5TaGFyZWQpKSwKLQkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2Vz dGltYXRlKGhlYXAsIHNuYXBzaG90KSk7CisJCQkJCXRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0 ZShoZWFwLCBJbnZhbGlkU25hcHNob3QpKTsKIH0KIAogLyoKQEAgLTI3OTgsNiArMjc5OSw3IEBA IF9icmluX2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxk c3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlCiAJLyogUGVyZm9ybSB3b3JrIGNvbW1vbiB0byBhbGwg cGFydGljaXBhbnRzICovCiAJX2JyaW5fcGFyYWxsZWxfc2Nhbl9hbmRfYnVpbGQoYnVpbGRzdGF0 ZSwgYnJpbmxlYWRlci0+YnJpbnNoYXJlZCwKIAkJCQkJCQkJICBicmlubGVhZGVyLT5zaGFyZWRz b3J0LCBoZWFwLCBpbmRleCwgc29ydG1lbSwgdHJ1ZSk7CisJQXNzZXJ0KCFicmlubGVhZGVyLT5i cmluc2hhcmVkLT5pc2NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+ eGlkKSk7CiB9CiAKIC8qCkBAIC0yOTM4LDYgKzI5NDAsMTMgQEAgX2JyaW5fcGFyYWxsZWxfYnVp bGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAKIAlfYnJpbl9wYXJhbGxl bF9zY2FuX2FuZF9idWlsZChidWlsZHN0YXRlLCBicmluc2hhcmVkLCBzaGFyZWRzb3J0LAogCQkJ CQkJCQkgIGhlYXBSZWwsIGluZGV4UmVsLCBzb3J0bWVtLCBmYWxzZSk7CisJaWYgKGJyaW5zaGFy ZWQtPmlzY29uY3VycmVudCkKKwl7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCUludmFsaWRh dGVDYXRhbG9nU25hcHNob3QoKTsKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhpZCkpOworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgp KTsKKwl9CiAKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhl Y3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tF WV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFu ZGxlci5jCmluZGV4IDU4MGVjN2Y5YWE4Li4zYjNjYmU1NzFhYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMjMxLDE0ICsxMjMxLDEzIEBAIGhlYXBhbV9p bmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkgKiBTbmFwc2hv dEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0 aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9E RUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1aWxkLCBvciBkdXJpbmcgYm9vdHN0 cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90Ci0JICogYW5kIGluZGV4IHdoYXRl dmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBhbmQgaW5kZXggd2hhdGV2ZXIncyBs aXZlIGFjY29yZGluZyB0byB0aGF0IHdoaWxlIHRoYXQgc25hcHNob3QgaXMgcmVzZXQKKwkgKiBl dmVyeSBzbyBvZnRlbiAoaW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4KS4KIAkgKi8KIAlPbGRl c3RYbWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkvKgogCSAqIEZvciB1bmlxdWUgaW5k ZXggd2UgbmVlZCBjb25zaXN0ZW50IHNuYXBzaG90IGZvciB0aGUgd2hvbGUgc2Nhbi4KLQkgKiBJ biBjYXNlIG9mIHBhcmFsbGVsIHNjYW4gc29tZSBhZGRpdGlvbmFsIGluZnJhc3RydWN0dXJlIHJl cXVpcmVkCi0JICogdG8gcGVyZm9ybSBzY2FuIHdpdGggU09fUkVTRVRfU05BUFNIT1Qgd2hpY2gg aXMgbm90IHlldCByZWFkeS4KIAkgKi8KIAlyZXNldF9zbmFwc2hvdHMgPSBpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgJiYKIAkJCQkJICAhaW5kZXhJbmZvLT5paV9VbmlxdWUgJiYKQEAgLTEzMDAs OCArMTI5OSwxMSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJCUFzc2VydCghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpKTsKIAkJQXNz ZXJ0KGFsbG93X3N5bmMpOwogCQlzbmFwc2hvdCA9IHNjYW4tPnJzX3NuYXBzaG90OwotCQlQdXNo QWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwotCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0 cnVlOworCQlpZiAoIXJlc2V0X3NuYXBzaG90cykKKwkJeworCQkJUHVzaEFjdGl2ZVNuYXBzaG90 KHNuYXBzaG90KTsKKwkJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJCX0KIAl9 CiAKIAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c29ydC5jCmluZGV4IGI0OTBkYTBlZWVlLi44MTBmODBmYzhlNiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzb3J0LmMKQEAgLTMyMSwyMiArMzIxLDIwIEBAIGJ0YnVpbGQoUmVsYXRpb24gaGVh cCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkJIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKGluZGV4KSk7CiAKIAlyZWx0dXBsZXMgPSBfYnRfc3Bvb2xzX2hlYXBzY2Fu KGhlYXAsIGluZGV4LCAmYnVpbGRzdGF0ZSwgaW5kZXhJbmZvKTsKLQlBc3NlcnQoaW5kZXhJbmZv LT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKLQkJICAhaW5k ZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCBpbmRleEluZm8tPmlp X1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgog CSAqIEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhlIHNvcnQgb2YgdGhlIHNw b29sIGZpbGUsICgyKQogCSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1cGxlcyBpbnRvIGJ0cmVl IHBhZ2VzIGFuZCAoMykgYnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2ZWxzLiAgRmluYWxseSwg aXQgbWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFyYWxsZWxpc20uCiAJICov Ci0JX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWlu ZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7 CisJX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWlu ZGV4SW5mby0+aWlfVW5pcXVlICYmIGluZGV4SW5mby0+aWlfQ29uY3VycmVudCk7CiAJX2J0X3Nw b29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sKTsKIAlpZiAoYnVpbGRzdGF0ZS5zcG9vbDIpCiAJ CV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9vbDIpOwogCWlmIChidWlsZHN0YXRlLmJ0 bGVhZGVyKQogCQlfYnRfZW5kX3BhcmFsbGVsKGJ1aWxkc3RhdGUuYnRsZWFkZXIpOwotCUFzc2Vy dChpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8 fAotCQkgICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KE15UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGlu ZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4p KTsKIAogCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxvYyhzaXplb2YoSW5kZXhC dWlsZFJlc3VsdCkpOwogCkBAIC00ODUsOCArNDgzLDcgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihS ZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAog CQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRzdGF0ZSwKIAkJCQkJCQkJ CQkgICZpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluKTsKIAlJbnZhbGlkYXRlQ2F0YWxvZ1Nu YXBzaG90KCk7Ci0JQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4 SW5mby0+aWlfVW5pcXVlIHx8Ci0JCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBTZXQgdGhlIHByb2dyZXNzIHRhcmdldCBm b3IgdGhlIG5leHQgcGhhc2UuICBSZXNldCB0aGUgYmxvY2sgbnVtYmVyCkBAIC0xNDIxLDYgKzE0 MTgsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29s IGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwog CWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CiAJYm9vbAkJbmVlZF9wb3BfYWN0aXZl X3NuYXBzaG90ID0gdHJ1ZTsKKwlib29sCQlyZXNldF9zbmFwc2hvdDsKIAlpbnQJCQlxdWVyeWxl bjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MzgsMTIgKzE0 MzYsMjEgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9v bCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCiAJc2NhbnR1cGxlc29ydHN0YXRlcyA9IGxl YWRlcnBhcnRpY2lwYXRlcyA/IHJlcXVlc3QgKyAxIDogcmVxdWVzdDsKIAorICAgIC8qCisJICog Rm9yIGNvbmN1cnJlbnQgbm9uLXVuaXF1ZSBpbmRleCBidWlsZHMsIHdlIGNhbiBwZXJpb2RpY2Fs bHkgcmVzZXQgc25hcHNob3RzCisJICogdG8gYWxsb3cgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZh bmNlLiBUaGlzIGlzIHNhZmUgc2luY2UgdGhlc2UgYnVpbGRzIGRvbid0CisJICogcmVxdWlyZSBh IGNvbnNpc3RlbnQgdmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLiBVbmlxdWUgaW5kZXhlcyBz dGlsbCBuZWVkCisJICogYSBzdGFibGUgc25hcHNob3QgdG8gcHJvcGVybHkgZW5mb3JjZSB1bmlx dWVuZXNzIGNvbnN0cmFpbnRzLgorICAgICAqLworCXJlc2V0X3NuYXBzaG90ID0gaXNjb25jdXJy ZW50ICYmICFidHNwb29sLT5pc3VuaXF1ZTsKKwogCS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBv ZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkg KiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8g b3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBS RUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCiAJICogY29uY3VycmVudCBidWlsZCwgd2UgdGFr ZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgaW5kZXggd2hhdGV2ZXIncwotCSAqIGxpdmUg YWNjb3JkaW5nIHRvIHRoYXQuCisJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCwgd2hpbGUgdGhh dCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5IGluCisJICogY2FzZSBvZiBub24t dW5pcXVlIGluZGV4LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQogCXsKQEAgLTE0NTEsNiAr MTQ1OCwxMSBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBi b29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7 CiAJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOwogCX0KKwllbHNlIGlmIChyZXNl dF9zbmFwc2hvdCkKKwl7CisJCXNuYXBzaG90ID0gSW52YWxpZFNuYXBzaG90OworCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAJZWxzZQogCXsKIAkJ c25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CkBA IC0xNTExLDcgKzE1MjMsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWls ZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJewogCQlpZiAobmVlZF9w b3BfYWN0aXZlX3NuYXBzaG90KQogCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJaWYgKElzTVZD Q1NuYXBzaG90KHNuYXBzaG90KSkKKwkJaWYgKHNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAm JiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNo b3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwogCQlFeGl0UGFyYWxsZWxNb2Rl KCk7CkBAIC0xNTM4LDcgKzE1NTAsOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJYnRzaGFyZWQt PmJyb2tlbmhvdGNoYWluID0gZmFsc2U7CiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUo YnRzcG9vbC0+aGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChi dHNoYXJlZCksCi0JCQkJCQkJCSAgc25hcHNob3QpOworCQkJCQkJCQkgIHNuYXBzaG90LAorCQkJ CQkJCQkgIHJlc2V0X3NuYXBzaG90KTsKIAogCS8qCiAJICogU3RvcmUgc2hhcmVkIHR1cGxlc29y dC1wcml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVzZXJ2ZWQgc3BhY2UuCkBAIC0xNjE0LDYg KzE2MjcsMTMgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwg Ym9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCS8qIFNhdmUgbGVhZGVyIHN0YXRlIG5v dyB0aGF0IGl0J3MgY2xlYXIgYnVpbGQgd2lsbCBiZSBwYXJhbGxlbCAqLwogCWJ1aWxkc3RhdGUt PmJ0bGVhZGVyID0gYnRsZWFkZXI7CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBi dWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkgKiBX YWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25hcHNob3QuCisJICovCisJ aWYgKHJlc2V0X3NuYXBzaG90KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4 dCwgdHJ1ZSk7CisKIAkvKiBKb2luIGhlYXAgc2NhbiBvdXJzZWx2ZXMgKi8KIAlpZiAobGVhZGVy cGFydGljaXBhdGVzKQogCQlfYnRfbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtlcihidWlsZHN0 YXRlKTsKQEAgLTE2MjIsNyArMTY0Miw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBDYWxs ZXIgbmVlZHMgdG8gd2FpdCBmb3IgYWxsIGxhdW5jaGVkIHdvcmtlcnMgd2hlbiB3ZSByZXR1cm4u ICBNYWtlCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3Qg aGFuZyBmb3JldmVyLgogCSAqLwotCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0 KTsKKwlpZiAoIXJlc2V0X3NuYXBzaG90KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRh Y2gocGN4dCwgZmFsc2UpOwogCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CiB9CkBAIC0xNjQ2LDcgKzE2NjcsNyBAQCBfYnRfZW5kX3BhcmFsbGVs KEJUTGVhZGVyICpidGxlYWRlcikKIAkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJmJ0bGVhZGVy LT5idWZmZXJ1c2FnZVtpXSwgJmJ0bGVhZGVyLT53YWx1c2FnZVtpXSk7CiAKIAkvKiBGcmVlIGxh c3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwotCWlmIChJ c01WQ0NTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3QpKQorCWlmIChidGxlYWRlci0+c25hcHNo b3QgIT0gSW52YWxpZFNuYXBzaG90ICYmIElzTVZDQ1NuYXBzaG90KGJ0bGVhZGVyLT5zbmFwc2hv dCkpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3QpOwogCURlc3Ryb3lQ YXJhbGxlbENvbnRleHQoYnRsZWFkZXItPnBjeHQpOwogCUV4aXRQYXJhbGxlbE1vZGUoKTsKQEAg LTE4OTYsNiArMTkxNyw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0 c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGU7CiAJ QlRCdWlsZFN0YXRlIGJ1aWxkc3RhdGU7CiAJVGFibGVTY2FuRGVzYyBzY2FuOworCVBhcmFsbGVs VGFibGVTY2FuRGVzYyBwc2NhbjsKIAlkb3VibGUJCXJlbHR1cGxlczsKIAlJbmRleEluZm8gICpp bmRleEluZm87CiAKQEAgLTE5NTAsMTEgKzE5NzIsMTUgQEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5k X3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsCiAJLyogSm9pbiBwYXJh bGxlbCBzY2FuICovCiAJaW5kZXhJbmZvID0gQnVpbGRJbmRleEluZm8oYnRzcG9vbC0+aW5kZXgp OwogCWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9IGJ0c2hhcmVkLT5pc2NvbmN1cnJlbnQ7Ci0J c2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChidHNwb29sLT5oZWFwLAotCQkJCQkJCQkJ UGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpKTsKKwlwc2NhbiA9IFBhcmFs bGVsVGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0c2hhcmVkKTsKKwlzY2FuID0gdGFibGVfYmVnaW5z Y2FuX3BhcmFsbGVsKGJ0c3Bvb2wtPmhlYXAsIHBzY2FuKTsKIAlyZWx0dXBsZXMgPSB0YWJsZV9p bmRleF9idWlsZF9zY2FuKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wtPmluZGV4LCBpbmRleEluZm8s CiAJCQkJCQkJCQkgICB0cnVlLCBwcm9ncmVzcywgX2J0X2J1aWxkX2NhbGxiYWNrLAogCQkJCQkJ CQkJICAgJmJ1aWxkc3RhdGUsIHNjYW4pOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsK KwlpZiAocHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsK KwlBc3NlcnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgfHwgIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogRXhlY3V0ZSB0aGlzIHdvcmtlcidzIHBhcnQgb2Yg dGhlIHNvcnQgKi8KIAlpZiAocHJvZ3Jlc3MpCkBAIC0xOTkwLDQgKzIwMTYsNyBAQCBfYnRfcGFy YWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwK IAl0dXBsZXNvcnRfZW5kKGJ0c3Bvb2wtPnNvcnRzdGF0ZSk7CiAJaWYgKGJ0c3Bvb2wyKQogCQl0 dXBsZXNvcnRfZW5kKGJ0c3Bvb2wyLT5zb3J0c3RhdGUpOworCUFzc2VydCghcHNjYW4tPnBoc19y ZXNldF9zbmFwc2hvdCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJ aWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRU cmFuc2FjdGlvblNuYXBzaG90KCkpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKaW5k ZXggZTE4YThmODI1MGYuLmI1YjdiZTYwYTVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFt LmMKQEAgLTEzMSwxMCArMTMxLDEwIEBAIHRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShSZWxh dGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KQogewogCVNpemUJCXN6ID0gMDsKIAotCWlmIChJ c01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCisJaWYgKHNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hv dCAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCXN6ID0gYWRkX3NpemUoc3osIEVzdGlt YXRlU25hcHNob3RTcGFjZShzbmFwc2hvdCkpOwogCWVsc2UKLQkJQXNzZXJ0KHNuYXBzaG90ID09 IFNuYXBzaG90QW55KTsKKwkJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55IHx8IHNuYXBz aG90ID09IEludmFsaWRTbmFwc2hvdCk7CiAKIAlzeiA9IGFkZF9zaXplKHN6LCByZWwtPnJkX3Rh YmxlYW0tPnBhcmFsbGVsc2Nhbl9lc3RpbWF0ZShyZWwpKTsKIApAQCAtMTQzLDIxICsxNDMsMzYg QEAgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25h cHNob3QpCiAKIHZvaWQKIHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKFJlbGF0aW9uIHJl bCwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAotCQkJCQkJCSAgU25hcHNob3Qgc25hcHNo b3QpCisJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwgYm9vbCByZXNldF9zbmFwc2hvdCkKIHsK IAlTaXplCQlzbmFwc2hvdF9vZmYgPSByZWwtPnJkX3RhYmxlYW0tPnBhcmFsbGVsc2Nhbl9pbml0 aWFsaXplKHJlbCwgcHNjYW4pOwogCiAJcHNjYW4tPnBoc19zbmFwc2hvdF9vZmYgPSBzbmFwc2hv dF9vZmY7CiAKLQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQorCS8qCisJICogSW5pdGlh bGl6ZSBwYXJhbGxlbCBzY2FuIGRlc2NyaXB0aW9uLiBGb3Igbm9ybWFsIHNjYW5zIHdpdGggYSBy ZWd1bGFyCisJICogTVZDQyBzbmFwc2hvdCwgc2VyaWFsaXplIHRoZSBzbmFwc2hvdCBpbmZvLiBG b3Igc2NhbnMgdGhhdCB1c2UgcGVyaW9kaWMKKwkgKiBzbmFwc2hvdCByZXNldHMsIG1hcmsgdGhl IHNjYW4gYWNjb3JkaW5nbHkuCisJICovCisJaWYgKHJlc2V0X3NuYXBzaG90KQorCXsKKwkJQXNz ZXJ0KHNuYXBzaG90ID09IEludmFsaWRTbmFwc2hvdCk7CisJCXBzY2FuLT5waHNfc25hcHNob3Rf YW55ID0gZmFsc2U7CisJCXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgPSB0cnVlOworCQlJTkpF Q1RJT05fUE9JTlQoInRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplIik7CisJfQorCWVsc2Ug aWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAl7CiAJCVNlcmlhbGl6ZVNuYXBzaG90KHNu YXBzaG90LCAoY2hhciAqKSBwc2NhbiArIHBzY2FuLT5waHNfc25hcHNob3Rfb2ZmKTsKIAkJcHNj YW4tPnBoc19zbmFwc2hvdF9hbnkgPSBmYWxzZTsKKwkJcHNjYW4tPnBoc19yZXNldF9zbmFwc2hv dCA9IGZhbHNlOwogCX0KIAllbHNlCiAJewogCQlBc3NlcnQoc25hcHNob3QgPT0gU25hcHNob3RB bnkpOworCQlBc3NlcnQoIXJlc2V0X3NuYXBzaG90KTsKIAkJcHNjYW4tPnBoc19zbmFwc2hvdF9h bnkgPSB0cnVlOworCQlwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90ID0gZmFsc2U7CiAJfQogfQog CkBAIC0xNzAsNyArMTg1LDE5IEBAIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBy ZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQogCiAJQXNzZXJ0KFJlbEZpbGVM b2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nhbi0+cGhzX2xvY2F0b3IpKTsK IAotCWlmICghcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkpCisJLyoKKwkgKiBGb3Igc2NhbnMgdGhh dAorCSAqIHVzZSBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMsIG1hcmsgdGhlIHNjYW4gYWNjb3Jk aW5nbHkgYW5kIHVzZSB0aGUgYWN0aXZlCisJICogc25hcHNob3QgYXMgdGhlIGluaXRpYWwgc3Rh dGUuCisJICovCisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJeworCQlBc3NlcnQo QWN0aXZlU25hcHNob3RTZXQoKSk7CisJCWZsYWdzIHw9IFNPX1JFU0VUX1NOQVBTSE9UOworCQkv KiBTdGFydCB3aXRoIGN1cnJlbnQgYWN0aXZlIHNuYXBzaG90LiAqLworCQlzbmFwc2hvdCA9IEdl dEFjdGl2ZVNuYXBzaG90KCk7CisJfQorCWVsc2UgaWYgKCFwc2Nhbi0+cGhzX3NuYXBzaG90X2Fu eSkKIAl7CiAJCS8qIFNuYXBzaG90IHdhcyBzZXJpYWxpemVkIC0tIHJlc3RvcmUgaXQgKi8KIAkJ c25hcHNob3QgPSBSZXN0b3JlU25hcHNob3QoKGNoYXIgKikgcHNjYW4gKyBwc2Nhbi0+cGhzX3Nu YXBzaG90X29mZik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJh bGxlbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwppbmRleCA3ODE3 YmVkYzJlZi4uZTljMGE0NmZkNzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwu YwpAQCAtNzYsNiArNzYsNyBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlfUkVMTUFQUEVSX1NUQVRF CQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEQpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9V TkNPTU1JVFRFREVOVU1TCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEUpCiAjZGVmaW5l IFBBUkFMTEVMX0tFWV9DTElFTlRDT05OSU5GTwkJCVVJTlQ2NENPTlNUKDB4RkZGRkZGRkZGRkZG MDAwRikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX1NOQVBTSE9UX1JFU1RPUkVECQlVSU5UNjRDT05T VCgweEZGRkZGRkZGRkZGRjAwMTApCiAKIC8qIEZpeGVkLXNpemUgcGFyYWxsZWwgc3RhdGUuICov CiB0eXBlZGVmIHN0cnVjdCBGaXhlZFBhcmFsbGVsU3RhdGUKQEAgLTMwMSw2ICszMDIsMTAgQEAg SW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQkJCQkJCQlw Y3h0LT5ud29ya2VycykpOwogCQlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRv ciwgMSk7CiAKKwkJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBtdWxf c2l6ZShzaXplb2YoYm9vbCksCisJCQkJCQkJICAgcGN4dC0+bndvcmtlcnMpKTsKKwkJc2htX3Rv Y19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOworCiAJCS8qIEVzdGltYXRlIGhv dyBtdWNoIHdlJ2xsIG5lZWQgZm9yIHRoZSBlbnRyeXBvaW50IGluZm8uICovCiAJCXNobV90b2Nf ZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgc3RybGVuKHBjeHQtPmxpYnJhcnlfbmFt ZSkgKwogCQkJCQkJCSAgIHN0cmxlbihwY3h0LT5mdW5jdGlvbl9uYW1lKSArIDIpOwpAQCAtMzcy LDYgKzM3Nyw3IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQp CiAJCWNoYXIJICAgKmVudHJ5cG9pbnRzdGF0ZTsKIAkJY2hhcgkgICAqdW5jb21taXR0ZWRlbnVt c3NwYWNlOwogCQljaGFyCSAgICpjbGllbnRjb25uaW5mb3NwYWNlOworCQlib29sCSAgICpzbmFw c2hvdF9zZXRfZmxhZ19zcGFjZTsKIAkJU2l6ZQkJbG5hbWVsZW47CiAKIAkJLyogU2VyaWFsaXpl IHNoYXJlZCBsaWJyYXJpZXMgd2UgaGF2ZSBsb2FkZWQuICovCkBAIC00ODcsNiArNDkzLDE5IEBA IEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCXN0cmNweShl bnRyeXBvaW50c3RhdGUsIHBjeHQtPmxpYnJhcnlfbmFtZSk7CiAJCXN0cmNweShlbnRyeXBvaW50 c3RhdGUgKyBsbmFtZWxlbiArIDEsIHBjeHQtPmZ1bmN0aW9uX25hbWUpOwogCQlzaG1fdG9jX2lu c2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9FTlRSWVBPSU5ULCBlbnRyeXBvaW50c3RhdGUp OworCisJCS8qCisJCSAqIEVzdGFibGlzaCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgdG8gcGFzcyBp bmZvcm1hdGlvbiBhYm91dCBpbXBvcnRpbmcKKwkJICogb2Ygc25hcHNob3QuCisJCSAqLworCQlz bmFwc2hvdF9zZXRfZmxhZ19zcGFjZSA9CisJCQkJc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2Ms IG11bF9zaXplKHNpemVvZihib29sKSwgcGN4dC0+bndvcmtlcnMpKTsKKwkJZm9yIChpID0gMDsg aSA8IHBjeHQtPm53b3JrZXJzOyArK2kpCisJCXsKKwkJCXBjeHQtPndvcmtlcltpXS5zbmFwc2hv dF9yZXN0b3JlZCA9IHNuYXBzaG90X3NldF9mbGFnX3NwYWNlICsgaSAqIHNpemVvZihib29sKTsK KwkJCSpwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSBmYWxzZTsKKwkJfQorCQlz aG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQU0hPVF9SRVNUT1JFRCwg c25hcHNob3Rfc2V0X2ZsYWdfc3BhY2UpOwogCX0KIAogCS8qIFVwZGF0ZSBud29ya2Vyc190b19s YXVuY2gsIGluIGNhc2Ugd2UgY2hhbmdlZCBud29ya2VycyBhYm92ZS4gKi8KQEAgLTU0Miw2ICs1 NjEsMTcgQEAgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KQog CQkJcGN4dC0+d29ya2VyW2ldLmVycm9yX21xaCA9IHNobV9tcV9hdHRhY2gobXEsIHBjeHQtPnNl ZywgTlVMTCk7CiAJCX0KIAl9CisKKwkvKiBTZXQgc25hcHNob3QgcmVzdG9yZWQgZmxhZyB0byBm YWxzZS4gKi8KKwlpZiAocGN4dC0+bndvcmtlcnMgPiAwKQorCXsKKwkJYm9vbAkgICAqc25hcHNo b3RfcmVzdG9yZWRfc3BhY2U7CisJCWludAkJCWk7CisJCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNl ID0KKwkJCQlzaG1fdG9jX2xvb2t1cChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQU0hPVF9S RVNUT1JFRCwgZmFsc2UpOworCQlmb3IgKGkgPSAwOyBpIDwgcGN4dC0+bndvcmtlcnM7ICsraSkK KwkJCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlW2ldID0gZmFsc2U7CisJfQogfQogCiAvKgpAQCAt NjU3LDYgKzY4NywxMCBAQCBMYXVuY2hQYXJhbGxlbFdvcmtlcnMoUGFyYWxsZWxDb250ZXh0ICpw Y3h0KQogICogV2FpdCBmb3IgYWxsIHdvcmtlcnMgdG8gYXR0YWNoIHRvIHRoZWlyIGVycm9yIHF1 ZXVlcywgYW5kIHRocm93IGFuIGVycm9yIGlmCiAgKiBhbnkgd29ya2VyIGZhaWxzIHRvIGRvIHRo aXMuCiAgKgorICogd2FpdF9mb3Jfc25hcHNob3Q6IHRyYWNrIHdoZXRoZXIgZWFjaCBwYXJhbGxl bCB3b3JrZXIgaGFzIHN1Y2Nlc3NmdWxseSByZXN0b3JlZAorICogaXRzIHNuYXBzaG90LiBUaGlz IGlzIG5lZWRlZCB3aGVuIHVzaW5nIHBlcmlvZGljIHNuYXBzaG90IHJlc2V0cyB0byBlbnN1cmUg YWxsCisgKiB3b3JrZXJzIGhhdmUgYSB2YWxpZCBpbml0aWFsIHNuYXBzaG90IGJlZm9yZSBwcm9j ZWVkaW5nIHdpdGggdGhlIHNjYW4uCisgKgogICogQ2FsbGVycyBjYW4gYXNzdW1lIHRoYXQgaWYg dGhpcyBmdW5jdGlvbiByZXR1cm5zIHN1Y2Nlc3NmdWxseSwgdGhlbiB0aGUKICAqIG51bWJlciBv ZiB3b3JrZXJzIGdpdmVuIGJ5IHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkIGhhdmUgaW5pdGlhbGl6 ZWQgYW5kCiAgKiBhdHRhY2hlZCB0byB0aGVpciBlcnJvciBxdWV1ZXMuICBXaGV0aGVyIG9yIG5v dCB0aGVzZSB3b3JrZXJzIGFyZSBndWFyYW50ZWVkCkBAIC02ODYsNyArNzIwLDcgQEAgTGF1bmNo UGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKICAqIGNhbGwgdGhpcyBmdW5j dGlvbiBhdCBhbGwuCiAgKi8KIHZvaWQKLVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQ YXJhbGxlbENvbnRleHQgKnBjeHQpCitXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFy YWxsZWxDb250ZXh0ICpwY3h0LCBib29sIHdhaXRfZm9yX3NuYXBzaG90KQogewogCWludAkJCWk7 CiAKQEAgLTczMCw5ICs3NjQsMTIgQEAgV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKFBh cmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQltcSA9IHNobV9tcV9nZXRfcXVldWUocGN4dC0+d29y a2VyW2ldLmVycm9yX21xaCk7CiAJCQkJaWYgKHNobV9tcV9nZXRfc2VuZGVyKG1xKSAhPSBOVUxM KQogCQkJCXsKLQkJCQkJLyogWWVzLCBzbyBpdCBpcyBrbm93biB0byBiZSBhdHRhY2hlZC4gKi8K LQkJCQkJcGN4dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7Ci0JCQkJCSsrcGN4 dC0+bmtub3duX2F0dGFjaGVkX3dvcmtlcnM7CisJCQkJCWlmICghd2FpdF9mb3Jfc25hcHNob3Qg fHwgKihwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQpKQorCQkJCQl7CisJCQkJCQkv KiBZZXMsIHNvIGl0IGlzIGtub3duIHRvIGJlIGF0dGFjaGVkLiAqLworCQkJCQkJcGN4dC0+a25v d25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7CisJCQkJCQkrK3BjeHQtPm5rbm93bl9hdHRh Y2hlZF93b3JrZXJzOworCQkJCQl9CiAJCQkJfQogCQkJfQogCQkJZWxzZSBpZiAoc3RhdHVzID09 IEJHV0hfU1RPUFBFRCkKQEAgLTEyOTEsNiArMTMyOCw3IEBAIFBhcmFsbGVsV29ya2VyTWFpbihE YXR1bSBtYWluX2FyZykKIAlzaG1fdG9jICAgICp0b2M7CiAJRml4ZWRQYXJhbGxlbFN0YXRlICpm cHM7CiAJY2hhcgkgICAqZXJyb3JfcXVldWVfc3BhY2U7CisJYm9vbAkgICAqc25hcHNob3RfcmVz dG9yZWRfc3BhY2U7CiAJc2htX21xCSAgICptcTsKIAlzaG1fbXFfaGFuZGxlICptcWg7CiAJY2hh cgkgICAqbGlicmFyeXNwYWNlOwpAQCAtMTQ5NSw2ICsxNTMzLDEwIEBAIFBhcmFsbGVsV29ya2Vy TWFpbihEYXR1bSBtYWluX2FyZykKIAkJCQkJCQkgICBmcHMtPnBhcmFsbGVsX2xlYWRlcl9wZ3By b2MpOwogCVB1c2hBY3RpdmVTbmFwc2hvdChhc25hcHNob3QpOwogCisJLyogU25hcHNob3QgaXMg cmVzdG9yZWQsIHNldCBmbGFnIHRvIG1ha2UgbGVhZGVyIGtub3cgYWJvdXQgaXQuICovCisJc25h cHNob3RfcmVzdG9yZWRfc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9T TkFQU0hPVF9SRVNUT1JFRCwgZmFsc2UpOworCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlW1BhcmFs bGVsV29ya2VyTnVtYmVyXSA9IHRydWU7CisKIAkvKgogCSAqIFdlJ3ZlIGNoYW5nZWQgd2hpY2gg dHVwbGVzIHdlIGNhbiBzZWUsIGFuZCBtdXN0IHRoZXJlZm9yZSBpbnZhbGlkYXRlCiAJICogc3lz dGVtIGNhY2hlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA4YzZkZmVjZjUxNS4uNzA3ZmYzOWVmNDAg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMKQEAgLTE1MzEsNyArMTUzMSw3IEBAIGluZGV4X2NvbmN1cnJlbnRs eV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAKIAkvKiBJbnZhbGlkYXRlIGNhdGFsb2cgc25h cHNob3QganVzdCBmb3IgYXNzZXJ0ICovCiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwot CUFzc2VydCgoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9V bmlxdWUpIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQo aW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOwogCiAJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVjdXRlZCBieSBpbmRleCBm dW5jdGlvbnMgKi8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVzdGxldmVsKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IGZhMmQ1MjJiMjVmLi5lZjRkMGFlMmZhYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0yNjIsNyArMjYyLDggQEAgRXhlY1NlcVNj YW5Jbml0aWFsaXplRFNNKFNlcVNjYW5TdGF0ZSAqbm9kZSwKIAlwc2NhbiA9IHNobV90b2NfYWxs b2NhdGUocGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4pOwogCXRhYmxlX3BhcmFsbGVsc2Nhbl9p bml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJICBwc2NhbiwK LQkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwkJCQkJCQkJICBlc3RhdGUtPmVzX3Nu YXBzaG90LAorCQkJCQkJCQkgIGZhbHNlKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIG5v ZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4pOwogCW5vZGUtPnNzLnNzX2N1cnJl bnRTY2FuRGVzYyA9CiAJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJy ZW50UmVsYXRpb24sIHBzY2FuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUv c25hcG1nci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMKaW5kZXggM2QwMThj M2ExZTguLjRjZDUzNmU5ODhjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy90aW1lL3Nu YXBtZ3IuYworKysgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwpAQCAtMjgzLDE0 ICsyODMsNiBAQCBHZXRUcmFuc2FjdGlvblNuYXBzaG90KHZvaWQpCiBTbmFwc2hvdAogR2V0TGF0 ZXN0U25hcHNob3Qodm9pZCkKIHsKLQkvKgotCSAqIFdlIG1pZ2h0IGJlIGFibGUgdG8gcmVsYXgg dGhpcywgYnV0IG5vdGhpbmcgdGhhdCBjb3VsZCBvdGhlcndpc2Ugd29yawotCSAqIG5lZWRzIGl0 LgotCSAqLwotCWlmIChJc0luUGFyYWxsZWxNb2RlKCkpCi0JCWVsb2coRVJST1IsCi0JCQkgImNh bm5vdCB1cGRhdGUgU2Vjb25kYXJ5U25hcHNob3QgZHVyaW5nIGEgcGFyYWxsZWwgb3BlcmF0aW9u Iik7Ci0KIAkvKgogCSAqIFNvIGZhciB0aGVyZSBhcmUgbm8gY2FzZXMgcmVxdWlyaW5nIHN1cHBv cnQgZm9yIEdldExhdGVzdFNuYXBzaG90KCkKIAkgKiBkdXJpbmcgbG9naWNhbCBkZWNvZGluZywg YnV0IGl0IHdvdWxkbid0IGJlIGhhcmQgdG8gYWRkIGlmIHJlcXVpcmVkLgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxs ZWwuaAppbmRleCA4ODExNjE4YWNiNy4uZjVjYWUzOWM4NWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9wYXJhbGxlbC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5o CkBAIC0yNiw2ICsyNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsV29ya2VySW5mbwogewog CUJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd2hhbmRsZTsKIAlzaG1fbXFfaGFuZGxlICplcnJv cl9tcWg7CisJYm9vbAkJICAqc25hcHNob3RfcmVzdG9yZWQ7CiB9IFBhcmFsbGVsV29ya2VySW5m bzsKIAogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxDb250ZXh0CkBAIC02NSw3ICs2Niw3IEBAIGV4 dGVybiB2b2lkIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBjeHQpOwog ZXh0ZXJuIHZvaWQgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0 KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlhbGl6ZVBhcmFsbGVsV29ya2VycyhQYXJhbGxlbENvbnRl eHQgKnBjeHQsIGludCBud29ya2Vyc190b19sYXVuY2gpOwogZXh0ZXJuIHZvaWQgTGF1bmNoUGFy YWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7Ci1leHRlcm4gdm9pZCBXYWl0Rm9y UGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKK2V4dGVybiB2 b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQs IGJvb2wgd2FpdF9mb3Jfc25hcHNob3QpOwogZXh0ZXJuIHZvaWQgV2FpdEZvclBhcmFsbGVsV29y a2Vyc1RvRmluaXNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gdm9pZCBEZXN0cm95 UGFyYWxsZWxDb250ZXh0KFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRlcm4gYm9vbCBQYXJh bGxlbENvbnRleHRBY3RpdmUodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv cmVsc2Nhbi5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAppbmRleCBkYzZlMDE4NDI4 NC4uODUyOWI4MDhhZWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtODIsNiArODIsNyBAQCB0eXBl ZGVmIHN0cnVjdCBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhCiAJUmVsRmlsZUxvY2F0b3IgcGhz X2xvY2F0b3I7IC8qIHBoeXNpY2FsIHJlbGF0aW9uIHRvIHNjYW4gKi8KIAlib29sCQlwaHNfc3lu Y3NjYW47CS8qIHJlcG9ydCBsb2NhdGlvbiB0byBzeW5jc2NhbiBsb2dpYz8gKi8KIAlib29sCQlw aHNfc25hcHNob3RfYW55OwkvKiBTbmFwc2hvdEFueSwgbm90IHBoc19zbmFwc2hvdF9kYXRhPyAq LworCWJvb2wJCXBoc19yZXNldF9zbmFwc2hvdDsgLyogdXNlIFNPX1JFU0VUX1NOQVBTSE9UPyAq LwogCVNpemUJCXBoc19zbmFwc2hvdF9vZmY7CS8qIGRhdGEgZm9yIHNuYXBzaG90ICovCiB9IFBh cmFsbGVsVGFibGVTY2FuRGVzY0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFRhYmxlU2Nh bkRlc2NEYXRhICpQYXJhbGxlbFRhYmxlU2NhbkRlc2M7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBl Yzg5MjhhZDkwYi4uOWE5YjA5NGYzZjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90 YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMTE4MCw3ICsx MTgwLDggQEAgZXh0ZXJuIFNpemUgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJlbGF0aW9u IHJlbCwgU25hcHNob3Qgc25hcHNob3QpOwogICovCiBleHRlcm4gdm9pZCB0YWJsZV9wYXJhbGxl bHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJICBQYXJhbGxlbFRhYmxl U2NhbkRlc2MgcHNjYW4sCi0JCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCk7CisJCQkJCQkJ CQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJCQkJCQkgIGJvb2wgcmVzZXRfc25hcHNob3Qp OwogCiAvKgogICogQmVnaW4gYSBwYXJhbGxlbCBzY2FuLiBgcHNjYW5gIG5lZWRzIHRvIGhhdmUg YmVlbiBpbml0aWFsaXplZCB3aXRoCkBAIC0xNzk4LDkgKzE3OTksOSBAQCB0YWJsZV9zY2FuX2Fu YWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQgT2xkZXN0 WG1pbiwKICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0sIGl0IG1p Z2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIuCiAgKgot ICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IGFuZCBub24tcGFyYWxsZWwgY29uY3VycmVu dCBidWlsZAotICogU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNjYW4uIFRo YXQgbGVhZHMgZm9yIGNoYW5naW5nIHNuYXBzaG90cwotICogb24gdGhlIGZseSB0byBhbGxvdyB4 bWluIGhvcml6b24gcHJvcGFnYXRlLgorICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGNvbmN1cnJl bnQgIGluZGV4IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQKKyAqIGZvciB0aGUg c2Nhbi4gVGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzIG9uIHRoZSBmbHkgdG8gYWxs b3cgeG1pbgorICogaG9yaXpvbiBwcm9wYWdhdGUuCiAgKi8KIHN0YXRpYyBpbmxpbmUgZG91Ymxl CiB0YWJsZV9pbmRleF9idWlsZF9zY2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25h cHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9j aWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCA5NDhkMTIzMmFhMC4uNTk1YTQwMDBjZTAgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNf cmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTE3LDYgKzE3LDEyIEBAIFNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0 X3NuYXBzaG90cycsICdub3RpY2UnCiAgCiAoMSByb3cpCiAKK1NFTEVDVCBpbmplY3Rpb25fcG9p bnRzX2F0dGFjaCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7Cisg aW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2lj X3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CiBJTlNFUlQgSU5UTyBj aWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDIwMCkgcyhpKTsKQEAgLTcyLDMwICs3OCw0NSBAQCBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQog RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogLS0gVGhlIHNhbWUg aW4gcGFyYWxsZWwgbW9kZQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFy YWxsZWxfd29ya2Vycz0yKTsKKy0tIERldGFjaCB0byBrZWVwIHRlc3Qgc3RhYmxlLCBzaW5jZSBw YXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBsZXRlIHNjYW4gYmVmb3JlIGxlYWRlcgorU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZl Jyk7CisgaW5qZWN0aW9uX3BvaW50c19kZXRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwoaSk7CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7 CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKK05PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNj YW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxl X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsK IE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCi1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCiBEUk9QIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGlj YXRlX3N0YWJsZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERFU0MgTlVMTFMgTEFTVCk7 CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5E RVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlh bGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogRFJPUCBT Q0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIE5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8g MyBvdGhlciBvYmplY3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbAppbmRleCA1MDcyNTM1YjM1 NS4uMjk0MWFhN2FlMzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApAQCAtMyw3ICszLDcg QEAgQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwogU0VMRUNUIGluamVjdGlvbl9w b2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBf cmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7CiBTRUxFQ1QgaW5qZWN0 aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMn LCAnbm90aWNlJyk7Ci0KK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfcGFy YWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7CiAKIENSRUFURSBTQ0hFTUEgY2ljX3Jl c2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkg a2V5LCBqIGludCk7CkBAIC01Myw2ICs1Myw5IEBAIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUKIEFMVEVSIFRB QkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9Mik7CiAKKy0tIERl dGFjaCB0byBrZWVwIHRlc3Qgc3RhYmxlLCBzaW5jZSBwYXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBs ZXRlIHNjYW4gYmVmb3JlIGxlYWRlcgorU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdo ZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJyk7CisKIENSRUFURSBVTklRVUUgSU5E RVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBEUk9QIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CkBAIC04Myw0ICs4Niw0IEBAIERST1AgSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIAogRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3Nu YXAgQ0FTQ0FERTsKIAotRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKK0RST1AgRVhU RU5TSU9OIGluamVjdGlvbl9wb2ludHM7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotLSAK Mi40My4wCgo= --000000000000813841062b2863c9 Content-Type: application/octet-stream; name="v11-0002-Add-stress-tests-for-concurrent-index-operations.patch" Content-Disposition: attachment; filename="v11-0002-Add-stress-tests-for-concurrent-index-operations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5n7ah9t9 RnJvbSA2NjU5YmQyOTFiNTQxMmRlNjJlY2RhZTc2ZDhjYWMzMGYwZjg0ODdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjExIDAy LzExXSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMKCkFk ZCBjb21wcmVoZW5zaXZlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRp b25zLCBmb2N1c2luZyBvbjoKKiBUZXN0aW5nIENSRUFURS9SRUlOREVYL0RST1AgSU5ERVggQ09O Q1VSUkVOVExZIHVuZGVyIGhlYXZ5IHdyaXRlIGxvYWQKKiBWZXJpZnlpbmcgaW5kZXggaW50ZWdy aXR5IGR1cmluZyBjb25jdXJyZW50IEhPVCB1cGRhdGVzCiogVGVzdGluZyB2YXJpb3VzIGluZGV4 IHR5cGVzIGluY2x1ZGluZyB1bmlxdWUgYW5kIHBhcnRpYWwgaW5kZXhlcwoqIFZhbGlkYXRpbmcg aW5kZXggY29ycmVjdG5lc3MgdXNpbmcgYW1jaGVjawoqIEV4ZXJjaXNpbmcgcGFyYWxsZWwgd29y a2VyIGNvbmZpZ3VyYXRpb25zCgpUaGVzZSBzdHJlc3MgdGVzdHMgaGVscCBlbnN1cmUgcmVsaWFi aWxpdHkgb2YgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25zCnVuZGVyIGhlYXZ5IGxvYWQgY29u ZGl0aW9ucy4KLS0tCiBzcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQgIHwgICAxICsKIHNy Yy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwgfCAxODkgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTkwIGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsCgpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL21lc29u LmJ1aWxkCmluZGV4IDMxNmVhMGQ0MGI4Li43ZGYxNTQzNWZiYiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5i dWlsZApAQCAtMjgsNiArMjgsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMDNfY2hlY2sucGwn LAogICAgICAgJ3QvMDA0X3ZlcmlmeV9oZWFwYW0ucGwnLAogICAgICAgJ3QvMDA1X29wY2xhc3Nf ZGFtYWdlLnBsJywKKyAgICAgICd0LzAwNl9jaWMucGwnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsIGIvc3JjL2Jpbi9wZ19hbWNo ZWNrL3QvMDA2X2NpYy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u YTk1NTlkYmUzYWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZf Y2ljLnBsCkBAIC0wLDAgKzEsMTg5IEBACisjIENvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IFJFSU5ERVggQ09OQ1VSUkVOVExZ IHdpdGggY29uY3VycmVudCBtb2RpZmljYXRpb25zIGFuZCBIT1QgdXBkYXRlcwordXNlIHN0cmlj dDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsK KworVGVzdDo6TW9yZS0+YnVpbGRlci0+dG9kb19zdGFydCgnZmlsZXN5c3RlbSBidWcnKQorICBp ZiBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6aGFzX3dhbF9yZWFkX2J1ZzsKKworbXkgKCRub2Rl LCAkcmVzdWx0KTsKKworIworIyBUZXN0IHNldC11cAorIworJG5vZGUgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ1JDX3Rlc3QnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSdsb2NrX3RpbWVvdXQgPSAnIC4gKDEwMDAgKiAk UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCkpOworJG5vZGUtPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnZnN5bmMgPSBvZmYnKTsKKyRub2RlLT5zdGFydDsK KyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9OIGFtY2hlY2sp KTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgVEFCTEUgdGJsKGkgaW50 IHByaW1hcnkga2V5LAorCQkJCQkJCQljMSBtb25leSBkZWZhdWx0IDAsIGMyIG1vbmV5IGRlZmF1 bHQgMCwKKwkJCQkJCQkJYzMgbW9uZXkgZGVmYXVsdCAwLCB1cGRhdGVkX2F0IHRpbWVzdGFtcCwK KwkJCQkJCQkJaWEgaW50NFtdLCBwIHBvaW50KSkpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxKENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0 KTspKTsKKyMgY3JlYXRlIHNlcXVlbmNlCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEo Q1JFQVRFIFVOTE9HR0VEIFNFUVVFTkNFIGluX3Jvd19yZWJ1aWxkIFNUQVJUIDEgSU5DUkVNRU5U IDE7KSk7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUIG5leHR2YWwoJ2lu X3Jvd19yZWJ1aWxkJyk7KSk7CisKKyMgQ3JlYXRlIGhlbHBlciBmdW5jdGlvbnMgZm9yIHByZWRp Y2F0ZSB0ZXN0cworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKAorCUNSRUFURSBGVU5D VElPTiBwcmVkaWNhdGVfc3RhYmxlKCkgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCUxBTkdVQUdF IHBscGdzcWwgQVMgJCQKKwlCRUdJTgorCQlFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCkn OworCQlSRVRVUk4gdHJ1ZTsKKwlFTkQ7ICQkOworKSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcSgKKwlDUkVBVEUgRlVOQ1RJT04gcHJlZGljYXRlX2NvbnN0KGludGVnZXIpIFJF VFVSTlMgYm9vbCBJTU1VVEFCTEUKKwlMQU5HVUFHRSBwbHBnc3FsIEFTICQkCisJQkVHSU4KKwkJ UkVUVVJOIE1PRCgkMSwgMikgPSAwOworCUVORDsgJCQ7CispKTsKKworIyBSdW4gQ0lDL1JJQyBp biBkaWZmZXJlbnQgb3B0aW9ucyBjb25jdXJyZW50bHkgd2l0aCB1cHNlcnRzCiskbm9kZS0+cGdi ZW5jaCgKKwknLS1uby12YWN1dW0gLS1jbGllbnQ9MzAgLS1qb2JzPTQgLS1leGl0LW9uLWFib3J0 IC0tdHJhbnNhY3Rpb25zPTI1MDAnLAorCTAsCisJW3Fye2FjdHVhbGx5IHByb2Nlc3NlZH1dLAor CVtxcnteJH1dLAorCSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlOREVYL0NSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFknLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzJyA9PiBxKAorCQkJU0VM RUNUIHBnX3RyeV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJ CQlcaWYgOmdvdGxvY2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBs YXN0X3ZhbHVlIFxnc2V0CisJCQkJXHNldCB2YXJpYW50IHJhbmRvbSgwLCA1KQorCQkJCVxzZXQg cGFyYWxsZWxzIHJhbmRvbSgwLCA0KQorCQkJCVxpZiA6bGFzdF92YWx1ZSA8IDMKKwkJCQkJQUxU RVIgVEFCTEUgdGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz06cGFyYWxsZWxzKTsKKwkJCQkJXGlm IDp2YXJpYW50ID0gMAorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMiBPTiB0 YmwoaSwgdXBkYXRlZF9hdCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMQorCQkJCQkJQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHhfMiBPTiB0YmwoaSwgdXBkYXRlZF9hdCkgV0hFUkUgcHJl ZGljYXRlX3N0YWJsZSgpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDIKKwkJCQkJCUNSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsKGksIHVwZGF0ZWRfYXQpIFdIRVJFIE1PRChp LCAyKSA9IDA7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMworCQkJCQkJQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHhfMiBPTiB0YmwoaSwgdXBkYXRlZF9hdCkgV0hFUkUgcHJlZGljYXRlX2Nv bnN0KGkpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgaWR4XzIgT04gdGJsKHByZWRpY2F0ZV9jb25zdChpKSk7CisJCQkJCVxlbGlmIDp2 YXJpYW50ID0gNQorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMiBPTiB0Ymwo aSwgcHJlZGljYXRlX2NvbnN0KGkpLCB1cGRhdGVkX2F0KSBXSEVSRSBwcmVkaWNhdGVfY29uc3Qo aSk7CisJCQkJCVxlbmRpZgorCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4 X2NoZWNrKCdpZHhfMicsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIGNoZWNrdW5pcXVlID0+IHRy dWUpOworCQkJCQlSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMjsKKwkJCQkJXHNsZWVw IDEwIG1zCisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnaWR4XzInLCBoZWFwYWxsaW5kZXhl ZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgaWR4XzI7CisJCQkJXGVuZGlmCisJCQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0 Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVtIHJhbmRvbSgxMDAwLCAxMDAwMDApCisJCQkJQkVH SU47CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAs MCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0g bm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSww LDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0 ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVt KSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVk X2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6 bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRh dGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20o KSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1 cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAx KTsKKwkJCQlDT01NSVQ7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHEoVFJVTkNBVEUgVEFCTEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZv ciB1bmlxdWUgaW5kZXggY29uY3VycmVudGx5IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2go CisJJy0tbm8tdmFjdXVtIC0tY2xpZW50PTMwIC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRy YW5zYWN0aW9ucz0yNTAwJywKKwkwLAorCVtxcnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7 XiR9XSwKKwknY29uY3VycmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGZvciB1bmlxdWUgQlRSRUUnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX3Vu aXF1ZV9pZHgnID0+IHEoCisJCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRl Z2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFs KCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVs cyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxF IHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7CisJCQkJCUNSRUFURSBVTklR VUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeF8yIE9OIHRibChpKTsKKwkJCQkJXHNsZWVwIDEwIG1z CisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnaWR4XzInLCBoZWFwYWxsaW5kZXhlZCA9PiB0 cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgaWR4XzI7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlTRUxFQ1QgYnRfaW5kZXhfY2hlY2so J2lkeF8yJywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7CisJ CQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZIGlkeF8yOworCQkJCVxlbmRpZgorCQkJCVNFTEVD VCBwZ19hZHZpc29yeV91bmxvY2soNDIpOworCQkJXGVsc2UKKwkJCQlcc2V0IG51bSByYW5kb20o MSwgcG93ZXIoMTAsIHJhbmRvbSgxLCA1KSkpCisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhm bG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8g VVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5fcm93 X3JlYnVpbGQnLCAxKTsKKwkJCVxlbmRpZgorCQkpCisJfSk7CisKKyRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcShUUlVOQ0FURSBUQUJMRSB0Ymw7KSk7CisKKyMgUnVuIENJQy9SSUMgZm9y ICBHSU4vR0lTVC9CUklOL0hBU0gvU1BHSVNUIGluZGV4IGNvbmN1cnJlbnRseSB3aXRoIHVwc2Vy dHMKKyRub2RlLT5wZ2JlbmNoKAorCSctLW5vLXZhY3V1bSAtLWNsaWVudD0zMCAtLWpvYnM9NCAt LWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlvbnM9MjUwMCcsCisJMCwKKwlbcXJ7YWN0dWFsbHkg cHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRoIFJF SU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgR0lOL0dJU1QvQlJJTi9IQVNIL1NQ R0lTVCcsCisJeworCQknY29uY3VycmVudF9vcHNfaWR4JyA9PiBxKAorCQkJU0VMRUNUIHBnX3Ry eV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJCQlcaWYgOmdv dGxvY2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBsYXN0X3ZhbHVl IFxnc2V0CisJCQkJXHNldCBwYXJhbGxlbHMgcmFuZG9tKDAsIDQpCisJCQkJXGlmIDpsYXN0X3Zh bHVlIDwgMworCQkJCQlBTFRFUiBUQUJMRSB0YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTpwYXJh bGxlbHMpOworCQkJCQlcc2V0IHZhcmlhbnQgcmFuZG9tKDAsIDQpCisJCQkJCVxpZiA6dmFyaWFu dCA9IDAKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVTSU5H IEdJTiAoaWEpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDEKKwkJCQkJCUNSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVTSU5HIEdJU1QgKHApOworCQkJCQlcZWxpZiA6dmFy aWFudCA9IDIKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVT SU5HIEJSSU4gKHVwZGF0ZWRfYXQpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVTSU5HIEhBU0ggKHVwZGF0ZWRf YXQpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4XzIgT04gdGJsIFVTSU5HIFNQR0lTVCAocCk7CisJCQkJCVxlbmRpZgorCQkJCQlc c2xlZXAgMTAgbXMKKwkJCQkJUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzI7CisJCQkJ CVxzbGVlcCAxMCBtcworCQkJCQlEUk9QIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMjsKKwkJCQlc ZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJ XHNldCBudW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5kb20oMSwgNSkpKQorCQkJCUlOU0VSVCBJ TlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9O IENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCVNFTEVD VCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCisk bm9kZS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK LS0gCjIuNDMuMAoK --000000000000813841062b2863c9 Content-Type: application/octet-stream; name="v11-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Disposition: attachment; filename="v11-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5n7ah9u10 RnJvbSBlNGUzMzUzNmVjNzEzN2NhZWRkMzFlZWEwNTA1ODljODM5OGNiODAwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDowOTo1MiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjExIDAx LzExXSBUaGlzIGlzIGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9yZy81MC81MTYwLwog bWVyZ2VkIGluIHNpbmdsZSBjb21taXQuIGl0IGlzIHJlcXVpcmVkIGZvciBzdGFiaWxpdHkgb2Yg c3RyZXNzIHRlc3RzLgoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAg ICB8ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgICAgfCAgIDMg Kwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgfCAxMTkgKysrKysrKysr KysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgfCAg IDIgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAgfCAxMzUgKysrKysr KysrKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMgICAg ICAgfCAgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCAyMTYgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBkNmUyM2NhZWYxNy4uMGZmNDk4 YzRlMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNzY2LDYgKzE3NjYsNyBAQCBE ZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBiZWZvcmUgdGhlIHJlZmVyZW5jZSBzbmFwIHdh cyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKIAkgKiB0cmFuc2FjdGlvbnMgdGhhdCBt aWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkgKi8KKwlJTkpFQ1RJT05fUE9JTlQoImRlZmlu ZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkIik7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJh bShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0VfV0FJVF8zKTsKIAlXYWl0Rm9yT2xkZXJTbmFwc2hvdHMobGltaXRYbWluLCB0cnVlKTsK QEAgLTQyMDYsNyArNDIwNyw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJICogdGhlIHNh bWUgdGltZSB0byBtYWtlIHN1cmUgd2Ugb25seSBnZXQgY29uc3RyYWludCB2aW9sYXRpb25zIGZy b20gdGhlCiAJICogaW5kZXhlcyB3aXRoIHRoZSBjb3JyZWN0IG5hbWVzLgogCSAqLwotCisJSU5K RUNUSU9OX1BPSU5UKCJyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCIp OwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKIAkvKgpAQCAtNDI4NSw2ICs0Mjg2LDcg QEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBP aWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkgKiBpbmRleF9kcm9wKCkgZm9yIG1vcmUgZGV0 YWlscy4KIAkgKi8KIAorCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleF9yZWxhdGlvbl9jb25jdXJy ZW50bHlfYmVmb3JlX3NldF9kZWFkIik7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfV0FJVF80KTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NFeGNs dXNpdmVMb2NrLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKaW5kZXggN2M4 N2YwMTJjMzAuLmFlMTFjMWRkNDYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwpA QCAtMTE3LDYgKzExNyw3IEBACiAjaW5jbHVkZSAidXRpbHMvbXVsdGlyYW5nZXR5cGVzLmgiCiAj aW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIK KyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAogLyogd2FpdE1vZGUgYXJndW1l bnQgdG8gY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KCkgKi8KIHR5cGVkZWYg ZW51bQpAQCAtOTM2LDYgKzkzNyw4IEBAIHJldHJ5OgogCWVjb250ZXh0LT5lY3h0X3NjYW50dXBs ZSA9IHNhdmVfc2NhbnR1cGxlOwogCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChleGlz dGluZ19zbG90KTsKKwlpZiAoIWNvbmZsaWN0KQorCQlJTkpFQ1RJT05fUE9JTlQoImNoZWNrX2V4 Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCIpOwogCiAJcmV0dXJuICFj b25mbGljdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCA3ZTcxZDQy MmE2Mi4uMzkyMmFlMzk2ODEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAg LTQ4Myw2ICs0ODMsNDggQEAgRXhlY0ZpbmRQYXJ0aXRpb24oTW9kaWZ5VGFibGVTdGF0ZSAqbXRz dGF0ZSwKIAlyZXR1cm4gcnJpOwogfQogCisvKgorICogSXNJbmRleENvbXBhdGlibGVBc0FyYml0 ZXIKKyAqIAkJQ2hlY2tzIGlmIHRoZSBpbmRleGVzIGFyZSBpZGVudGljYWwgaW4gdGVybXMgb2Yg YmVpbmcgdXNlZAorICogCQlhcyBhcmJpdGVycyBmb3IgdGhlIElOU0VSVCBPTiBDT05GTElDVCBv cGVyYXRpb24gYnkgY29tcGFyaW5nCisgKiAJCXRoZW0gdG8gdGhlIHByb3ZpZGVkIGFyYml0ZXIg aW5kZXguCisgKgorICogUmV0dXJucyB0aGUgdHJ1ZSBpZiBpbmRleGVzIGFyZSBjb21wYXRpYmxl LgorICovCitzdGF0aWMgYm9vbAorSXNJbmRleENvbXBhdGlibGVBc0FyYml0ZXIoUmVsYXRpb24J YXJiaXRlckluZGV4UmVsYXRpb24sCisJCQkJCQkgICBJbmRleEluZm8gICphcmJpdGVySW5kZXhJ bmZvLAorCQkJCQkJICAgUmVsYXRpb24JaW5kZXhSZWxhdGlvbiwKKwkJCQkJCSAgIEluZGV4SW5m byAgKmluZGV4SW5mbykKK3sKKwlpbnQgaTsKKworCWlmIChhcmJpdGVySW5kZXhJbmZvLT5paV9V bmlxdWUgIT0gaW5kZXhJbmZvLT5paV9VbmlxdWUpCisJCXJldHVybiBmYWxzZTsKKwkvKiBpdCBp cyBub3Qgc3VwcG9ydGVkIGZvciBjYXNlcyBvZiBleGNsdXNpb24gY29uc3RyYWludHMuICovCisJ aWYgKGFyYml0ZXJJbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMIHx8IGluZGV4SW5m by0+aWlfRXhjbHVzaW9uT3BzICE9IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKwlpZiAoYXJiaXRl ckluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRua2V5YXR0cyAhPSBpbmRleFJlbGF0aW9uLT5y ZF9pbmRleC0+aW5kbmtleWF0dHMpCisJCXJldHVybiBmYWxzZTsKKworCWZvciAoaSA9IDA7IGkg PCBpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kbmtleWF0dHM7IGkrKykKKwl7CisJCWludAkJ CWFyYml0ZXJBdHRvTm8gPSBhcmJpdGVySW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGtleS52 YWx1ZXNbaV07CisJCWludAkJCWF0dG9ObyA9IGluZGV4UmVsYXRpb24tPnJkX2luZGV4LT5pbmRr ZXkudmFsdWVzW2ldOworCQlpZiAoYXJiaXRlckF0dG9ObyAhPSBhdHRvTm8pCisJCQlyZXR1cm4g ZmFsc2U7CisJfQorCisJaWYgKGxpc3RfZGlmZmVyZW5jZShSZWxhdGlvbkdldEluZGV4RXhwcmVz c2lvbnMoYXJiaXRlckluZGV4UmVsYXRpb24pLAorCQkJCQkJUmVsYXRpb25HZXRJbmRleEV4cHJl c3Npb25zKGluZGV4UmVsYXRpb24pKSAhPSBOSUwpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChs aXN0X2RpZmZlcmVuY2UoUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShhcmJpdGVySW5kZXhSZWxh dGlvbiksCisJCQkJCQlSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGluZGV4UmVsYXRpb24pKSAh PSBOSUwpCisJCXJldHVybiBmYWxzZTsKKwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIEV4ZWNJ bml0UGFydGl0aW9uSW5mbwogICoJCUxvY2sgdGhlIHBhcnRpdGlvbiBhbmQgaW5pdGlhbGl6ZSBS ZXN1bHRSZWxJbmZvLiAgQWxzbyBzZXR1cCBvdGhlcgpAQCAtNjkzLDYgKzczNSw4IEBAIEV4ZWNJ bml0UGFydGl0aW9uSW5mbyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0 ZSwKIAkJaWYgKHJvb3RSZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXMg IT0gTklMKQogCQl7CiAJCQlMaXN0CSAgICpjaGlsZElkeHM7CisJCQlMaXN0IAkgICAqbm9uQW5j ZXN0b3JJZHhzID0gTklMOworCQkJaW50CQkgICBpLCBqLCBhZGRpdGlvbmFsX2FyYml0ZXJzID0g MDsKIAogCQkJY2hpbGRJZHhzID0gUmVsYXRpb25HZXRJbmRleExpc3QobGVhZl9wYXJ0X3JyaS0+ cmlfUmVsYXRpb25EZXNjKTsKIApAQCAtNzAzLDIzICs3NDcsNzQgQEAgRXhlY0luaXRQYXJ0aXRp b25JbmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCQkJCUxp c3RDZWxsICAgKmxjMjsKIAogCQkJCWFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3Jz KGNoaWxkSWR4KTsKLQkJCQlmb3JlYWNoKGxjMiwgcm9vdFJlc3VsdFJlbEluZm8tPnJpX29uQ29u ZmxpY3RBcmJpdGVySW5kZXhlcykKKwkJCQlpZiAoYW5jZXN0b3JzKQogCQkJCXsKLQkJCQkJaWYg KGxpc3RfbWVtYmVyX29pZChhbmNlc3RvcnMsIGxmaXJzdF9vaWQobGMyKSkpCi0JCQkJCQlhcmJp dGVySW5kZXhlcyA9IGxhcHBlbmRfb2lkKGFyYml0ZXJJbmRleGVzLCBjaGlsZElkeCk7CisJCQkJ CWZvcmVhY2gobGMyLCByb290UmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRl eGVzKQorCQkJCQl7CisJCQkJCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFuY2VzdG9ycywgbGZpcnN0 X29pZChsYzIpKSkKKwkJCQkJCQlhcmJpdGVySW5kZXhlcyA9IGxhcHBlbmRfb2lkKGFyYml0ZXJJ bmRleGVzLCBjaGlsZElkeCk7CisJCQkJCX0KIAkJCQl9CisJCQkJZWxzZSAvKiBObyBhbmNlc3Rv ciB3YXMgZm91bmQgZm9yIHRoYXQgaW5kZXguIFNhdmUgaXQgZm9yIHJlY2hlY2tpbmcgbGF0ZXIu ICovCisJCQkJCW5vbkFuY2VzdG9ySWR4cyA9IGxhcHBlbmRfb2lkKG5vbkFuY2VzdG9ySWR4cywg Y2hpbGRJZHgpOwogCQkJCWxpc3RfZnJlZShhbmNlc3RvcnMpOwogCQkJfQorCisJCQkvKgorCQkJ ICogSWYgYW55IG5vbi1hbmNlc3RvciBpbmRleGVzIGFyZSBmb3VuZCwgd2UgbmVlZCB0byBjb21w YXJlIHRoZW0gd2l0aCBvdGhlcgorCQkJICogaW5kZXhlcyBvZiB0aGUgcmVsYXRpb24gdGhhdCB3 aWxsIGJlIHVzZWQgYXMgYXJiaXRlcnMuIFRoaXMgaXMgbmVjZXNzYXJ5CisJCQkgKiB3aGVuIGEg cGFydGl0aW9uZWQgaW5kZXggaXMgcHJvY2Vzc2VkIGJ5IFJFSU5ERVggQ09OQ1VSUkVOVExZLiBC b3RoIGluZGV4ZXMKKwkJCSAqIG11c3QgYmUgY29uc2lkZXJlZCBhcyBhcmJpdGVycyB0byBlbnN1 cmUgdGhhdCBhbGwgY29uY3VycmVudCB0cmFuc2FjdGlvbnMKKwkJCSAqIHVzZSB0aGUgc2FtZSBz ZXQgb2YgYXJiaXRlcnMuCisJCQkgKi8KKwkJCWlmIChub25BbmNlc3RvcklkeHMpCisJCQl7CisJ CQkJZm9yIChpID0gMDsgaSA8IGxlYWZfcGFydF9ycmktPnJpX051bUluZGljZXM7IGkrKykKKwkJ CQl7CisJCQkJCWlmIChsaXN0X21lbWJlcl9vaWQobm9uQW5jZXN0b3JJZHhzLCBsZWFmX3BhcnRf cnJpLT5yaV9JbmRleFJlbGF0aW9uRGVzY3NbaV0tPnJkX2luZGV4LT5pbmRleHJlbGlkKSkKKwkJ CQkJeworCQkJCQkJUmVsYXRpb24gbm9uQW5jZXN0b3JJbmRleFJlbGF0aW9uID0gbGVhZl9wYXJ0 X3JyaS0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzW2ldOworCQkJCQkJSW5kZXhJbmZvICpub25BbmNl c3RvckluZGV4SW5mbyA9IGxlYWZfcGFydF9ycmktPnJpX0luZGV4UmVsYXRpb25JbmZvW2ldOwor CQkJCQkJQXNzZXJ0KCFsaXN0X21lbWJlcl9vaWQoYXJiaXRlckluZGV4ZXMsIG5vbkFuY2VzdG9y SW5kZXhSZWxhdGlvbi0+cmRfaW5kZXgtPmluZGV4cmVsaWQpKTsKKworCQkJCQkJLyogSXQgaXMg dG9vIGVhcmx5IHRvIHVzIG5vbi1yZWFkeSBpbmRleGVzIGFzIGFyYml0ZXJzICovCisJCQkJCQlp ZiAoIW5vbkFuY2VzdG9ySW5kZXhJbmZvLT5paV9SZWFkeUZvckluc2VydHMpCisJCQkJCQkJY29u dGludWU7CisKKwkJCQkJCWZvciAoaiA9IDA7IGogPCBsZWFmX3BhcnRfcnJpLT5yaV9OdW1JbmRp Y2VzOyBqKyspCisJCQkJCQl7CisJCQkJCQkJaWYgKGxpc3RfbWVtYmVyX29pZChhcmJpdGVySW5k ZXhlcywKKwkJCQkJCQkJCQkJCWxlYWZfcGFydF9ycmktPnJpX0luZGV4UmVsYXRpb25EZXNjc1tq XS0+cmRfaW5kZXgtPmluZGV4cmVsaWQpKQorCQkJCQkJCXsKKwkJCQkJCQkJUmVsYXRpb24gYXJi aXRlckluZGV4UmVsYXRpb24gPSBsZWFmX3BhcnRfcnJpLT5yaV9JbmRleFJlbGF0aW9uRGVzY3Nb al07CisJCQkJCQkJCUluZGV4SW5mbyAqYXJiaXRlckluZGV4SW5mbyA9IGxlYWZfcGFydF9ycmkt PnJpX0luZGV4UmVsYXRpb25JbmZvW2pdOworCisJCQkJCQkJCS8qIElmIG5vbi1hbmNlc3RvciBp bmRleCBhcmUgY29tcGF0aWJsZSB0byBhcmJpdGVyIC0gdXNlIGl0IGFzIGFyYml0ZXIgdG9vLiAq LworCQkJCQkJCQlpZiAoSXNJbmRleENvbXBhdGlibGVBc0FyYml0ZXIoYXJiaXRlckluZGV4UmVs YXRpb24sIGFyYml0ZXJJbmRleEluZm8sCisJCQkJCQkJCQkJCQkJCQkgICBub25BbmNlc3Rvcklu ZGV4UmVsYXRpb24sIG5vbkFuY2VzdG9ySW5kZXhJbmZvKSkKKwkJCQkJCQkJeworCQkJCQkJCQkJ YXJiaXRlckluZGV4ZXMgPSBsYXBwZW5kX29pZChhcmJpdGVySW5kZXhlcywKKwkJCQkJCQkJCQkJ CQkJCQkgbm9uQW5jZXN0b3JJbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kZXhyZWxpZCk7CisJ CQkJCQkJCQlhZGRpdGlvbmFsX2FyYml0ZXJzKys7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJ CQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQlsaXN0X2ZyZWUobm9uQW5jZXN0b3JJZHhzKTsK KworCQkJLyoKKwkJCSAqIElmIHRoZSByZXN1bHRpbmcgbGlzdHMgYXJlIG9mIGluZXF1YWwgbGVu Z3RoLCBzb21ldGhpbmcgaXMgd3JvbmcuCisJCQkgKiAoVGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBz aW5jZSBhcmJpdGVyIGluZGV4IHNlbGVjdGlvbiBzaG91bGQgbm90CisJCQkgKiBwaWNrIHVwIGEg bm9uLXJlYWR5IGluZGV4LikKKwkJCSAqCisJCQkgKiBCdXQgd2UgbmVlZCB0byBjb25zaWRlciBh biBhZGRpdGlvbmFsIGFyYml0ZXIgaW5kZXhlcyBhbHNvLgorCQkJICovCisJCQlpZiAobGlzdF9s ZW5ndGgocm9vdFJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcykgIT0K KwkJCQlsaXN0X2xlbmd0aChhcmJpdGVySW5kZXhlcykgLSBhZGRpdGlvbmFsX2FyYml0ZXJzKQor CQkJCWVsb2coRVJST1IsICJpbnZhbGlkIGFyYml0ZXIgaW5kZXggbGlzdCIpOwogCQl9Ci0KLQkJ LyoKLQkJICogSWYgdGhlIHJlc3VsdGluZyBsaXN0cyBhcmUgb2YgaW5lcXVhbCBsZW5ndGgsIHNv bWV0aGluZyBpcyB3cm9uZy4KLQkJICogKFRoaXMgc2hvdWxkbid0IGhhcHBlbiwgc2luY2UgYXJi aXRlciBpbmRleCBzZWxlY3Rpb24gc2hvdWxkIG5vdAotCQkgKiBwaWNrIHVwIGFuIGludmFsaWQg aW5kZXguKQotCQkgKi8KLQkJaWYgKGxpc3RfbGVuZ3RoKHJvb3RSZXN1bHRSZWxJbmZvLT5yaV9v bkNvbmZsaWN0QXJiaXRlckluZGV4ZXMpICE9Ci0JCQlsaXN0X2xlbmd0aChhcmJpdGVySW5kZXhl cykpCi0JCQllbG9nKEVSUk9SLCAiaW52YWxpZCBhcmJpdGVyIGluZGV4IGxpc3QiKTsKIAkJbGVh Zl9wYXJ0X3JyaS0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzID0gYXJiaXRlckluZGV4ZXM7 CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggMWFmOGM5 Y2FmNmMuLjhhMWEwODViMTA2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YwpAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAi dXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxz L2luamVjdGlvbl9wb2ludC5oIgogCiAKIHR5cGVkZWYgc3RydWN0IE1UVGFyZ2V0UmVsTG9va3Vw CkBAIC0xMDg3LDYgKzEwODgsNyBAQCBFeGVjSW5zZXJ0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29u dGV4dCwKIAkJCQkJcmV0dXJuIE5VTEw7CiAJCQkJfQogCQkJfQorCQkJSU5KRUNUSU9OX1BPSU5U KCJleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1bGF0aXZlIik7CiAKIAkJCS8qCiAJCQkg KiBCZWZvcmUgd2Ugc3RhcnQgaW5zZXJ0aW9uIHByb3BlciwgYWNxdWlyZSBvdXIgInNwZWN1bGF0 aXZlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKaW5kZXggYjk3NTljMzEyNTIuLmY5 MTIwM2RkMzUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0 LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC03MTQsMTIg KzcxNCwxNCBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJTGlz dAkgICAqaW5kZXhMaXN0OwogCUxpc3RDZWxsICAgKmw7CiAKLQkvKiBOb3JtYWxpemVkIGluZmVy ZW5jZSBhdHRyaWJ1dGVzIGFuZCBpbmZlcmVuY2UgZXhwcmVzc2lvbnM6ICovCi0JQml0bWFwc2V0 ICAqaW5mZXJBdHRycyA9IE5VTEw7Ci0JTGlzdAkgICAqaW5mZXJFbGVtcyA9IE5JTDsKKwkvKiBO b3JtYWxpemVkIHJlcXVpcmVkIGF0dHJpYnV0ZXMgYW5kIGV4cHJlc3Npb25zOiAqLworCUJpdG1h cHNldCAgKnJlcXVpcmVkQXJiaXRlckF0dHJzID0gTlVMTDsKKwlMaXN0CSAgICpyZXF1aXJlZEFy Yml0ZXJFbGVtcyA9IE5JTDsKKwlMaXN0CSAgICpyZXF1aXJlZEluZGV4UHJlZEV4cHJzID0gKExp c3QgKikgb25jb25mbGljdC0+YXJiaXRlcldoZXJlOwogCiAJLyogUmVzdWx0cyAqLwogCUxpc3QJ ICAgKnJlc3VsdHMgPSBOSUw7CisJYm9vbAkgICBmb3VuZFZhbGlkID0gZmFsc2U7CiAKIAkvKgog CSAqIFF1aWNrbHkgcmV0dXJuIE5JTCBmb3IgT04gQ09ORkxJQ1QgRE8gTk9USElORyB3aXRob3V0 IGFuIGluZmVyZW5jZQpAQCAtNzU0LDggKzc1Niw4IEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQ bGFubmVySW5mbyAqcm9vdCkKIAogCQlpZiAoIUlzQShlbGVtLT5leHByLCBWYXIpKQogCQl7Ci0J CQkvKiBJZiBub3QgYSBwbGFpbiBWYXIsIGp1c3Qgc2hvdmUgaXQgaW4gaW5mZXJFbGVtcyBmb3Ig bm93ICovCi0JCQlpbmZlckVsZW1zID0gbGFwcGVuZChpbmZlckVsZW1zLCBlbGVtLT5leHByKTsK KwkJCS8qIElmIG5vdCBhIHBsYWluIFZhciwganVzdCBzaG92ZSBpdCBpbiByZXF1aXJlZEFyYml0 ZXJFbGVtcyBmb3Igbm93ICovCisJCQlyZXF1aXJlZEFyYml0ZXJFbGVtcyA9IGxhcHBlbmQocmVx dWlyZWRBcmJpdGVyRWxlbXMsIGVsZW0tPmV4cHIpOwogCQkJY29udGludWU7CiAJCX0KIApAQCAt NzY3LDMwICs3NjksNzYgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290 KQogCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCSBl cnJtc2coIndob2xlIHJvdyB1bmlxdWUgaW5kZXggaW5mZXJlbmNlIHNwZWNpZmljYXRpb25zIGFy ZSBub3Qgc3VwcG9ydGVkIikpKTsKIAotCQlpbmZlckF0dHJzID0gYm1zX2FkZF9tZW1iZXIoaW5m ZXJBdHRycywKKwkJcmVxdWlyZWRBcmJpdGVyQXR0cnMgPSBibXNfYWRkX21lbWJlcihyZXF1aXJl ZEFyYml0ZXJBdHRycywKIAkJCQkJCQkJCWF0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJp YnV0ZU51bWJlcik7CiAJfQogCisJaW5kZXhMaXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVs YXRpb24pOworCiAJLyoKIAkgKiBMb29rdXAgbmFtZWQgY29uc3RyYWludCdzIGluZGV4LiAgVGhp cyBpcyBub3QgaW1tZWRpYXRlbHkgcmV0dXJuZWQKLQkgKiBiZWNhdXNlIHNvbWUgYWRkaXRpb25h bCBzYW5pdHkgY2hlY2tzIGFyZSByZXF1aXJlZC4KKwkgKiBiZWNhdXNlIHNvbWUgYWRkaXRpb25h bCBzYW5pdHkgY2hlY2tzIGFyZSByZXF1aXJlZC4gQWRkaXRpb25hbGx5LCB3ZQorCSAqIG5lZWQg dG8gcHJvY2VzcyBvdGhlciBpbmRleGVzIGFzIHBvdGVudGlhbCBhcmJpdGVycyB0byBhY2NvdW50 IGZvcgorCSAqIGNhc2VzIHdoZXJlIFJFSU5ERVggQ09OQ1VSUkVOVExZIGlzIHByb2Nlc3Npbmcg YW4gaW5kZXggdXNlZCBhcyBhCisJICogbmFtZWQgY29uc3RyYWludC4KIAkgKi8KIAlpZiAob25j b25mbGljdC0+Y29uc3RyYWludCAhPSBJbnZhbGlkT2lkKQogCXsKIAkJaW5kZXhPaWRGcm9tQ29u c3RyYWludCA9IGdldF9jb25zdHJhaW50X2luZGV4KG9uY29uZmxpY3QtPmNvbnN0cmFpbnQpOwog CiAJCWlmIChpbmRleE9pZEZyb21Db25zdHJhaW50ID09IEludmFsaWRPaWQpCisJCXsKIAkJCWVy ZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAot CQkJCQkgZXJybXNnKCJjb25zdHJhaW50IGluIE9OIENPTkZMSUNUIGNsYXVzZSBoYXMgbm8gYXNz b2NpYXRlZCBpbmRleCIpKSk7CisJCQkJCWVycm1zZygiY29uc3RyYWludCBpbiBPTiBDT05GTElD VCBjbGF1c2UgaGFzIG5vIGFzc29jaWF0ZWQgaW5kZXgiKSkpOworCQl9CisKKwkJLyoKKwkJICog RmluZCB0aGUgbmFtZWQgY29uc3RyYWludCBpbmRleCB0byBleHRyYWN0IGl0cyBhdHRyaWJ1dGVz IGFuZCBwcmVkaWNhdGVzLgorCQkgKiBXZSBvcGVuIGFsbCBpbmRleGVzIGluIHRoZSBsb29wIHRv IGF2b2lkIGRlYWRsb2NrIG9mIGNoYW5nZWQgb3JkZXIgb2YgbG9ja3MuCisJCSAqICovCisJCWZv cmVhY2gobCwgaW5kZXhMaXN0KQorCQl7CisJCQlPaWQJCQlpbmRleG9pZCA9IGxmaXJzdF9vaWQo bCk7CisJCQlSZWxhdGlvbglpZHhSZWw7CisJCQlGb3JtX3BnX2luZGV4IGlkeEZvcm07CisJCQlB dHRyTnVtYmVyCW5hdHQ7CisKKwkJCWlkeFJlbCA9IGluZGV4X29wZW4oaW5kZXhvaWQsIHJ0ZS0+ cmVsbG9ja21vZGUpOworCQkJaWR4Rm9ybSA9IGlkeFJlbC0+cmRfaW5kZXg7CisKKwkJCWlmIChp ZHhGb3JtLT5pbmRpc3JlYWR5KQorCQkJeworCQkJCWlmIChpbmRleE9pZEZyb21Db25zdHJhaW50 ID09IGlkeEZvcm0tPmluZGV4cmVsaWQpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBQcmVwYXJl IHJlcXVpcmVtZW50cyBmb3Igb3RoZXIgaW5kZXhlcyB0byBiZSB1c2VkIGFzIGFyYml0ZXIgdG9n ZXRoZXIKKwkJCQkJICogd2l0aCBpbmRleE9pZEZyb21Db25zdHJhaW50LiBJdCBpcyByZXF1aXJl ZCB0byBpbnZvbHZlIGJvdGggZXF1YWxzIGluZGV4ZXMKKwkJCQkJICogaW4gY2FzZSBvZiBSRUlO REVYIENPTkNVUlJFTlRMWS4KKwkJCQkJICovCisJCQkJCWZvciAobmF0dCA9IDA7IG5hdHQgPCBp ZHhGb3JtLT5pbmRua2V5YXR0czsgbmF0dCsrKQorCQkJCQl7CisJCQkJCQlpbnQJCQlhdHRubyA9 IGlkeFJlbC0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbbmF0dF07CisKKwkJCQkJCWlmIChhdHRu byAhPSAwKQorCQkJCQkJCXJlcXVpcmVkQXJiaXRlckF0dHJzID0gYm1zX2FkZF9tZW1iZXIocmVx dWlyZWRBcmJpdGVyQXR0cnMsCisJCQkJCQkJCQkJCQkJCSAgYXR0bm8gLSBGaXJzdExvd0ludmFs aWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJCQkJfQorCQkJCQlyZXF1aXJlZEFyYml0ZXJFbGVt cyA9IFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpZHhSZWwpOworCQkJCQlyZXF1aXJlZElu ZGV4UHJlZEV4cHJzID0gUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShpZHhSZWwpOworCQkJCQkv KiBXZSBhcmUgZG9uZSwgc28sIHF1aXRlIHRoZSBsb29wLiAqLworCQkJCQlpbmRleF9jbG9zZShp ZHhSZWwsIE5vTG9jayk7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWluZGV4X2Nsb3Nl KGlkeFJlbCwgTm9Mb2NrKTsKKwkJfQogCX0KIAogCS8qCiAJICogVXNpbmcgdGhhdCByZXByZXNl bnRhdGlvbiwgaXRlcmF0ZSB0aHJvdWdoIHRoZSBsaXN0IG9mIGluZGV4ZXMgb24gdGhlCiAJICog dGFyZ2V0IHJlbGF0aW9uIHRvIHRyeSBhbmQgZmluZCBhIG1hdGNoCiAJICovCi0JaW5kZXhMaXN0 ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsYXRpb24pOwotCiAJZm9yZWFjaChsLCBpbmRleExp c3QpCiAJewogCQlPaWQJCQlpbmRleG9pZCA9IGxmaXJzdF9vaWQobCk7CkBAIC04MTMsNyArODYx LDEzIEBAIGluZmVyX2FyYml0ZXJfaW5kZXhlcyhQbGFubmVySW5mbyAqcm9vdCkKIAkJaWR4UmVs ID0gaW5kZXhfb3BlbihpbmRleG9pZCwgcnRlLT5yZWxsb2NrbW9kZSk7CiAJCWlkeEZvcm0gPSBp ZHhSZWwtPnJkX2luZGV4OwogCi0JCWlmICghaWR4Rm9ybS0+aW5kaXN2YWxpZCkKKwkJLyoKKwkJ ICogV2UgbmVlZCB0byBjb25zaWRlciBib3RoIGluZGlzdmFsaWQgYW5kIGluZGlzcmVhZHkgaW5k ZXhlcyBiZWNhdXNlCisJCSAqIHRoZW0gbWF5IGJlY29tZSBpbmRpc3ZhbGlkIGJlZm9yZSBleGVj dXRpb24gcGhhc2UuIEl0IGlzIHJlcXVpcmVkCisJCSAqIHRvIGtlZXAgc2V0IG9mIGluZGV4ZXMg dXNlZCBhcyBhcmJpdGVyIHRvIGJlIHRoZSBzYW1lIGZvciBhbGwKKwkJICogY29uY3VycmVudCB0 cmFuc2FjdGlvbnMuCisJCSAqLworCQlpZiAoIWlkeEZvcm0tPmluZGlzcmVhZHkpCiAJCQlnb3Rv IG5leHQ7CiAKIAkJLyoKQEAgLTgzMywyNyArODg3LDIzIEBAIGluZmVyX2FyYml0ZXJfaW5kZXhl cyhQbGFubmVySW5mbyAqcm9vdCkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJCQkgZXJybXNnKCJPTiBDT05GTElDVCBE TyBVUERBVEUgbm90IHN1cHBvcnRlZCB3aXRoIGV4Y2x1c2lvbiBjb25zdHJhaW50cyIpKSk7Ci0K LQkJCXJlc3VsdHMgPSBsYXBwZW5kX29pZChyZXN1bHRzLCBpZHhGb3JtLT5pbmRleHJlbGlkKTsK LQkJCWxpc3RfZnJlZShpbmRleExpc3QpOwotCQkJaW5kZXhfY2xvc2UoaWR4UmVsLCBOb0xvY2sp OwotCQkJdGFibGVfY2xvc2UocmVsYXRpb24sIE5vTG9jayk7Ci0JCQlyZXR1cm4gcmVzdWx0czsK KwkJCWdvdG8gZm91bmQ7CiAJCX0KIAkJZWxzZSBpZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWludCAh PSBJbnZhbGlkT2lkKQogCQl7Ci0JCQkvKiBObyBwb2ludCBpbiBmdXJ0aGVyIHdvcmsgZm9yIGlu ZGV4IGluIG5hbWVkIGNvbnN0cmFpbnQgY2FzZSAqLwotCQkJZ290byBuZXh0OworCQkJLyogSW4g dGhlIGNhc2Ugb2YgIk9OIGNvbnN0cmFpbnRfbmFtZSBETyBVUERBVEUiIHdlIG5lZWQgdG8gc2tp cCBub24tdW5pcXVlIGNhbmRpZGF0ZXMuICovCisJCQlpZiAoIWlkeEZvcm0tPmluZGlzdW5pcXVl ICYmIG9uY29uZmxpY3QtPmFjdGlvbiA9PSBPTkNPTkZMSUNUX1VQREFURSkKKwkJCQlnb3RvIG5l eHQ7CisJCX0gIGVsc2UgeworCQkJLyoKKwkJCSAqIE9ubHkgY29uc2lkZXJpbmcgY29udmVudGlv bmFsIGluZmVyZW5jZSBhdCB0aGlzIHBvaW50IChub3QgbmFtZWQKKwkJCSAqIGNvbnN0cmFpbnRz KSwgc28gaW5kZXggdW5kZXIgY29uc2lkZXJhdGlvbiBjYW4gYmUgaW1tZWRpYXRlbHkKKwkJCSAq IHNraXBwZWQgaWYgaXQncyBub3QgdW5pcXVlCisJCQkgKi8KKwkJCWlmICghaWR4Rm9ybS0+aW5k aXN1bmlxdWUpCisJCQkJZ290byBuZXh0OwogCQl9CiAKLQkJLyoKLQkJICogT25seSBjb25zaWRl cmluZyBjb252ZW50aW9uYWwgaW5mZXJlbmNlIGF0IHRoaXMgcG9pbnQgKG5vdCBuYW1lZAotCQkg KiBjb25zdHJhaW50cyksIHNvIGluZGV4IHVuZGVyIGNvbnNpZGVyYXRpb24gY2FuIGJlIGltbWVk aWF0ZWx5Ci0JCSAqIHNraXBwZWQgaWYgaXQncyBub3QgdW5pcXVlCi0JCSAqLwotCQlpZiAoIWlk eEZvcm0tPmluZGlzdW5pcXVlKQotCQkJZ290byBuZXh0OwotCiAJCS8qCiAJCSAqIFNvLWNhbGxl ZCB1bmlxdWUgY29uc3RyYWludHMgd2l0aCBXSVRIT1VUIE9WRVJMQVBTIGFyZSByZWFsbHkKIAkJ ICogZXhjbHVzaW9uIGNvbnN0cmFpbnRzLCBzbyBza2lwIHRob3NlIHRvby4KQEAgLTg3Myw3ICs5 MjMsNyBAQCBpbmZlcl9hcmJpdGVyX2luZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJCX0KIAog CQkvKiBOb24tZXhwcmVzc2lvbiBhdHRyaWJ1dGVzIChpZiBhbnkpIG11c3QgbWF0Y2ggKi8KLQkJ aWYgKCFibXNfZXF1YWwoaW5kZXhlZEF0dHJzLCBpbmZlckF0dHJzKSkKKwkJaWYgKCFibXNfZXF1 YWwoaW5kZXhlZEF0dHJzLCByZXF1aXJlZEFyYml0ZXJBdHRycykpCiAJCQlnb3RvIG5leHQ7CiAK IAkJLyogRXhwcmVzc2lvbiBhdHRyaWJ1dGVzIChpZiBhbnkpIG11c3QgbWF0Y2ggKi8KQEAgLTg4 MSw2ICs5MzEsMTAgQEAgaW5mZXJfYXJiaXRlcl9pbmRleGVzKFBsYW5uZXJJbmZvICpyb290KQog CQlpZiAoaWR4RXhwcnMgJiYgdmFybm8gIT0gMSkKIAkJCUNoYW5nZVZhck5vZGVzKChOb2RlICop IGlkeEV4cHJzLCAxLCB2YXJubywgMCk7CiAKKwkJLyoKKwkJICogSWYgYXJiaXRlckVsZW1zIGFy ZSBwcmVzZW50LCBjaGVjayB0aGVtLiBJZiBuYW1lID5jb25zdHJhaW50IGlzCisJCSAqIHByZXNl bnQgYXJiaXRlckVsZW1zID09IE5JTC4KKwkJICovCiAJCWZvcmVhY2goZWwsIG9uY29uZmxpY3Qt PmFyYml0ZXJFbGVtcykKIAkJewogCQkJSW5mZXJlbmNlRWxlbSAqZWxlbSA9IChJbmZlcmVuY2VF bGVtICopIGxmaXJzdChlbCk7CkBAIC05MTgsMjcgKzk3MiwzNSBAQCBpbmZlcl9hcmJpdGVyX2lu ZGV4ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJCX0KIAogCQkvKgotCQkgKiBOb3cgdGhhdCBhbGwg aW5mZXJlbmNlIGVsZW1lbnRzIHdlcmUgbWF0Y2hlZCwgZW5zdXJlIHRoYXQgdGhlCisJCSAqIElu IGNhc2Ugb2YgdGhlIGNvbnZlbnRpb25hbCBpbmZlcmVuY2UgaW52b2x2ZWQgZW5zdXJlIHRoYXQg dGhlCiAJCSAqIGV4cHJlc3Npb24gZWxlbWVudHMgZnJvbSBpbmZlcmVuY2UgY2xhdXNlIGFyZSBu b3QgbWlzc2luZyBhbnkKIAkJICogY2F0YWxvZ2VkIGV4cHJlc3Npb25zLiAgVGhpcyBkb2VzIHRo ZSByaWdodCB0aGluZyB3aGVuIHVuaXF1ZQogCQkgKiBpbmRleGVzIHJlZHVuZGFudGx5IHJlcGVh dCB0aGUgc2FtZSBhdHRyaWJ1dGUsIG9yIGlmIGF0dHJpYnV0ZXMKIAkJICogcmVkdW5kYW50bHkg YXBwZWFyIG11bHRpcGxlIHRpbWVzIHdpdGhpbiBhbiBpbmZlcmVuY2UgY2xhdXNlLgorCQkgKgor CQkgKiBJbiB0aGUgY2FzZSBvZiBuYW1lZCBjb25zdHJhaW50IGVuc3VyZSBjYW5kaWRhdGUgaGFz IGVxdWFsIHNldAorCQkgKiBvZiBleHByZXNzaW9ucyBhcyB0aGUgbmFtZWQgY29uc3RyYWludCBp bmRleC4KIAkJICovCi0JCWlmIChsaXN0X2RpZmZlcmVuY2UoaWR4RXhwcnMsIGluZmVyRWxlbXMp ICE9IE5JTCkKKwkJaWYgKGxpc3RfZGlmZmVyZW5jZShpZHhFeHBycywgcmVxdWlyZWRBcmJpdGVy RWxlbXMpICE9IE5JTCkKIAkJCWdvdG8gbmV4dDsKIAotCQkvKgotCQkgKiBJZiBpdCdzIGEgcGFy dGlhbCBpbmRleCwgaXRzIHByZWRpY2F0ZSBtdXN0IGJlIGltcGxpZWQgYnkgdGhlIE9OCi0JCSAq IENPTkZMSUNUJ3MgV0hFUkUgY2xhdXNlLgotCQkgKi8KIAkJcHJlZEV4cHJzID0gUmVsYXRpb25H ZXRJbmRleFByZWRpY2F0ZShpZHhSZWwpOwogCQlpZiAocHJlZEV4cHJzICYmIHZhcm5vICE9IDEp CiAJCQlDaGFuZ2VWYXJOb2RlcygoTm9kZSAqKSBwcmVkRXhwcnMsIDEsIHZhcm5vLCAwKTsKIAot CQlpZiAoIXByZWRpY2F0ZV9pbXBsaWVkX2J5KHByZWRFeHBycywgKExpc3QgKikgb25jb25mbGlj dC0+YXJiaXRlcldoZXJlLCBmYWxzZSkpCisJCS8qCisJCSAqIElmIGl0J3MgYSBwYXJ0aWFsIGlu ZGV4IGFuZCBjb252ZW50aW9uYWwgaW5mZXJlbmNlLCBpdHMgcHJlZGljYXRlIG11c3QgYmUgaW1w bGllZAorCQkgKiBieSB0aGUgT04gQ09ORkxJQ1QncyBXSEVSRSBjbGF1c2UuCisJCSAqLworCQlp ZiAoaW5kZXhPaWRGcm9tQ29uc3RyYWludCA9PSBJbnZhbGlkT2lkICYmICFwcmVkaWNhdGVfaW1w bGllZF9ieShwcmVkRXhwcnMsIHJlcXVpcmVkSW5kZXhQcmVkRXhwcnMsIGZhbHNlKSkKKwkJCWdv dG8gbmV4dDsKKwkJLyogSWYgaXQncyBhIHBhcnRpYWwgaW5kZXggYW5kIG5hbWVkIGNvbnN0cmFp bnQgcHJlZGljYXRlcyBtdXN0IGJlIGVxdWFsLiAqLworCQlpZiAoaW5kZXhPaWRGcm9tQ29uc3Ry YWludCAhPSBJbnZhbGlkT2lkICYmIGxpc3RfZGlmZmVyZW5jZShwcmVkRXhwcnMsIHJlcXVpcmVk SW5kZXhQcmVkRXhwcnMpICE9IE5JTCkKIAkJCWdvdG8gbmV4dDsKIAorZm91bmQ6CiAJCXJlc3Vs dHMgPSBsYXBwZW5kX29pZChyZXN1bHRzLCBpZHhGb3JtLT5pbmRleHJlbGlkKTsKKwkJZm91bmRW YWxpZCB8PSBpZHhGb3JtLT5pbmRpc3ZhbGlkOwogbmV4dDoKIAkJaW5kZXhfY2xvc2UoaWR4UmVs LCBOb0xvY2spOwogCX0KQEAgLTk0Niw3ICsxMDA4LDggQEAgbmV4dDoKIAlsaXN0X2ZyZWUoaW5k ZXhMaXN0KTsKIAl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKIAotCWlmIChyZXN1bHRz ID09IE5JTCkKKwkvKiBJdCBpcyByZXF1aXJlZCB0byBoYXZlIGF0IGxlYXN0IG9uZSBpbmRpc3Zh bGlkIGluZGV4IGR1cmluZyB0aGUgcGxhbm5pbmcuICovCisJaWYgKHJlc3VsdHMgPT0gTklMIHx8 ICFmb3VuZFZhbGlkKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9DT0xVTU5fUkVGRVJFTkNFKSwKIAkJCQkgZXJybXNnKCJ0aGVyZSBpcyBubyB1bmlxdWUg b3IgZXhjbHVzaW9uIGNvbnN0cmFpbnQgbWF0Y2hpbmcgdGhlIE9OIENPTkZMSUNUIHNwZWNpZmlj YXRpb24iKSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMg Yi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYwppbmRleCA4ZjE1MDhiMWVlMi4uM2Qw MThjM2ExZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCkBAIC02NCw2ICs2NCw3IEBACiAj aW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAj aW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9p bnQuaCIKIAogCiAvKgpAQCAtMzg4LDYgKzM4OSw3IEBAIEludmFsaWRhdGVDYXRhbG9nU25hcHNo b3Qodm9pZCkKIAkJcGFpcmluZ2hlYXBfcmVtb3ZlKCZSZWdpc3RlcmVkU25hcHNob3RzLCAmQ2F0 YWxvZ1NuYXBzaG90LT5waF9ub2RlKTsKIAkJQ2F0YWxvZ1NuYXBzaG90ID0gTlVMTDsKIAkJU25h cHNob3RSZXNldFhtaW4oKTsKKwkJSU5KRUNUSU9OX1BPSU5UKCJpbnZhbGlkYXRlX2NhdGFsb2df c25hcHNob3RfZW5kIik7CiAJfQogfQogCi0tIAoyLjQzLjAKCg== --000000000000813841062b2863c9--