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.96) (envelope-from ) id 1vknWE-002GYE-1g for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Jan 2026 18:10:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vknWC-00FSYv-1H for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Jan 2026 18:10:24 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vknWB-00FSYm-0e for pgsql-hackers@lists.postgresql.org; Tue, 27 Jan 2026 18:10:24 +0000 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vknW2-002bnu-2u for pgsql-hackers@lists.postgresql.org; Tue, 27 Jan 2026 18:10:22 +0000 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-658034ce0e3so9977853a12.3 for ; Tue, 27 Jan 2026 10:10:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1769537414; x=1770142214; darn=lists.postgresql.org; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=BV+7VIwheN12C3CUediO270hYdIZA9PxP7RWpbAtJQI=; b=V7iqbpgbCn34xLgV67aT29i2gjje9qTvsOub+NaOhG4WdO/FjNTH/rUNjSwCC4EcEk rNqpdk4ysj+9jWJeG/s0kivn0K9isDopjEv6biajIABiL2JGpGVC1PY+xqzmP/+jTVvg /0jjZg03QXk97QKYBdoGRrZSVWEM2qVu2Iwc+l5gun/BYNmyEVMtNshGWDY8wVv1b2dM eXCG0ugR1Vx1xa4CMz7sAyZ+6F4KpIitb/x7sqhLOf5Hm7WC8XqxzGirHw1MmqO5XP6v GitHtiM0+vObVmRMRa1YNmqAZqrrfFVlpUs0hiOlJQA9NVLRXAUOVzmPJwLKkv3F4O30 rfBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769537414; x=1770142214; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=BV+7VIwheN12C3CUediO270hYdIZA9PxP7RWpbAtJQI=; b=HVbVCJ70Q+OZS8RFAn6QMZnFBgNYYr07l34SYCSmCUfTROwneyDHeZia3nc2VloWMm mmXjcBP70c25X2S5lZP6QnQIM750jtTmPux4NyjlR1ZEANW+35uvIt0Txjz+YCB/IYV2 hJf8AL/kXXn9ph3GSXKOd/bKyKQwt3NxLs38ia57LmXpT0HpV7f07ESSMG2aF/YpDHYY Xeg75QgbOijd9TZjEbTdosojlbWGQksV0sagAbh1vImqnRvBeh9wTHWw+vkBYViIGR5s mIC/pNgDI4e8IJv+dCc9adV2OBQxd5SxfWg4pGe/+tsamRQtZXyrHS3xYyE/7PYztD6b Ce9Q== X-Forwarded-Encrypted: i=1; AJvYcCUiE8TDBFg82R7pCNVusR/QOAvqqB5INjD4rmOV+Wxv7b5/EhgwjGeXpe94CN08bYhOuUK0MwM0Qjy4cFvv@lists.postgresql.org X-Gm-Message-State: AOJu0YxrLaIV9P0IF27bIkuOSFzuLUun0YwhMyOksq2Rw1eRpQV7ATZ8 kT2GFENx8xtOdC17Zwz1FRomwjd2+z/GDCu1OL6NGa/5QPKHlZkyAvJ9ieOhAdQQ9Ng= X-Gm-Gg: AZuq6aLrw8DWDl60Kz4fFptPKs6C8a31FrRK1gD8rJvVxI3fi16PcHfXrutdu1Xr0vm hzgtFQrgsVegBDql2wN2MPbPtOqtAoYIT2hpWFmxLIbPSKNFfSB0/nx5JIpyMt5Ae15dHHE+ext vaiSCHiGR/1AAuPgFwdDeRAE2uamEFXCGBrppa35q5hoUi+cmHBYe0WpwuHntK9wnpeZHQl84el uPZoH5J87OxmL0eRDBx5c60/jyLM/IiNaLT94Ky4ZvN1N/Q5ttreY1uVs/5Q6cNLzRwC9QGjUX/ BP28Y/P6px1ogcHE1UoSyS4NxmKNci5H863GgADLhD53SI1i0+tpZuJ2CRtdN89hR0VurP7ByY3 x87OEkwK/FmPhxVx6bz/lp8bYClpW2Tl+892kOzQ/wb8f2FccGXdk6KvN7FzYGqraLwZwgYBgWd 0GksW6yA8fg5erFBUgb1jNwprtmRUEK2lU8vIqnc0TGLfDyf8Z X-Received: by 2002:a05:6402:f24:b0:658:1035:6550 with SMTP id 4fb4d7f45d1cf-658a6099250mr1310035a12.22.1769537413836; Tue, 27 Jan 2026 10:10:13 -0800 (PST) Received: from localhost (037153217001.static.ipv4.heldenvannu.net. [37.153.217.1]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-658b4256322sm220597a12.7.2026.01.27.10.10.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 27 Jan 2026 10:10:12 -0800 (PST) Content-Type: multipart/mixed; boundary=47d834fb39f917299e3944345bf4c7b286ca1a3cdaf0f9bf83d0eef1564f Mime-Version: 1.0 Date: Tue, 27 Jan 2026 19:10:11 +0100 Message-Id: Cc: "Bertrand Drouvot" , "Thomas Munro" , Subject: Re: Safer hash table initialization macro To: "Chao Li" From: "Jelte Fennema-Nio" X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: <2903820E-A053-4FF8-BEB7-DCECFBB6A21A@gmail.com> In-Reply-To: <2903820E-A053-4FF8-BEB7-DCECFBB6A21A@gmail.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --47d834fb39f917299e3944345bf4c7b286ca1a3cdaf0f9bf83d0eef1564f Content-Type: multipart/alternative; boundary=704807fd4e8f2a167a1d169aa7fcb483ca21d37de98be7bc3ffd38637469 --704807fd4e8f2a167a1d169aa7fcb483ca21d37de98be7bc3ffd38637469 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Tue Jan 27, 2026 at 8:26 AM CET, Chao Li wrote: > This function has a lot of duplicate checks on opts!=3DNULL, I think it c= an be simplified as: Good suggestion. Done. > 2 - 0002 > Why this function returns a structure by value? Which looks quite uncommo= n. Usually, when a function is named with =E2=80=9Cnew=E2=80=9D, it returns= a pointer to a new object. I changed the name to foreach_hash_start and made it a static inline function in the header instead. I updated the comment to explain why it's needed (i.e. to initialize the local varaiable). > 3 - 0002 > foreach_hash feels fragile. It requires to call foreach_hash_term before = break, which is easy to forget. And the documentation doesn=E2=80=99t menti= on how to continue, how to return from a loop, and how to goto from inside = a loop. I agree that it'd be better if foreach_hash_term was not needed. But that would be a lot bigger change (see the "SEQ SCAN TRACKING" comment). I've updated the comment on foreach_hash_term to be more specific about when it's needed. --704807fd4e8f2a167a1d169aa7fcb483ca21d37de98be7bc3ffd38637469-- --47d834fb39f917299e3944345bf4c7b286ca1a3cdaf0f9bf83d0eef1564f Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v10-0001-Add-hash_make-macros.patch Content-Type: text/x-patch; charset=utf-8; name=v10-0001-Add-hash_make-macros.patch RnJvbSA1OTFiODZhMzc5OGJiZDExYzNmYjgzYzVkOTQzNDFlMDM3MDQwNjg2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzU6MDggKzAxMDAKU3ViamVjdDogW1BBVENIIHYx MCAxLzVdIEFkZCBoYXNoX21ha2UgbWFjcm9zCgpUaGlzIGFkZHMgYSBidW5jaCBvZiBoYXNoX21h a2UqIGFuZCBzaG1lbV9oYXNoX21ha2UqIG1hY3JvcyB0byBtYWtlIGl0CmVhc2llciBhbmQgbGVz cyBlcnJvciBwcm9uZSB0byBjcmVhdGUgSFRBQnMuIFRoZXNlIG1hY3JvcyBhcmUKaW1wbGVtZW50 ZWQgYXMgd3JhcHBlcnMgYXJvdW5kIHRoZSBhbHJlYWR5IGV4aXN0aW5nIGhhc2hfY3JlYXRlCmZ1 bmN0aW9uLiBVc2luZyB0aGUgbmV3IG1hY3JvcyBpcyBwcmVmZXJyZWQsIGR1ZSB0byB0aGUgYWRk aXRpb25hbApjb21waWxlIHRpbWUgY2hlY2tzIHRoYXQgdGhleSBicmluZy4KCkNvLUF1dGhvcmVk LUJ5OiBCZXJ0cmFuZCBEcm91dm90IDxiZXJ0cmFuZGRyb3V2b3QucGdAZ21haWwuY29tPgotLS0K IGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQv dXRpbHMvaGFzaC9keW5haGFzaC5jIHwgMTE1ICsrKysrKysrKysrKysrKysrKysrKwogc3JjL2lu Y2x1ZGUvYy5oICAgICAgICAgICAgICAgICAgIHwgIDMyICsrKysrKwogc3JjL2luY2x1ZGUvc3Rv cmFnZS9zaG1lbS5oICAgICAgIHwgIDMyICsrKysrKwogc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJj aC5oICAgICAgIHwgMTY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgIHwgICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMzQ1IGlu c2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5 c3RlbS12aWV3cy5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCmluZGV4IDhi NGFiZWY4YzY4Li41MGE2MjRkM2YzMSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12 aWV3cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbApAQCAtNDI1NCw3 ICs0MjU0LDEwIEBAIFNFTEVDVCAqIEZST00gcGdfbG9ja3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBh cmVkX3hhY3RzIHBweAogICA8cGFyYT4KICAgIEFub255bW91cyBhbGxvY2F0aW9ucyBhcmUgYWxs b2NhdGlvbnMgdGhhdCBoYXZlIGJlZW4gbWFkZQogICAgd2l0aCA8bGl0ZXJhbD5TaG1lbUFsbG9j KCk8L2xpdGVyYWw+IGRpcmVjdGx5LCByYXRoZXIgdGhhbiB2aWEKLSAgIDxsaXRlcmFsPlNobWVt SW5pdFN0cnVjdCgpPC9saXRlcmFsPiBvcgorICAgPGxpdGVyYWw+U2htZW1Jbml0U3RydWN0KCk8 L2xpdGVyYWw+LAorICAgPGxpdGVyYWw+c2htZW1faGFzaF9tYWtlKCk8L2xpdGVyYWw+LAorICAg PGxpdGVyYWw+c2htZW1faGFzaF9tYWtlX2V4dCgpPC9saXRlcmFsPiwKKyAgIG9yCiAgICA8bGl0 ZXJhbD5TaG1lbUluaXRIYXNoKCk8L2xpdGVyYWw+LgogICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hh c2gvZHluYWhhc2guYwppbmRleCAxMWY1Nzc4ZWJhMS4uZjliN2YxNjY5ZmEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYworKysgYi9zcmMvYmFja2VuZC91dGls cy9oYXNoL2R5bmFoYXNoLmMKQEAgLTYzMSw2ICs2MzEsMTIxIEBAIGhhc2hfY3JlYXRlKGNvbnN0 IGNoYXIgKnRhYm5hbWUsIGludDY0IG5lbGVtLCBjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxh Z3MpCiAJcmV0dXJuIGhhc2hwOwogfQogCisvKgorICogaGFzaF9vcHRzX2luaXQgLS0gaW5pdGlh bGl6ZSBIQVNIQ1RMIGFuZCBmbGFncyBmcm9tIEhBU0hPUFRTCisgKgorICogVGhpcyBwcm9jZXNz ZXMgSEFTSE9QVFMgZmllbGRzIGludG8gSEFTSENUTCBhbmQgZmxhZ3MuIEl0J3MgdXNlZCBieSBj b2RlCisgKiB0aGF0IG5lZWRzIHRvIGNhbGwgdGhlIGxvdy1sZXZlbCBoYXNoX2NyZWF0ZSBmdW5j dGlvbi4KKyAqLwordm9pZAoraGFzaF9vcHRzX2luaXQoSEFTSENUTCAqY3RsLCBpbnQgKmZsYWdz LAorCQkJICAgU2l6ZSBrZXlzaXplLCBTaXplIGVudHJ5c2l6ZSwgYm9vbCBzdHJpbmdfa2V5LAor CQkJICAgY29uc3QgSEFTSE9QVFMgKm9wdHMpCit7CisJTWVtU2V0KGN0bCwgMCwgc2l6ZW9mKCpj dGwpKTsKKwljdGwtPmtleXNpemUgPSBrZXlzaXplOworCWN0bC0+ZW50cnlzaXplID0gZW50cnlz aXplOworCisJKmZsYWdzID0gSEFTSF9FTEVNOworCisJaWYgKG9wdHMgPT0gTlVMTCkKKwl7CisJ CSpmbGFncyB8PSBzdHJpbmdfa2V5ID8gSEFTSF9TVFJJTkdTIDogSEFTSF9CTE9CUzsKKwkJcmV0 dXJuOworCX0KKworCWlmIChvcHRzLT5oYXNoICE9IE5VTEwpCisJeworCQkvKiBmb3JjZV9ibG9i cyBvbmx5IGFmZmVjdHMgZGVmYXVsdCBoYXNoIHNlbGVjdGlvbiwgbm90IGN1c3RvbSBoYXNoICov CisJCUFzc2VydCghb3B0cy0+Zm9yY2VfYmxvYnMpOworCQljdGwtPmhhc2ggPSBvcHRzLT5oYXNo OworCQkqZmxhZ3MgfD0gSEFTSF9GVU5DVElPTjsKKwl9CisJZWxzZSBpZiAob3B0cy0+Zm9yY2Vf YmxvYnMpCisJeworCQkqZmxhZ3MgfD0gSEFTSF9CTE9CUzsKKwl9CisJZWxzZQorCXsKKwkJKmZs YWdzIHw9IHN0cmluZ19rZXkgPyBIQVNIX1NUUklOR1MgOiBIQVNIX0JMT0JTOworCX0KKworCWlm IChvcHRzLT5tYXRjaCAhPSBOVUxMKQorCXsKKwkJY3RsLT5tYXRjaCA9IG9wdHMtPm1hdGNoOwor CQkqZmxhZ3MgfD0gSEFTSF9DT01QQVJFOworCX0KKworCWlmIChvcHRzLT5rZXljb3B5ICE9IE5V TEwpCisJeworCQljdGwtPmtleWNvcHkgPSBvcHRzLT5rZXljb3B5OworCQkqZmxhZ3MgfD0gSEFT SF9LRVlDT1BZOworCX0KKworCWlmIChvcHRzLT5hbGxvYyAhPSBOVUxMKQorCXsKKwkJY3RsLT5h bGxvYyA9IG9wdHMtPmFsbG9jOworCQkqZmxhZ3MgfD0gSEFTSF9BTExPQzsKKwl9CisKKwlpZiAo b3B0cy0+bnVtX3BhcnRpdGlvbnMgPiAwKQorCXsKKwkJY3RsLT5udW1fcGFydGl0aW9ucyA9IG9w dHMtPm51bV9wYXJ0aXRpb25zOworCQkqZmxhZ3MgfD0gSEFTSF9QQVJUSVRJT047CisJfQorCisJ aWYgKG9wdHMtPmZpeGVkX3NpemUpCisJCSpmbGFncyB8PSBIQVNIX0ZJWEVEX1NJWkU7Cit9CisK Ky8qCisgKiBoYXNoX21ha2VfaW1wbCAtLSBzaW1wbGlmaWVkIGhhc2ggdGFibGUgY3JlYXRpb24K KyAqCisgKiBUaGlzIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbiBmb3IgdGhlIGhhc2hf bWFrZSgpIGFuZCBoYXNoX21ha2VfZXh0KCkKKyAqIG1hY3Jvcy4gSXQgY3JlYXRlcyBhIGhhc2gg dGFibGUgd2l0aCBzZW5zaWJsZSBkZWZhdWx0cy4KKyAqCisgKiBJZiBzdHJpbmdfa2V5IGlzIHRy dWUsIHRoZSBrZXkgaXMgdHJlYXRlZCBhcyBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcKKyAqICh1 c2VzIEhBU0hfU1RSSU5HUykuIE90aGVyd2lzZSwgdGhlIGtleSBpcyB0cmVhdGVkIGFzIGEgYmlu YXJ5IGJsb2IKKyAqICh1c2VzIEhBU0hfQkxPQlMpLgorICoKKyAqIFBhc3MgTlVMTCBmb3Igb3B0 cyB0byB1c2UgYWxsIGRlZmF1bHRzLgorICovCitIVEFCICoKK2hhc2hfbWFrZV9pbXBsKGNvbnN0 IGNoYXIgKnRhYm5hbWUsIGludDY0IG5lbGVtLAorCQkJICAgU2l6ZSBrZXlzaXplLCBTaXplIGVu dHJ5c2l6ZSwKKwkJCSAgIGJvb2wgc3RyaW5nX2tleSwKKwkJCSAgIGNvbnN0IEhBU0hPUFRTICpv cHRzLAorCQkJICAgTWVtb3J5Q29udGV4dCBtY3h0KQoreworCUhBU0hDVEwJCWN0bDsKKwlpbnQJ CQlmbGFnczsKKworCWhhc2hfb3B0c19pbml0KCZjdGwsICZmbGFncywga2V5c2l6ZSwgZW50cnlz aXplLCBzdHJpbmdfa2V5LCBvcHRzKTsKKworCWN0bC5oY3h0ID0gbWN4dDsKKwlmbGFncyB8PSBI QVNIX0NPTlRFWFQ7CisKKwlyZXR1cm4gaGFzaF9jcmVhdGUodGFibmFtZSwgbmVsZW0sICZjdGws IGZsYWdzKTsKK30KKworLyoKKyAqIGhhc2hfbWFrZV9mbl9pbXBsIC0tIGNyZWF0ZSBhIGhhc2gg dGFibGUgd2l0aCBjdXN0b20gZnVuY3Rpb25zCisgKi8KK0hUQUIgKgoraGFzaF9tYWtlX2ZuX2lt cGwoY29uc3QgY2hhciAqdGFibmFtZSwgaW50NjQgbmVsZW0sCisJCQkJICBTaXplIGtleXNpemUs IFNpemUgZW50cnlzaXplLCBib29sIHN0cmluZ19rZXksCisJCQkJICBIYXNoVmFsdWVGdW5jIGhh c2hmbiwgSGFzaENvbXBhcmVGdW5jIG1hdGNoZm4sCisJCQkJICBNZW1vcnlDb250ZXh0IG1jeHQp Cit7CisJSEFTSE9QVFMJb3B0cyA9IHsKKwkJLmhhc2ggPSBoYXNoZm4sCisJCS5tYXRjaCA9IG1h dGNoZm4KKwl9OworCisJcmV0dXJuIGhhc2hfbWFrZV9pbXBsKHRhYm5hbWUsIG5lbGVtLCBrZXlz aXplLCBlbnRyeXNpemUsCisJCQkJCQkgIHN0cmluZ19rZXksICZvcHRzLCBtY3h0KTsKK30KKwog LyoKICAqIFNldCBkZWZhdWx0IEhBU0hIRFIgcGFyYW1ldGVycy4KICAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYy5oIGIvc3JjL2luY2x1ZGUvYy5oCmluZGV4IDQ4ZTQwODdjMDljLi4yYmQz NmJmMmQ5OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYy5oCisrKyBiL3NyYy9pbmNsdWRlL2Mu aApAQCAtODIsNiArODIsMTIgQEAKICNlbmRpZgogI2lmZGVmIEVOQUJMRV9OTFMKICNpbmNsdWRl IDxsaWJpbnRsLmg+CisjZW5kaWYKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDKysiCit7 CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+Cit9CiAjZW5kaWYKIAogIC8qIFB1bGwgaW4gZnVuZGFt ZW50YWwgc3ltYm9scyB0aGF0IHdlIGFsc28gZXhwb3NlIHRvIGFwcGxpY2F0aW9ucyAqLwpAQCAt MzY3LDYgKzM3MywzMiBAQAogI2RlZmluZSBIQVZFX1BHX0lOVEVHRVJfQ09OU1RBTlRfUAogI2Vu ZGlmCiAKKy8qCisgKiBwZ19leHByX2hhc190eXBlX3AoZXhwciwgdHlwZSkgLSBDaGVjayBpZiBh biBleHByZXNzaW9uIGhhcyBhIHNwZWNpZmljIHR5cGUuCisgKgorICogU2ltaWxhciB0byBwZ19p c19zYW1lLCBidXQgdGFrZXMgYW4gZXhwcmVzc2lvbiBpbnN0ZWFkIG9mIGEgdHlwZSBhcyB0aGUK KyAqIGZpcnN0IGFyZ3VtZW50LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSBoYXZlIGFuIGV4cHJl c3Npb24gYW5kIHdhbnQgdG8KKyAqIGNoZWNrIGl0cyB0eXBlIHdpdGhvdXQgbmVlZGluZyB0eXBl b2YvZGVjbHR5cGUuCisgKi8KKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorI2RlZmluZSBwZ19l eHByX2hhc190eXBlX3AoZXhwciwgdHlwZSkgKHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShleHByKSwg dHlwZT46OnZhbHVlKQorI2Vsc2UKKyNkZWZpbmUgcGdfZXhwcl9oYXNfdHlwZV9wKGV4cHIsIHR5 cGUpIFwKKwlfR2VuZXJpYygoZXhwciksIHR5cGU6IDEsIGRlZmF1bHQ6IDApCisjZW5kaWYKKwor LyoKKyAqIHBnX251bGxwdHJfb2YodHlwZSkgLSBDcmVhdGUgYSBudWxsIHBvaW50ZXIgb2YgdGhl IGdpdmVuIHR5cGUuCisgKgorICogSW4gQywgKHR5cGUgKikgTlVMTCB3b3JrcyBmb3IgYWxsIHR5 cGVzLiBJbiBDKyssIHRoaXMgc3ludGF4IGZhaWxzIGZvciB0eXBlcworICogY29udGFpbmluZyBi cmFja2V0cyAobGlrZSBjaGFyWzY0XSksIHNvIHdlIHVzZSBzdGQ6OmFkZF9wb2ludGVyX3QgaW5z dGVhZC4KKyAqLworI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCisjZGVmaW5lIHBnX251bGxwdHJf b2YodHlwZSkgKHN0YXRpY19jYXN0PHN0ZDo6YWRkX3BvaW50ZXJfdDx0eXBlPj4obnVsbHB0cikp CisjZWxzZQorI2RlZmluZSBwZ19udWxscHRyX29mKHR5cGUpICgodHlwZSAqKSBOVUxMKQorI2Vu ZGlmCisKIC8qCiAgKiBwZ19hc3N1bWUoZXhwcikgc3RhdGVzIHRoYXQgd2UgYXNzdW1lIGBleHBy YCB0byBldmFsdWF0ZSB0byB0cnVlLiBJbiBhc3NlcnQKICAqIGVuYWJsZWQgYnVpbGRzIHBnX2Fz c3VtZSgpIGlzIHR1cm5lZCBpbnRvIGFuIGFzc2VydGlvbiwgaW4gb3B0aW1pemVkIGJ1aWxkcwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9zaG1lbS5oCmluZGV4IGU3MWE1MWRmZTg0Li4yYTJkMjRjY2Y2MCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ht ZW0uaApAQCAtNDMsNiArNDMsMzggQEAgZXh0ZXJuIFNpemUgbXVsX3NpemUoU2l6ZSBzMSwgU2l6 ZSBzMik7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBTaXplIHBnX2dldF9zaG1lbV9wYWdlc2l6ZSh2 b2lkKTsKIAorLyoKKyAqIFNpbXBsaWZpZWQgc2hhcmVkIG1lbW9yeSBoYXNoIHRhYmxlIGNyZWF0 aW9uIEFQSQorICoKKyAqIFRoZXNlIG1hY3JvcyBwcm92aWRlIGEgc2ltcGxlciB3YXkgdG8gY3Jl YXRlIHNoYXJlZCBtZW1vcnkgaGFzaCB0YWJsZXMgYnk6CisgKiAtIEF1dG9tYXRpY2FsbHkgZGV0 ZXJtaW5pbmcga2V5c2l6ZSBhbmQgZW50cnlzaXplIGZyb20gdHlwZSBpbmZvcm1hdGlvbgorICog LSBBdXRvbWF0aWNhbGx5IGNob29zaW5nIEhBU0hfU1RSSU5HUyB2cyBIQVNIX0JMT0JTIGJhc2Vk IG9uIGtleSB0eXBlCisgKiAtIEVsaW1pbmF0aW5nIHRoZSBuZWVkIGZvciBleHBsaWNpdCBIQVNI Q1RMIGFuZCBmbGFncyBpbiBjb21tb24gY2FzZXMKKyAqCisgKiBVc2FnZToKKyAqICAgSFRBQiAq aGFzaCA9IHNobWVtX2hhc2hfbWFrZShNeUVudHJ5LCBrZXlmaWVsZCwgIk15IGhhc2giLCA2NCwg MTI4KTsKKyAqCisgKiBGb3IgbW9yZSBvcHRpb25zIChwYXJ0aXRpb25pbmcsIGZpeGVkIHNpemUs IGN1c3RvbSBoYXNoKToKKyAqICAgSEFTSE9QVFMgb3B0cyA9IHsubnVtX3BhcnRpdGlvbnMgPSAx NiwgLmZpeGVkX3NpemUgPSB0cnVlfTsKKyAqICAgSFRBQiAqaGFzaCA9IHNobWVtX2hhc2hfbWFr ZV9leHQoTXlFbnRyeSwga2V5ZmllbGQsICJNeSBoYXNoIiwgNjQsIDEyOCwgJm9wdHMpOworICov CisjZGVmaW5lIHNobWVtX2hhc2hfbWFrZShlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwg aW5pdF9zaXplLCBtYXhfc2l6ZSkgXAorCXNobWVtX2hhc2hfbWFrZV9leHQoZW50cnl0eXBlLCBr ZXltZW1iZXIsIHRhYm5hbWUsIGluaXRfc2l6ZSwgbWF4X3NpemUsIE5VTEwpCisKKyNkZWZpbmUg c2htZW1faGFzaF9tYWtlX2V4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgaW5pdF9z aXplLCBtYXhfc2l6ZSwgb3B0cykgXAorCShTdGF0aWNBc3NlcnRFeHByKG9mZnNldG9mKGVudHJ5 dHlwZSwga2V5bWVtYmVyKSA9PSAwLCBcCisJCQkJCQkgI2tleW1lbWJlciAiIG11c3QgYmUgZmly c3QgbWVtYmVyIGluICIgI2VudHJ5dHlwZSksIFwKKwlzaG1lbV9oYXNoX21ha2VfaW1wbCggXAor CQkodGFibmFtZSksIChpbml0X3NpemUpLCAobWF4X3NpemUpLCBcCisJCXNpemVvZigoKGVudHJ5 dHlwZSAqKTApLT5rZXltZW1iZXIpLCBcCisJCXNpemVvZihlbnRyeXR5cGUpLCBcCisJCUhBU0hf S0VZX0FTX1NUUklORyhlbnRyeXR5cGUsIGtleW1lbWJlciksIFwKKwkJKG9wdHMpKSkKKworZXh0 ZXJuIEhUQUIgKnNobWVtX2hhc2hfbWFrZV9pbXBsKGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IGlu aXRfc2l6ZSwgaW50NjQgbWF4X3NpemUsCisJCQkJCQkJCSAgU2l6ZSBrZXlzaXplLCBTaXplIGVu dHJ5c2l6ZSwgYm9vbCBzdHJpbmdfa2V5LAorCQkJCQkJCQkgIGNvbnN0IEhBU0hPUFRTICpvcHRz KTsKKwogLyogaXBjaS5jICovCiBleHRlcm4gdm9pZCBSZXF1ZXN0QWRkaW5TaG1lbVNwYWNlKFNp emUgc2l6ZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaAppbmRleCBjZGM1MzBmYjczMi4uNzFjOTc4MDEzMmYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9oc2VhcmNoLmgKQEAgLTE1LDYgKzE1LDkgQEAKICNkZWZpbmUgSFNFQVJDSF9ICiAK IAorLyogSGFzaCB0YWJsZSBjb250cm9sIHN0cnVjdCBpcyBhbiBvcGFxdWUgdHlwZSBrbm93biBv bmx5IHdpdGhpbiBkeW5haGFzaC5jICovCit0eXBlZGVmIHN0cnVjdCBIVEFCIEhUQUI7CisKIC8q CiAgKiBIYXNoIGZ1bmN0aW9ucyBtdXN0IGhhdmUgdGhpcyBzaWduYXR1cmUuCiAgKi8KQEAgLTQz LDYgKzQ2LDE1NiBAQCB0eXBlZGVmIHZvaWQgKigqSGFzaENvcHlGdW5jKSAodm9pZCAqZGVzdCwg Y29uc3Qgdm9pZCAqc3JjLCBTaXplIGtleXNpemUpOwogICovCiB0eXBlZGVmIHZvaWQgKigqSGFz aEFsbG9jRnVuYykgKFNpemUgcmVxdWVzdCk7CiAKKy8qCisgKiBIYXNoIG9wdGlvbnMgZm9yIGhh c2hfbWFrZV9leHQgYW5kIHNobWVtX2hhc2hfbWFrZV9leHQgbWFjcm9zLgorICogQ29udGFpbnMg bGVzcyBjb21tb25seSBuZWVkZWQgb3B0aW9ucyB0aGF0IGFyZW4ndCBjb3ZlcmVkIGJ5IHRoZSBi YXNpYyBtYWNyb3MuCisgKiBBbGwgZmllbGRzIGRlZmF1bHQgdG8gTlVMTC8wL2ZhbHNlIHdoZW4g emVyby1pbml0aWFsaXplZC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgSEFTSE9QVFMKK3sKKwlIYXNo VmFsdWVGdW5jIGhhc2g7CQkJLyogY3VzdG9tIGhhc2ggZnVuY3Rpb24gKE5VTEwgZm9yIGRlZmF1 bHQpICovCisJSGFzaENvbXBhcmVGdW5jIG1hdGNoOwkJLyogY3VzdG9tIGNvbXBhcmlzb24gZnVu Y3Rpb24gKE5VTEwgZm9yCisJCQkJCQkJCSAqIGRlZmF1bHQpICovCisJSGFzaENvcHlGdW5jIGtl eWNvcHk7CQkvKiBjdXN0b20ga2V5IGNvcHkgZnVuY3Rpb24gKE5VTEwgZm9yIGRlZmF1bHQpICov CisJSGFzaEFsbG9jRnVuYyBhbGxvYzsJCS8qIGN1c3RvbSBhbGxvY2F0b3IgKE5VTEwgZm9yIGRl ZmF1bHQpICovCisJaW50NjQJCW51bV9wYXJ0aXRpb25zOyAvKiBwYXJ0aXRpb24gY291bnQgKDAg Zm9yIG5vbmUpICovCisJYm9vbAkJZml4ZWRfc2l6ZTsJCS8qIGlmIHRydWUsIGhhc2ggdGFibGUg Y2Fubm90IGdyb3cgKi8KKwlib29sCQlmb3JjZV9ibG9iczsJLyogaWYgdHJ1ZSwgdXNlIEhBU0hf QkxPQlMgZXZlbiBmb3Igc3RyaW5nCisJCQkJCQkJCSAqIHR5cGVzICovCit9IEhBU0hPUFRTOwor CisvKgorICogSGVscGVycyB0byBkZXRlY3QgaWYgYSB0eXBlIHNob3VsZCBiZSBoYXNoZWQgYXMg YSBzdHJpbmcuCisgKgorICogU3RyaW5nIHR5cGVzIGluY2x1ZGU6IGNoYXIgYXJyYXlzIGFuZCBO YW1lRGF0YS4KKyAqIEV2ZXJ5dGhpbmcgZWxzZSBpcyB0cmVhdGVkIGFzIGEgYmluYXJ5IGJsb2Ig KEhBU0hfQkxPQlMpLgorICovCisjZGVmaW5lIEhBU0hfUFRSX0FTX1NUUklORyhwdHIsIHNpemUp IFwKKwkocGdfZXhwcl9oYXNfdHlwZV9wKChwdHIpLCBjaGFyKCopW3NpemVdKSB8fCBwZ19leHBy X2hhc190eXBlX3AoKHB0ciksIE5hbWVEYXRhICopKQorI2RlZmluZSBIQVNIX0tFWV9BU19TVFJJ TkcoZW50cnl0eXBlLCBrZXltZW1iZXIpIFwKKwlIQVNIX1BUUl9BU19TVFJJTkcoJigoZW50cnl0 eXBlICopMCktPmtleW1lbWJlciwgXAorCQkJCQkgICBzaXplb2YoKChlbnRyeXR5cGUgKikwKS0+ a2V5bWVtYmVyKSkKKyNkZWZpbmUgSEFTSF9UWVBFX0FTX1NUUklORyh0eXBlKSBcCisJSEFTSF9Q VFJfQVNfU1RSSU5HKHBnX251bGxwdHJfb2YodHlwZSksIHNpemVvZih0eXBlKSkKKworLyoKKyAq IENyZWF0ZSBhIGhhc2ggdGFibGUgd2l0aCBtaW5pbWFsIGJvaWxlcnBsYXRlLgorICoKKyAqIFRo aXMgaXMgdGhlIHNpbXBsZXN0IHdheSB0byBjcmVhdGUgYSBoYXNoIHRhYmxlLiBJdDoKKyAqIC0g RGVyaXZlcyBrZXlzaXplIGZyb20gdGhlIGtleW1lbWJlcidzIGFjdHVhbCB0eXBlCisgKiAtIERl cml2ZXMgZW50cnlzaXplIGZyb20gdGhlIGVudHJ5dHlwZQorICogLSBBdXRvbWF0aWNhbGx5IGNo b29zZXMgSEFTSF9TVFJJTkdTIG9yIEhBU0hfQkxPQlMgYmFzZWQgb24ga2V5IHR5cGUgKGNoYXIg YXJyYXlzIGFuZCBOYW1lRGF0YSBhcmUgdHJlYXRlZCBhcyBzdHJpbmdzKQorICogLSBVc2VzIEN1 cnJlbnRNZW1vcnlDb250ZXh0IChub3QgVG9wTWVtb3J5Q29udGV4dCkKKyAqIC0gVmFsaWRhdGVz IHRoYXQga2V5bWVtYmVyIGlzIGF0IG9mZnNldCAwCisgKgorICogTk9URTogSWYgeW91IHVzZSBj aGFyW05dIHRvIHN0b3JlIGJpbmFyeSBkYXRhIHRoYXQgbWlnaHQgY29udGFpbiBudWxsIGJ5dGVz CisgKiBhbmQvb3IgaXMgbm90IG51bGwgdGVybWluYXRlZCwgdGhlIGF1dG9tYXRpYyBkZXRlY3Rp b24gd2lsbCBpbmNvcnJlY3RseQorICogdHJlYXQgaXQgYXMgYSBzdHJpbmcgYW5kIHVzZSBzdHJp bmcgY29tcGFyaXNvbi4gSW4gc3VjaCBjYXNlcywgdXNlCisgKiBoYXNoX21ha2VfZXh0KCkgd2l0 aCAuZm9yY2VfYmxvYnMgPSB0cnVlIHRvIG92ZXJyaWRlIHRoZSBhdXRvbWF0aWMKKyAqIGRldGVj dGlvbi4KKyAqCisgKiBVc2FnZToKKyAqICAgdHlwZWRlZiBzdHJ1Y3QgeyBPaWQgb2lkOyBjaGFy ICpkYXRhOyB9IE15RW50cnk7CisgKiAgIEhUQUIgKmggPSBoYXNoX21ha2UoTXlFbnRyeSwgb2lk LCAibXkgdGFibGUiLCA2NCk7CisgKi8KKyNkZWZpbmUgaGFzaF9tYWtlKGVudHJ5dHlwZSwga2V5 bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSkgXAorCWhhc2hfbWFrZV9jeHQoZW50cnl0eXBlLCBrZXlt ZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBDdXJyZW50TWVtb3J5Q29udGV4dCkKKworLyoKKyAqIExp a2UgaGFzaF9tYWtlLCBidXQgYWxsb3dzIHNwZWNpZnlpbmcgYSBtZW1vcnkgY29udGV4dC4KKyAq LworI2RlZmluZSBoYXNoX21ha2VfY3h0KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBu ZWxlbSwgbWN4dCkgXAorCWhhc2hfbWFrZV9leHRfY3h0KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0 YWJuYW1lLCBuZWxlbSwgTlVMTCwgbWN4dCkKKworLyoKKyAqIEhhc2ggdGFibGUgd2l0aCBjdXN0 b20gaGFzaCBhbmQvb3IgbWF0Y2ggZnVuY3Rpb25zLgorICoKKyAqIExpa2UgaGFzaF9tYWtlLCBi dXQgYWNjZXB0cyBjdXN0b20gaGFzaCBhbmQgbWF0Y2ggZnVuY3Rpb24gcG9pbnRlcnMuCisgKiBQ YXNzIE5VTEwgZm9yIGhhc2hmbiB0byB1c2UgdGhlIGRlZmF1bHQgaGFzaCAoYmFzZWQgb24ga2V5 IHR5cGUpLAorICogb3IgTlVMTCBmb3IgbWF0Y2hmbiB0byB1c2UgdGhlIGRlZmF1bHQgbWVtY21w LWJhc2VkIGNvbXBhcmlzb24uCisgKi8KKyNkZWZpbmUgaGFzaF9tYWtlX2ZuKGVudHJ5dHlwZSwg a2V5bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSwgaGFzaGZuLCBtYXRjaGZuKSBcCisJaGFzaF9tYWtl X2ZuX2N4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0sIGhhc2hmbiwgbWF0 Y2hmbiwgXAorCQkJCQkgQ3VycmVudE1lbW9yeUNvbnRleHQpCisjZGVmaW5lIGhhc2hfbWFrZV9m bl9jeHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBoYXNoZm4sIG1hdGNo Zm4sIG1jeHQpIFwKKwkoU3RhdGljQXNzZXJ0RXhwcihvZmZzZXRvZihlbnRyeXR5cGUsIGtleW1l bWJlcikgPT0gMCwgXAorCQkJCQkgICNrZXltZW1iZXIgIiBtdXN0IGJlIGZpcnN0IG1lbWJlciBp biAiICNlbnRyeXR5cGUpLCBcCisJIGhhc2hfbWFrZV9mbl9pbXBsKCh0YWJuYW1lKSwgKG5lbGVt KSwgXAorCQkJCQkgICBzaXplb2YoKChlbnRyeXR5cGUgKikwKS0+a2V5bWVtYmVyKSwgXAorCQkJ CQkgICBzaXplb2YoZW50cnl0eXBlKSwgXAorCQkJCQkgICBIQVNIX0tFWV9BU19TVFJJTkcoZW50 cnl0eXBlLCBrZXltZW1iZXIpLCBcCisJCQkJCSAgIChoYXNoZm4pLCAobWF0Y2hmbiksIChtY3h0 KSkpCisKKy8qCisgKiBIYXNoIHRhYmxlIHdpdGggZXh0ZW5kZWQgb3B0aW9ucyB2aWEgSEFTSE9Q VFMgc3RydWN0LgorICoKKyAqIExpa2UgaGFzaF9tYWtlLCBidXQgYWNjZXB0cyBhZGRpdGlvbmFs IG9wdGlvbnMgdmlhIEhBU0hPUFRTIHN0cnVjdCBwb2ludGVyLgorICogUGFzcyBOVUxMIGZvciBv cHRzIHRvIHVzZSBhbGwgZGVmYXVsdHMuCisgKgorICogRXhhbXBsZSB1c2FnZToKKyAqICAgSEFT SE9QVFMgb3B0cyA9IHswfTsKKyAqICAgb3B0cy5oYXNoID0gbXlfaGFzaF9mdW5jOworICogICBv cHRzLm51bV9wYXJ0aXRpb25zID0gMTY7CisgKiAgIEhUQUIgKmggPSBoYXNoX21ha2VfZXh0KE15 RW50cnksIGtleSwgIm15IHRhYmxlIiwgNjQsICZvcHRzKTsKKyAqLworI2RlZmluZSBoYXNoX21h a2VfZXh0KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSwgb3B0cykgXAorCWhh c2hfbWFrZV9leHRfY3h0KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSwgb3B0 cywgQ3VycmVudE1lbW9yeUNvbnRleHQpCisKKyNkZWZpbmUgaGFzaF9tYWtlX2V4dF9jeHQoZW50 cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBvcHRzLCBtY3h0KSBcCisJKFN0YXRp Y0Fzc2VydEV4cHIob2Zmc2V0b2YoZW50cnl0eXBlLCBrZXltZW1iZXIpID09IDAsIFwKKwkJCQkJ CSAja2V5bWVtYmVyICIgbXVzdCBiZSBmaXJzdCBtZW1iZXIgaW4gIiAjZW50cnl0eXBlKSwgXAor CWhhc2hfbWFrZV9pbXBsKCBcCisJCSh0YWJuYW1lKSwgKG5lbGVtKSwgXAorCQlzaXplb2YoKChl bnRyeXR5cGUgKikwKS0+a2V5bWVtYmVyKSwgXAorCQlzaXplb2YoZW50cnl0eXBlKSwgXAorCQlI QVNIX0tFWV9BU19TVFJJTkcoZW50cnl0eXBlLCBrZXltZW1iZXIpLCBcCisJCShvcHRzKSwgXAor CQkobWN4dCkpKQorCisKKy8qCisgKiBDcmVhdGUgYSBoYXNoIHNldCB3aGVyZSB0aGUgZW50aXJl IGVudHJ5IGlzIHRoZSBrZXkuIFRoaXMgaXMKKyAqIGxpa2UgaGFzaF9tYWtlLCBidXQgd2hlcmUg dGhlIGtleSBpcyBhbHNvIHRoZSBlbnRyeS4KKyAqLworI2RlZmluZSBoYXNoc2V0X21ha2UoZW50 cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSkgXAorCWhhc2hzZXRfbWFrZV9jeHQoZW50cnl0eXBlLCB0 YWJuYW1lLCBuZWxlbSwgQ3VycmVudE1lbW9yeUNvbnRleHQpCisjZGVmaW5lIGhhc2hzZXRfbWFr ZV9jeHQoZW50cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSwgbWN4dCkgXAorCWhhc2hzZXRfbWFrZV9l eHRfY3h0KGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0sIE5VTEwsIG1jeHQpCisjZGVmaW5lIGhh c2hzZXRfbWFrZV9mbihlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBoYXNoZm4sIG1hdGNoZm4p IFwKKwloYXNoc2V0X21ha2VfZm5fY3h0KGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0sIGhhc2hm biwgbWF0Y2hmbiwgXAorCQkJCQkJCUN1cnJlbnRNZW1vcnlDb250ZXh0KQorI2RlZmluZSBoYXNo c2V0X21ha2VfZm5fY3h0KGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0sIGhhc2hmbiwgbWF0Y2hm biwgbWN4dCkgXAorCWhhc2hfbWFrZV9mbl9pbXBsKCh0YWJuYW1lKSwgKG5lbGVtKSwgc2l6ZW9m KGVudHJ5dHlwZSksIHNpemVvZihlbnRyeXR5cGUpLCBcCisJCQkJCQkgSEFTSF9UWVBFX0FTX1NU UklORyhlbnRyeXR5cGUpLCAoaGFzaGZuKSwgKG1hdGNoZm4pLCBcCisJCQkJCQkgbWN4dCkKKyNk ZWZpbmUgaGFzaHNldF9tYWtlX2V4dChlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBvcHRzKSBc CisJaGFzaHNldF9tYWtlX2V4dF9jeHQoZW50cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSwgb3B0cywg XAorCQkJCQkJCUN1cnJlbnRNZW1vcnlDb250ZXh0KQorI2RlZmluZSBoYXNoc2V0X21ha2VfZXh0 X2N4dChlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBvcHRzLCBtY3h0KSBcCisJaGFzaF9tYWtl X2ltcGwoKHRhYm5hbWUpLCAobmVsZW0pLCBzaXplb2YoZW50cnl0eXBlKSwgc2l6ZW9mKGVudHJ5 dHlwZSksIFwKKwkJCQkgICBIQVNIX1RZUEVfQVNfU1RSSU5HKGVudHJ5dHlwZSksIG9wdHMsICht Y3h0KSkKKworLyoKKyAqIEltcGxlbWVudGF0aW9uIGZ1bmN0aW9uIGZvciBoYXNoX21ha2UgbWFj cm9zLiBOb3QgbWVhbnQgdG8gYmUgY2FsbGVkCisgKiBkaXJlY3RseS4KKyAqCisgKiBJZiBzdHJp bmdfa2V5IGlzIHRydWUsIHRoZSBrZXkgaXMgdHJlYXRlZCBhcyBhIG51bGwtdGVybWluYXRlZCBz dHJpbmcuCisgKiBQYXNzIE5VTEwgZm9yIG9wdHMgdG8gdXNlIGFsbCBkZWZhdWx0cy4KKyAqLwor ZXh0ZXJuIEhUQUIgKmhhc2hfbWFrZV9pbXBsKGNvbnN0IGNoYXIgKnRhYm5hbWUsIGludDY0IG5l bGVtLAorCQkJCQkJCVNpemUga2V5c2l6ZSwgU2l6ZSBlbnRyeXNpemUsCisJCQkJCQkJYm9vbCBz dHJpbmdfa2V5LAorCQkJCQkJCWNvbnN0IEhBU0hPUFRTICpvcHRzLAorCQkJCQkJCU1lbW9yeUNv bnRleHQgbWN4dCk7CisKKy8qCisgKiBJbXBsZW1lbnRhdGlvbiBmdW5jdGlvbiBmb3IgaGFzaF9t YWtlX2ZuIG1hY3Jvcy4KKyAqLworZXh0ZXJuIEhUQUIgKmhhc2hfbWFrZV9mbl9pbXBsKGNvbnN0 IGNoYXIgKnRhYm5hbWUsIGludDY0IG5lbGVtLAorCQkJCQkJCSAgIFNpemUga2V5c2l6ZSwgU2l6 ZSBlbnRyeXNpemUsIGJvb2wgc3RyaW5nX2tleSwKKwkJCQkJCQkgICBIYXNoVmFsdWVGdW5jIGhh c2hmbiwgSGFzaENvbXBhcmVGdW5jIG1hdGNoZm4sCisJCQkJCQkJICAgTWVtb3J5Q29udGV4dCBt Y3h0KTsKKwogLyoKICAqIEhBU0hFTEVNRU5UIGlzIHRoZSBwcml2YXRlIHBhcnQgb2YgYSBoYXNo dGFibGUgZW50cnkuICBUaGUgY2FsbGVyJ3MgZGF0YQogICogZm9sbG93cyB0aGUgSEFTSEVMRU1F TlQgc3RydWN0dXJlIChvbiBhIE1BWEFMSUdOJ2QgYm91bmRhcnkpLiAgVGhlIGhhc2gga2V5CkBA IC01NywxMSArMjEwLDExIEBAIHR5cGVkZWYgc3RydWN0IEhBU0hFTEVNRU5UCiAvKiBIYXNoIHRh YmxlIGhlYWRlciBzdHJ1Y3QgaXMgYW4gb3BhcXVlIHR5cGUga25vd24gb25seSB3aXRoaW4gZHlu YWhhc2guYyAqLwogdHlwZWRlZiBzdHJ1Y3QgSEFTSEhEUiBIQVNISERSOwogCi0vKiBIYXNoIHRh YmxlIGNvbnRyb2wgc3RydWN0IGlzIGFuIG9wYXF1ZSB0eXBlIGtub3duIG9ubHkgd2l0aGluIGR5 bmFoYXNoLmMgKi8KLXR5cGVkZWYgc3RydWN0IEhUQUIgSFRBQjsKLQotLyogUGFyYW1ldGVyIGRh dGEgc3RydWN0dXJlIGZvciBoYXNoX2NyZWF0ZSAqLwotLyogT25seSB0aG9zZSBmaWVsZHMgaW5k aWNhdGVkIGJ5IGhhc2hfZmxhZ3MgbmVlZCBiZSBzZXQgKi8KKy8qCisgKiBQYXJhbWV0ZXIgZGF0 YSBzdHJ1Y3R1cmUgZm9yIGhhc2hfY3JlYXRlICh3aGljaCBpcyB0aGUgbG93LWxldmVsIG1ldGhv ZCBvZgorICogaW5pdGlhbGl6aW5nIGhhc2ggdGFibGVzLCBoYXNoX21ha2UgbWFjcm9zIGFyZSBw cmVmZXJyZWQpCisgKiBPbmx5IHRob3NlIGZpZWxkcyBpbmRpY2F0ZWQgYnkgaGFzaF9mbGFncyBu ZWVkIGJlIHNldAorICovCiB0eXBlZGVmIHN0cnVjdCBIQVNIQ1RMCiB7CiAJLyogVXNlZCBpZiBI QVNIX1BBUlRJVElPTiBmbGFnIGlzIHNldDogKi8KQEAgLTEzMSw2ICsyODQsOSBAQCB0eXBlZGVm IHN0cnVjdAogICovCiBleHRlcm4gSFRBQiAqaGFzaF9jcmVhdGUoY29uc3QgY2hhciAqdGFibmFt ZSwgaW50NjQgbmVsZW0sCiAJCQkJCQkgY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKTsK K2V4dGVybiB2b2lkIGhhc2hfb3B0c19pbml0KEhBU0hDVEwgKmN0bCwgaW50ICpmbGFncywKKwkJ CQkJCSAgIFNpemUga2V5c2l6ZSwgU2l6ZSBlbnRyeXNpemUsIGJvb2wgc3RyaW5nX2tleSwKKwkJ CQkJCSAgIGNvbnN0IEhBU0hPUFRTICpvcHRzKTsKIGV4dGVybiB2b2lkIGhhc2hfZGVzdHJveShI VEFCICpoYXNocCk7CiBleHRlcm4gdm9pZCBoYXNoX3N0YXRzKGNvbnN0IGNoYXIgKmNhbGxlciwg SFRBQiAqaGFzaHApOwogZXh0ZXJuIHZvaWQgKmhhc2hfc2VhcmNoKEhUQUIgKmhhc2hwLCBjb25z dCB2b2lkICprZXlQdHIsIEhBU0hBQ1RJT04gYWN0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAppbmRleCBkZGJlNGM2NDk3MS4uMjJmZTdhZDUzZGEgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CkBAIC0xMTU5LDYgKzExNTksNyBAQCBIQVNIQlVDS0VUCiBIQVNIQ1RMCiBIQVNIRUxFTUVO VAogSEFTSEhEUgorSEFTSE9QVFMKIEhBU0hTRUdNRU5UCiBIQVNIX1NFUV9TVEFUVVMKIEhFCgpi YXNlLWNvbW1pdDogOWE0NDZkMDI1NmRjOGY0YWZiNGRiYTk3NzM0YjQ2NDQ3YzA4ZDkxOAotLSAK Mi41Mi4wCgo= --47d834fb39f917299e3944345bf4c7b286ca1a3cdaf0f9bf83d0eef1564f Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v10-0002-Add-foreach_hash-macro.patch Content-Type: text/x-patch; charset=utf-8; name=v10-0002-Add-foreach_hash-macro.patch RnJvbSBkNGRkOTYzOTcyYzZlMzg5MzA4NTc2MjBlMDg3NzM2ZTM2MWQ3ZDEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDAgKzAxMDAKU3ViamVjdDogW1BBVENIIHYx MCAyLzVdIEFkZCBmb3JlYWNoX2hhc2ggbWFjcm8KCkZvciBsaXN0cyB3ZSd2ZSBoYWQgYSBuZXcg Zm9yZWFjaCBzdHlsZSBtYWNyb3Mgc2luY2UgMTRkZDBmMjdkNy4gVGhpcwphZGRzIGEgc2ltaWxh ciBtYWNybyBmb3IgaGFzaCB0YWJsZXMuIFRoaXMgbmV3IGZvcmVhY2hfaGFzaCBtYWNybyBtYWtl cwppdGVyYXRpbmcgb3ZlciB0aGUgaXRlbXMgaW4gYW4gSFRBQiBhcyBzaW1wbGUgYXMgaXRlcmF0 aW5nIG92ZXIgdGhlCml0ZW1zIGluIGEgTGlzdC4gVGhlIG9ubHkgYWRkaXRpb25hbCB0aGluZyB0 byBrZWVwIGluIG1pbmQgaXMgdGhhdCB3aGVuCmV4aXRpbmcgdGhlIGxvb3AgZWFybHkgeW91IG5l ZWQgdG8gY2FsbCBmb3JlYWNoX2hhc2hfdGVybS4KLS0tCiBzcmMvaW5jbHVkZS91dGlscy9oc2Vh cmNoLmggfCA3NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAxIGZpbGUg Y2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaApp bmRleCA3MWM5NzgwMTMyZi4uZmNiNDMyNmE0ZDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL2hzZWFyY2guaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKQEAgLTI3OSw2 ICsyNzksODEgQEAgdHlwZWRlZiBzdHJ1Y3QKIAl1aW50MzIJCWhhc2h2YWx1ZTsJCS8qIGhhc2h2 YWx1ZSB0byBzdGFydCBzZXFzY2FuIG92ZXIgaGFzaCAqLwogfSBIQVNIX1NFUV9TVEFUVVM7CiAK K2V4dGVybiB2b2lkIGhhc2hfc2VxX2luaXQoSEFTSF9TRVFfU1RBVFVTICpzdGF0dXMsIEhUQUIg Kmhhc2hwKTsKKworLyoKKyAqIFNhbWUgYXMgaGFzaF9zZXFfaW5pdCgpLCBidXQgcmV0dXJucyB0 aGUgc3RhdHVzIHN0cnVjdCBpbnN0ZWFkIG9mIHRha2luZyBhCisgKiBwb2ludGVyLiBUaGlzIHdh eSB3ZSBjYW4gdXNlIGl0IGluIHRoZSBpbml0aWFsaXphdGlvbiBjbGF1c2Ugb2YgYSBmb3IgbG9v cCwKKyAqIHdoaWNoIHdlIG5lZWQgaW4gdGhlIGZvcmVhY2hfaGFzaCBtYWNyby4KKyAqCisgKiBO b3QgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IHVzZXIgY29kZS4KKyAqLworc3Rh dGljIGlubGluZSBIQVNIX1NFUV9TVEFUVVMKK2ZvcmVhY2hfaGFzaF9zdGFydChIVEFCICpoYXNo cCkKK3sKKwlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCisJaGFzaF9zZXFfaW5pdCgmc3RhdHVz LCBoYXNocCk7CisJcmV0dXJuIHN0YXR1czsKK30KKworCisvKgorICogZm9yZWFjaF9oYXNoIC0g aXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzIGluIGEgaGFzaCB0YWJsZQorICoKKyAqIFRoaXMgbWFj cm8gc2ltcGxpZmllcyBoYXNoIHRhYmxlIGl0ZXJhdGlvbiBieSBjb21iaW5pbmcgaGFzaF9zZXFf aW5pdAorICogYW5kIGhhc2hfc2VxX3NlYXJjaCBpbnRvIGEgc2luZ2xlIGZvci1sb29wIGNvbnN0 cnVjdC4KKyAqCisgKiBVc2FnZToKKyAqICAgZm9yZWFjaF9oYXNoKE15RW50cnksIGVudHJ5LCBt eV9oYXNodGFibGUpCisgKiAgIHsKKyAqICAgICAgIC8vIHVzZSBlbnRyeQorICogICB9CisgKgor ICogVGhpcyByZXBsYWNlcyB0aGUgbW9yZSB2ZXJib3NlIHBhdHRlcm46CisgKiAgIEhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7CisgKiAgIE15RW50cnkgKmVudHJ5OworICogICBoYXNoX3NlcV9pbml0 KCZzdGF0dXMsIG15X2hhc2h0YWJsZSk7CisgKiAgIHdoaWxlICgoZW50cnkgPSAoTXlFbnRyeSAq KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisgKiAgIHsKKyAqICAgICAgIC8v IHVzZSBlbnRyeQorICogICB9CisgKgorICogRm9yIGVhcmx5IHRlcm1pbmF0aW9uLCB1c2UgZm9y ZWFjaF9oYXNoX3Rlcm0oKSBiZWZvcmUgYnJlYWs6CisgKiAgIGZvcmVhY2hfaGFzaChNeUVudHJ5 LCBlbnRyeSwgbXlfaGFzaHRhYmxlKQorICogICB7CisgKiAgICAgICBpZiAoZm91bmRfaXQpCisg KiAgICAgICB7CisgKiAgICAgICAgICAgZm9yZWFjaF9oYXNoX3Rlcm0oZW50cnkpOworICogICAg ICAgICAgIGJyZWFrOworICogICAgICAgfQorICogICB9CisgKi8KKyNkZWZpbmUgZm9yZWFjaF9o YXNoKHR5cGUsIHZhciwgaHRhYikgXAorCWZvciAodHlwZSAqdmFyID0gTlVMTCwgKnZhciMjX19v dXRlcmxvb3AgPSAodHlwZSAqKSAxOyBcCisJCSB2YXIjI19fb3V0ZXJsb29wOyBcCisJCSB2YXIj I19fb3V0ZXJsb29wID0gMCkgXAorCQlmb3IgKEhBU0hfU0VRX1NUQVRVUyB2YXIjI19fc3RhdHVz ID0gZm9yZWFjaF9oYXNoX3N0YXJ0KGh0YWIpOyBcCisJCQkgKHZhciA9ICh0eXBlICopIGhhc2hf c2VxX3NlYXJjaCgmdmFyIyNfX3N0YXR1cykpICE9IE5VTEw7ICkKKworLyoKKyAqIGZvcmVhY2hf aGFzaF90ZXJtIC0gdGVybWluYXRlIGEgZm9yZWFjaF9oYXNoIGxvb3AgZWFybHkKKyAqCisgKiBB bHdheXMgY2FsbCB0aGlzIGJlZm9yZSBicmVha2luZyBvdXQgb2YgYSBmb3JlYWNoX2hhc2ggbG9v cCwgd2hldGhlciBkb25lIGJ5CisgKiB1c2luZyAiYnJlYWsiLCAicmV0dXJuIiBvciAiZ290byIu IChOb3QgbmVlZGVkIHdoZW4gdXNpbmcgImNvbnRpbnVlIikKKyAqLworI2RlZmluZSBmb3JlYWNo X2hhc2hfdGVybSh2YXIpIGhhc2hfc2VxX3Rlcm0oJnZhciMjX19zdGF0dXMpCisKKy8qCisgKiBm b3JlYWNoX2hhc2hfcmVzdGFydCAtIHJlc3RhcnQgaXRlcmF0aW9uIGZyb20gdGhlIGJlZ2lubmlu ZworICoKKyAqIFVzZSB3aGVuIG1vZGlmaWNhdGlvbnMgZHVyaW5nIGl0ZXJhdGlvbiBtYXkgaGF2 ZSBpbnZhbGlkYXRlZCB0aGUgc2Nhbi4KKyAqIFRoZSBuZXh0IGl0ZXJhdGlvbiB3aWxsIHN0YXJ0 IGZyb20gdGhlIGZpcnN0IGVudHJ5IGFnYWluLgorICovCisjZGVmaW5lIGZvcmVhY2hfaGFzaF9y ZXN0YXJ0KHZhciwgaHRhYikgXAorCShoYXNoX3NlcV90ZXJtKCZ2YXIjI19fc3RhdHVzKSwgXAor CSBoYXNoX3NlcV9pbml0KCZ2YXIjI19fc3RhdHVzLCBodGFiKSkKKwogLyoKICAqIHByb3RvdHlw ZXMgZm9yIGZ1bmN0aW9ucyBpbiBkeW5haGFzaC5jCiAgKi8KQEAgLTI5OCw3ICszNzMsNiBAQCBl eHRlcm4gdm9pZCAqaGFzaF9zZWFyY2hfd2l0aF9oYXNoX3ZhbHVlKEhUQUIgKmhhc2hwLCBjb25z dCB2b2lkICprZXlQdHIsCiBleHRlcm4gYm9vbCBoYXNoX3VwZGF0ZV9oYXNoX2tleShIVEFCICpo YXNocCwgdm9pZCAqZXhpc3RpbmdFbnRyeSwKIAkJCQkJCQkJIGNvbnN0IHZvaWQgKm5ld0tleVB0 cik7CiBleHRlcm4gaW50NjQgaGFzaF9nZXRfbnVtX2VudHJpZXMoSFRBQiAqaGFzaHApOwotZXh0 ZXJuIHZvaWQgaGFzaF9zZXFfaW5pdChIQVNIX1NFUV9TVEFUVVMgKnN0YXR1cywgSFRBQiAqaGFz aHApOwogZXh0ZXJuIHZvaWQgaGFzaF9zZXFfaW5pdF93aXRoX2hhc2hfdmFsdWUoSEFTSF9TRVFf U1RBVFVTICpzdGF0dXMsCiAJCQkJCQkJCQkJICBIVEFCICpoYXNocCwKIAkJCQkJCQkJCQkgIHVp bnQzMiBoYXNodmFsdWUpOwotLSAKMi41Mi4wCgo= --47d834fb39f917299e3944345bf4c7b286ca1a3cdaf0f9bf83d0eef1564f Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v10-0003-Use-hash_make-macros-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v10-0003-Use-hash_make-macros-throughout-the-codebase.patch RnJvbSA0M2VlMjZmMzhiMGU4MzZjYjZlYzZiMzk3NzI5ZGExOGMyNzI2ZmFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzY6MTkgKzAxMDAKU3ViamVjdDogW1BBVENIIHYx MCAzLzVdIFVzZSBoYXNoX21ha2UgbWFjcm9zIHRocm91Z2hvdXQgdGhlIGNvZGViYXNlCgpUaGlz IHNob3dzIGhvdyBvdXIgY29kZSBiYXNlIGxvb2tzIHdoZW4gdXNpbmcgdGhlIG5ldyBBUElzLiBU aGlzIGhhcwpzb21lIHR5cGVzYWZldHksIHJlYWRhYmlsaXR5IGFuZCBtYWludGFuYWJpbGl0eSBi ZW5lZml0cywgYnV0IGl0IGFsc28KaW50cm9kdWNlcyBzb21lIGJhY2twYXRjaGluZyBwcm9ibGVt cy4gVGhlc2UgYmFja3BhdGNoaW5nIHByb2JsZW1zCmNhbm5vdCBiZSByZXNvbHZlZCBieSBiYWNr cG9ydGluZyB0aGUgbmV3IGhhc2hfbWFrZSBtYWNyb3MsIGJlY2F1c2Ugc29tZQpvZiB0aGVtIHJl cXVpcmUgQzExICh3aGljaCB3ZSBvbmx5IHJlcXVpcmUgb24gbWFzdGVyIGZvciBub3cpLiBJIHRo aW5rCml0J3MgdW5saWtlbHkgdGhhdCB3ZSdsbCBuZWVkIHRvIGJhY2twYXRjaCB0aGluZ3MgaW4g Y29kZSB0aGF0IGNyZWF0ZXMKaGFzaHRhYmxlcyB0aG91Z2gsIHNvIGl0IGNvdWxkIHN0aWxsIGJl IHdvcnRoIGl0IHRvIGRvIHRoaXMgY29tcGxldGUKcmVmYWN0b3IuCgpBdCB0aGUgdmVyeSBsZWFz dCB3ZSBzaG91bGQgY2hvb3NlIGEgZmV3IHBsYWNlcyB3aGVyZSB3ZSB1c2UgdGhlIG5ldwptYWNy b3MgdG8gbWFrZSBzdXJlIHRoZXkgaGF2ZSBjb3ZlcmFnZS4KCkRvIG5vdGUgdGhhdCB0aGVzZSBu ZXcgbWFjcm9zIGFyZSBub3QganVzdCBxdWFsaXR5LW9mLWxpZmUsIGJ1dCB0aGV5CmFsc28gY2Fs Y3VsYXRlIHRoZSBrZXkgYW5kIGVudHJ5IHNpemVzIGF1dG9tYXRpY2FsbHkuIFRodXMgbWFraW5n IHRoZW0KbGVzcyBlcnJvciBwcm9uZSB0byBtYWludGFpbiBpbiBjYXNlIG9mIGNoYW5nZXMgdG8g dGhlIHVuZGVybHlpbmcKc3RydWN0cy4KLS0tCiBjb250cmliL2RibGluay9kYmxpbmsuYyAgICAg ICAgICAgICAgICAgICAgICAgfCAxMCArLS0KIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3Rh dF9zdGF0ZW1lbnRzLmMgICB8IDEwICstLQogY29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMg ICAgICAgICAgICAgICAgIHwgIDkgKy0tCiBjb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9u LmMgICAgICAgICAgICAgfCAxMCArLS0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5j ICAgICAgICAgICAgICB8IDEwICsrLQogY29udHJpYi90YWJsZWZ1bmMvdGFibGVmdW5jLmMgICAg ICAgICAgICAgICAgIHwgMTcgKystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vaGVhcHR1 cGxlLmMgICAgICAgICB8IDEzICstLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWls ZC5jICAgICAgICAgICB8IDExICstLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWls ZGJ1ZmZlcnMuYyAgICB8IDEwICstLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHBhZ2Uu YyAgICAgICAgICAgIHwgMTMgKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhl YXAuYyAgICAgICAgIHwgMzkgKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2dwcmVmZXRjaGVyLmMgICB8ICA4ICstLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZ3V0aWxzLmMgICAgICAgIHwgMTMgKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVt LmMgICAgICAgICAgICAgICAgIHwgMjQgKystLS0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19p bmhlcml0cy5jICAgICAgICAgICAgIHwgMTEgKy0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9y YWdlLmMgICAgICAgICAgICAgICAgIHwgMjEgKystLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9h c3luYy5jICAgICAgICAgICAgICAgICAgfCA0OSArKysrLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAgIHwgMTIgKy0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvc2VxdWVuY2UuYyAgICAgICAgICAgICAgIHwgMTAgKy0tCiBzcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAxNiArLS0tLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAgICAgIHwgMTAgKy0tCiBzcmMvYmFja2VuZC9u b2Rlcy9leHRlbnNpYmxlLmMgICAgICAgICAgICAgICAgfCAxMCArLS0KIHNyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3BsYW5jYXQuYyAgICAgICAgICB8IDE3ICsrLS0tCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jICAgICAgICAgfCAgOSArLS0KIHNyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3JlbG5vZGUuYyAgICAgICAgICB8IDEzICstLS0KIHNyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9vcGVyLmMgICAgICAgICAgICAgICB8IDEwICsrLQogc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRkZXNjLmMgICAgICAgICAgIHwgIDkgKy0tCiBzcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAyMiArKy0tLS0tCiBzcmMvYmFja2VuZC9w b3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jICAgICAgICAgfCAxMiArLS0tCiAuLi4vcmVwbGljYXRp b24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgfCAxMyArLS0tCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgICAgfCAyMiArKy0tLS0tCiAuLi4vcmVwbGlj YXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgICAgfCAyOSArKy0tLS0tLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgIHwgMTAgKystCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAgfCAxMSArLS0tCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFibGUuYyAgICAgICAgfCAxNSArKy0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgICAgICAgICAgIHwgMTEgKystLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYyAgICAgICAgIHwgMTEgKy0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9maWxlL3JlaW5pdC5jICAgICAgICAgICAgIHwgIDggKy0tCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jICAgICAgICAgICAgICAgfCAzMyArKysrKysrLS0tCiBz cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgICAgICAgICAgfCAyMCArKy0tLS0K IHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMgICAgICAgICAgICAgICB8IDU1ICsrKysr LS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYyAgICAgICAgICAg ICB8ICA4ICstLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jICAgICAgICAg IHwgNjYgKysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3Iu YyAgICAgICAgICAgICAgIHwgMTAgKystCiBzcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5j ICAgICAgICAgICAgICAgfCAxMSArLS0tCiBzcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5 emUuYyAgICAgICAgICAgfCAxMyArLS0tCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0 X2V2ZW50LmMgICAgICAgfCAyMyArKystLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlf dHlwYW5hbHl6ZS5jICAgICAgfCAyMyArKy0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNv bi5jICAgICAgICAgICAgICAgICAgfCAxNSArLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b25mdW5jcy5jICAgICAgICAgICAgIHwgMjAgKystLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQv bWN4dGZ1bmNzLmMgICAgICAgICAgICAgfCAxMSArLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQv cmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCAyOSArKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgMjMgKystLS0tLQogc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvYXR0b3B0Y2FjaGUuYyAgICAgICAgIHwgMTYgKystLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2V2dGNhY2hlLmMgICAgICAgICAgICB8ICA5ICstLQogc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvZnVuY2NhY2hlLmMgICAgICAgICAgIHwgMTQgKystLQogc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwgMTkgKystLS0tCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFwLmMgICAgfCAgOSArLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3NwY2NhY2hlLmMgICAgICAgICAgICB8ICA5ICstLQogc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvdHNfY2FjaGUuYyAgICAgICAgICAgIHwgMjcgKysrLS0tLS0KIHNyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMgICAgICAgICAgICB8IDMzICsrKystLS0tLS0KIHNyYy9i YWNrZW5kL3V0aWxzL2ZtZ3IvZGZtZ3IuYyAgICAgICAgICAgICAgICB8IDEyICsrLS0KIHNyYy9i YWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jICAgICAgICAgICAgICAgICB8IDExICstLS0KIHNyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgICAgICAgICAgICAgICAgICB8IDE0ICsrLS0KIHNyYy9i YWNrZW5kL3V0aWxzL21pc2MvaW5qZWN0aW9uX3BvaW50LmMgICAgICB8IDE0ICsrLS0KIHNyYy9i YWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgICAgICAgICAgICB8IDEwICstLQogc3JjL2Jh Y2tlbmQvdXRpbHMvdGltZS9jb21ib2NpZC5jICAgICAgICAgICAgIHwgMTMgKy0tLQogc3JjL3Bs L3BscGVybC9wbHBlcmwuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgMzIgKysrLS0tLS0tCiBz cmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jICAgICAgICAgICAgICAgICAgfCAzMiArKysrLS0t LS0KIHNyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYyAgICAgICAgICAgICB8ICA5ICsr LQogc3JjL3BsL3BscHl0aG9uL3BscHlfcHJvY2VkdXJlLmMgICAgICAgICAgICAgIHwgIDkgKy0t CiBzcmMvcGwvdGNsL3BsdGNsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxOSArKy0t LS0KIHNyYy90aW1lem9uZS9wZ3R6LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyICst LS0KIDczIGZpbGVzIGNoYW5nZWQsIDM4MCBpbnNlcnRpb25zKCspLCA4NjEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvY29udHJpYi9kYmxpbmsvZGJsaW5rLmMgYi9jb250cmliL2RibGluay9k YmxpbmsuYwppbmRleCA4Y2IzMTY2NDk1Yy4uMTkyNDE4ZGY0YWYgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvZGJsaW5rL2RibGluay5jCisrKyBiL2NvbnRyaWIvZGJsaW5rL2RibGluay5jCkBAIC0yNTQw LDEzICsyNTQwLDkgQEAgZ2V0Q29ubmVjdGlvbkJ5TmFtZShjb25zdCBjaGFyICpuYW1lKQogc3Rh dGljIEhUQUIgKgogY3JlYXRlQ29ubkhhc2godm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KLQlj dGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YocmVtb3Rl Q29ubkhhc2hFbnQpOwotCi0JcmV0dXJuIGhhc2hfY3JlYXRlKCJSZW1vdGUgQ29uIGhhc2giLCBO VU1DT05OLCAmY3RsLAotCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOworCXJldHVy biBoYXNoX21ha2VfY3h0KHJlbW90ZUNvbm5IYXNoRW50LCBuYW1lLAorCQkJCQkJICJSZW1vdGUg Q29uIGhhc2giLCBOVU1DT05OLAorCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogfQogCiBzdGF0 aWMgcmVtb3RlQ29ubiAqCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9w Z19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRf c3RhdGVtZW50cy5jCmluZGV4IDRhNDI3NTMzYmQ4Li44YTY3MzkwZTU2MSAxMDA2NDQKLS0tIGEv Y29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTUxNyw3ICs1 MTcsNiBAQCBzdGF0aWMgdm9pZAogcGdzc19zaG1lbV9zdGFydHVwKHZvaWQpCiB7CiAJYm9vbAkJ Zm91bmQ7Ci0JSEFTSENUTAkJaW5mbzsKIAlGSUxFCSAgICpmaWxlID0gTlVMTDsKIAlGSUxFCSAg ICpxZmlsZSA9IE5VTEw7CiAJdWludDMyCQloZWFkZXI7CkBAIC01NTcsMTIgKzU1Niw5IEBAIHBn c3Nfc2htZW1fc3RhcnR1cCh2b2lkKQogCQlwZ3NzLT5zdGF0cy5zdGF0c19yZXNldCA9IEdldEN1 cnJlbnRUaW1lc3RhbXAoKTsKIAl9CiAKLQlpbmZvLmtleXNpemUgPSBzaXplb2YocGdzc0hhc2hL ZXkpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKHBnc3NFbnRyeSk7Ci0JcGdzc19oYXNoID0g U2htZW1Jbml0SGFzaCgicGdfc3RhdF9zdGF0ZW1lbnRzIGhhc2giLAotCQkJCQkJCSAgcGdzc19t YXgsIHBnc3NfbWF4LAotCQkJCQkJCSAgJmluZm8sCi0JCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTKTsKKwlwZ3NzX2hhc2ggPSBzaG1lbV9oYXNoX21ha2UocGdzc0VudHJ5LCBrZXksCisJ CQkJCQkJCSJwZ19zdGF0X3N0YXRlbWVudHMgaGFzaCIsCisJCQkJCQkJCXBnc3NfbWF4LCBwZ3Nz X21heCk7CiAKIAlMV0xvY2tSZWxlYXNlKEFkZGluU2htZW1Jbml0TG9jayk7CiAKZGlmZiAtLWdp dCBhL2NvbnRyaWIvcGdfdHJnbS90cmdtX3JlZ2V4cC5jIGIvY29udHJpYi9wZ190cmdtL3RyZ21f cmVnZXhwLmMKaW5kZXggMWQxYjVmZTMwNGQuLmVjZDRkNjc3OTQ4IDEwMDY0NAotLS0gYS9jb250 cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYworKysgYi9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdl eHAuYwpAQCAtODkzLDcgKzg5Myw2IEBAIGNvbnZlcnRQZ1djaGFyKHBnX3djaGFyIGMsIHRyZ21f bWJfY2hhciAqcmVzdWx0KQogc3RhdGljIHZvaWQKIHRyYW5zZm9ybUdyYXBoKFRyZ21ORkEgKnRy Z21ORkEpCiB7Ci0JSEFTSENUTAkJaGFzaEN0bDsKIAlUcmdtU3RhdGVLZXkgaW5pdGtleTsKIAlU cmdtU3RhdGUgICppbml0c3RhdGU7CiAJTGlzdENlbGwgICAqbGM7CkBAIC05MDUsMTMgKzkwNCw3 IEBAIHRyYW5zZm9ybUdyYXBoKFRyZ21ORkEgKnRyZ21ORkEpCiAJdHJnbU5GQS0+b3ZlcmZsb3dl ZCA9IGZhbHNlOwogCiAJLyogQ3JlYXRlIGhhc2h0YWJsZSBmb3Igc3RhdGVzICovCi0JaGFzaEN0 bC5rZXlzaXplID0gc2l6ZW9mKFRyZ21TdGF0ZUtleSk7Ci0JaGFzaEN0bC5lbnRyeXNpemUgPSBz aXplb2YoVHJnbVN0YXRlKTsKLQloYXNoQ3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsK LQl0cmdtTkZBLT5zdGF0ZXMgPSBoYXNoX2NyZWF0ZSgiVHJpZ3JhbSBORkEiLAotCQkJCQkJCQkg IDEwMjQsCi0JCQkJCQkJCSAgJmhhc2hDdGwsCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9C TE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJdHJnbU5GQS0+c3RhdGVzID0gaGFzaF9tYWtlKFRyZ21T dGF0ZSwgc3RhdGVLZXksICJUcmlncmFtIE5GQSIsIDEwMjQpOwogCXRyZ21ORkEtPm5zdGF0ZXMg PSAwOwogCiAJLyogQ3JlYXRlIGluaXRpYWwgc3RhdGU6IGFtYmlndW91cyBwcmVmaXgsIE5GQSdz IGluaXRpYWwgc3RhdGUgKi8KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5l Y3Rpb24uYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYwppbmRleCA0ODdhMWEy MzE3MC4uNWM3N2M5ZWNkZTUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5l Y3Rpb24uYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKQEAgLTIxNCwx NyArMjE0LDEzIEBAIEdldENvbm5lY3Rpb24oVXNlck1hcHBpbmcgKnVzZXIsIGJvb2wgd2lsbF9w cmVwX3N0bXQsIFBnRmR3Q29ublN0YXRlICoqc3RhdGUpCiAJLyogRmlyc3QgdGltZSB0aHJvdWdo LCBpbml0aWFsaXplIGNvbm5lY3Rpb24gY2FjaGUgaGFzaHRhYmxlICovCiAJaWYgKENvbm5lY3Rp b25IYXNoID09IE5VTEwpCiAJewotCQlIQVNIQ1RMCQljdGw7Ci0KIAkJaWYgKHBnZmR3X3dlX2dl dF9yZXN1bHQgPT0gMCkKIAkJCXBnZmR3X3dlX2dldF9yZXN1bHQgPQogCQkJCVdhaXRFdmVudEV4 dGVuc2lvbk5ldygiUG9zdGdyZXNGZHdHZXRSZXN1bHQiKTsKIAotCQljdGwua2V5c2l6ZSA9IHNp emVvZihDb25uQ2FjaGVLZXkpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKENvbm5DYWNoZUVu dHJ5KTsKLQkJQ29ubmVjdGlvbkhhc2ggPSBoYXNoX2NyZWF0ZSgicG9zdGdyZXNfZmR3IGNvbm5l Y3Rpb25zIiwgOCwKLQkJCQkJCQkJCSAmY3RsLAotCQkJCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hf QkxPQlMpOworCQlDb25uZWN0aW9uSGFzaCA9IGhhc2hfbWFrZV9jeHQoQ29ubkNhY2hlRW50cnks IGtleSwKKwkJCQkJCQkJCSAgICJwb3N0Z3Jlc19mZHcgY29ubmVjdGlvbnMiLCA4LAorCQkJCQkJ CQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkJLyoKIAkJICogUmVnaXN0ZXIgc29tZSBjYWxs YmFjayBmdW5jdGlvbnMgdGhhdCBtYW5hZ2UgY29ubmVjdGlvbiBjbGVhbnVwLgpkaWZmIC0tZ2l0 IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc2hpcHBhYmxlLmMgYi9jb250cmliL3Bvc3RncmVzX2Zk dy9zaGlwcGFibGUuYwppbmRleCBkMzJkM2QwZTQ2MS4uZWMxODUyNDkwZTAgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L3NoaXBwYWJsZS5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXNfZmR3 LmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgi CisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5o IgogCiAvKiBIYXNoIHRhYmxlIGZvciBjYWNoaW5nIHRoZSByZXN1bHRzIG9mIHNoaXBwYWJpbGl0 eSBsb29rdXBzICovCkBAIC05MCwxMyArOTEsMTAgQEAgSW52YWxpZGF0ZVNoaXBwYWJsZUNhY2hl Q2FsbGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHN0YXRp YyB2b2lkCiBJbml0aWFsaXplU2hpcHBhYmxlQ2FjaGUodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7 Ci0KIAkvKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUuICovCi0JY3RsLmtleXNpemUgPSBzaXplb2Yo U2hpcHBhYmxlQ2FjaGVLZXkpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoU2hpcHBhYmxlQ2Fj aGVFbnRyeSk7Ci0JU2hpcHBhYmxlQ2FjaGVIYXNoID0KLQkJaGFzaF9jcmVhdGUoIlNoaXBwYWJp bGl0eSBjYWNoZSIsIDI1NiwgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJU2hpcHBh YmxlQ2FjaGVIYXNoID0gaGFzaF9tYWtlX2N4dChTaGlwcGFibGVDYWNoZUVudHJ5LCBrZXksCisJ CQkJCQkJCQkgICAiU2hpcHBhYmlsaXR5IGNhY2hlIiwgMjU2LAorCQkJCQkJCQkJICAgVG9wTWVt b3J5Q29udGV4dCk7CiAKIAkvKiBTZXQgdXAgaW52YWxpZGF0aW9uIGNhbGxiYWNrIG9uIHBnX2Zv cmVpZ25fc2VydmVyLiAqLwogCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKEZPUkVJR05T RVJWRVJPSUQsCmRpZmYgLS1naXQgYS9jb250cmliL3RhYmxlZnVuYy90YWJsZWZ1bmMuYyBiL2Nv bnRyaWIvdGFibGVmdW5jL3RhYmxlZnVuYy5jCmluZGV4IGNhMjQzNGM2ZTE5Li40MjZmNGIyMzZh MiAxMDA2NDQKLS0tIGEvY29udHJpYi90YWJsZWZ1bmMvdGFibGVmdW5jLmMKKysrIGIvY29udHJp Yi90YWJsZWZ1bmMvdGFibGVmdW5jLmMKQEAgLTcwNSwyNCArNzA1LDE3IEBAIHN0YXRpYyBIVEFC ICoKIGxvYWRfY2F0ZWdvcmllc19oYXNoKGNoYXIgKmNhdHNfc3FsLCBNZW1vcnlDb250ZXh0IHBl cl9xdWVyeV9jdHgpCiB7CiAJSFRBQgkgICAqY3Jvc3N0YWJfaGFzaDsKLQlIQVNIQ1RMCQljdGw7 CiAJaW50CQkJcmV0OwogCXVpbnQ2NAkJcHJvYzsKIAlNZW1vcnlDb250ZXh0IFNQSWNvbnRleHQ7 CiAKLQkvKiBpbml0aWFsaXplIHRoZSBjYXRlZ29yeSBoYXNoIHRhYmxlICovCi0JY3RsLmtleXNp emUgPSBNQVhfQ0FUTkFNRV9MRU47Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihjcm9zc3RhYl9I YXNoRW50KTsKLQljdGwuaGN4dCA9IHBlcl9xdWVyeV9jdHg7Ci0KIAkvKgotCSAqIHVzZSBJTklU X0NBVFMsIGRlZmluZWQgYWJvdmUgYXMgYSBndWVzcyBvZiBob3cgbWFueSBoYXNoIHRhYmxlIGVu dHJpZXMKLQkgKiB0byBjcmVhdGUsIGluaXRpYWxseQorCSAqIEluaXRpYWxpemUgdGhlIGNhdGVn b3J5IGhhc2ggdGFibGUuIFVzZSBJTklUX0NBVFMsIGRlZmluZWQgYWJvdmUgYXMgYQorCSAqIGd1 ZXNzIG9mIGhvdyBtYW55IGhhc2ggdGFibGUgZW50cmllcyB0byBjcmVhdGUsIGluaXRpYWxseS4K IAkgKi8KLQljcm9zc3RhYl9oYXNoID0gaGFzaF9jcmVhdGUoImNyb3NzdGFiIGhhc2giLAotCQkJ CQkJCQlJTklUX0NBVFMsCi0JCQkJCQkJCSZjdGwsCi0JCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hf U1RSSU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJY3Jvc3N0YWJfaGFzaCA9IGhhc2hfbWFrZV9jeHQo Y3Jvc3N0YWJfSGFzaEVudCwgaW50ZXJuYWxfY2F0bmFtZSwKKwkJCQkJCQkJICAiY3Jvc3N0YWIg aGFzaCIsIElOSVRfQ0FUUywKKwkJCQkJCQkJICBwZXJfcXVlcnlfY3R4KTsKIAogCS8qIENvbm5l Y3QgdG8gU1BJIG1hbmFnZXIgKi8KIAlTUElfY29ubmVjdCgpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21t b24vaGVhcHR1cGxlLmMKaW5kZXggMTFiZWMyMGU4MmUuLmU2NDgwMDFmMTFiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vaGVhcHR1cGxlLmMKQEAgLTEyNSwxOCArMTI1LDkgQEAgbWlzc2luZ19t YXRjaChjb25zdCB2b2lkICprZXkxLCBjb25zdCB2b2lkICprZXkyLCBTaXplIGtleXNpemUpCiBz dGF0aWMgdm9pZAogaW5pdF9taXNzaW5nX2NhY2hlKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9j dGw7Ci0KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKG1pc3NpbmdfY2FjaGVfa2V5KTsKLQlo YXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YobWlzc2luZ19jYWNoZV9rZXkpOwotCWhhc2hfY3Rs LmhjeHQgPSBUb3BNZW1vcnlDb250ZXh0OwotCWhhc2hfY3RsLmhhc2ggPSBtaXNzaW5nX2hhc2g7 Ci0JaGFzaF9jdGwubWF0Y2ggPSBtaXNzaW5nX21hdGNoOwogCW1pc3NpbmdfY2FjaGUgPQotCQlo YXNoX2NyZWF0ZSgiTWlzc2luZyBWYWx1ZXMgQ2FjaGUiLAotCQkJCQkzMiwKLQkJCQkJJmhhc2hf Y3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0NPTlRFWFQgfCBIQVNIX0ZVTkNUSU9OIHwgSEFT SF9DT01QQVJFKTsKKwkJaGFzaHNldF9tYWtlX2ZuX2N4dChtaXNzaW5nX2NhY2hlX2tleSwgIk1p c3NpbmcgVmFsdWVzIENhY2hlIiwgMzIsCisJCQkJCQkJbWlzc2luZ19oYXNoLCBtaXNzaW5nX21h dGNoLCBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0YnVpbGQuYwppbmRleCA3ZjU3Yzc4N2Y0Yy4uMDlmMTFjNDU5ZDcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3RidWlsZC5jCkBAIC0xNTE1LDE1ICsxNTE1LDggQEAgdHlwZWRlZiBzdHJ1 Y3QKIHN0YXRpYyB2b2lkCiBnaXN0SW5pdFBhcmVudE1hcChHSVNUQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSkKIHsKLQlIQVNIQ1RMCQloYXNoQ3RsOwotCi0JaGFzaEN0bC5rZXlzaXplID0gc2l6ZW9m KEJsb2NrTnVtYmVyKTsKLQloYXNoQ3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQYXJlbnRNYXBFbnRy eSk7Ci0JaGFzaEN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JYnVpbGRzdGF0ZS0+ cGFyZW50TWFwID0gaGFzaF9jcmVhdGUoImdpc3RidWlsZCBwYXJlbnQgbWFwIiwKLQkJCQkJCQkJ CQkxMDI0LAotCQkJCQkJCQkJCSZoYXNoQ3RsLAotCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hf QkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCWJ1aWxkc3RhdGUtPnBhcmVudE1hcCA9IGhhc2hfbWFr ZShQYXJlbnRNYXBFbnRyeSwgY2hpbGRibGtubywKKwkJCQkJCQkJCSAgImdpc3RidWlsZCBwYXJl bnQgbWFwIiwgMTAyNCk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGRidWZmZXJzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0YnVpbGRidWZmZXJzLmMKaW5kZXggMzIxM2NmNDVhYTYuLjAyOWFmODU0MmY5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGRidWZmZXJzLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkYnVmZmVycy5jCkBAIC00NCw3ICs0NCw2 IEBAIEdJU1RCdWlsZEJ1ZmZlcnMgKgogZ2lzdEluaXRCdWlsZEJ1ZmZlcnMoaW50IHBhZ2VzUGVy QnVmZmVyLCBpbnQgbGV2ZWxTdGVwLCBpbnQgbWF4TGV2ZWwpCiB7CiAJR0lTVEJ1aWxkQnVmZmVy cyAqZ2ZiYjsKLQlIQVNIQ1RMCQloYXNoQ3RsOwogCiAJZ2ZiYiA9IHBhbGxvY19vYmplY3QoR0lT VEJ1aWxkQnVmZmVycyk7CiAJZ2ZiYi0+cGFnZXNQZXJCdWZmZXIgPSBwYWdlc1BlckJ1ZmZlcjsK QEAgLTcyLDEzICs3MSw4IEBAIGdpc3RJbml0QnVpbGRCdWZmZXJzKGludCBwYWdlc1BlckJ1ZmZl ciwgaW50IGxldmVsU3RlcCwgaW50IG1heExldmVsKQogCSAqIG5vZGVCdWZmZXJzVGFiIGhhc2gg aXMgYXNzb2NpYXRpb24gYmV0d2VlbiBpbmRleCBibG9ja3MgYW5kIGl0J3MKIAkgKiBidWZmZXJz LgogCSAqLwotCWhhc2hDdGwua2V5c2l6ZSA9IHNpemVvZihCbG9ja051bWJlcik7Ci0JaGFzaEN0 bC5lbnRyeXNpemUgPSBzaXplb2YoR0lTVE5vZGVCdWZmZXIpOwotCWhhc2hDdGwuaGN4dCA9IEN1 cnJlbnRNZW1vcnlDb250ZXh0OwotCWdmYmItPm5vZGVCdWZmZXJzVGFiID0gaGFzaF9jcmVhdGUo Imdpc3RidWlsZGJ1ZmZlcnMiLAotCQkJCQkJCQkJICAgMTAyNCwKLQkJCQkJCQkJCSAgICZoYXNo Q3RsLAotCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7 CisJZ2ZiYi0+bm9kZUJ1ZmZlcnNUYWIgPSBoYXNoX21ha2UoR0lTVE5vZGVCdWZmZXIsIG5vZGVC bG9ja251bSwKKwkJCQkJCQkJCSAiZ2lzdGJ1aWxkYnVmZmVycyIsIDEwMjQpOwogCiAJZ2ZiYi0+ YnVmZmVyRW1wdHlpbmdRdWV1ZSA9IE5JTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaHBhZ2UuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMK aW5kZXggOGUyMjBhM2FlMTYuLjk5ZWIyOTFlODMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGFzaC9oYXNocGFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hw YWdlLmMKQEAgLTEzNTYsNyArMTM1Niw2IEBAIHZvaWQKIF9oYXNoX2ZpbmlzaF9zcGxpdChSZWxh dGlvbiByZWwsIEJ1ZmZlciBtZXRhYnVmLCBCdWZmZXIgb2J1ZiwgQnVja2V0IG9idWNrZXQsCiAJ CQkJICAgdWludDMyIG1heGJ1Y2tldCwgdWludDMyIGhpZ2htYXNrLCB1aW50MzIgbG93bWFzaykK IHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAlIVEFCCSAgICp0aWRodGFiOwogCUJ1ZmZlcgkJYnVj a2V0X25idWYgPSBJbnZhbGlkQnVmZmVyOwogCUJ1ZmZlcgkJbmJ1ZjsKQEAgLTEzNjcsMTYgKzEz NjYsOCBAQCBfaGFzaF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbWV0YWJ1Ziwg QnVmZmVyIG9idWYsIEJ1Y2tldCBvYnVja2V0LAogCUJ1Y2tldAkJbmJ1Y2tldDsKIAlib29sCQlm b3VuZDsKIAotCS8qIEluaXRpYWxpemUgaGFzaCB0YWJsZXMgdXNlZCB0byB0cmFjayBUSURzICov Ci0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihJdGVtUG9pbnRlckRhdGEpOwotCWhhc2hfY3Rs LmVudHJ5c2l6ZSA9IHNpemVvZihJdGVtUG9pbnRlckRhdGEpOwotCWhhc2hfY3RsLmhjeHQgPSBD dXJyZW50TWVtb3J5Q29udGV4dDsKLQotCXRpZGh0YWIgPQotCQloYXNoX2NyZWF0ZSgiYnVja2V0 IGN0aWRzIiwKLQkJCQkJMjU2LAkJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSAqLwotCQkJCQkm aGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOwor CS8qIEluaXRpYWxpemUgaGFzaCB0YWJsZXMgdXNlZCB0byB0cmFjayBUSURzICh3aXRoIGFyYml0 cmFyeSBpbml0aWFsIHNpemUpICovCisJdGlkaHRhYiA9IGhhc2hzZXRfbWFrZShJdGVtUG9pbnRl ckRhdGEsICJidWNrZXQgY3RpZHMiLCAyNTYpOwogCiAJYnVja2V0X25ibGtubyA9IG5ibGtubyA9 IF9oYXNoX2dldF9uZXdibG9ja19mcm9tX29sZGJ1Y2tldChyZWwsIG9idWNrZXQpOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYwppbmRleCA3N2ZkNDhlYjU5ZS4uZmJlNGQ2ZTZl OTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYwpAQCAtMjM3LDcgKzIzNyw2 IEBAIGJlZ2luX2hlYXBfcmV3cml0ZShSZWxhdGlvbiBvbGRfaGVhcCwgUmVsYXRpb24gbmV3X2hl YXAsIFRyYW5zYWN0aW9uSWQgb2xkZXN0X3htCiAJUmV3cml0ZVN0YXRlIHN0YXRlOwogCU1lbW9y eUNvbnRleHQgcndfY3h0OwogCU1lbW9yeUNvbnRleHQgb2xkX2N4dDsKLQlIQVNIQ1RMCQloYXNo X2N0bDsKIAogCS8qCiAJICogVG8gZWFzZSBjbGVhbnVwLCBtYWtlIGEgc2VwYXJhdGUgY29udGV4 dCB0aGF0IHdpbGwgY29udGFpbiB0aGUKQEAgLTI2MiwyNCArMjYxLDE5IEBAIGJlZ2luX2hlYXBf cmV3cml0ZShSZWxhdGlvbiBvbGRfaGVhcCwgUmVsYXRpb24gbmV3X2hlYXAsIFRyYW5zYWN0aW9u SWQgb2xkZXN0X3htCiAJc3RhdGUtPnJzX2N4dCA9IHJ3X2N4dDsKIAlzdGF0ZS0+cnNfYnVsa3N0 YXRlID0gc21ncl9idWxrX3N0YXJ0X3JlbChuZXdfaGVhcCwgTUFJTl9GT1JLTlVNKTsKIAotCS8q IEluaXRpYWxpemUgaGFzaCB0YWJsZXMgdXNlZCB0byB0cmFjayB1cGRhdGUgY2hhaW5zICovCi0J aGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihUaWRIYXNoS2V5KTsKLQloYXNoX2N0bC5lbnRyeXNp emUgPSBzaXplb2YoVW5yZXNvbHZlZFR1cERhdGEpOwotCWhhc2hfY3RsLmhjeHQgPSBzdGF0ZS0+ cnNfY3h0OwotCisJLyoKKwkgKiBJbml0aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sg dXBkYXRlIGNoYWlucyAod2l0aCBhcmJpdHJhcnkKKwkgKiBpbml0aWFsIHNpemVzKQorCSAqLwog CXN0YXRlLT5yc191bnJlc29sdmVkX3R1cHMgPQotCQloYXNoX2NyZWF0ZSgiUmV3cml0ZSAvIFVu cmVzb2x2ZWQgY3RpZHMiLAotCQkJCQkxMjgsCQkvKiBhcmJpdHJhcnkgaW5pdGlhbCBzaXplICov Ci0JCQkJCSZoYXNoX2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09O VEVYVCk7Ci0KLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoT2xkVG9OZXdNYXBwaW5nRGF0 YSk7CisJCWhhc2hfbWFrZV9jeHQoVW5yZXNvbHZlZFR1cERhdGEsIGtleSwKKwkJCQkJICAiUmV3 cml0ZSAvIFVucmVzb2x2ZWQgY3RpZHMiLCAxMjgsCisJCQkJCSAgc3RhdGUtPnJzX2N4dCk7CiAK IAlzdGF0ZS0+cnNfb2xkX25ld190aWRfbWFwID0KLQkJaGFzaF9jcmVhdGUoIlJld3JpdGUgLyBP bGQgdG8gbmV3IHRpZCBtYXAiLAotCQkJCQkxMjgsCQkvKiBhcmJpdHJhcnkgaW5pdGlhbCBzaXpl ICovCi0JCQkJCSZoYXNoX2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hf Q09OVEVYVCk7CisJCWhhc2hfbWFrZV9jeHQoT2xkVG9OZXdNYXBwaW5nRGF0YSwga2V5LAorCQkJ CQkgICJSZXdyaXRlIC8gT2xkIHRvIG5ldyB0aWQgbWFwIiwgMTI4LAorCQkJCQkgIHN0YXRlLT5y c19jeHQpOwogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZF9jeHQpOwogCkBAIC03NjAsNyAr NzU0LDYgQEAgcmF3X2hlYXBfaW5zZXJ0KFJld3JpdGVTdGF0ZSBzdGF0ZSwgSGVhcFR1cGxlIHR1 cCkKIHN0YXRpYyB2b2lkCiBsb2dpY2FsX2JlZ2luX2hlYXBfcmV3cml0ZShSZXdyaXRlU3RhdGUg c3RhdGUpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJVHJhbnNhY3Rpb25JZCBsb2dpY2FsX3ht aW47CiAKIAkvKgpAQCAtNzkxLDE1ICs3ODQsMTEgQEAgbG9naWNhbF9iZWdpbl9oZWFwX3Jld3Jp dGUoUmV3cml0ZVN0YXRlIHN0YXRlKQogCXN0YXRlLT5yc19iZWdpbl9sc24gPSBHZXRYTG9nSW5z ZXJ0UmVjUHRyKCk7CiAJc3RhdGUtPnJzX251bV9yZXdyaXRlX21hcHBpbmdzID0gMDsKIAotCWhh c2hfY3RsLmtleXNpemUgPSBzaXplb2YoVHJhbnNhY3Rpb25JZCk7Ci0JaGFzaF9jdGwuZW50cnlz aXplID0gc2l6ZW9mKFJld3JpdGVNYXBwaW5nRmlsZSk7Ci0JaGFzaF9jdGwuaGN4dCA9IHN0YXRl LT5yc19jeHQ7Ci0KIAlzdGF0ZS0+cnNfbG9naWNhbF9tYXBwaW5ncyA9Ci0JCWhhc2hfY3JlYXRl KCJMb2dpY2FsIHJld3JpdGUgbWFwcGluZyIsCi0JCQkJCTEyOCwJCS8qIGFyYml0cmFyeSBpbml0 aWFsIHNpemUgKi8KLQkJCQkJJmhhc2hfY3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JT IHwgSEFTSF9DT05URVhUKTsKKwkJaGFzaF9tYWtlX2N4dChSZXdyaXRlTWFwcGluZ0ZpbGUsIHhp ZCwKKwkJCQkJICAiTG9naWNhbCByZXdyaXRlIG1hcHBpbmciLAorCQkJCQkgIDEyOCwJCS8qIGFy Yml0cmFyeSBpbml0aWFsIHNpemUgKi8KKwkJCQkJICBzdGF0ZS0+cnNfY3h0KTsKIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dwcmVmZXRjaGVyLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJlZmV0Y2hlci5jCmluZGV4IDNjM2Yw NjdhYWZiLi4wMmU0MTc4MGRkOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZ3ByZWZldGNoZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n cHJlZmV0Y2hlci5jCkBAIC0zNjIsMTUgKzM2MiwxMyBAQCBYTG9nUHJlZmV0Y2hlciAqCiBYTG9n UHJlZmV0Y2hlckFsbG9jYXRlKFhMb2dSZWFkZXJTdGF0ZSAqcmVhZGVyKQogewogCVhMb2dQcmVm ZXRjaGVyICpwcmVmZXRjaGVyOwotCUhBU0hDVEwJCWN0bDsKIAogCXByZWZldGNoZXIgPSBwYWxs b2MwX29iamVjdChYTG9nUHJlZmV0Y2hlcik7CiAJcHJlZmV0Y2hlci0+cmVhZGVyID0gcmVhZGVy OwogCi0JY3RsLmtleXNpemUgPSBzaXplb2YoUmVsRmlsZUxvY2F0b3IpOwotCWN0bC5lbnRyeXNp emUgPSBzaXplb2YoWExvZ1ByZWZldGNoZXJGaWx0ZXIpOwotCXByZWZldGNoZXItPmZpbHRlcl90 YWJsZSA9IGhhc2hfY3JlYXRlKCJYTG9nUHJlZmV0Y2hlckZpbHRlclRhYmxlIiwgMTAyNCwKLQkJ CQkJCQkJCQkgICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlwcmVmZXRjaGVyLT5m aWx0ZXJfdGFibGUgPSBoYXNoX21ha2VfY3h0KFhMb2dQcmVmZXRjaGVyRmlsdGVyLCBybG9jYXRv ciwKKwkJCQkJCQkJCQkJICJYTG9nUHJlZmV0Y2hlckZpbHRlclRhYmxlIiwgMTAyNCwKKwkJCQkJ CQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCWRsaXN0X2luaXQoJnByZWZldGNoZXItPmZpbHRl cl9xdWV1ZSk7CiAKIAlTaGFyZWRTdGF0cy0+d2FsX2Rpc3RhbmNlID0gMDsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKaW5kZXggNWZiZTM5MTMzYjguLmQxMWU0MmM5NDkwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYwpAQCAtMjcsNiArMjcsNyBAQAog I2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNs dWRlICJ1dGlscy9oc2VhcmNoLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNs dWRlICJ1dGlscy9yZWwuaCIKIAogCkBAIC0xMzEsMTUgKzEzMiw5IEBAIGxvZ19pbnZhbGlkX3Bh Z2UoUmVsRmlsZUxvY2F0b3IgbG9jYXRvciwgRm9ya051bWJlciBmb3Jrbm8sIEJsb2NrTnVtYmVy IGJsa25vLAogCWlmIChpbnZhbGlkX3BhZ2VfdGFiID09IE5VTEwpCiAJewogCQkvKiBjcmVhdGUg aGFzaCB0YWJsZSB3aGVuIGZpcnN0IG5lZWRlZCAqLwotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3Rs LmtleXNpemUgPSBzaXplb2YoeGxfaW52YWxpZF9wYWdlX2tleSk7Ci0JCWN0bC5lbnRyeXNpemUg PSBzaXplb2YoeGxfaW52YWxpZF9wYWdlKTsKLQotCQlpbnZhbGlkX3BhZ2VfdGFiID0gaGFzaF9j cmVhdGUoIlhMT0cgaW52YWxpZC1wYWdlIHRhYmxlIiwKLQkJCQkJCQkJCSAgIDEwMCwKLQkJCQkJ CQkJCSAgICZjdGwsCi0JCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJaW52 YWxpZF9wYWdlX3RhYiA9IGhhc2hfbWFrZV9jeHQoeGxfaW52YWxpZF9wYWdlLCBrZXksCisJCQkJ CQkJCQkJICJYTE9HIGludmFsaWQtcGFnZSB0YWJsZSIsIDEwMCwKKwkJCQkJCQkJCQkgVG9wTWVt b3J5Q29udGV4dCk7CiAJfQogCiAJLyogd2UgY3VycmVudGx5IGFzc3VtZSB4bF9pbnZhbGlkX3Bh Z2Vfa2V5IGNvbnRhaW5zIG5vIHBhZGRpbmcgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfZW51bS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVtLmMKaW5kZXggMzNh NDYxNDg0ZDQuLjg2YzhiYWRhNTU3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X2VudW0uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2VudW0uYwpAQCAtMjY3LDE1ICsy NjcsOSBAQCBFbnVtVmFsdWVzRGVsZXRlKE9pZCBlbnVtVHlwZU9pZCkKIHN0YXRpYyB2b2lkCiBp bml0X3VuY29tbWl0dGVkX2VudW1fdHlwZXModm9pZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsK LQotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQloYXNoX2N0bC5lbnRyeXNpemUg PSBzaXplb2YoT2lkKTsKLQloYXNoX2N0bC5oY3h0ID0gVG9wVHJhbnNhY3Rpb25Db250ZXh0Owot CXVuY29tbWl0dGVkX2VudW1fdHlwZXMgPSBoYXNoX2NyZWF0ZSgiVW5jb21taXR0ZWQgZW51bSB0 eXBlcyIsCi0JCQkJCQkJCQkJIDMyLAotCQkJCQkJCQkJCSAmaGFzaF9jdGwsCi0JCQkJCQkJCQkJ IEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCXVuY29tbWl0dGVkX2Vu dW1fdHlwZXMgPSBoYXNoc2V0X21ha2VfY3h0KE9pZCwKKwkJCQkJCQkJCQkJICAiVW5jb21taXR0 ZWQgZW51bSB0eXBlcyIsIDMyLAorCQkJCQkJCQkJCQkgIFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7 CiB9CiAKIC8qCkBAIC0yODQsMTUgKzI3OCw5IEBAIGluaXRfdW5jb21taXR0ZWRfZW51bV90eXBl cyh2b2lkKQogc3RhdGljIHZvaWQKIGluaXRfdW5jb21taXR0ZWRfZW51bV92YWx1ZXModm9pZCkK IHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKLQotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lk KTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoT2lkKTsKLQloYXNoX2N0bC5oY3h0ID0g VG9wVHJhbnNhY3Rpb25Db250ZXh0OwotCXVuY29tbWl0dGVkX2VudW1fdmFsdWVzID0gaGFzaF9j cmVhdGUoIlVuY29tbWl0dGVkIGVudW0gdmFsdWVzIiwKLQkJCQkJCQkJCQkgIDMyLAotCQkJCQkJ CQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhB U0hfQ09OVEVYVCk7CisJdW5jb21taXR0ZWRfZW51bV92YWx1ZXMgPSBoYXNoc2V0X21ha2VfY3h0 KE9pZCwKKwkJCQkJCQkJCQkJICAgIlVuY29tbWl0dGVkIGVudW0gdmFsdWVzIiwgMzIsCisJCQkJ CQkJCQkJCSAgIFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX2luaGVyaXRzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X2luaGVyaXRzLmMKaW5kZXggY2VmODA2MzMxNTcuLjUzNzc2OWIzOWFlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX2luaGVyaXRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19pbmhlcml0cy5jCkBAIC0yNTYsMTkgKzI1NiwxMiBAQCBmaW5kX2FsbF9pbmhlcml0b3Jz KE9pZCBwYXJlbnRyZWxJZCwgTE9DS01PREUgbG9ja21vZGUsIExpc3QgKipudW1wYXJlbnRzKQog ewogCS8qIGhhc2ggdGFibGUgZm9yIE8oMSkgcmVsX29pZCAtPiByZWxfbnVtcGFyZW50cyBjZWxs IGxvb2t1cCAqLwogCUhUQUIJICAgKnNlZW5fcmVsczsKLQlIQVNIQ1RMCQljdGw7CiAJTGlzdAkg ICAqcmVsc19saXN0LAogCQkJICAgKnJlbF9udW1wYXJlbnRzOwogCUxpc3RDZWxsICAgKmw7CiAK LQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoU2Vl blJlbHNFbnRyeSk7Ci0JY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQotCXNlZW5f cmVscyA9IGhhc2hfY3JlYXRlKCJmaW5kX2FsbF9pbmhlcml0b3JzIHRlbXBvcmFyeSB0YWJsZSIs Ci0JCQkJCQkJMzIsIC8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8KLQkJCQkJCQkmY3RsLAot CQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCXNlZW5fcmVs cyA9IGhhc2hfbWFrZShTZWVuUmVsc0VudHJ5LCByZWxfaWQsCisJCQkJCQkgICJmaW5kX2FsbF9p bmhlcml0b3JzIHRlbXBvcmFyeSB0YWJsZSIsIDMyKTsKIAogCS8qCiAJICogV2UgYnVpbGQgYSBs aXN0IHN0YXJ0aW5nIHdpdGggdGhlIGdpdmVuIHJlbCBhbmQgYWRkaW5nIGFsbCBkaXJlY3QgYW5k CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N0b3JhZ2UuYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3RvcmFnZS5jCmluZGV4IGU0NDNhNDk5M2M1Li5kYjNlMDgzMTliNSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9zdG9yYWdlLmMKQEAgLTkwLDE1ICs5MCw5IEBAIEFkZFBlbmRpbmdTeW5jKGNvbnN0IFJl bEZpbGVMb2NhdG9yICpybG9jYXRvcikKIAogCS8qIGNyZWF0ZSB0aGUgaGFzaCBpZiBub3QgeWV0 ICovCiAJaWYgKCFwZW5kaW5nU3luY0hhc2gpCi0JewotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3Rs LmtleXNpemUgPSBzaXplb2YoUmVsRmlsZUxvY2F0b3IpOwotCQljdGwuZW50cnlzaXplID0gc2l6 ZW9mKFBlbmRpbmdSZWxTeW5jKTsKLQkJY3RsLmhjeHQgPSBUb3BUcmFuc2FjdGlvbkNvbnRleHQ7 Ci0JCXBlbmRpbmdTeW5jSGFzaCA9IGhhc2hfY3JlYXRlKCJwZW5kaW5nIHN5bmMgaGFzaCIsIDE2 LCAmY3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhU KTsKLQl9CisJCXBlbmRpbmdTeW5jSGFzaCA9IGhhc2hfbWFrZV9jeHQoUGVuZGluZ1JlbFN5bmMs IHJsb2NhdG9yLAorCQkJCQkJCQkJCSJwZW5kaW5nIHN5bmMgaGFzaCIsIDE2LAorCQkJCQkJCQkJ CVRvcFRyYW5zYWN0aW9uQ29udGV4dCk7CiAKIAlwZW5kaW5nID0gaGFzaF9zZWFyY2gocGVuZGlu Z1N5bmNIYXNoLCBybG9jYXRvciwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKIAlBc3NlcnQoIWZvdW5k KTsKQEAgLTYwMCw3ICs1OTQsNiBAQCB2b2lkCiBTZXJpYWxpemVQZW5kaW5nU3luY3MoU2l6ZSBt YXhTaXplLCBjaGFyICpzdGFydEFkZHJlc3MpCiB7CiAJSFRBQgkgICAqdG1waGFzaDsKLQlIQVNI Q1RMCQljdGw7CiAJSEFTSF9TRVFfU1RBVFVTIHNjYW47CiAJUGVuZGluZ1JlbFN5bmMgKnN5bmM7 CiAJUGVuZGluZ1JlbERlbGV0ZSAqZGVsZXRlOwpAQCAtNjExLDEyICs2MDQsOCBAQCBTZXJpYWxp emVQZW5kaW5nU3luY3MoU2l6ZSBtYXhTaXplLCBjaGFyICpzdGFydEFkZHJlc3MpCiAJCWdvdG8g dGVybWluYXRlOwogCiAJLyogQ3JlYXRlIHRlbXBvcmFyeSBoYXNoIHRvIGNvbGxlY3QgYWN0aXZl IHJlbGZpbGVsb2NhdG9ycyAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKFJlbEZpbGVMb2NhdG9y KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKTsKLQljdGwuaGN4dCA9 IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCXRtcGhhc2ggPSBoYXNoX2NyZWF0ZSgidG1wIHJlbGZp bGVsb2NhdG9ycyIsCi0JCQkJCQkgIGhhc2hfZ2V0X251bV9lbnRyaWVzKHBlbmRpbmdTeW5jSGFz aCksICZjdGwsCi0JCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQp OworCXRtcGhhc2ggPSBoYXNoc2V0X21ha2UoUmVsRmlsZUxvY2F0b3IsICJ0bXAgcmVsZmlsZWxv Y2F0b3JzIiwKKwkJCQkJCSAgIGhhc2hfZ2V0X251bV9lbnRyaWVzKHBlbmRpbmdTeW5jSGFzaCkp OwogCiAJLyogY29sbGVjdCBhbGwgcmxvY2F0b3IgZnJvbSBwZW5kaW5nIHN5bmNzICovCiAJaGFz aF9zZXFfaW5pdCgmc2NhbiwgcGVuZGluZ1N5bmNIYXNoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2FzeW5jLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCmluZGV4 IDY1N2M1OTE2MThkLi4wYTFlN2M3MDljOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvYXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCkBAIC03MjYsMjEg KzcyNiwxNSBAQCBpbml0R2xvYmFsQ2hhbm5lbFRhYmxlKHZvaWQpCiBzdGF0aWMgdm9pZAogaW5p dExvY2FsQ2hhbm5lbFRhYmxlKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KIAkvKiBR dWljayBleGl0IGlmIHdlIGFscmVhZHkgZGlkIHRoaXMgKi8KIAlpZiAobG9jYWxDaGFubmVsVGFi bGUgIT0gTlVMTCkKIAkJcmV0dXJuOwogCiAJLyogSW5pdGlhbGl6ZSBsb2NhbCBoYXNoIHRhYmxl IGZvciB0aGlzIGJhY2tlbmQncyBsaXN0ZW5lZCBjaGFubmVscyAqLwotCWhhc2hfY3RsLmtleXNp emUgPSBOQU1FREFUQUxFTjsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoQ2hhbm5lbE5h bWUpOwotCiAJbG9jYWxDaGFubmVsVGFibGUgPQotCQloYXNoX2NyZWF0ZSgiTG9jYWwgTGlzdGVu IENoYW5uZWxzIiwKLQkJCQkJNjQsCi0JCQkJCSZoYXNoX2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwg SEFTSF9TVFJJTkdTKTsKKwkJaGFzaF9tYWtlX2N4dChDaGFubmVsTmFtZSwgY2hhbm5lbCwgIkxv Y2FsIExpc3RlbiBDaGFubmVscyIsCisJCQkJCSAgNjQsCisJCQkJCSAgVG9wTWVtb3J5Q29udGV4 dCk7CiB9CiAKIC8qCkBAIC03NTIsMjAgKzc0NiwxMyBAQCBpbml0TG9jYWxDaGFubmVsVGFibGUo dm9pZCkKIHN0YXRpYyB2b2lkCiBpbml0UGVuZGluZ0xpc3RlbkFjdGlvbnModm9pZCkKIHsKLQlI QVNIQ1RMCQloYXNoX2N0bDsKLQogCWlmIChwZW5kaW5nTGlzdGVuQWN0aW9ucyAhPSBOVUxMKQog CQlyZXR1cm47CiAKLQloYXNoX2N0bC5rZXlzaXplID0gTkFNRURBVEFMRU47Ci0JaGFzaF9jdGwu ZW50cnlzaXplID0gc2l6ZW9mKFBlbmRpbmdMaXN0ZW5FbnRyeSk7Ci0JaGFzaF9jdGwuaGN4dCA9 IEN1clRyYW5zYWN0aW9uQ29udGV4dDsKLQogCXBlbmRpbmdMaXN0ZW5BY3Rpb25zID0KLQkJaGFz aF9jcmVhdGUoIlBlbmRpbmcgTGlzdGVuIEFjdGlvbnMiLAotCQkJCQlsaXN0X2xlbmd0aChwZW5k aW5nQWN0aW9ucy0+YWN0aW9ucyksCi0JCQkJCSZoYXNoX2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwg SEFTSF9TVFJJTkdTIHwgSEFTSF9DT05URVhUKTsKKwkJaGFzaF9tYWtlX2N4dChQZW5kaW5nTGlz dGVuRW50cnksIGNoYW5uZWwsICJQZW5kaW5nIExpc3RlbiBBY3Rpb25zIiwKKwkJCQkJICBsaXN0 X2xlbmd0aChwZW5kaW5nQWN0aW9ucy0+YWN0aW9ucyksCisJCQkJCSAgQ3VyVHJhbnNhY3Rpb25D b250ZXh0KTsKIH0KIAogLyoKQEAgLTMxNjIsMzEgKzMxNDksMjEgQEAgQWRkRXZlbnRUb1BlbmRp bmdOb3RpZmllcyhOb3RpZmljYXRpb24gKm4pCiAJaWYgKGxpc3RfbGVuZ3RoKHBlbmRpbmdOb3Rp Zmllcy0+ZXZlbnRzKSA+PSBNSU5fSEFTSEFCTEVfTk9USUZJRVMgJiYKIAkJcGVuZGluZ05vdGlm aWVzLT5oYXNodGFiID09IE5VTEwpCiAJewotCQlIQVNIQ1RMCQloYXNoX2N0bDsKIAkJTGlzdENl bGwgICAqbDsKIAogCQkvKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgKi8KLQkJaGFzaF9jdGwua2V5 c2l6ZSA9IHNpemVvZihOb3RpZmljYXRpb24gKik7Ci0JCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNp emVvZihzdHJ1Y3QgTm90aWZpY2F0aW9uSGFzaCk7Ci0JCWhhc2hfY3RsLmhhc2ggPSBub3RpZmlj YXRpb25faGFzaDsKLQkJaGFzaF9jdGwubWF0Y2ggPSBub3RpZmljYXRpb25fbWF0Y2g7Ci0JCWhh c2hfY3RsLmhjeHQgPSBDdXJUcmFuc2FjdGlvbkNvbnRleHQ7CiAJCXBlbmRpbmdOb3RpZmllcy0+ aGFzaHRhYiA9Ci0JCQloYXNoX2NyZWF0ZSgiUGVuZGluZyBOb3RpZmllcyIsCi0JCQkJCQkyNTZM LAotCQkJCQkJJmhhc2hfY3RsLAotCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhB U0hfQ09NUEFSRSB8IEhBU0hfQ09OVEVYVCk7CisJCQloYXNoX21ha2VfZm5fY3h0KHN0cnVjdCBO b3RpZmljYXRpb25IYXNoLCBldmVudCwKKwkJCQkJCQkgIlBlbmRpbmcgTm90aWZpZXMiLCAyNTYs CisJCQkJCQkJIG5vdGlmaWNhdGlvbl9oYXNoLCBub3RpZmljYXRpb25fbWF0Y2gsCisJCQkJCQkJ IEN1clRyYW5zYWN0aW9uQ29udGV4dCk7CiAKIAkJLyogQ3JlYXRlIHRoZSB1bmlxdWUgY2hhbm5l bCBuYW1lIHRhYmxlICovCiAJCUFzc2VydChwZW5kaW5nTm90aWZpZXMtPnVuaXF1ZUNoYW5uZWxI YXNoID09IE5VTEwpOwotCQloYXNoX2N0bC5rZXlzaXplID0gTkFNRURBVEFMRU47Ci0JCWhhc2hf Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihDaGFubmVsTmFtZSk7Ci0JCWhhc2hfY3RsLmhjeHQgPSBD dXJUcmFuc2FjdGlvbkNvbnRleHQ7CiAJCXBlbmRpbmdOb3RpZmllcy0+dW5pcXVlQ2hhbm5lbEhh c2ggPQotCQkJaGFzaF9jcmVhdGUoIlBlbmRpbmcgTm90aWZ5IENoYW5uZWwgTmFtZXMiLAotCQkJ CQkJNjRMLAotCQkJCQkJJmhhc2hfY3RsLAotCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdT IHwgSEFTSF9DT05URVhUKTsKKwkJCWhhc2hfbWFrZV9jeHQoQ2hhbm5lbE5hbWUsIGNoYW5uZWws ICJQZW5kaW5nIE5vdGlmeSBDaGFubmVsIE5hbWVzIiwKKwkJCQkJCSAgNjRMLAorCQkJCQkJICBD dXJUcmFuc2FjdGlvbkNvbnRleHQpOwogCiAJCS8qIEluc2VydCBhbGwgdGhlIGFscmVhZHktZXhp c3RpbmcgZXZlbnRzICovCiAJCWZvcmVhY2gobCwgcGVuZGluZ05vdGlmaWVzLT5ldmVudHMpCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9wcmVwYXJlLmMKaW5kZXggNWI4NmE3Mjc1ODcuLmViMWE3ZWNmZWJjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHJlcGFyZS5jCkBAIC0zNzEsMTUgKzM3MSw5IEBAIEV2YWx1YXRlUGFyYW1zKFBhcnNl U3RhdGUgKnBzdGF0ZSwgUHJlcGFyZWRTdGF0ZW1lbnQgKnBzdG10LCBMaXN0ICpwYXJhbXMsCiBz dGF0aWMgdm9pZAogSW5pdFF1ZXJ5SGFzaFRhYmxlKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9j dGw7Ci0KLQloYXNoX2N0bC5rZXlzaXplID0gTkFNRURBVEFMRU47Ci0JaGFzaF9jdGwuZW50cnlz aXplID0gc2l6ZW9mKFByZXBhcmVkU3RhdGVtZW50KTsKLQotCXByZXBhcmVkX3F1ZXJpZXMgPSBo YXNoX2NyZWF0ZSgiUHJlcGFyZWQgUXVlcmllcyIsCi0JCQkJCQkJCSAgIDMyLAotCQkJCQkJCQkg ICAmaGFzaF9jdGwsCi0JCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJcHJl cGFyZWRfcXVlcmllcyA9IGhhc2hfbWFrZV9jeHQoUHJlcGFyZWRTdGF0ZW1lbnQsIHN0bXRfbmFt ZSwKKwkJCQkJCQkJCSAiUHJlcGFyZWQgUXVlcmllcyIsIDMyLAorCQkJCQkJCQkJIFRvcE1lbW9y eUNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vx dWVuY2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKaW5kZXggZTFiODA4YmJi NjAuLjVhMjY4M2MwNzM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5j ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTExMTMsMTMgKzEx MTMsOSBAQCBsb2NrX2FuZF9vcGVuX3NlcXVlbmNlKFNlcVRhYmxlIHNlcSkKIHN0YXRpYyB2b2lk CiBjcmVhdGVfc2VxX2hhc2h0YWJsZSh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQotCWN0bC5r ZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihTZXFUYWJsZURh dGEpOwotCi0Jc2VxaGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJTZXF1ZW5jZSB2YWx1ZXMiLCAxNiwg JmN0bCwKLQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJc2VxaGFzaHRhYiA9IGhh c2hfbWFrZV9jeHQoU2VxVGFibGVEYXRhLCByZWxpZCwKKwkJCQkJCQkgICAiU2VxdWVuY2UgdmFs dWVzIiwgMTYsCisJCQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jCmluZGV4IGY5NzZjMGU1YzdlLi40MGEzOTk4OWVhYSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMKQEAgLTIxNjAsMTkgKzIxNjAsOSBAQCBFeGVjdXRlVHJ1bmNhdGVH dXRzKExpc3QgKmV4cGxpY2l0X3JlbHMsCiAKIAkJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgaW5p dGlhbGl6ZSBoYXNodGFibGUgZm9yIGZvcmVpZ24gdGFibGVzICovCiAJCQlpZiAoIWZ0X2h0YWIp Ci0JCQl7Ci0JCQkJSEFTSENUTAkJaGN0bDsKLQotCQkJCW1lbXNldCgmaGN0bCwgMCwgc2l6ZW9m KEhBU0hDVEwpKTsKLQkJCQloY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJCQloY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihGb3JlaWduVHJ1bmNhdGVJbmZvKTsKLQkJCQloY3RsLmhjeHQgPSBD dXJyZW50TWVtb3J5Q29udGV4dDsKLQotCQkJCWZ0X2h0YWIgPSBoYXNoX2NyZWF0ZSgiVFJVTkNB VEUgZm9yIEZvcmVpZ24gVGFibGVzIiwKLQkJCQkJCQkJCSAgMzIsCS8qIHN0YXJ0IHNtYWxsIGFu ZCBleHRlbmQgKi8KLQkJCQkJCQkJCSAgJmhjdGwsCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhB U0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOwotCQkJfQorCQkJCWZ0X2h0YWIgPSBoYXNoX21ha2Uo Rm9yZWlnblRydW5jYXRlSW5mbywgc2VydmVyaWQsCisJCQkJCQkJCQkiVFJVTkNBVEUgZm9yIEZv cmVpZ24gVGFibGVzIiwKKwkJCQkJCQkJCTMyKTsJLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAq LwogCiAJCQkvKiBGaW5kIG9yIGNyZWF0ZSBjYWNoZWQgZW50cnkgZm9yIHRoZSBmb3JlaWduIHRh YmxlICovCiAJCQlmdF9pbmZvID0gaGFzaF9zZWFyY2goZnRfaHRhYiwgJnNlcnZlcmlkLCBIQVNI X0VOVEVSLCAmZm91bmQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1v ZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRl eCBmNWU5ZDM2OTk0MC4uNzljNDcwZTc5N2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2Rp ZnlUYWJsZS5jCkBAIC01MTM5LDE1ICs1MTM5LDkgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2Rp ZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAjZW5kaWYKIAlpZiAo bnJlbHMgPj0gTVRfTlJFTFNfSEFTSCkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhh c2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6 ZW9mKE1UVGFyZ2V0UmVsTG9va3VwKTsKLQkJaGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlD b250ZXh0OwogCQltdHN0YXRlLT5tdF9yZXN1bHRPaWRIYXNoID0KLQkJCWhhc2hfY3JlYXRlKCJN b2RpZnlUYWJsZSB0YXJnZXQgaGFzaCIsCi0JCQkJCQlucmVscywgJmhhc2hfY3RsLAotCQkJCQkJ SEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJCQloYXNoX21ha2UoTVRU YXJnZXRSZWxMb29rdXAsIHJlbGF0aW9uT2lkLAorCQkJCQkgICJNb2RpZnlUYWJsZSB0YXJnZXQg aGFzaCIsIG5yZWxzKTsKIAkJZm9yIChpID0gMDsgaSA8IG5yZWxzOyBpKyspCiAJCXsKIAkJCU9p ZAkJCWhhc2hrZXk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9leHRlbnNpYmxlLmMg Yi9zcmMvYmFja2VuZC9ub2Rlcy9leHRlbnNpYmxlLmMKaW5kZXggMGQ0M2Q2NmMxY2QuLmJmMGI5 NGQzYzcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9leHRlbnNpYmxlLmMKKysrIGIv c3JjL2JhY2tlbmQvbm9kZXMvZXh0ZW5zaWJsZS5jCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNs dWRlICJub2Rlcy9leHRlbnNpYmxlLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgorI2lu Y2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKIHN0YXRpYyBIVEFCICpleHRlbnNpYmxlX25vZGVf bWV0aG9kcyA9IE5VTEw7CiBzdGF0aWMgSFRBQiAqY3VzdG9tX3NjYW5fbWV0aG9kcyA9IE5VTEw7 CkBAIC00NSwxMyArNDYsOCBAQCBSZWdpc3RlckV4dGVuc2libGVOb2RlRW50cnkoSFRBQiAqKnBf aHRhYmxlLCBjb25zdCBjaGFyICpodGFibGVfbGFiZWwsCiAKIAlpZiAoKnBfaHRhYmxlID09IE5V TEwpCiAJewotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNpemUgPSBFWFROT0RFTkFNRV9N QVhfTEVOOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKEV4dGVuc2libGVOb2RlRW50cnkpOwot Ci0JCSpwX2h0YWJsZSA9IGhhc2hfY3JlYXRlKGh0YWJsZV9sYWJlbCwgMTAwLCAmY3RsLAotCQkJ CQkJCQlIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOworCQkqcF9odGFibGUgPSBoYXNoX21ha2Vf Y3h0KEV4dGVuc2libGVOb2RlRW50cnksIGV4dG5vZGVuYW1lLAorCQkJCQkJCQkgIGh0YWJsZV9s YWJlbCwgMTAwLCBUb3BNZW1vcnlDb250ZXh0KTsKIAl9CiAKIAlpZiAoc3RybGVuKGV4dG5vZGVu YW1lKSA+PSBFWFROT0RFTkFNRV9NQVhfTEVOKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvcGxhbmNhdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNh dC5jCmluZGV4IGE5MGUxYzllZTZiLi5mZmE4OWNiMzM2NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL3BsYW5jYXQuYwpAQCAtNzEzLDE5ICs3MTMsMTAgQEAgZ2V0X3JlbGF0aW9uX25vdG51bGxh dHRzKFBsYW5uZXJJbmZvICpyb290LCBSZWxhdGlvbiByZWxhdGlvbikKIAkvKiBjcmVhdGUgdGhl IGhhc2ggdGFibGUgaWYgaXQgaGFzbid0IGJlZW4gY3JlYXRlZCB5ZXQgKi8KIAlpZiAocm9vdC0+ Z2xvYi0+cmVsX25vdG51bGxhdHRzX2hhc2ggPT0gTlVMTCkKIAl7Ci0JCUhUQUIJICAgKmhhc2h0 YWI7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2Yo T2lkKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE5vdG51bGxIYXNoRW50cnkpOwot CQloYXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQkJaGFzaHRhYiA9IGhh c2hfY3JlYXRlKCJSZWxhdGlvbiBOT1QgTlVMTCBhdHRudW1zIiwKLQkJCQkJCQkgIDY0TCwJLyog YXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSAqLwotCQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJCSAg SEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7Ci0KLQkJcm9vdC0+Z2xvYi0+ cmVsX25vdG51bGxhdHRzX2hhc2ggPSBoYXNodGFiOworCQlyb290LT5nbG9iLT5yZWxfbm90bnVs bGF0dHNfaGFzaCA9CisJCQloYXNoX21ha2UoTm90bnVsbEhhc2hFbnRyeSwgcmVsaWQsCisJCQkJ CSAgIlJlbGF0aW9uIE5PVCBOVUxMIGF0dG51bXMiLAorCQkJCQkgIDY0TCk7CQkvKiBhcmJpdHJh cnkgaW5pdGlhbCBzaXplICovCiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3ByZWR0ZXN0LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVk dGVzdC5jCmluZGV4IDI2ODU4ZDFkMmIwLi4zYmY1ZTdhYzhiYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9wcmVkdGVzdC5jCkBAIC0yMTE3LDEyICsyMTE3LDkgQEAgbG9va3VwX3Byb29mX2Nh Y2hlKE9pZCBwcmVkX29wLCBPaWQgY2xhdXNlX29wLCBib29sIHJlZnV0ZV9pdCkKIAlpZiAoT3By UHJvb2ZDYWNoZUhhc2ggPT0gTlVMTCkKIAl7CiAJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5p dGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAqLwotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNp emUgPSBzaXplb2YoT3ByUHJvb2ZDYWNoZUtleSk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2Yo T3ByUHJvb2ZDYWNoZUVudHJ5KTsKLQkJT3ByUHJvb2ZDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgi QnRyZWUgcHJvb2YgbG9va3VwIGNhY2hlIiwgMjU2LAotCQkJCQkJCQkJCSZjdGwsIEhBU0hfRUxF TSB8IEhBU0hfQkxPQlMpOworCQlPcHJQcm9vZkNhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQoT3By UHJvb2ZDYWNoZUVudHJ5LCBrZXksCisJCQkJCQkJCQkJICAiQnRyZWUgcHJvb2YgbG9va3VwIGNh Y2hlIiwgMjU2LAorCQkJCQkJCQkJCSAgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkJLyogQXJyYW5n ZSB0byBmbHVzaCBjYWNoZSBvbiBwZ19hbW9wIGNoYW5nZXMgKi8KIAkJQ2FjaGVSZWdpc3RlclN5 c2NhY2hlQ2FsbGJhY2soQU1PUE9QSUQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9yZWxub2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMK aW5kZXggZjU3NjMxZTg3NmYuLmE5MDdmMWQwMjhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv cmVsbm9kZS5jCkBAIC02MDEsMTkgKzYwMSwxMiBAQCBzdGF0aWMgdm9pZAogYnVpbGRfam9pbl9y ZWxfaGFzaChQbGFubmVySW5mbyAqcm9vdCkKIHsKIAlIVEFCCSAgICpoYXNodGFiOwotCUhBU0hD VEwJCWhhc2hfY3RsOwogCUxpc3RDZWxsICAgKmw7CiAKIAkvKiBDcmVhdGUgdGhlIGhhc2ggdGFi bGUgKi8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFJlbGlkcyk7Ci0JaGFzaF9jdGwuZW50 cnlzaXplID0gc2l6ZW9mKEpvaW5IYXNoRW50cnkpOwotCWhhc2hfY3RsLmhhc2ggPSBiaXRtYXBf aGFzaDsKLQloYXNoX2N0bC5tYXRjaCA9IGJpdG1hcF9tYXRjaDsKLQloYXNoX2N0bC5oY3h0ID0g Q3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JaGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJKb2luUmVsSGFz aFRhYmxlIiwKLQkJCQkJCSAgMjU2TCwKLQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJICBIQVNI X0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsKKwlo YXNodGFiID0gaGFzaF9tYWtlX2ZuKEpvaW5IYXNoRW50cnksIGpvaW5fcmVsaWRzLAorCQkJCQkJ ICAgIkpvaW5SZWxIYXNoVGFibGUiLCAyNTYsCisJCQkJCQkgICBiaXRtYXBfaGFzaCwgYml0bWFw X21hdGNoKTsKIAogCS8qIEluc2VydCBhbGwgdGhlIGFscmVhZHktZXhpc3Rpbmcgam9pbnJlbHMg Ki8KIAlmb3JlYWNoKGwsIHJvb3QtPmpvaW5fcmVsX2xpc3QpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIu YwppbmRleCA3NjhlNGNmZjljNS4uZDM2ZTdhZDMwMzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9vcGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIu YwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVk ZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRl ICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVk ZSAidXRpbHMvdHlwY2FjaGUuaCIKIApAQCAtMTAyOCwxMiArMTAyOSw5IEBAIGZpbmRfb3Blcl9j YWNoZV9lbnRyeShPcHJDYWNoZUtleSAqa2V5KQogCWlmIChPcHJDYWNoZUhhc2ggPT0gTlVMTCkK IAl7CiAJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAq LwotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT3ByQ2FjaGVLZXkp OwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKE9wckNhY2hlRW50cnkpOwotCQlPcHJDYWNoZUhh c2ggPSBoYXNoX2NyZWF0ZSgiT3BlcmF0b3IgbG9va3VwIGNhY2hlIiwgMjU2LAotCQkJCQkJCQkg ICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJT3ByQ2FjaGVIYXNoID0gaGFzaF9t YWtlX2N4dChPcHJDYWNoZUVudHJ5LCBrZXksCisJCQkJCQkJCQkgIk9wZXJhdG9yIGxvb2t1cCBj YWNoZSIsIDI1NiwKKwkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAogCQkvKiBBcnJhbmdl IHRvIGZsdXNoIGNhY2hlIG9uIHBnX29wZXJhdG9yIGFuZCBwZ19jYXN0IGNoYW5nZXMgKi8KIAkJ Q2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soT1BFUk5BTUVOU1AsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlv bmluZy9wYXJ0ZGVzYy5jCmluZGV4IGMzZDI3NWY4NzI2Li5kYjI2ZTRhODJiNiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRkZXNjLmMKQEAgLTQyNCwxNyArNDI0LDEyIEBAIENyZWF0ZVBhcnRp dGlvbkRpcmVjdG9yeShNZW1vcnlDb250ZXh0IG1jeHQsIGJvb2wgb21pdF9kZXRhY2hlZCkKIHsK IAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8obWN4dCk7 CiAJUGFydGl0aW9uRGlyZWN0b3J5IHBkaXI7Ci0JSEFTSENUTAkJY3RsOwogCiAJcGRpciA9IHBh bGxvY19vYmplY3QoUGFydGl0aW9uRGlyZWN0b3J5RGF0YSk7CiAJcGRpci0+cGRpcl9tY3h0ID0g bWN4dDsKIAotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNp emVvZihQYXJ0aXRpb25EaXJlY3RvcnlFbnRyeSk7Ci0JY3RsLmhjeHQgPSBtY3h0OwotCi0JcGRp ci0+cGRpcl9oYXNoID0gaGFzaF9jcmVhdGUoInBhcnRpdGlvbiBkaXJlY3RvcnkiLCAyNTYsICZj dGwsCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJ cGRpci0+cGRpcl9oYXNoID0gaGFzaF9tYWtlX2N4dChQYXJ0aXRpb25EaXJlY3RvcnlFbnRyeSwg cmVsb2lkLAorCQkJCQkJCQkJInBhcnRpdGlvbiBkaXJlY3RvcnkiLCAyNTYsIG1jeHQpOwogCXBk aXItPm9taXRfZGV0YWNoZWQgPSBvbWl0X2RldGFjaGVkOwogCiAJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRv dmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCAyMjM3 OWRlMWUzMS4uZDRhMjliYmY4N2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv YXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCkBA IC05MDQsNyArOTA0LDYgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0KE9pZCBuZXdkYikKIAlNZW1v cnlDb250ZXh0IG5ld2N4dDsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAlNZW1vcnlDb250ZXh0 IHRtcGN4dDsKLQlIQVNIQ1RMCQloY3RsOwogCWludAkJCXNjb3JlOwogCWludAkJCW5lbGVtczsK IAlIVEFCCSAgICpkYmhhc2g7CkBAIC05MzQsMTIgKzkzMywxMCBAQCByZWJ1aWxkX2RhdGFiYXNl X2xpc3QoT2lkIG5ld2RiKQogCSAqIHNjb3JlLCBhbmQgZmluYWxseSBwdXQgdGhlIGFycmF5IGVs ZW1lbnRzIGludG8gdGhlIG5ldyBkb3VibHkgbGlua2VkCiAJICogbGlzdC4KIAkgKi8KLQloY3Rs LmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQloY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihhdmxfZGJh c2UpOwotCWhjdGwuaGN4dCA9IHRtcGN4dDsKLQlkYmhhc2ggPSBoYXNoX2NyZWF0ZSgiYXV0b3Zh Y3V1bSBkYiBoYXNoIiwgMjAsICZoY3RsLAkvKiBtYWdpYyBudW1iZXIgaGVyZQotCQkJCQkJCQkJ CQkJCQkJICogRklYTUUgKi8KLQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9D T05URVhUKTsKKwlkYmhhc2ggPSBoYXNoX21ha2VfY3h0KGF2bF9kYmFzZSwgYWRsX2RhdGlkLAor CQkJCQkJICAgImF1dG92YWN1dW0gZGIgaGFzaCIsCisJCQkJCQkgICAyMCwJLyogbWFnaWMgbnVt YmVyIGhlcmUgRklYTUUgKi8KKwkJCQkJCSAgIHRtcGN4dCk7CiAKIAkvKiBzdGFydCBieSBpbnNl cnRpbmcgdGhlIG5ldyBkYXRhYmFzZSAqLwogCXNjb3JlID0gMDsKQEAgLTE4ODIsNyArMTg3OSw2 IEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAlGb3JtX3BnX2RhdGFiYXNlIGRiRm9ybTsKIAlMaXN0 CSAgICp0YWJsZV9vaWRzID0gTklMOwogCUxpc3QJICAgKm9ycGhhbl9vaWRzID0gTklMOwotCUhB U0hDVEwJCWN0bDsKIAlIVEFCCSAgICp0YWJsZV90b2FzdF9tYXA7CiAJTGlzdENlbGwgICAqdm9s YXRpbGUgY2VsbDsKIAlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3k7CkBAIC0xOTU1LDEz ICsxOTUxLDkgQEAgZG9fYXV0b3ZhY3V1bSh2b2lkKQogCXBnX2NsYXNzX2Rlc2MgPSBDcmVhdGVU dXBsZURlc2NDb3B5KFJlbGF0aW9uR2V0RGVzY3IoY2xhc3NSZWwpKTsKIAogCS8qIGNyZWF0ZSBo YXNoIHRhYmxlIGZvciB0b2FzdCA8LT4gbWFpbiByZWxpZCBtYXBwaW5nICovCi0JY3RsLmtleXNp emUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKGF2X3JlbGF0aW9uKTsK LQotCXRhYmxlX3RvYXN0X21hcCA9IGhhc2hfY3JlYXRlKCJUT0FTVCB0byBtYWluIHJlbGlkIG1h cCIsCi0JCQkJCQkJCSAgMTAwLAotCQkJCQkJCQkgICZjdGwsCi0JCQkJCQkJCSAgSEFTSF9FTEVN IHwgSEFTSF9CTE9CUyk7CisJdGFibGVfdG9hc3RfbWFwID0gaGFzaF9tYWtlX2N4dChhdl9yZWxh dGlvbiwgYXJfdG9hc3RyZWxpZCwKKwkJCQkJCQkJCSJUT0FTVCB0byBtYWluIHJlbGlkIG1hcCIs IDEwMCwKKwkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyoKIAkgKiBTY2FuIHBnX2Ns YXNzIHRvIGRldGVybWluZSB3aGljaCB0YWJsZXMgdG8gdmFjdXVtLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvY2hlY2twb2ludGVyLmMKaW5kZXggNjQ4MmMyMWI4ZjkuLjI0MjU5ZWQ1ZTQyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKQEAgLTEzMDksNyArMTMwOSw2IEBAIENvbXBh Y3RDaGVja3BvaW50ZXJSZXF1ZXN0UXVldWUodm9pZCkKIAlpbnQJCQludW1fcmVxdWVzdHM7CiAJ aW50CQkJcmVhZF9pZHgsCiAJCQkJd3JpdGVfaWR4OwotCUhBU0hDVEwJCWN0bDsKIAlIVEFCCSAg ICpodGFiOwogCWJvb2wJICAgKnNraXBfc2xvdDsKIApAQCAtMTMyOSwxNCArMTMyOCw5IEBAIENv bXBhY3RDaGVja3BvaW50ZXJSZXF1ZXN0UXVldWUodm9pZCkKIAloZWFkID0gQ2hlY2twb2ludGVy U2htZW0tPmhlYWQ7CiAKIAkvKiBJbml0aWFsaXplIHRlbXBvcmFyeSBoYXNoIHRhYmxlICovCi0J Y3RsLmtleXNpemUgPSBzaXplb2YoQ2hlY2twb2ludGVyUmVxdWVzdCk7Ci0JY3RsLmVudHJ5c2l6 ZSA9IHNpemVvZihzdHJ1Y3QgQ2hlY2twb2ludGVyU2xvdE1hcHBpbmcpOwotCWN0bC5oY3h0ID0g Q3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQlodGFiID0gaGFzaF9jcmVhdGUoIkNvbXBhY3RDaGVj a3BvaW50ZXJSZXF1ZXN0UXVldWUiLAotCQkJCQkgICBDaGVja3BvaW50ZXJTaG1lbS0+bnVtX3Jl cXVlc3RzLAotCQkJCQkgICAmY3RsLAotCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwg SEFTSF9DT05URVhUKTsKKwlodGFiID0gaGFzaF9tYWtlKHN0cnVjdCBDaGVja3BvaW50ZXJTbG90 TWFwcGluZywgcmVxdWVzdCwKKwkJCQkJICJDb21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1ZXVl IiwKKwkJCQkJIENoZWNrcG9pbnRlclNobWVtLT5udW1fcmVxdWVzdHMpOwogCiAJLyoKIAkgKiBU aGUgYmFzaWMgaWRlYSBoZXJlIGlzIHRoYXQgYSByZXF1ZXN0IGNhbiBiZSBza2lwcGVkIGlmIGl0 J3MgZm9sbG93ZWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv YXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9h cHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXggNWViZDIzNTNmZWQuLmU3ZTk5YTZlY2VjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3Jr ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3 b3JrZXIuYwpAQCAtNDg0LDE2ICs0ODQsOSBAQCBwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rp b25JZCB4aWQpCiAJLyogRmlyc3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXplIHBhcmFsbGVsIGFw cGx5IHdvcmtlciBzdGF0ZSBoYXNodGFibGUuICovCiAJaWYgKCFQYXJhbGxlbEFwcGx5VHhuSGFz aCkKIAl7Ci0JCUhBU0hDVEwJCWN0bDsKLQotCQlNZW1TZXQoJmN0bCwgMCwgc2l6ZW9mKGN0bCkp OwotCQljdGwua2V5c2l6ZSA9IHNpemVvZihUcmFuc2FjdGlvbklkKTsKLQkJY3RsLmVudHJ5c2l6 ZSA9IHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkpOwotCQljdGwuaGN4dCA9IEFwcGx5 Q29udGV4dDsKLQotCQlQYXJhbGxlbEFwcGx5VHhuSGFzaCA9IGhhc2hfY3JlYXRlKCJsb2dpY2Fs IHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgaGFzaCIsCi0JCQkJCQkJCQkJICAg MTYsICZjdGwsCi0JCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09O VEVYVCk7CisJCVBhcmFsbGVsQXBwbHlUeG5IYXNoID0gaGFzaF9tYWtlX2N4dChQYXJhbGxlbEFw cGx5V29ya2VyRW50cnksIHhpZCwKKwkJCQkJCQkJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMgaGFzaCIsCisJCQkJCQkJCQkJCSAxNiwgQXBwbHlDb250ZXh0 KTsKIAl9CiAKIAkvKiBDcmVhdGUgYW4gZW50cnkgZm9yIHRoZSByZXF1ZXN0ZWQgdHJhbnNhY3Rp b24uICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0 aW9uLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKaW5kZXgg MGIxZDgwYjViMGYuLmZjZjI5NWYxZGYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9yZWxhdGlvbi5jCkBAIC0xMDUsOCArMTA1LDYgQEAgbG9naWNhbHJlcF9yZWxtYXBfaW52 YWxpZGF0ZV9jYihEYXR1bSBhcmcsIE9pZCByZWxvaWQpCiBzdGF0aWMgdm9pZAogbG9naWNhbHJl cF9yZWxtYXBfaW5pdCh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQogCWlmICghTG9naWNhbFJl cFJlbE1hcENvbnRleHQpCiAJCUxvZ2ljYWxSZXBSZWxNYXBDb250ZXh0ID0KIAkJCUFsbG9jU2V0 Q29udGV4dENyZWF0ZShDYWNoZU1lbW9yeUNvbnRleHQsCkBAIC0xMTQsMTIgKzExMiw5IEBAIGxv Z2ljYWxyZXBfcmVsbWFwX2luaXQodm9pZCkKIAkJCQkJCQkJICBBTExPQ1NFVF9ERUZBVUxUX1NJ WkVTKTsKIAogCS8qIEluaXRpYWxpemUgdGhlIHJlbGF0aW9uIGhhc2ggdGFibGUuICovCi0JY3Rs LmtleXNpemUgPSBzaXplb2YoTG9naWNhbFJlcFJlbElkKTsKLQljdGwuZW50cnlzaXplID0gc2l6 ZW9mKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSk7Ci0JY3RsLmhjeHQgPSBMb2dpY2FsUmVwUmVsTWFw Q29udGV4dDsKLQotCUxvZ2ljYWxSZXBSZWxNYXAgPSBoYXNoX2NyZWF0ZSgibG9naWNhbHJlcCBy ZWxhdGlvbiBtYXAgY2FjaGUiLCAxMjgsICZjdGwsCi0JCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhB U0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCUxvZ2ljYWxSZXBSZWxNYXAgPSBoYXNoX21ha2Vf Y3h0KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSwgcmVtb3RlcmVsLnJlbW90ZWlkLAorCQkJCQkJCQkJ ICJsb2dpY2FscmVwIHJlbGF0aW9uIG1hcCBjYWNoZSIsIDEyOCwKKwkJCQkJCQkJCSBMb2dpY2Fs UmVwUmVsTWFwQ29udGV4dCk7CiAKIAkvKiBXYXRjaCBmb3IgaW52YWxpZGF0aW9uIGV2ZW50cy4g Ki8KIAlDYWNoZVJlZ2lzdGVyUmVsY2FjaGVDYWxsYmFjayhsb2dpY2FscmVwX3JlbG1hcF9pbnZh bGlkYXRlX2NiLApAQCAtNjExLDggKzYwNiw2IEBAIGxvZ2ljYWxyZXBfcGFydG1hcF9yZXNldF9y ZWxtYXAoTG9naWNhbFJlcFJlbGF0aW9uICpyZW1vdGVyZWwpCiBzdGF0aWMgdm9pZAogbG9naWNh bHJlcF9wYXJ0bWFwX2luaXQodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KIAlpZiAoIUxvZ2lj YWxSZXBQYXJ0TWFwQ29udGV4dCkKIAkJTG9naWNhbFJlcFBhcnRNYXBDb250ZXh0ID0KIAkJCUFs bG9jU2V0Q29udGV4dENyZWF0ZShDYWNoZU1lbW9yeUNvbnRleHQsCkBAIC02MjAsMTIgKzYxMyw5 IEBAIGxvZ2ljYWxyZXBfcGFydG1hcF9pbml0KHZvaWQpCiAJCQkJCQkJCSAgQUxMT0NTRVRfREVG QVVMVF9TSVpFUyk7CiAKIAkvKiBJbml0aWFsaXplIHRoZSByZWxhdGlvbiBoYXNoIHRhYmxlLiAq LwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7CS8qIHBhcnRpdGlvbiBPSUQgKi8KLQljdGwu ZW50cnlzaXplID0gc2l6ZW9mKExvZ2ljYWxSZXBQYXJ0TWFwRW50cnkpOwotCWN0bC5oY3h0ID0g TG9naWNhbFJlcFBhcnRNYXBDb250ZXh0OwotCi0JTG9naWNhbFJlcFBhcnRNYXAgPSBoYXNoX2Ny ZWF0ZSgibG9naWNhbHJlcCBwYXJ0aXRpb24gbWFwIGNhY2hlIiwgNjQsICZjdGwsCi0JCQkJCQkJ CQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwlMb2dpY2FsUmVwUGFy dE1hcCA9IGhhc2hfbWFrZV9jeHQoTG9naWNhbFJlcFBhcnRNYXBFbnRyeSwgcGFydG9pZCwKKwkJ CQkJCQkJCSAgImxvZ2ljYWxyZXAgcGFydGl0aW9uIG1hcCBjYWNoZSIsIDY0LAorCQkJCQkJCQkJ ICBMb2dpY2FsUmVwUGFydE1hcENvbnRleHQpOwogCiAJLyogV2F0Y2ggZm9yIGludmFsaWRhdGlv biBldmVudHMuICovCiAJQ2FjaGVSZWdpc3RlclJlbGNhY2hlQ2FsbGJhY2sobG9naWNhbHJlcF9w YXJ0bWFwX2ludmFsaWRhdGVfY2IsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcmVvcmRlcmJ1ZmZlci5jCmluZGV4IGEwMjkzZjZlYzdjLi5mYTkzYTFiYmRlMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTMy NCw3ICszMjQsNiBAQCBSZW9yZGVyQnVmZmVyICoKIFJlb3JkZXJCdWZmZXJBbGxvY2F0ZSh2b2lk KQogewogCVJlb3JkZXJCdWZmZXIgKmJ1ZmZlcjsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAlNZW1v cnlDb250ZXh0IG5ld19jdHg7CiAKIAlBc3NlcnQoTXlSZXBsaWNhdGlvblNsb3QgIT0gTlVMTCk7 CkBAIC0zMzcsOCArMzM2LDYgQEAgUmVvcmRlckJ1ZmZlckFsbG9jYXRlKHZvaWQpCiAJYnVmZmVy ID0KIAkJKFJlb3JkZXJCdWZmZXIgKikgTWVtb3J5Q29udGV4dEFsbG9jKG5ld19jdHgsIHNpemVv ZihSZW9yZGVyQnVmZmVyKSk7CiAKLQltZW1zZXQoJmhhc2hfY3RsLCAwLCBzaXplb2YoaGFzaF9j dGwpKTsKLQogCWJ1ZmZlci0+Y29udGV4dCA9IG5ld19jdHg7CiAKIAlidWZmZXItPmNoYW5nZV9j b250ZXh0ID0gU2xhYkNvbnRleHRDcmVhdGUobmV3X2N0eCwKQEAgLTM2NywxMiArMzY0LDggQEAg UmVvcmRlckJ1ZmZlckFsbG9jYXRlKHZvaWQpCiAJCQkJCQkJCQkJCQkgIFNMQUJfREVGQVVMVF9C TE9DS19TSVpFLAogCQkJCQkJCQkJCQkJICBTTEFCX0RFRkFVTFRfQkxPQ0tfU0laRSk7CiAKLQlo YXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOwotCWhhc2hfY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihSZW9yZGVyQnVmZmVyVFhOQnlJZEVudCk7Ci0JaGFzaF9jdGwuaGN4dCA9 IGJ1ZmZlci0+Y29udGV4dDsKLQotCWJ1ZmZlci0+YnlfdHhuID0gaGFzaF9jcmVhdGUoIlJlb3Jk ZXJCdWZmZXJCeVhpZCIsIDEwMDAsICZoYXNoX2N0bCwKLQkJCQkJCQkJIEhBU0hfRUxFTSB8IEhB U0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCWJ1ZmZlci0+YnlfdHhuID0gaGFzaF9tYWtlX2N4 dChSZW9yZGVyQnVmZmVyVFhOQnlJZEVudCwgeGlkLAorCQkJCQkJCQkgICAiUmVvcmRlckJ1ZmZl ckJ5WGlkIiwgMTAwMCwgYnVmZmVyLT5jb250ZXh0KTsKIAogCWJ1ZmZlci0+YnlfdHhuX2xhc3Rf eGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJYnVmZmVyLT5ieV90eG5fbGFzdF90eG4gPSBO VUxMOwpAQCAtMTgzNiwyMiArMTgyOSwxNyBAQCBzdGF0aWMgdm9pZAogUmVvcmRlckJ1ZmZlckJ1 aWxkVHVwbGVDaWRIYXNoKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4p CiB7CiAJZGxpc3RfaXRlcglpdGVyOwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCiAJaWYgKCFyYnR4 bl9oYXNfY2F0YWxvZ19jaGFuZ2VzKHR4bikgfHwgZGxpc3RfaXNfZW1wdHkoJnR4bi0+dHVwbGVj aWRzKSkKIAkJcmV0dXJuOwogCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihSZW9yZGVyQnVm ZmVyVHVwbGVDaWRLZXkpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZW9yZGVyQnVm ZmVyVHVwbGVDaWRFbnQpOwotCWhhc2hfY3RsLmhjeHQgPSByYi0+Y29udGV4dDsKLQogCS8qCiAJ ICogY3JlYXRlIHRoZSBoYXNoIHdpdGggdGhlIGV4YWN0IG51bWJlciBvZiB0by1iZS1zdG9yZWQg dHVwbGVjaWRzIGZyb20KIAkgKiB0aGUgc3RhcnQKIAkgKi8KIAl0eG4tPnR1cGxlY2lkX2hhc2gg PQotCQloYXNoX2NyZWF0ZSgiUmVvcmRlckJ1ZmZlclR1cGxlQ2lkIiwgdHhuLT5udHVwbGVjaWRz LCAmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQp OworCQloYXNoX21ha2VfY3h0KFJlb3JkZXJCdWZmZXJUdXBsZUNpZEVudCwga2V5LAorCQkJCQkg ICJSZW9yZGVyQnVmZmVyVHVwbGVDaWQiLCB0eG4tPm50dXBsZWNpZHMsIHJiLT5jb250ZXh0KTsK IAogCWRsaXN0X2ZvcmVhY2goaXRlciwgJnR4bi0+dHVwbGVjaWRzKQogCXsKQEAgLTQ5NzQsMTUg KzQ5NjIsMTAgQEAgU3RhcnR1cFJlb3JkZXJCdWZmZXIodm9pZCkKIHN0YXRpYyB2b2lkCiBSZW9y ZGVyQnVmZmVyVG9hc3RJbml0SGFzaChSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRY TiAqdHhuKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwotCiAJQXNzZXJ0KHR4bi0+dG9hc3RfaGFz aCA9PSBOVUxMKTsKIAotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQloYXNoX2N0 bC5lbnRyeXNpemUgPSBzaXplb2YoUmVvcmRlckJ1ZmZlclRvYXN0RW50KTsKLQloYXNoX2N0bC5o Y3h0ID0gcmItPmNvbnRleHQ7Ci0JdHhuLT50b2FzdF9oYXNoID0gaGFzaF9jcmVhdGUoIlJlb3Jk ZXJCdWZmZXJUb2FzdEhhc2giLCA1LCAmaGFzaF9jdGwsCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwg SEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJdHhuLT50b2FzdF9oYXNoID0gaGFzaF9tYWtl X2N4dChSZW9yZGVyQnVmZmVyVG9hc3RFbnQsIGNodW5rX2lkLAorCQkJCQkJCQkJIlJlb3JkZXJC dWZmZXJUb2FzdEhhc2giLCA1LCByYi0+Y29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCA2N2U1NzUyMDM4Ni4uMzEyNzNh ZDlmNTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVz eW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpA QCAtMTE3LDYgKzExNyw3IEBACiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKICNpbmNsdWRlICJ1 dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUg InV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmxzLmgiCiAjaW5jbHVkZSAidXRp bHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCkBAIC0zOTAsMTIgKzM5 MSw5IEBAIFByb2Nlc3NTeW5jaW5nVGFibGVzRm9yQXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xz bikKIAkgKi8KIAlpZiAodGFibGVfc3RhdGVzX25vdF9yZWFkeSAhPSBOSUwgJiYgIWxhc3Rfc3Rh cnRfdGltZXMpCiAJewotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNpemUgPSBzaXplb2Yo T2lkKTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihzdHJ1Y3QgdGFibGVzeW5jX3N0YXJ0X3Rp bWVfbWFwcGluZyk7Ci0JCWxhc3Rfc3RhcnRfdGltZXMgPSBoYXNoX2NyZWF0ZSgiTG9naWNhbCBy ZXBsaWNhdGlvbiB0YWJsZSBzeW5jIHdvcmtlciBzdGFydCB0aW1lcyIsCi0JCQkJCQkJCQkgICAy NTYsICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQlsYXN0X3N0YXJ0X3RpbWVzID0g aGFzaF9tYWtlX2N4dChzdHJ1Y3QgdGFibGVzeW5jX3N0YXJ0X3RpbWVfbWFwcGluZywgcmVsaWQs CisJCQkJCQkJCQkJICJMb2dpY2FsIHJlcGxpY2F0aW9uIHRhYmxlIHN5bmMgd29ya2VyIHN0YXJ0 IHRpbWVzIiwKKwkJCQkJCQkJCQkgMjU2LCBUb3BNZW1vcnlDb250ZXh0KTsKIAl9CiAKIAkvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggOWVlODk0 OWUwNDAuLjBkY2ZiZmRkNjA5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9w Z291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 L3Bnb3V0cHV0LmMKQEAgLTE5NzMsNyArMTk3Myw2IEBAIHBnb3V0cHV0X3N0cmVhbV9wcmVwYXJl X3R4bihMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiBzdGF0aWMgdm9pZAogaW5pdF9yZWxf c3luY19jYWNoZShNZW1vcnlDb250ZXh0IGNhY2hlY3R4KQogewotCUhBU0hDVEwJCWN0bDsKIAlz dGF0aWMgYm9vbCByZWxhdGlvbl9jYWxsYmFja3NfcmVnaXN0ZXJlZCA9IGZhbHNlOwogCiAJLyog Tm90aGluZyB0byBkbyBpZiBoYXNoIHRhYmxlIGFscmVhZHkgZXhpc3RzICovCkBAIC0xOTgxLDEz ICsxOTgwLDkgQEAgaW5pdF9yZWxfc3luY19jYWNoZShNZW1vcnlDb250ZXh0IGNhY2hlY3R4KQog CQlyZXR1cm47CiAKIAkvKiBNYWtlIGEgbmV3IGhhc2ggdGFibGUgZm9yIHRoZSBjYWNoZSAqLwot CWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZWxh dGlvblN5bmNFbnRyeSk7Ci0JY3RsLmhjeHQgPSBjYWNoZWN0eDsKLQotCVJlbGF0aW9uU3luY0Nh Y2hlID0gaGFzaF9jcmVhdGUoImxvZ2ljYWwgcmVwbGljYXRpb24gb3V0cHV0IHJlbGF0aW9uIGNh Y2hlIiwKLQkJCQkJCQkJCTEyOCwgJmN0bCwKLQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQ09O VEVYVCB8IEhBU0hfQkxPQlMpOworCVJlbGF0aW9uU3luY0NhY2hlID0gaGFzaF9tYWtlX2N4dChS ZWxhdGlvblN5bmNFbnRyeSwgcmVsaWQsCisJCQkJCQkJCQkgICJsb2dpY2FsIHJlcGxpY2F0aW9u IG91dHB1dCByZWxhdGlvbiBjYWNoZSIsCisJCQkJCQkJCQkgIDEyOCwgY2FjaGVjdHgpOwogCiAJ QXNzZXJ0KFJlbGF0aW9uU3luY0NhY2hlICE9IE5VTEwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFibGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2J1Zl90YWJsZS5jCmluZGV4IDIzZDg1ZmQzMmUyLi45NTY1Mzk0NGE5ZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX3RhYmxlLmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9idWZmZXIvYnVmX3RhYmxlLmMKQEAgLTUwLDE5ICs1MCwxNiBAQCBCdWZUYWJs ZVNobWVtU2l6ZShpbnQgc2l6ZSkKIHZvaWQKIEluaXRCdWZUYWJsZShpbnQgc2l6ZSkKIHsKLQlI QVNIQ1RMCQlpbmZvOworCUhBU0hPUFRTCW9wdHMgPSB7MH07CiAKIAkvKiBhc3N1bWUgbm8gbG9j a2luZyBpcyBuZWVkZWQgeWV0ICovCiAKIAkvKiBCdWZmZXJUYWcgbWFwcyB0byBCdWZmZXIgKi8K LQlpbmZvLmtleXNpemUgPSBzaXplb2YoQnVmZmVyVGFnKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNp emVvZihCdWZmZXJMb29rdXBFbnQpOwotCWluZm8ubnVtX3BhcnRpdGlvbnMgPSBOVU1fQlVGRkVS X1BBUlRJVElPTlM7Ci0KLQlTaGFyZWRCdWZIYXNoID0gU2htZW1Jbml0SGFzaCgiU2hhcmVkIEJ1 ZmZlciBMb29rdXAgVGFibGUiLAotCQkJCQkJCQkgIHNpemUsIHNpemUsCi0JCQkJCQkJCSAgJmlu Zm8sCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfUEFSVElUSU9OIHwg SEFTSF9GSVhFRF9TSVpFKTsKKwlvcHRzLm51bV9wYXJ0aXRpb25zID0gTlVNX0JVRkZFUl9QQVJU SVRJT05TOworCW9wdHMuZml4ZWRfc2l6ZSA9IHRydWU7CisJU2hhcmVkQnVmSGFzaCA9IHNobWVt X2hhc2hfbWFrZV9leHQoQnVmZmVyTG9va3VwRW50LCBrZXksCisJCQkJCQkJCQkJIlNoYXJlZCBC dWZmZXIgTG9va3VwIFRhYmxlIiwKKwkJCQkJCQkJCQlzaXplLCBzaXplLCAmb3B0cyk7CiB9CiAK IC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IDZmOTM1NjQ4YWU5Li4yYTk3 ZWNkYmJhNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKQEAgLTYzLDYgKzYzLDcg QEAKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5kYnku aCIKICNpbmNsdWRlICJ1dGlscy9tZW1kZWJ1Zy5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCiAjaW5jbHVkZSAidXRpbHMvcHNfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgi CiAjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKQEAgLTQxMTksOCArNDEyMCw2IEBAIEF0RU9Y YWN0X0J1ZmZlcnMoYm9vbCBpc0NvbW1pdCkKIHZvaWQKIEluaXRCdWZmZXJNYW5hZ2VyQWNjZXNz KHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KIAkvKgogCSAqIEFuIGFkdmlzb3J5IGxp bWl0IG9uIHRoZSBudW1iZXIgb2YgcGlucyBlYWNoIGJhY2tlbmQgc2hvdWxkIGhvbGQsIGJhc2Vk CiAJICogb24gc2hhcmVkX2J1ZmZlcnMgYW5kIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25uZWN0 aW9ucyBwb3NzaWJsZS4KQEAgLTQxMzMsMTEgKzQxMzIsOSBAQCBJbml0QnVmZmVyTWFuYWdlckFj Y2Vzcyh2b2lkKQogCW1lbXNldCgmUHJpdmF0ZVJlZkNvdW50QXJyYXksIDAsIHNpemVvZihQcml2 YXRlUmVmQ291bnRBcnJheSkpOwogCW1lbXNldCgmUHJpdmF0ZVJlZkNvdW50QXJyYXlLZXlzLCAw LCBzaXplb2YoUHJpdmF0ZVJlZkNvdW50QXJyYXlLZXlzKSk7CiAKLQloYXNoX2N0bC5rZXlzaXpl ID0gc2l6ZW9mKEJ1ZmZlcik7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFByaXZhdGVS ZWZDb3VudEVudHJ5KTsKLQotCVByaXZhdGVSZWZDb3VudEhhc2ggPSBoYXNoX2NyZWF0ZSgiUHJp dmF0ZVJlZkNvdW50IiwgMTAwLCAmaGFzaF9jdGwsCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhB U0hfQkxPQlMpOworCVByaXZhdGVSZWZDb3VudEhhc2ggPSBoYXNoX21ha2VfY3h0KFByaXZhdGVS ZWZDb3VudEVudHJ5LCBidWZmZXIsCisJCQkJCQkJCQkJIlByaXZhdGVSZWZDb3VudCIsIDEwMCwK KwkJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIAogCS8qCiAJICogQXRQcm9jRXhpdF9CdWZm ZXJzIG5lZWRzIExXTG9jayBhY2Nlc3MsIGFuZCB0aGVyZWJ5IGhhcyB0byBiZSBjYWxsZWQgYXQK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jCmluZGV4IDA0YTU0MDM3OWEyLi41YTVm NDQyYTc4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYu YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jCkBAIC03MjgsNyAr NzI4LDYgQEAgc3RhdGljIHZvaWQKIEluaXRMb2NhbEJ1ZmZlcnModm9pZCkKIHsKIAlpbnQJCQlu YnVmcyA9IG51bV90ZW1wX2J1ZmZlcnM7Ci0JSEFTSENUTAkJaW5mbzsKIAlpbnQJCQlpOwogCiAJ LyoKQEAgLTc3OSwxMyArNzc4LDkgQEAgSW5pdExvY2FsQnVmZmVycyh2b2lkKQogCX0KIAogCS8q IENyZWF0ZSB0aGUgbG9va3VwIGhhc2ggdGFibGUgKi8KLQlpbmZvLmtleXNpemUgPSBzaXplb2Yo QnVmZmVyVGFnKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihMb2NhbEJ1ZmZlckxvb2t1cEVu dCk7Ci0KLQlMb2NhbEJ1Zkhhc2ggPSBoYXNoX2NyZWF0ZSgiTG9jYWwgQnVmZmVyIExvb2t1cCBU YWJsZSIsCi0JCQkJCQkJICAgbmJ1ZnMsCi0JCQkJCQkJICAgJmluZm8sCi0JCQkJCQkJICAgSEFT SF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJTG9jYWxCdWZIYXNoID0gaGFzaF9tYWtlX2N4dChMb2Nh bEJ1ZmZlckxvb2t1cEVudCwga2V5LAorCQkJCQkJCQkgIkxvY2FsIEJ1ZmZlciBMb29rdXAgVGFi bGUiLCBuYnVmcywKKwkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJaWYgKCFMb2NhbEJ1 Zkhhc2gpCiAJCWVsb2coRVJST1IsICJjb3VsZCBub3QgaW5pdGlhbGl6ZSBsb2NhbCBidWZmZXIg aGFzaCB0YWJsZSIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL3JlaW5p dC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL3JlaW5pdC5jCmluZGV4IDI1ZmEyMTUxMzA5 Li4yNmU4MTBlNmI1MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL3JlaW5p dC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWluaXQuYwpAQCAtMTc1LDcgKzE3 NSw2IEBAIFJlc2V0VW5sb2dnZWRSZWxhdGlvbnNJbkRic3BhY2VEaXIoY29uc3QgY2hhciAqZGJz cGFjZWRpcm5hbWUsIGludCBvcCkKIAlpZiAoKG9wICYgVU5MT0dHRURfUkVMQVRJT05fQ0xFQU5V UCkgIT0gMCkKIAl7CiAJCUhUQUIJICAgKmhhc2g7Ci0JCUhBU0hDVEwJCWN0bDsKIAogCQkvKgog CQkgKiBJdCdzIHBvc3NpYmxlIHRoYXQgc29tZW9uZSBjb3VsZCBjcmVhdGUgYSB0b24gb2YgdW5s b2dnZWQgcmVsYXRpb25zCkBAIC0xODQsMTEgKzE4Myw4IEBAIFJlc2V0VW5sb2dnZWRSZWxhdGlv bnNJbkRic3BhY2VEaXIoY29uc3QgY2hhciAqZGJzcGFjZWRpcm5hbWUsIGludCBvcCkKIAkJICog bmVlZCB0byBiZSByZXNldC4gIE90aGVyd2lzZSwgdGhpcyBjbGVhbnVwIG9wZXJhdGlvbiB3b3Vs ZCBiZQogCQkgKiBPKG5eMikuCiAJCSAqLwotCQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwot CQljdGwuZW50cnlzaXplID0gc2l6ZW9mKHVubG9nZ2VkX3JlbGF0aW9uX2VudHJ5KTsKLQkJY3Rs LmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQkJaGFzaCA9IGhhc2hfY3JlYXRlKCJ1bmxv Z2dlZCByZWxhdGlvbiBPSURzIiwgMzIsICZjdGwsCi0JCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwkJaGFzaCA9IGhhc2hfbWFrZSh1bmxvZ2dlZF9yZWxh dGlvbl9lbnRyeSwgcmVsbnVtYmVyLAorCQkJCQkJICJ1bmxvZ2dlZCByZWxhdGlvbiBPSURzIiwg MzIpOwogCiAJCS8qIFNjYW4gdGhlIGRpcmVjdG9yeS4gKi8KIAkJZGJzcGFjZV9kaXIgPSBBbGxv Y2F0ZURpcihkYnNwYWNlZGlybmFtZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9zaG1lbS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYwppbmRleCAxYjUz NjM2MzE1Mi4uOGQ4ZjU3ZTBjNzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NobWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYwpAQCAtMjg0LDgg KzI4NCw2IEBAIFNobWVtQWRkcklzVmFsaWQoY29uc3Qgdm9pZCAqYWRkcikKIHZvaWQKIEluaXRT aG1lbUluZGV4KHZvaWQpCiB7Ci0JSEFTSENUTAkJaW5mbzsKLQogCS8qCiAJICogQ3JlYXRlIHRo ZSBzaGFyZWQgbWVtb3J5IHNobWVtIGluZGV4LgogCSAqCkBAIC0yOTQsMTMgKzI5Miw4IEBAIElu aXRTaG1lbUluZGV4KHZvaWQpCiAJICogaW5pdGlhbGl6aW5nIHRoZSBTaG1lbUluZGV4IGl0c2Vs Zi4gIFRoZSBzcGVjaWFsICJTaG1lbUluZGV4IiBoYXNoCiAJICogdGFibGUgbmFtZSB3aWxsIHRl bGwgU2htZW1Jbml0U3RydWN0IHRvIGZha2UgaXQuCiAJICovCi0JaW5mby5rZXlzaXplID0gU0hN RU1fSU5ERVhfS0VZU0laRTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihTaG1lbUluZGV4RW50 KTsKLQotCVNobWVtSW5kZXggPSBTaG1lbUluaXRIYXNoKCJTaG1lbUluZGV4IiwKLQkJCQkJCQkg ICBTSE1FTV9JTkRFWF9TSVpFLCBTSE1FTV9JTkRFWF9TSVpFLAotCQkJCQkJCSAgICZpbmZvLAot CQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJU2htZW1JbmRleCA9IHNobWVt X2hhc2hfbWFrZShTaG1lbUluZGV4RW50LCBrZXksICJTaG1lbUluZGV4IiwKKwkJCQkJCQkJIFNI TUVNX0lOREVYX1NJWkUsIFNITUVNX0lOREVYX1NJWkUpOwogfQogCiAvKgpAQCAtMzY5LDYgKzM2 MiwyOCBAQCBTaG1lbUluaXRIYXNoKGNvbnN0IGNoYXIgKm5hbWUsCQkvKiB0YWJsZSBzdHJpbmcg bmFtZSBmb3Igc2htZW0gaW5kZXggKi8KIAlyZXR1cm4gaGFzaF9jcmVhdGUobmFtZSwgaW5pdF9z aXplLCBpbmZvUCwgaGFzaF9mbGFncyk7CiB9CiAKKy8qCisgKiBJbXBsZW1lbnRhdGlvbiBmdW5j dGlvbiBmb3Igc2htZW1faGFzaF9tYWtlIG1hY3Jvcy4KKyAqCisgKiBDcmVhdGVzIGEgc2hhcmVk IG1lbW9yeSBoYXNoIHRhYmxlIHdpdGggc2ltcGxpZmllZCBwYXJhbWV0ZXJzLgorICogUGFzcyBO VUxMIGZvciBvcHRzIHRvIHVzZSBhbGwgZGVmYXVsdHMuCisgKi8KK0hUQUIgKgorc2htZW1faGFz aF9tYWtlX2ltcGwoY29uc3QgY2hhciAqbmFtZSwgaW50NjQgaW5pdF9zaXplLCBpbnQ2NCBtYXhf c2l6ZSwKKwkJCQkJIFNpemUga2V5c2l6ZSwgU2l6ZSBlbnRyeXNpemUsIGJvb2wgc3RyaW5nX2tl eSwKKwkJCQkJIGNvbnN0IEhBU0hPUFRTICpvcHRzKQoreworCUhBU0hDVEwJCWN0bDsKKwlpbnQJ CQlmbGFnczsKKworCS8qIFNoYXJlZCBtZW1vcnkgaGFzaCB0YWJsZXMgdXNlIFNobWVtQWxsb2NO b0Vycm9yLCBub3QgYSBjdXN0b20gYWxsb2NhdG9yICovCisJQXNzZXJ0KG9wdHMgPT0gTlVMTCB8 fCBvcHRzLT5hbGxvYyA9PSBOVUxMKTsKKworCWhhc2hfb3B0c19pbml0KCZjdGwsICZmbGFncywg a2V5c2l6ZSwgZW50cnlzaXplLCBzdHJpbmdfa2V5LCBvcHRzKTsKKworCXJldHVybiBTaG1lbUlu aXRIYXNoKG5hbWUsIGluaXRfc2l6ZSwgbWF4X3NpemUsICZjdGwsIGZsYWdzKTsKK30KKwogLyoK ICAqIFNobWVtSW5pdFN0cnVjdCAtLSBDcmVhdGUvYXR0YWNoIHRvIGEgc3RydWN0dXJlIGluIHNo YXJlZCBtZW1vcnkuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3Rh bmRieS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IGFmZmZhYjc3 MTA2Li43YTk2ZTNlMjAzOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3Rh bmRieS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAtMzIsNiAr MzIsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInV0aWxzL2hz ZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKKyNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3BzX3N0YXR1cy5oIgogI2luY2x1ZGUg InV0aWxzL3RpbWVvdXQuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKQEAgLTk1LDcg Kzk2LDYgQEAgdm9pZAogSW5pdFJlY292ZXJ5VHJhbnNhY3Rpb25FbnZpcm9ubWVudCh2b2lkKQog ewogCVZpcnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQ7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAKIAlB c3NlcnQoUmVjb3ZlcnlMb2NrSGFzaCA9PSBOVUxMKTsJLyogZG9uJ3QgcnVuIHRoaXMgdHdpY2Ug Ki8KIApAQCAtMTAzLDE4ICsxMDMsMTIgQEAgSW5pdFJlY292ZXJ5VHJhbnNhY3Rpb25FbnZpcm9u bWVudCh2b2lkKQogCSAqIEluaXRpYWxpemUgdGhlIGhhc2ggdGFibGVzIGZvciB0cmFja2luZyB0 aGUgbG9ja3MgaGVsZCBieSBlYWNoCiAJICogdHJhbnNhY3Rpb24uCiAJICovCi0JaGFzaF9jdGwu a2V5c2l6ZSA9IHNpemVvZih4bF9zdGFuZGJ5X2xvY2spOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9 IHNpemVvZihSZWNvdmVyeUxvY2tFbnRyeSk7Ci0JUmVjb3ZlcnlMb2NrSGFzaCA9IGhhc2hfY3Jl YXRlKCJSZWNvdmVyeUxvY2tIYXNoIiwKLQkJCQkJCQkJICAgNjQsCi0JCQkJCQkJCSAgICZoYXNo X2N0bCwKLQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7Ci0JaGFzaF9jdGwua2V5 c2l6ZSA9IHNpemVvZihUcmFuc2FjdGlvbklkKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXpl b2YoUmVjb3ZlcnlMb2NrWGlkRW50cnkpOwotCVJlY292ZXJ5TG9ja1hpZEhhc2ggPSBoYXNoX2Ny ZWF0ZSgiUmVjb3ZlcnlMb2NrWGlkSGFzaCIsCi0JCQkJCQkJCQkgIDY0LAotCQkJCQkJCQkJICAm aGFzaF9jdGwsCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCVJlY292ZXJ5 TG9ja0hhc2ggPSBoYXNoX21ha2VfY3h0KFJlY292ZXJ5TG9ja0VudHJ5LCBrZXksCisJCQkJCQkJ CQkgIlJlY292ZXJ5TG9ja0hhc2giLCA2NCwKKwkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsK KwlSZWNvdmVyeUxvY2tYaWRIYXNoID0gaGFzaF9tYWtlX2N4dChSZWNvdmVyeUxvY2tYaWRFbnRy eSwgeGlkLAorCQkJCQkJCQkJCSJSZWNvdmVyeUxvY2tYaWRIYXNoIiwgNjQsCisJCQkJCQkJCQkJ VG9wTWVtb3J5Q29udGV4dCk7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2hhcmVkIGludmFsaWRh dGlvbiBtYW5hZ2VtZW50IGZvciBTdGFydHVwIHByb2Nlc3MsIGJlaW5nCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdy L2xvY2suYwppbmRleCA3ZjBjZDc4NGY3OS4uM2YyMGM4NTg4MWEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdy L2xvY2suYwpAQCAtNDQzLDcgKzQ0Myw3IEBAIHN0YXRpYyB2b2lkIEdldFNpbmdsZVByb2NCbG9j a2VyU3RhdHVzRGF0YShQR1BST0MgKmJsb2NrZWRfcHJvYywKIHZvaWQKIExvY2tNYW5hZ2VyU2ht ZW1Jbml0KHZvaWQpCiB7Ci0JSEFTSENUTAkJaW5mbzsKKwlIQVNIT1BUUwlvcHRzOwogCWludDY0 CQlpbml0X3RhYmxlX3NpemUsCiAJCQkJbWF4X3RhYmxlX3NpemU7CiAJYm9vbAkJZm91bmQ7CkBA IC00NTksMTUgKzQ1OSwxMSBAQCBMb2NrTWFuYWdlclNobWVtSW5pdCh2b2lkKQogCSAqIEFsbG9j YXRlIGhhc2ggdGFibGUgZm9yIExPQ0sgc3RydWN0cy4gIFRoaXMgc3RvcmVzIHBlci1sb2NrZWQt b2JqZWN0CiAJICogaW5mb3JtYXRpb24uCiAJICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKExP Q0tUQUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKExPQ0spOwotCWluZm8ubnVtX3BhcnRp dGlvbnMgPSBOVU1fTE9DS19QQVJUSVRJT05TOwotCi0JTG9ja01ldGhvZExvY2tIYXNoID0gU2ht ZW1Jbml0SGFzaCgiTE9DSyBoYXNoIiwKLQkJCQkJCQkJCSAgIGluaXRfdGFibGVfc2l6ZSwKLQkJ CQkJCQkJCSAgIG1heF90YWJsZV9zaXplLAotCQkJCQkJCQkJICAgJmluZm8sCi0JCQkJCQkJCQkg ICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9QQVJUSVRJT04pOworCU1lbVNldCgmb3B0 cywgMCwgc2l6ZW9mKG9wdHMpKTsKKwlvcHRzLm51bV9wYXJ0aXRpb25zID0gTlVNX0xPQ0tfUEFS VElUSU9OUzsKKwlMb2NrTWV0aG9kTG9ja0hhc2ggPSBzaG1lbV9oYXNoX21ha2VfZXh0KExPQ0ss IHRhZywgIkxPQ0sgaGFzaCIsCisJCQkJCQkJCQkJCSBpbml0X3RhYmxlX3NpemUsIG1heF90YWJs ZV9zaXplLAorCQkJCQkJCQkJCQkgJm9wdHMpOwogCiAJLyogQXNzdW1lIGFuIGF2ZXJhZ2Ugb2Yg MiBob2xkZXJzIHBlciBsb2NrICovCiAJbWF4X3RhYmxlX3NpemUgKj0gMjsKQEAgLTQ3NywxNiAr NDczLDEyIEBAIExvY2tNYW5hZ2VyU2htZW1Jbml0KHZvaWQpCiAJICogQWxsb2NhdGUgaGFzaCB0 YWJsZSBmb3IgUFJPQ0xPQ0sgc3RydWN0cy4gIFRoaXMgc3RvcmVzCiAJICogcGVyLWxvY2stcGVy LWhvbGRlciBpbmZvcm1hdGlvbi4KIAkgKi8KLQlpbmZvLmtleXNpemUgPSBzaXplb2YoUFJPQ0xP Q0tUQUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFBST0NMT0NLKTsKLQlpbmZvLmhhc2gg PSBwcm9jbG9ja19oYXNoOwotCWluZm8ubnVtX3BhcnRpdGlvbnMgPSBOVU1fTE9DS19QQVJUSVRJ T05TOwotCi0JTG9ja01ldGhvZFByb2NMb2NrSGFzaCA9IFNobWVtSW5pdEhhc2goIlBST0NMT0NL IGhhc2giLAotCQkJCQkJCQkJCSAgIGluaXRfdGFibGVfc2l6ZSwKLQkJCQkJCQkJCQkgICBtYXhf dGFibGVfc2l6ZSwKLQkJCQkJCQkJCQkgICAmaW5mbywKLQkJCQkJCQkJCQkgICBIQVNIX0VMRU0g fCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9QQVJUSVRJT04pOworCU1lbVNldCgmb3B0cywgMCwgc2l6 ZW9mKG9wdHMpKTsKKwlvcHRzLmhhc2ggPSBwcm9jbG9ja19oYXNoOworCW9wdHMubnVtX3BhcnRp dGlvbnMgPSBOVU1fTE9DS19QQVJUSVRJT05TOworCUxvY2tNZXRob2RQcm9jTG9ja0hhc2ggPSBz aG1lbV9oYXNoX21ha2VfZXh0KFBST0NMT0NLLCB0YWcsICJQUk9DTE9DSyBoYXNoIiwKKwkJCQkJ CQkJCQkJCSBpbml0X3RhYmxlX3NpemUsIG1heF90YWJsZV9zaXplLAorCQkJCQkJCQkJCQkJICZv cHRzKTsKIAogCS8qCiAJICogQWxsb2NhdGUgZmFzdC1wYXRoIHN0cnVjdHVyZXMuCkBAIC01MDgs MTUgKzUwMCw5IEBAIEluaXRMb2NrTWFuYWdlckFjY2Vzcyh2b2lkKQogCSAqIEFsbG9jYXRlIG5v bi1zaGFyZWQgaGFzaCB0YWJsZSBmb3IgTE9DQUxMT0NLIHN0cnVjdHMuICBUaGlzIHN0b3JlcyBs b2NrCiAJICogY291bnRzIGFuZCByZXNvdXJjZSBvd25lciBpbmZvcm1hdGlvbi4KIAkgKi8KLQlI QVNIQ1RMCQlpbmZvOwotCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKExPQ0FMTE9DS1RBRyk7Ci0J aW5mby5lbnRyeXNpemUgPSBzaXplb2YoTE9DQUxMT0NLKTsKLQotCUxvY2tNZXRob2RMb2NhbEhh c2ggPSBoYXNoX2NyZWF0ZSgiTE9DQUxMT0NLIGhhc2giLAotCQkJCQkJCQkJICAxNiwKLQkJCQkJ CQkJCSAgJmluZm8sCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCUxvY2tN ZXRob2RMb2NhbEhhc2ggPSBoYXNoX21ha2VfY3h0KExPQ0FMTE9DSywgdGFnLAorCQkJCQkJCQkJ CSJMT0NBTExPQ0sgaGFzaCIsIDE2LAorCQkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogfQog CiAKQEAgLTMzOTQsMjAgKzMzODAsMTMgQEAgQ2hlY2tGb3JTZXNzaW9uQW5kWGFjdExvY2tzKHZv aWQpCiAJCWJvb2wJCXhhY3RMb2NrOwkvKiBpcyBhbnkgbG9ja21vZGUgaGVsZCBhdCB4YWN0IGxl dmVsPyAqLwogCX0gUGVyTG9ja1RhZ0VudHJ5OwogCi0JSEFTSENUTAkJaGFzaF9jdGw7CiAJSFRB QgkgICAqbG9ja2h0YWI7CiAJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKIAlMT0NBTExPQ0sgICps b2NhbGxvY2s7CiAKIAkvKiBDcmVhdGUgYSBsb2NhbCBoYXNoIHRhYmxlIGtleWVkIGJ5IExPQ0tU QUcgb25seSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoTE9DS1RBRyk7Ci0JaGFzaF9j dGwuZW50cnlzaXplID0gc2l6ZW9mKFBlckxvY2tUYWdFbnRyeSk7Ci0JaGFzaF9jdGwuaGN4dCA9 IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCi0JbG9ja2h0YWIgPSBoYXNoX2NyZWF0ZSgiQ2hlY2tG b3JTZXNzaW9uQW5kWGFjdExvY2tzIHRhYmxlIiwKLQkJCQkJCSAgIDI1NiwgLyogYXJiaXRyYXJ5 IGluaXRpYWwgc2l6ZSAqLwotCQkJCQkJICAgJmhhc2hfY3RsLAotCQkJCQkJICAgSEFTSF9FTEVN IHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJbG9ja2h0YWIgPSBoYXNoX21ha2UoUGVy TG9ja1RhZ0VudHJ5LCBsb2NrLAorCQkJCQkJICJDaGVja0ZvclNlc3Npb25BbmRYYWN0TG9ja3Mg dGFibGUiLCAyNTYpOwogCiAJLyogU2NhbiBsb2NhbCBsb2NrIHRhYmxlIHRvIGZpbmQgZW50cmll cyBmb3IgZWFjaCBMT0NLVEFHICovCiAJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9k TG9jYWxIYXNoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2su YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYwppbmRleCA1MTdjNTUzNzViNC4u ODNjNWI3N2Y5NTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2su YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMKQEAgLTI4NSw3ICsyODUs NiBAQCBzdGF0aWMgbHdsb2NrX3N0YXRzICogZ2V0X2x3bG9ja19zdGF0c19lbnRyeShMV0xvY2sg KmxvY2spOwogc3RhdGljIHZvaWQKIGluaXRfbHdsb2NrX3N0YXRzKHZvaWQpCiB7Ci0JSEFTSENU TAkJY3RsOwogCXN0YXRpYyBNZW1vcnlDb250ZXh0IGx3bG9ja19zdGF0c19jeHQgPSBOVUxMOwog CXN0YXRpYyBib29sIGV4aXRfcmVnaXN0ZXJlZCA9IGZhbHNlOwogCkBAIC0zMDUsMTEgKzMwNCw4 IEBAIGluaXRfbHdsb2NrX3N0YXRzKHZvaWQpCiAJCQkJCQkJCQkJCSBBTExPQ1NFVF9ERUZBVUxU X1NJWkVTKTsKIAlNZW1vcnlDb250ZXh0QWxsb3dJbkNyaXRpY2FsU2VjdGlvbihsd2xvY2tfc3Rh dHNfY3h0LCB0cnVlKTsKIAotCWN0bC5rZXlzaXplID0gc2l6ZW9mKGx3bG9ja19zdGF0c19rZXkp OwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YobHdsb2NrX3N0YXRzKTsKLQljdGwuaGN4dCA9IGx3 bG9ja19zdGF0c19jeHQ7Ci0JbHdsb2NrX3N0YXRzX2h0YWIgPSBoYXNoX2NyZWF0ZSgibHdsb2Nr IHN0YXRzIiwgMTYzODQsICZjdGwsCi0JCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwg SEFTSF9DT05URVhUKTsKKwlsd2xvY2tfc3RhdHNfaHRhYiA9IGhhc2hfbWFrZV9jeHQobHdsb2Nr X3N0YXRzLCBrZXksCisJCQkJCQkJCQkgICJsd2xvY2sgc3RhdHMiLCAxNjM4NCwgbHdsb2NrX3N0 YXRzX2N4dCk7CiAJaWYgKCFleGl0X3JlZ2lzdGVyZWQpCiAJewogCQlvbl9zaG1lbV9leGl0KHBy aW50X2x3bG9ja19zdGF0cywgMCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvcHJlZGljYXRlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKaW5k ZXggZmU3NWVhZDM1MDEuLjlmMzc3OWI5YWVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9y YWdlL2xtZ3IvcHJlZGljYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRp Y2F0ZS5jCkBAIC0yMTIsNiArMjEyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2d1Y19ob29rcy5o IgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAj aW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogCkBAIC0xMTQ0LDcgKzExNDUsNyBAQCBDaGVja1Bv aW50UHJlZGljYXRlKHZvaWQpCiB2b2lkCiBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiB7 Ci0JSEFTSENUTAkJaW5mbzsKKwlIQVNIT1BUUwlvcHRzOwogCWludDY0CQltYXhfdGFibGVfc2l6 ZTsKIAlTaXplCQlyZXF1ZXN0U2l6ZTsKIAlib29sCQlmb3VuZDsKQEAgLTExNjMsMTYgKzExNjQs MTMgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCSAqIEFsbG9jYXRlIGhhc2ggdGFi bGUgZm9yIFBSRURJQ0FURUxPQ0tUQVJHRVQgc3RydWN0cy4gIFRoaXMgc3RvcmVzCiAJICogcGVy LXByZWRpY2F0ZS1sb2NrLXRhcmdldCBpbmZvcm1hdGlvbi4KIAkgKi8KLQlpbmZvLmtleXNpemUg PSBzaXplb2YoUFJFRElDQVRFTE9DS1RBUkdFVFRBRyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXpl b2YoUFJFRElDQVRFTE9DS1RBUkdFVCk7Ci0JaW5mby5udW1fcGFydGl0aW9ucyA9IE5VTV9QUkVE SUNBVEVMT0NLX1BBUlRJVElPTlM7Ci0KLQlQcmVkaWNhdGVMb2NrVGFyZ2V0SGFzaCA9IFNobWVt SW5pdEhhc2goIlBSRURJQ0FURUxPQ0tUQVJHRVQgaGFzaCIsCi0JCQkJCQkJCQkJCW1heF90YWJs ZV9zaXplLAotCQkJCQkJCQkJCQltYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkJCQkJJmluZm8sCi0J CQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfAotCQkJCQkJCQkJCQlIQVNIX1BBUlRJ VElPTiB8IEhBU0hfRklYRURfU0laRSk7CisJTWVtU2V0KCZvcHRzLCAwLCBzaXplb2Yob3B0cykp OworCW9wdHMubnVtX3BhcnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05TOwor CW9wdHMuZml4ZWRfc2l6ZSA9IHRydWU7CisJUHJlZGljYXRlTG9ja1RhcmdldEhhc2ggPSBzaG1l bV9oYXNoX21ha2VfZXh0KFBSRURJQ0FURUxPQ0tUQVJHRVQsIHRhZywKKwkJCQkJCQkJCQkJCSAg IlBSRURJQ0FURUxPQ0tUQVJHRVQgaGFzaCIsCisJCQkJCQkJCQkJCQkgIG1heF90YWJsZV9zaXpl LCBtYXhfdGFibGVfc2l6ZSwKKwkJCQkJCQkJCQkJCSAgJm9wdHMpOwogCiAJLyoKIAkgKiBSZXNl cnZlIGEgZHVtbXkgZW50cnkgaW4gdGhlIGhhc2ggdGFibGU7IHdlIHVzZSBpdCB0byBtYWtlIHN1 cmUgdGhlcmUncwpAQCAtMTE5NSwyMCArMTE5MywxNyBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0 KHZvaWQpCiAJICogQWxsb2NhdGUgaGFzaCB0YWJsZSBmb3IgUFJFRElDQVRFTE9DSyBzdHJ1Y3Rz LiAgVGhpcyBzdG9yZXMgcGVyCiAJICogeGFjdC1sb2NrLW9mLWEtdGFyZ2V0IGluZm9ybWF0aW9u LgogCSAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihQUkVESUNBVEVMT0NLVEFHKTsKLQlpbmZv LmVudHJ5c2l6ZSA9IHNpemVvZihQUkVESUNBVEVMT0NLKTsKLQlpbmZvLmhhc2ggPSBwcmVkaWNh dGVsb2NrX2hhc2g7Ci0JaW5mby5udW1fcGFydGl0aW9ucyA9IE5VTV9QUkVESUNBVEVMT0NLX1BB UlRJVElPTlM7Ci0KIAkvKiBBc3N1bWUgYW4gYXZlcmFnZSBvZiAyIHhhY3RzIHBlciB0YXJnZXQg Ki8KIAltYXhfdGFibGVfc2l6ZSAqPSAyOwogCi0JUHJlZGljYXRlTG9ja0hhc2ggPSBTaG1lbUlu aXRIYXNoKCJQUkVESUNBVEVMT0NLIGhhc2giLAotCQkJCQkJCQkJICBtYXhfdGFibGVfc2l6ZSwK LQkJCQkJCQkJCSAgbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkgICZpbmZvLAotCQkJCQkJCQkJ ICBIQVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwKLQkJCQkJCQkJCSAgSEFTSF9QQVJUSVRJT04g fCBIQVNIX0ZJWEVEX1NJWkUpOworCU1lbVNldCgmb3B0cywgMCwgc2l6ZW9mKG9wdHMpKTsKKwlv cHRzLmhhc2ggPSBwcmVkaWNhdGVsb2NrX2hhc2g7CisJb3B0cy5udW1fcGFydGl0aW9ucyA9IE5V TV9QUkVESUNBVEVMT0NLX1BBUlRJVElPTlM7CisJb3B0cy5maXhlZF9zaXplID0gdHJ1ZTsKKwlQ cmVkaWNhdGVMb2NrSGFzaCA9IHNobWVtX2hhc2hfbWFrZV9leHQoUFJFRElDQVRFTE9DSywgdGFn LAorCQkJCQkJCQkJCQkiUFJFRElDQVRFTE9DSyBoYXNoIiwKKwkJCQkJCQkJCQkJbWF4X3RhYmxl X3NpemUsIG1heF90YWJsZV9zaXplLAorCQkJCQkJCQkJCQkmb3B0cyk7CiAKIAkvKgogCSAqIENv bXB1dGUgc2l6ZSBmb3Igc2VyaWFsaXphYmxlIHRyYW5zYWN0aW9uIGhhc2h0YWJsZS4gTm90ZSB0 aGVzZQpAQCAtMTI4MiwxNSArMTI3NywxMiBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQp CiAJICogQWxsb2NhdGUgaGFzaCB0YWJsZSBmb3IgU0VSSUFMSVpBQkxFWElEIHN0cnVjdHMuICBU aGlzIHN0b3JlcyBwZXIteGlkCiAJICogaW5mb3JtYXRpb24gZm9yIHNlcmlhbGl6YWJsZSB0cmFu c2FjdGlvbnMgd2hpY2ggaGF2ZSBhY2Nlc3NlZCBkYXRhLgogCSAqLwotCWluZm8ua2V5c2l6ZSA9 IHNpemVvZihTRVJJQUxJWkFCTEVYSURUQUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFNF UklBTElaQUJMRVhJRCk7Ci0KLQlTZXJpYWxpemFibGVYaWRIYXNoID0gU2htZW1Jbml0SGFzaCgi U0VSSUFMSVpBQkxFWElEIGhhc2giLAotCQkJCQkJCQkJCW1heF90YWJsZV9zaXplLAotCQkJCQkJ CQkJCW1heF90YWJsZV9zaXplLAotCQkJCQkJCQkJCSZpbmZvLAotCQkJCQkJCQkJCUhBU0hfRUxF TSB8IEhBU0hfQkxPQlMgfAotCQkJCQkJCQkJCUhBU0hfRklYRURfU0laRSk7CisJTWVtU2V0KCZv cHRzLCAwLCBzaXplb2Yob3B0cykpOworCW9wdHMuZml4ZWRfc2l6ZSA9IHRydWU7CisJU2VyaWFs aXphYmxlWGlkSGFzaCA9IHNobWVtX2hhc2hfbWFrZV9leHQoU0VSSUFMSVpBQkxFWElELCB0YWcs CisJCQkJCQkJCQkJCSAgIlNFUklBTElaQUJMRVhJRCBoYXNoIiwKKwkJCQkJCQkJCQkJICBtYXhf dGFibGVfc2l6ZSwgbWF4X3RhYmxlX3NpemUsCisJCQkJCQkJCQkJCSAgJm9wdHMpOwogCiAJLyoK IAkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgdHJhY2tpbmcgcnctY29uZmxpY3RzIGluIGxpc3RzIGF0 dGFjaGVkIHRvIHRoZQpAQCAtMTkzNywxNiArMTkyOSwxMiBAQCBHZXRTZXJpYWxpemFibGVUcmFu c2FjdGlvblNuYXBzaG90SW50KFNuYXBzaG90IHNuYXBzaG90LAogc3RhdGljIHZvaWQKIENyZWF0 ZUxvY2FsUHJlZGljYXRlTG9ja0hhc2godm9pZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKLQog CS8qIEluaXRpYWxpemUgdGhlIGJhY2tlbmQtbG9jYWwgaGFzaCB0YWJsZSBvZiBwYXJlbnQgbG9j a3MgKi8KIAlBc3NlcnQoTG9jYWxQcmVkaWNhdGVMb2NrSGFzaCA9PSBOVUxMKTsKLQloYXNoX2N0 bC5rZXlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tUQVJHRVRUQUcpOwotCWhhc2hfY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihMT0NBTFBSRURJQ0FURUxPQ0spOwotCUxvY2FsUHJlZGljYXRlTG9j a0hhc2ggPSBoYXNoX2NyZWF0ZSgiTG9jYWwgcHJlZGljYXRlIGxvY2siLAotCQkJCQkJCQkJCSBt YXhfcHJlZGljYXRlX2xvY2tzX3Blcl94YWN0LAotCQkJCQkJCQkJCSAmaGFzaF9jdGwsCi0JCQkJ CQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCUxvY2FsUHJlZGljYXRlTG9ja0hhc2gg PSBoYXNoX21ha2VfY3h0KExPQ0FMUFJFRElDQVRFTE9DSywgdGFnLAorCQkJCQkJCQkJCSAgICJM b2NhbCBwcmVkaWNhdGUgbG9jayIsCisJCQkJCQkJCQkJICAgbWF4X3ByZWRpY2F0ZV9sb2Nrc19w ZXJfeGFjdCwKKwkJCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9y YWdlL3NtZ3Ivc21nci5jCmluZGV4IDM3OGMyYTAzZjM5Li5lNzViYzlhMmEwOCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL3NtZ3Ivc21nci5jCkBAIC03Myw2ICs3Myw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zbWdy LmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgi CisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIAogCiAvKgpAQCAtMjUwLDEyICsyNTEsOSBA QCBzbWdyb3BlbihSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgUHJvY051bWJlciBiYWNrZW5kKQog CWlmIChTTWdyUmVsYXRpb25IYXNoID09IE5VTEwpCiAJewogCQkvKiBGaXJzdCB0aW1lIHRocm91 Z2g6IGluaXRpYWxpemUgdGhlIGhhc2ggdGFibGUgKi8KLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0 bC5rZXlzaXplID0gc2l6ZW9mKFJlbEZpbGVMb2NhdG9yQmFja2VuZCk7Ci0JCWN0bC5lbnRyeXNp emUgPSBzaXplb2YoU01nclJlbGF0aW9uRGF0YSk7Ci0JCVNNZ3JSZWxhdGlvbkhhc2ggPSBoYXNo X2NyZWF0ZSgic21nciByZWxhdGlvbiB0YWJsZSIsIDQwMCwKLQkJCQkJCQkJCSAgICZjdGwsIEhB U0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQlTTWdyUmVsYXRpb25IYXNoID0gaGFzaF9tYWtlX2N4 dChTTWdyUmVsYXRpb25EYXRhLCBzbWdyX3Jsb2NhdG9yLAorCQkJCQkJCQkJCSAic21nciByZWxh dGlvbiB0YWJsZSIsIDQwMCwKKwkJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiAJCWRsaXN0 X2luaXQoJnVucGlubmVkX3JlbG5zKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2Uvc3luYy9zeW5jLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCmluZGV4 IGIxYWNjYzY4Yjk1Li4wMWFjYjMwZjFiYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9zeW5jL3N5bmMuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCkBAIC0x MzAsOCArMTMwLDYgQEAgSW5pdFN5bmModm9pZCkKIAkgKi8KIAlpZiAoIUlzVW5kZXJQb3N0bWFz dGVyIHx8IEFtQ2hlY2twb2ludGVyUHJvY2VzcygpKQogCXsKLQkJSEFTSENUTAkJaGFzaF9jdGw7 Ci0KIAkJLyoKIAkJICogWFhYOiBUaGUgY2hlY2twb2ludGVyIG5lZWRzIHRvIGFkZCBlbnRyaWVz IHRvIHRoZSBwZW5kaW5nIG9wcyB0YWJsZQogCQkgKiB3aGVuIGFic29yYmluZyBmc3luYyByZXF1 ZXN0cy4gIFRoYXQgaXMgZG9uZSB3aXRoaW4gYSBjcml0aWNhbApAQCAtMTQ2LDEzICsxNDQsOCBA QCBJbml0U3luYyh2b2lkKQogCQkJCQkJCQkJCQkgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwog CQlNZW1vcnlDb250ZXh0QWxsb3dJbkNyaXRpY2FsU2VjdGlvbihwZW5kaW5nT3BzQ3h0LCB0cnVl KTsKIAotCQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKEZpbGVUYWcpOwotCQloYXNoX2N0bC5l bnRyeXNpemUgPSBzaXplb2YoUGVuZGluZ0ZzeW5jRW50cnkpOwotCQloYXNoX2N0bC5oY3h0ID0g cGVuZGluZ09wc0N4dDsKLQkJcGVuZGluZ09wcyA9IGhhc2hfY3JlYXRlKCJQZW5kaW5nIE9wcyBU YWJsZSIsCi0JCQkJCQkJCSAxMDBMLAotCQkJCQkJCQkgJmhhc2hfY3RsLAotCQkJCQkJCQkgSEFT SF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJCXBlbmRpbmdPcHMgPSBoYXNo X21ha2VfY3h0KFBlbmRpbmdGc3luY0VudHJ5LCB0YWcsCisJCQkJCQkJCSAgICJQZW5kaW5nIE9w cyBUYWJsZSIsIDEwMEwsIHBlbmRpbmdPcHNDeHQpOwogCQlwZW5kaW5nVW5saW5rcyA9IE5JTDsK IAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUuYyBi L3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jCmluZGV4IDBjNTEzZDY5NGU3Li5j MmYzYjYzMjY1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXpl LmMKKysrIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMKQEAgLTE0OSw3ICsx NDksNiBAQCBjb21wdXRlX3RzdmVjdG9yX3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsCiAKIAkv KiBUaGlzIGlzIEQgZnJvbSB0aGUgTEMgYWxnb3JpdGhtLiAqLwogCUhUQUIJICAgKmxleGVtZXNf dGFiOwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsK IAogCS8qIFRoaXMgaXMgdGhlIGN1cnJlbnQgYnVja2V0IG51bWJlciBmcm9tIHRoZSBMQyBhbGdv cml0aG0gKi8KQEAgLTE4MCwxNSArMTc5LDkgQEAgY29tcHV0ZV90c3ZlY3Rvcl9zdGF0cyhWYWNB dHRyU3RhdHMgKnN0YXRzLAogCSAqIHdvcnJ5IGFib3V0IG92ZXJmbG93aW5nIHRoZSBpbml0aWFs IHNpemUuIEFsc28gd2UgZG9uJ3QgbmVlZCB0byBwYXkgYW55CiAJICogYXR0ZW50aW9uIHRvIGxv Y2tpbmcgYW5kIG1lbW9yeSBtYW5hZ2VtZW50LgogCSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBz aXplb2YoTGV4ZW1lSGFzaEtleSk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFRyYWNr SXRlbSk7Ci0JaGFzaF9jdGwuaGFzaCA9IGxleGVtZV9oYXNoOwotCWhhc2hfY3RsLm1hdGNoID0g bGV4ZW1lX21hdGNoOwotCWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQls ZXhlbWVzX3RhYiA9IGhhc2hfY3JlYXRlKCJBbmFseXplZCBsZXhlbWVzIHRhYmxlIiwKLQkJCQkJ CQkgIG51bV9tY2VsZW0sCi0JCQkJCQkJICAmaGFzaF9jdGwsCi0JCQkJCQkJICBIQVNIX0VMRU0g fCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsKKwlsZXhlbWVz X3RhYiA9IGhhc2hfbWFrZV9mbihUcmFja0l0ZW0sIGtleSwKKwkJCQkJCQkgICAiQW5hbHl6ZWQg bGV4ZW1lcyB0YWJsZSIsIG51bV9tY2VsZW0sCisJCQkJCQkJICAgbGV4ZW1lX2hhc2gsIGxleGVt ZV9tYXRjaCk7CiAKIAkvKiBJbml0aWFsaXplIGNvdW50ZXJzLiAqLwogCWJfY3VycmVudCA9IDE7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgYi9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKaW5kZXggZTRmMmM0NDAyNTcu LmU1YWM5NTZkYWYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0 X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBA IC0xMTksNyArMTE5LDYgQEAgdm9pZAogV2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KHZvaWQpCiB7 CiAJYm9vbAkJZm91bmQ7Ci0JSEFTSENUTAkJaW5mbzsKIAogCVdhaXRFdmVudEN1c3RvbUNvdW50 ZXIgPSAoV2FpdEV2ZW50Q3VzdG9tQ291bnRlckRhdGEgKikKIAkJU2htZW1Jbml0U3RydWN0KCJX YWl0RXZlbnRDdXN0b21Db3VudGVyRGF0YSIsCkBAIC0xMzMsMjQgKzEzMiwxOCBAQCBXYWl0RXZl bnRDdXN0b21TaG1lbUluaXQodm9pZCkKIAl9CiAKIAkvKiBpbml0aWFsaXplIG9yIGF0dGFjaCB0 aGUgaGFzaCB0YWJsZXMgdG8gc3RvcmUgY3VzdG9tIHdhaXQgZXZlbnRzICovCi0JaW5mby5rZXlz aXplID0gc2l6ZW9mKHVpbnQzMik7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoV2FpdEV2ZW50 Q3VzdG9tRW50cnlCeUluZm8pOwogCVdhaXRFdmVudEN1c3RvbUhhc2hCeUluZm8gPQotCQlTaG1l bUluaXRIYXNoKCJXYWl0RXZlbnRDdXN0b20gaGFzaCBieSB3YWl0IGV2ZW50IGluZm9ybWF0aW9u IiwKLQkJCQkJICBXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX0lOSVRfU0laRSwKLQkJCQkJICBXQUlU X0VWRU5UX0NVU1RPTV9IQVNIX01BWF9TSVpFLAotCQkJCQkgICZpbmZvLAotCQkJCQkgIEhBU0hf RUxFTSB8IEhBU0hfQkxPQlMpOworCQlzaG1lbV9oYXNoX21ha2UoV2FpdEV2ZW50Q3VzdG9tRW50 cnlCeUluZm8sIHdhaXRfZXZlbnRfaW5mbywKKwkJCQkJCSJXYWl0RXZlbnRDdXN0b20gaGFzaCBi eSB3YWl0IGV2ZW50IGluZm9ybWF0aW9uIiwKKwkJCQkJCVdBSVRfRVZFTlRfQ1VTVE9NX0hBU0hf SU5JVF9TSVpFLAorCQkJCQkJV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9NQVhfU0laRSk7CiAKIAkv KiBrZXkgaXMgYSBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nICovCi0JaW5mby5rZXlzaXplID0gc2l6 ZW9mKGNoYXJbTkFNRURBVEFMRU5dKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihXYWl0RXZl bnRDdXN0b21FbnRyeUJ5TmFtZSk7CiAJV2FpdEV2ZW50Q3VzdG9tSGFzaEJ5TmFtZSA9Ci0JCVNo bWVtSW5pdEhhc2goIldhaXRFdmVudEN1c3RvbSBoYXNoIGJ5IG5hbWUiLAotCQkJCQkgIFdBSVRf RVZFTlRfQ1VTVE9NX0hBU0hfSU5JVF9TSVpFLAotCQkJCQkgIFdBSVRfRVZFTlRfQ1VTVE9NX0hB U0hfTUFYX1NJWkUsCi0JCQkJCSAgJmluZm8sCi0JCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJ TkdTKTsKKwkJc2htZW1faGFzaF9tYWtlKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlOYW1lLCB3YWl0 X2V2ZW50X25hbWUsCisJCQkJCQkiV2FpdEV2ZW50Q3VzdG9tIGhhc2ggYnkgbmFtZSIsCisJCQkJ CQlXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX0lOSVRfU0laRSwKKwkJCQkJCVdBSVRfRVZFTlRfQ1VT VE9NX0hBU0hfTUFYX1NJWkUpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2FycmF5X3R5cGFuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90 eXBhbmFseXplLmMKaW5kZXggN2JiMDAwZGRiZDMuLmJkYzdlMjIzN2Y2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMKQEAgLTIyMyw3ICsyMjMsNiBAQCBjb21wdXRl X2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5jIGZl dGNoZnVuYywKIAogCS8qIFRoaXMgaXMgRCBmcm9tIHRoZSBMQyBhbGdvcml0aG0uICovCiAJSFRB QgkgICAqZWxlbWVudHNfdGFiOwotCUhBU0hDVEwJCWVsZW1faGFzaF9jdGw7CiAJSEFTSF9TRVFf U1RBVFVTIHNjYW5fc3RhdHVzOwogCiAJLyogVGhpcyBpcyB0aGUgY3VycmVudCBidWNrZXQgbnVt YmVyIGZyb20gdGhlIExDIGFsZ29yaXRobSAqLwpAQCAtMjM2LDcgKzIzNSw2IEBAIGNvbXB1dGVf YXJyYXlfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywgQW5hbHl6ZUF0dHJGZXRjaEZ1bmMgZmV0 Y2hmdW5jLAogCVRyYWNrSXRlbSAgKml0ZW07CiAJaW50CQkJc2xvdF9pZHg7CiAJSFRBQgkgICAq Y291bnRfdGFiOwotCUhBU0hDVEwJCWNvdW50X2hhc2hfY3RsOwogCURFQ291bnRJdGVtICpjb3Vu dF9pdGVtOwogCiAJZXh0cmFfZGF0YSA9IChBcnJheUFuYWx5emVFeHRyYURhdGEgKikgc3RhdHMt PmV4dHJhX2RhdGE7CkBAIC0yNzYsMjQgKzI3NCwxMyBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZh Y0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5jIGZldGNoZnVuYywKIAkgKiB3 b3JyeSBhYm91dCBvdmVyZmxvd2luZyB0aGUgaW5pdGlhbCBzaXplLiBBbHNvIHdlIGRvbid0IG5l ZWQgdG8gcGF5IGFueQogCSAqIGF0dGVudGlvbiB0byBsb2NraW5nIGFuZCBtZW1vcnkgbWFuYWdl bWVudC4KIAkgKi8KLQllbGVtX2hhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoRGF0dW0pOwotCWVs ZW1faGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFRyYWNrSXRlbSk7Ci0JZWxlbV9oYXNoX2N0 bC5oYXNoID0gZWxlbWVudF9oYXNoOwotCWVsZW1faGFzaF9jdGwubWF0Y2ggPSBlbGVtZW50X21h dGNoOwotCWVsZW1faGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCWVsZW1l bnRzX3RhYiA9IGhhc2hfY3JlYXRlKCJBbmFseXplZCBlbGVtZW50cyB0YWJsZSIsCi0JCQkJCQkJ ICAgbnVtX21jZWxlbSwKLQkJCQkJCQkgICAmZWxlbV9oYXNoX2N0bCwKLQkJCQkJCQkgICBIQVNI X0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsKKwll bGVtZW50c190YWIgPSBoYXNoX21ha2VfZm4oVHJhY2tJdGVtLCBrZXksCisJCQkJCQkJCSJBbmFs eXplZCBlbGVtZW50cyB0YWJsZSIsIG51bV9tY2VsZW0sCisJCQkJCQkJCWVsZW1lbnRfaGFzaCwg ZWxlbWVudF9tYXRjaCk7CiAKIAkvKiBoYXNodGFibGUgZm9yIGFycmF5IGRpc3RpbmN0IGVsZW1l bnRzIGNvdW50cyAqLwotCWNvdW50X2hhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoaW50KTsKLQlj b3VudF9oYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoREVDb3VudEl0ZW0pOwotCWNvdW50X2hh c2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQljb3VudF90YWIgPSBoYXNoX2Ny ZWF0ZSgiQXJyYXkgZGlzdGluY3QgZWxlbWVudCBjb3VudCB0YWJsZSIsCi0JCQkJCQkJNjQsCi0J CQkJCQkJJmNvdW50X2hhc2hfY3RsLAotCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBI QVNIX0NPTlRFWFQpOworCWNvdW50X3RhYiA9IGhhc2hfbWFrZShERUNvdW50SXRlbSwgY291bnQs CisJCQkJCQkgICJBcnJheSBkaXN0aW5jdCBlbGVtZW50IGNvdW50IHRhYmxlIiwgNjQpOwogCiAJ LyogSW5pdGlhbGl6ZSBjb3VudGVycy4gKi8KIAliX2N1cnJlbnQgPSAxOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u LmMKaW5kZXggMGIxNjEzOTg0NjUuLjc4YWRjYzM4YTc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKQEAg LTkzMywxOSArOTMzLDggQEAganNvbl91bmlxdWVfaGFzaF9tYXRjaChjb25zdCB2b2lkICprZXkx LCBjb25zdCB2b2lkICprZXkyLCBTaXplIGtleXNpemUpCiBzdGF0aWMgdm9pZAoganNvbl91bmlx dWVfY2hlY2tfaW5pdChKc29uVW5pcXVlQ2hlY2tTdGF0ZSAqY3h0KQogewotCUhBU0hDVEwJCWN0 bDsKLQotCW1lbXNldCgmY3RsLCAwLCBzaXplb2YoY3RsKSk7Ci0JY3RsLmtleXNpemUgPSBzaXpl b2YoSnNvblVuaXF1ZUhhc2hFbnRyeSk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihKc29uVW5p cXVlSGFzaEVudHJ5KTsKLQljdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCWN0bC5o YXNoID0ganNvbl91bmlxdWVfaGFzaDsKLQljdGwubWF0Y2ggPSBqc29uX3VuaXF1ZV9oYXNoX21h dGNoOwotCi0JKmN4dCA9IGhhc2hfY3JlYXRlKCJqc29uIG9iamVjdCBoYXNodGFibGUiLAotCQkJ CQkgICAzMiwKLQkJCQkJICAgJmN0bCwKLQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9DT05URVhU IHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfQ09NUEFSRSk7CisJKmN4dCA9IGhhc2hzZXRfbWFrZV9m bihKc29uVW5pcXVlSGFzaEVudHJ5LCAianNvbiBvYmplY3QgaGFzaHRhYmxlIiwgMzIsCisJCQkJ CQkgICBqc29uX3VuaXF1ZV9oYXNoLCBqc29uX3VuaXF1ZV9oYXNoX21hdGNoKTsKIH0KIAogc3Rh dGljIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYwppbmRleCAxZTViNjA4MDFlNC4uNDE1 NjQ1M2Y4YzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKQEAgLTM4MDgsMTggKzM4MDgs MTIgQEAgc3RhdGljIEhUQUIgKgogZ2V0X2pzb25fb2JqZWN0X2FzX2hhc2goY29uc3QgY2hhciAq anNvbiwgaW50IGxlbiwgY29uc3QgY2hhciAqZnVuY25hbWUsCiAJCQkJCQlOb2RlICplc2NvbnRl eHQpCiB7Ci0JSEFTSENUTAkJY3RsOwogCUhUQUIJICAgKnRhYjsKIAlKSGFzaFN0YXRlICpzdGF0 ZTsKIAlKc29uU2VtQWN0aW9uICpzZW07CiAKLQljdGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwot CWN0bC5lbnRyeXNpemUgPSBzaXplb2YoSnNvbkhhc2hFbnRyeSk7Ci0JY3RsLmhjeHQgPSBDdXJy ZW50TWVtb3J5Q29udGV4dDsKLQl0YWIgPSBoYXNoX2NyZWF0ZSgianNvbiBvYmplY3QgaGFzaHRh YmxlIiwKLQkJCQkJICAxMDAsCi0JCQkJCSAgJmN0bCwKLQkJCQkJICBIQVNIX0VMRU0gfCBIQVNI X1NUUklOR1MgfCBIQVNIX0NPTlRFWFQpOworCXRhYiA9IGhhc2hfbWFrZShKc29uSGFzaEVudHJ5 LCBmbmFtZSwKKwkJCQkJImpzb24gb2JqZWN0IGhhc2h0YWJsZSIsIDEwMCk7CiAKIAlzdGF0ZSA9 IHBhbGxvYzBfb2JqZWN0KEpIYXNoU3RhdGUpOwogCXNlbSA9IHBhbGxvYzBfb2JqZWN0KEpzb25T ZW1BY3Rpb24pOwpAQCAtNDIxMyw3ICs0MjA3LDYgQEAgcG9wdWxhdGVfcmVjb3Jkc2V0X29iamVj dF9zdGFydCh2b2lkICpzdGF0ZSkKIHsKIAlQb3B1bGF0ZVJlY29yZHNldFN0YXRlICpfc3RhdGUg PSAoUG9wdWxhdGVSZWNvcmRzZXRTdGF0ZSAqKSBzdGF0ZTsKIAlpbnQJCQlsZXhfbGV2ZWwgPSBf c3RhdGUtPmxleC0+bGV4X2xldmVsOwotCUhBU0hDVEwJCWN0bDsKIAogCS8qIFJlamVjdCBvYmpl Y3QgYXQgdG9wIGxldmVsOiB3ZSBtdXN0IGhhdmUgYW4gYXJyYXkgYXQgbGV2ZWwgMCAqLwogCWlm IChsZXhfbGV2ZWwgPT0gMCkKQEAgLTQyMjcsMTMgKzQyMjAsOCBAQCBwb3B1bGF0ZV9yZWNvcmRz ZXRfb2JqZWN0X3N0YXJ0KHZvaWQgKnN0YXRlKQogCQlyZXR1cm4gSlNPTl9TVUNDRVNTOwogCiAJ LyogT2JqZWN0IGF0IGxldmVsIDE6IHNldCB1cCBhIG5ldyBoYXNoIHRhYmxlIGZvciB0aGlzIG9i amVjdCAqLwotCWN0bC5rZXlzaXplID0gTkFNRURBVEFMRU47Ci0JY3RsLmVudHJ5c2l6ZSA9IHNp emVvZihKc29uSGFzaEVudHJ5KTsKLQljdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0Owot CV9zdGF0ZS0+anNvbl9oYXNoID0gaGFzaF9jcmVhdGUoImpzb24gb2JqZWN0IGhhc2h0YWJsZSIs Ci0JCQkJCQkJCQkxMDAsCi0JCQkJCQkJCQkmY3RsLAotCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFT SF9TVFJJTkdTIHwgSEFTSF9DT05URVhUKTsKKwlfc3RhdGUtPmpzb25faGFzaCA9IGhhc2hfbWFr ZShKc29uSGFzaEVudHJ5LCBmbmFtZSwKKwkJCQkJCQkJICAianNvbiBvYmplY3QgaGFzaHRhYmxl IiwgMTAwKTsKIAogCXJldHVybiBKU09OX1NVQ0NFU1M7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1 bmNzLmMKaW5kZXggMTJiOGQ0Y2VmYWYuLjY5NDI1MmNmZWQ1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21j eHRmdW5jcy5jCkBAIC0xODUsMTcgKzE4NSwxMCBAQCBwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29u dGV4dHMoUEdfRlVOQ1RJT05fQVJHUykKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJu U2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CiAJaW50CQkJY29udGV4dF9pZDsKIAlMaXN0 CSAgICpjb250ZXh0czsKLQlIQVNIQ1RMCQljdGw7CiAJSFRBQgkgICAqY29udGV4dF9pZF9sb29r dXA7CiAKLQljdGwua2V5c2l6ZSA9IHNpemVvZihNZW1vcnlDb250ZXh0KTsKLQljdGwuZW50cnlz aXplID0gc2l6ZW9mKE1lbW9yeUNvbnRleHRJZCk7Ci0JY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5 Q29udGV4dDsKLQotCWNvbnRleHRfaWRfbG9va3VwID0gaGFzaF9jcmVhdGUoInBnX2dldF9iYWNr ZW5kX21lbW9yeV9jb250ZXh0cyIsCi0JCQkJCQkJCQkyNTYsCi0JCQkJCQkJCQkmY3RsLAotCQkJ CQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJY29udGV4dF9p ZF9sb29rdXAgPSBoYXNoX21ha2UoTWVtb3J5Q29udGV4dElkLCBjb250ZXh0LAorCQkJCQkJCQkg ICJwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMiLCAyNTYpOwogCiAJSW5pdE1hdGVyaWFs aXplZFNSRihmY2luZm8sIDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv cmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4 IGJiYWRlY2VmNWY5Li41MzM0YzlkZDc1MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3JpX3RyaWdnZXJzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJz LmMKQEAgLTI4NTksMzAgKzI4NTksMjUgQEAgcmlfTnVsbENoZWNrKFR1cGxlRGVzYyB0dXBEZXNj LAogc3RhdGljIHZvaWQKIHJpX0luaXRIYXNoVGFibGVzKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3Rs OwotCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9m KFJJX0NvbnN0cmFpbnRJbmZvKTsKLQlyaV9jb25zdHJhaW50X2NhY2hlID0gaGFzaF9jcmVhdGUo IlJJIGNvbnN0cmFpbnQgY2FjaGUiLAotCQkJCQkJCQkJICBSSV9JTklUX0NPTlNUUkFJTlRIQVNI U0laRSwKLQkJCQkJCQkJCSAgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJcmlfY29u c3RyYWludF9jYWNoZSA9IGhhc2hfbWFrZV9jeHQoUklfQ29uc3RyYWludEluZm8sIGNvbnN0cmFp bnRfaWQsCisJCQkJCQkJCQkJIlJJIGNvbnN0cmFpbnQgY2FjaGUiLAorCQkJCQkJCQkJCVJJX0lO SVRfQ09OU1RSQUlOVEhBU0hTSVpFLAorCQkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogCiAJ LyogQXJyYW5nZSB0byBmbHVzaCBjYWNoZSBvbiBwZ19jb25zdHJhaW50IGNoYW5nZXMgKi8KIAlD YWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhDT05TVFJPSUQsCiAJCQkJCQkJCSAgSW52YWxp ZGF0ZUNvbnN0cmFpbnRDYWNoZUNhbGxCYWNrLAogCQkJCQkJCQkgIChEYXR1bSkgMCk7CiAKLQlj dGwua2V5c2l6ZSA9IHNpemVvZihSSV9RdWVyeUtleSk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVv ZihSSV9RdWVyeUhhc2hFbnRyeSk7Ci0JcmlfcXVlcnlfY2FjaGUgPSBoYXNoX2NyZWF0ZSgiUkkg cXVlcnkgY2FjaGUiLAotCQkJCQkJCQkgUklfSU5JVF9RVUVSWUhBU0hTSVpFLAotCQkJCQkJCQkg JmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7Ci0KLQljdGwua2V5c2l6ZSA9IHNpemVvZihS SV9Db21wYXJlS2V5KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFJJX0NvbXBhcmVIYXNoRW50 cnkpOwotCXJpX2NvbXBhcmVfY2FjaGUgPSBoYXNoX2NyZWF0ZSgiUkkgY29tcGFyZSBjYWNoZSIs CisJcmlfcXVlcnlfY2FjaGUgPSBoYXNoX21ha2VfY3h0KFJJX1F1ZXJ5SGFzaEVudHJ5LCBrZXks CisJCQkJCQkJCSAgICJSSSBxdWVyeSBjYWNoZSIsCiAJCQkJCQkJCSAgIFJJX0lOSVRfUVVFUllI QVNIU0laRSwKLQkJCQkJCQkJICAgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCQkJ CQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOworCisJcmlfY29tcGFyZV9jYWNoZSA9IGhhc2hfbWFr ZV9jeHQoUklfQ29tcGFyZUhhc2hFbnRyeSwga2V5LAorCQkJCQkJCQkJICJSSSBjb21wYXJlIGNh Y2hlIiwKKwkJCQkJCQkJCSBSSV9JTklUX1FVRVJZSEFTSFNJWkUsCisJCQkJCQkJCQkgVG9wTWVt b3J5Q29udGV4dCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IGI1YTdh ZDkwNjZlLi41NDY4ZTA3ZDBjZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMzg4 Nyw3ICszODg3LDYgQEAgc3RhdGljIHZvaWQKIHNldF9ydGFibGVfbmFtZXMoZGVwYXJzZV9uYW1l c3BhY2UgKmRwbnMsIExpc3QgKnBhcmVudF9uYW1lc3BhY2VzLAogCQkJCSBCaXRtYXBzZXQgKnJl bHNfdXNlZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAlIVEFCCSAgICpuYW1lc19oYXNoOwog CU5hbWVIYXNoRW50cnkgKmhlbnRyeTsKIAlib29sCQlmb3VuZDsKQEAgLTM5MDMsMTMgKzM5MDIs OSBAQCBzZXRfcnRhYmxlX25hbWVzKGRlcGFyc2VfbmFtZXNwYWNlICpkcG5zLCBMaXN0ICpwYXJl bnRfbmFtZXNwYWNlcywKIAkgKiBXZSB1c2UgYSBoYXNoIHRhYmxlIHRvIGhvbGQga25vd24gbmFt ZXMsIHNvIHRoYXQgdGhpcyBwcm9jZXNzIGlzIE8oTikKIAkgKiBub3QgTyhOXjIpIGZvciBOIG5h bWVzLgogCSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQloYXNoX2N0bC5l bnRyeXNpemUgPSBzaXplb2YoTmFtZUhhc2hFbnRyeSk7Ci0JaGFzaF9jdGwuaGN4dCA9IEN1cnJl bnRNZW1vcnlDb250ZXh0OwotCW5hbWVzX2hhc2ggPSBoYXNoX2NyZWF0ZSgic2V0X3J0YWJsZV9u YW1lcyBuYW1lcyIsCi0JCQkJCQkJIGxpc3RfbGVuZ3RoKGRwbnMtPnJ0YWJsZSksCi0JCQkJCQkJ ICZoYXNoX2N0bCwKLQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTIHwgSEFTSF9DT05U RVhUKTsKKwluYW1lc19oYXNoID0gaGFzaF9tYWtlKE5hbWVIYXNoRW50cnksIG5hbWUsCisJCQkJ CQkgICAic2V0X3J0YWJsZV9uYW1lcyBuYW1lcyIsCisJCQkJCQkgICBsaXN0X2xlbmd0aChkcG5z LT5ydGFibGUpKTsKIAogCS8qIFByZWxvYWQgdGhlIGhhc2ggdGFibGUgd2l0aCBuYW1lcyBhcHBl YXJpbmcgaW4gcGFyZW50X25hbWVzcGFjZXMgKi8KIAlmb3JlYWNoKGxjLCBwYXJlbnRfbmFtZXNw YWNlcykKQEAgLTQ5ODAsNyArNDk3NSw2IEBAIGV4cGFuZF9jb2xuYW1lc19hcnJheV90byhkZXBh cnNlX2NvbHVtbnMgKmNvbGluZm8sIGludCBuKQogc3RhdGljIHZvaWQKIGJ1aWxkX2NvbGluZm9f bmFtZXNfaGFzaChkZXBhcnNlX2NvbHVtbnMgKmNvbGluZm8pCiB7Ci0JSEFTSENUTAkJaGFzaF9j dGw7CiAJaW50CQkJaTsKIAlMaXN0Q2VsbCAgICpsYzsKIApAQCAtNDk5NiwxMyArNDk5MCwxMCBA QCBidWlsZF9jb2xpbmZvX25hbWVzX2hhc2goZGVwYXJzZV9jb2x1bW5zICpjb2xpbmZvKQogCSAq IFNldCB1cCB0aGUgaGFzaCB0YWJsZS4gIFRoZSBlbnRyaWVzIGFyZSBqdXN0IHN0cmluZ3Mgd2l0 aCBubyBvdGhlcgogCSAqIHBheWxvYWQuCiAJICovCi0JaGFzaF9jdGwua2V5c2l6ZSA9IE5BTUVE QVRBTEVOOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IE5BTUVEQVRBTEVOOwotCWhhc2hfY3RsLmhj eHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQljb2xpbmZvLT5uYW1lc19oYXNoID0gaGFzaF9j cmVhdGUoImRlcGFyc2VfY29sdW1ucyBuYW1lcyIsCi0JCQkJCQkJCQkgIGNvbGluZm8tPm51bV9j b2xzICsgY29saW5mby0+bnVtX25ld19jb2xzLAotCQkJCQkJCQkJICAmaGFzaF9jdGwsCi0JCQkJ CQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJY29saW5m by0+bmFtZXNfaGFzaCA9CisJCWhhc2hzZXRfbWFrZV9jeHQoTmFtZURhdGEsICJkZXBhcnNlX2Nv bHVtbnMgbmFtZXMiLAorCQkJCQkJIGNvbGluZm8tPm51bV9jb2xzICsgY29saW5mby0+bnVtX25l d19jb2xzLAorCQkJCQkJIEN1cnJlbnRNZW1vcnlDb250ZXh0KTsKIAogCS8qCiAJICogUHJlbG9h ZCB0aGUgaGFzaCB0YWJsZSB3aXRoIGFueSBuYW1lcyBhbHJlYWR5IHByZXNlbnQgKHRoZXNlIHdv dWxkIGhhdmUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2F0dG9wdGNhY2hl LmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9hdHRvcHRjYWNoZS5jCmluZGV4IDcyZWRjOGY2 NjViLi43NzFiZjc3ZmE3NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvYXR0 b3B0Y2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9hdHRvcHRjYWNoZS5jCkBA IC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAidXRpbHMvY2F0Y2FjaGUuaCIKICNpbmNsdWRlICJ1 dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidmFy YXR0LmgiCiAKQEAgLTk2LDIyICs5NywxNSBAQCByZWxhdHRfY2FjaGVfc3lzaGFzaChjb25zdCB2 b2lkICprZXksIFNpemUga2V5c2l6ZSkKIHN0YXRpYyB2b2lkCiBJbml0aWFsaXplQXR0b3B0Q2Fj aGUodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KLQkvKiBJbml0aWFsaXplIHRoZSBoYXNoIHRh YmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKEF0dG9wdENhY2hlS2V5KTsKLQljdGwuZW50 cnlzaXplID0gc2l6ZW9mKEF0dG9wdENhY2hlRW50cnkpOwotCiAJLyoKIAkgKiBBdHRvcHRDYWNo ZUVudHJ5IHRha2VzIGhhc2ggdmFsdWUgZnJvbSB0aGUgc3lzdGVtIGNhY2hlLiBGb3IKIAkgKiBB dHRvcHRDYWNoZUhhc2ggd2UgdXNlIHRoZSBzYW1lIGhhc2ggaW4gb3JkZXIgdG8gc3BlZWR1cCBz ZWFyY2ggYnkgaGFzaAogCSAqIHZhbHVlLiBUaGlzIGlzIHVzZWQgYnkgaGFzaF9zZXFfaW5pdF93 aXRoX2hhc2hfdmFsdWUoKS4KIAkgKi8KLQljdGwuaGFzaCA9IHJlbGF0dF9jYWNoZV9zeXNoYXNo OwotCi0JQXR0b3B0Q2FjaGVIYXNoID0KLQkJaGFzaF9jcmVhdGUoIkF0dG9wdCBjYWNoZSIsIDI1 NiwgJmN0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTik7CisJQXR0b3B0Q2FjaGVI YXNoID0gaGFzaF9tYWtlX2ZuX2N4dChBdHRvcHRDYWNoZUVudHJ5LCBrZXksCisJCQkJCQkJCQkg ICAiQXR0b3B0IGNhY2hlIiwgMjU2LAorCQkJCQkJCQkJICAgcmVsYXR0X2NhY2hlX3N5c2hhc2gs IE5VTEwsCisJCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsKIAogCS8qIE1ha2Ugc3VyZSB3 ZSd2ZSBpbml0aWFsaXplZCBDYWNoZU1lbW9yeUNvbnRleHQuICovCiAJaWYgKCFDYWNoZU1lbW9y eUNvbnRleHQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9ldnRjYWNoZS5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0Y2FjaGUuYwppbmRleCAyYjQ0NTNlNTRhNy4u NjUyZjZmMjViZTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2V2dGNhY2hl LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0Y2FjaGUuYwpAQCAtNzYsNyArNzYs NiBAQCBFdmVudENhY2hlTG9va3VwKEV2ZW50VHJpZ2dlckV2ZW50IGV2ZW50KQogc3RhdGljIHZv aWQKIEJ1aWxkRXZlbnRUcmlnZ2VyQ2FjaGUodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7CiAJSFRB QgkgICAqY2FjaGU7CiAJUmVsYXRpb24JcmVsOwogCVJlbGF0aW9uCWlyZWw7CkBAIC0xMTMsMTEg KzExMiw5IEBAIEJ1aWxkRXZlbnRUcmlnZ2VyQ2FjaGUodm9pZCkKIAlFdmVudFRyaWdnZXJDYWNo ZVN0YXRlID0gRVRDU19SRUJVSUxEX1NUQVJURUQ7CiAKIAkvKiBDcmVhdGUgbmV3IGhhc2ggdGFi bGUuICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoRXZlbnRUcmlnZ2VyRXZlbnQpOwotCWN0bC5l bnRyeXNpemUgPSBzaXplb2YoRXZlbnRUcmlnZ2VyQ2FjaGVFbnRyeSk7Ci0JY3RsLmhjeHQgPSBF dmVudFRyaWdnZXJDYWNoZUNvbnRleHQ7Ci0JY2FjaGUgPSBoYXNoX2NyZWF0ZSgiRXZlbnRUcmln Z2VyQ2FjaGVIYXNoIiwgMzIsICZjdGwsCi0JCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwg SEFTSF9DT05URVhUKTsKKwljYWNoZSA9IGhhc2hfbWFrZV9jeHQoRXZlbnRUcmlnZ2VyQ2FjaGVF bnRyeSwgZXZlbnQsCisJCQkJCQkgICJFdmVudFRyaWdnZXJDYWNoZUhhc2giLCAzMiwKKwkJCQkJ CSAgRXZlbnRUcmlnZ2VyQ2FjaGVDb250ZXh0KTsKIAogCS8qCiAJICogUHJlcGFyZSB0byBzY2Fu IHBnX2V2ZW50X3RyaWdnZXIgaW4gbmFtZSBvcmRlci4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2Nh Y2hlLmMKaW5kZXggNzAxYzI5NGI4OGQuLmJlZjkzOGMzN2MwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9mdW5jY2FjaGUuYwpAQCAtNTgsMTkgKzU4LDEzIEBAIHN0YXRpYyBpbnQJY2Z1bmNfbWF0Y2go Y29uc3Qgdm9pZCAqa2V5MSwgY29uc3Qgdm9pZCAqa2V5MiwgU2l6ZSBrZXlzaXplKTsKIHN0YXRp YyB2b2lkCiBjZnVuY19oYXNodGFibGVfaW5pdCh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQog CS8qIGRvbid0IGFsbG93IGRvdWJsZS1pbml0aWFsaXphdGlvbiAqLwogCUFzc2VydChjZnVuY19o YXNodGFibGUgPT0gTlVMTCk7CiAKLQljdGwua2V5c2l6ZSA9IHNpemVvZihDYWNoZWRGdW5jdGlv bkhhc2hLZXkpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoQ2FjaGVkRnVuY3Rpb25IYXNoRW50 cnkpOwotCWN0bC5oYXNoID0gY2Z1bmNfaGFzaDsKLQljdGwubWF0Y2ggPSBjZnVuY19tYXRjaDsK LQljZnVuY19oYXNodGFibGUgPSBoYXNoX2NyZWF0ZSgiQ2FjaGVkIGZ1bmN0aW9uIGhhc2giLAot CQkJCQkJCQkgIEZVTkNTX1BFUl9VU0VSLAotCQkJCQkJCQkgICZjdGwsCi0JCQkJCQkJCSAgSEFT SF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfQ09NUEFSRSk7CisJY2Z1bmNfaGFzaHRhYmxl ID0gaGFzaF9tYWtlX2ZuX2N4dChDYWNoZWRGdW5jdGlvbkhhc2hFbnRyeSwga2V5LAorCQkJCQkJ CQkJICAgIkNhY2hlZCBmdW5jdGlvbiBoYXNoIiwgRlVOQ1NfUEVSX1VTRVIsCisJCQkJCQkJCQkg ICBjZnVuY19oYXNoLCBjZnVuY19tYXRjaCwKKwkJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQp OwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggNmI2MzRjOWZmZjEu LmMxNWIxMjdiZGJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNo ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTE2NzIsMTcg KzE2NzIsMTQgQEAgTG9va3VwT3BjbGFzc0luZm8oT2lkIG9wZXJhdG9yQ2xhc3NPaWQsCiAKIAlp ZiAoT3BDbGFzc0NhY2hlID09IE5VTEwpCiAJewotCQkvKiBGaXJzdCB0aW1lIHRocm91Z2g6IGlu aXRpYWxpemUgdGhlIG9wY2xhc3MgY2FjaGUgKi8KLQkJSEFTSENUTAkJY3RsOwotCiAJCS8qIEFs c28gbWFrZSBzdXJlIENhY2hlTWVtb3J5Q29udGV4dCBleGlzdHMgKi8KIAkJaWYgKCFDYWNoZU1l bW9yeUNvbnRleHQpCiAJCQlDcmVhdGVDYWNoZU1lbW9yeUNvbnRleHQoKTsKIAotCQljdGwua2V5 c2l6ZSA9IHNpemVvZihPaWQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKE9wQ2xhc3NDYWNo ZUVudCk7Ci0JCU9wQ2xhc3NDYWNoZSA9IGhhc2hfY3JlYXRlKCJPcGVyYXRvciBjbGFzcyBjYWNo ZSIsIDY0LAotCQkJCQkJCQkgICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJLyog Rmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBvcGNsYXNzIGNhY2hlICovCisJCU9w Q2xhc3NDYWNoZSA9IGhhc2hfbWFrZV9jeHQoT3BDbGFzc0NhY2hlRW50LCBvcGNsYXNzb2lkLAor CQkJCQkJCQkJICJPcGVyYXRvciBjbGFzcyBjYWNoZSIsIDY0LAorCQkJCQkJCQkJIFRvcE1lbW9y eUNvbnRleHQpOwogCX0KIAogCW9wY2VudHJ5ID0gKE9wQ2xhc3NDYWNoZUVudCAqKSBoYXNoX3Nl YXJjaChPcENsYXNzQ2FjaGUsCkBAIC0zOTk2LDcgKzM5OTMsNiBAQCBSZWxhdGlvbkFzc3VtZU5l d1JlbGZpbGVsb2NhdG9yKFJlbGF0aW9uIHJlbGF0aW9uKQogdm9pZAogUmVsYXRpb25DYWNoZUlu aXRpYWxpemUodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7CiAJaW50CQkJYWxsb2NzaXplOwogCiAJ LyoKQEAgLTQwMDgsMTAgKzQwMDQsOSBAQCBSZWxhdGlvbkNhY2hlSW5pdGlhbGl6ZSh2b2lkKQog CS8qCiAJICogY3JlYXRlIGhhc2h0YWJsZSB0aGF0IGluZGV4ZXMgdGhlIHJlbGNhY2hlCiAJICov Ci0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFJl bElkQ2FjaGVFbnQpOwotCVJlbGF0aW9uSWRDYWNoZSA9IGhhc2hfY3JlYXRlKCJSZWxjYWNoZSBi eSBPSUQiLCBJTklUUkVMQ0FDSEVTSVpFLAotCQkJCQkJCQkgICZjdGwsIEhBU0hfRUxFTSB8IEhB U0hfQkxPQlMpOworCVJlbGF0aW9uSWRDYWNoZSA9IGhhc2hfbWFrZV9jeHQoUmVsSWRDYWNoZUVu dCwgcmVsb2lkLAorCQkJCQkJCQkJIlJlbGNhY2hlIGJ5IE9JRCIsIElOSVRSRUxDQUNIRVNJWkUs CisJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIAogCS8qCiAJICogcmVzZXJ2ZSBlbm91Z2gg aW5fcHJvZ3Jlc3NfbGlzdCBzbG90cyBmb3IgbWFueSBjYXNlcwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jCmluZGV4IDZmOTcwZmFmYTA1Li4wOWIwNWRlYzlkMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYwpAQCAtODUsNyAr ODUsNiBAQCBSZWxmaWxlbnVtYmVyTWFwSW52YWxpZGF0ZUNhbGxiYWNrKERhdHVtIGFyZywgT2lk IHJlbGlkKQogc3RhdGljIHZvaWQKIEluaXRpYWxpemVSZWxmaWxlbnVtYmVyTWFwKHZvaWQpCiB7 Ci0JSEFTSENUTAkJY3RsOwogCWludAkJCWk7CiAKIAkvKiBNYWtlIHN1cmUgd2UndmUgaW5pdGlh bGl6ZWQgQ2FjaGVNZW1vcnlDb250ZXh0LiAqLwpAQCAtMTEzLDEzICsxMTIsOSBAQCBJbml0aWFs aXplUmVsZmlsZW51bWJlck1hcCh2b2lkKQogCSAqIGluaXRpYWxpemVkIHdoZW4gZm1ncl9pbmZv X2N4dCgpIGFib3ZlIEVSUk9ScyBvdXQgd2l0aCBhbiBvdXQgb2YgbWVtb3J5CiAJICogZXJyb3Iu CiAJICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoUmVsZmlsZW51bWJlck1hcEtleSk7Ci0JY3Rs LmVudHJ5c2l6ZSA9IHNpemVvZihSZWxmaWxlbnVtYmVyTWFwRW50cnkpOwotCWN0bC5oY3h0ID0g Q2FjaGVNZW1vcnlDb250ZXh0OwotCiAJUmVsZmlsZW51bWJlck1hcEhhc2ggPQotCQloYXNoX2Ny ZWF0ZSgiUmVsZmlsZW51bWJlck1hcCBjYWNoZSIsIDY0LCAmY3RsLAotCQkJCQlIQVNIX0VMRU0g fCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwkJaGFzaF9tYWtlX2N4dChSZWxmaWxlbnVt YmVyTWFwRW50cnksIGtleSwKKwkJCQkJICAiUmVsZmlsZW51bWJlck1hcCBjYWNoZSIsIDY0LCBD YWNoZU1lbW9yeUNvbnRleHQpOwogCiAJLyogV2F0Y2ggZm9yIGludmFsaWRhdGlvbiBldmVudHMu ICovCiAJQ2FjaGVSZWdpc3RlclJlbGNhY2hlQ2FsbGJhY2soUmVsZmlsZW51bWJlck1hcEludmFs aWRhdGVDYWxsYmFjaywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3NwY2Nh Y2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zcGNjYWNoZS5jCmluZGV4IDhmMWE1ZTY5 NTk1Li5iZjAwN2Q2OWFkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3Bj Y2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zcGNjYWNoZS5jCkBAIC0yNyw2 ICsyNyw3IEBACiAjaW5jbHVkZSAidXRpbHMvY2F0Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9o c2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11 dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3NwY2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lz Y2FjaGUuaCIKICNpbmNsdWRlICJ2YXJhdHQuaCIKQEAgLTc3LDE0ICs3OCwxMCBAQCBJbnZhbGlk YXRlVGFibGVTcGFjZUNhY2hlQ2FsbGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMy IGhhc2h2YWx1ZSkKIHN0YXRpYyB2b2lkCiBJbml0aWFsaXplVGFibGVTcGFjZUNhY2hlKHZvaWQp CiB7Ci0JSEFTSENUTAkJY3RsOwotCiAJLyogSW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZS4gKi8K LQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoVGFi bGVTcGFjZUNhY2hlRW50cnkpOwogCVRhYmxlU3BhY2VDYWNoZUhhc2ggPQotCQloYXNoX2NyZWF0 ZSgiVGFibGVTcGFjZSBjYWNoZSIsIDE2LCAmY3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JM T0JTKTsKKwkJaGFzaF9tYWtlX2N4dChUYWJsZVNwYWNlQ2FjaGVFbnRyeSwgb2lkLAorCQkJCQkg ICJUYWJsZVNwYWNlIGNhY2hlIiwgMTYsIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyogTWFrZSBz dXJlIHdlJ3ZlIGluaXRpYWxpemVkIENhY2hlTWVtb3J5Q29udGV4dC4gKi8KIAlpZiAoIUNhY2hl TWVtb3J5Q29udGV4dCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2Nh Y2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90c19jYWNoZS5jCmluZGV4IDcxZTQ5YjJi OTE5Li5lOWFlNGE1ZjA5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHNf Y2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90c19jYWNoZS5jCkBAIC0xMTcs MTIgKzExNyw5IEBAIGxvb2t1cF90c19wYXJzZXJfY2FjaGUoT2lkIHByc0lkKQogCWlmIChUU1Bh cnNlckNhY2hlSGFzaCA9PSBOVUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0 aWFsaXplIHRoZSBoYXNoIHRhYmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwua2V5c2l6 ZSA9IHNpemVvZihPaWQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFRTUGFyc2VyQ2FjaGVF bnRyeSk7Ci0JCVRTUGFyc2VyQ2FjaGVIYXNoID0gaGFzaF9jcmVhdGUoIlRzZWFyY2ggcGFyc2Vy IGNhY2hlIiwgNCwKLQkJCQkJCQkJCQkmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJ VFNQYXJzZXJDYWNoZUhhc2ggPSBoYXNoX21ha2VfY3h0KFRTUGFyc2VyQ2FjaGVFbnRyeSwgcHJz SWQsCisJCQkJCQkJCQkJICAiVHNlYXJjaCBwYXJzZXIgY2FjaGUiLCA0LAorCQkJCQkJCQkJCSAg VG9wTWVtb3J5Q29udGV4dCk7CiAJCS8qIEZsdXNoIGNhY2hlIG9uIHBnX3RzX3BhcnNlciBjaGFu Z2VzICovCiAJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFRTUEFSU0VST0lELCBJbnZh bGlkYXRlVFNDYWNoZUNhbGxCYWNrLAogCQkJCQkJCQkJICBQb2ludGVyR2V0RGF0dW0oVFNQYXJz ZXJDYWNoZUhhc2gpKTsKQEAgLTIxMiwxMiArMjA5LDkgQEAgbG9va3VwX3RzX2RpY3Rpb25hcnlf Y2FjaGUoT2lkIGRpY3RJZCkKIAlpZiAoVFNEaWN0aW9uYXJ5Q2FjaGVIYXNoID09IE5VTEwpCiAJ ewogCQkvKiBGaXJzdCB0aW1lIHRocm91Z2g6IGluaXRpYWxpemUgdGhlIGhhc2ggdGFibGUgKi8K LQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JCWN0bC5l bnRyeXNpemUgPSBzaXplb2YoVFNEaWN0aW9uYXJ5Q2FjaGVFbnRyeSk7Ci0JCVRTRGljdGlvbmFy eUNhY2hlSGFzaCA9IGhhc2hfY3JlYXRlKCJUc2VhcmNoIGRpY3Rpb25hcnkgY2FjaGUiLCA4LAot CQkJCQkJCQkJCQkmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJVFNEaWN0aW9uYXJ5 Q2FjaGVIYXNoID0gaGFzaF9tYWtlX2N4dChUU0RpY3Rpb25hcnlDYWNoZUVudHJ5LCBkaWN0SWQs CisJCQkJCQkJCQkJCSAgIlRzZWFyY2ggZGljdGlvbmFyeSBjYWNoZSIsIDgsCisJCQkJCQkJCQkJ CSAgVG9wTWVtb3J5Q29udGV4dCk7CiAJCS8qIEZsdXNoIGNhY2hlIG9uIHBnX3RzX2RpY3QgYW5k IHBnX3RzX3RlbXBsYXRlIGNoYW5nZXMgKi8KIAkJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJh Y2soVFNESUNUT0lELCBJbnZhbGlkYXRlVFNDYWNoZUNhbGxCYWNrLAogCQkJCQkJCQkJICBQb2lu dGVyR2V0RGF0dW0oVFNEaWN0aW9uYXJ5Q2FjaGVIYXNoKSk7CkBAIC0zNjMsMTIgKzM1Nyw5IEBA IGxvb2t1cF90c19kaWN0aW9uYXJ5X2NhY2hlKE9pZCBkaWN0SWQpCiBzdGF0aWMgdm9pZAogaW5p dF90c19jb25maWdfY2FjaGUodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KLQljdGwua2V5c2l6 ZSA9IHNpemVvZihPaWQpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoVFNDb25maWdDYWNoZUVu dHJ5KTsKLQlUU0NvbmZpZ0NhY2hlSGFzaCA9IGhhc2hfY3JlYXRlKCJUc2VhcmNoIGNvbmZpZ3Vy YXRpb24gY2FjaGUiLCAxNiwKLQkJCQkJCQkJCSZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMp OworCVRTQ29uZmlnQ2FjaGVIYXNoID0gaGFzaF9tYWtlX2N4dChUU0NvbmZpZ0NhY2hlRW50cnks IGNmZ0lkLAorCQkJCQkJCQkJICAiVHNlYXJjaCBjb25maWd1cmF0aW9uIGNhY2hlIiwgMTYsCisJ CQkJCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQpOwogCS8qIEZsdXNoIGNhY2hlIG9uIHBnX3RzX2Nv bmZpZyBhbmQgcGdfdHNfY29uZmlnX21hcCBjaGFuZ2VzICovCiAJQ2FjaGVSZWdpc3RlclN5c2Nh Y2hlQ2FsbGJhY2soVFNDT05GSUdPSUQsIEludmFsaWRhdGVUU0NhY2hlQ2FsbEJhY2ssCiAJCQkJ CQkJCSAgUG9pbnRlckdldERhdHVtKFRTQ29uZmlnQ2FjaGVIYXNoKSk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvdHlwY2FjaGUuYwppbmRleCBkYzRiMWE1NjQxNC4uNzRkYTQxOGE3N2MgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvdHlwY2FjaGUuYwpAQCAtMzkyLDI4ICszOTIsMjMgQEAgbG9va3VwX3R5cGVfY2Fj aGUoT2lkIHR5cGVfaWQsIGludCBmbGFncykKIAlpZiAoVHlwZUNhY2hlSGFzaCA9PSBOVUxMKQog CXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlICov Ci0JCUhBU0hDVEwJCWN0bDsKIAkJaW50CQkJYWxsb2NzaXplOwogCi0JCWN0bC5rZXlzaXplID0g c2l6ZW9mKE9pZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoVHlwZUNhY2hlRW50cnkpOwot CiAJCS8qCiAJCSAqIFR5cGVDYWNoZUVudHJ5IHRha2VzIGhhc2ggdmFsdWUgZnJvbSB0aGUgc3lz dGVtIGNhY2hlLiBGb3IKIAkJICogVHlwZUNhY2hlSGFzaCB3ZSB1c2UgdGhlIHNhbWUgaGFzaCBp biBvcmRlciB0byBzcGVlZHVwIHNlYXJjaCBieQogCQkgKiBoYXNoIHZhbHVlLiBUaGlzIGlzIHVz ZWQgYnkgaGFzaF9zZXFfaW5pdF93aXRoX2hhc2hfdmFsdWUoKS4KIAkJICovCi0JCWN0bC5oYXNo ID0gdHlwZV9jYWNoZV9zeXNoYXNoOwotCi0JCVR5cGVDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgi VHlwZSBpbmZvcm1hdGlvbiBjYWNoZSIsIDY0LAotCQkJCQkJCQkJJmN0bCwgSEFTSF9FTEVNIHwg SEFTSF9GVU5DVElPTik7CisJCVR5cGVDYWNoZUhhc2ggPSBoYXNoX21ha2VfZm5fY3h0KFR5cGVD YWNoZUVudHJ5LCB0eXBlX2lkLAorCQkJCQkJCQkJCSAiVHlwZSBpbmZvcm1hdGlvbiBjYWNoZSIs IDY0LAorCQkJCQkJCQkJCSB0eXBlX2NhY2hlX3N5c2hhc2gsIE5VTEwsCisJCQkJCQkJCQkJIFRv cE1lbW9yeUNvbnRleHQpOwogCiAJCUFzc2VydChSZWxJZFRvVHlwZUlkQ2FjaGVIYXNoID09IE5V TEwpOwogCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBz aXplb2YoUmVsSWRUb1R5cGVJZENhY2hlRW50cnkpOwotCQlSZWxJZFRvVHlwZUlkQ2FjaGVIYXNo ID0gaGFzaF9jcmVhdGUoIk1hcCBmcm9tIHJlbGlkIHRvIE9JRCBvZiBjYWNoZWQgY29tcG9zaXRl IHR5cGUiLCA2NCwKLQkJCQkJCQkJCQkJICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOwor CQlSZWxJZFRvVHlwZUlkQ2FjaGVIYXNoID0gaGFzaF9tYWtlX2N4dChSZWxJZFRvVHlwZUlkQ2Fj aGVFbnRyeSwgcmVsaWQsCisJCQkJCQkJCQkJCSAgICJNYXAgZnJvbSByZWxpZCB0byBPSUQgb2Yg Y2FjaGVkIGNvbXBvc2l0ZSB0eXBlIiwKKwkJCQkJCQkJCQkJICAgNjQsIFRvcE1lbW9yeUNvbnRl eHQpOwogCiAJCS8qIEFsc28gc2V0IHVwIGNhbGxiYWNrcyBmb3IgU0kgaW52YWxpZGF0aW9ucyAq LwogCQlDYWNoZVJlZ2lzdGVyUmVsY2FjaGVDYWxsYmFjayhUeXBlQ2FjaGVSZWxDYWxsYmFjaywg KERhdHVtKSAwKTsKQEAgLTIwNTAsMTUgKzIwNDUsMTEgQEAgYXNzaWduX3JlY29yZF90eXBlX3R5 cG1vZChUdXBsZURlc2MgdHVwRGVzYykKIAlpZiAoUmVjb3JkQ2FjaGVIYXNoID09IE5VTEwpCiAJ ewogCQkvKiBGaXJzdCB0aW1lIHRocm91Z2g6IGluaXRpYWxpemUgdGhlIGhhc2ggdGFibGUgKi8K LQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKFR1cGxlRGVzYyk7CS8q IGp1c3QgdGhlIHBvaW50ZXIgKi8KLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZWNvcmRDYWNo ZUVudHJ5KTsKLQkJY3RsLmhhc2ggPSByZWNvcmRfdHlwZV90eXBtb2RfaGFzaDsKLQkJY3RsLm1h dGNoID0gcmVjb3JkX3R5cGVfdHlwbW9kX2NvbXBhcmU7Ci0JCVJlY29yZENhY2hlSGFzaCA9IGhh c2hfY3JlYXRlKCJSZWNvcmQgaW5mb3JtYXRpb24gY2FjaGUiLCA2NCwKLQkJCQkJCQkJCSAgJmN0 bCwKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfQ09NUEFSRSk7 CisJCVJlY29yZENhY2hlSGFzaCA9IGhhc2hfbWFrZV9mbl9jeHQoUmVjb3JkQ2FjaGVFbnRyeSwg dHVwZGVzYywKKwkJCQkJCQkJCQkgICAiUmVjb3JkIGluZm9ybWF0aW9uIGNhY2hlIiwgNjQsCisJ CQkJCQkJCQkJICAgcmVjb3JkX3R5cGVfdHlwbW9kX2hhc2gsCisJCQkJCQkJCQkJICAgcmVjb3Jk X3R5cGVfdHlwbW9kX2NvbXBhcmUsCisJCQkJCQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiAK IAkJLyogQWxzbyBtYWtlIHN1cmUgQ2FjaGVNZW1vcnlDb250ZXh0IGV4aXN0cyAqLwogCQlpZiAo IUNhY2hlTWVtb3J5Q29udGV4dCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3Iv ZGZtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZGZtZ3IuYwppbmRleCBlNjM2Y2M4MWNm OC4uNWQ5OTQ2N2UyYmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZGZtZ3Iu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMKQEAgLTI2LDYgKzI2LDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgogI2lu Y2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCiAK IC8qIHNpZ25hdHVyZSBmb3IgUG9zdGdyZVNRTC1zcGVjaWZpYyBsaWJyYXJ5IGluaXQgZnVuY3Rp b24gKi8KQEAgLTY3MSwxNCArNjcyLDkgQEAgZmluZF9yZW5kZXp2b3VzX3ZhcmlhYmxlKGNvbnN0 IGNoYXIgKnZhck5hbWUpCiAJLyogQ3JlYXRlIGEgaGFzaHRhYmxlIGlmIHdlIGhhdmVuJ3QgYWxy ZWFkeSBkb25lIHNvIGluIHRoaXMgcHJvY2VzcyAqLwogCWlmIChyZW5kZXp2b3VzSGFzaCA9PSBO VUxMKQogCXsKLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5rZXlzaXplID0gTkFNRURBVEFMRU47 Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YocmVuZGV6dm91c0hhc2hFbnRyeSk7Ci0JCXJlbmRl enZvdXNIYXNoID0gaGFzaF9jcmVhdGUoIlJlbmRlenZvdXMgdmFyaWFibGUgaGFzaCIsCi0JCQkJ CQkJCQkgMTYsCi0JCQkJCQkJCQkgJmN0bCwKLQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX1NU UklOR1MpOworCQlyZW5kZXp2b3VzSGFzaCA9IGhhc2hfbWFrZV9jeHQocmVuZGV6dm91c0hhc2hF bnRyeSwgdmFyTmFtZSwKKwkJCQkJCQkJCSAgICJSZW5kZXp2b3VzIHZhcmlhYmxlIGhhc2giLCAx NiwKKwkJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogCX0KIAogCS8qIEZpbmQgb3IgY3Jl YXRlIHRoZSBoYXNodGFibGUgZW50cnkgZm9yIHRoaXMgdmFyTmFtZSAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMgYi9zcmMvYmFja2VuZC91dGlscy9mbWdyL2Zt Z3IuYwppbmRleCAwNTk4NGU3ZWYyNi4uZGViODU1MTFhZDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2ZtZ3IvZm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5j CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAidXRpbHMvZm1ncnRhYi5oIgogI2luY2x1ZGUg InV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIAogLyoKQEAgLTU0 NywxNCArNTQ4LDggQEAgcmVjb3JkX0NfZnVuYyhIZWFwVHVwbGUgcHJvY2VkdXJlVHVwbGUsCiAJ LyogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlIGlmIGl0IGRvZXNuJ3QgZXhpc3QgeWV0ICovCiAJaWYg KENGdW5jSGFzaCA9PSBOVUxMKQogCXsKLQkJSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQkJaGFzaF9j dGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2Yo Q0Z1bmNIYXNoVGFiRW50cnkpOwotCQlDRnVuY0hhc2ggPSBoYXNoX2NyZWF0ZSgiQ0Z1bmNIYXNo IiwKLQkJCQkJCQkJMTAwLAotCQkJCQkJCQkmaGFzaF9jdGwsCi0JCQkJCQkJCUhBU0hfRUxFTSB8 IEhBU0hfQkxPQlMpOworCQlDRnVuY0hhc2ggPSBoYXNoX21ha2VfY3h0KENGdW5jSGFzaFRhYkVu dHJ5LCBmbl9vaWQsCisJCQkJCQkJCSAgIkNGdW5jSGFzaCIsIDEwMCwgVG9wTWVtb3J5Q29udGV4 dCk7CiAJfQogCiAJZW50cnkgPSAoQ0Z1bmNIYXNoVGFiRW50cnkgKikKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5j CmluZGV4IGFlOWQ1ZjNmYjcwLi42MThkMDEwMGQzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC04 NzEsNyArODcxLDYgQEAgYnVpbGRfZ3VjX3ZhcmlhYmxlcyh2b2lkKQogewogCWludAkJCXNpemVf dmFyczsKIAlpbnQJCQludW1fdmFycyA9IDA7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJR1VDSGFz aEVudHJ5ICpoZW50cnk7CiAJYm9vbAkJZm91bmQ7CiAKQEAgLTg5NCwxNSArODkzLDEwIEBAIGJ1 aWxkX2d1Y192YXJpYWJsZXModm9pZCkKIAkgKi8KIAlzaXplX3ZhcnMgPSBudW1fdmFycyArIG51 bV92YXJzIC8gNDsKIAotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoY2hhciAqKTsKLQloYXNo X2N0bC5lbnRyeXNpemUgPSBzaXplb2YoR1VDSGFzaEVudHJ5KTsKLQloYXNoX2N0bC5oYXNoID0g Z3VjX25hbWVfaGFzaDsKLQloYXNoX2N0bC5tYXRjaCA9IGd1Y19uYW1lX21hdGNoOwotCWhhc2hf Y3RsLmhjeHQgPSBHVUNNZW1vcnlDb250ZXh0OwotCWd1Y19oYXNodGFiID0gaGFzaF9jcmVhdGUo IkdVQyBoYXNoIHRhYmxlIiwKLQkJCQkJCQkgIHNpemVfdmFycywKLQkJCQkJCQkgICZoYXNoX2N0 bCwKLQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUgfCBI QVNIX0NPTlRFWFQpOworCWd1Y19oYXNodGFiID0gaGFzaF9tYWtlX2ZuX2N4dChHVUNIYXNoRW50 cnksIGd1Y25hbWUsCisJCQkJCQkJCSAgICJHVUMgaGFzaCB0YWJsZSIsIHNpemVfdmFycywKKwkJ CQkJCQkJICAgZ3VjX25hbWVfaGFzaCwgZ3VjX25hbWVfbWF0Y2gsCisJCQkJCQkJCSAgIEdVQ01l bW9yeUNvbnRleHQpOwogCiAJZm9yIChpbnQgaSA9IDA7IENvbmZpZ3VyZU5hbWVzW2ldLm5hbWU7 IGkrKykKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2luamVjdGlvbl9w b2ludC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9pbmplY3Rpb25fcG9pbnQuYwppbmRleCBj MDZiMGU5YjgwMC4uYTZjYjQ2NDAyYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvaW5qZWN0aW9uX3BvaW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9pbmplY3Rp b25fcG9pbnQuYwpAQCAtMTI3LDE2ICsxMjcsMTAgQEAgaW5qZWN0aW9uX3BvaW50X2NhY2hlX2Fk ZChjb25zdCBjaGFyICpuYW1lLAogCS8qIElmIGZpcnN0IHRpbWUsIGluaXRpYWxpemUgKi8KIAlp ZiAoSW5qZWN0aW9uUG9pbnRDYWNoZSA9PSBOVUxMKQogCXsKLQkJSEFTSENUTAkJaGFzaF9jdGw7 Ci0KLQkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihjaGFyW0lOSl9OQU1FX01BWExFTl0pOwot CQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoSW5qZWN0aW9uUG9pbnRDYWNoZUVudHJ5KTsK LQkJaGFzaF9jdGwuaGN4dCA9IFRvcE1lbW9yeUNvbnRleHQ7Ci0KLQkJSW5qZWN0aW9uUG9pbnRD YWNoZSA9IGhhc2hfY3JlYXRlKCJJbmplY3Rpb25Qb2ludCBjYWNoZSBoYXNoIiwKLQkJCQkJCQkJ CQkgIE1BWF9JTkpFQ1RJT05fUE9JTlRTLAotCQkJCQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJ CQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTIHwgSEFTSF9DT05URVhUKTsKKwkJSW5qZWN0 aW9uUG9pbnRDYWNoZSA9IGhhc2hfbWFrZV9jeHQoSW5qZWN0aW9uUG9pbnRDYWNoZUVudHJ5LCBu YW1lLAorCQkJCQkJCQkJCQkiSW5qZWN0aW9uUG9pbnQgY2FjaGUgaGFzaCIsCisJCQkJCQkJCQkJ CU1BWF9JTkpFQ1RJT05fUE9JTlRTLAorCQkJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIAl9 CiAKIAllbnRyeSA9IChJbmplY3Rpb25Qb2ludENhY2hlRW50cnkgKikKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdy L3BvcnRhbG1lbS5jCmluZGV4IDRmYTRkNDMyMDIxLi4wYTEwODJmNDg0NSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYworKysgYi9zcmMvYmFja2VuZC91dGls cy9tbWdyL3BvcnRhbG1lbS5jCkBAIC0xMDMsMjMgKzEwMywxOSBAQCBzdGF0aWMgTWVtb3J5Q29u dGV4dCBUb3BQb3J0YWxDb250ZXh0ID0gTlVMTDsKIHZvaWQKIEVuYWJsZVBvcnRhbE1hbmFnZXIo dm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KIAlBc3NlcnQoVG9wUG9ydGFsQ29udGV4dCA9PSBO VUxMKTsKIAogCVRvcFBvcnRhbENvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wTWVt b3J5Q29udGV4dCwKIAkJCQkJCQkJCQkJICJUb3BQb3J0YWxDb250ZXh0IiwKIAkJCQkJCQkJCQkJ IEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwogCi0JY3RsLmtleXNpemUgPSBNQVhfUE9SVEFMTkFN RV9MRU47Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQb3J0YWxIYXNoRW50KTsKLQogCS8qCiAJ ICogdXNlIFBPUlRBTFNfUEVSX1VTRVIgYXMgYSBndWVzcyBvZiBob3cgbWFueSBoYXNoIHRhYmxl IGVudHJpZXMgdG8KIAkgKiBjcmVhdGUsIGluaXRpYWxseQogCSAqLwotCVBvcnRhbEhhc2hUYWJs ZSA9IGhhc2hfY3JlYXRlKCJQb3J0YWwgaGFzaCIsIFBPUlRBTFNfUEVSX1VTRVIsCi0JCQkJCQkJ CSAgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwlQb3J0YWxIYXNoVGFibGUgPSBo YXNoX21ha2VfY3h0KFBvcnRhbEhhc2hFbnQsIHBvcnRhbG5hbWUsCisJCQkJCQkJCQkiUG9ydGFs IGhhc2giLCBQT1JUQUxTX1BFUl9VU0VSLAorCQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4dCk7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy90aW1lL2NvbWJvY2lkLmMgYi9z cmMvYmFja2VuZC91dGlscy90aW1lL2NvbWJvY2lkLmMKaW5kZXggNjE0YjdjMTAwNmIuLjRjMzE2 NzU1MzVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy90aW1lL2NvbWJvY2lkLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9jb21ib2NpZC5jCkBAIC0yMTQsOCArMjE0LDYgQEAg R2V0Q29tYm9Db21tYW5kSWQoQ29tbWFuZElkIGNtaW4sIENvbW1hbmRJZCBjbWF4KQogCSAqLwog CWlmIChjb21ib0hhc2ggPT0gTlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCiAJCS8q IE1ha2UgYXJyYXkgZmlyc3Q7IGV4aXN0ZW5jZSBvZiBoYXNoIHRhYmxlIGFzc2VydHMgYXJyYXkg ZXhpc3RzICovCiAJCWNvbWJvQ2lkcyA9IChDb21ib0NpZEtleURhdGEgKikKIAkJCU1lbW9yeUNv bnRleHRBbGxvYyhUb3BUcmFuc2FjdGlvbkNvbnRleHQsCkBAIC0yMjMsMTQgKzIyMSw5IEBAIEdl dENvbWJvQ29tbWFuZElkKENvbW1hbmRJZCBjbWluLCBDb21tYW5kSWQgY21heCkKIAkJc2l6ZUNv bWJvQ2lkcyA9IENDSURfQVJSQVlfU0laRTsKIAkJdXNlZENvbWJvQ2lkcyA9IDA7CiAKLQkJaGFz aF9jdGwua2V5c2l6ZSA9IHNpemVvZihDb21ib0NpZEtleURhdGEpOwotCQloYXNoX2N0bC5lbnRy eXNpemUgPSBzaXplb2YoQ29tYm9DaWRFbnRyeURhdGEpOwotCQloYXNoX2N0bC5oY3h0ID0gVG9w VHJhbnNhY3Rpb25Db250ZXh0OwotCi0JCWNvbWJvSGFzaCA9IGhhc2hfY3JlYXRlKCJDb21ibyBD SURzIiwKLQkJCQkJCQkJQ0NJRF9IQVNIX1NJWkUsCi0JCQkJCQkJCSZoYXNoX2N0bCwKLQkJCQkJ CQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJCWNvbWJvSGFzaCA9 IGhhc2hfbWFrZV9jeHQoQ29tYm9DaWRFbnRyeURhdGEsIGtleSwKKwkJCQkJCQkJICAiQ29tYm8g Q0lEcyIsIENDSURfSEFTSF9TSVpFLAorCQkJCQkJCQkgIFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7 CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMgYi9zcmMvcGwv cGxwZXJsL3BscGVybC5jCmluZGV4IDAyZWNlZDNiMmM1Li40OTA0NGJjODA4YiAxMDA2NDQKLS0t IGEvc3JjL3BsL3BscGVybC9wbHBlcmwuYworKysgYi9zcmMvcGwvcGxwZXJsL3BscGVybC5jCkBA IC0zOTAsNyArMzkwLDYgQEAgX1BHX2luaXQodm9pZCkKIAkgKiAicGxwZXJsLnVzZV9zdHJpY3Qi CiAJICovCiAJc3RhdGljIGJvb2wgaW5pdGVkID0gZmFsc2U7Ci0JSEFTSENUTAkJaGFzaF9jdGw7 CiAKIAlpZiAoaW5pdGVkKQogCQlyZXR1cm47CkBAIC00NjAsMTkgKzQ1OSwxMyBAQCBfUEdfaW5p dCh2b2lkKQogCS8qCiAJICogQ3JlYXRlIGhhc2ggdGFibGVzLgogCSAqLwotCWhhc2hfY3RsLmtl eXNpemUgPSBzaXplb2YoT2lkKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YocGxwZXJs X2ludGVycF9kZXNjKTsKLQlwbHBlcmxfaW50ZXJwX2hhc2ggPSBoYXNoX2NyZWF0ZSgiUEwvUGVy bCBpbnRlcnByZXRlcnMiLAotCQkJCQkJCQkJIDgsCi0JCQkJCQkJCQkgJmhhc2hfY3RsLAotCQkJ CQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOwotCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNp emVvZihwbHBlcmxfcHJvY19rZXkpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHBl cmxfcHJvY19wdHIpOwotCXBscGVybF9wcm9jX2hhc2ggPSBoYXNoX2NyZWF0ZSgiUEwvUGVybCBw cm9jZWR1cmVzIiwKLQkJCQkJCQkJICAgMzIsCi0JCQkJCQkJCSAgICZoYXNoX2N0bCwKLQkJCQkJ CQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJcGxwZXJsX2ludGVycF9oYXNoID0gaGFz aF9tYWtlX2N4dChwbHBlcmxfaW50ZXJwX2Rlc2MsIHVzZXJfaWQsCisJCQkJCQkJCQkgICAiUEwv UGVybCBpbnRlcnByZXRlcnMiLCA4LAorCQkJCQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CisK KwlwbHBlcmxfcHJvY19oYXNoID0gaGFzaF9tYWtlX2N4dChwbHBlcmxfcHJvY19wdHIsIHByb2Nf a2V5LAorCQkJCQkJCQkJICJQTC9QZXJsIHByb2NlZHVyZXMiLCAzMiwKKwkJCQkJCQkJCSBUb3BN ZW1vcnlDb250ZXh0KTsKIAogCS8qCiAJICogU2F2ZSB0aGUgZGVmYXVsdCBvcG1hc2suCkBAIC01 NzgsMTQgKzU3MSw5IEBAIHNlbGVjdF9wZXJsX2NvbnRleHQoYm9vbCB0cnVzdGVkKQogCS8qIE1h a2Ugc3VyZSB3ZSBoYXZlIGEgcXVlcnlfaGFzaCBmb3IgdGhpcyBpbnRlcnByZXRlciAqLwogCWlm IChpbnRlcnBfZGVzYy0+cXVlcnlfaGFzaCA9PSBOVUxMKQogCXsKLQkJSEFTSENUTAkJaGFzaF9j dGw7Ci0KLQkJaGFzaF9jdGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwotCQloYXNoX2N0bC5lbnRy eXNpemUgPSBzaXplb2YocGxwZXJsX3F1ZXJ5X2VudHJ5KTsKLQkJaW50ZXJwX2Rlc2MtPnF1ZXJ5 X2hhc2ggPSBoYXNoX2NyZWF0ZSgiUEwvUGVybCBxdWVyaWVzIiwKLQkJCQkJCQkJCQkJICAzMiwK LQkJCQkJCQkJCQkJICAmaGFzaF9jdGwsCi0JCQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9T VFJJTkdTKTsKKwkJaW50ZXJwX2Rlc2MtPnF1ZXJ5X2hhc2ggPSBoYXNoX21ha2VfY3h0KHBscGVy bF9xdWVyeV9lbnRyeSwgcXVlcnlfbmFtZSwKKwkJCQkJCQkJCQkJCSJQTC9QZXJsIHF1ZXJpZXMi LCAzMiwKKwkJCQkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogCX0KIAogCS8qCmRpZmYgLS1n aXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jIGIvc3JjL3BsL3BscGdzcWwvc3JjL3Bs X2V4ZWMuYwppbmRleCA3NTMyNTExN2VjOS4uZmJiODhhZmZhMTUgMTAwNjQ0Ci0tLSBhL3NyYy9w bC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKKysrIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMu YwpAQCAtMzk5NSw4ICszOTk1LDYgQEAgcGxwZ3NxbF9lc3RhdGVfc2V0dXAoUExwZ1NRTF9leGVj c3RhdGUgKmVzdGF0ZSwKIAkJCQkJIEVTdGF0ZSAqc2ltcGxlX2V2YWxfZXN0YXRlLAogCQkJCQkg UmVzb3VyY2VPd25lciBzaW1wbGVfZXZhbF9yZXNvd25lcikKIHsKLQlIQVNIQ1RMCQljdGw7Ci0K IAkvKiB0aGlzIGxpbmsgd2lsbCBiZSByZXN0b3JlZCBhdCBleGl0IGZyb20gcGxwZ3NxbF9jYWxs X2hhbmRsZXIgKi8KIAlmdW5jLT5jdXJfZXN0YXRlID0gZXN0YXRlOwogCkBAIC00MDUxLDEyICs0 MDQ5LDEwIEBAIHBscGdzcWxfZXN0YXRlX3NldHVwKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUs CiAJLyogQ3JlYXRlIHRoZSBzZXNzaW9uLXdpZGUgY2FzdC1leHByZXNzaW9uIGhhc2ggaWYgd2Ug ZGlkbid0IGFscmVhZHkgKi8KIAlpZiAoY2FzdF9leHByX2hhc2ggPT0gTlVMTCkKIAl7Ci0JCWN0 bC5rZXlzaXplID0gc2l6ZW9mKHBscGdzcWxfQ2FzdEhhc2hLZXkpOwotCQljdGwuZW50cnlzaXpl ID0gc2l6ZW9mKHBscGdzcWxfQ2FzdEV4cHJIYXNoRW50cnkpOwotCQljYXN0X2V4cHJfaGFzaCA9 IGhhc2hfY3JlYXRlKCJQTHBnU1FMIGNhc3QgZXhwcmVzc2lvbnMiLAotCQkJCQkJCQkJIDE2LAkv KiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCi0JCQkJCQkJCQkgJmN0bCwKLQkJCQkJCQkJCSBI QVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJY2FzdF9leHByX2hhc2ggPSBoYXNoX21ha2VfY3h0 KHBscGdzcWxfQ2FzdEV4cHJIYXNoRW50cnksIGtleSwKKwkJCQkJCQkJCSAgICJQTHBnU1FMIGNh c3QgZXhwcmVzc2lvbnMiLAorCQkJCQkJCQkJICAgMTYsCS8qIHN0YXJ0IHNtYWxsIGFuZCBleHRl bmQgKi8KKwkJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogCX0KIAogCS8qIHNldCB1cCBm b3IgdXNlIG9mIGFwcHJvcHJpYXRlIHNpbXBsZS1leHByZXNzaW9uIEVTdGF0ZSBhbmQgY2FzdCBo YXNoICovCkBAIC00MDY0LDEzICs0MDYwLDkgQEAgcGxwZ3NxbF9lc3RhdGVfc2V0dXAoUExwZ1NR TF9leGVjc3RhdGUgKmVzdGF0ZSwKIAl7CiAJCWVzdGF0ZS0+c2ltcGxlX2V2YWxfZXN0YXRlID0g c2ltcGxlX2V2YWxfZXN0YXRlOwogCQkvKiBQcml2YXRlIGNhc3QgaGFzaCBqdXN0IGxpdmVzIGlu IGZ1bmN0aW9uJ3MgbWFpbiBjb250ZXh0ICovCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKHBscGdz cWxfQ2FzdEhhc2hLZXkpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKHBscGdzcWxfQ2FzdEhh c2hFbnRyeSk7Ci0JCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JCWVzdGF0ZS0+ Y2FzdF9oYXNoID0gaGFzaF9jcmVhdGUoIlBMcGdTUUwgcHJpdmF0ZSBjYXN0IGNhY2hlIiwKLQkJ CQkJCQkJCQkxNiwgLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAqLwotCQkJCQkJCQkJCSZjdGws Ci0JCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJCWVz dGF0ZS0+Y2FzdF9oYXNoID0gaGFzaF9tYWtlKHBscGdzcWxfQ2FzdEhhc2hFbnRyeSwga2V5LAor CQkJCQkJCQkJICAiUExwZ1NRTCBwcml2YXRlIGNhc3QgY2FjaGUiLAorCQkJCQkJCQkJICAxNik7 CS8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8KIAl9CiAJZWxzZQogCXsKQEAgLTQwNzgsMTIg KzQwNzAsMTAgQEAgcGxwZ3NxbF9lc3RhdGVfc2V0dXAoUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0 ZSwKIAkJLyogQ3JlYXRlIHRoZSBzZXNzaW9uLXdpZGUgY2FzdC1pbmZvIGhhc2ggdGFibGUgaWYg d2UgZGlkbid0IGFscmVhZHkgKi8KIAkJaWYgKHNoYXJlZF9jYXN0X2hhc2ggPT0gTlVMTCkKIAkJ ewotCQkJY3RsLmtleXNpemUgPSBzaXplb2YocGxwZ3NxbF9DYXN0SGFzaEtleSk7Ci0JCQljdGwu ZW50cnlzaXplID0gc2l6ZW9mKHBscGdzcWxfQ2FzdEhhc2hFbnRyeSk7Ci0JCQlzaGFyZWRfY2Fz dF9oYXNoID0gaGFzaF9jcmVhdGUoIlBMcGdTUUwgY2FzdCBjYWNoZSIsCi0JCQkJCQkJCQkJICAg MTYsCS8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8KLQkJCQkJCQkJCQkgICAmY3RsLAotCQkJ CQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQkJc2hhcmVkX2Nhc3RfaGFzaCA9 IGhhc2hfbWFrZV9jeHQocGxwZ3NxbF9DYXN0SGFzaEVudHJ5LCBrZXksCisJCQkJCQkJCQkJCSAi UExwZ1NRTCBjYXN0IGNhY2hlIiwKKwkJCQkJCQkJCQkJIDE2LAkvKiBzdGFydCBzbWFsbCBhbmQg ZXh0ZW5kICovCisJCQkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAkJfQogCQllc3RhdGUt PmNhc3RfaGFzaCA9IHNoYXJlZF9jYXN0X2hhc2g7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3BsL3Bs cHl0aG9uL3BscHlfcGxweW1vZHVsZS5jIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfcGxweW1vZHVs ZS5jCmluZGV4IDcyODA2YzE3ZTE3Li43MWE3NmI4NWVjOCAxMDA2NDQKLS0tIGEvc3JjL3BsL3Bs cHl0aG9uL3BscHlfcGxweW1vZHVsZS5jCisrKyBiL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHlt b2R1bGUuYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgInBscHlfc3VieGFjdG9iamVjdC5o IgogI2luY2x1ZGUgInBscHlfdXRpbC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIAogSFRBQgkgICAqUEx5X3NwaV9leGNlcHRpb25z ID0gTlVMTDsKIApAQCAtMTQ1LDcgKzE0Niw2IEBAIHN0YXRpYyB2b2lkCiBQTHlfYWRkX2V4Y2Vw dGlvbnMoUHlPYmplY3QgKnBscHkpCiB7CiAJUHlPYmplY3QgICAqZXhjbW9kOwotCUhBU0hDVEwJ CWhhc2hfY3RsOwogCiAJUEx5X2V4Y19lcnJvciA9IFBMeV9jcmVhdGVfZXhjZXB0aW9uKCJwbHB5 LkVycm9yIiwgTlVMTCwgTlVMTCwKIAkJCQkJCQkJCQkgIkVycm9yIiwgcGxweSk7CkBAIC0xNTgs MTAgKzE1OCw5IEBAIFBMeV9hZGRfZXhjZXB0aW9ucyhQeU9iamVjdCAqcGxweSkKIAlpZiAoZXhj bW9kID09IE5VTEwpCiAJCVBMeV9lbG9nKEVSUk9SLCAiY291bGQgbm90IGNyZWF0ZSB0aGUgc3Bp ZXhjZXB0aW9ucyBtb2R1bGUiKTsKIAotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoaW50KTsK LQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUEx5RXhjZXB0aW9uRW50cnkpOwotCVBMeV9z cGlfZXhjZXB0aW9ucyA9IGhhc2hfY3JlYXRlKCJQTC9QeXRob24gU1BJIGV4Y2VwdGlvbnMiLCAy NTYsCi0JCQkJCQkJCQkgJmhhc2hfY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlQTHlf c3BpX2V4Y2VwdGlvbnMgPSBoYXNoX21ha2VfY3h0KFBMeUV4Y2VwdGlvbkVudHJ5LCBzcWxzdGF0 ZSwKKwkJCQkJCQkJCSAgICJQTC9QeXRob24gU1BJIGV4Y2VwdGlvbnMiLCAyNTYsCisJCQkJCQkJ CQkgICBUb3BNZW1vcnlDb250ZXh0KTsKIAogCVBMeV9nZW5lcmF0ZV9zcGlfZXhjZXB0aW9ucyhl eGNtb2QsIFBMeV9leGNfc3BpX2Vycm9yKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscHl0aG9u L3BscHlfcHJvY2VkdXJlLmMgYi9zcmMvcGwvcGxweXRob24vcGxweV9wcm9jZWR1cmUuYwppbmRl eCA3NTBiYTU4NmUwYy4uZmM3MjhmN2FiOGEgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHB5dGhvbi9w bHB5X3Byb2NlZHVyZS5jCisrKyBiL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5jCkBA IC0yOSwxMiArMjksOSBAQCBzdGF0aWMgY2hhciAqUEx5X3Byb2NlZHVyZV9tdW5nZV9zb3VyY2Uo Y29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqc3JjKTsKIHZvaWQKIGluaXRfcHJvY2VkdXJl X2NhY2hlcyh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JaGFzaF9jdGwua2V5c2l6 ZSA9IHNpemVvZihQTHlQcm9jZWR1cmVLZXkpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVv ZihQTHlQcm9jZWR1cmVFbnRyeSk7Ci0JUEx5X3Byb2NlZHVyZV9jYWNoZSA9IGhhc2hfY3JlYXRl KCJQTC9QeXRob24gcHJvY2VkdXJlcyIsIDMyLCAmaGFzaF9jdGwsCi0JCQkJCQkJCQkgIEhBU0hf RUxFTSB8IEhBU0hfQkxPQlMpOworCVBMeV9wcm9jZWR1cmVfY2FjaGUgPSBoYXNoX21ha2VfY3h0 KFBMeVByb2NlZHVyZUVudHJ5LCBrZXksCisJCQkJCQkJCQkJIlBML1B5dGhvbiBwcm9jZWR1cmVz IiwgMzIsCisJCQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQg YS9zcmMvcGwvdGNsL3BsdGNsLmMgYi9zcmMvcGwvdGNsL3BsdGNsLmMKaW5kZXggMTg3Njk4Y2Nk ZDIuLjcwNzAwNTE0NjNkIDEwMDY0NAotLS0gYS9zcmMvcGwvdGNsL3BsdGNsLmMKKysrIGIvc3Jj L3BsL3RjbC9wbHRjbC5jCkBAIC00MDgsNyArNDA4LDYgQEAgdm9pZAogX1BHX2luaXQodm9pZCkK IHsKIAlUY2xfTm90aWZpZXJQcm9jcyBub3RpZmllcjsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAog CS8qIEJlIHN1cmUgd2UgZG8gaW5pdGlhbGl6YXRpb24gb25seSBvbmNlIChzaG91bGQgYmUgcmVk dW5kYW50IG5vdykgKi8KIAlpZiAocGx0Y2xfcG1faW5pdF9kb25lKQpAQCAtNDQ2LDIyICs0NDUs MTYgQEAgX1BHX2luaXQodm9pZCkKIAkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAJICogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlIGZv ciB3b3JraW5nIGludGVycHJldGVycwogCSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVv ZihPaWQpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHRjbF9pbnRlcnBfZGVzYyk7 Ci0JcGx0Y2xfaW50ZXJwX2h0YWIgPSBoYXNoX2NyZWF0ZSgiUEwvVGNsIGludGVycHJldGVycyIs Ci0JCQkJCQkJCQk4LAotCQkJCQkJCQkJJmhhc2hfY3RsLAotCQkJCQkJCQkJSEFTSF9FTEVNIHwg SEFTSF9CTE9CUyk7CisJcGx0Y2xfaW50ZXJwX2h0YWIgPSBoYXNoX21ha2VfY3h0KHBsdGNsX2lu dGVycF9kZXNjLCB1c2VyX2lkLAorCQkJCQkJCQkJICAiUEwvVGNsIGludGVycHJldGVycyIsIDgs CisJCQkJCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCSAqIENyZWF0ZSB0aGUg aGFzaCB0YWJsZSBmb3IgZnVuY3Rpb24gbG9va3VwCiAJICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQloYXNoX2N0bC5rZXlzaXpl ID0gc2l6ZW9mKHBsdGNsX3Byb2Nfa2V5KTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2Yo cGx0Y2xfcHJvY19wdHIpOwotCXBsdGNsX3Byb2NfaHRhYiA9IGhhc2hfY3JlYXRlKCJQTC9UY2wg ZnVuY3Rpb25zIiwKLQkJCQkJCQkJICAxMDAsCi0JCQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJ CQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCXBsdGNsX3Byb2NfaHRhYiA9IGhhc2hfbWFr ZV9jeHQocGx0Y2xfcHJvY19wdHIsIHByb2Nfa2V5LAorCQkJCQkJCQkJIlBML1RjbCBmdW5jdGlv bnMiLCAxMDAsCisJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIAogCS8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAkgKiBEZWZp bmUgUEwvVGNsJ3MgY3VzdG9tIEdVQ3MKZGlmZiAtLWdpdCBhL3NyYy90aW1lem9uZS9wZ3R6LmMg Yi9zcmMvdGltZXpvbmUvcGd0ei5jCmluZGV4IGVhYzk4OGMyMWU3Li5jNjhkZTkzYjUzNSAxMDA2 NDQKLS0tIGEvc3JjL3RpbWV6b25lL3BndHouYworKysgYi9zcmMvdGltZXpvbmUvcGd0ei5jCkBA IC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAicGd0ei5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZmQu aCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMu aCIKIAogCiAvKiBDdXJyZW50IHNlc3Npb24gdGltZXpvbmUgKGNvbnRyb2xsZWQgYnkgVGltZVpv bmUgR1VDKSAqLwpAQCAtMjAxLDE1ICsyMDIsOCBAQCBzdGF0aWMgSFRBQiAqdGltZXpvbmVfY2Fj aGUgPSBOVUxMOwogc3RhdGljIGJvb2wKIGluaXRfdGltZXpvbmVfaGFzaHRhYmxlKHZvaWQpCiB7 Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQloYXNoX2N0bC5rZXlzaXplID0gVFpfU1RSTEVOX01B WCArIDE7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKHBnX3R6X2NhY2hlKTsKLQotCXRp bWV6b25lX2NhY2hlID0gaGFzaF9jcmVhdGUoIlRpbWV6b25lcyIsCi0JCQkJCQkJCSA0LAotCQkJ CQkJCQkgJmhhc2hfY3RsLAotCQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwl0 aW1lem9uZV9jYWNoZSA9IGhhc2hfbWFrZV9jeHQocGdfdHpfY2FjaGUsIHR6bmFtZXVwcGVyLAor CQkJCQkJCQkgICAiVGltZXpvbmVzIiwgNCwgVG9wTWVtb3J5Q29udGV4dCk7CiAJaWYgKCF0aW1l em9uZV9jYWNoZSkKIAkJcmV0dXJuIGZhbHNlOwogCi0tIAoyLjUyLjAKCg== --47d834fb39f917299e3944345bf4c7b286ca1a3cdaf0f9bf83d0eef1564f Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v10-0004-Use-foreach_hash-macro-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v10-0004-Use-foreach_hash-macro-throughout-the-codebase.patch RnJvbSAxNTZkYzQyZGUwZWZmM2MxYWU5Y2JlYmU3MmI5ZmQ2ZDNiYjUzMmNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDkgKzAxMDAKU3ViamVjdDogW1BBVENIIHYx MCA0LzVdIFVzZSBmb3JlYWNoX2hhc2ggbWFjcm8gdGhyb3VnaG91dCB0aGUgY29kZWJhc2UKClRo aXMgc3RhcnRzIHVzaW5nIHRoZSBuZXcgZm9yZWFjaF9oYXNoIG1hY3JvIHRocm91Z2hvdXQgdGhl IGNvZGViYXNlLgpUaGlzIG1ha2VzIGNvZGUgZWFzaWVyIHRvIHJlYWQsIGJ1dCBvYnZpb3VzbHkg ZG9lcyBpbnRyb2R1Y2UKYmFja3BhdGNoaW5nIHByb2JsZW1zLiBXZSBjYW4gY2hvb3NlIG5vdCB0 byBkbyB0aGlzIHJlZmFjdG9yIHRvIGF2b2lkCnRoYXQuIE9yIHdlIGNvdWxkIGluc3RlYWQgY2hv b3NlIHRvIGRvIHRoZSByZWZhY3RvciBhbmQgdGhlbiBiYWNrcGF0Y2gKdGhlc2UgbmV3IG1hY3Jv cyBzbyB0aGV5IGNhbiBiZSB1c2VkIGluIGJhY2twYXRjaGVkIGNvZGUuCgpBdCB0aGUgdmVyeSBs ZWFzdCB3ZSBzaG91bGQgY2hvb3NlIGEgZmV3IHBsYWNlcyB3aGVyZSB3ZSB1c2UgdGhlIG5ldwpt YWNyb3MgdG8gbWFrZSBzdXJlIHRoZXkgaGF2ZSBjb3ZlcmFnZS4KLS0tCiBjb250cmliL2RibGlu ay9kYmxpbmsuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgNSArLQogLi4uL3BnX3N0YXRfc3Rh dGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyAgIHwgMzkgKysrLS0tLS0tCiBjb250cmliL3Bn X3RyZ20vdHJnbV9yZWdleHAuYyAgICAgICAgICAgICAgICAgfCAxOCArLS0tCiBjb250cmliL3Bv c3RncmVzX2Zkdy9jb25uZWN0aW9uLmMgICAgICAgICAgICAgfCAyNiArKy0tLS0KIGNvbnRyaWIv cG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jICAgICAgICAgICAgICB8ICA2ICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jICAgICAgICAgfCAxOCArLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYyAgICAgICAgfCAyMCArLS0tLQogc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19lbnVtLmMgICAgICAgICAgICAgICAgIHwgMTYgKystLQogc3JjL2JhY2tl bmQvY2F0YWxvZy9zdG9yYWdlLmMgICAgICAgICAgICAgICAgIHwgMTggKystLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAgIHwgMTIgKy0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgNyArLQogc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYyAgICAgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9vcGVyLmMgICAgICAgICAgICAgICB8ICA3ICstCiBzcmMvYmFja2VuZC9wYXJ0 aXRpb25pbmcvcGFydGRlc2MuYyAgICAgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyAgICB8IDM3ICsrLS0tLS0tCiAuLi4vcmVwbGljYXRpb24v bG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgICAgfCAxMiArLS0KIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8IDI0ICsrLS0tLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9idWZmZXIvYnVmbWdyLmMgICAgICAgICAgIHwgMTAgKy0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zaG1lbS5jICAgICAgICAgICAgICAgfCAxMiArLS0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3N0YW5kYnkuYyAgICAgICAgICAgICB8IDEyICstLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2xvY2suYyAgICAgICAgICAgICAgIHwgNjcgKysrLS0tLS0tLS0tLS0tCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMgICAgICAgICAgICAgfCAgNyArLQogc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jICAgICAgICAgIHwgMTggKy0tLQogc3JjL2JhY2tl bmQvc3RvcmFnZS9zbWdyL3NtZ3IuYyAgICAgICAgICAgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5k L3N0b3JhZ2Uvc3luYy9zeW5jLmMgICAgICAgICAgICAgICB8IDEzICstLQogc3JjL2JhY2tlbmQv dHNlYXJjaC90c190eXBhbmFseXplLmMgICAgICAgICAgIHwgMTEgKy0tCiBzcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgICAgICAgfCAgNiArLQogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2FycmF5X3R5cGFuYWx5emUuYyAgICAgIHwgMTcgKystLQogc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwgNTMgKysrKy0tLS0tLS0tCiBzcmMvYmFj a2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFwLmMgICAgfCAgNiArLQogc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUuYyAgICAgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMgICAgICAgICAgICB8ICA1ICstCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS90eXBjYWNoZS5jICAgICAgICAgICAgfCAxNCArLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjLmMgICAgICAgICAgICAgICAgICB8IDMwICsrLS0tLS0KIHNyYy9iYWNrZW5k L3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgICAgICAgICAgICB8IDg1ICsrKy0tLS0tLS0tLS0tLS0t LS0KIHNyYy9wbC9wbHBlcmwvcGxwZXJsLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICst CiAzNyBmaWxlcyBjaGFuZ2VkLCAxNDIgaW5zZXJ0aW9ucygrKSwgNTI4IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvZGJsaW5rL2RibGluay5jIGIvY29udHJpYi9kYmxpbmsvZGJs aW5rLmMKaW5kZXggMTkyNDE4ZGY0YWYuLjQzZDYxYzljZjY1IDEwMDY0NAotLS0gYS9jb250cmli L2RibGluay9kYmxpbmsuYworKysgYi9jb250cmliL2RibGluay9kYmxpbmsuYwpAQCAtMTI3NSwx NCArMTI3NSwxMSBAQCBQR19GVU5DVElPTl9JTkZPX1YxKGRibGlua19nZXRfY29ubmVjdGlvbnMp OwogRGF0dW0KIGRibGlua19nZXRfY29ubmVjdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlI QVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCXJlbW90ZUNvbm5IYXNoRW50ICpoZW50cnk7CiAJQXJy YXlCdWlsZFN0YXRlICphc3RhdGUgPSBOVUxMOwogCiAJaWYgKHJlbW90ZUNvbm5IYXNoKQogCXsK LQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCByZW1vdGVDb25uSGFzaCk7Ci0JCXdoaWxlICgoaGVu dHJ5ID0gKHJlbW90ZUNvbm5IYXNoRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0g TlVMTCkKKwkJZm9yZWFjaF9oYXNoKHJlbW90ZUNvbm5IYXNoRW50LCBoZW50cnksIHJlbW90ZUNv bm5IYXNoKQogCQl7CiAJCQkvKiBpZ25vcmUgaXQgaWYgaXQncyBub3QgYW4gb3BlbiBjb25uZWN0 aW9uICovCiAJCQlpZiAoaGVudHJ5LT5yY29ubi5jb25uID09IE5VTEwpCmRpZmYgLS1naXQgYS9j b250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIv cGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDhhNjczOTBlNTYx Li45MTkzZDNkMThjMyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdf c3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3Rh dF9zdGF0ZW1lbnRzLmMKQEAgLTc0MSw5ICs3NDEsNyBAQCBwZ3NzX3NobWVtX3NodXRkb3duKGlu dCBjb2RlLCBEYXR1bSBhcmcpCiAJRklMRQkgICAqZmlsZTsKIAljaGFyCSAgICpxYnVmZmVyID0g TlVMTDsKIAlTaXplCQlxYnVmZmVyX3NpemUgPSAwOwotCUhBU0hfU0VRX1NUQVRVUyBoYXNoX3Nl cTsKIAlpbnQzMgkJbnVtX2VudHJpZXM7Ci0JcGdzc0VudHJ5ICAqZW50cnk7CiAKIAkvKiBEb24n dCB0cnkgdG8gZHVtcCBkdXJpbmcgYSBjcmFzaC4gKi8KIAlpZiAoY29kZSkKQEAgLTc3Nyw4ICs3 NzUsNyBAQCBwZ3NzX3NobWVtX3NodXRkb3duKGludCBjb2RlLCBEYXR1bSBhcmcpCiAJICogV2hl biBzZXJpYWxpemluZyB0byBkaXNrLCB3ZSBzdG9yZSBxdWVyeSB0ZXh0cyBpbW1lZGlhdGVseSBh ZnRlciB0aGVpcgogCSAqIGVudHJ5IGRhdGEuICBBbnkgb3JwaGFuZWQgcXVlcnkgdGV4dHMgYXJl IHRoZXJlYnkgZXhjbHVkZWQuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIHBnc3Nf aGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBO VUxMKQorCWZvcmVhY2hfaGFzaChwZ3NzRW50cnksIGVudHJ5LCBwZ3NzX2hhc2gpCiAJewogCQlp bnQJCQlsZW4gPSBlbnRyeS0+cXVlcnlfbGVuOwogCQljaGFyCSAgICpxc3RyID0gcXRleHRfZmV0 Y2goZW50cnktPnF1ZXJ5X29mZnNldCwgbGVuLApAQCAtNzkwLDggKzc4Nyw4IEBAIHBnc3Nfc2ht ZW1fc2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKIAkJaWYgKGZ3cml0ZShlbnRyeSwgc2l6 ZW9mKHBnc3NFbnRyeSksIDEsIGZpbGUpICE9IDEgfHwKIAkJCWZ3cml0ZShxc3RyLCAxLCBsZW4g KyAxLCBmaWxlKSAhPSBsZW4gKyAxKQogCQl7Ci0JCQkvKiBub3RlOiB3ZSBhc3N1bWUgaGFzaF9z ZXFfdGVybSB3b24ndCBjaGFuZ2UgZXJybm8gKi8KLQkJCWhhc2hfc2VxX3Rlcm0oJmhhc2hfc2Vx KTsKKwkJCS8qIG5vdGU6IHdlIGFzc3VtZSBmb3JlYWNoX2hhc2hfdGVybSB3b24ndCBjaGFuZ2Ug ZXJybm8gKi8KKwkJCWZvcmVhY2hfaGFzaF90ZXJtKGVudHJ5KTsKIAkJCWdvdG8gZXJyb3I7CiAJ CX0KIAl9CkBAIC0xNjk1LDggKzE2OTIsNiBAQCBwZ19zdGF0X3N0YXRlbWVudHNfaW50ZXJuYWwo RnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCiAJU2l6ZQkJcWJ1ZmZlcl9zaXplID0gMDsKIAlTaXpl CQlleHRlbnQgPSAwOwogCWludAkJCWdjX2NvdW50ID0gMDsKLQlIQVNIX1NFUV9TVEFUVVMgaGFz aF9zZXE7Ci0JcGdzc0VudHJ5ICAqZW50cnk7CiAKIAkvKgogCSAqIFN1cGVydXNlcnMgb3Igcm9s ZXMgd2l0aCB0aGUgcHJpdmlsZWdlcyBvZiBwZ19yZWFkX2FsbF9zdGF0cyBtZW1iZXJzCkBAIC0x ODI1LDggKzE4MjAsNyBAQCBwZ19zdGF0X3N0YXRlbWVudHNfaW50ZXJuYWwoRnVuY3Rpb25DYWxs SW5mbyBmY2luZm8sCiAJCX0KIAl9CiAKLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGdzc19o YXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5V TEwpCisJZm9yZWFjaF9oYXNoKHBnc3NFbnRyeSwgZW50cnksIHBnc3NfaGFzaCkKIAl7CiAJCURh dHVtCQl2YWx1ZXNbUEdfU1RBVF9TVEFURU1FTlRTX0NPTFNdOwogCQlib29sCQludWxsc1tQR19T VEFUX1NUQVRFTUVOVFNfQ09MU107CkBAIC0yMTcwLDkgKzIxNjQsNyBAQCBlbnRyeV9jbXAoY29u c3Qgdm9pZCAqbGhzLCBjb25zdCB2b2lkICpyaHMpCiBzdGF0aWMgdm9pZAogZW50cnlfZGVhbGxv Yyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBoYXNoX3NlcTsKIAlwZ3NzRW50cnkgKiplbnRy aWVzOwotCXBnc3NFbnRyeSAgKmVudHJ5OwogCWludAkJCW52aWN0aW1zOwogCWludAkJCWk7CiAJ U2l6ZQkJdG90dGV4dGxlbjsKQEAgLTIxOTYsOCArMjE4OCw3IEBAIGVudHJ5X2RlYWxsb2Modm9p ZCkKIAl0b3R0ZXh0bGVuID0gMDsKIAludmFsaWR0ZXh0cyA9IDA7CiAKLQloYXNoX3NlcV9pbml0 KCZoYXNoX3NlcSwgcGdzc19oYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNo KCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKHBnc3NFbnRyeSwgZW50cnksIHBn c3NfaGFzaCkKIAl7CiAJCWVudHJpZXNbaSsrXSA9IGVudHJ5OwogCQkvKiAiU3RpY2t5IiBlbnRy aWVzIGdldCBhIGRpZmZlcmVudCB1c2FnZSBkZWNheSByYXRlLiAqLwpAQCAtMjUwOSw4ICsyNTAw LDYgQEAgZ2NfcXRleHRzKHZvaWQpCiAJY2hhcgkgICAqcWJ1ZmZlcjsKIAlTaXplCQlxYnVmZmVy X3NpemU7CiAJRklMRQkgICAqcWZpbGUgPSBOVUxMOwotCUhBU0hfU0VRX1NUQVRVUyBoYXNoX3Nl cTsKLQlwZ3NzRW50cnkgICplbnRyeTsKIAlTaXplCQlleHRlbnQ7CiAJaW50CQkJbmVudHJpZXM7 CiAKQEAgLTI1NTIsOCArMjU0MSw3IEBAIGdjX3F0ZXh0cyh2b2lkKQogCWV4dGVudCA9IDA7CiAJ bmVudHJpZXMgPSAwOwogCi0JaGFzaF9zZXFfaW5pdCgmaGFzaF9zZXEsIHBnc3NfaGFzaCk7Ci0J d2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCWZv cmVhY2hfaGFzaChwZ3NzRW50cnksIGVudHJ5LCBwZ3NzX2hhc2gpCiAJewogCQlpbnQJCQlxdWVy eV9sZW4gPSBlbnRyeS0+cXVlcnlfbGVuOwogCQljaGFyCSAgICpxcnkgPSBxdGV4dF9mZXRjaChl bnRyeS0+cXVlcnlfb2Zmc2V0LApAQCAtMjU3Niw3ICsyNTY0LDcgQEAgZ2NfcXRleHRzKHZvaWQp CiAJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAogCQkJCQkgZXJybXNnKCJjb3VsZCBu b3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVtIiwKIAkJCQkJCQlQR1NTX1RFWFRfRklMRSkpKTsKLQkJ CWhhc2hfc2VxX3Rlcm0oJmhhc2hfc2VxKTsKKwkJCWZvcmVhY2hfaGFzaF90ZXJtKGVudHJ5KTsK IAkJCWdvdG8gZ2NfZmFpbDsKIAkJfQogCkBAIC0yNjQzLDggKzI2MzEsNyBAQCBnY19mYWlsOgog CSAqIFNpbmNlIHRoZSBjb250ZW50cyBvZiB0aGUgZXh0ZXJuYWwgZmlsZSBhcmUgbm93IHVuY2Vy dGFpbiwgbWFyayBhbGwKIAkgKiBoYXNodGFibGUgZW50cmllcyBhcyBoYXZpbmcgaW52YWxpZCB0 ZXh0cy4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGdzc19oYXNoKTsKLQl3aGls ZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKHBnc3NFbnRyeSwgZW50cnksIHBnc3NfaGFzaCkKIAl7CiAJCWVudHJ5LT5xdWVyeV9v ZmZzZXQgPSAwOwogCQllbnRyeS0+cXVlcnlfbGVuID0gLTE7CkBAIC0yNzA4LDggKzI2OTUsNiBA QCBpZiAoZSkgeyBcCiBzdGF0aWMgVGltZXN0YW1wVHoKIGVudHJ5X3Jlc2V0KE9pZCB1c2VyaWQs IE9pZCBkYmlkLCBpbnQ2NCBxdWVyeWlkLCBib29sIG1pbm1heF9vbmx5KQogewotCUhBU0hfU0VR X1NUQVRVUyBoYXNoX3NlcTsKLQlwZ3NzRW50cnkgICplbnRyeTsKIAlGSUxFCSAgICpxZmlsZTsK IAlpbnQ2NAkJbnVtX2VudHJpZXM7CiAJaW50NjQJCW51bV9yZW1vdmUgPSAwOwpAQCAtMjcyOSw2 ICsyNzE0LDggQEAgZW50cnlfcmVzZXQoT2lkIHVzZXJpZCwgT2lkIGRiaWQsIGludDY0IHF1ZXJ5 aWQsIGJvb2wgbWlubWF4X29ubHkpCiAJaWYgKHVzZXJpZCAhPSAwICYmIGRiaWQgIT0gMCAmJiBx dWVyeWlkICE9IElOVDY0Q09OU1QoMCkpCiAJewogCQkvKiBJZiBhbGwgdGhlIHBhcmFtZXRlcnMg YXJlIGF2YWlsYWJsZSwgdXNlIHRoZSBmYXN0IHBhdGguICovCisJCXBnc3NFbnRyeSAgKmVudHJ5 OworCiAJCW1lbXNldCgma2V5LCAwLCBzaXplb2YocGdzc0hhc2hLZXkpKTsKIAkJa2V5LnVzZXJp ZCA9IHVzZXJpZDsKIAkJa2V5LmRiaWQgPSBkYmlkOwpAQCAtMjc1Miw4ICsyNzM5LDcgQEAgZW50 cnlfcmVzZXQoT2lkIHVzZXJpZCwgT2lkIGRiaWQsIGludDY0IHF1ZXJ5aWQsIGJvb2wgbWlubWF4 X29ubHkpCiAJZWxzZSBpZiAodXNlcmlkICE9IDAgfHwgZGJpZCAhPSAwIHx8IHF1ZXJ5aWQgIT0g SU5UNjRDT05TVCgwKSkKIAl7CiAJCS8qIFJlc2V0IGVudHJpZXMgY29ycmVzcG9uZGluZyB0byB2 YWxpZCBwYXJhbWV0ZXJzLiAqLwotCQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgcGdzc19oYXNo KTsKLQkJd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxM KQorCQlmb3JlYWNoX2hhc2gocGdzc0VudHJ5LCBlbnRyeSwgcGdzc19oYXNoKQogCQl7CiAJCQlp ZiAoKCF1c2VyaWQgfHwgZW50cnktPmtleS51c2VyaWQgPT0gdXNlcmlkKSAmJgogCQkJCSghZGJp ZCB8fCBlbnRyeS0+a2V5LmRiaWQgPT0gZGJpZCkgJiYKQEAgLTI3NjYsOCArMjc1Miw3IEBAIGVu dHJ5X3Jlc2V0KE9pZCB1c2VyaWQsIE9pZCBkYmlkLCBpbnQ2NCBxdWVyeWlkLCBib29sIG1pbm1h eF9vbmx5KQogCWVsc2UKIAl7CiAJCS8qIFJlc2V0IGFsbCBlbnRyaWVzLiAqLwotCQloYXNoX3Nl cV9pbml0KCZoYXNoX3NlcSwgcGdzc19oYXNoKTsKLQkJd2hpbGUgKChlbnRyeSA9IGhhc2hfc2Vx X3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2gocGdzc0VudHJ5LCBl bnRyeSwgcGdzc19oYXNoKQogCQl7CiAJCQlTSU5HTEVfRU5UUllfUkVTRVQoZW50cnkpOwogCQl9 CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYyBiL2NvbnRyaWIvcGdf dHJnbS90cmdtX3JlZ2V4cC5jCmluZGV4IGVjZDRkNjc3OTQ4Li42N2U4Njk4MTQ3NiAxMDA2NDQK LS0tIGEvY29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMKKysrIGIvY29udHJpYi9wZ190cmdt L3RyZ21fcmVnZXhwLmMKQEAgLTE0NDksMTAgKzE0NDksOCBAQCBwcmVmaXhDb250YWlucyhUcmdt UHJlZml4ICpwcmVmaXgxLCBUcmdtUHJlZml4ICpwcmVmaXgyKQogc3RhdGljIGJvb2wKIHNlbGVj dENvbG9yVHJpZ3JhbXMoVHJnbU5GQSAqdHJnbU5GQSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2Nh bl9zdGF0dXM7CiAJaW50CQkJYXJjc0NvdW50ID0gdHJnbU5GQS0+YXJjc0NvdW50LAogCQkJCWk7 Ci0JVHJnbVN0YXRlICAqc3RhdGU7CiAJQ29sb3JUcmdtSW5mbyAqY29sb3JUcmdtczsKIAlpbnQ2 NAkJdG90YWxUcmdtQ291bnQ7CiAJZmxvYXQ0CQl0b3RhbFRyZ21QZW5hbHR5OwpAQCAtMTQ2Myw4 ICsxNDYxLDcgQEAgc2VsZWN0Q29sb3JUcmlncmFtcyhUcmdtTkZBICp0cmdtTkZBKQogCXRyZ21O RkEtPmNvbG9yVHJnbXMgPSBjb2xvclRyZ21zOwogCiAJaSA9IDA7Ci0JaGFzaF9zZXFfaW5pdCgm c2Nhbl9zdGF0dXMsIHRyZ21ORkEtPnN0YXRlcyk7Ci0Jd2hpbGUgKChzdGF0ZSA9IChUcmdtU3Rh dGUgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuX3N0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9o YXNoKFRyZ21TdGF0ZSwgc3RhdGUsIHRyZ21ORkEtPnN0YXRlcykKIAl7CiAJCUxpc3RDZWxsICAg KmNlbGw7CiAKQEAgLTE5MjYsOCArMTkyMyw2IEBAIHBhY2tHcmFwaChUcmdtTkZBICp0cmdtTkZB LCBNZW1vcnlDb250ZXh0IHJjb250ZXh0KQogCWludAkJCXNudW1iZXIgPSAyLAogCQkJCWFyY0lu ZGV4LAogCQkJCWFyY3NDb3VudDsKLQlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7Ci0JVHJn bVN0YXRlICAqc3RhdGU7CiAJVHJnbVBhY2tBcmNJbmZvICphcmNzOwogCVRyZ21QYWNrZWRBcmMg KnBhY2tlZEFyY3M7CiAJVHJnbVBhY2tlZEdyYXBoICpyZXN1bHQ7CkBAIC0xOTM1LDggKzE5MzAs NyBAQCBwYWNrR3JhcGgoVHJnbU5GQSAqdHJnbU5GQSwgTWVtb3J5Q29udGV4dCByY29udGV4dCkK IAkJCQlqOwogCiAJLyogRW51bWVyYXRlIHN1cnZpdmluZyBzdGF0ZXMsIGdpdmluZyBpbml0IGFu ZCBmaW4gcmVzZXJ2ZWQgbnVtYmVycyAqLwotCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCB0 cmdtTkZBLT5zdGF0ZXMpOwotCXdoaWxlICgoc3RhdGUgPSAoVHJnbVN0YXRlICopIGhhc2hfc2Vx X3NlYXJjaCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChUcmdtU3RhdGUs IHN0YXRlLCB0cmdtTkZBLT5zdGF0ZXMpCiAJewogCQl3aGlsZSAoc3RhdGUtPnBhcmVudCkKIAkJ CXN0YXRlID0gc3RhdGUtPnBhcmVudDsKQEAgLTE5NTgsOCArMTk1Miw3IEBAIHBhY2tHcmFwaChU cmdtTkZBICp0cmdtTkZBLCBNZW1vcnlDb250ZXh0IHJjb250ZXh0KQogCS8qIENvbGxlY3QgYXJy YXkgb2YgYWxsIGFyY3MgKi8KIAlhcmNzID0gcGFsbG9jX2FycmF5KFRyZ21QYWNrQXJjSW5mbywg dHJnbU5GQS0+YXJjc0NvdW50KTsKIAlhcmNJbmRleCA9IDA7Ci0JaGFzaF9zZXFfaW5pdCgmc2Nh bl9zdGF0dXMsIHRyZ21ORkEtPnN0YXRlcyk7Ci0Jd2hpbGUgKChzdGF0ZSA9IChUcmdtU3RhdGUg KikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuX3N0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNo KFRyZ21TdGF0ZSwgc3RhdGUsIHRyZ21ORkEtPnN0YXRlcykKIAl7CiAJCVRyZ21TdGF0ZSAgKnNv dXJjZSA9IHN0YXRlOwogCQlMaXN0Q2VsbCAgICpjZWxsOwpAQCAtMjIwMiwxNiArMjE5NSwxMyBA QCBzdGF0aWMgdm9pZAogcHJpbnRUcmdtTkZBKFRyZ21ORkEgKnRyZ21ORkEpCiB7CiAJU3RyaW5n SW5mb0RhdGEgYnVmOwotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKLQlUcmdtU3RhdGUg ICpzdGF0ZTsKIAlUcmdtU3RhdGUgICppbml0c3RhdGUgPSBOVUxMOwogCiAJaW5pdFN0cmluZ0lu Zm8oJmJ1Zik7CiAKIAlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsICJcbmRpZ3JhcGggdHJh bnNmb3JtZWRORkEge1xuIik7CiAKLQloYXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1cywgdHJnbU5G QS0+c3RhdGVzKTsKLQl3aGlsZSAoKHN0YXRlID0gKFRyZ21TdGF0ZSAqKSBoYXNoX3NlcV9zZWFy Y2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJnbVN0YXRlLCBzdGF0 ZSwgdHJnbU5GQS0+c3RhdGVzKQogCXsKIAkJTGlzdENlbGwgICAqY2VsbDsKIApkaWZmIC0tZ2l0 IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jIGIvY29udHJpYi9wb3N0Z3Jlc19m ZHcvY29ubmVjdGlvbi5jCmluZGV4IDVjNzdjOWVjZGU1Li45OTAyNTY3ZjFmYiAxMDA2NDQKLS0t IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCisrKyBiL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L2Nvbm5lY3Rpb24uYwpAQCAtMTA0NCw4ICsxMDQ0LDYgQEAgcGdmZHdfcmVwb3J0X2lu dGVybmFsKGludCBlbGV2ZWwsIFBHcmVzdWx0ICpyZXMsIFBHY29ubiAqY29ubiwKIHN0YXRpYyB2 b2lkCiBwZ2Zkd194YWN0X2NhbGxiYWNrKFhhY3RFdmVudCBldmVudCwgdm9pZCAqYXJnKQogewot CUhBU0hfU0VRX1NUQVRVUyBzY2FuOwotCUNvbm5DYWNoZUVudHJ5ICplbnRyeTsKIAlMaXN0CSAg ICpwZW5kaW5nX2VudHJpZXMgPSBOSUw7CiAJTGlzdAkgICAqY2FuY2VsX3JlcXVlc3RlZCA9IE5J TDsKIApAQCAtMTA1Nyw4ICsxMDU1LDcgQEAgcGdmZHdfeGFjdF9jYWxsYmFjayhYYWN0RXZlbnQg ZXZlbnQsIHZvaWQgKmFyZykKIAkgKiBTY2FuIGFsbCBjb25uZWN0aW9uIGNhY2hlIGVudHJpZXMg dG8gZmluZCBvcGVuIHJlbW90ZSB0cmFuc2FjdGlvbnMsIGFuZAogCSAqIGNsb3NlIHRoZW0uCiAJ ICovCi0JaGFzaF9zZXFfaW5pdCgmc2NhbiwgQ29ubmVjdGlvbkhhc2gpOwotCXdoaWxlICgoZW50 cnkgPSAoQ29ubkNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuKSkpCisJZm9yZWFj aF9oYXNoKENvbm5DYWNoZUVudHJ5LCBlbnRyeSwgQ29ubmVjdGlvbkhhc2gpCiAJewogCQlQR3Jl c3VsdCAgICpyZXM7CiAKQEAgLTExOTUsOCArMTE5Miw2IEBAIHN0YXRpYyB2b2lkCiBwZ2Zkd19z dWJ4YWN0X2NhbGxiYWNrKFN1YlhhY3RFdmVudCBldmVudCwgU3ViVHJhbnNhY3Rpb25JZCBteVN1 YmlkLAogCQkJCQkgICBTdWJUcmFuc2FjdGlvbklkIHBhcmVudFN1YmlkLCB2b2lkICphcmcpCiB7 Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNhY2hlRW50cnkgKmVudHJ5OwogCWludAkJ CWN1cmxldmVsOwogCUxpc3QJICAgKnBlbmRpbmdfZW50cmllcyA9IE5JTDsKIAlMaXN0CSAgICpj YW5jZWxfcmVxdWVzdGVkID0gTklMOwpAQCAtMTIxNSw4ICsxMjEwLDcgQEAgcGdmZHdfc3VieGFj dF9jYWxsYmFjayhTdWJYYWN0RXZlbnQgZXZlbnQsIFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwK IAkgKiBvZiB0aGUgY3VycmVudCBsZXZlbCwgYW5kIGNsb3NlIHRoZW0uCiAJICovCiAJY3VybGV2 ZWwgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25OZXN0TGV2ZWwoKTsKLQloYXNoX3NlcV9pbml0KCZz Y2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IChDb25uQ2FjaGVFbnRyeSAq KSBoYXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2goQ29ubkNhY2hlRW50cnks IGVudHJ5LCBDb25uZWN0aW9uSGFzaCkKIAl7CiAJCWNoYXIJCXNxbFsxMDBdOwogCkBAIC0xMzA3 LDE0ICsxMzAxLDEwIEBAIHBnZmR3X3N1YnhhY3RfY2FsbGJhY2soU3ViWGFjdEV2ZW50IGV2ZW50 LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiBzdGF0aWMgdm9pZAogcGdmZHdfaW52YWxfY2Fs bGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKLQlIQVNI X1NFUV9TVEFUVVMgc2NhbjsKLQlDb25uQ2FjaGVFbnRyeSAqZW50cnk7Ci0KIAlBc3NlcnQoY2Fj aGVpZCA9PSBGT1JFSUdOU0VSVkVST0lEIHx8IGNhY2hlaWQgPT0gVVNFUk1BUFBJTkdPSUQpOwog CiAJLyogQ29ubmVjdGlvbkhhc2ggbXVzdCBleGlzdCBhbHJlYWR5LCBpZiB3ZSdyZSByZWdpc3Rl cmVkICovCi0JaGFzaF9zZXFfaW5pdCgmc2NhbiwgQ29ubmVjdGlvbkhhc2gpOwotCXdoaWxlICgo ZW50cnkgPSAoQ29ubkNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuKSkpCisJZm9y ZWFjaF9oYXNoKENvbm5DYWNoZUVudHJ5LCBlbnRyeSwgQ29ubmVjdGlvbkhhc2gpCiAJewogCQkv KiBJZ25vcmUgaW52YWxpZCBlbnRyaWVzICovCiAJCWlmIChlbnRyeS0+Y29ubiA9PSBOVUxMKQpA QCAtMjE2NSw4ICsyMTU1LDYgQEAgcG9zdGdyZXNfZmR3X2dldF9jb25uZWN0aW9uc19pbnRlcm5h bChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCQkJCQkJCSAgZW51bSBwZ2Zkd1ZlcnNpb24g YXBpX3ZlcnNpb24pCiB7CiAJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8g KikgZmNpbmZvLT5yZXN1bHRpbmZvOwotCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwotCUNvbm5DYWNo ZUVudHJ5ICplbnRyeTsKIAogCUluaXRNYXRlcmlhbGl6ZWRTUkYoZmNpbmZvLCAwKTsKIApAQCAt MjE4OSw4ICsyMTc3LDcgQEAgcG9zdGdyZXNfZmR3X2dldF9jb25uZWN0aW9uc19pbnRlcm5hbChG dW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCWVsb2coRVJST1IsICJpbmNvcnJlY3QgbnVtYmVy IG9mIG91dHB1dCBhcmd1bWVudHMiKTsKIAl9CiAKLQloYXNoX3NlcV9pbml0KCZzY2FuLCBDb25u ZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IChDb25uQ2FjaGVFbnRyeSAqKSBoYXNoX3Nl cV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2goQ29ubkNhY2hlRW50cnksIGVudHJ5LCBD b25uZWN0aW9uSGFzaCkKIAl7CiAJCUZvcmVpZ25TZXJ2ZXIgKnNlcnZlcjsKIAkJRGF0dW0JCXZh bHVlc1tQT1NUR1JFU19GRFdfR0VUX0NPTk5FQ1RJT05TX0NPTFNdID0gezB9OwpAQCAtMjM5Miw4 ICsyMzc5LDYgQEAgcG9zdGdyZXNfZmR3X2Rpc2Nvbm5lY3RfYWxsKFBHX0ZVTkNUSU9OX0FSR1Mp CiBzdGF0aWMgYm9vbAogZGlzY29ubmVjdF9jYWNoZWRfY29ubmVjdGlvbnMoT2lkIHNlcnZlcmlk KQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwotCUNvbm5DYWNoZUVudHJ5ICplbnRyeTsKIAli b29sCQlhbGwgPSAhT2lkSXNWYWxpZChzZXJ2ZXJpZCk7CiAJYm9vbAkJcmVzdWx0ID0gZmFsc2U7 CiAKQEAgLTI0MDQsOCArMjM4OSw3IEBAIGRpc2Nvbm5lY3RfY2FjaGVkX2Nvbm5lY3Rpb25zKE9p ZCBzZXJ2ZXJpZCkKIAlpZiAoIUNvbm5lY3Rpb25IYXNoKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlo YXNoX3NlcV9pbml0KCZzY2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IChD b25uQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2go Q29ubkNhY2hlRW50cnksIGVudHJ5LCBDb25uZWN0aW9uSGFzaCkKIAl7CiAJCS8qIElnbm9yZSBj YWNoZSBlbnRyeSBpZiBubyBvcGVuIGNvbm5lY3Rpb24gcmlnaHQgbm93LiAqLwogCQlpZiAoIWVu dHJ5LT5jb25uKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc2hpcHBhYmxlLmMg Yi9jb250cmliL3Bvc3RncmVzX2Zkdy9zaGlwcGFibGUuYwppbmRleCBlYzE4NTI0OTBlMC4uYzFk NjBlNTgyYTYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jCisr KyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jCkBAIC02NSwxNyArNjUsMTMgQEAg dHlwZWRlZiBzdHJ1Y3QKIHN0YXRpYyB2b2lkCiBJbnZhbGlkYXRlU2hpcHBhYmxlQ2FjaGVDYWxs YmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hf U0VRX1NUQVRVUyBzdGF0dXM7Ci0JU2hpcHBhYmxlQ2FjaGVFbnRyeSAqZW50cnk7Ci0KIAkvKgog CSAqIEluIHByaW5jaXBsZSB3ZSBjb3VsZCBmbHVzaCBvbmx5IGNhY2hlIGVudHJpZXMgcmVsYXRp bmcgdG8gdGhlCiAJICogcGdfZm9yZWlnbl9zZXJ2ZXIgZW50cnkgYmVpbmcgb3V0ZGF0ZWQ7IGJ1 dCB0aGF0IHdvdWxkIGJlIG1vcmUKIAkgKiBjb21wbGljYXRlZCwgYW5kIGl0J3MgcHJvYmFibHkg bm90IHdvcnRoIHRoZSB0cm91YmxlLiAgU28gZm9yIG5vdywganVzdAogCSAqIGZsdXNoIGFsbCBl bnRyaWVzLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgU2hpcHBhYmxlQ2FjaGVIYXNo KTsKLQl3aGlsZSAoKGVudHJ5ID0gKFNoaXBwYWJsZUNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2Vh cmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChTaGlwcGFibGVDYWNoZUVudHJ5 LCBlbnRyeSwgU2hpcHBhYmxlQ2FjaGVIYXNoKQogCXsKIAkJaWYgKGhhc2hfc2VhcmNoKFNoaXBw YWJsZUNhY2hlSGFzaCwKIAkJCQkJCSZlbnRyeS0+a2V5LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jl d3JpdGVoZWFwLmMKaW5kZXggZmJlNGQ2ZTZlOTguLmQ5MDQyNzY3ZGEyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKQEAgLTI5MCwxNiArMjkwLDExIEBAIGJlZ2luX2hlYXBf cmV3cml0ZShSZWxhdGlvbiBvbGRfaGVhcCwgUmVsYXRpb24gbmV3X2hlYXAsIFRyYW5zYWN0aW9u SWQgb2xkZXN0X3htCiB2b2lkCiBlbmRfaGVhcF9yZXdyaXRlKFJld3JpdGVTdGF0ZSBzdGF0ZSkK IHsKLQlIQVNIX1NFUV9TVEFUVVMgc2VxX3N0YXR1czsKLQlVbnJlc29sdmVkVHVwIHVucmVzb2x2 ZWQ7Ci0KIAkvKgogCSAqIFdyaXRlIGFueSByZW1haW5pbmcgdHVwbGVzIGluIHRoZSBVbnJlc29s dmVkVHVwcyB0YWJsZS4gSWYgd2UgaGF2ZSBhbnkKIAkgKiBsZWZ0LCB0aGV5IHNob3VsZCBpbiBm YWN0IGJlIGRlYWQsIGJ1dCBsZXQncyBlcnIgb24gdGhlIHNhZmUgc2lkZS4KIAkgKi8KLQloYXNo X3NlcV9pbml0KCZzZXFfc3RhdHVzLCBzdGF0ZS0+cnNfdW5yZXNvbHZlZF90dXBzKTsKLQotCXdo aWxlICgodW5yZXNvbHZlZCA9IGhhc2hfc2VxX3NlYXJjaCgmc2VxX3N0YXR1cykpICE9IE5VTEwp CisJZm9yZWFjaF9oYXNoKFVucmVzb2x2ZWRUdXBEYXRhLCB1bnJlc29sdmVkLCBzdGF0ZS0+cnNf dW5yZXNvbHZlZF90dXBzKQogCXsKIAkJSXRlbVBvaW50ZXJTZXRJbnZhbGlkKCZ1bnJlc29sdmVk LT50dXBsZS0+dF9kYXRhLT50X2N0aWQpOwogCQlyYXdfaGVhcF9pbnNlcnQoc3RhdGUsIHVucmVz b2x2ZWQtPnR1cGxlKTsKQEAgLTc5Nyw4ICs3OTIsNiBAQCBsb2dpY2FsX2JlZ2luX2hlYXBfcmV3 cml0ZShSZXdyaXRlU3RhdGUgc3RhdGUpCiBzdGF0aWMgdm9pZAogbG9naWNhbF9oZWFwX3Jld3Jp dGVfZmx1c2hfbWFwcGluZ3MoUmV3cml0ZVN0YXRlIHN0YXRlKQogewotCUhBU0hfU0VRX1NUQVRV UyBzZXFfc3RhdHVzOwotCVJld3JpdGVNYXBwaW5nRmlsZSAqc3JjOwogCWRsaXN0X211dGFibGVf aXRlciBpdGVyOwogCiAJQXNzZXJ0KHN0YXRlLT5yc19sb2dpY2FsX3Jld3JpdGUpOwpAQCAtODEw LDggKzgwMyw3IEBAIGxvZ2ljYWxfaGVhcF9yZXdyaXRlX2ZsdXNoX21hcHBpbmdzKFJld3JpdGVT dGF0ZSBzdGF0ZSkKIAllbG9nKERFQlVHMSwgImZsdXNoaW5nICV1IGxvZ2ljYWwgcmV3cml0ZSBt YXBwaW5nIGVudHJpZXMiLAogCQkgc3RhdGUtPnJzX251bV9yZXdyaXRlX21hcHBpbmdzKTsKIAot CWhhc2hfc2VxX2luaXQoJnNlcV9zdGF0dXMsIHN0YXRlLT5yc19sb2dpY2FsX21hcHBpbmdzKTsK LQl3aGlsZSAoKHNyYyA9IChSZXdyaXRlTWFwcGluZ0ZpbGUgKikgaGFzaF9zZXFfc2VhcmNoKCZz ZXFfc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmV3cml0ZU1hcHBpbmdGaWxlLCBz cmMsIHN0YXRlLT5yc19sb2dpY2FsX21hcHBpbmdzKQogCXsKIAkJY2hhcgkgICAqd2FsZGF0YTsK IAkJY2hhcgkgICAqd2FsZGF0YV9zdGFydDsKQEAgLTg5NSw5ICs4ODcsNiBAQCBsb2dpY2FsX2hl YXBfcmV3cml0ZV9mbHVzaF9tYXBwaW5ncyhSZXdyaXRlU3RhdGUgc3RhdGUpCiBzdGF0aWMgdm9p ZAogbG9naWNhbF9lbmRfaGVhcF9yZXdyaXRlKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIHsKLQlIQVNI X1NFUV9TVEFUVVMgc2VxX3N0YXR1czsKLQlSZXdyaXRlTWFwcGluZ0ZpbGUgKnNyYzsKLQogCS8q IGRvbmUsIG5vIGxvZ2ljYWwgcmV3cml0ZSBpbiBwcm9ncmVzcyAqLwogCWlmICghc3RhdGUtPnJz X2xvZ2ljYWxfcmV3cml0ZSkKIAkJcmV0dXJuOwpAQCAtOTA3LDggKzg5Niw3IEBAIGxvZ2ljYWxf ZW5kX2hlYXBfcmV3cml0ZShSZXdyaXRlU3RhdGUgc3RhdGUpCiAJCWxvZ2ljYWxfaGVhcF9yZXdy aXRlX2ZsdXNoX21hcHBpbmdzKHN0YXRlKTsKIAogCS8qIEl0ZXJhdGUgb3ZlciBhbGwgbWFwcGlu Z3Mgd2UgaGF2ZSB3cml0dGVuIGFuZCBmc3luYyB0aGUgZmlsZXMuICovCi0JaGFzaF9zZXFfaW5p dCgmc2VxX3N0YXR1cywgc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3MpOwotCXdoaWxlICgoc3Jj ID0gKFJld3JpdGVNYXBwaW5nRmlsZSAqKSBoYXNoX3NlcV9zZWFyY2goJnNlcV9zdGF0dXMpKSAh PSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZXdyaXRlTWFwcGluZ0ZpbGUsIHNyYywgc3RhdGUtPnJz X2xvZ2ljYWxfbWFwcGluZ3MpCiAJewogCQlpZiAoRmlsZVN5bmMoc3JjLT52ZmQsIFdBSVRfRVZF TlRfTE9HSUNBTF9SRVdSSVRFX1NZTkMpICE9IDApCiAJCQllcmVwb3J0KGRhdGFfc3luY19lbGV2 ZWwoRVJST1IpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0 aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYwppbmRleCBkMTFl NDJjOTQ5MC4uM2M3ZmM2NWI4ZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2d1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGls cy5jCkBAIC0xNjAsMTUgKzE2MCwxMCBAQCBzdGF0aWMgdm9pZAogZm9yZ2V0X2ludmFsaWRfcGFn ZXMoUmVsRmlsZUxvY2F0b3IgbG9jYXRvciwgRm9ya051bWJlciBmb3Jrbm8sCiAJCQkJCSBCbG9j a051bWJlciBtaW5ibGtubykKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCXhsX2ludmFs aWRfcGFnZSAqaGVudHJ5OwotCiAJaWYgKGludmFsaWRfcGFnZV90YWIgPT0gTlVMTCkKIAkJcmV0 dXJuOwkJCQkJLyogbm90aGluZyB0byBkbyAqLwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBp bnZhbGlkX3BhZ2VfdGFiKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKHhsX2ludmFsaWRfcGFnZSAq KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKHhsX2lu dmFsaWRfcGFnZSwgaGVudHJ5LCBpbnZhbGlkX3BhZ2VfdGFiKQogCXsKIAkJaWYgKFJlbEZpbGVM b2NhdG9yRXF1YWxzKGhlbnRyeS0+a2V5LmxvY2F0b3IsIGxvY2F0b3IpICYmCiAJCQloZW50cnkt PmtleS5mb3Jrbm8gPT0gZm9ya25vICYmCkBAIC0xOTAsMTUgKzE4NSwxMCBAQCBmb3JnZXRfaW52 YWxpZF9wYWdlcyhSZWxGaWxlTG9jYXRvciBsb2NhdG9yLCBGb3JrTnVtYmVyIGZvcmtubywKIHN0 YXRpYyB2b2lkCiBmb3JnZXRfaW52YWxpZF9wYWdlc19kYihPaWQgZGJpZCkKIHsKLQlIQVNIX1NF UV9TVEFUVVMgc3RhdHVzOwotCXhsX2ludmFsaWRfcGFnZSAqaGVudHJ5OwotCiAJaWYgKGludmFs aWRfcGFnZV90YWIgPT0gTlVMTCkKIAkJcmV0dXJuOwkJCQkJLyogbm90aGluZyB0byBkbyAqLwog Ci0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBpbnZhbGlkX3BhZ2VfdGFiKTsKLQotCXdoaWxlICgo aGVudHJ5ID0gKHhsX2ludmFsaWRfcGFnZSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9 IE5VTEwpCisJZm9yZWFjaF9oYXNoKHhsX2ludmFsaWRfcGFnZSwgaGVudHJ5LCBpbnZhbGlkX3Bh Z2VfdGFiKQogCXsKIAkJaWYgKGhlbnRyeS0+a2V5LmxvY2F0b3IuZGJPaWQgPT0gZGJpZCkKIAkJ ewpAQCAtMjI4LDIwICsyMTgsMTYgQEAgWExvZ0hhdmVJbnZhbGlkUGFnZXModm9pZCkKIHZvaWQK IFhMb2dDaGVja0ludmFsaWRQYWdlcyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 Ci0JeGxfaW52YWxpZF9wYWdlICpoZW50cnk7CiAJYm9vbAkJZm91bmRvbmUgPSBmYWxzZTsKIAog CWlmIChpbnZhbGlkX3BhZ2VfdGFiID09IE5VTEwpCiAJCXJldHVybjsJCQkJCS8qIG5vdGhpbmcg dG8gZG8gKi8KIAotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgaW52YWxpZF9wYWdlX3RhYik7Ci0K IAkvKgogCSAqIE91ciBzdHJhdGVneSBpcyB0byBlbWl0IFdBUk5JTkcgbWVzc2FnZXMgZm9yIGFs bCByZW1haW5pbmcgZW50cmllcyBhbmQKIAkgKiBvbmx5IFBBTklDIGFmdGVyIHdlJ3ZlIGR1bXBl ZCBhbGwgdGhlIGF2YWlsYWJsZSBpbmZvLgogCSAqLwotCXdoaWxlICgoaGVudHJ5ID0gKHhsX2lu dmFsaWRfcGFnZSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKHhsX2ludmFsaWRfcGFnZSwgaGVudHJ5LCBpbnZhbGlkX3BhZ2VfdGFiKQogCXsKIAkJ cmVwb3J0X2ludmFsaWRfcGFnZShXQVJOSU5HLCBoZW50cnktPmtleS5sb2NhdG9yLCBoZW50cnkt PmtleS5mb3Jrbm8sCiAJCQkJCQkJaGVudHJ5LT5rZXkuYmxrbm8sIGhlbnRyeS0+cHJlc2VudCk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2VudW0uYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfZW51bS5jCmluZGV4IDg2YzhiYWRhNTU3Li5iZTRhOGVjZDllNiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19lbnVtLmMKQEAgLTgzOCwxMiArODM4LDEwIEBAIFNlcmlhbGl6ZVVuY29tbWl0dGVk RW51bXModm9pZCAqc3BhY2UsIFNpemUgc2l6ZSkKIAkvKiBXcml0ZSBvdXQgYWxsIHRoZSBPSURz IGZyb20gdGhlIHR5cGVzIGhhc2ggdGFibGUsIGlmIHRoZXJlIGlzIG9uZS4gKi8KIAlpZiAodW5j b21taXR0ZWRfZW51bV90eXBlcykKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JCU9p ZAkJICAgKnZhbHVlOwotCi0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgdW5jb21taXR0ZWRfZW51 bV90eXBlcyk7Ci0JCXdoaWxlICgodmFsdWUgPSAoT2lkICopIGhhc2hfc2VxX3NlYXJjaCgmc3Rh dHVzKSkpCisJCWZvcmVhY2hfaGFzaChPaWQsIHZhbHVlLCB1bmNvbW1pdHRlZF9lbnVtX3R5cGVz KQorCQl7CiAJCQkqc2VyaWFsaXplZCsrID0gKnZhbHVlOworCQl9CiAJfQogCiAJLyogV3JpdGUg b3V0IHRoZSB0ZXJtaW5hdG9yLiAqLwpAQCAtODUyLDEyICs4NTAsMTAgQEAgU2VyaWFsaXplVW5j b21taXR0ZWRFbnVtcyh2b2lkICpzcGFjZSwgU2l6ZSBzaXplKQogCS8qIFdyaXRlIG91dCBhbGwg dGhlIE9JRHMgZnJvbSB0aGUgdmFsdWVzIGhhc2ggdGFibGUsIGlmIHRoZXJlIGlzIG9uZS4gKi8K IAlpZiAodW5jb21taXR0ZWRfZW51bV92YWx1ZXMpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3Rh dHVzOwotCQlPaWQJCSAgICp2YWx1ZTsKLQotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHVuY29t bWl0dGVkX2VudW1fdmFsdWVzKTsKLQkJd2hpbGUgKCh2YWx1ZSA9IChPaWQgKikgaGFzaF9zZXFf c2VhcmNoKCZzdGF0dXMpKSkKKwkJZm9yZWFjaF9oYXNoKE9pZCwgdmFsdWUsIHVuY29tbWl0dGVk X2VudW1fdmFsdWVzKQorCQl7CiAJCQkqc2VyaWFsaXplZCsrID0gKnZhbHVlOworCQl9CiAJfQog CiAJLyogV3JpdGUgb3V0IHRoZSB0ZXJtaW5hdG9yLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9zdG9yYWdlLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N0b3JhZ2UuYwppbmRl eCBkYjNlMDgzMTliNS4uMjdkMjFiNTU2YmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3RvcmFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jCkBAIC01OTQs MTAgKzU5NCw3IEBAIHZvaWQKIFNlcmlhbGl6ZVBlbmRpbmdTeW5jcyhTaXplIG1heFNpemUsIGNo YXIgKnN0YXJ0QWRkcmVzcykKIHsKIAlIVEFCCSAgICp0bXBoYXNoOwotCUhBU0hfU0VRX1NUQVRV UyBzY2FuOwotCVBlbmRpbmdSZWxTeW5jICpzeW5jOwogCVBlbmRpbmdSZWxEZWxldGUgKmRlbGV0 ZTsKLQlSZWxGaWxlTG9jYXRvciAqc3JjOwogCVJlbEZpbGVMb2NhdG9yICpkZXN0ID0gKFJlbEZp bGVMb2NhdG9yICopIHN0YXJ0QWRkcmVzczsKIAogCWlmICghcGVuZGluZ1N5bmNIYXNoKQpAQCAt NjA4LDkgKzYwNSwxMCBAQCBTZXJpYWxpemVQZW5kaW5nU3luY3MoU2l6ZSBtYXhTaXplLCBjaGFy ICpzdGFydEFkZHJlc3MpCiAJCQkJCQkgICBoYXNoX2dldF9udW1fZW50cmllcyhwZW5kaW5nU3lu Y0hhc2gpKTsKIAogCS8qIGNvbGxlY3QgYWxsIHJsb2NhdG9yIGZyb20gcGVuZGluZyBzeW5jcyAq LwotCWhhc2hfc2VxX2luaXQoJnNjYW4sIHBlbmRpbmdTeW5jSGFzaCk7Ci0Jd2hpbGUgKChzeW5j ID0gKFBlbmRpbmdSZWxTeW5jICopIGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpKQorCWZvcmVhY2hf aGFzaChQZW5kaW5nUmVsU3luYywgc3luYywgcGVuZGluZ1N5bmNIYXNoKQorCXsKIAkJKHZvaWQp IGhhc2hfc2VhcmNoKHRtcGhhc2gsICZzeW5jLT5ybG9jYXRvciwgSEFTSF9FTlRFUiwgTlVMTCk7 CisJfQogCiAJLyogcmVtb3ZlIGRlbGV0ZWQgcm5vZGVzICovCiAJZm9yIChkZWxldGUgPSBwZW5k aW5nRGVsZXRlczsgZGVsZXRlICE9IE5VTEw7IGRlbGV0ZSA9IGRlbGV0ZS0+bmV4dCkKQEAgLTYx OCw5ICs2MTYsMTAgQEAgU2VyaWFsaXplUGVuZGluZ1N5bmNzKFNpemUgbWF4U2l6ZSwgY2hhciAq c3RhcnRBZGRyZXNzKQogCQkJKHZvaWQpIGhhc2hfc2VhcmNoKHRtcGhhc2gsICZkZWxldGUtPnJs b2NhdG9yLAogCQkJCQkJCSAgIEhBU0hfUkVNT1ZFLCBOVUxMKTsKIAotCWhhc2hfc2VxX2luaXQo JnNjYW4sIHRtcGhhc2gpOwotCXdoaWxlICgoc3JjID0gKFJlbEZpbGVMb2NhdG9yICopIGhhc2hf c2VxX3NlYXJjaCgmc2NhbikpKQorCWZvcmVhY2hfaGFzaChSZWxGaWxlTG9jYXRvciwgc3JjLCB0 bXBoYXNoKQorCXsKIAkJKmRlc3QrKyA9ICpzcmM7CisJfQogCiAJaGFzaF9kZXN0cm95KHRtcGhh c2gpOwogCkBAIC03MzMsOCArNzMyLDYgQEAgc21nckRvUGVuZGluZ1N5bmNzKGJvb2wgaXNDb21t aXQsIGJvb2wgaXNQYXJhbGxlbFdvcmtlcikKIAlpbnQJCQlucmVscyA9IDAsCiAJCQkJbWF4cmVs cyA9IDA7CiAJU01nclJlbGF0aW9uICpzcmVscyA9IE5VTEw7Ci0JSEFTSF9TRVFfU1RBVFVTIHNj YW47Ci0JUGVuZGluZ1JlbFN5bmMgKnBlbmRpbmdzeW5jOwogCiAJQXNzZXJ0KEdldEN1cnJlbnRU cmFuc2FjdGlvbk5lc3RMZXZlbCgpID09IDEpOwogCkBAIC03NjMsOCArNzYwLDcgQEAgc21nckRv UGVuZGluZ1N5bmNzKGJvb2wgaXNDb21taXQsIGJvb2wgaXNQYXJhbGxlbFdvcmtlcikKIAkJCSh2 b2lkKSBoYXNoX3NlYXJjaChwZW5kaW5nU3luY0hhc2gsICZwZW5kaW5nLT5ybG9jYXRvciwKIAkJ CQkJCQkgICBIQVNIX1JFTU9WRSwgTlVMTCk7CiAKLQloYXNoX3NlcV9pbml0KCZzY2FuLCBwZW5k aW5nU3luY0hhc2gpOwotCXdoaWxlICgocGVuZGluZ3N5bmMgPSAoUGVuZGluZ1JlbFN5bmMgKikg aGFzaF9zZXFfc2VhcmNoKCZzY2FuKSkpCisJZm9yZWFjaF9oYXNoKFBlbmRpbmdSZWxTeW5jLCBw ZW5kaW5nc3luYywgcGVuZGluZ1N5bmNIYXNoKQogCXsKIAkJRm9ya051bWJlcglmb3JrOwogCQlC bG9ja051bWJlciBuYmxvY2tzW01BWF9GT1JLTlVNICsgMV07CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMK aW5kZXggZWIxYTdlY2ZlYmMuLjRhZDljMTBhN2Y4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBA IC01MzMsMTYgKzUzMywxMiBAQCBEcm9wUHJlcGFyZWRTdGF0ZW1lbnQoY29uc3QgY2hhciAqc3Rt dF9uYW1lLCBib29sIHNob3dFcnJvcikKIHZvaWQKIERyb3BBbGxQcmVwYXJlZFN0YXRlbWVudHMo dm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2VxOwotCVByZXBhcmVkU3RhdGVtZW50ICplbnRy eTsKLQogCS8qIG5vdGhpbmcgY2FjaGVkICovCiAJaWYgKCFwcmVwYXJlZF9xdWVyaWVzKQogCQly ZXR1cm47CiAKIAkvKiB3YWxrIG92ZXIgY2FjaGUgKi8KLQloYXNoX3NlcV9pbml0KCZzZXEsIHBy ZXBhcmVkX3F1ZXJpZXMpOwotCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJnNlcSkp ICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFByZXBhcmVkU3RhdGVtZW50LCBlbnRyeSwgcHJlcGFy ZWRfcXVlcmllcykKIAl7CiAJCS8qIFJlbGVhc2UgdGhlIHBsYW5jYWNoZSBlbnRyeSAqLwogCQlE cm9wQ2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSk7CkBAIC02ODksMTEgKzY4NSw3IEBAIHBn X3ByZXBhcmVkX3N0YXRlbWVudChQR19GVU5DVElPTl9BUkdTKQogCS8qIGhhc2ggdGFibGUgbWln aHQgYmUgdW5pbml0aWFsaXplZCAqLwogCWlmIChwcmVwYXJlZF9xdWVyaWVzKQogCXsKLQkJSEFT SF9TRVFfU1RBVFVTIGhhc2hfc2VxOwotCQlQcmVwYXJlZFN0YXRlbWVudCAqcHJlcF9zdG10Owot Ci0JCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwcmVwYXJlZF9xdWVyaWVzKTsKLQkJd2hpbGUg KChwcmVwX3N0bXQgPSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVMTCkKKwkJZm9y ZWFjaF9oYXNoKFByZXBhcmVkU3RhdGVtZW50LCBwcmVwX3N0bXQsIHByZXBhcmVkX3F1ZXJpZXMp CiAJCXsKIAkJCVR1cGxlRGVzYwlyZXN1bHRfZGVzYzsKIAkJCURhdHVtCQl2YWx1ZXNbOF07CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDQwYTM5OTg5ZWFhLi43NzIyNTA3YzgzOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTIyNDIsMTQgKzIyNDIsOSBAQCBFeGVjdXRlVHJ1 bmNhdGVHdXRzKExpc3QgKmV4cGxpY2l0X3JlbHMsCiAJLyogTm93IGdvIHRocm91Z2ggdGhlIGhh c2ggdGFibGUsIGFuZCB0cnVuY2F0ZSBmb3JlaWduIHRhYmxlcyAqLwogCWlmIChmdF9odGFiKQog CXsKLQkJRm9yZWlnblRydW5jYXRlSW5mbyAqZnRfaW5mbzsKLQkJSEFTSF9TRVFfU1RBVFVTIHNl cTsKLQotCQloYXNoX3NlcV9pbml0KCZzZXEsIGZ0X2h0YWIpOwotCiAJCVBHX1RSWSgpOwogCQl7 Ci0JCQl3aGlsZSAoKGZ0X2luZm8gPSBoYXNoX3NlcV9zZWFyY2goJnNlcSkpICE9IE5VTEwpCisJ CQlmb3JlYWNoX2hhc2goRm9yZWlnblRydW5jYXRlSW5mbywgZnRfaW5mbywgZnRfaHRhYikKIAkJ CXsKIAkJCQlGZHdSb3V0aW5lICpyb3V0aW5lID0gR2V0RmR3Um91dGluZUJ5U2VydmVySWQoZnRf aW5mby0+c2VydmVyaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9wcmVkdGVzdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYwppbmRl eCAzYmY1ZTdhYzhiYi4uNGFlMTQ1NDg5NGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3ByZWR0ZXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJl ZHRlc3QuYwpAQCAtMjM0MiwxNSArMjM0MiwxMCBAQCBnZXRfYnRyZWVfdGVzdF9vcChPaWQgcHJl ZF9vcCwgT2lkIGNsYXVzZV9vcCwgYm9vbCByZWZ1dGVfaXQpCiBzdGF0aWMgdm9pZAogSW52YWxp ZGF0ZU9wclByb29mQ2FjaGVDYWxsQmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIg aGFzaHZhbHVlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JT3ByUHJvb2ZDYWNoZUVu dHJ5ICpoZW50cnk7Ci0KIAlBc3NlcnQoT3ByUHJvb2ZDYWNoZUhhc2ggIT0gTlVMTCk7CiAKIAkv KiBDdXJyZW50bHkgd2UganVzdCByZXNldCBhbGwgZW50cmllczsgaGFyZCB0byBiZSBzbWFydGVy IC4uLiAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgT3ByUHJvb2ZDYWNoZUhhc2gpOwotCi0J d2hpbGUgKChoZW50cnkgPSAoT3ByUHJvb2ZDYWNoZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgm c3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goT3ByUHJvb2ZDYWNoZUVudHJ5LCBoZW50 cnksIE9wclByb29mQ2FjaGVIYXNoKQogCXsKIAkJaGVudHJ5LT5oYXZlX2ltcGxpYyA9IGZhbHNl OwogCQloZW50cnktPmhhdmVfcmVmdXRlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2Vfb3Blci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYwpp bmRleCBkMzZlN2FkMzAzMC4uYjI1YWIwZTZiN2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9vcGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYwpA QCAtMTA3NiwxNSArMTA3NiwxMCBAQCBtYWtlX29wZXJfY2FjaGVfZW50cnkoT3ByQ2FjaGVLZXkg KmtleSwgT2lkIG9wcl9vaWQpCiBzdGF0aWMgdm9pZAogSW52YWxpZGF0ZU9wckNhY2hlQ2FsbEJh Y2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKLQlIQVNIX1NF UV9TVEFUVVMgc3RhdHVzOwotCU9wckNhY2hlRW50cnkgKmhlbnRyeTsKLQogCUFzc2VydChPcHJD YWNoZUhhc2ggIT0gTlVMTCk7CiAKIAkvKiBDdXJyZW50bHkgd2UganVzdCBmbHVzaCBhbGwgZW50 cmllczsgaGFyZCB0byBiZSBzbWFydGVyIC4uLiAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywg T3ByQ2FjaGVIYXNoKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKE9wckNhY2hlRW50cnkgKikgaGFz aF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChPcHJDYWNoZUVu dHJ5LCBoZW50cnksIE9wckNhY2hlSGFzaCkKIAl7CiAJCWlmIChoYXNoX3NlYXJjaChPcHJDYWNo ZUhhc2gsCiAJCQkJCQkmaGVudHJ5LT5rZXksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0 aXRpb25pbmcvcGFydGRlc2MuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5j CmluZGV4IGRiMjZlNGE4MmI2Li4zZWNjOTM4NzIzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRkZXNjLmMKQEAgLTQ3OCwxMSArNDc4LDcgQEAgUGFydGl0aW9uRGlyZWN0b3J5TG9va3VwKFBh cnRpdGlvbkRpcmVjdG9yeSBwZGlyLCBSZWxhdGlvbiByZWwpCiB2b2lkCiBEZXN0cm95UGFydGl0 aW9uRGlyZWN0b3J5KFBhcnRpdGlvbkRpcmVjdG9yeSBwZGlyKQogewotCUhBU0hfU0VRX1NUQVRV UyBzdGF0dXM7Ci0JUGFydGl0aW9uRGlyZWN0b3J5RW50cnkgKnBkZTsKLQotCWhhc2hfc2VxX2lu aXQoJnN0YXR1cywgcGRpci0+cGRpcl9oYXNoKTsKLQl3aGlsZSAoKHBkZSA9IGhhc2hfc2VxX3Nl YXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUGFydGl0aW9uRGlyZWN0b3J5 RW50cnksIHBkZSwgcGRpci0+cGRpcl9oYXNoKQogCQlSZWxhdGlvbkRlY3JlbWVudFJlZmVyZW5j ZUNvdW50KHBkZS0+cmVsKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRl eCBkNGEyOWJiZjg3Yi4uMDU0MGE0ZTJkN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1 bS5jCkBAIC0xMDE4LDggKzEwMTgsNiBAQCByZWJ1aWxkX2RhdGFiYXNlX2xpc3QoT2lkIG5ld2Ri KQogCQlUaW1lc3RhbXBUeiBjdXJyZW50X3RpbWU7CiAJCWludAkJCW1pbGxpc19pbmNyZW1lbnQ7 CiAJCWF2bF9kYmFzZSAgKmRiYXJ5OwotCQlhdmxfZGJhc2UgICpkYjsKLQkJSEFTSF9TRVFfU1RB VFVTIHNlcTsKIAkJaW50CQkJaTsKIAogCQkvKiBwdXQgYWxsIHRoZSBoYXNoIGVsZW1lbnRzIGlu dG8gYW4gYXJyYXkgKi8KQEAgLTEwMzAsOCArMTAyOCw3IEBAIHJlYnVpbGRfZGF0YWJhc2VfbGlz dChPaWQgbmV3ZGIpCiAjZW5kaWYKIAogCQlpID0gMDsKLQkJaGFzaF9zZXFfaW5pdCgmc2VxLCBk Ymhhc2gpOwotCQl3aGlsZSAoKGRiID0gaGFzaF9zZXFfc2VhcmNoKCZzZXEpKSAhPSBOVUxMKQor CQlmb3JlYWNoX2hhc2goYXZsX2RiYXNlLCBkYiwgZGJoYXNoKQogCQkJbWVtY3B5KCYoZGJhcnlb aSsrXSksIGRiLCBzaXplb2YoYXZsX2RiYXNlKSk7CiAKIAkJLyogc29ydCB0aGUgYXJyYXkgKi8K QEAgLTEwNTYsNyArMTA1Myw3IEBAIHJlYnVpbGRfZGF0YWJhc2VfbGlzdChPaWQgbmV3ZGIpCiAJ CSAqLwogCQlmb3IgKGkgPSAwOyBpIDwgbmVsZW1zOyBpKyspCiAJCXsKLQkJCWRiID0gJihkYmFy eVtpXSk7CisJCQlhdmxfZGJhc2UgICpkYiA9ICYoZGJhcnlbaV0pOwogCiAJCQljdXJyZW50X3Rp bWUgPSBUaW1lc3RhbXBUelBsdXNNaWxsaXNlY29uZHMoY3VycmVudF90aW1lLAogCQkJCQkJCQkJ CQkJCSAgIG1pbGxpc19pbmNyZW1lbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9yZWxhdGlvbi5jCmluZGV4IGZjZjI5NWYxZGYxLi5mZWY5YzM1N2EzZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwpAQCAtNjQsMjUgKzY0LDE5IEBAIHN0 YXRpYyBPaWQJRmluZExvZ2ljYWxSZXBMb2NhbEluZGV4KFJlbGF0aW9uIGxvY2FscmVsLCBMb2dp Y2FsUmVwUmVsYXRpb24gKnJlbW90CiBzdGF0aWMgdm9pZAogbG9naWNhbHJlcF9yZWxtYXBfaW52 YWxpZGF0ZV9jYihEYXR1bSBhcmcsIE9pZCByZWxvaWQpCiB7Ci0JTG9naWNhbFJlcFJlbE1hcEVu dHJ5ICplbnRyeTsKLQogCS8qIEp1c3QgdG8gYmUgc3VyZS4gKi8KIAlpZiAoTG9naWNhbFJlcFJl bE1hcCA9PSBOVUxMKQogCQlyZXR1cm47CiAKIAlpZiAocmVsb2lkICE9IEludmFsaWRPaWQpCiAJ ewotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCi0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywg TG9naWNhbFJlcFJlbE1hcCk7Ci0KIAkJLyogVE9ETywgdXNlIGludmVyc2UgbG9va3VwIGhhc2h0 YWJsZT8gKi8KLQkJd2hpbGUgKChlbnRyeSA9IChMb2dpY2FsUmVwUmVsTWFwRW50cnkgKikgaGFz aF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTG9naWNhbFJl cFJlbE1hcEVudHJ5LCBlbnRyeSwgTG9naWNhbFJlcFJlbE1hcCkKIAkJewogCQkJaWYgKGVudHJ5 LT5sb2NhbHJlbG9pZCA9PSByZWxvaWQpCiAJCQl7CiAJCQkJZW50cnktPmxvY2FscmVsdmFsaWQg PSBmYWxzZTsKLQkJCQloYXNoX3NlcV90ZXJtKCZzdGF0dXMpOworCQkJCWZvcmVhY2hfaGFzaF90 ZXJtKGVudHJ5KTsKIAkJCQlicmVhazsKIAkJCX0KIAkJfQpAQCAtOTAsMTEgKzg0LDcgQEAgbG9n aWNhbHJlcF9yZWxtYXBfaW52YWxpZGF0ZV9jYihEYXR1bSBhcmcsIE9pZCByZWxvaWQpCiAJZWxz ZQogCXsKIAkJLyogaW52YWxpZGF0ZSBhbGwgY2FjaGUgZW50cmllcyAqLwotCQlIQVNIX1NFUV9T VEFUVVMgc3RhdHVzOwotCi0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9naWNhbFJlcFJlbE1h cCk7Ci0KLQkJd2hpbGUgKChlbnRyeSA9IChMb2dpY2FsUmVwUmVsTWFwRW50cnkgKikgaGFzaF9z ZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTG9naWNhbFJlcFJl bE1hcEVudHJ5LCBlbnRyeSwgTG9naWNhbFJlcFJlbE1hcCkKIAkJCWVudHJ5LT5sb2NhbHJlbHZh bGlkID0gZmFsc2U7CiAJfQogfQpAQCAtNTMxLDI1ICs1MjEsMTkgQEAgbG9naWNhbHJlcF9yZWxf Y2xvc2UoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwsIExPQ0tNT0RFIGxvY2ttb2RlKQogc3Rh dGljIHZvaWQKIGxvZ2ljYWxyZXBfcGFydG1hcF9pbnZhbGlkYXRlX2NiKERhdHVtIGFyZywgT2lk IHJlbG9pZCkKIHsKLQlMb2dpY2FsUmVwUGFydE1hcEVudHJ5ICplbnRyeTsKLQogCS8qIEp1c3Qg dG8gYmUgc3VyZS4gKi8KIAlpZiAoTG9naWNhbFJlcFBhcnRNYXAgPT0gTlVMTCkKIAkJcmV0dXJu OwogCiAJaWYgKHJlbG9pZCAhPSBJbnZhbGlkT2lkKQogCXsKLQkJSEFTSF9TRVFfU1RBVFVTIHN0 YXR1czsKLQotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvZ2ljYWxSZXBQYXJ0TWFwKTsKLQog CQkvKiBUT0RPLCB1c2UgaW52ZXJzZSBsb29rdXAgaGFzaHRhYmxlPyAqLwotCQl3aGlsZSAoKGVu dHJ5ID0gKExvZ2ljYWxSZXBQYXJ0TWFwRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMp KSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTG9naWNhbFJlcFBhcnRNYXBFbnRyeSwgZW50cnks IExvZ2ljYWxSZXBQYXJ0TWFwKQogCQl7CiAJCQlpZiAoZW50cnktPnJlbG1hcGVudHJ5LmxvY2Fs cmVsb2lkID09IHJlbG9pZCkKIAkJCXsKIAkJCQllbnRyeS0+cmVsbWFwZW50cnkubG9jYWxyZWx2 YWxpZCA9IGZhbHNlOwotCQkJCWhhc2hfc2VxX3Rlcm0oJnN0YXR1cyk7CisJCQkJZm9yZWFjaF9o YXNoX3Rlcm0oZW50cnkpOwogCQkJCWJyZWFrOwogCQkJfQogCQl9CkBAIC01NTcsMTEgKzU0MSw3 IEBAIGxvZ2ljYWxyZXBfcGFydG1hcF9pbnZhbGlkYXRlX2NiKERhdHVtIGFyZywgT2lkIHJlbG9p ZCkKIAllbHNlCiAJewogCQkvKiBpbnZhbGlkYXRlIGFsbCBjYWNoZSBlbnRyaWVzICovCi0JCUhB U0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2dpY2Fs UmVwUGFydE1hcCk7Ci0KLQkJd2hpbGUgKChlbnRyeSA9IChMb2dpY2FsUmVwUGFydE1hcEVudHJ5 ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKExv Z2ljYWxSZXBQYXJ0TWFwRW50cnksIGVudHJ5LCBMb2dpY2FsUmVwUGFydE1hcCkKIAkJCWVudHJ5 LT5yZWxtYXBlbnRyeS5sb2NhbHJlbHZhbGlkID0gZmFsc2U7CiAJfQogfQpAQCAtNTc5LDE1ICs1 NTksMTIgQEAgbG9naWNhbHJlcF9wYXJ0bWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQg cmVsb2lkKQogdm9pZAogbG9naWNhbHJlcF9wYXJ0bWFwX3Jlc2V0X3JlbG1hcChMb2dpY2FsUmVw UmVsYXRpb24gKnJlbW90ZXJlbCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCUxvZ2lj YWxSZXBQYXJ0TWFwRW50cnkgKnBhcnRfZW50cnk7CiAJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpl bnRyeTsKIAogCWlmIChMb2dpY2FsUmVwUGFydE1hcCA9PSBOVUxMKQogCQlyZXR1cm47CiAKLQlo YXNoX3NlcV9pbml0KCZzdGF0dXMsIExvZ2ljYWxSZXBQYXJ0TWFwKTsKLQl3aGlsZSAoKHBhcnRf ZW50cnkgPSAoTG9naWNhbFJlcFBhcnRNYXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1 cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKExvZ2ljYWxSZXBQYXJ0TWFwRW50cnksIHBhcnRf ZW50cnksIExvZ2ljYWxSZXBQYXJ0TWFwKQogCXsKIAkJZW50cnkgPSAmcGFydF9lbnRyeS0+cmVs bWFwZW50cnk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVy YnVmZmVyLmMKaW5kZXggZmE5M2ExYmJkZTEuLmFkZDMxNTE0NDQ0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwpAQCAtNTI0NywxNSArNTI0 NywxMSBAQCBSZW9yZGVyQnVmZmVyVG9hc3RSZXBsYWNlKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCiBzdGF0aWMgdm9pZAogUmVvcmRlckJ1ZmZlclRvYXN0UmVzZXQo UmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKIHsKLQlIQVNIX1NFUV9T VEFUVVMgaHN0YXQ7Ci0JUmVvcmRlckJ1ZmZlclRvYXN0RW50ICplbnQ7Ci0KIAlpZiAodHhuLT50 b2FzdF9oYXNoID09IE5VTEwpCiAJCXJldHVybjsKIAogCS8qIHNlcXVlbnRpYWxseSB3YWxrIG92 ZXIgdGhlIGhhc2ggYW5kIGZyZWUgZXZlcnl0aGluZyAqLwotCWhhc2hfc2VxX2luaXQoJmhzdGF0 LCB0eG4tPnRvYXN0X2hhc2gpOwotCXdoaWxlICgoZW50ID0gKFJlb3JkZXJCdWZmZXJUb2FzdEVu dCAqKSBoYXNoX3NlcV9zZWFyY2goJmhzdGF0KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVv cmRlckJ1ZmZlclRvYXN0RW50LCBlbnQsIHR4bi0+dG9hc3RfaGFzaCkKIAl7CiAJCWRsaXN0X211 dGFibGVfaXRlciBpdDsKIApAQCAtNTMxOCwxMSArNTMxNCw3IEBAIHR5cGVkZWYgc3RydWN0IFJl d3JpdGVNYXBwaW5nRmlsZQogc3RhdGljIHZvaWQKIERpc3BsYXlNYXBwaW5nKEhUQUIgKnR1cGxl Y2lkX2RhdGEpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIGhzdGF0OwotCVJlb3JkZXJCdWZmZXJUdXBs ZUNpZEVudCAqZW50OwotCi0JaGFzaF9zZXFfaW5pdCgmaHN0YXQsIHR1cGxlY2lkX2RhdGEpOwot CXdoaWxlICgoZW50ID0gKFJlb3JkZXJCdWZmZXJUdXBsZUNpZEVudCAqKSBoYXNoX3NlcV9zZWFy Y2goJmhzdGF0KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVvcmRlckJ1ZmZlclR1cGxlQ2lk RW50LCBlbnQsIHR1cGxlY2lkX2RhdGEpCiAJewogCQllbG9nKERFQlVHMywgIm1hcHBpbmc6IG5v ZGU6ICV1LyV1LyV1IHRpZDogJXUvJXUgY21pbjogJXUsIGNtYXg6ICV1IiwKIAkJCSBlbnQtPmtl eS5ybG9jYXRvci5kYk9pZCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bn b3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jCmluZGV4IDBkY2ZiZmRkNjA5Li41MDdhODczY2ExYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0yMzQzLDEzICsyMzQzLDkgQEAgZ2V0 X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiBz dGF0aWMgdm9pZAogY2xlYW51cF9yZWxfc3luY19jYWNoZShUcmFuc2FjdGlvbklkIHhpZCwgYm9v bCBpc19jb21taXQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwotCVJlbGF0aW9uU3lu Y0VudHJ5ICplbnRyeTsKLQogCUFzc2VydChSZWxhdGlvblN5bmNDYWNoZSAhPSBOVUxMKTsKIAot CWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBSZWxhdGlvblN5bmNDYWNoZSk7Ci0Jd2hpbGUgKChl bnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFz aChSZWxhdGlvblN5bmNFbnRyeSwgZW50cnksIFJlbGF0aW9uU3luY0NhY2hlKQogCXsKIAkJLyoK IAkJICogV2UgY2FuIHNldCB0aGUgc2NoZW1hX3NlbnQgZmxhZyBmb3IgYW4gZW50cnkgdGhhdCBo YXMgY29tbWl0dGVkIHhpZApAQCAtMjM3OCw4ICsyMzc0LDYgQEAgY2xlYW51cF9yZWxfc3luY19j YWNoZShUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBpc19jb21taXQpCiBzdGF0aWMgdm9pZAogcmVs X3N5bmNfY2FjaGVfcmVsYXRpb25fY2IoRGF0dW0gYXJnLCBPaWQgcmVsaWQpCiB7Ci0JUmVsYXRp b25TeW5jRW50cnkgKmVudHJ5OwotCiAJLyoKIAkgKiBXZSBjYW4gZ2V0IGhlcmUgaWYgdGhlIHBs dWdpbiB3YXMgdXNlZCBpbiBTUUwgaW50ZXJmYWNlIGFzIHRoZQogCSAqIFJlbGF0aW9uU3luY0Nh Y2hlIGlzIGRlc3Ryb3llZCB3aGVuIHRoZSBkZWNvZGluZyBmaW5pc2hlcywgYnV0IHRoZXJlIGlz CkBAIC0yNDAyLDE4ICsyMzk2LDE2IEBAIHJlbF9zeW5jX2NhY2hlX3JlbGF0aW9uX2NiKERhdHVt IGFyZywgT2lkIHJlbGlkKQogCQkgKiBHZXR0aW5nIGludmFsaWRhdGlvbnMgZm9yIHJlbGF0aW9u cyB0aGF0IGFyZW4ndCBpbiB0aGUgdGFibGUgaXMKIAkJICogZW50aXJlbHkgbm9ybWFsLiAgU28g d2UgZG9uJ3QgY2FyZSBpZiBpdCdzIGZvdW5kIG9yIG5vdC4KIAkJICovCi0JCWVudHJ5ID0gKFJl bGF0aW9uU3luY0VudHJ5ICopIGhhc2hfc2VhcmNoKFJlbGF0aW9uU3luY0NhY2hlLCAmcmVsaWQs Ci0JCQkJCQkJCQkJCQkgIEhBU0hfRklORCwgTlVMTCk7CisJCVJlbGF0aW9uU3luY0VudHJ5ICpl bnRyeSA9IGhhc2hfc2VhcmNoKFJlbGF0aW9uU3luY0NhY2hlLCAmcmVsaWQsCisJCQkJCQkJCQkJ CSAgIEhBU0hfRklORCwgTlVMTCk7CisKIAkJaWYgKGVudHJ5ICE9IE5VTEwpCiAJCQllbnRyeS0+ cmVwbGljYXRlX3ZhbGlkID0gZmFsc2U7CiAJfQogCWVsc2UKIAl7CiAJCS8qIFdob2xlIGNhY2hl IG11c3QgYmUgZmx1c2hlZC4gKi8KLQkJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQotCQloYXNo X3NlcV9pbml0KCZzdGF0dXMsIFJlbGF0aW9uU3luY0NhY2hlKTsKLQkJd2hpbGUgKChlbnRyeSA9 IChSZWxhdGlvblN5bmNFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwp CisJCWZvcmVhY2hfaGFzaChSZWxhdGlvblN5bmNFbnRyeSwgZW50cnksIFJlbGF0aW9uU3luY0Nh Y2hlKQogCQl7CiAJCQllbnRyeS0+cmVwbGljYXRlX3ZhbGlkID0gZmFsc2U7CiAJCX0KQEAgLTI0 MjgsOSArMjQyMCw2IEBAIHJlbF9zeW5jX2NhY2hlX3JlbGF0aW9uX2NiKERhdHVtIGFyZywgT2lk IHJlbGlkKQogc3RhdGljIHZvaWQKIHJlbF9zeW5jX2NhY2hlX3B1YmxpY2F0aW9uX2NiKERhdHVt IGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKLQlSZWxhdGlvblN5bmNFbnRyeSAqZW50cnk7Ci0KIAkvKgogCSAqIFdlIGNhbiBn ZXQgaGVyZSBpZiB0aGUgcGx1Z2luIHdhcyB1c2VkIGluIFNRTCBpbnRlcmZhY2UgYXMgdGhlCiAJ ICogUmVsYXRpb25TeW5jQ2FjaGUgaXMgZGVzdHJveWVkIHdoZW4gdGhlIGRlY29kaW5nIGZpbmlz aGVzLCBidXQgdGhlcmUgaXMKQEAgLTI0NDMsOCArMjQzMiw3IEBAIHJlbF9zeW5jX2NhY2hlX3B1 YmxpY2F0aW9uX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiAJ ICogV2UgaGF2ZSBubyBlYXN5IHdheSB0byBpZGVudGlmeSB3aGljaCBjYWNoZSBlbnRyaWVzIHRo aXMgaW52YWxpZGF0aW9uCiAJICogZXZlbnQgbWlnaHQgaGF2ZSBhZmZlY3RlZCwgc28ganVzdCBt YXJrIHRoZW0gYWxsIGludmFsaWQuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWxh dGlvblN5bmNDYWNoZSk7Ci0Jd2hpbGUgKChlbnRyeSA9IChSZWxhdGlvblN5bmNFbnRyeSAqKSBo YXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJlbGF0aW9u U3luY0VudHJ5LCBlbnRyeSwgUmVsYXRpb25TeW5jQ2FjaGUpCiAJewogCQllbnRyeS0+cmVwbGlj YXRlX3ZhbGlkID0gZmFsc2U7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9i dWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwppbmRl eCAyYTk3ZWNkYmJhNi4uNTJiYzg4YTBiNGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1n ci5jCkBAIC00MTcxLDcgKzQxNzEsNiBAQCBDaGVja0ZvckJ1ZmZlckxlYWtzKHZvaWQpCiB7CiAj aWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwogCWludAkJCVJlZkNvdW50RXJyb3JzID0gMDsKLQlQ cml2YXRlUmVmQ291bnRFbnRyeSAqcmVzOwogCWludAkJCWk7CiAJY2hhcgkgICAqczsKIApAQCAt NDE4MCw3ICs0MTc5LDcgQEAgQ2hlY2tGb3JCdWZmZXJMZWFrcyh2b2lkKQogCXsKIAkJaWYgKFBy aXZhdGVSZWZDb3VudEFycmF5S2V5c1tpXSAhPSBJbnZhbGlkQnVmZmVyKQogCQl7Ci0JCQlyZXMg PSAmUHJpdmF0ZVJlZkNvdW50QXJyYXlbaV07CisJCQlQcml2YXRlUmVmQ291bnRFbnRyeSAqcmVz ID0gJlByaXZhdGVSZWZDb3VudEFycmF5W2ldOwogCiAJCQlzID0gRGVidWdQcmludEJ1ZmZlclJl ZmNvdW50KHJlcy0+YnVmZmVyKTsKIAkJCWVsb2coV0FSTklORywgImJ1ZmZlciByZWZjb3VudCBs ZWFrOiAlcyIsIHMpOwpAQCAtNDE5MywxMiArNDE5Miw5IEBAIENoZWNrRm9yQnVmZmVyTGVha3Mo dm9pZCkKIAkvKiBpZiBuZWNlc3Nhcnkgc2VhcmNoIHRoZSBoYXNoICovCiAJaWYgKFByaXZhdGVS ZWZDb3VudE92ZXJmbG93ZWQpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0KLQkJaGFz aF9zZXFfaW5pdCgmaHN0YXQsIFByaXZhdGVSZWZDb3VudEhhc2gpOwotCQl3aGlsZSAoKHJlcyA9 IChQcml2YXRlUmVmQ291bnRFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJmhzdGF0KSkgIT0gTlVM TCkKKwkJZm9yZWFjaF9oYXNoKFByaXZhdGVSZWZDb3VudEVudHJ5LCBlbnQsIFByaXZhdGVSZWZD b3VudEhhc2gpCiAJCXsKLQkJCXMgPSBEZWJ1Z1ByaW50QnVmZmVyUmVmY291bnQocmVzLT5idWZm ZXIpOworCQkJcyA9IERlYnVnUHJpbnRCdWZmZXJSZWZjb3VudChlbnQtPmJ1ZmZlcik7CiAJCQll bG9nKFdBUk5JTkcsICJidWZmZXIgcmVmY291bnQgbGVhazogJXMiLCBzKTsKIAkJCXBmcmVlKHMp OwogCQkJUmVmQ291bnRFcnJvcnMrKzsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3NobWVtLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCmluZGV4IDhkOGY1 N2UwYzcyLi4yMjA5YjYyMmRlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c2htZW0uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCkBAIC01MzksOCAr NTM5LDYgQEAgcGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAj ZGVmaW5lIFBHX0dFVF9TSE1FTV9TSVpFU19DT0xTIDQKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8g PSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87Ci0JSEFTSF9TRVFfU1RBVFVT IGhzdGF0OwotCVNobWVtSW5kZXhFbnQgKmVudDsKIAlTaXplCQluYW1lZF9hbGxvY2F0ZWQgPSAw OwogCURhdHVtCQl2YWx1ZXNbUEdfR0VUX1NITUVNX1NJWkVTX0NPTFNdOwogCWJvb2wJCW51bGxz W1BHX0dFVF9TSE1FTV9TSVpFU19DT0xTXTsKQEAgLTU0OSwxMSArNTQ3LDkgQEAgcGdfZ2V0X3No bWVtX2FsbG9jYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlMV0xvY2tBY3F1aXJlKFNobWVt SW5kZXhMb2NrLCBMV19TSEFSRUQpOwogCi0JaGFzaF9zZXFfaW5pdCgmaHN0YXQsIFNobWVtSW5k ZXgpOwotCiAJLyogb3V0cHV0IGFsbCBhbGxvY2F0ZWQgZW50cmllcyAqLwogCW1lbXNldChudWxs cywgMCwgc2l6ZW9mKG51bGxzKSk7Ci0Jd2hpbGUgKChlbnQgPSAoU2htZW1JbmRleEVudCAqKSBo YXNoX3NlcV9zZWFyY2goJmhzdGF0KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goU2htZW1JbmRl eEVudCwgZW50LCBTaG1lbUluZGV4KQogCXsKIAkJdmFsdWVzWzBdID0gQ1N0cmluZ0dldFRleHRE YXR1bShlbnQtPmtleSk7CiAJCXZhbHVlc1sxXSA9IEludDY0R2V0RGF0dW0oKGNoYXIgKikgZW50 LT5sb2NhdGlvbiAtIChjaGFyICopIFNobWVtU2VnSGRyKTsKQEAgLTU5Niw4ICs1OTIsNiBAQCBw Z19nZXRfc2htZW1fYWxsb2NhdGlvbnNfbnVtYShQR19GVU5DVElPTl9BUkdTKQogewogI2RlZmlu ZSBQR19HRVRfU0hNRU1fTlVNQV9TSVpFU19DT0xTIDMKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8g PSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87Ci0JSEFTSF9TRVFfU1RBVFVT IGhzdGF0OwotCVNobWVtSW5kZXhFbnQgKmVudDsKIAlEYXR1bQkJdmFsdWVzW1BHX0dFVF9TSE1F TV9OVU1BX1NJWkVTX0NPTFNdOwogCWJvb2wJCW51bGxzW1BHX0dFVF9TSE1FTV9OVU1BX1NJWkVT X0NPTFNdOwogCVNpemUJCW9zX3BhZ2Vfc2l6ZTsKQEAgLTY0NywxMCArNjQxLDggQEAgcGdfZ2V0 X3NobWVtX2FsbG9jYXRpb25zX251bWEoUEdfRlVOQ1RJT05fQVJHUykKIAogCUxXTG9ja0FjcXVp cmUoU2htZW1JbmRleExvY2ssIExXX1NIQVJFRCk7CiAKLQloYXNoX3NlcV9pbml0KCZoc3RhdCwg U2htZW1JbmRleCk7Ci0KIAkvKiBvdXRwdXQgYWxsIGFsbG9jYXRlZCBlbnRyaWVzICovCi0Jd2hp bGUgKChlbnQgPSAoU2htZW1JbmRleEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJmhzdGF0KSkgIT0g TlVMTCkKKwlmb3JlYWNoX2hhc2goU2htZW1JbmRleEVudCwgZW50LCBTaG1lbUluZGV4KQogCXsK IAkJaW50CQkJaTsKIAkJY2hhcgkgICAqc3RhcnRwdHIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5 LmMKaW5kZXggN2E5NmUzZTIwMzkuLjhmMDBhOGUxZjAyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3Rh bmRieS5jCkBAIC0xMDk5LDEzICsxMDk5LDkgQEAgU3RhbmRieVJlbGVhc2VMb2NrVHJlZShUcmFu c2FjdGlvbklkIHhpZCwgaW50IG5zdWJ4aWRzLCBUcmFuc2FjdGlvbklkICpzdWJ4aWRzKQogdm9p ZAogU3RhbmRieVJlbGVhc2VBbGxMb2Nrcyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7Ci0JUmVjb3ZlcnlMb2NrWGlkRW50cnkgKmVudHJ5OwotCiAJZWxvZyhERUJVRzIsICJyZWxl YXNlIGFsbCBzdGFuZGJ5IGxvY2tzIik7CiAKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlY292 ZXJ5TG9ja1hpZEhhc2gpOwotCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1 cykpKQorCWZvcmVhY2hfaGFzaChSZWNvdmVyeUxvY2tYaWRFbnRyeSwgZW50cnksIFJlY292ZXJ5 TG9ja1hpZEhhc2gpCiAJewogCQlTdGFuZGJ5UmVsZWFzZVhpZEVudHJ5TG9ja3MoZW50cnkpOwog CQloYXNoX3NlYXJjaChSZWNvdmVyeUxvY2tYaWRIYXNoLCBlbnRyeSwgSEFTSF9SRU1PVkUsIE5V TEwpOwpAQCAtMTEyMywxMSArMTExOSw3IEBAIFN0YW5kYnlSZWxlYXNlQWxsTG9ja3Modm9pZCkK IHZvaWQKIFN0YW5kYnlSZWxlYXNlT2xkTG9ja3MoVHJhbnNhY3Rpb25JZCBvbGR4aWQpCiB7Ci0J SEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlSZWNvdmVyeUxvY2tYaWRFbnRyeSAqZW50cnk7Ci0K LQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlY292ZXJ5TG9ja1hpZEhhc2gpOwotCXdoaWxlICgo ZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpKQorCWZvcmVhY2hfaGFzaChSZWNvdmVy eUxvY2tYaWRFbnRyeSwgZW50cnksIFJlY292ZXJ5TG9ja1hpZEhhc2gpCiAJewogCQlBc3NlcnQo VHJhbnNhY3Rpb25JZElzVmFsaWQoZW50cnktPnhpZCkpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2su YwppbmRleCAzZjIwYzg1ODgxYS4uZWJmYjc2Y2M0NzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9sb2NrLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2su YwpAQCAtMjI5MiwxMSArMjI5Miw5IEBAIExvY2tSZWxlYXNlKGNvbnN0IExPQ0tUQUcgKmxvY2t0 YWcsIExPQ0tNT0RFIGxvY2ttb2RlLCBib29sIHNlc3Npb25Mb2NrKQogdm9pZAogTG9ja1JlbGVh c2VBbGwoTE9DS01FVEhPRElEIGxvY2ttZXRob2RpZCwgYm9vbCBhbGxMb2NrcykKIHsKLQlIQVNI X1NFUV9TVEFUVVMgc3RhdHVzOwogCUxvY2tNZXRob2QJbG9ja01ldGhvZFRhYmxlOwogCWludAkJ CWksCiAJCQkJbnVtTG9ja01vZGVzOwotCUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKIAlMT0NLCSAg ICpsb2NrOwogCWludAkJCXBhcnRpdGlvbjsKIAlib29sCQloYXZlX2Zhc3RfcGF0aF9sd2xvY2sg PSBmYWxzZTsKQEAgLTIzMjksOSArMjMyNyw3IEBAIExvY2tSZWxlYXNlQWxsKExPQ0tNRVRIT0RJ RCBsb2NrbWV0aG9kaWQsIGJvb2wgYWxsTG9ja3MpCiAJICogcG9pbnRlcnMuICBGYXN0LXBhdGgg bG9ja3MgYXJlIGNsZWFuZWQgdXAgZHVyaW5nIHRoZSBsb2NhbGxvY2sgdGFibGUKIAkgKiBzY2Fu LCB0aG91Z2guCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kTG9jYWxI YXNoKTsKLQotCXdoaWxlICgobG9jYWxsb2NrID0gKExPQ0FMTE9DSyAqKSBoYXNoX3NlcV9zZWFy Y2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKExPQ0FMTE9DSywgbG9jYWxsb2Nr LCBMb2NrTWV0aG9kTG9jYWxIYXNoKQogCXsKIAkJLyoKIAkJICogSWYgdGhlIExPQ0FMTE9DSyBl bnRyeSBpcyB1bnVzZWQsIHNvbWV0aGluZyBtdXN0J3ZlIGdvbmUgd3JvbmcKQEAgLTI1NjYsMTUg KzI1NjIsMTAgQEAgTG9ja1JlbGVhc2VBbGwoTE9DS01FVEhPRElEIGxvY2ttZXRob2RpZCwgYm9v bCBhbGxMb2NrcykKIHZvaWQKIExvY2tSZWxlYXNlU2Vzc2lvbihMT0NLTUVUSE9ESUQgbG9ja21l dGhvZGlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JTE9DQUxMT0NLICAqbG9jYWxs b2NrOwotCiAJaWYgKGxvY2ttZXRob2RpZCA8PSAwIHx8IGxvY2ttZXRob2RpZCA+PSBsZW5ndGhv ZihMb2NrTWV0aG9kcykpCiAJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbG9jayBtZXRob2Q6 ICVkIiwgbG9ja21ldGhvZGlkKTsKIAotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhv ZExvY2FsSGFzaCk7Ci0KLQl3aGlsZSAoKGxvY2FsbG9jayA9IChMT0NBTExPQ0sgKikgaGFzaF9z ZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChMT0NBTExPQ0ssIGxv Y2FsbG9jaywgTG9ja01ldGhvZExvY2FsSGFzaCkKIAl7CiAJCS8qIElnbm9yZSBpdGVtcyB0aGF0 IGFyZSBub3Qgb2YgdGhlIHNwZWNpZmllZCBsb2NrIG1ldGhvZCAqLwogCQlpZiAoTE9DQUxMT0NL X0xPQ0tNRVRIT0QoKmxvY2FsbG9jaykgIT0gbG9ja21ldGhvZGlkKQpAQCAtMjU5OCwxMiArMjU4 OSw3IEBAIExvY2tSZWxlYXNlQ3VycmVudE93bmVyKExPQ0FMTE9DSyAqKmxvY2FsbG9ja3MsIGlu dCBubG9ja3MpCiB7CiAJaWYgKGxvY2FsbG9ja3MgPT0gTlVMTCkKIAl7Ci0JCUhBU0hfU0VRX1NU QVRVUyBzdGF0dXM7Ci0JCUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKLQotCQloYXNoX3NlcV9pbml0 KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0JCXdoaWxlICgobG9jYWxsb2NrID0g KExPQ0FMTE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVh Y2hfaGFzaChMT0NBTExPQ0ssIGxvY2FsbG9jaywgTG9ja01ldGhvZExvY2FsSGFzaCkKIAkJCVJl bGVhc2VMb2NrSWZIZWxkKGxvY2FsbG9jaywgZmFsc2UpOwogCX0KIAllbHNlCkBAIC0yNjk3LDEy ICsyNjgzLDcgQEAgTG9ja1JlYXNzaWduQ3VycmVudE93bmVyKExPQ0FMTE9DSyAqKmxvY2FsbG9j a3MsIGludCBubG9ja3MpCiAKIAlpZiAobG9jYWxsb2NrcyA9PSBOVUxMKQogCXsKLQkJSEFTSF9T RVFfU1RBVFVTIHN0YXR1czsKLQkJTE9DQUxMT0NLICAqbG9jYWxsb2NrOwotCi0JCWhhc2hfc2Vx X2luaXQoJnN0YXR1cywgTG9ja01ldGhvZExvY2FsSGFzaCk7Ci0KLQkJd2hpbGUgKChsb2NhbGxv Y2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJ Zm9yZWFjaF9oYXNoKExPQ0FMTE9DSywgbG9jYWxsb2NrLCBMb2NrTWV0aG9kTG9jYWxIYXNoKQog CQkJTG9ja1JlYXNzaWduT3duZXIobG9jYWxsb2NrLCBwYXJlbnQpOwogCX0KIAllbHNlCkBAIC0z MzgxLDE3ICszMzYyLDEzIEBAIENoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2Nrcyh2b2lkKQogCX0g UGVyTG9ja1RhZ0VudHJ5OwogCiAJSFRBQgkgICAqbG9ja2h0YWI7Ci0JSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKLQlMT0NBTExPQ0sgICpsb2NhbGxvY2s7CiAKIAkvKiBDcmVhdGUgYSBsb2NhbCBo YXNoIHRhYmxlIGtleWVkIGJ5IExPQ0tUQUcgb25seSAqLwogCWxvY2todGFiID0gaGFzaF9tYWtl KFBlckxvY2tUYWdFbnRyeSwgbG9jaywKIAkJCQkJCSAiQ2hlY2tGb3JTZXNzaW9uQW5kWGFjdExv Y2tzIHRhYmxlIiwgMjU2KTsKIAogCS8qIFNjYW4gbG9jYWwgbG9jayB0YWJsZSB0byBmaW5kIGVu dHJpZXMgZm9yIGVhY2ggTE9DS1RBRyAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9ja01l dGhvZExvY2FsSGFzaCk7Ci0KLQl3aGlsZSAoKGxvY2FsbG9jayA9IChMT0NBTExPQ0sgKikgaGFz aF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChMT0NBTExPQ0ss IGxvY2FsbG9jaywgTG9ja01ldGhvZExvY2FsSGFzaCkKIAl7CiAJCUxPQ0FMTE9DS09XTkVSICps b2NrT3duZXJzID0gbG9jYWxsb2NrLT5sb2NrT3duZXJzOwogCQlQZXJMb2NrVGFnRW50cnkgKmhl bnRyeTsKQEAgLTM0NTQsMTYgKzM0MzEsMTEgQEAgQ2hlY2tGb3JTZXNzaW9uQW5kWGFjdExvY2tz KHZvaWQpCiB2b2lkCiBBdFByZXBhcmVfTG9ja3Modm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMg c3RhdHVzOwotCUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKLQogCS8qIEZpcnN0LCB2ZXJpZnkgdGhl cmUgYXJlbid0IGxvY2tzIG9mIGJvdGggeGFjdCBhbmQgc2Vzc2lvbiBsZXZlbCAqLwogCUNoZWNr Rm9yU2Vzc2lvbkFuZFhhY3RMb2NrcygpOwogCiAJLyogTm93IGRvIHRoZSBwZXItbG9jYWxsb2Nr IGNsZWFudXAgd29yayAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhvZExvY2Fs SGFzaCk7Ci0KLQl3aGlsZSAoKGxvY2FsbG9jayA9IChMT0NBTExPQ0sgKikgaGFzaF9zZXFfc2Vh cmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChMT0NBTExPQ0ssIGxvY2FsbG9j aywgTG9ja01ldGhvZExvY2FsSGFzaCkKIAl7CiAJCVR3b1BoYXNlTG9ja1JlY29yZCByZWNvcmQ7 CiAJCUxPQ0FMTE9DS09XTkVSICpsb2NrT3duZXJzID0gbG9jYWxsb2NrLT5sb2NrT3duZXJzOwpA QCAtMzU1MSw4ICszNTIzLDYgQEAgdm9pZAogUG9zdFByZXBhcmVfTG9ja3MoRnVsbFRyYW5zYWN0 aW9uSWQgZnhpZCkKIHsKIAlQR1BST0MJICAgKm5ld3Byb2MgPSBUd29QaGFzZUdldER1bW15UHJv YyhmeGlkLCBmYWxzZSk7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlMT0NBTExPQ0sgICps b2NhbGxvY2s7CiAJTE9DSwkgICAqbG9jazsKIAlQUk9DTE9DSyAgICpwcm9jbG9jazsKIAlQUk9D TE9DS1RBRyBwcm9jbG9ja3RhZzsKQEAgLTM1NzQsOSArMzU0NCw3IEBAIFBvc3RQcmVwYXJlX0xv Y2tzKEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQpCiAJICogcG9pbnRpbmcgdG8gdGhlIHNhbWUgcHJv Y2xvY2ssIGFuZCB3ZSBkYXJlbid0IGVuZCB1cCB3aXRoIGFueSBkYW5nbGluZwogCSAqIHBvaW50 ZXJzLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhvZExvY2FsSGFzaCk7 Ci0KLQl3aGlsZSAoKGxvY2FsbG9jayA9IChMT0NBTExPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZz dGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChMT0NBTExPQ0ssIGxvY2FsbG9jaywgTG9j a01ldGhvZExvY2FsSGFzaCkKIAl7CiAJCUxPQ0FMTE9DS09XTkVSICpsb2NrT3duZXJzID0gbG9j YWxsb2NrLT5sb2NrT3duZXJzOwogCQlib29sCQloYXZlU2Vzc2lvbkxvY2s7CkBAIC0zNzcyLDgg KzM3NDAsNiBAQCBMb2NrRGF0YSAqCiBHZXRMb2NrU3RhdHVzRGF0YSh2b2lkKQogewogCUxvY2tE YXRhICAgKmRhdGE7Ci0JUFJPQ0xPQ0sgICAqcHJvY2xvY2s7Ci0JSEFTSF9TRVFfU1RBVFVTIHNl cXN0YXQ7CiAJaW50CQkJZWxzOwogCWludAkJCWVsOwogCWludAkJCWk7CkBAIC0zOTA5LDkgKzM4 NzUsNyBAQCBHZXRMb2NrU3RhdHVzRGF0YSh2b2lkKQogCX0KIAogCS8qIE5vdyBzY2FuIHRoZSB0 YWJsZXMgdG8gY29weSB0aGUgZGF0YSAqLwotCWhhc2hfc2VxX2luaXQoJnNlcXN0YXQsIExvY2tN ZXRob2RQcm9jTG9ja0hhc2gpOwotCi0Jd2hpbGUgKChwcm9jbG9jayA9IChQUk9DTE9DSyAqKSBo YXNoX3NlcV9zZWFyY2goJnNlcXN0YXQpKSkKKwlmb3JlYWNoX2hhc2goUFJPQ0xPQ0ssIHByb2Ns b2NrLCBMb2NrTWV0aG9kUHJvY0xvY2tIYXNoKQogCXsKIAkJUEdQUk9DCSAgICpwcm9jID0gcHJv Y2xvY2stPnRhZy5teVByb2M7CiAJCUxPQ0sJICAgKmxvY2sgPSBwcm9jbG9jay0+dGFnLm15TG9j azsKQEAgLTQxNTAsOCArNDExNCw2IEBAIHhsX3N0YW5kYnlfbG9jayAqCiBHZXRSdW5uaW5nVHJh bnNhY3Rpb25Mb2NrcyhpbnQgKm5sb2NrcykKIHsKIAl4bF9zdGFuZGJ5X2xvY2sgKmFjY2Vzc0V4 Y2x1c2l2ZUxvY2tzOwotCVBST0NMT0NLICAgKnByb2Nsb2NrOwotCUhBU0hfU0VRX1NUQVRVUyBz ZXFzdGF0OwogCWludAkJCWk7CiAJaW50CQkJaW5kZXg7CiAJaW50CQkJZWxzOwpAQCAtNDE3Mywx MCArNDEzNSw5IEBAIEdldFJ1bm5pbmdUcmFuc2FjdGlvbkxvY2tzKGludCAqbmxvY2tzKQogCSAq LwogCWFjY2Vzc0V4Y2x1c2l2ZUxvY2tzID0gcGFsbG9jKGVscyAqIHNpemVvZih4bF9zdGFuZGJ5 X2xvY2spKTsKIAotCS8qIE5vdyBzY2FuIHRoZSB0YWJsZXMgdG8gY29weSB0aGUgZGF0YSAqLwot CWhhc2hfc2VxX2luaXQoJnNlcXN0YXQsIExvY2tNZXRob2RQcm9jTG9ja0hhc2gpOwotCiAJLyoK KwkgKiBOb3cgc2NhbiB0aGUgdGFibGVzIHRvIGNvcHkgdGhlIGRhdGEuCisJICoKIAkgKiBJZiBs b2NrIGlzIGEgY3VycmVudGx5IGdyYW50ZWQgQWNjZXNzRXhjbHVzaXZlTG9jayB0aGVuIGl0IHdp bGwgaGF2ZQogCSAqIGp1c3Qgb25lIHByb2Nsb2NrIGhvbGRlciwgc28gbG9ja3MgYXJlIG5ldmVy IGFjY2Vzc2VkIHR3aWNlIGluIHRoaXMKIAkgKiBwYXJ0aWN1bGFyIGNhc2UuIERvbid0IGNvcHkg dGhpcyBjb2RlIGZvciB1c2UgZWxzZXdoZXJlIGJlY2F1c2UgaW4gdGhlCkBAIC00MTg0LDcgKzQx NDUsNyBAQCBHZXRSdW5uaW5nVHJhbnNhY3Rpb25Mb2NrcyhpbnQgKm5sb2NrcykKIAkgKiBub24t ZXhjbHVzaXZlIGxvY2sgdHlwZXMuCiAJICovCiAJaW5kZXggPSAwOwotCXdoaWxlICgocHJvY2xv Y2sgPSAoUFJPQ0xPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFzdGF0KSkpCisJZm9yZWFjaF9o YXNoKFBST0NMT0NLLCBwcm9jbG9jaywgTG9ja01ldGhvZFByb2NMb2NrSGFzaCkKIAl7CiAJCS8q IG1ha2Ugc3VyZSB0aGlzIGRlZmluaXRpb24gbWF0Y2hlcyB0aGUgb25lIHVzZWQgaW4gTG9ja0Fj cXVpcmUgKi8KIAkJaWYgKChwcm9jbG9jay0+aG9sZE1hc2sgJiBMT0NLQklUX09OKEFjY2Vzc0V4 Y2x1c2l2ZUxvY2spKSAmJgpAQCAtNDI3OSwxOCArNDI0MCwxNCBAQCB2b2lkCiBEdW1wQWxsTG9j a3Modm9pZCkKIHsKIAlQR1BST0MJICAgKnByb2M7Ci0JUFJPQ0xPQ0sgICAqcHJvY2xvY2s7CiAJ TE9DSwkgICAqbG9jazsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwogCiAJcHJvYyA9IE15UHJv YzsKIAogCWlmIChwcm9jICYmIHByb2MtPndhaXRMb2NrKQogCQlMT0NLX1BSSU5UKCJEdW1wQWxs TG9ja3M6IHdhaXRpbmcgb24iLCBwcm9jLT53YWl0TG9jaywgMCk7CiAKLQloYXNoX3NlcV9pbml0 KCZzdGF0dXMsIExvY2tNZXRob2RQcm9jTG9ja0hhc2gpOwotCi0Jd2hpbGUgKChwcm9jbG9jayA9 IChQUk9DTE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFBST0NMT0NLLCBwcm9jbG9jaywgTG9ja01ldGhvZFByb2NMb2NrSGFzaCkKIAl7CiAJ CVBST0NMT0NLX1BSSU5UKCJEdW1wQWxsTG9ja3MiLCBwcm9jbG9jayk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9sd2xvY2suYwppbmRleCA4M2M1Yjc3Zjk1Mi4uYzI2YjhkNjk5NmQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2xtZ3IvbHdsb2NrLmMKQEAgLTMxNiwxNSArMzE2LDEwIEBAIGluaXRfbHdsb2NrX3N0YXRz KHZvaWQpCiBzdGF0aWMgdm9pZAogcHJpbnRfbHdsb2NrX3N0YXRzKGludCBjb2RlLCBEYXR1bSBh cmcpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JbHdsb2NrX3N0YXRzICpsd3N0YXRzOwot Ci0JaGFzaF9zZXFfaW5pdCgmc2NhbiwgbHdsb2NrX3N0YXRzX2h0YWIpOwotCiAJLyogR3JhYiBh biBMV0xvY2sgdG8ga2VlcCBkaWZmZXJlbnQgYmFja2VuZHMgZnJvbSBtaXhpbmcgcmVwb3J0cyAq LwogCUxXTG9ja0FjcXVpcmUoJk1haW5MV0xvY2tBcnJheVswXS5sb2NrLCBMV19FWENMVVNJVkUp OwogCi0Jd2hpbGUgKChsd3N0YXRzID0gKGx3bG9ja19zdGF0cyAqKSBoYXNoX3NlcV9zZWFyY2go JnNjYW4pKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChsd2xvY2tfc3RhdHMsIGx3c3RhdHMsIGx3 bG9ja19zdGF0c19odGFiKQogCXsKIAkJZnByaW50ZihzdGRlcnIsCiAJCQkJIlBJRCAlZCBsd2xv Y2sgJXMgJXA6IHNoYWNxICV1IGV4YWNxICV1IGJsayAldSBzcGluZGVsYXkgJXUgZGVxdWV1ZSBz ZWxmICV1XG4iLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0 ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IDlmMzc3OWI5 YWVhLi42M2UyNjBkZTRlYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3By ZWRpY2F0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpAQCAt MTQ0MCw4ICsxNDQwLDYgQEAgR2V0UHJlZGljYXRlTG9ja1N0YXR1c0RhdGEodm9pZCkKIAlpbnQJ CQlpOwogCWludAkJCWVscywKIAkJCQllbDsKLQlIQVNIX1NFUV9TVEFUVVMgc2Vxc3RhdDsKLQlQ UkVESUNBVEVMT0NLICpwcmVkbG9jazsKIAogCWRhdGEgPSBwYWxsb2Nfb2JqZWN0KFByZWRpY2F0 ZUxvY2tEYXRhKTsKIApAQCAtMTQ2MSwxMSArMTQ1OSw5IEBAIEdldFByZWRpY2F0ZUxvY2tTdGF0 dXNEYXRhKHZvaWQpCiAKIAogCS8qIFNjYW4gdGhyb3VnaCBQcmVkaWNhdGVMb2NrSGFzaCBhbmQg Y29weSBjb250ZW50cyAqLwotCWhhc2hfc2VxX2luaXQoJnNlcXN0YXQsIFByZWRpY2F0ZUxvY2tI YXNoKTsKLQogCWVsID0gMDsKIAotCXdoaWxlICgocHJlZGxvY2sgPSAoUFJFRElDQVRFTE9DSyAq KSBoYXNoX3NlcV9zZWFyY2goJnNlcXN0YXQpKSkKKwlmb3JlYWNoX2hhc2goUFJFRElDQVRFTE9D SywgcHJlZGxvY2ssIFByZWRpY2F0ZUxvY2tIYXNoKQogCXsKIAkJZGF0YS0+bG9ja3RhZ3NbZWxd ID0gcHJlZGxvY2stPnRhZy5teVRhcmdldC0+dGFnOwogCQlkYXRhLT54YWN0c1tlbF0gPSAqcHJl ZGxvY2stPnRhZy5teVhhY3Q7CkBAIC0yOTIyLDggKzI5MTgsNiBAQCBleGl0Ogogc3RhdGljIHZv aWQKIERyb3BBbGxQcmVkaWNhdGVMb2Nrc0Zyb21UYWJsZShSZWxhdGlvbiByZWxhdGlvbiwgYm9v bCB0cmFuc2ZlcikKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2Vxc3RhdDsKLQlQUkVESUNBVEVMT0NL VEFSR0VUICpvbGR0YXJnZXQ7CiAJUFJFRElDQVRFTE9DS1RBUkdFVCAqaGVhcHRhcmdldDsKIAlP aWQJCQlkYklkOwogCU9pZAkJCXJlbElkOwpAQCAtMjk3OSw5ICsyOTczLDcgQEAgRHJvcEFsbFBy ZWRpY2F0ZUxvY2tzRnJvbVRhYmxlKFJlbGF0aW9uIHJlbGF0aW9uLCBib29sIHRyYW5zZmVyKQog CQlSZW1vdmVTY3JhdGNoVGFyZ2V0KHRydWUpOwogCiAJLyogU2NhbiB0aHJvdWdoIHRhcmdldCBt YXAgKi8KLQloYXNoX3NlcV9pbml0KCZzZXFzdGF0LCBQcmVkaWNhdGVMb2NrVGFyZ2V0SGFzaCk7 Ci0KLQl3aGlsZSAoKG9sZHRhcmdldCA9IChQUkVESUNBVEVMT0NLVEFSR0VUICopIGhhc2hfc2Vx X3NlYXJjaCgmc2Vxc3RhdCkpKQorCWZvcmVhY2hfaGFzaChQUkVESUNBVEVMT0NLVEFSR0VULCBv bGR0YXJnZXQsIFByZWRpY2F0ZUxvY2tUYXJnZXRIYXNoKQogCXsKIAkJZGxpc3RfbXV0YWJsZV9p dGVyIGl0ZXI7CiAKQEAgLTQ0MDQsOCArNDM5Niw2IEBAIENoZWNrRm9yU2VyaWFsaXphYmxlQ29u ZmxpY3RJbihSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQsIEJs CiB2b2lkCiBDaGVja1RhYmxlRm9yU2VyaWFsaXphYmxlQ29uZmxpY3RJbihSZWxhdGlvbiByZWxh dGlvbikKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2Vxc3RhdDsKLQlQUkVESUNBVEVMT0NLVEFSR0VU ICp0YXJnZXQ7CiAJT2lkCQkJZGJJZDsKIAlPaWQJCQloZWFwSWQ7CiAJaW50CQkJaTsKQEAgLTQ0 MzksOSArNDQyOSw3IEBAIENoZWNrVGFibGVGb3JTZXJpYWxpemFibGVDb25mbGljdEluKFJlbGF0 aW9uIHJlbGF0aW9uKQogCUxXTG9ja0FjcXVpcmUoU2VyaWFsaXphYmxlWGFjdEhhc2hMb2NrLCBM V19FWENMVVNJVkUpOwogCiAJLyogU2NhbiB0aHJvdWdoIHRhcmdldCBsaXN0ICovCi0JaGFzaF9z ZXFfaW5pdCgmc2Vxc3RhdCwgUHJlZGljYXRlTG9ja1RhcmdldEhhc2gpOwotCi0Jd2hpbGUgKCh0 YXJnZXQgPSAoUFJFRElDQVRFTE9DS1RBUkdFVCAqKSBoYXNoX3NlcV9zZWFyY2goJnNlcXN0YXQp KSkKKwlmb3JlYWNoX2hhc2goUFJFRElDQVRFTE9DS1RBUkdFVCwgdGFyZ2V0LCBQcmVkaWNhdGVM b2NrVGFyZ2V0SGFzaCkKIAl7CiAJCWRsaXN0X211dGFibGVfaXRlciBpdGVyOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9zbWdyL3NtZ3IuYwppbmRleCBlNzViYzlhMmEwOC4uNmZmZmI0MjA5MDUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9zbWdyL3NtZ3IuYwpAQCAtNDA5LDkgKzQwOSw2IEBAIHNtZ3JkZXN0cm95YWxsKHZvaWQpCiB2 b2lkCiBzbWdycmVsZWFzZWFsbCh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0J U01nclJlbGF0aW9uIHJlbG47Ci0KIAkvKiBOb3RoaW5nIHRvIGRvIGlmIGhhc2h0YWJsZSBub3Qg c2V0IHVwICovCiAJaWYgKFNNZ3JSZWxhdGlvbkhhc2ggPT0gTlVMTCkKIAkJcmV0dXJuOwpAQCAt NDE5LDkgKzQxNiw3IEBAIHNtZ3JyZWxlYXNlYWxsKHZvaWQpCiAJLyogc2VlbXMgdW5zYWZlIHRv IGFjY2VwdCBpbnRlcnJ1cHRzIHdoaWxlIGl0ZXJhdGluZyAqLwogCUhPTERfSU5URVJSVVBUUygp OwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBTTWdyUmVsYXRpb25IYXNoKTsKLQotCXdoaWxl ICgocmVsbiA9IChTTWdyUmVsYXRpb24pIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVM TCkKKwlmb3JlYWNoX2hhc2goU01nclJlbGF0aW9uRGF0YSwgcmVsbiwgU01nclJlbGF0aW9uSGFz aCkKIAl7CiAJCXNtZ3JyZWxlYXNlKHJlbG4pOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2Uvc3luYy9zeW5jLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCmlu ZGV4IDAxYWNiMzBmMWJiLi5iMmQ1Yzc2ZWY3OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9zeW5jL3N5bmMuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCkBA IC0yODAsOCArMjgwLDYgQEAgUHJvY2Vzc1N5bmNSZXF1ZXN0cyh2b2lkKQogewogCXN0YXRpYyBi b29sIHN5bmNfaW5fcHJvZ3Jlc3MgPSBmYWxzZTsKIAotCUhBU0hfU0VRX1NUQVRVUyBoc3RhdDsK LQlQZW5kaW5nRnN5bmNFbnRyeSAqZW50cnk7CiAJaW50CQkJYWJzb3JiX2NvdW50ZXI7CiAKIAkv KiBTdGF0aXN0aWNzIG9uIHN5bmMgdGltZXMgKi8KQEAgLTMzOCw4ICszMzYsNyBAQCBQcm9jZXNz U3luY1JlcXVlc3RzKHZvaWQpCiAJaWYgKHN5bmNfaW5fcHJvZ3Jlc3MpCiAJewogCQkvKiBwcmlv ciB0cnkgZmFpbGVkLCBzbyB1cGRhdGUgYW55IHN0YWxlIGN5Y2xlX2N0ciB2YWx1ZXMgKi8KLQkJ aGFzaF9zZXFfaW5pdCgmaHN0YXQsIHBlbmRpbmdPcHMpOwotCQl3aGlsZSAoKGVudHJ5ID0gKFBl bmRpbmdGc3luY0VudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCQlm b3JlYWNoX2hhc2goUGVuZGluZ0ZzeW5jRW50cnksIGVudHJ5LCBwZW5kaW5nT3BzKQogCQl7CiAJ CQllbnRyeS0+Y3ljbGVfY3RyID0gc3luY19jeWNsZV9jdHI7CiAJCX0KQEAgLTM1Myw4ICszNTAs NyBAQCBQcm9jZXNzU3luY1JlcXVlc3RzKHZvaWQpCiAKIAkvKiBOb3cgc2NhbiB0aGUgaGFzaHRh YmxlIGZvciBmc3luYyByZXF1ZXN0cyB0byBwcm9jZXNzICovCiAJYWJzb3JiX2NvdW50ZXIgPSBG U1lOQ1NfUEVSX0FCU09SQjsKLQloYXNoX3NlcV9pbml0KCZoc3RhdCwgcGVuZGluZ09wcyk7Ci0J d2hpbGUgKChlbnRyeSA9IChQZW5kaW5nRnN5bmNFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJmhz dGF0KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUGVuZGluZ0ZzeW5jRW50cnksIGVudHJ5LCBw ZW5kaW5nT3BzKQogCXsKIAkJaW50CQkJZmFpbHVyZXM7CiAKQEAgLTQ5NSwxMyArNDkxLDEwIEBA IFJlbWVtYmVyU3luY1JlcXVlc3QoY29uc3QgRmlsZVRhZyAqZnRhZywgU3luY1JlcXVlc3RUeXBl IHR5cGUpCiAJfQogCWVsc2UgaWYgKHR5cGUgPT0gU1lOQ19GSUxURVJfUkVRVUVTVCkKIAl7Ci0J CUhBU0hfU0VRX1NUQVRVUyBoc3RhdDsKLQkJUGVuZGluZ0ZzeW5jRW50cnkgKnBmZTsKIAkJTGlz dENlbGwgICAqY2VsbDsKIAogCQkvKiBDYW5jZWwgbWF0Y2hpbmcgZnN5bmMgcmVxdWVzdHMgKi8K LQkJaGFzaF9zZXFfaW5pdCgmaHN0YXQsIHBlbmRpbmdPcHMpOwotCQl3aGlsZSAoKHBmZSA9IChQ ZW5kaW5nRnN5bmNFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJmhzdGF0KSkgIT0gTlVMTCkKKwkJ Zm9yZWFjaF9oYXNoKFBlbmRpbmdGc3luY0VudHJ5LCBwZmUsIHBlbmRpbmdPcHMpCiAJCXsKIAkJ CWlmIChwZmUtPnRhZy5oYW5kbGVyID09IGZ0YWctPmhhbmRsZXIgJiYKIAkJCQlzeW5jc3dbZnRh Zy0+aGFuZGxlcl0uc3luY19maWxldGFnbWF0Y2hlcyhmdGFnLCAmcGZlLT50YWcpKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMgYi9zcmMvYmFja2VuZC90 c2VhcmNoL3RzX3R5cGFuYWx5emUuYwppbmRleCBjMmYzYjYzMjY1ZC4uMWE0YjMyOGM0Y2QgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jCisrKyBiL3NyYy9i YWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jCkBAIC0xNDksNyArMTQ5LDYgQEAgY29tcHV0 ZV90c3ZlY3Rvcl9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLAogCiAJLyogVGhpcyBpcyBEIGZy b20gdGhlIExDIGFsZ29yaXRobS4gKi8KIAlIVEFCCSAgICpsZXhlbWVzX3RhYjsKLQlIQVNIX1NF UV9TVEFUVVMgc2Nhbl9zdGF0dXM7CiAKIAkvKiBUaGlzIGlzIHRoZSBjdXJyZW50IGJ1Y2tldCBu dW1iZXIgZnJvbSB0aGUgTEMgYWxnb3JpdGhtICovCiAJaW50CQkJYl9jdXJyZW50OwpAQCAtMjg4 LDcgKzI4Nyw2IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywK IAkJaW50CQkJbm9ubnVsbF9jbnQgPSBzYW1wbGVyb3dzIC0gbnVsbF9jbnQ7CiAJCWludAkJCWk7 CiAJCVRyYWNrSXRlbSAqKnNvcnRfdGFibGU7Ci0JCVRyYWNrSXRlbSAgKml0ZW07CiAJCWludAkJ CXRyYWNrX2xlbjsKIAkJaW50CQkJY3V0b2ZmX2ZyZXE7CiAJCWludAkJCW1pbmZyZXEsCkBAIC0z MTUsMTAgKzMxMyw5IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0 cywKIAkJaSA9IGhhc2hfZ2V0X251bV9lbnRyaWVzKGxleGVtZXNfdGFiKTsJLyogc3VyZWx5IGVu b3VnaCBzcGFjZSAqLwogCQlzb3J0X3RhYmxlID0gcGFsbG9jX2FycmF5KFRyYWNrSXRlbSAqLCBp KTsKIAotCQloYXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1cywgbGV4ZW1lc190YWIpOwogCQl0cmFj a19sZW4gPSAwOwogCQltYXhmcmVxID0gMDsKLQkJd2hpbGUgKChpdGVtID0gKFRyYWNrSXRlbSAq KSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNo KFRyYWNrSXRlbSwgaXRlbSwgbGV4ZW1lc190YWIpCiAJCXsKIAkJCWlmIChpdGVtLT5mcmVxdWVu Y3kgPiBjdXRvZmZfZnJlcSkKIAkJCXsKQEAgLTQ2MiwxMSArNDU5LDcgQEAgY29tcHV0ZV90c3Zl Y3Rvcl9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLAogc3RhdGljIHZvaWQKIHBydW5lX2xleGVt ZXNfaGFzaHRhYmxlKEhUQUIgKmxleGVtZXNfdGFiLCBpbnQgYl9jdXJyZW50KQogewotCUhBU0hf U0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKLQlUcmFja0l0ZW0gICppdGVtOwotCi0JaGFzaF9zZXFf aW5pdCgmc2Nhbl9zdGF0dXMsIGxleGVtZXNfdGFiKTsKLQl3aGlsZSAoKGl0ZW0gPSAoVHJhY2tJ dGVtICopIGhhc2hfc2VxX3NlYXJjaCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hf aGFzaChUcmFja0l0ZW0sIGl0ZW0sIGxleGVtZXNfdGFiKQogCXsKIAkJaWYgKGl0ZW0tPmZyZXF1 ZW5jeSArIGl0ZW0tPmRlbHRhIDw9IGJfY3VycmVudCkKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IGU1YWM5NTZkYWYwLi5lN2I4MzRiMjQwOCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtMjk5LDggKzI5OSw2IEBAIGNo YXIJICAqKgogR2V0V2FpdEV2ZW50Q3VzdG9tTmFtZXModWludDMyIGNsYXNzSWQsIGludCAqbndh aXRldmVudHMpCiB7CiAJY2hhcgkgICoqd2FpdGV2ZW50bmFtZXM7Ci0JV2FpdEV2ZW50Q3VzdG9t RW50cnlCeU5hbWUgKmhlbnRyeTsKLQlIQVNIX1NFUV9TVEFUVVMgaGFzaF9zZXE7CiAJaW50CQkJ aW5kZXg7CiAJaW50CQkJZWxzOwogCkBAIC0zMTMsMTAgKzMxMSw4IEBAIEdldFdhaXRFdmVudEN1 c3RvbU5hbWVzKHVpbnQzMiBjbGFzc0lkLCBpbnQgKm53YWl0ZXZlbnRzKQogCXdhaXRldmVudG5h bWVzID0gcGFsbG9jX2FycmF5KGNoYXIgKiwgZWxzKTsKIAogCS8qIE5vdyBzY2FuIHRoZSBoYXNo IHRhYmxlIHRvIGNvcHkgdGhlIGRhdGEgKi8KLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgV2Fp dEV2ZW50Q3VzdG9tSGFzaEJ5TmFtZSk7Ci0KIAlpbmRleCA9IDA7Ci0Jd2hpbGUgKChoZW50cnkg PSAoV2FpdEV2ZW50Q3VzdG9tRW50cnlCeU5hbWUgKikgaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3Nl cSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlOYW1lLCBo ZW50cnksIFdhaXRFdmVudEN1c3RvbUhhc2hCeU5hbWUpCiAJewogCQlpZiAoKGhlbnRyeS0+d2Fp dF9ldmVudF9pbmZvICYgV0FJVF9FVkVOVF9DTEFTU19NQVNLKSAhPSBjbGFzc0lkKQogCQkJY29u dGludWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6 ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3R5cGFuYWx5emUuYwppbmRleCBiZGM3 ZTIyMzdmNi4uMjgxZjY4MDAzMTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9h cnJheV90eXBhbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3R5cGFu YWx5emUuYwpAQCAtMjIzLDcgKzIyMyw2IEBAIGNvbXB1dGVfYXJyYXlfc3RhdHMoVmFjQXR0clN0 YXRzICpzdGF0cywgQW5hbHl6ZUF0dHJGZXRjaEZ1bmMgZmV0Y2hmdW5jLAogCiAJLyogVGhpcyBp cyBEIGZyb20gdGhlIExDIGFsZ29yaXRobS4gKi8KIAlIVEFCCSAgICplbGVtZW50c190YWI7Ci0J SEFTSF9TRVFfU1RBVFVTIHNjYW5fc3RhdHVzOwogCiAJLyogVGhpcyBpcyB0aGUgY3VycmVudCBi dWNrZXQgbnVtYmVyIGZyb20gdGhlIExDIGFsZ29yaXRobSAqLwogCWludAkJCWJfY3VycmVudDsK QEAgLTIzMiwxMCArMjMxLDggQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0 YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJaW50CQkJYnVja2V0X3dpZHRo OwogCWludAkJCWFycmF5X25vOwogCWludDY0CQllbGVtZW50X25vOwotCVRyYWNrSXRlbSAgKml0 ZW07CiAJaW50CQkJc2xvdF9pZHg7CiAJSFRBQgkgICAqY291bnRfdGFiOwotCURFQ291bnRJdGVt ICpjb3VudF9pdGVtOwogCiAJZXh0cmFfZGF0YSA9IChBcnJheUFuYWx5emVFeHRyYURhdGEgKikg c3RhdHMtPmV4dHJhX2RhdGE7CiAKQEAgLTMwMCw2ICsyOTcsNyBAQCBjb21wdXRlX2FycmF5X3N0 YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5jIGZldGNoZnVuYywK IAkJaW50NjQJCXByZXZfZWxlbWVudF9ubyA9IGVsZW1lbnRfbm87CiAJCWludAkJCWRpc3RpbmN0 X2NvdW50OwogCQlib29sCQljb3VudF9pdGVtX2ZvdW5kOworCQlERUNvdW50SXRlbSAqY291bnRf aXRlbTsKIAogCQl2YWN1dW1fZGVsYXlfcG9pbnQodHJ1ZSk7CiAKQEAgLTMzOCw2ICszMzYsNyBA QCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5emVBdHRyRmV0 Y2hGdW5jIGZldGNoZnVuYywKIAkJewogCQkJRGF0dW0JCWVsZW1fdmFsdWU7CiAJCQlib29sCQlm b3VuZDsKKwkJCVRyYWNrSXRlbSAgKml0ZW07CiAKIAkJCS8qIE5vIG51bGwgZWxlbWVudCBwcm9j ZXNzaW5nIG90aGVyIHRoYW4gZmxhZyBzZXR0aW5nIGhlcmUgKi8KIAkJCWlmIChlbGVtX251bGxz W2pdKQpAQCAtNDU4LDEwICs0NTcsOSBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0 cyAqc3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5jIGZldGNoZnVuYywKIAkJaSA9IGhhc2hfZ2V0 X251bV9lbnRyaWVzKGVsZW1lbnRzX3RhYik7IC8qIHN1cmVseSBlbm91Z2ggc3BhY2UgKi8KIAkJ c29ydF90YWJsZSA9IHBhbGxvY19hcnJheShUcmFja0l0ZW0gKiwgaSk7CiAKLQkJaGFzaF9zZXFf aW5pdCgmc2Nhbl9zdGF0dXMsIGVsZW1lbnRzX3RhYik7CiAJCXRyYWNrX2xlbiA9IDA7CiAJCW1h eGZyZXEgPSAwOwotCQl3aGlsZSAoKGl0ZW0gPSAoVHJhY2tJdGVtICopIGhhc2hfc2VxX3NlYXJj aCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goVHJhY2tJdGVtLCBpdGVt LCBlbGVtZW50c190YWIpCiAJCXsKIAkJCWlmIChpdGVtLT5mcmVxdWVuY3kgPiBjdXRvZmZfZnJl cSkKIAkJCXsKQEAgLTU5NCw5ICs1OTIsOCBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJT dGF0cyAqc3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5jIGZldGNoZnVuYywKIAkJCSAqIGluY3Jl YXNpbmcgY291bnQgb3JkZXIuCiAJCQkgKi8KIAkJCXNvcnRlZF9jb3VudF9pdGVtcyA9IHBhbGxv Y19hcnJheShERUNvdW50SXRlbSAqLCBjb3VudF9pdGVtc19jb3VudCk7Ci0JCQloYXNoX3NlcV9p bml0KCZzY2FuX3N0YXR1cywgY291bnRfdGFiKTsKIAkJCWogPSAwOwotCQkJd2hpbGUgKChjb3Vu dF9pdGVtID0gKERFQ291bnRJdGVtICopIGhhc2hfc2VxX3NlYXJjaCgmc2Nhbl9zdGF0dXMpKSAh PSBOVUxMKQorCQkJZm9yZWFjaF9oYXNoKERFQ291bnRJdGVtLCBjb3VudF9pdGVtLCBjb3VudF90 YWIpCiAJCQl7CiAJCQkJc29ydGVkX2NvdW50X2l0ZW1zW2orK10gPSBjb3VudF9pdGVtOwogCQkJ fQpAQCAtNjgzLDExICs2ODAsNyBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAq c3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5jIGZldGNoZnVuYywKIHN0YXRpYyB2b2lkCiBwcnVu ZV9lbGVtZW50X2hhc2h0YWJsZShIVEFCICplbGVtZW50c190YWIsIGludCBiX2N1cnJlbnQpCiB7 Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW5fc3RhdHVzOwotCVRyYWNrSXRlbSAgKml0ZW07Ci0KLQlo YXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1cywgZWxlbWVudHNfdGFiKTsKLQl3aGlsZSAoKGl0ZW0g PSAoVHJhY2tJdGVtICopIGhhc2hfc2VxX3NlYXJjaCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQor CWZvcmVhY2hfaGFzaChUcmFja0l0ZW0sIGl0ZW0sIGVsZW1lbnRzX3RhYikKIAl7CiAJCWlmIChp dGVtLT5mcmVxdWVuY3kgKyBpdGVtLT5kZWx0YSA8PSBiX2N1cnJlbnQpCiAJCXsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IGMxNWIxMjdiZGJmLi5mNzczZWFmZmE2YyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC0yOTg1LDggKzI5ODUsNiBAQCBSZWxhdGlvbkNh Y2hlSW52YWxpZGF0ZUVudHJ5KE9pZCByZWxhdGlvbklkKQogdm9pZAogUmVsYXRpb25DYWNoZUlu dmFsaWRhdGUoYm9vbCBkZWJ1Z19kaXNjYXJkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CiAJUmVsYXRpb24JcmVsYXRpb247CiAJTGlzdAkg ICAqcmVidWlsZEZpcnN0TGlzdCA9IE5JTDsKIAlMaXN0CSAgICpyZWJ1aWxkTGlzdCA9IE5JTDsK QEAgLTI5OTksOSArMjk5Nyw3IEBAIFJlbGF0aW9uQ2FjaGVJbnZhbGlkYXRlKGJvb2wgZGVidWdf ZGlzY2FyZCkKIAlSZWxhdGlvbk1hcEludmFsaWRhdGVBbGwoKTsKIAogCS8qIFBoYXNlIDEgKi8K LQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlbGF0aW9uSWRDYWNoZSk7Ci0KLQl3aGlsZSAoKGlk aGVudHJ5ID0gKFJlbElkQ2FjaGVFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBO VUxMKQorCWZvcmVhY2hfaGFzaChSZWxJZENhY2hlRW50LCBpZGhlbnRyeSwgUmVsYXRpb25JZENh Y2hlKQogCXsKIAkJcmVsYXRpb24gPSBpZGhlbnRyeS0+cmVsZGVzYzsKIApAQCAtMzE0NiwxMiAr MzE0Miw5IEBAIEFzc2VydFBlbmRpbmdTeW5jQ29uc2lzdGVuY3koUmVsYXRpb24gcmVsYXRpb24p CiB2b2lkCiBBc3NlcnRQZW5kaW5nU3luY3NfUmVsYXRpb25DYWNoZSh2b2lkKQogewotCUhBU0hf U0VRX1NUQVRVUyBzdGF0dXM7Ci0JTE9DQUxMT0NLICAqbG9jYWxsb2NrOwogCVJlbGF0aW9uICAg KnJlbHM7CiAJaW50CQkJbWF4cmVsczsKIAlpbnQJCQlucmVsczsKLQlSZWxJZENhY2hlRW50ICpp ZGhlbnRyeTsKIAlpbnQJCQlpOwogCiAJLyoKQEAgLTMxNjUsOCArMzE1OCw3IEBAIEFzc2VydFBl bmRpbmdTeW5jc19SZWxhdGlvbkNhY2hlKHZvaWQpCiAJbWF4cmVscyA9IDE7CiAJcmVscyA9IHBh bGxvYyhtYXhyZWxzICogc2l6ZW9mKCpyZWxzKSk7CiAJbnJlbHMgPSAwOwotCWhhc2hfc2VxX2lu aXQoJnN0YXR1cywgR2V0TG9ja01ldGhvZExvY2FsSGFzaCgpKTsKLQl3aGlsZSAoKGxvY2FsbG9j ayA9IChMT0NBTExPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZv cmVhY2hfaGFzaChMT0NBTExPQ0ssIGxvY2FsbG9jaywgR2V0TG9ja01ldGhvZExvY2FsSGFzaCgp KQogCXsKIAkJT2lkCQkJcmVsaWQ7CiAJCVJlbGF0aW9uCXI7CkBAIC0zMTg4LDggKzMxODAsNyBA QCBBc3NlcnRQZW5kaW5nU3luY3NfUmVsYXRpb25DYWNoZSh2b2lkKQogCQlyZWxzW25yZWxzKytd ID0gcjsKIAl9CiAKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlbGF0aW9uSWRDYWNoZSk7Ci0J d2hpbGUgKChpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3Rh dHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVsSWRDYWNoZUVudCwgaWRoZW50cnksIFJl bGF0aW9uSWRDYWNoZSkKIAkJQXNzZXJ0UGVuZGluZ1N5bmNDb25zaXN0ZW5jeShpZGhlbnRyeS0+ cmVsZGVzYyk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnJlbHM7IGkrKykKQEAgLTMyMTcsOCArMzIw OCw2IEBAIEFzc2VydFBlbmRpbmdTeW5jc19SZWxhdGlvbkNhY2hlKHZvaWQpCiB2b2lkCiBBdEVP WGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0 YXR1czsKLQlSZWxJZENhY2hlRW50ICppZGhlbnRyeTsKIAlpbnQJCQlpOwogCiAJLyoKQEAgLTMy NDEsOCArMzIzMCw3IEBAIEF0RU9YYWN0X1JlbGF0aW9uQ2FjaGUoYm9vbCBpc0NvbW1pdCkKIAkg Ki8KIAlpZiAoZW94YWN0X2xpc3Rfb3ZlcmZsb3dlZCkKIAl7Ci0JCWhhc2hfc2VxX2luaXQoJnN0 YXR1cywgUmVsYXRpb25JZENhY2hlKTsKLQkJd2hpbGUgKChpZGhlbnRyeSA9IChSZWxJZENhY2hl RW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNo KFJlbElkQ2FjaGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJCXsKIAkJCUF0RU9Y YWN0X2NsZWFudXAoaWRoZW50cnktPnJlbGRlc2MsIGlzQ29tbWl0KTsKIAkJfQpAQCAtMzI1MSwx MCArMzIzOSwxMSBAQCBBdEVPWGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQpCiAJewog CQlmb3IgKGkgPSAwOyBpIDwgZW94YWN0X2xpc3RfbGVuOyBpKyspCiAJCXsKLQkJCWlkaGVudHJ5 ID0gKFJlbElkQ2FjaGVFbnQgKikgaGFzaF9zZWFyY2goUmVsYXRpb25JZENhY2hlLAotCQkJCQkJ CQkJCQkJCSAmZW94YWN0X2xpc3RbaV0sCi0JCQkJCQkJCQkJCQkJIEhBU0hfRklORCwKLQkJCQkJ CQkJCQkJCQkgTlVMTCk7CisJCQlSZWxJZENhY2hlRW50ICppZGhlbnRyeSA9IGhhc2hfc2VhcmNo KFJlbGF0aW9uSWRDYWNoZSwKKwkJCQkJCQkJCQkJCSAgJmVveGFjdF9saXN0W2ldLAorCQkJCQkJ CQkJCQkJICBIQVNIX0ZJTkQsCisJCQkJCQkJCQkJCQkgIE5VTEwpOworCiAJCQlpZiAoaWRoZW50 cnkgIT0gTlVMTCkKIAkJCQlBdEVPWGFjdF9jbGVhbnVwKGlkaGVudHJ5LT5yZWxkZXNjLCBpc0Nv bW1pdCk7CiAJCX0KQEAgLTMzNzAsOCArMzM1OSw2IEBAIHZvaWQKIEF0RU9TdWJYYWN0X1JlbGF0 aW9uQ2FjaGUoYm9vbCBpc0NvbW1pdCwgU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAogCQkJCQkJ ICBTdWJUcmFuc2FjdGlvbklkIHBhcmVudFN1YmlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CiAJaW50CQkJaTsKIAogCS8qCkBAIC0zMzg5 LDggKzMzNzYsNyBAQCBBdEVPU3ViWGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQsIFN1 YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIAkgKi8KIAlpZiAoZW94YWN0X2xpc3Rfb3ZlcmZsb3dl ZCkKIAl7Ci0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUmVsYXRpb25JZENhY2hlKTsKLQkJd2hp bGUgKChpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVz KSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKFJlbElkQ2FjaGVFbnQsIGlkaGVudHJ5LCBSZWxh dGlvbklkQ2FjaGUpCiAJCXsKIAkJCUF0RU9TdWJYYWN0X2NsZWFudXAoaWRoZW50cnktPnJlbGRl c2MsIGlzQ29tbWl0LAogCQkJCQkJCQlteVN1YmlkLCBwYXJlbnRTdWJpZCk7CkBAIC0zNDAwLDYg KzMzODYsOCBAQCBBdEVPU3ViWGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQsIFN1YlRy YW5zYWN0aW9uSWQgbXlTdWJpZCwKIAl7CiAJCWZvciAoaSA9IDA7IGkgPCBlb3hhY3RfbGlzdF9s ZW47IGkrKykKIAkJeworCQkJUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CisKIAkJCWlkaGVudHJ5 ID0gKFJlbElkQ2FjaGVFbnQgKikgaGFzaF9zZWFyY2goUmVsYXRpb25JZENhY2hlLAogCQkJCQkJ CQkJCQkJCSAmZW94YWN0X2xpc3RbaV0sCiAJCQkJCQkJCQkJCQkJIEhBU0hfRklORCwKQEAgLTQw OTYsOCArNDA4NCw2IEBAIFJlbGF0aW9uQ2FjaGVJbml0aWFsaXplUGhhc2UyKHZvaWQpCiB2b2lk CiBSZWxhdGlvbkNhY2hlSW5pdGlhbGl6ZVBoYXNlMyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRV UyBzdGF0dXM7Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CiAJTWVtb3J5Q29udGV4dCBvbGRj eHQ7CiAJYm9vbAkJbmVlZE5ld0NhY2hlRmlsZSA9ICFjcml0aWNhbFNoYXJlZFJlbGNhY2hlc0J1 aWx0OwogCkBAIC00MjM0LDkgKzQyMjAsNyBAQCBSZWxhdGlvbkNhY2hlSW5pdGlhbGl6ZVBoYXNl Myh2b2lkKQogCSAqIFRoaXMgaXMgdGhlb3JldGljYWxseSBPKE5eMiksIGJ1dCB0aGUgbnVtYmVy IG9mIGVudHJpZXMgdGhhdCBhY3R1YWxseQogCSAqIG5lZWQgdG8gYmUgZml4ZWQgaXMgc21hbGwg ZW5vdWdoIHRoYXQgaXQgZG9lc24ndCBtYXR0ZXIuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc3Rh dHVzLCBSZWxhdGlvbklkQ2FjaGUpOwotCi0Jd2hpbGUgKChpZGhlbnRyeSA9IChSZWxJZENhY2hl RW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2go UmVsSWRDYWNoZUVudCwgaWRoZW50cnksIFJlbGF0aW9uSWRDYWNoZSkKIAl7CiAJCVJlbGF0aW9u CXJlbGF0aW9uID0gaWRoZW50cnktPnJlbGRlc2M7CiAJCWJvb2wJCXJlc3RhcnQgPSBmYWxzZTsK QEAgLTQzNDYsMTAgKzQzMzAsNyBAQCBSZWxhdGlvbkNhY2hlSW5pdGlhbGl6ZVBoYXNlMyh2b2lk KQogCiAJCS8qIE5vdywgcmVzdGFydCB0aGUgaGFzaHRhYmxlIHNjYW4gaWYgbmVlZGVkICovCiAJ CWlmIChyZXN0YXJ0KQotCQl7Ci0JCQloYXNoX3NlcV90ZXJtKCZzdGF0dXMpOwotCQkJaGFzaF9z ZXFfaW5pdCgmc3RhdHVzLCBSZWxhdGlvbklkQ2FjaGUpOwotCQl9CisJCQlmb3JlYWNoX2hhc2hf cmVzdGFydChpZGhlbnRyeSwgUmVsYXRpb25JZENhY2hlKTsKIAl9CiAKIAkvKgpAQCAtNjU3OCw4 ICs2NTU5LDYgQEAgd3JpdGVfcmVsY2FjaGVfaW5pdF9maWxlKGJvb2wgc2hhcmVkKQogCWNoYXIJ CXRlbXBmaWxlbmFtZVtNQVhQR1BBVEhdOwogCWNoYXIJCWZpbmFsZmlsZW5hbWVbTUFYUEdQQVRI XTsKIAlpbnQJCQltYWdpYzsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbElkQ2FjaGVF bnQgKmlkaGVudHJ5OwogCWludAkJCWk7CiAKIAkvKgpAQCAtNjYzOSw5ICs2NjE4LDcgQEAgd3Jp dGVfcmVsY2FjaGVfaW5pdF9maWxlKGJvb2wgc2hhcmVkKQogCS8qCiAJICogV3JpdGUgYWxsIHRo ZSBhcHByb3ByaWF0ZSByZWxkZXNjcyAoaW4gbm8gcGFydGljdWxhciBvcmRlcikuCiAJICovCi0J aGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWxhdGlvbklkQ2FjaGUpOwotCi0Jd2hpbGUgKChpZGhl bnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVM TCkKKwlmb3JlYWNoX2hhc2goUmVsSWRDYWNoZUVudCwgaWRoZW50cnksIFJlbGF0aW9uSWRDYWNo ZSkKIAl7CiAJCVJlbGF0aW9uCXJlbCA9IGlkaGVudHJ5LT5yZWxkZXNjOwogCQlGb3JtX3BnX2Ns YXNzIHJlbGZvcm0gPSByZWwtPnJkX3JlbDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZp bGVudW1iZXJtYXAuYwppbmRleCAwOWIwNWRlYzlkMC4uMDBkZjdkYjQ4MTEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFwLmMKQEAgLTUxLDE0ICs1MSwxMCBAQCB0 eXBlZGVmIHN0cnVjdAogc3RhdGljIHZvaWQKIFJlbGZpbGVudW1iZXJNYXBJbnZhbGlkYXRlQ2Fs bGJhY2soRGF0dW0gYXJnLCBPaWQgcmVsaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsK LQlSZWxmaWxlbnVtYmVyTWFwRW50cnkgKmVudHJ5OwotCiAJLyogY2FsbGJhY2sgb25seSBnZXRz IHJlZ2lzdGVyZWQgYWZ0ZXIgY3JlYXRpbmcgdGhlIGhhc2ggKi8KIAlBc3NlcnQoUmVsZmlsZW51 bWJlck1hcEhhc2ggIT0gTlVMTCk7CiAKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlbGZpbGVu dW1iZXJNYXBIYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKFJlbGZpbGVudW1iZXJNYXBFbnRyeSAq KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJlbGZp bGVudW1iZXJNYXBFbnRyeSwgZW50cnksIFJlbGZpbGVudW1iZXJNYXBIYXNoKQogCXsKIAkJLyoK IAkJICogSWYgcmVsaWQgaXMgSW52YWxpZE9pZCwgc2lnbmFsaW5nIGEgY29tcGxldGUgcmVzZXQs IHdlIG11c3QgcmVtb3ZlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zcGNj YWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUuYwppbmRleCBiZjAwN2Q2 OWFkNC4uNDRlMTk0NzZjMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3Nw Y2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUuYwpAQCAtNTUs MTEgKzU1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIHN0YXRpYyB2b2lkCiBJbnZhbGlkYXRlVGFibGVT cGFjZUNhY2hlQ2FsbGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1 ZSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVRhYmxlU3BhY2VDYWNoZUVudHJ5ICpz cGM7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFRhYmxlU3BhY2VDYWNoZUhhc2gpOwotCXdo aWxlICgoc3BjID0gKFRhYmxlU3BhY2VDYWNoZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3Rh dHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVGFibGVTcGFjZUNhY2hlRW50cnksIHNwYywg VGFibGVTcGFjZUNhY2hlSGFzaCkKIAl7CiAJCWlmIChzcGMtPm9wdHMpCiAJCQlwZnJlZShzcGMt Pm9wdHMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHNfY2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMKaW5kZXggZTlhZTRhNWYwOTMuLjAx MDFhYWE2NDEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90c19jYWNoZS5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMKQEAgLTk0LDExICs5NCw4 IEBAIHN0YXRpYyB2b2lkCiBJbnZhbGlkYXRlVFNDYWNoZUNhbGxCYWNrKERhdHVtIGFyZywgaW50 IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7CiAJSFRBQgkgICAqaGFzaCA9IChIVEFCICop IERhdHVtR2V0UG9pbnRlcihhcmcpOwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JVFNBbnlD YWNoZUVudHJ5ICplbnRyeTsKIAotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgaGFzaCk7Ci0Jd2hp bGUgKChlbnRyeSA9IChUU0FueUNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMp KSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChUU0FueUNhY2hlRW50cnksIGVudHJ5LCBoYXNoKQog CQllbnRyeS0+aXN2YWxpZCA9IGZhbHNlOwogCiAJLyogQWxzbyBpbnZhbGlkYXRlIHRoZSBjdXJy ZW50LWNvbmZpZyBjYWNoZSBpZiBpdCdzIHBnX3RzX2NvbmZpZyAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3R5cGNhY2hlLmMKaW5kZXggNzRkYTQxOGE3N2MuLmUxMDJhZGY5ZjgzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3R5cGNhY2hlLmMKQEAgLTI0MDksMTQgKzI0MDksMTMgQEAgSW52YWxpZGF0ZUNvbXBv c2l0ZVR5cGVDYWNoZUVudHJ5KFR5cGVDYWNoZUVudHJ5ICp0eXBlbnRyeSkKIHN0YXRpYyB2b2lk CiBUeXBlQ2FjaGVSZWxDYWxsYmFjayhEYXR1bSBhcmcsIE9pZCByZWxpZCkKIHsKLQlUeXBlQ2Fj aGVFbnRyeSAqdHlwZW50cnk7Ci0KIAkvKgogCSAqIFJlbElkVG9UeXBlSWRDYWNoZUhhc2ggYW5k IFR5cGVDYWNoZUhhc2ggc2hvdWxkIGV4aXN0LCBvdGhlcndpc2UgdGhpcwogCSAqIGNhbGxiYWNr IHdvdWxkbid0IGJlIHJlZ2lzdGVyZWQKIAkgKi8KIAlpZiAoT2lkSXNWYWxpZChyZWxpZCkpCiAJ eworCQlUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnk7CiAJCVJlbElkVG9UeXBlSWRDYWNoZUVudHJ5 ICpyZWxlbnRyeTsKIAogCQkvKgpAQCAtMjQ2NCwxNSArMjQ2MywxMiBAQCBUeXBlQ2FjaGVSZWxD YWxsYmFjayhEYXR1bSBhcmcsIE9pZCByZWxpZCkKIAl9CiAJZWxzZQogCXsKLQkJSEFTSF9TRVFf U1RBVFVTIHN0YXR1czsKLQogCQkvKgogCQkgKiBSZWxpZCBpcyBpbnZhbGlkLiBCeSBjb252ZW50 aW9uLCB3ZSBuZWVkIHRvIHJlc2V0IGFsbCBjb21wb3NpdGUKIAkJICogdHlwZXMgaW4gY2FjaGUu IEFsc28sIHdlIHNob3VsZCByZXNldCBmbGFncyBmb3IgZG9tYWluIHR5cGVzLCBhbmQKIAkJICog d2UgbG9vcCBvdmVyIGFsbCBlbnRyaWVzIGluIGhhc2gsIHNvLCBkbyBpdCBpbiBhIHNpbmdsZSBz Y2FuLgogCQkgKi8KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBUeXBlQ2FjaGVIYXNoKTsKLQkJ d2hpbGUgKCh0eXBlbnRyeSA9IChUeXBlQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0 YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChUeXBlQ2FjaGVFbnRyeSwgdHlwZW50cnks IFR5cGVDYWNoZUhhc2gpCiAJCXsKIAkJCWlmICh0eXBlbnRyeS0+dHlwdHlwZSA9PSBUWVBUWVBF X0NPTVBPU0lURSkKIAkJCXsKQEAgLTI1NjIsMTIgKzI1NTgsOCBAQCBUeXBlQ2FjaGVUeXBDYWxs YmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogc3RhdGljIHZv aWQKIFR5cGVDYWNoZU9wY0NhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBo YXNodmFsdWUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlUeXBlQ2FjaGVFbnRyeSAq dHlwZW50cnk7Ci0KIAkvKiBUeXBlQ2FjaGVIYXNoIG11c3QgZXhpc3QsIGVsc2UgdGhpcyBjYWxs YmFjayB3b3VsZG4ndCBiZSByZWdpc3RlcmVkICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBU eXBlQ2FjaGVIYXNoKTsKLQl3aGlsZSAoKHR5cGVudHJ5ID0gKFR5cGVDYWNoZUVudHJ5ICopIGhh c2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHlwZUNhY2hl RW50cnksIHR5cGVudHJ5LCBUeXBlQ2FjaGVIYXNoKQogCXsKIAkJYm9vbAkJaGFkT3BjbGFzcyA9 ICh0eXBlbnRyeS0+ZmxhZ3MgJiBUQ0ZMQUdTX09QRVJBVE9SX0ZMQUdTKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjLmMKaW5kZXggNjE4ZDAxMDBkMzguLjY2ZTMxM2Q1MzFlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMK QEAgLTI4OCw4ICsyODgsNiBAQCBQcm9jZXNzQ29uZmlnRmlsZUludGVybmFsKEd1Y0NvbnRleHQg Y29udGV4dCwgYm9vbCBhcHBseVNldHRpbmdzLCBpbnQgZWxldmVsKQogCWNvbnN0IGNoYXIgKkNv bmZGaWxlV2l0aEVycm9yOwogCUNvbmZpZ1ZhcmlhYmxlICpoZWFkLAogCQkJICAgKnRhaWw7Ci0J SEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlHVUNIYXNoRW50cnkgKmhlbnRyeTsKIAogCS8qIFBh cnNlIHRoZSBtYWluIGNvbmZpZyBmaWxlIGludG8gYSBsaXN0IG9mIG9wdGlvbiBuYW1lcyBhbmQg dmFsdWVzICovCiAJQ29uZkZpbGVXaXRoRXJyb3IgPSBDb25maWdGaWxlTmFtZTsKQEAgLTM2NCw4 ICszNjIsNyBAQCBQcm9jZXNzQ29uZmlnRmlsZUludGVybmFsKEd1Y0NvbnRleHQgY29udGV4dCwg Ym9vbCBhcHBseVNldHRpbmdzLCBpbnQgZWxldmVsKQogCSAqIG5lZWQgdGhpcyBzbyB0aGF0IHdl IGNhbiB0ZWxsIGJlbG93IHdoaWNoIG9uZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbQogCSAqIHRo ZSBmaWxlIHNpbmNlIHdlIGxhc3QgcHJvY2Vzc2VkIGl0LgogCSAqLwotCWhhc2hfc2VxX2luaXQo JnN0YXR1cywgZ3VjX2hhc2h0YWIpOwotCXdoaWxlICgoaGVudHJ5ID0gKEdVQ0hhc2hFbnRyeSAq KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKEdVQ0hh c2hFbnRyeSwgaGVudHJ5LCBndWNfaGFzaHRhYikKIAl7CiAJCXN0cnVjdCBjb25maWdfZ2VuZXJp YyAqZ2NvbmYgPSBoZW50cnktPmd1Y3ZhcjsKIApAQCAtNDQ5LDggKzQ0Niw3IEBAIFByb2Nlc3ND b25maWdGaWxlSW50ZXJuYWwoR3VjQ29udGV4dCBjb250ZXh0LCBib29sIGFwcGx5U2V0dGluZ3Ms IGludCBlbGV2ZWwpCiAJICogYm9vdC10aW1lIGRlZmF1bHRzLiAgSWYgc3VjaCBhIHZhcmlhYmxl IGNhbid0IGJlIGNoYW5nZWQgYWZ0ZXIgc3RhcnR1cCwKIAkgKiByZXBvcnQgdGhhdCBhbmQgY29u dGludWUuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBndWNfaGFzaHRhYik7Ci0Jd2hp bGUgKChoZW50cnkgPSAoR1VDSGFzaEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkg IT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goR1VDSGFzaEVudHJ5LCBoZW50cnksIGd1Y19oYXNodGFi KQogCXsKIAkJc3RydWN0IGNvbmZpZ19nZW5lcmljICpnY29uZiA9IGhlbnRyeS0+Z3VjdmFyOwog CkBAIC04MzksOCArODM1LDYgQEAgc3RydWN0IGNvbmZpZ19nZW5lcmljICoqCiBnZXRfZ3VjX3Zh cmlhYmxlcyhpbnQgKm51bV92YXJzKQogewogCXN0cnVjdCBjb25maWdfZ2VuZXJpYyAqKnJlc3Vs dDsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCUdVQ0hhc2hFbnRyeSAqaGVudHJ5OwogCWlu dAkJCWk7CiAKIAkqbnVtX3ZhcnMgPSBoYXNoX2dldF9udW1fZW50cmllcyhndWNfaGFzaHRhYik7 CkBAIC04NDgsOCArODQyLDcgQEAgZ2V0X2d1Y192YXJpYWJsZXMoaW50ICpudW1fdmFycykKIAog CS8qIEV4dHJhY3QgcG9pbnRlcnMgZnJvbSB0aGUgaGFzaCB0YWJsZSAqLwogCWkgPSAwOwotCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgZ3VjX2hhc2h0YWIpOwotCXdoaWxlICgoaGVudHJ5ID0gKEdV Q0hhc2hFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKEdVQ0hhc2hFbnRyeSwgaGVudHJ5LCBndWNfaGFzaHRhYikKIAkJcmVzdWx0W2krK10g PSBoZW50cnktPmd1Y3ZhcjsKIAlBc3NlcnQoaSA9PSAqbnVtX3ZhcnMpOwogCkBAIC0xNDAwLDkg KzEzOTMsNiBAQCBjaGVja19HVUNfaW5pdChjb25zdCBzdHJ1Y3QgY29uZmlnX2dlbmVyaWMgKmdj b25mKQogdm9pZAogSW5pdGlhbGl6ZUdVQ09wdGlvbnModm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFU VVMgc3RhdHVzOwotCUdVQ0hhc2hFbnRyeSAqaGVudHJ5OwotCiAJLyoKIAkgKiBCZWZvcmUgbG9n X2xpbmVfcHJlZml4IGNvdWxkIHBvc3NpYmx5IHJlY2VpdmUgYSBub25lbXB0eSBzZXR0aW5nLCBt YWtlCiAJICogc3VyZSB0aGF0IHRpbWV6b25lIHByb2Nlc3NpbmcgaXMgbWluaW1hbGx5IGFsaXZl IChzZWUgZWxvZy5jKS4KQEAgLTE0MTgsOCArMTQwOCw3IEBAIEluaXRpYWxpemVHVUNPcHRpb25z KHZvaWQpCiAJICogTG9hZCBhbGwgdmFyaWFibGVzIHdpdGggdGhlaXIgY29tcGlsZWQtaW4gZGVm YXVsdHMsIGFuZCBpbml0aWFsaXplCiAJICogc3RhdHVzIGZpZWxkcyBhcyBuZWVkZWQuCiAJICov Ci0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBndWNfaGFzaHRhYik7Ci0Jd2hpbGUgKChoZW50cnkg PSAoR1VDSGFzaEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlm b3JlYWNoX2hhc2goR1VDSGFzaEVudHJ5LCBoZW50cnksIGd1Y19oYXNodGFiKQogCXsKIAkJLyog Q2hlY2sgbWFwcGluZyBiZXR3ZWVuIGluaXRpYWwgYW5kIGRlZmF1bHQgdmFsdWUgKi8KIAkJQXNz ZXJ0KGNoZWNrX0dVQ19pbml0KGhlbnRyeS0+Z3VjdmFyKSk7CkBAIC0yNDE0LDkgKzI0MDMsNiBA QCBBdEVPWGFjdF9HVUMoYm9vbCBpc0NvbW1pdCwgaW50IG5lc3RMZXZlbCkKIHZvaWQKIEJlZ2lu UmVwb3J0aW5nR1VDT3B0aW9ucyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0J R1VDSGFzaEVudHJ5ICpoZW50cnk7Ci0KIAkvKgogCSAqIERvbid0IGRvIGFueXRoaW5nIHVubGVz cyB0YWxraW5nIHRvIGFuIGludGVyYWN0aXZlIGZyb250ZW5kLgogCSAqLwpAQCAtMjQzOCw4ICsy NDI0LDcgQEAgQmVnaW5SZXBvcnRpbmdHVUNPcHRpb25zKHZvaWQpCiAJCQkJCQlQR0NfSU5URVJO QUwsIFBHQ19TX09WRVJSSURFKTsKIAogCS8qIFRyYW5zbWl0IGluaXRpYWwgdmFsdWVzIG9mIGlu dGVyZXN0aW5nIHZhcmlhYmxlcyAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgZ3VjX2hhc2h0 YWIpOwotCXdoaWxlICgoaGVudHJ5ID0gKEdVQ0hhc2hFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKEdVQ0hhc2hFbnRyeSwgaGVudHJ5LCBn dWNfaGFzaHRhYikKIAl7CiAJCXN0cnVjdCBjb25maWdfZ2VuZXJpYyAqY29uZiA9IGhlbnRyeS0+ Z3VjdmFyOwogCkBAIC01MTQyLDE2ICs1MTI3LDEzIEBAIHZvaWQKIE1hcmtHVUNQcmVmaXhSZXNl cnZlZChjb25zdCBjaGFyICpjbGFzc05hbWUpCiB7CiAJaW50CQkJY2xhc3NMZW4gPSBzdHJsZW4o Y2xhc3NOYW1lKTsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCUdVQ0hhc2hFbnRyeSAqaGVu dHJ5OwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKIAogCS8qCiAJICogQ2hlY2sgZm9yIGV4 aXN0aW5nIHBsYWNlaG9sZGVycy4gIFdlIG11c3QgYWN0dWFsbHkgcmVtb3ZlIGludmFsaWQKIAkg KiBwbGFjZWhvbGRlcnMsIGVsc2UgZnV0dXJlIHBhcmFsbGVsIHdvcmtlciBzdGFydHVwcyB3aWxs IGZhaWwuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBndWNfaGFzaHRhYik7Ci0Jd2hp bGUgKChoZW50cnkgPSAoR1VDSGFzaEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkg IT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goR1VDSGFzaEVudHJ5LCBoZW50cnksIGd1Y19oYXNodGFi KQogCXsKIAkJc3RydWN0IGNvbmZpZ19nZW5lcmljICp2YXIgPSBoZW50cnktPmd1Y3ZhcjsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKaW5kZXggMGExMDgyZjQ4NDUuLmEzMWY1ZTBlNmNh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKQEAgLTYwMiwxNCArNjAyLDEwIEBAIFBv cnRhbERyb3AoUG9ydGFsIHBvcnRhbCwgYm9vbCBpc1RvcENvbW1pdCkKIHZvaWQKIFBvcnRhbEhh c2hUYWJsZURlbGV0ZUFsbCh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9y dGFsSGFzaEVudCAqaGVudHJ5OwotCiAJaWYgKFBvcnRhbEhhc2hUYWJsZSA9PSBOVUxMKQogCQly ZXR1cm47CiAKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhhc2hUYWJsZSk7Ci0Jd2hp bGUgKChoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9y dGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtNjIwLDggKzYxNiw3IEBAIFBvcnRh bEhhc2hUYWJsZURlbGV0ZUFsbCh2b2lkKQogCQlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOwog CiAJCS8qIFJlc3RhcnQgdGhlIGl0ZXJhdGlvbiBpbiBjYXNlIHRoYXQgbGVkIHRvIG90aGVyIGRy b3BzICovCi0JCWhhc2hfc2VxX3Rlcm0oJnN0YXR1cyk7Ci0JCWhhc2hfc2VxX2luaXQoJnN0YXR1 cywgUG9ydGFsSGFzaFRhYmxlKTsKKwkJZm9yZWFjaF9oYXNoX3Jlc3RhcnQoaGVudHJ5LCBQb3J0 YWxIYXNoVGFibGUpOwogCX0KIH0KIApAQCAtNjczLDEyICs2NjgsOCBAQCBib29sCiBQcmVDb21t aXRfUG9ydGFscyhib29sIGlzUHJlcGFyZSkKIHsKIAlib29sCQlyZXN1bHQgPSBmYWxzZTsKLQlI QVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hf c2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKIAotCXdoaWxlICgoaGVudHJ5ID0g KFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZv cmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJ CVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTc2MCw4ICs3NTEsNyBAQCBQ cmVDb21taXRfUG9ydGFscyhib29sIGlzUHJlcGFyZSkKIAkJICogaXRlcmF0aW9uLCBiZWNhdXNl IHdlIGNvdWxkIGhhdmUgaW52b2tlZCB1c2VyLWRlZmluZWQgY29kZSB0aGF0CiAJCSAqIGNhdXNl ZCBhIGRyb3Agb2YgdGhlIG5leHQgcG9ydGFsIGluIHRoZSBoYXNoIGNoYWluLgogCQkgKi8KLQkJ aGFzaF9zZXFfdGVybSgmc3RhdHVzKTsKLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxI YXNoVGFibGUpOworCQlmb3JlYWNoX2hhc2hfcmVzdGFydChoZW50cnksIFBvcnRhbEhhc2hUYWJs ZSk7CiAJfQogCiAJcmV0dXJuIHJlc3VsdDsKQEAgLTc3NiwxMiArNzY2LDcgQEAgUHJlQ29tbWl0 X1BvcnRhbHMoYm9vbCBpc1ByZXBhcmUpCiB2b2lkCiBBdEFib3J0X1BvcnRhbHModm9pZCkKIHsK LQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5 ID0gKFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQor CWZvcmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7 CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTg1NCwxMiArODM5LDcg QEAgQXRBYm9ydF9Qb3J0YWxzKHZvaWQpCiB2b2lkCiBBdENsZWFudXBfUG9ydGFscyh2b2lkKQog ewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCi0J aGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUgKChoZW50 cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwp CisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQog CXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtOTEzLDEyICs4OTMs NyBAQCBBdENsZWFudXBfUG9ydGFscyh2b2lkKQogdm9pZAogUG9ydGFsRXJyb3JDbGVhbnVwKHZv aWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7 Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAo KGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0g TlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVudCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFi bGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRyeS0+cG9ydGFsOwogCkBAIC05NDIsMTIg KzkxNyw3IEBAIEF0U3ViQ29tbWl0X1BvcnRhbHMoU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAog CQkJCQlpbnQgcGFyZW50TGV2ZWwsCiAJCQkJCVJlc291cmNlT3duZXIgcGFyZW50WGFjdE93bmVy KQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5Owot Ci0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUgKCho ZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5V TEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxl KQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtOTc4LDEyICs5 NDgsNyBAQCBBdFN1YkFib3J0X1BvcnRhbHMoU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAogCQkJ CSAgIFJlc291cmNlT3duZXIgbXlYYWN0T3duZXIsCiAJCQkJICAgUmVzb3VyY2VPd25lciBwYXJl bnRYYWN0T3duZXIpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQb3J0YWxIYXNoRW50 ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhhc2hUYWJsZSk7Ci0K LQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3Rh dHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVudCwgaGVudHJ5LCBQb3J0 YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRyeS0+cG9ydGFsOwogCkBA IC0xMDg4LDEyICsxMDUzLDcgQEAgQXRTdWJBYm9ydF9Qb3J0YWxzKFN1YlRyYW5zYWN0aW9uSWQg bXlTdWJpZCwKIHZvaWQKIEF0U3ViQ2xlYW51cF9Qb3J0YWxzKFN1YlRyYW5zYWN0aW9uSWQgbXlT dWJpZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRy eTsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxl ICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAh PSBOVUxMKQorCWZvcmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hU YWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTExMjgs OCArMTA4OCw2IEBAIERhdHVtCiBwZ19jdXJzb3IoUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlSZXR1 cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87 Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKIAog CS8qCiAJICogV2UgcHV0IGFsbCB0aGUgdHVwbGVzIGludG8gYSB0dXBsZXN0b3JlIGluIG9uZSBz Y2FuIG9mIHRoZSBoYXNodGFibGUuCkBAIC0xMTM3LDggKzEwOTUsNyBAQCBwZ19jdXJzb3IoUEdf RlVOQ1RJT05fQVJHUykKIAkgKi8KIAlJbml0TWF0ZXJpYWxpemVkU1JGKGZjaW5mbywgMCk7CiAK LQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgUG9ydGFsSGFzaFRhYmxlKTsKLQl3aGlsZSAoKGhl bnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFz aChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJ cG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAJCURhdHVtCQl2YWx1ZXNbNl07CkBAIC0xMTY3LDEy ICsxMTI0LDcgQEAgcGdfY3Vyc29yKFBHX0ZVTkNUSU9OX0FSR1MpCiBib29sCiBUaGVyZUFyZU5v UmVhZHlQb3J0YWxzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQb3J0YWxI YXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhhc2hUYWJs ZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhhc2hfc2VxX3NlYXJj aCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVudCwgaGVudHJ5 LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRyeS0+cG9ydGFs OwogCkBAIC0xMjAzLDEyICsxMTU1LDcgQEAgVGhlcmVBcmVOb1JlYWR5UG9ydGFscyh2b2lkKQog dm9pZAogSG9sZFBpbm5lZFBvcnRhbHModm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVz OwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUG9y dGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQgKikgaGFz aF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQb3J0YWxIYXNo RW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVu dHJ5LT5wb3J0YWw7CiAKQEAgLTEyNTIsMTUgKzExOTksMTEgQEAgSG9sZFBpbm5lZFBvcnRhbHMo dm9pZCkKIHZvaWQKIEZvcmdldFBvcnRhbFNuYXBzaG90cyh2b2lkKQogewotCUhBU0hfU0VRX1NU QVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwogCWludAkJCW51bVBvcnRhbFNu YXBzID0gMDsKIAlpbnQJCQludW1BY3RpdmVTbmFwcyA9IDA7CiAKIAkvKiBGaXJzdCwgc2NhbiBQ b3J0YWxIYXNoVGFibGUgYW5kIGNsZWFyIHBvcnRhbFNuYXBzaG90IGZpZWxkcyAqLwotCWhhc2hf c2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0g KFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZv cmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJ CVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKZGlmZiAtLWdpdCBhL3NyYy9wbC9w bHBlcmwvcGxwZXJsLmMgYi9zcmMvcGwvcGxwZXJsL3BscGVybC5jCmluZGV4IDQ5MDQ0YmM4MDhi Li4yY2ZkZjIzOWVlNCAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGVybC9wbHBlcmwuYworKysgYi9z cmMvcGwvcGxwZXJsL3BscGVybC5jCkBAIC01MDMsOSArNTAzLDYgQEAgc2V0X2ludGVycF9yZXF1 aXJlKGJvb2wgdHJ1c3RlZCkKIHN0YXRpYyB2b2lkCiBwbHBlcmxfZmluaShpbnQgY29kZSwgRGF0 dW0gYXJnKQogewotCUhBU0hfU0VRX1NUQVRVUyBoYXNoX3NlcTsKLQlwbHBlcmxfaW50ZXJwX2Rl c2MgKmludGVycF9kZXNjOwotCiAJZWxvZyhERUJVRzMsICJwbHBlcmxfZmluaSIpOwogCiAJLyoK QEAgLTUyNyw4ICs1MjQsNyBAQCBwbHBlcmxfZmluaShpbnQgY29kZSwgRGF0dW0gYXJnKQogCXBs cGVybF9kZXN0cm95X2ludGVycCgmcGxwZXJsX2hlbGRfaW50ZXJwKTsKIAogCS8qIFphcCBhbnkg ZnVsbHktaW5pdGlhbGl6ZWQgaW50ZXJwcmV0ZXJzICovCi0JaGFzaF9zZXFfaW5pdCgmaGFzaF9z ZXEsIHBscGVybF9pbnRlcnBfaGFzaCk7Ci0Jd2hpbGUgKChpbnRlcnBfZGVzYyA9IGhhc2hfc2Vx X3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChwbHBlcmxfaW50ZXJw X2Rlc2MsIGludGVycF9kZXNjLCBwbHBlcmxfaW50ZXJwX2hhc2gpCiAJewogCQlpZiAoaW50ZXJw X2Rlc2MtPmludGVycCkKIAkJewotLSAKMi41Mi4wCgo= --47d834fb39f917299e3944345bf4c7b286ca1a3cdaf0f9bf83d0eef1564f Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v10-0005-Inline-functions-that-have-now-become-trivial.patch Content-Type: text/x-patch; charset=utf-8; name=v10-0005-Inline-functions-that-have-now-become-trivial.patch RnJvbSBhMzliYWY4NGExMjY3ZjkxZDMxMzQwNjFjZTgyNTI2YWFmM2ZlNTFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMjM6MzM6MTggKzAxMDAKU3ViamVjdDogW1BBVENIIHYx MCA1LzVdIElubGluZSBmdW5jdGlvbnMgdGhhdCBoYXZlIG5vdyBiZWNvbWUgdHJpdmlhbAoKLS0t CiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICB8IDE3ICsrKy0tLS0tLS0tLS0t LS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jICAgICB8IDE2ICsrKy0tLS0tLS0t LS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jIHwgMjIgKysrKy0tLS0t LS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA0NSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggNGFkOWMxMGE3ZjguLmFkMmYyYWIx M2VjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC00Niw3ICs0Niw2IEBACiAgKi8KIHN0YXRp YyBIVEFCICpwcmVwYXJlZF9xdWVyaWVzID0gTlVMTDsKIAotc3RhdGljIHZvaWQgSW5pdFF1ZXJ5 SGFzaFRhYmxlKHZvaWQpOwogc3RhdGljIFBhcmFtTGlzdEluZm8gRXZhbHVhdGVQYXJhbXMoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJUHJlcGFyZWRTdGF0ZW1lbnQgKnBzdG10LCBMaXN0 ICpwYXJhbXMsCiAJCQkJCQkJCQlFU3RhdGUgKmVzdGF0ZSk7CkBAIC0zNjQsMTggKzM2Myw2IEBA IEV2YWx1YXRlUGFyYW1zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUHJlcGFyZWRTdGF0ZW1lbnQgKnBz dG10LCBMaXN0ICpwYXJhbXMsCiAJcmV0dXJuIHBhcmFtTEk7CiB9CiAKLQotLyoKLSAqIEluaXRp YWxpemUgcXVlcnkgaGFzaCB0YWJsZSB1cG9uIGZpcnN0IHVzZS4KLSAqLwotc3RhdGljIHZvaWQK LUluaXRRdWVyeUhhc2hUYWJsZSh2b2lkKQotewotCXByZXBhcmVkX3F1ZXJpZXMgPSBoYXNoX21h a2VfY3h0KFByZXBhcmVkU3RhdGVtZW50LCBzdG10X25hbWUsCi0JCQkJCQkJCQkgIlByZXBhcmVk IFF1ZXJpZXMiLCAzMiwKLQkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKLX0KLQogLyoKICAq IFN0b3JlIGFsbCB0aGUgZGF0YSBwZXJ0YWluaW5nIHRvIGEgcXVlcnkgaW4gdGhlIGhhc2ggdGFi bGUgdXNpbmcKICAqIHRoZSBzcGVjaWZpZWQga2V5LiAgVGhlIHBhc3NlZCBDYWNoZWRQbGFuU291 cmNlIHNob3VsZCBiZSAidW5zYXZlZCIKQEAgLTM5Myw3ICszODAsOSBAQCBTdG9yZVByZXBhcmVk U3RhdGVtZW50KGNvbnN0IGNoYXIgKnN0bXRfbmFtZSwKIAogCS8qIEluaXRpYWxpemUgdGhlIGhh c2ggdGFibGUsIGlmIG5lY2Vzc2FyeSAqLwogCWlmICghcHJlcGFyZWRfcXVlcmllcykKLQkJSW5p dFF1ZXJ5SGFzaFRhYmxlKCk7CisJCXByZXBhcmVkX3F1ZXJpZXMgPSBoYXNoX21ha2VfY3h0KFBy ZXBhcmVkU3RhdGVtZW50LCBzdG10X25hbWUsCisJCQkJCQkJCQkJICJQcmVwYXJlZCBRdWVyaWVz IiwgMzIsCisJCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyogQWRkIGVudHJ5IHRv IGhhc2ggdGFibGUgKi8KIAllbnRyeSA9IChQcmVwYXJlZFN0YXRlbWVudCAqKSBoYXNoX3NlYXJj aChwcmVwYXJlZF9xdWVyaWVzLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vx dWVuY2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKaW5kZXggNWEyNjgzYzA3 MzUuLjc0ZjVhYTQ5ZDU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5j ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTg5LDcgKzg5LDYg QEAgc3RhdGljIFNlcVRhYmxlRGF0YSAqbGFzdF91c2VkX3NlcSA9IE5VTEw7CiBzdGF0aWMgdm9p ZCBmaWxsX3NlcV93aXRoX2RhdGEoUmVsYXRpb24gcmVsLCBIZWFwVHVwbGUgdHVwbGUpOwogc3Rh dGljIHZvaWQgZmlsbF9zZXFfZm9ya193aXRoX2RhdGEoUmVsYXRpb24gcmVsLCBIZWFwVHVwbGUg dHVwbGUsIEZvcmtOdW1iZXIgZm9ya051bSk7CiBzdGF0aWMgUmVsYXRpb24gbG9ja19hbmRfb3Bl bl9zZXF1ZW5jZShTZXFUYWJsZSBzZXEpOwotc3RhdGljIHZvaWQgY3JlYXRlX3NlcV9oYXNodGFi bGUodm9pZCk7CiBzdGF0aWMgdm9pZCBpbml0X3NlcXVlbmNlKE9pZCByZWxpZCwgU2VxVGFibGUg KnBfZWxtLCBSZWxhdGlvbiAqcF9yZWwpOwogc3RhdGljIEZvcm1fcGdfc2VxdWVuY2VfZGF0YSBy ZWFkX3NlcV90dXBsZShSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCUJ1ZmZlciAqYnVmLCBIZWFw VHVwbGUgc2VxZGF0YXR1cGxlKTsKQEAgLTExMDcsMTcgKzExMDYsNiBAQCBsb2NrX2FuZF9vcGVu X3NlcXVlbmNlKFNlcVRhYmxlIHNlcSkKIAlyZXR1cm4gc2VxdWVuY2Vfb3BlbihzZXEtPnJlbGlk LCBOb0xvY2spOwogfQogCi0vKgotICogQ3JlYXRlcyB0aGUgaGFzaCB0YWJsZSBmb3Igc3Rvcmlu ZyBzZXF1ZW5jZSBkYXRhCi0gKi8KLXN0YXRpYyB2b2lkCi1jcmVhdGVfc2VxX2hhc2h0YWJsZSh2 b2lkKQotewotCXNlcWhhc2h0YWIgPSBoYXNoX21ha2VfY3h0KFNlcVRhYmxlRGF0YSwgcmVsaWQs Ci0JCQkJCQkJICAgIlNlcXVlbmNlIHZhbHVlcyIsIDE2LAotCQkJCQkJCSAgIFRvcE1lbW9yeUNv bnRleHQpOwotfQotCiAvKgogICogR2l2ZW4gYSByZWxhdGlvbiBPSUQsIG9wZW4gYW5kIGxvY2sg dGhlIHNlcXVlbmNlLiAgcF9lbG0gYW5kIHBfcmVsIGFyZQogICogb3V0cHV0IHBhcmFtZXRlcnMu CkBAIC0xMTMxLDcgKzExMTksOSBAQCBpbml0X3NlcXVlbmNlKE9pZCByZWxpZCwgU2VxVGFibGUg KnBfZWxtLCBSZWxhdGlvbiAqcF9yZWwpCiAKIAkvKiBGaW5kIG9yIGNyZWF0ZSBhIGhhc2ggdGFi bGUgZW50cnkgZm9yIHRoaXMgc2VxdWVuY2UgKi8KIAlpZiAoc2VxaGFzaHRhYiA9PSBOVUxMKQot CQljcmVhdGVfc2VxX2hhc2h0YWJsZSgpOworCQlzZXFoYXNodGFiID0gaGFzaF9tYWtlX2N4dChT ZXFUYWJsZURhdGEsIHJlbGlkLAorCQkJCQkJCQkgICAiU2VxdWVuY2UgdmFsdWVzIiwgMTYsCisJ CQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJZWxtID0gKFNlcVRhYmxlKSBoYXNoX3Nl YXJjaChzZXFoYXNodGFiLCAmcmVsaWQsIEhBU0hfRU5URVIsICZmb3VuZCk7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvZnVuY2NhY2hlLmMKaW5kZXggYmVmOTM4YzM3YzAuLjBlNWJmYTJhNTZhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUuYwpAQCAtNTAsMjMgKzUwLDYgQEAgc3RhdGljIHVp bnQzMiBjZnVuY19oYXNoKGNvbnN0IHZvaWQgKmtleSwgU2l6ZSBrZXlzaXplKTsKIHN0YXRpYyBp bnQJY2Z1bmNfbWF0Y2goY29uc3Qgdm9pZCAqa2V5MSwgY29uc3Qgdm9pZCAqa2V5MiwgU2l6ZSBr ZXlzaXplKTsKIAogCi0vKgotICogSW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSBvbiBmaXJzdCB1 c2UuCi0gKgotICogVGhlIGhhc2ggdGFibGUgd2lsbCBiZSBpbiBUb3BNZW1vcnlDb250ZXh0IHJl Z2FyZGxlc3Mgb2YgY2FsbGVyJ3MgY29udGV4dC4KLSAqLwotc3RhdGljIHZvaWQKLWNmdW5jX2hh c2h0YWJsZV9pbml0KHZvaWQpCi17Ci0JLyogZG9uJ3QgYWxsb3cgZG91YmxlLWluaXRpYWxpemF0 aW9uICovCi0JQXNzZXJ0KGNmdW5jX2hhc2h0YWJsZSA9PSBOVUxMKTsKLQotCWNmdW5jX2hhc2h0 YWJsZSA9IGhhc2hfbWFrZV9mbl9jeHQoQ2FjaGVkRnVuY3Rpb25IYXNoRW50cnksIGtleSwKLQkJ CQkJCQkJCSAgICJDYWNoZWQgZnVuY3Rpb24gaGFzaCIsIEZVTkNTX1BFUl9VU0VSLAotCQkJCQkJ CQkJICAgY2Z1bmNfaGFzaCwgY2Z1bmNfbWF0Y2gsCi0JCQkJCQkJCQkgICBUb3BNZW1vcnlDb250 ZXh0KTsKLX0KLQogLyoKICAqIGNmdW5jX2hhc2g6IGhhc2ggZnVuY3Rpb24gZm9yIGNmdW5jIGhh c2ggdGFibGUKICAqCkBAIC0xNjUsNyArMTQ4LDEwIEBAIGNmdW5jX2hhc2h0YWJsZV9pbnNlcnQo Q2FjaGVkRnVuY3Rpb24gKmZ1bmN0aW9uLAogCWJvb2wJCWZvdW5kOwogCiAJaWYgKGNmdW5jX2hh c2h0YWJsZSA9PSBOVUxMKQotCQljZnVuY19oYXNodGFibGVfaW5pdCgpOworCQljZnVuY19oYXNo dGFibGUgPSBoYXNoX21ha2VfZm5fY3h0KENhY2hlZEZ1bmN0aW9uSGFzaEVudHJ5LCBrZXksCisJ CQkJCQkJCQkJICAgIkNhY2hlZCBmdW5jdGlvbiBoYXNoIiwgRlVOQ1NfUEVSX1VTRVIsCisJCQkJ CQkJCQkJICAgY2Z1bmNfaGFzaCwgY2Z1bmNfbWF0Y2gsCisJCQkJCQkJCQkJICAgVG9wTWVtb3J5 Q29udGV4dCk7CiAKIAloZW50cnkgPSAoQ2FjaGVkRnVuY3Rpb25IYXNoRW50cnkgKikgaGFzaF9z ZWFyY2goY2Z1bmNfaGFzaHRhYmxlLAogCQkJCQkJCQkJCQkJCSBmdW5jX2tleSwKLS0gCjIuNTIu MAoK --47d834fb39f917299e3944345bf4c7b286ca1a3cdaf0f9bf83d0eef1564f--