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 1tqgev-008s5N-Fw for pgsql-hackers@arkaria.postgresql.org; Fri, 07 Mar 2025 22:59:14 +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 1tqget-001ewP-GQ for pgsql-hackers@arkaria.postgresql.org; Fri, 07 Mar 2025 22:59:11 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tqges-001euW-LN for pgsql-hackers@lists.postgresql.org; Fri, 07 Mar 2025 22:59:11 +0000 Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tqgeo-001aCI-0e for pgsql-hackers@postgresql.org; Fri, 07 Mar 2025 22:59:10 +0000 Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-ac25520a289so210529966b.3 for ; Fri, 07 Mar 2025 14:59:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741388346; x=1741993146; 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=8UlMzsm1S/fzPwnryUEQ151GDTB7D9pPSbw4GdSjo2U=; b=GfswY/+h4Eh7QahGqYPZeXJ7yPOBqKHFjoXxEzKXyVKk8zVrBcvREN3ZdwA8pa+nvx qMWrFRTGeCE/tQL4bsg9hIFqMKivmIbscuc71d8e7Yqw9uf8+4PinHvahA0mR/4+JTif N7lKD8A0I7E11Ffynwpva1op3N6CYcmL5HhBxOJhnCU6e9S6DOD1GNkRL1iEDhMTLvIT z2LMoGfdZbp5npGCmuM6zGZFs7piVLJND+C8RF2rcmMwJz0ZXuzKdbp9mlHHnq3LKny8 +VJFTSdt45VU4+rDvrjdD5CNn7h9ZzAGTw6KwhFRF/zTuQd4yM9dXQI6poGcn2/p5lRN AikQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741388346; x=1741993146; 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=8UlMzsm1S/fzPwnryUEQ151GDTB7D9pPSbw4GdSjo2U=; b=n9cWeoiB8tZmvt2tde36q+irPG5meGZadOaOIQRBX7gWtWMoKdW3AEJIbMYuX816h7 r19FYQYh9ngujaedUY44VCvUSc1N2VZheVSvktoyqWG838vk1567RanS7jDmXyjh9zmZ q2hnbBfcRH1XiQh1TNuvDMrg8eLoXCrmE4JcjVAO6PzFHpukqug9P7RarRhsx+KDPwXL uxrc80vHmg+gEbwrS1Cq7pYjn9Vroaz3TkvfTAXqPSpWrx/sbTH5m7ANobx1T/l6Y4Dg ZBESohVc9cK5bQ2ZZ5guWYv/k2n43x6xL3b/hGqXd0vEiKAZ9aFl0ZBhfW57YWwV+ZHB pD2A== X-Forwarded-Encrypted: i=1; AJvYcCXWip9naPV3FFrVgAYz5qc9bRM+1tSaz5mJtwo2RnQIExBveKXBfD8Q4rOzyKn9yaIIhIicfBMmm4Ki28pi@postgresql.org X-Gm-Message-State: AOJu0YwGpble4VVO/XAQ94GyoSNfy1l4jtC8KM73+1dbPiV0jbNa4y2z wZFVPQCDGSp5rZYlL8O3fAiE3AxgSEDo90dF20OHt4bR9nkjgU7AK1relDJ+CvkwOsl5m+e8cW8 acWnanDSae1qE61DEajTJAb3I8bmWDQ== X-Gm-Gg: ASbGncv7J3T9UxBc64dG9UNedJab9/hdOvtKCTJaQD82IEAHW7VYE/8xIIPDX7UPV6i 6Fid5MfjXOnCY2ME1Q3MAJH13VvCugrznJmXxOkOPp1clsa5iZVEQp6d6d5MAHgxy4y39yHZk1Q rWJr0cg/0d7IeoJsTcIVl0GFfv2A== X-Google-Smtp-Source: AGHT+IGdmOWakByOwsmbn5BOvU2DNhPBMOBJMCSOUYEKT4BjjBeL4jRSxuSbV3bwufkyLxCRZ/de133XU32/BoJ4rZM= X-Received: by 2002:a17:907:3f9b:b0:abf:4fc6:e87d with SMTP id a640c23a62f3a-ac25264dac2mr618504666b.15.1741388346183; Fri, 07 Mar 2025 14:59:06 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Michail Nikolaev Date: Fri, 7 Mar 2025 23:58:51 +0100 X-Gm-Features: AQ5f1Jr-yGdodhuNqWi8ubjXhWbyQOApECUK0L6JeVCCaOK4Pfnf3rLnYZTH6O4 Message-ID: Subject: Re: Revisiting {CREATE INDEX, REINDEX} CONCURRENTLY improvements To: Mihail Nikalayeu Cc: alvherre@alvh.no-ip.org, Michael Paquier , PostgreSQL Hackers , Andrey Borodin , Melanie Plageman , Matthias van de Meent Content-Type: multipart/mixed; boundary="000000000000caf8fd062fc891e1" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000caf8fd062fc891e1 Content-Type: multipart/alternative; boundary="000000000000caf8fb062fc891df" --000000000000caf8fb062fc891df Content-Type: text/plain; charset="UTF-8" Hello, everyone! Rebased + new parallel GIN builds supported. Best regards, MIkhail. > --000000000000caf8fb062fc891df Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello, everyone!

Rebased=C2=A0+ new parallel GIN builds supported.

Best regards,
MIkhail.
--000000000000caf8fb062fc891df-- --000000000000caf8fd062fc891e1 Content-Type: application/octet-stream; name="v16-0009-Concurrently-built-index-validation-uses-fresh-s.patch" Content-Disposition: attachment; filename="v16-0009-Concurrently-built-index-validation-uses-fresh-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7zd30oa3 RnJvbSBlNTc5YmZiMmRmN2JmYTBjODdkNzIxZTA1YzY4YzgwMTM5MTVkNDQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyNSBKYW4gMjAyNSAxNzoyMToyOSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE2IDA5 LzEyXSBDb25jdXJyZW50bHkgYnVpbHQgaW5kZXggdmFsaWRhdGlvbiB1c2VzIGZyZXNoCiBzbmFw c2hvdHMKClRoaXMgY29tbWl0IG1vZGlmaWVzIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MgZm9yIGNv bmN1cnJlbnRseSBidWlsdCBpbmRleGVzIHRvIHVzZSBmcmVzaCBzbmFwc2hvdHMgaW5zdGVhZCBv ZiBhIHNpbmdsZSByZWZlcmVuY2Ugc25hcHNob3QuCgpUaGUgcHJldmlvdXMgYXBwcm9hY2ggb2Yg dXNpbmcgYSBzaW5nbGUgcmVmZXJlbmNlIHNuYXBzaG90IGNvdWxkIGxlYWQgdG8gaXNzdWVzIHdp dGggeG1pbiBwcm9wYWdhdGlvbi4gU3BlY2lmaWNhbGx5LCBpZiB0aGUgaW5kZXggYnVpbGQgdG9v ayBhIGxvbmcgdGltZSwgdGhlIHJlZmVyZW5jZSBzbmFwc2hvdCdzIHhtaW4gY291bGQgYmVjb21l IG91dGRhdGVkLCBjYXVzaW5nIHRoZSBpbmRleCB0byBtaXNzIHR1cGxlcyB0aGF0IHdlcmUgZGVs ZXRlZCBieSB0cmFuc2FjdGlvbnMgdGhhdCBjb21taXR0ZWQgYWZ0ZXIgdGhlIHJlZmVyZW5jZSBz bmFwc2hvdCB3YXMgdGFrZW4uCgpUbyBhZGRyZXNzIHRoaXMsIHRoZSB2YWxpZGF0aW9uIHByb2Nl c3Mgbm93IHBlcmlvZGljYWxseSByZXBsYWNlcyB0aGUgc25hcHNob3Qgd2l0aCBhIG5ld2VyIG9u ZS4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGluZGV4J3MgeG1pbiBpcyBrZXB0IHVwLXRvLWRhdGUg YW5kIHRoYXQgYWxsIHJlbGV2YW50IHR1cGxlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIGluZGV4Lgot LS0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgICAgICAgfCAxMSArKystCiBk b2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCAgICAgICAgICAgIHwgMTEgKystLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyB8IDc3ICsrKysrKysrKysrKysrKy0t LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICB8ICAyICst CiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jICAgIHwgMTIgKysrLQogc3Jj L2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICB8IDE0ICsrKy0tCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL2Fj Y2Vzcy90cmFuc2FtLmggICAgICAgICAgICAgfCAxNSArKysrKwogOCBmaWxlcyBjaGFuZ2VkLCA5 NyBpbnNlcnRpb25zKCspLCA0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfaW5kZXgu c2dtbAppbmRleCBlMzMzNDVmNmEzNC4uNTQ1NjYyMjNjYjAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf aW5kZXguc2dtbApAQCAtODY4LDkgKzg2OCwxNCBAQCBJbmRleGVzOgogICA8L3BhcmE+CiAKICAg PHBhcmE+Ci0gICBMaWtlIGFueSBsb25nLXJ1bm5pbmcgdHJhbnNhY3Rpb24sIDxjb21tYW5kPkNS RUFURSBJTkRFWDwvY29tbWFuZD4gb24gYQotICAgdGFibGUgY2FuIGFmZmVjdCB3aGljaCB0dXBs ZXMgY2FuIGJlIHJlbW92ZWQgYnkgY29uY3VycmVudAotICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21t YW5kPiBvbiBhbnkgb3RoZXIgdGFibGUuCisgICBEdWUgdG8gdGhlIGltcHJvdmVkIGltcGxlbWVu dGF0aW9uIHVzaW5nIHBlcmlvZGljYWxseSByZWZyZXNoZWQgc25hcHNob3RzIGFuZAorICAgYXV4 aWxpYXJ5IGluZGV4ZXMsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIGhhdmUgbWluaW1hbCBpbXBh Y3Qgb24gY29uY3VycmVudAorICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBvcGVyYXRpb25z LiBUaGUgc3lzdGVtIGF1dG9tYXRpY2FsbHkgYWR2YW5jZXMgaXRzCisgICBpbnRlcm5hbCB0cmFu c2FjdGlvbiBob3Jpem9uIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcywgYWxsb3dpbmcKKyAgIDxj b21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gdG8gcmVtb3ZlIGRlYWQgdHVwbGVzIG9uIG90aGVyIHRh YmxlcyB3aXRob3V0CisgICBoYXZpbmcgdG8gd2FpdCBmb3IgdGhlIGVudGlyZSBpbmRleCBidWls ZCB0byBjb21wbGV0ZS4gT25seSBkdXJpbmcgdmVyeSBicmllZgorICAgcGVyaW9kcyB3aGVuIHNu YXBzaG90cyBhcmUgYmVpbmcgcmVmcmVzaGVkIG1pZ2h0IHRoZXJlIGJlIGFueSB0ZW1wb3Jhcnkg ZWZmZWN0CisgICBvbiBjb25jdXJyZW50IDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gb3BlcmF0 aW9ucy4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9yZWluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbAppbmRleCA2YTA1 NjIwYmQ2Ny4uNjRjNjMzZTAzOTggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRl eC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCkBAIC00OTUsMTAgKzQ5 NSwxMyBAQCBJbmRleGVzOgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KLSAgICBMaWtlIGFueSBs b25nLXJ1bm5pbmcgdHJhbnNhY3Rpb24sIDxjb21tYW5kPlJFSU5ERVg8L2NvbW1hbmQ+IG9uIGEg dGFibGUKLSAgICBjYW4gYWZmZWN0IHdoaWNoIHR1cGxlcyBjYW4gYmUgcmVtb3ZlZCBieSBjb25j dXJyZW50Ci0gICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBvbiBhbnkgb3RoZXIgdGFibGUu Ci0gICA8L3BhcmE+CisgICAgPGNvbW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+ IGhhcyBtaW5pbWFsCisgICAgaW1wYWN0IG9uIHdoaWNoIHR1cGxlcyBjYW4gYmUgcmVtb3ZlZCBi eSBjb25jdXJyZW50IDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4KKyAgICBvcGVyYXRpb25zIG9u IG90aGVyIHRhYmxlcy4gVGhpcyBpcyBhY2hpZXZlZCB0aHJvdWdoIHBlcmlvZGljIHNuYXBzaG90 CisgICAgcmVmcmVzaGVzIGFuZCB0aGUgdXNlIG9mIGF1eGlsaWFyeSBpbmRleGVzIGR1cmluZyB0 aGUgcmVidWlsZCBwcm9jZXNzLAorICAgIGFsbG93aW5nIHRoZSBzeXN0ZW0gdG8gYWR2YW5jZSBp dHMgdHJhbnNhY3Rpb24gaG9yaXpvbiByZWd1bGFybHkgcmF0aGVyIHRoYW4KKyAgICBtYWludGFp bmluZyBhIHNpbmdsZSBsb25nLXJ1bm5pbmcgc25hcHNob3QuCisgIDwvcGFyYT4KIAogICAgPHBh cmE+CiAgICAgPGNvbW1hbmQ+UkVJTkRFWCBTWVNURU08L2NvbW1hbmQ+IGRvZXMgbm90IHN1cHBv cnQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDJlM2U4YTY3 OGM5Li5hNTk2ZmM5OTIwYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxl ci5jCkBAIC0xNzkxLDggKzE3OTEsOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKi8KIHN0YXRpYyBpbnQKIGhlYXBhbV9pbmRleF92YWxp ZGF0ZV90dXBsZXNvcnRfZGlmZmVyZW5jZShUdXBsZXNvcnRzdGF0ZSAgKm1haW4sCi0JCQkJCQkJ CQkJICAgVHVwbGVzb3J0c3RhdGUgICphdXgsCi0JCQkJCQkJCQkJICAgVHVwbGVzdG9yZXN0YXRl ICpzdG9yZSkKKwkJCQkJCQkJCSAgVHVwbGVzb3J0c3RhdGUgICphdXgsCisJCQkJCQkJCQkgIFR1 cGxlc3RvcmVzdGF0ZSAqc3RvcmUpCiB7CiAJaW50CQkJCW51bSA9IDA7CiAJLyogc3RhdGUgdmFy aWFibGVzIGZvciB0aGUgbWVyZ2UgKi8KQEAgLTIwNDgsNyArMjA0OCw4IEBAIGhlYXBhbV9pbmRl eF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlFeHByQ29udGV4dAkJKmVj b250ZXh0OwogCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0 ZWd5KEJBU19CVUxLUkVBRCk7CiAKLQlpbnQJCQkJbnVtX3RvX2NoZWNrOworCWludAkJCQludW1f dG9fY2hlY2ssCisJCQkJCXBhZ2VfcmVhZF9jb3VudGVyID0gMTsgLyogc2V0IHRvIDEgdG8gc2tp cCBzbmFwc2hvdCByZXNlcnQgYXQgc3RhcnQgKi8KIAlUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc19m b3JfY2hlY2s7CiAJVmFsaWRhdGVJbmRleFNjYW5TdGF0ZSBjYWxsYmFja19wcml2YXRlX2RhdGE7 CiAKQEAgLTIwNTksOSArMjA2MCwzNSBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAJLyogVXNlIDEwJSBvZiBtZW1vcnkgZm9yIHR1cGxlIHN0b3Jl LiAqLwogCWludAkJc3RvcmVfd29ya19tZW1fcGFydCA9IG1haW50ZW5hbmNlX3dvcmtfbWVtIC8g MTA7CiAKKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwor CXR1cGxlc19mb3JfY2hlY2sgPSAgdHVwbGVzdG9yZV9iZWdpbl9kYXR1bShJTlQ4T0lELCBmYWxz ZSwgZmFsc2UsIHN0b3JlX3dvcmtfbWVtX3BhcnQpOworCisJUG9wQWN0aXZlU25hcHNob3QoKTsK KwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisKKwlBc3NlcnQoIUhhdmVSZWdpc3RlcmVk T3JBY3RpdmVTbmFwc2hvdCgpKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOworCiAJLyoKLQkgKiBOb3cgdGFrZSB0aGUgc25hcHNob3QgdGhhdCB3aWxsIGJl IHVzZWQgYnkgdG8gZmlsdGVyIGNhbmRpZGF0ZQotCSAqIHR1cGxlcy4KKwkgKiBzYW5pdHkgY2hl Y2tzCisJICovCisJQXNzZXJ0KE9pZElzVmFsaWQoaW5kZXhSZWxhdGlvbi0+cmRfcmVsLT5yZWxh bSkpOworCisJbnVtX3RvX2NoZWNrID0gaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3R1cGxlc29ydF9k aWZmZXJlbmNlKHN0YXRlLT50dXBsZXNvcnQsCisJCQkJCQkJCQkJCQkJCQkgIGF1eFN0YXRlLT50 dXBsZXNvcnQsCisJCQkJCQkJCQkJCQkJCQkgIHR1cGxlc19mb3JfY2hlY2spOworCisJLyogSXQg aXMgb3VyIHJlc3BvbnNpYmlsaXR5IHRvIHNsb2UgdHVwbGUgc29ydCBhcyBmYXN0IGFzIHdlIGNh biAqLworCXR1cGxlc29ydF9lbmQoc3RhdGUtPnR1cGxlc29ydCk7CisJdHVwbGVzb3J0X2VuZChh dXhTdGF0ZS0+dHVwbGVzb3J0KTsKKworCXN0YXRlLT50dXBsZXNvcnQgPSBhdXhTdGF0ZS0+dHVw bGVzb3J0ID0gTlVMTDsKKworCS8qCisJICogTm93IHRha2UgdGhlIGZpcnN0IHNuYXBzaG90IHRo YXQgd2lsbCBiZSB1c2VkIGJ5IHRvIGZpbHRlciBjYW5kaWRhdGUKKwkgKiB0dXBsZXMuIFdlIGFy ZSBnb2luZyB0byByZXBsYWNlIGl0IGJ5IG5ld2VyIHNuYXBzaG90IGV2ZXJ5IHNvIG9mdGVuCisJ ICogdG8gcHJvcGFnYXRlIGhvcml6b24uCiAJICoKIAkgKiBCZXdhcmUhICBUaGVyZSBtaWdodCBz dGlsbCBiZSBzbmFwc2hvdHMgaW4gdXNlIHRoYXQgdHJlYXQgc29tZSB0cmFuc2FjdGlvbgogCSAq IGFzIGluLXByb2dyZXNzIHRoYXQgb3VyIHRlbXBvcmFyeSBzbmFwc2hvdCB0cmVhdHMgYXMgY29t bWl0dGVkLgpAQCAtMjA3NywzMyArMjEwNCwxMCBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICogV2UgYWxzbyBzZXQgQWN0aXZlU25hcHNob3Qg dG8gdGhpcyBzbmFwLCBzaW5jZSBmdW5jdGlvbnMgaW4gaW5kZXhlcyBtYXkKIAkgKiBuZWVkIGEg c25hcHNob3QuCiAJICovCi0Jc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0 aW9uU25hcHNob3QoKSk7CisJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNu YXBzaG90KCkpOwogCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CiAJbGltaXRYbWluID0g c25hcHNob3QtPnhtaW47CiAKLQkvKgotCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZv ciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwotCSAqIGl0ZW0gcG9pbnRl cnMuICBUaGlzIGNhbiBiZSBzaWduaWZpY2FudGx5IGZhc3RlciwgcHJpbWFyaWx5IGJlY2F1c2Ug VElECi0JICogaXMgYSBwYXNzLWJ5LXJlZmVyZW5jZSB0eXBlIG9uIGFsbCBwbGF0Zm9ybXMsIHdo ZXJlYXMgaW50OCBpcwotCSAqIHBhc3MtYnktdmFsdWUgb24gbW9zdCBwbGF0Zm9ybXMuCi0JICov Ci0JdHVwbGVzX2Zvcl9jaGVjayA9ICB0dXBsZXN0b3JlX2JlZ2luX2RhdHVtKElOVDhPSUQsIGZh bHNlLCBmYWxzZSwgc3RvcmVfd29ya19tZW1fcGFydCk7Ci0KLQkvKgotCSAqIHNhbml0eSBjaGVj a3MKLQkgKi8KLQlBc3NlcnQoT2lkSXNWYWxpZChpbmRleFJlbGF0aW9uLT5yZF9yZWwtPnJlbGFt KSk7Ci0KLQludW1fdG9fY2hlY2sgPSBoZWFwYW1faW5kZXhfdmFsaWRhdGVfdHVwbGVzb3J0X2Rp ZmZlcmVuY2Uoc3RhdGUtPnR1cGxlc29ydCwKLQkJCQkJCQkJCQkJCQkJIGF1eFN0YXRlLT50dXBs ZXNvcnQsCi0JCQkJCQkJCQkJCQkJCSB0dXBsZXNfZm9yX2NoZWNrKTsKLQotCS8qIEl0IGlzIG91 ciByZXNwb25zaWJpbGl0eSB0byBzbG9lIHR1cGxlIHNvcnQgYXMgZmFzdCBhcyB3ZSBjYW4gKi8K LQl0dXBsZXNvcnRfZW5kKHN0YXRlLT50dXBsZXNvcnQpOwotCXR1cGxlc29ydF9lbmQoYXV4U3Rh dGUtPnR1cGxlc29ydCk7Ci0KLQlzdGF0ZS0+dHVwbGVzb3J0ID0gYXV4U3RhdGUtPnR1cGxlc29y dCA9IE5VTEw7Ci0KIAllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7CiAJZWNvbnRleHQg PSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CiAJc2xvdCA9IE1ha2VTaW5nbGVUdXBs ZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKGhlYXBSZWxhdGlvbiksCkBAIC0yMTQwLDYgKzIx NDQsNyBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAKIAkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAkJYmxvY2tfbnVtYmVy ID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmKTsKKwkJcGFnZV9yZWFkX2NvdW50ZXIrKzsKIAog CQlpID0gMDsKIAkJd2hpbGUgKChvZmYgPSB0dXBsZXNbaV0pICE9IEludmFsaWRPZmZzZXROdW1i ZXIpCkBAIC0yMTk0LDYgKzIxOTksMjAgQEAgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCQl9CiAKIAkJUmVsZWFzZUJ1ZmZlcihidWYpOworCisJCWlm IChwYWdlX3JlYWRfY291bnRlciAlIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFID09IDAp CisJCXsKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25h cHNob3QpOworCQkJLyogdG8gbWFrZSBzdXJlIHdlIHByb3BhZ2F0ZSB4bWluICovCisJCQlJbnZh bGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KE15UHJvYy0+eG1pbikpOworCisJCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0 ZXN0U25hcHNob3QoKSk7CisJCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCQkJLyog eG1pbiBzaG91bGQgbm90IGdvIGJhY2t3YXJkcywgYnV0IGp1c3QgZm9yIHRoZSBjYXNlKi8KKwkJ CWxpbWl0WG1pbiA9IFRyYW5zYWN0aW9uSWROZXdlcihsaW1pdFhtaW4sIHNuYXBzaG90LT54bWlu KTsKKwkJfQogCX0KIAogCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IGY3OTE0ZWJiM2QwLi5iYjRlMGZiYjY3NSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTQ0NCw3ICs0NDQsNyBAQCBfYnRf c3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsCiAJICogZGVhZCB0dXBsZXMpIHdvbid0IGdldCB2ZXJ5IGZ1bGwsIHNv IHdlIGdpdmUgaXQgb25seSB3b3JrX21lbS4KIAkgKgogCSAqIEluIGNhc2Ugb2YgY29uY3VycmVu dCBidWlsZCBkZWFkIHR1cGxlcyBhcmUgbm90IG5lZWQgdG8gYmUgcHV0IGludG8gaW5kZXgKLQkg KiBzaW5jZSB3ZSB3YWl0IGZvciBhbGwgc25hcHNob3RzIG9sZGVyIHRoYW4gcmVmZXJlbmNlIHNu YXBzaG90IGR1cmluZyB0aGUKKwkgKiBzaW5jZSB3ZSB3YWl0IGZvciBhbGwgc25hcHNob3RzIG9s ZGVyIHRoYW4gbGF0ZXN0IHNuYXBzaG90IGR1cmluZyB0aGUKIAkgKiB2YWxpZGF0aW9uIHBoYXNl LgogCSAqLwogCWlmIChpbmRleEluZm8tPmlpX1VuaXF1ZSAmJiAhaW5kZXhJbmZvLT5paV9Db25j dXJyZW50KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0u YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKaW5kZXggZWVkZGFjZDBk NTIuLjQxMzBlNDlkZDk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3Nw Z3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKQEAg LTE5MCwxNCArMTkwLDE2IEBAIHZhY3V1bUxlYWZQYWdlKHNwZ0J1bGtEZWxldGVTdGF0ZSAqYmRz LCBSZWxhdGlvbiBpbmRleCwgQnVmZmVyIGJ1ZmZlciwKIAkJCSAqIEFkZCB0YXJnZXQgVElEIHRv IHBlbmRpbmcgbGlzdCBpZiB0aGUgcmVkaXJlY3Rpb24gY291bGQgaGF2ZQogCQkJICogaGFwcGVu ZWQgc2luY2UgVkFDVVVNIHN0YXJ0ZWQuICAoSWYgeGlkIGlzIGludmFsaWQsIGFzc3VtZSBpdAog CQkJICogbXVzdCBoYXZlIGhhcHBlbmVkIGJlZm9yZSBWQUNVVU0gc3RhcnRlZCwgc2luY2UgUkVJ TkRFWAotCQkJICogQ09OQ1VSUkVOVExZIGxvY2tzIG91dCBWQUNVVU0uKQorCQkJICogQ09OQ1VS UkVOVExZIGxvY2tzIG91dCBWQUNVVU0sIGlmIG15WG1pbiBpcyBpbnZhbGlkIGl0IGlzCisJCQkg KiB2YWxpZGF0aW9uIHNjYW4uKQogCQkJICoKIAkJCSAqIE5vdGU6IHdlIGNvdWxkIG1ha2UgYSB0 aWdodGVyIHRlc3QgYnkgc2VlaW5nIGlmIHRoZSB4aWQgaXMKIAkJCSAqICJydW5uaW5nIiBhY2Nv cmRpbmcgdG8gdGhlIGFjdGl2ZSBzbmFwc2hvdDsgYnV0IHNuYXBtZ3IuYwogCQkJICogZG9lc24n dCBjdXJyZW50bHkgZXhwb3J0IGEgc3VpdGFibGUgQVBJLCBhbmQgaXQncyBub3QgZW50aXJlbHkK IAkJCSAqIGNsZWFyIHRoYXQgYSB0aWdodGVyIHRlc3QgaXMgd29ydGggdGhlIGN5Y2xlcyBhbnl3 YXkuCiAJCQkgKi8KLQkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKGR0LT54aWQs IGJkcy0+bXlYbWluKSkKKwkJCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoYmRzLT5teVhtaW4p IHx8CisJCQkJCVRyYW5zYWN0aW9uSWRGb2xsb3dzT3JFcXVhbHMoZHQtPnhpZCwgYmRzLT5teVht aW4pKQogCQkJCXNwZ0FkZFBlbmRpbmdUSUQoYmRzLCAmZHQtPnBvaW50ZXIpOwogCQl9CiAJCWVs c2UKQEAgLTgxMSw3ICs4MTMsNiBAQCBzcGd2YWN1dW1zY2FuKHNwZ0J1bGtEZWxldGVTdGF0ZSAq YmRzKQogCS8qIEZpbmlzaCBzZXR0aW5nIHVwIHNwZ0J1bGtEZWxldGVTdGF0ZSAqLwogCWluaXRT cEdpc3RTdGF0ZSgmYmRzLT5zcGdzdGF0ZSwgaW5kZXgpOwogCWJkcy0+cGVuZGluZ0xpc3QgPSBO VUxMOwotCWJkcy0+bXlYbWluID0gR2V0QWN0aXZlU25hcHNob3QoKS0+eG1pbjsKIAliZHMtPmxh c3RGaWxsZWRCbG9jayA9IFNQR0lTVF9MQVNUX0ZJWEVEX0JMS05POwogCiAJLyoKQEAgLTkyNSw2 ICs5MjYsMTAgQEAgc3BnYnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVs a0RlbGV0ZVJlc3VsdCAqc3RhdHMsCiAJYmRzLnN0YXRzID0gc3RhdHM7CiAJYmRzLmNhbGxiYWNr ID0gY2FsbGJhY2s7CiAJYmRzLmNhbGxiYWNrX3N0YXRlID0gY2FsbGJhY2tfc3RhdGU7CisJaWYg KGluZm8tPnZhbGlkYXRlX2luZGV4KQorCQliZHMubXlYbWluID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CisJZWxzZQorCQliZHMubXlYbWluID0gR2V0QWN0aXZlU25hcHNob3QoKS0+eG1pbjsKIAog CXNwZ3ZhY3V1bXNjYW4oJmJkcyk7CiAKQEAgLTk2NSw2ICs5NzAsNyBAQCBzcGd2YWN1dW1jbGVh bnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykK IAkJYmRzLnN0YXRzID0gc3RhdHM7CiAJCWJkcy5jYWxsYmFjayA9IGR1bW15X2NhbGxiYWNrOwog CQliZHMuY2FsbGJhY2tfc3RhdGUgPSBOVUxMOworCQliZHMubXlYbWluID0gR2V0QWN0aXZlU25h cHNob3QoKS0+eG1pbjsKIAogCQlzcGd2YWN1dW1zY2FuKCZiZHMpOwogCX0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YwppbmRleCA4ZGYwYjQ3MmU4OC4uMzlkMmY0NzQ4NjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTM0 ODUsOCArMzQ4NSw5IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogICogaW5zZXJ0IHRoZWlyIG5ldyB0dXBsZXMgaW50byBpdC4gQXQgdGhlIHNhbWUgbW9tZW50 IHdlIGNsZWFyICJpbmRpc3JlYWR5IiBmb3IKICAqIGF1eGlsaWFyeSBpbmRleCwgc2luY2UgaXQg aXMgbm8gbW9yZSByZXF1aXJlZC4KICAqCi0gKiBXZSB0aGVuIHRha2UgYSBuZXcgcmVmZXJlbmNl IHNuYXBzaG90LCBhbnkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZwotICogdG8gdGhp cyBzbmFwLCBidXQgYXJlIG5vdCBpbiB0aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGlu ZGV4LgorICogV2UgdGhlbiB0YWtlIGEgbmV3IHNuYXBzaG90LCBhbnkgdHVwbGVzIHRoYXQgYXJl IHZhbGlkIGFjY29yZGluZworICogdG8gdGhpcyBzbmFwLCBidXQgYXJlIG5vdCBpbiB0aGUgaW5k ZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGluZGV4LiBJbgorICogb3JkZXIgdG8gcHJvcGFnYXRl IHhtaW4gd2UgcmVzZXQgdGhhdCBzbmFwc2hvdCBldmVyeSBmZXcgc28gb2Z0ZW4uCiAgKiAoQW55 IHR1cGxlcyBjb21taXR0ZWQgbGl2ZSBhZnRlciB0aGUgc25hcCB3aWxsIGJlIGluc2VydGVkIGlu dG8gdGhlCiAgKiBpbmRleCBieSB0aGVpciBvcmlnaW5hdGluZyB0cmFuc2FjdGlvbi4gIEFueSB0 dXBsZXMgY29tbWl0dGVkIGRlYWQgYmVmb3JlCiAgKiB0aGUgc25hcCBuZWVkIG5vdCBiZSBpbmRl eGVkLCBiZWNhdXNlIHdlIHdpbGwgd2FpdCBvdXQgYWxsIHRyYW5zYWN0aW9ucwpAQCAtMzQ5OSw3 ICszNTAwLDcgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAg KiBUSURzIG9mIGJvdGggYXV4aWxpYXJ5IGFuZCB0YXJnZXQgaW5kZXhlcywgYW5kIGRvaW5nIGEg Im1lcmdlIGpvaW4iIGFnYWluc3QKICAqIHRoZSBUSUQgbGlzdHMgdG8gc2VlIHdoaWNoIHR1cGxl cyBmcm9tIGF1eGlsaWFyeSBpbmRleCBhcmUgbWlzc2luZyBmcm9tIHRoZQogICogdGFyZ2V0IGlu ZGV4LiAgVGh1cyB3ZSB3aWxsIGVuc3VyZSB0aGF0IGFsbCB0dXBsZXMgdmFsaWQgYWNjb3JkaW5n IHRvIHRoZQotICogcmVmZXJlbmNlIHNuYXBzaG90IGFyZSBpbiB0aGUgaW5kZXguIE5vdGljZSB3 ZSBuZWVkIHRvIGRvIGJ1bGtkZWxldGUgaW4gdGhlCisgKiBsYXRlc3Qgc25hcHNob3QgYXJlIGlu IHRoZSBpbmRleC4gTm90aWNlIHdlIG5lZWQgdG8gZG8gYnVsa2RlbGV0ZSBpbiB0aGUKICAqIHBh cnRpY3VsYXIgb3JkZXI6IGF1eGlsaWFyeSBmaXJzdCwgdGFyZ2V0IGxhc3QuCiAgKgogICogQnVp bGRpbmcgYSB1bmlxdWUgaW5kZXggdGhpcyB3YXkgaXMgdHJpY2t5OiB3ZSBtaWdodCB0cnkgdG8g aW5zZXJ0IGEKQEAgLTM1ODIsNiArMzU4Myw3IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQs IE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCkKIAkgKi8KIAlQdXNoQWN0aXZlU25hcHNob3Qo R2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAlpbmRleEluZm8gPSBCdWlsZEluZGV4SW5mbyhp bmRleFJlbGF0aW9uKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJLyogbWFyayBidWlsZCBp cyBjb25jdXJyZW50IGp1c3QgZm9yIGNvbnNpc3RlbmN5ICovCiAJaW5kZXhJbmZvLT5paV9Db25j dXJyZW50ID0gdHJ1ZTsKQEAgLTM2MTcsNiArMzYxOSw5IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBo ZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCkKIAkJCQkJCQkJCQkgICBOVUxMLCBU VVBMRVNPUlRfTk9ORSk7CiAJYXV4U3RhdGUuaHR1cHMgPSBhdXhTdGF0ZS5pdHVwcyA9IGF1eFN0 YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwogCisJLyogdHVwbGVzb3J0X2JlZ2luX2RhdHVtIG1heSBy ZXF1aXJlIGNhdGFsb2cgc25hcHNob3QgKi8KKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7 CisKIAkodm9pZCkgaW5kZXhfYnVsa19kZWxldGUoJmF1eGl2aW5mbywgTlVMTCwKIAkJCQkJCQkg dmFsaWRhdGVfaW5kZXhfY2FsbGJhY2ssICZhdXhTdGF0ZSk7CiAKQEAgLTM2NDYsOSArMzY1MSw2 IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJ ZCkKIAl9CiAJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KHN0YXRlLnR1cGxlc29ydCk7CiAJdHVwbGVz b3J0X3BlcmZvcm1zb3J0KGF1eFN0YXRlLnR1cGxlc29ydCk7Ci0KLQlQb3BBY3RpdmVTbmFwc2hv dCgpOwotCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAlBc3NlcnQoIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMK aW5kZXggNTFkYjdmMjMzNzguLjg1ZjgzYTk3YTFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YwpAQCAtNDM0OSw3ICs0MzQ5LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJLyoKIAkJ ICogVGhlIGluZGV4IGlzIG5vdyB2YWxpZCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBjb250YWlucyBh bGwgY3VycmVudGx5CiAJCSAqIGludGVyZXN0aW5nIHR1cGxlcy4gIEJ1dCBzaW5jZSBpdCBtaWdo dCBub3QgY29udGFpbiB0dXBsZXMgZGVsZXRlZAotCQkgKiBqdXN0IGJlZm9yZSB0aGUgcmVmZXJl bmNlIHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQorCQkgKiBqdXN0IGJl Zm9yZSB0aGUgbGF0ZXN0IHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZlIHRvIHdhaXQgb3V0IGFueQog CQkgKiB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkJICoK IAkJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3Qgb3IgWGlkIGluIHRoaXMgdHJh bnNhY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaAppbmRleCA3ZDgyY2QyZWI1Ni4uMTVlMzQ1YzdhMTkg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RyYW5zYW0uaApAQCAtMzU1LDYgKzM1NSwyMSBAQCBOb3JtYWxUcmFuc2FjdGlv bklkT2xkZXIoVHJhbnNhY3Rpb25JZCBhLCBUcmFuc2FjdGlvbklkIGIpCiAJcmV0dXJuIGI7CiB9 CiAKKy8qIHJldHVybiB0aGUgbmV3ZXIgb2YgdGhlIHR3byBJRHMgKi8KK3N0YXRpYyBpbmxpbmUg VHJhbnNhY3Rpb25JZAorVHJhbnNhY3Rpb25JZE5ld2VyKFRyYW5zYWN0aW9uSWQgYSwgVHJhbnNh Y3Rpb25JZCBiKQoreworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoYSkpCisJCXJldHVybiBi OworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChiKSkKKwkJcmV0dXJuIGE7CisKKwlpZiAo VHJhbnNhY3Rpb25JZEZvbGxvd3MoYSwgYikpCisJCXJldHVybiBhOworCXJldHVybiBiOworfQor CiAvKiByZXR1cm4gdGhlIG5ld2VyIG9mIHRoZSB0d28gSURzICovCiBzdGF0aWMgaW5saW5lIEZ1 bGxUcmFuc2FjdGlvbklkCiBGdWxsVHJhbnNhY3Rpb25JZE5ld2VyKEZ1bGxUcmFuc2FjdGlvbklk IGEsIEZ1bGxUcmFuc2FjdGlvbklkIGIpCi0tIAoyLjQzLjAKCg== --000000000000caf8fd062fc891e1 Content-Type: application/octet-stream; name="v16-0008-Improve-CREATE-REINDEX-INDEX-CONCURRENTLY-using-.patch" Content-Disposition: attachment; filename="v16-0008-Improve-CREATE-REINDEX-INDEX-CONCURRENTLY-using-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7zd30ob4 RnJvbSAzMWIyMzI0Y2U5YWVmZjNkYjU3ZTI1YjUzZjM4ZDFiNjIwN2QyYWY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNTowMzoxMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE2IDA4 LzEyXSBJbXByb3ZlIENSRUFURS9SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB1c2luZwogYXV4 aWxpYXJ5IGluZGV4CgpNb2RpZnkgdGhlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRpbmcgcHJvY2Vz cyB0byB1c2UgYW4gYXV4aWxpYXJ5IHVubG9nZ2VkIGluZGV4CmR1cmluZyBjb25zdHJ1Y3Rpb24u IFRoaXMgaW1wcm92ZXMgZWZmaWNpZW5jeSBvZiBjb25jdXJyZW50CmluZGV4IG9wZXJhdGlvbnMg Ynk6CgotIENyZWF0aW5nIGFuIGF1eGlsaWFyeSBTVElSIChTaG9ydCBUZXJtIEluZGV4IFJlcGxh Y2VtZW50KSBpbmRleCB0byB0cmFjayBuZXcgdHVwbGVzIGR1cmluZyB0aGUgbWFpbiBpbmRleCBi dWlsZAotIFVzaW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggdG8gY2F0Y2ggYWxsIHR1cGxlcyBpbnNl cnRlZCBkdXJpbmcgdGhlIGJ1aWxkIHBoYXNlIGluc3RlYWQgb2YgcmVseWluZyBvbiBhIHNlY29u ZCBoZWFwIHNjYW4KLSBNZXJnaW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggY29udGVudCB3aXRoIHRo ZSBtYWluIGluZGV4IGR1cmluZyB2YWxpZGF0aW9uCi0gQXV0b21hdGljYWxseSBjbGVhbmluZyB1 cCB0aGUgYXV4aWxpYXJ5IGluZGV4IGFmdGVyIHRoZSBtYWluIGluZGV4IGlzIHJlYWR5CgpUaGlz IGFwcHJvYWNoIGVsaW1pbmF0ZXMgdGhlIG5lZWQgZm9yIGEgc2Vjb25kIGZ1bGwgdGFibGUgc2Nh biBkdXJpbmcgaW5kZXgKdmFsaWRhdGlvbiwgbWFraW5nIHRoZSBwcm9jZXNzIG1vcmUgZWZmaWNp ZW50IGVzcGVjaWFsbHkgZm9yIGxhcmdlIHRhYmxlcy4KVGhlIGF1eGlsaWFyeSBpbmRleCBpcyBh dXRvbWF0aWNhbGx5IGRyb3BwZWQgYWZ0ZXIgdGhlIG1haW4gaW5kZXggYmVjb21lcyB2YWxpZC4K ClRoaXMgY2hhbmdlIGFmZmVjdHMgYm90aCBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGFuZCBS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWQpvcGVyYXRpb25zLiBUaGUgU1RJUiBhY2Nlc3MgbWV0 aG9kIGlzIGFkZGVkIHNwZWNpZmljYWxseSBmb3IgdGhlc2UgYXV4aWxpYXJ5CmluZGV4ZXMgYW5k IGNhbm5vdCBiZSB1c2VkIGRpcmVjdGx5IGJ5IHVzZXJzLgotLS0KIGRvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAyNiArLQogZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfaW5kZXguc2dtbCAgICAgICAgICAgIHwgIDMzICstCiBkb2Mvc3JjL3NnbWwvcmVmL3Jl aW5kZXguc2dtbCAgICAgICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL1JFQURNRS5IT1QgICAgICAgICAgICB8ICAxNSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgNTkxICsrKysrKysrKysrKy0tLS0tLQogc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAgICAgIHwgMzEyICsrKysrKystLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgIDE3ICstCiBz cmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAgICB8IDM3NiArKysrKysr Ky0tLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgICA0 ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgMzEg Ky0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAgICAgICAgICB8ICAxMiAr LQogc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaCAgICAgICAgICAgICAgIHwgIDEzICst CiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDQgKy0K IHNyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oICAgICAgICAgICAgICAgICB8ICAgMyArLQog Li4uL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0ICAgICAgICAgIHwgIDI4ICsKIC4u Li9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQgICAgfCAgNDIgKysKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0ICAgICAgICB8ICAgMyArLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgIDE3ICstCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5kZXguc3FsICAgICAgICAgfCAgMjEgKwogMjEgZmlsZXMg Y2hhbmdlZCwgMTE5MyBpbnNlcnRpb25zKCspLCA0MDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5n LnNnbWwKaW5kZXggMTY2NDZmNTYwZTguLmJlMmQzZDVhNmRiIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwK QEAgLTYyNTMsNiArNjI1MywxOCBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBB UyBiYWNrZW5kaWQ7CiAgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCiAgICAgICA8 L2VudHJ5PgogICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD53 YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXg8L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZPC9jb21tYW5kPiBvciA8Y29tbWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4g aXMgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zCisgICAgICAgd2l0aCB3cml0ZSBsb2NrcyB0aGF0 IGNhbiBwb3RlbnRpYWxseSBzZWUgdGhlIHRhYmxlIHRvIGZpbmlzaCwgdG8gZW5zdXJlIHVzZSBv ZiBhdXhpbGlhcnkgaW5kZXggZm9yIG5ldyB0dXBsZXMgaW4KKyAgICAgICBmdXR1cmUgdHJhbnNh Y3Rpb25zLgorICAgICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBpbiBjb25jdXJy ZW50IG1vZGUuCisgICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5sb2NrZXJzX3RvdGFsPC9zdHJ1 Y3RuYW1lPiwgPHN0cnVjdG5hbWU+bG9ja2Vyc19kb25lPC9zdHJ1Y3RuYW1lPgorICAgICAgIGFu ZCA8c3RydWN0bmFtZT5jdXJyZW50X2xvY2tlcl9waWQ8L3N0cnVjdG5hbWU+IGNvbnRhaW4gdGhl IHByb2dyZXNzCisgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD5idWls ZGluZyBpbmRleDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PgpAQCAtNjI5MywxMyAr NjMwNSwxMiBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRzZXQoKSBBUyBiYWNrZW5kaWQ7 CiAgICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KLSAgICAgIDxlbnRyeT48 bGl0ZXJhbD5pbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyB0YWJsZTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPmluZGV4IHZhbGlkYXRpb246IG1lcmdpbmcgaW5kZXhl czwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PgotICAgICAgIDxjb21tYW5kPkNSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGlzIHNjYW5uaW5nIHRoZSB0YWJsZQotICAg ICAgIHRvIHZhbGlkYXRlIHRoZSBpbmRleCB0dXBsZXMgY29sbGVjdGVkIGluIHRoZSBwcmV2aW91 cyB0d28gcGhhc2VzLgorICAgICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFk8 L2NvbW1hbmQ+IG1lcmdpbmcgY29udGVudCBvZiBhdXhpbGlhcnkgaW5kZXggd2l0aCB0aGUgdGFy Z2V0IGluZGV4LgogICAgICAgIFRoaXMgcGhhc2UgaXMgc2tpcHBlZCB3aGVuIG5vdCBpbiBjb25j dXJyZW50IG1vZGUuCi0gICAgICAgQ29sdW1ucyA8c3RydWN0bmFtZT5ibG9ja3NfdG90YWw8L3N0 cnVjdG5hbWU+IChzZXQgdG8gdGhlIHRvdGFsIHNpemUgb2YgdGhlIHRhYmxlKQotICAgICAgIGFu ZCA8c3RydWN0bmFtZT5ibG9ja3NfZG9uZTwvc3RydWN0bmFtZT4gY29udGFpbiB0aGUgcHJvZ3Jl c3MgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCisgICAgICAgQ29sdW1ucyA8c3RydWN0bmFt ZT50dXBsZXNfdG90YWw8L3N0cnVjdG5hbWU+IChzZXQgdG8gdGhlIG51bWJlciBvZiB0dXBsZXMg dG8gYmUgbWVyZ2VkKQorICAgICAgIGFuZCA8c3RydWN0bmFtZT50dXBsZXNfZG9uZTwvc3RydWN0 bmFtZT4gY29udGFpbiB0aGUgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGhhc2UuCiAg ICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KQEAgLTYzMTYsOCArNjMyNyw5 IEBAIEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAgICAg PHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD53YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBt YXJraW5nIGRlYWQ8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT4KLSAgICAgICA8Y29t bWFuZD5SRUlOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgd2FpdGluZyBmb3IgdHJhbnNh Y3Rpb25zCi0gICAgICAgd2l0aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gsIGJl Zm9yZSBtYXJraW5nIHRoZSBvbGQgaW5kZXggZGVhZC4KKyAgICAgICA8Y29tbWFuZD5DUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZPC9jb21tYW5kPiBpcyB3YWl0aW5nIGZvciB0cmFuc2FjdGlvbnMK KyAgICAgICAgd2l0aCByZWFkIGxvY2tzIG9uIHRoZSB0YWJsZSB0byBmaW5pc2gsIGJlZm9yZSBt YXJraW5nIHRoZSBhdXhpbGlhcnkgaW5kZXggYXMgZGVhZC4KKyAgICAgICA8Y29tbWFuZD5SRUlO REVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4gaXMgYWxzbyB3YWl0aW5nIGJlZm9yZSBtYXJraW5n IHRoZSBvbGQgaW5kZXggYXMgZGVhZC4KICAgICAgICBUaGlzIHBoYXNlIGlzIHNraXBwZWQgd2hl biBub3QgaW4gY29uY3VycmVudCBtb2RlLgogICAgICAgIENvbHVtbnMgPHN0cnVjdG5hbWU+bG9j a2Vyc190b3RhbDwvc3RydWN0bmFtZT4sIDxzdHJ1Y3RuYW1lPmxvY2tlcnNfZG9uZTwvc3RydWN0 bmFtZT4KICAgICAgICBhbmQgPHN0cnVjdG5hbWU+Y3VycmVudF9sb2NrZXJfcGlkPC9zdHJ1Y3Ru YW1lPiBjb250YWluIHRoZSBwcm9ncmVzcwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfaW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKaW5k ZXggMjA4Mzg5ZTgwMDYuLmUzMzM0NWY2YTM0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9pbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNn bWwKQEAgLTYxNCwyNSArNjE0LDI0IEBAIENSRUFURSBbIFVOSVFVRSBdIElOREVYIFsgQ09OQ1VS UkVOVExZIF0gWyBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9CiAgICAgb3V0 IHdyaXRlcy4gIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgc3BlY2lmeWluZyB0aGUKICAgICA8 bGl0ZXJhbD5DT05DVVJSRU5UTFk8L2xpdGVyYWw+IG9wdGlvbiBvZiA8Y29tbWFuZD5DUkVBVEUg SU5ERVg8L2NvbW1hbmQ+LgogICAgIFdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZCwKLSAgICA8cHJv ZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0d28gc2NhbnMg b2YgdGhlIHRhYmxlLCBhbmQgaW4KLSAgICBhZGRpdGlvbiBpdCBtdXN0IHdhaXQgZm9yIGFsbCBl eGlzdGluZyB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseQotICAgIG1vZGlmeSBv ciB1c2UgdGhlIGluZGV4IHRvIHRlcm1pbmF0ZS4gIFRodXMKLSAgICB0aGlzIG1ldGhvZCByZXF1 aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4IGJ1aWxkIGFuZCB0YWtl cwotICAgIHNpZ25pZmljYW50bHkgbG9uZ2VyIHRvIGNvbXBsZXRlLiAgSG93ZXZlciwgc2luY2Ug aXQgYWxsb3dzIG5vcm1hbAorICAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFt ZT4gbXVzdCBwZXJmb3JtIHNldmVyYWwgc3RlcHMgdG8gZW5zdXJlIGRhdGEKKyAgICBjb25zaXN0 ZW5jeSB3aGlsZSBhbGxvd2luZyBub3JtYWwgb3BlcmF0aW9ucyB0byBjb250aW51ZS4KKyAgICBU aGlzIG1ldGhvZCByZXF1aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBhIHN0YW5kYXJkIGluZGV4 IGJ1aWxkIGFuZCB0YWtlcworICAgIGxvbmdlciB0byBjb21wbGV0ZS4gIEhvd2V2ZXIsIHNpbmNl IGl0IGFsbG93cyBub3JtYWwKICAgICBvcGVyYXRpb25zIHRvIGNvbnRpbnVlIHdoaWxlIHRoZSBp bmRleCBpcyBidWlsdCwgdGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvcgogICAgIGFkZGluZyBuZXcg aW5kZXhlcyBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuICBPZiBjb3Vyc2UsIHRoZSBleHRy YSBDUFUKICAgICBhbmQgSS9PIGxvYWQgaW1wb3NlZCBieSB0aGUgaW5kZXggY3JlYXRpb24gbWln aHQgc2xvdyBvdGhlciBvcGVyYXRpb25zLgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KLSAgICBJ biBhIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsIHRoZSBpbmRleCBpcyBhY3R1YWxseSBlbnRlcmVk IGFzIGFuCisgICAgSW4gYSBjb25jdXJyZW50IGluZGV4IGJ1aWxkLCB0aGUgbWFpbiBhbmQgYXV4 aWxpYXJ5IGluZGV4ZXMgaXMgYWN0dWFsbHkgZW50ZXJlZCBhcyBhbgogICAgIDxxdW90ZT5pbnZh bGlkPC9xdW90ZT4gaW5kZXggaW50bwotICAgIHRoZSBzeXN0ZW0gY2F0YWxvZ3MgaW4gb25lIHRy YW5zYWN0aW9uLCB0aGVuIHR3byB0YWJsZSBzY2FucyBvY2N1ciBpbgotICAgIHR3byBtb3JlIHRy YW5zYWN0aW9ucy4gIEJlZm9yZSBlYWNoIHRhYmxlIHNjYW4sIHRoZSBpbmRleCBidWlsZCBtdXN0 CisgICAgdGhlIHN5c3RlbSBjYXRhbG9ncyBpbiBvbmUgdHJhbnNhY3Rpb24sIHRoZW4gdHdvIHBo YXNlcyBvY2N1ciBpbgorICAgIG11bHRpcGxlIHRyYW5zYWN0aW9ucy4gIEJlZm9yZSBlYWNoIHBo YXNlLCB0aGUgaW5kZXggYnVpbGQgbXVzdAogICAgIHdhaXQgZm9yIGV4aXN0aW5nIHRyYW5zYWN0 aW9ucyB0aGF0IGhhdmUgbW9kaWZpZWQgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4KLSAgICBBZnRl ciB0aGUgc2Vjb25kIHNjYW4sIHRoZSBpbmRleCBidWlsZCBtdXN0IHdhaXQgZm9yIGFueSB0cmFu c2FjdGlvbnMKKyAgICBBZnRlciB0aGUgc2Vjb25kIHBoYXNlLCB0aGUgaW5kZXggYnVpbGQgbXVz dCB3YWl0IGZvciBhbnkgdHJhbnNhY3Rpb25zCiAgICAgdGhhdCBoYXZlIGEgc25hcHNob3QgKHNl ZSA8eHJlZiBsaW5rZW5kPSJtdmNjIi8+KSBwcmVkYXRpbmcgdGhlIHNlY29uZAotICAgIHNjYW4g dG8gdGVybWluYXRlLCBpbmNsdWRpbmcgdHJhbnNhY3Rpb25zIHVzZWQgYnkgYW55IHBoYXNlIG9m IGNvbmN1cnJlbnQKKyAgICBwaGFzZSB0byB0ZXJtaW5hdGUsIGluY2x1ZGluZyB0cmFuc2FjdGlv bnMgdXNlZCBieSBhbnkgcGhhc2Ugb2YgY29uY3VycmVudAogICAgIGluZGV4IGJ1aWxkcyBvbiBv dGhlciB0YWJsZXMsIGlmIHRoZSBpbmRleGVzIGludm9sdmVkIGFyZSBwYXJ0aWFsIG9yIGhhdmUK ICAgICBjb2x1bW5zIHRoYXQgYXJlIG5vdCBzaW1wbGUgY29sdW1uIHJlZmVyZW5jZXMuCiAgICAg VGhlbiBmaW5hbGx5IHRoZSBpbmRleCBjYW4gYmUgbWFya2VkIDxxdW90ZT52YWxpZDwvcXVvdGU+ IGFuZCByZWFkeSBmb3IgdXNlLApAQCAtNjQ1LDEwICs2NDQsMTEgQEAgQ1JFQVRFIFsgVU5JUVVF IF0gSU5ERVggWyBDT05DVVJSRU5UTFkgXSBbIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0KICAgIDxwYXJhPgogICAgIElmIGEgcHJvYmxlbSBhcmlzZXMgd2hpbGUgc2Nhbm5p bmcgdGhlIHRhYmxlLCBzdWNoIGFzIGEgZGVhZGxvY2sgb3IgYQogICAgIHVuaXF1ZW5lc3Mgdmlv bGF0aW9uIGluIGEgdW5pcXVlIGluZGV4LCB0aGUgPGNvbW1hbmQ+Q1JFQVRFIElOREVYPC9jb21t YW5kPgotICAgIGNvbW1hbmQgd2lsbCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmlu dmFsaWQ8L3F1b3RlPiBpbmRleC4gVGhpcyBpbmRleAotICAgIHdpbGwgYmUgaWdub3JlZCBmb3Ig cXVlcnlpbmcgcHVycG9zZXMgYmVjYXVzZSBpdCBtaWdodCBiZSBpbmNvbXBsZXRlOwotICAgIGhv d2V2ZXIgaXQgd2lsbCBzdGlsbCBjb25zdW1lIHVwZGF0ZSBvdmVyaGVhZC4gVGhlIDxhcHBsaWNh dGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4KLSAgICA8Y29tbWFuZD5cZDwvY29tbWFuZD4gY29tbWFu ZCB3aWxsIHJlcG9ydCBzdWNoIGFuIGluZGV4IGFzIDxsaXRlcmFsPklOVkFMSUQ8L2xpdGVyYWw+ OgorICAgIGNvbW1hbmQgd2lsbCBmYWlsIGJ1dCBsZWF2ZSBiZWhpbmQgYW4gPHF1b3RlPmludmFs aWQ8L3F1b3RlPiBpbmRleCBhbmQgaXRzCisgICAgYXNzb2NpYXRlZCBhdXhpbGlhcnkgaW5kZXgu IFRoZXNlIGluZGV4ZXMKKyAgICB3aWxsIGJlIGlnbm9yZWQgZm9yIHF1ZXJ5aW5nIHB1cnBvc2Vz IGJlY2F1c2UgdGhleSBtaWdodCBiZSBpbmNvbXBsZXRlOworICAgIGhvd2V2ZXIgdGhleSB3aWxs IHN0aWxsIGNvbnN1bWUgdXBkYXRlIG92ZXJoZWFkLiBUaGUgPGFwcGxpY2F0aW9uPnBzcWw8L2Fw cGxpY2F0aW9uPgorICAgIDxjb21tYW5kPlxkPC9jb21tYW5kPiBjb21tYW5kIHdpbGwgcmVwb3J0 IHN1Y2ggaW5kZXhlcyBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPjoKIAogPHByb2dyYW1s aXN0aW5nPgogcG9zdGdyZXM9IyBcZCB0YWIKQEAgLTY1OCwxMSArNjU4LDEyIEBAIHBvc3RncmVz PSMgXGQgdGFiCiAgY29sICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwKIElu ZGV4ZXM6CiAgICAgImlkeCIgYnRyZWUgKGNvbCkgSU5WQUxJRAorICAgICJpZHhfY2NhdXgiIHN0 aXIgKGNvbCkgSU5WQUxJRAogPC9wcm9ncmFtbGlzdGluZz4KIAogICAgIFRoZSByZWNvbW1lbmRl ZCByZWNvdmVyeQotICAgIG1ldGhvZCBpbiBzdWNoIGNhc2VzIGlzIHRvIGRyb3AgdGhlIGluZGV4 IGFuZCB0cnkgYWdhaW4gdG8gcGVyZm9ybQotICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWCBDT05D VVJSRU5UTFk8L2NvbW1hbmQ+LiAgKEFub3RoZXIgcG9zc2liaWxpdHkgaXMKKyAgICBtZXRob2Qg aW4gc3VjaCBjYXNlcyBpcyB0byBkcm9wIHRoZXNlIGluZGV4ZXMgYW5kIHRyeSBhZ2FpbiB0byBw ZXJmb3JtCisgICAgPGNvbW1hbmQ+Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4u IChBbm90aGVyIHBvc3NpYmlsaXR5IGlzCiAgICAgdG8gcmVidWlsZCB0aGUgaW5kZXggd2l0aCA8 Y29tbWFuZD5SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWTwvY29tbWFuZD4pLgogICAgPC9wYXJh PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvcmVpbmRleC5zZ21sCmluZGV4IDViM2M3Njk4MDBlLi42YTA1NjIwYmQ2NyAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9yZWluZGV4LnNnbWwKQEAgLTM2OCwxMSArMzY4LDEwIEBAIFJFSU5ERVggWyAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkg XSB7IERBCiAgICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBzdXBwb3J0 cyByZWJ1aWxkaW5nIGluZGV4ZXMgd2l0aCBtaW5pbXVtIGxvY2tpbmcKICAgICBvZiB3cml0ZXMu ICBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHNwZWNpZnlpbmcgdGhlCiAgICAgPGxpdGVyYWw+ Q09OQ1VSUkVOVExZPC9saXRlcmFsPiBvcHRpb24gb2YgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFu ZD4uIFdoZW4gdGhpcyBvcHRpb24KLSAgICBpcyB1c2VkLCA8cHJvZHVjdG5hbWU+UG9zdGdyZVNR TDwvcHJvZHVjdG5hbWU+IG11c3QgcGVyZm9ybSB0d28gc2NhbnMgb2YgdGhlIHRhYmxlCi0gICAg Zm9yIGVhY2ggaW5kZXggdGhhdCBuZWVkcyB0byBiZSByZWJ1aWx0IGFuZCB3YWl0IGZvciB0ZXJt aW5hdGlvbiBvZgotICAgIGFsbCBleGlzdGluZyB0cmFuc2FjdGlvbnMgdGhhdCBjb3VsZCBwb3Rl bnRpYWxseSB1c2UgdGhlIGluZGV4LgorICAgIGlzIHVzZWQsIDxwcm9kdWN0bmFtZT5Qb3N0Z3Jl U1FMPC9wcm9kdWN0bmFtZT4gbXVzdCBwZXJmb3JtIHNldmVyYWwgc3RlcHMgdG8gZW5zdXJlIGRh dGEKKyAgICBjb25zaXN0ZW5jeSB3aGlsZSBhbGxvd2luZyBub3JtYWwgb3BlcmF0aW9ucyB0byBj b250aW51ZS4KICAgICBUaGlzIG1ldGhvZCByZXF1aXJlcyBtb3JlIHRvdGFsIHdvcmsgdGhhbiBh IHN0YW5kYXJkIGluZGV4Ci0gICAgcmVidWlsZCBhbmQgdGFrZXMgc2lnbmlmaWNhbnRseSBsb25n ZXIgdG8gY29tcGxldGUgYXMgaXQgbmVlZHMgdG8gd2FpdAorICAgIHJlYnVpbGQgYW5kIHRha2Vz IGxvbmdlciB0byBjb21wbGV0ZSBhcyBpdCBuZWVkcyB0byB3YWl0CiAgICAgZm9yIHVuZmluaXNo ZWQgdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgbW9kaWZ5IHRoZSBpbmRleC4gSG93ZXZlciwgc2lu Y2UKICAgICBpdCBhbGxvd3Mgbm9ybWFsIG9wZXJhdGlvbnMgdG8gY29udGludWUgd2hpbGUgdGhl IGluZGV4IGlzIGJlaW5nIHJlYnVpbHQsIHRoaXMKICAgICBtZXRob2QgaXMgdXNlZnVsIGZvciBy ZWJ1aWxkaW5nIGluZGV4ZXMgaW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50LiBPZgpAQCAtMzg4 LDcgKzM4Nyw3IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5v cHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERBCiAgICAgPG9yZGVyZWRsaXN0Pgog ICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBBIG5ldyB0cmFuc2llbnQgaW5k ZXggZGVmaW5pdGlvbiBpcyBhZGRlZCB0byB0aGUgY2F0YWxvZworICAgICAgIEEgbmV3IHRyYW5z aWVudCBpbmRleCBkZWZpbml0aW9uIGFuZCBhbiBhdXhpbGlhcnkgaW5kZXggYXJlIGFkZGVkIHRv IHRoZSBjYXRhbG9nCiAgICAgICAgPGxpdGVyYWw+cGdfaW5kZXg8L2xpdGVyYWw+LiAgVGhpcyBk ZWZpbml0aW9uIHdpbGwgYmUgdXNlZCB0byByZXBsYWNlCiAgICAgICAgdGhlIG9sZCBpbmRleC4g IEEgPGxpdGVyYWw+U0hBUkUgVVBEQVRFIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBhdAogICAg ICAgIHNlc3Npb24gbGV2ZWwgaXMgdGFrZW4gb24gdGhlIGluZGV4ZXMgYmVpbmcgcmVpbmRleGVk IGFzIHdlbGwgYXMgdGhlaXIKQEAgLTM5OCw3ICszOTcsMTUgQEAgUkVJTkRFWCBbICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBd IHsgREEKIAogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBBIGZpcnN0IHBh c3MgdG8gYnVpbGQgdGhlIGluZGV4IGlzIGRvbmUgZm9yIGVhY2ggbmV3IGluZGV4LiAgT25jZSB0 aGUKKyAgICAgICBUaGUgYXV4aWxpYXJ5IGluZGV4IGlzIG1hcmtlZCBhcyAicmVhZHkgZm9yIGlu c2VydHMiLCBtYWtpbmcKKyAgICAgICBpdCB2aXNpYmxlIHRvIG90aGVyIHNlc3Npb25zLiBUaGlz IGluZGV4IGVmZmljaWVudGx5IHRyYWNrcyBhbGwgbmV3CisgICAgICAgdHVwbGVzIGR1cmluZyB0 aGUgcmVpbmRleCBwcm9jZXNzLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorCisg ICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBuZXcgbWFpbiBpbmRleCBp cyBidWlsdCBieSBzY2FubmluZyB0aGUgdGFibGUuICBPbmNlIHRoZQogICAgICAgIGluZGV4IGlz IGJ1aWx0LCBpdHMgZmxhZyA8bGl0ZXJhbD5wZ19pbmRleC5pbmRpc3JlYWR5PC9saXRlcmFsPiBp cwogICAgICAgIHN3aXRjaGVkIHRvIDxxdW90ZT50cnVlPC9xdW90ZT4gdG8gbWFrZSBpdCByZWFk eSBmb3IgaW5zZXJ0cywgbWFraW5nIGl0CiAgICAgICAgdmlzaWJsZSB0byBvdGhlciBzZXNzaW9u cyBvbmNlIHRoZSB0cmFuc2FjdGlvbiB0aGF0IHBlcmZvcm1lZCB0aGUgYnVpbGQKQEAgLTQwOSw5 ICs0MTYsOSBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0 aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxsaXN0aXRlbT4KICAg ICAgIDxwYXJhPgotICAgICAgIFRoZW4gYSBzZWNvbmQgcGFzcyBpcyBwZXJmb3JtZWQgdG8gYWRk IHR1cGxlcyB0aGF0IHdlcmUgYWRkZWQgd2hpbGUgdGhlCi0gICAgICAgZmlyc3QgcGFzcyB3YXMg cnVubmluZy4gIFRoaXMgc3RlcCBpcyBhbHNvIGRvbmUgaW4gYSBzZXBhcmF0ZQotICAgICAgIHRy YW5zYWN0aW9uIGZvciBlYWNoIGluZGV4LgorICAgICAgIEEgdmFsaWRhdGlvbiBwaGFzZSBtZXJn ZXMgYW55IG1pc3NpbmcgZW50cmllcyBmcm9tIHRoZSBhdXhpbGlhcnkgaW5kZXgKKyAgICAgICBp bnRvIHRoZSBtYWluIGluZGV4LCBlbnN1cmluZyBhbGwgY29uY3VycmVudCBjaGFuZ2VzIGFyZSBj YXB0dXJlZC4KKyAgICAgICBUaGlzIHN0ZXAgaXMgYWxzbyBkb25lIGluIGEgc2VwYXJhdGUgdHJh bnNhY3Rpb24gZm9yIGVhY2ggaW5kZXguCiAgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+ CiAKQEAgLTQyOCw3ICs0MzUsNyBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBEQQogCiAgICAgIDxs aXN0aXRlbT4KICAgICAgIDxwYXJhPgotICAgICAgIFRoZSBvbGQgaW5kZXhlcyBoYXZlIDxsaXRl cmFsPnBnX2luZGV4LmluZGlzcmVhZHk8L2xpdGVyYWw+IHN3aXRjaGVkIHRvCisgICAgICAgVGhl IG9sZCBhbmQgYXV4aWxpYXJ5IGluZGV4ZXMgaGF2ZSA8bGl0ZXJhbD5wZ19pbmRleC5pbmRpc3Jl YWR5PC9saXRlcmFsPiBzd2l0Y2hlZCB0bwogICAgICAgIDxxdW90ZT5mYWxzZTwvcXVvdGU+IHRv IHByZXZlbnQgYW55IG5ldyB0dXBsZSBpbnNlcnRpb25zLCBhZnRlciB3YWl0aW5nCiAgICAgICAg Zm9yIHJ1bm5pbmcgcXVlcmllcyB0aGF0IG1pZ2h0IHJlZmVyZW5jZSB0aGUgb2xkIGluZGV4IHRv IGNvbXBsZXRlLgogICAgICAgPC9wYXJhPgpAQCAtNDM2LDcgKzQ0Myw3IEBAIFJFSU5ERVggWyAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAu Li5dICkgXSB7IERBCiAKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAgICAgVGhl IG9sZCBpbmRleGVzIGFyZSBkcm9wcGVkLiAgVGhlIDxsaXRlcmFsPlNIQVJFIFVQREFURQorICAg ICAgIFRoZSBvbGQgYW5kIGF1eGlsaWFyeSBpbmRleGVzIGFyZSBkcm9wcGVkLiAgVGhlIDxsaXRl cmFsPlNIQVJFIFVQREFURQogICAgICAgIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gc2Vzc2lvbiBsb2Nr cyBmb3IgdGhlIGluZGV4ZXMgYW5kIHRoZSB0YWJsZSBhcmUKICAgICAgICByZWxlYXNlZC4KICAg ICAgIDwvcGFyYT4KQEAgLTQ0NywxMSArNDU0LDExIEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IERB CiAgICA8cGFyYT4KICAgICBJZiBhIHByb2JsZW0gYXJpc2VzIHdoaWxlIHJlYnVpbGRpbmcgdGhl IGluZGV4ZXMsIHN1Y2ggYXMgYQogICAgIHVuaXF1ZW5lc3MgdmlvbGF0aW9uIGluIGEgdW5pcXVl IGluZGV4LCB0aGUgPGNvbW1hbmQ+UkVJTkRFWDwvY29tbWFuZD4KLSAgICBjb21tYW5kIHdpbGwg ZmFpbCBidXQgbGVhdmUgYmVoaW5kIGFuIDxxdW90ZT5pbnZhbGlkPC9xdW90ZT4gbmV3IGluZGV4 IGluIGFkZGl0aW9uIHRvCi0gICAgdGhlIHByZS1leGlzdGluZyBvbmUuIFRoaXMgaW5kZXggd2ls bCBiZSBpZ25vcmVkIGZvciBxdWVyeWluZyBwdXJwb3NlcwotICAgIGJlY2F1c2UgaXQgbWlnaHQg YmUgaW5jb21wbGV0ZTsgaG93ZXZlciBpdCB3aWxsIHN0aWxsIGNvbnN1bWUgdXBkYXRlCisgICAg Y29tbWFuZCB3aWxsIGZhaWwgYnV0IGxlYXZlIGJlaGluZCBhbiA8cXVvdGU+aW52YWxpZDwvcXVv dGU+IG5ldyBpbmRleCBhbmQgaXRzIGF1eGlsaWFyeSBpbmRleCBpbiBhZGRpdGlvbiB0bworICAg IHRoZSBwcmUtZXhpc3Rpbmcgb25lLiBUaGVzZSBpbmRleGVzIHdpbGwgYmUgaWdub3JlZCBmb3Ig cXVlcnlpbmcgcHVycG9zZXMKKyAgICBiZWNhdXNlIHRoZXkgbWlnaHQgYmUgaW5jb21wbGV0ZTsg aG93ZXZlciB0aGV5IHdpbGwgc3RpbGwgY29uc3VtZSB1cGRhdGUKICAgICBvdmVyaGVhZC4gVGhl IDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4gPGNvbW1hbmQ+XGQ8L2NvbW1hbmQ+IGNv bW1hbmQgd2lsbCByZXBvcnQKLSAgICBzdWNoIGFuIGluZGV4IGFzIDxsaXRlcmFsPklOVkFMSUQ8 L2xpdGVyYWw+OgorICAgIHN1Y2ggaW5kZXhlcyBhcyA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFs PjoKIAogPHByb2dyYW1saXN0aW5nPgogcG9zdGdyZXM9IyBcZCB0YWIKQEAgLTQ2MiwxMiArNDY5 LDE0IEBAIHBvc3RncmVzPSMgXGQgdGFiCiBJbmRleGVzOgogICAgICJpZHgiIGJ0cmVlIChjb2wp CiAgICAgImlkeF9jY25ldyIgYnRyZWUgKGNvbCkgSU5WQUxJRAorICAgICJpZHhfY2NhdXgiIHN0 aXIgKGNvbCkgSU5WQUxJRAorCiA8L3Byb2dyYW1saXN0aW5nPgogCiAgICAgSWYgdGhlIGluZGV4 IG1hcmtlZCA8bGl0ZXJhbD5JTlZBTElEPC9saXRlcmFsPiBpcyBzdWZmaXhlZAotICAgIDxsaXRl cmFsPmNjbmV3PC9saXRlcmFsPiwgdGhlbiBpdCBjb3JyZXNwb25kcyB0byB0aGUgdHJhbnNpZW50 CisgICAgPGxpdGVyYWw+Y2NuZXc8L2xpdGVyYWwgb3IgPGxpdGVyYWw+Y2NhdXg8L2xpdGVyYWw+ LCB0aGVuIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSB0cmFuc2llbnQgb3IgYXV4aWxpYXJ5CiAgICAg aW5kZXggY3JlYXRlZCBkdXJpbmcgdGhlIGNvbmN1cnJlbnQgb3BlcmF0aW9uLCBhbmQgdGhlIHJl Y29tbWVuZGVkCi0gICAgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3AgaXQgdXNpbmcgPGxpdGVy YWw+RFJPUCBJTkRFWDwvbGl0ZXJhbD4sCisgICAgcmVjb3ZlcnkgbWV0aG9kIGlzIHRvIGRyb3Ag dGhlc2UgaW5kZXhlcyB1c2luZyA8bGl0ZXJhbD5EUk9QIElOREVYPC9saXRlcmFsPiwKICAgICB0 aGVuIGF0dGVtcHQgPGNvbW1hbmQ+UkVJTkRFWCBDT05DVVJSRU5UTFk8L2NvbW1hbmQ+IGFnYWlu LgogICAgIElmIHRoZSBpbnZhbGlkIGluZGV4IGlzIGluc3RlYWQgc3VmZml4ZWQgPGxpdGVyYWw+ Y2NvbGQ8L2xpdGVyYWw+LAogICAgIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSBvcmlnaW5hbCBpbmRl eCB3aGljaCBjb3VsZCBub3QgYmUgZHJvcHBlZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL1JFQURNRS5IT1QgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9U CmluZGV4IDgyOWRhZDExOTRlLi5kNDE2MDljOTdjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvUkVBRE1FLkhPVAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFE TUUuSE9UCkBAIC0zNzUsNiArMzc1LDExIEBAIGNvbnN0cmFpbnQgb24gd2hpY2ggdXBkYXRlcyBj YW4gYmUgSE9ULiAgT3RoZXIgdHJhbnNhY3Rpb25zIG11c3QgaW5jbHVkZQogc3VjaCBhbiBpbmRl eCB3aGVuIGRldGVybWluaW5nIEhPVC1zYWZldHkgb2YgdXBkYXRlcywgZXZlbiB0aG91Z2ggdGhl eQogbXVzdCBpZ25vcmUgaXQgZm9yIGJvdGggaW5zZXJ0aW9uIGFuZCBzZWFyY2hpbmcgcHVycG9z ZXMuCiAKK0Fsc28sIHNwZWNpYWwgYXV4aWxpYXJ5IGluZGV4IGlzIGNyZWF0ZWQgdGhlIHNhbWUg d2F5LiBJdCBtYXJrZWQgYXMKKyJyZWFkeSBmb3IgaW5zZXJ0cyIgd2l0aG91dCBhbnkgYWN0dWFs IHRhYmxlIHNjYW4uIEl0cyBwdXJwb3NlIGlzIGNvbGxlY3QKK25ldyB0dXBsZXMgaW5zZXJ0ZWQg aW50byB0YWJsZSB3aGlsZSBvdXIgdGFyZ2V0IGluZGV4IGlzIHN0aWxsICJub3QgcmVhZHkKK2Zv ciBpbnNlcnRzIgorCiBXZSBtdXN0IGRvIHRoaXMgdG8gYXZvaWQgbWFraW5nIGluY29ycmVjdCBp bmRleCBlbnRyaWVzLiAgRm9yIGV4YW1wbGUsCiBzdXBwb3NlIHdlIGFyZSBidWlsZGluZyBhbiBp bmRleCBvbiBjb2x1bW4gWCBhbmQgd2UgbWFrZSBhbiBpbmRleCBlbnRyeSBmb3IKIGEgbm9uLUhP VCB0dXBsZSB3aXRoIFg9MS4gIFRoZW4gc29tZSBvdGhlciBiYWNrZW5kLCB1bmF3YXJlIHRoYXQg WCBpcyBhbgpAQCAtMzk0LDE0ICszOTksMTQgQEAgQXMgYWJvdmUsIHdlIHBvaW50IHRoZSBpbmRl eCBlbnRyeSBhdCB0aGUgcm9vdCBvZiB0aGUgSE9ULXVwZGF0ZSBjaGFpbiBidXQgd2UKIHVzZSB0 aGUga2V5IHZhbHVlIGZyb20gdGhlIGxpdmUgdHVwbGUuCiAKIFdlIG1hcmsgdGhlIGluZGV4IG9w ZW4gZm9yIGluc2VydHMgKGJ1dCBzdGlsbCBub3QgcmVhZHkgZm9yIHJlYWRzKSB0aGVuCi13ZSBh Z2FpbiB3YWl0IGZvciB0cmFuc2FjdGlvbnMgd2hpY2ggaGF2ZSB0aGUgdGFibGUgb3Blbi4gIFRo ZW4gd2UgdGFrZQotYSBzZWNvbmQgcmVmZXJlbmNlIHNuYXBzaG90IGFuZCB2YWxpZGF0ZSB0aGUg aW5kZXguICBUaGlzIHNlYXJjaGVzIGZvcgotdHVwbGVzIG1pc3NpbmcgZnJvbSB0aGUgaW5kZXgs IGFuZCBpbnNlcnRzIGFueSBtaXNzaW5nIG9uZXMuICBBZ2FpbiwKLXRoZSBpbmRleCBlbnRyaWVz IGhhdmUgdG8gaGF2ZSBUSURzIGVxdWFsIHRvIEhPVC1jaGFpbiByb290IFRJRHMsIGJ1dAord2Ug YWdhaW4gd2FpdCBmb3IgdHJhbnNhY3Rpb25zIHdoaWNoIGhhdmUgdGhlIHRhYmxlIG9wZW4uICBU aGVuIHZhbGlkYXRlCit0aGUgaW5kZXguICBUaGlzIHNlYXJjaGVzIGZvciB0dXBsZXMgbWlzc2lu ZyBmcm9tIHRoZSBpbmRleCBpbiBhdXhpbGlhcnkKK2luZGV4LCBhbmQgaW5zZXJ0cyBhbnkgbWlz c2luZyBvbmVzIGlmIHRoZW0gdmlzaWJsZSB0byBmcmVzaCBzbmFwc2hvdC4KK0FnYWluLCB0aGUg aW5kZXggZW50cmllcyBoYXZlIHRvIGhhdmUgVElEcyBlcXVhbCB0byBIT1QtY2hhaW4gcm9vdCBU SURzLCBidXQKIHRoZSB2YWx1ZSB0byBiZSBpbnNlcnRlZCBpcyB0aGUgb25lIGZyb20gdGhlIGxp dmUgdHVwbGUuCiAKIFRoZW4gd2Ugd2FpdCB1bnRpbCBldmVyeSB0cmFuc2FjdGlvbiB0aGF0IGNv dWxkIGhhdmUgYSBzbmFwc2hvdCBvbGRlciB0aGFuCi10aGUgc2Vjb25kIHJlZmVyZW5jZSBzbmFw c2hvdCBpcyBmaW5pc2hlZC4gIFRoaXMgZW5zdXJlcyB0aGF0IG5vYm9keSBpcwordGhlIGxhdGVz dCB1c2VkIHNuYXBzaG90IGlzIGZpbmlzaGVkLiAgVGhpcyBlbnN1cmVzIHRoYXQgbm9ib2R5IGlz CiBhbGl2ZSBhbnkgbG9uZ2VyIHdobyBjb3VsZCBuZWVkIHRvIHNlZSBhbnkgdHVwbGVzIHRoYXQg bWlnaHQgYmUgbWlzc2luZwogZnJvbSB0aGUgaW5kZXgsIGFzIHdlbGwgYXMgZW5zdXJpbmcgdGhh dCBubyBvbmUgY2FuIHNlZSBhbnkgaW5jb25zaXN0ZW50CiByb3dzIGluIGEgYnJva2VuIEhPVCBj aGFpbiAodGhlIGZpcnN0IGNvbmRpdGlvbiBpcyBzdHJvbmdlciB0aGFuIHRoZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggZmE1ODJkM2UyZDYuLjJlM2U4YTY3 OGM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTQxLDYg KzQxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKICNpbmNsdWRlICJzdG9yYWdl L2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAgLTE3NzcsMjQ2ICsx Nzc4LDQ1MCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJcmV0dXJuIHJlbHR1cGxlczsKIH0KIAotc3RhdGljIHZvaWQKKy8qCisgKiBDYWxj dWxhdGUgc2V0IGRpZmZlcmVuY2UgKHJlbGF0aXZlIGNvbXBsZW1lbnQpIG9mIG1haW4gYW5kIGF1 eAorICogc2V0cy4KKyAqCisgKiBBbGwgcmVjb3JkcyB3aGljaCBhcmUgcHJlc2VudCBpbiBhdXhs aWFyeSB0dXBsZXNvcnQgYnV0IG5vdCBpcworICogbWFpbiBhcmUgYWRkZWQgdG8gdGhlIHN0b3Jl LgorICoKKyAqIEluIHNldCB0aGVvcnkgbm90YXRpb24gc3RvcmUgPSBhdXggLSBtYWluIG9yIHN0 b3JlID0gYXV4IC8gbWFpbi4KKyAqCisgKiByZXR1cm5zIG51bWJlciBvZiBpdGVtcyBhZGRlZCB0 byBzdG9yZQorICovCitzdGF0aWMgaW50CitoZWFwYW1faW5kZXhfdmFsaWRhdGVfdHVwbGVzb3J0 X2RpZmZlcmVuY2UoVHVwbGVzb3J0c3RhdGUgICptYWluLAorCQkJCQkJCQkJCSAgIFR1cGxlc29y dHN0YXRlICAqYXV4LAorCQkJCQkJCQkJCSAgIFR1cGxlc3RvcmVzdGF0ZSAqc3RvcmUpCit7CisJ aW50CQkJCW51bSA9IDA7CisJLyogc3RhdGUgdmFyaWFibGVzIGZvciB0aGUgbWVyZ2UgKi8KKwlJ dGVtUG9pbnRlciAJaW5kZXhjdXJzb3IgPSBOVUxMLAorCQkJCQlhdXhpbmRleGN1cnNvciA9IE5V TEw7CisJSXRlbVBvaW50ZXJEYXRhIGRlY29kZWQsCisJCQkJCWF1eGRlY29kZWQ7CisJYm9vbAkJ CXR1cGxlc29ydF9lbXB0eSA9IGZhbHNlLAorCQkJCQlhdXh0dXBsZXNvcnRfZW1wdHkgPSBmYWxz ZTsKKworCS8qIEluaXRpYWxpemUgcG9pbnRlcnMuICovCisJSXRlbVBvaW50ZXJTZXRJbnZhbGlk KCZkZWNvZGVkKTsKKwlJdGVtUG9pbnRlclNldEludmFsaWQoJmF1eGRlY29kZWQpOworCisJLyoK KwkgKiBNYWluIGxvb3A6IHdlIHN0ZXAgdGhyb3VnaCB0aGUgYXV4aWxpYXJ5IHNvcnQgKGF1eFN0 YXRlLT50dXBsZXNvcnQpLAorCSAqIHdoaWNoIGhvbGRzIFRJRHMgdGhhdCBtdXN0IGNvbXBhcmVk IHRvIHRob3NlIGZyb20gdGhlICJtYWluIiBzb3J0CisJICogKHN0YXRlLT50dXBsZXNvcnQpLgor CSAqLworCXdoaWxlICghYXV4dHVwbGVzb3J0X2VtcHR5KQorCXsKKwkJRGF0dW0JCXRzX3ZhbDsK KwkJYm9vbAkJdHNfaXNudWxsOworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qCisJ CSogQXR0ZW1wdCB0byBmZXRjaCB0aGUgbmV4dCBUSUQgZnJvbSB0aGUgYXV4aWxpYXJ5IHNvcnQu IElmIGl0J3MKKwkJKiBlbXB0eSwgd2Ugc2V0IGF1eGluZGV4Y3Vyc29yIHRvIE5VTEwuCisJCSov CisJCWF1eHR1cGxlc29ydF9lbXB0eSA9ICF0dXBsZXNvcnRfZ2V0ZGF0dW0oYXV4LCB0cnVlLAor CQkJCQkJCQkJCQkJIGZhbHNlLCAmdHNfdmFsLCAmdHNfaXNudWxsLAorCQkJCQkJCQkJCQkJIE5V TEwpOworCQlBc3NlcnQoYXV4dHVwbGVzb3J0X2VtcHR5IHx8ICF0c19pc251bGwpOworCQlpZiAo IWF1eHR1cGxlc29ydF9lbXB0eSkKKwkJeworCQkJaXRlbXB0cl9kZWNvZGUoJmF1eGRlY29kZWQs IERhdHVtR2V0SW50NjQodHNfdmFsKSk7CisJCQlhdXhpbmRleGN1cnNvciA9ICZhdXhkZWNvZGVk OworCQl9CisJCWVsc2UKKwkJeworCQkJYXV4aW5kZXhjdXJzb3IgPSBOVUxMOworCQl9CisKKwkJ LyoKKwkJKiBJZiB0aGUgYXV4aWxpYXJ5IHNvcnQgaXMgbm90IHlldCBlbXB0eSwgd2Ugbm93IHRy eSB0byBzeW5jaHJvbml6ZQorCQkqIHRoZSAibWFpbiIgc29ydCBjdXJzb3IgKGluZGV4Y3Vyc29y KSB3aXRoIGF1eGluZGV4Y3Vyc29yLiBXZSBhZHZhbmNlCisJCSogdGhlIG1haW4gc29ydCBjdXJz b3IgdW50aWwgd2UndmUgcmVhY2hlZCBvciBwYXNzZWQgdGhlIGF1eGlsaWFyeSBUSUQuCisJCSov CisJCWlmICghYXV4dHVwbGVzb3J0X2VtcHR5KQorCQl7CisJCQkvKgorCQkJICogTW92ZSB0aGUg bWFpbiBzb3J0IGZvcndhcmQgd2hpbGU6CisJCQkgKiAgICgxKSBJdCdzIG5vdCBleGhhdXN0ZWQg KHR1cGxlc29ydF9lbXB0eSA9PSBmYWxzZSksIGFuZAorCQkJICogICAoMikgRWl0aGVyIGluZGV4 Y3Vyc29yIGlzIE5VTEwgKGZpcnN0IGl0ZXJhdGlvbikgb3IKKwkJCSAqICAgICAgIGluZGV4Y3Vy c29yIDwgYXV4aW5kZXhjdXJzb3IgaW4gVElEIG9yZGVyLgorCQkJICovCisJCQl3aGlsZSAoIXR1 cGxlc29ydF9lbXB0eSAmJiAoaW5kZXhjdXJzb3IgPT0gTlVMTCB8fCAvKiBudWxsIG9uIGZpcnN0 IHRpbWUgaGVyZSAqLworCQkJCQkJSXRlbVBvaW50ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCBhdXhp bmRleGN1cnNvcikgPCAwKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIEdldCB0aGUgbmV4dCBUSUQg ZnJvbSB0aGUgbWFpbiBzb3J0LiBJZiBpdCdzIGVtcHR5LAorCQkJCSAqIHdlIHNldCBpbmRleGN1 cnNvciB0byBOVUxMLgorCQkJCSAqLworCQkJCXR1cGxlc29ydF9lbXB0eSA9ICF0dXBsZXNvcnRf Z2V0ZGF0dW0obWFpbiwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQkgIGZhbHNlLCAmdHNfdmFsLCAmdHNf aXNudWxsLAorCQkJCQkJCQkJCQkJCSAgTlVMTCk7CisJCQkJQXNzZXJ0KHR1cGxlc29ydF9lbXB0 eSB8fCAhdHNfaXNudWxsKTsKKworCQkJCWlmICghdHVwbGVzb3J0X2VtcHR5KQorCQkJCXsKKwkJ CQkJaXRlbXB0cl9kZWNvZGUoJmRlY29kZWQsIERhdHVtR2V0SW50NjQodHNfdmFsKSk7CisJCQkJ CWluZGV4Y3Vyc29yID0gJmRlY29kZWQ7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWlu ZGV4Y3Vyc29yID0gTlVMTDsKKwkJCQl9CisKKwkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwor CQkJfQorCisJCQkvKgorCQkJICogTm93LCBpZiBlaXRoZXI6CisJCQkgKiAgLSB0aGUgbWFpbiBz b3J0IGlzIGVtcHR5LCBvcgorCQkJICogIC0gaW5kZXhjdXJzb3IgPiBhdXhpbmRleGN1cnNvciwK KwkJCSAqCisJCQkgKiB0aGVuIGF1eGluZGV4Y3Vyc29yIGlkZW50aWZpZXMgYSBUSUQgdGhhdCBk b2Vzbid0IGFwcGVhciBpbgorCQkJICogdGhlIG1haW4gc29ydC4gV2UgbGlrZWx5IG5lZWQgdG8g aW5zZXJ0IGl0CisJCQkgKiBpbnRvIHRoZSB0YXJnZXQgaW5kZXggaWYgaXTigJlzIHZpc2libGUg aW4gdGhlIGhlYXAuCisJCQkgKi8KKwkJCWlmICh0dXBsZXNvcnRfZW1wdHkgfHwgSXRlbVBvaW50 ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCBhdXhpbmRleGN1cnNvcikgPiAwKQorCQkJeworCQkJCXR1 cGxlc3RvcmVfcHV0ZGF0dW0oc3RvcmUsIEludDY0R2V0RGF0dW0oaXRlbXB0cl9lbmNvZGUoYXV4 aW5kZXhjdXJzb3IpKSk7CisJCQkJbnVtKys7CisJCQl9CisJCX0KKwl9CisKKwlyZXR1cm4gbnVt OworfQorCit0eXBlZGVmIHN0cnVjdCBWYWxpZGF0ZUluZGV4U2NhblN0YXRlCit7CisJVHVwbGVz dG9yZXN0YXRlCQkqc3RvcmU7CisJQmxvY2tOdW1iZXIJCQlwcmV2X2Jsb2NrX251bWJlcjsKKwlP ZmZzZXROdW1iZXIJCXByZXZfb2ZmX29mZnNldF9udW1iZXI7Cit9IFZhbGlkYXRlSW5kZXhTY2Fu U3RhdGU7CisKKy8qCisgKiBUaGlzIGlzIFJlYWRTdHJlYW1CbG9ja051bWJlckNCIGltcGxlbWVu dGF0aW9uIHdoaWNoIHdvcmtzIGFzIGZvbGxvd3M6CisgKgorICogMSkgSXQgaXRlcmF0ZXMgb3Zl ciBhIHNvcnRlZCB0dXBsZXN0b3JlLCB3aGVyZSBlYWNoIGVsZW1lbnQgaXMgYW4gZW5jb2RlZAor ICogICAgSXRlbVBvaW50ZXIKKyAqCisgKiAyKSBJdCByZXR1cm5zIHRoZSBjdXJyZW50IEJsb2Nr TnVtYmVyIGFuZCBjb2xsZWN0cyBhbGwgT2Zmc2V0TnVtYmVycworICogICAgZm9yIHRoYXQgYmxv Y2sgaW4gcGVyX2J1ZmZlcl9kYXRhLgorICoKKyAqIDMpIE9uY2UgdGhlIGNvZGUgZW5jb3VudGVy cyBhIG5ldyBCbG9ja051bWJlciwgaXQgc3RvcHMgcmVhZGluZyBtb3JlCisgKiAgICBvZmZzZXRz IGFuZCBzYXZlcyB0aGUgT2Zmc2V0TnVtYmVyIG9mIHRoZSBuZXcgYmxvY2sgZm9yIHRoZSBuZXh0 IGNhbGwuCisgKgorICogNCkgVGhlIGxpc3Qgb2Ygb2Zmc2V0cyBmb3IgYSBibG9jayBpcyBhbHdh eXMgdGVybWluYXRlZCB3aXRoIEludmFsaWRPZmZzZXROdW1iZXIuCisgKgorICogVGhpcyBmdW5j dGlvbiBpcyBpbnRlbmRlZCB0byBiZSByZXBlYXRlZGx5IGNhbGxlZCwgZWFjaCB0aW1lIHJldHVy bmluZworICogdGhlIG5leHQgYmxvY2sgYW5kIGl0cyBjb3JyZXNwb25kaW5nIHNldCBvZiBvZmZz ZXRzLgorICovCitzdGF0aWMgQmxvY2tOdW1iZXIKK2hlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2Fu X3JlYWRfc3RyZWFtX25leHQoCisJCQkJCQkJCSAgUmVhZFN0cmVhbSAqc3RyZWFtLAorCQkJCQkJ CQkgIHZvaWQgKnZvaWRfY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLAorCQkJCQkJCQkgIHZvaWQgKnZv aWRfcGVyX2J1ZmZlcl9kYXRhCisJCQkJCQkJCSAgKQoreworCWJvb2wgc2hvdWRfZnJlZTsKKwlE YXR1bSBkYXR1bTsKKwlCbG9ja051bWJlciByZXN1bHQgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CisJ aW50IGkgPSAwOworCisJLyoKKwkgKiBSZXRyaWV2ZSB0aGUgc3BlY2lhbGl6ZWQgY2FsbGJhY2sg c3RhdGUgYW5kIHRoZSBvdXRwdXQgYnVmZmVyLgorCSAqIGNhbGxiYWNrX3ByaXZhdGVfZGF0YSBr ZWVwcyB0cmFjayBvZiB0aGUgcHJldmlvdXMgYmxvY2sgYW5kIG9mZnNldAorCSAqIGZyb20gYSBw cmlvciBpbnZvY2F0aW9uLCBpZiBhbnkuCisJICovCisJVmFsaWRhdGVJbmRleFNjYW5TdGF0ZSAq Y2FsbGJhY2tfcHJpdmF0ZV9kYXRhID0gdm9pZF9jYWxsYmFja19wcml2YXRlX2RhdGE7CisJT2Zm c2V0TnVtYmVyICpwZXJfYnVmZmVyX2RhdGEgPSB2b2lkX3Blcl9idWZmZXJfZGF0YTsKKworCS8q CisJICogSWYgdGhlcmUgaXMgYSAibGVmdG92ZXIiIG9mZnNldCBudW1iZXIgZnJvbSB0aGUgcHJl dmlvdXMgaW52b2NhdGlvbiwKKwkgKiBpdCBtZWFucyB3ZSBoYWQgc3dpdGNoZWQgdG8gYSBuZXcg YmxvY2sgaW4gdGhlIG1pZGRsZSBvZiB0aGUgbGFzdCBjYWxsLgorCSAqIFdlIHBsYWNlIHRoYXQg bGVmdG92ZXIgb2Zmc2V0IG51bWJlciBpbnRvIHRoZSBidWZmZXIgZmlyc3QuCisJICovCisJaWYg KGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9vZmZfb2Zmc2V0X251bWJlciAhPSBJbnZhbGlk T2Zmc2V0TnVtYmVyKQorCXsKKwkJQXNzZXJ0KGNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9i bG9ja19udW1iZXIgIT0gSW52YWxpZEJsb2NrTnVtYmVyKTsKKwkJLyoKKwkJICogJ3Jlc3VsdCcg aXMgdGhlIGJsb2NrIG51bWJlciB0byByZXR1cm4uIFdlIHNldCBpdCB0byB0aGUgYmxvY2sKKwkJ ICogZnJvbSB0aGUgcHJldmlvdXMgbGVmdG92ZXIgb2Zmc2V0LgorCQkgKi8KKwkJcmVzdWx0ID0g Y2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X2Jsb2NrX251bWJlcjsKKwkJLyogUGxhY2UgbGVm dG92ZXIgb2Zmc2V0IG51bWJlciBpbiB0aGUgb3V0cHV0IGJ1ZmZlci4gKi8KKwkJcGVyX2J1ZmZl cl9kYXRhW2krK10gPSBjYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfb2ZmX29mZnNldF9udW1i ZXI7CisJCS8qCisJCSAqIENsZWFyIHRoZSBsZWZ0b3ZlciBvZmZzZXQgbnVtYmVyIHNvIGl0IHdv bid0IGJlIHJldXNlZCB1bmxlc3MKKwkJICogd2UgZW5jb3VudGVyIGFub3RoZXIgYmxvY2sgY2hh bmdlLgorCQkgKi8KKwkJY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLT5wcmV2X29mZl9vZmZzZXRfbnVt YmVyID0gSW52YWxpZE9mZnNldE51bWJlcjsKKwl9CisKKwkvKgorCSAqIFJlYWQgZnJvbSB0aGUg dHVwbGVzdG9yZSB1bnRpbCB3ZSBlaXRoZXIgcnVuIG91dCBvZiB0dXBsZXMgb3Igd2UKKwkgKiBl bmNvdW50ZXIgYSBibG9jayBjaGFuZ2UuIEZvciBlYWNoIHR1cGxlOgorCSAqCisJICogICAxKSBE ZWNvZGUgaXRzIGJsb2NrL29mZnNldCBmcm9tIHRoZSBEYXR1bS4KKwkgKiAgIDIpIElmIGl0J3Mg dGhlIGZpcnN0IHRpbWUgaW4gdGhpcyBjYWxsIChwcmV2X2Jsb2NrX251bWJlciA9PSBJbnZhbGlk QmxvY2tOdW1iZXIpLAorCSAqICAgICAgaW5pdGlhbGl6ZSBwcmV2X2Jsb2NrX251bWJlci4KKwkg KiAgIDMpIElmIHRoZSBibG9jayBudW1iZXIgbWF0Y2hlcyB0aGUgY3VycmVudCBibG9jaywgY29s bGVjdCB0aGUgb2Zmc2V0LgorCSAqICAgNCkgSWYgdGhlIGJsb2NrIG51bWJlciBkaWZmZXJzLCBz YXZlIHRoYXQgb2Zmc2V0IGFzIGxlZnRvdmVyIGFuZCBicmVhaworCSAqICAgICAgc28gdGhhdCB0 aGUgbmV4dCBjYWxsIGNhbiBoYW5kbGUgdGhlIG5ldyBibG9jay4KKwkgKi8KKwl3aGlsZSAodHVw bGVzdG9yZV9nZXRkYXR1bShjYWxsYmFja19wcml2YXRlX2RhdGEtPnN0b3JlLCB0cnVlLCAmc2hv dWRfZnJlZSwgJmRhdHVtKSkKKwl7CisJCUJsb2NrTnVtYmVyIG5leHRfYmxvY2tfbnVtYmVyOwor CQlJdGVtUG9pbnRlckRhdGEgbmV4dF9kYXRhOworCisJCS8qIERlY29kZSB0aGUgZGF0dW0gaW50 byBhbiBJdGVtUG9pbnRlciAoYmxvY2sgKyBvZmZzZXQpLiAqLworCQlpdGVtcHRyX2RlY29kZSgm bmV4dF9kYXRhLCBEYXR1bUdldEludDY0KGRhdHVtKSk7CisJCW5leHRfYmxvY2tfbnVtYmVyID0g SXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmbmV4dF9kYXRhKTsKKworCQkvKgorCQkgKiBJZiB3 ZSBoYXZlbid0IHNldCBhIGJsb2NrIG51bWJlciB5ZXQgdGhpcyByb3VuZCwgaW5pdGlhbGl6ZSBp dAorCQkgKiB1c2luZyB0aGUgZmlyc3QgdHVwbGUgd2UgcmVhZC4KKwkJICovCisJCWlmIChjYWxs YmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyID09IEludmFsaWRCbG9ja051bWJl cikKKwkJCWNhbGxiYWNrX3ByaXZhdGVfZGF0YS0+cHJldl9ibG9ja19udW1iZXIgPSBuZXh0X2Js b2NrX251bWJlcjsKKworCQkvKgorCQkgKiBBbHdheXMgc2V0IHRoZSByZXN1bHQgdG8gYmUgdGhl ICJjdXJyZW50IiBibG9jayBudW1iZXIKKwkJICogd2UgYXJlIGZpbGxpbmcgb2Zmc2V0cyBmb3Iu CisJCSAqLworCQlyZXN1bHQgPSBjYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVt YmVyOworCisJCS8qCisJCSAqIElmIHRoaXMgdHVwbGUgaXMgZnJvbSB0aGUgc2FtZSBibG9jaywg anVzdCBzdG9yZSBpdHMgb2Zmc2V0CisJCSAqIGluIG91ciBwZXJfYnVmZmVyX2RhdGEgYXJyYXku CisJCSAqLworCQlpZiAobmV4dF9ibG9ja19udW1iZXIgPT0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRh LT5wcmV2X2Jsb2NrX251bWJlcikKKwkJeworCQkJcGVyX2J1ZmZlcl9kYXRhW2krK10gPSBJdGVt UG9pbnRlckdldE9mZnNldE51bWJlcigmbmV4dF9kYXRhKTsKKworCQkJLyogRnJlZSB0aGUgZGF0 dW0gaWYgbmVlZGVkLiAqLworCQkJaWYgKHNob3VkX2ZyZWUpCisJCQkJcGZyZWUoRGF0dW1HZXRQ b2ludGVyKGRhdHVtKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogSWYgdGhlIGJs b2NrIGp1c3QgY2hhbmdlZCwgc3RvcmUgdGhlIG9mZnNldCBvZiB0aGUgbmV3IGJsb2NrCisJCQkg KiBhcyBsZWZ0b3ZlciBmb3IgdGhlIG5leHQgaW52b2NhdGlvbiBhbmQgYnJlYWsgb3V0LgorCQkJ ICovCisJCQljYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfYmxvY2tfbnVtYmVyID0gbmV4dF9i bG9ja19udW1iZXI7CisJCQljYWxsYmFja19wcml2YXRlX2RhdGEtPnByZXZfb2ZmX29mZnNldF9u dW1iZXIgPSAgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJm5leHRfZGF0YSk7CisKKwkJCS8q IEZyZWUgdGhlIGRhdHVtIGlmIG5lZWRlZC4gKi8KKwkJCWlmIChzaG91ZF9mcmVlKQorCQkJCXBm cmVlKERhdHVtR2V0UG9pbnRlcihkYXR1bSkpOworCisJCQkvKiBCcmVhayB0byBsZXQgdGhlIG5l eHQgY2FsbCBoYW5kbGUgdGhlIG5ldyBibG9jay4gKi8KKwkJCWJyZWFrOworCQl9CisJfQorCisJ LyoKKwkgKiBUZXJtaW5hdGUgdGhlIGxpc3Qgb2Ygb2Zmc2V0cyBmb3IgdGhpcyBibG9jayB3aXRo IGFuIEludmFsaWRPZmZzZXROdW1iZXIuCisJICovCisJcGVyX2J1ZmZlcl9kYXRhW2ldID0gSW52 YWxpZE9mZnNldE51bWJlcjsKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgVHJhbnNhY3Rp b25JZAogaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog CQkJCQkJICAgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJCQkJCSAgIEluZGV4SW5mbyAqaW5k ZXhJbmZvLAotCQkJCQkJICAgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkgICBWYWxpZGF0ZUlu ZGV4U3RhdGUgKnN0YXRlKQorCQkJCQkJICAgVmFsaWRhdGVJbmRleFN0YXRlICpzdGF0ZSwKKwkJ CQkJCSAgIFZhbGlkYXRlSW5kZXhTdGF0ZSAqYXV4U3RhdGUpCiB7Ci0JVGFibGVTY2FuRGVzYyBz Y2FuOwotCUhlYXBTY2FuRGVzYyBoc2NhbjsKLQlIZWFwVHVwbGUJaGVhcFR1cGxlOworCVRyYW5z YWN0aW9uSWQgbGltaXRYbWluOworCiAJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJ Ym9vbAkJaXNudWxsW0lOREVYX01BWF9LRVlTXTsKLQlFeHByU3RhdGUgICpwcmVkaWNhdGU7Ci0J VHVwbGVUYWJsZVNsb3QgKnNsb3Q7Ci0JRVN0YXRlCSAgICplc3RhdGU7Ci0JRXhwckNvbnRleHQg KmVjb250ZXh0OwotCUJsb2NrTnVtYmVyIHJvb3RfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7 Ci0JT2Zmc2V0TnVtYmVyIHJvb3Rfb2Zmc2V0c1tNYXhIZWFwVHVwbGVzUGVyUGFnZV07Ci0JYm9v bAkJaW5faW5kZXhbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwotCUJsb2NrTnVtYmVyIHByZXZpb3Vz X2Jsa25vID0gSW52YWxpZEJsb2NrTnVtYmVyOwotCi0JLyogc3RhdGUgdmFyaWFibGVzIGZvciB0 aGUgbWVyZ2UgKi8KLQlJdGVtUG9pbnRlciBpbmRleGN1cnNvciA9IE5VTEw7Ci0JSXRlbVBvaW50 ZXJEYXRhIGRlY29kZWQ7Ci0JYm9vbAkJdHVwbGVzb3J0X2VtcHR5ID0gZmFsc2U7CisKKwlTbmFw c2hvdAkJc25hcHNob3Q7CisJVHVwbGVUYWJsZVNsb3QgICpzbG90OworCUVTdGF0ZQkJCSplc3Rh dGU7CisJRXhwckNvbnRleHQJCSplY29udGV4dDsKKwlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3Ry YXRlZ3kgPSBHZXRBY2Nlc3NTdHJhdGVneShCQVNfQlVMS1JFQUQpOworCisJaW50CQkJCW51bV90 b19jaGVjazsKKwlUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc19mb3JfY2hlY2s7CisJVmFsaWRhdGVJ bmRleFNjYW5TdGF0ZSBjYWxsYmFja19wcml2YXRlX2RhdGE7CisKKwlCdWZmZXIgYnVmOworCU9m ZnNldE51bWJlciogdHVwbGVzOworCVJlYWRTdHJlYW0gKnJlYWRfc3RyZWFtOworCisJLyogVXNl IDEwJSBvZiBtZW1vcnkgZm9yIHR1cGxlIHN0b3JlLiAqLworCWludAkJc3RvcmVfd29ya19tZW1f cGFydCA9IG1haW50ZW5hbmNlX3dvcmtfbWVtIC8gMTA7CisKKwkvKgorCSAqIE5vdyB0YWtlIHRo ZSBzbmFwc2hvdCB0aGF0IHdpbGwgYmUgdXNlZCBieSB0byBmaWx0ZXIgY2FuZGlkYXRlCisJICog dHVwbGVzLgorCSAqCisJICogQmV3YXJlISAgVGhlcmUgbWlnaHQgc3RpbGwgYmUgc25hcHNob3Rz IGluIHVzZSB0aGF0IHRyZWF0IHNvbWUgdHJhbnNhY3Rpb24KKwkgKiBhcyBpbi1wcm9ncmVzcyB0 aGF0IG91ciB0ZW1wb3Jhcnkgc25hcHNob3QgdHJlYXRzIGFzIGNvbW1pdHRlZC4KKwkgKgorCSAq IElmIHN1Y2ggYSByZWNlbnRseS1jb21taXR0ZWQgdHJhbnNhY3Rpb24gZGVsZXRlZCB0dXBsZXMg aW4gdGhlIHRhYmxlLAorCSAqIHdlIHdpbGwgbm90IGluY2x1ZGUgdGhlbSBpbiB0aGUgaW5kZXg7 IHlldCB0aG9zZSB0cmFuc2FjdGlvbnMgd2hpY2gKKwkgKiBzZWUgdGhlIGRlbGV0aW5nIG9uZSBh cyBzdGlsbC1pbi1wcm9ncmVzcyB3aWxsIGV4cGVjdCBzdWNoIHR1cGxlcyB0bworCSAqIGJlIHRo ZXJlIG9uY2Ugd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQuCisJICoKKwkgKiBXZSBzb2x2ZSB0 aGlzIGJ5IHdhaXRpbmcgZm9yIGFsbCBlbmRhbmdlcmVkIHRyYW5zYWN0aW9ucyB0byBleGl0IGJl Zm9yZQorCSAqIHdlIG1hcmsgdGhlIGluZGV4IGFzIHZhbGlkLCBmb3IgdGhhdCByZWFzb24gbGlt aXRYbWluIGlzIHN1cHBvcnRlZC4KKwkgKgorCSAqIFdlIGFsc28gc2V0IEFjdGl2ZVNuYXBzaG90 IHRvIHRoaXMgc25hcCwgc2luY2UgZnVuY3Rpb25zIGluIGluZGV4ZXMgbWF5CisJICogbmVlZCBh IHNuYXBzaG90LgorCSAqLworCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOworCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJbGltaXRY bWluID0gc25hcHNob3QtPnhtaW47CisKKwkvKgorCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFs dWVzIGZvciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZworCSAqIGl0ZW0g cG9pbnRlcnMuICBUaGlzIGNhbiBiZSBzaWduaWZpY2FudGx5IGZhc3RlciwgcHJpbWFyaWx5IGJl Y2F1c2UgVElECisJICogaXMgYSBwYXNzLWJ5LXJlZmVyZW5jZSB0eXBlIG9uIGFsbCBwbGF0Zm9y bXMsIHdoZXJlYXMgaW50OCBpcworCSAqIHBhc3MtYnktdmFsdWUgb24gbW9zdCBwbGF0Zm9ybXMu CisJICovCisJdHVwbGVzX2Zvcl9jaGVjayA9ICB0dXBsZXN0b3JlX2JlZ2luX2RhdHVtKElOVDhP SUQsIGZhbHNlLCBmYWxzZSwgc3RvcmVfd29ya19tZW1fcGFydCk7CiAKIAkvKgogCSAqIHNhbml0 eSBjaGVja3MKIAkgKi8KIAlBc3NlcnQoT2lkSXNWYWxpZChpbmRleFJlbGF0aW9uLT5yZF9yZWwt PnJlbGFtKSk7CiAKLQkvKgotCSAqIE5lZWQgYW4gRVN0YXRlIGZvciBldmFsdWF0aW9uIG9mIGlu ZGV4IGV4cHJlc3Npb25zIGFuZCBwYXJ0aWFsLWluZGV4Ci0JICogcHJlZGljYXRlcy4gIEFsc28g YSBzbG90IHRvIGhvbGQgdGhlIGN1cnJlbnQgdHVwbGUuCi0JICovCisJbnVtX3RvX2NoZWNrID0g aGVhcGFtX2luZGV4X3ZhbGlkYXRlX3R1cGxlc29ydF9kaWZmZXJlbmNlKHN0YXRlLT50dXBsZXNv cnQsCisJCQkJCQkJCQkJCQkJCSBhdXhTdGF0ZS0+dHVwbGVzb3J0LAorCQkJCQkJCQkJCQkJCQkg dHVwbGVzX2Zvcl9jaGVjayk7CisKKwkvKiBJdCBpcyBvdXIgcmVzcG9uc2liaWxpdHkgdG8gc2xv ZSB0dXBsZSBzb3J0IGFzIGZhc3QgYXMgd2UgY2FuICovCisJdHVwbGVzb3J0X2VuZChzdGF0ZS0+ dHVwbGVzb3J0KTsKKwl0dXBsZXNvcnRfZW5kKGF1eFN0YXRlLT50dXBsZXNvcnQpOworCisJc3Rh dGUtPnR1cGxlc29ydCA9IGF1eFN0YXRlLT50dXBsZXNvcnQgPSBOVUxMOworCiAJZXN0YXRlID0g Q3JlYXRlRXhlY3V0b3JTdGF0ZSgpOwogCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4 dChlc3RhdGUpOwogCXNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXRE ZXNjcihoZWFwUmVsYXRpb24pLAotCQkJCQkJCQkJJlRUU09wc0hlYXBUdXBsZSk7CisJCQkJCQkJ CQkmVFRTT3BzQnVmZmVySGVhcFR1cGxlKTsKIAogCS8qIEFycmFuZ2UgZm9yIGVjb250ZXh0J3Mg c2NhbiB0dXBsZSB0byBiZSB0aGUgdHVwbGUgdW5kZXIgdGVzdCAqLwogCWVjb250ZXh0LT5lY3h0 X3NjYW50dXBsZSA9IHNsb3Q7CiAKLQkvKiBTZXQgdXAgZXhlY3V0aW9uIHN0YXRlIGZvciBwcmVk aWNhdGUsIGlmIGFueS4gKi8KLQlwcmVkaWNhdGUgPSBFeGVjUHJlcGFyZVF1YWwoaW5kZXhJbmZv LT5paV9QcmVkaWNhdGUsIGVzdGF0ZSk7Ci0KIAkvKgotCSAqIFByZXBhcmUgZm9yIHNjYW4gb2Yg dGhlIGJhc2UgcmVsYXRpb24uICBXZSBuZWVkIGp1c3QgdGhvc2UgdHVwbGVzCi0JICogc2F0aXNm eWluZyB0aGUgcGFzc2VkLWluIHJlZmVyZW5jZSBzbmFwc2hvdC4gIFdlIG11c3QgZGlzYWJsZSBz eW5jc2NhbgotCSAqIGhlcmUsIGJlY2F1c2UgaXQncyBjcml0aWNhbCB0aGF0IHdlIHJlYWQgZnJv bSBibG9jayB6ZXJvIGZvcndhcmQgdG8KLQkgKiBtYXRjaCB0aGUgc29ydGVkIFRJRHMuCisJICog UHJlcGFyZSB0byBmZXRjaCBoZWFwIHR1cGxlcyBpbiBpbmRleCBzdHlsZS4gVGhpcyBoZWxwcyB0 byByZWNvbnN0cnVjdAorCSAqIGEgdHVwbGUgZnJvbSB0aGUgaGVhcCB3aGVuIHdlIG9ubHkgaGF2 ZSBhbiBJdGVtUG9pbnRlci4KIAkgKi8KLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KGhl YXBSZWxhdGlvbiwJLyogcmVsYXRpb24gKi8KLQkJCQkJCQkJIHNuYXBzaG90LAkvKiBzbmFwc2hv dCAqLwotCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8KLQkJCQkJCQkJIE5VTEwsCS8q IHNjYW4ga2V5ICovCi0JCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IE9L ICovCi0JCQkJCQkJCSBmYWxzZSwJLyogc3luY3NjYW4gbm90IE9LICovCi0JCQkJCQkJCSBmYWxz ZSk7Ci0JaHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOworCWNhbGxiYWNrX3ByaXZhdGVfZGF0 YS5wcmV2X2Jsb2NrX251bWJlciA9IEludmFsaWRCbG9ja051bWJlcjsKKwljYWxsYmFja19wcml2 YXRlX2RhdGEuc3RvcmUgPSB0dXBsZXNfZm9yX2NoZWNrOworCWNhbGxiYWNrX3ByaXZhdGVfZGF0 YS5wcmV2X29mZl9vZmZzZXRfbnVtYmVyID0gSW52YWxpZE9mZnNldE51bWJlcjsKIAotCXBnc3Rh dF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfU0NBTl9CTE9DS1NfVE9UQUwsCi0JCQkJ CQkJCSBoc2Nhbi0+cnNfbmJsb2Nrcyk7CisJcmVhZF9zdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdp bl9yZWxhdGlvbihSRUFEX1NUUkVBTV9NQUlOVEVOQU5DRSwgYnN0cmF0ZWd5LAorCQkJCQkJCQkJ CQkJCQkgaGVhcFJlbGF0aW9uLCBNQUlOX0ZPUktOVU0sCisJCQkJCQkJCQkJCQkJCSBoZWFwYW1f aW5kZXhfdmFsaWRhdGVfc2Nhbl9yZWFkX3N0cmVhbV9uZXh0LAorCQkJCQkJCQkJCQkJCQkgJmNh bGxiYWNrX3ByaXZhdGVfZGF0YSwKKwkJCQkJCQkJCQkJCQkJIChNYXhIZWFwVHVwbGVzUGVyUGFn ZSArIDEpICogc2l6ZW9mKE9mZnNldE51bWJlcikpOwogCi0JLyoKLQkgKiBTY2FuIGFsbCB0dXBs ZXMgbWF0Y2hpbmcgdGhlIHNuYXBzaG90LgotCSAqLwotCXdoaWxlICgoaGVhcFR1cGxlID0gaGVh cF9nZXRuZXh0KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uKSkgIT0gTlVMTCkKKwlwZ3N0YXRf cHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNfVE9UQUwsIG51 bV90b19jaGVjayk7CisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVB VEVJRFhfVFVQTEVTX0RPTkUsIDApOworCisJd2hpbGUgKChidWYgPSByZWFkX3N0cmVhbV9uZXh0 X2J1ZmZlcihyZWFkX3N0cmVhbSwgKHZvaWQqKSAmdHVwbGVzKSkgIT0gSW52YWxpZEJ1ZmZlcikK IAl7Ci0JCUl0ZW1Qb2ludGVyIGhlYXBjdXJzb3IgPSAmaGVhcFR1cGxlLT50X3NlbGY7Ci0JCUl0 ZW1Qb2ludGVyRGF0YSByb290VHVwbGU7Ci0JCU9mZnNldE51bWJlciByb290X29mZm51bTsKKwkJ SGVhcFR1cGxlRGF0YQloZWFwX3R1cGxlX2RhdGFbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOworCQlp bnQgaTsKKwkJT2Zmc2V0TnVtYmVyIG9mZjsKKwkJQmxvY2tOdW1iZXIgYmxvY2tfbnVtYmVyOwog CiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJc3RhdGUtPmh0dXBzICs9IDE7CisJCUxv Y2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7CisJCWJsb2NrX251bWJlciA9IEJ1ZmZl ckdldEJsb2NrTnVtYmVyKGJ1Zik7CiAKLQkJaWYgKChwcmV2aW91c19ibGtubyA9PSBJbnZhbGlk QmxvY2tOdW1iZXIpIHx8Ci0JCQkoaHNjYW4tPnJzX2NibG9jayAhPSBwcmV2aW91c19ibGtubykp CisJCWkgPSAwOworCQl3aGlsZSAoKG9mZiA9IHR1cGxlc1tpXSkgIT0gSW52YWxpZE9mZnNldE51 bWJlcikKIAkJewotCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19TQ0FO X0JMT0NLU19ET05FLAotCQkJCQkJCQkJCSBoc2Nhbi0+cnNfY2Jsb2NrKTsKLQkJCXByZXZpb3Vz X2Jsa25vID0gaHNjYW4tPnJzX2NibG9jazsKKwkJCUl0ZW1Qb2ludGVyRGF0YSB0aWQ7CisJCQli b29sCQlhbGxfZGVhZCwgZm91bmQ7CisJCQlJdGVtUG9pbnRlclNldCgmdGlkLCBibG9ja19udW1i ZXIsIG9mZik7CisKKwkJCWZvdW5kID0gaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcigmdGlkLCBoZWFw UmVsYXRpb24sIGJ1Ziwgc25hcHNob3QsCisJCQkJCQkJCQkJICAgJmhlYXBfdHVwbGVfZGF0YVtp XSwgJmFsbF9kZWFkLCB0cnVlKTsKKwkJCWlmICghZm91bmQpCisJCQkJSXRlbVBvaW50ZXJTZXRJ bnZhbGlkKCZoZWFwX3R1cGxlX2RhdGFbaV0udF9zZWxmKTsKKwkJCWkrKzsKIAkJfQorCQlMb2Nr QnVmZmVyKGJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIAotCQkvKgotCQkgKiBBcyBjb21tZW50 ZWQgaW4gdGFibGVfaW5kZXhfYnVpbGRfc2Nhbiwgd2Ugc2hvdWxkIGluZGV4IGhlYXAtb25seQot CQkgKiB0dXBsZXMgdW5kZXIgdGhlIFRJRHMgb2YgdGhlaXIgcm9vdCB0dXBsZXM7IHNvIHdoZW4g d2UgYWR2YW5jZSBvbnRvCi0JCSAqIGEgbmV3IGhlYXAgcGFnZSwgYnVpbGQgYSBtYXAgb2Ygcm9v dCBpdGVtIG9mZnNldHMgb24gdGhlIHBhZ2UuCi0JCSAqCi0JCSAqIFRoaXMgY29tcGxpY2F0ZXMg bWVyZ2luZyBhZ2FpbnN0IHRoZSB0dXBsZXNvcnQgb3V0cHV0OiB3ZSB3aWxsCi0JCSAqIHZpc2l0 IHRoZSBsaXZlIHR1cGxlcyBpbiBvcmRlciBieSB0aGVpciBvZmZzZXRzLCBidXQgdGhlIHJvb3QK LQkJICogb2Zmc2V0cyB0aGF0IHdlIG5lZWQgdG8gY29tcGFyZSBhZ2FpbnN0IHRoZSBpbmRleCBj b250ZW50cyBtaWdodCBiZQotCQkgKiBvcmRlcmVkIGRpZmZlcmVudGx5LiAgU28gd2UgbWlnaHQg aGF2ZSB0byAibG9vayBiYWNrIiB3aXRoaW4gdGhlCi0JCSAqIHR1cGxlc29ydCBvdXRwdXQsIGJ1 dCBvbmx5IHdpdGhpbiB0aGUgY3VycmVudCBwYWdlLiAgV2UgaGFuZGxlIHRoYXQKLQkJICogYnkg a2VlcGluZyBhIGJvb2wgYXJyYXkgaW5faW5kZXhbXSBzaG93aW5nIGFsbCB0aGUKLQkJICogYWxy ZWFkeS1wYXNzZWQtb3ZlciB0dXBsZXNvcnQgb3V0cHV0IFRJRHMgb2YgdGhlIGN1cnJlbnQgcGFn ZS4gV2UKLQkJICogY2xlYXIgdGhhdCBhcnJheSBoZXJlLCB3aGVuIGFkdmFuY2luZyBvbnRvIGEg bmV3IGhlYXAgcGFnZS4KLQkJICovCi0JCWlmIChoc2Nhbi0+cnNfY2Jsb2NrICE9IHJvb3RfYmxr bm8pCisJCWkgPSAwOworCQl3aGlsZSAoKG9mZiA9IHR1cGxlc1tpXSkgIT0gSW52YWxpZE9mZnNl dE51bWJlcikKIAkJewotCQkJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoaHNjYW4tPnJzX2Ni dWYpOwotCi0JCQlMb2NrQnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7 Ci0JCQloZWFwX2dldF9yb290X3R1cGxlcyhwYWdlLCByb290X29mZnNldHMpOwotCQkJTG9ja0J1 ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKLQotCQkJbWVtc2V0KGlu X2luZGV4LCAwLCBzaXplb2YoaW5faW5kZXgpKTsKLQotCQkJcm9vdF9ibGtubyA9IGhzY2FuLT5y c19jYmxvY2s7Ci0JCX0KLQotCQkvKiBDb252ZXJ0IGFjdHVhbCB0dXBsZSBUSUQgdG8gcm9vdCBU SUQgKi8KLQkJcm9vdFR1cGxlID0gKmhlYXBjdXJzb3I7Ci0JCXJvb3Rfb2ZmbnVtID0gSXRlbVBv aW50ZXJHZXRPZmZzZXROdW1iZXIoaGVhcGN1cnNvcik7Ci0KLQkJaWYgKEhlYXBUdXBsZUlzSGVh cE9ubHkoaGVhcFR1cGxlKSkKLQkJewotCQkJcm9vdF9vZmZudW0gPSByb290X29mZnNldHNbcm9v dF9vZmZudW0gLSAxXTsKLQkJCWlmICghT2Zmc2V0TnVtYmVySXNWYWxpZChyb290X29mZm51bSkp Ci0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBU RUQpLAotCQkJCQkJIGVycm1zZ19pbnRlcm5hbCgiZmFpbGVkIHRvIGZpbmQgcGFyZW50IHR1cGxl IGZvciBoZWFwLW9ubHkgdHVwbGUgYXQgKCV1LCV1KSBpbiB0YWJsZSBcIiVzXCIiLAotCQkJCQkJ CQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKGhlYXBjdXJzb3IpLAotCQkJCQkJCQkJCSBJ dGVtUG9pbnRlckdldE9mZnNldE51bWJlcihoZWFwY3Vyc29yKSwKLQkJCQkJCQkJCQkgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUoaGVhcFJlbGF0aW9uKSkpKTsKLQkJCUl0ZW1Qb2ludGVyU2V0T2Zm c2V0TnVtYmVyKCZyb290VHVwbGUsIHJvb3Rfb2ZmbnVtKTsKLQkJfQotCi0JCS8qCi0JCSAqICJt ZXJnZSIgYnkgc2tpcHBpbmcgdGhyb3VnaCB0aGUgaW5kZXggdHVwbGVzIHVudGlsIHdlIGZpbmQg b3IgcGFzcwotCQkgKiB0aGUgY3VycmVudCByb290IHR1cGxlLgotCQkgKi8KLQkJd2hpbGUgKCF0 dXBsZXNvcnRfZW1wdHkgJiYKLQkJCSAgICghaW5kZXhjdXJzb3IgfHwKLQkJCQlJdGVtUG9pbnRl ckNvbXBhcmUoaW5kZXhjdXJzb3IsICZyb290VHVwbGUpIDwgMCkpCi0JCXsKLQkJCURhdHVtCQl0 c192YWw7Ci0JCQlib29sCQl0c19pc251bGw7Ci0KLQkJCWlmIChpbmRleGN1cnNvcikKKwkJCWlm IChJdGVtUG9pbnRlcklzVmFsaWQoJmhlYXBfdHVwbGVfZGF0YVtpXS50X3NlbGYpKQogCQkJewor CQkJCUl0ZW1Qb2ludGVyRGF0YSByb290X3RpZDsKKwkJCQlJdGVtUG9pbnRlclNldCgmcm9vdF90 aWQsIGJsb2NrX251bWJlciwgb2ZmKTsKKworCQkJCS8qIFJlc2V0IHRoZSBwZXItdHVwbGUgbWVt b3J5IGNvbnRleHQgZm9yIHRoZSBuZXh0IGZldGNoLiAqLworCQkJCU1lbW9yeUNvbnRleHRSZXNl dChlY29udGV4dC0+ZWN4dF9wZXJfdHVwbGVfbWVtb3J5KTsKKwkJCQlFeGVjU3RvcmVCdWZmZXJI ZWFwVHVwbGUoJmhlYXBfdHVwbGVfZGF0YVtpXSwgc2xvdCwgYnVmKTsKKworCQkJCS8qIENvbXB1 dGUgdGhlIGtleSB2YWx1ZXMgYW5kIG51bGwgZmxhZ3MgZm9yIHRoaXMgdHVwbGUuICovCisJCQkJ Rm9ybUluZGV4RGF0dW0oaW5kZXhJbmZvLAorCQkJCQkJCSAgIHNsb3QsCisJCQkJCQkJICAgZXN0 YXRlLAorCQkJCQkJCSAgIHZhbHVlcywKKwkJCQkJCQkgICBpc251bGwpOworCiAJCQkJLyoKLQkJ CQkgKiBSZW1lbWJlciBpbmRleCBpdGVtcyBzZWVuIGVhcmxpZXIgb24gdGhlIGN1cnJlbnQgaGVh cCBwYWdlCisJCQkJICogSW5zZXJ0IHRoZSB0dXBsZSBpbnRvIHRoZSB0YXJnZXQgaW5kZXguCiAJ CQkJICovCi0JCQkJaWYgKEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoaW5kZXhjdXJzb3IpID09 IHJvb3RfYmxrbm8pCi0JCQkJCWluX2luZGV4W0l0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKGlu ZGV4Y3Vyc29yKSAtIDFdID0gdHJ1ZTsKLQkJCX0KLQotCQkJdHVwbGVzb3J0X2VtcHR5ID0gIXR1 cGxlc29ydF9nZXRkYXR1bShzdGF0ZS0+dHVwbGVzb3J0LCB0cnVlLAotCQkJCQkJCQkJCQkJICBm YWxzZSwgJnRzX3ZhbCwgJnRzX2lzbnVsbCwKLQkJCQkJCQkJCQkJCSAgTlVMTCk7Ci0JCQlBc3Nl cnQodHVwbGVzb3J0X2VtcHR5IHx8ICF0c19pc251bGwpOwotCQkJaWYgKCF0dXBsZXNvcnRfZW1w dHkpCi0JCQl7Ci0JCQkJaXRlbXB0cl9kZWNvZGUoJmRlY29kZWQsIERhdHVtR2V0SW50NjQodHNf dmFsKSk7Ci0JCQkJaW5kZXhjdXJzb3IgPSAmZGVjb2RlZDsKLQkJCX0KLQkJCWVsc2UKLQkJCXsK LQkJCQkvKiBCZSB0aWR5ICovCi0JCQkJaW5kZXhjdXJzb3IgPSBOVUxMOworCQkJCWluZGV4X2lu c2VydChpbmRleFJlbGF0aW9uLAorCQkJCQkJCSB2YWx1ZXMsCisJCQkJCQkJIGlzbnVsbCwKKwkJ CQkJCQkgJnJvb3RfdGlkLCAvKiBpbnNlcnQgcm9vdCB0dXBsZSAqLworCQkJCQkJCSBoZWFwUmVs YXRpb24sCisJCQkJCQkJIGluZGV4SW5mby0+aWlfVW5pcXVlID8KKwkJCQkJCQkgVU5JUVVFX0NI RUNLX1lFUyA6IFVOSVFVRV9DSEVDS19OTywKKwkJCQkJCQkgZmFsc2UsCisJCQkJCQkJIGluZGV4 SW5mbyk7CiAJCQl9CisJCQlzdGF0ZS0+aHR1cHMgKz0gMTsKKwkJCXBnc3RhdF9wcm9ncmVzc19p bmNyX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9UVVBMRVNfRE9ORSwgMSk7CisJCQlpKys7CiAJ CX0KIAotCQkvKgotCQkgKiBJZiB0aGUgdHVwbGVzb3J0IGhhcyBvdmVyc2hvdCAqYW5kKiB3ZSBk aWRuJ3Qgc2VlIGEgbWF0Y2ggZWFybGllciwKLQkJICogdGhlbiB0aGlzIHR1cGxlIGlzIG1pc3Np bmcgZnJvbSB0aGUgaW5kZXgsIHNvIGluc2VydCBpdC4KLQkJICovCi0JCWlmICgodHVwbGVzb3J0 X2VtcHR5IHx8Ci0JCQkgSXRlbVBvaW50ZXJDb21wYXJlKGluZGV4Y3Vyc29yLCAmcm9vdFR1cGxl KSA+IDApICYmCi0JCQkhaW5faW5kZXhbcm9vdF9vZmZudW0gLSAxXSkKLQkJewotCQkJTWVtb3J5 Q29udGV4dFJlc2V0KGVjb250ZXh0LT5lY3h0X3Blcl90dXBsZV9tZW1vcnkpOwotCi0JCQkvKiBT ZXQgdXAgZm9yIHByZWRpY2F0ZSBvciBleHByZXNzaW9uIGV2YWx1YXRpb24gKi8KLQkJCUV4ZWNT dG9yZUhlYXBUdXBsZShoZWFwVHVwbGUsIHNsb3QsIGZhbHNlKTsKLQotCQkJLyoKLQkJCSAqIElu IGEgcGFydGlhbCBpbmRleCwgZGlzY2FyZCB0dXBsZXMgdGhhdCBkb24ndCBzYXRpc2Z5IHRoZQot CQkJICogcHJlZGljYXRlLgotCQkJICovCi0JCQlpZiAocHJlZGljYXRlICE9IE5VTEwpCi0JCQl7 Ci0JCQkJaWYgKCFFeGVjUXVhbChwcmVkaWNhdGUsIGVjb250ZXh0KSkKLQkJCQkJY29udGludWU7 Ci0JCQl9Ci0KLQkJCS8qCi0JCQkgKiBGb3IgdGhlIGN1cnJlbnQgaGVhcCB0dXBsZSwgZXh0cmFj dCBhbGwgdGhlIGF0dHJpYnV0ZXMgd2UgdXNlCi0JCQkgKiBpbiB0aGlzIGluZGV4LCBhbmQgbm90 ZSB3aGljaCBhcmUgbnVsbC4gIFRoaXMgYWxzbyBwZXJmb3JtcwotCQkJICogZXZhbHVhdGlvbiBv ZiBhbnkgZXhwcmVzc2lvbnMgbmVlZGVkLgotCQkJICovCi0JCQlGb3JtSW5kZXhEYXR1bShpbmRl eEluZm8sCi0JCQkJCQkgICBzbG90LAotCQkJCQkJICAgZXN0YXRlLAotCQkJCQkJICAgdmFsdWVz LAotCQkJCQkJICAgaXNudWxsKTsKLQotCQkJLyoKLQkJCSAqIFlvdSdkIHRoaW5rIHdlIHNob3Vs ZCBnbyBhaGVhZCBhbmQgYnVpbGQgdGhlIGluZGV4IHR1cGxlIGhlcmUsCi0JCQkgKiBidXQgc29t ZSBpbmRleCBBTXMgd2FudCB0byBkbyBmdXJ0aGVyIHByb2Nlc3Npbmcgb24gdGhlIGRhdGEKLQkJ CSAqIGZpcnN0LiBTbyBwYXNzIHRoZSB2YWx1ZXNbXSBhbmQgaXNudWxsW10gYXJyYXlzLCBpbnN0 ZWFkLgotCQkJICovCi0KLQkJCS8qCi0JCQkgKiBJZiB0aGUgdHVwbGUgaXMgYWxyZWFkeSBjb21t aXR0ZWQgZGVhZCwgeW91IG1pZ2h0IHRoaW5rIHdlCi0JCQkgKiBjb3VsZCBzdXBwcmVzcyB1bmlx dWVuZXNzIGNoZWNraW5nLCBidXQgdGhpcyBpcyBubyBsb25nZXIgdHJ1ZQotCQkJICogaW4gdGhl IHByZXNlbmNlIG9mIEhPVCwgYmVjYXVzZSB0aGUgaW5zZXJ0IGlzIGFjdHVhbGx5IGEgcHJveHkK LQkJCSAqIGZvciBhIHVuaXF1ZW5lc3MgY2hlY2sgb24gdGhlIHdob2xlIEhPVC1jaGFpbi4gIFRo YXQgaXMsIHRoZQotCQkJICogdHVwbGUgd2UgaGF2ZSBoZXJlIGNvdWxkIGJlIGRlYWQgYmVjYXVz ZSBpdCB3YXMgYWxyZWFkeQotCQkJICogSE9ULXVwZGF0ZWQsIGFuZCBpZiBzbyB0aGUgdXBkYXRp bmcgdHJhbnNhY3Rpb24gd2lsbCBub3QgaGF2ZQotCQkJICogdGhvdWdodCBpdCBzaG91bGQgaW5z ZXJ0IGluZGV4IGVudHJpZXMuICBUaGUgaW5kZXggQU0gd2lsbAotCQkJICogY2hlY2sgdGhlIHdo b2xlIEhPVC1jaGFpbiBhbmQgY29ycmVjdGx5IGRldGVjdCBhIGNvbmZsaWN0IGlmCi0JCQkgKiB0 aGVyZSBpcyBvbmUuCi0JCQkgKi8KLQotCQkJaW5kZXhfaW5zZXJ0KGluZGV4UmVsYXRpb24sCi0J CQkJCQkgdmFsdWVzLAotCQkJCQkJIGlzbnVsbCwKLQkJCQkJCSAmcm9vdFR1cGxlLAotCQkJCQkJ IGhlYXBSZWxhdGlvbiwKLQkJCQkJCSBpbmRleEluZm8tPmlpX1VuaXF1ZSA/Ci0JCQkJCQkgVU5J UVVFX0NIRUNLX1lFUyA6IFVOSVFVRV9DSEVDS19OTywKLQkJCQkJCSBmYWxzZSwKLQkJCQkJCSBp bmRleEluZm8pOwotCi0JCQlzdGF0ZS0+dHVwc19pbnNlcnRlZCArPSAxOwotCQl9CisJCVJlbGVh c2VCdWZmZXIoYnVmKTsKIAl9CiAKLQl0YWJsZV9lbmRzY2FuKHNjYW4pOwotCiAJRXhlY0Ryb3BT aW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKIAogCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7 CiAKKwlyZWFkX3N0cmVhbV9lbmQocmVhZF9zdHJlYW0pOworCXR1cGxlc3RvcmVfZW5kKHR1cGxl c19mb3JfY2hlY2spOworCisJLyoKKwkgKiBEcm9wIHRoZSBsYXRlc3Qgc25hcHNob3QuICBXZSBt dXN0IGRvIHRoaXMgYmVmb3JlIHdhaXRpbmcgb3V0IG90aGVyCisJICogc25hcHNob3QgaG9sZGVy cywgZWxzZSB3ZSB3aWxsIGRlYWRsb2NrIGFnYWluc3Qgb3RoZXIgcHJvY2Vzc2VzIGFsc28KKwkg KiBkb2luZyBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZLCB3aGljaCB3b3VsZCBzZWUgb3VyIHNu YXBzaG90IGFzIG9uZQorCSAqIHRoZXkgbXVzdCB3YWl0IGZvci4KKwkgKi8KKwlQb3BBY3RpdmVT bmFwc2hvdCgpOworCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisJSW52YWxpZGF0ZUNh dGFsb2dTbmFwc2hvdCgpOworCUFzc2VydChNeVByb2MtPnhtaW4gPT0gSW52YWxpZFRyYW5zYWN0 aW9uSWQpOworI2lmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJaWYgKE15UHJvYy0+eGlkID09IElu dmFsaWRUcmFuc2FjdGlvbklkKQorCQlJTkpFQ1RJT05fUE9JTlQoImhlYXBhbV9pbmRleF92YWxp ZGF0ZV9zY2FuX25vX3hpZCIpOworI2VuZGlmCiAJLyogVGhlc2UgbWF5IGhhdmUgYmVlbiBwb2lu dGluZyB0byB0aGUgbm93LWdvbmUgZXN0YXRlICovCiAJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9u c1N0YXRlID0gTklMOwogCWluZGV4SW5mby0+aWlfUHJlZGljYXRlU3RhdGUgPSBOVUxMOworCisJ cmV0dXJuIGxpbWl0WG1pbjsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA0NGU1YmMzMGQz ZS4uOGRmMGI0NzJlODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTcxNCwxMSArNzE0LDE2IEBAIFVw ZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAogICoJCQlhbHJlYWR5IGV4aXN0cy4KICAq CQlJTkRFWF9DUkVBVEVfUEFSVElUSU9ORUQ6CiAgKgkJCWNyZWF0ZSBhIHBhcnRpdGlvbmVkIGlu ZGV4ICh0YWJsZSBtdXN0IGJlIHBhcnRpdGlvbmVkKQorICoJCUlOREVYX0NSRUFURV9BVVhJTElB Ulk6CisgKgkJCW1hcmsgaW5kZXggYXMgYXV4aWxpYXJ5IGluZGV4CiAgKiBjb25zdHJfZmxhZ3M6 IGZsYWdzIHBhc3NlZCB0byBpbmRleF9jb25zdHJhaW50X2NyZWF0ZQogICoJCShvbmx5IGlmIElO REVYX0NSRUFURV9BRERfQ09OU1RSQUlOVCBpcyBzZXQpCiAgKiBhbGxvd19zeXN0ZW1fdGFibGVf bW9kczogYWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0gY2F0YWxvZwogICogaXNfaW50ZXJuYWw6 IGlmIHRydWUsIHBvc3QgY3JlYXRpb24gaG9vayBmb3IgbmV3IGluZGV4CiAgKiBjb25zdHJhaW50 SWQ6IGlmIG5vdCBOVUxMLCByZWNlaXZlcyBPSUQgb2YgY3JlYXRlZCBjb25zdHJhaW50CisgKiBy ZWxwZXJzaXN0ZW5jZTogcGVyc2lzdGVuY2UgbGV2ZWwgdG8gdXNlIGZvciBpbmRleC4gSW4gbW9z dCBvZiB0aGUKKyAqCQljYXNlcyBpdCBpcyBzaG91bGQgYmUgZXF1YWwgdG8gcGVyc2lzdGVuY2Ug bGV2ZWwgb2YgdGFibGUsCisgKgkJYXV4aWxpYXJ5IGluZGV4ZXMgYXJlIG9ubHkgZXhjZXB0aW9u IGhlcmUuCiAgKgogICogUmV0dXJucyB0aGUgT0lEIG9mIHRoZSBjcmVhdGVkIGluZGV4LgogICov CkBAIC03NDMsNyArNzQ4LDggQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwK IAkJCSBiaXRzMTYgY29uc3RyX2ZsYWdzLAogCQkJIGJvb2wgYWxsb3dfc3lzdGVtX3RhYmxlX21v ZHMsCiAJCQkgYm9vbCBpc19pbnRlcm5hbCwKLQkJCSBPaWQgKmNvbnN0cmFpbnRJZCkKKwkJCSBP aWQgKmNvbnN0cmFpbnRJZCwKKwkJCSBjaGFyIHJlbHBlcnNpc3RlbmNlKQogewogCU9pZAkJCWhl YXBSZWxhdGlvbklkID0gUmVsYXRpb25HZXRSZWxpZChoZWFwUmVsYXRpb24pOwogCVJlbGF0aW9u CXBnX2NsYXNzOwpAQCAtNzU0LDExICs3NjAsMTEgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAlib29sCQlpc19leGNsdXNpb247CiAJT2lkCQkJbmFtZXNwYWNlSWQ7CiAJ aW50CQkJaTsKLQljaGFyCQlyZWxwZXJzaXN0ZW5jZTsKIAlib29sCQlpc3ByaW1hcnkgPSAoZmxh Z3MgJiBJTkRFWF9DUkVBVEVfSVNfUFJJTUFSWSkgIT0gMDsKIAlib29sCQlpbnZhbGlkID0gKGZs YWdzICYgSU5ERVhfQ1JFQVRFX0lOVkFMSUQpICE9IDA7CiAJYm9vbAkJY29uY3VycmVudCA9IChm bGFncyAmIElOREVYX0NSRUFURV9DT05DVVJSRU5UKSAhPSAwOwogCWJvb2wJCXBhcnRpdGlvbmVk ID0gKGZsYWdzICYgSU5ERVhfQ1JFQVRFX1BBUlRJVElPTkVEKSAhPSAwOworCWJvb2wJCWF1eGls aWFyeSA9IChmbGFncyAmIElOREVYX0NSRUFURV9BVVhJTElBUlkpICE9IDA7CiAJY2hhcgkJcmVs a2luZDsKIAlUcmFuc2FjdGlvbklkIHJlbGZyb3plbnhpZDsKIAlNdWx0aVhhY3RJZCByZWxtaW5t eGlkOwpAQCAtNzg0LDcgKzc5MCw2IEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRp b24sCiAJbmFtZXNwYWNlSWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShoZWFwUmVsYXRpb24pOwog CXNoYXJlZF9yZWxhdGlvbiA9IGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5yZWxpc3NoYXJlZDsKIAlt YXBwZWRfcmVsYXRpb24gPSBSZWxhdGlvbklzTWFwcGVkKGhlYXBSZWxhdGlvbik7Ci0JcmVscGVy c2lzdGVuY2UgPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVscGVyc2lzdGVuY2U7CiAKIAkvKgog CSAqIGNoZWNrIHBhcmFtZXRlcnMKQEAgLTc5Miw2ICs3OTcsMTEgQEAgaW5kZXhfY3JlYXRlKFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlpZiAoaW5kZXhJbmZvLT5paV9OdW1JbmRleEF0dHJzIDwg MSkKIAkJZWxvZyhFUlJPUiwgIm11c3QgaW5kZXggYXQgbGVhc3Qgb25lIGNvbHVtbiIpOwogCisJ aWYgKGluZGV4SW5mby0+aWlfQW0gPT0gU1RJUl9BTV9PSUQgJiYgIWF1eGlsaWFyeSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkJIGVycm1zZygidXNlci1kZWZpbmVkIGluZGV4ZXMgd2l0aCBTVElSIGFjY2VzcyBtZXRo b2QgYXJlIG5vdCBzdXBwb3J0ZWQiKSkpOworCiAJaWYgKCFhbGxvd19zeXN0ZW1fdGFibGVfbW9k cyAmJgogCQlJc1N5c3RlbVJlbGF0aW9uKGhlYXBSZWxhdGlvbikgJiYKIAkJSXNOb3JtYWxQcm9j ZXNzaW5nTW9kZSgpKQpAQCAtMTM5Nyw3ICsxNDA3LDggQEAgaW5kZXhfY29uY3VycmVudGx5X2Ny ZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJCQkJCQkJ ZmFsc2UsCS8qIG5vdCByZWFkeSBmb3IgaW5zZXJ0cyAqLwogCQkJCQkJCXRydWUsCiAJCQkJCQkJ aW5kZXhSZWxhdGlvbi0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCi0JCQkJCQkJb2xkSW5mby0+ aWlfV2l0aG91dE92ZXJsYXBzKTsKKwkJCQkJCQlvbGRJbmZvLT5paV9XaXRob3V0T3ZlcmxhcHMs CisJCQkJCQkJZmFsc2UpOwogCiAJLyoKIAkgKiBFeHRyYWN0IHRoZSBsaXN0IG9mIGNvbHVtbiBu YW1lcyBhbmQgdGhlIGNvbHVtbiBudW1iZXJzIGZvciB0aGUgbmV3CkBAIC0xNDYyLDcgKzE0NzMs OCBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9u LCBPaWQgb2xkSW5kZXhJZCwKIAkJCQkJCQkgIDAsCiAJCQkJCQkJICB0cnVlLCAvKiBhbGxvdyB0 YWJsZSB0byBiZSBhIHN5c3RlbSBjYXRhbG9nPyAqLwogCQkJCQkJCSAgZmFsc2UsCS8qIGlzX2lu dGVybmFsPyAqLwotCQkJCQkJCSAgTlVMTCk7CisJCQkJCQkJICBOVUxMLAorCQkJCQkJCSAgaGVh cFJlbGF0aW9uLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlKTsKIAogCS8qIENsb3NlIHRoZSByZWxh dGlvbnMgdXNlZCBhbmQgY2xlYW4gdXAgKi8KIAlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9uLCBO b0xvY2spOwpAQCAtMTQ3Miw2ICsxNDg0LDE1NSBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRl X2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwKIAlyZXR1cm4gbmV3 SW5kZXhJZDsKIH0KIAorLyoKKyAqIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfYXV4CisgKgor ICogQ3JlYXRlIGNvbmN1cnJlbnRseSBhbiBhdXhpbGlhcnkgaW5kZXggYmFzZWQgb24gdGhlIGRl ZmluaXRpb24gb2YgdGhlIG9uZQorICogcHJvdmlkZWQgYnkgY2FsbGVyLiAgVGhlIGluZGV4IGlz IGluc2VydGVkIGludG8gY2F0YWxvZ3MgYW5kIG5lZWRzIHRvIGJlCisgKiBidWlsdCBsYXRlciBv bi4gVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGNvbmN1cnJlbnQgcmVpbmRleCBwcm9jZXNzaW5nLgor ICoKKyAqICJ0YWJsZXNwYWNlT2lkIiBpcyB0aGUgdGFibGVzcGFjZSB0byB1c2UgZm9yIHRoaXMg aW5kZXguCisgKi8KK09pZAoraW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9hdXgoUmVsYXRpb24g aGVhcFJlbGF0aW9uLCBPaWQgbWFpbkluZGV4SWQsCisJCQkJCQkJICAgT2lkIHRhYmxlc3BhY2VP aWQsIGNvbnN0IGNoYXIgKm5ld05hbWUpCit7CisJUmVsYXRpb24JaW5kZXhSZWxhdGlvbjsKKwlJ bmRleEluZm8gICpvbGRJbmZvLAorCQkJKm5ld0luZm87CisJT2lkCQkJbmV3SW5kZXhJZCA9IElu dmFsaWRPaWQ7CisJSGVhcFR1cGxlCWluZGV4VHVwbGU7CisKKwlMaXN0CSAgICppbmRleENvbE5h bWVzID0gTklMOworCUxpc3QJICAgKmluZGV4RXhwcnMgPSBOSUw7CisJTGlzdAkgICAqaW5kZXhQ cmVkcyA9IE5JTDsKKworCU9pZCAqYXV4T3BjbGFzc0lkczsKKwlpbnQxNiAqYXV4Q29sb3B0aW9u czsKKworCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKG1haW5JbmRleElkLCBSb3dFeGNsdXNp dmVMb2NrKTsKKworCS8qIFRoZSBuZXcgaW5kZXggbmVlZHMgc29tZSBpbmZvcm1hdGlvbiBmcm9t IHRoZSBvbGQgaW5kZXggKi8KKwlvbGRJbmZvID0gQnVpbGRJbmRleEluZm8oaW5kZXhSZWxhdGlv bik7CisKKwkvKgorCSAqIEJ1aWxkIG9mIGFuIGF1eGlsaWFyeSBpbmRleCB3aXRoIGV4Y2x1c2lv biBjb25zdHJhaW50cyBpcyBub3QKKwkgKiBzdXBwb3J0ZWQuCisJICovCisJaWYgKG9sZEluZm8t PmlpX0V4Y2x1c2lvbk9wcyAhPSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCWVycm1zZygiYXV4aWxpYXJ5 IGluZGV4IGNyZWF0aW9uIGZvciBleGNsdXNpb24gY29uc3RyYWludHMgaXMgbm90IHN1cHBvcnRl ZCIpKSk7CisKKwkvKiBHZXQgdGhlIGFycmF5IG9mIGNsYXNzIGFuZCBjb2x1bW4gb3B0aW9ucyBJ RHMgZnJvbSBpbmRleCBpbmZvICovCisJaW5kZXhUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMShJTkRF WFJFTElELCBPYmplY3RJZEdldERhdHVtKG1haW5JbmRleElkKSk7CisJaWYgKCFIZWFwVHVwbGVJ c1ZhbGlkKGluZGV4VHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3IgaW5kZXggJXUiLCBtYWluSW5kZXhJZCk7CisKKworCS8qCisJICogRmV0Y2ggdGhlIGxpc3Qg b2YgZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMgZGlyZWN0bHkgZnJvbSB0aGUKKwkgKiBjYXRh bG9ncy4gIFRoaXMgY2Fubm90IHJlbHkgb24gdGhlIGluZm9ybWF0aW9uIGZyb20gSW5kZXhJbmZv IG9mIHRoZQorCSAqIG9sZCBpbmRleCBhcyB0aGVzZSBoYXZlIGJlZW4gZmxhdHRlbmVkIGZvciB0 aGUgcGxhbm5lci4KKwkgKi8KKwlpZiAob2xkSW5mby0+aWlfRXhwcmVzc2lvbnMgIT0gTklMKQor CXsKKwkJRGF0dW0JCWV4cHJEYXR1bTsKKwkJY2hhcgkgICAqZXhwclN0cmluZzsKKworCQlleHBy RGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKElOREVYUkVMSUQsIGluZGV4VHVwbGUsCisJ CQkJCQkJCQkJICAgQW51bV9wZ19pbmRleF9pbmRleHBycyk7CisJCWV4cHJTdHJpbmcgPSBUZXh0 RGF0dW1HZXRDU3RyaW5nKGV4cHJEYXR1bSk7CisJCWluZGV4RXhwcnMgPSAoTGlzdCAqKSBzdHJp bmdUb05vZGUoZXhwclN0cmluZyk7CisJCXBmcmVlKGV4cHJTdHJpbmcpOworCX0KKwlpZiAob2xk SW5mby0+aWlfUHJlZGljYXRlICE9IE5JTCkKKwl7CisJCURhdHVtCQlwcmVkRGF0dW07CisJCWNo YXIJICAgKnByZWRTdHJpbmc7CisKKwkJcHJlZERhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVs bChJTkRFWFJFTElELCBpbmRleFR1cGxlLAorCQkJCQkJCQkJCSAgIEFudW1fcGdfaW5kZXhfaW5k cHJlZCk7CisJCXByZWRTdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKHByZWREYXR1bSk7CisJ CWluZGV4UHJlZHMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUocHJlZFN0cmluZyk7CisKKwkJLyog QWxzbyBjb252ZXJ0IHRvIGltcGxpY2l0LUFORCBmb3JtYXQgKi8KKwkJaW5kZXhQcmVkcyA9IG1h a2VfYW5kc19pbXBsaWNpdCgoRXhwciAqKSBpbmRleFByZWRzKTsKKwkJcGZyZWUocHJlZFN0cmlu Zyk7CisJfQorCisJLyoKKwkgKiBCdWlsZCB0aGUgaW5kZXggaW5mb3JtYXRpb24gZm9yIHRoZSBu ZXcgaW5kZXguICBOb3RlIHRoYXQgcmVidWlsZCBvZgorCSAqIGluZGV4ZXMgd2l0aCBleGNsdXNp b24gY29uc3RyYWludHMgaXMgbm90IHN1cHBvcnRlZCwgaGVuY2UgdGhlcmUgaXMgbm8KKwkgKiBu ZWVkIHRvIGZpbGwgYWxsIHRoZSBpaV9FeGNsdXNpb24qIGZpZWxkcy4KKwkgKi8KKwluZXdJbmZv ID0gbWFrZUluZGV4SW5mbyhvbGRJbmZvLT5paV9OdW1JbmRleEF0dHJzLAorCQkJCQkJCW9sZElu Zm8tPmlpX051bUluZGV4S2V5QXR0cnMsCisJCQkJCQkJU1RJUl9BTV9PSUQsIC8qIHNwZWNpYWwg QU0gZm9yIGF1eCBpbmRleGVzICovCisJCQkJCQkJaW5kZXhFeHBycywKKwkJCQkJCQlpbmRleFBy ZWRzLAorCQkJCQkJCWZhbHNlLAkvKiBhdXggaW5kZXggYXJlIG5vdCB1bmlxdWUgKi8KKwkJCQkJ CQlvbGRJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0LAorCQkJCQkJCWZhbHNlLAkvKiBub3QgcmVh ZHkgZm9yIGluc2VydHMgKi8KKwkJCQkJCQl0cnVlLAorCQkJCQkJCWZhbHNlLAkvKiBhdXggYXJl IG5vdCBzdW1tYXJpemluZyAqLworCQkJCQkJCWZhbHNlLAkvKiBhdXggYXJlIG5vdCB3aXRob3V0 IG92ZXJsYXBzICovCisJCQkJCQkJdHJ1ZQkvKiBhdXhpbGlhcnkgKi8pOworCisJLyoKKwkgKiBF eHRyYWN0IHRoZSBsaXN0IG9mIGNvbHVtbiBuYW1lcyBhbmQgdGhlIGNvbHVtbiBudW1iZXJzIGZv ciB0aGUgbmV3CisJICogaW5kZXggaW5mb3JtYXRpb24uICBBbGwgdGhpcyBpbmZvcm1hdGlvbiB3 aWxsIGJlIHVzZWQgZm9yIHRoZSBpbmRleAorCSAqIGNyZWF0aW9uLgorCSAqLworCWZvciAoaW50 IGkgPSAwOyBpIDwgb2xkSW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQorCXsKKwkJVHVwbGVE ZXNjCWluZGV4VHVwRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoaW5kZXhSZWxhdGlvbik7CisJCUZv cm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIoaW5kZXhUdXBEZXNjLCBpKTsKKwor CQlpbmRleENvbE5hbWVzID0gbGFwcGVuZChpbmRleENvbE5hbWVzLCBOYW1lU3RyKGF0dC0+YXR0 bmFtZSkpOworCQluZXdJbmZvLT5paV9JbmRleEF0dHJOdW1iZXJzW2ldID0gb2xkSW5mby0+aWlf SW5kZXhBdHRyTnVtYmVyc1tpXTsKKwl9CisKKwlhdXhPcGNsYXNzSWRzID0gcGFsbG9jMChzaXpl b2YoT2lkKSAqIG5ld0luZm8tPmlpX051bUluZGV4QXR0cnMpOworCWF1eENvbG9wdGlvbnMgPSBw YWxsb2MwKHNpemVvZihpbnQxNikgKiBuZXdJbmZvLT5paV9OdW1JbmRleEF0dHJzKTsKKworCS8q IEZpbGwgd2l0aCAiYW55IG9wcyIgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IG5ld0luZm8tPmlp X051bUluZGV4QXR0cnM7IGkrKykKKwl7CisJCWF1eE9wY2xhc3NJZHNbaV0gPSBBTllfU1RJUl9P UFNfT0lEOworCQlhdXhDb2xvcHRpb25zW2ldID0gMDsKKwl9CisKKwluZXdJbmRleElkID0gaW5k ZXhfY3JlYXRlKGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkgIG5ld05hbWUsCisJCQkJCQkJICBJbnZh bGlkT2lkLCAgICAvKiBpbmRleFJlbGF0aW9uSWQgKi8KKwkJCQkJCQkgIEludmFsaWRPaWQsICAg IC8qIHBhcmVudEluZGV4UmVsaWQgKi8KKwkJCQkJCQkgIEludmFsaWRPaWQsICAgIC8qIHBhcmVu dENvbnN0cmFpbnRJZCAqLworCQkJCQkJCSAgSW52YWxpZFJlbEZpbGVOdW1iZXIsIC8qIHJlbEZp bGVOdW1iZXIgKi8KKwkJCQkJCQkgIG5ld0luZm8sCisJCQkJCQkJICBpbmRleENvbE5hbWVzLAor CQkJCQkJCSAgU1RJUl9BTV9PSUQsCisJCQkJCQkJICB0YWJsZXNwYWNlT2lkLAorCQkJCQkJCSAg aW5kZXhSZWxhdGlvbi0+cmRfaW5kY29sbGF0aW9uLAorCQkJCQkJCSAgYXV4T3BjbGFzc0lkcywK KwkJCQkJCQkgIE5VTEwsCisJCQkJCQkJICBhdXhDb2xvcHRpb25zLAorCQkJCQkJCSAgTlVMTCwK KwkJCQkJCQkgIChEYXR1bSkgMCwKKwkJCQkJCQkgIElOREVYX0NSRUFURV9TS0lQX0JVSUxEIHwg SU5ERVhfQ1JFQVRFX0NPTkNVUlJFTlQgfCBJTkRFWF9DUkVBVEVfQVVYSUxJQVJZLAorCQkJCQkJ CSAgMCwKKwkJCQkJCQkgIHRydWUsIC8qIGFsbG93IHRhYmxlIHRvIGJlIGEgc3lzdGVtIGNhdGFs b2c/ICovCisJCQkJCQkJICBmYWxzZSwgICAgLyogaXNfaW50ZXJuYWw/ICovCisJCQkJCQkJICBO VUxMLAorCQkJCQkJCSAgUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQpOyAvKiBhdXggaW5kZXhlcyB1 bmxvZ2dlZCAqLworCisJLyogQ2xvc2UgdGhlIHJlbGF0aW9ucyB1c2VkIGFuZCBjbGVhbiB1cCAq LworCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7CisJUmVsZWFzZVN5c0NhY2hl KGluZGV4VHVwbGUpOworCisJcmV0dXJuIG5ld0luZGV4SWQ7Cit9CisKIC8qCiAgKiBpbmRleF9j b25jdXJyZW50bHlfYnVpbGQKICAqCkBAIC0yNDY4LDcgKzI2MjksOCBAQCBCdWlsZEluZGV4SW5m byhSZWxhdGlvbiBpbmRleCkKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzcmVhZHksCiAJCQkJ CSAgIGZhbHNlLAogCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCi0JCQkJ CSAgIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5kaXN1bmlx dWUpOworCQkJCQkgICBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24gJiYgaW5kZXhTdHJ1Y3Qt PmluZGlzdW5pcXVlLAorCQkJCQkgICBpbmRleC0+cmRfcmVsLT5yZWxhbSA9PSBTVElSX0FNX09J RCAvKiBhdXhpbGlhcnkgaWZmIFNUSVIgKi8pOwogCiAJLyogZmlsbCBpbiBhdHRyaWJ1dGUgbnVt YmVycyAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1BdHRzOyBpKyspCkBAIC0yNTI4LDcgKzI2OTAs OCBAQCBCdWlsZER1bW15SW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4KQogCQkJCQkgICBpbmRleFN0 cnVjdC0+aW5kaXNyZWFkeSwKIAkJCQkJICAgZmFsc2UsCiAJCQkJCSAgIGluZGV4LT5yZF9pbmRh bS0+YW1zdW1tYXJpemluZywKLQkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uICYm IGluZGV4U3RydWN0LT5pbmRpc3VuaXF1ZSk7CisJCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc2V4 Y2x1c2lvbiAmJiBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUsCisJCQkJCSAgIGluZGV4LT5yZF9y ZWwtPnJlbGFtID09IFNUSVJfQU1fT0lEIC8qIGF1eGlsaWFyeSBpZmYgU1RJUiAqLyk7CiAKIAkv KiBmaWxsIGluIGF0dHJpYnV0ZSBudW1iZXJzICovCiAJZm9yIChpID0gMDsgaSA8IG51bUF0dHM7 IGkrKykKQEAgLTMyODQsMTIgKzM0NDcsMjEgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAgKgogICogV2UgZG8gYSBjb25jdXJyZW50IGluZGV4IGJ1aWxkIGJ5 IGZpcnN0IGluc2VydGluZyB0aGUgY2F0YWxvZyBlbnRyeSBmb3IgdGhlCiAgKiBpbmRleCB2aWEg aW5kZXhfY3JlYXRlKCksIG1hcmtpbmcgaXQgbm90IGluZGlzcmVhZHkgYW5kIG5vdCBpbmRpc3Zh bGlkLgorICogVGhlbiB3ZSBjcmVhdGUgc3BlY2lhbCBhdXhpbGlhcnkgaW5kZXggdGhlIHNhbWUg d2F5LiBJdCBiYXNlZCBvbiBTVElSIEFNLgogICogVGhlbiB3ZSBjb21taXQgb3VyIHRyYW5zYWN0 aW9uIGFuZCBzdGFydCBhIG5ldyBvbmUsIHRoZW4gd2Ugd2FpdCBmb3IgYWxsCiAgKiB0cmFuc2Fj dGlvbnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0YWJsZSB0byB0ZXJtaW5h dGUuICBOb3cKLSAqIHdlIGtub3cgdGhhdCBhbnkgc3Vic2VxdWVudGx5LXN0YXJ0ZWQgdHJhbnNh Y3Rpb25zIHdpbGwgc2VlIHRoZSBpbmRleCBhbmQKKyAqIHdlIGtub3cgdGhhdCBhbnkgc3Vic2Vx dWVudGx5LXN0YXJ0ZWQgdHJhbnNhY3Rpb25zIHdpbGwgc2VlIGluZGV4ZXMgYW5kCiAgKiBob25v ciBpdHMgY29uc3RyYWludHMgb24gSE9UIHVwZGF0ZXM7IHNvIHdoaWxlIGV4aXN0aW5nIEhPVC1j aGFpbnMgbWlnaHQKICAqIGJlIGJyb2tlbiB3aXRoIHJlc3BlY3QgdG8gdGhlIGluZGV4LCBubyBj dXJyZW50bHkgbGl2ZSB0dXBsZSB3aWxsIGhhdmUgYW4KLSAqIGluY29tcGF0aWJsZSBIT1QgdXBk YXRlIGRvbmUgdG8gaXQuICBXZSBub3cgYnVpbGQgdGhlIGluZGV4IG5vcm1hbGx5IHZpYQorICog aW5jb21wYXRpYmxlIEhPVCB1cGRhdGUgZG9uZSB0byBpdC4KKyAqCisgKiBBZnRlciB3ZSBidWls ZCBhdXhpbGlhcnkgaW5kZXguIEl0IGlzIGZhc3Qgb3BlcmF0aW9uIHdpdGhvdXQgYW55IGFjdHVh bAorICogdGFibGUgc2Nhbi4gQXMgcmVzdWx0LCB3ZSBoYXZlIGVtcHR5IFNUSVIgaW5kZXguIFdl IGNvbW1pdCB0cmFuc2FjdGlvbiBhbmQKKyAqIGFnYWluIHdhaXQgZm9yIGFsbCB0cmFuc2FjdGlv bnMgdGhhdCBjb3VsZCBoYXZlIGJlZW4gbW9kaWZ5aW5nIHRoZSB0YWJsZQorICogdG8gdGVybWlu YXRlLiBBdCB0aGF0IG1vbWVudCBhbGwgbmV3IHR1cGxlcyBhcmUgZ29pbmcgdG8gYmUgaW5zZXJ0 ZWQgaW50bworICogYXV4aWxpYXJ5IGluZGV4LgorICoKKyAqIFdlIG5vdyBidWlsZCB0aGUgaW5k ZXggbm9ybWFsbHkgdmlhCiAgKiBpbmRleF9idWlsZCgpLCB3aGlsZSBob2xkaW5nIGEgd2VhayBs b2NrIHRoYXQgYWxsb3dzIGNvbmN1cnJlbnQKICAqIGluc2VydC91cGRhdGUvZGVsZXRlLiAgQWxz bywgd2UgaW5kZXggb25seSB0dXBsZXMgdGhhdCBhcmUgdmFsaWQKICAqIGFzIG9mIHRoZSBzdGFy dCBvZiB0aGUgc2NhbiAoc2VlIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4pLCB3aGVyZWFzIGEgbm9y bWFsCkBAIC0zMjk5LDE4ICszNDcxLDIxIEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogICogYm9ndXMgdW5pcXVlLWluZGV4IGZhaWx1cmVzIGR1ZSB0byBjb25j dXJyZW50IFVQREFURXMgKHdlIG1pZ2h0IHNlZQogICogZGlmZmVyZW50IHZlcnNpb25zIG9mIHRo ZSBzYW1lIHJvdyBhcyBiZWluZyB2YWxpZCB3aGVuIHdlIHBhc3Mgb3ZlciB0aGVtLAogICogaWYg d2UgdXNlZCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0pLiAgVGhpcyBsZWF2ZXMgdXMgd2l0aCBh biBpbmRleCB0aGF0Ci0gKiBkb2VzIG5vdCBjb250YWluIGFueSB0dXBsZXMgYWRkZWQgdG8gdGhl IHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRleC4KKyAqIGRvZXMgbm90IGNvbnRhaW4gYW55 IHR1cGxlcyBhZGRlZCB0byB0aGUgdGFibGUgd2hpbGUgd2UgYnVpbHQgdGhlIGluZGV4CisgKiAo dXQgdGhlc2UgdHVwbGVzIGNvbnRhaW5lZCBpbiBhdXhpbGlhcnkgaW5kZXgpLgogICoKICAqIEZ1 cnRoZXJtb3JlLCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1QgZm9yIHRoZSBzY2FuLCB3aGljaCBj YXVzZXMgbmV3CiAgKiBzbmFwc2hvdCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVu LiBUaGUgcmVhc29uICBmb3IgdGhhdCBpcyB0bwogICogcHJvcGFnYXRlIHRoZSB4bWluIGhvcml6 b24gZm9yd2FyZC4KICAqCiAgKiBOZXh0LCB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXNyZWFkeSIg KGJ1dCBzdGlsbCBub3QgImluZGlzdmFsaWQiKSBhbmQKLSAqIGNvbW1pdCB0aGUgc2Vjb25kIHRy YW5zYWN0aW9uIGFuZCBzdGFydCBhIHRoaXJkLiAgQWdhaW4gd2Ugd2FpdCBmb3IgYWxsCisgKiBj b21taXQgdGhlIHRoaXJkIHRyYW5zYWN0aW9uIGFuZCBzdGFydCBhIGZvdXJ0aC4gIEFnYWluIHdl IHdhaXQgZm9yIGFsbAogICogdHJhbnNhY3Rpb25zIHRoYXQgY291bGQgaGF2ZSBiZWVuIG1vZGlm eWluZyB0aGUgdGFibGUgdG8gdGVybWluYXRlLiAgTm93CiAgKiB3ZSBrbm93IHRoYXQgYW55IHN1 YnNlcXVlbnRseS1zdGFydGVkIHRyYW5zYWN0aW9ucyB3aWxsIHNlZSB0aGUgaW5kZXggYW5kCi0g KiBpbnNlcnQgdGhlaXIgbmV3IHR1cGxlcyBpbnRvIGl0LiAgV2UgdGhlbiB0YWtlIGEgbmV3IHJl ZmVyZW5jZSBzbmFwc2hvdAotICogd2hpY2ggaXMgcGFzc2VkIHRvIHZhbGlkYXRlX2luZGV4KCku ICBBbnkgdHVwbGVzIHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZworICogaW5zZXJ0IHRoZWlyIG5l dyB0dXBsZXMgaW50byBpdC4gQXQgdGhlIHNhbWUgbW9tZW50IHdlIGNsZWFyICJpbmRpc3JlYWR5 IiBmb3IKKyAqIGF1eGlsaWFyeSBpbmRleCwgc2luY2UgaXQgaXMgbm8gbW9yZSByZXF1aXJlZC4K KyAqCisgKiBXZSB0aGVuIHRha2UgYSBuZXcgcmVmZXJlbmNlIHNuYXBzaG90LCBhbnkgdHVwbGVz IHRoYXQgYXJlIHZhbGlkIGFjY29yZGluZwogICogdG8gdGhpcyBzbmFwLCBidXQgYXJlIG5vdCBp biB0aGUgaW5kZXgsIG11c3QgYmUgYWRkZWQgdG8gdGhlIGluZGV4LgogICogKEFueSB0dXBsZXMg Y29tbWl0dGVkIGxpdmUgYWZ0ZXIgdGhlIHNuYXAgd2lsbCBiZSBpbnNlcnRlZCBpbnRvIHRoZQog ICogaW5kZXggYnkgdGhlaXIgb3JpZ2luYXRpbmcgdHJhbnNhY3Rpb24uICBBbnkgdHVwbGVzIGNv bW1pdHRlZCBkZWFkIGJlZm9yZQpAQCAtMzMxOCwxMiArMzQ5MywxNCBAQCBJbmRleENoZWNrRXhj bHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIHRoYXQgbWlnaHQgY2FyZSBhYm91dCB0 aGVtIGJlZm9yZSB3ZSBtYXJrIHRoZSBpbmRleCB2YWxpZC4pCiAgKgogICogdmFsaWRhdGVfaW5k ZXgoKSB3b3JrcyBieSBmaXJzdCBnYXRoZXJpbmcgYWxsIHRoZSBUSURzIGN1cnJlbnRseSBpbiB0 aGUKLSAqIGluZGV4LCB1c2luZyBhIGJ1bGtkZWxldGUgY2FsbGJhY2sgdGhhdCBqdXN0IHN0b3Jl cyB0aGUgVElEcyBhbmQgZG9lc24ndAorICogaW5kZXhlcywgdXNpbmcgYSBidWxrZGVsZXRlIGNh bGxiYWNrIHRoYXQganVzdCBzdG9yZXMgdGhlIFRJRHMgYW5kIGRvZXNuJ3QKICAqIGV2ZXIgc2F5 ICJkZWxldGUgaXQiLiAgKFRoaXMgc2hvdWxkIGJlIGZhc3RlciB0aGFuIGEgcGxhaW4gaW5kZXhz Y2FuOwogICogYWxzbywgbm90IGFsbCBpbmRleCBBTXMgc3VwcG9ydCBmdWxsLWluZGV4IGluZGV4 c2Nhbi4pICBUaGVuIHdlIHNvcnQgdGhlCi0gKiBUSURzLCBhbmQgZmluYWxseSBzY2FuIHRoZSB0 YWJsZSBkb2luZyBhICJtZXJnZSBqb2luIiBhZ2FpbnN0IHRoZSBUSUQgbGlzdAotICogdG8gc2Vl IHdoaWNoIHR1cGxlcyBhcmUgbWlzc2luZyBmcm9tIHRoZSBpbmRleC4gIFRodXMgd2Ugd2lsbCBl bnN1cmUgdGhhdAotICogYWxsIHR1cGxlcyB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlIHJlZmVyZW5j ZSBzbmFwc2hvdCBhcmUgaW4gdGhlIGluZGV4LgorICogVElEcyBvZiBib3RoIGF1eGlsaWFyeSBh bmQgdGFyZ2V0IGluZGV4ZXMsIGFuZCBkb2luZyBhICJtZXJnZSBqb2luIiBhZ2FpbnN0CisgKiB0 aGUgVElEIGxpc3RzIHRvIHNlZSB3aGljaCB0dXBsZXMgZnJvbSBhdXhpbGlhcnkgaW5kZXggYXJl IG1pc3NpbmcgZnJvbSB0aGUKKyAqIHRhcmdldCBpbmRleC4gIFRodXMgd2Ugd2lsbCBlbnN1cmUg dGhhdCBhbGwgdHVwbGVzIHZhbGlkIGFjY29yZGluZyB0byB0aGUKKyAqIHJlZmVyZW5jZSBzbmFw c2hvdCBhcmUgaW4gdGhlIGluZGV4LiBOb3RpY2Ugd2UgbmVlZCB0byBkbyBidWxrZGVsZXRlIGlu IHRoZQorICogcGFydGljdWxhciBvcmRlcjogYXV4aWxpYXJ5IGZpcnN0LCB0YXJnZXQgbGFzdC4K ICAqCiAgKiBCdWlsZGluZyBhIHVuaXF1ZSBpbmRleCB0aGlzIHdheSBpcyB0cmlja3k6IHdlIG1p Z2h0IHRyeSB0byBpbnNlcnQgYQogICogdHVwbGUgdGhhdCBpcyBhbHJlYWR5IGRlYWQgb3IgaXMg aW4gcHJvY2VzcyBvZiBiZWluZyBkZWxldGVkLCBhbmQgd2UKQEAgLTMzNDEsMjIgKzM1MTgsMjcg QEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAgKiBub3QgaW5k ZXgpLiAgVGhlbiB3ZSBtYXJrIHRoZSBpbmRleCAiaW5kaXN2YWxpZCIgYW5kIGNvbW1pdC4gIFN1 YnNlcXVlbnQKICAqIHRyYW5zYWN0aW9ucyB3aWxsIGJlIGFibGUgdG8gdXNlIGl0IGZvciBxdWVy aWVzLgogICoKLSAqIERvaW5nIHR3byBmdWxsIHRhYmxlIHNjYW5zIGlzIGEgYnJ1dGUtZm9yY2Ug c3RyYXRlZ3kuICBXZSBjb3VsZCB0cnkgdG8gYmUKLSAqIGNsZXZlcmVyLCBlZyBzdG9yaW5nIG5l dyB0dXBsZXMgaW4gYSBzcGVjaWFsIGFyZWEgb2YgdGhlIHRhYmxlIChwZXJoYXBzCi0gKiBtYWtp bmcgdGhlIHRhYmxlIGFwcGVuZC1vbmx5IGJ5IHNldHRpbmcgdXNlX2ZzbSkuICBIb3dldmVyIHRo YXQgd291bGQKLSAqIGFkZCB5ZXQgbW9yZSBsb2NraW5nIGlzc3Vlcy4KKyAqIEFsc28sIHNvbWUg YWN0aW9ucyB0byBjb25jdXJyZW50IGRyb3AgdGhlIGF1eGlsaWFyeSBpbmRleCBhcmUgcGVyZm9y bWVkLgogICovCi12b2lkCi12YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwg U25hcHNob3Qgc25hcHNob3QpCitUcmFuc2FjdGlvbklkCit2YWxpZGF0ZV9pbmRleChPaWQgaGVh cElkLCBPaWQgaW5kZXhJZCwgT2lkIGF1eEluZGV4SWQpCiB7CiAJUmVsYXRpb24JaGVhcFJlbGF0 aW9uLAotCQkJCWluZGV4UmVsYXRpb247CisJCQkJaW5kZXhSZWxhdGlvbiwKKwkJCQlhdXhJbmRl eFJlbGF0aW9uOwogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKLQlJbmRleFZhY3V1bUluZm8gaXZp bmZvOwotCVZhbGlkYXRlSW5kZXhTdGF0ZSBzdGF0ZTsKKwlUcmFuc2FjdGlvbklkIGxpbWl0WG1p bjsKKwlJbmRleFZhY3V1bUluZm8gaXZpbmZvLCBhdXhpdmluZm87CisJVmFsaWRhdGVJbmRleFN0 YXRlIHN0YXRlLCBhdXhTdGF0ZTsKIAlPaWQJCQlzYXZlX3VzZXJpZDsKIAlpbnQJCQlzYXZlX3Nl Y19jb250ZXh0OwogCWludAkJCXNhdmVfbmVzdGxldmVsOworCS8qIFVzZSA4MCUgb2YgbWFpbnRl bmFuY2Vfd29ya19tZW0gdG8gdGFyZ2V0IGluZGV4IHNvcnRpbmcgYW5kCisJICogMTAlIHJlc3Qg Zm9yIGF1eGlsaWFyeS4KKwkgKgorCSAqIFJlc3QgMTAlIHdpbGwgYmUgdXNlZCBmb3IgdHVwbGVz dG9yZSBsYXRlci4gKi8KKwlpbnQ2NAkJbWFpbl93b3JrX21lbV9wYXJ0ID0gKGludDY0KSBtYWlu dGVuYW5jZV93b3JrX21lbSAqIDggLyAxMDsKKwlpbnQJCQlhdXhfd29ya19tZW1fcGFydCA9IG1h aW50ZW5hbmNlX3dvcmtfbWVtIC8gMTA7CiAKIAl7CiAJCWNvbnN0IGludAlwcm9ncmVzc19pbmRl eFtdID0gewpAQCAtMzM4OSwxMiArMzU3MSwxNiBAQCB2YWxpZGF0ZV9pbmRleChPaWQgaGVhcElk LCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3QpCiAJUmVzdHJpY3RTZWFyY2hQYXRoKCk7 CiAKIAlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihpbmRleElkLCBSb3dFeGNsdXNpdmVMb2Nr KTsKKwlhdXhJbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihhdXhJbmRleElkLCBSb3dFeGNsdXNp dmVMb2NrKTsKIAogCS8qCiAJICogRmV0Y2ggaW5mbyBuZWVkZWQgZm9yIGluZGV4X2luc2VydC4g IChZb3UgbWlnaHQgdGhpbmsgdGhpcyBzaG91bGQgYmUKIAkgKiBwYXNzZWQgaW4gZnJvbSBEZWZp bmVJbmRleCwgYnV0IGl0cyBjb3B5IGlzIGxvbmcgZ29uZSBkdWUgdG8gaGF2aW5nCiAJICogYmVl biBidWlsdCBpbiBhIHByZXZpb3VzIHRyYW5zYWN0aW9uLikKKwkgKgorCSAqIFdlIG1pZ2h0IG5l ZWQgc25hcHNob3QgZm9yIGluZGV4IGV4cHJlc3Npb25zIG9yIHByZWRpY2F0ZXMuCiAJICovCisJ UHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJaW5kZXhJbmZv ID0gQnVpbGRJbmRleEluZm8oaW5kZXhSZWxhdGlvbik7CiAKIAkvKiBtYXJrIGJ1aWxkIGlzIGNv bmN1cnJlbnQganVzdCBmb3IgY29uc2lzdGVuY3kgKi8KQEAgLTM0MTMsMTUgKzM1OTksMzAgQEAg dmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90 KQogCWl2aW5mby5zdHJhdGVneSA9IE5VTEw7CiAJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0gdHJ1 ZTsKIAorCS8qCisJICogQ29weSBhbGwgaW5mbyB0byBhdXhpbGlhcnkgaW5mbywgY2hhbmdpbmcg b25seSByZWxhdGlvbi4KKwkgKi8KKwlhdXhpdmluZm8gPSBpdmluZm87CisJYXV4aXZpbmZvLmlu ZGV4ID0gYXV4SW5kZXhSZWxhdGlvbjsKKwogCS8qCiAJICogRW5jb2RlIFRJRHMgYXMgaW50OCB2 YWx1ZXMgZm9yIHRoZSBzb3J0LCByYXRoZXIgdGhhbiBkaXJlY3RseSBzb3J0aW5nCiAJICogaXRl bSBwb2ludGVycy4gIFRoaXMgY2FuIGJlIHNpZ25pZmljYW50bHkgZmFzdGVyLCBwcmltYXJpbHkg YmVjYXVzZSBUSUQKIAkgKiBpcyBhIHBhc3MtYnktcmVmZXJlbmNlIHR5cGUgb24gYWxsIHBsYXRm b3Jtcywgd2hlcmVhcyBpbnQ4IGlzCiAJICogcGFzcy1ieS12YWx1ZSBvbiBtb3N0IHBsYXRmb3Jt cy4KIAkgKi8KKwlhdXhTdGF0ZS50dXBsZXNvcnQgPSB0dXBsZXNvcnRfYmVnaW5fZGF0dW0oSU5U OE9JRCwgSW50OExlc3NPcGVyYXRvciwKKwkJCQkJCQkJCQkgICBJbnZhbGlkT2lkLCBmYWxzZSwK KwkJCQkJCQkJCQkgICBhdXhfd29ya19tZW1fcGFydCwKKwkJCQkJCQkJCQkgICBOVUxMLCBUVVBM RVNPUlRfTk9ORSk7CisJYXV4U3RhdGUuaHR1cHMgPSBhdXhTdGF0ZS5pdHVwcyA9IGF1eFN0YXRl LnR1cHNfaW5zZXJ0ZWQgPSAwOworCisJKHZvaWQpIGluZGV4X2J1bGtfZGVsZXRlKCZhdXhpdmlu Zm8sIE5VTEwsCisJCQkJCQkJIHZhbGlkYXRlX2luZGV4X2NhbGxiYWNrLCAmYXV4U3RhdGUpOwor CiAJc3RhdGUudHVwbGVzb3J0ID0gdHVwbGVzb3J0X2JlZ2luX2RhdHVtKElOVDhPSUQsIEludDhM ZXNzT3BlcmF0b3IsCiAJCQkJCQkJCQkJCUludmFsaWRPaWQsIGZhbHNlLAotCQkJCQkJCQkJCQlt YWludGVuYW5jZV93b3JrX21lbSwKKwkJCQkJCQkJCQkJKGludCkgbWFpbl93b3JrX21lbV9wYXJ0 LAogCQkJCQkJCQkJCQlOVUxMLCBUVVBMRVNPUlRfTk9ORSk7CiAJc3RhdGUuaHR1cHMgPSBzdGF0 ZS5pdHVwcyA9IHN0YXRlLnR1cHNfaW5zZXJ0ZWQgPSAwOwogCkBAIC0zNDQ0LDI3ICszNjQ1LDMz IEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElkLCBTbmFwc2hvdCBzbmFw c2hvdCkKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSgzLCBwcm9ncmVzc19p bmRleCwgcHJvZ3Jlc3NfdmFscyk7CiAJfQogCXR1cGxlc29ydF9wZXJmb3Jtc29ydChzdGF0ZS50 dXBsZXNvcnQpOworCXR1cGxlc29ydF9wZXJmb3Jtc29ydChhdXhTdGF0ZS50dXBsZXNvcnQpOwor CisJUG9wQWN0aXZlU25hcHNob3QoKTsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJ QXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCi0JICog Tm93IHNjYW4gdGhlIGhlYXAgYW5kICJtZXJnZSIgaXQgd2l0aCB0aGUgaW5kZXgKKwkgKiBOb3cg bWVyZ2UgYm90aCBpbmRleGVzCiAJICovCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfVkFMSURBVEVfVEFCTEVTQ0FOKTsKLQl0YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuKGhlYXBS ZWxhdGlvbiwKLQkJCQkJCQkgIGluZGV4UmVsYXRpb24sCi0JCQkJCQkJICBpbmRleEluZm8sCi0J CQkJCQkJICBzbmFwc2hvdCwKLQkJCQkJCQkgICZzdGF0ZSk7CisJCQkJCQkJCSBQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYTUVSR0UpOworCWxpbWl0WG1pbiA9IHRhYmxlX2lu ZGV4X3ZhbGlkYXRlX3NjYW4oaGVhcFJlbGF0aW9uLAorCQkJCQkJCQkJCSAgaW5kZXhSZWxhdGlv biwKKwkJCQkJCQkJCQkgIGluZGV4SW5mbywKKwkJCQkJCQkJCQkgICZzdGF0ZSwKKwkJCQkJCQkJ CQkgICZhdXhTdGF0ZSk7CiAKLQkvKiBEb25lIHdpdGggdHVwbGVzb3J0IG9iamVjdCAqLwotCXR1 cGxlc29ydF9lbmQoc3RhdGUudHVwbGVzb3J0KTsKKwkvKiBUdXBsZSBzb3J0IGNsb3NlZCBieSB0 YWJsZV9pbmRleF92YWxpZGF0ZV9zY2FuICovCisJQXNzZXJ0KHN0YXRlLnR1cGxlc29ydCA9PSBO VUxMICYmIGF1eFN0YXRlLnR1cGxlc29ydCA9PSBOVUxMKTsKIAogCS8qIE1ha2Ugc3VyZSB0byBy ZWxlYXNlIHJlc291cmNlcyBjYWNoZWQgaW4gaW5kZXhJbmZvIChpZiBuZWVkZWQpLiAqLwogCWlu ZGV4X2luc2VydF9jbGVhbnVwKGluZGV4UmVsYXRpb24sIGluZGV4SW5mbyk7CiAKIAllbG9nKERF QlVHMiwKLQkJICJ2YWxpZGF0ZV9pbmRleCBmb3VuZCAlLjBmIGhlYXAgdHVwbGVzLCAlLjBmIGlu ZGV4IHR1cGxlczsgaW5zZXJ0ZWQgJS4wZiBtaXNzaW5nIHR1cGxlcyIsCi0JCSBzdGF0ZS5odHVw cywgc3RhdGUuaXR1cHMsIHN0YXRlLnR1cHNfaW5zZXJ0ZWQpOworCQkgInZhbGlkYXRlX2luZGV4 IGZldGNoZWQgJS4wZiBoZWFwIHR1cGxlcywgJS4wZiBpbmRleCB0dXBsZXM7IgorCQkJCQkJIiAl LjBmIGF1eCBpbmRleCB0dXBsZXM7IGluc2VydGVkICUuMGYgbWlzc2luZyB0dXBsZXMiLAorCQkg c3RhdGUuaHR1cHMsIHN0YXRlLml0dXBzLCBhdXhTdGF0ZS5pdHVwcywgc3RhdGUudHVwc19pbnNl cnRlZCk7CiAKIAkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4 IGZ1bmN0aW9ucyAqLwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOwpAQCAt MzQ3Myw4ICszNjgwLDEyIEBAIHZhbGlkYXRlX2luZGV4KE9pZCBoZWFwSWQsIE9pZCBpbmRleElk LCBTbmFwc2hvdCBzbmFwc2hvdCkKIAlTZXRVc2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlk LCBzYXZlX3NlY19jb250ZXh0KTsKIAogCS8qIENsb3NlIHJlbHMsIGJ1dCBrZWVwIGxvY2tzICov CisJaW5kZXhfY2xvc2UoYXV4SW5kZXhSZWxhdGlvbiwgTm9Mb2NrKTsKIAlpbmRleF9jbG9zZShp bmRleFJlbGF0aW9uLCBOb0xvY2spOwogCXRhYmxlX2Nsb3NlKGhlYXBSZWxhdGlvbiwgTm9Mb2Nr KTsKKworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJcmV0 dXJuIGxpbWl0WG1pbjsKIH0KIAogLyoKQEAgLTM1MzMsNiArMzc0NCwxMSBAQCBpbmRleF9zZXRf c3RhdGVfZmxhZ3MoT2lkIGluZGV4SWQsIEluZGV4U3RhdGVGbGFnc0FjdGlvbiBhY3Rpb24pCiAJ CQlBc3NlcnQoIWluZGV4Rm9ybS0+aW5kaXN2YWxpZCk7CiAJCQlpbmRleEZvcm0tPmluZGlzdmFs aWQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWToKKwkJ CS8qIENsZWFyIGluZGlzcmVhZHkgZHVyaW5nIGEgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBz ZXF1ZW5jZSAqLworCQkJQXNzZXJ0KCFpbmRleEZvcm0tPmluZGlzdmFsaWQpOworCQkJaW5kZXhG b3JtLT5pbmRpc3JlYWR5ID0gZmFsc2U7CisJCQlicmVhazsKIAkJY2FzZSBJTkRFWF9EUk9QX0NM RUFSX1ZBTElEOgogCiAJCQkvKgpAQCAtMzgwNCw2ICs0MDIwLDEzIEBAIHJlaW5kZXhfaW5kZXgo Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRleElkLAogCQlpbmRleEluZm8tPmlpX0V4 Y2x1c2lvblN0cmF0cyA9IE5VTEw7CiAJfQogCisJLyogQXV4aWxpYXJ5IGluZGV4ZXMgYXJlIG5v dCBhbGxvd2VkIHRvIGJlIHJlYnVpbHQgKi8KKwlpZiAoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkp CisJCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCisJCQkgZXJybXNnKCJyZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCBcIiVzXCIgbm90 IHN1cHBvcnRlZCIsCisJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGlSZWwpKSkpOworCiAJ LyogU3VwcHJlc3MgdXNlIG9mIHRoZSB0YXJnZXQgaW5kZXggd2hpbGUgcmVidWlsZGluZyBpdCAq LwogCVNldFJlaW5kZXhQcm9jZXNzaW5nKGhlYXBJZCwgaW5kZXhJZCk7CiAKQEAgLTQwNDYsNiAr NDI2OSw3IEBAIHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBy ZWxpZCwgaW50IGZsYWdzLAogCXsKIAkJT2lkCQkJaW5kZXhPaWQgPSBsZmlyc3Rfb2lkKGluZGV4 SWQpOwogCQlPaWQJCQlpbmRleE5hbWVzcGFjZUlkID0gZ2V0X3JlbF9uYW1lc3BhY2UoaW5kZXhP aWQpOworCQlPaWQJCQlpbmRleEFtID0gZ2V0X3JlbF9yZWxhbShpbmRleE9pZCk7CiAKIAkJLyoK IAkJICogU2tpcCBhbnkgaW52YWxpZCBpbmRleGVzIG9uIGEgVE9BU1QgdGFibGUuICBUaGVzZSBj YW4gb25seSBiZQpAQCAtNDA3MSw2ICs0Mjk1LDE4IEBAIHJlaW5kZXhfcmVsYXRpb24oY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxpZCwgaW50IGZsYWdzLAogCQkJY29udGludWU7CiAJ CX0KIAorCQlpZiAoaW5kZXhBbSA9PSBTVElSX0FNX09JRCkKKwkJeworCQkJZXJlcG9ydChXQVJO SU5HLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJ CSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXMuJXNcIiIs CisJCQkJCQkJZ2V0X25hbWVzcGFjZV9uYW1lKGluZGV4TmFtZXNwYWNlSWQpLAorCQkJCQkJCWdl dF9yZWxfbmFtZShpbmRleE9pZCkpKSk7CisJCQlpZiAoZmxhZ3MgJiBSRUlOREVYX1JFTF9TVVBQ UkVTU19JTkRFWF9VU0UpCisJCQkJUmVtb3ZlUmVpbmRleFBlbmRpbmcoaW5kZXhPaWQpOworCQkJ Y29udGludWU7CisJCX0KKwogCQlyZWluZGV4X2luZGV4KHN0bXQsIGluZGV4T2lkLCAhKGZsYWdz ICYgUkVJTkRFWF9SRUxfQ0hFQ0tfQ09OU1RSQUlOVFMpLAogCQkJCQkgIHBlcnNpc3RlbmNlLCBw YXJhbXMpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggYTRkMmNmZGNh ZjUuLmFkMTVkYjU3ZmQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0x Mjc0LDE2ICsxMjc0LDE3IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfcHJvZ3Jlc3NfY3JlYXRlX2lu ZGV4IEFTCiAgICAgICAgICAgICAgICAgICAgICAgRU5EIEFTIGNvbW1hbmQsCiAgICAgICAgIENB U0UgUy5wYXJhbTEwIFdIRU4gMCBUSEVOICdpbml0aWFsaXppbmcnCiAgICAgICAgICAgICAgICAg ICAgICAgIFdIRU4gMSBUSEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIGJlZm9yZSBidWlsZCcKLSAg ICAgICAgICAgICAgICAgICAgICAgV0hFTiAyIFRIRU4gJ2J1aWxkaW5nIGluZGV4JyB8fAorICAg ICAgICAgICAgICAgICAgICAgICBXSEVOIDIgVEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyB0byB1 c2UgYXV4aWxpYXJ5IGluZGV4JworICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDMgVEhFTiAn YnVpbGRpbmcgaW5kZXgnIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT0FMRVNDRSgo JzogJyB8fCBwZ19pbmRleGFtX3Byb2dyZXNzX3BoYXNlbmFtZShTLnBhcmFtOTo6b2lkLCBTLnBh cmFtMTEpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotICAgICAg ICAgICAgICAgICAgICAgICBXSEVOIDMgVEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUg dmFsaWRhdGlvbicKLSAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA0IFRIRU4gJ2luZGV4IHZh bGlkYXRpb246IHNjYW5uaW5nIGluZGV4JwotICAgICAgICAgICAgICAgICAgICAgICBXSEVOIDUg VEhFTiAnaW5kZXggdmFsaWRhdGlvbjogc29ydGluZyB0dXBsZXMnCi0gICAgICAgICAgICAgICAg ICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyB0YWJsZScKLSAg ICAgICAgICAgICAgICAgICAgICAgV0hFTiA3IFRIRU4gJ3dhaXRpbmcgZm9yIG9sZCBzbmFwc2hv dHMnCi0gICAgICAgICAgICAgICAgICAgICAgIFdIRU4gOCBUSEVOICd3YWl0aW5nIGZvciByZWFk ZXJzIGJlZm9yZSBtYXJraW5nIGRlYWQnCi0gICAgICAgICAgICAgICAgICAgICAgIFdIRU4gOSBU SEVOICd3YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBkcm9wcGluZycKKyAgICAgICAgICAgICAg ICAgICAgICAgV0hFTiA0IFRIRU4gJ3dhaXRpbmcgZm9yIHdyaXRlcnMgYmVmb3JlIHZhbGlkYXRp b24nCisgICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9u OiBzY2FubmluZyBpbmRleCcKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2lu ZGV4IHZhbGlkYXRpb246IHNvcnRpbmcgdHVwbGVzJworICAgICAgICAgICAgICAgICAgICAgICBX SEVOIDcgVEhFTiAnaW5kZXggdmFsaWRhdGlvbjogbWVyZ2luZyBpbmRleGVzJworICAgICAgICAg ICAgICAgICAgICAgICBXSEVOIDggVEhFTiAnd2FpdGluZyBmb3Igb2xkIHNuYXBzaG90cycKKyAg ICAgICAgICAgICAgICAgICAgICAgV0hFTiA5IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVm b3JlIG1hcmtpbmcgZGVhZCcKKyAgICAgICAgICAgICAgICAgICAgICAgV0hFTiAxMCBUSEVOICd3 YWl0aW5nIGZvciByZWFkZXJzIGJlZm9yZSBkcm9wcGluZycKICAgICAgICAgICAgICAgICAgICAg ICAgRU5EIGFzIHBoYXNlLAogICAgICAgICBTLnBhcmFtNCBBUyBsb2NrZXJzX3RvdGFsLAogICAg ICAgICBTLnBhcmFtNSBBUyBsb2NrZXJzX2RvbmUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL3RvYXN0aW5nLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKaW5kZXgg ODc0YThmYzg5YWQuLjBlZTJmZDVlN2RlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9n L3RvYXN0aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCkBAIC0zMjUs NyArMzI1LDggQEAgY3JlYXRlX3RvYXN0X3RhYmxlKFJlbGF0aW9uIHJlbCwgT2lkIHRvYXN0T2lk LCBPaWQgdG9hc3RJbmRleE9pZCwKIAkJCQkgQlRSRUVfQU1fT0lELAogCQkJCSByZWwtPnJkX3Jl bC0+cmVsdGFibGVzcGFjZSwKIAkJCQkgY29sbGF0aW9uSWRzLCBvcGNsYXNzSWRzLCBOVUxMLCBj b2xvcHRpb25zLCBOVUxMLCAoRGF0dW0pIDAsCi0JCQkJIElOREVYX0NSRUFURV9JU19QUklNQVJZ LCAwLCB0cnVlLCB0cnVlLCBOVUxMKTsKKwkJCQkgSU5ERVhfQ1JFQVRFX0lTX1BSSU1BUlksIDAs IHRydWUsIHRydWUsIE5VTEwsCisJCQkJIHRvYXN0X3JlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5j ZSk7CiAKIAl0YWJsZV9jbG9zZSh0b2FzdF9yZWwsIE5vTG9jayk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMKaW5kZXggNGI1MGQ2ZWU4Y2YuLjUxZGI3ZjIzMzc4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9p bmRleGNtZHMuYwpAQCAtMTgyLDYgKzE4Miw3IEBAIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBv bGRJZCwKIAkJCQkJIGJvb2wgaXNXaXRob3V0T3ZlcmxhcHMpCiB7CiAJYm9vbAkJaXNjb25zdHJh aW50OworCWJvb2wJCWlzYXV4aWxpYXJ5OwogCU9pZAkJICAgKnR5cGVJZHM7CiAJT2lkCQkgICAq Y29sbGF0aW9uSWRzOwogCU9pZAkJICAgKm9wY2xhc3NJZHM7CkBAIC0yMzIsNiArMjMzLDcgQEAg Q2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCiAJYW1jYW5vcmRlciA9IGFtUm91dGlu ZS0+YW1jYW5vcmRlcjsKIAlhbXN1bW1hcml6aW5nID0gYW1Sb3V0aW5lLT5hbXN1bW1hcml6aW5n OworCWlzYXV4aWxpYXJ5ID0gYWNjZXNzTWV0aG9kSWQgPT0gU1RJUl9BTV9PSUQ7CiAKIAkvKgog CSAqIENvbXB1dGUgdGhlIG9wZXJhdG9yIGNsYXNzZXMsIGNvbGxhdGlvbnMsIGFuZCBleGNsdXNp b24gb3BlcmF0b3JzIGZvcgpAQCAtMjQzLDcgKzI0NSw4IEBAIENoZWNrSW5kZXhDb21wYXRpYmxl KE9pZCBvbGRJZCwKIAkgKi8KIAlpbmRleEluZm8gPSBtYWtlSW5kZXhJbmZvKG51bWJlck9mQXR0 cmlidXRlcywgbnVtYmVyT2ZBdHRyaWJ1dGVzLAogCQkJCQkJCSAgYWNjZXNzTWV0aG9kSWQsIE5J TCwgTklMLCBmYWxzZSwgZmFsc2UsCi0JCQkJCQkJICBmYWxzZSwgZmFsc2UsIGFtc3VtbWFyaXpp bmcsIGlzV2l0aG91dE92ZXJsYXBzKTsKKwkJCQkJCQkgIGZhbHNlLCBmYWxzZSwgYW1zdW1tYXJp emluZywKKwkJCQkJCQkgIGlzV2l0aG91dE92ZXJsYXBzLCBpc2F1eGlsaWFyeSk7CiAJdHlwZUlk cyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CiAJY29sbGF0aW9uSWRz ID0gcGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKIAlvcGNsYXNzSWRzID0g cGFsbG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKQEAgLTU1Myw2ICs1NTYsNyBA QCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIHsKIAlib29sCQljb25jdXJyZW50OwogCWNoYXIJ ICAgKmluZGV4UmVsYXRpb25OYW1lOworCWNoYXIJICAgKmF1eEluZGV4UmVsYXRpb25OYW1lID0g TlVMTDsKIAljaGFyCSAgICphY2Nlc3NNZXRob2ROYW1lOwogCU9pZAkJICAgKnR5cGVJZHM7CiAJ T2lkCQkgICAqY29sbGF0aW9uSWRzOwpAQCAtNTYyLDYgKzU2Niw3IEBAIERlZmluZUluZGV4KE9p ZCB0YWJsZUlkLAogCU9pZAkJCW5hbWVzcGFjZUlkOwogCU9pZAkJCXRhYmxlc3BhY2VJZDsKIAlP aWQJCQljcmVhdGVkQ29uc3RyYWludElkID0gSW52YWxpZE9pZDsKKwlPaWQJCQlhdXhJbmRleFJl bGF0aW9uSWQgPSBJbnZhbGlkT2lkOwogCUxpc3QJICAgKmluZGV4Q29sTmFtZXM7CiAJTGlzdAkg ICAqYWxsSW5kZXhQYXJhbXM7CiAJUmVsYXRpb24JcmVsOwpAQCAtNTgzLDEwICs1ODgsMTAgQEAg RGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJaW50CQkJbnVtYmVyT2ZLZXlBdHRyaWJ1dGVzOwog CVRyYW5zYWN0aW9uSWQgbGltaXRYbWluOwogCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKKwlPYmpl Y3RBZGRyZXNzIGF1eEFkZHJlc3M7CiAJTG9ja1JlbElkCWhlYXByZWxpZDsKIAlMT0NLVEFHCQlo ZWFwbG9ja3RhZzsKIAlMT0NLTU9ERQlsb2NrbW9kZTsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlP aWQJCQlyb290X3NhdmVfdXNlcmlkOwogCWludAkJCXJvb3Rfc2F2ZV9zZWNfY29udGV4dDsKIAlp bnQJCQlyb290X3NhdmVfbmVzdGxldmVsOwpAQCAtODMzLDYgKzgzOCwxNSBAQCBEZWZpbmVJbmRl eChPaWQgdGFibGVJZCwKIAkJCQkJCQkJCQkJc3RtdC0+ZXhjbHVkZU9wTmFtZXMsCiAJCQkJCQkJ CQkJCXN0bXQtPnByaW1hcnksCiAJCQkJCQkJCQkJCXN0bXQtPmlzY29uc3RyYWludCk7CisJLyoK KwkgKiBTZWxlY3QgbmFtZSBmb3IgYXV4aWxpYXJ5IGluZGV4CisJICovCisJaWYgKGNvbmN1cnJl bnQpCisJCWF1eEluZGV4UmVsYXRpb25OYW1lID0gQ2hvb3NlUmVsYXRpb25OYW1lKGluZGV4UmVs YXRpb25OYW1lLAorCQkJCQkJCQkJCQkJICBOVUxMLAorCQkJCQkJCQkJCQkJICAiY2NhdXgiLAor CQkJCQkJCQkJCQkJICBuYW1lc3BhY2VJZCwKKwkJCQkJCQkJCQkJCSAgZmFsc2UpOwogCiAJLyoK IAkgKiBsb29rIHVwIHRoZSBhY2Nlc3MgbWV0aG9kLCB2ZXJpZnkgaXQgY2FuIGhhbmRsZSB0aGUg cmVxdWVzdGVkIGZlYXR1cmVzCkBAIC05MjgsNyArOTQyLDggQEAgRGVmaW5lSW5kZXgoT2lkIHRh YmxlSWQsCiAJCQkJCQkJICAhY29uY3VycmVudCwKIAkJCQkJCQkgIGNvbmN1cnJlbnQsCiAJCQkJ CQkJICBhbWlzc3VtbWFyaXppbmcsCi0JCQkJCQkJICBzdG10LT5pc3dpdGhvdXRvdmVybGFwcyk7 CisJCQkJCQkJICBzdG10LT5pc3dpdGhvdXRvdmVybGFwcywKKwkJCQkJCQkgIGZhbHNlKTsKIAog CXR5cGVJZHMgPSBwYWxsb2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwogCWNvbGxh dGlvbklkcyA9IHBhbGxvY19hcnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CkBAIC0xMjU3 LDcgKzEyNzIsOCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJCQkJIGNvbG9wdGlvbnMs IE5VTEwsIHJlbG9wdGlvbnMsCiAJCQkJCSBmbGFncywgY29uc3RyX2ZsYWdzLAogCQkJCQkgYWxs b3dTeXN0ZW1UYWJsZU1vZHMsICFjaGVja19yaWdodHMsCi0JCQkJCSAmY3JlYXRlZENvbnN0cmFp bnRJZCk7CisJCQkJCSAmY3JlYXRlZENvbnN0cmFpbnRJZCwKKwkJCQkJIHJlbC0+cmRfcmVsLT5y ZWxwZXJzaXN0ZW5jZSk7CiAKIAlPYmplY3RBZGRyZXNzU2V0KGFkZHJlc3MsIFJlbGF0aW9uUmVs YXRpb25JZCwgaW5kZXhSZWxhdGlvbklkKTsKIApAQCAtMTU5OSw2ICsxNjE1LDE2IEBAIERlZmlu ZUluZGV4KE9pZCB0YWJsZUlkLAogCQlyZXR1cm4gYWRkcmVzczsKIAl9CiAKKwkvKgorCSAqIElu IGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCAtIGNyZWF0ZSBhdXhpbGlhcnkgaW5kZXggcmVjb3Jk LgorCSAqLworCWlmIChjb25jdXJyZW50KQorCXsKKwkJYXV4SW5kZXhSZWxhdGlvbklkID0gaW5k ZXhfY29uY3VycmVudGx5X2NyZWF0ZV9hdXgocmVsLCBpbmRleFJlbGF0aW9uSWQsCisJCQkJCQkJ CQkJCXRhYmxlc3BhY2VJZCwgYXV4SW5kZXhSZWxhdGlvbk5hbWUpOworCQlPYmplY3RBZGRyZXNz U2V0KGF1eEFkZHJlc3MsIFJlbGF0aW9uUmVsYXRpb25JZCwgYXV4SW5kZXhSZWxhdGlvbklkKTsK Kwl9CisKIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHJvb3Rfc2F2ZV9uZXN0bGV2ZWwpOwogCVNldFVz ZXJJZEFuZFNlY0NvbnRleHQocm9vdF9zYXZlX3VzZXJpZCwgcm9vdF9zYXZlX3NlY19jb250ZXh0 KTsKIApAQCAtMTYyNywxMSArMTY1MywxMSBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkv KgogCSAqIEZvciBhIGNvbmN1cnJlbnQgYnVpbGQsIGl0J3MgaW1wb3J0YW50IHRvIG1ha2UgdGhl IGNhdGFsb2cgZW50cmllcwogCSAqIHZpc2libGUgdG8gb3RoZXIgdHJhbnNhY3Rpb25zIGJlZm9y ZSB3ZSBzdGFydCB0byBidWlsZCB0aGUgaW5kZXguIFRoYXQKLQkgKiB3aWxsIHByZXZlbnQgdGhl bSBmcm9tIG1ha2luZyBpbmNvbXBhdGlibGUgSE9UIHVwZGF0ZXMuICBUaGUgbmV3IGluZGV4Ci0J ICogd2lsbCBiZSBtYXJrZWQgbm90IGluZGlzcmVhZHkgYW5kIG5vdCBpbmRpc3ZhbGlkLCBzbyB0 aGF0IG5vIG9uZSBlbHNlCi0JICogdHJpZXMgdG8gZWl0aGVyIGluc2VydCBpbnRvIGl0IG9yIHVz ZSBpdCBmb3IgcXVlcmllcy4KKwkgKiB3aWxsIHByZXZlbnQgdGhlbSBmcm9tIG1ha2luZyBpbmNv bXBhdGlibGUgSE9UIHVwZGF0ZXMuIE5ldyBpbmRleGVzCisJICogKG1haW4gYW5kIGF1eGlsaWFy eSkgd2lsbCBiZSBtYXJrZWQgbm90IGluZGlzcmVhZHkgYW5kIG5vdCBpbmRpc3ZhbGlkLAorCSAq IHNvIHRoYXQgbm8gb25lIGVsc2UgdHJpZXMgdG8gZWl0aGVyIGluc2VydCBpbnRvIGl0IG9yIHVz ZSBpdCBmb3IgcXVlcmllcy4KIAkgKgotCSAqIFdlIG11c3QgY29tbWl0IG91ciBjdXJyZW50IHRy YW5zYWN0aW9uIHNvIHRoYXQgdGhlIGluZGV4IGJlY29tZXMKKwkgKiBXZSBtdXN0IGNvbW1pdCBv dXIgY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBpbmRleGVzIGJlY29tZXMKIAkgKiB2 aXNpYmxlOyB0aGVuIHN0YXJ0IGFub3RoZXIuICBOb3RlIHRoYXQgYWxsIHRoZSBkYXRhIHN0cnVj dHVyZXMgd2UganVzdAogCSAqIGJ1aWx0IGFyZSBsb3N0IGluIHRoZSBjb21taXQuICBUaGUgb25s eSBkYXRhIHdlIGtlZXAgcGFzdCBoZXJlIGFyZSB0aGUKIAkgKiByZWxhdGlvbiBJRHMuCkBAIC0x NjQxLDcgKzE2NjcsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBjYW5ub3QgYmxv Y2ssIGV2ZW4gaWYgc29tZW9uZSBlbHNlIGlzIHdhaXRpbmcgZm9yIGFjY2VzcywgYmVjYXVzZSB3 ZQogCSAqIGFscmVhZHkgaGF2ZSB0aGUgc2FtZSBsb2NrIHdpdGhpbiBvdXIgdHJhbnNhY3Rpb24u CiAJICoKLQkgKiBOb3RlOiB3ZSBkb24ndCBjdXJyZW50bHkgYm90aGVyIHdpdGggYSBzZXNzaW9u IGxvY2sgb24gdGhlIGluZGV4LAorCSAqIE5vdGU6IHdlIGRvbid0IGN1cnJlbnRseSBib3RoZXIg d2l0aCBhIHNlc3Npb24gbG9jayBvbiB0aGUgaW5kZXhlcywKIAkgKiBiZWNhdXNlIHRoZXJlIGFy ZSBubyBvcGVyYXRpb25zIHRoYXQgY291bGQgY2hhbmdlIGl0cyBzdGF0ZSB3aGlsZSB3ZQogCSAq IGhvbGQgbG9jayBvbiB0aGUgcGFyZW50IHRhYmxlLiAgVGhpcyBtaWdodCBuZWVkIHRvIGNoYW5n ZSBsYXRlci4KIAkgKi8KQEAgLTE2ODAsNyArMTcwNiw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJs ZUlkLAogCSAqIHdpdGggdGhlIG9sZCBsaXN0IG9mIGluZGV4ZXMuICBVc2UgU2hhcmVMb2NrIHRv IGNvbnNpZGVyIHJ1bm5pbmcKIAkgKiB0cmFuc2FjdGlvbnMgdGhhdCBob2xkIGxvY2tzIHRoYXQg cGVybWl0IHdyaXRpbmcgdG8gdGhlIHRhYmxlLiAgTm90ZSB3ZQogCSAqIGRvIG5vdCBuZWVkIHRv IHdvcnJ5IGFib3V0IHhhY3RzIHRoYXQgb3BlbiB0aGUgdGFibGUgZm9yIHdyaXRpbmcgYWZ0ZXIK LQkgKiB0aGlzIHBvaW50OyB0aGV5IHdpbGwgc2VlIHRoZSBuZXcgaW5kZXggd2hlbiB0aGV5IG9w ZW4gaXQuCisJICogdGhpcyBwb2ludDsgdGhleSB3aWxsIHNlZSB0aGUgbmV3IGluZGV4ZXMgd2hl biB0aGV5IG9wZW4gaXQuCiAJICoKIAkgKiBOb3RlOiB0aGUgcmVhc29uIHdlIHVzZSBhY3R1YWwg bG9jayBhY3F1aXNpdGlvbiBoZXJlLCByYXRoZXIgdGhhbiBqdXN0CiAJICogY2hlY2tpbmcgdGhl IFByb2NBcnJheSBhbmQgc2xlZXBpbmcsIGlzIHRoYXQgZGVhZGxvY2sgaXMgcG9zc2libGUgaWYK QEAgLTE2OTIsMTUgKzE3MTgsMzkgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAkvKgog CSAqIEF0IHRoaXMgbW9tZW50IHdlIGFyZSBzdXJlIHRoYXQgdGhlcmUgYXJlIG5vIHRyYW5zYWN0 aW9ucyB3aXRoIHRoZQotCSAqIHRhYmxlIG9wZW4gZm9yIHdyaXRlIHRoYXQgZG9uJ3QgaGF2ZSB0 aGlzIG5ldyBpbmRleCBpbiB0aGVpciBsaXN0IG9mCisJICogdGFibGUgb3BlbiBmb3Igd3JpdGUg dGhhdCBkb24ndCBoYXZlIHRoaXMgbmV3IGluZGV4ZXMgaW4gdGhlaXIgbGlzdCBvZgogCSAqIGlu ZGV4ZXMuICBXZSBoYXZlIHdhaXRlZCBvdXQgYWxsIHRoZSBleGlzdGluZyB0cmFuc2FjdGlvbnMg YW5kIGFueSBuZXcKLQkgKiB0cmFuc2FjdGlvbiB3aWxsIGhhdmUgdGhlIG5ldyBpbmRleCBpbiBp dHMgbGlzdCwgYnV0IHRoZSBpbmRleCBpcyBzdGlsbAotCSAqIG1hcmtlZCBhcyAibm90LXJlYWR5 LWZvci1pbnNlcnRzIi4gIFRoZSBpbmRleCBpcyBjb25zdWx0ZWQgd2hpbGUKKwkgKiB0cmFuc2Fj dGlvbiB3aWxsIGhhdmUgYm90aCBuZXcgaW5kZXhlcyBpbiBpdHMgbGlzdCwgYnV0IGluZGV4ZXMg YXJlIHN0aWxsCisJICogbWFya2VkIGFzICJub3QtcmVhZHktZm9yLWluc2VydHMiLiBUaGUgaW5k ZXhlcyBhcmUgY29uc3VsdGVkIHdoaWxlCiAJICogZGVjaWRpbmcgSE9ULXNhZmV0eSB0aG91Z2gu ICBUaGlzIGFycmFuZ2VtZW50IGVuc3VyZXMgdGhhdCBubyBuZXcgSE9UCiAJICogY2hhaW5zIGNh biBiZSBjcmVhdGVkIHdoZXJlIHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBvbGQgdHVwbGUgaW4gdGhl CiAJICogY2hhaW4gaGF2ZSBkaWZmZXJlbnQgaW5kZXgga2V5cy4KIAkgKgotCSAqIFdlIGJ1aWxk IHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNpbmcgbXVsdGlw bGUKKwkgKiBOb3cgY2FsbCBidWlsZCBvbiBhdXhpbGlhcnkgaW5kZXguIEluZGV4IHdpbGwgYmUg Y3JlYXRlZCBlbXB0eSB3aXRob3V0CisJICogYW55IGFjdHVhbCBoZWFwIHNjYW4sIGJ1dCBtYXJr ZWQgYXMgInJlYWR5LWZvci1pbnNlcnRzIi4gVGhlIGdvYWwgb2YKKwkgKiB0aGF0IGluZGV4IGlz IGFjY3VtdWxhdGUgbmV3IHR1cGxlcyB3aGlsZSBtYWluIGluZGV4IGlzIGFjdHVhbGx5IGJ1aWx0 LgorCSAqLworCWluZGV4X2NvbmN1cnJlbnRseV9idWlsZCh0YWJsZUlkLCBhdXhJbmRleFJlbGF0 aW9uSWQpOworCisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJU3RhcnRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKworCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3Jl IHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KKwlpZiAoc2FmZV9pbmRleCkKKwkJc2V0X2luZGV4 c2FmZV9wcm9jZmxhZ3MoKTsKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRSwKKwkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRf Mik7CisJLyoKKwkgKiBOb3cgd2UgbmVlZCB0byBlbnN1cmUgYXJlIG5vIHRyYW5zYWN0aW9ucyB3 aXRoIHRoZSB3aXRoIGF1eGlsaWFyeSBpbmRleAorCSAqIG1hcmtlZCBhcyAibm90LXJlYWR5LWZv ci1pbnNlcnRzIi4KKwkgKi8KKwlXYWl0Rm9yTG9ja2VycyhoZWFwbG9ja3RhZywgU2hhcmVMb2Nr LCB0cnVlKTsKKworCS8qCisJICogQXQgdGhpcyBtb21lbnQgd2UgYXJlIHN1cmUgd2hhdCBhbGwg bmV3IHR1cGxlcyBpbiB0YWJsZSBhcmUgaW5zZXJ0ZWQgaW50bworCSAqIGF1eGlsaWFyeSBpbmRl eC4gTm93IGl0IGlzIHRpbWUgdG8gYnVpbGQgdGhlIHRhcmdldCBpbmRleCBpdHNlbGYuCisJICoK KwkgKiBXZSBidWlsZCB0aGF0IGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJs ZSB1c2luZyBtdWx0aXBsZQogCSAqIHJlZnJlc2hpbmcgc25hcHNob3RzLiBXZSBjYW4gYmUgc3Vy ZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bwogCSAqIHRoZXNlIHR1cGxlcyB3aWxsIGJlIGNvbXBh dGlibGUgd2l0aCB0aGUgaW5kZXgsIHNpbmNlIGFueSB1cGRhdGVzIG1hZGUKIAkgKiBieSB0cmFu c2FjdGlvbnMgdGhhdCBkaWRuJ3Qga25vdyBhYm91dCB0aGUgaW5kZXggYXJlIG5vdyBjb21taXR0 ZWQgb3IKQEAgLTE3MjgsNDMgKzE3NzgsMzEgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJ ICogdGhlIGluZGV4IG1hcmtlZCBhcyByZWFkLW9ubHkgZm9yIHVwZGF0ZXMuCiAJICovCiAJcGdz dGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCi0JCQkJ CQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKKwkJCQkJCQkJIFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRV9XQUlUXzMpOwogCVdhaXRGb3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBT aGFyZUxvY2ssIHRydWUpOwogCiAJLyoKLQkgKiBOb3cgdGFrZSB0aGUgInJlZmVyZW5jZSBzbmFw c2hvdCIgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdmFsaWRhdGVfaW5kZXgoKQotCSAqIHRvIGZpbHRl ciBjYW5kaWRhdGUgdHVwbGVzLiAgQmV3YXJlISAgVGhlcmUgbWlnaHQgc3RpbGwgYmUgc25hcHNo b3RzIGluCi0JICogdXNlIHRoYXQgdHJlYXQgc29tZSB0cmFuc2FjdGlvbiBhcyBpbi1wcm9ncmVz cyB0aGF0IG91ciByZWZlcmVuY2UKLQkgKiBzbmFwc2hvdCB0cmVhdHMgYXMgY29tbWl0dGVkLiAg SWYgc3VjaCBhIHJlY2VudGx5LWNvbW1pdHRlZCB0cmFuc2FjdGlvbgotCSAqIGRlbGV0ZWQgdHVw bGVzIGluIHRoZSB0YWJsZSwgd2Ugd2lsbCBub3QgaW5jbHVkZSB0aGVtIGluIHRoZSBpbmRleDsg eWV0Ci0JICogdGhvc2UgdHJhbnNhY3Rpb25zIHdoaWNoIHNlZSB0aGUgZGVsZXRpbmcgb25lIGFz IHN0aWxsLWluLXByb2dyZXNzIHdpbGwKLQkgKiBleHBlY3Qgc3VjaCB0dXBsZXMgdG8gYmUgdGhl cmUgb25jZSB3ZSBtYXJrIHRoZSBpbmRleCBhcyB2YWxpZC4KLQkgKgotCSAqIFdlIHNvbHZlIHRo aXMgYnkgd2FpdGluZyBmb3IgYWxsIGVuZGFuZ2VyZWQgdHJhbnNhY3Rpb25zIHRvIGV4aXQgYmVm b3JlCi0JICogd2UgbWFyayB0aGUgaW5kZXggYXMgdmFsaWQuCi0JICoKLQkgKiBXZSBhbHNvIHNl dCBBY3RpdmVTbmFwc2hvdCB0byB0aGlzIHNuYXAsIHNpbmNlIGZ1bmN0aW9ucyBpbiBpbmRleGVz IG1heQotCSAqIG5lZWQgYSBzbmFwc2hvdC4KKwkgKiBVcGRhdGluZyBwZ19pbmRleCBtaWdodCBp bnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBhIHZhbGlk IHNuYXBzaG90LgogCSAqLwotCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOwotCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7Ci0KKwlQdXNo QWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkvKgotCSAqIFNjYW4g dGhlIGluZGV4IGFuZCB0aGUgaGVhcCwgaW5zZXJ0IGFueSBtaXNzaW5nIGluZGV4IGVudHJpZXMu CisJICogTm93IHRhcmdldCBpbmRleCBpcyBtYXJrZWQgYXMgInJlYWR5IiBmb3IgYWxsIHRyYW5z YWN0aW9ucy4gU28sIGF1eGlsaWFyeQorCSAqIGluZGV4IGlzIG5vdCBtb3JlIG5lZWRlZC4gU28s IHN0YXJ0IHJlbW92aW5nIHByb2Nlc3MgYnkgcmV2ZXJ0aW5nICJyZWFkeSIKKwkgKiBmbGFnLgog CSAqLwotCXZhbGlkYXRlX2luZGV4KHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCwgc25hcHNob3Qp OwotCi0JLyoKLQkgKiBEcm9wIHRoZSByZWZlcmVuY2Ugc25hcHNob3QuICBXZSBtdXN0IGRvIHRo aXMgYmVmb3JlIHdhaXRpbmcgb3V0IG90aGVyCi0JICogc25hcHNob3QgaG9sZGVycywgZWxzZSB3 ZSB3aWxsIGRlYWRsb2NrIGFnYWluc3Qgb3RoZXIgcHJvY2Vzc2VzIGFsc28KLQkgKiBkb2luZyBD UkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZLCB3aGljaCB3b3VsZCBzZWUgb3VyIHNuYXBzaG90IGFz IG9uZQotCSAqIHRoZXkgbXVzdCB3YWl0IGZvci4gIEJ1dCBmaXJzdCwgc2F2ZSB0aGUgc25hcHNo b3QncyB4bWluIHRvIHVzZSBhcwotCSAqIGxpbWl0WG1pbiBmb3IgR2V0Q3VycmVudFZpcnR1YWxY SURzKCkuCi0JICovCi0JbGltaXRYbWluID0gc25hcHNob3QtPnhtaW47Ci0KKwlpbmRleF9zZXRf c3RhdGVfZmxhZ3MoYXV4SW5kZXhSZWxhdGlvbklkLCBJTkRFWF9EUk9QX0NMRUFSX1JFQURZKTsK IAlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CisK KwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRl eCBxdWFsaWZpZXMgKi8KKwlpZiAoc2FmZV9pbmRleCkKKwkJc2V0X2luZGV4c2FmZV9wcm9jZmxh Z3MoKTsKKwkvKgorCSAqIE1lcmdlIGNvbnRlbnQgb2YgYXV4aWxpYXJ5IGFuZCB0YXJnZXQgaW5k ZXhlcyAtIGluc2VydCBhbnkgbWlzc2luZyBpbmRleCBlbnRyaWVzLgorCSAqLworCWxpbWl0WG1p biA9IHZhbGlkYXRlX2luZGV4KHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCwgYXV4SW5kZXhSZWxh dGlvbklkKTsKIAogCS8qCiAJICogVGhlIHNuYXBzaG90IHN1YnN5c3RlbSBjb3VsZCBzdGlsbCBj b250YWluIHJlZ2lzdGVyZWQgc25hcHNob3RzIHRoYXQKQEAgLTE3ODcsMTIgKzE4MjUsMTIgQEAg RGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJLyoKIAkgKiBUaGUgaW5kZXggaXMgbm93IHZhbGlk IGluIHRoZSBzZW5zZSB0aGF0IGl0IGNvbnRhaW5zIGFsbCBjdXJyZW50bHkKIAkgKiBpbnRlcmVz dGluZyB0dXBsZXMuICBCdXQgc2luY2UgaXQgbWlnaHQgbm90IGNvbnRhaW4gdHVwbGVzIGRlbGV0 ZWQganVzdAotCSAqIGJlZm9yZSB0aGUgcmVmZXJlbmNlIHNuYXAgd2FzIHRha2VuLCB3ZSBoYXZl IHRvIHdhaXQgb3V0IGFueQotCSAqIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGhhdmUgb2xkZXIg c25hcHNob3RzLgorCSAqIGJlZm9yZSB0aGUgbGFzdCBzbmFwc2hvdCBkdXJpbmcgdmFsaWRhdGlu ZyB3YXMgdGFrZW4sIHdlIGhhdmUgdG8gd2FpdAorCSAqIG91dCBhbnkgdHJhbnNhY3Rpb25zIHRo YXQgbWlnaHQgaGF2ZSBvbGRlciBzbmFwc2hvdHMuCiAJICovCiAJSU5KRUNUSU9OX1BPSU5UKCJk ZWZpbmVfaW5kZXhfYmVmb3JlX3NldF92YWxpZCIpOwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVf cGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFX1dBSVRfMyk7CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJ VF80KTsKIAlXYWl0Rm9yT2xkZXJTbmFwc2hvdHMobGltaXRYbWluLCB0cnVlKTsKIAogCS8qCkBA IC0xODE3LDYgKzE4NTUsNTMgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogdG8gcmVw bGFuOyBzbyByZWxjYWNoZSBmbHVzaCBvbiB0aGUgaW5kZXggaXRzZWxmIHdhcyBzdWZmaWNpZW50 LikKIAkgKi8KIAlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUJ5UmVsaWQoaGVhcHJlbGlkLnJlbElk KTsKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCisJLyogVGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlm IGluZGV4IHF1YWxpZmllcyAqLworCWlmIChzYWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3By b2NmbGFncygpOworCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVB VEVJRFhfUEhBU0UsCisJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzUpOwor CS8qIE5vdyB3YWl0IGZvciBhbGwgdHJhbnNhY3Rpb24gdG8gc2VlIGF1eGlsaWFyeSBhcyAibm9u LXJlYWR5IGZvciBpbnNlcnRzIiAqLworCVdhaXRGb3JMb2NrZXJzKGhlYXBsb2NrdGFnLCBBY2Nl c3NFeGNsdXNpdmVMb2NrLCB0cnVlKTsKKworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwor CVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIFVwZGF0aW5nIHBnX2luZGV4 IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkgKiBoYXZl IGEgdmFsaWQgc25hcHNob3QuCisJICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0 aW9uU25hcHNob3QoKSk7CisJLyogTm93IGl0IGlzIHRpbWUgdG8gbWFyayBhdXhpbGlhcnkgaW5k ZXggYXMgZGVhZCAqLworCWluZGV4X2NvbmN1cnJlbnRseV9zZXRfZGVhZCh0YWJsZUlkLCBhdXhJ bmRleFJlbGF0aW9uSWQpOworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisKKwlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyogVGVsbCBj b25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAq LworCWlmIChzYWZlX2luZGV4KQorCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCisJcGdz dGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJCQkJ CQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzYpOworCS8qIE5vdyB3YWl0IGZvciBh bGwgdHJhbnNhY3Rpb24gdG8gaWdub3JlIGF1eGlsaWFyeSBiZWNhdXNlIGl0IGlzIGRlYWQgKi8K KwlXYWl0Rm9yTG9ja2VycyhoZWFwbG9ja3RhZywgQWNjZXNzRXhjbHVzaXZlTG9jaywgdHJ1ZSk7 CisKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCisJLyoKKwkgKiBEcm9wIGF1eGlsaWFyeSBpbmRleC4KKwkgKgorCSAqIFVzZSBQRVJG T1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRfTE9DSyBzbyB0aGF0IGluZGV4X2Ryb3AoKSB1c2VzIHRo ZQorCSAqIHJpZ2h0IGxvY2sgbGV2ZWwuCisJICovCisJcGVyZm9ybURlbGV0aW9uKCZhdXhBZGRy ZXNzLCBEUk9QX1JFU1RSSUNULAorCQkJCQkJCSBQRVJGT1JNX0RFTEVUSU9OX0NPTkNVUlJFTlRf TE9DSyB8IFBFUkZPUk1fREVMRVRJT05fSU5URVJOQUwpOwogCiAJLyoKIAkgKiBMYXN0IHRoaW5n IHRvIGRvIGlzIHJlbGVhc2UgdGhlIHNlc3Npb24tbGV2ZWwgbG9jayBvbiB0aGUgcGFyZW50IHRh YmxlLgpAQCAtMzUzNyw2ICszNjIyLDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNv bnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAl0eXBl ZGVmIHN0cnVjdCBSZWluZGV4SW5kZXhJbmZvCiAJewogCQlPaWQJCQlpbmRleElkOworCQlPaWQJ CQlhdXhJbmRleElkOwogCQlPaWQJCQl0YWJsZUlkOwogCQlPaWQJCQlhbUlkOwogCQlib29sCQlz YWZlOwkJLyogZm9yIHNldF9pbmRleHNhZmVfcHJvY2ZsYWdzICovCkBAIC0zNjQyLDggKzM3Mjgs MTUgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10 LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJCQkJT2lkCQkJY2VsbE9pZCA9IGxmaXJz dF9vaWQobGMpOwogCQkJCQlSZWxhdGlvbglpbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihjZWxs T2lkLAogCQkJCQkJCQkJCQkJCQkgICBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQkJCQlJ bmRleEluZm8qCWluZGV4SW5mbyA9IEJ1aWxkRHVtbXlJbmRleEluZm8oaW5kZXhSZWxhdGlvbik7 CiAKLQkJCQkJaWYgKCFpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kaXN2YWxpZCkKKworCQkJ CQlpZiAoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpCisJCQkJCQllcmVwb3J0KFdBUk5JTkcsKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJCSBlcnJtc2coInNr aXBwaW5nIHJlaW5kZXggb2YgYXV4aWxpYXJ5IGluZGV4IFwiJXMuJXNcIiIsCisJCQkJCQkJCQln ZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3JlbF9uYW1lc3BhY2UoY2VsbE9pZCkpLAorCQkJCQkJCQkJ Z2V0X3JlbF9uYW1lKGNlbGxPaWQpKSkpOworCQkJCQllbHNlIGlmICghaW5kZXhSZWxhdGlvbi0+ cmRfaW5kZXgtPmluZGlzdmFsaWQpCiAJCQkJCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJCQkJCShl cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCQkJ CQkgZXJybXNnKCJza2lwcGluZyByZWluZGV4IG9mIGludmFsaWQgaW5kZXggXCIlcy4lc1wiIiwK QEAgLTM2OTUsOCArMzc4OCwxNSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJCQkJT2lk CQkJY2VsbE9pZCA9IGxmaXJzdF9vaWQobGMyKTsKIAkJCQkJCVJlbGF0aW9uCWluZGV4UmVsYXRp b24gPSBpbmRleF9vcGVuKGNlbGxPaWQsCiAJCQkJCQkJCQkJCQkJCQkgICBTaGFyZVVwZGF0ZUV4 Y2x1c2l2ZUxvY2spOworCQkJCQkJSW5kZXhJbmZvKglpbmRleEluZm8gPSBCdWlsZER1bW15SW5k ZXhJbmZvKGluZGV4UmVsYXRpb24pOwogCi0JCQkJCQlpZiAoIWluZGV4UmVsYXRpb24tPnJkX2lu ZGV4LT5pbmRpc3ZhbGlkKQorCQkJCQkJaWYgKGluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KQorCQkJ CQkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKKwkJCQkJCQkJCSBlcnJtc2coInNraXBwaW5nIHJlaW5kZXggb2YgYXV4 aWxpYXJ5IGluZGV4IFwiJXMuJXNcIiIsCisJCQkJCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShn ZXRfcmVsX25hbWVzcGFjZShjZWxsT2lkKSksCisJCQkJCQkJCQkJCWdldF9yZWxfbmFtZShjZWxs T2lkKSkpKTsKKwkJCQkJCWVsc2UgaWYgKCFpbmRleFJlbGF0aW9uLT5yZF9pbmRleC0+aW5kaXN2 YWxpZCkKIAkJCQkJCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJCQkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkJCQkJCSBlcnJtc2coInNr aXBwaW5nIHJlaW5kZXggb2YgaW52YWxpZCBpbmRleCBcIiVzLiVzXCIiLApAQCAtMzc1Nyw2ICsz ODU3LDEzIEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAq c3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCQkJCSBlcnJtc2coImNhbm5vdCByZWluZGV4 IGludmFsaWQgaW5kZXggb24gVE9BU1QgdGFibGUiKSkpOwogCisJCQkJLyogQXV4aWxpYXJ5IGlu ZGV4ZXMgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIHJlYnVpbHQgKi8KKwkJCQlpZiAoZ2V0X3JlbF9y ZWxhbShyZWxhdGlvbk9pZCkgPT0gU1RJUl9BTV9PSUQpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJy bXNnKCJyZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCBcIiVzXCIgbm90IHN1cHBvcnRlZCIsCisJ CQkJCQkJCWdldF9yZWxfbmFtZShyZWxhdGlvbk9pZCkpKSk7CisKIAkJCQkvKgogCQkJCSAqIENo ZWNrIGlmIHBhcmVudCByZWxhdGlvbiBjYW4gYmUgbG9ja2VkIGFuZCBpZiBpdCBleGlzdHMsCiAJ CQkJICogdGhpcyBuZWVkcyB0byBiZSBkb25lIGF0IHRoaXMgc3RhZ2UgYXMgdGhlIGxpc3Qgb2Yg aW5kZXhlcwpAQCAtMzg2MCwxNSArMzk2NywxOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50 bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgog CWZvcmVhY2gobGMsIGluZGV4SWRzKQogCXsKIAkJY2hhcgkgICAqY29uY3VycmVudE5hbWU7CisJ CWNoYXIJICAgKmF1eENvbmN1cnJlbnROYW1lOwogCQlSZWluZGV4SW5kZXhJbmZvICppZHggPSBs Zmlyc3QobGMpOwogCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHg7CiAJCU9pZAkJCW5ld0luZGV4 SWQ7CisJCU9pZAkJCWF1eEluZGV4SWQ7CiAJCVJlbGF0aW9uCWluZGV4UmVsOwogCQlSZWxhdGlv bgloZWFwUmVsOwogCQlPaWQJCQlzYXZlX3VzZXJpZDsKIAkJaW50CQkJc2F2ZV9zZWNfY29udGV4 dDsKIAkJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7CiAJCVJlbGF0aW9uCW5ld0luZGV4UmVsOworCQlS ZWxhdGlvbglhdXhJbmRleFJlbDsKIAkJTG9ja1JlbElkICAqbG9ja3JlbGlkOwogCQlPaWQJCQl0 YWJsZXNwYWNlaWQ7CiAKQEAgLTM5MTksNiArNDAyOSwxMSBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCQkJCQkJCQkJCQkiY2NuZXciLAogCQkJCQkJCQkJCQlnZXRfcmVsX25hbWVzcGFjZShp bmRleFJlbC0+cmRfaW5kZXgtPmluZHJlbGlkKSwKIAkJCQkJCQkJCQkJZmFsc2UpOworCQlhdXhD b25jdXJyZW50TmFtZSA9IENob29zZVJlbGF0aW9uTmFtZShnZXRfcmVsX25hbWUoaWR4LT5pbmRl eElkKSwKKwkJCQkJCQkJCQkJTlVMTCwKKwkJCQkJCQkJCQkJImNjYXV4IiwKKwkJCQkJCQkJCQkJ Z2V0X3JlbF9uYW1lc3BhY2UoaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRyZWxpZCksCisJCQkJCQkJ CQkJCWZhbHNlKTsKIAogCQkvKiBDaG9vc2UgdGhlIG5ldyB0YWJsZXNwYWNlLCBpbmRleGVzIG9m IHRvYXN0IHRhYmxlcyBhcmUgbm90IG1vdmVkICovCiAJCWlmIChPaWRJc1ZhbGlkKHBhcmFtcy0+ dGFibGVzcGFjZU9pZCkgJiYKQEAgLTM5MzIsMTIgKzQwNDcsMTcgQEAgUmVpbmRleFJlbGF0aW9u Q29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNv bnN0IFJlaW4KIAkJCQkJCQkJCQkJCQlpZHgtPmluZGV4SWQsCiAJCQkJCQkJCQkJCQkJdGFibGVz cGFjZWlkLAogCQkJCQkJCQkJCQkJCWNvbmN1cnJlbnROYW1lKTsKKwkJYXV4SW5kZXhJZCA9IGlu ZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfYXV4KGhlYXBSZWwsCisJCQkJCQkJCQkJCQkgICBuZXdJ bmRleElkLAorCQkJCQkJCQkJCQkJICAgdGFibGVzcGFjZWlkLAorCQkJCQkJCQkJCQkJICAgYXV4 Q29uY3VycmVudE5hbWUpOwogCiAJCS8qCiAJCSAqIE5vdyBvcGVuIHRoZSByZWxhdGlvbiBvZiB0 aGUgbmV3IGluZGV4LCBhIHNlc3Npb24tbGV2ZWwgbG9jayBpcwogCQkgKiBhbHNvIG5lZWRlZCBv biBpdC4KIAkJICovCiAJCW5ld0luZGV4UmVsID0gaW5kZXhfb3BlbihuZXdJbmRleElkLCBTaGFy ZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQlhdXhJbmRleFJlbCA9IGluZGV4X29wZW4oYXV4SW5k ZXhJZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAogCQkvKgogCQkgKiBTYXZlIHRoZSBs aXN0IG9mIE9JRHMgYW5kIGxvY2tzIGluIHByaXZhdGUgY29udGV4dApAQCAtMzk0Niw2ICs0MDY2 LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10 LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAogCQluZXdpZHggPSBwYWxsb2Nfb2JqZWN0 KFJlaW5kZXhJbmRleEluZm8pOwogCQluZXdpZHgtPmluZGV4SWQgPSBuZXdJbmRleElkOworCQlu ZXdpZHgtPmF1eEluZGV4SWQgPSBhdXhJbmRleElkOwogCQluZXdpZHgtPnNhZmUgPSBpZHgtPnNh ZmU7CiAJCW5ld2lkeC0+dGFibGVJZCA9IGlkeC0+dGFibGVJZDsKIAkJbmV3aWR4LT5hbUlkID0g aWR4LT5hbUlkOwpAQCAtMzk2NCwxMCArNDA4NSwxNCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJy ZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVp bgogCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2JqZWN0KExvY2tSZWxJZCk7CiAJCSpsb2NrcmVsaWQg PSBuZXdJbmRleFJlbC0+cmRfbG9ja0luZm8ubG9ja1JlbElkOwogCQlyZWxhdGlvbkxvY2tzID0g bGFwcGVuZChyZWxhdGlvbkxvY2tzLCBsb2NrcmVsaWQpOworCQlsb2NrcmVsaWQgPSBwYWxsb2Nf b2JqZWN0KExvY2tSZWxJZCk7CisJCSpsb2NrcmVsaWQgPSBhdXhJbmRleFJlbC0+cmRfbG9ja0lu Zm8ubG9ja1JlbElkOworCQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBs b2NrcmVsaWQpOwogCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCQlp bmRleF9jbG9zZShpbmRleFJlbCwgTm9Mb2NrKTsKKwkJaW5kZXhfY2xvc2UoYXV4SW5kZXhSZWws IE5vTG9jayk7CiAJCWluZGV4X2Nsb3NlKG5ld0luZGV4UmVsLCBOb0xvY2spOwogCiAJCS8qIFJv bGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCkBA IC00MDQ4LDEzICs0MTczLDU1IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJICogZG9pbmcg dGhhdCwgd2FpdCB1bnRpbCBubyBydW5uaW5nIHRyYW5zYWN0aW9ucyBjb3VsZCBoYXZlIHRoZSB0 YWJsZSBvZgogCSAqIHRoZSBpbmRleCBvcGVuIHdpdGggdGhlIG9sZCBsaXN0IG9mIGluZGV4ZXMu ICBTZWUgInBoYXNlIDIiIGluCiAJICogRGVmaW5lSW5kZXgoKSBmb3IgbW9yZSBkZXRhaWxzLgor CSovCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0UsCisJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzEpOworCVdhaXRGb3JM b2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7CisJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIE5vdyBidWlsZCBhbGwgYXV4aWxpYXJ5IGluZGV4 ZXMgYW5kIG1hcmsgdGhlbSBhcyAicmVhZHktZm9yLWluc2VydHMiLgorCSAqLworCWZvcmVhY2go bGMsIG5ld0luZGV4SWRzKQorCXsKKwkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0 KGxjKTsKKworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCS8qCisJCSAqIENoZWNr IGZvciB1c2VyLXJlcXVlc3RlZCBhYm9ydC4gIFRoaXMgaXMgaW5zaWRlIGEgdHJhbnNhY3Rpb24g c28gYXMKKwkJICogeGFjdC5jIGRvZXMgbm90IGlzc3VlIGEgdXNlbGVzcyBXQVJOSU5HLCBhbmQg ZW5zdXJlcyB0aGF0CisJCSAqIHNlc3Npb24tbGV2ZWwgbG9ja3MgYXJlIGNsZWFuZWQgdXAgb24g YWJvcnQuCisJCSAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qIFRlbGwgY29u Y3VycmVudCBpbmRleGluZyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLworCQlp ZiAobmV3aWR4LT5zYWZlKQorCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKKworCQkvKiBC dWlsZCBhdXhpbGlhcnkgaW5kZXgsIGl0IGlzIGZhc3QgLSB3aXRob3V0IGFueSBhY3R1YWwgaGVh cCBzY2FuLCBqdXN0IGFuIGVtcHR5IGluZGV4LiAqLworCQlpbmRleF9jb25jdXJyZW50bHlfYnVp bGQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4SWQpOworCisJCUNvbW1pdFRyYW5z YWN0aW9uQ29tbWFuZCgpOworCX0KKworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkv KgorCSAqIEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IGluIHRoaXMgdHJhbnNhY3Rp b24sIHRoZXJlJ3Mgbm8gbmVlZAorCSAqIHRvIHNldCB0aGUgUFJPQ19JTl9TQUZFX0lDIGZsYWcg aGVyZS4KIAkgKi8KIAogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JF QVRFSURYX1BIQVNFLAotCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMSk7 CisJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8yKTsKKwkvKgorCSAqIFdh aXQgdW50aWwgYWxsIGF1eGlsaWFyeSBpbmRleGVzIGFyZSB0YWtlbiBpbnRvIGFjY291bnQgYnkg YWxsCisJICogdHJhbnNhY3Rpb25zLgorCSAqLwogCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9j a1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAK KwkvKiBOb3cgaXQgaXMgdGltZSB0byBwZXJmb3JtIHRhcmdldCBpbmRleCBidWlsZC4gKi8KIAlm b3JlYWNoKGxjLCBuZXdJbmRleElkcykKIAl7CiAJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeCA9 IGxmaXJzdChsYyk7CkBAIC00MDk3LDI0ICs0MjY0LDUyIEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1 cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBS ZWluCiAJICogbmVlZCB0byBzZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGhlcmUuCiAJICov CiAKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RSwKKwkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzMpOworCVdhaXRGb3JM b2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywgdHJ1ZSk7CisJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisKKwkvKgorCSAqIEF0IHRoaXMgbW9tZW50IGFsbCB0YXJnZXQgaW5k ZXhlcyBhcmUgbWFya2VkIGFzICJyZWFkeS10by1pbnNlcnQiLiBTbywKKwkgKiB3ZSBhcmUgZnJl ZSB0byBzdGFydCBwcm9jZXNzIG9mIGRyb3BwaW5nIGF1eGlsaWFyeSBpbmRleGVzLgorCSAqLwor CWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQorCXsKKwkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4 ID0gbGZpcnN0KGxjKTsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJLyoKKwkJICog Q2hlY2sgZm9yIHVzZXItcmVxdWVzdGVkIGFib3J0LiAgVGhpcyBpcyBpbnNpZGUgYSB0cmFuc2Fj dGlvbiBzbyBhcworCQkgKiB4YWN0LmMgZG9lcyBub3QgaXNzdWUgYSB1c2VsZXNzIFdBUk5JTkcs IGFuZCBlbnN1cmVzIHRoYXQKKwkJICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBhcmUgY2xlYW5lZCB1 cCBvbiBhYm9ydC4KKwkJICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyogVGVs bCBjb25jdXJyZW50IGluZGV4aW5nIHRvIGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICov CisJCWlmIChuZXdpZHgtPnNhZmUpCisJCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOworCisJ CS8qCisJCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1pZ2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNj ZXNzLCBzbyBlbnN1cmUgd2UKKwkJICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90LgorCQkgKi8KKwkJ UHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCWluZGV4X3Nl dF9zdGF0ZV9mbGFncyhuZXdpZHgtPmF1eEluZGV4SWQsIElOREVYX0RST1BfQ0xFQVJfUkVBRFkp OworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCX0KKwogCS8qCiAJICogUGhhc2UgMyBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCi0J ICogRHVyaW5nIHRoaXMgcGhhc2UgdGhlIG9sZCBpbmRleGVzIGNhdGNoIHVwIHdpdGggYW55IG5l dyB0dXBsZXMgdGhhdAorCSAqIER1cmluZyB0aGlzIHBoYXNlIHRoZSBuZXcgaW5kZXhlcyBjYXRj aCB1cCB3aXRoIGFueSBuZXcgdHVwbGVzIHRoYXQKIAkgKiB3ZXJlIGNyZWF0ZWQgZHVyaW5nIHRo ZSBwcmV2aW91cyBwaGFzZS4gIFNlZSAicGhhc2UgMyIgaW4gRGVmaW5lSW5kZXgoKQogCSAqIGZv ciBtb3JlIGRldGFpbHMuCiAJICovCi0KLQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RV9XQUlUXzIpOwotCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJlTG9jaywg dHJ1ZSk7Ci0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0KIAlmb3JlYWNoKGxjLCBuZXdJ bmRleElkcykKIAl7CiAJCVJlaW5kZXhJbmRleEluZm8gKm5ld2lkeCA9IGxmaXJzdChsYyk7CiAJ CVRyYW5zYWN0aW9uSWQgbGltaXRYbWluOwotCQlTbmFwc2hvdAlzbmFwc2hvdDsKIAogCQlTdGFy dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCkBAIC00MTI5LDEzICs0MzI0LDYgQEAgUmVpbmRleFJl bGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25P aWQsIGNvbnN0IFJlaW4KIAkJaWYgKG5ld2lkeC0+c2FmZSkKIAkJCXNldF9pbmRleHNhZmVfcHJv Y2ZsYWdzKCk7CiAKLQkJLyoKLQkJICogVGFrZSB0aGUgInJlZmVyZW5jZSBzbmFwc2hvdCIgdGhh dCB3aWxsIGJlIHVzZWQgYnkgdmFsaWRhdGVfaW5kZXgoKQotCQkgKiB0byBmaWx0ZXIgY2FuZGlk YXRlIHR1cGxlcy4KLQkJICovCi0JCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFu c2FjdGlvblNuYXBzaG90KCkpOwotCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwotCiAJ CS8qCiAJCSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxkLCB3aXRoIHRo ZSBjb3JyZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAgLTQxNDcsMTYgKzQzMzUs OCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQs IE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlwcm9ncmVzc192YWxzWzNdID0gbmV3aWR4 LT5hbUlkOwogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDQsIHByb2dyZXNz X2luZGV4LCBwcm9ncmVzc192YWxzKTsKIAotCQl2YWxpZGF0ZV9pbmRleChuZXdpZHgtPnRhYmxl SWQsIG5ld2lkeC0+aW5kZXhJZCwgc25hcHNob3QpOwotCi0JCS8qCi0JCSAqIFdlIGNhbiBub3cg ZG8gYXdheSB3aXRoIG91ciBhY3RpdmUgc25hcHNob3QsIHdlIHN0aWxsIG5lZWQgdG8gc2F2ZQot CQkgKiB0aGUgeG1pbiBsaW1pdCB0byB3YWl0IGZvciBvbGRlciBzbmFwc2hvdHMuCi0JCSAqLwot CQlsaW1pdFhtaW4gPSBzbmFwc2hvdC0+eG1pbjsKLQotCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwot CQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOworCQlsaW1pdFhtaW4gPSB2YWxpZGF0ZV9p bmRleChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+aW5kZXhJZCwgbmV3aWR4LT5hdXhJbmRleElk KTsKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCQkv KgogCQkgKiBUbyBlbnN1cmUgbm8gZGVhZGxvY2tzLCB3ZSBtdXN0IGNvbW1pdCBhbmQgc3RhcnQg eWV0IGFub3RoZXIKQEAgLTQxNzYsNyArNDM1Niw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWlu CiAJCSAqIHRoZXJlJ3Mgbm8gbmVlZCB0byBzZXQgdGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGhl cmUuCiAJCSAqLwogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFU RUlEWF9QSEFTRSwKLQkJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8zKTsK KwkJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80KTsKIAkJV2FpdEZvck9s ZGVyU25hcHNob3RzKGxpbWl0WG1pbiwgdHJ1ZSk7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7CkBAIC00MjY2LDE0ICs0NDQ2LDE0IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRs eShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJ LyoKIAkgKiBQaGFzZSA1IG9mIFJFSU5ERVggQ09OQ1VSUkVOVExZCiAJICoKLQkgKiBNYXJrIHRo ZSBvbGQgaW5kZXhlcyBhcyBkZWFkLiAgRmlyc3Qgd2UgbXVzdCB3YWl0IHVudGlsIG5vIHJ1bm5p bmcKLQkgKiB0cmFuc2FjdGlvbiBjb3VsZCBiZSB1c2luZyB0aGUgaW5kZXggZm9yIGEgcXVlcnku ICBTZWUgYWxzbworCSAqIE1hcmsgdGhlIG9sZCBhbmQgYXV4aWxpYXJ5IGluZGV4ZXMgYXMgZGVh ZC4gRmlyc3Qgd2UgbXVzdCB3YWl0IHVudGlsIG5vCisJICogcnVubmluZyB0cmFuc2FjdGlvbiBj b3VsZCBiZSB1c2luZyB0aGUgaW5kZXggZm9yIGEgcXVlcnkuICBTZWUgYWxzbwogCSAqIGluZGV4 X2Ryb3AoKSBmb3IgbW9yZSBkZXRhaWxzLgogCSAqLwogCiAJSU5KRUNUSU9OX1BPSU5UKCJyZWlu ZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc2V0X2RlYWQiKTsKIAlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzQpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFX1dBSVRfNSk7CiAJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgQWNj ZXNzRXhjbHVzaXZlTG9jaywgdHJ1ZSk7CiAKIAlmb3JlYWNoKGxjLCBpbmRleElkcykKQEAgLTQy OTgsNiArNDQ3OCwyOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRl eFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlQb3BBY3RpdmVTbmFw c2hvdCgpOwogCX0KIAorCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQorCXsKKwkJUmVpbmRleElu ZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKKworCQkvKgorCQkgKiBDaGVjayBmb3IgdXNl ci1yZXF1ZXN0ZWQgYWJvcnQuICBUaGlzIGlzIGluc2lkZSBhIHRyYW5zYWN0aW9uIHNvIGFzCisJ CSAqIHhhY3QuYyBkb2VzIG5vdCBpc3N1ZSBhIHVzZWxlc3MgV0FSTklORywgYW5kIGVuc3VyZXMg dGhhdAorCQkgKiBzZXNzaW9uLWxldmVsIGxvY2tzIGFyZSBjbGVhbmVkIHVwIG9uIGFib3J0Lgor CQkgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkvKgorCQkgKiBVcGRhdGluZyBw Z19pbmRleCBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJ CSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KKwkJICovCisJCVB1c2hBY3RpdmVTbmFwc2hvdChH ZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCisJCWluZGV4X2NvbmN1cnJlbnRseV9zZXRfZGVh ZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+YXV4SW5kZXhJZCk7CisKKwkJUG9wQWN0aXZlU25h cHNob3QoKTsKKwl9CisKIAkvKiBDb21taXQgdGhpcyB0cmFuc2FjdGlvbiB0byBtYWtlIHRoZSB1 cGRhdGVzIHZpc2libGUuICovCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTQzMTEsMTEgKzQ1MTMsMTEgQEAgUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQs IGNvbnN0IFJlaW4KIAkvKgogCSAqIFBoYXNlIDYgb2YgUkVJTkRFWCBDT05DVVJSRU5UTFkKIAkg KgotCSAqIERyb3AgdGhlIG9sZCBpbmRleGVzLgorCSAqIERyb3AgdGhlIG9sZCBhbmQgYXV4aWxp YXJ5IGluZGV4ZXMuCiAJICovCiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRSwKLQkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9X QUlUXzUpOworCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfNik7CiAJV2Fp dEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgQWNjZXNzRXhjbHVzaXZlTG9jaywgdHJ1ZSk7 CiAKIAlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKQEAgLTQz MzUsNiArNDUzNywxOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRl eFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJYWRkX2V4YWN0X29i amVjdF9hZGRyZXNzKCZvYmplY3QsIG9iamVjdHMpOwogCQl9CiAKKwkJZm9yZWFjaChsYywgbmV3 SW5kZXhJZHMpCisJCXsKKwkJCVJlaW5kZXhJbmRleEluZm8gKmlkeCA9IGxmaXJzdChsYyk7CisJ CQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKworCQkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJl bGF0aW9uSWQ7CisJCQlvYmplY3Qub2JqZWN0SWQgPSBpZHgtPmF1eEluZGV4SWQ7CisJCQlvYmpl Y3Qub2JqZWN0U3ViSWQgPSAwOworCisJCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVj dCwgb2JqZWN0cyk7CisJCX0KKwogCQkvKgogCQkgKiBVc2UgUEVSRk9STV9ERUxFVElPTl9DT05D VVJSRU5UX0xPQ0sgc28gdGhhdCBpbmRleF9kcm9wKCkgdXNlcyB0aGUKIAkJICogcmlnaHQgbG9j ayBsZXZlbC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jIGIvc3Jj L2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKaW5kZXggMmQwYzdhNTM1NjMuLmE1Mzc3OWFlMmFh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwpAQCAtNzg3LDcgKzc4Nyw3IEBAIEluZGV4SW5mbyAqCiBt YWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsIExp c3QgKmV4cHJlc3Npb25zLAogCQkJICBMaXN0ICpwcmVkaWNhdGVzLCBib29sIHVuaXF1ZSwgYm9v bCBudWxsc19ub3RfZGlzdGluY3QsCiAJCQkgIGJvb2wgaXNyZWFkeSwgYm9vbCBjb25jdXJyZW50 LCBib29sIHN1bW1hcml6aW5nLAotCQkJICBib29sIHdpdGhvdXRvdmVybGFwcykKKwkJCSAgYm9v bCB3aXRob3V0b3ZlcmxhcHMsIGJvb2wgYXV4aWxpYXJ5KQogewogCUluZGV4SW5mbyAgKm4gPSBt YWtlTm9kZShJbmRleEluZm8pOwogCkBAIC04MDMsNiArODAzLDcgQEAgbWFrZUluZGV4SW5mbyhp bnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLCBMaXN0ICpleHByZXNzaW9u cywKIAluLT5paV9Db25jdXJyZW50ID0gY29uY3VycmVudDsKIAluLT5paV9TdW1tYXJpemluZyA9 IHN1bW1hcml6aW5nOwogCW4tPmlpX1dpdGhvdXRPdmVybGFwcyA9IHdpdGhvdXRvdmVybGFwczsK KwluLT5paV9BdXhpbGlhcnkgPSBhdXhpbGlhcnk7CiAKIAkvKiBzdW1tYXJpemluZyBpbmRleGVz IGNhbm5vdCBjb250YWluIG5vbi1rZXkgYXR0cmlidXRlcyAqLwogCUFzc2VydCghc3VtbWFyaXpp bmcgfHwgKG51bWtleWF0dHJzID09IG51bWF0dHJzKSk7CkBAIC04MjgsNyArODI5LDYgQEAgbWFr ZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLCBMaXN0 ICpleHByZXNzaW9ucywKIAkvKiBpbml0aWFsaXplIGluZGV4LWJ1aWxkIHN0YXRlIHRvIGRlZmF1 bHQgKi8KIAluLT5paV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNlOwogCW4tPmlpX1BhcmFsbGVsV29y a2VycyA9IDA7Ci0Jbi0+aWlfQXV4aWxpYXJ5ID0gZmFsc2U7CiAKIAkvKiBzZXQgdXAgZm9yIHBv c3NpYmxlIHVzZSBieSBpbmRleCBBTSAqLwogCW4tPmlpX0FtID0gYW1vaWQ7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxl YW0uaAppbmRleCBiMTkyMDk5OWYxMi4uMWIyZWY4ZjgwMDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApA QCAtNzE1LDExICs3MTUsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAkJCQkJ CQkJCQkgICBUYWJsZVNjYW5EZXNjIHNjYW4pOwogCiAJLyogc2VlIHRhYmxlX2luZGV4X3ZhbGlk YXRlX3NjYW4gZm9yIHJlZmVyZW5jZSBhYm91dCBwYXJhbWV0ZXJzICovCi0Jdm9pZAkJKCppbmRl eF92YWxpZGF0ZV9zY2FuKSAoUmVsYXRpb24gdGFibGVfcmVsLAotCQkJCQkJCQkJCVJlbGF0aW9u IGluZGV4X3JlbCwKLQkJCQkJCQkJCQlzdHJ1Y3QgSW5kZXhJbmZvICppbmRleF9pbmZvLAotCQkJ CQkJCQkJCVNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJCQkJCXN0cnVjdCBWYWxpZGF0ZUluZGV4 U3RhdGUgKnN0YXRlKTsKKwlUcmFuc2FjdGlvbklkIAkJKCppbmRleF92YWxpZGF0ZV9zY2FuKSAo UmVsYXRpb24gdGFibGVfcmVsLAorCQkJCQkJCQkJCQkJUmVsYXRpb24gaW5kZXhfcmVsLAorCQkJ CQkJCQkJCQkJc3RydWN0IEluZGV4SW5mbyAqaW5kZXhfaW5mbywKKwkJCQkJCQkJCQkJCXN0cnVj dCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlLAorCQkJCQkJCQkJCQkJc3RydWN0IFZhbGlkYXRl SW5kZXhTdGF0ZSAqYXV4X3N0YXRlKTsKIAogCiAJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xODYz LDIyICsxODYzLDI1IEBAIHRhYmxlX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gdGFi bGVfcmVsLAogfQogCiAvKgotICogdGFibGVfaW5kZXhfdmFsaWRhdGVfc2NhbiAtIHNlY29uZCB0 YWJsZSBzY2FuIGZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxkCisgKiB0YWJsZV9pbmRleF92YWxp ZGF0ZV9zY2FuIC0gdmFsaWRhdGlvbiBzY2FuIGZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxkCiAg KgogICogU2VlIHZhbGlkYXRlX2luZGV4KCkgZm9yIGFuIGV4cGxhbmF0aW9uLgorICoKKyAqIE5v dGU6IGl0IGlzIHJlc3BvbnNpYmlsaXR5IG9mIHRoYXQgZnVuY3Rpb24gdG8gY2xvc2Ugc29ydHN0 YXRlcyBpbgorICogYm90aCBzdGF0ZSBhbmQgYXV4c3RhdGUuCiAgKi8KLXN0YXRpYyBpbmxpbmUg dm9pZAorc3RhdGljIGlubGluZSBUcmFuc2FjdGlvbklkCiB0YWJsZV9pbmRleF92YWxpZGF0ZV9z Y2FuKFJlbGF0aW9uIHRhYmxlX3JlbCwKIAkJCQkJCSAgUmVsYXRpb24gaW5kZXhfcmVsLAogCQkJ CQkJICBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleF9pbmZvLAotCQkJCQkJICBTbmFwc2hvdCBzbmFw c2hvdCwKLQkJCQkJCSAgc3RydWN0IFZhbGlkYXRlSW5kZXhTdGF0ZSAqc3RhdGUpCisJCQkJCQkg IHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUgKnN0YXRlLAorCQkJCQkJICBzdHJ1Y3QgVmFsaWRh dGVJbmRleFN0YXRlICphdXhzdGF0ZSkKIHsKLQl0YWJsZV9yZWwtPnJkX3RhYmxlYW0tPmluZGV4 X3ZhbGlkYXRlX3NjYW4odGFibGVfcmVsLAotCQkJCQkJCQkJCQkgICBpbmRleF9yZWwsCi0JCQkJ CQkJCQkJCSAgIGluZGV4X2luZm8sCi0JCQkJCQkJCQkJCSAgIHNuYXBzaG90LAotCQkJCQkJCQkJ CQkgICBzdGF0ZSk7CisJcmV0dXJuIHRhYmxlX3JlbC0+cmRfdGFibGVhbS0+aW5kZXhfdmFsaWRh dGVfc2Nhbih0YWJsZV9yZWwsCisJCQkJCQkJCQkJCQkJICBpbmRleF9yZWwsCisJCQkJCQkJCQkJ CQkJICBpbmRleF9pbmZvLAorCQkJCQkJCQkJCQkJCSAgc3RhdGUsCisJCQkJCQkJCQkJCQkJICBh dXhzdGF0ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmluZGV4IDRkYWE4YmVmNWVlLi4wMWY4NWU1 N2VhMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMjUsNiArMjUsNyBAQCB0eXBlZGVmIGVudW0KIHsK IAlJTkRFWF9DUkVBVEVfU0VUX1JFQURZLAogCUlOREVYX0NSRUFURV9TRVRfVkFMSUQsCisJSU5E RVhfRFJPUF9DTEVBUl9SRUFEWSwKIAlJTkRFWF9EUk9QX0NMRUFSX1ZBTElELAogCUlOREVYX0RS T1BfU0VUX0RFQUQsCiB9IEluZGV4U3RhdGVGbGFnc0FjdGlvbjsKQEAgLTY1LDYgKzY2LDcgQEAg ZXh0ZXJuIHZvaWQgaW5kZXhfY2hlY2tfcHJpbWFyeV9rZXkoUmVsYXRpb24gaGVhcFJlbCwKICNk ZWZpbmUJSU5ERVhfQ1JFQVRFX0lGX05PVF9FWElTVFMJCQkoMSA8PCA0KQogI2RlZmluZQlJTkRF WF9DUkVBVEVfUEFSVElUSU9ORUQJCQkoMSA8PCA1KQogI2RlZmluZSBJTkRFWF9DUkVBVEVfSU5W QUxJRAkJCQkoMSA8PCA2KQorI2RlZmluZSBJTkRFWF9DUkVBVEVfQVVYSUxJQVJZCQkJCSgxIDw8 IDcpCiAKIGV4dGVybiBPaWQJaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJ CQkJCSBjb25zdCBjaGFyICppbmRleFJlbGF0aW9uTmFtZSwKQEAgLTg2LDcgKzg4LDggQEAgZXh0 ZXJuIE9pZAlpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJIGJpdHMx NiBjb25zdHJfZmxhZ3MsCiAJCQkJCQkgYm9vbCBhbGxvd19zeXN0ZW1fdGFibGVfbW9kcywKIAkJ CQkJCSBib29sIGlzX2ludGVybmFsLAotCQkJCQkJIE9pZCAqY29uc3RyYWludElkKTsKKwkJCQkJ CSBPaWQgKmNvbnN0cmFpbnRJZCwKKwkJCQkJCSBjaGFyIHJlbHBlcnNpc3RlbmNlKTsKIAogI2Rl ZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX01BUktfQVNfUFJJTUFSWQkoMSA8PCAwKQogI2RlZmlu ZQlJTkRFWF9DT05TVFJfQ1JFQVRFX0RFRkVSUkFCTEUJCSgxIDw8IDEpCkBAIC0xMDAsNiArMTAz LDExIEBAIGV4dGVybiBPaWQJaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBPaWQgdGFibGVzcGFjZU9pZCwKIAkJCQkJCQkJ CQkgICBjb25zdCBjaGFyICpuZXdOYW1lKTsKIAorZXh0ZXJuIE9pZAlpbmRleF9jb25jdXJyZW50 bHlfY3JlYXRlX2F1eChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCisJCQkJCQkJCQkJICBPaWQgbWFp bkluZGV4SWQsCisJCQkJCQkJCQkJICBPaWQgdGFibGVzcGFjZU9pZCwKKwkJCQkJCQkJCQkgIGNv bnN0IGNoYXIgKm5ld05hbWUpOworCiBleHRlcm4gdm9pZCBpbmRleF9jb25jdXJyZW50bHlfYnVp bGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCQkJCQkJCQkJIE9pZCBpbmRleFJlbGF0aW9uSWQpOwog CkBAIC0xNDUsNyArMTUzLDcgQEAgZXh0ZXJuIHZvaWQgaW5kZXhfYnVpbGQoUmVsYXRpb24gaGVh cFJlbGF0aW9uLAogCQkJCQkJYm9vbCBpc3JlaW5kZXgsCiAJCQkJCQlib29sIHBhcmFsbGVsKTsK IAotZXh0ZXJuIHZvaWQgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNu YXBzaG90IHNuYXBzaG90KTsKK2V4dGVybiBUcmFuc2FjdGlvbklkIHZhbGlkYXRlX2luZGV4KE9p ZCBoZWFwSWQsIE9pZCBpbmRleElkLCBPaWQgYXV4SW5kZXhJZCk7CiAKIGV4dGVybiB2b2lkIGlu ZGV4X3NldF9zdGF0ZV9mbGFncyhPaWQgaW5kZXhJZCwgSW5kZXhTdGF0ZUZsYWdzQWN0aW9uIGFj dGlvbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmggYi9z cmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oCmluZGV4IDdjNzM2ZTdiMDNiLi42ZTE0NTc3 ZWY5YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaAorKysgYi9z cmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oCkBAIC05NCwxNCArOTQsMTUgQEAKIAogLyog UGhhc2VzIG9mIENSRUFURSBJTkRFWCAoYXMgYWR2ZXJ0aXNlZCB2aWEgUFJPR1JFU1NfQ1JFQVRF SURYX1BIQVNFKSAqLwogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF8xCQkJ MQotI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfQlVJTEQJCQkyCi0jZGVmaW5lIFBS T0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIJCQkzCi0jZGVmaW5lIFBST0dSRVNTX0NSRUFU RUlEWF9QSEFTRV9WQUxJREFURV9JRFhTQ0FOCTQKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFX1ZBTElEQVRFX1NPUlQJCTUKLSNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1ZBTElEQVRFX1RBQkxFU0NBTgk2Ci0jZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9X QUlUXzMJCQk3CisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzIJCQkyCisj ZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9CVUlMRAkJCTMKKyNkZWZpbmUgUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMwkJCTQKKyNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFX1ZBTElEQVRFX0lEWFNDQU4JNQorI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfVkFMSURBVEVfU09SVAkJNgorI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFM SURBVEVfSURYTUVSR0UJNwogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF80 CQkJOAogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF81CQkJOQorI2RlZmlu ZSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF82CQkJMTAKIAogLyoKICAqIFN1YnBoYXNl cyBvZiBDUkVBVEUgSU5ERVgsIGZvciBpbmRleF9idWlsZC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5k ZXggOGMwYWQ5NmUwMmMuLjQ4MjZjMWE1NTM4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTg3 LDggKzE4Nyw4IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogICoJCUFtQ2FjaGUJCQkJcHJp dmF0ZSBjYWNoZSBhcmVhIGZvciBpbmRleCBBTQogICoJCUNvbnRleHQJCQkJbWVtb3J5IGNvbnRl eHQgaG9sZGluZyB0aGlzIEluZGV4SW5mbwogICoKLSAqIGlpX0NvbmN1cnJlbnQsIGlpX0Jyb2tl bkhvdENoYWluLCBpaV9BdXhpbGlhcnkgYW5kIGlpX1BhcmFsbGVsV29ya2VycwotICogYXJlIHVz ZWQgb25seSBkdXJpbmcgaW5kZXggYnVpbGQ7IHRoZXkncmUgY29udmVudGlvbmFsbHkgemVyb2Vk IG90aGVyd2lzZS4KKyAqIGlpX0NvbmN1cnJlbnQsIGlpX0Jyb2tlbkhvdENoYWluLCBhbmQgaWlf UGFyYWxsZWxXb3JrZXJzIGFyZSB1c2VkIG9ubHkKKyAqIGR1cmluZyBpbmRleCBidWlsZDsgdGhl eSdyZSBjb252ZW50aW9uYWxseSB6ZXJvZWQgb3RoZXJ3aXNlLgogICogLS0tLS0tLS0tLS0tLS0t LQogICovCiB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL21ha2VmdW5jcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmgKaW5kZXgg NTQ3M2NlOWEyODguLjQ5MDQ3NDhmNWZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9t YWtlZnVuY3MuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaApAQCAtOTksNyAr OTksOCBAQCBleHRlcm4gSW5kZXhJbmZvICptYWtlSW5kZXhJbmZvKGludCBudW1hdHRycywgaW50 IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsCiAJCQkJCQkJCUxpc3QgKmV4cHJlc3Npb25zLCBMaXN0 ICpwcmVkaWNhdGVzLAogCQkJCQkJCQlib29sIHVuaXF1ZSwgYm9vbCBudWxsc19ub3RfZGlzdGlu Y3QsCiAJCQkJCQkJCWJvb2wgaXNyZWFkeSwgYm9vbCBjb25jdXJyZW50LAotCQkJCQkJCQlib29s IHN1bW1hcml6aW5nLCBib29sIHdpdGhvdXRvdmVybGFwcyk7CisJCQkJCQkJCWJvb2wgc3VtbWFy aXppbmcsIGJvb2wgd2l0aG91dG92ZXJsYXBzLAorCQkJCQkJCQlib29sIGF1eGlsaWFyeSk7CiAK IGV4dGVybiBOb2RlICptYWtlU3RyaW5nQ29uc3QoY2hhciAqc3RyLCBpbnQgbG9jYXRpb24pOwog ZXh0ZXJuIERlZkVsZW0gKm1ha2VEZWZFbGVtKGNoYXIgKm5hbWUsIE5vZGUgKmFyZywgaW50IGxv Y2F0aW9uKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9l eHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCA5ZjAzZmEz MDMzYy4uNzgwMzEzZjQ3N2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQK QEAgLTIzLDYgKzIzLDEyIEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVf cGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7CiAgCiAoMSByb3cpCiAKK1NFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9f eGlkJywgJ25vdGljZScpOworIGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFw OwogQ1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBp bnQpOwogSU5TRVJUIElOVE8gY2ljX3Jlc2V0X3NuYXAudGJsIFNFTEVDVCBpLCBpICogSSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAyMDApIHMoaSk7CkBAIC00MywzMCArNDksMzggQEAgQUxURVIg VEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0wKTsKIENSRUFU RSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7 CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK05P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhf dmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2Vm ZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKIE5PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25h cHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90 cwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVz ZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1P RChpLCAyKSA9IDA7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9l ZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBo ZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2Fu X3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRM WSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnBy ZWRpY2F0ZV9zdGFibGUoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwogTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJFSU5ERVggSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3Rz CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNl dF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9z bmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNo b3RzCkBAIC03Niw5ICs5MCwxMSBAQCBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwgVVNJTkcgQlJJTihpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCiBOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3Nu YXBzaG90X2VmZmVjdGl2ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9u IHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hv dHMKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jl c2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9Q IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiAtLSBUaGUgc2FtZSBpbiBw YXJhbGxlbCBtb2RlCiBBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxl bF93b3JrZXJzPTIpOwpAQCAtOTEsMjMgKzEwNywzMSBAQCBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19kZXRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnKTsKIAogQ1JFQVRF IFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsK IE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJh bGxlbHNjYW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4 X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg dGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIFJF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5p dGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2lj X3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKIE5PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNj YW5faW5pdGlhbGl6ZQorTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlk YXRlX3NjYW5fbm9feGlkCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKIE5PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3Ry YXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBz aG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBh bV9pbmRleF92YWxpZGF0ZV9zY2FuX25vX3hpZAogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVf bm9fcGFyYW0oKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQpAQCAtMTE2LDEzICsxNDAsMTcgQEAgTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVs c2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSBERVNDIE5VTExTIExBU1QpOwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCitOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5f bm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxs ZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9ub194aWQKIERST1AgSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkg aWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOwogTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFs aXplCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcGFt X2luZGV4X3ZhbGlkYXRlX3NjYW5fbm9feGlkCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKK05PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2Nhbl9u b194aWQKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIERST1Ag U0NIRU1BIGNpY19yZXNldF9zbmFwIENBU0NBREU7CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRv IDMgb3RoZXIgb2JqZWN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKaW5kZXggMjk0MWFhN2Fl MzguLjI0OWQxMDYxYWRhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv aW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKQEAgLTQsNiArNCw3 IEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOwogU0VMRUNUIGluamVjdGlv bl9wb2ludHNfYXR0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJywgJ25v dGljZScpOwogU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9iZWdpbnNjYW5f c3RyYXRfcmVzZXRfc25hcHNob3RzJywgJ25vdGljZScpOwogU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfYXR0YWNoKCd0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZScsICdub3RpY2UnKTsKK1NF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcGFtX2luZGV4X3ZhbGlkYXRlX3NjYW5f bm9feGlkJywgJ25vdGljZScpOwogCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOwogQ1JF QVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQpOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgub3V0CmluZGV4IGJkNWYwMDJj ZjIwLi4zNDM2MmUzZDg3NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9j cmVhdGVfaW5kZXgub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2lu ZGV4Lm91dApAQCAtMTQyMyw2ICsxNDIzLDcgQEAgREVUQUlMOiAgS2V5IChmMSk9KGIpIGFscmVh ZHkgZXhpc3RzLgogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4 MyBPTiBjb25jdXJfaGVhcChmMik7CiBFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGlu ZGV4ICJjb25jdXJfaW5kZXgzIgogREVUQUlMOiAgS2V5IChmMik9KGIpIGlzIGR1cGxpY2F0ZWQu CitEUk9QIElOREVYIGNvbmN1cl9pbmRleDNfY2NhdXg7CiAtLSB0ZXN0IHRoYXQgZXhwcmVzc2lv biBpbmRleGVzIGFuZCBwYXJ0aWFsIGluZGV4ZXMgd29yayBjb25jdXJyZW50bHkKIENSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4NCBvbiBjb25jdXJfaGVhcChmMikgV0hFUkUg ZjE9J2EnOwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg1IG9uIGNvbmN1 cl9oZWFwKGYyKSBXSEVSRSBmMT0neCc7CkBAIC0zMDQ5LDYgKzMwNTAsNyBAQCBJTlNFUlQgSU5U TyBjb25jdXJfcmVpbmRleF90YWI0IFZBTFVFUyAoMSksICgxKSwgKDIpOwogQ1JFQVRFIFVOSVFV RSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX3JlaW5kZXhfaW5kNSBPTiBjb25jdXJfcmVpbmRl eF90YWI0IChjMSk7CiBFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4ICJjb25j dXJfcmVpbmRleF9pbmQ1IgogREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCitE Uk9QIElOREVYIGNvbmN1cl9yZWluZGV4X2luZDVfY2NhdXg7CiAtLSBSZWluZGV4aW5nIGNvbmN1 cnJlbnRseSB0aGlzIGluZGV4IGZhaWxzIHdpdGggdGhlIHNhbWUgZmFpbHVyZS4KIC0tIFRoZSBl eHRyYSBpbmRleCBjcmVhdGVkIGlzIGl0c2VsZiBpbnZhbGlkLCBhbmQgY2FuIGJlIGRyb3BwZWQu CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1OwpAQCAtMzA2 MSw4ICszMDYzLDEwIEBAIERFVEFJTDogIEtleSAoYzEpPSgxKSBpcyBkdXBsaWNhdGVkLgogIGMx ICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAogSW5kZXhlczoKICAgICAi Y29uY3VyX3JlaW5kZXhfaW5kNSIgVU5JUVVFLCBidHJlZSAoYzEpIElOVkFMSUQKKyAgICAiY29u Y3VyX3JlaW5kZXhfaW5kNV9jY2F1eCIgc3RpciAoYzEpIElOVkFMSUQKICAgICAiY29uY3VyX3Jl aW5kZXhfaW5kNV9jY25ldyIgVU5JUVVFLCBidHJlZSAoYzEpIElOVkFMSUQKIAorRFJPUCBJTkRF WCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4OwogRFJPUCBJTkRFWCBjb25jdXJfcmVpbmRleF9p bmQ1X2NjbmV3OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBhd2F5LCBz byB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KIERFTEVURSBGUk9NIGNvbmN1cl9yZWluZGV4 X3RhYjQgV0hFUkUgYzEgPSAxOwpAQCAtMzA5MCw2ICszMDk0LDQ0IEBAIEluZGV4ZXM6CiAgICAg ImNvbmN1cl9yZWluZGV4X2luZDUiIFVOSVFVRSwgYnRyZWUgKGMxKQogCiBEUk9QIFRBQkxFIGNv bmN1cl9yZWluZGV4X3RhYjQ7CistLSBDaGVjayBoYW5kbGluZyBvZiBhdXhpbGlhcnkgaW5kZXhl cworQ1JFQVRFIFRBQkxFIGF1eF9pbmRleF90YWI1IChjMSBpbnQpOworSU5TRVJUIElOVE8gYXV4 X2luZGV4X3RhYjUgVkFMVUVTICgxKSwgKDEpLCAoMik7CistLSBUaGlzIHRyaWNrIGNyZWF0ZXMg YW4gaW52YWxpZCBpbmRleCBhbmQgYXV4aWxpYXJ5IGluZGV4IGZvciBpdAorQ1JFQVRFIFVOSVFV RSBJTkRFWCBDT05DVVJSRU5UTFkgYXV4X2luZGV4X2luZDYgT04gYXV4X2luZGV4X3RhYjUgKGMx KTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9pbmRleF9pbmQ2 IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCitcZCBhdXhfaW5kZXhfdGFi NQorICAgICAgICAgICBUYWJsZSAicHVibGljLmF1eF9pbmRleF90YWI1IgorIENvbHVtbiB8ICBU eXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBjMSAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgImF1eF9pbmRleF9pbmQ2IiBV TklRVUUsIGJ0cmVlIChjMSkgSU5WQUxJRAorICAgICJhdXhfaW5kZXhfaW5kNl9jY2F1eCIgc3Rp ciAoYzEpIElOVkFMSUQKKworLS0gTm90IGFsbG93ZWQgdG8gcmVpbmRleCBhdXhpbGlhcnkgaW5k ZXgKK1JFSU5ERVggSU5ERVggYXV4X2luZGV4X2luZDZfY2NhdXg7CitFUlJPUjogIHJlaW5kZXgg b2YgYXV4aWxpYXJ5IGluZGV4ICJhdXhfaW5kZXhfaW5kNl9jY2F1eCIgbm90IHN1cHBvcnRlZAor LS0gQ29uY3VycmVudGx5IGFsc28KK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGF1eF9pbmRl eF9pbmQ2X2NjYXV4OworRVJST1I6ICByZWluZGV4IG9mIGF1eGlsaWFyeSBpbmRleCAiYXV4X2lu ZGV4X2luZDZfY2NhdXgiIG5vdCBzdXBwb3J0ZWQKKy0tIFRoaXMgbWFrZXMgdGhlIHByZXZpb3Vz IGZhaWx1cmUgZ28gYXdheSwgc28gdGhlIGluZGV4IGNhbiBiZWNvbWUgdmFsaWQuCitERUxFVEUg RlJPTSBjb25jdXJfcmVpbmRleF90YWI0IFdIRVJFIGMxID0gMTsKK0VSUk9SOiAgcmVsYXRpb24g ImNvbmN1cl9yZWluZGV4X3RhYjQiIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IERFTEVURSBGUk9N IGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworICAgICAgICAgICAgICAgICAgICBe CistLSBTaG91bGQgYmUgc2tpcHBlZCBkdXJpbmcgcmVpbmRleAorUkVJTkRFWCBUQUJMRSBhdXhf aW5kZXhfdGFiNTsKK0VSUk9SOiAgY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggImF1eF9p bmRleF9pbmQ2IgorREVUQUlMOiAgS2V5IChjMSk9KDEpIGlzIGR1cGxpY2F0ZWQuCistLSBTaG91 bGQgYmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CitSRUlOREVYIFRBQkxFIENP TkNVUlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKK1dBUk5JTkc6ICBza2lwcGluZyByZWluZGV4IG9m IGludmFsaWQgaW5kZXggInB1YmxpYy5hdXhfaW5kZXhfaW5kNiIKK0hJTlQ6ICBVc2UgRFJPUCBJ TkRFWCBvciBSRUlOREVYIElOREVYLgorV0FSTklORzogIHNraXBwaW5nIHJlaW5kZXggb2YgYXV4 aWxpYXJ5IGluZGV4ICJwdWJsaWMuYXV4X2luZGV4X2luZDZfY2NhdXgiCitOT1RJQ0U6ICB0YWJs ZSAiYXV4X2luZGV4X3RhYjUiIGhhcyBubyBpbmRleGVzIHRoYXQgY2FuIGJlIHJlaW5kZXhlZCBj b25jdXJyZW50bHkKK0RST1AgVEFCTEUgYXV4X2luZGV4X3RhYjU7CiAtLSBDaGVjayBoYW5kbGlu ZyBvZiBpbmRleGVzIHdpdGggZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMuICBUaGUKIC0tIGRl ZmluaXRpb25zIG9mIHRoZSByZWJ1aWx0IGluZGV4ZXMgc2hvdWxkIG1hdGNoIHRoZSBvcmlnaW5h bAogLS0gZGVmaW5pdGlvbnMuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2luZGV4aW5nLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0Cmlu ZGV4IGJjZjFkYjExZDczLi4zZmVjYWEzODg1MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9pbmRleGluZy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9p bmRleGluZy5vdXQKQEAgLTE1ODUsMTAgKzE1ODUsMTEgQEAgc2VsZWN0IGluZGV4cmVsaWQ6OnJl Z2NsYXNzLCBpbmRpc3ZhbGlkLAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICBwYXJ0ZWRfaXN2YWxpZF9pZHggICAgICAgICAgICAgfCBmICAgICAgICAgIHwg cGFydGVkX2lzdmFsaWRfdGFiICAgIHwgCiAgcGFydGVkX2lzdmFsaWRfaWR4XzExICAgICAgICAg IHwgZiAgICAgICAgICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xMSB8IHBhcnRlZF9pc3ZhbGlkX3Rh Yl8xX2V4cHJfaWR4CisgcGFydGVkX2lzdmFsaWRfaWR4XzExX2NjYXV4ICAgIHwgZiAgICAgICAg ICB8IHBhcnRlZF9pc3ZhbGlkX3RhYl8xMSB8IAogIHBhcnRlZF9pc3ZhbGlkX3RhYl8xMl9leHBy X2lkeCB8IHQgICAgICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMTIgfCBwYXJ0ZWRfaXN2YWxp ZF90YWJfMV9leHByX2lkeAogIHBhcnRlZF9pc3ZhbGlkX3RhYl8xX2V4cHJfaWR4ICB8IGYgICAg ICAgICAgfCBwYXJ0ZWRfaXN2YWxpZF90YWJfMSAgfCBwYXJ0ZWRfaXN2YWxpZF9pZHgKICBwYXJ0 ZWRfaXN2YWxpZF90YWJfMl9leHByX2lkeCAgfCB0ICAgICAgICAgIHwgcGFydGVkX2lzdmFsaWRf dGFiXzIgIHwgcGFydGVkX2lzdmFsaWRfaWR4Ci0oNSByb3dzKQorKDYgcm93cykKIAogZHJvcCB0 YWJsZSBwYXJ0ZWRfaXN2YWxpZF90YWI7CiAtLSBDaGVjayBzdGF0ZSBvZiByZXBsaWNhIGluZGV4 ZXMgd2hlbiBhdHRhY2hpbmcgYSBwYXJ0aXRpb24uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMu b3V0CmluZGV4IDYyZjY5YWMyMGIyLi4wOWNmZTc5OWVmYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKQEAgLTIwMjAsMTQgKzIwMjAsMTUgQEAgcGdfc3RhdF9wcm9ncmVzc19jcmVh dGVfaW5kZXh8IFNFTEVDVCBzLnBpZCwKICAgICAgICAgQ0FTRSBzLnBhcmFtMTAKICAgICAgICAg ICAgIFdIRU4gMCBUSEVOICdpbml0aWFsaXppbmcnOjp0ZXh0CiAgICAgICAgICAgICBXSEVOIDEg VEhFTiAnd2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgYnVpbGQnOjp0ZXh0Ci0gICAgICAgICAg ICBXSEVOIDIgVEhFTiAoJ2J1aWxkaW5nIGluZGV4Jzo6dGV4dCB8fCBDT0FMRVNDRSgoJzogJzo6 dGV4dCB8fCBwZ19pbmRleGFtX3Byb2dyZXNzX3BoYXNlbmFtZSgocy5wYXJhbTkpOjpvaWQsIHMu cGFyYW0xMSkpLCAnJzo6dGV4dCkpCi0gICAgICAgICAgICBXSEVOIDMgVEhFTiAnd2FpdGluZyBm b3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbic6OnRleHQKLSAgICAgICAgICAgIFdIRU4gNCBU SEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBpbmRleCc6OnRleHQKLSAgICAgICAgICAg IFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzb3J0aW5nIHR1cGxlcyc6OnRleHQKLSAg ICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyB0YWJsZSc6 OnRleHQKLSAgICAgICAgICAgIFdIRU4gNyBUSEVOICd3YWl0aW5nIGZvciBvbGQgc25hcHNob3Rz Jzo6dGV4dAotICAgICAgICAgICAgV0hFTiA4IFRIRU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVm b3JlIG1hcmtpbmcgZGVhZCc6OnRleHQKLSAgICAgICAgICAgIFdIRU4gOSBUSEVOICd3YWl0aW5n IGZvciByZWFkZXJzIGJlZm9yZSBkcm9wcGluZyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gMiBU SEVOICd3YWl0aW5nIGZvciB3cml0ZXJzIHRvIHVzZSBhdXhpbGlhcnkgaW5kZXgnOjp0ZXh0Cisg ICAgICAgICAgICBXSEVOIDMgVEhFTiAoJ2J1aWxkaW5nIGluZGV4Jzo6dGV4dCB8fCBDT0FMRVND RSgoJzogJzo6dGV4dCB8fCBwZ19pbmRleGFtX3Byb2dyZXNzX3BoYXNlbmFtZSgocy5wYXJhbTkp OjpvaWQsIHMucGFyYW0xMSkpLCAnJzo6dGV4dCkpCisgICAgICAgICAgICBXSEVOIDQgVEhFTiAn d2FpdGluZyBmb3Igd3JpdGVycyBiZWZvcmUgdmFsaWRhdGlvbic6OnRleHQKKyAgICAgICAgICAg IFdIRU4gNSBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzY2FubmluZyBpbmRleCc6OnRleHQKKyAg ICAgICAgICAgIFdIRU4gNiBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBzb3J0aW5nIHR1cGxlcyc6 OnRleHQKKyAgICAgICAgICAgIFdIRU4gNyBUSEVOICdpbmRleCB2YWxpZGF0aW9uOiBtZXJnaW5n IGluZGV4ZXMnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDggVEhFTiAnd2FpdGluZyBmb3Igb2xk IHNuYXBzaG90cyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gOSBUSEVOICd3YWl0aW5nIGZvciBy ZWFkZXJzIGJlZm9yZSBtYXJraW5nIGRlYWQnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDEwIFRI RU4gJ3dhaXRpbmcgZm9yIHJlYWRlcnMgYmVmb3JlIGRyb3BwaW5nJzo6dGV4dAogICAgICAgICAg ICAgRUxTRSBOVUxMOjp0ZXh0CiAgICAgICAgIEVORCBBUyBwaGFzZSwKICAgICBzLnBhcmFtNCBB UyBsb2NrZXJzX3RvdGFsLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRl X2luZGV4LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwKaW5kZXgg YmU1NzBkYTA4YTAuLmZjZmY1ZDE5OTk4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9jcmVhdGVfaW5kZXguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRl eC5zcWwKQEAgLTQ5OSw2ICs0OTksNyBAQCBDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRM WSBJRiBOT1QgRVhJU1RTIGNvbmN1cl9pbmRleDIgT04gY29uY3VyX2hlYXAoZjEpOwogSU5TRVJU IElOVE8gY29uY3VyX2hlYXAgVkFMVUVTICgnYicsJ3gnKTsKIC0tIGNoZWNrIGlmIGNvbnN0cmFp bnQgaXMgZW5mb3JjZWQgcHJvcGVybHkgYXQgYnVpbGQgdGltZQogQ1JFQVRFIFVOSVFVRSBJTkRF WCBDT05DVVJSRU5UTFkgY29uY3VyX2luZGV4MyBPTiBjb25jdXJfaGVhcChmMik7CitEUk9QIElO REVYIGNvbmN1cl9pbmRleDNfY2NhdXg7CiAtLSB0ZXN0IHRoYXQgZXhwcmVzc2lvbiBpbmRleGVz IGFuZCBwYXJ0aWFsIGluZGV4ZXMgd29yayBjb25jdXJyZW50bHkKIENSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgY29uY3VyX2luZGV4NCBvbiBjb25jdXJfaGVhcChmMikgV0hFUkUgZjE9J2EnOwog Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjb25jdXJfaW5kZXg1IG9uIGNvbmN1cl9oZWFwKGYy KSBXSEVSRSBmMT0neCc7CkBAIC0xMjUwLDEwICsxMjUxLDEyIEBAIENSRUFURSBUQUJMRSBjb25j dXJfcmVpbmRleF90YWI0IChjMSBpbnQpOwogSU5TRVJUIElOVE8gY29uY3VyX3JlaW5kZXhfdGFi NCBWQUxVRVMgKDEpLCAoMSksICgyKTsKIC0tIFRoaXMgdHJpY2sgY3JlYXRlcyBhbiBpbnZhbGlk IGluZGV4LgogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgY29uY3VyX3JlaW5kZXhf aW5kNSBPTiBjb25jdXJfcmVpbmRleF90YWI0IChjMSk7CitEUk9QIElOREVYIGNvbmN1cl9yZWlu ZGV4X2luZDVfY2NhdXg7CiAtLSBSZWluZGV4aW5nIGNvbmN1cnJlbnRseSB0aGlzIGluZGV4IGZh aWxzIHdpdGggdGhlIHNhbWUgZmFpbHVyZS4KIC0tIFRoZSBleHRyYSBpbmRleCBjcmVhdGVkIGlz IGl0c2VsZiBpbnZhbGlkLCBhbmQgY2FuIGJlIGRyb3BwZWQuCiBSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjb25jdXJfcmVpbmRleF9pbmQ1OwogXGQgY29uY3VyX3JlaW5kZXhfdGFiNAorRFJP UCBJTkRFWCBjb25jdXJfcmVpbmRleF9pbmQ1X2NjYXV4OwogRFJPUCBJTkRFWCBjb25jdXJfcmVp bmRleF9pbmQ1X2NjbmV3OwogLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFpbHVyZSBnbyBh d2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KIERFTEVURSBGUk9NIGNvbmN1cl9y ZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOwpAQCAtMTI2NSw2ICsxMjY4LDI0IEBAIFJFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGNvbmN1cl9yZWluZGV4X2luZDU7CiBcZCBjb25jdXJfcmVpbmRl eF90YWI0CiBEUk9QIFRBQkxFIGNvbmN1cl9yZWluZGV4X3RhYjQ7CiAKKy0tIENoZWNrIGhhbmRs aW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzCitDUkVBVEUgVEFCTEUgYXV4X2luZGV4X3RhYjUgKGMx IGludCk7CitJTlNFUlQgSU5UTyBhdXhfaW5kZXhfdGFiNSBWQUxVRVMgKDEpLCAoMSksICgyKTsK Ky0tIFRoaXMgdHJpY2sgY3JlYXRlcyBhbiBpbnZhbGlkIGluZGV4IGFuZCBhdXhpbGlhcnkgaW5k ZXggZm9yIGl0CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBhdXhfaW5kZXhfaW5k NiBPTiBhdXhfaW5kZXhfdGFiNSAoYzEpOworXGQgYXV4X2luZGV4X3RhYjUKKy0tIE5vdCBhbGxv d2VkIHRvIHJlaW5kZXggYXV4aWxpYXJ5IGluZGV4CitSRUlOREVYIElOREVYIGF1eF9pbmRleF9p bmQ2X2NjYXV4OworLS0gQ29uY3VycmVudGx5IGFsc28KK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIGF1eF9pbmRleF9pbmQ2X2NjYXV4OworLS0gVGhpcyBtYWtlcyB0aGUgcHJldmlvdXMgZmFp bHVyZSBnbyBhd2F5LCBzbyB0aGUgaW5kZXggY2FuIGJlY29tZSB2YWxpZC4KK0RFTEVURSBGUk9N IGNvbmN1cl9yZWluZGV4X3RhYjQgV0hFUkUgYzEgPSAxOworLS0gU2hvdWxkIGJlIHNraXBwZWQg ZHVyaW5nIHJlaW5kZXgKK1JFSU5ERVggVEFCTEUgYXV4X2luZGV4X3RhYjU7CistLSBTaG91bGQg YmUgc2tpcHBlZCBkdXJpbmcgY29uY3VycmVudCByZWluZGV4CitSRUlOREVYIFRBQkxFIENPTkNV UlJFTlRMWSBhdXhfaW5kZXhfdGFiNTsKK0RST1AgVEFCTEUgYXV4X2luZGV4X3RhYjU7CisKIC0t IENoZWNrIGhhbmRsaW5nIG9mIGluZGV4ZXMgd2l0aCBleHByZXNzaW9ucyBhbmQgcHJlZGljYXRl cy4gIFRoZQogLS0gZGVmaW5pdGlvbnMgb2YgdGhlIHJlYnVpbHQgaW5kZXhlcyBzaG91bGQgbWF0 Y2ggdGhlIG9yaWdpbmFsCiAtLSBkZWZpbml0aW9ucy4KLS0gCjIuNDMuMAoK --000000000000caf8fd062fc891e1 Content-Type: application/octet-stream; name="v16-0011-Add-proper-handling-of-auxiliary-indexes-during-.patch" Content-Disposition: attachment; filename="v16-0011-Add-proper-handling-of-auxiliary-indexes-during-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7zd30o71 RnJvbSAxMjQ0ZTMzYTVlMjRiNGMzNDUyOWU3YTVlNTAyODE3NDQ4MGFhZTQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDozNjozMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE2IDEx LzEyXSBBZGQgcHJvcGVyIGhhbmRsaW5nIG9mIGF1eGlsaWFyeSBpbmRleGVzIGR1cmluZwogRFJP 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 L3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCmluZGV4IDE4MzE2YTM5NjhiLi5hYjRj M2UyZmI0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTI4Niw3ICsyODYsNyBAQCBw ZXJmb3JtRGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCSAqIEFjcXVpcmUg ZGVsZXRpb24gbG9jayBvbiB0aGUgdGFyZ2V0IG9iamVjdC4gIChJZGVhbGx5IHRoZSBjYWxsZXIg aGFzCiAJICogZG9uZSB0aGlzIGFscmVhZHksIGJ1dCBtYW55IHBsYWNlcyBhcmUgc2xvcHB5IGFi b3V0IGl0LikKIAkgKi8KLQlBY3F1aXJlRGVsZXRpb25Mb2NrKG9iamVjdCwgMCk7CisJQWNxdWly ZURlbGV0aW9uTG9jayhvYmplY3QsIGZsYWdzKTsKIAogCS8qCiAJICogQ29uc3RydWN0IGEgbGlz dCBvZiBvYmplY3RzIHRvIGRlbGV0ZSAoaWUsIHRoZSBnaXZlbiBvYmplY3QgcGx1cwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jCmluZGV4IDM5ZDJmNDc0ODY1Li5jOWVhYTE2OTI3NCAxMDA2NDQKLS0tIGEvc3JjL2Jh 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 SW5mbywKIAkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCkBAIC0zODMyLDYgKzM4NDgsNyBAQCByZWlu ZGV4X2luZGV4KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgaW5kZXhJZCwKIAkJCQloZWFw UmVsYXRpb247CiAJT2lkCQkJaGVhcElkOwogCU9pZAkJCXNhdmVfdXNlcmlkOworCU9pZAkJCWp1 bmtBdXhJbmRleElkOwogCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJc2F2ZV9uZXN0 bGV2ZWw7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwpAQCAtMzg4OCw2ICszOTA1LDE5IEBAIHJl aW5kZXhfaW5kZXgoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRleElkLAogCQlwZ3N0 YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDIsIHByb2dyZXNzX2NvbHMsIHByb2dyZXNz X3ZhbHMpOwogCX0KIAorCS8qIENoZWNrIGZvciB0aGUgYXV4aWxpYXJ5IGluZGV4IGZvciB0aGF0 IGluZGV4LCBpdCBuZWVkcyB0byBkcm9wcGVkICovCisJanVua0F1eEluZGV4SWQgPSBnZXRfYXV4 aWxpYXJ5X2luZGV4KGluZGV4SWQpOworCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkK Kwl7CisJCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9u UmVsYXRpb25JZDsKKwkJb2JqZWN0Lm9iamVjdElkID0ganVua0F1eEluZGV4SWQ7CisJCW9iamVj dC5vYmplY3RTdWJJZCA9IDA7CisJCXBlcmZvcm1EZWxldGlvbigmb2JqZWN0LCBEUk9QX1JFU1RS SUNULAorCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9JTlRFUk5BTCB8CisJCQkJCQkJCSBQRVJG T1JNX0RFTEVUSU9OX1FVSUVUTFkpOworCX0KKwogCS8qCiAJICogT3BlbiB0aGUgdGFyZ2V0IGlu ZGV4IHJlbGF0aW9uIGFuZCBnZXQgYW4gZXhjbHVzaXZlIGxvY2sgb24gaXQsIHRvCiAJICogZW5z dXJlIHRoYXQgbm8gb25lIGVsc2UgaXMgdG91Y2hpbmcgdGhpcyBwYXJ0aWN1bGFyIGluZGV4LgpA QCAtNDE3Niw3ICs0MjA2LDggQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAq c3RtdCwgT2lkIHJlbGlkLCBpbnQgZmxhZ3MsCiB7CiAJUmVsYXRpb24JcmVsOwogCU9pZAkJCXRv YXN0X3JlbGlkOwotCUxpc3QJICAgKmluZGV4SWRzOworCUxpc3QJICAgKmluZGV4SWRzLAorCQkJ ICAgKmF1eEluZGV4SWRzID0gTklMOwogCWNoYXIJCXBlcnNpc3RlbmNlOwogCWJvb2wJCXJlc3Vs dCA9IGZhbHNlOwogCUxpc3RDZWxsICAgKmluZGV4SWQ7CkBAIC00MjY1LDEzICs0Mjk2LDMwIEBA IHJlaW5kZXhfcmVsYXRpb24oY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxpZCwgaW50 IGZsYWdzLAogCWVsc2UKIAkJcGVyc2lzdGVuY2UgPSByZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVu Y2U7CiAKKwlmb3JlYWNoKGluZGV4SWQsIGluZGV4SWRzKQorCXsKKwkJT2lkCQkJaW5kZXhPaWQg PSBsZmlyc3Rfb2lkKGluZGV4SWQpOworCQlPaWQJCQlpbmRleEFtID0gZ2V0X3JlbF9yZWxhbShp bmRleE9pZCk7CisKKwkJLyogQWxsIFNUSVIgaW5kZXhlcyBhcmUgYXV4aWxpYXJ5IGluZGV4ZXMg Ki8KKwkJaWYgKGluZGV4QW0gPT0gU1RJUl9BTV9PSUQpCisJCXsKKwkJCWlmIChmbGFncyAmIFJF SU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRSkKKwkJCQlSZW1vdmVSZWluZGV4UGVuZGluZyhp bmRleE9pZCk7CisJCQlhdXhJbmRleElkcyA9IGxhcHBlbmRfb2lkKGF1eEluZGV4SWRzLCBpbmRl eE9pZCk7CisJCX0KKwl9CisKIAkvKiBSZWluZGV4IGFsbCB0aGUgaW5kZXhlcy4gKi8KIAlpID0g MTsKIAlmb3JlYWNoKGluZGV4SWQsIGluZGV4SWRzKQogCXsKIAkJT2lkCQkJaW5kZXhPaWQgPSBs Zmlyc3Rfb2lkKGluZGV4SWQpOwogCQlPaWQJCQlpbmRleE5hbWVzcGFjZUlkID0gZ2V0X3JlbF9u YW1lc3BhY2UoaW5kZXhPaWQpOwotCQlPaWQJCQlpbmRleEFtID0gZ2V0X3JlbF9yZWxhbShpbmRl eE9pZCk7CisKKwkJLyogQXV4aWxpYXJ5IGluZGV4ZXMgYXJlIGdvaW5nIHRvIGJlIGRyb3BwZWQg ZHVyaW5nIG1haW4gaW5kZXggcmVidWlsZCAqLworCQlpZiAobGlzdF9tZW1iZXJfb2lkKGF1eElu ZGV4SWRzLCBpbmRleE9pZCkpCisJCQljb250aW51ZTsKIAogCQkvKgogCQkgKiBTa2lwIGFueSBp bnZhbGlkIGluZGV4ZXMgb24gYSBUT0FTVCB0YWJsZS4gIFRoZXNlIGNhbiBvbmx5IGJlCkBAIC00 Mjk3LDE4ICs0MzQ1LDYgQEAgcmVpbmRleF9yZWxhdGlvbihjb25zdCBSZWluZGV4U3RtdCAqc3Rt 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 IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggMDVhNjNlMjE0NzUuLjc4 MmFhZmZhN2JjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTI1NCw3ICsxMjU0LDcg QEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAKIAlpbmRleFJlbGF0aW9uSWQgPQogCQlpbmRl eF9jcmVhdGUocmVsLCBpbmRleFJlbGF0aW9uTmFtZSwgaW5kZXhSZWxhdGlvbklkLCBwYXJlbnRJ bmRleElkLAotCQkJCQkgcGFyZW50Q29uc3RyYWludElkLAorCQkJCQkgcGFyZW50Q29uc3RyYWlu dElkLCBJbnZhbGlkT2lkLAogCQkJCQkgc3RtdC0+b2xkTnVtYmVyLCBpbmRleEluZm8sIGluZGV4 Q29sTmFtZXMsCiAJCQkJCSBhY2Nlc3NNZXRob2RJZCwgdGFibGVzcGFjZUlkLAogCQkJCQkgY29s bGF0aW9uSWRzLCBvcGNsYXNzSWRzLCBvcGNsYXNzT3B0aW9ucywKQEAgLTM1ODgsNiArMzU4OCw3 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJewogCQlPaWQJCQlpbmRleElkOwogCQlPaWQJ CQlhdXhJbmRleElkOworCQlPaWQJCQlqdW5rQXV4SW5kZXhJZDsKIAkJT2lkCQkJdGFibGVJZDsK IAkJT2lkCQkJYW1JZDsKIAl9IFJlaW5kZXhJbmRleEluZm87CkBAIC0zOTM2LDYgKzM5MzcsNyBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlSZWluZGV4SW5kZXhJbmZvICpuZXdpZHg7CiAJ CU9pZAkJCW5ld0luZGV4SWQ7CiAJCU9pZAkJCWF1eEluZGV4SWQ7CisJCU9pZAkJCWp1bmtBdXhJ bmRleElkOwogCQlSZWxhdGlvbglpbmRleFJlbDsKIAkJUmVsYXRpb24JaGVhcFJlbDsKIAkJT2lk CQkJc2F2ZV91c2VyaWQ7CkBAIC0zOTQzLDYgKzM5NDUsNyBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3Qg UmVpbgogCQlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIAkJUmVsYXRpb24JbmV3SW5kZXhSZWw7CiAJ CVJlbGF0aW9uCWF1eEluZGV4UmVsOworCQlSZWxhdGlvbglqdW5rQXV4SW5kZXhSZWw7CiAJCUxv Y2tSZWxJZCAgKmxvY2tyZWxpZDsKIAkJT2lkCQkJdGFibGVzcGFjZWlkOwogCkBAIC00MDA1LDEy ICs0MDA4LDE3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCQkJCQkJCQkJCQkgICB0YWJs ZXNwYWNlaWQsCiAJCQkJCQkJCQkJCQkgICBhdXhDb25jdXJyZW50TmFtZSk7CiAKKwkJLyogU2Vh cmNoIGZvciBhdXhpbGlhcnkgaW5kZXggZm9yIHJlaW5kZXhlZCBpbmRleCwgdG8gZHJvcCBpdCAq LworCQlqdW5rQXV4SW5kZXhJZCA9IGdldF9hdXhpbGlhcnlfaW5kZXgoaWR4LT5pbmRleElkKTsK KwogCQkvKgogCQkgKiBOb3cgb3BlbiB0aGUgcmVsYXRpb24gb2YgdGhlIG5ldyBpbmRleCwgYSBz ZXNzaW9uLWxldmVsIGxvY2sgaXMKIAkJICogYWxzbyBuZWVkZWQgb24gaXQuCiAJCSAqLwogCQlu ZXdJbmRleFJlbCA9IGluZGV4X29wZW4obmV3SW5kZXhJZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVM b2NrKTsKIAkJYXV4SW5kZXhSZWwgPSBpbmRleF9vcGVuKGF1eEluZGV4SWQsIFNoYXJlVXBkYXRl RXhjbHVzaXZlTG9jayk7CisJCWlmIChPaWRJc1ZhbGlkKGp1bmtBdXhJbmRleElkKSkKKwkJCWp1 bmtBdXhJbmRleFJlbCA9IGluZGV4X29wZW4oanVua0F1eEluZGV4SWQsIFNoYXJlVXBkYXRlRXhj bHVzaXZlTG9jayk7CiAKIAkJLyoKIAkJICogU2F2ZSB0aGUgbGlzdCBvZiBPSURzIGFuZCBsb2Nr cyBpbiBwcml2YXRlIGNvbnRleHQKQEAgLTQwMjAsNiArNDAyOCw3IEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJCW5ld2lkeCA9IHBhbGxvY19vYmplY3QoUmVpbmRleEluZGV4SW5mbyk7CiAJ CW5ld2lkeC0+aW5kZXhJZCA9IG5ld0luZGV4SWQ7CiAJCW5ld2lkeC0+YXV4SW5kZXhJZCA9IGF1 eEluZGV4SWQ7CisJCW5ld2lkeC0+anVua0F1eEluZGV4SWQgPSBqdW5rQXV4SW5kZXhJZDsKIAkJ bmV3aWR4LT50YWJsZUlkID0gaWR4LT50YWJsZUlkOwogCQluZXdpZHgtPmFtSWQgPSBpZHgtPmFt SWQ7CiAKQEAgLTQwNDAsMTAgKzQwNDksMTggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5 KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJ bG9ja3JlbGlkID0gcGFsbG9jX29iamVjdChMb2NrUmVsSWQpOwogCQkqbG9ja3JlbGlkID0gYXV4 SW5kZXhSZWwtPnJkX2xvY2tJbmZvLmxvY2tSZWxJZDsKIAkJcmVsYXRpb25Mb2NrcyA9IGxhcHBl bmQocmVsYXRpb25Mb2NrcywgbG9ja3JlbGlkKTsKKwkJaWYgKE9pZElzVmFsaWQoanVua0F1eElu ZGV4SWQpKQorCQl7CisJCQlsb2NrcmVsaWQgPSBwYWxsb2Nfb2JqZWN0KExvY2tSZWxJZCk7CisJ CQkqbG9ja3JlbGlkID0ganVua0F1eEluZGV4UmVsLT5yZF9sb2NrSW5mby5sb2NrUmVsSWQ7CisJ CQlyZWxhdGlvbkxvY2tzID0gbGFwcGVuZChyZWxhdGlvbkxvY2tzLCBsb2NrcmVsaWQpOworCQl9 CiAKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCiAJCWluZGV4X2Nsb3Nl KGluZGV4UmVsLCBOb0xvY2spOworCQlpZiAoT2lkSXNWYWxpZChqdW5rQXV4SW5kZXhJZCkpCisJ CQlpbmRleF9jbG9zZShqdW5rQXV4SW5kZXhSZWwsIE5vTG9jayk7CiAJCWluZGV4X2Nsb3NlKGF1 eEluZGV4UmVsLCBOb0xvY2spOwogCQlpbmRleF9jbG9zZShuZXdJbmRleFJlbCwgTm9Mb2NrKTsK IApAQCAtNDIwMCw3ICs0MjE3LDggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0 IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAogCS8qCiAJ ICogQXQgdGhpcyBtb21lbnQgYWxsIHRhcmdldCBpbmRleGVzIGFyZSBtYXJrZWQgYXMgInJlYWR5 LXRvLWluc2VydCIuIFNvLAotCSAqIHdlIGFyZSBmcmVlIHRvIHN0YXJ0IHByb2Nlc3Mgb2YgZHJv cHBpbmcgYXV4aWxpYXJ5IGluZGV4ZXMuCisJICogd2UgYXJlIGZyZWUgdG8gc3RhcnQgcHJvY2Vz cyBvZiBkcm9wcGluZyBhdXhpbGlhcnkgaW5kZXhlcyAtIGluY2x1ZGluZworCSAqIGp1c3QgaW5k ZXhlcyBkZXRlY3RlZCBlYXJsaWVyLgogCSAqLwogCWZvcmVhY2gobGMsIG5ld0luZGV4SWRzKQog CXsKQEAgLTQyMTksNiArNDIzNyw5IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCSAqLwog CQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkJaW5kZXhf c2V0X3N0YXRlX2ZsYWdzKG5ld2lkeC0+YXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFE WSk7CisJCS8qIEVuc3VyZSBqdXN0IGluZGV4IGlzIG1hcmtlZCBhcyBub24tcmVhZHkgKi8KKwkJ aWYgKE9pZElzVmFsaWQobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCkpCisJCQlpbmRleF9zZXRfc3Rh dGVfZmxhZ3MobmV3aWR4LT5qdW5rQXV4SW5kZXhJZCwgSU5ERVhfRFJPUF9DTEVBUl9SRUFEWSk7 CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CkBAIC00NDAxLDYgKzQ0MjIsOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAogCQlpbmRleF9jb25jdXJy ZW50bHlfc2V0X2RlYWQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4SWQpOworCQlp ZiAoT2lkSXNWYWxpZChuZXdpZHgtPmp1bmtBdXhJbmRleElkKSkKKwkJCWluZGV4X2NvbmN1cnJl bnRseV9zZXRfZGVhZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+anVua0F1eEluZGV4SWQpOwog CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJfQpAQCAtNDQ0Niw2ICs0NDY5LDE0IEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0 aW9uT2lkLCBjb25zdCBSZWluCiAJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOwogCiAJCQlhZGRf ZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwgb2JqZWN0cyk7CisKKwkJCWlmIChPaWRJc1Zh bGlkKGlkeC0+anVua0F1eEluZGV4SWQpKQorCQkJeworCisJCQkJb2JqZWN0Lm9iamVjdElkID0g aWR4LT5qdW5rQXV4SW5kZXhJZDsKKwkJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCQkJCWFk ZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqZWN0LCBvYmplY3RzKTsKKwkJCX0KIAkJfQogCiAJ CS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDU5MTU2YTFjMWY2Li5kZjE1MmM4NDY2 ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTE0OTEsNiArMTQ5MSw4IEBAIFJlbW92 ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAlMaXN0Q2VsbCAgICpjZWxsOwogCWludAkJCWZs YWdzID0gMDsKIAlMT0NLTU9ERQlsb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CisJTWVt b3J5Q29udGV4dCBwcml2YXRlX2NvbnRleHQsCisJCQkJICBvbGRjb250ZXh0OwogCiAJLyogRFJP UCBDT05DVVJSRU5UTFkgdXNlcyBhIHdlYWtlciBsb2NrLCBhbmQgaGFzIHNvbWUgcmVzdHJpY3Rp b25zICovCiAJaWYgKGRyb3AtPmNvbmN1cnJlbnQpCkBAIC0xNTUxLDkgKzE1NTMsMjAgQEAgUmVt b3ZlUmVsYXRpb25zKERyb3BTdG10ICpkcm9wKQogCQkJcmVsa2luZCA9IDA7CQkvKiBrZWVwIGNv bXBpbGVyIHF1aWV0ICovCiAJCQlicmVhazsKIAl9CisJLyoKKwkgKiBDcmVhdGUgYSBtZW1vcnkg Y29udGV4dCB0aGF0IHdpbGwgc3Vydml2ZSBmb3JjZWQgdHJhbnNhY3Rpb24gY29tbWl0cyB3ZQor CSAqIG1heSBuZWVkIHRvIGRvIGJlbG93IChpbiBjYXNlIG9mIGNvbmN1cnJlbnQgaW5kZXggZHJv cCkuCisJICogU2luY2UgaXQgaXMgYSBjaGlsZCBvZiBQb3J0YWxDb250ZXh0LCBpdCB3aWxsIGdv IGF3YXkgZXZlbnR1YWxseSBldmVuIGlmCisJICogd2Ugc3VmZmVyIGFuIGVycm9yOyB0aGVyZSdz IG5vIG5lZWQgZm9yIHNwZWNpYWwgYWJvcnQgY2xlYW51cCBsb2dpYy4KKwkgKi8KKwlwcml2YXRl X2NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoUG9ydGFsQ29udGV4dCwKKwkJCQkJCQkJ CQkJIlJlbW92ZVJlbGF0aW9ucyIsCisJCQkJCQkJCQkJCUFMTE9DU0VUX1NNQUxMX1NJWkVTKTsK IAorCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJpdmF0ZV9jb250ZXh0KTsK IAkvKiBMb2NrIGFuZCB2YWxpZGF0ZSBlYWNoIHJlbGF0aW9uOyBidWlsZCBhIGxpc3Qgb2Ygb2Jq ZWN0IGFkZHJlc3NlcyAqLwogCW9iamVjdHMgPSBuZXdfb2JqZWN0X2FkZHJlc3NlcygpOworCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAogCWZvcmVhY2goY2VsbCwgZHJvcC0+ b2JqZWN0cykKIAl7CkBAIC0xNjA1LDYgKzE2MTgsMzQgQEAgUmVtb3ZlUmVsYXRpb25zKERyb3BT dG10ICpkcm9wKQogCQkJZmxhZ3MgfD0gUEVSRk9STV9ERUxFVElPTl9DT05DVVJSRU5UTFk7CiAJ CX0KIAorCQkvKgorCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3AgcmVxdWlyZXMgdG8gYmUgdGhl IGZpcnN0IHRyYW5zYWN0aW9uLiBCdXQgaW4KKwkJICogY2FzZSB3ZSBoYXZlIGp1bmsgYXV4aWxp YXJ5IGluZGV4IC0gd2Ugd2FudCB0byBkcm9wIGl0IHRvbyAoYW5kIGFsc28KKwkJICogaW4gYSBj b25jdXJyZW50IHdheSkuIEluIHRoaXMgY2FzZSBwZXJmb3JtIHNpbGVudCBpbnRlcm5hbCBkZWxl dGlvbgorCQkgKiBvZiBhdXhpbGlhcnkgaW5kZXgsIGFuZCByZXN0b3JlIHRyYW5zYWN0aW9uIHN0 YXRlLiBJdCBpcyBmaW5lIHRvIGRvIGl0CisJCSAqIGluIHRoZSBsb29wIGJlY2F1c2UgdGhlcmUg aXMgb25seSBzaW5nbGUgZWxlbWVudCBpbiBkcm9wLT5vYmplY3RzLgorCQkgKi8KKwkJaWYgKChm bGFncyAmIFBFUkZPUk1fREVMRVRJT05fQ09OQ1VSUkVOVExZKSAhPSAwICYmCisJCQlzdGF0ZS5h Y3R1YWxfcmVsa2luZCA9PSBSRUxLSU5EX0lOREVYKQorCQl7CisJCQlPaWQganVua0F1eEluZGV4 T2lkID0gZ2V0X2F1eGlsaWFyeV9pbmRleChyZWxPaWQpOworCQkJaWYgKE9pZElzVmFsaWQoanVu a0F1eEluZGV4T2lkKSkKKwkJCXsKKwkJCQlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwkJCQlvYmpl Y3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJCQlvYmplY3Qub2JqZWN0SWQgPSBq dW5rQXV4SW5kZXhPaWQ7CisJCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwkJCQlwZXJmb3Jt RGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxF VElPTl9DT05DVVJSRU5UTFkgfAorCQkJCQkJCQkJCSBQRVJGT1JNX0RFTEVUSU9OX0lOVEVSTkFM IHwKKwkJCQkJCQkJCQkgUEVSRk9STV9ERUxFVElPTl9RVUlFVExZKTsKKwkJCQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJCVB1 c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQkJCVByZXZlbnRJ blRyYW5zYWN0aW9uQmxvY2sodHJ1ZSwgIkRST1AgSU5ERVggQ09OQ1VSUkVOVExZIik7CisJCQl9 CisJCX0KKwogCQkvKgogCQkgKiBDb25jdXJyZW50IGluZGV4IGRyb3AgY2Fubm90IGJlIHVzZWQg d2l0aCBwYXJ0aXRpb25lZCBpbmRleGVzLAogCQkgKiBlaXRoZXIuCkBAIC0xNjMzLDEyICsxNjc0 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 Y3JlYXRlX2luZGV4Lm91dAppbmRleCAzNDM2MmUzZDg3NS4uOGFhNjgxNWIzN2MgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9pbmRleC5vdXQKQEAgLTMxMTcsMjAgKzMxMTcs 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 eCBmY2ZmNWQxOTk5OC4uNWU1Y2YyM2Q5N2QgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NyZWF0ZV9pbmRleC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2lu ZGV4LnNxbApAQCAtMTI3OSwxMSArMTI3OSw2MiBAQCBSRUlOREVYIElOREVYIGF1eF9pbmRleF9p 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== --000000000000caf8fd062fc891e1 Content-Type: application/octet-stream; name="v16-0012-Updates-index-insert-and-value-computation-logic.patch" Content-Disposition: attachment; filename="v16-0012-Updates-index-insert-and-value-computation-logic.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7zd30o30 RnJvbSA4MjdkNjNjZTkxMGI1YTczMjhkNGM3OWRiYzg0ODBkZTYwZDRmZWY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxua2V5QHRvbG9rYS5haT4KRGF0ZTogTW9uLCAzMCBE ZWMgMjAyNCAxNjozNzoxMiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE2IDEyLzEyXSBVcGRhdGVz IGluZGV4IGluc2VydCBhbmQgdmFsdWUgY29tcHV0YXRpb24gbG9naWMgdG8KIG9wdGltaXplIGF1 eGlsaWFyeSBpbmRleCBoYW5kbGluZy4KCiogU2tpcCBpbmRleCB2YWx1ZSBjb21wdXRhdGlvbiBm b3IgYXV4aWxpYXJ5IGluZGljZXMgc2luY2UgdGhleSBhcmUgbm90IG5lZWRlZAoqIFNldCBpbmRl eFVuY2hhbmdlZD1mYWxzZSBmb3IgYXV4aWxpYXJ5IGluZGljZXMgdG8gYXZvaWQgdW5uZWNlc3Nh cnkgY2hlY2tzCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgfCAxMSAr KysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgfCAxMSArKysr KysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYwppbmRleCBjOWVhYTE2OTI3NC4uN2FjNmQzYWY2MDYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMKQEAgLTI5MzEsNiArMjkzMSwxNyBAQCBGb3JtSW5kZXhEYXR1bShJbmRleEluZm8g KmluZGV4SW5mbywKIAlMaXN0Q2VsbCAgICppbmRleHByX2l0ZW07CiAJaW50CQkJaTsKIAorCS8q IEF1eGlsaWFyeSBpbmRleCBkb2VzIG5vdCBuZWVkIGFueSB2YWx1ZXMgdG8gYmUgY29tcHV0ZWQg Ki8KKwlpZiAodW5saWtlbHkoaW5kZXhJbmZvLT5paV9BdXhpbGlhcnkpKQorCXsKKwkJZm9yIChp ID0gMDsgaSA8IGluZGV4SW5mby0+aWlfTnVtSW5kZXhBdHRyczsgaSsrKQorCQl7CisJCQl2YWx1 ZXNbaV0gPSBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CisJCQlpc251bGxbaV0gPSB0cnVlOworCQl9 CisJCXJldHVybjsKKwl9CisKIAlpZiAoaW5kZXhJbmZvLT5paV9FeHByZXNzaW9ucyAhPSBOSUwg JiYKIAkJaW5kZXhJbmZvLT5paV9FeHByZXNzaW9uc1N0YXRlID09IE5JTCkKIAl7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmluZGV4IGYyYTc0Yjc2NDY1Li5lZWYxYjM1ZTY4YyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKQEAgLTQ0MSwxMSArNDQxLDE0IEBAIEV4ZWNJ bnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkgKiBUaGVy ZSdzIGRlZmluaXRlbHkgZ29pbmcgdG8gYmUgYW4gaW5kZXhfaW5zZXJ0KCkgY2FsbCBmb3IgdGhp cwogCQkgKiBpbmRleC4gIElmIHdlJ3JlIGJlaW5nIGNhbGxlZCBhcyBwYXJ0IG9mIGFuIFVQREFU RSBzdGF0ZW1lbnQsCiAJCSAqIGNvbnNpZGVyIGlmIHRoZSAnaW5kZXhVbmNoYW5nZWQnID0gdHJ1 ZSBoaW50IHNob3VsZCBiZSBwYXNzZWQuCisJCSAqCisJCSAqIEluIGNhc2Ugb2YgYXV4aWxpYXJ5 IGluZGV4IGFsd2F5cyBwYXNzIGZhbHNlIGFzIG9wdGltaXNhdGlvbi4KIAkJICovCi0JCWluZGV4 VW5jaGFuZ2VkID0gdXBkYXRlICYmIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUocmVzdWx0UmVs SW5mbywKLQkJCQkJCQkJCQkJCQkJCSBlc3RhdGUsCi0JCQkJCQkJCQkJCQkJCQkgaW5kZXhJbmZv LAotCQkJCQkJCQkJCQkJCQkJIGluZGV4UmVsYXRpb24pOworCQlpbmRleFVuY2hhbmdlZCA9IHVw ZGF0ZSAmJiBsaWtlbHkoIWluZGV4SW5mby0+aWlfQXV4aWxpYXJ5KSAmJgorCQkJCQkJCQkJaW5k ZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCQkJCQkJICBl c3RhdGUsCisJCQkJCQkJCQkJCQkJCQkgIGluZGV4SW5mbywKKwkJCQkJCQkJCQkJCQkJCSAgaW5k ZXhSZWxhdGlvbik7CiAKIAkJc2F0aXNmaWVzQ29uc3RyYWludCA9CiAJCQlpbmRleF9pbnNlcnQo aW5kZXhSZWxhdGlvbiwgLyogaW5kZXggcmVsYXRpb24gKi8KLS0gCjIuNDMuMAoK --000000000000caf8fd062fc891e1 Content-Type: application/octet-stream; name="v16-0010-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Disposition: attachment; filename="v16-0010-Remove-PROC_IN_SAFE_IC-optimization.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7zd30o92 RnJvbSA3MDRiYzVkNmNjZGJhMGU1MzQ2MzI5NjQyYzk3NTU3NzhmZDExYmVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDoyNDo0OCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE2IDEw LzEyXSBSZW1vdmUgUFJPQ19JTl9TQUZFX0lDIG9wdGltaXphdGlvbgoKUmVtb3ZlIHRoZSBvcHRp bWl6YXRpb24gdGhhdCBhbGxvd2VkIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSBv dGhlcgpjb25jdXJyZW50IGJ1aWxkcyBvZiAic2FmZSIgaW5kZXhlcyAodGhvc2Ugd2l0aG91dCBl eHByZXNzaW9ucyBvciBwcmVkaWNhdGVzKS4KVGhpcyBvcHRpbWl6YXRpb24gaXMgbm8gbG9uZ2Vy IG5lZWRlZCB3aXRoIHRoZSBuZXcgc25hcHNob3QgaGFuZGxpbmcgYXBwcm9hY2gKdGhhdCB1c2Vz IHBlcmlvZGljYWxseSByZWZyZXNoZWQgc25hcHNob3RzIGluc3RlYWQgb2YgYSBzaW5nbGUgcmVm ZXJlbmNlCnNuYXBzaG90LgoKVGhlIGNoYW5nZSBncmVhdGx5IHNpbXBsaWZpZXMgdGhlIGNvbmN1 cnJlbnQgaW5kZXggYnVpbGQgY29kZSBieToKLSBSZW1vdmluZyB0aGUgUFJPQ19JTl9TQUZFX0lD IHByb2Nlc3Mgc3RhdHVzIGZsYWcKLSBSZW1vdmluZyBhbGwgc2V0X2luZGV4c2FmZV9wcm9jZmxh Z3MoKSBjYWxscyBhbmQgcmVsYXRlZCBsb2dpYwotIFJlbW92aW5nIHNwZWNpYWwgY2FzZSBoYW5k bGluZyBpbiBHZXRDdXJyZW50VmlydHVhbFhJRHMoKQotIFJlbW92aW5nIHJlbGF0ZWQgdGVzdCBj YXNlcyBhbmQgaW5qZWN0aW9uIHBvaW50cwoKVGhpcyBpcyBwYXJ0IG9mIGltcHJvdmluZyBjb25j dXJyZW50IGluZGV4IGJ1aWxkcyB0byBiZXR0ZXIgaGFuZGxlIHhtaW4KcHJvcGFnYXRpb24gZHVy aW5nIGxvbmctcnVubmluZyBvcGVyYXRpb25zLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW4uYyAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5pbnNlcnQuYyAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHNvcnQuYyAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jICAgICAgICAgICAgICB8IDE0MiArLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRl L3N0b3JhZ2UvcHJvYy5oICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL3Rlc3QvbW9k dWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlICAgIHwgICAyICstCiAuLi4vZXhwZWN0ZWQv cmVpbmRleF9jb25jLm91dCAgICAgICAgICAgICAgICAgfCAgNTEgLS0tLS0tLQogc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkIHwgICAxIC0KIC4uLi9pbmplY3Rp b25fcG9pbnRzL3NxbC9yZWluZGV4X2NvbmMuc3FsICAgICB8ICAyOCAtLS0tCiA5IGZpbGVzIGNo YW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDIzNyBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvcmVpbmRleF9j b25jLm91dAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9zcWwvcmVpbmRleF9jb25jLnNxbAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCBjY2Y3 NGMwZTFiNi4uMWEwZjdkMTNlY2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmlu L2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAgLTI4OTEsMTEg KzI4OTEsOSBAQCBfYnJpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNo bV90b2MgKnRvYykKIAlpbnQJCQlzb3J0bWVtOwogCiAJLyoKLQkgKiBUaGUgb25seSBwb3NzaWJs ZSBzdGF0dXMgZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBhcmFsbGVsIHdvcmtlciBpcwot CSAqIFBST0NfSU5fU0FGRV9JQy4KKwkgKiBUaGVyZSBhcmUgbm8gcG9zc2libGUgc3RhdHVzIGZs YWcgdGhhdCBjYW4gYmUgc2V0IHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIuCiAJICovCi0JQXNzZXJ0 KChNeVByb2MtPnN0YXR1c0ZsYWdzID09IDApIHx8Ci0JCSAgIChNeVByb2MtPnN0YXR1c0ZsYWdz ID09IFBST0NfSU5fU0FGRV9JQykpOworCUFzc2VydChNeVByb2MtPnN0YXR1c0ZsYWdzID09IDAp OwogCiAJLyogU2V0IGRlYnVnX3F1ZXJ5X3N0cmluZyBmb3IgaW5kaXZpZHVhbCB3b3JrZXJzIGZp cnN0ICovCiAJc2hhcmVkcXVlcnkgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9R VUVSWV9URVhULCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2lu aW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCmluZGV4IGZiNGM0 YTMxYzc0Li40OWE1NzQ5MzM0MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9n aW5pbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCkBAIC0y MDk0LDExICsyMDk0LDkgQEAgX2dpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpz ZWcsIHNobV90b2MgKnRvYykKIAlpbnQJCQlzb3J0bWVtOwogCiAJLyoKLQkgKiBUaGUgb25seSBw b3NzaWJsZSBzdGF0dXMgZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8gdGhlIHBhcmFsbGVsIHdvcmtl ciBpcwotCSAqIFBST0NfSU5fU0FGRV9JQy4KKwkgKiBUaGVyZSBhcmUgbm8gcG9zc2libGUgc3Rh dHVzIGZsYWcgdGhhdCBjYW4gYmUgc2V0IHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIuCiAJICovCi0J QXNzZXJ0KChNeVByb2MtPnN0YXR1c0ZsYWdzID09IDApIHx8Ci0JCSAgIChNeVByb2MtPnN0YXR1 c0ZsYWdzID09IFBST0NfSU5fU0FGRV9JQykpOworCUFzc2VydChNeVByb2MtPnN0YXR1c0ZsYWdz ID09IDApOwogCiAJLyogU2V0IGRlYnVnX3F1ZXJ5X3N0cmluZyBmb3IgaW5kaXZpZHVhbCB3b3Jr ZXJzIGZpcnN0ICovCiAJc2hhcmVkcXVlcnkgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVM X0tFWV9RVUVSWV9URVhULCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5k ZXggYmI0ZTBmYmI2NzUuLjQzMzZjZGI3NTZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNv cnQuYwpAQCAtMTkxMSwxMSArMTkxMSw5IEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9z ZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKICNlbmRpZgkJCQkJCQkvKiBCVFJFRV9CVUlMRF9T VEFUUyAqLwogCiAJLyoKLQkgKiBUaGUgb25seSBwb3NzaWJsZSBzdGF0dXMgZmxhZyB0aGF0IGNh biBiZSBzZXQgdG8gdGhlIHBhcmFsbGVsIHdvcmtlciBpcwotCSAqIFBST0NfSU5fU0FGRV9JQy4K KwkgKiBUaGVyZSBhcmUgbm8gcG9zc2libGUgc3RhdHVzIGZsYWcgdGhhdCBjYW4gYmUgc2V0IHRv IHRoZSBwYXJhbGxlbCB3b3JrZXIuCiAJICovCi0JQXNzZXJ0KChNeVByb2MtPnN0YXR1c0ZsYWdz ID09IDApIHx8Ci0JCSAgIChNeVByb2MtPnN0YXR1c0ZsYWdzID09IFBST0NfSU5fU0FGRV9JQykp OworCUFzc2VydChNeVByb2MtPnN0YXR1c0ZsYWdzID09IDApOwogCiAJLyogU2V0IGRlYnVnX3F1 ZXJ5X3N0cmluZyBmb3IgaW5kaXZpZHVhbCB3b3JrZXJzIGZpcnN0ICovCiAJc2hhcmVkcXVlcnkg PSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9RVUVSWV9URVhULCB0cnVlKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggODVmODNhOTdhMWYuLjA1YTYzZTIxNDc1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTE1LDcgKzExNSw2IEBAIHN0YXRpYyBib29sIFJl aW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwKIAkJCQkJ CQkJCQlPaWQgcmVsYXRpb25PaWQsCiAJCQkJCQkJCQkJY29uc3QgUmVpbmRleFBhcmFtcyAqcGFy YW1zKTsKIHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWxpc3BhcnRpdGlvbihPaWQgcmVsYXRpb25JZCwg Ym9vbCBuZXd2YWwpOwotc3RhdGljIGlubGluZSB2b2lkIHNldF9pbmRleHNhZmVfcHJvY2ZsYWdz KHZvaWQpOwogCiAvKgogICogY2FsbGJhY2sgYXJndW1lbnQgdHlwZSBmb3IgUmFuZ2VWYXJDYWxs YmFja0ZvclJlaW5kZXhJbmRleCgpCkBAIC00MTgsMTAgKzQxNyw3IEBAIENvbXBhcmVPcGNsYXNz T3B0aW9ucyhjb25zdCBEYXR1bSAqb3B0czEsIGNvbnN0IERhdHVtICpvcHRzMiwgaW50IG5hdHRz KQogICogbGF6eSBWQUNVVU1zLCBiZWNhdXNlIHRoZXkgd29uJ3QgYmUgZmF6ZWQgYnkgbWlzc2lu ZyBpbmRleCBlbnRyaWVzCiAgKiBlaXRoZXIuICAoTWFudWFsIEFOQUxZWkVzLCBob3dldmVyLCBj YW4ndCBiZSBleGNsdWRlZCBiZWNhdXNlIHRoZXkKICAqIG1pZ2h0IGJlIHdpdGhpbiB0cmFuc2Fj dGlvbnMgdGhhdCBhcmUgZ29pbmcgdG8gZG8gYXJiaXRyYXJ5IG9wZXJhdGlvbnMKLSAqIGxhdGVy LikgIFByb2Nlc3NlcyBydW5uaW5nIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgb3IgUkVJTkRF WCBDT05DVVJSRU5UTFkKLSAqIG9uIGluZGV4ZXMgdGhhdCBhcmUgbmVpdGhlciBleHByZXNzaW9u YWwgbm9yIHBhcnRpYWwgYXJlIGFsc28gc2FmZSB0bwotICogaWdub3JlLCBzaW5jZSB3ZSBrbm93 IHRoYXQgdGhvc2UgcHJvY2Vzc2VzIHdvbid0IGV4YW1pbmUgYW55IGRhdGEKLSAqIG91dHNpZGUg dGhlIHRhYmxlIHRoZXkncmUgaW5kZXhpbmcuCisgKiBsYXRlci4pCiAgKgogICogQWxzbywgR2V0 Q3VycmVudFZpcnR1YWxYSURzIG5ldmVyIHJlcG9ydHMgb3VyIG93biB2eGlkLCBzbyB3ZSBuZWVk IG5vdAogICogY2hlY2sgZm9yIHRoYXQuCkBAIC00NDIsOCArNDM4LDcgQEAgV2FpdEZvck9sZGVy U25hcHNob3RzKFRyYW5zYWN0aW9uSWQgbGltaXRYbWluLCBib29sIHByb2dyZXNzKQogCVZpcnR1 YWxUcmFuc2FjdGlvbklkICpvbGRfc25hcHNob3RzOwogCiAJb2xkX3NuYXBzaG90cyA9IEdldEN1 cnJlbnRWaXJ0dWFsWElEcyhsaW1pdFhtaW4sIHRydWUsIGZhbHNlLAotCQkJCQkJCQkJCSAgUFJP Q19JU19BVVRPVkFDVVVNIHwgUFJPQ19JTl9WQUNVVU0KLQkJCQkJCQkJCQkgIHwgUFJPQ19JTl9T QUZFX0lDLAorCQkJCQkJCQkJCSAgUFJPQ19JU19BVVRPVkFDVVVNIHwgUFJPQ19JTl9WQUNVVU0s CiAJCQkJCQkJCQkJICAmbl9vbGRfc25hcHNob3RzKTsKIAlpZiAocHJvZ3Jlc3MpCiAJCXBnc3Rh dF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfV0FJVEZPUl9UT1RBTCwgbl9vbGRfc25h cHNob3RzKTsKQEAgLTQ2Myw4ICs0NTgsNyBAQCBXYWl0Rm9yT2xkZXJTbmFwc2hvdHMoVHJhbnNh Y3Rpb25JZCBsaW1pdFhtaW4sIGJvb2wgcHJvZ3Jlc3MpCiAKIAkJCW5ld2VyX3NuYXBzaG90cyA9 IEdldEN1cnJlbnRWaXJ0dWFsWElEcyhsaW1pdFhtaW4sCiAJCQkJCQkJCQkJCQkJdHJ1ZSwgZmFs c2UsCi0JCQkJCQkJCQkJCQkJUFJPQ19JU19BVVRPVkFDVVVNIHwgUFJPQ19JTl9WQUNVVU0KLQkJ CQkJCQkJCQkJCQl8IFBST0NfSU5fU0FGRV9JQywKKwkJCQkJCQkJCQkJCQlQUk9DX0lTX0FVVE9W QUNVVU0gfCBQUk9DX0lOX1ZBQ1VVTSwKIAkJCQkJCQkJCQkJCQkmbl9uZXdlcl9zbmFwc2hvdHMp OwogCQkJZm9yIChqID0gaTsgaiA8IG5fb2xkX3NuYXBzaG90czsgaisrKQogCQkJewpAQCAtNTc4 LDcgKzU3Miw2IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCWFtb3B0aW9uc19mdW5jdGlv biBhbW9wdGlvbnM7CiAJYm9vbAkJZXhjbHVzaW9uOwogCWJvb2wJCXBhcnRpdGlvbmVkOwotCWJv b2wJCXNhZmVfaW5kZXg7CiAJRGF0dW0JCXJlbG9wdGlvbnM7CiAJaW50MTYJICAgKmNvbG9wdGlv bnM7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwpAQCAtMTE4NywxMCArMTE4MCw2IEBAIERlZmlu ZUluZGV4KE9pZCB0YWJsZUlkLAogCQl9CiAJfQogCi0JLyogSXMgaW5kZXggc2FmZSBmb3Igb3Ro ZXJzIHRvIGlnbm9yZT8gIFNlZSBzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpICovCi0Jc2FmZV9p bmRleCA9IGluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMgPT0gTklMICYmCi0JCWluZGV4SW5mby0+ aWlfUHJlZGljYXRlID09IE5JTDsKLQogCS8qCiAJICogUmVwb3J0IGluZGV4IGNyZWF0aW9uIGlm IGFwcHJvcHJpYXRlIChkZWxheSB0aGlzIHRpbGwgYWZ0ZXIgbW9zdCBvZiB0aGUKIAkgKiBlcnJv ciBjaGVja3MpCkBAIC0xNjc3LDEwICsxNjY2LDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQs CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKIAotCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBp bmRleCBxdWFsaWZpZXMgKi8KLQlpZiAoc2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2FmZV9wcm9j ZmxhZ3MoKTsKLQogCS8qCiAJICogVGhlIGluZGV4IGlzIG5vdyB2aXNpYmxlLCBzbyB3ZSBjYW4g cmVwb3J0IHRoZSBPSUQuICBXaGlsZSBvbiBpdCwKIAkgKiBpbmNsdWRlIHRoZSByZXBvcnQgZm9y IHRoZSBiZWdpbm5pbmcgb2YgcGhhc2UgMi4KQEAgLTE3MzUsOSArMTcyMCw2IEBAIERlZmluZUlu ZGV4KE9pZCB0YWJsZUlkLAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJh bnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRv IGlnbm9yZSB1cywgaWYgaW5kZXggcXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNl dF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFT RV9XQUlUXzIpOwogCS8qCkBAIC0xNzY3LDEwICsxNzQ5LDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRh YmxlSWQsCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKIAotCS8qIFRlbGwgY29uY3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVz LCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQlpZiAoc2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2Fm ZV9wcm9jZmxhZ3MoKTsKLQogCS8qCiAJICogUGhhc2UgMyBvZiBjb25jdXJyZW50IGluZGV4IGJ1 aWxkCiAJICoKQEAgLTE3OTYsOSArMTc3NCw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAog CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKLQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRvIGlnbm9yZSB1cywgaWYgaW5k ZXggcXVhbGlmaWVzICovCi0JaWYgKHNhZmVfaW5kZXgpCi0JCXNldF9pbmRleHNhZmVfcHJvY2Zs YWdzKCk7CisKIAkvKgogCSAqIE1lcmdlIGNvbnRlbnQgb2YgYXV4aWxpYXJ5IGFuZCB0YXJnZXQg aW5kZXhlcyAtIGluc2VydCBhbnkgbWlzc2luZyBpbmRleCBlbnRyaWVzLgogCSAqLwpAQCAtMTgx NSw5ICsxNzkxLDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFRlbGwgY29u Y3VycmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8K LQlpZiAoc2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKIAogCS8qIFdl IHNob3VsZCBub3cgZGVmaW5pdGVseSBub3QgYmUgYWR2ZXJ0aXNpbmcgYW55IHhtaW4uICovCiAJ QXNzZXJ0KE15UHJvYy0+eG1pbiA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CkBAIC0xODU4LDEw ICsxODMxLDYgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFRlbGwgY29uY3Vy cmVudCBpbmRleCBidWlsZHMgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8KLQlp ZiAoc2FmZV9pbmRleCkKLQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCXBnc3RhdF9w cm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCSBQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJVF81KTsKIAkvKiBOb3cgd2FpdCBmb3IgYWxsIHRy YW5zYWN0aW9uIHRvIHNlZSBhdXhpbGlhcnkgYXMgIm5vbi1yZWFkeSBmb3IgaW5zZXJ0cyIgKi8K QEAgLTE4ODIsMTAgKzE4NTEsNiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyog VGVsbCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxp ZmllcyAqLwotCWlmIChzYWZlX2luZGV4KQotCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwot CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Us CiAJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9XQUlUXzYpOwogCS8qIE5vdyB3YWl0 IGZvciBhbGwgdHJhbnNhY3Rpb24gdG8gaWdub3JlIGF1eGlsaWFyeSBiZWNhdXNlIGl0IGlzIGRl YWQgKi8KQEAgLTM2MjUsNyArMzU5MCw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShj b25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCU9p ZAkJCWF1eEluZGV4SWQ7CiAJCU9pZAkJCXRhYmxlSWQ7CiAJCU9pZAkJCWFtSWQ7Ci0JCWJvb2wJ CXNhZmU7CQkvKiBmb3Igc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MgKi8KIAl9IFJlaW5kZXhJbmRl eEluZm87CiAJTGlzdAkgICAqaGVhcFJlbGF0aW9uSWRzID0gTklMOwogCUxpc3QJICAgKmluZGV4 SWRzID0gTklMOwpAQCAtMzk5NywxNyArMzk2MSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWlu CiAJCXNhdmVfbmVzdGxldmVsID0gTmV3R1VDTmVzdExldmVsKCk7CiAJCVJlc3RyaWN0U2VhcmNo UGF0aCgpOwogCi0JCS8qIGRldGVybWluZSBzYWZldHkgb2YgdGhpcyBpbmRleCBmb3Igc2V0X2lu ZGV4c2FmZV9wcm9jZmxhZ3MgKi8KLQkJaWR4LT5zYWZlID0gKFJlbGF0aW9uR2V0SW5kZXhFeHBy ZXNzaW9ucyhpbmRleFJlbCkgPT0gTklMICYmCi0JCQkJCSBSZWxhdGlvbkdldEluZGV4UHJlZGlj YXRlKGluZGV4UmVsKSA9PSBOSUwpOwotCi0jaWZkZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKLQkJ aWYgKGlkeC0+c2FmZSkKLQkJCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleC1jb25jLWluZGV4LXNh ZmUiKTsKLQkJZWxzZQotCQkJSU5KRUNUSU9OX1BPSU5UKCJyZWluZGV4LWNvbmMtaW5kZXgtbm90 LXNhZmUiKTsKLSNlbmRpZgotCiAJCWlkeC0+dGFibGVJZCA9IFJlbGF0aW9uR2V0UmVsaWQoaGVh cFJlbCk7CiAJCWlkeC0+YW1JZCA9IGluZGV4UmVsLT5yZF9yZWwtPnJlbGFtOwogCkBAIC00MDY3 LDcgKzQwMjAsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0 bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQluZXdpZHggPSBwYWxsb2Nf b2JqZWN0KFJlaW5kZXhJbmRleEluZm8pOwogCQluZXdpZHgtPmluZGV4SWQgPSBuZXdJbmRleElk OwogCQluZXdpZHgtPmF1eEluZGV4SWQgPSBhdXhJbmRleElkOwotCQluZXdpZHgtPnNhZmUgPSBp ZHgtPnNhZmU7CiAJCW5ld2lkeC0+dGFibGVJZCA9IGlkeC0+dGFibGVJZDsKIAkJbmV3aWR4LT5h bUlkID0gaWR4LT5hbUlkOwogCkBAIC00MTYwLDExICs0MTEyLDYgQEAgUmVpbmRleFJlbGF0aW9u Q29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNv bnN0IFJlaW4KIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlTdGFydFRyYW5zYWN0aW9u Q29tbWFuZCgpOwogCi0JLyoKLQkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBp biB0aGlzIHRyYW5zYWN0aW9uLCB0aGVyZSdzIG5vIG5lZWQKLQkgKiB0byBzZXQgdGhlIFBST0Nf SU5fU0FGRV9JQyBmbGFnIGhlcmUuCi0JICovCi0KIAkvKgogCSAqIFBoYXNlIDIgb2YgUkVJTkRF WCBDT05DVVJSRU5UTFkKIAkgKgpAQCAtNDE5NSwxMCArNDE0Miw2IEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBj b25zdCBSZWluCiAJCSAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCS8qIFRlbGwg Y29uY3VycmVudCBpbmRleGluZyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwot CQlpZiAobmV3aWR4LT5zYWZlKQotCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCQkv KiBCdWlsZCBhdXhpbGlhcnkgaW5kZXgsIGl0IGlzIGZhc3QgLSB3aXRob3V0IGFueSBhY3R1YWwg aGVhcCBzY2FuLCBqdXN0IGFuIGVtcHR5IGluZGV4LiAqLwogCQlpbmRleF9jb25jdXJyZW50bHlf YnVpbGQobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgtPmF1eEluZGV4SWQpOwogCkBAIC00MjA3LDEx ICs0MTUwLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10 ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAogCVN0YXJ0VHJhbnNhY3Rpb25D b21tYW5kKCk7CiAKLQkvKgotCSAqIEJlY2F1c2Ugd2UgZG9uJ3QgdGFrZSBhIHNuYXBzaG90IGlu IHRoaXMgdHJhbnNhY3Rpb24sIHRoZXJlJ3Mgbm8gbmVlZAotCSAqIHRvIHNldCB0aGUgUFJPQ19J Tl9TQUZFX0lDIGZsYWcgaGVyZS4KLQkgKi8KLQogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFy YW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFX1dBSVRfMik7CiAJLyoKQEAgLTQyMzYsMTAgKzQxNzQsNiBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCQkgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAotCQkvKiBUZWxs IGNvbmN1cnJlbnQgaW5kZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRleCBxdWFsaWZpZXMgKi8K LQkJaWYgKG5ld2lkeC0+c2FmZSkKLQkJCXNldF9pbmRleHNhZmVfcHJvY2ZsYWdzKCk7Ci0KIAkJ LyoKIAkJICogVXBkYXRlIHByb2dyZXNzIGZvciB0aGUgaW5kZXggdG8gYnVpbGQsIHdpdGggdGhl IGNvcnJlY3QgcGFyZW50CiAJCSAqIHRhYmxlIGludm9sdmVkLgpAQCAtNDI1OSwxMSArNDE5Myw2 IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAKIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCi0JLyoKLQkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBvciBYaWQgaW4g dGhpcyB0cmFuc2FjdGlvbiwgdGhlcmUncyBubwotCSAqIG5lZWQgdG8gc2V0IHRoZSBQUk9DX0lO X1NBRkVfSUMgZmxhZyBoZXJlLgotCSAqLwotCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJh bShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0VfV0FJVF8zKTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBTaGFyZUxv Y2ssIHRydWUpOwpAQCAtNDI4NCwxMCArNDIxMyw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWlu CiAJCSAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCi0JCS8qIFRlbGwgY29uY3VycmVu dCBpbmRleGluZyB0byBpZ25vcmUgdXMsIGlmIGluZGV4IHF1YWxpZmllcyAqLwotCQlpZiAobmV3 aWR4LT5zYWZlKQotCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCQkvKgogCQkgKiBV cGRhdGluZyBwZ19pbmRleCBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5z dXJlIHdlCiAJCSAqIGhhdmUgYSB2YWxpZCBzbmFwc2hvdC4KQEAgLTQzMjAsMTAgKzQyNDUsNiBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9p ZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMo KTsKIAotCQkvKiBUZWxsIGNvbmN1cnJlbnQgaW5kZXhpbmcgdG8gaWdub3JlIHVzLCBpZiBpbmRl eCBxdWFsaWZpZXMgKi8KLQkJaWYgKG5ld2lkeC0+c2FmZSkKLQkJCXNldF9pbmRleHNhZmVfcHJv Y2ZsYWdzKCk7Ci0KIAkJLyoKIAkJICogVXBkYXRlIHByb2dyZXNzIGZvciB0aGUgaW5kZXggdG8g YnVpbGQsIHdpdGggdGhlIGNvcnJlY3QgcGFyZW50CiAJCSAqIHRhYmxlIGludm9sdmVkLgpAQCAt NDM1MSw5ICs0MjcyLDYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5k ZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJICogaW50ZXJlc3Rp bmcgdHVwbGVzLiAgQnV0IHNpbmNlIGl0IG1pZ2h0IG5vdCBjb250YWluIHR1cGxlcyBkZWxldGVk CiAJCSAqIGp1c3QgYmVmb3JlIHRoZSBsYXRlc3Qgc25hcCB3YXMgdGFrZW4sIHdlIGhhdmUgdG8g d2FpdCBvdXQgYW55CiAJCSAqIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGhhdmUgb2xkZXIgc25h cHNob3RzLgotCQkgKgotCQkgKiBCZWNhdXNlIHdlIGRvbid0IHRha2UgYSBzbmFwc2hvdCBvciBY aWQgaW4gdGhpcyB0cmFuc2FjdGlvbiwKLQkJICogdGhlcmUncyBubyBuZWVkIHRvIHNldCB0aGUg UFJPQ19JTl9TQUZFX0lDIGZsYWcgaGVyZS4KIAkJICovCiAJCXBnc3RhdF9wcm9ncmVzc191cGRh dGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCQkJIFBST0dSRVNTX0NS RUFURUlEWF9QSEFTRV9XQUlUXzQpOwpAQCAtNDM3NSwxMyArNDI5Myw2IEBAIFJlaW5kZXhSZWxh dGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lk LCBjb25zdCBSZWluCiAJSU5KRUNUSU9OX1BPSU5UKCJyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJl bnRseV9iZWZvcmVfc3dhcCIpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKgot CSAqIEJlY2F1c2UgdGhpcyB0cmFuc2FjdGlvbiBvbmx5IGRvZXMgY2F0YWxvZyBtYW5pcHVsYXRp b25zIGFuZCBkb2Vzbid0IGRvCi0JICogYW55IGluZGV4IG9wZXJhdGlvbnMsIHdlIGNhbiBzZXQg dGhlIFBST0NfSU5fU0FGRV9JQyBmbGFnIGhlcmUKLQkgKiB1bmNvbmRpdGlvbmFsbHkuCi0JICov Ci0Jc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKLQogCWZvcmJvdGgobGMsIGluZGV4SWRzLCBs YzIsIG5ld0luZGV4SWRzKQogCXsKIAkJUmVpbmRleEluZGV4SW5mbyAqb2xkaWR4ID0gbGZpcnN0 KGxjKTsKQEAgLTQ0MzcsMTIgKzQzNDgsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAK LQkvKgotCSAqIFdoaWxlIHdlIGNvdWxkIHNldCBQUk9DX0lOX1NBRkVfSUMgaWYgYWxsIGluZGV4 ZXMgcXVhbGlmaWVkLCB0aGVyZSdzIG5vCi0JICogcmVhbCBuZWVkIGZvciB0aGF0LCBiZWNhdXNl IHdlIG9ubHkgYWNxdWlyZSBhbiBYaWQgYWZ0ZXIgdGhlIHdhaXQgaXMKLQkgKiBkb25lLCBhbmQg dGhhdCBsYXN0cyBmb3IgYSB2ZXJ5IHNob3J0IHBlcmlvZC4KLQkgKi8KLQogCS8qCiAJICogUGhh c2UgNSBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCkBAIC00NTA0LDEyICs0NDA5LDYgQEAg UmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQg cmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyoKLQkgKiBXaGlsZSB3ZSBjb3VsZCBzZXQg UFJPQ19JTl9TQUZFX0lDIGlmIGFsbCBpbmRleGVzIHF1YWxpZmllZCwgdGhlcmUncyBubwotCSAq IHJlYWwgbmVlZCBmb3IgdGhhdCwgYmVjYXVzZSB3ZSBvbmx5IGFjcXVpcmUgYW4gWGlkIGFmdGVy IHRoZSB3YWl0IGlzCi0JICogZG9uZSwgYW5kIHRoYXQgbGFzdHMgZm9yIGEgdmVyeSBzaG9ydCBw ZXJpb2QuCi0JICovCi0KIAkvKgogCSAqIFBoYXNlIDYgb2YgUkVJTkRFWCBDT05DVVJSRU5UTFkK IAkgKgpAQCAtNDc2OSwzNiArNDY2OCwzIEBAIHVwZGF0ZV9yZWxpc3BhcnRpdGlvbihPaWQgcmVs YXRpb25JZCwgYm9vbCBuZXd2YWwpCiAJdGFibGVfY2xvc2UoY2xhc3NSZWwsIFJvd0V4Y2x1c2l2 ZUxvY2spOwogfQogCi0vKgotICogU2V0IHRoZSBQUk9DX0lOX1NBRkVfSUMgZmxhZyBpbiBNeVBy b2MtPnN0YXR1c0ZsYWdzLgotICoKLSAqIFdoZW4gZG9pbmcgY29uY3VycmVudCBpbmRleCBidWls ZHMsIHdlIGNhbiBzZXQgdGhpcyBmbGFnCi0gKiB0byB0ZWxsIG90aGVyIHByb2Nlc3NlcyBjb25j dXJyZW50bHkgcnVubmluZyBDUkVBVEUKLSAqIElOREVYIENPTkNVUlJFTlRMWSBvciBSRUlOREVY IENPTkNVUlJFTlRMWSB0byBpZ25vcmUgdXMgd2hlbgotICogZG9pbmcgdGhlaXIgd2FpdHMgZm9y IGNvbmN1cnJlbnQgc25hcHNob3RzLiAgT24gb25lIGhhbmQgaXQKLSAqIGF2b2lkcyBwb2ludGxl c3NseSB3YWl0aW5nIGZvciBhIHByb2Nlc3MgdGhhdCdzIG5vdCBpbnRlcmVzdGluZwotICogYW55 d2F5OyBidXQgbW9yZSBpbXBvcnRhbnRseSBpdCBhdm9pZHMgZGVhZGxvY2tzIGluIHNvbWUgY2Fz ZXMuCi0gKgotICogVGhpcyBjYW4gYmUgZG9uZSBzYWZlbHkgb25seSBmb3IgaW5kZXhlcyB0aGF0 IGRvbid0IGV4ZWN1dGUgYW55Ci0gKiBleHByZXNzaW9ucyB0aGF0IGNvdWxkIGFjY2VzcyBvdGhl ciB0YWJsZXMsIHNvIGluZGV4IG11c3Qgbm90IGJlCi0gKiBleHByZXNzaW9uYWwgbm9yIHBhcnRp YWwuICBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIG9ubHkgY2FsbGluZwotICogdGhpcyByb3V0 aW5lIHdoZW4gdGhhdCBhc3N1bXB0aW9uIGhvbGRzIHRydWUuCi0gKgotICogKFRoZSBmbGFnIGlz IHJlc2V0IGF1dG9tYXRpY2FsbHkgYXQgdHJhbnNhY3Rpb24gZW5kLCBzbyBpdCBtdXN0IGJlCi0g KiBzZXQgZm9yIGVhY2ggdHJhbnNhY3Rpb24uKQotICovCi1zdGF0aWMgaW5saW5lIHZvaWQKLXNl dF9pbmRleHNhZmVfcHJvY2ZsYWdzKHZvaWQpCi17Ci0JLyoKLQkgKiBUaGlzIHNob3VsZCBvbmx5 IGJlIGNhbGxlZCBiZWZvcmUgaW5zdGFsbGluZyB4aWQgb3IgeG1pbiBpbiBNeVByb2M7Ci0JICog b3RoZXJ3aXNlLCBjb25jdXJyZW50IHByb2Nlc3NlcyBjb3VsZCBzZWUgYW4gWG1pbiB0aGF0IG1v dmVzIGJhY2t3YXJkcy4KLQkgKi8KLQlBc3NlcnQoTXlQcm9jLT54aWQgPT0gSW52YWxpZFRyYW5z YWN0aW9uSWQgJiYKLQkJICAgTXlQcm9jLT54bWluID09IEludmFsaWRUcmFuc2FjdGlvbklkKTsK LQotCUxXTG9ja0FjcXVpcmUoUHJvY0FycmF5TG9jaywgTFdfRVhDTFVTSVZFKTsKLQlNeVByb2Mt PnN0YXR1c0ZsYWdzIHw9IFBST0NfSU5fU0FGRV9JQzsKLQlQcm9jR2xvYmFsLT5zdGF0dXNGbGFn c1tNeVByb2MtPnBneGFjdG9mZl0gPSBNeVByb2MtPnN0YXR1c0ZsYWdzOwotCUxXTG9ja1JlbGVh c2UoUHJvY0FycmF5TG9jayk7Ci19CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3By b2MuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCmluZGV4IDExNGViMWY4Zjc2Li43ZjZh OWNjZjEyNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKKysrIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKQEAgLTU2LDEwICs1Niw2IEBAIHN0cnVjdCBYaWRDYWNo ZQogICovCiAjZGVmaW5lCQlQUk9DX0lTX0FVVE9WQUNVVU0JMHgwMQkvKiBpcyBpdCBhbiBhdXRv dmFjIHdvcmtlcj8gKi8KICNkZWZpbmUJCVBST0NfSU5fVkFDVVVNCQkweDAyCS8qIGN1cnJlbnRs eSBydW5uaW5nIGxhenkgdmFjdXVtICovCi0jZGVmaW5lCQlQUk9DX0lOX1NBRkVfSUMJCTB4MDQJ LyogY3VycmVudGx5IHJ1bm5pbmcgQ1JFQVRFIElOREVYCi0JCQkJCQkJCQkJICogQ09OQ1VSUkVO VExZIG9yIFJFSU5ERVgKLQkJCQkJCQkJCQkgKiBDT05DVVJSRU5UTFkgb24gbm9uLWV4cHJlc3Np b25hbCwKLQkJCQkJCQkJCQkgKiBub24tcGFydGlhbCBpbmRleCAqLwogI2RlZmluZQkJUFJPQ19W QUNVVU1fRk9SX1dSQVBBUk9VTkQJMHgwOAkvKiBzZXQgYnkgYXV0b3ZhYyBvbmx5ICovCiAjZGVm aW5lCQlQUk9DX0lOX0xPR0lDQUxfREVDT0RJTkcJMHgxMAkvKiBjdXJyZW50bHkgZG9pbmcgbG9n aWNhbAogCQkJCQkJCQkJCQkJICogZGVjb2Rpbmcgb3V0c2lkZSB4YWN0ICovCkBAIC02OSwxMyAr NjUsMTMgQEAgc3RydWN0IFhpZENhY2hlCiAKIC8qIGZsYWdzIHJlc2V0IGF0IEVPWGFjdCAqLwog I2RlZmluZQkJUFJPQ19WQUNVVU1fU1RBVEVfTUFTSyBcCi0JKFBST0NfSU5fVkFDVVVNIHwgUFJP Q19JTl9TQUZFX0lDIHwgUFJPQ19WQUNVVU1fRk9SX1dSQVBBUk9VTkQpCisJKFBST0NfSU5fVkFD VVVNIHwgUFJPQ19WQUNVVU1fRk9SX1dSQVBBUk9VTkQpCiAKIC8qCiAgKiBYbWluLXJlbGF0ZWQg ZmxhZ3MuIE1ha2Ugc3VyZSBhbnkgZmxhZ3MgdGhhdCBhZmZlY3QgaG93IHRoZSBwcm9jZXNzJyBY bWluCiAgKiB2YWx1ZSBpcyBpbnRlcnByZXRlZCBieSBWQUNVVU0gYXJlIGluY2x1ZGVkIGhlcmUu CiAgKi8KLSNkZWZpbmUJCVBST0NfWE1JTl9GTEFHUyAoUFJPQ19JTl9WQUNVVU0gfCBQUk9DX0lO X1NBRkVfSUMpCisjZGVmaW5lCQlQUk9DX1hNSU5fRkxBR1MgKFBST0NfSU5fVkFDVVVNKQogCiAv KgogICogV2UgYWxsb3cgYSBsaW1pdGVkIG51bWJlciBvZiAid2VhayIgcmVsYXRpb24gbG9ja3Mg KEFjY2Vzc1NoYXJlTG9jaywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtl ZmlsZQppbmRleCAxOWQyNjQwOGMyYS4uODJhY2YzMDA2YmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKQEAgLTExLDcgKzExLDcgQEAgRVhURU5TSU9OID0g aW5qZWN0aW9uX3BvaW50cwogREFUQSA9IGluamVjdGlvbl9wb2ludHMtLTEuMC5zcWwKIFBHRklM RURFU0MgPSAiaW5qZWN0aW9uX3BvaW50cyAtIGZhY2lsaXR5IGZvciBpbmplY3Rpb24gcG9pbnRz IgogCi1SRUdSRVNTID0gaW5qZWN0aW9uX3BvaW50cyBoYXNoYWdnIHJlaW5kZXhfY29uYyBjaWNf cmVzZXRfc25hcHNob3RzCitSRUdSRVNTID0gaW5qZWN0aW9uX3BvaW50cyBoYXNoYWdnIGNpY19y ZXNldF9zbmFwc2hvdHMKIFJFR1JFU1NfT1BUUyA9IC0tZGxwYXRoPSQodG9wX2J1aWxkZGlyKS9z cmMvdGVzdC9yZWdyZXNzCiAKIElTT0xBVElPTiA9IGJhc2ljIGlucGxhY2Ugc3lzY2FjaGUtdXBk YXRlLXBydW5lZApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRz L2V4cGVjdGVkL3JlaW5kZXhfY29uYy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9w b2ludHMvZXhwZWN0ZWQvcmVpbmRleF9jb25jLm91dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggZGI4ZGU0YmJlODUuLjAwMDAwMDAwMDAwCi0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9leHBlY3RlZC9yZWluZGV4X2NvbmMub3V0CisrKyAvZGV2L251bGwKQEAg LTEsNTEgKzAsMCBAQAotLS0gVGVzdHMgZm9yIFJFSU5ERVggQ09OQ1VSUkVOVExZCi1DUkVBVEUg RVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7Ci0tLSBDaGVjayBzYWZldHkgb2YgaW5kZXhlcyB3 aXRoIHByZWRpY2F0ZXMgYW5kIGV4cHJlc3Npb25zLgotU0VMRUNUIGluamVjdGlvbl9wb2ludHNf c2V0X2xvY2FsKCk7Ci0gaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0 dGFjaCgncmVpbmRleC1jb25jLWluZGV4LXNhZmUnLCAnbm90aWNlJyk7Ci0gaW5qZWN0aW9uX3Bv aW50c19hdHRhY2ggCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gCi0oMSByb3cpCi0KLVNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgncmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZl JywgJ25vdGljZScpOwotIGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQotIAotKDEgcm93KQotCi1DUkVBVEUgU0NIRU1BIHJlaW5kZXhfaW5qOwotQ1JF QVRFIFRBQkxFIHJlaW5kZXhfaW5qLnRibChpIGludCBwcmltYXJ5IGtleSwgdXBkYXRlZF9hdCB0 aW1lc3RhbXApOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfc2ltcGxlIE9OIHJlaW5kZXhfaW5q LnRibChpKTsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX2V4cHIgT04gcmVpbmRleF9pbmoudGJs KEFCUyhpKSk7Ci1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9wcmVkIE9OIHJlaW5kZXhfaW5qLnRi bChpKSBXSEVSRSBtb2QoaSwgMikgPSAwOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfZXhwcl9w cmVkIE9OIHJlaW5kZXhfaW5qLnRibChhYnMoaSkpIFdIRVJFIG1vZChpLCAyKSA9IDA7Ci1SRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRfc2ltcGxlOwotTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHJlaW5kZXgtY29uYy1pbmRleC1z YWZlCi1SRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRfZXhwcjsKLU5P VElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCByZWluZGV4LWNvbmMt aW5kZXgtbm90LXNhZmUKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmlu ZF9wcmVkOwotTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHJl aW5kZXgtY29uYy1pbmRleC1ub3Qtc2FmZQotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVp bmRleF9pbmouaW5kX2V4cHJfcHJlZDsKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGlu amVjdGlvbiBwb2ludCByZWluZGV4LWNvbmMtaW5kZXgtbm90LXNhZmUKLS0tIENsZWFudXAKLVNF TEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgncmVpbmRleC1jb25jLWluZGV4LXNhZmUnKTsK LSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAK LSgxIHJvdykKLQotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdyZWluZGV4LWNvbmMt aW5kZXgtbm90LXNhZmUnKTsKLSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KLSAKLSgxIHJvdykKLQotRFJPUCBUQUJMRSByZWluZGV4X2luai50Ymw7 Ci1EUk9QIFNDSEVNQSByZWluZGV4X2luajsKLURST1AgRVhURU5TSU9OIGluamVjdGlvbl9wb2lu dHM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24u YnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKaW5k ZXggODQ3NmJmZTcyYTcuLmJkZGYyMmRmM2FjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCkBAIC0zNiw3ICszNiw2IEBAIHRlc3RzICs9IHsKICAg ICAnc3FsJzogWwogICAgICAgJ2luamVjdGlvbl9wb2ludHMnLAogICAgICAgJ2hhc2hhZ2cnLAot ICAgICAgJ3JlaW5kZXhfY29uYycsCiAgICAgICAnY2ljX3Jlc2V0X3NuYXBzaG90cycsCiAgICAg XSwKICAgICAncmVncmVzc19hcmdzJzogWyctLWRscGF0aCcsIG1lc29uLmJ1aWxkX3Jvb3QoKSAv ICdzcmMvdGVzdC9yZWdyZXNzJ10sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVj dGlvbl9wb2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDZjZjIxMWU2ZDVkLi4wMDAwMDAwMDAwMAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2lu amVjdGlvbl9wb2ludHMvc3FsL3JlaW5kZXhfY29uYy5zcWwKKysrIC9kZXYvbnVsbApAQCAtMSwy OCArMCwwIEBACi0tLSBUZXN0cyBmb3IgUkVJTkRFWCBDT05DVVJSRU5UTFkKLUNSRUFURSBFWFRF TlNJT04gaW5qZWN0aW9uX3BvaW50czsKLQotLS0gQ2hlY2sgc2FmZXR5IG9mIGluZGV4ZXMgd2l0 aCBwcmVkaWNhdGVzIGFuZCBleHByZXNzaW9ucy4KLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3Nl dF9sb2NhbCgpOwotU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdyZWluZGV4LWNvbmMt aW5kZXgtc2FmZScsICdub3RpY2UnKTsKLVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgn cmVpbmRleC1jb25jLWluZGV4LW5vdC1zYWZlJywgJ25vdGljZScpOwotCi1DUkVBVEUgU0NIRU1B IHJlaW5kZXhfaW5qOwotQ1JFQVRFIFRBQkxFIHJlaW5kZXhfaW5qLnRibChpIGludCBwcmltYXJ5 IGtleSwgdXBkYXRlZF9hdCB0aW1lc3RhbXApOwotCi1DUkVBVEUgVU5JUVVFIElOREVYIGluZF9z aW1wbGUgT04gcmVpbmRleF9pbmoudGJsKGkpOwotQ1JFQVRFIFVOSVFVRSBJTkRFWCBpbmRfZXhw ciBPTiByZWluZGV4X2luai50YmwoQUJTKGkpKTsKLUNSRUFURSBVTklRVUUgSU5ERVggaW5kX3By ZWQgT04gcmVpbmRleF9pbmoudGJsKGkpIFdIRVJFIG1vZChpLCAyKSA9IDA7Ci1DUkVBVEUgVU5J UVVFIElOREVYIGluZF9leHByX3ByZWQgT04gcmVpbmRleF9pbmoudGJsKGFicyhpKSkgV0hFUkUg bW9kKGksIDIpID0gMDsKLQotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmou aW5kX3NpbXBsZTsKLVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIHJlaW5kZXhfaW5qLmluZF9l eHByOwotUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgcmVpbmRleF9pbmouaW5kX3ByZWQ7Ci1S RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSByZWluZGV4X2luai5pbmRfZXhwcl9wcmVkOwotCi0t LSBDbGVhbnVwCi1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXgtY29uYy1p bmRleC1zYWZlJyk7Ci1TRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3JlaW5kZXgtY29u Yy1pbmRleC1ub3Qtc2FmZScpOwotRFJPUCBUQUJMRSByZWluZGV4X2luai50Ymw7Ci1EUk9QIFND SEVNQSByZWluZGV4X2luajsKLQotRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKLS0g CjIuNDMuMAoK --000000000000caf8fd062fc891e1 Content-Type: application/octet-stream; name="v16-0007-tuplestore-add-support-for-storing-Datum-values.patch" Content-Disposition: attachment; filename="v16-0007-tuplestore-add-support-for-storing-Datum-values.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7zd30od5 RnJvbSBlNmNkMjY2YWI0ODBjMTM5Y2RmNjkxMDNlN2U4ZjNiMTgzMjZlOTNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyNSBKYW4gMjAyNSAxMzozMzoyMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE2IDA3 LzEyXSB0dXBsZXN0b3JlOiBhZGQgc3VwcG9ydCBmb3Igc3RvcmluZyBEYXR1bSB2YWx1ZXMKCkFk ZCBhYmlsaXR5IHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBpbmRpdmlkdWFsIERhdHVtIHZhbHVlcyBp biB0dXBsZXN0b3JlLCBvcHRpbWl6aW5nIHN0b3JhZ2UgYmFzZWQgb24gdHlwZToKCi0gRml4ZWQt bGVuZ3RoOiBzdG9yZXMgcmF3IGJ5dGVzIHdpdGhvdXQgbGVuZ3RoIHByZWZpeAotIFZhcmlhYmxl LWxlbmd0aDogaW5jbHVkZXMgbGVuZ3RoIHByZWZpeC9zdWZmaXgKLSBCeS12YWx1ZSB0eXBlcyBo YW5kbGVkIGlubGluZQoKVGhpcyBleHRlbmRzIHR1cGxlc3RvcmUgYmV5b25kIGp1c3QgaGFuZGxp bmcgdHVwbGVzLCBwbGFubmVkIHRvIGJlIHVzZWQgaW4gbmV4dCBwYXRjaC4KLS0tCiBzcmMvYmFj a2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYyB8IDI3MCArKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy90dXBsZXN0b3JlLmggICAgICB8ICAzMyArKy0tCiAy IGZpbGVzIGNoYW5nZWQsIDI0NCBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc3RvcmUuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL3NvcnQvdHVwbGVzdG9yZS5jCmluZGV4IGQ2MWI2MDEwNTNjLi4wMzQzNGYzZWE0OSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMKQEAgLTEsMTYgKzEsMTkgQEAKIC8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICoKICAqIHR1cGxlc3RvcmUuYwotICoJICBHZW5lcmFsaXplZCByb3V0 aW5lcyBmb3IgdGVtcG9yYXJ5IHR1cGxlIHN0b3JhZ2UuCisgKgkgIEdlbmVyYWxpemVkIHJvdXRp bmVzIGZvciB0ZW1wb3Jhcnkgc3RvcmFnZSBvZiB0dXBsZXMgYW5kIERhdHVtcy4KKyAqCisgKiBU aGlzIG1vZHVsZSBoYW5kbGVzIHRlbXBvcmFyeSBzdG9yYWdlIG9mIGVpdGhlciB0dXBsZXMgb3Ig c2luZ2xlCisgKiBEYXR1bSB2YWx1ZXMgZm9yIHB1cnBvc2VzIHN1Y2ggYXMgTWF0ZXJpYWxpemUg bm9kZXMsIGhhc2hqb2luIGJhdGNoCisgKiBmaWxlcywgZXRjLiBJdCBpcyBlc3NlbnRpYWxseSBh IGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdHVwbGVzb3J0LmM7CisgKiBpdCBkb2VzIG5vIHNvcnRp bmcgb2YgdHVwbGVzIGJ1dCBjYW4gb25seSBzdG9yZSBhbmQgcmVndXJnaXRhdGUgYSBzZXF1ZW5j ZQorICogb2YgdHVwbGVzLiAgSG93ZXZlciwgYmVjYXVzZSBubyBzb3J0IGlzIHJlcXVpcmVkLCBp dCBpcyBhbGxvd2VkIHRvIHN0YXJ0CisgKiByZWFkaW5nIHRoZSBzZXF1ZW5jZSBiZWZvcmUgaXQg aGFzIGFsbCBiZWVuIHdyaXR0ZW4uCisgKgorICogVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVs IGZvciBjdXJzb3JzLCBiZWNhdXNlIGl0IGFsbG93cyByYW5kb20gYWNjZXNzCisgKiB3aXRoaW4g dGhlIGFscmVhZHktc2Nhbm5lZCBwb3J0aW9uIG9mIGEgcXVlcnkgd2l0aG91dCBoYXZpbmcgdG8g cHJvY2VzcworICogdGhlIHVuZGVybHlpbmcgc2NhbiB0byBjb21wbGV0aW9uLgogICoKLSAqIFRo aXMgbW9kdWxlIGhhbmRsZXMgdGVtcG9yYXJ5IHN0b3JhZ2Ugb2YgdHVwbGVzIGZvciBwdXJwb3Nl cyBzdWNoCi0gKiBhcyBNYXRlcmlhbGl6ZSBub2RlcywgaGFzaGpvaW4gYmF0Y2ggZmlsZXMsIGV0 Yy4gIEl0IGlzIGVzc2VudGlhbGx5Ci0gKiBhIGR1bWJlZC1kb3duIHZlcnNpb24gb2YgdHVwbGVz b3J0LmM7IGl0IGRvZXMgbm8gc29ydGluZyBvZiB0dXBsZXMKLSAqIGJ1dCBjYW4gb25seSBzdG9y ZSBhbmQgcmVndXJnaXRhdGUgYSBzZXF1ZW5jZSBvZiB0dXBsZXMuICBIb3dldmVyLAotICogYmVj YXVzZSBubyBzb3J0IGlzIHJlcXVpcmVkLCBpdCBpcyBhbGxvd2VkIHRvIHN0YXJ0IHJlYWRpbmcg dGhlIHNlcXVlbmNlCi0gKiBiZWZvcmUgaXQgaGFzIGFsbCBiZWVuIHdyaXR0ZW4uICBUaGlzIGlz IHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGN1cnNvcnMsCi0gKiBiZWNhdXNlIGl0IGFsbG93cyBy YW5kb20gYWNjZXNzIHdpdGhpbiB0aGUgYWxyZWFkeS1zY2FubmVkIHBvcnRpb24gb2YKLSAqIGEg cXVlcnkgd2l0aG91dCBoYXZpbmcgdG8gcHJvY2VzcyB0aGUgdW5kZXJseWluZyBzY2FuIHRvIGNv bXBsZXRpb24uCiAgKiBBbHNvLCBpdCBpcyBwb3NzaWJsZSB0byBzdXBwb3J0IG11bHRpcGxlIGlu ZGVwZW5kZW50IHJlYWQgcG9pbnRlcnMuCiAgKgogICogQSB0ZW1wb3JhcnkgZmlsZSBpcyB1c2Vk IHRvIGhhbmRsZSB0aGUgZGF0YSBpZiBpdCBleGNlZWRzIHRoZQpAQCAtNjEsNiArNjQsOCBAQAog I2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9idWZmaWxlLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKKyNp bmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog I2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCiAKQEAgLTExNSwxNiArMTIwLDE1IEBAIHN0cnVj dCBUdXBsZXN0b3Jlc3RhdGUKIAlCdWZGaWxlICAgICpteWZpbGU7CQkJLyogdW5kZXJseWluZyBm aWxlLCBvciBOVUxMIGlmIG5vbmUgKi8KIAlNZW1vcnlDb250ZXh0IGNvbnRleHQ7CQkvKiBtZW1v cnkgY29udGV4dCBmb3IgaG9sZGluZyB0dXBsZXMgKi8KIAlSZXNvdXJjZU93bmVyIHJlc293bmVy OwkJLyogcmVzb3duZXIgZm9yIGhvbGRpbmcgdGVtcCBmaWxlcyAqLworCU9pZAkJCWRhdHVtVHlw ZTsJCS8qIEludmFsaWRPaWQgb3Igb2lkIG9mIERhdHVtJ3MgdG8gYmUgc3RvcmVkICovCisJaW50 MTYJCWRhdHVtVHlwZUxlbjsJLyogdHlwZWxlbiBvZiB0aGF0IERhdHVtICovCisJYm9vbAkJZGF0 dW1UeXBlQnlWYWw7IC8qIGJ5LXZhbHVlIG9mIHRoYXQgYXR1bSAqLwogCiAJLyoKIAkgKiBUaGVz ZSBmdW5jdGlvbiBwb2ludGVycyBkZWNvdXBsZSB0aGUgcm91dGluZXMgdGhhdCBtdXN0IGtub3cg d2hhdCBraW5kCiAJICogb2YgdHVwbGUgd2UgYXJlIGhhbmRsaW5nIGZyb20gdGhlIHJvdXRpbmVz IHRoYXQgZG9uJ3QgbmVlZCB0byBrbm93IGl0LgogCSAqIFRoZXkgYXJlIHNldCB1cCBieSB0aGUg dHVwbGVzdG9yZV9iZWdpbl94eHggcm91dGluZXMuCiAJICoKLQkgKiAoQWx0aG91Z2ggdHVwbGVz dG9yZS5jIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGhlYXAgdHVwbGVzLCBJJ3ZlIGNvcGllZAot CSAqIHRoaXMgcGFydCBvZiB0dXBsZXNvcnQuYyBzbyB0aGF0IGV4dGVuc2lvbiB0byBvdGhlciBr aW5kcyBvZiBvYmplY3RzCi0JICogd2lsbCBiZSBlYXN5IGlmIGl0J3MgZXZlciBuZWVkZWQuKQot CSAqCiAJICogRnVuY3Rpb24gdG8gY29weSBhIHN1cHBsaWVkIGlucHV0IHR1cGxlIGludG8gcGFs bG9jJ2Qgc3BhY2UuIChOQjogd2UKIAkgKiBhc3N1bWUgdGhhdCBhIHNpbmdsZSBwZnJlZSgpIGlz IGVub3VnaCB0byByZWxlYXNlIHRoZSB0dXBsZSBsYXRlciwgc28KIAkgKiB0aGUgcmVwcmVzZW50 YXRpb24gbXVzdCBiZSAiZmxhdCIgaW4gb25lIHBhbGxvYyBjaHVuay4pIHN0YXRlLT5hdmFpbE1l bQpAQCAtMTQzLDEyICsxNDcsMTggQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQogCiAJLyoKIAkg KiBGdW5jdGlvbiB0byByZWFkIGEgc3RvcmVkIHR1cGxlIGZyb20gdGFwZSBiYWNrIGludG8gbWVt b3J5LiAnbGVuJyBpcwotCSAqIHRoZSBhbHJlYWR5LXJlYWQgbGVuZ3RoIG9mIHRoZSBzdG9yZWQg dHVwbGUuICBDcmVhdGUgYW5kIHJldHVybiBhCi0JICogcGFsbG9jJ2QgY29weSwgYW5kIGRlY3Jl YXNlIHN0YXRlLT5hdmFpbE1lbSBieSB0aGUgYW1vdW50IG9mIG1lbW9yeQotCSAqIHNwYWNlIGNv bnN1bWVkLgorCSAqIHRoZSBhbHJlYWR5LWtub3duIChyZWFkIG9mIGNvbnN0YW50KSBsZW5ndGgg b2YgdGhlIHN0b3JlZCB0dXBsZS4KKwkgKiBDcmVhdGUgYW5kIHJldHVybiBhIHBhbGxvYydkIGNv cHksIGFuZCBkZWNyZWFzZSBzdGF0ZS0+YXZhaWxNZW0gYnkgdGhlCisJICogYW1vdW50IG9mIG1l bW9yeSBzcGFjZSBjb25zdW1lZC4KIAkgKi8KIAl2b2lkCSAgICooKnJlYWR0dXApIChUdXBsZXN0 b3Jlc3RhdGUgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGVuKTsKIAorCS8qCisJICogRnVuY3Rpb24g dG8gZ2V0IGxlbmdoIG9mIHR1cGxlIGZyb20gdGFwZS4gVXNlZCB0byBwcm92aWRlICdsZW4nIGFy Z3VtZW50CisJICogZm9yIHJlYWR0dXAgKHNlZSBhYm92ZSkuCisJICovCisJdW5zaWduZWQgaW50 KCpsZW50dXApKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZW9mT0spOworCiAJLyoKIAkg KiBUaGlzIGFycmF5IGhvbGRzIHBvaW50ZXJzIHRvIHR1cGxlcyBpbiBtZW1vcnkgaWYgd2UgYXJl IGluIHN0YXRlIElOTUVNLgogCSAqIEluIHN0YXRlcyBXUklURUZJTEUgYW5kIFJFQURGSUxFIGl0 J3Mgbm90IHVzZWQuCkBAIC0xODUsNiArMTk1LDcgQEAgc3RydWN0IFR1cGxlc3RvcmVzdGF0ZQog I2RlZmluZSBDT1BZVFVQKHN0YXRlLHR1cCkJKCgqKHN0YXRlKS0+Y29weXR1cCkgKHN0YXRlLCB0 dXApKQogI2RlZmluZSBXUklURVRVUChzdGF0ZSx0dXApICgoKihzdGF0ZSktPndyaXRldHVwKSAo c3RhdGUsIHR1cCkpCiAjZGVmaW5lIFJFQURUVVAoc3RhdGUsbGVuKQkoKCooc3RhdGUpLT5yZWFk dHVwKSAoc3RhdGUsIGxlbikpCisjZGVmaW5lIExFTlRVUChzdGF0ZSxlb2ZPSykJKCgqKHN0YXRl KS0+bGVudHVwKSAoc3RhdGUsIGVvZk9LKSkKICNkZWZpbmUgTEFDS01FTShzdGF0ZSkJCSgoc3Rh dGUpLT5hdmFpbE1lbSA8IDApCiAjZGVmaW5lIFVTRU1FTShzdGF0ZSxhbXQpCSgoc3RhdGUpLT5h dmFpbE1lbSAtPSAoYW10KSkKICNkZWZpbmUgRlJFRU1FTShzdGF0ZSxhbXQpCSgoc3RhdGUpLT5h dmFpbE1lbSArPSAoYW10KSkKQEAgLTE5Myw5ICsyMDQsOSBAQCBzdHJ1Y3QgVHVwbGVzdG9yZXN0 YXRlCiAgKgogICogTk9URVMgYWJvdXQgb24tdGFwZSByZXByZXNlbnRhdGlvbiBvZiB0dXBsZXM6 CiAgKgotICogV2UgcmVxdWlyZSB0aGUgZmlyc3QgInVuc2lnbmVkIGludCIgb2YgYSBzdG9yZWQg dHVwbGUgdG8gYmUgdGhlIHRvdGFsIHNpemUKLSAqIG9uLXRhcGUgb2YgdGhlIHR1cGxlLCBpbmNs dWRpbmcgaXRzZWxmIChzbyBpdCBpcyBuZXZlciB6ZXJvKS4KLSAqIFRoZSByZW1haW5kZXIgb2Yg dGhlIHN0b3JlZCB0dXBsZQorICogSW4gY2FzZSBvZiB0dXBsZXMgd2UgdXNlIGZpcnN0ICJ1bnNp Z25lZCBpbnQiIG9mIGEgc3RvcmVkIHR1cGxlCisgKiB0byBiZSB0aGUgdG90YWwgc2l6ZSBvbi10 YXBlIG9mIHRoZSB0dXBsZSwgaW5jbHVkaW5nIGl0c2VsZgorICogKHNvIGl0IGlzIG5ldmVyIHpl cm8pLiBUaGUgcmVtYWluZGVyIG9mIHRoZSBzdG9yZWQgdHVwbGUKICAqIG1heSBvciBtYXkgbm90 IG1hdGNoIHRoZSBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHR1cGxlIC0tLQogICog YW55IGNvbnZlcnNpb24gbmVlZGVkIGlzIHRoZSBqb2Igb2YgdGhlIHdyaXRldHVwIGFuZCByZWFk dHVwIHJvdXRpbmVzLgogICoKQEAgLTIwNiwxMCArMjE3LDEzIEBAIHN0cnVjdCBUdXBsZXN0b3Jl c3RhdGUKICAqIHN0YXRlLT5iYWNrd2FyZCBpcyBub3Qgc2V0LCB0aGUgd3JpdGUvcmVhZCByb3V0 aW5lcyBtYXkgb21pdCB0aGUgZXh0cmEKICAqIGxlbmd0aCB3b3JkLgogICoKKyAqIEluIGNhc2Ug b2YgRGF0dW0gd2l0aCBjb25zdGFudCBsZW5naHQgYm90aCAidW5zaWduZWQgaW50IiBhcmUgb21t aXR0ZWQuCisgKgogICogd3JpdGV0dXAgaXMgZXhwZWN0ZWQgdG8gd3JpdGUgYm90aCBsZW5ndGgg d29yZHMgYXMgd2VsbCBhcyB0aGUgdHVwbGUKICAqIGRhdGEuICBXaGVuIHJlYWR0dXAgaXMgY2Fs bGVkLCB0aGUgdGFwZSBpcyBwb3NpdGlvbmVkIGp1c3QgYWZ0ZXIgdGhlCi0gKiBmcm9udCBsZW5n dGggd29yZDsgcmVhZHR1cCBtdXN0IHJlYWQgdGhlIHR1cGxlIGRhdGEgYW5kIGFkdmFuY2UgcGFz dAotICogdGhlIGJhY2sgbGVuZ3RoIHdvcmQgKGlmIHByZXNlbnQpLgorICogZnJvbnQgbGVuZ3Ro IHdvcmQgKGlmIGl0IG5vdCBvbW1pdHRlZCBsaWtlIGluIGNhc2Ugb2YgY29udGFudC1zaXplIERh dHVtKTsKKyAqIHJlYWR0dXAgbXVzdCByZWFkIHRoZSB0dXBsZSBkYXRhIGFuZCBhZHZhbmNlIHBh c3QgdGhlIGJhY2sgbGVuZ3RoIHdvcmQKKyAqIChpZiBwcmVzZW50KS4KICAqCiAgKiBUaGUgd3Jp dGUvcmVhZCByb3V0aW5lcyBjYW4gbWFrZSB1c2Ugb2YgdGhlIHR1cGxlIGRlc2NyaXB0aW9uIGRh dGEKICAqIHN0b3JlZCBpbiB0aGUgVHVwbGVzdG9yZXN0YXRlIHJlY29yZCwgaWYgbmVlZGVkLiBU aGV5IGFyZSBhbHNvIGV4cGVjdGVkCkBAIC0yNDEsMTEgKzI1NSwxNiBAQCBzdGF0aWMgVHVwbGVz dG9yZXN0YXRlICp0dXBsZXN0b3JlX2JlZ2luX2NvbW1vbihpbnQgZWZsYWdzLAogc3RhdGljIHZv aWQgdHVwbGVzdG9yZV9wdXR0dXBsZV9jb21tb24oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9p ZCAqdHVwbGUpOwogc3RhdGljIHZvaWQgZHVtcHR1cGxlcyhUdXBsZXN0b3Jlc3RhdGUgKnN0YXRl KTsKIHN0YXRpYyB2b2lkIHR1cGxlc3RvcmVfdXBkYXRlbWF4KFR1cGxlc3RvcmVzdGF0ZSAqc3Rh dGUpOwotc3RhdGljIHVuc2lnbmVkIGludCBnZXRsZW4oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwg Ym9vbCBlb2ZPSyk7CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbGVudHVwX2hlYXAoVHVwbGVzdG9y ZXN0YXRlICpzdGF0ZSwgYm9vbCBlb2ZPSyk7CiBzdGF0aWMgdm9pZCAqY29weXR1cF9oZWFwKFR1 cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQgKnR1cCk7CiBzdGF0aWMgdm9pZCB3cml0ZXR1cF9o ZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHZvaWQgKnR1cCk7CiBzdGF0aWMgdm9pZCAqcmVh ZHR1cF9oZWFwKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGludCBsZW4pOwogCitz dGF0aWMgdW5zaWduZWQgaW50IGxlbnR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBi b29sIGVvZk9LKTsKK3N0YXRpYyB2b2lkICpjb3B5dHVwX2RhdHVtKFR1cGxlc3RvcmVzdGF0ZSAq c3RhdGUsIHZvaWQgKmRhdHVtKTsKK3N0YXRpYyB2b2lkIHdyaXRldHVwX2RhdHVtKFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUsIHZvaWQgKmRhdHVtKTsKK3N0YXRpYyB2b2lkICpyZWFkdHVwX2RhdHVt KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIHVuc2lnbmVkIGludCBsZW4pOwogCiAvKgogICoJCXR1 cGxlc3RvcmVfYmVnaW5feHh4CkBAIC0yNjgsNiArMjg3LDEyIEBAIHR1cGxlc3RvcmVfYmVnaW5f Y29tbW9uKGludCBlZmxhZ3MsIGJvb2wgaW50ZXJYYWN0LCBpbnQgbWF4S0J5dGVzKQogCXN0YXRl LT5hbGxvd2VkTWVtID0gbWF4S0J5dGVzICogKGludDY0KSAxMDI0OwogCXN0YXRlLT5hdmFpbE1l bSA9IHN0YXRlLT5hbGxvd2VkTWVtOwogCXN0YXRlLT5teWZpbGUgPSBOVUxMOworCS8qCisJICog U2V0IERhdHVtIHJlbGF0ZWQgZGF0YSB0byBpbnZhbGlkIGJ5IGRlZmF1bHQuCisJICovCisJc3Rh dGUtPmRhdHVtVHlwZSA9IEludmFsaWRPaWQ7CisJc3RhdGUtPmRhdHVtVHlwZUxlbiA9ICAwOwor CXN0YXRlLT5kYXR1bVR5cGVCeVZhbCA9IGZhbHNlOwogCiAJLyoKIAkgKiBUaGUgcGFsbG9jL3Bm cmVlIHBhdHRlcm4gZm9yIHR1cGxlIG1lbW9yeSBpcyBpbiBhIEZJRk8gcGF0dGVybi4gIEEKQEAg LTM0NSw2ICszNzAsMzYgQEAgdHVwbGVzdG9yZV9iZWdpbl9oZWFwKGJvb2wgcmFuZG9tQWNjZXNz LCBib29sIGludGVyWGFjdCwgaW50IG1heEtCeXRlcykKIAlzdGF0ZS0+Y29weXR1cCA9IGNvcHl0 dXBfaGVhcDsKIAlzdGF0ZS0+d3JpdGV0dXAgPSB3cml0ZXR1cF9oZWFwOwogCXN0YXRlLT5yZWFk dHVwID0gcmVhZHR1cF9oZWFwOworCXN0YXRlLT5sZW50dXAgPSBsZW50dXBfaGVhcDsKKworCXJl dHVybiBzdGF0ZTsKK30KKworLyoKKyAqIFRoZSBzYW1lIGFzIHR1cGxlc3RvcmVfYmVnaW5faGVh cCBidXQgY3JlYXRlIHN0b3JlIGZvciBEYXR1bSB2YWx1ZXMuCisgKi8KK1R1cGxlc3RvcmVzdGF0 ZSAqCit0dXBsZXN0b3JlX2JlZ2luX2RhdHVtKE9pZCBkYXR1bVR5cGUsIGJvb2wgcmFuZG9tQWNj ZXNzLCBib29sIGludGVyWGFjdCwgaW50IG1heEtCeXRlcykKK3sKKwlUdXBsZXN0b3Jlc3RhdGUg KnN0YXRlOworCWludAkJCWVmbGFnczsKKworCS8qCisJICogVGhpcyBpbnRlcnByZXRhdGlvbiBv ZiB0aGUgbWVhbmluZyBvZiByYW5kb21BY2Nlc3MgaXMgY29tcGF0aWJsZSB3aXRoCisJICogdGhl IHByZS04LjMgYmVoYXZpb3Igb2YgdHVwbGVzdG9yZXMuCisJICovCisJZWZsYWdzID0gcmFuZG9t QWNjZXNzID8KKwkJKEVYRUNfRkxBR19CQUNLV0FSRCB8IEVYRUNfRkxBR19SRVdJTkQpIDoKKwkJ KEVYRUNfRkxBR19SRVdJTkQpOworCisJc3RhdGUgPSB0dXBsZXN0b3JlX2JlZ2luX2NvbW1vbihl ZmxhZ3MsIGludGVyWGFjdCwgbWF4S0J5dGVzKTsKKwlzdGF0ZS0+ZGF0dW1UeXBlID0gZGF0dW1U eXBlOworCWdldF90eXBsZW5ieXZhbChzdGF0ZS0+ZGF0dW1UeXBlLCAmc3RhdGUtPmRhdHVtVHlw ZUxlbiwgJnN0YXRlLT5kYXR1bVR5cGVCeVZhbCk7CisKKwlzdGF0ZS0+Y29weXR1cCA9IGNvcHl0 dXBfZGF0dW07CisJc3RhdGUtPndyaXRldHVwID0gd3JpdGV0dXBfZGF0dW07CisJc3RhdGUtPnJl YWR0dXAgPSByZWFkdHVwX2RhdHVtOworCXN0YXRlLT5sZW50dXAgPSBsZW50dXBfZGF0dW07CiAK IAlyZXR1cm4gc3RhdGU7CiB9CkBAIC03NzYsNiArODMxLDI1IEBAIHR1cGxlc3RvcmVfcHV0dHVw bGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgSGVhcFR1cGxlIHR1cGxlKQogCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjeHQpOwogfQogCisvKgorICogTGlrZSB0dXBsZXN0b3JlX3B1dHR1cGxl c2xvdCBidXQgZm9yIHNpbmdsZSBEYXR1bS4KKyAqLwordm9pZAordHVwbGVzdG9yZV9wdXRkYXR1 bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBEYXR1bSBkYXR1bSkKK3sKKwlNZW1vcnlDb250ZXh0 IG9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhzdGF0ZS0+Y29udGV4dCk7CisKKwkvKgor CSAqIENvcHkgdGhlIERhdHVtLiAgKE11c3QgZG8gdGhpcyBldmVuIGluIFdSSVRFRklMRSBjYXNl LiAgTm90ZSB0aGF0CisJICogQ09QWVRVUCBpbmNsdWRlcyBVU0VNRU0sIHNvIHdlIG5lZWRuJ3Qg ZG8gdGhhdCBoZXJlLikKKwkgKi8KKwlkYXR1bSA9IFBvaW50ZXJHZXREYXR1bShDT1BZVFVQKHN0 YXRlLCBEYXR1bUdldFBvaW50ZXIoZGF0dW0pKSk7CisKKwl0dXBsZXN0b3JlX3B1dHR1cGxlX2Nv bW1vbihzdGF0ZSwgRGF0dW1HZXRQb2ludGVyKGRhdHVtKSk7CisKKwlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3h0KTsKK30KKwogLyoKICAqIFNpbWlsYXIgdG8gdHVwbGVzdG9yZV9wdXR0dXBs ZSgpLCBidXQgd29yayBmcm9tIHZhbHVlcyArIG51bGxzIGFycmF5cy4KICAqIFRoaXMgYXZvaWRz IGFuIGV4dHJhIHR1cGxlLWNvbnN0cnVjdGlvbiBvcGVyYXRpb24uCkBAIC0xMDMwLDcgKzExMDQs NyBAQCB0dXBsZXN0b3JlX2dldHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9y d2FyZCwKIAkJCSpzaG91bGRfZnJlZSA9IHRydWU7CiAJCQlpZiAoZm9yd2FyZCkKIAkJCXsKLQkJ CQlpZiAoKHR1cGxlbiA9IGdldGxlbihzdGF0ZSwgdHJ1ZSkpICE9IDApCisJCQkJaWYgKCh0dXBs ZW4gPSBMRU5UVVAoc3RhdGUsIHRydWUpKSAhPSAwKQogCQkJCXsKIAkJCQkJdHVwID0gUkVBRFRV UChzdGF0ZSwgdHVwbGVuKTsKIAkJCQkJcmV0dXJuIHR1cDsKQEAgLTEwNTksNyArMTEzMyw3IEBA IHR1cGxlc3RvcmVfZ2V0dHVwbGUoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJk LAogCQkJCUFzc2VydCghc3RhdGUtPnRydW5jYXRlZCk7CiAJCQkJcmV0dXJuIE5VTEw7CiAJCQl9 Ci0JCQl0dXBsZW4gPSBnZXRsZW4oc3RhdGUsIGZhbHNlKTsKKwkJCXR1cGxlbiA9IExFTlRVUChz dGF0ZSwgZmFsc2UpOwogCiAJCQlpZiAocmVhZHB0ci0+ZW9mX3JlYWNoZWQpCiAJCQl7CkBAIC0x MDkwLDcgKzExNjQsNyBAQCB0dXBsZXN0b3JlX2dldHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3Rh dGUsIGJvb2wgZm9yd2FyZCwKIAkJCQkJQXNzZXJ0KCFzdGF0ZS0+dHJ1bmNhdGVkKTsKIAkJCQkJ cmV0dXJuIE5VTEw7CiAJCQkJfQotCQkJCXR1cGxlbiA9IGdldGxlbihzdGF0ZSwgZmFsc2UpOwor CQkJCXR1cGxlbiA9IExFTlRVUChzdGF0ZSwgZmFsc2UpOwogCQkJfQogCiAJCQkvKgpAQCAtMTE1 Miw2ICsxMjI2LDI1IEBAIHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAq c3RhdGUsIGJvb2wgZm9yd2FyZCwKIAl9CiB9CiAKK2V4dGVybiBib29sIHR1cGxlc3RvcmVfZ2V0 ZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBmb3J3YXJkLAorCQkJCQkJCQlib29s ICpzaG91bGRfZnJlZSwgRGF0dW0gKnJlc3VsdCkKK3sKKwlEYXR1bSBkYXR1bTsKKwkqc2hvdWxk X2ZyZWUgPSBmYWxzZTsKKworCWRhdHVtID0gKERhdHVtKSB0dXBsZXN0b3JlX2dldHR1cGxlKHN0 YXRlLCBmb3J3YXJkLCBzaG91bGRfZnJlZSk7CisJaWYgKGRhdHVtKQorCXsKKwkJKnJlc3VsdCA9 ZGF0dW07CisJCXJldHVybiB0cnVlOworCX0KKwllbHNlCisJeworCQkqcmVzdWx0ID0gUG9pbnRl ckdldERhdHVtKE5VTEwpOworCQlyZXR1cm4gZmFsc2U7CisJfQorfQorCiAvKgogICogdHVwbGVz dG9yZV9hZHZhbmNlIC0gZXhwb3J0ZWQgZnVuY3Rpb24gdG8gYWRqdXN0IHBvc2l0aW9uIHdpdGhv dXQgZmV0Y2hpbmcKICAqCkBAIC0xNTU2LDI1ICsxNjQ5LDYgQEAgdHVwbGVzdG9yZV9pbl9tZW1v cnkoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSkKIAlyZXR1cm4gKHN0YXRlLT5zdGF0dXMgPT0gVFNT X0lOTUVNKTsKIH0KIAotCi0vKgotICogVGFwZSBpbnRlcmZhY2Ugcm91dGluZXMKLSAqLwotCi1z dGF0aWMgdW5zaWduZWQgaW50Ci1nZXRsZW4oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9vbCBl b2ZPSykKLXsKLQl1bnNpZ25lZCBpbnQgbGVuOwotCXNpemVfdAkJbmJ5dGVzOwotCi0JbmJ5dGVz ID0gQnVmRmlsZVJlYWRNYXliZUVPRihzdGF0ZS0+bXlmaWxlLCAmbGVuLCBzaXplb2YobGVuKSwg ZW9mT0spOwotCWlmIChuYnl0ZXMgPT0gMCkKLQkJcmV0dXJuIDA7Ci0JZWxzZQotCQlyZXR1cm4g bGVuOwotfQotCi0KIC8qCiAgKiBSb3V0aW5lcyBzcGVjaWFsaXplZCBmb3IgSGVhcFR1cGxlIGNh c2UKICAqCkBAIC0xNTg1LDYgKzE2NTksMTkgQEAgZ2V0bGVuKFR1cGxlc3RvcmVzdGF0ZSAqc3Rh dGUsIGJvb2wgZW9mT0spCiAgKiB0byB3cml0ZSB0aGF0IHNlcGFyYXRlbHkuCiAgKi8KIAorc3Rh dGljIHVuc2lnbmVkIGludAorbGVudHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgYm9v bCBlb2ZPSykKK3sKKwl1bnNpZ25lZCBpbnQgbGVuOworCXNpemVfdAkJbmJ5dGVzOworCisJbmJ5 dGVzID0gQnVmRmlsZVJlYWRNYXliZUVPRihzdGF0ZS0+bXlmaWxlLCAmbGVuLCBzaXplb2YobGVu KSwgZW9mT0spOworCWlmIChuYnl0ZXMgPT0gMCkKKwkJcmV0dXJuIDA7CisJZWxzZQorCQlyZXR1 cm4gbGVuOworfQorCiBzdGF0aWMgdm9pZCAqCiBjb3B5dHVwX2hlYXAoVHVwbGVzdG9yZXN0YXRl ICpzdGF0ZSwgdm9pZCAqdHVwKQogewpAQCAtMTYzMSwzICsxNzE4LDk4IEBAIHJlYWR0dXBfaGVh cChUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGVuKQogCQlCdWZGaWxlUmVh ZEV4YWN0KHN0YXRlLT5teWZpbGUsICZ0dXBsZW4sIHNpemVvZih0dXBsZW4pKTsKIAlyZXR1cm4g dHVwbGU7CiB9CisKKy8qCisgKiBSb3V0aW5lcyBzcGVjaWFsaXplZCBmb3IgRGF0dW0gY2FzZS4K KyAqCisgKiBIYW5kbGVzIGJvdGggZml4ZWQgYW5kIHZhcmlhYmxlLWxlbmd0aCBEYXR1bXMgZWZm aWNpZW50bHk6CisgKiAtIEZpeGVkLWxlbmd0aDogc3RvcmVzIHJhdyBieXRlcyB3aXRob3V0IGxl bmd0aCBwcmVmaXgKKyAqIC0gVmFyaWFibGUtbGVuZ3RoOiBpbmNsdWRlcyBsZW5ndGggcHJlZml4 IChhbmQgc3VmZml4IGlmIGJhY2t3YXJkIHNjYW4pCisgKiAtIEJ5LXZhbHVlIHR5cGVzIGhhbmRs ZWQgaW5saW5lIHdpdGhvdXQgZXh0cmEgY29weWluZworICovCisKK3N0YXRpYyB1bnNpZ25lZCBp bnQKK2xlbnR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGVvZk9LKQorewor CXVuc2lnbmVkIGludCBsZW47CisJc2l6ZV90CQluYnl0ZXM7CisKKwlBc3NlcnQoc3RhdGUtPmRh dHVtVHlwZSAhPSBJbnZhbGlkT2lkKTsKKworCWlmIChzdGF0ZS0+ZGF0dW1UeXBlTGVuID4gMCkK KwkJcmV0dXJuIHN0YXRlLT5kYXR1bVR5cGVMZW47CisKKwluYnl0ZXMgPSBCdWZGaWxlUmVhZE1h eWJlRU9GKHN0YXRlLT5teWZpbGUsICZsZW4sIHNpemVvZihsZW4pLCBlb2ZPSyk7CisJaWYgKG5i eXRlcyA9PSAwKQorCQlyZXR1cm4gMDsKKwllbHNlCisJCXJldHVybiBsZW47Cit9CisKK3N0YXRp YyB2b2lkICoKK2NvcHl0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdm9pZCogZGF0 dW0pCit7CisJQXNzZXJ0KHN0YXRlLT5kYXR1bVR5cGUgIT0gSW52YWxpZE9pZCk7CisJaWYgKHN0 YXRlLT5kYXR1bVR5cGVCeVZhbCkKKwkJcmV0dXJuIERhdHVtR2V0UG9pbnRlcihQb2ludGVyR2V0 RGF0dW0oZGF0dW0pKTsKKwllbHNlCisJeworCQlEYXR1bSBkID0gZGF0dW1Db3B5KFBvaW50ZXJH ZXREYXR1bShkYXR1bSksIHN0YXRlLT5kYXR1bVR5cGVCeVZhbCwgc3RhdGUtPmRhdHVtVHlwZUxl bik7CisJCVVTRU1FTShzdGF0ZSwgR2V0TWVtb3J5Q2h1bmtTcGFjZShEYXR1bUdldFBvaW50ZXIo ZCkpKTsKKwkJcmV0dXJuIERhdHVtR2V0UG9pbnRlcihkKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lk Cit3cml0ZXR1cF9kYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCB2b2lkKiBkYXR1bSkKK3sK KwlBc3NlcnQoc3RhdGUtPmRhdHVtVHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAoc3RhdGUtPmRh dHVtVHlwZUJ5VmFsKQorCXsKKwkJQXNzZXJ0KHN0YXRlLT5kYXR1bVR5cGVMZW4gPiAwKTsKKwkJ QnVmRmlsZVdyaXRlKHN0YXRlLT5teWZpbGUsIGRhdHVtLCBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsK Kwl9CisJZWxzZQorCXsKKwkJU2l6ZSBzaXplID0gc3RhdGUtPmRhdHVtVHlwZUxlbjsKKwkJaWYg KHN0YXRlLT5kYXR1bVR5cGVMZW4gPCAwKQorCQl7CisJCQlCdWZGaWxlV3JpdGUoc3RhdGUtPm15 ZmlsZSwgJnNpemUsIHNpemVvZihzaXplKSk7CisJCQlzaXplID0gZGF0dW1HZXRTaXplKFBvaW50 ZXJHZXREYXR1bShkYXR1bSksIHN0YXRlLT5kYXR1bVR5cGVCeVZhbCwgc3RhdGUtPmRhdHVtVHlw ZUxlbik7CisJCX0KKworCQlCdWZGaWxlV3JpdGUoc3RhdGUtPm15ZmlsZSwgZGF0dW0sIHNpemUp OworCisJCS8qIG5lZWQgdHJhaWxpbmcgbGVuZ3RoIHdvcmQ/ICovCisJCWlmIChzdGF0ZS0+YmFj a3dhcmQgJiYgc3RhdGUtPmRhdHVtVHlwZUxlbiA8IDApCisJCQlCdWZGaWxlV3JpdGUoc3RhdGUt Pm15ZmlsZSwgJnNpemUsIHNpemVvZihzaXplKSk7CisKKwkJRlJFRU1FTShzdGF0ZSwgR2V0TWVt b3J5Q2h1bmtTcGFjZShkYXR1bSkpOworCQlwZnJlZShkYXR1bSk7CisJfQorfQorCitzdGF0aWMg dm9pZCoKK3JlYWR0dXBfZGF0dW0oVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgdW5zaWduZWQgaW50 IGxlbikKK3sKKwlBc3NlcnQoc3RhdGUtPmRhdHVtVHlwZSAhPSBJbnZhbGlkT2lkKTsKKwlpZiAo c3RhdGUtPmRhdHVtVHlwZUJ5VmFsKQorCXsKKwkJRGF0dW0gZGF0dW0gPSBQb2ludGVyR2V0RGF0 dW0oTlVMTCk7CisJCUFzc2VydChzdGF0ZS0+ZGF0dW1UeXBlTGVuID4gMCk7CisJCUFzc2VydChs ZW4gPT0gc3RhdGUtPmRhdHVtVHlwZUxlbik7CisJCUJ1ZkZpbGVSZWFkRXhhY3Qoc3RhdGUtPm15 ZmlsZSwgJmRhdHVtLCBzdGF0ZS0+ZGF0dW1UeXBlTGVuKTsKKwkJcmV0dXJuIERhdHVtR2V0UG9p bnRlcihkYXR1bSk7CisJfQorCWVsc2UKKwl7CisJCURhdHVtICpkYXR1bXMgPSBwYWxsb2MobGVu KTsKKwkJQnVmRmlsZVJlYWRFeGFjdChzdGF0ZS0+bXlmaWxlLCAmZGF0dW1zLCBsZW4pOworCisJ CS8qIG5lZWQgdHJhaWxpbmcgbGVuZ3RoIHdvcmQ/ICovCisJCWlmIChzdGF0ZS0+YmFja3dhcmQg JiYgc3RhdGUtPmRhdHVtVHlwZUxlbiA8IDApCisJCQlCdWZGaWxlUmVhZEV4YWN0KHN0YXRlLT5t eWZpbGUsICZsZW4sIHNpemVvZihsZW4pKTsKKworCQlyZXR1cm4gRGF0dW1HZXRQb2ludGVyKCpk YXR1bXMpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUuaAppbmRleCBlZDdjNDU0ZjQ0ZS4uMWY0 MzE4NjMzODcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc3RvcmUuaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXN0b3JlLmgKQEAgLTEsMTcgKzEsMTggQEAKIC8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICoKICAqIHR1cGxlc3RvcmUuaAotICoJICBHZW5lcmFsaXplZCByb3V0 aW5lcyBmb3IgdGVtcG9yYXJ5IHR1cGxlIHN0b3JhZ2UuCisgKgkgIEdlbmVyYWxpemVkIHJvdXRp bmVzIGZvciB0ZW1wb3Jhcnkgc3RvcmFnZSBvZiB0dXBsZXMgYW5kIERhdHVtcy4KICAqCi0gKiBU aGlzIG1vZHVsZSBoYW5kbGVzIHRlbXBvcmFyeSBzdG9yYWdlIG9mIHR1cGxlcyBmb3IgcHVycG9z ZXMgc3VjaAotICogYXMgTWF0ZXJpYWxpemUgbm9kZXMsIGhhc2hqb2luIGJhdGNoIGZpbGVzLCBl dGMuICBJdCBpcyBlc3NlbnRpYWxseQotICogYSBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1cGxl c29ydC5jOyBpdCBkb2VzIG5vIHNvcnRpbmcgb2YgdHVwbGVzCi0gKiBidXQgY2FuIG9ubHkgc3Rv cmUgYW5kIHJlZ3VyZ2l0YXRlIGEgc2VxdWVuY2Ugb2YgdHVwbGVzLiAgSG93ZXZlciwKLSAqIGJl Y2F1c2Ugbm8gc29ydCBpcyByZXF1aXJlZCwgaXQgaXMgYWxsb3dlZCB0byBzdGFydCByZWFkaW5n IHRoZSBzZXF1ZW5jZQotICogYmVmb3JlIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuLiAgVGhpcyBp cyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBjdXJzb3JzLAotICogYmVjYXVzZSBpdCBhbGxvd3Mg cmFuZG9tIGFjY2VzcyB3aXRoaW4gdGhlIGFscmVhZHktc2Nhbm5lZCBwb3J0aW9uIG9mCi0gKiBh IHF1ZXJ5IHdpdGhvdXQgaGF2aW5nIHRvIHByb2Nlc3MgdGhlIHVuZGVybHlpbmcgc2NhbiB0byBj b21wbGV0aW9uLgotICogQWxzbywgaXQgaXMgcG9zc2libGUgdG8gc3VwcG9ydCBtdWx0aXBsZSBp bmRlcGVuZGVudCByZWFkIHBvaW50ZXJzLgorICogVGhpcyBtb2R1bGUgaGFuZGxlcyB0ZW1wb3Jh cnkgc3RvcmFnZSBvZiBlaXRoZXIgdHVwbGVzIG9yIHNpbmdsZQorICogRGF0dW0gdmFsdWVzIGZv ciBwdXJwb3NlcyBzdWNoIGFzIE1hdGVyaWFsaXplIG5vZGVzLCBoYXNoam9pbiBiYXRjaAorICog ZmlsZXMsIGV0Yy4gSXQgaXMgZXNzZW50aWFsbHkgYSBkdW1iZWQtZG93biB2ZXJzaW9uIG9mIHR1 cGxlc29ydC5jOworICogaXQgZG9lcyBubyBzb3J0aW5nIG9mIHR1cGxlcyBidXQgY2FuIG9ubHkg c3RvcmUgYW5kIHJlZ3VyZ2l0YXRlIGEgc2VxdWVuY2UKKyAqIG9mIHR1cGxlcy4gIEhvd2V2ZXIs IGJlY2F1c2Ugbm8gc29ydCBpcyByZXF1aXJlZCwgaXQgaXMgYWxsb3dlZCB0byBzdGFydAorICog cmVhZGluZyB0aGUgc2VxdWVuY2UgYmVmb3JlIGl0IGhhcyBhbGwgYmVlbiB3cml0dGVuLgorICoK KyAqIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgY3Vyc29ycywgYmVjYXVzZSBpdCBh bGxvd3MgcmFuZG9tIGFjY2VzcworICogd2l0aGluIHRoZSBhbHJlYWR5LXNjYW5uZWQgcG9ydGlv biBvZiBhIHF1ZXJ5IHdpdGhvdXQgaGF2aW5nIHRvIHByb2Nlc3MKKyAqIHRoZSB1bmRlcmx5aW5n IHNjYW4gdG8gY29tcGxldGlvbi4KICAqCiAgKiBBIHRlbXBvcmFyeSBmaWxlIGlzIHVzZWQgdG8g aGFuZGxlIHRoZSBkYXRhIGlmIGl0IGV4Y2VlZHMgdGhlCiAgKiBzcGFjZSBsaW1pdCBzcGVjaWZp ZWQgYnkgdGhlIGNhbGxlci4KQEAgLTM5LDE0ICs0MCwxMyBAQAogICovCiB0eXBlZGVmIHN0cnVj dCBUdXBsZXN0b3Jlc3RhdGUgVHVwbGVzdG9yZXN0YXRlOwogCi0vKgotICogQ3VycmVudGx5IHdl IG9ubHkgbmVlZCB0byBzdG9yZSBNaW5pbWFsVHVwbGVzLCBidXQgaXQgd291bGQgYmUgZWFzeQot ICogdG8gc3VwcG9ydCB0aGUgc2FtZSBiZWhhdmlvciBmb3IgSW5kZXhUdXBsZXMgYW5kL29yIGJh cmUgRGF0dW1zLgotICovCi0KIGV4dGVybiBUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlc3RvcmVfYmVn aW5faGVhcChib29sIHJhbmRvbUFjY2VzcywKIAkJCQkJCQkJCQkJICBib29sIGludGVyWGFjdCwK IAkJCQkJCQkJCQkJICBpbnQgbWF4S0J5dGVzKTsKK2V4dGVybiBUdXBsZXN0b3Jlc3RhdGUgKnR1 cGxlc3RvcmVfYmVnaW5fZGF0dW0oT2lkIGRhdHVtVHlwZSwKKwkJCQkJCQkJCQkJIGJvb2wgcmFu ZG9tQWNjZXNzLAorCQkJCQkJCQkJCQkgYm9vbCBpbnRlclhhY3QsCisJCQkJCQkJCQkJCSBpbnQg bWF4S0J5dGVzKTsKIAogZXh0ZXJuIHZvaWQgdHVwbGVzdG9yZV9zZXRfZWZsYWdzKFR1cGxlc3Rv cmVzdGF0ZSAqc3RhdGUsIGludCBlZmxhZ3MpOwogCkBAIC01NSw2ICs1NSw3IEBAIGV4dGVybiB2 b2lkIHR1cGxlc3RvcmVfcHV0dHVwbGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsCiBleHRl cm4gdm9pZCB0dXBsZXN0b3JlX3B1dHR1cGxlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIEhlYXBU dXBsZSB0dXBsZSk7CiBleHRlcm4gdm9pZCB0dXBsZXN0b3JlX3B1dHZhbHVlcyhUdXBsZXN0b3Jl c3RhdGUgKnN0YXRlLCBUdXBsZURlc2MgdGRlc2MsCiAJCQkJCQkJCSBjb25zdCBEYXR1bSAqdmFs dWVzLCBjb25zdCBib29sICppc251bGwpOworZXh0ZXJuIHZvaWQgdHVwbGVzdG9yZV9wdXRkYXR1 bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBEYXR1bSBkYXR1bSk7CiAKIGV4dGVybiBpbnQJdHVw bGVzdG9yZV9hbGxvY19yZWFkX3BvaW50ZXIoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSwgaW50IGVm bGFncyk7CiAKQEAgLTcyLDYgKzczLDggQEAgZXh0ZXJuIGJvb2wgdHVwbGVzdG9yZV9pbl9tZW1v cnkoVHVwbGVzdG9yZXN0YXRlICpzdGF0ZSk7CiAKIGV4dGVybiBib29sIHR1cGxlc3RvcmVfZ2V0 dHVwbGVzbG90KFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCwKIAkJCQkJCQkJ CWJvb2wgY29weSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOworZXh0ZXJuIGJvb2wgdHVwbGVzdG9y ZV9nZXRkYXR1bShUdXBsZXN0b3Jlc3RhdGUgKnN0YXRlLCBib29sIGZvcndhcmQsCisJCQkJCQkJ CWJvb2wgKnNob3VsZF9mcmVlLCBEYXR1bSAqcmVzdWx0KTsKIAogZXh0ZXJuIGJvb2wgdHVwbGVz dG9yZV9hZHZhbmNlKFR1cGxlc3RvcmVzdGF0ZSAqc3RhdGUsIGJvb2wgZm9yd2FyZCk7CiAKLS0g CjIuNDMuMAoK --000000000000caf8fd062fc891e1 Content-Type: application/octet-stream; name="v16-0005-Allow-snapshot-resets-in-concurrent-unique-index.patch" Content-Disposition: attachment; filename="v16-0005-Allow-snapshot-resets-in-concurrent-unique-index.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7zd30of7 RnJvbSAyMDUwMDhlZTE0NmFjMzY4MDFiOTgxMDMzMTIyNmE5OTQ0ODAyN2RlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVGh1LCA2IE1hciAyMDI1IDE0OjU0OjQ0ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MTYgMDUv MTJdICBBbGxvdyBzbmFwc2hvdCByZXNldHMgaW4gY29uY3VycmVudCB1bmlxdWUgaW5kZXggIAog YnVpbGRzCgogUHJldmlvdXNseSwgY29uY3VycmVudCB1bmlxdWUgaW5kZXggYnVpbGRzIHVzZWQg YSBmaXhlZCBzbmFwc2hvdCBmb3IgdGhlIGVudGlyZQogc2NhbiB0byBlbnN1cmUgcHJvcGVyIHVu aXF1ZW5lc3MgY2hlY2tzLiBUaGlzIGNvdWxkIGRlbGF5IHZhY3V1bSdzIGFiaWxpdHkgdG8KIGNs ZWFuIHVwIGRlYWQgdHVwbGVzLgoKIE5vdyByZXNldCBzbmFwc2hvdHMgcGVyaW9kaWNhbGx5IGR1 cmluZyBjb25jdXJyZW50IHVuaXF1ZSBpbmRleCBidWlsZHMsIHdoaWxlCiBzdGlsbCBtYWludGFp bmluZyB1bmlxdWVuZXNzIGJ5OgoKIDEuIElnbm9yaW5nIGRlYWQgdHVwbGVzIGR1cmluZyB1bmlx dWVuZXNzIGNoZWNrcyBpbiB0dXBsZXNvcnQKIDIuIEFkZGluZyBhIHVuaXF1ZW5lc3MgY2hlY2sg aW4gX2J0X2xvYWQgdGhhdCBkZXRlY3RzIG11bHRpcGxlIGFsaXZlIHR1cGxlcyB3aXRoIHRoZSBz YW1lIGtleSB2YWx1ZXMKCiBUaGlzIGltcHJvdmVzIHZhY3V1bSBlZmZlY3RpdmVuZXNzIGR1cmlu ZyBsb25nLXJ1bm5pbmcgaW5kZXggYnVpbGRzIHdpdGhvdXQKIGNvbXByb21pc2luZyBpbmRleCB1 bmlxdWVuZXNzIGVuZm9yY2VtZW50LgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURN RS5IT1QgICAgICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYyAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRl ZHVwLmMgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29y dC5jICAgICAgICAgICB8IDE5MiArKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0c3BsaXRsb2MuYyAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnR1dGlscy5jICAgICAgICAgIHwgIDI5ICsrLQogc3JjL2JhY2tlbmQvY2F0YWxv Zy9pbmRleC5jICAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9jb21tYW5k cy9pbmRleGNtZHMuYyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3Nv cnQvdHVwbGVzb3J0dmFyaWFudHMuYyAgICB8ICA2OSArKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nl c3MvbmJ0cmVlLmggICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy90YWJsZWFtLmggICAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUvdXRpbHMv dHVwbGVzb3J0LmggICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9leHBlY3RlZC9jaWNfcmVz ZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8ICAgNiArCiAxMyBmaWxlcyBjaGFuZ2VkLCAyNjMg aW5zZXJ0aW9ucygrKSwgOTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5I T1QKaW5kZXggNzRlNDA3ZjM3NWEuLjgyOWRhZDExOTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JF QURNRS5IT1QKQEAgLTM4NiwxMiArMzg2LDEyIEBAIGhhdmUgdGhlIEhPVC1zYWZldHkgcHJvcGVy dHkgZW5mb3JjZWQgYmVmb3JlIHdlIHN0YXJ0IHRvIGJ1aWxkIHRoZSBuZXcKIGluZGV4LgogCiBB ZnRlciB3YWl0aW5nIGZvciB0cmFuc2FjdGlvbnMgd2hpY2ggaGFkIHRoZSB0YWJsZSBvcGVuLCB3 ZSBidWlsZCB0aGUgaW5kZXgKLWZvciBhbGwgcm93cyB0aGF0IGFyZSB2YWxpZCBpbiBhIGZyZXNo IHNuYXBzaG90LiAgQW55IHR1cGxlcyB2aXNpYmxlIGluIHRoZQotc25hcHNob3Qgd2lsbCBoYXZl IG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5nIEhPVCBjaGFpbnMuICAoVGhleSBtaWdodCBoYXZl Ci1vbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQgdGhlbSB3aGljaCBhcmUgYnJva2VuLCBidXQgdGhp cyBpcyBPSyBmb3IgdGhlIHNhbWUKLXJlYXNvbiBpdCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBi dWlsZC4pICBBcyBhYm92ZSwgd2UgcG9pbnQgdGhlIGluZGV4Ci1lbnRyeSBhdCB0aGUgcm9vdCBv ZiB0aGUgSE9ULXVwZGF0ZSBjaGFpbiBidXQgd2UgdXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUK LWxpdmUgdHVwbGUuCitmb3IgYWxsIHJvd3MgdGhhdCBhcmUgdmFsaWQgaW4gYSBmcmVzaCBzbmFw c2hvdCwgd2hpY2ggaXMgdXBkYXRlZCBldmVyeSBzbworb2Z0ZW4uIEFueSB0dXBsZXMgdmlzaWJs ZSBpbiB0aGUgc25hcHNob3Qgd2lsbCBoYXZlIG9ubHkgdmFsaWQgZm9yd2FyZC1ncm93aW5nCitI T1QgY2hhaW5zLiAgKFRoZXkgbWlnaHQgaGF2ZSBvbGRlciBIT1QgdXBkYXRlcyBiZWhpbmQgdGhl bSB3aGljaCBhcmUgYnJva2VuLAorYnV0IHRoaXMgaXMgT0sgZm9yIHRoZSBzYW1lIHJlYXNvbiBp dCdzIE9LIGluIGEgcmVndWxhciBpbmRleCBidWlsZC4pCitBcyBhYm92ZSwgd2UgcG9pbnQgdGhl IGluZGV4IGVudHJ5IGF0IHRoZSByb290IG9mIHRoZSBIT1QtdXBkYXRlIGNoYWluIGJ1dCB3ZQor dXNlIHRoZSBrZXkgdmFsdWUgZnJvbSB0aGUgbGl2ZSB0dXBsZS4KIAogV2UgbWFyayB0aGUgaW5k ZXggb3BlbiBmb3IgaW5zZXJ0cyAoYnV0IHN0aWxsIG5vdCByZWFkeSBmb3IgcmVhZHMpIHRoZW4K IHdlIGFnYWluIHdhaXQgZm9yIHRyYW5zYWN0aW9ucyB3aGljaCBoYXZlIHRoZSB0YWJsZSBvcGVu LiAgVGhlbiB3ZSB0YWtlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpp bmRleCAyMjI3NGYwOTVhYy4uZmE1ODJkM2UyZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYwpAQCAtMTIzMiwxNSArMTIzMiwxNSBAQCBoZWFwYW1faW5kZXhfYnVp bGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICogcXVhbCBjaGVja3MgKGJl Y2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBj b25jdXJyZW50IGJ1aWxkLCBvciBkdXJpbmcgYm9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBN VkNDIHNuYXBzaG90CiAJICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8g dGhhdCB3aGlsZSB0aGF0IHNuYXBzaG90IGlzIHJlc2V0Ci0JICogZXZlcnkgc28gb2Z0ZW4gKGlu IGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCkuCisJICogZXZlcnkgc28gb2Z0ZW4uCiAJICovCiAJ T2xkZXN0WG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJLyoKLQkgKiBGb3IgdW5pcXVl IGluZGV4IHdlIG5lZWQgY29uc2lzdGVudCBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCisJ ICogRm9yIGNvbmN1cnJlbnQgYnVpbGRzIG9mIG5vbi1zeXN0ZW0gaW5kZXhlcywgd2UgbWF5IHdh bnQgdG8gcGVyaW9kaWNhbGx5CisJICogcmVzZXQgc25hcHNob3RzIHRvIGFsbG93IHZhY3V1bSB0 byBjbGVhbiB1cCB0dXBsZXMuCiAJICovCiAJcmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5p aV9Db25jdXJyZW50ICYmCi0JCQkJCSAgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmCiAJCQkJCSAg IWlzX3N5c3RlbV9jYXRhbG9nOyAvKiBqdXN0IGZvciB0aGUgY2FzZSAqLwogCiAJLyogb2theSB0 byBpZ25vcmUgbGF6eSBWQUNVVU1zIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVk dXAuYwppbmRleCBjYmU3MzY3NWY4Ni4uNWRiNmQyMzdjMmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idGRlZHVwLmMKQEAgLTE0OCw3ICsxNDgsNyBAQCBfYnRfZGVkdXBfcGFzcyhSZWxhdGlv biByZWwsIEJ1ZmZlciBidWYsIEluZGV4VHVwbGUgbmV3aXRlbSwgU2l6ZSBuZXdpdGVtc3osCiAJ CQlfYnRfZGVkdXBfc3RhcnRfcGVuZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQogCQll bHNlIGlmIChzdGF0ZS0+ZGVkdXBsaWNhdGUgJiYKLQkJCQkgX2J0X2tlZXBfbmF0dHNfZmFzdChy ZWwsIHN0YXRlLT5iYXNlLCBpdHVwKSA+IG5rZXlhdHRzICYmCisJCQkJIF9idF9rZWVwX25hdHRz X2Zhc3QocmVsLCBzdGF0ZS0+YmFzZSwgaXR1cCwgTlVMTCkgPiBua2V5YXR0cyAmJgogCQkJCSBf YnRfZGVkdXBfc2F2ZV9odGlkKHN0YXRlLCBpdHVwKSkKIAkJewogCQkJLyoKQEAgLTM3NCw3ICsz NzQsNyBAQCBfYnRfYm90dG9tdXBkZWxfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJl bGF0aW9uIGhlYXBSZWwsCiAJCQkvKiBpdHVwIHN0YXJ0cyBmaXJzdCBwZW5kaW5nIGludGVydmFs ICovCiAJCQlfYnRfZGVkdXBfc3RhcnRfcGVuZGluZyhzdGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJ fQotCQllbHNlIGlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXAp ID4gbmtleWF0dHMgJiYKKwkJZWxzZSBpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRl LT5iYXNlLCBpdHVwLCBOVUxMKSA+IG5rZXlhdHRzICYmCiAJCQkJIF9idF9kZWR1cF9zYXZlX2h0 aWQoc3RhdGUsIGl0dXApKQogCQl7CiAJCQkvKiBUdXBsZSBpcyBlcXVhbDsganVzdCBhZGRlZCBp dHMgVElEcyB0byBwZW5kaW5nIGludGVydmFsICovCkBAIC03ODksMTIgKzc4OSwxMiBAQCBfYnRf ZG9fc2luZ2xldmFsKFJlbGF0aW9uIHJlbCwgUGFnZSBwYWdlLCBCVERlZHVwU3RhdGUgc3RhdGUs CiAJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChwYWdlLCBtaW5vZmYpOwogCWl0dXAgPSAoSW5kZXhU dXBsZSkgUGFnZUdldEl0ZW0ocGFnZSwgaXRlbWlkKTsKIAotCWlmIChfYnRfa2VlcF9uYXR0c19m YXN0KHJlbCwgbmV3aXRlbSwgaXR1cCkgPiBua2V5YXR0cykKKwlpZiAoX2J0X2tlZXBfbmF0dHNf ZmFzdChyZWwsIG5ld2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJewogCQlpdGVtaWQg PSBQYWdlR2V0SXRlbUlkKHBhZ2UsIFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkpOwogCQlp dHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQkJaWYgKF9i dF9rZWVwX25hdHRzX2Zhc3QocmVsLCBuZXdpdGVtLCBpdHVwKSA+IG5rZXlhdHRzKQorCQlpZiAo X2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5ld2l0ZW0sIGl0dXAsIE5VTEwpID4gbmtleWF0dHMp CiAJCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5k ZXggODEwZjgwZmM4ZTYuLmY3OTE0ZWJiM2QwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNv cnQuYwpAQCAtODMsNiArODMsNyBAQCB0eXBlZGVmIHN0cnVjdCBCVFNwb29sCiAJUmVsYXRpb24J aW5kZXg7CiAJYm9vbAkJaXN1bmlxdWU7CiAJYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OworCWJv b2wJCXVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiB9IEJUU3Bvb2w7CiAKIC8qCkBAIC0xMDEsNiArMTAy LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRTaGFyZWQKIAlPaWQJCQlpbmRleHJlbGlkOwogCWJvb2wJ CWlzdW5pcXVlOwogCWJvb2wJCW51bGxzX25vdF9kaXN0aW5jdDsKKwlib29sCQl1bmlxdWVfZGVh ZF9pZ25vcmVkOwogCWJvb2wJCWlzY29uY3VycmVudDsKIAlpbnQJCQlzY2FudHVwbGVzb3J0c3Rh dGVzOwogCkBAIC0yMDMsMTUgKzIwNSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBCVExlYWRlcgogICov CiB0eXBlZGVmIHN0cnVjdCBCVEJ1aWxkU3RhdGUKIHsKLQlib29sCQlpc3VuaXF1ZTsKLQlib29s CQludWxsc19ub3RfZGlzdGluY3Q7CiAJYm9vbAkJaGF2ZWRlYWQ7CiAJUmVsYXRpb24JaGVhcDsK IAlCVFNwb29sICAgICpzcG9vbDsKIAogCS8qCi0JICogc3Bvb2wyIGlzIG5lZWRlZCBvbmx5IHdo ZW4gdGhlIGluZGV4IGlzIGEgdW5pcXVlIGluZGV4LiBEZWFkIHR1cGxlcyBhcmUKLQkgKiBwdXQg aW50byBzcG9vbDIgaW5zdGVhZCBvZiBzcG9vbCBpbiBvcmRlciB0byBhdm9pZCB1bmlxdWVuZXNz IGNoZWNrLgorCSAqIHNwb29sMiBpcyBuZWVkZWQgb25seSB3aGVuIHRoZSBpbmRleCBpcyBhIHVu aXF1ZSBpbmRleCBhbmQgYnVpbGQgbm9uLWNvbmN1cnJlbnRseS4KKwkgKiBEZWFkIHR1cGxlcyBh cmUgcHV0IGludG8gc3Bvb2wyIGluc3RlYWQgb2Ygc3Bvb2wgaW4gb3JkZXIgdG8gYXZvaWQgdW5p cXVlbmVzcyBjaGVjay4KIAkgKi8KIAlCVFNwb29sICAgICpzcG9vbDI7CiAJZG91YmxlCQlpbmR0 dXBsZXM7CkBAIC0yNTgsNyArMjU4LDcgQEAgc3RhdGljIGRvdWJsZSBfYnRfc3Bvb2xzX2hlYXBz Y2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogc3RhdGljIHZvaWQgX2J0X3Nwb29s ZGVzdHJveShCVFNwb29sICpidHNwb29sKTsKIHN0YXRpYyB2b2lkIF9idF9zcG9vbChCVFNwb29s ICpidHNwb29sLCBJdGVtUG9pbnRlciBzZWxmLAogCQkJCQkgIERhdHVtICp2YWx1ZXMsIGJvb2wg KmlzbnVsbCk7Ci1zdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJU U3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cyk7CitzdGF0aWMgdm9pZCBfYnRf bGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIGlzY29u Y3VycmVudCk7CiBzdGF0aWMgdm9pZCBfYnRfYnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgs IEl0ZW1Qb2ludGVyIHRpZCwgRGF0dW0gKnZhbHVlcywKIAkJCQkJCQkgICBib29sICppc251bGws IGJvb2wgdHVwbGVJc0FsaXZlLCB2b2lkICpzdGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVmZmVy IF9idF9ibG5ld3BhZ2UoQlRXcml0ZVN0YXRlICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBAIC0z MDMsOCArMzAzLDYgQEAgYnRidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5k ZXhJbmZvICppbmRleEluZm8pCiAJCVJlc2V0VXNhZ2UoKTsKICNlbmRpZgkJCQkJCQkvKiBCVFJF RV9CVUlMRF9TVEFUUyAqLwogCi0JYnVpbGRzdGF0ZS5pc3VuaXF1ZSA9IGluZGV4SW5mby0+aWlf VW5pcXVlOwotCWJ1aWxkc3RhdGUubnVsbHNfbm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9O dWxsc05vdERpc3RpbmN0OwogCWJ1aWxkc3RhdGUuaGF2ZWRlYWQgPSBmYWxzZTsKIAlidWlsZHN0 YXRlLmhlYXAgPSBoZWFwOwogCWJ1aWxkc3RhdGUuc3Bvb2wgPSBOVUxMOwpAQCAtMzIxLDIwICsz MTksMjAgQEAgYnRidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZv ICppbmRleEluZm8pCiAJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kZXgpKTsKIAogCXJl bHR1cGxlcyA9IF9idF9zcG9vbHNfaGVhcHNjYW4oaGVhcCwgaW5kZXgsICZidWlsZHN0YXRlLCBp bmRleEluZm8pOwotCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5m by0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKKwlB c3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAqIEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEpIGNvbXBs ZXRpbmcgdGhlIHNvcnQgb2YgdGhlIHNwb29sIGZpbGUsICgyKQogCSAqIGluc2VydGluZyB0aGUg c29ydGVkIHR1cGxlcyBpbnRvIGJ0cmVlIHBhZ2VzIGFuZCAoMykgYnVpbGRpbmcgdGhlIHVwcGVy CiAJICogbGV2ZWxzLiAgRmluYWxseSwgaXQgbWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRvIGVuZCB1 c2Ugb2YgcGFyYWxsZWxpc20uCiAJICovCi0JX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29s LCBidWlsZHN0YXRlLnNwb29sMiwgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmIGluZGV4SW5mby0+ aWlfQ29uY3VycmVudCk7CisJX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0 YXRlLnNwb29sMiwgaW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKIAlfYnRfc3Bvb2xkZXN0cm95 KGJ1aWxkc3RhdGUuc3Bvb2wpOwogCWlmIChidWlsZHN0YXRlLnNwb29sMikKIAkJX2J0X3Nwb29s ZGVzdHJveShidWlsZHN0YXRlLnNwb29sMik7CiAJaWYgKGJ1aWxkc3RhdGUuYnRsZWFkZXIpCiAJ CV9idF9lbmRfcGFyYWxsZWwoYnVpbGRzdGF0ZS5idGxlYWRlcik7Ci0JQXNzZXJ0KCFpbmRleElu Zm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJy ZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJlc3VsdCA9 IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxvYyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOwog CkBAIC0zODEsNiArMzc5LDExIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwg UmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAlidHNwb29sLT5pbmRl eCA9IGluZGV4OwogCWJ0c3Bvb2wtPmlzdW5pcXVlID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7CiAJ YnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3Rp bmN0OworCS8qCisJICogV2UgbmVlZCB0byBpZ25vcmUgZGVhZCB0dXBsZXMgZm9yIHVuaXF1ZSBj aGVja3MgaW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkLgorCSAqIEl0IGlzIHJlcXVpcmVkIGJl Y2F1c2Ugb3IgcGVyaW9kaWMgcmVzZXQgb2Ygc25hcHNob3QuCisJICovCisJYnRzcG9vbC0+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 ZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKaW5kZXggNjkzZTQzYzY3NGIuLmY5Njk1ZmJhOGI1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCkBAIC01MSw4ICs1MSw2IEBAIHN0 YXRpYyBib29sIF9idF9jaGVja19yb3djb21wYXJlKFNjYW5LZXkgc2tleSwKIAkJCQkJCQkJIFNj YW5EaXJlY3Rpb24gZGlyLCBib29sICpjb250aW51ZXNjYW4pOwogc3RhdGljIHZvaWQgX2J0X2No ZWNra2V5c19sb29rX2FoZWFkKEluZGV4U2NhbkRlc2Mgc2NhbiwgQlRSZWFkUGFnZVN0YXRlICpw c3RhdGUsCiAJCQkJCQkJCQkgaW50IHR1cG5hdHRzLCBUdXBsZURlc2MgdHVwZGVzYyk7Ci1zdGF0 aWMgaW50CV9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwK LQkJCQkJCSAgIEluZGV4VHVwbGUgZmlyc3RyaWdodCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5KTsK IAogCiAvKgpAQCAtMjgyOCw3ICsyODI2LDcgQEAgX2J0X3RydW5jYXRlKFJlbGF0aW9uIHJlbCwg SW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogCUFzc2VydCghQlRy ZWVUdXBsZUlzUGl2b3QobGFzdGxlZnQpICYmICFCVHJlZVR1cGxlSXNQaXZvdChmaXJzdHJpZ2h0 KSk7CiAKIAkvKiBEZXRlcm1pbmUgaG93IG1hbnkgYXR0cmlidXRlcyBtdXN0IGJlIGtlcHQgaW4g dHJ1bmNhdGVkIHR1cGxlICovCi0Ja2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0dHMocmVsLCBsYXN0 bGVmdCwgZmlyc3RyaWdodCwgaXR1cF9rZXkpOworCWtlZXBuYXR0cyA9IF9idF9rZWVwX25hdHRz KHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQsIGl0dXBfa2V5LCBOVUxMKTsKIAogI2lmZGVmIERF QlVHX05PX1RSVU5DQVRFCiAJLyogRm9yY2UgdHJ1bmNhdGlvbiB0byBiZSBpbmVmZmVjdGl2ZSBm b3IgdGVzdGluZyBwdXJwb3NlcyAqLwpAQCAtMjk0NiwxNyArMjk0NCwyNCBAQCBfYnRfdHJ1bmNh dGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmln aHQsCiAvKgogICogX2J0X2tlZXBfbmF0dHMgLSBob3cgbWFueSBrZXkgYXR0cmlidXRlcyB0byBr ZWVwIHdoZW4gdHJ1bmNhdGluZy4KICAqCisgKiBUaGlzIGlzIGV4cG9ydGVkIHRvIGJlIHVzZWQg YXMgY29tcGFyaXNvbiBmdW5jdGlvbiBkdXJpbmcgY29uY3VycmVudAorICogdW5pcXVlIGluZGV4 IGJ1aWxkIGluIGNhc2UgX2J0X2tlZXBfbmF0dHNfZmFzdCBpcyBub3Qgc3VpdGFibGUgYmVjYXVz ZQorICogY29sbGF0aW9uIGlzIG5vdCAiYWxsZXF1YWxpbWFnZSIvZGVkdXBsaWNhdGlvbi1zYWZl LgorICoKICAqIENhbGxlciBwcm92aWRlcyB0d28gdHVwbGVzIHRoYXQgZW5jbG9zZSBhIHNwbGl0 IHBvaW50LiAgQ2FsbGVyJ3MgaW5zZXJ0aW9uCiAgKiBzY2Fua2V5IGlzIHVzZWQgdG8gY29tcGFy ZSB0aGUgdHVwbGVzOyB0aGUgc2NhbmtleSdzIGFyZ3VtZW50IHZhbHVlcyBhcmUKICAqIG5vdCBj b25zaWRlcmVkIGhlcmUuCiAgKgorICogaGFzbnVsbHMgdmFsdWUgc2V0IHRvIHRydWUgaW4gY2Fz ZSBvZiBhbnkgbnVsbCBjb2x1bW4gaW4gYW55IHR1cGxlLgorICoKICAqIFRoaXMgY2FuIHJldHVy biBhIG51bWJlciBvZiBhdHRyaWJ1dGVzIHRoYXQgaXMgb25lIGdyZWF0ZXIgdGhhbiB0aGUKICAq IG51bWJlciBvZiBrZXkgYXR0cmlidXRlcyBmb3IgdGhlIGluZGV4IHJlbGF0aW9uLiAgVGhpcyBp bmRpY2F0ZXMgdGhhdCB0aGUKICAqIGNhbGxlciBtdXN0IHVzZSBhIGhlYXAgVElEIGFzIGEgdW5p cXVlLWlmaWVyIGluIG5ldyBwaXZvdCB0dXBsZS4KICAqLwotc3RhdGljIGludAoraW50CiBfYnRf a2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUg Zmlyc3RyaWdodCwKLQkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSkKKwkJCSAgIEJUU2Nhbklu c2VydCBpdHVwX2tleSwKKwkJCSAgIGJvb2wgKmhhc251bGxzKQogewogCWludAkJCW5rZXlhdHRz ID0gSW5kZXhSZWxhdGlvbkdldE51bWJlck9mS2V5QXR0cmlidXRlcyhyZWwpOwogCVR1cGxlRGVz YwlpdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKQEAgLTI5ODIsNiArMjk4Nyw4IEBA IF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhU dXBsZSBmaXJzdHJpZ2h0LAogCiAJCWRhdHVtMSA9IGluZGV4X2dldGF0dHIobGFzdGxlZnQsIGF0 dG51bSwgaXR1cGRlc2MsICZpc051bGwxKTsKIAkJZGF0dW0yID0gaW5kZXhfZ2V0YXR0cihmaXJz dHJpZ2h0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMik7CisJCWlmIChoYXNudWxscykKKwkJ CSgqaGFzbnVsbHMpIHw9IChpc051bGwxIHx8IGlzTnVsbDIpOwogCiAJCWlmIChpc051bGwxICE9 IGlzTnVsbDIpCiAJCQlicmVhazsKQEAgLTMwMDEsNyArMzAwOCw3IEBAIF9idF9rZWVwX25hdHRz KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0 LAogCSAqIGV4cGVjdGVkIGluIGFuIGFsbGVxdWFsaW1hZ2UgaW5kZXguCiAJICovCiAJQXNzZXJ0 KCFpdHVwX2tleS0+YWxsZXF1YWxpbWFnZSB8fAotCQkgICBrZWVwbmF0dHMgPT0gX2J0X2tlZXBf bmF0dHNfZmFzdChyZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0KSk7CisJCSAgIGtlZXBuYXR0cyA9 PSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQsIE5VTEwpKTsK IAogCXJldHVybiBrZWVwbmF0dHM7CiB9CkBAIC0zMDEyLDcgKzMwMTksOCBAQCBfYnRfa2VlcF9u YXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3Ry aWdodCwKICAqIFRoaXMgaXMgZXhwb3J0ZWQgc28gdGhhdCBhIGNhbmRpZGF0ZSBzcGxpdCBwb2lu dCBjYW4gaGF2ZSBpdHMgZWZmZWN0IG9uCiAgKiBzdWZmaXggdHJ1bmNhdGlvbiBpbmV4cGVuc2l2 ZWx5IGV2YWx1YXRlZCBhaGVhZCBvZiB0aW1lIHdoZW4gZmluZGluZyBhCiAgKiBzcGxpdCBsb2Nh dGlvbi4gIEEgbmFpdmUgYml0d2lzZSBhcHByb2FjaCB0byBkYXR1bSBjb21wYXJpc29ucyBpcyB1 c2VkIHRvCi0gKiBzYXZlIGN5Y2xlcy4KKyAqIHNhdmUgY3ljbGVzLiBBbHNvLCBpdCBtYXkgYmUg dXNlZCBhcyBjb21wYXJpc29uIGZ1bmN0aW9uIGR1cmluZyBjb25jdXJyZW50CisgKiBidWlsZCBv ZiB1bmlxdWUgaW5kZXguCiAgKgogICogVGhlIGFwcHJvYWNoIHRha2VuIGhlcmUgdXN1YWxseSBw cm92aWRlcyB0aGUgc2FtZSBhbnN3ZXIgYXMgX2J0X2tlZXBfbmF0dHMKICAqIHdpbGwgKGZvciB0 aGUgc2FtZSBwYWlyIG9mIHR1cGxlcyBmcm9tIGEgaGVhcGtleXNwYWNlIGluZGV4KSwgc2luY2Ug dGhlCkBAIC0zMDIxLDYgKzMwMjksOCBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIElu ZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKICAqICJlcXVhbCBpbWFn ZSIgY29sdW1ucywgcm91dGluZSBpcyBndWFyYW50ZWVkIHRvIGdpdmUgdGhlIHNhbWUgcmVzdWx0 IGFzCiAgKiBfYnRfa2VlcF9uYXR0cyB3b3VsZC4KICAqCisgKiBoYXNudWxscyB2YWx1ZSBzZXQg dG8gdHJ1ZSBpbiBjYXNlIG9mIGFueSBudWxsIGNvbHVtbiBpbiBhbnkgdHVwbGUuCisgKgogICog Q2FsbGVycyBjYW4gcmVseSBvbiB0aGUgZmFjdCB0aGF0IGF0dHJpYnV0ZXMgY29uc2lkZXJlZCBl cXVhbCBoZXJlIGFyZQogICogZGVmaW5pdGVseSBhbHNvIGVxdWFsIGFjY29yZGluZyB0byBfYnRf a2VlcF9uYXR0cywgZXZlbiB3aGVuIHRoZSBpbmRleCB1c2VzCiAgKiBhbiBvcGNsYXNzIG9yIGNv bGxhdGlvbiB0aGF0IGlzIG5vdCAiYWxsZXF1YWxpbWFnZSIvZGVkdXBsaWNhdGlvbi1zYWZlLgpA QCAtMzAyOSw3ICszMDM5LDggQEAgX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1 cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAgKiBtb3JlIGJhbGFuY2VkIHNw bGl0IHBvaW50LgogICovCiBpbnQKLV9idF9rZWVwX25hdHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJ bmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQpCitfYnRfa2VlcF9uYXR0 c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJz dHJpZ2h0LAorCQkJCQlib29sICpoYXNudWxscykKIHsKIAlUdXBsZURlc2MJaXR1cGRlc2MgPSBS ZWxhdGlvbkdldERlc2NyKHJlbCk7CiAJaW50CQkJa2V5c3ogPSBJbmRleFJlbGF0aW9uR2V0TnVt YmVyT2ZLZXlBdHRyaWJ1dGVzKHJlbCk7CkBAIC0zMDQ2LDYgKzMwNTcsOCBAQCBfYnRfa2VlcF9u YXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBm aXJzdHJpZ2h0KQogCiAJCWRhdHVtMSA9IGluZGV4X2dldGF0dHIobGFzdGxlZnQsIGF0dG51bSwg aXR1cGRlc2MsICZpc051bGwxKTsKIAkJZGF0dW0yID0gaW5kZXhfZ2V0YXR0cihmaXJzdHJpZ2h0 LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMik7CisJCWlmIChoYXNudWxscykKKwkJCSpoYXNu dWxscyB8PSAoaXNOdWxsMSB8IGlzTnVsbDIpOwogCQlhdHQgPSBUdXBsZURlc2NDb21wYWN0QXR0 cihpdHVwZGVzYywgYXR0bnVtIC0gMSk7CiAKIAkJaWYgKGlzTnVsbDEgIT0gaXNOdWxsMikKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYwppbmRleCA0ODJkOWExNzg2ZC4uZTM2OWFkMGI3MjMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 LmMKQEAgLTE1MzEsNyArMTUzMSw3IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVh cFJlbGF0aW9uSWQsCiAKIAkvKiBJbnZhbGlkYXRlIGNhdGFsb2cgc25hcHNob3QganVzdCBmb3Ig YXNzZXJ0ICovCiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwotCUFzc2VydChpbmRleElu Zm8tPmlpX1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJ QXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qIFJvbGwg YmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rpb25zICovCiAJQXRF T1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CkBAIC0zMzAxLDkgKzMzMDEsOSBAQCBJ bmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIGlmIHdlIHVzZWQg SGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVzIHVzIHdpdGggYW4gaW5kZXgg dGhhdAogICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0YWJsZSB3 aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAgKgotICogRnVydGhlcm1vcmUsIGluIGNhc2Ugb2Yg bm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1QgZm9yIHRoZQotICogc2Nh biwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hvdCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNv IG9mdGVuLiBUaGUgcmVhc29uCi0gKiBmb3IgdGhhdCBpcyB0byBwcm9wYWdhdGUgdGhlIHhtaW4g aG9yaXpvbiBmb3J3YXJkLgorICogRnVydGhlcm1vcmUsIHdlIHNldCBTT19SRVNFVF9TTkFQU0hP VCBmb3IgdGhlIHNjYW4sIHdoaWNoIGNhdXNlcyBuZXcKKyAqIHNuYXBzaG90IHRvIGJlIHNldCBh cyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFzb24gIGZvciB0aGF0IGlzIHRvCisgKiBw cm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgogICoKICAqIE5leHQsIHdlIG1hcmsg dGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAiaW5kaXN2YWxpZCIpIGFuZAog ICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEgdGhpcmQuICBBZ2Fp biB3ZSB3YWl0IGZvciBhbGwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggMzZiODc1OTQ1 ZDMuLjRiNTBkNmVlOGNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTcwMCw4ICsx NzAwLDggQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAJICogY2hhaW5zIGNhbiBiZSBjcmVh dGVkIHdoZXJlIHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBvbGQgdHVwbGUgaW4gdGhlCiAJICogY2hh aW4gaGF2ZSBkaWZmZXJlbnQgaW5kZXgga2V5cy4KIAkgKgotCSAqIFdlIGJ1aWxkIHRoZSBpbmRl eCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNpbmcgc2luZ2xlIG9yCi0JICog bXVsdGlwbGUgcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhP VCB1cGRhdGVzIHRvCisJICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhh dCBhcmUgdmlzaWJsZSB1c2luZyBtdWx0aXBsZQorCSAqIHJlZnJlc2hpbmcgc25hcHNob3RzLiBX ZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bwogCSAqIHRoZXNlIHR1cGxlcyB3 aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5kZXgsIHNpbmNlIGFueSB1cGRhdGVzIG1hZGUK IAkgKiBieSB0cmFuc2FjdGlvbnMgdGhhdCBkaWRuJ3Qga25vdyBhYm91dCB0aGUgaW5kZXggYXJl IG5vdyBjb21taXR0ZWQgb3IKIAkgKiByb2xsZWQgYmFjay4gIFRodXMsIGVhY2ggdmlzaWJsZSB0 dXBsZSBpcyBlaXRoZXIgdGhlIGVuZCBvZiBpdHMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVw bGVzb3J0dmFyaWFudHMuYwppbmRleCBlYjg2MDFlMjI1Ny4uMThmOTBkNDZhNzMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKQEAgLTMyLDYgKzMyLDcgQEAK ICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKIAog CiAvKiBzb3J0LXR5cGUgY29kZXMgZm9yIHNvcnRfX3N0YXJ0IHByb2JlcyAqLwpAQCAtMTMzLDYg KzEzNCw3IEBAIHR5cGVkZWYgc3RydWN0CiAKIAlib29sCQllbmZvcmNlVW5pcXVlOwkvKiBjb21w bGFpbiBpZiB3ZSBmaW5kIGR1cGxpY2F0ZSB0dXBsZXMgKi8KIAlib29sCQl1bmlxdWVOdWxsc05v dERpc3RpbmN0OyAvKiB1bmlxdWUgY29uc3RyYWludCBudWxsIHRyZWF0bWVudCAqLworCWJvb2wJ CXVuaXF1ZURlYWRJZ25vcmVkOyAvKiBpZ25vcmUgZGVhZCB0dXBsZXMgaW4gdW5pcXVlIGNoZWNr ICovCiB9IFR1cGxlc29ydEluZGV4QlRyZWVBcmc7CiAKIC8qCkBAIC0zNTksNiArMzYxLDcgQEAg dHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCQkJUmVs YXRpb24gaW5kZXhSZWwsCiAJCQkJCQkJYm9vbCBlbmZvcmNlVW5pcXVlLAogCQkJCQkJCWJvb2wg dW5pcXVlTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQlib29sIHVuaXF1ZURlYWRJZ25vcmVkLAog CQkJCQkJCWludCB3b3JrTWVtLAogCQkJCQkJCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUsCiAJ CQkJCQkJaW50IHNvcnRvcHQpCkBAIC00MDEsNiArNDA0LDcgQEAgdHVwbGVzb3J0X2JlZ2luX2lu ZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJYXJnLT5pbmRleC5pbmRleFJlbCA9IGluZGV4 UmVsOwogCWFyZy0+ZW5mb3JjZVVuaXF1ZSA9IGVuZm9yY2VVbmlxdWU7CiAJYXJnLT51bmlxdWVO dWxsc05vdERpc3RpbmN0ID0gdW5pcXVlTnVsbHNOb3REaXN0aW5jdDsKKwlhcmctPnVuaXF1ZURl YWRJZ25vcmVkID0gdW5pcXVlRGVhZElnbm9yZWQ7CiAKIAlpbmRleFNjYW5LZXkgPSBfYnRfbWtz Y2Fua2V5KGluZGV4UmVsLCBOVUxMKTsKIApAQCAtMTY1NSw2ICsxNjU5LDcgQEAgY29tcGFyZXR1 cF9pbmRleF9idHJlZV90aWVicmVhayhjb25zdCBTb3J0VHVwbGUgKmEsIGNvbnN0IFNvcnRUdXBs ZSAqYiwKIAkJRGF0dW0JCXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJCWJvb2wJCWlzbnVsbFtJ TkRFWF9NQVhfS0VZU107CiAJCWNoYXIJICAgKmtleV9kZXNjOworCQlib29sCQl1bmlxdWVDaGVj a0ZhaWwgPSB0cnVlOwogCiAJCS8qCiAJCSAqIFNvbWUgcmF0aGVyIGJyYWluLWRlYWQgaW1wbGVt ZW50YXRpb25zIG9mIHFzb3J0IChzdWNoIGFzIHRoZSBvbmUgaW4KQEAgLTE2NjQsMTggKzE2Njks NTggQEAgY29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayhjb25zdCBTb3J0VHVwbGUgKmEs IGNvbnN0IFNvcnRUdXBsZSAqYiwKIAkJICovCiAJCUFzc2VydCh0dXBsZTEgIT0gdHVwbGUyKTsK IAotCQlpbmRleF9kZWZvcm1fdHVwbGUodHVwbGUxLCB0dXBEZXMsIHZhbHVlcywgaXNudWxsKTsK LQotCQlrZXlfZGVzYyA9IEJ1aWxkSW5kZXhWYWx1ZURlc2NyaXB0aW9uKGFyZy0+aW5kZXguaW5k ZXhSZWwsIHZhbHVlcywgaXNudWxsKTsKLQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2Rl KEVSUkNPREVfVU5JUVVFX1ZJT0xBVElPTiksCi0JCQkJIGVycm1zZygiY291bGQgbm90IGNyZWF0 ZSB1bmlxdWUgaW5kZXggXCIlc1wiIiwKLQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGFy Zy0+aW5kZXguaW5kZXhSZWwpKSwKLQkJCQkga2V5X2Rlc2MgPyBlcnJkZXRhaWwoIktleSAlcyBp cyBkdXBsaWNhdGVkLiIsIGtleV9kZXNjKSA6Ci0JCQkJIGVycmRldGFpbCgiRHVwbGljYXRlIGtl eXMgZXhpc3QuIiksCi0JCQkJIGVycnRhYmxlY29uc3RyYWludChhcmctPmluZGV4LmhlYXBSZWws Ci0JCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4LmluZGV4UmVsKSkp KTsKKwkJLyogVGhpcyBpcyBmYWlsLWZhc3QgY2hlY2ssIHNlZSBfYnRfbG9hZCBmb3IgZGV0YWls cy4gKi8KKwkJaWYgKGFyZy0+dW5pcXVlRGVhZElnbm9yZWQpCisJCXsKKwkJCWJvb2wJYW55X3R1 cGxlX2RlYWQsCisJCQkJCWNhbGxfYWdhaW4gPSBmYWxzZSwKKwkJCQkJaWdub3JlZDsKKworCQkJ VHVwbGVUYWJsZVNsb3QJKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25H ZXREZXNjcihhcmctPmluZGV4LmhlYXBSZWwpLAorCQkJCQkJCQkJCQkJCQkJICZUVFNPcHNCdWZm ZXJIZWFwVHVwbGUpOworCQkJSXRlbVBvaW50ZXJEYXRhIHRpZCA9IHR1cGxlMS0+dF90aWQ7CisK KwkJCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4o YXJnLT5pbmRleC5oZWFwUmVsKTsKKwkJCWFueV90dXBsZV9kZWFkID0gIXRhYmxlX2luZGV4X2Zl dGNoX3R1cGxlKGZldGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxsX2FnYWluLCAm aWdub3JlZCk7CisKKwkJCWlmICghYW55X3R1cGxlX2RlYWQpCisJCQl7CisJCQkJY2FsbF9hZ2Fp biA9IGZhbHNlOworCQkJCXRpZCA9IHR1cGxlMi0+dF90aWQ7CisJCQkJYW55X3R1cGxlX2RlYWQg PSAhdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0dXBsZTItPnRfdGlkLCBTbmFwc2hv dFNlbGYsIHNsb3QsICZjYWxsX2FnYWluLAorCQkJCQkJCQkJCQkJCQkgICZpZ25vcmVkKTsKKwkJ CX0KKworCQkJaWYgKGFueV90dXBsZV9kZWFkKQorCQkJeworCQkJCWVsb2coREVCVUc1LCAic2tp cHBpbmcgZHVwbGljYXRlIHZhbHVlcyBiZWNhdXNlIHNvbWUgb2YgdGhlbSBhcmUgZGVhZDogKCV1 LCV1KSB2cyAoJXUsJXUpIiwKKwkJCQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJnR1cGxl MS0+dF90aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnR1cGxlMS0+dF90 aWQpLAorCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmdHVwbGUyLT50X3RpZCksCisJ CQkJCSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdHVwbGUyLT50X3RpZCkpOworCisJCQkJ dW5pcXVlQ2hlY2tGYWlsID0gZmFsc2U7CisJCQl9CisJCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFi bGVTbG90KHNsb3QpOworCQkJdGFibGVfaW5kZXhfZmV0Y2hfZW5kKGZldGNoKTsKKwkJCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJCX0KKwkJaWYgKHVuaXF1 ZUNoZWNrRmFpbCkKKwkJeworCQkJaW5kZXhfZGVmb3JtX3R1cGxlKHR1cGxlMSwgdHVwRGVzLCB2 YWx1ZXMsIGlzbnVsbCk7CisKKwkJCWtleV9kZXNjID0gQnVpbGRJbmRleFZhbHVlRGVzY3JpcHRp b24oYXJnLT5pbmRleC5pbmRleFJlbCwgdmFsdWVzLCBpc251bGwpOworCisJCQkvKiBrZWVwIHRo aXMgZXJyb3IgbWVzc2FnZSBpbiBzeW5jIHdpdGggdGhlIHNhbWUgaW4gX2J0X2xvYWQgKi8KKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5JUVVFX1ZJT0xBVElPTiks CisJCQkJCQkJZXJybXNnKCJjb3VsZCBub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCBcIiVzXCIiLAor CQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4LmluZGV4UmVsKSks CisJCQkJCQkJa2V5X2Rlc2MgPyBlcnJkZXRhaWwoIktleSAlcyBpcyBkdXBsaWNhdGVkLiIsIGtl eV9kZXNjKSA6CisJCQkJCQkJZXJyZGV0YWlsKCJEdXBsaWNhdGUga2V5cyBleGlzdC4iKSwKKwkJ CQkJCQllcnJ0YWJsZWNvbnN0cmFpbnQoYXJnLT5pbmRleC5oZWFwUmVsLAorCQkJCQkJCQkJCQkg ICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4LmluZGV4UmVsKSkpKTsKKwkJfQog CX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKaW5kZXggZTRmZGVjYTM0MDIuLmQyMmE5Nzk3YWQwIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL25idHJlZS5oCkBAIC0xMzE0LDggKzEzMTQsMTAgQEAgZXh0ZXJuIGJvb2wgYnRwcm9w ZXJ0eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8sCiBleHRlcm4gY2hhciAqYnRidWlsZHBoYXNl bmFtZShpbnQ2NCBwaGFzZW51bSk7CiBleHRlcm4gSW5kZXhUdXBsZSBfYnRfdHJ1bmNhdGUoUmVs YXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LAogCQkJCQkJCSAgIEluZGV4VHVwbGUgZmly c3RyaWdodCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5KTsKK2V4dGVybiBpbnQJX2J0X2tlZXBfbmF0 dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmln aHQsCisJCQkJCQkgICBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIGJvb2wgKmhhc251bGxzKTsKIGV4 dGVybiBpbnQJX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFz dGxlZnQsCi0JCQkJCQkJCUluZGV4VHVwbGUgZmlyc3RyaWdodCk7CisJCQkJCQkJCUluZGV4VHVw bGUgZmlyc3RyaWdodCwgYm9vbCAqaGFzbnVsbHMpOwogZXh0ZXJuIGJvb2wgX2J0X2NoZWNrX25h dHRzKFJlbGF0aW9uIHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsIFBhZ2UgcGFnZSwKIAkJCQkJCQlP ZmZzZXROdW1iZXIgb2ZmbnVtKTsKIGV4dGVybiB2b2lkIF9idF9jaGVja190aGlyZF9wYWdlKFJl bGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IDMxMzM5NGQ5 MmM2Li5iMTkyMDk5OWYxMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC0xODAwLDkgKzE4MDAsOCBA QCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5z YWN0aW9uSWQgT2xkZXN0WG1pbiwKICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9y IGhlYXAgQU0sIGl0IG1pZ2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBB TXMgbGF0ZXIuCiAgKgotICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGNvbmN1cnJlbnQgIGluZGV4 IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQKLSAqIGZvciB0aGUgc2Nhbi4gVGhh dCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzIG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbgot ICogaG9yaXpvbiBwcm9wYWdhdGUuCisgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgaW5kZXggYnVp bGQgU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBmb3IgdGhlIHNjYW4uCisgKiBUaGF0IGxl YWRzIGZvciBjaGFuZ2luZyBzbmFwc2hvdHMgb24gdGhlIGZseSB0byBhbGxvdyB4bWluIGhvcml6 b24gcHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQogdGFibGVfaW5kZXhfYnVp bGRfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy90dXBsZXNvcnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oCmluZGV4IGVmNzlm MjU5ZjkzLi5lYjliYzMwZTVkYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVz b3J0LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKQEAgLTQyOSw2ICs0Mjks NyBAQCBleHRlcm4gVHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShS ZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCQkJCQkJICAgUmVsYXRpb24gaW5kZXhSZWwsCiAJCQkJ CQkJCQkJCQkgICBib29sIGVuZm9yY2VVbmlxdWUsCiAJCQkJCQkJCQkJCQkgICBib29sIHVuaXF1 ZU51bGxzTm90RGlzdGluY3QsCisJCQkJCQkJCQkJCQkgICBib29sCXVuaXF1ZURlYWRJZ25vcmVk LAogCQkJCQkJCQkJCQkJICAgaW50IHdvcmtNZW0sIFNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUs CiAJCQkJCQkJCQkJCQkgICBpbnQgc29ydG9wdCk7CiBleHRlcm4gVHVwbGVzb3J0c3RhdGUgKnR1 cGxlc29ydF9iZWdpbl9pbmRleF9oYXNoKFJlbGF0aW9uIGhlYXBSZWwsCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBz aG90cy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2lj X3Jlc2V0X3NuYXBzaG90cy5vdXQKaW5kZXggNTk1YTQwMDBjZTAuLjlmMDNmYTMwMzNjIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jl c2V0X3NuYXBzaG90cy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRz L2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CkBAIC00MSw3ICs0MSwxMSBAQCBFTkQ7 ICQkOwogLS0tLS0tLS0tLS0tLS0tLQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNF VCAocGFyYWxsZWxfd29ya2Vycz0wKTsKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90 cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVz ZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBz aG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkp OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2Jl Z2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKQEAgLTg2LDcgKzkwLDkgQEAgU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZl Jyk7CiAoMSByb3cpCiAKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2Vy ZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJP UCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogTk9USUNFOiAgbm90aWNl IHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFs aXplCi0tIAoyLjQzLjAKCg== --000000000000caf8fd062fc891e1 Content-Type: application/octet-stream; name="v16-0006-Add-STIR-Short-Term-Index-Replacement-access-met.patch" Content-Disposition: attachment; filename="v16-0006-Add-STIR-Short-Term-Index-Replacement-access-met.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7zd30oe6 RnJvbSBhNzhhMTBkOWQ4YmNlMDE4ZmMxNzhlZjllM2Q3ODdmYjYyN2RhZWQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyMSBEZWMgMjAyNCAxODozNjoxMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE2IDA2 LzEyXSBBZGQgU1RJUiAoU2hvcnQtVGVybSBJbmRleCBSZXBsYWNlbWVudCkgYWNjZXNzCiBtZXRo b2QKClRoaXMgcGF0Y2ggcHJvdmlkZXMgZm91bmRhdGlvbmFsIGluZnJhc3RydWN0dXJlIGZvciB1 cGNvbWluZyBlbmhhbmNlbWVudHMgdG8KY29uY3VycmVudCBpbmRleCBidWlsZHMgYnkgaW50cm9k dWNpbmc6CgotICoqaWlfQXV4aWxpYXJ5KiogaW4gYEluZGV4SW5mb2A6IEluZGljYXRlcyB0aGF0 IGFuIGluZGV4IGlzIGFuIGF1eGlsaWFyeQogIGluZGV4LCBzcGVjaWZpY2FsbHkgZm9yIHVzZSBk dXJpbmcgY29uY3VycmVudCBpbmRleCBidWlsZHMuCi0gKip2YWxpZGF0ZV9pbmRleCoqIGluIGBJ bmRleFZhY3V1bUluZm9gOiBTaWduYWxzIHdoZW4gYSB2YWN1dW0gb3IgY2xlYW51cAogIG9wZXJh dGlvbiBpcyB2YWxpZGF0aW5nIGEgbmV3bHkgYnVpbHQgaW5kZXggKGUuZy4sIGR1cmluZyBjb25j dXJyZW50IGJ1aWxkKS4KCkFkZGl0aW9uYWxseSwgYSBuZXcgKipTVElSIChTaG9ydC1UZXJtIElu ZGV4IFJlcGxhY2VtZW50KSoqIGFjY2VzcyBtZXRob2QgaXMKaW50cm9kdWNlZCwgaW50ZW5kZWQg c29sZWx5IGZvciBzaG9ydC1saXZlZCwgYXV4aWxpYXJ5IHVzYWdlLiBTVElSIGZ1bmN0aW9ucwph cyBhbiBlcGhlbWVyYWwgaGVscGVyIGR1cmluZyBjb25jdXJyZW50IGluZGV4IGJ1aWxkcywgdGVt cG9yYXJpbHkgc3RvcmluZyBUSURzCndpdGhvdXQgcHJvdmlkaW5nIHRoZSBmdWxsIGZlYXR1cmVz IG9mIGEgdHlwaWNhbCBpbmRleC4gQXMgc3VjaCwgaXQgcmFpc2VzCndhcm5pbmdzIG9yIGVycm9y cyB3aGVuIGFjY2Vzc2VkIG91dHNpZGUgaXRzIHNwZWNpYWxpemVkIHVzYWdlIHBhdGguCgpUaGVz ZSBjaGFuZ2VzIGxheSBlc3NlbnRpYWwgZ3JvdW5kd29yayBmb3IgZnVydGhlciBpbXByb3ZlbWVu dHMgdG8gY29uY3VycmVudAppbmRleCBidWlsZHMuCi0tLQogY29udHJpYi9wZ3N0YXR0dXBsZS9w Z3N0YXR0dXBsZS5jICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZpbGUg ICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9tZXNvbi5idWlsZCAgICAgICAgICAg fCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIvTWFrZWZpbGUgICAgICAgICB8ICAxOCAr CiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9tZXNvbi5idWlsZCAgICAgIHwgICA1ICsKIHNyYy9i YWNrZW5kL2FjY2Vzcy9zdGlyL3N0aXIuYyAgICAgICAgICAgfCA1NzMgKysrKysrKysrKysrKysr KysrKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICB8ICAgMSArCiBzcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNz L2dlbmFtLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0 aW9ucy5oICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oICAgICAg ICAgICAgICAgIHwgMTE3ICsrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdCAgICAg ICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5kYXQgICAgICAg fCAgIDQgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQgICAgICB8ICAgMiAr CiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgIHwgICA0ICsKIHNyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRl L3V0aWxzL2luZGV4X3NlbGZ1bmNzLmggICAgICAgfCAgIDggKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9hbXV0aWxzLm91dCAgICB8ICAgOCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9vcHJfc2FuaXR5Lm91dCB8ICAgNyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3Fs Lm91dCAgICAgICB8ICAyNCArLQogMjMgZmlsZXMgY2hhbmdlZCwgNzc3IGluc2VydGlvbnMoKyks IDE4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9z dGlyL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvYWNjZXNzL3N0aXIv bWVzb24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9z dGlyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCgpkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jIGIvY29udHJpYi9wZ3N0 YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCmluZGV4IGZmN2NjMDdkZjk5Li4wMDdlZmM0ZWQwYyAxMDA2 NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0dXBsZS5jCisrKyBiL2NvbnRyaWIv cGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwpAQCAtMjgyLDYgKzI4Miw5IEBAIHBnc3RhdF9yZWxh dGlvbihSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCQkJY2FzZSBTUEdJ U1RfQU1fT0lEOgogCQkJCWVyciA9ICJzcGdpc3QgaW5kZXgiOwogCQkJCWJyZWFrOworCQkJY2Fz ZSBTVElSX0FNX09JRDoKKwkJCQllcnIgPSAic3RpciBpbmRleCI7CisJCQkJYnJlYWs7CiAJCQlj YXNlIEJSSU5fQU1fT0lEOgogCQkJCWVyciA9ICJicmluIGluZGV4IjsKIAkJCQlicmVhazsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9NYWtlZmlsZQppbmRleCAxOTMyZDExZDE1NC4uY2Q2NTI0YTU0YWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvTWFrZWZp bGUKQEAgLTksNiArOSw2IEBAIHRvcF9idWlsZGRpciA9IC4uLy4uLy4uCiBpbmNsdWRlICQodG9w X2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiAKIFNVQkRJUlMJICAgID0gYnJpbiBjb21t b24gZ2luIGdpc3QgaGFzaCBoZWFwIGluZGV4IG5idHJlZSBybWdyZGVzYyBzcGdpc3QgXAotCQkJ ICBzZXF1ZW5jZSB0YWJsZSB0YWJsZXNhbXBsZSB0cmFuc2FtCisJCQkgIHN0aXIgc2VxdWVuY2Ug dGFibGUgdGFibGVzYW1wbGUgdHJhbnNhbQogCiBpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL2Jh Y2tlbmQvY29tbW9uLm1rCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggM2I5 MWQwMjYwNWEuLjEzNDYzNmM0Y2M5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CkBAIC0zMDc0LDYgKzMwNzQsNyBAQCBsYXp5X3ZhY3V1bV9vbmVfaW5kZXgoUmVsYXRpb24gaW5k cmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCWl2aW5mby5tZXNzYWdlX2xldmVs ID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZv LnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRlZ3k7CisJaXZpbmZvLnZhbGlkYXRlX2luZGV4ID0g ZmFsc2U7CiAKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24uCkBA IC0zMTI1LDYgKzMxMjYsNyBAQCBsYXp5X2NsZWFudXBfb25lX2luZGV4KFJlbGF0aW9uIGluZHJl 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 IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDFmM2I2NjBmNGIKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMKQEAgLTAsMCArMSw1NzMgQEAKKy8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIHN0aXIuYworICoJICBJbXBsZW1lbnRhdGlvbiBvZiBTaG9y dC1UZXJtIEluZGV4IFJlcGxhY2VtZW50LgorICoKKyAqIFNUSVIgaXMgYSBzcGVjaWFsaXplZCBh Y2Nlc3MgbWV0aG9kIHR5cGUgZGVzaWduZWQgZm9yIHRlbXBvcmFyeSBzdG9yYWdlCisgKiBvZiBU SUQgdmFsdWVzIGR1cmluZyBjb25jdXJlcm50IGluZGV4IGJ1aWxkIG9wZXJhdGlvbnMuCisgKgor ICogVGhlIHR5cGljYWwgbGlmZWN5Y2xlIG9mIGEgU1RJUiBpbmRleCBpczoKKyAqIDEuIGNyZWF0 ZWQgYXMgYW4gYXV4aWxpYXJ5IGluZGV4IGZvciBDSUMvUklDCisgKiAyLiBhY2NlcHRzIGluc2Vy dHMgZm9yIGEgcGVyaW9kCisgKiAzLiBzdGlyYnVsa2RlbGV0ZSBjYWxsZWQgZHVyaW5nIGluZGV4 IHZhbGlkYXRpb24gcGhhc2UKKyAqIDUuIGdldHMgZHJvcHBlZAorICoKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Rpci9zdGlyLmMK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNp bmNsdWRlICJhY2Nlc3Mvc3Rpci5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUg ImFjY2Vzcy9hbXZhbGlkYXRlLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgor I2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfYW1vcC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFz cy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKKyNpbmNsdWRlICJjb21tYW5k cy92YWN1dW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgorI2luY2x1ZGUgInV0aWxz L2NhdGNhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorI2luY2x1ZGUgInV0 aWxzL2luZGV4X3NlbGZ1bmNzLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNs dWRlICJ1dGlscy9yZWdwcm9jLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworLyoK KyAqIFN0aXIgaGFuZGxlciBmdW5jdGlvbjogcmV0dXJuIEluZGV4QW1Sb3V0aW5lIHdpdGggYWNj ZXNzIG1ldGhvZCBwYXJhbWV0ZXJzCisgKiBhbmQgY2FsbGJhY2tzLgorICovCitEYXR1bQorc3Rp cmhhbmRsZXIoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlJbmRleEFtUm91dGluZSAqYW1yb3V0aW5l ID0gbWFrZU5vZGUoSW5kZXhBbVJvdXRpbmUpOworCisJLyogU2V0IFNUSVItc3BlY2lmaWMgc3Ry YXRlZ3kgYW5kIHByb2NlZHVyZSBudW1iZXJzICovCisJYW1yb3V0aW5lLT5hbXN0cmF0ZWdpZXMg PSBTVElSX05TVFJBVEVHSUVTOworCWFtcm91dGluZS0+YW1zdXBwb3J0ID0gU1RJUl9OUFJPQzsK KwlhbXJvdXRpbmUtPmFtb3B0c3Byb2NudW0gPSBTVElSX09QVElPTlNfUFJPQzsKKworCS8qIFNU SVIgZG9lc24ndCBzdXBwb3J0IG1vc3QgaW5kZXggb3BlcmF0aW9ucyAqLworCWFtcm91dGluZS0+ YW1jYW5vcmRlciA9IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5vcmRlcmJ5b3AgPSBmYWxzZTsK KwlhbXJvdXRpbmUtPmFtY2FuYmFja3dhcmQgPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtY2FudW5p cXVlID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNhbm11bHRpY29sID0gdHJ1ZTsKKwlhbXJvdXRp bmUtPmFtb3B0aW9uYWxrZXkgPSB0cnVlOworCWFtcm91dGluZS0+YW1zZWFyY2hhcnJheSA9IGZh bHNlOworCWFtcm91dGluZS0+YW1zZWFyY2hudWxscyA9IGZhbHNlOworCWFtcm91dGluZS0+YW1z dG9yYWdlID0gZmFsc2U7CisJYW1yb3V0aW5lLT5hbWNsdXN0ZXJhYmxlID0gZmFsc2U7CisJYW1y b3V0aW5lLT5hbXByZWRsb2NrcyA9IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5wYXJhbGxlbCA9 IGZhbHNlOworCWFtcm91dGluZS0+YW1jYW5idWlsZHBhcmFsbGVsID0gZmFsc2U7CisJYW1yb3V0 aW5lLT5hbWNhbmluY2x1ZGUgPSB0cnVlOworCWFtcm91dGluZS0+YW11c2VtYWludGVuYW5jZXdv cmttZW0gPSBmYWxzZTsKKwlhbXJvdXRpbmUtPmFtcGFyYWxsZWx2YWN1dW1vcHRpb25zID0KKwkJ CVZBQ1VVTV9PUFRJT05fUEFSQUxMRUxfQlVMS0RFTCB8IFZBQ1VVTV9PUFRJT05fUEFSQUxMRUxf Q0xFQU5VUDsKKwlhbXJvdXRpbmUtPmFta2V5dHlwZSA9IEludmFsaWRPaWQ7CisKKwkvKiBTZXQg dXAgZnVuY3Rpb24gY2FsbGJhY2tzICovCisJYW1yb3V0aW5lLT5hbWJ1aWxkID0gc3RpcmJ1aWxk OworCWFtcm91dGluZS0+YW1idWlsZGVtcHR5ID0gc3RpcmJ1aWxkZW1wdHk7CisJYW1yb3V0aW5l LT5hbWluc2VydCA9IHN0aXJpbnNlcnQ7CisJYW1yb3V0aW5lLT5hbWluc2VydGNsZWFudXAgPSBO VUxMOworCWFtcm91dGluZS0+YW1idWxrZGVsZXRlID0gc3RpcmJ1bGtkZWxldGU7CisJYW1yb3V0 aW5lLT5hbXZhY3V1bWNsZWFudXAgPSBzdGlydmFjdXVtY2xlYW51cDsKKwlhbXJvdXRpbmUtPmFt Y2FucmV0dXJuID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtY29zdGVzdGltYXRlID0gc3RpcmNvc3Rl c3RpbWF0ZTsKKwlhbXJvdXRpbmUtPmFtb3B0aW9ucyA9IHN0aXJvcHRpb25zOworCWFtcm91dGlu ZS0+YW1wcm9wZXJ0eSA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWJ1aWxkcGhhc2VuYW1lID0gTlVM TDsKKwlhbXJvdXRpbmUtPmFtdmFsaWRhdGUgPSBzdGlydmFsaWRhdGU7CisJYW1yb3V0aW5lLT5h bWFkanVzdG1lbWJlcnMgPSBOVUxMOworCWFtcm91dGluZS0+YW1iZWdpbnNjYW4gPSBzdGlyYmVn aW5zY2FuOworCWFtcm91dGluZS0+YW1yZXNjYW4gPSBzdGlycmVzY2FuOworCWFtcm91dGluZS0+ YW1nZXR0dXBsZSA9IE5VTEw7CisJYW1yb3V0aW5lLT5hbWdldGJpdG1hcCA9IE5VTEw7CisJYW1y b3V0aW5lLT5hbWVuZHNjYW4gPSBzdGlyZW5kc2NhbjsKKwlhbXJvdXRpbmUtPmFtbWFya3BvcyA9 IE5VTEw7CisJYW1yb3V0aW5lLT5hbXJlc3RycG9zID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtZXN0 aW1hdGVwYXJhbGxlbHNjYW4gPSBOVUxMOworCWFtcm91dGluZS0+YW1pbml0cGFyYWxsZWxzY2Fu ID0gTlVMTDsKKwlhbXJvdXRpbmUtPmFtcGFyYWxsZWxyZXNjYW4gPSBOVUxMOworCisJUEdfUkVU VVJOX1BPSU5URVIoYW1yb3V0aW5lKTsKK30KKworLyoKKyAqIFZhbGlkYXRlcyBvcGVyYXRvciBj bGFzcyBmb3IgU1RJUiBpbmRleC4KKyAqCisgKiBTVElSIGlzIG5vdCBhbiByZWFsIGluZGV4LCBz byB2YWxpZGF0aW8gbWF5IGJlIHNraXBwZWQuCisgKiBCdXQgd2UgZG8gaXQganVzdCBmb3IgY29u c2lzdGVuY3kuCisgKi8KK2Jvb2wKK3N0aXJ2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKK3sKKwli b29sIHJlc3VsdCA9IHRydWU7CisJSGVhcFR1cGxlIGNsYXNzdHVwOworCUZvcm1fcGdfb3BjbGFz cyBjbGFzc2Zvcm07CisJT2lkIG9wZmFtaWx5b2lkOworCUhlYXBUdXBsZSBmYW1pbHl0dXA7CisJ Rm9ybV9wZ19vcGZhbWlseSBmYW1pbHlmb3JtOworCWNoYXIgKm9wZmFtaWx5bmFtZTsKKwlDYXRD TGlzdCAqcHJvY2xpc3QsCisJCQkqb3BybGlzdDsKKwlpbnQgaTsKKworCS8qIEZldGNoIG9wY2xh c3MgaW5mb3JtYXRpb24gKi8KKwljbGFzc3R1cCA9IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9i amVjdElkR2V0RGF0dW0ob3BjbGFzc29pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFz c3R1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGVyYXRvciBj bGFzcyAldSIsIG9wY2xhc3NvaWQpOworCWNsYXNzZm9ybSA9IChGb3JtX3BnX29wY2xhc3MpIEdF VFNUUlVDVChjbGFzc3R1cCk7CisKKwlvcGZhbWlseW9pZCA9IGNsYXNzZm9ybS0+b3BjZmFtaWx5 OworCisKKwkvKiBGZXRjaCBvcGZhbWlseSBpbmZvcm1hdGlvbiAqLworCWZhbWlseXR1cCA9IFNl YXJjaFN5c0NhY2hlMShPUEZBTUlMWU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseW9pZCkp OworCWlmICghSGVhcFR1cGxlSXNWYWxpZChmYW1pbHl0dXApKQorCQllbG9nKEVSUk9SLCAiY2Fj aGUgbG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0b3IgZmFtaWx5ICV1Iiwgb3BmYW1pbHlvaWQpOwor CWZhbWlseWZvcm0gPSAoRm9ybV9wZ19vcGZhbWlseSkgR0VUU1RSVUNUKGZhbWlseXR1cCk7CisK KwlvcGZhbWlseW5hbWUgPSBOYW1lU3RyKGZhbWlseWZvcm0tPm9wZm5hbWUpOworCisJLyogRmV0 Y2ggYWxsIG9wZXJhdG9ycyBhbmQgc3VwcG9ydCBmdW5jdGlvbnMgb2YgdGhlIG9wZmFtaWx5ICov CisJb3BybGlzdCA9IFNlYXJjaFN5c0NhY2hlTGlzdDEoQU1PUFNUUkFURUdZLCBPYmplY3RJZEdl dERhdHVtKG9wZmFtaWx5b2lkKSk7CisJcHJvY2xpc3QgPSBTZWFyY2hTeXNDYWNoZUxpc3QxKEFN UFJPQ05VTSwgT2JqZWN0SWRHZXREYXR1bShvcGZhbWlseW9pZCkpOworCisJLyogQ2hlY2sgaW5k aXZpZHVhbCBvcGVyYXRvcnMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgb3BybGlzdC0+bl9tZW1iZXJz OyBpKyspCisJeworCQlIZWFwVHVwbGUgb3BydHVwID0gJm9wcmxpc3QtPm1lbWJlcnNbaV0tPnR1 cGxlOworCQlGb3JtX3BnX2Ftb3Agb3ByZm9ybSA9IChGb3JtX3BnX2Ftb3ApIEdFVFNUUlVDVChv cHJ0dXApOworCisJCS8qIENoZWNrIGl0J3MgYWxsb3dlZCBzdHJhdGVneSBmb3Igc3RpciAqLwor CQlpZiAob3ByZm9ybS0+YW1vcHN0cmF0ZWd5IDwgMSB8fAorCQkJb3ByZm9ybS0+YW1vcHN0cmF0 ZWd5ID4gU1RJUl9OU1RSQVRFR0lFUykKKwkJeworCQkJZXJlcG9ydChJTkZPLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygi c3RpciBvcGZhbWlseSAlcyBjb250YWlucyBvcGVyYXRvciAlcyB3aXRoIGludmFsaWQgc3RyYXRl Z3kgbnVtYmVyICVkIiwKKwkJCQkJCQkJICAgb3BmYW1pbHluYW1lLAorCQkJCQkJCQkgICBmb3Jt YXRfb3BlcmF0b3Iob3ByZm9ybS0+YW1vcG9wciksCisJCQkJCQkJCSAgIG9wcmZvcm0tPmFtb3Bz dHJhdGVneSkpKTsKKwkJCXJlc3VsdCA9IGZhbHNlOworCQl9CisKKwkJLyogc3RpciBkb2Vzbid0 IHN1cHBvcnQgT1JERVIgQlkgb3BlcmF0b3JzICovCisJCWlmIChvcHJmb3JtLT5hbW9wcHVycG9z ZSAhPSBBTU9QX1NFQVJDSCB8fAorCQkJT2lkSXNWYWxpZChvcHJmb3JtLT5hbW9wc29ydGZhbWls eSkpCisJCXsKKwkJCWVyZXBvcnQoSU5GTywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCQllcnJtc2coInN0aXIgb3BmYW1pbHkgJXMgY29u dGFpbnMgaW52YWxpZCBPUkRFUiBCWSBzcGVjaWZpY2F0aW9uIGZvciBvcGVyYXRvciAlcyIsCisJ CQkJCQkJCSAgIG9wZmFtaWx5bmFtZSwKKwkJCQkJCQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZv cm0tPmFtb3BvcHIpKSkpOworCQkJcmVzdWx0ID0gZmFsc2U7CisJCX0KKworCQkvKiBDaGVjayBv cGVyYXRvciBzaWduYXR1cmUgLS0tIHNhbWUgZm9yIGFsbCBzdGlyIHN0cmF0ZWdpZXMgKi8KKwkJ aWYgKCFjaGVja19hbW9wX3NpZ25hdHVyZShvcHJmb3JtLT5hbW9wb3ByLCBCT09MT0lELAorCQkJ CQkJCQkgIG9wcmZvcm0tPmFtb3BsZWZ0dHlwZSwKKwkJCQkJCQkJICBvcHJmb3JtLT5hbW9wcmln aHR0eXBlKSkKKwkJeworCQkJZXJlcG9ydChJTkZPLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJCWVycm1zZygic3RpciBvcGZhbWlseSAl cyBjb250YWlucyBvcGVyYXRvciAlcyB3aXRoIHdyb25nIHNpZ25hdHVyZSIsCisJCQkJCQkJCSAg IG9wZmFtaWx5bmFtZSwKKwkJCQkJCQkJICAgZm9ybWF0X29wZXJhdG9yKG9wcmZvcm0tPmFtb3Bv cHIpKSkpOworCQkJcmVzdWx0ID0gZmFsc2U7CisJCX0KKwl9CisKKworCVJlbGVhc2VDYXRDYWNo ZUxpc3QocHJvY2xpc3QpOworCVJlbGVhc2VDYXRDYWNoZUxpc3Qob3BybGlzdCk7CisJUmVsZWFz ZVN5c0NhY2hlKGZhbWlseXR1cCk7CisJUmVsZWFzZVN5c0NhY2hlKGNsYXNzdHVwKTsKKworCXJl dHVybiByZXN1bHQ7Cit9CisKKworLyoKKyAqIEluaXRpYWxpemUgbWV0YXBhZ2Ugb2YgYSBTVElS IGluZGV4LgorICogVGhlIHNraXBJbnNlcnRzIGZsYWcgZGV0ZXJtaW5lcyBpZiBuZXcgaW5zZXJ0 cyB3aWxsIGJlIGFjY2VwdGVkIG9yIHNraXBwZWQuCisgKi8KK3ZvaWQKK1N0aXJGaWxsTWV0YXBh Z2UoUmVsYXRpb24gaW5kZXgsIFBhZ2UgbWV0YVBhZ2UsIGJvb2wgc2tpcEluc2VydHMpCit7CisJ U3Rpck1ldGFQYWdlRGF0YSAqbWV0YWRhdGE7CisKKwlTdGlySW5pdFBhZ2UobWV0YVBhZ2UsIFNU SVJfTUVUQSk7CisJbWV0YWRhdGEgPSBTdGlyUGFnZUdldE1ldGEobWV0YVBhZ2UpOworCW1lbXNl dChtZXRhZGF0YSwgMCwgc2l6ZW9mKFN0aXJNZXRhUGFnZURhdGEpKTsKKwltZXRhZGF0YS0+bWFn aWNrTnVtYmVyID0gU1RJUl9NQUdJQ0tfTlVNQkVSOworCW1ldGFkYXRhLT5za2lwSW5zZXJ0cyA9 IHNraXBJbnNlcnRzOworCSgoUGFnZUhlYWRlcikgbWV0YVBhZ2UpLT5wZF9sb3dlciArPSBzaXpl b2YoU3Rpck1ldGFQYWdlRGF0YSk7Cit9CisKKy8qCisgKiBDcmVhdGUgYW5kIGluaXRpYWxpemUg dGhlIG1ldGFwYWdlIGZvciBhIFNUSVIgaW5kZXguCisgKiBUaGlzIGlzIGNhbGxlZCBkdXJpbmcg aW5kZXggY3JlYXRpb24uCisgKi8KK3ZvaWQKK1N0aXJJbml0TWV0YXBhZ2UoUmVsYXRpb24gaW5k ZXgsIEZvcmtOdW1iZXIgZm9ya251bSkKK3sKKwlCdWZmZXIgbWV0YUJ1ZmZlcjsKKwlQYWdlIG1l dGFQYWdlOworCisJQXNzZXJ0KCFSZWxhdGlvbk5lZWRzV0FMKGluZGV4KSk7CisJLyoKKwkgKiBN YWtlIGEgbmV3IHBhZ2U7IHNpbmNlIGl0IGlzIGZpcnN0IHBhZ2UgaXQgc2hvdWxkIGJlIGFzc29j aWF0ZWQgd2l0aAorCSAqIGJsb2NrIG51bWJlciAwIChTVElSX01FVEFQQUdFX0JMS05PKS4gIE5v IG5lZWQgdG8gaG9sZCB0aGUgZXh0ZW5zaW9uCisJICogbG9jayBiZWNhdXNlIHRoZXJlIGNhbm5v dCBiZSBjb25jdXJyZW50IGluc2VydGVycyB5ZXQuCisJICovCisJbWV0YUJ1ZmZlciA9IFJlYWRC dWZmZXJFeHRlbmRlZChpbmRleCwgZm9ya251bSwgUF9ORVcsIFJCTV9OT1JNQUwsIE5VTEwpOwor CVNUQVJUX0NSSVRfU0VDVElPTigpOworCUxvY2tCdWZmZXIobWV0YUJ1ZmZlciwgQlVGRkVSX0xP Q0tfRVhDTFVTSVZFKTsKKwlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIobWV0YUJ1ZmZlcikg PT0gU1RJUl9NRVRBUEFHRV9CTEtOTyk7CisKKwltZXRhUGFnZSA9ICBCdWZmZXJHZXRQYWdlKG1l dGFCdWZmZXIpOworCVN0aXJGaWxsTWV0YXBhZ2UoaW5kZXgsIG1ldGFQYWdlLCBmb3JrbnVtID09 IElOSVRfRk9SS05VTSk7CisKKwlNYXJrQnVmZmVyRGlydHkobWV0YUJ1ZmZlcik7CisJRU5EX0NS SVRfU0VDVElPTigpOworCVVubG9ja1JlbGVhc2VCdWZmZXIobWV0YUJ1ZmZlcik7Cit9CisKKy8q CisgKiBJbml0aWFsaXplIGFueSBwYWdlIG9mIGEgc3RpciBpbmRleC4KKyAqLwordm9pZAorU3Rp ckluaXRQYWdlKFBhZ2UgcGFnZSwgdWludDE2IGZsYWdzKQoreworCVN0aXJQYWdlT3BhcXVlIG9w YXF1ZTsKKworCVBhZ2VJbml0KHBhZ2UsIEJMQ0tTWiwgc2l6ZW9mKFN0aXJQYWdlT3BhcXVlRGF0 YSkpOworCisJb3BhcXVlID0gU3RpclBhZ2VHZXRPcGFxdWUocGFnZSk7CisJb3BhcXVlLT5mbGFn cyA9IGZsYWdzOworCW9wYXF1ZS0+c3Rpcl9wYWdlX2lkID0gU1RJUl9QQUdFX0lEOworfQorCisv KgorICogQWRkIGEgdHVwbGUgdG8gYSBTVElSIHBhZ2UuIFJldHVybnMgZmFsc2UgaWYgdHVwbGUg ZG9lc24ndCBmaXQuCisgKiBUaGUgdHVwbGUgaXMgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGUgcGFn ZS4KKyAqLworc3RhdGljIGJvb2wKK1N0aXJQYWdlQWRkSXRlbShQYWdlIHBhZ2UsIFN0aXJUdXBs ZSAqdHVwbGUpCit7CisJU3RpclR1cGxlICppdHVwOworCVN0aXJQYWdlT3BhcXVlIG9wYXF1ZTsK KwlQb2ludGVyIHB0cjsKKworCS8qIFdlIHNob3VsZG4ndCBiZSBwb2ludGVkIHRvIGFuIGludmFs aWQgcGFnZSAqLworCUFzc2VydCghUGFnZUlzTmV3KHBhZ2UpKTsKKworCS8qIERvZXMgbmV3IHR1 cGxlIGZpdCBvbiB0aGUgcGFnZT8gKi8KKwlpZiAoU3RpclBhZ2VHZXRGcmVlU3BhY2Uoc3RhdGUs IHBhZ2UpIDwgc2l6ZW9mKFN0aXJUdXBsZSkpCisJCXJldHVybiBmYWxzZTsKKworCS8qIENvcHkg bmV3IHR1cGxlIHRvIHRoZSBlbmQgb2YgcGFnZSAqLworCW9wYXF1ZSA9IFN0aXJQYWdlR2V0T3Bh cXVlKHBhZ2UpOworCWl0dXAgPSBTdGlyUGFnZUdldFR1cGxlKHBhZ2UsIG9wYXF1ZS0+bWF4b2Zm ICsgMSk7CisJbWVtY3B5KChQb2ludGVyKSBpdHVwLCAoUG9pbnRlcikgdHVwbGUsIHNpemVvZihT dGlyVHVwbGUpKTsKKworCS8qIEFkanVzdCBtYXhvZmYgYW5kIHBkX2xvd2VyICovCisJb3BhcXVl LT5tYXhvZmYrKzsKKwlwdHIgPSAoUG9pbnRlcikgU3RpclBhZ2VHZXRUdXBsZShwYWdlLCBvcGFx dWUtPm1heG9mZiArIDEpOworCSgoUGFnZUhlYWRlcikgcGFnZSktPnBkX2xvd2VyID0gcHRyIC0g cGFnZTsKKworCS8qIEFzc2VydCB3ZSBkaWRuJ3Qgb3ZlcnJ1biBhdmFpbGFibGUgc3BhY2UgKi8K KwlBc3NlcnQoKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfbG93ZXIgPD0gKChQYWdlSGVhZGVyKSBw YWdlKS0+cGRfdXBwZXIpOworCXJldHVybiB0cnVlOworfQorCisvKgorICogSW5zZXJ0IGEgbmV3 IHR1cGxlIGludG8gYSBTVElSIGluZGV4LgorICovCitib29sCitzdGlyaW5zZXJ0KFJlbGF0aW9u IGluZGV4LCBEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwsCisJCSAgSXRlbVBvaW50ZXIgaHRf Y3RpZCwgUmVsYXRpb24gaGVhcFJlbCwKKwkJICBJbmRleFVuaXF1ZUNoZWNrIGNoZWNrVW5pcXVl LAorCQkgIGJvb2wgaW5kZXhVbmNoYW5nZWQsCisJCSAgc3RydWN0IEluZGV4SW5mbyAqaW5kZXhJ bmZvKQoreworCVN0aXJUdXBsZSAqaXR1cDsKKwlNZW1vcnlDb250ZXh0IG9sZEN0eDsKKwlNZW1v cnlDb250ZXh0IGluc2VydEN0eDsKKwlTdGlyTWV0YVBhZ2VEYXRhICptZXRhRGF0YTsKKwlCdWZm ZXIgYnVmZmVyLAorCQkJbWV0YUJ1ZmZlcjsKKwlQYWdlIHBhZ2U7CisJdWludDE2IGJsa05vOwor CisJLyogQ3JlYXRlIHRlbXBvcmFyeSBjb250ZXh0IGZvciBpbnNlcnQgb3BlcmF0aW9uICovCisJ aW5zZXJ0Q3R4ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAor CQkJCQkJCQkJICAiU3RpciBpbnNlcnQgdGVtcG9yYXJ5IGNvbnRleHQiLAorCQkJCQkJCQkJICBB TExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKworCW9sZEN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhpbnNlcnRDdHgpOworCisJLyogQ3JlYXRlIG5ldyB0dXBsZSB3aXRoIGhlYXAgcG9pbnRlciAq LworCWl0dXAgPSAoU3RpclR1cGxlICopIHBhbGxvYzAoc2l6ZW9mKFN0aXJUdXBsZSkpOworCWl0 dXAtPmhlYXBQdHIgPSAqaHRfY3RpZDsKKworCUFzc2VydCghUmVsYXRpb25OZWVkc1dBTChpbmRl eCkpOworCW1ldGFCdWZmZXIgPSBSZWFkQnVmZmVyKGluZGV4LCBTVElSX01FVEFQQUdFX0JMS05P KTsKKworCWZvciAoOzspCisJeworCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NL X1NIQVJFKTsKKwkJbWV0YURhdGEgPSBTdGlyUGFnZUdldE1ldGEoQnVmZmVyR2V0UGFnZShtZXRh QnVmZmVyKSk7CisJCS8qIENoZWNrIGlmIGluc2VydHMgYXJlIGFsbG93ZWQgKi8KKwkJaWYgKG1l dGFEYXRhLT5za2lwSW5zZXJ0cykKKwkJeworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihtZXRhQnVm ZmVyKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCQlibGtObyA9IG1ldGFEYXRhLT5sYXN0Qmxr Tm87CisJCS8qIERvbid0IGhvbGQgbWV0YWJ1ZmZlciBsb2NrIHdoaWxlIGRvaW5nIGluc2VydCAq LworCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisKKwkJaWYg KGJsa05vID4gMCkKKwkJeworCQkJYnVmZmVyID0gUmVhZEJ1ZmZlcihpbmRleCwgYmxrTm8pOwor CQkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJCQlTVEFSVF9D UklUX1NFQ1RJT04oKTsKKworCQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKKworCQkJ QXNzZXJ0KCFQYWdlSXNOZXcocGFnZSkpOworCisJCQkvKiBUcnkgdG8gYWRkIHR1cGxlIHRvIGV4 aXN0aW5nIHBhZ2UgKi8KKwkJCWlmIChTdGlyUGFnZUFkZEl0ZW0ocGFnZSwgaXR1cCkpCisJCQl7 CisJCQkJLyogU3VjY2VzcyEgIEFwcGx5IHRoZSBjaGFuZ2UsIGNsZWFuIHVwLCBhbmQgZXhpdCAq LworCQkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQkJCUVORF9DUklUX1NFQ1RJT04oKTsK KworCQkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJCQlSZWxlYXNlQnVmZmVyKG1l dGFCdWZmZXIpOworCQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDdHgpOworCQkJCU1lbW9y eUNvbnRleHREZWxldGUoaW5zZXJ0Q3R4KTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisKKwkJ CUVORF9DUklUX1NFQ1RJT04oKTsKKwkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKwkJ fQorCisJCS8qIE5lZWQgdG8gYWRkIG5ldyBwYWdlIC0gZ2V0IGV4Y2x1c2l2ZSBsb2NrIG9uIG1l dGEgcGFnZSAqLworCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lW RSk7CisKKwkJbWV0YURhdGEgPSBTdGlyUGFnZUdldE1ldGEoQnVmZmVyR2V0UGFnZShtZXRhQnVm ZmVyKSk7CisJCS8qIENoZWNrIGlmIGFub3RoZXIgYmFja2VuZCBhbHJlYWR5IGV4dGVuZGVkIHRo ZSBpbmRleCAqLworCisJCWlmIChibGtObyAhPSBtZXRhRGF0YS0+bGFzdEJsa05vKQorCQl7CisJ CQlBc3NlcnQoYmxrTm8gPCBtZXRhRGF0YS0+bGFzdEJsa05vKTsKKwkJCS8qIFNvbWVvbmUgZWxz ZSBpbnNlcnRlZCB0aGUgbmV3IHBhZ2UgaW50byB0aGUgaW5kZXgsIGxldHMgdHJ5IGFnYWluICov CisJCQlMb2NrQnVmZmVyKG1ldGFCdWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisJCQljb250 aW51ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIE11c3QgZXh0ZW5kIHRoZSBmaWxlICovCisJ CQlidWZmZXIgPSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwgTUFJTl9GT1JLTlVN LCBOVUxMLAorCQkJCQkJCQkJICAgRUJfTE9DS19GSVJTVCk7CisJCQlwYWdlID0gQnVmZmVyR2V0 UGFnZShidWZmZXIpOworCQkJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CisKKwkJCVN0aXJJbml0UGFn ZShwYWdlLCAwKTsKKworCQkJaWYgKCFTdGlyUGFnZUFkZEl0ZW0ocGFnZSwgaXR1cCkpCisJCQl7 CisJCQkJLyogV2Ugc2hvdWxkbid0IGJlIGhlcmUgc2luY2Ugd2UncmUgaW5zZXJ0aW5nIHRvIGFu IGVtcHR5IHBhZ2UgKi8KKwkJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGFkZCBuZXcgc3RpciB0 dXBsZSB0byBlbXB0eSBwYWdlIik7CisJCQl9CisKKwkJCS8qIFVwZGF0ZSBtZXRhIHBhZ2Ugd2l0 aCBuZXcgbGFzdCBibG9jayBudW1iZXIgKi8KKwkJCW1ldGFEYXRhLT5sYXN0QmxrTm8gPSBCdWZm ZXJHZXRCbG9ja051bWJlcihidWZmZXIpOworCisJCQlNYXJrQnVmZmVyRGlydHkobWV0YUJ1ZmZl cik7CisJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKworCQkJRU5EX0NSSVRfU0VDVElPTigp OworCisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJCQlVbmxvY2tSZWxlYXNlQnVm ZmVyKG1ldGFCdWZmZXIpOworCisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKKwkJ CU1lbW9yeUNvbnRleHREZWxldGUoaW5zZXJ0Q3R4KTsKKworCQkJcmV0dXJuIGZhbHNlOworCQl9 CisJfQorfQorCisvKgorICogU1RJUiBkb2Vzbid0IHN1cHBvcnQgc2NhbnMgLSB0aGVzZSBmdW5j dGlvbnMgYWxsIGVycm9yIG91dAorICovCitJbmRleFNjYW5EZXNjIHN0aXJiZWdpbnNjYW4oUmVs YXRpb24gciwgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKQoreworCWVyZXBvcnQoRVJST1IsIChl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwgZXJybXNnKCJcIiVzXCIgaXMg bm90IGEgbm90IGltcGxlbWVudGVkIiwgX19mdW5jX18pKSk7Cit9CisKK3ZvaWQKK3N0aXJyZXNj YW4oSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2NhbmtleXMsCisJ CSAgU2NhbktleSBvcmRlcmJ5cywgaW50IG5vcmRlcmJ5cykKK3sKKwllcmVwb3J0KEVSUk9SLCAo ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiXCIlc1wiIGlz IG5vdCBhIG5vdCBpbXBsZW1lbnRlZCIsIF9fZnVuY19fKSkpOworfQorCit2b2lkIHN0aXJlbmRz Y2FuKEluZGV4U2NhbkRlc2Mgc2NhbikKK3sKKwllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIG5vdCBp bXBsZW1lbnRlZCIsIF9fZnVuY19fKSkpOworfQorCisvKgorICogQnVpbGQgYSBTVElSIGluZGV4 IC0gb25seSBhbGxvd2VkIGZvciBhdXhpbGlhcnkgaW5kZXhlcy4KKyAqIEp1c3QgaW5pdGlhbGl6 ZXMgdGhlIG1ldGEgcGFnZSB3aXRob3V0IGFueSBoZWFwIHNjYW5zLgorICovCitJbmRleEJ1aWxk UmVzdWx0ICpzdGlyYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCisJCQkJCQkg ICBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleEluZm8pCit7CisJSW5kZXhCdWlsZFJlc3VsdCAqcmVz dWx0OworCisJaWYgKCFpbmRleEluZm8tPmlpX0F1eGlsaWFyeSkKKwkJZXJlcG9ydChFUlJPUiwg KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBlcnJtc2coIlNUSVIgaW5k ZXhlcyBhcmUgbm90IHN1cHBvcnRlZCB0byBiZSBidWlsdCIpKSk7CisKKwlTdGlySW5pdE1ldGFw YWdlKGluZGV4LCBNQUlOX0ZPUktOVU0pOworCisJcmVzdWx0ID0gKEluZGV4QnVpbGRSZXN1bHQg KikgcGFsbG9jKHNpemVvZihJbmRleEJ1aWxkUmVzdWx0KSk7CisJcmVzdWx0LT5oZWFwX3R1cGxl cyA9IDA7CisJcmVzdWx0LT5pbmRleF90dXBsZXMgPSAwOworCXJldHVybiByZXN1bHQ7Cit9CisK K3ZvaWQgc3RpcmJ1aWxkZW1wdHkoUmVsYXRpb24gaW5kZXgpCit7CisJU3RpckluaXRNZXRhcGFn ZShpbmRleCwgSU5JVF9GT1JLTlVNKTsKK30KKworSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGly YnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sCisJCQkJCQkJCQkgSW5kZXhCdWxrRGVs ZXRlUmVzdWx0ICpzdGF0cywKKwkJCQkJCQkJCSBJbmRleEJ1bGtEZWxldGVDYWxsYmFjayBjYWxs YmFjaywKKwkJCQkJCQkJCSB2b2lkICpjYWxsYmFja19zdGF0ZSkKK3sKKwlSZWxhdGlvbiBpbmRl eCA9IGluZm8tPmluZGV4OworCUJsb2NrTnVtYmVyIGJsa25vLCBucGFnZXM7CisJQnVmZmVyIGJ1 ZmZlcjsKKwlQYWdlIHBhZ2U7CisKKwkvKiBGb3Igbm9ybWFsIFZBQ1VVTSwgbWFyayB0byBza2lw IGluc2VydHMgYW5kIHdhcm4gYWJvdXQgaW5kZXggZHJvcCBuZWVkZWQgKi8KKwlpZiAoIWluZm8t PnZhbGlkYXRlX2luZGV4KQorCXsKKwkJU3Rpck1hcmtBc1NraXBJbnNlcnRzKGluZGV4KTsKKwor CQllcmVwb3J0KFdBUk5JTkcsIChlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQllcnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQsIHNlZW1zIGxp a2UgdGhpcyBpbmRleCBuZWVkIHRvIGJlIGRyb3BwZWQiLCBfX2Z1bmNfXykpKTsKKwkJcmV0dXJu IE5VTEw7CisJfQorCisJaWYgKHN0YXRzID09IE5VTEwpCisJCXN0YXRzID0gKEluZGV4QnVsa0Rl bGV0ZVJlc3VsdCAqKSBwYWxsb2MwKHNpemVvZihJbmRleEJ1bGtEZWxldGVSZXN1bHQpKTsKKwor CS8qCisJICogSXRlcmF0ZSBvdmVyIHRoZSBwYWdlcy4gV2UgZG9uJ3QgY2FyZSBhYm91dCBjb25j dXJyZW50bHkgYWRkZWQgcGFnZXMsCisJICogYmVjYXVzZSBpbmRleCBpcyBtYXJrZWQgYXMgbm90 LXJlYWR5IGZvciB0aGF0IG1vbW1lbnQgYW5kIGluZGV4IG5vdAorCSAqIHVzZWQgZm9yIGluc2Vy dC4KKwkgKi8KKwlucGFnZXMgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKGluZGV4KTsKKwlm b3IgKGJsa25vID0gU1RJUl9IRUFEX0JMS05POyBibGtubyA8IG5wYWdlczsgYmxrbm8rKykKKwl7 CisJCVN0aXJUdXBsZSAqaXR1cCwgKml0dXBFbmQ7CisKKwkJdmFjdXVtX2RlbGF5X3BvaW50KGZh bHNlKTsKKworCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoaW5kZXgsIE1BSU5fRk9SS05V TSwgYmxrbm8sCisJCQkJCQkJCQlSQk1fTk9STUFMLCBpbmZvLT5zdHJhdGVneSk7CisKKwkJTG9j a0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1NIQVJFKTsKKwkJcGFnZSA9IEJ1ZmZlckdldFBh Z2UoYnVmZmVyKTsKKworCQlpZiAoUGFnZUlzTmV3KHBhZ2UpKQorCQl7CisJCQlVbmxvY2tSZWxl YXNlQnVmZmVyKGJ1ZmZlcik7CisJCQljb250aW51ZTsKKwkJfQorCisJCWl0dXAgPSBTdGlyUGFn ZUdldFR1cGxlKHBhZ2UsIEZpcnN0T2Zmc2V0TnVtYmVyKTsKKwkJaXR1cEVuZCA9IFN0aXJQYWdl R2V0VHVwbGUocGFnZSwgT2Zmc2V0TnVtYmVyTmV4dChTdGlyUGFnZUdldE1heE9mZnNldChwYWdl KSkpOworCQl3aGlsZSAoaXR1cCA8IGl0dXBFbmQpCisJCXsKKwkJCS8qIERvIHdlIGhhdmUgdG8g ZGVsZXRlIHRoaXMgdHVwbGU/ICovCisJCQlpZiAoY2FsbGJhY2soJml0dXAtPmhlYXBQdHIsIGNh bGxiYWNrX3N0YXRlKSkKKwkJCXsKKwkJCQllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksIGVycm1zZygid2UgbmV2ZXIgZGVsZXRlIGluIHN0aXIi KSkpOworCQkJfQorCisJCQlpdHVwID0gU3RpclBhZ2VHZXROZXh0VHVwbGUoaXR1cCk7CisJCX0K KworCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJfQorCisJcmV0dXJuIHN0YXRzOwor fQorCisvKgorICogTWFyayBhIFNUSVIgaW5kZXggdG8gc2tpcCBmdXR1cmUgaW5zZXJ0cworICov Cit2b2lkIFN0aXJNYXJrQXNTa2lwSW5zZXJ0cyhSZWxhdGlvbiBpbmRleCkKK3sKKwlTdGlyTWV0 YVBhZ2VEYXRhICptZXRhRGF0YTsKKwlCdWZmZXIgbWV0YUJ1ZmZlcjsKKwlQYWdlIG1ldGFQYWdl OworCisJQXNzZXJ0KCFSZWxhdGlvbk5lZWRzV0FMKGluZGV4KSk7CisJbWV0YUJ1ZmZlciA9IFJl YWRCdWZmZXIoaW5kZXgsIFNUSVJfTUVUQVBBR0VfQkxLTk8pOworCUxvY2tCdWZmZXIobWV0YUJ1 ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKKwlTVEFSVF9DUklUX1NFQ1RJT04oKTsKKwor CW1ldGFQYWdlID0gQnVmZmVyR2V0UGFnZShtZXRhQnVmZmVyKTsKKwltZXRhRGF0YSA9IFN0aXJQ YWdlR2V0TWV0YShtZXRhUGFnZSk7CisKKwlpZiAoIW1ldGFEYXRhLT5za2lwSW5zZXJ0cykKKwl7 CisJCW1ldGFEYXRhLT5za2lwSW5zZXJ0cyA9IHRydWU7CisJCU1hcmtCdWZmZXJEaXJ0eShtZXRh QnVmZmVyKTsKKwl9CisJVW5sb2NrUmVsZWFzZUJ1ZmZlcihtZXRhQnVmZmVyKTsKK30KKworSW5k ZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGlydmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmlu Zm8sCisJCQkJCQkJCQkJSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKK3sKKwlTdGlyTWFy a0FzU2tpcEluc2VydHMoaW5mby0+aW5kZXgpOworCWVyZXBvcnQoV0FSTklORywgKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJZXJybXNnKCJcIiVzXCIgaXMgbm90 IGEgbm90IGltcGxlbWVudGVkLCBzZWVtcyBsaWtlIHRoaXMgaW5kZXggbmVlZCB0byBiZSBkcm9w cGVkIiwgX19mdW5jX18pKSk7CisJcmV0dXJuIE5VTEw7Cit9CisKK2J5dGVhICpzdGlyb3B0aW9u cyhEYXR1bSByZWxvcHRpb25zLCBib29sIHZhbGlkYXRlKQoreworCXJldHVybiBOVUxMOworfQor Cit2b2lkIHN0aXJjb3N0ZXN0aW1hdGUoUGxhbm5lckluZm8gKnJvb3QsIEluZGV4UGF0aCAqcGF0 aCwKKwkJCQkJIGRvdWJsZSBsb29wX2NvdW50LCBDb3N0ICppbmRleFN0YXJ0dXBDb3N0LAorCQkJ CQkgQ29zdCAqaW5kZXhUb3RhbENvc3QsIFNlbGVjdGl2aXR5ICppbmRleFNlbGVjdGl2aXR5LAor CQkJCQkgZG91YmxlICppbmRleENvcnJlbGF0aW9uLCBkb3VibGUgKmluZGV4UGFnZXMpCit7CisJ ZXJlcG9ydChFUlJPUiwgKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLCBl cnJtc2coIlwiJXNcIiBpcyBub3QgYSBub3QgaW1wbGVtZW50ZWQiLCBfX2Z1bmNfXykpKTsKK30K XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggZTM2OWFkMGI3 MjMuLjQ0ZTViYzMwZDNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0zNDExLDYgKzM0MTEsNyBAQCB2 YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3Qp CiAJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBERUJVRzI7CiAJaXZpbmZvLm51bV9oZWFwX3R1cGxl cyA9IGhlYXBSZWxhdGlvbi0+cmRfcmVsLT5yZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0g TlVMTDsKKwlpdmluZm8udmFsaWRhdGVfaW5kZXggPSB0cnVlOwogCiAJLyoKIAkgKiBFbmNvZGUg VElEcyBhcyBpbnQ4IHZhbHVlcyBmb3IgdGhlIHNvcnQsIHJhdGhlciB0aGFuIGRpcmVjdGx5IHNv cnRpbmcKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwppbmRleCAyYjVmYmRjYmQ4Mi4uOWFiNjBmMzc1NzAg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9hbmFseXplLmMKQEAgLTcyMCw2ICs3MjAsNyBAQCBkb19hbmFseXplX3Jl bChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCQkJaXZpbmZvLm1lc3Nh Z2VfbGV2ZWwgPSBlbGV2ZWw7CiAJCQlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gb25lcmVsLT5y ZF9yZWwtPnJlbHR1cGxlczsKIAkJCWl2aW5mby5zdHJhdGVneSA9IHZhY19zdHJhdGVneTsKKwkJ CWl2aW5mby52YWxpZGF0ZV9pbmRleCA9IGZhbHNlOwogCiAJCQlzdGF0cyA9IGluZGV4X3ZhY3V1 bV9jbGVhbnVwKCZpdmluZm8sIE5VTEwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYwppbmRleCAyYjlkNTQ4Y2RlYi4uMjg2ZmNjY2VjM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYwpAQCAtODg0LDYgKzg4NCw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9j ZXNzX29uZV9pbmRleChQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIFJlbGF0aW9uIGluZHJlbCwK IAlpdmluZm8uZXN0aW1hdGVkX2NvdW50ID0gcHZzLT5zaGFyZWQtPmVzdGltYXRlZF9jb3VudDsK IAlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gcHZzLT5zaGFyZWQtPnJlbHR1cGxlczsKIAlpdmlu Zm8uc3RyYXRlZ3kgPSBwdnMtPmJzdHJhdGVneTsKKwlpdmluZm8udmFsaWRhdGVfaW5kZXggPSBm YWxzZTsKIAogCS8qIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24gKi8KIAlwdnMt PmluZG5hbWUgPSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZHJlbCkpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rl cy9tYWtlZnVuY3MuYwppbmRleCBkYmJjMmYxZTMwZC4uMmQwYzdhNTM1NjMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21h a2VmdW5jcy5jCkBAIC04MjgsNiArODI4LDcgQEAgbWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMs IGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLCBMaXN0ICpleHByZXNzaW9ucywKIAkvKiBpbml0 aWFsaXplIGluZGV4LWJ1aWxkIHN0YXRlIHRvIGRlZmF1bHQgKi8KIAluLT5paV9Ccm9rZW5Ib3RD aGFpbiA9IGZhbHNlOwogCW4tPmlpX1BhcmFsbGVsV29ya2VycyA9IDA7CisJbi0+aWlfQXV4aWxp YXJ5ID0gZmFsc2U7CiAKIAkvKiBzZXQgdXAgZm9yIHBvc3NpYmxlIHVzZSBieSBpbmRleCBBTSAq LwogCW4tPmlpX0FtID0gYW1vaWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2Vu YW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCmluZGV4IDFiZTg3Mzk1NzNmLi40NGY4 YTBkNTYwNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKQEAgLTUyLDYgKzUyLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg SW5kZXhWYWN1dW1JbmZvCiAJYm9vbAkJZXN0aW1hdGVkX2NvdW50OwkvKiBudW1faGVhcF90dXBs ZXMgaXMgYW4gZXN0aW1hdGUgKi8KIAlpbnQJCQltZXNzYWdlX2xldmVsOwkvKiBlcmVwb3J0IGxl dmVsIGZvciBwcm9ncmVzcyBtZXNzYWdlcyAqLwogCWRvdWJsZQkJbnVtX2hlYXBfdHVwbGVzOwkv KiB0dXBsZXMgcmVtYWluaW5nIGluIGhlYXAgKi8KKwlib29sCQl2YWxpZGF0ZV9pbmRleDsgLyog dmFsaWRhdGluZyBjb25jdXJyZW50bHkgYnVpbHQgaW5kZXg/ICovCiAJQnVmZmVyQWNjZXNzU3Ry YXRlZ3kgc3RyYXRlZ3k7CS8qIGFjY2VzcyBzdHJhdGVneSBmb3IgcmVhZHMgKi8KIH0gSW5kZXhW YWN1dW1JbmZvOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsb3B0aW9ucy5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaAppbmRleCA0MzQ0NWNkY2M2Yy4uMjZk ZGQ1ZWM1NzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxvcHRpb25zLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbG9wdGlvbnMuaApAQCAtNTEsOCArNTEsOSBAQCB0eXBl ZGVmIGVudW0gcmVsb3B0X2tpbmQKIAlSRUxPUFRfS0lORF9WSUVXID0gKDEgPDwgOSksCiAJUkVM T1BUX0tJTkRfQlJJTiA9ICgxIDw8IDEwKSwKIAlSRUxPUFRfS0lORF9QQVJUSVRJT05FRCA9ICgx IDw8IDExKSwKKwlSRUxPUFRfS0lORF9TVElSID0gKDEgPDwgMTIpLAogCS8qIGlmIHlvdSBhZGQg YSBuZXcga2luZCwgbWFrZSBzdXJlIHlvdSB1cGRhdGUgImxhc3RfZGVmYXVsdCIgdG9vICovCi0J UkVMT1BUX0tJTkRfTEFTVF9ERUZBVUxUID0gUkVMT1BUX0tJTkRfUEFSVElUSU9ORUQsCisJUkVM T1BUX0tJTkRfTEFTVF9ERUZBVUxUID0gUkVMT1BUX0tJTkRfU1RJUiwKIAkvKiBzb21lIGNvbXBp bGVycyB0cmVhdCBlbnVtcyBhcyBzaWduZWQgaW50cywgc28gd2UgY2FuJ3QgdXNlIDEgPDwgMzEg Ki8KIAlSRUxPUFRfS0lORF9NQVggPSAoMSA8PCAzMCkKIH0gcmVsb3B0X2tpbmQ7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N0aXIu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTk0M2M0MmE5N2UKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3Rpci5oCkBAIC0wLDAgKzEsMTE3 IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBzdGlyLmgKKyAqCSAgaGVhZGVyIGZpbGUg Zm9yIHBvc3RncmVzIHN0aXIgYWNjZXNzIG1ldGhvZCBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKgor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICoKKyAqIHNyYy9pbmNsdWRlL2FjY2Vzcy9zdGlyLmgKKyAqCisgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBfU1RJUl9IXworI2RlZmluZSBfU1RJUl9IXworCisj aW5jbHVkZSAiYW1hcGkuaCIKKyNpbmNsdWRlICJ4bG9nLmgiCisjaW5jbHVkZSAiZ2VuZXJpY194 bG9nLmgiCisjaW5jbHVkZSAiaXR1cC5oIgorI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJu b2Rlcy9wYXRobm9kZXMuaCIKKworLyogU3VwcG9ydCBwcm9jZWR1cmVzIG51bWJlcnMgKi8KKyNk ZWZpbmUgU1RJUl9OUFJPQwkJCQkwCisKKy8qIFNjYW4gc3RyYXRlZ2llcyAqLworI2RlZmluZSBT VElSX05TVFJBVEVHSUVTCQkxCisKKyNkZWZpbmUgU1RJUl9PUFRJT05TX1BST0MJCQkJMAorCisv KiBNYWNyb3MgZm9yIGFjY2Vzc2luZyBzdGlyIHBhZ2Ugc3RydWN0dXJlcyAqLworI2RlZmluZSBT dGlyUGFnZUdldE9wYXF1ZShwYWdlKSAoKFN0aXJQYWdlT3BhcXVlKSBQYWdlR2V0U3BlY2lhbFBv aW50ZXIocGFnZSkpCisjZGVmaW5lIFN0aXJQYWdlR2V0TWF4T2Zmc2V0KHBhZ2UpIChTdGlyUGFn ZUdldE9wYXF1ZShwYWdlKS0+bWF4b2ZmKQorI2RlZmluZSBTdGlyUGFnZUlzTWV0YShwYWdlKSBc CisJKChTdGlyUGFnZUdldE9wYXF1ZShwYWdlKS0+ZmxhZ3MgJiBTVElSX01FVEEpICE9IDApCisj ZGVmaW5lIFN0aXJQYWdlR2V0RGF0YShwYWdlKQkJKChTdGlyVHVwbGUgKilQYWdlR2V0Q29udGVu dHMocGFnZSkpCisjZGVmaW5lIFN0aXJQYWdlR2V0VHVwbGUocGFnZSwgb2Zmc2V0KSBcCisJKChT dGlyVHVwbGUgKikoUGFnZUdldENvbnRlbnRzKHBhZ2UpIFwKKwkJKyBzaXplb2YoU3RpclR1cGxl KSAqICgob2Zmc2V0KSAtIDEpKSkKKyNkZWZpbmUgU3RpclBhZ2VHZXROZXh0VHVwbGUodHVwbGUp IFwKKwkoKFN0aXJUdXBsZSAqKSgoUG9pbnRlcikodHVwbGUpICsgc2l6ZW9mKFN0aXJUdXBsZSkp KQorCisKKworLyogUHJlc2VydmVkIHBhZ2UgbnVtYmVycyAqLworI2RlZmluZSBTVElSX01FVEFQ QUdFX0JMS05PCSgwKQorI2RlZmluZSBTVElSX0hFQURfQkxLTk8JCSgxKSAvKiBmaXJzdCBkYXRh IHBhZ2UgKi8KKworCisvKiBPcGFxdWUgZm9yIHN0aXIgcGFnZXMgKi8KK3R5cGVkZWYgc3RydWN0 IFN0aXJQYWdlT3BhcXVlRGF0YQoreworCU9mZnNldE51bWJlciBtYXhvZmY7CQkvKiBudW1iZXIg b2YgaW5kZXggdHVwbGVzIG9uIHBhZ2UgKi8KKwl1aW50MTYJCWZsYWdzOwkJCS8qIHNlZSBiaXQg ZGVmaW5pdGlvbnMgYmVsb3cgKi8KKwl1aW50MTYJCXVudXNlZDsJCQkvKiBwbGFjZWhvbGRlciB0 byBmb3JjZSBtYXhhbGlnbmluZyBvZiBzaXplIG9mCisJCQkJCQkJCSAqIFN0aXJQYWdlT3BhcXVl RGF0YSBhbmQgdG8gcGxhY2UKKwkJCQkJCQkJICogc3Rpcl9wYWdlX2lkIGV4YWN0bHkgYXQgdGhl IGVuZCBvZiBwYWdlICovCisJdWludDE2CQlzdGlyX3BhZ2VfaWQ7CS8qIGZvciBpZGVudGlmaWNh dGlvbiBvZiBTVElSIGluZGV4ZXMgKi8KK30gU3RpclBhZ2VPcGFxdWVEYXRhOworCisvKiBTdGly IHBhZ2UgZmxhZ3MgKi8KKyNkZWZpbmUgU1RJUl9NRVRBCQkoMTw8MCkKKwordHlwZWRlZiBTdGly UGFnZU9wYXF1ZURhdGEgKlN0aXJQYWdlT3BhcXVlOworCisjZGVmaW5lIFNUSVJfUEFHRV9JRAkJ MHhGRjg0CisKKy8qIE1ldGFkYXRhIG9mIHN0aXIgaW5kZXggKi8KK3R5cGVkZWYgc3RydWN0IFN0 aXJNZXRhUGFnZURhdGEKK3sKKwl1aW50MzIJCW1hZ2lja051bWJlcjsKKwl1aW50MTYJCWxhc3RC bGtObzsKKwlib29sCQlza2lwSW5zZXJ0czsJLyogc2hvdWxkIHdlIGp1c3QgZXhpdCB3aXRob3V0 IGFueSBpbnNlcnRzICovCit9IFN0aXJNZXRhUGFnZURhdGE7CisKKy8qIE1hZ2ljIG51bWJlciB0 byBkaXN0aW5ndWlzaCBzdGlyIHBhZ2VzIGZyb20gb3RoZXJzICovCisjZGVmaW5lIFNUSVJfTUFH SUNLX05VTUJFUiAoMHhEQkFDMERFRikKKworI2RlZmluZSBTdGlyUGFnZUdldE1ldGEocGFnZSkJ KChTdGlyTWV0YVBhZ2VEYXRhICopIFBhZ2VHZXRDb250ZW50cyhwYWdlKSkKKwordHlwZWRlZiBz dHJ1Y3QgU3RpclR1cGxlCit7CisJSXRlbVBvaW50ZXJEYXRhIGhlYXBQdHI7Cit9IFN0aXJUdXBs ZTsKKworI2RlZmluZSBTdGlyUGFnZUdldEZyZWVTcGFjZShzdGF0ZSwgcGFnZSkgXAorCShCTENL U1ogLSBNQVhBTElHTihTaXplT2ZQYWdlSGVhZGVyRGF0YSkgXAorCQktIFN0aXJQYWdlR2V0TWF4 T2Zmc2V0KHBhZ2UpICogKHNpemVvZihTdGlyVHVwbGUpKSBcCisJCS0gTUFYQUxJR04oc2l6ZW9m KFN0aXJQYWdlT3BhcXVlRGF0YSkpKQorCitleHRlcm4gdm9pZCBTdGlyRmlsbE1ldGFwYWdlKFJl bGF0aW9uIGluZGV4LCBQYWdlIG1ldGFQYWdlLCBib29sIHNraXBJbnNlcnRzKTsKK2V4dGVybiB2 b2lkIFN0aXJJbml0TWV0YXBhZ2UoUmVsYXRpb24gaW5kZXgsIEZvcmtOdW1iZXIgZm9ya251bSk7 CitleHRlcm4gdm9pZCBTdGlySW5pdFBhZ2UoUGFnZSBwYWdlLCB1aW50MTYgZmxhZ3MpOworZXh0 ZXJuIHZvaWQgU3Rpck1hcmtBc1NraXBJbnNlcnRzKFJlbGF0aW9uIGluZGV4KTsKKworLyogaW5k ZXggYWNjZXNzIG1ldGhvZCBpbnRlcmZhY2UgZnVuY3Rpb25zICovCitleHRlcm4gYm9vbCBzdGly dmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpOworZXh0ZXJuIGJvb2wgc3Rpcmluc2VydChSZWxhdGlv biBpbmRleCwgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsLAorCQkJCQkgSXRlbVBvaW50ZXIg aHRfY3RpZCwgUmVsYXRpb24gaGVhcFJlbCwKKwkJCQkJIEluZGV4VW5pcXVlQ2hlY2sgY2hlY2tV bmlxdWUsCisJCQkJCSBib29sIGluZGV4VW5jaGFuZ2VkLAorCQkJCQkgc3RydWN0IEluZGV4SW5m byAqaW5kZXhJbmZvKTsKK2V4dGVybiBJbmRleFNjYW5EZXNjIHN0aXJiZWdpbnNjYW4oUmVsYXRp b24gciwgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKTsKK2V4dGVybiB2b2lkIHN0aXJyZXNjYW4o SW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2NhbmtleXMsCisJCQkJ CSBTY2FuS2V5IG9yZGVyYnlzLCBpbnQgbm9yZGVyYnlzKTsKK2V4dGVybiB2b2lkIHN0aXJlbmRz Y2FuKEluZGV4U2NhbkRlc2Mgc2Nhbik7CitleHRlcm4gSW5kZXhCdWlsZFJlc3VsdCAqc3RpcmJ1 aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAorCQkJCQkJCQkgc3RydWN0IEluZGV4 SW5mbyAqaW5kZXhJbmZvKTsKK2V4dGVybiB2b2lkIHN0aXJidWlsZGVtcHR5KFJlbGF0aW9uIGlu ZGV4KTsKK2V4dGVybiBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0aXJidWxrZGVsZXRlKEluZGV4 VmFjdXVtSW5mbyAqaW5mbywKKwkJCQkJCQkJCQkgICBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0 YXRzLCBJbmRleEJ1bGtEZWxldGVDYWxsYmFjayBjYWxsYmFjaywKKwkJCQkJCQkJCQkgICB2b2lk ICpjYWxsYmFja19zdGF0ZSk7CitleHRlcm4gSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGlydmFj dXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sCisJCQkJCQkJCQkJCSAgSW5kZXhCdWxr RGVsZXRlUmVzdWx0ICpzdGF0cyk7CitleHRlcm4gYnl0ZWEgKnN0aXJvcHRpb25zKERhdHVtIHJl bG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUpOworCisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtLmRhdCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfYW0uZGF0CmluZGV4IDI2ZDE1OTI4YTE1Li5hNWVjZjkyMDhhZCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbS5kYXQKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19hbS5kYXQKQEAgLTMzLDUgKzMzLDggQEAKIHsgb2lkID0+ICczNTgwJywg b2lkX3N5bWJvbCA9PiAnQlJJTl9BTV9PSUQnLAogICBkZXNjciA9PiAnYmxvY2sgcmFuZ2UgaW5k ZXggKEJSSU4pIGFjY2VzcyBtZXRob2QnLAogICBhbW5hbWUgPT4gJ2JyaW4nLCBhbWhhbmRsZXIg PT4gJ2JyaW5oYW5kbGVyJywgYW10eXBlID0+ICdpJyB9LAoreyBvaWQgPT4gJzU1NTUnLCBvaWRf c3ltYm9sID0+ICdTVElSX0FNX09JRCcsCisgIGRlc2NyID0+ICdzaG9ydCB0ZXJtIGluZGV4IHJl cGxhY2VtZW50IGFjY2VzcyBtZXRob2QnLAorICBhbW5hbWUgPT4gJ3N0aXInLCBhbWhhbmRsZXIg PT4gJ3N0aXJoYW5kbGVyJywgYW10eXBlID0+ICdpJyB9LAogCiBdCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX29wY2xhc3MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19v cGNsYXNzLmRhdAppbmRleCA0YTk2MjQ4MDJhYS4uNjIyN2M1NjU4ZmMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BjbGFzcy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19vcGNsYXNzLmRhdApAQCAtNDg4LDQgKzQ4OCw4IEBACiAKICMgbm8gYnJpbiBvcGNsYXNz IGZvciB0aGUgZ2VvbWV0cmljIHR5cGVzIGV4Y2VwdCBib3gKIAorIyBhbGxvdyBhbnkgdHlwZXMg Zm9yIFNUSVIKK3sgb3BjbWV0aG9kID0+ICdzdGlyJywgb2lkX3N5bWJvbCA9PiAnQU5ZX1NUSVJf T1BTX09JRCcsIG9wY25hbWUgPT4gJ3N0aXJfb3BzJywKKyAgb3BjZmFtaWx5ID0+ICdzdGlyL2Fu eV9vcHMnLCBvcGNpbnR5cGUgPT4gJ2FueSd9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX29wZmFtaWx5LmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BmYW1p bHkuZGF0CmluZGV4IGY3ZGNiOTZiNDNjLi44MzhhZDMyYzkzMiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19vcGZhbWlseS5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19vcGZhbWlseS5kYXQKQEAgLTMwNCw1ICszMDQsNyBAQAogICBvcGZtZXRob2QgPT4gJ2hhc2gn LCBvcGZuYW1lID0+ICdtdWx0aXJhbmdlX29wcycgfSwKIHsgb2lkID0+ICc2MTU4JywKICAgb3Bm bWV0aG9kID0+ICdnaXN0Jywgb3BmbmFtZSA9PiAnbXVsdGlyYW5nZV9vcHMnIH0sCit7IG9pZCA9 PiAnNTU1OCcsCisgIG9wZm1ldGhvZCA9PiAnc3RpcicsIG9wZm5hbWUgPT4gJ2FueV9vcHMnIH0s CiAKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDEzNGIzZGQ4Njg5Li5hYzFlN2U3Yzdm MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC05MzUsNiArOTM1LDEwIEBACiAgIHByb25h bWUgPT4gJ2JyaW5oYW5kbGVyJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9yZXR0eXBlID0+ ICdpbmRleF9hbV9oYW5kbGVyJywgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywKICAgcHJvc3Jj ID0+ICdicmluaGFuZGxlcicgfSwKK3sgb2lkID0+ICc1NTU2JywgZGVzY3IgPT4gJ3Nob3J0IHRl cm0gaW5kZXggcmVwbGFjZW1lbnQgYWNjZXNzIG1ldGhvZCBoYW5kbGVyJywKKyAgcHJvbmFtZSA9 PiAnc3RpcmhhbmRsZXInLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ2lu ZGV4X2FtX2hhbmRsZXInLCBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLAorICBwcm9zcmMgPT4g J3N0aXJoYW5kbGVyJyB9LAogeyBvaWQgPT4gJzM5NTInLCBkZXNjciA9PiAnYnJpbjogc3RhbmRh bG9uZSBzY2FuIG5ldyB0YWJsZSBwYWdlcycsCiAgIHByb25hbWUgPT4gJ2JyaW5fc3VtbWFyaXpl X25ld192YWx1ZXMnLCBwcm92b2xhdGlsZSA9PiAndicsCiAgIHByb3BhcmFsbGVsID0+ICd1Jywg cHJvcmV0dHlwZSA9PiAnaW50NCcsIHByb2FyZ3R5cGVzID0+ICdyZWdjbGFzcycsCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCmluZGV4IGEzMjNmYTk4YmJiLi44YzBhZDk2ZTAyYyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKQEAgLTE4MiwxMiArMTgyLDEzIEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogICoJ CUJyb2tlbkhvdENoYWluCQlkaWQgd2UgZGV0ZWN0IGFueSBicm9rZW4gSE9UIGNoYWlucz8KICAq CQlTdW1tYXJpemluZwkJCWlzIGl0IGEgc3VtbWFyaXppbmcgaW5kZXg/CiAgKgkJUGFyYWxsZWxX b3JrZXJzCQkjIG9mIHdvcmtlcnMgcmVxdWVzdGVkIChleGNsdWRlcyBsZWFkZXIpCisgKgkJQXV4 aWxpYXJ5CQkJIyBpbmRleC1oZWxwZXIgZm9yIGNvbmN1cnJlbnQgYnVpbGQ/CiAgKgkJQW0JCQkJ CU9pZCBvZiBpbmRleCBBTQogICoJCUFtQ2FjaGUJCQkJcHJpdmF0ZSBjYWNoZSBhcmVhIGZvciBp bmRleCBBTQogICoJCUNvbnRleHQJCQkJbWVtb3J5IGNvbnRleHQgaG9sZGluZyB0aGlzIEluZGV4 SW5mbwogICoKLSAqIGlpX0NvbmN1cnJlbnQsIGlpX0Jyb2tlbkhvdENoYWluLCBhbmQgaWlfUGFy YWxsZWxXb3JrZXJzIGFyZSB1c2VkIG9ubHkKLSAqIGR1cmluZyBpbmRleCBidWlsZDsgdGhleSdy ZSBjb252ZW50aW9uYWxseSB6ZXJvZWQgb3RoZXJ3aXNlLgorICogaWlfQ29uY3VycmVudCwgaWlf QnJva2VuSG90Q2hhaW4sIGlpX0F1eGlsaWFyeSBhbmQgaWlfUGFyYWxsZWxXb3JrZXJzCisgKiBh cmUgdXNlZCBvbmx5IGR1cmluZyBpbmRleCBidWlsZDsgdGhleSdyZSBjb252ZW50aW9uYWxseSB6 ZXJvZWQgb3RoZXJ3aXNlLgogICogLS0tLS0tLS0tLS0tLS0tLQogICovCiB0eXBlZGVmIHN0cnVj dCBJbmRleEluZm8KQEAgLTIxNiw2ICsyMTcsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8K IAlib29sCQlpaV9TdW1tYXJpemluZzsKIAlib29sCQlpaV9XaXRob3V0T3ZlcmxhcHM7CiAJaW50 CQkJaWlfUGFyYWxsZWxXb3JrZXJzOworCWJvb2wJCWlpX0F1eGlsaWFyeTsKIAlPaWQJCQlpaV9B bTsKIAl2b2lkCSAgICppaV9BbUNhY2hlOwogCU1lbW9yeUNvbnRleHQgaWlfQ29udGV4dDsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2luZGV4X3NlbGZ1bmNzLmggYi9zcmMvaW5jbHVk ZS91dGlscy9pbmRleF9zZWxmdW5jcy5oCmluZGV4IDZjNjRkYjZkNDU2Li5lMGQ5MzlkNjg1NyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvaW5kZXhfc2VsZnVuY3MuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9pbmRleF9zZWxmdW5jcy5oCkBAIC02Miw2ICs2MiwxNCBAQCBleHRlcm4g dm9pZCBzcGdjb3N0ZXN0aW1hdGUoc3RydWN0IFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCVNl bGVjdGl2aXR5ICppbmRleFNlbGVjdGl2aXR5LAogCQkJCQkJCWRvdWJsZSAqaW5kZXhDb3JyZWxh dGlvbiwKIAkJCQkJCQlkb3VibGUgKmluZGV4UGFnZXMpOworZXh0ZXJuIHZvaWQgc3RpcmNvc3Rl c3RpbWF0ZShzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJc3RydWN0IEluZGV4UGF0 aCAqcGF0aCwKKwkJCQkJCQlkb3VibGUgbG9vcF9jb3VudCwKKwkJCQkJCQlDb3N0ICppbmRleFN0 YXJ0dXBDb3N0LAorCQkJCQkJCUNvc3QgKmluZGV4VG90YWxDb3N0LAorCQkJCQkJCVNlbGVjdGl2 aXR5ICppbmRleFNlbGVjdGl2aXR5LAorCQkJCQkJCWRvdWJsZSAqaW5kZXhDb3JyZWxhdGlvbiwK KwkJCQkJCQlkb3VibGUgKmluZGV4UGFnZXMpOwogZXh0ZXJuIHZvaWQgZ2luY29zdGVzdGltYXRl KHN0cnVjdCBQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQlzdHJ1Y3QgSW5kZXhQYXRoICpwYXRo LAogCQkJCQkJCWRvdWJsZSBsb29wX2NvdW50LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9hbXV0aWxzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYW11dGls cy5vdXQKaW5kZXggN2FiNjExM2M2MTkuLjkyYzAzM2EyMDEwIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRpbHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvYW11dGlscy5vdXQKQEAgLTE3Myw3ICsxNzMsMTMgQEAgc2VsZWN0IGFtbmFtZSwgcHJv cCwgcGdfaW5kZXhhbV9oYXNfcHJvcGVydHkoYS5vaWQsIHByb3ApIGFzIHAKICBzcGdpc3QgfCBj YW5fZXhjbHVkZSAgIHwgdAogIHNwZ2lzdCB8IGNhbl9pbmNsdWRlICAgfCB0CiAgc3BnaXN0IHwg Ym9ndXMgICAgICAgICB8IAotKDM2IHJvd3MpCisgc3RpciAgIHwgY2FuX29yZGVyICAgICB8IGYK KyBzdGlyICAgfCBjYW5fdW5pcXVlICAgIHwgZgorIHN0aXIgICB8IGNhbl9tdWx0aV9jb2wgfCB0 Cisgc3RpciAgIHwgY2FuX2V4Y2x1ZGUgICB8IGYKKyBzdGlyICAgfCBjYW5faW5jbHVkZSAgIHwg dAorIHN0aXIgICB8IGJvZ3VzICAgICAgICAgfCAKKyg0MiByb3dzKQogCiAtLQogLS0gYWRkaXRp b25hbCBjaGVja3MgZm9yIHBnX2luZGV4X2NvbHVtbl9oYXNfcHJvcGVydHkKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CmluZGV4IGI2NzM2NDJhZDFkLi4yNjQ1ZDk3MDYy OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CkBAIC0yMTE5LDkg KzIxMTksMTAgQEAgRlJPTSBwZ19vcGNsYXNzIEFTIGMxCiBXSEVSRSBOT1QgRVhJU1RTKFNFTEVD VCAxIEZST00gcGdfYW1vcCBBUyBhMQogICAgICAgICAgICAgICAgICBXSEVSRSBhMS5hbW9wZmFt aWx5ID0gYzEub3BjZmFtaWx5CiAgICAgICAgICAgICAgICAgICAgQU5EIGJpbmFyeV9jb2VyY2li bGUoYzEub3BjaW50eXBlLCBhMS5hbW9wbGVmdHR5cGUpKTsKLSBvcGNuYW1lIHwgb3BjZmFtaWx5 IAotLS0tLS0tLS0tKy0tLS0tLS0tLS0tCi0oMCByb3dzKQorIG9wY25hbWUgIHwgb3BjZmFtaWx5 IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIHN0aXJfb3BzIHwgICAgICA1NTU4CisoMSByb3cp CiAKIC0tIENoZWNrIHRoYXQgZWFjaCBvcGVyYXRvciBsaXN0ZWQgaW4gcGdfYW1vcCBoYXMgYW4g YXNzb2NpYXRlZCBvcGNsYXNzLAogLS0gdGhhdCBpcyBvbmUgd2hvc2Ugb3BjaW50eXBlIG1hdGNo ZXMgb3BybGVmdCAocG9zc2libHkgYnkgY29lcmNpb24pLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNx bC5vdXQKaW5kZXggNjU0M2U5MGRlNzUuLmZjZDhhN2M1NTZmIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHNxbC5vdXQKQEAgLTUxMzYsNyArNTEzNiw4IEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMK ICBoZWFwICAgfCBUYWJsZQogIGhlYXAyICB8IFRhYmxlCiAgc3BnaXN0IHwgSW5kZXgKLSg4IHJv d3MpCisgc3RpciAgIHwgSW5kZXgKKyg5IHJvd3MpCiAKIFxkQSAqCiBMaXN0IG9mIGFjY2VzcyBt ZXRob2RzCkBAIC01MTUwLDcgKzUxNTEsOCBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVh cCAgIHwgVGFibGUKICBoZWFwMiAgfCBUYWJsZQogIHNwZ2lzdCB8IEluZGV4Ci0oOCByb3dzKQor IHN0aXIgICB8IEluZGV4CisoOSByb3dzKQogCiBcZEEgaCoKIExpc3Qgb2YgYWNjZXNzIG1ldGhv ZHMKQEAgLTUxNzUsOSArNTE3Nyw5IEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKIAogXGRBOiBl eHRyYSBhcmd1bWVudCAiYmFyIiBpZ25vcmVkCiBcZEErCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKLSAgTmFtZSAgfCBUeXBlICB8ICAgICAgIEhh bmRsZXIgICAgICAgIHwgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgCi0t LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2YgYWNjZXNzIG1ldGhvZHMKKyAgTmFtZSAgfCBUeXBlICB8ICAgICAgIEhhbmRsZXIgICAg ICAgIHwgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgIAorLS0tLS0t LS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgYnJpbiAgIHwgSW5kZXggfCBicmluaGFuZGxlciAgICAg ICAgICB8IGJsb2NrIHJhbmdlIGluZGV4IChCUklOKSBhY2Nlc3MgbWV0aG9kCiAgYnRyZWUgIHwg SW5kZXggfCBidGhhbmRsZXIgICAgICAgICAgICB8IGItdHJlZSBpbmRleCBhY2Nlc3MgbWV0aG9k CiAgZ2luICAgIHwgSW5kZXggfCBnaW5oYW5kbGVyICAgICAgICAgICB8IEdJTiBpbmRleCBhY2Nl c3MgbWV0aG9kCkBAIC01MTg2LDEyICs1MTg4LDEzIEBAIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMK ICBoZWFwICAgfCBUYWJsZSB8IGhlYXBfdGFibGVhbV9oYW5kbGVyIHwgaGVhcCB0YWJsZSBhY2Nl c3MgbWV0aG9kCiAgaGVhcDIgIHwgVGFibGUgfCBoZWFwX3RhYmxlYW1faGFuZGxlciB8IAogIHNw Z2lzdCB8IEluZGV4IHwgc3BnaGFuZGxlciAgICAgICAgICAgfCBTUC1HaVNUIGluZGV4IGFjY2Vz cyBtZXRob2QKLSg4IHJvd3MpCisgc3RpciAgIHwgSW5kZXggfCBzdGlyaGFuZGxlciAgICAgICAg ICB8IHNob3J0IHRlcm0gaW5kZXggcmVwbGFjZW1lbnQgYWNjZXNzIG1ldGhvZAorKDkgcm93cykK IAogXGRBKyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNjZXNzIG1l dGhvZHMKLSAgTmFtZSAgfCBUeXBlICB8ICAgICAgIEhhbmRsZXIgICAgICAgIHwgICAgICAgICAg ICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgCi0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKKyAg TmFtZSAgfCBUeXBlICB8ICAgICAgIEhhbmRsZXIgICAgICAgIHwgICAgICAgICAgICAgICAgRGVz Y3JpcHRpb24gICAgICAgICAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg YnJpbiAgIHwgSW5kZXggfCBicmluaGFuZGxlciAgICAgICAgICB8IGJsb2NrIHJhbmdlIGluZGV4 IChCUklOKSBhY2Nlc3MgbWV0aG9kCiAgYnRyZWUgIHwgSW5kZXggfCBidGhhbmRsZXIgICAgICAg ICAgICB8IGItdHJlZSBpbmRleCBhY2Nlc3MgbWV0aG9kCiAgZ2luICAgIHwgSW5kZXggfCBnaW5o YW5kbGVyICAgICAgICAgICB8IEdJTiBpbmRleCBhY2Nlc3MgbWV0aG9kCkBAIC01MjAwLDcgKzUy MDMsOCBAQCBMaXN0IG9mIGFjY2VzcyBtZXRob2RzCiAgaGVhcCAgIHwgVGFibGUgfCBoZWFwX3Rh YmxlYW1faGFuZGxlciB8IGhlYXAgdGFibGUgYWNjZXNzIG1ldGhvZAogIGhlYXAyICB8IFRhYmxl IHwgaGVhcF90YWJsZWFtX2hhbmRsZXIgfCAKICBzcGdpc3QgfCBJbmRleCB8IHNwZ2hhbmRsZXIg ICAgICAgICAgIHwgU1AtR2lTVCBpbmRleCBhY2Nlc3MgbWV0aG9kCi0oOCByb3dzKQorIHN0aXIg ICB8IEluZGV4IHwgc3RpcmhhbmRsZXIgICAgICAgICAgfCBzaG9ydCB0ZXJtIGluZGV4IHJlcGxh Y2VtZW50IGFjY2VzcyBtZXRob2QKKyg5IHJvd3MpCiAKIFxkQSsgaCoKICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2YgYWNjZXNzIG1ldGhvZHMKLS0gCjIuNDMuMAoK --000000000000caf8fd062fc891e1 Content-Type: application/octet-stream; name="v16-0004-Allow-snapshot-resets-during-parallel-concurrent.patch" Content-Disposition: attachment; filename="v16-0004-Allow-snapshot-resets-during-parallel-concurrent.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7zd30oh8 RnJvbSAxOGIyOGM5NTVmZjBlODYyY2FhZThjNTRkMmNmYmMwOTM1ZmRmNTBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAxIEphbiAyMDI1IDE1OjI1OjIwICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MTYgMDQv MTJdIEFsbG93IHNuYXBzaG90IHJlc2V0cyBkdXJpbmcgcGFyYWxsZWwgY29uY3VycmVudAogaW5k ZXggYnVpbGRzCgpQcmV2aW91c2x5LCBub24tdW5pcXVlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRz IGluIHBhcmFsbGVsIG1vZGUgcmVxdWlyZWQgYQpjb25zaXN0ZW50IE1WQ0Mgc25hcHNob3QgdGhy b3VnaG91dCB0aGUgYnVpbGQsIHdoaWNoIGNvdWxkIGhvbGQgYmFjayB0aGUgeG1pbgpob3Jpem9u IGFuZCBwcmV2ZW50IGRlYWQgdHVwbGUgY2xlYW51cC4gVGhpcyBwYXRjaCBleHRlbmRzIHRoZSBw cmV2aW91cyB3b3JrCm9uIHNuYXBzaG90IHJlc2V0cyAoaW50cm9kdWNlZCBmb3Igbm9uLXBhcmFs bGVsIGJ1aWxkcykgdG8gYWxzbyBzdXBwb3J0CnBhcmFsbGVsIGJ1aWxkcy4KCktleSBjaGFuZ2Vz OgotIEFkZCBpbmZyYXN0cnVjdHVyZSB0byB0cmFjayBzbmFwc2hvdCByZXN0b3JhdGlvbiBpbiBw YXJhbGxlbCB3b3JrZXJzCi0gRXh0ZW5kIHBhcmFsbGVsIHNjYW4gaW5pdGlhbGl6YXRpb24gdG8g c3VwcG9ydCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMKLSBXYWl0IGZvciBwYXJhbGxlbCB3b3Jr ZXJzIHRvIHJlc3RvcmUgdGhlaXIgaW5pdGlhbCBzbmFwc2hvdHMgYmVmb3JlIHByb2NlZWRpbmcg d2l0aCBzY2FuCi0gQWRkIHJlZ3Jlc3Npb24gdGVzdHMgdG8gdmVyaWZ5IGJlaGF2aW9yIHdpdGgg dmFyaW91cyBpbmRleCB0eXBlcwoKVGhlIHNuYXBzaG90IHJlc2V0IGFwcHJvYWNoIGlzIHNhZmUg Zm9yIG5vbi11bmlxdWUgaW5kZXhlcyBzaW5jZSB0aGV5IGRvbid0Cm5lZWQgc25hcHNob3QgY29u c2lzdGVuY3kgYWNyb3NzIHRoZSBlbnRpcmUgc2Nhbi4gRm9yIHVuaXF1ZSBpbmRleGVzLCB3ZQpj b250aW51ZSB0byBtYWludGFpbiBhIGNvbnNpc3RlbnQgc25hcHNob3QgdG8gcHJvcGVybHkgZW5m b3JjZSB1bmlxdWVuZXNzCmNvbnN0cmFpbnRzLgoKVGhpcyBoZWxwcyByZWR1Y2UgdGhlIHhtaW4g aG9yaXpvbiBpbXBhY3Qgb2YgbG9uZy1ydW5uaW5nIGNvbmN1cnJlbnQgaW5kZXgKYnVpbGRzIGlu IHBhcmFsbGVsIG1vZGUsIGltcHJvdmluZyBWQUNVVU0ncyBhYmlsaXR5IHRvIGNsZWFuIHVwIGRl YWQgdHVwbGVzLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyAgICAgICAgICAg ICAgICB8IDUwICsrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5z ZXJ0LmMgICAgICAgICAgICB8IDUwICsrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgICB8IDEyICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0c29ydC5jICAgICAgICAgICB8IDU3ICsrKysrKysrKysrKysrLS0tLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgICAgICAgICAgICB8IDM3ICsrKysrKysr KystLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyAgICAgICAgIHwgNTAg KysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAg ICAgICB8ICAzICstCiBzcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyAgICAgICAgICAg ICAgfCAgOCAtLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oICAgICAgICAgICAgICAg ICB8ICAzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oICAgICAgICAgICAgICAgICAg fCAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAg OSArLS0KIC4uLi9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8IDI1 ICsrKysrKystCiAuLi4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAgICAgICAg fCAgNyArKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDIyNSBpbnNlcnRpb25zKCspLCA4OSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggMDhkYzM1ZGQ4ZGYuLmNjZjc0YzBlMWI2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0xNDMsNyArMTQzLDYgQEAgdHlwZWRlZiBzdHJ1 Y3QgQnJpbkxlYWRlcgogCSAqLwogCUJyaW5TaGFyZWQgKmJyaW5zaGFyZWQ7CiAJU2hhcmVkc29y dCAqc2hhcmVkc29ydDsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlXYWxVc2FnZSAgICp3YWx1c2Fn ZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiB9IEJyaW5MZWFkZXI7CkBAIC0yMzEsNyAr MjMwLDcgQEAgc3RhdGljIHZvaWQgYnJpbl9maWxsX2VtcHR5X3JhbmdlcyhCcmluQnVpbGRTdGF0 ZSAqc3RhdGUsCiBzdGF0aWMgdm9pZCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJCQkJCSBi b29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpOwogc3RhdGljIHZvaWQgX2JyaW5fZW5kX3Bh cmFsbGVsKEJyaW5MZWFkZXIgKmJyaW5sZWFkZXIsIEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7Ci1z dGF0aWMgU2l6ZSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCwg U25hcHNob3Qgc25hcHNob3QpOworc3RhdGljIFNpemUgX2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVf c2hhcmVkKFJlbGF0aW9uIGhlYXApOwogc3RhdGljIGRvdWJsZSBfYnJpbl9wYXJhbGxlbF9oZWFw c2NhbihCcmluQnVpbGRTdGF0ZSAqc3RhdGUpOwogc3RhdGljIGRvdWJsZSBfYnJpbl9wYXJhbGxl bF9tZXJnZShCcmluQnVpbGRTdGF0ZSAqc3RhdGUpOwogc3RhdGljIHZvaWQgX2JyaW5fbGVhZGVy X3BhcnRpY2lwYXRlX2FzX3dvcmtlcihCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKQEAgLTEy MTgsNyArMTIxNyw2IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwg SW5kZXhJbmZvICppbmRleEluZm8pCiAJCXJlbHR1cGxlcyA9IF9icmluX3BhcmFsbGVsX21lcmdl KHN0YXRlKTsKIAogCQlfYnJpbl9lbmRfcGFyYWxsZWwoc3RhdGUtPmJzX2xlYWRlciwgc3RhdGUp OwotCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCWVsc2UJCQkJCQkvKiBubyBwYXJhbGxlbCBpbmRl eCBidWlsZCAqLwogCXsKQEAgLTEyNTEsNyArMTI0OSw2IEBAIGJyaW5idWlsZChSZWxhdGlvbiBo ZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCWJyaW5fZmlsbF9l bXB0eV9yYW5nZXMoc3RhdGUsCiAJCQkJCQkJICAgc3RhdGUtPmJzX2N1cnJSYW5nZVN0YXJ0LAog CQkJCQkJCSAgIHN0YXRlLT5ic19tYXhSYW5nZVN0YXJ0KTsKLQkJQXNzZXJ0KCFpbmRleEluZm8t PmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwog CX0KIAogCS8qIHJlbGVhc2UgcmVzb3VyY2VzICovCkBAIC0xMjY2LDYgKzEyNjMsNyBAQCBicmlu YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZv KQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1 cGxlcyA9IGlkeHR1cGxlczsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQpKTsKIAogCXJldHVybiByZXN1bHQ7CiB9 CkBAIC0yMzY2LDcgKzIzNjQsNiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiB7CiAJUGFyYWxs ZWxDb250ZXh0ICpwY3h0OwogCWludAkJCXNjYW50dXBsZXNvcnRzdGF0ZXM7Ci0JU25hcHNob3QJ c25hcHNob3Q7CiAJU2l6ZQkJZXN0YnJpbnNoYXJlZDsKIAlTaXplCQllc3Rzb3J0OwogCUJyaW5T aGFyZWQgKmJyaW5zaGFyZWQ7CkBAIC0yMzk3LDI1ICsyMzk0LDI1IEBAIF9icmluX2JlZ2luX3Bh cmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlv biBpbmRleCwKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4g YSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQogCSAqIFNuYXBzaG90QW55IGJlY2F1c2Ugd2Ug bXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBvdXIgb3duIHRpbWUKIAkgKiBxdWFsIGNo ZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4IFJFQ0VOVExZX0RFQUQgdHVwbGVzKS4gIElu IGEKLQkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90 IGFuZCBpbmRleCB3aGF0ZXZlcidzCi0JICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBj b25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBwdXNo IGl0IGFzIGFjdGl2ZS4KKwkgKiBMYXRlciB3ZSBpbmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3Jk aW5nIHRvIHRoYXQgc25hcHNob3Qgd2hpbGUgdGhhdAorCSAqIHNuYXBzaG90IGlzIHJlc2V0IHBl cmlvZGljYWxseS4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKIAl7CiAJCUFzc2VydChBY3Rp dmVTbmFwc2hvdFNldCgpKTsKLQkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKIAkJbmVlZF9wb3Bf YWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CiAJfQogCWVsc2UKIAl7Ci0JCXNuYXBzaG90ID0gUmVn aXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlBc3NlcnQoIUFjdGl2 ZVNuYXBzaG90U2V0KCkpOwogCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFw c2hvdCgpKTsKIAl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxM RUxfS0VZX0JSSU5fU0hBUkVEIHdvcmtzcGFjZS4KIAkgKi8KLQllc3Ricmluc2hhcmVkID0gX2Jy aW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXAsIHNuYXBzaG90KTsKKwllc3Ricmluc2hh cmVkID0gX2JyaW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXApOwogCXNobV90b2NfZXN0 aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgZXN0YnJpbnNoYXJlZCk7CiAJZXN0c29ydCA9 IHR1cGxlc29ydF9lc3RpbWF0ZV9zaGFyZWQoc2NhbnR1cGxlc29ydHN0YXRlcyk7CiAJc2htX3Rv Y19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBlc3Rzb3J0KTsKQEAgLTI0NTUsOCAr MjQ1Miw2IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRl LCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAl7CiAJCWlmIChuZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QpCiAJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCQlpZiAoSXNNVkNDU25hcHNo b3Qoc25hcHNob3QpKQotCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJv eVBhcmFsbGVsQ29udGV4dChwY3h0KTsKIAkJRXhpdFBhcmFsbGVsTW9kZSgpOwogCQlyZXR1cm47 CkBAIC0yNDgxLDcgKzI0NzYsOCBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAKIAl0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZShoZWFwLAogCQkJCQkJCQkgIFBhcmFsbGVsVGFibGVTY2Fu RnJvbUJyaW5TaGFyZWQoYnJpbnNoYXJlZCksCi0JCQkJCQkJCSAgc25hcHNob3QpOworCQkJCQkJ CQkgIGlzY29uY3VycmVudCA/IEludmFsaWRTbmFwc2hvdCA6IFNuYXBzaG90QW55LAorCQkJCQkJ CQkgIGlzY29uY3VycmVudCk7CiAKIAkvKgogCSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJp dmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJlc2VydmVkIHNwYWNlLgpAQCAtMjUyNyw3ICsyNTIz LDYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCQlicmlubGVhZGVyLT5ucGFydGljaXBhbnR0 dXBsZXNvcnRzKys7CiAJYnJpbmxlYWRlci0+YnJpbnNoYXJlZCA9IGJyaW5zaGFyZWQ7CiAJYnJp bmxlYWRlci0+c2hhcmVkc29ydCA9IHNoYXJlZHNvcnQ7Ci0JYnJpbmxlYWRlci0+c25hcHNob3Qg PSBzbmFwc2hvdDsKIAlicmlubGVhZGVyLT53YWx1c2FnZSA9IHdhbHVzYWdlOwogCWJyaW5sZWFk ZXItPmJ1ZmZlcnVzYWdlID0gYnVmZmVydXNhZ2U7CiAKQEAgLTI1NDMsNiArMjUzOCwxMyBAQCBf YnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24g aGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJLyogU2F2ZSBsZWFkZXIgc3RhdGUgbm93IHRoYXQgaXQn cyBjbGVhciBidWlsZCB3aWxsIGJlIHBhcmFsbGVsICovCiAJYnVpbGRzdGF0ZS0+YnNfbGVhZGVy ID0gYnJpbmxlYWRlcjsKIAorCS8qCisJICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkIHNu YXBzaG90cyBhcmUgZ29pbmcgdG8gYmUgcmVzZXQgcGVyaW9kaWNhbGx5LgorCSAqIFdlIG5lZWQg dG8gd2FpdCB1bnRpbCBhbGwgd29ya2VycyBpbXBvcnRlZCBpbml0aWFsIHNuYXBzaG90LgorCSAq LworCWlmIChpc2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChw Y3h0LCB0cnVlKTsKKwogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNlbHZlcyAqLwogCWlmIChsZWFk ZXJwYXJ0aWNpcGF0ZXMpCiAJCV9icmluX2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVp bGRzdGF0ZSwgaGVhcCwgaW5kZXgpOwpAQCAtMjU1MSw3ICsyNTUzLDggQEAgX2JyaW5fYmVnaW5f cGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LAogCSAqIENhbGxlciBuZWVkcyB0byB3YWl0IGZvciBhbGwgbGF1bmNoZWQgd29y a2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8t c3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCi0JV2FpdEZvclBhcmFsbGVs V29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmICghaXNjb25jdXJyZW50KQorCQlXYWl0Rm9yUGFy YWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgZmFsc2UpOwogCWlmIChuZWVkX3BvcF9hY3RpdmVf c25hcHNob3QpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CkBAIC0yNTc0LDkgKzI1NzcsNiBA QCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJpbkxlYWRlciAqYnJpbmxlYWRlciwgQnJpbkJ1aWxkU3Rh dGUgKnN0YXRlKQogCWZvciAoaSA9IDA7IGkgPCBicmlubGVhZGVyLT5wY3h0LT5ud29ya2Vyc19s YXVuY2hlZDsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnJpbmxlYWRlci0+YnVm ZmVydXNhZ2VbaV0sICZicmlubGVhZGVyLT53YWx1c2FnZVtpXSk7CiAKLQkvKiBGcmVlIGxhc3Qg cmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwotCWlmIChJc01W Q0NTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hvdCkpCi0JCVVucmVnaXN0ZXJTbmFwc2hvdChi cmlubGVhZGVyLT5zbmFwc2hvdCk7CiAJRGVzdHJveVBhcmFsbGVsQ29udGV4dChicmlubGVhZGVy LT5wY3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CiB9CkBAIC0yNzc2LDE0ICsyNzc2LDE0IEBA IF9icmluX3BhcmFsbGVsX21lcmdlKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSkKIAogLyoKICAqIFJl dHVybnMgc2l6ZSBvZiBzaGFyZWQgbWVtb3J5IHJlcXVpcmVkIHRvIHN0b3JlIHN0YXRlIGZvciBh IHBhcmFsbGVsCi0gKiBicmluIGluZGV4IGJ1aWxkIGJhc2VkIG9uIHRoZSBzbmFwc2hvdCBpdHMg cGFyYWxsZWwgc2NhbiB3aWxsIHVzZS4KKyAqIGJyaW4gaW5kZXggYnVpbGQuCiAgKi8KIHN0YXRp YyBTaXplCi1fYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCwgU25h cHNob3Qgc25hcHNob3QpCitfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24g aGVhcCkKIHsKIAkvKiBjLmYuIHNobV90b2NfYWxsb2NhdGUgYXMgdG8gd2h5IEJVRkZFUkFMSUdO IGlzIHVzZWQgKi8KIAlyZXR1cm4gYWRkX3NpemUoQlVGRkVSQUxJR04oc2l6ZW9mKEJyaW5TaGFy ZWQpKSwKLQkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKGhlYXAsIHNuYXBzaG90KSk7 CisJCQkJCXRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShoZWFwLCBJbnZhbGlkU25hcHNob3Qp KTsKIH0KIAogLyoKQEAgLTI4MDUsNiArMjgwNSw3IEBAIF9icmluX2xlYWRlcl9wYXJ0aWNpcGF0 ZV9hc193b3JrZXIoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJl CiAJLyogUGVyZm9ybSB3b3JrIGNvbW1vbiB0byBhbGwgcGFydGljaXBhbnRzICovCiAJX2JyaW5f cGFyYWxsZWxfc2Nhbl9hbmRfYnVpbGQoYnVpbGRzdGF0ZSwgYnJpbmxlYWRlci0+YnJpbnNoYXJl ZCwKIAkJCQkJCQkJICBicmlubGVhZGVyLT5zaGFyZWRzb3J0LCBoZWFwLCBpbmRleCwgc29ydG1l bSwgdHJ1ZSk7CisJQXNzZXJ0KCFicmlubGVhZGVyLT5icmluc2hhcmVkLT5pc2NvbmN1cnJlbnQg fHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7CiB9CiAKIC8qCkBAIC0yOTQ1 LDYgKzI5NDYsMTMgQEAgX2JyaW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2Vn LCBzaG1fdG9jICp0b2MpCiAKIAlfYnJpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChidWlsZHN0 YXRlLCBicmluc2hhcmVkLCBzaGFyZWRzb3J0LAogCQkJCQkJCQkgIGhlYXBSZWwsIGluZGV4UmVs LCBzb3J0bWVtLCBmYWxzZSk7CisJaWYgKGJyaW5zaGFyZWQtPmlzY29uY3VycmVudCkKKwl7CisJ CVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwkJ QXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpOworCQlQdXNoQWN0aXZl U25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAKIAkvKiBSZXBvcnQgV0FM L2J1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2Ug PSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCmluZGV4IGY2ZjQwYzJmNTNmLi5mYjRjNGEzMWM3 NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCkBAIC0xMzIsNyArMTMyLDYgQEAgdHlw ZWRlZiBzdHJ1Y3QgR2luTGVhZGVyCiAJICovCiAJR2luQnVpbGRTaGFyZWQgKmdpbnNoYXJlZDsK IAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0OwotCVNuYXBzaG90CXNuYXBzaG90OwogCVdhbFVzYWdl ICAgKndhbHVzYWdlOwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIH0gR2luTGVhZGVyOwpA QCAtMTgwLDcgKzE3OSw3IEBAIHR5cGVkZWYgc3RydWN0CiBzdGF0aWMgdm9pZCBfZ2luX2JlZ2lu X3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LAogCQkJCQkJCQlib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpOwogc3Rh dGljIHZvaWQgX2dpbl9lbmRfcGFyYWxsZWwoR2luTGVhZGVyICpnaW5sZWFkZXIsIEdpbkJ1aWxk U3RhdGUgKnN0YXRlKTsKLXN0YXRpYyBTaXplIF9naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVk KFJlbGF0aW9uIGhlYXAsIFNuYXBzaG90IHNuYXBzaG90KTsKK3N0YXRpYyBTaXplIF9naW5fcGFy YWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0aW9uIGhlYXApOwogc3RhdGljIGRvdWJsZSBfZ2lu X3BhcmFsbGVsX2hlYXBzY2FuKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUpOwogc3RhdGljIGRv dWJsZSBfZ2luX3BhcmFsbGVsX21lcmdlKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUpOwogc3Rh dGljIHZvaWQgX2dpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2VyKEdpbkJ1aWxkU3RhdGUg KmJ1aWxkc3RhdGUsCkBAIC03MTcsNyArNzE2LDYgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwg UmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlyZWx0dXBsZXMgPSBfZ2lu X3BhcmFsbGVsX21lcmdlKHN0YXRlKTsKIAogCQlfZ2luX2VuZF9wYXJhbGxlbChzdGF0ZS0+YnNf bGVhZGVyLCBzdGF0ZSk7Ci0JCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAJZWxzZQkJCQkJCS8qIG5v IHBhcmFsbGVsIGluZGV4IGJ1aWxkICovCiAJewpAQCAtNzQxLDcgKzczOSw2IEBAIGdpbmJ1aWxk KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJ CQkJCSAgIGxpc3QsIG5saXN0LCAmYnVpbGRzdGF0ZS5idWlsZFN0YXRzKTsKIAkJfQogCQlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKLQkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1 cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAogCU1l bW9yeUNvbnRleHREZWxldGUoYnVpbGRzdGF0ZS5mdW5jQ3R4KTsKQEAgLTc3MSw2ICs3NjgsNyBA QCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRl eEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5k ZXhfdHVwbGVzID0gYnVpbGRzdGF0ZS5pbmR0dXBsZXM7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJ cmV0dXJuIHJlc3VsdDsKIH0KQEAgLTkwNSw3ICs5MDMsNiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVs KEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LAogewogCVBhcmFsbGVsQ29udGV4dCAqcGN4dDsKIAlpbnQJCQlzY2FudHVwbGVzb3J0c3RhdGVz OwotCVNuYXBzaG90CXNuYXBzaG90OwogCVNpemUJCWVzdGdpbnNoYXJlZDsKIAlTaXplCQllc3Rz b3J0OwogCUdpbkJ1aWxkU2hhcmVkICpnaW5zaGFyZWQ7CkBAIC05MzUsMjUgKzkzMiwyNSBAQCBf Z2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhl YXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVs YXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkg YmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQog CSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0 dXBsZXMpLiAgSW4gYQotCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1W Q0Mgc25hcHNob3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0 aGF0LgorCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNo b3QgYW5kIHB1c2ggaXQgYXMgYWN0aXZlLgorCSAqIExhdGVyIHdlIGluZGV4IHdoYXRldmVyJ3Mg bGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCBzbmFwc2hvdCB3aGlsZSB0aGF0CisJICogc25hcHNob3Qg aXMgcmVzZXQgcGVyaW9kaWNhbGx5LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQogCXsKIAkJ QXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOwotCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55Owog CQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKIAl9CiAJZWxzZQogCXsKLQkJc25h cHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCUFz c2VydCghQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFu c2FjdGlvblNuYXBzaG90KCkpOwogCX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3Vy IG93biBQQVJBTExFTF9LRVlfR0lOX1NIQVJFRCB3b3Jrc3BhY2UuCiAJICovCi0JZXN0Z2luc2hh cmVkID0gX2dpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoaGVhcCwgc25hcHNob3QpOworCWVz dGdpbnNoYXJlZCA9IF9naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKGhlYXApOwogCXNobV90 b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgZXN0Z2luc2hhcmVkKTsKIAllc3Rz b3J0ID0gdHVwbGVzb3J0X2VzdGltYXRlX3NoYXJlZChzY2FudHVwbGVzb3J0c3RhdGVzKTsKIAlz aG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIGVzdHNvcnQpOwpAQCAtOTkz LDggKzk5MCw2IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJewogCQlpZiAobmVlZF9wb3BfYWN0 aXZlX3NuYXBzaG90KQogCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJaWYgKElzTVZDQ1NuYXBz aG90KHNuYXBzaG90KSkKLQkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ry b3lQYXJhbGxlbENvbnRleHQocGN4dCk7CiAJCUV4aXRQYXJhbGxlbE1vZGUoKTsKIAkJcmV0dXJu OwpAQCAtMTAxOCw3ICsxMDEzLDggQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAogCXRhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplKGhlYXAsCiAJCQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5G cm9tR2luQnVpbGRTaGFyZWQoZ2luc2hhcmVkKSwKLQkJCQkJCQkJICBzbmFwc2hvdCk7CisJCQkJ CQkJCSAgaXNjb25jdXJyZW50ID8gSW52YWxpZFNuYXBzaG90IDogU25hcHNob3RBbnksCisJCQkJ CQkJCSAgaXNjb25jdXJyZW50KTsKIAogCS8qCiAJICogU3RvcmUgc2hhcmVkIHR1cGxlc29ydC1w cml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVzZXJ2ZWQgc3BhY2UuCkBAIC0xMDYwLDcgKzEw NTYsNiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCQlnaW5sZWFkZXItPm5wYXJ0aWNpcGFudHR1 cGxlc29ydHMrKzsKIAlnaW5sZWFkZXItPmdpbnNoYXJlZCA9IGdpbnNoYXJlZDsKIAlnaW5sZWFk ZXItPnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0OwotCWdpbmxlYWRlci0+c25hcHNob3QgPSBzbmFw c2hvdDsKIAlnaW5sZWFkZXItPndhbHVzYWdlID0gd2FsdXNhZ2U7CiAJZ2lubGVhZGVyLT5idWZm ZXJ1c2FnZSA9IGJ1ZmZlcnVzYWdlOwogCkBAIC0xMDc2LDYgKzEwNzEsMTMgQEAgX2dpbl9iZWdp bl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxh dGlvbiBpbmRleCwKIAkvKiBTYXZlIGxlYWRlciBzdGF0ZSBub3cgdGhhdCBpdCdzIGNsZWFyIGJ1 aWxkIHdpbGwgYmUgcGFyYWxsZWwgKi8KIAlidWlsZHN0YXRlLT5ic19sZWFkZXIgPSBnaW5sZWFk ZXI7CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hvdHMgYXJl IGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkgKiBXZSBuZWVkIHRvIHdhaXQgdW50 aWwgYWxsIHdvcmtlcnMgaW1wb3J0ZWQgaW5pdGlhbCBzbmFwc2hvdC4KKwkgKi8KKwlpZiAoaXNj b25jdXJyZW50KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgdHJ1ZSk7 CisKIAkvKiBKb2luIGhlYXAgc2NhbiBvdXJzZWx2ZXMgKi8KIAlpZiAobGVhZGVycGFydGljaXBh dGVzKQogCQlfZ2luX2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSwgaGVh cCwgaW5kZXgpOwpAQCAtMTA4NCw3ICsxMDg2LDggQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5C dWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkg KiBDYWxsZXIgbmVlZHMgdG8gd2FpdCBmb3IgYWxsIGxhdW5jaGVkIHdvcmtlcnMgd2hlbiB3ZSBy ZXR1cm4uICBNYWtlCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2ls bCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwotCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFj aChwY3h0KTsKKwlpZiAoIWlzY29uY3VycmVudCkKKwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1Rv QXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQlQ b3BBY3RpdmVTbmFwc2hvdCgpOwogfQpAQCAtMTEwNyw5ICsxMTEwLDYgQEAgX2dpbl9lbmRfcGFy YWxsZWwoR2luTGVhZGVyICpnaW5sZWFkZXIsIEdpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCWZvciAo aSA9IDA7IGkgPCBnaW5sZWFkZXItPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkOyBpKyspCiAJCUlu c3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZnaW5sZWFkZXItPmJ1ZmZlcnVzYWdlW2ldLCAmZ2lubGVh ZGVyLT53YWx1c2FnZVtpXSk7CiAKLQkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25h cHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwotCWlmIChJc01WQ0NTbmFwc2hvdChnaW5sZWFkZXIt PnNuYXBzaG90KSkKLQkJVW5yZWdpc3RlclNuYXBzaG90KGdpbmxlYWRlci0+c25hcHNob3QpOwog CURlc3Ryb3lQYXJhbGxlbENvbnRleHQoZ2lubGVhZGVyLT5wY3h0KTsKIAlFeGl0UGFyYWxsZWxN b2RlKCk7CiB9CkBAIC0xNzc4LDE0ICsxNzc4LDE0IEBAIF9naW5fcGFyYWxsZWxfbWVyZ2UoR2lu QnVpbGRTdGF0ZSAqc3RhdGUpCiAKIC8qCiAgKiBSZXR1cm5zIHNpemUgb2Ygc2hhcmVkIG1lbW9y eSByZXF1aXJlZCB0byBzdG9yZSBzdGF0ZSBmb3IgYSBwYXJhbGxlbAotICogZ2luIGluZGV4IGJ1 aWxkIGJhc2VkIG9uIHRoZSBzbmFwc2hvdCBpdHMgcGFyYWxsZWwgc2NhbiB3aWxsIHVzZS4KKyAq IGdpbiBpbmRleCBidWlsZC4KICAqLwogc3RhdGljIFNpemUKLV9naW5fcGFyYWxsZWxfZXN0aW1h dGVfc2hhcmVkKFJlbGF0aW9uIGhlYXAsIFNuYXBzaG90IHNuYXBzaG90KQorX2dpbl9wYXJhbGxl bF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVhcCkKIHsKIAkvKiBjLmYuIHNobV90b2NfYWxs b2NhdGUgYXMgdG8gd2h5IEJVRkZFUkFMSUdOIGlzIHVzZWQgKi8KIAlyZXR1cm4gYWRkX3NpemUo QlVGRkVSQUxJR04oc2l6ZW9mKEdpbkJ1aWxkU2hhcmVkKSksCi0JCQkJCXRhYmxlX3BhcmFsbGVs c2Nhbl9lc3RpbWF0ZShoZWFwLCBzbmFwc2hvdCkpOworCQkJCQl0YWJsZV9wYXJhbGxlbHNjYW5f ZXN0aW1hdGUoaGVhcCwgSW52YWxpZFNuYXBzaG90KSk7CiB9CiAKIC8qCkBAIC0xODA4LDYgKzE4 MDgsNyBAQCBfZ2luX2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoR2luQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYQogCV9naW5fcGFyYWxsZWxfc2Nhbl9hbmRf YnVpbGQoYnVpbGRzdGF0ZSwgZ2lubGVhZGVyLT5naW5zaGFyZWQsCiAJCQkJCQkJCSBnaW5sZWFk ZXItPnNoYXJlZHNvcnQsIGhlYXAsIGluZGV4LAogCQkJCQkJCQkgc29ydG1lbSwgdHJ1ZSk7CisJ QXNzZXJ0KCFnaW5sZWFkZXItPmdpbnNoYXJlZC0+aXNjb25jdXJyZW50IHx8ICFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwogfQogCiAvKgpAQCAtMjE2Nyw2ICsyMTY4LDEzIEBA IF9naW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2Mp CiAKIAlfZ2luX3BhcmFsbGVsX3NjYW5fYW5kX2J1aWxkKCZidWlsZHN0YXRlLCBnaW5zaGFyZWQs IHNoYXJlZHNvcnQsCiAJCQkJCQkJCSBoZWFwUmVsLCBpbmRleFJlbCwgc29ydG1lbSwgZmFsc2Up OworCWlmIChnaW5zaGFyZWQtPmlzY29uY3VycmVudCkKKwl7CisJCVBvcEFjdGl2ZVNuYXBzaG90 KCk7CisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwkJQXNzZXJ0KCFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhpZCkpOworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJp bmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0 b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGYxN2M1ZGJhY2FhLi4yMjI3NGYwOTVhYyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMjMxLDE0ICsxMjMx LDEzIEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBh bmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBp bmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuIEluIGEKIAkgKiBjb25jdXJyZW50IGJ1aWxkLCBv ciBkdXJpbmcgYm9vdHN0cmFwLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90Ci0JICog YW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBhbmQgaW5k ZXggd2hhdGV2ZXIncyBsaXZlIGFjY29yZGluZyB0byB0aGF0IHdoaWxlIHRoYXQgc25hcHNob3Qg aXMgcmVzZXQKKwkgKiBldmVyeSBzbyBvZnRlbiAoaW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4 KS4KIAkgKi8KIAlPbGRlc3RYbWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkvKgogCSAq IEZvciB1bmlxdWUgaW5kZXggd2UgbmVlZCBjb25zaXN0ZW50IHNuYXBzaG90IGZvciB0aGUgd2hv bGUgc2Nhbi4KLQkgKiBJbiBjYXNlIG9mIHBhcmFsbGVsIHNjYW4gc29tZSBhZGRpdGlvbmFsIGlu ZnJhc3RydWN0dXJlIHJlcXVpcmVkCi0JICogdG8gcGVyZm9ybSBzY2FuIHdpdGggU09fUkVTRVRf U05BUFNIT1Qgd2hpY2ggaXMgbm90IHlldCByZWFkeS4KIAkgKi8KIAlyZXNldF9zbmFwc2hvdHMg PSBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgJiYKIAkJCQkJICAhaW5kZXhJbmZvLT5paV9Vbmlx dWUgJiYKQEAgLTEzMDAsOCArMTI5OSwxMSBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2Nh bihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCUFzc2VydCghSXNCb290c3RyYXBQcm9jZXNzaW5n TW9kZSgpKTsKIAkJQXNzZXJ0KGFsbG93X3N5bmMpOwogCQlzbmFwc2hvdCA9IHNjYW4tPnJzX3Nu YXBzaG90OwotCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwotCQluZWVkX3BvcF9hY3Rp dmVfc25hcHNob3QgPSB0cnVlOworCQlpZiAoIXJlc2V0X3NuYXBzaG90cykKKwkJeworCQkJUHVz aEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKKwkJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9 IHRydWU7CisJCX0KIAl9CiAKIAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IGI0OTBkYTBlZWVlLi44MTBmODBmYzhlNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTMyMSwyMiArMzIxLDIwIEBAIGJ0YnVp bGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQog CQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZGV4KSk7CiAKIAlyZWx0dXBsZXMgPSBfYnRf c3Bvb2xzX2hlYXBzY2FuKGhlYXAsIGluZGV4LCAmYnVpbGRzdGF0ZSwgaW5kZXhJbmZvKTsKLQlB c3NlcnQoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwgaW5kZXhJbmZvLT5paV9Vbmlx dWUgfHwKLQkJICAhaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNW YWxpZChNeVByb2MtPnhtaW4pKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8 fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54 bWluKSk7CiAKIAkvKgogCSAqIEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEpIGNvbXBsZXRpbmcgdGhl IHNvcnQgb2YgdGhlIHNwb29sIGZpbGUsICgyKQogCSAqIGluc2VydGluZyB0aGUgc29ydGVkIHR1 cGxlcyBpbnRvIGJ0cmVlIHBhZ2VzIGFuZCAoMykgYnVpbGRpbmcgdGhlIHVwcGVyCiAJICogbGV2 ZWxzLiAgRmluYWxseSwgaXQgbWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRvIGVuZCB1c2Ugb2YgcGFy YWxsZWxpc20uCiAJICovCi0JX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0 YXRlLnNwb29sMiwgIWluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzICYmIGluZGV4SW5mby0+ aWlfQ29uY3VycmVudCk7CisJX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWlsZHN0 YXRlLnNwb29sMiwgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmIGluZGV4SW5mby0+aWlfQ29uY3Vy cmVudCk7CiAJX2J0X3Nwb29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sKTsKIAlpZiAoYnVpbGRz dGF0ZS5zcG9vbDIpCiAJCV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9vbDIpOwogCWlm IChidWlsZHN0YXRlLmJ0bGVhZGVyKQogCQlfYnRfZW5kX3BhcmFsbGVsKGJ1aWxkc3RhdGUuYnRs ZWFkZXIpOwotCUFzc2VydChpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleElu Zm8tPmlpX1VuaXF1ZSB8fAotCQkgICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9D b25jdXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKIAogCXJlc3VsdCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxv YyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkpOwogCkBAIC00ODUsOCArNDgzLDcgQEAgX2J0X3Nw b29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLAogCQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRz dGF0ZSwKIAkJCQkJCQkJCQkgICZpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluKTsKIAlJbnZh bGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNzZXJ0KGluZGV4SW5mby0+aWlfUGFyYWxsZWxX b3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8Ci0JCSAgIWluZGV4SW5mby0+aWlfQ29u Y3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0 KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBTZXQgdGhlIHBy b2dyZXNzIHRhcmdldCBmb3IgdGhlIG5leHQgcGhhc2UuICBSZXNldCB0aGUgYmxvY2sgbnVtYmVy CkBAIC0xNDIxLDYgKzE0MTgsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpi dWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJQnVmZmVyVXNhZ2Ug KmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CiAJYm9vbAkJ bmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwlib29sCQlyZXNldF9zbmFwc2hvdDsK IAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04K QEAgLTE0MzgsMTIgKzE0MzYsMjEgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCiAJc2NhbnR1cGxl c29ydHN0YXRlcyA9IGxlYWRlcnBhcnRpY2lwYXRlcyA/IHJlcXVlc3QgKyAxIDogcmVxdWVzdDsK IAorICAgIC8qCisJICogRm9yIGNvbmN1cnJlbnQgbm9uLXVuaXF1ZSBpbmRleCBidWlsZHMsIHdl IGNhbiBwZXJpb2RpY2FsbHkgcmVzZXQgc25hcHNob3RzCisJICogdG8gYWxsb3cgdGhlIHhtaW4g aG9yaXpvbiB0byBhZHZhbmNlLiBUaGlzIGlzIHNhZmUgc2luY2UgdGhlc2UgYnVpbGRzIGRvbid0 CisJICogcmVxdWlyZSBhIGNvbnNpc3RlbnQgdmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLiBV bmlxdWUgaW5kZXhlcyBzdGlsbCBuZWVkCisJICogYSBzdGFibGUgc25hcHNob3QgdG8gcHJvcGVy bHkgZW5mb3JjZSB1bmlxdWVuZXNzIGNvbnN0cmFpbnRzLgorICAgICAqLworCXJlc2V0X3NuYXBz aG90ID0gaXNjb25jdXJyZW50ICYmICFidHNwb29sLT5pc3VuaXF1ZTsKKwogCS8qCiAJICogUHJl cGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9ybWFsIGluZGV4IGJ1 aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxs IHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2Ug aGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCiAJICogY29uY3VycmVu dCBidWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgaW5kZXggd2hhdGV2 ZXIncwotCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCisJICogbGl2ZSBhY2NvcmRpbmcgdG8g dGhhdCwgd2hpbGUgdGhhdCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5IGluCisJ ICogY2FzZSBvZiBub24tdW5pcXVlIGluZGV4LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQog CXsKQEAgLTE0NTEsNiArMTQ1OCwxMSBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJCXNuYXBzaG90 ID0gU25hcHNob3RBbnk7CiAJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOwogCX0K KwllbHNlIGlmIChyZXNldF9zbmFwc2hvdCkKKwl7CisJCXNuYXBzaG90ID0gSW52YWxpZFNuYXBz aG90OworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9 CiAJZWxzZQogCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9u U25hcHNob3QoKSk7CkBAIC0xNTExLDcgKzE1MjMsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRC dWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJ ewogCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQkJUG9wQWN0aXZlU25hcHNob3Qo KTsKLQkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKKwkJaWYgKHNuYXBzaG90ICE9IElu dmFsaWRTbmFwc2hvdCAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVy U25hcHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwogCQlF eGl0UGFyYWxsZWxNb2RlKCk7CkBAIC0xNTM4LDcgKzE1NTAsOCBAQCBfYnRfYmVnaW5fcGFyYWxs ZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVl c3QpCiAJYnRzaGFyZWQtPmJyb2tlbmhvdGNoYWluID0gZmFsc2U7CiAJdGFibGVfcGFyYWxsZWxz Y2FuX2luaXRpYWxpemUoYnRzcG9vbC0+aGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2Nh bkZyb21CVFNoYXJlZChidHNoYXJlZCksCi0JCQkJCQkJCSAgc25hcHNob3QpOworCQkJCQkJCQkg IHNuYXBzaG90LAorCQkJCQkJCQkgIHJlc2V0X3NuYXBzaG90KTsKIAogCS8qCiAJICogU3RvcmUg c2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVzZXJ2ZWQgc3Bh Y2UuCkBAIC0xNjE0LDYgKzE2MjcsMTMgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCS8qIFNhdmUg bGVhZGVyIHN0YXRlIG5vdyB0aGF0IGl0J3MgY2xlYXIgYnVpbGQgd2lsbCBiZSBwYXJhbGxlbCAq LwogCWJ1aWxkc3RhdGUtPmJ0bGVhZGVyID0gYnRsZWFkZXI7CiAKKwkvKgorCSAqIEluIGNhc2Ug b2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hvdHMgYXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlv ZGljYWxseS4KKwkgKiBXYWl0IHVudGlsIGFsbCB3b3JrZXJzIGltcG9ydGVkIGluaXRpYWwgc25h cHNob3QuCisJICovCisJaWYgKHJlc2V0X3NuYXBzaG90KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3Jr ZXJzVG9BdHRhY2gocGN4dCwgdHJ1ZSk7CisKIAkvKiBKb2luIGhlYXAgc2NhbiBvdXJzZWx2ZXMg Ki8KIAlpZiAobGVhZGVycGFydGljaXBhdGVzKQogCQlfYnRfbGVhZGVyX3BhcnRpY2lwYXRlX2Fz X3dvcmtlcihidWlsZHN0YXRlKTsKQEAgLTE2MjIsNyArMTY0Miw4IEBAIF9idF9iZWdpbl9wYXJh bGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVx dWVzdCkKIAkgKiBDYWxsZXIgbmVlZHMgdG8gd2FpdCBmb3IgYWxsIGxhdW5jaGVkIHdvcmtlcnMg d2hlbiB3ZSByZXR1cm4uICBNYWtlCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0 IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwotCVdhaXRGb3JQYXJhbGxlbFdvcmtl cnNUb0F0dGFjaChwY3h0KTsKKwlpZiAoIXJlc2V0X3NuYXBzaG90KQorCQlXYWl0Rm9yUGFyYWxs ZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgZmFsc2UpOwogCWlmIChuZWVkX3BvcF9hY3RpdmVfc25h cHNob3QpCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CkBAIC0xNjQ2LDcgKzE2NjcsNyBAQCBf YnRfZW5kX3BhcmFsbGVsKEJUTGVhZGVyICpidGxlYWRlcikKIAkJSW5zdHJBY2N1bVBhcmFsbGVs UXVlcnkoJmJ0bGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmJ0bGVhZGVyLT53YWx1c2FnZVtpXSk7 CiAKIAkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9uZSB3YXMg dXNlZCAqLwotCWlmIChJc01WQ0NTbmFwc2hvdChidGxlYWRlci0+c25hcHNob3QpKQorCWlmIChi dGxlYWRlci0+c25hcHNob3QgIT0gSW52YWxpZFNuYXBzaG90ICYmIElzTVZDQ1NuYXBzaG90KGJ0 bGVhZGVyLT5zbmFwc2hvdCkpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChidGxlYWRlci0+c25hcHNo b3QpOwogCURlc3Ryb3lQYXJhbGxlbENvbnRleHQoYnRsZWFkZXItPnBjeHQpOwogCUV4aXRQYXJh bGxlbE1vZGUoKTsKQEAgLTE4OTYsNiArMTkxNyw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9z b3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCVNvcnRDb29yZGluYXRl IGNvb3JkaW5hdGU7CiAJQlRCdWlsZFN0YXRlIGJ1aWxkc3RhdGU7CiAJVGFibGVTY2FuRGVzYyBz Y2FuOworCVBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbjsKIAlkb3VibGUJCXJlbHR1cGxlczsK IAlJbmRleEluZm8gICppbmRleEluZm87CiAKQEAgLTE5NTAsMTEgKzE5NzIsMTUgQEAgX2J0X3Bh cmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIs CiAJLyogSm9pbiBwYXJhbGxlbCBzY2FuICovCiAJaW5kZXhJbmZvID0gQnVpbGRJbmRleEluZm8o YnRzcG9vbC0+aW5kZXgpOwogCWluZGV4SW5mby0+aWlfQ29uY3VycmVudCA9IGJ0c2hhcmVkLT5p c2NvbmN1cnJlbnQ7Ci0Jc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChidHNwb29sLT5o ZWFwLAotCQkJCQkJCQkJUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpKTsK Kwlwc2NhbiA9IFBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0c2hhcmVkKTsKKwlzY2Fu ID0gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKGJ0c3Bvb2wtPmhlYXAsIHBzY2FuKTsKIAlyZWx0 dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wtPmlu ZGV4LCBpbmRleEluZm8sCiAJCQkJCQkJCQkgICB0cnVlLCBwcm9ncmVzcywgX2J0X2J1aWxkX2Nh bGxiYWNrLAogCQkJCQkJCQkJICAgJmJ1aWxkc3RhdGUsIHNjYW4pOworCUludmFsaWRhdGVDYXRh bG9nU25hcHNob3QoKTsKKwlpZiAocHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCkKKwkJUG9wQWN0 aXZlU25hcHNob3QoKTsKKwlBc3NlcnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgfHwgIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogRXhlY3V0ZSB0aGlzIHdv cmtlcidzIHBhcnQgb2YgdGhlIHNvcnQgKi8KIAlpZiAocHJvZ3Jlc3MpCkBAIC0xOTkwLDQgKzIw MTYsNyBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNw b29sICpidHNwb29sMiwKIAl0dXBsZXNvcnRfZW5kKGJ0c3Bvb2wtPnNvcnRzdGF0ZSk7CiAJaWYg KGJ0c3Bvb2wyKQogCQl0dXBsZXNvcnRfZW5kKGJ0c3Bvb2wyLT5zb3J0c3RhdGUpOworCUFzc2Vy dCghcHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQ cm9jLT54bWluKSk7CisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJCVB1c2hBY3Rp dmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJs ZS90YWJsZWFtLmMKaW5kZXggYTU2YzVlY2ViMTQuLjI3N2M3OWRkNTU0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90YWJsZS90YWJsZWFtLmMKQEAgLTEzMiwxMCArMTMyLDEwIEBAIHRhYmxlX3BhcmFsbGVsc2Nh bl9lc3RpbWF0ZShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90KQogewogCVNpemUJCXN6 ID0gMDsKIAotCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCisJaWYgKHNuYXBzaG90ICE9 IEludmFsaWRTbmFwc2hvdCAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCXN6ID0gYWRk X3NpemUoc3osIEVzdGltYXRlU25hcHNob3RTcGFjZShzbmFwc2hvdCkpOwogCWVsc2UKLQkJQXNz ZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55KTsKKwkJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBz aG90QW55IHx8IHNuYXBzaG90ID09IEludmFsaWRTbmFwc2hvdCk7CiAKIAlzeiA9IGFkZF9zaXpl KHN6LCByZWwtPnJkX3RhYmxlYW0tPnBhcmFsbGVsc2Nhbl9lc3RpbWF0ZShyZWwpKTsKIApAQCAt MTQ0LDIxICsxNDQsMzYgQEAgdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKFJlbGF0aW9uIHJl bCwgU25hcHNob3Qgc25hcHNob3QpCiAKIHZvaWQKIHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFs aXplKFJlbGF0aW9uIHJlbCwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAotCQkJCQkJCSAg U25hcHNob3Qgc25hcHNob3QpCisJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwgYm9vbCByZXNl dF9zbmFwc2hvdCkKIHsKIAlTaXplCQlzbmFwc2hvdF9vZmYgPSByZWwtPnJkX3RhYmxlYW0tPnBh cmFsbGVsc2Nhbl9pbml0aWFsaXplKHJlbCwgcHNjYW4pOwogCiAJcHNjYW4tPnBoc19zbmFwc2hv dF9vZmYgPSBzbmFwc2hvdF9vZmY7CiAKLQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQor CS8qCisJICogSW5pdGlhbGl6ZSBwYXJhbGxlbCBzY2FuIGRlc2NyaXB0aW9uLiBGb3Igbm9ybWFs IHNjYW5zIHdpdGggYSByZWd1bGFyCisJICogTVZDQyBzbmFwc2hvdCwgc2VyaWFsaXplIHRoZSBz bmFwc2hvdCBpbmZvLiBGb3Igc2NhbnMgdGhhdCB1c2UgcGVyaW9kaWMKKwkgKiBzbmFwc2hvdCBy ZXNldHMsIG1hcmsgdGhlIHNjYW4gYWNjb3JkaW5nbHkuCisJICovCisJaWYgKHJlc2V0X3NuYXBz aG90KQorCXsKKwkJQXNzZXJ0KHNuYXBzaG90ID09IEludmFsaWRTbmFwc2hvdCk7CisJCXBzY2Fu LT5waHNfc25hcHNob3RfYW55ID0gZmFsc2U7CisJCXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3Qg PSB0cnVlOworCQlJTkpFQ1RJT05fUE9JTlQoInRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl Iik7CisJfQorCWVsc2UgaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAl7CiAJCVNlcmlh bGl6ZVNuYXBzaG90KHNuYXBzaG90LCAoY2hhciAqKSBwc2NhbiArIHBzY2FuLT5waHNfc25hcHNo b3Rfb2ZmKTsKIAkJcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkgPSBmYWxzZTsKKwkJcHNjYW4tPnBo c19yZXNldF9zbmFwc2hvdCA9IGZhbHNlOwogCX0KIAllbHNlCiAJewogCQlBc3NlcnQoc25hcHNo b3QgPT0gU25hcHNob3RBbnkpOworCQlBc3NlcnQoIXJlc2V0X3NuYXBzaG90KTsKIAkJcHNjYW4t PnBoc19zbmFwc2hvdF9hbnkgPSB0cnVlOworCQlwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90ID0g ZmFsc2U7CiAJfQogfQogCkBAIC0xNzEsNyArMTg2LDE5IEBAIHRhYmxlX2JlZ2luc2Nhbl9wYXJh bGxlbChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQogCiAJ QXNzZXJ0KFJlbEZpbGVMb2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nhbi0+ cGhzX2xvY2F0b3IpKTsKIAotCWlmICghcHNjYW4tPnBoc19zbmFwc2hvdF9hbnkpCisJLyoKKwkg KiBGb3Igc2NhbnMgdGhhdAorCSAqIHVzZSBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMsIG1hcmsg dGhlIHNjYW4gYWNjb3JkaW5nbHkgYW5kIHVzZSB0aGUgYWN0aXZlCisJICogc25hcHNob3QgYXMg dGhlIGluaXRpYWwgc3RhdGUuCisJICovCisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3Qp CisJeworCQlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CisJCWZsYWdzIHw9IFNPX1JFU0VU X1NOQVBTSE9UOworCQkvKiBTdGFydCB3aXRoIGN1cnJlbnQgYWN0aXZlIHNuYXBzaG90LiAqLwor CQlzbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CisJfQorCWVsc2UgaWYgKCFwc2Nhbi0+ cGhzX3NuYXBzaG90X2FueSkKIAl7CiAJCS8qIFNuYXBzaG90IHdhcyBzZXJpYWxpemVkIC0tIHJl c3RvcmUgaXQgKi8KIAkJc25hcHNob3QgPSBSZXN0b3JlU25hcHNob3QoKGNoYXIgKikgcHNjYW4g KyBwc2Nhbi0+cGhzX3NuYXBzaG90X29mZik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxs ZWwuYwppbmRleCA5NGRiMWVjMzAxMi4uMDY1ZWE5ZDI2ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vcGFyYWxsZWwuYwpAQCAtNzcsNiArNzcsNyBAQAogI2RlZmluZSBQQVJBTExFTF9LRVlf UkVMTUFQUEVSX1NUQVRFCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEQpCiAjZGVmaW5l IFBBUkFMTEVMX0tFWV9VTkNPTU1JVFRFREVOVU1TCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZG RjAwMEUpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9DTElFTlRDT05OSU5GTwkJCVVJTlQ2NENPTlNU KDB4RkZGRkZGRkZGRkZGMDAwRikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX1NOQVBTSE9UX1JFU1RP UkVECQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMTApCiAKIC8qIEZpeGVkLXNpemUgcGFy YWxsZWwgc3RhdGUuICovCiB0eXBlZGVmIHN0cnVjdCBGaXhlZFBhcmFsbGVsU3RhdGUKQEAgLTMw NSw2ICszMDYsMTAgQEAgSW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4 dCkKIAkJCQkJCQkJCQlwY3h0LT5ud29ya2VycykpOwogCQlzaG1fdG9jX2VzdGltYXRlX2tleXMo JnBjeHQtPmVzdGltYXRvciwgMSk7CiAKKwkJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ ZXN0aW1hdG9yLCBtdWxfc2l6ZShzaXplb2YoYm9vbCksCisJCQkJCQkJICAgcGN4dC0+bndvcmtl cnMpKTsKKwkJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOworCiAJ CS8qIEVzdGltYXRlIGhvdyBtdWNoIHdlJ2xsIG5lZWQgZm9yIHRoZSBlbnRyeXBvaW50IGluZm8u ICovCiAJCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgc3RybGVuKHBj eHQtPmxpYnJhcnlfbmFtZSkgKwogCQkJCQkJCSAgIHN0cmxlbihwY3h0LT5mdW5jdGlvbl9uYW1l KSArIDIpOwpAQCAtMzc2LDYgKzM4MSw3IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxl bENvbnRleHQgKnBjeHQpCiAJCWNoYXIJICAgKmVudHJ5cG9pbnRzdGF0ZTsKIAkJY2hhcgkgICAq dW5jb21taXR0ZWRlbnVtc3NwYWNlOwogCQljaGFyCSAgICpjbGllbnRjb25uaW5mb3NwYWNlOwor CQlib29sCSAgICpzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZTsKIAkJU2l6ZQkJbG5hbWVsZW47CiAK IAkJLyogU2VyaWFsaXplIHNoYXJlZCBsaWJyYXJpZXMgd2UgaGF2ZSBsb2FkZWQuICovCkBAIC00 OTEsNiArNDk3LDE5IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQgKnBj eHQpCiAJCXN0cmNweShlbnRyeXBvaW50c3RhdGUsIHBjeHQtPmxpYnJhcnlfbmFtZSk7CiAJCXN0 cmNweShlbnRyeXBvaW50c3RhdGUgKyBsbmFtZWxlbiArIDEsIHBjeHQtPmZ1bmN0aW9uX25hbWUp OwogCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9FTlRSWVBPSU5ULCBl bnRyeXBvaW50c3RhdGUpOworCisJCS8qCisJCSAqIEVzdGFibGlzaCBkeW5hbWljIHNoYXJlZCBt ZW1vcnkgdG8gcGFzcyBpbmZvcm1hdGlvbiBhYm91dCBpbXBvcnRpbmcKKwkJICogb2Ygc25hcHNo b3QuCisJCSAqLworCQlzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZSA9CisJCQkJc2htX3RvY19hbGxv Y2F0ZShwY3h0LT50b2MsIG11bF9zaXplKHNpemVvZihib29sKSwgcGN4dC0+bndvcmtlcnMpKTsK KwkJZm9yIChpID0gMDsgaSA8IHBjeHQtPm53b3JrZXJzOyArK2kpCisJCXsKKwkJCXBjeHQtPndv cmtlcltpXS5zbmFwc2hvdF9yZXN0b3JlZCA9IHNuYXBzaG90X3NldF9mbGFnX3NwYWNlICsgaSAq IHNpemVvZihib29sKTsKKwkJCSpwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSBm YWxzZTsKKwkJfQorCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQ U0hPVF9SRVNUT1JFRCwgc25hcHNob3Rfc2V0X2ZsYWdfc3BhY2UpOwogCX0KIAogCS8qIFVwZGF0 ZSBud29ya2Vyc190b19sYXVuY2gsIGluIGNhc2Ugd2UgY2hhbmdlZCBud29ya2VycyBhYm92ZS4g Ki8KQEAgLTU0Niw2ICs1NjUsMTcgQEAgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxsZWxD b250ZXh0ICpwY3h0KQogCQkJcGN4dC0+d29ya2VyW2ldLmVycm9yX21xaCA9IHNobV9tcV9hdHRh Y2gobXEsIHBjeHQtPnNlZywgTlVMTCk7CiAJCX0KIAl9CisKKwkvKiBTZXQgc25hcHNob3QgcmVz dG9yZWQgZmxhZyB0byBmYWxzZS4gKi8KKwlpZiAocGN4dC0+bndvcmtlcnMgPiAwKQorCXsKKwkJ Ym9vbAkgICAqc25hcHNob3RfcmVzdG9yZWRfc3BhY2U7CisJCWludAkJCWk7CisJCXNuYXBzaG90 X3Jlc3RvcmVkX3NwYWNlID0KKwkJCQlzaG1fdG9jX2xvb2t1cChwY3h0LT50b2MsIFBBUkFMTEVM X0tFWV9TTkFQU0hPVF9SRVNUT1JFRCwgZmFsc2UpOworCQlmb3IgKGkgPSAwOyBpIDwgcGN4dC0+ bndvcmtlcnM7ICsraSkKKwkJCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlW2ldID0gZmFsc2U7CisJ fQogfQogCiAvKgpAQCAtNjYxLDYgKzY5MSwxMCBAQCBMYXVuY2hQYXJhbGxlbFdvcmtlcnMoUGFy YWxsZWxDb250ZXh0ICpwY3h0KQogICogV2FpdCBmb3IgYWxsIHdvcmtlcnMgdG8gYXR0YWNoIHRv IHRoZWlyIGVycm9yIHF1ZXVlcywgYW5kIHRocm93IGFuIGVycm9yIGlmCiAgKiBhbnkgd29ya2Vy IGZhaWxzIHRvIGRvIHRoaXMuCiAgKgorICogd2FpdF9mb3Jfc25hcHNob3Q6IHRyYWNrIHdoZXRo ZXIgZWFjaCBwYXJhbGxlbCB3b3JrZXIgaGFzIHN1Y2Nlc3NmdWxseSByZXN0b3JlZAorICogaXRz IHNuYXBzaG90LiBUaGlzIGlzIG5lZWRlZCB3aGVuIHVzaW5nIHBlcmlvZGljIHNuYXBzaG90IHJl c2V0cyB0byBlbnN1cmUgYWxsCisgKiB3b3JrZXJzIGhhdmUgYSB2YWxpZCBpbml0aWFsIHNuYXBz aG90IGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIHNjYW4uCisgKgogICogQ2FsbGVycyBjYW4g YXNzdW1lIHRoYXQgaWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHN1Y2Nlc3NmdWxseSwgdGhlbiB0 aGUKICAqIG51bWJlciBvZiB3b3JrZXJzIGdpdmVuIGJ5IHBjeHQtPm53b3JrZXJzX2xhdW5jaGVk IGhhdmUgaW5pdGlhbGl6ZWQgYW5kCiAgKiBhdHRhY2hlZCB0byB0aGVpciBlcnJvciBxdWV1ZXMu ICBXaGV0aGVyIG9yIG5vdCB0aGVzZSB3b3JrZXJzIGFyZSBndWFyYW50ZWVkCkBAIC02OTAsNyAr NzI0LDcgQEAgTGF1bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKICAq IGNhbGwgdGhpcyBmdW5jdGlvbiBhdCBhbGwuCiAgKi8KIHZvaWQKLVdhaXRGb3JQYXJhbGxlbFdv cmtlcnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQpCitXYWl0Rm9yUGFyYWxsZWxXb3Jr ZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0LCBib29sIHdhaXRfZm9yX3NuYXBzaG90 KQogewogCWludAkJCWk7CiAKQEAgLTczNCw5ICs3NjgsMTIgQEAgV2FpdEZvclBhcmFsbGVsV29y a2Vyc1RvQXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQltcSA9IHNobV9tcV9nZXRf cXVldWUocGN4dC0+d29ya2VyW2ldLmVycm9yX21xaCk7CiAJCQkJaWYgKHNobV9tcV9nZXRfc2Vu ZGVyKG1xKSAhPSBOVUxMKQogCQkJCXsKLQkJCQkJLyogWWVzLCBzbyBpdCBpcyBrbm93biB0byBi ZSBhdHRhY2hlZC4gKi8KLQkJCQkJcGN4dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRy dWU7Ci0JCQkJCSsrcGN4dC0+bmtub3duX2F0dGFjaGVkX3dvcmtlcnM7CisJCQkJCWlmICghd2Fp dF9mb3Jfc25hcHNob3QgfHwgKihwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQpKQor CQkJCQl7CisJCQkJCQkvKiBZZXMsIHNvIGl0IGlzIGtub3duIHRvIGJlIGF0dGFjaGVkLiAqLwor CQkJCQkJcGN4dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7CisJCQkJCQkrK3Bj eHQtPm5rbm93bl9hdHRhY2hlZF93b3JrZXJzOworCQkJCQl9CiAJCQkJfQogCQkJfQogCQkJZWxz ZSBpZiAoc3RhdHVzID09IEJHV0hfU1RPUFBFRCkKQEAgLTEyOTUsNiArMTMzMiw3IEBAIFBhcmFs bGVsV29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlzaG1fdG9jICAgICp0b2M7CiAJRml4ZWRQ YXJhbGxlbFN0YXRlICpmcHM7CiAJY2hhcgkgICAqZXJyb3JfcXVldWVfc3BhY2U7CisJYm9vbAkg ICAqc25hcHNob3RfcmVzdG9yZWRfc3BhY2U7CiAJc2htX21xCSAgICptcTsKIAlzaG1fbXFfaGFu ZGxlICptcWg7CiAJY2hhcgkgICAqbGlicmFyeXNwYWNlOwpAQCAtMTQ5OSw2ICsxNTM3LDEwIEBA IFBhcmFsbGVsV29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJCQkJCQkgICBmcHMtPnBhcmFs bGVsX2xlYWRlcl9wZ3Byb2MpOwogCVB1c2hBY3RpdmVTbmFwc2hvdChhc25hcHNob3QpOwogCisJ LyogU25hcHNob3QgaXMgcmVzdG9yZWQsIHNldCBmbGFnIHRvIG1ha2UgbGVhZGVyIGtub3cgYWJv dXQgaXQuICovCisJc25hcHNob3RfcmVzdG9yZWRfc3BhY2UgPSBzaG1fdG9jX2xvb2t1cCh0b2Ms IFBBUkFMTEVMX0tFWV9TTkFQU0hPVF9SRVNUT1JFRCwgZmFsc2UpOworCXNuYXBzaG90X3Jlc3Rv cmVkX3NwYWNlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSA9IHRydWU7CisKIAkvKgogCSAqIFdlJ3Zl IGNoYW5nZWQgd2hpY2ggdHVwbGVzIHdlIGNhbiBzZWUsIGFuZCBtdXN0IHRoZXJlZm9yZSBpbnZh bGlkYXRlCiAJICogc3lzdGVtIGNhY2hlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCAwYTE1M2M2Zjc0 Ni4uNDgyZDlhMTc4NmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTE1MzEsNyArMTUzMSw3IEBAIGlu ZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAKIAkvKiBJbnZhbGlk YXRlIGNhdGFsb2cgc25hcHNob3QganVzdCBmb3IgYXNzZXJ0ICovCiAJSW52YWxpZGF0ZUNhdGFs b2dTbmFwc2hvdCgpOwotCUFzc2VydCgoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMgfHwg aW5kZXhJbmZvLT5paV9VbmlxdWUpIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKKwlBc3NlcnQoaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogUm9sbCBiYWNrIGFueSBHVUMgY2hhbmdlcyBleGVj dXRlZCBieSBpbmRleCBmdW5jdGlvbnMgKi8KIAlBdEVPWGFjdF9HVUMoZmFsc2UsIHNhdmVfbmVz dGxldmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDZmOWU5OTFlZWFlLi5i YzYzOTk2NGFkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0zNjcsNyArMzY3 LDggQEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplRFNNKFNlcVNjYW5TdGF0ZSAqbm9kZSwKIAlwc2Nh biA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4pOwogCXRhYmxl X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJ CQkJCQkJICBwc2NhbiwKLQkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90KTsKKwkJCQkJCQkJ ICBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCQkgIGZhbHNlKTsKIAlzaG1fdG9jX2luc2Vy dChwY3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgcHNjYW4pOwogCW5v ZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9CiAJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChu b2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdy LmMKaW5kZXggM2QwMThjM2ExZTguLjRjZDUzNmU5ODhjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy90aW1lL3NuYXBtZ3IuYworKysgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBt Z3IuYwpAQCAtMjgzLDE0ICsyODMsNiBAQCBHZXRUcmFuc2FjdGlvblNuYXBzaG90KHZvaWQpCiBT bmFwc2hvdAogR2V0TGF0ZXN0U25hcHNob3Qodm9pZCkKIHsKLQkvKgotCSAqIFdlIG1pZ2h0IGJl IGFibGUgdG8gcmVsYXggdGhpcywgYnV0IG5vdGhpbmcgdGhhdCBjb3VsZCBvdGhlcndpc2Ugd29y awotCSAqIG5lZWRzIGl0LgotCSAqLwotCWlmIChJc0luUGFyYWxsZWxNb2RlKCkpCi0JCWVsb2co RVJST1IsCi0JCQkgImNhbm5vdCB1cGRhdGUgU2Vjb25kYXJ5U25hcHNob3QgZHVyaW5nIGEgcGFy YWxsZWwgb3BlcmF0aW9uIik7Ci0KIAkvKgogCSAqIFNvIGZhciB0aGVyZSBhcmUgbm8gY2FzZXMg cmVxdWlyaW5nIHN1cHBvcnQgZm9yIEdldExhdGVzdFNuYXBzaG90KCkKIAkgKiBkdXJpbmcgbG9n aWNhbCBkZWNvZGluZywgYnV0IGl0IHdvdWxkbid0IGJlIGhhcmQgdG8gYWRkIGlmIHJlcXVpcmVk LgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvcGFyYWxsZWwuaAppbmRleCBmMzdiZTZkNTY5MC4uYTczNjJmN2I0M2IgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9wYXJhbGxlbC5oCkBAIC0yNiw2ICsyNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVs V29ya2VySW5mbwogewogCUJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd2hhbmRsZTsKIAlzaG1f bXFfaGFuZGxlICplcnJvcl9tcWg7CisJYm9vbAkJICAqc25hcHNob3RfcmVzdG9yZWQ7CiB9IFBh cmFsbGVsV29ya2VySW5mbzsKIAogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxDb250ZXh0CkBAIC02 NSw3ICs2Niw3IEBAIGV4dGVybiB2b2lkIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENv bnRleHQgKnBjeHQpOwogZXh0ZXJuIHZvaWQgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFyYWxs ZWxDb250ZXh0ICpwY3h0KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlhbGl6ZVBhcmFsbGVsV29ya2Vy cyhQYXJhbGxlbENvbnRleHQgKnBjeHQsIGludCBud29ya2Vyc190b19sYXVuY2gpOwogZXh0ZXJu IHZvaWQgTGF1bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7Ci1leHRl cm4gdm9pZCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpw Y3h0KTsKK2V4dGVybiB2b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQYXJhbGxl bENvbnRleHQgKnBjeHQsIGJvb2wgd2FpdF9mb3Jfc25hcHNob3QpOwogZXh0ZXJuIHZvaWQgV2Fp dEZvclBhcmFsbGVsV29ya2Vyc1RvRmluaXNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBleHRl cm4gdm9pZCBEZXN0cm95UGFyYWxsZWxDb250ZXh0KFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBl eHRlcm4gYm9vbCBQYXJhbGxlbENvbnRleHRBY3RpdmUodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApp bmRleCBkYzZlMDE4NDI4NC4uODUyOWI4MDhhZWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9yZWxzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtODIs NiArODIsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhCiAJUmVs RmlsZUxvY2F0b3IgcGhzX2xvY2F0b3I7IC8qIHBoeXNpY2FsIHJlbGF0aW9uIHRvIHNjYW4gKi8K IAlib29sCQlwaHNfc3luY3NjYW47CS8qIHJlcG9ydCBsb2NhdGlvbiB0byBzeW5jc2NhbiBsb2dp Yz8gKi8KIAlib29sCQlwaHNfc25hcHNob3RfYW55OwkvKiBTbmFwc2hvdEFueSwgbm90IHBoc19z bmFwc2hvdF9kYXRhPyAqLworCWJvb2wJCXBoc19yZXNldF9zbmFwc2hvdDsgLyogdXNlIFNPX1JF U0VUX1NOQVBTSE9UPyAqLwogCVNpemUJCXBoc19zbmFwc2hvdF9vZmY7CS8qIGRhdGEgZm9yIHNu YXBzaG90ICovCiB9IFBhcmFsbGVsVGFibGVTY2FuRGVzY0RhdGE7CiB0eXBlZGVmIHN0cnVjdCBQ YXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhICpQYXJhbGxlbFRhYmxlU2NhbkRlc2M7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Rh YmxlYW0uaAppbmRleCA1MzkzYjMwYzU3ZS4uMzEzMzk0ZDkyYzYgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aApAQCAtMTE4MSw3ICsxMTgxLDggQEAgZXh0ZXJuIFNpemUgdGFibGVfcGFyYWxsZWxzY2FuX2Vz dGltYXRlKFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QpOwogICovCiBleHRlcm4gdm9p ZCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJ ICBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCi0JCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFw c2hvdCk7CisJCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJCQkJCQkgIGJvb2wg cmVzZXRfc25hcHNob3QpOwogCiAvKgogICogQmVnaW4gYSBwYXJhbGxlbCBzY2FuLiBgcHNjYW5g IG5lZWRzIHRvIGhhdmUgYmVlbiBpbml0aWFsaXplZCB3aXRoCkBAIC0xNzk5LDkgKzE4MDAsOSBA QCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5z YWN0aW9uSWQgT2xkZXN0WG1pbiwKICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9y IGhlYXAgQU0sIGl0IG1pZ2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBB TXMgbGF0ZXIuCiAgKgotICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IGFuZCBub24tcGFy YWxsZWwgY29uY3VycmVudCBidWlsZAotICogU09fUkVTRVRfU05BUFNIT1QgaXMgYXBwbGllZCBm b3IgdGhlIHNjYW4uIFRoYXQgbGVhZHMgZm9yIGNoYW5naW5nIHNuYXBzaG90cwotICogb24gdGhl IGZseSB0byBhbGxvdyB4bWluIGhvcml6b24gcHJvcGFnYXRlLgorICogSW4gY2FzZSBvZiBub24t dW5pcXVlIGNvbmN1cnJlbnQgIGluZGV4IGJ1aWxkIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFwcGxp ZWQKKyAqIGZvciB0aGUgc2Nhbi4gVGhhdCBsZWFkcyBmb3IgY2hhbmdpbmcgc25hcHNob3RzIG9u IHRoZSBmbHkgdG8gYWxsb3cgeG1pbgorICogaG9yaXpvbiBwcm9wYWdhdGUuCiAgKi8KIHN0YXRp YyBpbmxpbmUgZG91YmxlCiB0YWJsZV9pbmRleF9idWlsZF9zY2FuKFJlbGF0aW9uIHRhYmxlX3Jl bCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3Rl ZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCA5NDhkMTIzMmFhMC4u NTk1YTQwMDBjZTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTE3 LDYgKzE3LDEyIEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5z Y2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cycsICdub3RpY2UnCiAgCiAoMSByb3cpCiAKK1NFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUn LCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBD UkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7 CiBJTlNFUlQgSU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDIwMCkgcyhpKTsKQEAgLTcyLDMwICs3OCw0NSBAQCBOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBz aG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogLS0gVGhlIHNhbWUgaW4gcGFyYWxsZWwgbW9kZQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3Nu YXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0yKTsKKy0tIERldGFjaCB0byBrZWVwIHRlc3Qg c3RhYmxlLCBzaW5jZSBwYXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBsZXRlIHNjYW4gYmVmb3JlIGxl YWRlcgorU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25h cHNob3RfZWZmZWN0aXZlJyk7CisgaW5qZWN0aW9uX3BvaW50c19kZXRhY2ggCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGks IDIpID0gMDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0 YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGlj YXRlX3N0YWJsZShpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCi1OT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90 X2VmZmVjdGl2ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2Jl Z2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCiBE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jl c2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2Fu X2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERF U0MgTlVMTFMgTEFTVCk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2lu aXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJh bGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OwogRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIE5PVElDRTogIGRy b3AgY2FzY2FkZXMgdG8gMyBvdGhlciBvYmplY3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApp bmRleCA1MDcyNTM1YjM1NS4uMjk0MWFhN2FlMzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVs ZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNx bApAQCAtMyw3ICszLDcgQEAgQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwogU0VM RUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7 CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7Ci0KK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0 dGFjaCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7CiAKIENSRUFU RSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJs KGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CkBAIC01Myw2ICs1Myw5IEBAIERST1AgSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1lIGluIHBhcmFsbGVs IG1vZGUKIEFMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtl cnM9Mik7CiAKKy0tIERldGFjaCB0byBrZWVwIHRlc3Qgc3RhYmxlLCBzaW5jZSBwYXJhbGxlbCB3 b3JrZXIgbWF5IGNvbXBsZXRlIHNjYW4gYmVmb3JlIGxlYWRlcgorU0VMRUNUIGluamVjdGlvbl9w b2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJyk7CisKIENS RUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50Ymwo aSk7CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBEUk9Q IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CkBAIC04Myw0ICs4Niw0IEBA IERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIAogRFJPUCBTQ0hF TUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKIAotRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3Bv aW50czsKK0RST1AgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQotLSAKMi40My4wCgo= --000000000000caf8fd062fc891e1 Content-Type: application/octet-stream; name="v16-0002-Add-stress-tests-for-concurrent-index-operations.patch" Content-Disposition: attachment; filename="v16-0002-Add-stress-tests-for-concurrent-index-operations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7zd30ok10 RnJvbSBlNWJiZjg0NTdjZTU5NDc2MTZjZmFhYjJkYzU5ZDEwOTliYTU4YjNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE2IDAy LzEyXSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IG9wZXJhdGlvbnMKCkFk ZCBjb21wcmVoZW5zaXZlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRp b25zLCBmb2N1c2luZyBvbjoKKiBUZXN0aW5nIENSRUFURS9SRUlOREVYL0RST1AgSU5ERVggQ09O Q1VSUkVOVExZIHVuZGVyIGhlYXZ5IHdyaXRlIGxvYWQKKiBWZXJpZnlpbmcgaW5kZXggaW50ZWdy aXR5IGR1cmluZyBjb25jdXJyZW50IEhPVCB1cGRhdGVzCiogVGVzdGluZyB2YXJpb3VzIGluZGV4 IHR5cGVzIGluY2x1ZGluZyB1bmlxdWUgYW5kIHBhcnRpYWwgaW5kZXhlcwoqIFZhbGlkYXRpbmcg aW5kZXggY29ycmVjdG5lc3MgdXNpbmcgYW1jaGVjawoqIEV4ZXJjaXNpbmcgcGFyYWxsZWwgd29y a2VyIGNvbmZpZ3VyYXRpb25zCgpUaGVzZSBzdHJlc3MgdGVzdHMgaGVscCBlbnN1cmUgcmVsaWFi aWxpdHkgb2YgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25zCnVuZGVyIGhlYXZ5IGxvYWQgY29u ZGl0aW9ucy4KLS0tCiBzcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQgIHwgICAxICsKIHNy Yy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwgfCAxOTAgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTkxIGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsCgpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL21lc29u LmJ1aWxkCmluZGV4IDMxNmVhMGQ0MGI4Li43ZGYxNTQzNWZiYiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5i dWlsZApAQCAtMjgsNiArMjgsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMDNfY2hlY2sucGwn LAogICAgICAgJ3QvMDA0X3ZlcmlmeV9oZWFwYW0ucGwnLAogICAgICAgJ3QvMDA1X29wY2xhc3Nf ZGFtYWdlLnBsJywKKyAgICAgICd0LzAwNl9jaWMucGwnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsIGIvc3JjL2Jpbi9wZ19hbWNo ZWNrL3QvMDA2X2NpYy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MGQ3NTUzNzNlZTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZf Y2ljLnBsCkBAIC0wLDAgKzEsMTkwIEBACisjIENvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNR 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 TkRFWCBDT05DVVJSRU5UTFknLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzJyA9PiBxKAorCQkJU0VU IGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb2ZmOyAtLSB0aGlzIGlzIGJlY2F1c2UgcHJlZGljYXRl X3N0YWJsZSBpbXBsZW1lbnRhdGlvbgorCQkJU0VMRUNUIHBnX3RyeV9hZHZpc29yeV9sb2NrKDQy KTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJCQlcaWYgOmdvdGxvY2sKKwkJCQlTRUxFQ1Qg bmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBsYXN0X3ZhbHVlIFxnc2V0CisJCQkJXHNldCB2 YXJpYW50IHJhbmRvbSgwLCA1KQorCQkJCVxzZXQgcGFyYWxsZWxzIHJhbmRvbSgwLCA0KQorCQkJ CVxpZiA6bGFzdF92YWx1ZSA8IDMKKwkJCQkJQUxURVIgVEFCTEUgdGJsIFNFVCAocGFyYWxsZWxf d29ya2Vycz06cGFyYWxsZWxzKTsKKwkJCQkJXGlmIDp2YXJpYW50ID0gMAorCQkJCQkJQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHhfMiBPTiB0YmwoaSwgdXBkYXRlZF9hdCk7CisJCQkJCVxl bGlmIDp2YXJpYW50ID0gMQorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMiBP TiB0YmwoaSwgdXBkYXRlZF9hdCkgV0hFUkUgcHJlZGljYXRlX3N0YWJsZSgpOworCQkJCQlcZWxp ZiA6dmFyaWFudCA9IDIKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04g dGJsKGksIHVwZGF0ZWRfYXQpIFdIRVJFIE1PRChpLCAyKSA9IDA7CisJCQkJCVxlbGlmIDp2YXJp YW50ID0gMworCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHhfMiBPTiB0YmwoaSwg dXBkYXRlZF9hdCkgV0hFUkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlcZWxpZiA6dmFyaWFu dCA9IDQKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsKHByZWRp Y2F0ZV9jb25zdChpKSk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gNQorCQkJCQkJQ1JFQVRFIElO REVYIENPTkNVUlJFTlRMWSBpZHhfMiBPTiB0YmwoaSwgcHJlZGljYXRlX2NvbnN0KGkpLCB1cGRh dGVkX2F0KSBXSEVSRSBwcmVkaWNhdGVfY29uc3QoaSk7CisJCQkJCVxlbmRpZgorCQkJCQlcc2xl ZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCdpZHhfMicsIGhlYXBhbGxpbmRl eGVkID0+IHRydWUsIGNoZWNrdW5pcXVlID0+IHRydWUpOworCQkJCQlSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSBpZHhfMjsKKwkJCQkJXHNsZWVwIDEwIG1zCisJCQkJCVNFTEVDVCBidF9pbmRl eF9jaGVjaygnaWR4XzInLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0 cnVlKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzI7CisJCQkJXGVuZGlmCisJ CQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVt IHJhbmRvbSgxMDAwLCAxMDAwMDApCisJCQkJQkVHSU47CisJCQkJSU5TRVJUIElOVE8gdGJsIFZB TFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1Qo aSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJs IFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJ Q1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8g dGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09O RkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElO VE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04g Q09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJU IElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJ T04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJU0VM RUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAxKTsKKwkJCQlDT01NSVQ7CisJCQlcZW5kaWYK KwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoVFJVTkNBVEUgVEFC TEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZvciB1bmlxdWUgaW5kZXggY29uY3VycmVudGx5 IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2goCisJJy0tbm8tdmFjdXVtIC0tY2xpZW50PTMw IC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5zYWN0aW9ucz0yNTAwJywKKwkwLAorCVtx cnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7XiR9XSwKKwknY29uY3VycmVudCBvcGVyYXRp b25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGZvciB1bmlxdWUgQlRS RUUnLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzX3VuaXF1ZV9pZHgnID0+IHEoCisJCQlTRUxFQ1Qg cGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxp ZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3Rf dmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxh c3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9 OnBhcmFsbGVscyk7CisJCQkJCUNSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeF8y IE9OIHRibChpKTsKKwkJCQkJXHNsZWVwIDEwIG1zCisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVj aygnaWR4XzInLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsK KwkJCQkJUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzI7CisJCQkJCVxzbGVlcCAxMCBt cworCQkJCQlTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2lkeF8yJywgaGVhcGFsbGluZGV4ZWQgPT4g dHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7CisJCQkJCURST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeF8yOworCQkJCVxlbmRpZgorCQkJCVNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soNDIpOwor CQkJXGVsc2UKKwkJCQlcc2V0IG51bSByYW5kb20oMSwgcG93ZXIoMTAsIHJhbmRvbSgxLCA1KSkp CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxu b3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93 KCk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAxKTsKKwkJCVxlbmRpZgor CQkpCisJfSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShUUlVOQ0FURSBUQUJM RSB0Ymw7KSk7CisKKyMgUnVuIENJQy9SSUMgZm9yICBHSU4vR0lTVC9CUklOL0hBU0gvU1BHSVNU IGluZGV4IGNvbmN1cnJlbnRseSB3aXRoIHVwc2VydHMKKyRub2RlLT5wZ2JlbmNoKAorCSctLW5v LXZhY3V1bSAtLWNsaWVudD0zMCAtLWpvYnM9NCAtLWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlv bnM9MjUwMCcsCisJMCwKKwlbcXJ7YWN0dWFsbHkgcHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJ J2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRoIFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBmb3IgR0lOL0dJU1QvQlJJTi9IQVNIL1NQR0lTVCcsCisJeworCQknY29uY3VycmVudF9v cHNfaWR4JyA9PiBxKAorCQkJU0VMRUNUIHBnX3RyeV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdl ciBBUyBnb3Rsb2NrIFxnc2V0CisJCQlcaWYgOmdvdGxvY2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgn aW5fcm93X3JlYnVpbGQnKSBBUyBsYXN0X3ZhbHVlIFxnc2V0CisJCQkJXHNldCBwYXJhbGxlbHMg cmFuZG9tKDAsIDQpCisJCQkJXGlmIDpsYXN0X3ZhbHVlIDwgMworCQkJCQlBTFRFUiBUQUJMRSB0 YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTpwYXJhbGxlbHMpOworCQkJCQlcc2V0IHZhcmlhbnQg cmFuZG9tKDAsIDQpCisJCQkJCVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVTSU5HIEdJTiAoaWEpOworCQkJCQlcZWxpZiA6dmFy aWFudCA9IDEKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVT SU5HIEdJU1QgKHApOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDIKKwkJCQkJCUNSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVTSU5HIEJSSU4gKHVwZGF0ZWRfYXQpOworCQkJ CQlcZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 XzIgT04gdGJsIFVTSU5HIEhBU0ggKHVwZGF0ZWRfYXQpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9 IDQKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4XzIgT04gdGJsIFVTSU5HIFNQ R0lTVCAocCk7CisJCQkJCVxlbmRpZgorCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4XzI7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlEUk9QIElO REVYIENPTkNVUlJFTlRMWSBpZHhfMjsKKwkJCQlcZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNv cnlfdW5sb2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJXHNldCBudW0gcmFuZG9tKDEsIHBvd2VyKDEw LCByYW5kb20oMSwgNSkpKQorCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9t KCkqOm51bSksMCwwLDAsbm93KCkpCisJCQkJCU9OIENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQg dXBkYXRlZF9hdCA9IG5vdygpOworCQkJCVNFTEVDVCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywg MSk7CisJCQlcZW5kaWYKKwkJKQorCX0pOworCiskbm9kZS0+c3RvcDsKK2RvbmVfdGVzdGluZygp OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIuNDMuMAoK --000000000000caf8fd062fc891e1 Content-Type: application/octet-stream; name="v16-0003-Allow-advancing-xmin-during-non-unique-non-paral.patch" Content-Disposition: attachment; filename="v16-0003-Allow-advancing-xmin-during-non-unique-non-paral.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7zd30oi9 RnJvbSA1ODVjMjdjMTI2MGI3ZDI2YzUzNTc5MzNmYWNlNjgxYTQxMzcxODA0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAyMToxMDoyMyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE2IDAz LzEyXSBBbGxvdyBhZHZhbmNpbmcgeG1pbiBkdXJpbmcgbm9uLXVuaXF1ZSwKIG5vbi1wYXJhbGxl 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 ICAgICAgICAgICAgICAgfCAgMTkgKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNl cnQuYyAgICAgICAgICAgIHwgIDIxICsrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Ri dWlsZC5jICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMg ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMg ICAgICAgICAgICAgIHwgIDQ1ICsrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1faGFuZGxlci5jICAgICAgfCAgNTcgKysrKysrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2dlbmFtLmMgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHNvcnQuYyAgICAgICAgICAgfCAgMzAgKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9z cGdpc3Qvc3BnaW5zZXJ0LmMgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgMzAgKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jICAgICAgICAgICAgICB8ICAxNCArLS0KIHNyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYyAgICAgICAgICB8ICAgOSArKwogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJs ZWFtLmggICAgICAgICAgICAgICAgICB8ICAyOCArKysrLQogc3JjL3Rlc3QvbW9kdWxlcy9pbmpl Y3Rpb25fcG9pbnRzL01ha2VmaWxlICAgIHwgICAyICstCiAuLi4vZXhwZWN0ZWQvY2ljX3Jlc2V0 X3NuYXBzaG90cy5vdXQgICAgICAgICAgfCAxMDUgKysrKysrKysrKysrKysrKysrCiBzcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQgfCAgIDEgKwogLi4uL3NxbC9j aWNfcmVzZXRfc25hcHNob3RzLnNxbCAgICAgICAgICAgICAgIHwgIDg2ICsrKysrKysrKysrKysr CiAyMCBmaWxlcyBjaGFuZ2VkLCA0MjcgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVj dGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbAoKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMgYi9jb250cmliL2FtY2hl Y2svdmVyaWZ5X25idHJlZS5jCmluZGV4IGFhYzhjNzRmNTQ2Li42M2EwOGZiZTYxNSAxMDA2NDQK LS0tIGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYworKysgYi9jb250cmliL2FtY2hl Y2svdmVyaWZ5X25idHJlZS5jCkBAIC02ODksNyArNjg5LDggQEAgYnRfY2hlY2tfZXZlcnlfbGV2 ZWwoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBib29sIGhlYXBrZXlzcGFjZSwKIAkJ CQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkJIE5VTEwsCS8qIHNjYW4g a2V5ICovCiAJCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBPSyAqLwot CQkJCQkJCQkJIHRydWUpOyAvKiBzeW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSB0cnVlLCAvKiBz eW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSBmYWxzZSk7CiAKIAkJLyoKIAkJICogU2NhbiB3aWxs IGJlaGF2ZSBhcyB0aGUgZmlyc3Qgc2NhbiBvZiBhIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYyBiL2NvbnRyaWIv cGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwppbmRleCA0OGNiOGY1OWM0Zi4uZmY3Y2MwN2RmOTkg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYworKysgYi9jb250 cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKQEAgLTMzMiw3ICszMzIsNyBAQCBwZ3N0YXRf aGVhcChSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCQkJCSBlcnJtc2co Im9ubHkgaGVhcCBBTSBpcyBzdXBwb3J0ZWQiKSkpOwogCiAJLyogRGlzYWJsZSBzeW5jc2NhbiBi ZWNhdXNlIHdlIGFzc3VtZSB3ZSBzY2FuIGZyb20gYmxvY2sgemVybyB1cHdhcmRzICovCi0Jc2Nh biA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChyZWwsIFNuYXBzaG90QW55LCAwLCBOVUxMLCB0cnVl LCBmYWxzZSk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChyZWwsIFNuYXBzaG90QW55 LCAwLCBOVUxMLCB0cnVlLCBmYWxzZSwgZmFsc2UpOwogCWhzY2FuID0gKEhlYXBTY2FuRGVzYykg c2NhbjsKIAogCUluaXREaXJ0eVNuYXBzaG90KFNuYXBzaG90RGlydHkpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbi5jCmluZGV4IDc1YTY1ZWM5Yzc1Li4wOGRjMzVkZDhkZiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW4uYwpAQCAtMTIxMywxMSArMTIxMywxMiBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlzdGF0ZS0+YnNfc29ydHN0YXRl ID0KIAkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9icmluKG1haW50ZW5hbmNlX3dvcmtfbWVtLCBj b29yZGluYXRlLAogCQkJCQkJCQkJICAgVFVQTEVTT1JUX05PTkUpOwotCisJCUludmFsaWRhdGVD YXRhbG9nU25hcHNob3QoKTsKIAkJLyogc2NhbiB0aGUgcmVsYXRpb24gYW5kIG1lcmdlIHBlci13 b3JrZXIgcmVzdWx0cyAqLwogCQlyZWx0dXBsZXMgPSBfYnJpbl9wYXJhbGxlbF9tZXJnZShzdGF0 ZSk7CiAKIAkJX2JyaW5fZW5kX3BhcmFsbGVsKHN0YXRlLT5ic19sZWFkZXIsIHN0YXRlKTsKKwkJ QXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KE15UHJvYy0+eG1pbikpOwogCX0KIAllbHNlCQkJCQkJLyogbm8gcGFyYWxsZWwgaW5kZXggYnVp bGQgKi8KIAl7CkBAIC0xMjMwLDYgKzEyMzEsNyBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVhcCwg UmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlyZWx0dXBsZXMgPSB0YWJs ZV9pbmRleF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRleEluZm8sIGZhbHNlLCB0cnVlLAog CQkJCQkJCQkJCSAgIGJyaW5idWlsZENhbGxiYWNrLCBzdGF0ZSwgTlVMTCk7CiAKKwkJSW52YWxp ZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwogCQkvKgogCQkgKiBwcm9jZXNzIHRoZSBmaW5hbCBiYXRj aAogCQkgKgpAQCAtMTI0OSw2ICsxMjUxLDcgQEAgYnJpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJl bGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJYnJpbl9maWxsX2VtcHR5X3Jh bmdlcyhzdGF0ZSwKIAkJCQkJCQkgICBzdGF0ZS0+YnNfY3VyclJhbmdlU3RhcnQsCiAJCQkJCQkJ ICAgc3RhdGUtPmJzX21heFJhbmdlU3RhcnQpOworCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29u Y3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCiAJ LyogcmVsZWFzZSByZXNvdXJjZXMgKi8KQEAgLTIzNzIsNiArMjM3NSw3IEBAIF9icmluX2JlZ2lu X3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxh dGlvbiBpbmRleCwKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVy dXNhZ2U7CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsKKwlib29sCQluZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVuOwogCiAjaWZkZWYgRElT QUJMRV9MRUFERVJfUEFSVElDSVBBVElPTgpAQCAtMjM5Nyw5ICsyNDAxLDE2IEBAIF9icmluX2Jl Z2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIAkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LgogCSAqLwogCWlmICgh aXNjb25jdXJyZW50KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlzbmFw c2hvdCA9IFNuYXBzaG90QW55OworCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsK Kwl9CiAJZWxzZQorCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0 aW9uU25hcHNob3QoKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBz aG90KCkpOworCX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExF TF9LRVlfQlJJTl9TSEFSRUQgd29ya3NwYWNlLgpAQCAtMjQ0Miw2ICsyNDUzLDggQEAgX2JyaW5f YmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LAogCS8qIElmIG5vIERTTSBzZWdtZW50IHdhcyBhdmFpbGFibGUsIGJh Y2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPnNlZyA9PSBOVUxMKQogCXsK KwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CiAJCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qo c25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwpAQCAtMjUyMSw2ICsy NTM0LDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCS8qIElmIG5vIHdvcmtlcnMgd2VyZSBz dWNjZXNzZnVsbHkgbGF1bmNoZWQsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYg KHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkID09IDApCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZl X3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJX2JyaW5fZW5kX3BhcmFsbGVs KGJyaW5sZWFkZXIsIE5VTEwpOwogCQlyZXR1cm47CiAJfQpAQCAtMjUzNyw2ICsyNTUyLDggQEAg X2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9u IGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFy dCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KIAlXYWl0Rm9yUGFyYWxsZWxXb3Jr ZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9w QWN0aXZlU25hcHNob3QoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCmlu ZGV4IGIyZjg5Y2FkODgwLi5mNmY0MGMyZjUzZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpbi9naW5pbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2Vy dC5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgorI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIJCS8qIHBncm1pbmNs dWRlIGlnbm9yZSAqLwogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMv bWVtdXRpbHMuaCIKQEAgLTY0Niw2ICs2NDcsOCBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJYnVpbGRzdGF0ZS5hY2N1bS5n aW5zdGF0ZSA9ICZidWlsZHN0YXRlLmdpbnN0YXRlOwogCWdpbkluaXRCQSgmYnVpbGRzdGF0ZS5h Y2N1bSk7CiAKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCBpbmRleEluZm8t PmlpX1BhcmFsbGVsV29ya2VycyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54aWQp KTsKKwogCS8qIFJlcG9ydCB0YWJsZSBzY2FuIHBoYXNlIHN0YXJ0ZWQgKi8KIAlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9TVUJQSEFTRSwKIAkJCQkJCQkJ IFBST0dSRVNTX0dJTl9QSEFTRV9JTkRFWEJVSUxEX1RBQkxFU0NBTik7CkBAIC03MDgsMTEgKzcx MSwxMyBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZv ICppbmRleEluZm8pCiAJCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfZ2luKGhlYXAsIGluZGV4LAog CQkJCQkJCQkJICBtYWludGVuYW5jZV93b3JrX21lbSwgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCSAg VFVQTEVTT1JUX05PTkUpOworCQlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CiAKIAkJLyog c2NhbiB0aGUgcmVsYXRpb24gaW4gcGFyYWxsZWwgYW5kIG1lcmdlIHBlci13b3JrZXIgcmVzdWx0 cyAqLwogCQlyZWx0dXBsZXMgPSBfZ2luX3BhcmFsbGVsX21lcmdlKHN0YXRlKTsKIAogCQlfZ2lu X2VuZF9wYXJhbGxlbChzdGF0ZS0+YnNfbGVhZGVyLCBzdGF0ZSk7CisJCUFzc2VydCghaW5kZXhJ bmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4p KTsKIAl9CiAJZWxzZQkJCQkJCS8qIG5vIHBhcmFsbGVsIGluZGV4IGJ1aWxkICovCiAJewpAQCAt NzIyLDYgKzcyNyw3IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJ bmRleEluZm8gKmluZGV4SW5mbykKIAkJICovCiAJCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1 aWxkX3NjYW4oaGVhcCwgaW5kZXgsIGluZGV4SW5mbywgZmFsc2UsIHRydWUsCiAJCQkJCQkJCQkJ ICAgZ2luQnVpbGRDYWxsYmFjaywgJmJ1aWxkc3RhdGUsIE5VTEwpOworCQlJbnZhbGlkYXRlQ2F0 YWxvZ1NuYXBzaG90KCk7CiAKIAkJLyogZHVtcCByZW1haW5pbmcgZW50cmllcyB0byB0aGUgaW5k ZXggKi8KIAkJb2xkQ3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGJ1aWxkc3RhdGUudG1wQ3R4 KTsKQEAgLTczNSw2ICs3NDEsNyBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCQkJCQkgICBsaXN0LCBubGlzdCwgJmJ1aWxk c3RhdGUuYnVpbGRTdGF0cyk7CiAJCX0KIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZEN0eCk7 CisJCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNW YWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAKIAlNZW1vcnlDb250ZXh0RGVsZXRlKGJ1aWxkc3Rh dGUuZnVuY0N0eCk7CkBAIC05MDcsNiArOTE0LDcgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5C dWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlX YWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJYm9vbAkJ bGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVfc25hcHNo b3QgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVuOwogCiAjaWZkZWYgRElTQUJMRV9MRUFERVJfUEFS VElDSVBBVElPTgpAQCAtOTMxLDkgKzkzOSwxNiBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1 aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAq IGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCisJewor CQlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7 CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOworCX0KIAllbHNlCisJewogCQlz bmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJ UHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJfQogCiAJLyoK IAkgKiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFMTEVMX0tFWV9HSU5fU0hBUkVEIHdv cmtzcGFjZS4KQEAgLTk3Niw2ICs5OTEsOCBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxk U3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCS8qIElm IG5vIERTTSBzZWdtZW50IHdhcyBhdmFpbGFibGUsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQp ICovCiAJaWYgKHBjeHQtPnNlZyA9PSBOVUxMKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9z bmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCWlmIChJc01WQ0NTbmFwc2hvdChz bmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFy YWxsZWxDb250ZXh0KHBjeHQpOwpAQCAtMTA1MCw2ICsxMDY3LDggQEAgX2dpbl9iZWdpbl9wYXJh bGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUgc3VjY2Vzc2Z1bGx5IGxhdW5jaGVkLCBiYWNr IG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA9 PSAwKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNu YXBzaG90KCk7CiAJCV9naW5fZW5kX3BhcmFsbGVsKGdpbmxlYWRlciwgTlVMTCk7CiAJCXJldHVy bjsKIAl9CkBAIC0xMDY2LDYgKzEwODUsOCBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxk U3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIHN1 cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4K IAkgKi8KIAlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKG5lZWRf cG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKaW5kZXggOWU3MDcxNjdkOTguLjU2OTgxMTQ3YWUx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwpAQCAtNDMsNiArNDMsNyBAQAogI2lu Y2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5o IgogI2luY2x1ZGUgInN0b3JhZ2UvYnVsa193cml0ZS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJv Yy5oIgogCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwu aCIKQEAgLTI1OSw2ICsyNjAsNyBAQCBnaXN0YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCWJ1aWxkc3RhdGUuaW5kdHVwbGVzID0gMDsK IAlidWlsZHN0YXRlLmluZHR1cGxlc1NpemUgPSAwOwogCisJQXNzZXJ0KCFpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7CiAJaWYg KGJ1aWxkc3RhdGUuYnVpbGRNb2RlID09IEdJU1RfU09SVEVEX0JVSUxEKQogCXsKIAkJLyoKQEAg LTM1MCw2ICszNTIsNyBAQCBnaXN0YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs IEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxl czsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IChkb3VibGUpIGJ1aWxkc3RhdGUuaW5kdHVwbGVz OworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNW YWxpZChNeVByb2MtPnhpZCkpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hh c2guYwppbmRleCA0YzgzYjA5ZWRkZS4uMGJjOTNkODY0NjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oYXNoL2hhc2guYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNo LmMKQEAgLTE5Niw2ICsxOTYsNyBAQCBoYXNoYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJl bHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOwor CUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhpZCkpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMKaW5kZXggZmE3OTM1YTBlZDMuLmRlZjRmZTIwZDFlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwpAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5j bHVkZSAidXRpbHMvc3BjY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorI2lu Y2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAKIHN0YXRpYyBIZWFwVHVwbGUgaGVh cF9wcmVwYXJlX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cCwKQEAgLTU3 MCw2ICs1NzEsMzYgQEAgaGVhcF9wcmVwYXJlX3BhZ2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4p CiAJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiB9CiAKKy8qCisgKiBS ZXNldCB0aGUgYWN0aXZlIHNuYXBzaG90IGR1cmluZyBhIHNjYW4uCisgKiBUaGlzIGVuc3VyZXMg dGhlIHhtaW4gaG9yaXpvbiBjYW4gYWR2YW5jZSB3aGlsZSBtYWludGFpbmluZyBzYWZlIHR1cGxl IHZpc2liaWxpdHkuCisgKiBOb3RlOiBObyBvdGhlciBzbmFwc2hvdCBzaG91bGQgYmUgYWN0aXZl IGR1cmluZyB0aGlzIG9wZXJhdGlvbi4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitoZWFwX3Jl c2V0X3NjYW5fc25hcHNob3QoVGFibGVTY2FuRGVzYyBzc2NhbikKK3sKKwkvKiBNYWtlIHN1cmUg bm8gb3RoZXIgc25hcHNob3Qgd2FzIHNldCBhcyBhY3RpdmUuICovCisJQXNzZXJ0KEdldEFjdGl2 ZVNuYXBzaG90KCkgPT0gc3NjYW4tPnJzX3NuYXBzaG90KTsKKwkvKiBBbmQgbWFrZSBzdXJlIGFj dGl2ZSBzbmFwc2hvdCBpcyBub3QgcmVnaXN0ZXJlZC4gKi8KKwlBc3NlcnQoR2V0QWN0aXZlU25h cHNob3QoKS0+cmVnZF9jb3VudCA9PSAwKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJc3Nj YW4tPnJzX3NuYXBzaG90ID0gSW52YWxpZFNuYXBzaG90OyAvKiBqdXN0IG90IGJlIHRpZHkgKi8K KwlBc3NlcnQoIUhhdmVSZWdpc3RlcmVkT3JBY3RpdmVTbmFwc2hvdCgpKTsKKwlJbnZhbGlkYXRl Q2F0YWxvZ1NuYXBzaG90KCk7CisKKwkvKiBHb2FsIG9mIHNuYXBzaG90IHJlc2V0IGlzIHRvIGFs bG93IGhvcml6b24gdG8gYWR2YW5jZS4gKi8KKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KE15UHJvYy0+eG1pbikpOworI2lmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJLyogSW4gc29tZSBj YXNlcyBpdCBpcyBzdGlsbCBub3QgcG9zc2libGUgZHVlIHhpZCBhc3NpZ24uICovCisJaWYgKCFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpCisJCUlOSkVDVElPTl9QT0lOVCgiaGVh cF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZSIpOworI2VuZGlmCisKKwlQdXNoQWN0aXZl U25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJc3NjYW4tPnJzX3NuYXBzaG90ID0gR2V0 QWN0aXZlU25hcHNob3QoKTsKK30KKwogLyoKICAqIGhlYXBfZmV0Y2hfbmV4dF9idWZmZXIgLSBy ZWFkIGFuZCBwaW4gdGhlIG5leHQgYmxvY2sgZnJvbSBNQUlOX0ZPUktOVU0uCiAgKgpAQCAtNjEx LDcgKzY0MiwxMiBAQCBoZWFwX2ZldGNoX25leHRfYnVmZmVyKEhlYXBTY2FuRGVzYyBzY2FuLCBT Y2FuRGlyZWN0aW9uIGRpcikKIAogCXNjYW4tPnJzX2NidWYgPSByZWFkX3N0cmVhbV9uZXh0X2J1 ZmZlcihzY2FuLT5yc19yZWFkX3N0cmVhbSwgTlVMTCk7CiAJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nh bi0+cnNfY2J1ZikpCisJewogCQlzY2FuLT5yc19jYmxvY2sgPSBCdWZmZXJHZXRCbG9ja051bWJl cihzY2FuLT5yc19jYnVmKTsKKwkJaWYgKChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fUkVT RVRfU05BUFNIT1QpICYmCisJCQkoc2Nhbi0+cnNfY2Jsb2NrICUgU09fUkVTRVRfU05BUFNIT1Rf RUFDSF9OX1BBR0UgPT0gMCkpCisJCQloZWFwX3Jlc2V0X3NjYW5fc25hcHNob3QoKFRhYmxlU2Nh bkRlc2MpIHNjYW4pOworCX0KIH0KIAogLyoKQEAgLTEyNTYsNiArMTI5MiwxNSBAQCBoZWFwX2Vu ZHNjYW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAlpZiAoc2Nhbi0+cnNfcGFyYWxsZWx3b3JrZXJk YXRhICE9IE5VTEwpCiAJCXBmcmVlKHNjYW4tPnJzX3BhcmFsbGVsd29ya2VyZGF0YSk7CiAKKwlp ZiAoc2Nhbi0+cnNfYmFzZS5yc19mbGFncyAmIFNPX1JFU0VUX1NOQVBTSE9UKQorCXsKKwkJQXNz ZXJ0KCEoc2Nhbi0+cnNfYmFzZS5yc19mbGFncyAmIFNPX1RFTVBfU05BUFNIT1QpKTsKKwkJLyog TWFrZSBzdXJlIG5vIG90aGVyIHNuYXBzaG90IHdhcyBzZXQgYXMgYWN0aXZlLiAqLworCQlBc3Nl cnQoR2V0QWN0aXZlU25hcHNob3QoKSA9PSBzc2Nhbi0+cnNfc25hcHNob3QpOworCQkvKiBBbmQg bWFrZSBzdXJlIHNuYXBzaG90IGlzIG5vdCByZWdpc3RlcmVkLiAqLworCQlBc3NlcnQoR2V0QWN0 aXZlU25hcHNob3QoKS0+cmVnZF9jb3VudCA9PSAwKTsKKwl9CisKIAlpZiAoc2Nhbi0+cnNfYmFz ZS5yc19mbGFncyAmIFNPX1RFTVBfU05BUFNIT1QpCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChzY2Fu LT5yc19iYXNlLnJzX3NuYXBzaG90KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKaW5kZXggZTc4NjgyYzNjZWYuLmYxN2M1ZGJhY2FhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTExOTAsNiArMTE5MCw4IEBAIGhlYXBhbV9p bmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlFeHByQ29udGV4 dCAqZWNvbnRleHQ7CiAJU25hcHNob3QJc25hcHNob3Q7CiAJYm9vbAkJbmVlZF91bnJlZ2lzdGVy X3NuYXBzaG90ID0gZmFsc2U7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFs c2U7CisJYm9vbAkJcmVzZXRfc25hcHNob3RzID0gZmFsc2U7CiAJVHJhbnNhY3Rpb25JZCBPbGRl c3RYbWluOwogCUJsb2NrTnVtYmVyIHByZXZpb3VzX2Jsa25vID0gSW52YWxpZEJsb2NrTnVtYmVy OwogCUJsb2NrTnVtYmVyIHJvb3RfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7CkBAIC0xMjI0 LDkgKzEyMjYsNiBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJLyogQXJyYW5nZSBmb3IgZWNvbnRleHQncyBzY2FuIHR1cGxlIHRvIGJlIHRo ZSB0dXBsZSB1bmRlciB0ZXN0ICovCiAJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2xvdDsK IAotCS8qIFNldCB1cCBleGVjdXRpb24gc3RhdGUgZm9yIHByZWRpY2F0ZSwgaWYgYW55LiAqLwot CXByZWRpY2F0ZSA9IEV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0 YXRlKTsKLQogCS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4g IEluIGEgbm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNl IHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCkBAIC0xMjM2 LDYgKzEyMzUsMTUgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVh cFJlbGF0aW9uLAogCSAqLwogCU9sZGVzdFhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAor CS8qCisJICogRm9yIHVuaXF1ZSBpbmRleCB3ZSBuZWVkIGNvbnNpc3RlbnQgc25hcHNob3QgZm9y IHRoZSB3aG9sZSBzY2FuLgorCSAqIEluIGNhc2Ugb2YgcGFyYWxsZWwgc2NhbiBzb21lIGFkZGl0 aW9uYWwgaW5mcmFzdHJ1Y3R1cmUgcmVxdWlyZWQKKwkgKiB0byBwZXJmb3JtIHNjYW4gd2l0aCBT T19SRVNFVF9TTkFQU0hPVCB3aGljaCBpcyBub3QgeWV0IHJlYWR5LgorCSAqLworCXJlc2V0X3Nu YXBzaG90cyA9IGluZGV4SW5mby0+aWlfQ29uY3VycmVudCAmJgorCQkJCQkgICFpbmRleEluZm8t PmlpX1VuaXF1ZSAmJgorCQkJCQkgICFpc19zeXN0ZW1fY2F0YWxvZzsgLyoganVzdCBmb3IgdGhl IGNhc2UgKi8KKwogCS8qIG9rYXkgdG8gaWdub3JlIGxhenkgVkFDVVVNcyBoZXJlICovCiAJaWYg KCFJc0Jvb3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkgJiYgIWluZGV4SW5mby0+aWlfQ29uY3VycmVu dCkKIAkJT2xkZXN0WG1pbiA9IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoaGVh cFJlbGF0aW9uKTsKQEAgLTEyNDQsMjQgKzEyNTIsNDEgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3Jh bmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXsKIAkJLyoKIAkJICogU2VyaWFsIGlu ZGV4IGJ1aWxkLgotCQkgKgotCQkgKiBNdXN0IGJlZ2luIG91ciBvd24gaGVhcCBzY2FuIGluIHRo aXMgY2FzZS4gIFdlIG1heSBhbHNvIG5lZWQgdG8KLQkJICogcmVnaXN0ZXIgYSBzbmFwc2hvdCB3 aG9zZSBsaWZldGltZSBpcyB1bmRlciBvdXIgZGlyZWN0IGNvbnRyb2wuCiAJCSAqLwogCQlpZiAo IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pKQogCQl7Ci0JCQlzbmFwc2hvdCA9IFJl Z2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJCW5lZWRfdW5yZWdp c3Rlcl9zbmFwc2hvdCA9IHRydWU7CisJCQlzbmFwc2hvdCA9IEdldFRyYW5zYWN0aW9uU25hcHNo b3QoKTsKKwkJCS8qCisJCQkgKiBNdXN0IGJlZ2luIG91ciBvd24gaGVhcCBzY2FuIGluIHRoaXMg Y2FzZS4gIFdlIG1heSBhbHNvIG5lZWQgdG8KKwkJCSAqIHJlZ2lzdGVyIGEgc25hcHNob3Qgd2hv c2UgbGlmZXRpbWUgaXMgdW5kZXIgb3VyIGRpcmVjdCBjb250cm9sLgorCQkJICogSW4gY2FzZSBv ZiByZXNldHRpbmcgb2Ygc25hcHNob3QgZHVyaW5nIHRoZSBzY2FuIHJlZ2lzdHJhdGlvbiBpcwor CQkJICogbm90IGFsbG93ZWQgYmVjYXVzZSBzbmFwc2hvdCBpcyBnb2luZyB0byBiZSBjaGFuZ2Vk IGV2ZXJ5IHNvCisJCQkgKiBvZnRlbi4KKwkJCSAqLworCQkJaWYgKCFyZXNldF9zbmFwc2hvdHMp CisJCQl7CisJCQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKwkJCQlu ZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSB0cnVlOworCQkJfQorCQkJQXNzZXJ0KCFBY3RpdmVT bmFwc2hvdFNldCgpKTsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJCQkvKiBz dG9yZSBsaW5rIHRvIHNuYXBzaG90IGJlY2F1c2UgaXQgbWF5IGJlIGNvcGllZCAqLworCQkJc25h cHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOworCQkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 ID0gdHJ1ZTsKIAkJfQogCQllbHNlCisJCXsKKwkJCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25j dXJyZW50KTsKIAkJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CisJCX0KIAogCQlzY2FuID0gdGFi bGVfYmVnaW5zY2FuX3N0cmF0KGhlYXBSZWxhdGlvbiwJLyogcmVsYXRpb24gKi8KIAkJCQkJCQkJ CSBzbmFwc2hvdCwJLyogc25hcHNob3QgKi8KIAkJCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5 cyAqLwogCQkJCQkJCQkJIE5VTEwsCS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCQkgdHJ1ZSwJLyog YnVmZmVyIGFjY2VzcyBzdHJhdGVneSBPSyAqLwotCQkJCQkJCQkJIGFsbG93X3N5bmMpOwkvKiBz eW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSBhbGxvd19zeW5jLAkvKiBzeW5jc2NhbiBPSz8gKi8K KwkJCQkJCQkJCSByZXNldF9zbmFwc2hvdHMgLyogcmVzZXQgc25hcHNob3RzPyAqLyk7CiAJfQog CWVsc2UKIAl7CkBAIC0xMjc1LDYgKzEzMDAsOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vf c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCUFzc2VydCghSXNCb290c3RyYXBQcm9jZXNz aW5nTW9kZSgpKTsKIAkJQXNzZXJ0KGFsbG93X3N5bmMpOwogCQlzbmFwc2hvdCA9IHNjYW4tPnJz X3NuYXBzaG90OworCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCQluZWVkX3BvcF9h Y3RpdmVfc25hcHNob3QgPSB0cnVlOwogCX0KIAogCWhzY2FuID0gKEhlYXBTY2FuRGVzYykgc2Nh bjsKQEAgLTEyODksNiArMTMxNiwxMyBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55ID8g VHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikgOgogCQkgICAhVHJhbnNhY3Rpb25JZElz VmFsaWQoT2xkZXN0WG1pbikpOwogCUFzc2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFueSB8fCAh YW55dmlzaWJsZSk7CisJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55IHx8IEFjdGl2ZVNu YXBzaG90U2V0KCkpOworCisJLyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJlZGljYXRl LCBpZiBhbnkuICovCisJcHJlZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5mby0+aWlf UHJlZGljYXRlLCBlc3RhdGUpOworCS8qIENsZWFyIHJlZmVyZW5jZSB0byBzbmFwc2hvdCBzaW5j ZSBpdCBtYXkgYmUgY2hhbmdlZCBieSB0aGUgc2NhbiBpdHNlbGYuICovCisJaWYgKHJlc2V0X3Nu YXBzaG90cykKKwkJc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7CiAKIAkvKiBQdWJsaXNoIG51 bWJlciBvZiBibG9ja3MgdG8gc2NhbiAqLwogCWlmIChwcm9ncmVzcykKQEAgLTE3MjQsNiArMTc1 OCw4IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlv biwKIAogCXRhYmxlX2VuZHNjYW4oc2Nhbik7CiAKKwlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBz aG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCS8qIHdlIGNhbiBub3cgZm9yZ2V0IG91ciBz bmFwc2hvdCwgaWYgc2V0IGFuZCByZWdpc3RlcmVkIGJ5IHVzICovCiAJaWYgKG5lZWRfdW5yZWdp c3Rlcl9zbmFwc2hvdCkKIAkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKQEAgLTE3OTYs NyArMTgzMiw4IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxh dGlvbiwKIAkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCSBOVUxMLAkv KiBzY2FuIGtleSAqLwogCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBP SyAqLwotCQkJCQkJCQkgZmFsc2UpOwkvKiBzeW5jc2NhbiBub3QgT0sgKi8KKwkJCQkJCQkJIGZh bHNlLAkvKiBzeW5jc2NhbiBub3QgT0sgKi8KKwkJCQkJCQkJIGZhbHNlKTsKIAloc2NhbiA9IChI ZWFwU2NhbkRlc2MpIHNjYW47CiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dS RVNTX1NDQU5fQkxPQ0tTX1RPVEFMLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2dlbmFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRleCAwN2Jh ZTM0MmUyNS4uMGQyNjJhNDE4OGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRl eC9nZW5hbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCkBAIC00NjMs NyArNDYzLDcgQEAgc3lzdGFibGVfYmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJ ICovCiAJCXN5c3NjYW4tPnNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoaGVhcFJlbGF0aW9u LCBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJICBua2V5cywga2V5LAotCQkJCQkJCQkJCQkgIHRydWUs IGZhbHNlKTsKKwkJCQkJCQkJCQkJICB0cnVlLCBmYWxzZSwgZmFsc2UpOwogCQlzeXNzY2FuLT5p c2NhbiA9IE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IDdh YmE4NTJkYjkwLi5iNDkwZGEwZWVlZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMK QEAgLTI1OCw3ICsyNTgsNyBAQCBzdGF0aWMgZG91YmxlIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiBzdGF0aWMgdm9pZCBfYnRfc3Bvb2xkZXN0cm95 KEJUU3Bvb2wgKmJ0c3Bvb2wpOwogc3RhdGljIHZvaWQgX2J0X3Nwb29sKEJUU3Bvb2wgKmJ0c3Bv b2wsIEl0ZW1Qb2ludGVyIHNlbGYsCiAJCQkJCSAgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxs KTsKLXN0YXRpYyB2b2lkIF9idF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAq YnRzcG9vbDIpOworc3RhdGljIHZvaWQgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBC VFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpOwogc3RhdGljIHZvaWQgX2J0 X2J1aWxkX2NhbGxiYWNrKFJlbGF0aW9uIGluZGV4LCBJdGVtUG9pbnRlciB0aWQsIERhdHVtICp2 YWx1ZXMsCiAJCQkJCQkJICAgYm9vbCAqaXNudWxsLCBib29sIHR1cGxlSXNBbGl2ZSwgdm9pZCAq c3RhdGUpOwogc3RhdGljIEJ1bGtXcml0ZUJ1ZmZlciBfYnRfYmxuZXdwYWdlKEJUV3JpdGVTdGF0 ZSAqd3N0YXRlLCB1aW50MzIgbGV2ZWwpOwpAQCAtMzIxLDE4ICszMjEsMjIgQEAgYnRidWlsZChS ZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCQkg UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kZXgpKTsKIAogCXJlbHR1cGxlcyA9IF9idF9zcG9v bHNfaGVhcHNjYW4oaGVhcCwgaW5kZXgsICZidWlsZHN0YXRlLCBpbmRleEluZm8pOworCUFzc2Vy dChpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8 fAorCQkgICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBGaW5pc2ggdGhlIGJ1aWxkIGJ5ICgxKSBjb21w bGV0aW5nIHRoZSBzb3J0IG9mIHRoZSBzcG9vbCBmaWxlLCAoMikKIAkgKiBpbnNlcnRpbmcgdGhl IHNvcnRlZCB0dXBsZXMgaW50byBidHJlZSBwYWdlcyBhbmQgKDMpIGJ1aWxkaW5nIHRoZSB1cHBl cgogCSAqIGxldmVscy4gIEZpbmFsbHksIGl0IG1heSBhbHNvIGJlIG5lY2Vzc2FyeSB0byBlbmQg dXNlIG9mIHBhcmFsbGVsaXNtLgogCSAqLwotCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0ZS5zcG9v bCwgYnVpbGRzdGF0ZS5zcG9vbDIpOworCV9idF9sZWFmYnVpbGQoYnVpbGRzdGF0ZS5zcG9vbCwg YnVpbGRzdGF0ZS5zcG9vbDIsICFpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyAmJiBpbmRl eEluZm8tPmlpX0NvbmN1cnJlbnQpOwogCV9idF9zcG9vbGRlc3Ryb3koYnVpbGRzdGF0ZS5zcG9v bCk7CiAJaWYgKGJ1aWxkc3RhdGUuc3Bvb2wyKQogCQlfYnRfc3Bvb2xkZXN0cm95KGJ1aWxkc3Rh dGUuc3Bvb2wyKTsKIAlpZiAoYnVpbGRzdGF0ZS5idGxlYWRlcikKIAkJX2J0X2VuZF9wYXJhbGxl bChidWlsZHN0YXRlLmJ0bGVhZGVyKTsKKwlBc3NlcnQoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdv cmtlcnMgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKKwkJICAhaW5kZXhJbmZvLT5paV9Db25j dXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJlc3Vs dCA9IChJbmRleEJ1aWxkUmVzdWx0ICopIHBhbGxvYyhzaXplb2YoSW5kZXhCdWlsZFJlc3VsdCkp OwogCkBAIC00ODAsNiArNDg0LDkgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCWVsc2UKIAkJcmVs dHVwbGVzID0gX2J0X3BhcmFsbGVsX2hlYXBzY2FuKGJ1aWxkc3RhdGUsCiAJCQkJCQkJCQkJICAm aW5kZXhJbmZvLT5paV9Ccm9rZW5Ib3RDaGFpbik7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hv dCgpOworCUFzc2VydChpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8t PmlpX1VuaXF1ZSB8fAorCQkgICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBTZXQgdGhlIHByb2dyZXNz IHRhcmdldCBmb3IgdGhlIG5leHQgcGhhc2UuICBSZXNldCB0aGUgYmxvY2sgbnVtYmVyCkBAIC01 MzUsNyArNTQyLDcgQEAgX2J0X3Nwb29sKEJUU3Bvb2wgKmJ0c3Bvb2wsIEl0ZW1Qb2ludGVyIHNl bGYsIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCkKICAqIGNyZWF0ZSBhbiBlbnRpcmUgYnRy ZWUuCiAgKi8KIHN0YXRpYyB2b2lkCi1fYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJU U3Bvb2wgKmJ0c3Bvb2wyKQorX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29s ICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpCiB7CiAJQlRXcml0ZVN0YXRlIHdzdGF0 ZTsKIApAQCAtNTU3LDE4ICs1NjQsMjEgQEAgX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29s LCBCVFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJCSBQUk9HUkVTU19CVFJFRV9QSEFTRV9QRVJG T1JNU09SVF8yKTsKIAkJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KGJ0c3Bvb2wyLT5zb3J0c3RhdGUp OwogCX0KKwlBc3NlcnQoIXJlc2V0X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CiAKIAl3c3RhdGUuaGVhcCA9IGJ0c3Bvb2wtPmhlYXA7CiAJd3N0YXRl LmluZGV4ID0gYnRzcG9vbC0+aW5kZXg7CiAJd3N0YXRlLmluc2tleSA9IF9idF9ta3NjYW5rZXko d3N0YXRlLmluZGV4LCBOVUxMKTsKIAkvKiBfYnRfbWtzY2Fua2V5KCkgd29uJ3Qgc2V0IGFsbGVx dWFsaW1hZ2Ugd2l0aG91dCBtZXRhcGFnZSAqLwogCXdzdGF0ZS5pbnNrZXktPmFsbGVxdWFsaW1h Z2UgPSBfYnRfYWxsZXF1YWxpbWFnZSh3c3RhdGUuaW5kZXgsIHRydWUpOworCUludmFsaWRhdGVD YXRhbG9nU25hcHNob3QoKTsKIAogCS8qIHJlc2VydmUgdGhlIG1ldGFwYWdlICovCiAJd3N0YXRl LmJ0d3NfcGFnZXNfYWxsb2NlZCA9IEJUUkVFX01FVEFQQUdFICsgMTsKIAogCXBnc3RhdF9wcm9n cmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAogCQkJCQkJCQkg UFJPR1JFU1NfQlRSRUVfUEhBU0VfTEVBRl9MT0FEKTsKKwlBc3NlcnQoIXJlc2V0X3NuYXBzaG90 cyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJX2J0X2xvYWQoJndz dGF0ZSwgYnRzcG9vbCwgYnRzcG9vbDIpOwogfQogCkBAIC0xNDEwLDYgKzE0MjAsNyBAQCBfYnRf YmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVu dCwgaW50IHJlcXVlc3QpCiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1 ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CisJYm9vbAkJbmVl ZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVm IERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MzUsOSArMTQ0NiwxNiBAQCBfYnRf YmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVu dCwgaW50IHJlcXVlc3QpCiAJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAo IWlzY29uY3VycmVudCkKKwl7CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJc25h cHNob3QgPSBTbmFwc2hvdEFueTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7 CisJfQogCWVsc2UKKwl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2Fj dGlvblNuYXBzaG90KCkpOworCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCX0KIAog CS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfQlRSRUVfU0hB UkVEIHdvcmtzcGFjZSwgYW5kCkBAIC0xNDkxLDYgKzE1MDksOCBAQCBfYnRfYmVnaW5fcGFyYWxs ZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVl c3QpCiAJLyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBvdXQgKGRvIHNl cmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlpZiAobmVlZF9w b3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJaWYgKElzTVZD Q1NuYXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJ CURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBAIC0xNTg1LDYgKzE2MDUsOCBAQCBfYnRf YmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVu dCwgaW50IHJlcXVlc3QpCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVu Y2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNf bGF1bmNoZWQgPT0gMCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCQlQ b3BBY3RpdmVTbmFwc2hvdCgpOwogCQlfYnRfZW5kX3BhcmFsbGVsKGJ0bGVhZGVyKTsKIAkJcmV0 dXJuOwogCX0KQEAgLTE2MDEsNiArMTYyMyw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxk U3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBz dXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIu CiAJICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmIChuZWVk X3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYwppbmRleCA2YTYxZTA5M2ZhMC4uMDZjMDFj ZjMzNjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYwpAQCAtMjQsNiArMjQs NyBAQAogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVm bWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWxrX3dyaXRlLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9wcm9jLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9y ZWwuaCIKIApAQCAtMTQzLDYgKzE0NCw3IEBAIHNwZ2J1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlyZXN1bHQgPSAoSW5kZXhCdWlsZFJl c3VsdCAqKSBwYWxsb2MwKHNpemVvZihJbmRleEJ1aWxkUmVzdWx0KSk7CiAJcmVzdWx0LT5oZWFw X3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxkc3RhdGUu aW5kdHVwbGVzOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMKaW5kZXggOGUxNzQxYzgxZjUuLjBhMTUzYzZmNzQ2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5j CkBAIC03OSw2ICs3OSw3IEBACiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUg InV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzb3J0LmgiCisjaW5jbHVk ZSAic3RvcmFnZS9wcm9jLmgiCiAKIC8qIFBvdGVudGlhbGx5IHNldCBieSBwZ191cGdyYWRlX3N1 cHBvcnQgZnVuY3Rpb25zICovCiBPaWQJCQliaW5hcnlfdXBncmFkZV9uZXh0X2luZGV4X3BnX2Ns YXNzX29pZCA9IEludmFsaWRPaWQ7CkBAIC0xNDkxLDggKzE0OTIsOCBAQCBpbmRleF9jb25jdXJy ZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAogCVJlbGF0aW9uCWluZGV4UmVsYXRpb247 CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwogCi0JLyogVGhpcyBoYWQgYmV0dGVyIG1ha2Ugc3Vy ZSB0aGF0IGEgc25hcHNob3QgaXMgYWN0aXZlICovCi0JQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0 KCkpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNz ZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhpZCkpOwogCiAJLyogT3BlbiBhbmQg bG9jayB0aGUgcGFyZW50IGhlYXAgcmVsYXRpb24gKi8KIAloZWFwUmVsID0gdGFibGVfb3Blbiho ZWFwUmVsYXRpb25JZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKQEAgLTE1MTAsMTkgKzE1 MTEsMjggQEAgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAog CWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKGluZGV4UmVsYXRpb25JZCwgUm93RXhjbHVzaXZl TG9jayk7CiAKKwkvKiBCdWlsZEluZGV4SW5mbyBtYXkgcmVxdWlyZSBhcyBzbmFwc2hvdCBmb3Ig ZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMgKi8KKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJh bnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkvKgogCSAqIFdlIGhhdmUgdG8gcmUtYnVpbGQgdGhlIElu ZGV4SW5mbyBzdHJ1Y3QsIHNpbmNlIGl0IHdhcyBsb3N0IGluIHRoZQogCSAqIGNvbW1pdCBvZiB0 aGUgdHJhbnNhY3Rpb24gd2hlcmUgdGhpcyBjb25jdXJyZW50IGluZGV4IHdhcyBjcmVhdGVkIGF0 CiAJICogdGhlIGNhdGFsb2cgbGV2ZWwuCiAJICovCiAJaW5kZXhJbmZvID0gQnVpbGRJbmRleElu Zm8oaW5kZXhSZWxhdGlvbik7CisJLyogRG9uZSB3aXRoIHNuYXBzaG90ICovCisJUG9wQWN0aXZl U25hcHNob3QoKTsKIAlBc3NlcnQoIWluZGV4SW5mby0+aWlfUmVhZHlGb3JJbnNlcnRzKTsKIAlp bmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSB0cnVlOwogCWluZGV4SW5mby0+aWlfQnJva2VuSG90 Q2hhaW4gPSBmYWxzZTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOwogCiAJLyogTm93IGJ1aWxkIHRoZSBpbmRleCAqLwogCWluZGV4X2J1aWxkKGhlYXBSZWws IGluZGV4UmVsYXRpb24sIGluZGV4SW5mbywgZmFsc2UsIHRydWUpOwogCisJLyogSW52YWxpZGF0 ZSBjYXRhbG9nIHNuYXBzaG90IGp1c3QgZm9yIGFzc2VydCAqLworCUludmFsaWRhdGVDYXRhbG9n U25hcHNob3QoKTsKKwlBc3NlcnQoKGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGlu ZGV4SW5mby0+aWlfVW5pcXVlKSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWlu KSk7CisKIAkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1dGVkIGJ5IGluZGV4IGZ1 bmN0aW9ucyAqLwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0bGV2ZWwpOwogCkBAIC0x NTMzLDEyICsxNTQzLDE5IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0 aW9uSWQsCiAJdGFibGVfY2xvc2UoaGVhcFJlbCwgTm9Mb2NrKTsKIAlpbmRleF9jbG9zZShpbmRl eFJlbGF0aW9uLCBOb0xvY2spOwogCisJLyoKKwkgKiBVcGRhdGluZyBwZ19pbmRleCBtaWdodCBp bnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJICogaGF2ZSBhIHZhbGlk IHNuYXBzaG90LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBz aG90KCkpOwogCS8qCiAJICogVXBkYXRlIHRoZSBwZ19pbmRleCByb3cgdG8gbWFyayB0aGUgaW5k ZXggYXMgcmVhZHkgZm9yIGluc2VydHMuIE9uY2Ugd2UKIAkgKiBjb21taXQgdGhpcyB0cmFuc2Fj dGlvbiwgYW55IG5ldyB0cmFuc2FjdGlvbnMgdGhhdCBvcGVuIHRoZSB0YWJsZSBtdXN0CiAJICog aW5zZXJ0IG5ldyBlbnRyaWVzIGludG8gdGhlIGluZGV4IGZvciBpbnNlcnRpb25zIGFuZCBub24t SE9UIHVwZGF0ZXMuCiAJICovCiAJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGluZGV4UmVsYXRpb25J ZCwgSU5ERVhfQ1JFQVRFX1NFVF9SRUFEWSk7CisJLyogd2UgY2FuIGRvIGF3YXkgd2l0aCBvdXIg c25hcHNob3QgKi8KKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQogCiAvKgpAQCAtMzIxNCw3ICsz MjMxLDggQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJ CQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkg Ki8KIAkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJ CQkJIHRydWUpOyAvKiBzeW5jc2NhbiBPSyAqLworCQkJCQkJCQkgdHJ1ZSwgLyogc3luY3NjYW4g T0sgKi8KKwkJCQkJCQkJIGZhbHNlKTsKIAogCXdoaWxlICh0YWJsZV9zY2FuX2dldG5leHRzbG90 KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkKIAl7CkBAIC0zMjc3LDEyICszMjk1 LDE2IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogICogYXMg b2YgdGhlIHN0YXJ0IG9mIHRoZSBzY2FuIChzZWUgdGFibGVfaW5kZXhfYnVpbGRfc2NhbiksIHdo ZXJlYXMgYSBub3JtYWwKICAqIGJ1aWxkIHRha2VzIGNhcmUgdG8gaW5jbHVkZSByZWNlbnRseS1k ZWFkIHR1cGxlcy4gIFRoaXMgaXMgT0sgYmVjYXVzZQogICogd2Ugd29uJ3QgbWFyayB0aGUgaW5k ZXggdmFsaWQgdW50aWwgYWxsIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0IGJlIGFibGUKLSAqIHRv IHNlZSB0aG9zZSB0dXBsZXMgYXJlIGdvbmUuICBUaGUgcmVhc29uIGZvciBkb2luZyB0aGF0IGlz IHRvIGF2b2lkCisgKiB0byBzZWUgdGhvc2UgdHVwbGVzIGFyZSBnb25lLiAgT25lIG9mIHJlYXNv bnMgZm9yIGRvaW5nIHRoYXQgaXMgdG8gYXZvaWQKICAqIGJvZ3VzIHVuaXF1ZS1pbmRleCBmYWls dXJlcyBkdWUgdG8gY29uY3VycmVudCBVUERBVEVzICh3ZSBtaWdodCBzZWUKICAqIGRpZmZlcmVu dCB2ZXJzaW9ucyBvZiB0aGUgc2FtZSByb3cgYXMgYmVpbmcgdmFsaWQgd2hlbiB3ZSBwYXNzIG92 ZXIgdGhlbSwKICAqIGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMg bGVhdmVzIHVzIHdpdGggYW4gaW5kZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVw bGVzIGFkZGVkIHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAgKgorICog RnVydGhlcm1vcmUsIGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09fUkVTRVRf U05BUFNIT1QgZm9yIHRoZQorICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hvdCB0byBi ZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uCisgKiBmb3IgdGhhdCBp cyB0byBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgorICoKICAqIE5leHQsIHdl IG1hcmsgdGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAiaW5kaXN2YWxpZCIp IGFuZAogICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEgdGhpcmQu ICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKICAqIHRyYW5zYWN0aW9ucyB0aGF0IGNvdWxkIGhhdmUg YmVlbiBtb2RpZnlpbmcgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4gIE5vdwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9p bmRleGNtZHMuYwppbmRleCA2YTcyZTU2NmQ0YS4uMzZiODc1OTQ1ZDMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jCkBAIC0xNzAwLDIzICsxNzAwLDE3IEBAIERlZmluZUluZGV4KE9pZCB0YWJs ZUlkLAogCSAqIGNoYWlucyBjYW4gYmUgY3JlYXRlZCB3aGVyZSB0aGUgbmV3IHR1cGxlIGFuZCB0 aGUgb2xkIHR1cGxlIGluIHRoZQogCSAqIGNoYWluIGhhdmUgZGlmZmVyZW50IGluZGV4IGtleXMu CiAJICoKLQkgKiBXZSBub3cgdGFrZSBhIG5ldyBzbmFwc2hvdCwgYW5kIGJ1aWxkIHRoZSBpbmRl eCB1c2luZyBhbGwgdHVwbGVzIHRoYXQKLQkgKiBhcmUgdmlzaWJsZSBpbiB0aGlzIHNuYXBzaG90 LiAgV2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KKwkgKiBXZSBidWlsZCB0 aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5nIHNpbmdsZSBv cgorCSAqIG11bHRpcGxlIHJlZnJlc2hpbmcgc25hcHNob3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0 IGFueSBIT1QgdXBkYXRlcyB0bwogCSAqIHRoZXNlIHR1cGxlcyB3aWxsIGJlIGNvbXBhdGlibGUg d2l0aCB0aGUgaW5kZXgsIHNpbmNlIGFueSB1cGRhdGVzIG1hZGUKIAkgKiBieSB0cmFuc2FjdGlv bnMgdGhhdCBkaWRuJ3Qga25vdyBhYm91dCB0aGUgaW5kZXggYXJlIG5vdyBjb21taXR0ZWQgb3IK IAkgKiByb2xsZWQgYmFjay4gIFRodXMsIGVhY2ggdmlzaWJsZSB0dXBsZSBpcyBlaXRoZXIgdGhl IGVuZCBvZiBpdHMKIAkgKiBIT1QtY2hhaW4gb3IgdGhlIGV4dGVuc2lvbiBvZiB0aGUgY2hhaW4g aXMgSE9ULXNhZmUgZm9yIHRoaXMgaW5kZXguCiAJICovCiAKLQkvKiBTZXQgQWN0aXZlU25hcHNo b3Qgc2luY2UgZnVuY3Rpb25zIGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCi0JUHVzaEFj dGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0KIAkvKiBQZXJmb3JtIGNv bmN1cnJlbnQgYnVpbGQgb2YgaW5kZXggKi8KIAlpbmRleF9jb25jdXJyZW50bHlfYnVpbGQodGFi bGVJZCwgaW5kZXhSZWxhdGlvbklkKTsKIAotCS8qIHdlIGNhbiBkbyBhd2F5IHdpdGggb3VyIHNu YXBzaG90ICovCi0JUG9wQWN0aXZlU25hcHNob3QoKTsKLQogCS8qCiAJICogQ29tbWl0IHRoaXMg dHJhbnNhY3Rpb24gdG8gbWFrZSB0aGUgaW5kaXNyZWFkeSB1cGRhdGUgdmlzaWJsZS4KIAkgKi8K QEAgLTQwNzksOSArNDA3Myw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCWlmIChuZXdp ZHgtPnNhZmUpCiAJCQlzZXRfaW5kZXhzYWZlX3Byb2NmbGFncygpOwogCi0JCS8qIFNldCBBY3Rp dmVTbmFwc2hvdCBzaW5jZSBmdW5jdGlvbnMgaW4gdGhlIGluZGV4ZXMgbWF5IG5lZWQgaXQgKi8K LQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0KIAkJLyoK IAkJICogVXBkYXRlIHByb2dyZXNzIGZvciB0aGUgaW5kZXggdG8gYnVpbGQsIHdpdGggdGhlIGNv cnJlY3QgcGFyZW50CiAJCSAqIHRhYmxlIGludm9sdmVkLgpAQCAtNDA5Niw3ICs0MDg3LDYgQEAg UmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQg cmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJLyogUGVyZm9ybSBjb25jdXJyZW50IGJ1aWxkIG9m IG5ldyBpbmRleCAqLwogCQlpbmRleF9jb25jdXJyZW50bHlfYnVpbGQobmV3aWR4LT50YWJsZUlk LCBuZXdpZHgtPmluZGV4SWQpOwogCi0JCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5j CmluZGV4IDM2ZWU2ZGQ0M2RlLi5lMGQ4MmQxNzkxOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3BsYW5uZXIuYwpAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5o IgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NlbGZ1bmNzLmgiCisj aW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogCiAvKiBHVUMgcGFyYW1ldGVycyAqLwogZG91Ymxl CQljdXJzb3JfdHVwbGVfZnJhY3Rpb24gPSBERUZBVUxUX0NVUlNPUl9UVVBMRV9GUkFDVElPTjsK QEAgLTY3ODksNiArNjc5MCw3IEBAIHBsYW5fY3JlYXRlX2luZGV4X3dvcmtlcnMoT2lkIHRhYmxl T2lkLCBPaWQgaW5kZXhPaWQpCiAJUmVsYXRpb24JaGVhcDsKIAlSZWxhdGlvbglpbmRleDsKIAlS ZWxPcHRJbmZvICpyZWw7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7 CiAJaW50CQkJcGFyYWxsZWxfd29ya2VyczsKIAlCbG9ja051bWJlciBoZWFwX2Jsb2NrczsKIAlk b3VibGUJCXJlbHR1cGxlczsKQEAgLTY4NDQsNiArNjg0NiwxMSBAQCBwbGFuX2NyZWF0ZV9pbmRl eF93b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkKQogCWhlYXAgPSB0YWJsZV9vcGVu KHRhYmxlT2lkLCBOb0xvY2spOwogCWluZGV4ID0gaW5kZXhfb3BlbihpbmRleE9pZCwgTm9Mb2Nr KTsKIAorCS8qIFNldCBBY3RpdmVTbmFwc2hvdCBzaW5jZSBmdW5jdGlvbnMgaW4gdGhlIGluZGV4 ZXMgbWF5IG5lZWQgaXQgKi8KKwlpZiAoIUFjdGl2ZVNuYXBzaG90U2V0KCkpIHsKKwkJUHVzaEFj dGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCW5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCA9IHRydWU7CisJfQogCS8qCiAJICogRGV0ZXJtaW5lIGlmIGl0J3Mgc2FmZSB0 byBwcm9jZWVkLgogCSAqCkBAIC02OTAxLDYgKzY5MDgsOCBAQCBwbGFuX2NyZWF0ZV9pbmRleF93 b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkKQogCQlwYXJhbGxlbF93b3JrZXJzLS07 CiAKIGRvbmU6CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25h cHNob3QoKTsKIAlpbmRleF9jbG9zZShpbmRleCwgTm9Mb2NrKTsKIAl0YWJsZV9jbG9zZShoZWFw LCBOb0xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMTY0MGQ5YzMyZjcuLmY1YmIwNGQ1YmQx IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC00Miw2ICs0Miw4IEBACiAjZGVmaW5lIEhFQVBfUEFHRV9Q UlVORV9NQVJLX1VOVVNFRF9OT1cJCSgxIDw8IDApCiAjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9G UkVFWkUJCQkJKDEgPDwgMSkKIAorI2RlZmluZSBTT19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFH RQkJNDA5NgorCiB0eXBlZGVmIHN0cnVjdCBCdWxrSW5zZXJ0U3RhdGVEYXRhICpCdWxrSW5zZXJ0 U3RhdGU7CiBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3Q7CiBzdHJ1Y3QgVmFjdXVtQ3V0b2ZmczsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVkZS9hY2Nl c3MvdGFibGVhbS5oCmluZGV4IDEzMWMwNTBjMTVmLi41MzkzYjMwYzU3ZSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFi bGVhbS5oCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9yZWFkX3N0cmVhbS5o IgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBzaG90LmgiCisj aW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAKIAogI2RlZmluZSBERUZBVUxUX1RB QkxFX0FDQ0VTU19NRVRIT0QJImhlYXAiCkBAIC02OSw2ICs3MCwxNyBAQCB0eXBlZGVmIGVudW0g U2Nhbk9wdGlvbnMKIAkgKiBuZWVkZWQuIElmIHRhYmxlIGRhdGEgbWF5IGJlIG5lZWRlZCwgc2V0 IFNPX05FRURfVFVQTEVTLgogCSAqLwogCVNPX05FRURfVFVQTEVTID0gMSA8PCAxMCwKKwkvKgor CSAqIFJlc2V0IHNjYW4gYW5kIGNhdGFsb2cgc25hcHNob3QgZXZlcnkgc28gb2Z0ZW4/IElmIHNv LCBlYWNoCisJICogU09fUkVTRVRfU05BUFNIT1RfRUFDSF9OX1BBR0UgcGFnZXMgYWN0aXZlIHNu YXBzaG90IGlzIHBvcHBlZCwKKwkgKiBjYXRhbG9nIHNuYXBzaG90IGludmFsaWRhdGVkLCBsYXRl c3Qgc25hcHNob3QgcHVzaGVkIGFzIGFjdGl2ZS4KKwkgKgorCSAqIEF0IHRoZSBlbmQgb2YgdGhl IHNjYW4gc25hcHNob3QgaXMgbm90IHBvcHBlZC4KKwkgKiBHb2FsIG9mIHN1Y2ggbW9kZSBpcyBr ZWVwIHhtaW4gcHJvcGFnYXRpbmcgaG9yaXpvbiBmb3J3YXJkLgorCSAqCisJICogc2VlIGhlYXBf cmVzZXRfc2Nhbl9zbmFwc2hvdCBmb3IgZGV0YWlscy4KKwkgKi8KKwlTT19SRVNFVF9TTkFQU0hP VCA9IDEgPDwgMTEsCiB9CQkJU2Nhbk9wdGlvbnM7CiAKIC8qCkBAIC05MzYsNyArOTQ4LDggQEAg ZXh0ZXJuIFRhYmxlU2NhbkRlc2MgdGFibGVfYmVnaW5zY2FuX2NhdGFsb2coUmVsYXRpb24gcmVs YXRpb24sIGludCBua2V5cywKIHN0YXRpYyBpbmxpbmUgVGFibGVTY2FuRGVzYwogdGFibGVfYmVn aW5zY2FuX3N0cmF0KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCSAgaW50 IG5rZXlzLCBzdHJ1Y3QgU2NhbktleURhdGEgKmtleSwKLQkJCQkJICBib29sIGFsbG93X3N0cmF0 LCBib29sIGFsbG93X3N5bmMpCisJCQkJCSAgYm9vbCBhbGxvd19zdHJhdCwgYm9vbCBhbGxvd19z eW5jLAorCQkJCQkgIGJvb2wgcmVzZXRfc25hcHNob3QpCiB7CiAJdWludDMyCQlmbGFncyA9IFNP X1RZUEVfU0VRU0NBTiB8IFNPX0FMTE9XX1BBR0VNT0RFOwogCkBAIC05NDQsNiArOTU3LDE1IEBA IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAog CQlmbGFncyB8PSBTT19BTExPV19TVFJBVDsKIAlpZiAoYWxsb3dfc3luYykKIAkJZmxhZ3MgfD0g U09fQUxMT1dfU1lOQzsKKwlpZiAocmVzZXRfc25hcHNob3QpCisJeworCQlJTkpFQ1RJT05fUE9J TlQoInRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMiKTsKKwkJLyogQWN0aXZl IHNuYXBzaG90IGlzIHJlcXVpcmVkIG9uIHN0YXJ0LiAqLworCQlBc3NlcnQoR2V0QWN0aXZlU25h cHNob3QoKSA9PSBzbmFwc2hvdCk7CisJCS8qIEFjdGl2ZSBzbmFwc2hvdCBzaG91bGQgbm90IGJl IHJlZ2lzdGVyZWQgdG8ga2VlcCB4bWluIHByb3BhZ2F0aW5nLiAqLworCQlBc3NlcnQoR2V0QWN0 aXZlU25hcHNob3QoKS0+cmVnZF9jb3VudCA9PSAwKTsKKwkJZmxhZ3MgfD0gKFNPX1JFU0VUX1NO QVBTSE9UKTsKKwl9CiAKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwg c25hcHNob3QsIG5rZXlzLCBrZXksIE5VTEwsIGZsYWdzKTsKIH0KQEAgLTE3NzYsNiArMTc5OCwx MCBAQCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRy YW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKICAqIHZlcnkgaGFyZCB0byBkZXRlY3Qgd2hldGhlciB0 aGV5J3JlIHJlYWxseSBpbmNvbXBhdGlibGUgd2l0aCB0aGUgY2hhaW4gdGlwLgogICogVGhpcyBv bmx5IHJlYWxseSBtYWtlcyBzZW5zZSBmb3IgaGVhcCBBTSwgaXQgbWlnaHQgbmVlZCB0byBiZSBn ZW5lcmFsaXplZAogICogZm9yIG90aGVyIEFNcyBsYXRlci4KKyAqCisgKiBJbiBjYXNlIG9mIG5v bi11bmlxdWUgaW5kZXggYW5kIG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGJ1aWxkCisgKiBTT19S RVNFVF9TTkFQU0hPVCBpcyBhcHBsaWVkIGZvciB0aGUgc2Nhbi4gVGhhdCBsZWFkcyBmb3IgY2hh bmdpbmcgc25hcHNob3RzCisgKiBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4gaG9yaXpvbiBwcm9w YWdhdGUuCiAgKi8KIHN0YXRpYyBpbmxpbmUgZG91YmxlCiB0YWJsZV9pbmRleF9idWlsZF9zY2Fu KFJlbGF0aW9uIHRhYmxlX3JlbCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9N YWtlZmlsZQppbmRleCBlNjgwOTkxZjhkNC4uMTlkMjY0MDhjMmEgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKQEAgLTExLDcgKzExLDcgQEAgRVhURU5TSU9O ID0gaW5qZWN0aW9uX3BvaW50cwogREFUQSA9IGluamVjdGlvbl9wb2ludHMtLTEuMC5zcWwKIFBH RklMRURFU0MgPSAiaW5qZWN0aW9uX3BvaW50cyAtIGZhY2lsaXR5IGZvciBpbmplY3Rpb24gcG9p bnRzIgogCi1SRUdSRVNTID0gaW5qZWN0aW9uX3BvaW50cyBoYXNoYWdnIHJlaW5kZXhfY29uYwor UkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMgaGFzaGFnZyByZWluZGV4X2NvbmMgY2ljX3Jlc2V0 X3NuYXBzaG90cwogUkVHUkVTU19PUFRTID0gLS1kbHBhdGg9JCh0b3BfYnVpbGRkaXIpL3NyYy90 ZXN0L3JlZ3Jlc3MKIAogSVNPTEFUSU9OID0gYmFzaWMgaW5wbGFjZSBzeXNjYWNoZS11cGRhdGUt cHJ1bmVkCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhw ZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk0OGQxMjMyYWEwCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFw c2hvdHMub3V0CkBAIC0wLDAgKzEsMTA1IEBACitDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9w b2ludHM7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKKyBpbmplY3Rpb25f cG9pbnRzX3NldF9sb2NhbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25h cHNob3RfZWZmZWN0aXZlJywgJ25vdGljZScpOworIGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgaW5qZWN0aW9u X3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAn bm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgCisoMSByb3cpCisKK0NSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CitDUkVB VEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CitJ TlNFUlQgSU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDIwMCkgcyhpKTsKK0NSRUFURSBGVU5DVElPTiBjaWNfcmVzZXRfc25hcC5w cmVkaWNhdGVfc3RhYmxlKGludGVnZXIpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJ CSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhp ZF9jdXJyZW50KCknOworICAgIFJFVFVSTiBNT0QoJDEsIDIpID0gMDsKK0VORDsgJCQ7CitDUkVB VEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpIFJF VFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAor QkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAgIFJFVFVSTiBm YWxzZTsKK0VORDsgJCQ7CistLS0tLS0tLS0tLS0tLS0tCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRf c25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNp Y19yZXNldF9zbmFwLnRibChpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3Nu YXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRh YmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0 aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoTU9EKGksIDIpLCBq KSBXSEVSRSBNT0QoaSwgMikgPSAwOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElD RTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5f c25hcHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg dGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZl Y3RpdmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFU RSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVS RSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOworTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9z bmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBo ZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJF TlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nh bl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9z bmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFw LnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFt KCk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVf YmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK0RST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05D VVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOworTk9USUNF OiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9z dHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVj dGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3Nu YXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhl YXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKKy0tIFRoZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUKK0FMVEVS IFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9Mik7CitDUkVB VEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkp OworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jl c2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKK1JFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4 IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNh dGVfc3RhYmxlKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3Rf ZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVz ZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7CitSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoaSBERVNDIE5VTExTIExBU1QpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3Nu YXAudGJsIFVTSU5HIEJSSU4oaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitEUk9QIFNDSEVNQSBjaWNfcmVzZXRfc25hcCBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNj YWRlcyB0byAzIG90aGVyIG9iamVjdHMKK0RFVEFJTDogIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUg Y2ljX3Jlc2V0X3NuYXAudGJsCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGNpY19yZXNldF9z bmFwLnByZWRpY2F0ZV9zdGFibGUoaW50ZWdlcikKK2Ryb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24g Y2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpCitEUk9QIEVYVEVOU0lP TiBpbmplY3Rpb25fcG9pbnRzOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRz L21lc29uLmJ1aWxkCmluZGV4IGQ2MTE0OTcxMmZkLi44NDc2YmZlNzJhNyAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL21lc29uLmJ1aWxkCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZApAQCAtMzcsNiArMzcsNyBA QCB0ZXN0cyArPSB7CiAgICAgICAnaW5qZWN0aW9uX3BvaW50cycsCiAgICAgICAnaGFzaGFnZycs CiAgICAgICAncmVpbmRleF9jb25jJywKKyAgICAgICdjaWNfcmVzZXRfc25hcHNob3RzJywKICAg ICBdLAogICAgICdyZWdyZXNzX2FyZ3MnOiBbJy0tZGxwYXRoJywgbWVzb24uYnVpbGRfcm9vdCgp IC8gJ3NyYy90ZXN0L3JlZ3Jlc3MnXSwKICAgICAjIFRoZSBpbmplY3Rpb24gcG9pbnRzIGFyZSBj bHVzdGVyLXdpZGUsIHNvIGRpc2FibGUgaW5zdGFsbGNoZWNrCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3Rz LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTA3MjUzNWIzNTUK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3Fs L2NpY19yZXNldF9zbmFwc2hvdHMuc3FsCkBAIC0wLDAgKzEsODYgQEAKK0NSRUFURSBFWFRFTlNJ T04gaW5qZWN0aW9uX3BvaW50czsKKworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2Fs KCk7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRh Y2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CisK KworQ1JFQVRFIFNDSEVNQSBjaWNfcmVzZXRfc25hcDsKK0NSRUFURSBUQUJMRSBjaWNfcmVzZXRf c25hcC50YmwoaSBpbnQgcHJpbWFyeSBrZXksIGogaW50KTsKK0lOU0VSVCBJTlRPIGNpY19yZXNl dF9zbmFwLnRibCBTRUxFQ1QgaSwgaSAqIEkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBz KGkpOworCitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShp bnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdz cWwgQVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAg ICBSRVRVUk4gTU9EKCQxLCAyKSA9IDA7CitFTkQ7ICQkOworCitDUkVBVEUgRlVOQ1RJT04gY2lj X3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpIFJFVFVSTlMgYm9vbCBJTU1V VEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBFWEVD VVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAgIFJFVFVSTiBmYWxzZTsKK0VORDsgJCQ7 CisKKy0tLS0tLS0tLS0tLS0tLS0KK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQg KHBhcmFsbGVsX3dvcmtlcnM9MCk7CisKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwg aikgV0hFUkUgTU9EKGksIDIpID0gMDsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJs KGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitSRUlOREVY IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkg aWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVk aWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRi bCBVU0lORyBCUklOKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCist LSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50 YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOworCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNf cmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisK K0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0Qo aSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOwor UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3Nu YXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoaSBERVNDIE5VTExTIExBU1QpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwgVVNJTkcgQlJJTihpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK KworRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKKworRFJPUCBFWFRFTlNJT04g aW5qZWN0aW9uX3BvaW50czsKLS0gCjIuNDMuMAoK --000000000000caf8fd062fc891e1 Content-Type: application/octet-stream; name="v16-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Disposition: attachment; filename="v16-0001-This-is-https-commitfest.postgresql.org-50-5160-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7zd30om11 RnJvbSBjNTM5NTM2M2U3MDYxZGUyNzVlYjJhZDM1OWJjNDg4ZTQyNDNmNzFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAzMSBEZWMgMjAyNCAxNDowOTo1MiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE2IDAx LzEyXSBUaGlzIGlzIGh0dHBzOi8vY29tbWl0ZmVzdC5wb3N0Z3Jlc3FsLm9yZy81MC81MTYwLwog bWVyZ2VkIGluIHNpbmdsZSBjb21taXQuIGl0IGlzIHJlcXVpcmVkIGZvciBzdGFiaWxpdHkgb2Yg c3RyZXNzIHRlc3RzLgoKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAg ICB8ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgICAgfCAgIDMg Kwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgfCAxMTkgKysrKysrKysr KysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgfCAg IDIgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAgfCAxMzUgKysrKysr KysrKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdyLmMgICAg ICAgfCAgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCAyMTYgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCAzMmZmM2NhOWEyOC4uNmE3MmU1 NjZkNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNzk2LDYgKzE3OTYsNyBAQCBE ZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBiZWZvcmUgdGhlIHJlZmVyZW5jZSBzbmFwIHdh cyB0YWtlbiwgd2UgaGF2ZSB0byB3YWl0IG91dCBhbnkKIAkgKiB0cmFuc2FjdGlvbnMgdGhhdCBt aWdodCBoYXZlIG9sZGVyIHNuYXBzaG90cy4KIAkgKi8KKwlJTkpFQ1RJT05fUE9JTlQoImRlZmlu ZV9pbmRleF9iZWZvcmVfc2V0X3ZhbGlkIik7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJh bShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhf UEhBU0VfV0FJVF8zKTsKIAlXYWl0Rm9yT2xkZXJTbmFwc2hvdHMobGltaXRYbWluLCB0cnVlKTsK QEAgLTQyMDEsNyArNDIwMiw3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJICogdGhlIHNh bWUgdGltZSB0byBtYWtlIHN1cmUgd2Ugb25seSBnZXQgY29uc3RyYWludCB2aW9sYXRpb25zIGZy b20gdGhlCiAJICogaW5kZXhlcyB3aXRoIHRoZSBjb3JyZWN0IG5hbWVzLgogCSAqLwotCisJSU5K RUNUSU9OX1BPSU5UKCJyZWluZGV4X3JlbGF0aW9uX2NvbmN1cnJlbnRseV9iZWZvcmVfc3dhcCIp OwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKIAkvKgpAQCAtNDI4MCw2ICs0MjgxLDcg QEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBP aWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkgKiBpbmRleF9kcm9wKCkgZm9yIG1vcmUgZGV0 YWlscy4KIAkgKi8KIAorCUlOSkVDVElPTl9QT0lOVCgicmVpbmRleF9yZWxhdGlvbl9jb25jdXJy ZW50bHlfYmVmb3JlX3NldF9kZWFkIik7CiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhB U0VfV0FJVF80KTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NFeGNs dXNpdmVMb2NrLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKaW5kZXggNzQy ZjNmOGMwOGQuLmYyYTc0Yjc2NDY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwpA QCAtMTE3LDYgKzExNyw3IEBACiAjaW5jbHVkZSAidXRpbHMvbXVsdGlyYW5nZXR5cGVzLmgiCiAj aW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIK KyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAogLyogd2FpdE1vZGUgYXJndW1l bnQgdG8gY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KCkgKi8KIHR5cGVkZWYg ZW51bQpAQCAtOTQzLDYgKzk0NCw4IEBAIHJldHJ5OgogCWVjb250ZXh0LT5lY3h0X3NjYW50dXBs ZSA9IHNhdmVfc2NhbnR1cGxlOwogCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChleGlz dGluZ19zbG90KTsKKwlpZiAoIWNvbmZsaWN0KQorCQlJTkpFQ1RJT05fUE9JTlQoImNoZWNrX2V4 Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludF9ub19jb25mbGljdCIpOwogCiAJcmV0dXJuICFj b25mbGljdDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCA1Y2Q1ZTJl ZWI4MC4uZGYyNDIwY2U4YWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAg LTQ4Nyw2ICs0ODcsNDggQEAgRXhlY0ZpbmRQYXJ0aXRpb24oTW9kaWZ5VGFibGVTdGF0ZSAqbXRz 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 ZXN1bHRSZWxJbmZvLiAgQWxzbyBzZXR1cCBvdGhlcgpAQCAtNjk3LDYgKzczOSw4IEBAIEV4ZWNJ bml0UGFydGl0aW9uSW5mbyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0 ZSwKIAkJaWYgKHJvb3RSZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXMg IT0gTklMKQogCQl7CiAJCQlMaXN0CSAgICpjaGlsZElkeHM7CisJCQlMaXN0IAkgICAqbm9uQW5j ZXN0b3JJZHhzID0gTklMOworCQkJaW50CQkgICBpLCBqLCBhZGRpdGlvbmFsX2FyYml0ZXJzID0g MDsKIAogCQkJY2hpbGRJZHhzID0gUmVsYXRpb25HZXRJbmRleExpc3QobGVhZl9wYXJ0X3JyaS0+ cmlfUmVsYXRpb25EZXNjKTsKIApAQCAtNzA3LDIzICs3NTEsNzQgQEAgRXhlY0luaXRQYXJ0aXRp 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 ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggYjBmZTUw MDc1YWQuLmQ1YWQ3M2Y2ZjY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUu YwpAQCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAi dXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxz L2luamVjdGlvbl9wb2ludC5oIgogCiAKIHR5cGVkZWYgc3RydWN0IE1UVGFyZ2V0UmVsTG9va3Vw CkBAIC0xMTU4LDYgKzExNTksNyBAQCBFeGVjSW5zZXJ0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29u dGV4dCwKIAkJCQkJcmV0dXJuIE5VTEw7CiAJCQkJfQogCQkJfQorCQkJSU5KRUNUSU9OX1BPSU5U KCJleGVjX2luc2VydF9iZWZvcmVfaW5zZXJ0X3NwZWN1bGF0aXZlIik7CiAKIAkJCS8qCiAJCQkg KiBCZWZvcmUgd2Ugc3RhcnQgaW5zZXJ0aW9uIHByb3BlciwgYWNxdWlyZSBvdXIgInNwZWN1bGF0 aXZlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKaW5kZXggNzFhYmIwMWY2NTUuLmFm NzU4NmE0MjhmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0 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== --000000000000caf8fd062fc891e1--