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 1vRBHQ-008fRo-33 for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Dec 2025 15:30:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vRBHP-0036o8-2p for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Dec 2025 15:30:04 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vRBHP-0036nz-0t for pgsql-hackers@lists.postgresql.org; Thu, 04 Dec 2025 15:30:03 +0000 Received: from mail-ej1-x631.google.com ([2a00:1450:4864:20::631]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vRBHL-0037kw-3C for pgsql-hackers@lists.postgresql.org; Thu, 04 Dec 2025 15:30:03 +0000 Received: by mail-ej1-x631.google.com with SMTP id a640c23a62f3a-b739ef3f739so176441466b.1 for ; Thu, 04 Dec 2025 07:29:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1764862197; x=1765466997; 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=ycEVhIinxq/dFoRLijWfvZZ1wbnz6buE9CJgLU5HqiE=; b=BffUxyBOpfxcxyLPVtni6lftH+w7RYX+xG0tbY3aPPnoFIDJCH/ED4JSE6XhOg+vvv NyvDebv3tjQUIxcax5kO5odr9JCG1TNY+Ryf7E8raNt37JG0QKci4jMQNloh60uYh4gD C3N1DXsFOMcazpkuPgukWuzGnZqlsi6qokV9EA+dYptXTLgVtsaO2F9gYk0e4kG6lZj+ RXUCPChg1/gQWF3hzgSlfFndL3GwEgP9Q2L+1RurW3v4ezRBNNlLhYw2WWO1tP3HuwWE XwQoenCpz9yodDZKsg+qsIe55M6NFU5FMdAMDdJG0xWRqG2IOMFrQU86MtvK8iGt+bCZ LH2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764862197; x=1765466997; 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=ycEVhIinxq/dFoRLijWfvZZ1wbnz6buE9CJgLU5HqiE=; b=T5aVhVbwmULcBWo27tw+y7kPC5PSQ4TTbY8RvMe2Uoca+HrY8sCUYgYAm/FCXh6wpB NQiKqZ9/9gslEx6lShnOcF03vOFFBZc/xheMNAPgU2vJ6XOjgZiNGhNInhh+lKZ/J94x Q0Z0Yb6RtddLVNUP/xsClmM1ASMbjDyUC/bCv5lc+RlNnxB/B0cItLliedvWdTw7G2PQ GIaa8TX6drR5jj/umvdawffCoRuDAnR4u1TVqJEIs9KJCq/JJvQIjw+5E/CCVcUrN4Oa sOP00gMFYD+3cXy/GWUmpJfohD9tM0o6L5uF/R3EBhMwooRGA8OXZE6LNhDdeUOuNTmq kEAg== X-Gm-Message-State: AOJu0YyTwFcXDcBGoGK0tmUj6qOyxjVl4uXAyfUxP9ECBSnJ4qPa0JN+ rvKkvU8lRBFZagn81oNydCQnSi8ek2xv3VzgwkppeGV8SvjSO4XQ4CFcsafG/ZFIIsE= X-Gm-Gg: ASbGncts0Ubu0FZ/WVVAZtA2qApAYGkxpQBFkmTt3tEf5IrBGZ1c5DoVe5KvJiqySA2 Q5RFdG8lwut3K+vGN2VnXLXjYXRsnYh4+xXHbVR259gQZw8qnW6U+5osBYNVq5FXKZDH1/Gpt0h tWoEVThxWOZqzXm5Jlp0mHzNT6LhBojg4Nba2WRAQXC+8+dIHXayKrZ1F1O3289TIxzQuyMTwcg 53KznldWxI1HkO919IplQqkK2ajN0Av1/0bQi01Zz45WmePUEDFGajsoCdH8MgLJrZ5Z7QNTy5Y j/iihSzKy3E1NTjo+c0qVSnKYMW8WzXm16EqC9bD2+RihRMpki9STteghhhadBcgiV89pL9rsR5 BrCM/oCEX4dSjwmdNpxfLYkxkkE6XYPNzvlKK7mUlFwzN9DD5nvw+Ril76sKg7gBcS5+yWQjBe7 zu3sPk3YI60b9SqWyew7g0LPWsTPCBq4x4govbIVi4ncunk/tB X-Google-Smtp-Source: AGHT+IEnOOQf6bb2wuLI2RS/RQ3Psg9uYOsbzYxi9xqiYYjp/SIqun9JGq7GeEeby4k6M0C58wCgbQ== X-Received: by 2002:a17:906:fe4a:b0:b76:3b69:cb5 with SMTP id a640c23a62f3a-b79ec4364b6mr400808366b.21.1764862196924; Thu, 04 Dec 2025 07:29:56 -0800 (PST) Received: from localhost (037153217001.static.ipv4.heldenvannu.net. [37.153.217.1]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b79f4975dc1sm147454066b.32.2025.12.04.07.29.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 04 Dec 2025 07:29:55 -0800 (PST) Content-Type: multipart/mixed; boundary=1f5aa97c3717d9898fe1632888cf97f42cb8cdb8e993b8ebf6ce2dd0f12d Mime-Version: 1.0 Date: Thu, 04 Dec 2025 16:29:55 +0100 Message-Id: Cc: Subject: Re: Safer hash table initialization macro To: "Bertrand Drouvot" From: "Jelte Fennema-Nio" X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --1f5aa97c3717d9898fe1632888cf97f42cb8cdb8e993b8ebf6ce2dd0f12d Content-Type: multipart/alternative; boundary=3ae282bac490be27d6046ed1c5cbeb1c0babe0e8181a5c327b83bc1607ba --3ae282bac490be27d6046ed1c5cbeb1c0babe0e8181a5c327b83bc1607ba Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Wed Dec 3, 2025 at 12:17 PM CET, Bertrand Drouvot wrote: > I suggest we move forward one > step at a time, first step being the new macros. Does that make sense to = you? Normally I would agree, but in this case I think the new macros you proposing would become obsolete once we have the better hash table creation functions I have in mind. And if we're going to update all places where we create hash tables, I'd rather update them to something really nice than a small improvement. I couldn't let it go (nerd-sniped). So here's a patchset that adds some macros that I think are pretty nice. Including a foreach_hash macro. I'm a bit on the fence about the C11 _Generic code to determine whether we should use HASH_BLOBS or HASH_STRINGS based on the type of the key. It works really nicely in practice, but I'm worried it's a bit too much magic. Probably we should at least have an override to allow using HASH_BLOBS anyway for a char array (in case it's not null terminated). --3ae282bac490be27d6046ed1c5cbeb1c0babe0e8181a5c327b83bc1607ba-- --1f5aa97c3717d9898fe1632888cf97f42cb8cdb8e993b8ebf6ce2dd0f12d Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0001-Add-hash_make-macros.patch Content-Type: text/x-patch; charset=utf-8; name=v2-0001-Add-hash_make-macros.patch RnJvbSAyM2U3OWIyZmY0YzA1ZDQyNDgyOTZiNzJkNjA5YWU4NWJmNjMwNzg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzU6MDggKzAxMDAKU3ViamVjdDogW1BBVENIIHYy IDEvNV0gQWRkIGhhc2hfbWFrZSBtYWNyb3MKClRoaXMgYWRkcyBhIGJ1bmNoIG9mIGhhc2hfbWFr ZSogYW5kIHNobWVtX2hhc2hfbWFrZSogbWFjcm9zIHRvIG1ha2UgaXQKZWFzaWVyIGFuZCBsZXNz IGVycm9yIHByb25lIHRvIGNyZWF0ZSBIVEFCcy4gVGhlc2UgbWFjcm9zIGFyZQppbXBsZW1lbnRl ZCBhcyB3cmFwcGVycyBhcm91bmQgdGhlIGFscmVhZHkgZXhpc3RpbmcgaGFzaF9jcmVhdGUKZnVu Y3Rpb24uIFVzaW5nIHRoZSBuZXcgbWFjcm9zIGlzIHByZWZlcnJlZCwgZHVlIHRvIHRoZSBhZGRp dGlvbmFsCmNvbXBpbGUgdGltZSBjaGVja3MgdGhhdCB0aGV5IGJyaW5nLgoKQ28tQXV0aG9yZWQt Qnk6IEJlcnRyYW5kIERyb3V2b3QgPGJlcnRyYW5kZHJvdXZvdC5wZ0BnbWFpbC5jb20+Ci0tLQog c3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jIHwgMTAzICsrKysrKysrKysrKysrKysr KysKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCAgICAgICB8ICAzMiArKysrKysKIHNyYy9p bmNsdWRlL3V0aWxzL2hzZWFyY2guaCAgICAgICB8IDE2NCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICB8ICAgMSArCiA0IGZp bGVzIGNoYW5nZWQsIDI5NSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2hhc2gvZHluYWhhc2guYwppbmRleCBhYzk0YjllOTNjNi4uMDI0ZDRkMTliZjYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9oYXNoL2R5bmFoYXNoLmMKQEAgLTYzMSw2ICs2MzEsMTA5IEBAIGhhc2hfY3JlYXRlKGNv bnN0IGNoYXIgKnRhYm5hbWUsIGludDY0IG5lbGVtLCBjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQg ZmxhZ3MpCiAJcmV0dXJuIGhhc2hwOwogfQogCisvKgorICogaGFzaF9vcHRzX2luaXQgLS0gaW5p dGlhbGl6ZSBIQVNIQ1RMIGFuZCBmbGFncyBmcm9tIEhBU0hPUFRTCisgKgorICogVGhpcyBwcm9j ZXNzZXMgSEFTSE9QVFMgZmllbGRzIGludG8gSEFTSENUTCBhbmQgZmxhZ3MuIEl0J3MgdXNlZCBi eSBjb2RlCisgKiB0aGF0IG5lZWRzIHRvIGNhbGwgdGhlIGxvdy1sZXZlbCBoYXNoX2NyZWF0ZSBm dW5jdGlvbi4KKyAqLwordm9pZAoraGFzaF9vcHRzX2luaXQoSEFTSENUTCAqY3RsLCBpbnQgKmZs YWdzLAorCQkJICAgU2l6ZSBrZXlzaXplLCBTaXplIGVudHJ5c2l6ZSwgYm9vbCBzdHJpbmdfa2V5 LAorCQkJICAgY29uc3QgSEFTSE9QVFMgKm9wdHMpCit7CisJTWVtU2V0KGN0bCwgMCwgc2l6ZW9m KCpjdGwpKTsKKwljdGwtPmtleXNpemUgPSBrZXlzaXplOworCWN0bC0+ZW50cnlzaXplID0gZW50 cnlzaXplOworCisJKmZsYWdzID0gSEFTSF9FTEVNOworCisJaWYgKG9wdHMgIT0gTlVMTCAmJiBv cHRzLT5oYXNoICE9IE5VTEwpCisJeworCQljdGwtPmhhc2ggPSBvcHRzLT5oYXNoOworCQkqZmxh Z3MgfD0gSEFTSF9GVU5DVElPTjsKKwl9CisJZWxzZQorCXsKKwkJKmZsYWdzIHw9IHN0cmluZ19r ZXkgPyBIQVNIX1NUUklOR1MgOiBIQVNIX0JMT0JTOworCX0KKworCWlmIChvcHRzICE9IE5VTEwg JiYgb3B0cy0+bWF0Y2ggIT0gTlVMTCkKKwl7CisJCWN0bC0+bWF0Y2ggPSBvcHRzLT5tYXRjaDsK KwkJKmZsYWdzIHw9IEhBU0hfQ09NUEFSRTsKKwl9CisKKwlpZiAob3B0cyAhPSBOVUxMICYmIG9w dHMtPmtleWNvcHkgIT0gTlVMTCkKKwl7CisJCWN0bC0+a2V5Y29weSA9IG9wdHMtPmtleWNvcHk7 CisJCSpmbGFncyB8PSBIQVNIX0tFWUNPUFk7CisJfQorCisJaWYgKG9wdHMgIT0gTlVMTCAmJiBv cHRzLT5hbGxvYyAhPSBOVUxMKQorCXsKKwkJY3RsLT5hbGxvYyA9IG9wdHMtPmFsbG9jOworCQkq ZmxhZ3MgfD0gSEFTSF9BTExPQzsKKwl9CisKKwlpZiAob3B0cyAhPSBOVUxMICYmIG9wdHMtPm51 bV9wYXJ0aXRpb25zID4gMCkKKwl7CisJCWN0bC0+bnVtX3BhcnRpdGlvbnMgPSBvcHRzLT5udW1f cGFydGl0aW9uczsKKwkJKmZsYWdzIHw9IEhBU0hfUEFSVElUSU9OOworCX0KKworCWlmIChvcHRz ICE9IE5VTEwgJiYgb3B0cy0+Zml4ZWRfc2l6ZSkKKwkJKmZsYWdzIHw9IEhBU0hfRklYRURfU0la RTsKK30KKworLyoKKyAqIGhhc2hfbWFrZV9pbXBsIC0tIHNpbXBsaWZpZWQgaGFzaCB0YWJsZSBj cmVhdGlvbgorICoKKyAqIFRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9uIGZvciB0 aGUgaGFzaF9tYWtlKCkgYW5kIGhhc2hfbWFrZV9leHQoKQorICogbWFjcm9zLiBJdCBjcmVhdGVz IGEgaGFzaCB0YWJsZSB3aXRoIHNlbnNpYmxlIGRlZmF1bHRzLgorICoKKyAqIElmIHN0cmluZ19r ZXkgaXMgdHJ1ZSwgdGhlIGtleSBpcyB0cmVhdGVkIGFzIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmlu ZworICogKHVzZXMgSEFTSF9TVFJJTkdTKS4gT3RoZXJ3aXNlLCB0aGUga2V5IGlzIHRyZWF0ZWQg YXMgYSBiaW5hcnkgYmxvYgorICogKHVzZXMgSEFTSF9CTE9CUykuCisgKgorICogUGFzcyBOVUxM IGZvciBvcHRzIHRvIHVzZSBhbGwgZGVmYXVsdHMuCisgKi8KK0hUQUIgKgoraGFzaF9tYWtlX2lt cGwoY29uc3QgY2hhciAqdGFibmFtZSwgaW50NjQgbmVsZW0sCisJCQkgICBTaXplIGtleXNpemUs IFNpemUgZW50cnlzaXplLAorCQkJICAgYm9vbCBzdHJpbmdfa2V5LAorCQkJICAgY29uc3QgSEFT SE9QVFMgKm9wdHMsCisJCQkgICBNZW1vcnlDb250ZXh0IG1jeHQpCit7CisJSEFTSENUTAkJY3Rs OworCWludAkJCWZsYWdzOworCisJaGFzaF9vcHRzX2luaXQoJmN0bCwgJmZsYWdzLCBrZXlzaXpl LCBlbnRyeXNpemUsIHN0cmluZ19rZXksIG9wdHMpOworCisJY3RsLmhjeHQgPSBtY3h0OworCWZs YWdzIHw9IEhBU0hfQ09OVEVYVDsKKworCXJldHVybiBoYXNoX2NyZWF0ZSh0YWJuYW1lLCBuZWxl bSwgJmN0bCwgZmxhZ3MpOworfQorCisvKgorICogaGFzaF9tYWtlX2ZuX2ltcGwgLS0gY3JlYXRl IGEgaGFzaCB0YWJsZSB3aXRoIGN1c3RvbSBmdW5jdGlvbnMKKyAqLworSFRBQiAqCitoYXNoX21h a2VfZm5faW1wbChjb25zdCBjaGFyICp0YWJuYW1lLCBpbnQ2NCBuZWxlbSwKKwkJCQkgIFNpemUg a2V5c2l6ZSwgU2l6ZSBlbnRyeXNpemUsIGJvb2wgc3RyaW5nX2tleSwKKwkJCQkgIEhhc2hWYWx1 ZUZ1bmMgaGFzaGZuLCBIYXNoQ29tcGFyZUZ1bmMgbWF0Y2hmbiwKKwkJCQkgIE1lbW9yeUNvbnRl eHQgbWN4dCkKK3sKKwlIQVNIT1BUUwlvcHRzID0geworCQkuaGFzaCA9IGhhc2hmbiwKKwkJLm1h dGNoID0gbWF0Y2hmbgorCX07CisKKwlyZXR1cm4gaGFzaF9tYWtlX2ltcGwodGFibmFtZSwgbmVs ZW0sIGtleXNpemUsIGVudHJ5c2l6ZSwKKwkJCQkJCSAgc3RyaW5nX2tleSwgJm9wdHMsIG1jeHQp OworfQorCiAvKgogICogU2V0IGRlZmF1bHQgSEFTSEhEUiBwYXJhbWV0ZXJzLgogICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdl L3NobWVtLmgKaW5kZXggNzBhNWI4YjE3MmMuLjc0ZjYxYWViYzFhIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5o CkBAIC00Myw2ICs0MywzOCBAQCBleHRlcm4gU2l6ZSBtdWxfc2l6ZShTaXplIHMxLCBTaXplIHMy KTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIFNpemUgcGdfZ2V0X3NobWVtX3BhZ2VzaXplKHZvaWQp OwogCisvKgorICogU2ltcGxpZmllZCBzaGFyZWQgbWVtb3J5IGhhc2ggdGFibGUgY3JlYXRpb24g QVBJCisgKgorICogVGhlc2UgbWFjcm9zIHByb3ZpZGUgYSBzaW1wbGVyIHdheSB0byBjcmVhdGUg c2hhcmVkIG1lbW9yeSBoYXNoIHRhYmxlcyBieToKKyAqIC0gQXV0b21hdGljYWxseSBkZXRlcm1p bmluZyBrZXlzaXplIGFuZCBlbnRyeXNpemUgZnJvbSB0eXBlIGluZm9ybWF0aW9uCisgKiAtIEF1 dG9tYXRpY2FsbHkgY2hvb3NpbmcgSEFTSF9TVFJJTkdTIHZzIEhBU0hfQkxPQlMgYmFzZWQgb24g a2V5IHR5cGUKKyAqIC0gRWxpbWluYXRpbmcgdGhlIG5lZWQgZm9yIGV4cGxpY2l0IEhBU0hDVEwg YW5kIGZsYWdzIGluIGNvbW1vbiBjYXNlcworICoKKyAqIFVzYWdlOgorICogICBIVEFCICpoYXNo ID0gc2htZW1faGFzaF9tYWtlKE15RW50cnksIGtleWZpZWxkLCAiTXkgaGFzaCIsIDY0LCAxMjgp OworICoKKyAqIEZvciBtb3JlIG9wdGlvbnMgKHBhcnRpdGlvbmluZywgZml4ZWQgc2l6ZSwgY3Vz dG9tIGhhc2gpOgorICogICBIQVNIT1BUUyBvcHRzID0gey5udW1fcGFydGl0aW9ucyA9IDE2LCAu Zml4ZWRfc2l6ZSA9IHRydWV9OworICogICBIVEFCICpoYXNoID0gc2htZW1faGFzaF9tYWtlX2V4 dChNeUVudHJ5LCBrZXlmaWVsZCwgIk15IGhhc2giLCA2NCwgMTI4LCAmb3B0cyk7CisgKi8KKyNk ZWZpbmUgc2htZW1faGFzaF9tYWtlKGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBpbml0 X3NpemUsIG1heF9zaXplKSBcCisJc2htZW1faGFzaF9tYWtlX2V4dChlbnRyeXR5cGUsIGtleW1l bWJlciwgdGFibmFtZSwgaW5pdF9zaXplLCBtYXhfc2l6ZSwgTlVMTCkKKworI2RlZmluZSBzaG1l bV9oYXNoX21ha2VfZXh0KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBpbml0X3NpemUs IG1heF9zaXplLCBvcHRzKSBcCisJKFN0YXRpY0Fzc2VydEV4cHIob2Zmc2V0b2YoZW50cnl0eXBl LCBrZXltZW1iZXIpID09IDAsIFwKKwkJCQkJCSAja2V5bWVtYmVyICIgbXVzdCBiZSBmaXJzdCBt ZW1iZXIgaW4gIiAjZW50cnl0eXBlKSwgXAorCXNobWVtX2hhc2hfbWFrZV9pbXBsKCBcCisJCSh0 YWJuYW1lKSwgKGluaXRfc2l6ZSksIChtYXhfc2l6ZSksIFwKKwkJc2l6ZW9mKCgoZW50cnl0eXBl ICopMCktPmtleW1lbWJlciksIFwKKwkJc2l6ZW9mKGVudHJ5dHlwZSksIFwKKwkJSEFTSF9LRVlf QVNfU1RSSU5HKGVudHJ5dHlwZSwga2V5bWVtYmVyKSwgXAorCQkob3B0cykpKQorCitleHRlcm4g SFRBQiAqc2htZW1faGFzaF9tYWtlX2ltcGwoY29uc3QgY2hhciAqbmFtZSwgaW50NjQgaW5pdF9z aXplLCBpbnQ2NCBtYXhfc2l6ZSwKKwkJCQkJCQkJICBTaXplIGtleXNpemUsIFNpemUgZW50cnlz aXplLCBib29sIHN0cmluZ19rZXksCisJCQkJCQkJCSAgY29uc3QgSEFTSE9QVFMgKm9wdHMpOwor CiAvKiBpcGNpLmMgKi8KIGV4dGVybiB2b2lkIFJlcXVlc3RBZGRpblNobWVtU3BhY2UoU2l6ZSBz aXplKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvaHNlYXJjaC5oCmluZGV4IGNiMDlhNGNiZThjLi4zNmIzMWJlN2FkNiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0 aWxzL2hzZWFyY2guaApAQCAtMTUsNiArMTUsOSBAQAogI2RlZmluZSBIU0VBUkNIX0gKIAogCisv KiBIYXNoIHRhYmxlIGNvbnRyb2wgc3RydWN0IGlzIGFuIG9wYXF1ZSB0eXBlIGtub3duIG9ubHkg d2l0aGluIGR5bmFoYXNoLmMgKi8KK3R5cGVkZWYgc3RydWN0IEhUQUIgSFRBQjsKKwogLyoKICAq IEhhc2ggZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGlzIHNpZ25hdHVyZS4KICAqLwpAQCAtNDMsNiAr NDYsMTU0IEBAIHR5cGVkZWYgdm9pZCAqKCpIYXNoQ29weUZ1bmMpICh2b2lkICpkZXN0LCBjb25z dCB2b2lkICpzcmMsIFNpemUga2V5c2l6ZSk7CiAgKi8KIHR5cGVkZWYgdm9pZCAqKCpIYXNoQWxs b2NGdW5jKSAoU2l6ZSByZXF1ZXN0KTsKIAorLyoKKyAqIEhhc2ggb3B0aW9ucyBmb3IgaGFzaF9t YWtlX2V4dCBhbmQgc2htZW1faGFzaF9tYWtlX2V4dCBtYWNyb3MuCisgKiBDb250YWlucyBsZXNz IGNvbW1vbmx5IG5lZWRlZCBvcHRpb25zIHRoYXQgYXJlbid0IGNvdmVyZWQgYnkgdGhlIGJhc2lj IG1hY3Jvcy4KKyAqIEFsbCBmaWVsZHMgZGVmYXVsdCB0byBOVUxMLzAvZmFsc2Ugd2hlbiB6ZXJv LWluaXRpYWxpemVkLgorICovCit0eXBlZGVmIHN0cnVjdCBIQVNIT1BUUworeworCUhhc2hWYWx1 ZUZ1bmMgaGFzaDsJCQkvKiBjdXN0b20gaGFzaCBmdW5jdGlvbiAoTlVMTCBmb3IgZGVmYXVsdCkg Ki8KKwlIYXNoQ29tcGFyZUZ1bmMgbWF0Y2g7CQkvKiBjdXN0b20gY29tcGFyaXNvbiBmdW5jdGlv biAoTlVMTCBmb3IKKwkJCQkJCQkJICogZGVmYXVsdCkgKi8KKwlIYXNoQ29weUZ1bmMga2V5Y29w eTsJCS8qIGN1c3RvbSBrZXkgY29weSBmdW5jdGlvbiAoTlVMTCBmb3IgZGVmYXVsdCkgKi8KKwlI YXNoQWxsb2NGdW5jIGFsbG9jOwkJLyogY3VzdG9tIGFsbG9jYXRvciAoTlVMTCBmb3IgZGVmYXVs dCkgKi8KKwlpbnQ2NAkJbnVtX3BhcnRpdGlvbnM7IC8qIHBhcnRpdGlvbiBjb3VudCAoMCBmb3Ig bm9uZSkgKi8KKwlib29sCQlmaXhlZF9zaXplOwkJLyogaWYgdHJ1ZSwgaGFzaCB0YWJsZSBjYW5u b3QgZ3JvdyAqLworfSBIQVNIT1BUUzsKKworLyoKKyAqIEhlbHBlcnMgdG8gZGV0ZWN0IGlmIGEg dHlwZSBzaG91bGQgYmUgaGFzaGVkIGFzIGEgc3RyaW5nLgorICogVXNlcyBfR2VuZXJpYyB0byBz ZWxlY3QgYmV0d2VlbiBzdHJpbmcgdHlwZXMgYW5kIG90aGVyIHR5cGVzLgorICoKKyAqIFN0cmlu ZyB0eXBlcyBpbmNsdWRlOiBjaGFyIGFycmF5cyBhbmQgTmFtZURhdGEuCisgKiBFdmVyeXRoaW5n IGVsc2UgaXMgdHJlYXRlZCBhcyBhIGJpbmFyeSBibG9iIChIQVNIX0JMT0JTKS4KKyAqCisgKiBO b3RlOiBUaGlzIGNvdWxkIGJlIHNpbXBsaWZpZWQgb25jZSB3ZSB1c2UgQzIzLCB3aGljaCBzdXBw b3J0cyB0eXBlb2YuCisgKi8KKyNkZWZpbmUgSEFTSF9QVFJfQVNfU1RSSU5HKHB0ciwgc2l6ZSkg XAorCV9HZW5lcmljKChwdHIpLCBcCisJCWNoYXIoKilbc2l6ZV06IDEsIFwKKwkJTmFtZURhdGEq OiAxLCBcCisJCWRlZmF1bHQ6IDApCisjZGVmaW5lIEhBU0hfS0VZX0FTX1NUUklORyhlbnRyeXR5 cGUsIGtleW1lbWJlcikgXAorCUhBU0hfUFRSX0FTX1NUUklORygmKChlbnRyeXR5cGUgKikwKS0+ a2V5bWVtYmVyLCBcCisJCQkJCSAgIHNpemVvZigoKGVudHJ5dHlwZSAqKTApLT5rZXltZW1iZXIp KQorI2RlZmluZSBIQVNIX1RZUEVfQVNfU1RSSU5HKHR5cGUpIFwKKwlIQVNIX1BUUl9BU19TVFJJ TkcoKHR5cGUgKikwLCBzaXplb2YodHlwZSkpCisKKy8qCisgKiBDcmVhdGUgYSBoYXNoIHRhYmxl IHdpdGggbWluaW1hbCBib2lsZXJwbGF0ZS4KKyAqCisgKiBUaGlzIGlzIHRoZSBzaW1wbGVzdCB3 YXkgdG8gY3JlYXRlIGEgaGFzaCB0YWJsZS4gSXQ6CisgKiAtIERlcml2ZXMga2V5c2l6ZSBmcm9t IHRoZSBrZXltZW1iZXIncyBhY3R1YWwgdHlwZQorICogLSBEZXJpdmVzIGVudHJ5c2l6ZSBmcm9t IHRoZSBlbnRyeXR5cGUKKyAqIC0gQXV0b21hdGljYWxseSBjaG9vc2VzIEhBU0hfU1RSSU5HUyBv ciBIQVNIX0JMT0JTIGJhc2VkIG9uIGtleSB0eXBlIChjaGFyIGFycmF5cyBhbmQgTmFtZURhdGEg YXJlIHRyZWF0ZWQgYXMgc3RyaW5ncykKKyAqIC0gVXNlcyBDdXJyZW50TWVtb3J5Q29udGV4dCAo bm90IFRvcE1lbW9yeUNvbnRleHQpCisgKiAtIFZhbGlkYXRlcyB0aGF0IGtleW1lbWJlciBpcyBh dCBvZmZzZXQgMAorICoKKyAqIFVzYWdlOgorICogICB0eXBlZGVmIHN0cnVjdCB7IE9pZCBvaWQ7 IGNoYXIgKmRhdGE7IH0gTXlFbnRyeTsKKyAqICAgSFRBQiAqaCA9IGhhc2hfbWFrZShNeUVudHJ5 LCBvaWQsICJteSB0YWJsZSIsIDY0KTsKKyAqLworI2RlZmluZSBoYXNoX21ha2UoZW50cnl0eXBl LCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtKSBcCisJaGFzaF9tYWtlX2N4dChlbnRyeXR5cGUs IGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0sIEN1cnJlbnRNZW1vcnlDb250ZXh0KQorCisvKgor ICogTGlrZSBoYXNoX21ha2UsIGJ1dCBhbGxvd3Mgc3BlY2lmeWluZyBhIG1lbW9yeSBjb250ZXh0 LgorICovCisjZGVmaW5lIGhhc2hfbWFrZV9jeHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5h bWUsIG5lbGVtLCBtY3h0KSBcCisJaGFzaF9tYWtlX2V4dF9jeHQoZW50cnl0eXBlLCBrZXltZW1i ZXIsIHRhYm5hbWUsIG5lbGVtLCBOVUxMLCBtY3h0KQorCisvKgorICogSGFzaCB0YWJsZSB3aXRo IGN1c3RvbSBoYXNoIGFuZC9vciBtYXRjaCBmdW5jdGlvbnMuCisgKgorICogTGlrZSBoYXNoX21h a2UsIGJ1dCBhY2NlcHRzIGN1c3RvbSBoYXNoIGFuZCBtYXRjaCBmdW5jdGlvbiBwb2ludGVycy4K KyAqIFBhc3MgTlVMTCBmb3IgaGFzaGZuIHRvIHVzZSB0aGUgZGVmYXVsdCBoYXNoIChiYXNlZCBv biBrZXkgdHlwZSksCisgKiBvciBOVUxMIGZvciBtYXRjaGZuIHRvIHVzZSB0aGUgZGVmYXVsdCBt ZW1jbXAtYmFzZWQgY29tcGFyaXNvbi4KKyAqLworI2RlZmluZSBoYXNoX21ha2VfZm4oZW50cnl0 eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBoYXNoZm4sIG1hdGNoZm4pIFwKKwloYXNo X21ha2VfZm5fY3h0KGVudHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSwgaGFzaGZu LCBtYXRjaGZuLCBcCisJCQkJCSBDdXJyZW50TWVtb3J5Q29udGV4dCkKKyNkZWZpbmUgaGFzaF9t YWtlX2ZuX2N4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0sIGhhc2hmbiwg bWF0Y2hmbiwgbWN4dCkgXAorCShTdGF0aWNBc3NlcnRFeHByKG9mZnNldG9mKGVudHJ5dHlwZSwg a2V5bWVtYmVyKSA9PSAwLCBcCisJCQkJCSAgI2tleW1lbWJlciAiIG11c3QgYmUgZmlyc3QgbWVt YmVyIGluICIgI2VudHJ5dHlwZSksIFwKKwkgaGFzaF9tYWtlX2ZuX2ltcGwoKHRhYm5hbWUpLCAo bmVsZW0pLCBcCisJCQkJCSAgIHNpemVvZigoKGVudHJ5dHlwZSAqKTApLT5rZXltZW1iZXIpLCBc CisJCQkJCSAgIHNpemVvZihlbnRyeXR5cGUpLCBcCisJCQkJCSAgIEhBU0hfS0VZX0FTX1NUUklO RyhlbnRyeXR5cGUsIGtleW1lbWJlciksIFwKKwkJCQkJICAgKGhhc2hmbiksIChtYXRjaGZuKSwg KG1jeHQpKSkKKworLyoKKyAqIEhhc2ggdGFibGUgd2l0aCBleHRlbmRlZCBvcHRpb25zIHZpYSBI QVNIT1BUUyBzdHJ1Y3QuCisgKgorICogTGlrZSBoYXNoX21ha2UsIGJ1dCBhY2NlcHRzIGFkZGl0 aW9uYWwgb3B0aW9ucyB2aWEgSEFTSE9QVFMgc3RydWN0IHBvaW50ZXIuCisgKiBQYXNzIE5VTEwg Zm9yIG9wdHMgdG8gdXNlIGFsbCBkZWZhdWx0cy4KKyAqCisgKiBFeGFtcGxlIHVzYWdlOgorICog ICBIQVNIT1BUUyBvcHRzID0gezB9OworICogICBvcHRzLmhhc2ggPSBteV9oYXNoX2Z1bmM7Cisg KiAgIG9wdHMubnVtX3BhcnRpdGlvbnMgPSAxNjsKKyAqICAgSFRBQiAqaCA9IGhhc2hfbWFrZV9l eHQoTXlFbnRyeSwga2V5LCAibXkgdGFibGUiLCA2NCwgJm9wdHMpOworICovCisjZGVmaW5lIGhh c2hfbWFrZV9leHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBvcHRzKSBc CisJaGFzaF9tYWtlX2V4dF9jeHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVt LCBvcHRzLCBDdXJyZW50TWVtb3J5Q29udGV4dCkKKworI2RlZmluZSBoYXNoX21ha2VfZXh0X2N4 dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0sIG9wdHMsIG1jeHQpIFwKKwko U3RhdGljQXNzZXJ0RXhwcihvZmZzZXRvZihlbnRyeXR5cGUsIGtleW1lbWJlcikgPT0gMCwgXAor CQkJCQkJICNrZXltZW1iZXIgIiBtdXN0IGJlIGZpcnN0IG1lbWJlciBpbiAiICNlbnRyeXR5cGUp LCBcCisJaGFzaF9tYWtlX2ltcGwoIFwKKwkJKHRhYm5hbWUpLCAobmVsZW0pLCBcCisJCXNpemVv ZigoKGVudHJ5dHlwZSAqKTApLT5rZXltZW1iZXIpLCBcCisJCXNpemVvZihlbnRyeXR5cGUpLCBc CisJCUhBU0hfS0VZX0FTX1NUUklORyhlbnRyeXR5cGUsIGtleW1lbWJlciksIFwKKwkJKG9wdHMp LCBcCisJCShtY3h0KSkpCisKKworLyoKKyAqIENyZWF0ZSBhIGhhc2ggc2V0IHdoZXJlIHRoZSBl bnRpcmUgZW50cnkgaXMgdGhlIGtleS4gVGhpcyBpcworICogbGlrZSBoYXNoX21ha2UsIGJ1dCB3 aGVyZSB0aGUga2V5IGlzIGFsc28gdGhlIGVudHJ5LgorICovCisjZGVmaW5lIGhhc2hzZXRfbWFr ZShlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtKSBcCisJaGFzaHNldF9tYWtlX2N4dChlbnRyeXR5 cGUsIHRhYm5hbWUsIG5lbGVtLCBDdXJyZW50TWVtb3J5Q29udGV4dCkKKyNkZWZpbmUgaGFzaHNl dF9tYWtlX2N4dChlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBtY3h0KSBcCisJaGFzaHNldF9t YWtlX2V4dF9jeHQoZW50cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSwgTlVMTCwgbWN4dCkKKyNkZWZp bmUgaGFzaHNldF9tYWtlX2ZuKGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0sIGhhc2hmbiwgbWF0 Y2hmbikgXAorCWhhc2hzZXRfbWFrZV9mbl9jeHQoZW50cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSwg aGFzaGZuLCBtYXRjaGZuLCBcCisJCQkJCQkJQ3VycmVudE1lbW9yeUNvbnRleHQpCisjZGVmaW5l IGhhc2hzZXRfbWFrZV9mbl9jeHQoZW50cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSwgaGFzaGZuLCBt YXRjaGZuLCBtY3h0KSBcCisJaGFzaF9tYWtlX2ZuX2ltcGwoKHRhYm5hbWUpLCAobmVsZW0pLCBz aXplb2YoZW50cnl0eXBlKSwgc2l6ZW9mKGVudHJ5dHlwZSksIFwKKwkJCQkJCSBIQVNIX1RZUEVf QVNfU1RSSU5HKGVudHJ5dHlwZSksIChoYXNoZm4pLCAobWF0Y2hmbiksIFwKKwkJCQkJCSBtY3h0 KQorI2RlZmluZSBoYXNoc2V0X21ha2VfZXh0KGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0sIG9w dHMpIFwKKwloYXNoc2V0X21ha2VfZXh0X2N4dChlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBv cHRzLCBcCisJCQkJCQkJQ3VycmVudE1lbW9yeUNvbnRleHQpCisjZGVmaW5lIGhhc2hzZXRfbWFr ZV9leHRfY3h0KGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0sIG9wdHMsIG1jeHQpIFwKKwloYXNo X21ha2VfaW1wbCgodGFibmFtZSksIChuZWxlbSksIHNpemVvZihlbnRyeXR5cGUpLCBzaXplb2Yo ZW50cnl0eXBlKSwgXAorCQkJCSAgIEhBU0hfVFlQRV9BU19TVFJJTkcoZW50cnl0eXBlKSwgb3B0 cywgKG1jeHQpKQorCisvKgorICogSW1wbGVtZW50YXRpb24gZnVuY3Rpb24gZm9yIGhhc2hfbWFr ZSBtYWNyb3MuIE5vdCBtZWFudCB0byBiZSBjYWxsZWQKKyAqIGRpcmVjdGx5LgorICoKKyAqIElm IHN0cmluZ19rZXkgaXMgdHJ1ZSwgdGhlIGtleSBpcyB0cmVhdGVkIGFzIGEgbnVsbC10ZXJtaW5h dGVkIHN0cmluZy4KKyAqIFBhc3MgTlVMTCBmb3Igb3B0cyB0byB1c2UgYWxsIGRlZmF1bHRzLgor ICovCitleHRlcm4gSFRBQiAqaGFzaF9tYWtlX2ltcGwoY29uc3QgY2hhciAqdGFibmFtZSwgaW50 NjQgbmVsZW0sCisJCQkJCQkJU2l6ZSBrZXlzaXplLCBTaXplIGVudHJ5c2l6ZSwKKwkJCQkJCQli b29sIHN0cmluZ19rZXksCisJCQkJCQkJY29uc3QgSEFTSE9QVFMgKm9wdHMsCisJCQkJCQkJTWVt b3J5Q29udGV4dCBtY3h0KTsKKworLyoKKyAqIEltcGxlbWVudGF0aW9uIGZ1bmN0aW9uIGZvciBo YXNoX21ha2VfZm4gbWFjcm9zLgorICovCitleHRlcm4gSFRBQiAqaGFzaF9tYWtlX2ZuX2ltcGwo Y29uc3QgY2hhciAqdGFibmFtZSwgaW50NjQgbmVsZW0sCisJCQkJCQkJICAgU2l6ZSBrZXlzaXpl LCBTaXplIGVudHJ5c2l6ZSwgYm9vbCBzdHJpbmdfa2V5LAorCQkJCQkJCSAgIEhhc2hWYWx1ZUZ1 bmMgaGFzaGZuLCBIYXNoQ29tcGFyZUZ1bmMgbWF0Y2hmbiwKKwkJCQkJCQkgICBNZW1vcnlDb250 ZXh0IG1jeHQpOworCiAvKgogICogSEFTSEVMRU1FTlQgaXMgdGhlIHByaXZhdGUgcGFydCBvZiBh IGhhc2h0YWJsZSBlbnRyeS4gIFRoZSBjYWxsZXIncyBkYXRhCiAgKiBmb2xsb3dzIHRoZSBIQVNI RUxFTUVOVCBzdHJ1Y3R1cmUgKG9uIGEgTUFYQUxJR04nZCBib3VuZGFyeSkuICBUaGUgaGFzaCBr ZXkKQEAgLTU3LDExICsyMDgsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgSEFTSEVMRU1FTlQKIC8qIEhh c2ggdGFibGUgaGVhZGVyIHN0cnVjdCBpcyBhbiBvcGFxdWUgdHlwZSBrbm93biBvbmx5IHdpdGhp biBkeW5haGFzaC5jICovCiB0eXBlZGVmIHN0cnVjdCBIQVNISERSIEhBU0hIRFI7CiAKLS8qIEhh c2ggdGFibGUgY29udHJvbCBzdHJ1Y3QgaXMgYW4gb3BhcXVlIHR5cGUga25vd24gb25seSB3aXRo aW4gZHluYWhhc2guYyAqLwotdHlwZWRlZiBzdHJ1Y3QgSFRBQiBIVEFCOwotCi0vKiBQYXJhbWV0 ZXIgZGF0YSBzdHJ1Y3R1cmUgZm9yIGhhc2hfY3JlYXRlICovCi0vKiBPbmx5IHRob3NlIGZpZWxk cyBpbmRpY2F0ZWQgYnkgaGFzaF9mbGFncyBuZWVkIGJlIHNldCAqLworLyoKKyAqIFBhcmFtZXRl ciBkYXRhIHN0cnVjdHVyZSBmb3IgaGFzaF9jcmVhdGUgKHdoaWNoIGlzIHRoZSBsb3ctbGV2ZWwg bWV0aG9kIG9mCisgKiBpbml0aWFsaXppbmcgaGFzaCB0YWJsZXMsIGhhc2hfbWFrZSBtYWNyb3Mg YXJlIHByZWZlcnJlZCkKKyAqIE9ubHkgdGhvc2UgZmllbGRzIGluZGljYXRlZCBieSBoYXNoX2Zs YWdzIG5lZWQgYmUgc2V0CisgKi8KIHR5cGVkZWYgc3RydWN0IEhBU0hDVEwKIHsKIAkvKiBVc2Vk IGlmIEhBU0hfUEFSVElUSU9OIGZsYWcgaXMgc2V0OiAqLwpAQCAtMTMxLDYgKzI4Miw5IEBAIHR5 cGVkZWYgc3RydWN0CiAgKi8KIGV4dGVybiBIVEFCICpoYXNoX2NyZWF0ZShjb25zdCBjaGFyICp0 YWJuYW1lLCBpbnQ2NCBuZWxlbSwKIAkJCQkJCSBjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxh Z3MpOworZXh0ZXJuIHZvaWQgaGFzaF9vcHRzX2luaXQoSEFTSENUTCAqY3RsLCBpbnQgKmZsYWdz LAorCQkJCQkJICAgU2l6ZSBrZXlzaXplLCBTaXplIGVudHJ5c2l6ZSwgYm9vbCBzdHJpbmdfa2V5 LAorCQkJCQkJICAgY29uc3QgSEFTSE9QVFMgKm9wdHMpOwogZXh0ZXJuIHZvaWQgaGFzaF9kZXN0 cm95KEhUQUIgKmhhc2hwKTsKIGV4dGVybiB2b2lkIGhhc2hfc3RhdHMoY29uc3QgY2hhciAqY2Fs bGVyLCBIVEFCICpoYXNocCk7CiBleHRlcm4gdm9pZCAqaGFzaF9zZWFyY2goSFRBQiAqaGFzaHAs IGNvbnN0IHZvaWQgKmtleVB0ciwgSEFTSEFDVElPTiBhY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CmluZGV4IGNmM2Y2YTdkYWZkLi5iN2NmOTAwZjFjNiAxMDA2NDQKLS0tIGEvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKQEAgLTExNDQsNiArMTE0NCw3IEBAIEhBU0hCVUNLRVQKIEhBU0hDVEwKIEhBU0hF TEVNRU5UCiBIQVNISERSCitIQVNIT1BUUwogSEFTSFNFR01FTlQKIEhBU0hfU0VRX1NUQVRVUwog SEUKCmJhc2UtY29tbWl0OiAxYjJiYjUwNzdlOWU5ZGVhYzYwYTNlOTJlNzQyNDY1ZTdiY2QzYTIx Ci0tIAoyLjUyLjAKCg== --1f5aa97c3717d9898fe1632888cf97f42cb8cdb8e993b8ebf6ce2dd0f12d Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0002-Use-hash_make-macros-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v2-0002-Use-hash_make-macros-throughout-the-codebase.patch RnJvbSBiZjQ5MDQ2ZDE5NDVlYjBjMDU4NjFjNjcyNTFmNDM5NjIzNWFjMTg2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzY6MTkgKzAxMDAKU3ViamVjdDogW1BBVENIIHYy IDIvNV0gVXNlIGhhc2hfbWFrZSBtYWNyb3MgdGhyb3VnaG91dCB0aGUgY29kZWJhc2UKClRoaXMg c2hvd3MgaG93IG91ciBjb2RlIGJhc2UgbG9va3Mgd2hlbiB1c2luZyB0aGUgbmV3IEFQSXMuIFRo aXMgaGFzCnNvbWUgdHlwZXNhZmV0eSwgcmVhZGFiaWxpdHkgYW5kIG1haW50YW5hYmlsaXR5IGJl bmVmaXRzLCBidXQgaXQgYWxzbwppbnRyb2R1Y2VzIHNvbWUgYmFja3BhdGNoaW5nIHByb2JsZW1z LiBUaGVzZSBiYWNrcGF0Y2hpbmcgcHJvYmxlbXMKY2Fubm90IGJlIHJlc29sdmVkIGJ5IGJhY2tw b3J0aW5nIHRoZSBuZXcgaGFzaF9tYWtlIG1hY3JvcywgYmVjYXVzZSBzb21lCm9mIHRoZW0gcmVx dWlyZSBDMTEgKHdoaWNoIHdlIG9ubHkgcmVxdWlyZSBvbiBtYXN0ZXIgZm9yIG5vdykuIEkgdGhp bmsKaXQncyB1bmxpa2VseSB0aGF0IHdlJ2xsIG5lZWQgdG8gYmFja3BhdGNoIHRoaW5ncyBpbiBj b2RlIHRoYXQgY3JlYXRlcwpoYXNodGFibGVzIHRob3VnaCwgc28gaXQgY291bGQgc3RpbGwgYmUg d29ydGggaXQgdG8gZG8gdGhpcyBjb21wbGV0ZQpyZWZhY3Rvci4KCkF0IHRoZSB2ZXJ5IGxlYXN0 IHdlIHNob3VsZCBjaG9vc2UgYSBmZXcgcGxhY2VzIHdoZXJlIHdlIHVzZSB0aGUgbmV3Cm1hY3Jv cyB0byBtYWtlIHN1cmUgdGhleSBoYXZlIGNvdmVyYWdlLgotLS0KIGNvbnRyaWIvZGJsaW5rL2Ri bGluay5jICAgICAgICAgICAgICAgICAgICAgICB8IDEwICstLQogLi4uL3BnX3N0YXRfc3RhdGVt ZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyAgIHwgMTAgKy0tCiBjb250cmliL3BnX3RyZ20vdHJn bV9yZWdleHAuYyAgICAgICAgICAgICAgICAgfCAgOSArLS0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3 L2Nvbm5lY3Rpb24uYyAgICAgICAgICAgICB8IDEwICstLQogY29udHJpYi9wb3N0Z3Jlc19mZHcv c2hpcHBhYmxlLmMgICAgICAgICAgICAgIHwgMTAgKystCiBjb250cmliL3RhYmxlZnVuYy90YWJs ZWZ1bmMuYyAgICAgICAgICAgICAgICAgfCAxNyArKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2Nv bW1vbi9oZWFwdHVwbGUuYyAgICAgICAgIHwgMTMgKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkLmMgICAgICAgICAgIHwgMTEgKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkYnVmZmVycy5jICAgIHwgMTAgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFz aC9oYXNocGFnZS5jICAgICAgICAgICAgfCAxMyArLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9yZXdyaXRlaGVhcC5jICAgICAgICAgfCAzOSArKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYyAgIHwgIDggKy0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9ndXRpbHMuYyAgICAgICAgfCAxMyArKy0tCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX2VudW0uYyAgICAgICAgICAgICAgICAgfCAyNCArKy0tLS0tCiBzcmMvYmFja2VuZC9j YXRhbG9nL3BnX2luaGVyaXRzLmMgICAgICAgICAgICAgfCAxMSArLS0tCiBzcmMvYmFja2VuZC9j YXRhbG9nL3N0b3JhZ2UuYyAgICAgICAgICAgICAgICAgfCAyMSArKy0tLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2FzeW5jLmMgICAgICAgICAgICAgICAgICB8IDE0ICsrLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAgICB8IDEyICstLS0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgICAgICAgICAgICB8IDEwICstLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgMTYgKy0tLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8IDEwICstLQogc3JjL2JhY2tlbmQv bm9kZXMvZXh0ZW5zaWJsZS5jICAgICAgICAgICAgICAgIHwgMTAgKy0tCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgICAgICAgICAgfCAxNyArKy0tLQogc3JjL2JhY2tlbmQv b3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYyAgICAgICAgIHwgIDkgKy0tCiBzcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMgICAgICAgICAgfCAxMyArLS0tCiBzcmMvYmFja2VuZC9w YXJzZXIvcGFyc2Vfb3Blci5jICAgICAgICAgICAgICAgfCAxMCArKy0KIHNyYy9iYWNrZW5kL3Bh cnRpdGlvbmluZy9wYXJ0ZGVzYy5jICAgICAgICAgICB8ICA5ICstLQogc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgMjIgKystLS0tLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyAgICAgICAgIHwgMTIgKy0tLQogLi4uL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgMTMgKy0tLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jICAgIHwgMjIgKystLS0tLQogLi4uL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgICAgIHwgMjkgKystLS0tLS0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8IDEwICsrLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgMTEgKy0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX3RhYmxlLmMgICAgICAgIHwgMTUgKystLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jICAgICAgICAgICB8IDExICsrLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMgICAgICAgICB8IDExICstLS0KIHNyYy9i YWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWluaXQuYyAgICAgICAgICAgICB8ICA4ICstLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyAgICAgICAgICAgICAgIHwgMzMgKysrKysrKy0tLQog c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICAgICAgIHwgMjAgKystLS0t CiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jICAgICAgICAgICAgICAgfCA1NSArKysr Ky0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMgICAgICAgICAg ICAgfCAgOCArLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyAgICAgICAg ICB8IDY2ICsrKysrKysrLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdy LmMgICAgICAgICAgICAgICB8IDEwICsrLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMu YyAgICAgICAgICAgICAgIHwgMTEgKy0tLQogc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFs eXplLmMgICAgICAgICAgIHwgMTMgKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jICAgICAgIHwgMjMgKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5 X3R5cGFuYWx5emUuYyAgICAgIHwgMjMgKystLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pz b24uYyAgICAgICAgICAgICAgICAgIHwgMTUgKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uZnVuY3MuYyAgICAgICAgICAgICB8IDIwICsrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L21jeHRmdW5jcy5jICAgICAgICAgICAgIHwgMTEgKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JpX3RyaWdnZXJzLmMgICAgICAgICAgIHwgMjkgKysrKy0tLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8IDIzICsrLS0tLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2F0dG9wdGNhY2hlLmMgICAgICAgICB8IDE2ICsrLS0tCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9ldnRjYWNoZS5jICAgICAgICAgICAgfCAgOSArLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2Z1bmNjYWNoZS5jICAgICAgICAgICB8IDE0ICsrLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgICB8IDE5ICsrLS0tLQogc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jICAgIHwgIDkgKy0tCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9zcGNjYWNoZS5jICAgICAgICAgICAgfCAgOSArLS0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3RzX2NhY2hlLmMgICAgICAgICAgICB8IDI3ICsrKy0tLS0tCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS90eXBjYWNoZS5jICAgICAgICAgICAgfCAzMyArKysrLS0tLS0tCiBzcmMv YmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMgICAgICAgICAgICAgICAgfCAxMiArKy0tCiBzcmMv YmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYyAgICAgICAgICAgICAgICAgfCAxMSArLS0tCiBzcmMv YmFja2VuZC91dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAgICAgfCAxNCArKy0tCiBzcmMv YmFja2VuZC91dGlscy9taXNjL2luamVjdGlvbl9wb2ludC5jICAgICAgfCAxNCArKy0tCiBzcmMv YmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jICAgICAgICAgICAgfCAxMCArLS0KIHNyYy9i YWNrZW5kL3V0aWxzL3RpbWUvY29tYm9jaWQuYyAgICAgICAgICAgICB8IDEzICstLS0KIHNyYy9w bC9wbHBlcmwvcGxwZXJsLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDMyICsrKy0tLS0tLQog c3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYyAgICAgICAgICAgICAgICAgIHwgMzIgKysrKy0t LS0tCiBzcmMvcGwvcGxweXRob24vcGxweV9wbHB5bW9kdWxlLmMgICAgICAgICAgICAgfCAgOSAr Ky0KIHNyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5jICAgICAgICAgICAgICB8ICA5ICst LQogc3JjL3BsL3RjbC9wbHRjbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTkgKyst LS0tCiBzcmMvdGltZXpvbmUvcGd0ei5jICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMiAr LS0tCiA3MyBmaWxlcyBjaGFuZ2VkLCAzNzEgaW5zZXJ0aW9ucygrKSwgODM1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZGJsaW5rL2RibGluay5jIGIvY29udHJpYi9kYmxpbmsv ZGJsaW5rLmMKaW5kZXggOGJmOGZjOGVhMmYuLjI5NTFjMzlkNjlmIDEwMDY0NAotLS0gYS9jb250 cmliL2RibGluay9kYmxpbmsuYworKysgYi9jb250cmliL2RibGluay9kYmxpbmsuYwpAQCAtMjU0 MCwxMyArMjU0MCw5IEBAIGdldENvbm5lY3Rpb25CeU5hbWUoY29uc3QgY2hhciAqbmFtZSkKIHN0 YXRpYyBIVEFCICoKIGNyZWF0ZUNvbm5IYXNoKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwotCi0J Y3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKHJlbW90 ZUNvbm5IYXNoRW50KTsKLQotCXJldHVybiBoYXNoX2NyZWF0ZSgiUmVtb3RlIENvbiBoYXNoIiwg TlVNQ09OTiwgJmN0bCwKLQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwlyZXR1 cm4gaGFzaF9tYWtlX2N4dChyZW1vdGVDb25uSGFzaEVudCwgbmFtZSwKKwkJCQkJCSAiUmVtb3Rl IENvbiBoYXNoIiwgTlVNQ09OTiwKKwkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogc3Rh dGljIHJlbW90ZUNvbm4gKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv cGdfc3RhdF9zdGF0ZW1lbnRzLmMgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0 X3N0YXRlbWVudHMuYwppbmRleCAzOTIwOGY4MGI1Yi4uMmM1NWI3OGU5YmEgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCisrKyBiL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCkBAIC01MTcsNyAr NTE3LDYgQEAgc3RhdGljIHZvaWQKIHBnc3Nfc2htZW1fc3RhcnR1cCh2b2lkKQogewogCWJvb2wJ CWZvdW5kOwotCUhBU0hDVEwJCWluZm87CiAJRklMRQkgICAqZmlsZSA9IE5VTEw7CiAJRklMRQkg ICAqcWZpbGUgPSBOVUxMOwogCXVpbnQzMgkJaGVhZGVyOwpAQCAtNTU3LDEyICs1NTYsOSBAQCBw Z3NzX3NobWVtX3N0YXJ0dXAodm9pZCkKIAkJcGdzcy0+c3RhdHMuc3RhdHNfcmVzZXQgPSBHZXRD dXJyZW50VGltZXN0YW1wKCk7CiAJfQogCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKHBnc3NIYXNo S2V5KTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihwZ3NzRW50cnkpOwotCXBnc3NfaGFzaCA9 IFNobWVtSW5pdEhhc2goInBnX3N0YXRfc3RhdGVtZW50cyBoYXNoIiwKLQkJCQkJCQkgIHBnc3Nf bWF4LCBwZ3NzX21heCwKLQkJCQkJCQkgICZpbmZvLAotCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFT SF9CTE9CUyk7CisJcGdzc19oYXNoID0gc2htZW1faGFzaF9tYWtlKHBnc3NFbnRyeSwga2V5LAor CQkJCQkJCQkicGdfc3RhdF9zdGF0ZW1lbnRzIGhhc2giLAorCQkJCQkJCQlwZ3NzX21heCwgcGdz c19tYXgpOwogCiAJTFdMb2NrUmVsZWFzZShBZGRpblNobWVtSW5pdExvY2spOwogCmRpZmYgLS1n aXQgYS9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYyBiL2NvbnRyaWIvcGdfdHJnbS90cmdt X3JlZ2V4cC5jCmluZGV4IDE0OWY5ZWIyNTljLi5jZWQ0ZDMzM2I5YSAxMDA2NDQKLS0tIGEvY29u dHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMKKysrIGIvY29udHJpYi9wZ190cmdtL3RyZ21fcmVn ZXhwLmMKQEAgLTg5NCw3ICs4OTQsNiBAQCBjb252ZXJ0UGdXY2hhcihwZ193Y2hhciBjLCB0cmdt X21iX2NoYXIgKnJlc3VsdCkKIHN0YXRpYyB2b2lkCiB0cmFuc2Zvcm1HcmFwaChUcmdtTkZBICp0 cmdtTkZBKQogewotCUhBU0hDVEwJCWhhc2hDdGw7CiAJVHJnbVN0YXRlS2V5IGluaXRrZXk7CiAJ VHJnbVN0YXRlICAqaW5pdHN0YXRlOwogCUxpc3RDZWxsICAgKmxjOwpAQCAtOTA2LDEzICs5MDUs NyBAQCB0cmFuc2Zvcm1HcmFwaChUcmdtTkZBICp0cmdtTkZBKQogCXRyZ21ORkEtPm92ZXJmbG93 ZWQgPSBmYWxzZTsKIAogCS8qIENyZWF0ZSBoYXNodGFibGUgZm9yIHN0YXRlcyAqLwotCWhhc2hD dGwua2V5c2l6ZSA9IHNpemVvZihUcmdtU3RhdGVLZXkpOwotCWhhc2hDdGwuZW50cnlzaXplID0g c2l6ZW9mKFRyZ21TdGF0ZSk7Ci0JaGFzaEN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7 Ci0JdHJnbU5GQS0+c3RhdGVzID0gaGFzaF9jcmVhdGUoIlRyaWdyYW0gTkZBIiwKLQkJCQkJCQkJ ICAxMDI0LAotCQkJCQkJCQkgICZoYXNoQ3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hf QkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCXRyZ21ORkEtPnN0YXRlcyA9IGhhc2hfbWFrZShUcmdt U3RhdGUsIHN0YXRlS2V5LCAiVHJpZ3JhbSBORkEiLCAxMDI0KTsKIAl0cmdtTkZBLT5uc3RhdGVz ID0gMDsKIAogCS8qIENyZWF0ZSBpbml0aWFsIHN0YXRlOiBhbWJpZ3VvdXMgcHJlZml4LCBORkEn cyBpbml0aWFsIHN0YXRlICovCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25u ZWN0aW9uLmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKaW5kZXggOTUzYzJl MGFiODIuLjA0MmE3ZmIzYWMxIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25u ZWN0aW9uLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCkBAIC0yMTQs MTcgKzIxNCwxMyBAQCBHZXRDb25uZWN0aW9uKFVzZXJNYXBwaW5nICp1c2VyLCBib29sIHdpbGxf cHJlcF9zdG10LCBQZ0Zkd0Nvbm5TdGF0ZSAqKnN0YXRlKQogCS8qIEZpcnN0IHRpbWUgdGhyb3Vn aCwgaW5pdGlhbGl6ZSBjb25uZWN0aW9uIGNhY2hlIGhhc2h0YWJsZSAqLwogCWlmIChDb25uZWN0 aW9uSGFzaCA9PSBOVUxMKQogCXsKLQkJSEFTSENUTAkJY3RsOwotCiAJCWlmIChwZ2Zkd193ZV9n ZXRfcmVzdWx0ID09IDApCiAJCQlwZ2Zkd193ZV9nZXRfcmVzdWx0ID0KIAkJCQlXYWl0RXZlbnRF eHRlbnNpb25OZXcoIlBvc3RncmVzRmR3R2V0UmVzdWx0Iik7CiAKLQkJY3RsLmtleXNpemUgPSBz aXplb2YoQ29ubkNhY2hlS2V5KTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihDb25uQ2FjaGVF bnRyeSk7Ci0JCUNvbm5lY3Rpb25IYXNoID0gaGFzaF9jcmVhdGUoInBvc3RncmVzX2ZkdyBjb25u ZWN0aW9ucyIsIDgsCi0JCQkJCQkJCQkgJmN0bCwKLQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTKTsKKwkJQ29ubmVjdGlvbkhhc2ggPSBoYXNoX21ha2VfY3h0KENvbm5DYWNoZUVudHJ5 LCBrZXksCisJCQkJCQkJCQkgICAicG9zdGdyZXNfZmR3IGNvbm5lY3Rpb25zIiwgOCwKKwkJCQkJ CQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJCS8qCiAJCSAqIFJlZ2lzdGVyIHNvbWUgY2Fs bGJhY2sgZnVuY3Rpb25zIHRoYXQgbWFuYWdlIGNvbm5lY3Rpb24gY2xlYW51cC4KZGlmZiAtLWdp dCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jIGIvY29udHJpYi9wb3N0Z3Jlc19m ZHcvc2hpcHBhYmxlLmMKaW5kZXggZGEzYjEzYjIwN2QuLjY2ZDJkMGI5ZmY0IDEwMDY0NAotLS0g YS9jb250cmliL3Bvc3RncmVzX2Zkdy9zaGlwcGFibGUuYworKysgYi9jb250cmliL3Bvc3RncmVz X2Zkdy9zaGlwcGFibGUuYwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzX2Zk dy5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5o IgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUu aCIKIAogLyogSGFzaCB0YWJsZSBmb3IgY2FjaGluZyB0aGUgcmVzdWx0cyBvZiBzaGlwcGFiaWxp dHkgbG9va3VwcyAqLwpAQCAtOTAsMTMgKzkxLDEwIEBAIEludmFsaWRhdGVTaGlwcGFibGVDYWNo ZUNhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiBzdGF0 aWMgdm9pZAogSW5pdGlhbGl6ZVNoaXBwYWJsZUNhY2hlKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3Rs OwotCiAJLyogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9m KFNoaXBwYWJsZUNhY2hlS2V5KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFNoaXBwYWJsZUNh Y2hlRW50cnkpOwotCVNoaXBwYWJsZUNhY2hlSGFzaCA9Ci0JCWhhc2hfY3JlYXRlKCJTaGlwcGFi aWxpdHkgY2FjaGUiLCAyNTYsICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCVNoaXBw YWJsZUNhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQoU2hpcHBhYmxlQ2FjaGVFbnRyeSwga2V5LAor CQkJCQkJCQkJICAgIlNoaXBwYWJpbGl0eSBjYWNoZSIsIDI1NiwKKwkJCQkJCQkJCSAgIFRvcE1l bW9yeUNvbnRleHQpOwogCiAJLyogU2V0IHVwIGludmFsaWRhdGlvbiBjYWxsYmFjayBvbiBwZ19m b3JlaWduX3NlcnZlci4gKi8KIAlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhGT1JFSUdO U0VSVkVST0lELApkaWZmIC0tZ2l0IGEvY29udHJpYi90YWJsZWZ1bmMvdGFibGVmdW5jLmMgYi9j b250cmliL3RhYmxlZnVuYy90YWJsZWZ1bmMuYwppbmRleCA3NGFmZGMwOTc3Zi4uZWMwNTg2ODhh YjkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGFibGVmdW5jL3RhYmxlZnVuYy5jCisrKyBiL2NvbnRy aWIvdGFibGVmdW5jL3RhYmxlZnVuYy5jCkBAIC03MDUsMjQgKzcwNSwxNyBAQCBzdGF0aWMgSFRB QiAqCiBsb2FkX2NhdGVnb3JpZXNfaGFzaChjaGFyICpjYXRzX3NxbCwgTWVtb3J5Q29udGV4dCBw ZXJfcXVlcnlfY3R4KQogewogCUhUQUIJICAgKmNyb3NzdGFiX2hhc2g7Ci0JSEFTSENUTAkJY3Rs OwogCWludAkJCXJldDsKIAl1aW50NjQJCXByb2M7CiAJTWVtb3J5Q29udGV4dCBTUEljb250ZXh0 OwogCi0JLyogaW5pdGlhbGl6ZSB0aGUgY2F0ZWdvcnkgaGFzaCB0YWJsZSAqLwotCWN0bC5rZXlz aXplID0gTUFYX0NBVE5BTUVfTEVOOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoY3Jvc3N0YWJf SGFzaEVudCk7Ci0JY3RsLmhjeHQgPSBwZXJfcXVlcnlfY3R4OwotCiAJLyoKLQkgKiB1c2UgSU5J VF9DQVRTLCBkZWZpbmVkIGFib3ZlIGFzIGEgZ3Vlc3Mgb2YgaG93IG1hbnkgaGFzaCB0YWJsZSBl bnRyaWVzCi0JICogdG8gY3JlYXRlLCBpbml0aWFsbHkKKwkgKiBJbml0aWFsaXplIHRoZSBjYXRl Z29yeSBoYXNoIHRhYmxlLiBVc2UgSU5JVF9DQVRTLCBkZWZpbmVkIGFib3ZlIGFzIGEKKwkgKiBn dWVzcyBvZiBob3cgbWFueSBoYXNoIHRhYmxlIGVudHJpZXMgdG8gY3JlYXRlLCBpbml0aWFsbHku CiAJICovCi0JY3Jvc3N0YWJfaGFzaCA9IGhhc2hfY3JlYXRlKCJjcm9zc3RhYiBoYXNoIiwKLQkJ CQkJCQkJSU5JVF9DQVRTLAotCQkJCQkJCQkmY3RsLAotCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNI X1NUUklOR1MgfCBIQVNIX0NPTlRFWFQpOworCWNyb3NzdGFiX2hhc2ggPSBoYXNoX21ha2VfY3h0 KGNyb3NzdGFiX0hhc2hFbnQsIGludGVybmFsX2NhdG5hbWUsCisJCQkJCQkJCSAgImNyb3NzdGFi IGhhc2giLCBJTklUX0NBVFMsCisJCQkJCQkJCSAgcGVyX3F1ZXJ5X2N0eCk7CiAKIAkvKiBDb25u ZWN0IHRvIFNQSSBtYW5hZ2VyICovCiAJU1BJX2Nvbm5lY3QoKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9jb21tb24vaGVhcHR1cGxlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL2hlYXB0dXBsZS5jCmluZGV4IDc0YTUyZDg3MDY3Li4xODI4MDg5ZWNjOSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jCkBAIC0xMjUsMTggKzEyNSw5IEBAIG1pc3Npbmdf bWF0Y2goY29uc3Qgdm9pZCAqa2V5MSwgY29uc3Qgdm9pZCAqa2V5MiwgU2l6ZSBrZXlzaXplKQog c3RhdGljIHZvaWQKIGluaXRfbWlzc2luZ19jYWNoZSgpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7 Ci0KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKG1pc3NpbmdfY2FjaGVfa2V5KTsKLQloYXNo X2N0bC5lbnRyeXNpemUgPSBzaXplb2YobWlzc2luZ19jYWNoZV9rZXkpOwotCWhhc2hfY3RsLmhj eHQgPSBUb3BNZW1vcnlDb250ZXh0OwotCWhhc2hfY3RsLmhhc2ggPSBtaXNzaW5nX2hhc2g7Ci0J aGFzaF9jdGwubWF0Y2ggPSBtaXNzaW5nX21hdGNoOwogCW1pc3NpbmdfY2FjaGUgPQotCQloYXNo X2NyZWF0ZSgiTWlzc2luZyBWYWx1ZXMgQ2FjaGUiLAotCQkJCQkzMiwKLQkJCQkJJmhhc2hfY3Rs LAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0NPTlRFWFQgfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9D T01QQVJFKTsKKwkJaGFzaHNldF9tYWtlX2ZuX2N4dChtaXNzaW5nX2NhY2hlX2tleSwgIk1pc3Np bmcgVmFsdWVzIENhY2hlIiwgMzIsCisJCQkJCQkJbWlzc2luZ19oYXNoLCBtaXNzaW5nX21hdGNo LCBUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0YnVpbGQuYwppbmRleCBiZTBmZDViNzUzZC4uNjI5NTU4ZDkwNWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3RidWlsZC5jCkBAIC0xNTE1LDE1ICsxNTE1LDggQEAgdHlwZWRlZiBzdHJ1Y3QK IHN0YXRpYyB2b2lkCiBnaXN0SW5pdFBhcmVudE1hcChHSVNUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0 ZSkKIHsKLQlIQVNIQ1RMCQloYXNoQ3RsOwotCi0JaGFzaEN0bC5rZXlzaXplID0gc2l6ZW9mKEJs b2NrTnVtYmVyKTsKLQloYXNoQ3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQYXJlbnRNYXBFbnRyeSk7 Ci0JaGFzaEN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JYnVpbGRzdGF0ZS0+cGFy ZW50TWFwID0gaGFzaF9jcmVhdGUoImdpc3RidWlsZCBwYXJlbnQgbWFwIiwKLQkJCQkJCQkJCQkx MDI0LAotCQkJCQkJCQkJCSZoYXNoQ3RsLAotCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxP QlMgfCBIQVNIX0NPTlRFWFQpOworCWJ1aWxkc3RhdGUtPnBhcmVudE1hcCA9IGhhc2hfbWFrZShQ YXJlbnRNYXBFbnRyeSwgY2hpbGRibGtubywKKwkJCQkJCQkJCSAgImdpc3RidWlsZCBwYXJlbnQg bWFwIiwgMTAyNCk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0YnVpbGRidWZmZXJzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0YnVpbGRidWZmZXJzLmMKaW5kZXggMDcwNzI1NGQxOGUuLmZjMzZjOTBkMzMzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGRidWZmZXJzLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkYnVmZmVycy5jCkBAIC00NCw3ICs0NCw2IEBA IEdJU1RCdWlsZEJ1ZmZlcnMgKgogZ2lzdEluaXRCdWlsZEJ1ZmZlcnMoaW50IHBhZ2VzUGVyQnVm ZmVyLCBpbnQgbGV2ZWxTdGVwLCBpbnQgbWF4TGV2ZWwpCiB7CiAJR0lTVEJ1aWxkQnVmZmVycyAq Z2ZiYjsKLQlIQVNIQ1RMCQloYXNoQ3RsOwogCiAJZ2ZiYiA9IHBhbGxvYyhzaXplb2YoR0lTVEJ1 aWxkQnVmZmVycykpOwogCWdmYmItPnBhZ2VzUGVyQnVmZmVyID0gcGFnZXNQZXJCdWZmZXI7CkBA IC03MiwxMyArNzEsOCBAQCBnaXN0SW5pdEJ1aWxkQnVmZmVycyhpbnQgcGFnZXNQZXJCdWZmZXIs IGludCBsZXZlbFN0ZXAsIGludCBtYXhMZXZlbCkKIAkgKiBub2RlQnVmZmVyc1RhYiBoYXNoIGlz IGFzc29jaWF0aW9uIGJldHdlZW4gaW5kZXggYmxvY2tzIGFuZCBpdCdzCiAJICogYnVmZmVycy4K IAkgKi8KLQloYXNoQ3RsLmtleXNpemUgPSBzaXplb2YoQmxvY2tOdW1iZXIpOwotCWhhc2hDdGwu ZW50cnlzaXplID0gc2l6ZW9mKEdJU1ROb2RlQnVmZmVyKTsKLQloYXNoQ3RsLmhjeHQgPSBDdXJy ZW50TWVtb3J5Q29udGV4dDsKLQlnZmJiLT5ub2RlQnVmZmVyc1RhYiA9IGhhc2hfY3JlYXRlKCJn aXN0YnVpbGRidWZmZXJzIiwKLQkJCQkJCQkJCSAgIDEwMjQsCi0JCQkJCQkJCQkgICAmaGFzaEN0 bCwKLQkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOwor CWdmYmItPm5vZGVCdWZmZXJzVGFiID0gaGFzaF9tYWtlKEdJU1ROb2RlQnVmZmVyLCBub2RlQmxv Y2tudW0sCisJCQkJCQkJCQkgImdpc3RidWlsZGJ1ZmZlcnMiLCAxMDI0KTsKIAogCWdmYmItPmJ1 ZmZlckVtcHR5aW5nUXVldWUgPSBOSUw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oYXNoL2hhc2hwYWdlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFnZS5jCmlu ZGV4IGI4ZTViZDAwNWU1Li5jZjcxZmE5Y2I0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaHBhZ2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNocGFn ZS5jCkBAIC0xMzU2LDcgKzEzNTYsNiBAQCB2b2lkCiBfaGFzaF9maW5pc2hfc3BsaXQoUmVsYXRp b24gcmVsLCBCdWZmZXIgbWV0YWJ1ZiwgQnVmZmVyIG9idWYsIEJ1Y2tldCBvYnVja2V0LAogCQkJ CSAgIHVpbnQzMiBtYXhidWNrZXQsIHVpbnQzMiBoaWdobWFzaywgdWludDMyIGxvd21hc2spCiB7 Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJSFRBQgkgICAqdGlkaHRhYjsKIAlCdWZmZXIJCWJ1Y2tl dF9uYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAlCdWZmZXIJCW5idWY7CkBAIC0xMzY3LDE2ICsxMzY2 LDggQEAgX2hhc2hfZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIG1ldGFidWYsIEJ1 ZmZlciBvYnVmLCBCdWNrZXQgb2J1Y2tldCwKIAlCdWNrZXQJCW5idWNrZXQ7CiAJYm9vbAkJZm91 bmQ7CiAKLQkvKiBJbml0aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sgVElEcyAqLwot CWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoSXRlbVBvaW50ZXJEYXRhKTsKLQloYXNoX2N0bC5l bnRyeXNpemUgPSBzaXplb2YoSXRlbVBvaW50ZXJEYXRhKTsKLQloYXNoX2N0bC5oY3h0ID0gQ3Vy cmVudE1lbW9yeUNvbnRleHQ7Ci0KLQl0aWRodGFiID0KLQkJaGFzaF9jcmVhdGUoImJ1Y2tldCBj dGlkcyIsCi0JCQkJCTI1NiwJCS8qIGFyYml0cmFyeSBpbml0aWFsIHNpemUgKi8KLQkJCQkJJmhh c2hfY3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwkv KiBJbml0aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sgVElEcyAod2l0aCBhcmJpdHJh cnkgaW5pdGlhbCBzaXplKSAqLworCXRpZGh0YWIgPSBoYXNoc2V0X21ha2UoSXRlbVBvaW50ZXJE YXRhLCAiYnVja2V0IGN0aWRzIiwgMjU2KTsKIAogCWJ1Y2tldF9uYmxrbm8gPSBuYmxrbm8gPSBf aGFzaF9nZXRfbmV3YmxvY2tfZnJvbV9vbGRidWNrZXQocmVsLCBvYnVja2V0KTsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKaW5kZXggNjZhYjQ4ZjBmZTAuLmRjMmM0Njc0MmZk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKQEAgLTIzNyw3ICsyMzcsNiBA QCBiZWdpbl9oZWFwX3Jld3JpdGUoUmVsYXRpb24gb2xkX2hlYXAsIFJlbGF0aW9uIG5ld19oZWFw LCBUcmFuc2FjdGlvbklkIG9sZGVzdF94bQogCVJld3JpdGVTdGF0ZSBzdGF0ZTsKIAlNZW1vcnlD b250ZXh0IHJ3X2N4dDsKIAlNZW1vcnlDb250ZXh0IG9sZF9jeHQ7Ci0JSEFTSENUTAkJaGFzaF9j dGw7CiAKIAkvKgogCSAqIFRvIGVhc2UgY2xlYW51cCwgbWFrZSBhIHNlcGFyYXRlIGNvbnRleHQg dGhhdCB3aWxsIGNvbnRhaW4gdGhlCkBAIC0yNjIsMjQgKzI2MSwxOSBAQCBiZWdpbl9oZWFwX3Jl d3JpdGUoUmVsYXRpb24gb2xkX2hlYXAsIFJlbGF0aW9uIG5ld19oZWFwLCBUcmFuc2FjdGlvbklk IG9sZGVzdF94bQogCXN0YXRlLT5yc19jeHQgPSByd19jeHQ7CiAJc3RhdGUtPnJzX2J1bGtzdGF0 ZSA9IHNtZ3JfYnVsa19zdGFydF9yZWwobmV3X2hlYXAsIE1BSU5fRk9SS05VTSk7CiAKLQkvKiBJ bml0aWFsaXplIGhhc2ggdGFibGVzIHVzZWQgdG8gdHJhY2sgdXBkYXRlIGNoYWlucyAqLwotCWhh c2hfY3RsLmtleXNpemUgPSBzaXplb2YoVGlkSGFzaEtleSk7Ci0JaGFzaF9jdGwuZW50cnlzaXpl ID0gc2l6ZW9mKFVucmVzb2x2ZWRUdXBEYXRhKTsKLQloYXNoX2N0bC5oY3h0ID0gc3RhdGUtPnJz X2N4dDsKLQorCS8qCisJICogSW5pdGlhbGl6ZSBoYXNoIHRhYmxlcyB1c2VkIHRvIHRyYWNrIHVw ZGF0ZSBjaGFpbnMgKHdpdGggYXJiaXRyYXJ5CisJICogaW5pdGlhbCBzaXplcykKKwkgKi8KIAlz dGF0ZS0+cnNfdW5yZXNvbHZlZF90dXBzID0KLQkJaGFzaF9jcmVhdGUoIlJld3JpdGUgLyBVbnJl c29sdmVkIGN0aWRzIiwKLQkJCQkJMTI4LAkJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSAqLwot CQkJCQkmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRF WFQpOwotCi0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE9sZFRvTmV3TWFwcGluZ0RhdGEp OworCQloYXNoX21ha2VfY3h0KFVucmVzb2x2ZWRUdXBEYXRhLCBrZXksCisJCQkJCSAgIlJld3Jp dGUgLyBVbnJlc29sdmVkIGN0aWRzIiwgMTI4LAorCQkJCQkgIHN0YXRlLT5yc19jeHQpOwogCiAJ c3RhdGUtPnJzX29sZF9uZXdfdGlkX21hcCA9Ci0JCWhhc2hfY3JlYXRlKCJSZXdyaXRlIC8gT2xk IHRvIG5ldyB0aWQgbWFwIiwKLQkJCQkJMTI4LAkJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSAq LwotCQkJCQkmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NP TlRFWFQpOworCQloYXNoX21ha2VfY3h0KE9sZFRvTmV3TWFwcGluZ0RhdGEsIGtleSwKKwkJCQkJ ICAiUmV3cml0ZSAvIE9sZCB0byBuZXcgdGlkIG1hcCIsIDEyOCwKKwkJCQkJICBzdGF0ZS0+cnNf Y3h0KTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRfY3h0KTsKIApAQCAtNzU3LDcgKzc1 MSw2IEBAIHJhd19oZWFwX2luc2VydChSZXdyaXRlU3RhdGUgc3RhdGUsIEhlYXBUdXBsZSB0dXAp CiBzdGF0aWMgdm9pZAogbG9naWNhbF9iZWdpbl9oZWFwX3Jld3JpdGUoUmV3cml0ZVN0YXRlIHN0 YXRlKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwogCVRyYW5zYWN0aW9uSWQgbG9naWNhbF94bWlu OwogCiAJLyoKQEAgLTc4OCwxNSArNzgxLDExIEBAIGxvZ2ljYWxfYmVnaW5faGVhcF9yZXdyaXRl KFJld3JpdGVTdGF0ZSBzdGF0ZSkKIAlzdGF0ZS0+cnNfYmVnaW5fbHNuID0gR2V0WExvZ0luc2Vy dFJlY1B0cigpOwogCXN0YXRlLT5yc19udW1fcmV3cml0ZV9tYXBwaW5ncyA9IDA7CiAKLQloYXNo X2N0bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOwotCWhhc2hfY3RsLmVudHJ5c2l6 ZSA9IHNpemVvZihSZXdyaXRlTWFwcGluZ0ZpbGUpOwotCWhhc2hfY3RsLmhjeHQgPSBzdGF0ZS0+ cnNfY3h0OwotCiAJc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3MgPQotCQloYXNoX2NyZWF0ZSgi TG9naWNhbCByZXdyaXRlIG1hcHBpbmciLAotCQkJCQkxMjgsCQkvKiBhcmJpdHJhcnkgaW5pdGlh bCBzaXplICovCi0JCQkJCSZoYXNoX2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8 IEhBU0hfQ09OVEVYVCk7CisJCWhhc2hfbWFrZV9jeHQoUmV3cml0ZU1hcHBpbmdGaWxlLCB4aWQs CisJCQkJCSAgIkxvZ2ljYWwgcmV3cml0ZSBtYXBwaW5nIiwKKwkJCQkJICAxMjgsCQkvKiBhcmJp dHJhcnkgaW5pdGlhbCBzaXplICovCisJCQkJCSAgc3RhdGUtPnJzX2N4dCk7CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJlZmV0Y2hlci5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYwppbmRleCBlZDNhYWNh YmM5OC4uZjc5MGVlYTg3ZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2dwcmVmZXRjaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3By ZWZldGNoZXIuYwpAQCAtMzYyLDE1ICszNjIsMTMgQEAgWExvZ1ByZWZldGNoZXIgKgogWExvZ1By ZWZldGNoZXJBbGxvY2F0ZShYTG9nUmVhZGVyU3RhdGUgKnJlYWRlcikKIHsKIAlYTG9nUHJlZmV0 Y2hlciAqcHJlZmV0Y2hlcjsKLQlIQVNIQ1RMCQljdGw7CiAKIAlwcmVmZXRjaGVyID0gcGFsbG9j MChzaXplb2YoWExvZ1ByZWZldGNoZXIpKTsKIAlwcmVmZXRjaGVyLT5yZWFkZXIgPSByZWFkZXI7 CiAKLQljdGwua2V5c2l6ZSA9IHNpemVvZihSZWxGaWxlTG9jYXRvcik7Ci0JY3RsLmVudHJ5c2l6 ZSA9IHNpemVvZihYTG9nUHJlZmV0Y2hlckZpbHRlcik7Ci0JcHJlZmV0Y2hlci0+ZmlsdGVyX3Rh YmxlID0gaGFzaF9jcmVhdGUoIlhMb2dQcmVmZXRjaGVyRmlsdGVyVGFibGUiLCAxMDI0LAotCQkJ CQkJCQkJCSAgICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCXByZWZldGNoZXItPmZp bHRlcl90YWJsZSA9IGhhc2hfbWFrZV9jeHQoWExvZ1ByZWZldGNoZXJGaWx0ZXIsIHJsb2NhdG9y LAorCQkJCQkJCQkJCQkgIlhMb2dQcmVmZXRjaGVyRmlsdGVyVGFibGUiLCAxMDI0LAorCQkJCQkJ CQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiAJZGxpc3RfaW5pdCgmcHJlZmV0Y2hlci0+ZmlsdGVy X3F1ZXVlKTsKIAogCVNoYXJlZFN0YXRzLT53YWxfZGlzdGFuY2UgPSAwOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9ndXRpbHMuYwppbmRleCBjZTJhM2U0MjE0Ni4uOWUyNDc1OWY1Y2MgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCkBAIC0yNyw2ICsyNyw3IEBACiAj aW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2luY2x1 ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1 ZGUgInV0aWxzL3JlbC5oIgogCiAKQEAgLTEzMSwxNSArMTMyLDkgQEAgbG9nX2ludmFsaWRfcGFn ZShSZWxGaWxlTG9jYXRvciBsb2NhdG9yLCBGb3JrTnVtYmVyIGZvcmtubywgQmxvY2tOdW1iZXIg Ymxrbm8sCiAJaWYgKGludmFsaWRfcGFnZV90YWIgPT0gTlVMTCkKIAl7CiAJCS8qIGNyZWF0ZSBo YXNoIHRhYmxlIHdoZW4gZmlyc3QgbmVlZGVkICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwu a2V5c2l6ZSA9IHNpemVvZih4bF9pbnZhbGlkX3BhZ2Vfa2V5KTsKLQkJY3RsLmVudHJ5c2l6ZSA9 IHNpemVvZih4bF9pbnZhbGlkX3BhZ2UpOwotCi0JCWludmFsaWRfcGFnZV90YWIgPSBoYXNoX2Ny ZWF0ZSgiWExPRyBpbnZhbGlkLXBhZ2UgdGFibGUiLAotCQkJCQkJCQkJICAgMTAwLAotCQkJCQkJ CQkJICAgJmN0bCwKLQkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQlpbnZh bGlkX3BhZ2VfdGFiID0gaGFzaF9tYWtlX2N4dCh4bF9pbnZhbGlkX3BhZ2UsIGtleSwKKwkJCQkJ CQkJCQkgIlhMT0cgaW52YWxpZC1wYWdlIHRhYmxlIiwgMTAwLAorCQkJCQkJCQkJCSBUb3BNZW1v cnlDb250ZXh0KTsKIAl9CiAKIAkvKiB3ZSBjdXJyZW50bHkgYXNzdW1lIHhsX2ludmFsaWRfcGFn ZV9rZXkgY29udGFpbnMgbm8gcGFkZGluZyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19lbnVtLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2VudW0uYwppbmRleCBkYTlj MmE0NmNmYS4uNDc4N2E2MWM3ZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf ZW51bS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZW51bS5jCkBAIC0yNjcsMTUgKzI2 Nyw5IEBAIEVudW1WYWx1ZXNEZWxldGUoT2lkIGVudW1UeXBlT2lkKQogc3RhdGljIHZvaWQKIGlu aXRfdW5jb21taXR0ZWRfZW51bV90eXBlcyh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwot Ci0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9 IHNpemVvZihPaWQpOwotCWhhc2hfY3RsLmhjeHQgPSBUb3BUcmFuc2FjdGlvbkNvbnRleHQ7Ci0J dW5jb21taXR0ZWRfZW51bV90eXBlcyA9IGhhc2hfY3JlYXRlKCJVbmNvbW1pdHRlZCBlbnVtIHR5 cGVzIiwKLQkJCQkJCQkJCQkgMzIsCi0JCQkJCQkJCQkJICZoYXNoX2N0bCwKLQkJCQkJCQkJCQkg SEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJdW5jb21taXR0ZWRfZW51 bV90eXBlcyA9IGhhc2hzZXRfbWFrZV9jeHQoT2lkLAorCQkJCQkJCQkJCQkgICJVbmNvbW1pdHRl ZCBlbnVtIHR5cGVzIiwgMzIsCisJCQkJCQkJCQkJCSAgVG9wVHJhbnNhY3Rpb25Db250ZXh0KTsK IH0KIAogLyoKQEAgLTI4NCwxNSArMjc4LDkgQEAgaW5pdF91bmNvbW1pdHRlZF9lbnVtX3R5cGVz KHZvaWQpCiBzdGF0aWMgdm9pZAogaW5pdF91bmNvbW1pdHRlZF9lbnVtX3ZhbHVlcyh2b2lkKQog ewotCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihPaWQp OwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihPaWQpOwotCWhhc2hfY3RsLmhjeHQgPSBU b3BUcmFuc2FjdGlvbkNvbnRleHQ7Ci0JdW5jb21taXR0ZWRfZW51bV92YWx1ZXMgPSBoYXNoX2Ny ZWF0ZSgiVW5jb21taXR0ZWQgZW51bSB2YWx1ZXMiLAotCQkJCQkJCQkJCSAgMzIsCi0JCQkJCQkJ CQkJICAmaGFzaF9jdGwsCi0JCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFT SF9DT05URVhUKTsKKwl1bmNvbW1pdHRlZF9lbnVtX3ZhbHVlcyA9IGhhc2hzZXRfbWFrZV9jeHQo T2lkLAorCQkJCQkJCQkJCQkgICAiVW5jb21taXR0ZWQgZW51bSB2YWx1ZXMiLCAzMiwKKwkJCQkJ CQkJCQkJICAgVG9wVHJhbnNhY3Rpb25Db250ZXh0KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfaW5oZXJpdHMuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf aW5oZXJpdHMuYwppbmRleCA5MjliYjUzYjYyMC4uYzc4YWE3MjdmMGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfaW5oZXJpdHMuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX2luaGVyaXRzLmMKQEAgLTI1NiwxOSArMjU2LDEyIEBAIGZpbmRfYWxsX2luaGVyaXRvcnMo T2lkIHBhcmVudHJlbElkLCBMT0NLTU9ERSBsb2NrbW9kZSwgTGlzdCAqKm51bXBhcmVudHMpCiB7 CiAJLyogaGFzaCB0YWJsZSBmb3IgTygxKSByZWxfb2lkIC0+IHJlbF9udW1wYXJlbnRzIGNlbGwg bG9va3VwICovCiAJSFRBQgkgICAqc2Vlbl9yZWxzOwotCUhBU0hDVEwJCWN0bDsKIAlMaXN0CSAg ICpyZWxzX2xpc3QsCiAJCQkgICAqcmVsX251bXBhcmVudHM7CiAJTGlzdENlbGwgICAqbDsKIAot CWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihTZWVu UmVsc0VudHJ5KTsKLQljdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCi0Jc2Vlbl9y ZWxzID0gaGFzaF9jcmVhdGUoImZpbmRfYWxsX2luaGVyaXRvcnMgdGVtcG9yYXJ5IHRhYmxlIiwK LQkJCQkJCQkzMiwgLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAqLwotCQkJCQkJCSZjdGwsCi0J CQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJc2Vlbl9yZWxz ID0gaGFzaF9tYWtlKFNlZW5SZWxzRW50cnksIHJlbF9pZCwKKwkJCQkJCSAgImZpbmRfYWxsX2lu aGVyaXRvcnMgdGVtcG9yYXJ5IHRhYmxlIiwgMzIpOwogCiAJLyoKIAkgKiBXZSBidWlsZCBhIGxp c3Qgc3RhcnRpbmcgd2l0aCB0aGUgZ2l2ZW4gcmVsIGFuZCBhZGRpbmcgYWxsIGRpcmVjdCBhbmQK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zdG9yYWdlLmMKaW5kZXggYzU4ZTk0MThhYzMuLjFkMTNiNGExZjM5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N0b3JhZ2UuYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N0b3JhZ2UuYwpAQCAtOTAsMTUgKzkwLDkgQEAgQWRkUGVuZGluZ1N5bmMoY29uc3QgUmVs RmlsZUxvY2F0b3IgKnJsb2NhdG9yKQogCiAJLyogY3JlYXRlIHRoZSBoYXNoIGlmIG5vdCB5ZXQg Ki8KIAlpZiAoIXBlbmRpbmdTeW5jSGFzaCkKLQl7Ci0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwu a2V5c2l6ZSA9IHNpemVvZihSZWxGaWxlTG9jYXRvcik7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXpl b2YoUGVuZGluZ1JlbFN5bmMpOwotCQljdGwuaGN4dCA9IFRvcFRyYW5zYWN0aW9uQ29udGV4dDsK LQkJcGVuZGluZ1N5bmNIYXNoID0gaGFzaF9jcmVhdGUoInBlbmRpbmcgc3luYyBoYXNoIiwgMTYs ICZjdGwsCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQp OwotCX0KKwkJcGVuZGluZ1N5bmNIYXNoID0gaGFzaF9tYWtlX2N4dChQZW5kaW5nUmVsU3luYywg cmxvY2F0b3IsCisJCQkJCQkJCQkJInBlbmRpbmcgc3luYyBoYXNoIiwgMTYsCisJCQkJCQkJCQkJ VG9wVHJhbnNhY3Rpb25Db250ZXh0KTsKIAogCXBlbmRpbmcgPSBoYXNoX3NlYXJjaChwZW5kaW5n U3luY0hhc2gsIHJsb2NhdG9yLCBIQVNIX0VOVEVSLCAmZm91bmQpOwogCUFzc2VydCghZm91bmQp OwpAQCAtNjAwLDcgKzU5NCw2IEBAIHZvaWQKIFNlcmlhbGl6ZVBlbmRpbmdTeW5jcyhTaXplIG1h eFNpemUsIGNoYXIgKnN0YXJ0QWRkcmVzcykKIHsKIAlIVEFCCSAgICp0bXBoYXNoOwotCUhBU0hD VEwJCWN0bDsKIAlIQVNIX1NFUV9TVEFUVVMgc2NhbjsKIAlQZW5kaW5nUmVsU3luYyAqc3luYzsK IAlQZW5kaW5nUmVsRGVsZXRlICpkZWxldGU7CkBAIC02MTEsMTIgKzYwNCw4IEBAIFNlcmlhbGl6 ZVBlbmRpbmdTeW5jcyhTaXplIG1heFNpemUsIGNoYXIgKnN0YXJ0QWRkcmVzcykKIAkJZ290byB0 ZXJtaW5hdGU7CiAKIAkvKiBDcmVhdGUgdGVtcG9yYXJ5IGhhc2ggdG8gY29sbGVjdCBhY3RpdmUg cmVsZmlsZWxvY2F0b3JzICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoUmVsRmlsZUxvY2F0b3Ip OwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVsRmlsZUxvY2F0b3IpOwotCWN0bC5oY3h0ID0g Q3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JdG1waGFzaCA9IGhhc2hfY3JlYXRlKCJ0bXAgcmVsZmls ZWxvY2F0b3JzIiwKLQkJCQkJCSAgaGFzaF9nZXRfbnVtX2VudHJpZXMocGVuZGluZ1N5bmNIYXNo KSwgJmN0bCwKLQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7 CisJdG1waGFzaCA9IGhhc2hzZXRfbWFrZShSZWxGaWxlTG9jYXRvciwgInRtcCByZWxmaWxlbG9j YXRvcnMiLAorCQkJCQkJICAgaGFzaF9nZXRfbnVtX2VudHJpZXMocGVuZGluZ1N5bmNIYXNoKSk7 CiAKIAkvKiBjb2xsZWN0IGFsbCBybG9jYXRvciBmcm9tIHBlbmRpbmcgc3luY3MgKi8KIAloYXNo X3NlcV9pbml0KCZzY2FuLCBwZW5kaW5nU3luY0hhc2gpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvYXN5bmMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKaW5kZXgg ZWI4NjQwMmNhZTQuLjlhN2M4ZDFmYjk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9hc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKQEAgLTI0MTQsMjAg KzI0MTQsMTQgQEAgQWRkRXZlbnRUb1BlbmRpbmdOb3RpZmllcyhOb3RpZmljYXRpb24gKm4pCiAJ aWYgKGxpc3RfbGVuZ3RoKHBlbmRpbmdOb3RpZmllcy0+ZXZlbnRzKSA+PSBNSU5fSEFTSEFCTEVf Tk9USUZJRVMgJiYKIAkJcGVuZGluZ05vdGlmaWVzLT5oYXNodGFiID09IE5VTEwpCiAJewotCQlI QVNIQ1RMCQloYXNoX2N0bDsKIAkJTGlzdENlbGwgICAqbDsKIAogCQkvKiBDcmVhdGUgdGhlIGhh c2ggdGFibGUgKi8KLQkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihOb3RpZmljYXRpb24gKik7 Ci0JCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihzdHJ1Y3QgTm90aWZpY2F0aW9uSGFzaCk7 Ci0JCWhhc2hfY3RsLmhhc2ggPSBub3RpZmljYXRpb25faGFzaDsKLQkJaGFzaF9jdGwubWF0Y2gg PSBub3RpZmljYXRpb25fbWF0Y2g7Ci0JCWhhc2hfY3RsLmhjeHQgPSBDdXJUcmFuc2FjdGlvbkNv bnRleHQ7CiAJCXBlbmRpbmdOb3RpZmllcy0+aGFzaHRhYiA9Ci0JCQloYXNoX2NyZWF0ZSgiUGVu ZGluZyBOb3RpZmllcyIsCi0JCQkJCQkyNTZMLAotCQkJCQkJJmhhc2hfY3RsLAotCQkJCQkJSEFT SF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfQ09NUEFSRSB8IEhBU0hfQ09OVEVYVCk7CisJ CQloYXNoX21ha2VfZm5fY3h0KHN0cnVjdCBOb3RpZmljYXRpb25IYXNoLCBldmVudCwKKwkJCQkJ CQkgIlBlbmRpbmcgTm90aWZpZXMiLCAyNTYsCisJCQkJCQkJIG5vdGlmaWNhdGlvbl9oYXNoLCBu b3RpZmljYXRpb25fbWF0Y2gsCisJCQkJCQkJIEN1clRyYW5zYWN0aW9uQ29udGV4dCk7CiAKIAkJ LyogSW5zZXJ0IGFsbCB0aGUgYWxyZWFkeS1leGlzdGluZyBldmVudHMgKi8KIAkJZm9yZWFjaChs LCBwZW5kaW5nTm90aWZpZXMtPmV2ZW50cykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCAzNGI2 NDEwZDZhMi4uMDAwMmM2ZGM5OTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3By ZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTM3MSwxNSAr MzcxLDkgQEAgRXZhbHVhdGVQYXJhbXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQcmVwYXJlZFN0YXRl bWVudCAqcHN0bXQsIExpc3QgKnBhcmFtcywKIHN0YXRpYyB2b2lkCiBJbml0UXVlcnlIYXNoVGFi bGUodm9pZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKLQotCWhhc2hfY3RsLmtleXNpemUgPSBO QU1FREFUQUxFTjsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUHJlcGFyZWRTdGF0ZW1l bnQpOwotCi0JcHJlcGFyZWRfcXVlcmllcyA9IGhhc2hfY3JlYXRlKCJQcmVwYXJlZCBRdWVyaWVz IiwKLQkJCQkJCQkJICAgMzIsCi0JCQkJCQkJCSAgICZoYXNoX2N0bCwKLQkJCQkJCQkJICAgSEFT SF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwlwcmVwYXJlZF9xdWVyaWVzID0gaGFzaF9tYWtlX2N4 dChQcmVwYXJlZFN0YXRlbWVudCwgc3RtdF9uYW1lLAorCQkJCQkJCQkJICJQcmVwYXJlZCBRdWVy aWVzIiwgMzIsCisJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc2VxdWVuY2UuYwppbmRleCA1MTU2Nzk5NDEyNi4uNWZiYjNjZTkwMzAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc2VxdWVuY2UuYwpAQCAtMTExMywxMyArMTExMyw5IEBAIGxvY2tfYW5kX29wZW5fc2VxdWVu Y2UoU2VxVGFibGUgc2VxKQogc3RhdGljIHZvaWQKIGNyZWF0ZV9zZXFfaGFzaHRhYmxlKHZvaWQp CiB7Ci0JSEFTSENUTAkJY3RsOwotCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwu ZW50cnlzaXplID0gc2l6ZW9mKFNlcVRhYmxlRGF0YSk7Ci0KLQlzZXFoYXNodGFiID0gaGFzaF9j cmVhdGUoIlNlcXVlbmNlIHZhbHVlcyIsIDE2LCAmY3RsLAotCQkJCQkJCSBIQVNIX0VMRU0gfCBI QVNIX0JMT0JTKTsKKwlzZXFoYXNodGFiID0gaGFzaF9tYWtlX2N4dChTZXFUYWJsZURhdGEsIHJl bGlkLAorCQkJCQkJCSAgICJTZXF1ZW5jZSB2YWx1ZXMiLCAxNiwKKwkJCQkJCQkgICBUb3BNZW1v cnlDb250ZXh0KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMDdlNWI5 NTc4MmUuLjdmMGZiMjYzNzcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMjE1NCwx OSArMjE1NCw5IEBAIEV4ZWN1dGVUcnVuY2F0ZUd1dHMoTGlzdCAqZXhwbGljaXRfcmVscywKIAog CQkJLyogRmlyc3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXplIGhhc2h0YWJsZSBmb3IgZm9yZWln biB0YWJsZXMgKi8KIAkJCWlmICghZnRfaHRhYikKLQkJCXsKLQkJCQlIQVNIQ1RMCQloY3RsOwot Ci0JCQkJbWVtc2V0KCZoY3RsLCAwLCBzaXplb2YoSEFTSENUTCkpOwotCQkJCWhjdGwua2V5c2l6 ZSA9IHNpemVvZihPaWQpOwotCQkJCWhjdGwuZW50cnlzaXplID0gc2l6ZW9mKEZvcmVpZ25UcnVu Y2F0ZUluZm8pOwotCQkJCWhjdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCi0JCQkJ ZnRfaHRhYiA9IGhhc2hfY3JlYXRlKCJUUlVOQ0FURSBmb3IgRm9yZWlnbiBUYWJsZXMiLAotCQkJ CQkJCQkJICAzMiwJLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAqLwotCQkJCQkJCQkJICAmaGN0 bCwKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7Ci0J CQl9CisJCQkJZnRfaHRhYiA9IGhhc2hfbWFrZShGb3JlaWduVHJ1bmNhdGVJbmZvLCBzZXJ2ZXJp ZCwKKwkJCQkJCQkJCSJUUlVOQ0FURSBmb3IgRm9yZWlnbiBUYWJsZXMiLAorCQkJCQkJCQkJMzIp OwkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCiAKIAkJCS8qIEZpbmQgb3IgY3JlYXRlIGNh Y2hlZCBlbnRyeSBmb3IgdGhlIGZvcmVpZ24gdGFibGUgKi8KIAkJCWZ0X2luZm8gPSBoYXNoX3Nl YXJjaChmdF9odGFiLCAmc2VydmVyaWQsIEhBU0hfRU5URVIsICZmb3VuZCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IGU0NGYxMjIzODg2Li41Mzc5MDFhZDVhMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTUxMzQsMTUgKzUxMzQs OSBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKICNlbmRpZgogCWlmIChucmVscyA+PSBNVF9OUkVMU19IQVNIKQogCXsK LQkJSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihPaWQp OwotCQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoTVRUYXJnZXRSZWxMb29rdXApOwotCQlo YXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7CiAJCW10c3RhdGUtPm10X3Jlc3Vs dE9pZEhhc2ggPQotCQkJaGFzaF9jcmVhdGUoIk1vZGlmeVRhYmxlIHRhcmdldCBoYXNoIiwKLQkJ CQkJCW5yZWxzLCAmaGFzaF9jdGwsCi0JCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFT SF9DT05URVhUKTsKKwkJCWhhc2hfbWFrZShNVFRhcmdldFJlbExvb2t1cCwgcmVsYXRpb25PaWQs CisJCQkJCSAgIk1vZGlmeVRhYmxlIHRhcmdldCBoYXNoIiwgbnJlbHMpOwogCQlmb3IgKGkgPSAw OyBpIDwgbnJlbHM7IGkrKykKIAkJewogCQkJT2lkCQkJaGFzaGtleTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL25vZGVzL2V4dGVuc2libGUuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2V4dGVuc2li bGUuYwppbmRleCAzZWRlMWVlMGY1ZC4uMWMwZTJiMjBjZDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL25vZGVzL2V4dGVuc2libGUuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9leHRlbnNpYmxl LmMKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgIm5vZGVzL2V4dGVuc2libGUuaCIKICNp bmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIAog c3RhdGljIEhUQUIgKmV4dGVuc2libGVfbm9kZV9tZXRob2RzID0gTlVMTDsKIHN0YXRpYyBIVEFC ICpjdXN0b21fc2Nhbl9tZXRob2RzID0gTlVMTDsKQEAgLTQ1LDEzICs0Niw4IEBAIFJlZ2lzdGVy RXh0ZW5zaWJsZU5vZGVFbnRyeShIVEFCICoqcF9odGFibGUsIGNvbnN0IGNoYXIgKmh0YWJsZV9s YWJlbCwKIAogCWlmICgqcF9odGFibGUgPT0gTlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWN0bDsKLQot CQljdGwua2V5c2l6ZSA9IEVYVE5PREVOQU1FX01BWF9MRU47Ci0JCWN0bC5lbnRyeXNpemUgPSBz aXplb2YoRXh0ZW5zaWJsZU5vZGVFbnRyeSk7Ci0KLQkJKnBfaHRhYmxlID0gaGFzaF9jcmVhdGUo aHRhYmxlX2xhYmVsLCAxMDAsICZjdGwsCi0JCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfU1RSSU5H Uyk7CisJCSpwX2h0YWJsZSA9IGhhc2hfbWFrZV9jeHQoRXh0ZW5zaWJsZU5vZGVFbnRyeSwgZXh0 bm9kZW5hbWUsCisJCQkJCQkJCSAgaHRhYmxlX2xhYmVsLCAxMDAsIFRvcE1lbW9yeUNvbnRleHQp OwogCX0KIAogCWlmIChzdHJsZW4oZXh0bm9kZW5hbWUpID49IEVYVE5PREVOQU1FX01BWF9MRU4p CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKaW5kZXggMDdmOTJmYWMyMzkuLjMyNDM1 OTMzYTkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC02OTQsMTkgKzY5 NCwxMCBAQCBnZXRfcmVsYXRpb25fbm90bnVsbGF0dHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbGF0 aW9uIHJlbGF0aW9uKQogCS8qIGNyZWF0ZSB0aGUgaGFzaCB0YWJsZSBpZiBpdCBoYXNuJ3QgYmVl biBjcmVhdGVkIHlldCAqLwogCWlmIChyb290LT5nbG9iLT5yZWxfbm90bnVsbGF0dHNfaGFzaCA9 PSBOVUxMKQogCXsKLQkJSFRBQgkgICAqaGFzaHRhYjsKLQkJSEFTSENUTAkJaGFzaF9jdGw7Ci0K LQkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQloYXNoX2N0bC5lbnRyeXNpemUg PSBzaXplb2YoTm90bnVsbEhhc2hFbnRyeSk7Ci0JCWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVt b3J5Q29udGV4dDsKLQotCQloYXNodGFiID0gaGFzaF9jcmVhdGUoIlJlbGF0aW9uIE5PVCBOVUxM IGF0dG51bXMiLAotCQkJCQkJCSAgNjRMLAkvKiBhcmJpdHJhcnkgaW5pdGlhbCBzaXplICovCi0J CQkJCQkJICAmaGFzaF9jdGwsCi0JCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFT SF9DT05URVhUKTsKLQotCQlyb290LT5nbG9iLT5yZWxfbm90bnVsbGF0dHNfaGFzaCA9IGhhc2h0 YWI7CisJCXJvb3QtPmdsb2ItPnJlbF9ub3RudWxsYXR0c19oYXNoID0KKwkJCWhhc2hfbWFrZShO b3RudWxsSGFzaEVudHJ5LCByZWxpZCwKKwkJCQkJICAiUmVsYXRpb24gTk9UIE5VTEwgYXR0bnVt cyIsCisJCQkJCSAgNjRMKTsJCS8qIGFyYml0cmFyeSBpbml0aWFsIHNpemUgKi8KIAl9CiAKIAkv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMKaW5kZXggYWMyODU3M2NkMGEuLjQz MjkxZjEyOGZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVz dC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMKQEAgLTIxMTcs MTIgKzIxMTcsOSBAQCBsb29rdXBfcHJvb2ZfY2FjaGUoT2lkIHByZWRfb3AsIE9pZCBjbGF1c2Vf b3AsIGJvb2wgcmVmdXRlX2l0KQogCWlmIChPcHJQcm9vZkNhY2hlSGFzaCA9PSBOVUxMKQogCXsK IAkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlICovCi0J CUhBU0hDVEwJCWN0bDsKLQotCQljdGwua2V5c2l6ZSA9IHNpemVvZihPcHJQcm9vZkNhY2hlS2V5 KTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihPcHJQcm9vZkNhY2hlRW50cnkpOwotCQlPcHJQ cm9vZkNhY2hlSGFzaCA9IGhhc2hfY3JlYXRlKCJCdHJlZSBwcm9vZiBsb29rdXAgY2FjaGUiLCAy NTYsCi0JCQkJCQkJCQkJJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCU9wclByb29m Q2FjaGVIYXNoID0gaGFzaF9tYWtlX2N4dChPcHJQcm9vZkNhY2hlRW50cnksIGtleSwKKwkJCQkJ CQkJCQkgICJCdHJlZSBwcm9vZiBsb29rdXAgY2FjaGUiLCAyNTYsCisJCQkJCQkJCQkJICBUb3BN ZW1vcnlDb250ZXh0KTsKIAogCQkvKiBBcnJhbmdlIHRvIGZsdXNoIGNhY2hlIG9uIHBnX2Ftb3Ag Y2hhbmdlcyAqLwogCQlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhBTU9QT1BJRCwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwppbmRleCAxMTU4YmMxOTRjMy4uM2VkNjFmZWZi MGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKQEAgLTYwMSwxOSArNjAxLDEy IEBAIHN0YXRpYyB2b2lkCiBidWlsZF9qb2luX3JlbF9oYXNoKFBsYW5uZXJJbmZvICpyb290KQog ewogCUhUQUIJICAgKmhhc2h0YWI7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJTGlzdENlbGwgICAq bDsKIAogCS8qIENyZWF0ZSB0aGUgaGFzaCB0YWJsZSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBz aXplb2YoUmVsaWRzKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoSm9pbkhhc2hFbnRy eSk7Ci0JaGFzaF9jdGwuaGFzaCA9IGJpdG1hcF9oYXNoOwotCWhhc2hfY3RsLm1hdGNoID0gYml0 bWFwX21hdGNoOwotCWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQloYXNo dGFiID0gaGFzaF9jcmVhdGUoIkpvaW5SZWxIYXNoVGFibGUiLAotCQkJCQkJICAyNTZMLAotCQkJ CQkJICAmaGFzaF9jdGwsCi0JCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNI X0NPTVBBUkUgfCBIQVNIX0NPTlRFWFQpOworCWhhc2h0YWIgPSBoYXNoX21ha2VfZm4oSm9pbkhh c2hFbnRyeSwgam9pbl9yZWxpZHMsCisJCQkJCQkgICAiSm9pblJlbEhhc2hUYWJsZSIsIDI1NiwK KwkJCQkJCSAgIGJpdG1hcF9oYXNoLCBiaXRtYXBfbWF0Y2gpOwogCiAJLyogSW5zZXJ0IGFsbCB0 aGUgYWxyZWFkeS1leGlzdGluZyBqb2lucmVscyAqLwogCWZvcmVhY2gobCwgcm9vdC0+am9pbl9y ZWxfbGlzdCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCmluZGV4IDdiZDdhMzM2ZmQ2Li5mOTU4ODg2 NWNmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYworKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgogI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVk ZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCkBAIC0x MDI4LDEyICsxMDI5LDkgQEAgZmluZF9vcGVyX2NhY2hlX2VudHJ5KE9wckNhY2hlS2V5ICprZXkp CiAJaWYgKE9wckNhY2hlSGFzaCA9PSBOVUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdo OiBpbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwu a2V5c2l6ZSA9IHNpemVvZihPcHJDYWNoZUtleSk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2Yo T3ByQ2FjaGVFbnRyeSk7Ci0JCU9wckNhY2hlSGFzaCA9IGhhc2hfY3JlYXRlKCJPcGVyYXRvciBs b29rdXAgY2FjaGUiLCAyNTYsCi0JCQkJCQkJCSAgICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMpOworCQlPcHJDYWNoZUhhc2ggPSBoYXNoX21ha2VfY3h0KE9wckNhY2hlRW50cnksIGtleSwK KwkJCQkJCQkJCSAiT3BlcmF0b3IgbG9va3VwIGNhY2hlIiwgMjU2LAorCQkJCQkJCQkJIFRvcE1l bW9yeUNvbnRleHQpOwogCiAJCS8qIEFycmFuZ2UgdG8gZmx1c2ggY2FjaGUgb24gcGdfb3BlcmF0 b3IgYW5kIHBnX2Nhc3QgY2hhbmdlcyAqLwogCQlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFj ayhPUEVSTkFNRU5TUCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0 ZGVzYy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmMKaW5kZXggMzI4YjRk NDUwZTQuLmIzZmJkNzgxNDk0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcv cGFydGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYwpAQCAt NDI0LDE3ICs0MjQsMTIgQEAgQ3JlYXRlUGFydGl0aW9uRGlyZWN0b3J5KE1lbW9yeUNvbnRleHQg bWN4dCwgYm9vbCBvbWl0X2RldGFjaGVkKQogewogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhtY3h0KTsKIAlQYXJ0aXRpb25EaXJlY3RvcnkgcGRpcjsK LQlIQVNIQ1RMCQljdGw7CiAKIAlwZGlyID0gcGFsbG9jKHNpemVvZihQYXJ0aXRpb25EaXJlY3Rv cnlEYXRhKSk7CiAJcGRpci0+cGRpcl9tY3h0ID0gbWN4dDsKIAotCWN0bC5rZXlzaXplID0gc2l6 ZW9mKE9pZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQYXJ0aXRpb25EaXJlY3RvcnlFbnRy eSk7Ci0JY3RsLmhjeHQgPSBtY3h0OwotCi0JcGRpci0+cGRpcl9oYXNoID0gaGFzaF9jcmVhdGUo InBhcnRpdGlvbiBkaXJlY3RvcnkiLCAyNTYsICZjdGwsCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwg SEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJcGRpci0+cGRpcl9oYXNoID0gaGFzaF9tYWtl X2N4dChQYXJ0aXRpb25EaXJlY3RvcnlFbnRyeSwgcmVsb2lkLAorCQkJCQkJCQkJInBhcnRpdGlv biBkaXJlY3RvcnkiLCAyNTYsIG1jeHQpOwogCXBkaXItPm9taXRfZGV0YWNoZWQgPSBvbWl0X2Rl dGFjaGVkOwogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCAxYzM4NDg4ZjJjYi4uZjFiNmIxYTI0YTkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCkBAIC05MDcsNyArOTA3LDYgQEAgcmVidWlsZF9k YXRhYmFzZV9saXN0KE9pZCBuZXdkYikKIAlNZW1vcnlDb250ZXh0IG5ld2N4dDsKIAlNZW1vcnlD b250ZXh0IG9sZGN4dDsKIAlNZW1vcnlDb250ZXh0IHRtcGN4dDsKLQlIQVNIQ1RMCQloY3RsOwog CWludAkJCXNjb3JlOwogCWludAkJCW5lbGVtczsKIAlIVEFCCSAgICpkYmhhc2g7CkBAIC05Mzcs MTIgKzkzNiwxMCBAQCByZWJ1aWxkX2RhdGFiYXNlX2xpc3QoT2lkIG5ld2RiKQogCSAqIHNjb3Jl LCBhbmQgZmluYWxseSBwdXQgdGhlIGFycmF5IGVsZW1lbnRzIGludG8gdGhlIG5ldyBkb3VibHkg bGlua2VkCiAJICogbGlzdC4KIAkgKi8KLQloY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQlo Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihhdmxfZGJhc2UpOwotCWhjdGwuaGN4dCA9IHRtcGN4dDsK LQlkYmhhc2ggPSBoYXNoX2NyZWF0ZSgiYXV0b3ZhY3V1bSBkYiBoYXNoIiwgMjAsICZoY3RsLAkv KiBtYWdpYyBudW1iZXIgaGVyZQotCQkJCQkJCQkJCQkJCQkJICogRklYTUUgKi8KLQkJCQkJCSBI QVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwlkYmhhc2ggPSBoYXNoX21h a2VfY3h0KGF2bF9kYmFzZSwgYWRsX2RhdGlkLAorCQkJCQkJICAgImF1dG92YWN1dW0gZGIgaGFz aCIsCisJCQkJCQkgICAyMCwJLyogbWFnaWMgbnVtYmVyIGhlcmUgRklYTUUgKi8KKwkJCQkJCSAg IHRtcGN4dCk7CiAKIAkvKiBzdGFydCBieSBpbnNlcnRpbmcgdGhlIG5ldyBkYXRhYmFzZSAqLwog CXNjb3JlID0gMDsKQEAgLTE5MDQsNyArMTkwMSw2IEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAlG b3JtX3BnX2RhdGFiYXNlIGRiRm9ybTsKIAlMaXN0CSAgICp0YWJsZV9vaWRzID0gTklMOwogCUxp c3QJICAgKm9ycGhhbl9vaWRzID0gTklMOwotCUhBU0hDVEwJCWN0bDsKIAlIVEFCCSAgICp0YWJs ZV90b2FzdF9tYXA7CiAJTGlzdENlbGwgICAqdm9sYXRpbGUgY2VsbDsKIAlCdWZmZXJBY2Nlc3NT dHJhdGVneSBic3RyYXRlZ3k7CkBAIC0xOTc3LDEzICsxOTczLDkgQEAgZG9fYXV0b3ZhY3V1bSh2 b2lkKQogCXBnX2NsYXNzX2Rlc2MgPSBDcmVhdGVUdXBsZURlc2NDb3B5KFJlbGF0aW9uR2V0RGVz Y3IoY2xhc3NSZWwpKTsKIAogCS8qIGNyZWF0ZSBoYXNoIHRhYmxlIGZvciB0b2FzdCA8LT4gbWFp biByZWxpZCBtYXBwaW5nICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50 cnlzaXplID0gc2l6ZW9mKGF2X3JlbGF0aW9uKTsKLQotCXRhYmxlX3RvYXN0X21hcCA9IGhhc2hf Y3JlYXRlKCJUT0FTVCB0byBtYWluIHJlbGlkIG1hcCIsCi0JCQkJCQkJCSAgMTAwLAotCQkJCQkJ CQkgICZjdGwsCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJdGFibGVfdG9h c3RfbWFwID0gaGFzaF9tYWtlX2N4dChhdl9yZWxhdGlvbiwgYXJfdG9hc3RyZWxpZCwKKwkJCQkJ CQkJCSJUT0FTVCB0byBtYWluIHJlbGlkIG1hcCIsIDEwMCwKKwkJCQkJCQkJCVRvcE1lbW9yeUNv bnRleHQpOwogCiAJLyoKIAkgKiBTY2FuIHBnX2NsYXNzIHRvIGRldGVybWluZSB3aGljaCB0YWJs ZXMgdG8gdmFjdXVtLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3Bv aW50ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKaW5kZXggZTg0 ZTg2NjNlOTYuLjgzYmFlMmI3NWI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2NoZWNrcG9pbnRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVy LmMKQEAgLTEzMDEsNyArMTMwMSw2IEBAIENvbXBhY3RDaGVja3BvaW50ZXJSZXF1ZXN0UXVldWUo dm9pZCkKIAlpbnQJCQludW1fcmVxdWVzdHM7CiAJaW50CQkJcmVhZF9pZHgsCiAJCQkJd3JpdGVf aWR4OwotCUhBU0hDVEwJCWN0bDsKIAlIVEFCCSAgICpodGFiOwogCWJvb2wJICAgKnNraXBfc2xv dDsKIApAQCAtMTMyMSwxNCArMTMyMCw5IEBAIENvbXBhY3RDaGVja3BvaW50ZXJSZXF1ZXN0UXVl dWUodm9pZCkKIAloZWFkID0gQ2hlY2twb2ludGVyU2htZW0tPmhlYWQ7CiAKIAkvKiBJbml0aWFs aXplIHRlbXBvcmFyeSBoYXNoIHRhYmxlICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoQ2hlY2tw b2ludGVyUmVxdWVzdCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihzdHJ1Y3QgQ2hlY2twb2lu dGVyU2xvdE1hcHBpbmcpOwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQlo dGFiID0gaGFzaF9jcmVhdGUoIkNvbXBhY3RDaGVja3BvaW50ZXJSZXF1ZXN0UXVldWUiLAotCQkJ CQkgICBDaGVja3BvaW50ZXJTaG1lbS0+bnVtX3JlcXVlc3RzLAotCQkJCQkgICAmY3RsLAotCQkJ CQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwlodGFiID0gaGFz aF9tYWtlKHN0cnVjdCBDaGVja3BvaW50ZXJTbG90TWFwcGluZywgcmVxdWVzdCwKKwkJCQkJICJD b21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1ZXVlIiwKKwkJCQkJIENoZWNrcG9pbnRlclNobWVt LT5udW1fcmVxdWVzdHMpOwogCiAJLyoKIAkgKiBUaGUgYmFzaWMgaWRlYSBoZXJlIGlzIHRoYXQg YSByZXF1ZXN0IGNhbiBiZSBza2lwcGVkIGlmIGl0J3MgZm9sbG93ZWQKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXgg YmFhNjhjMWFiNmMuLmYzMmZmMjJhOThhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtNDg0LDE2ICs0ODQsOSBA QCBwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpCiAJLyogRmlyc3QgdGltZSB0 aHJvdWdoLCBpbml0aWFsaXplIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzdGF0ZSBoYXNodGFibGUu ICovCiAJaWYgKCFQYXJhbGxlbEFwcGx5VHhuSGFzaCkKIAl7Ci0JCUhBU0hDVEwJCWN0bDsKLQot CQlNZW1TZXQoJmN0bCwgMCwgc2l6ZW9mKGN0bCkpOwotCQljdGwua2V5c2l6ZSA9IHNpemVvZihU cmFuc2FjdGlvbklkKTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQYXJhbGxlbEFwcGx5V29y a2VyRW50cnkpOwotCQljdGwuaGN4dCA9IEFwcGx5Q29udGV4dDsKLQotCQlQYXJhbGxlbEFwcGx5 VHhuSGFzaCA9IGhhc2hfY3JlYXRlKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcnMgaGFzaCIsCi0JCQkJCQkJCQkJICAgMTYsICZjdGwsCi0JCQkJCQkJCQkJICAgSEFT SF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJCVBhcmFsbGVsQXBwbHlUeG5I YXNoID0gaGFzaF9tYWtlX2N4dChQYXJhbGxlbEFwcGx5V29ya2VyRW50cnksIHhpZCwKKwkJCQkJ CQkJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgaGFzaCIs CisJCQkJCQkJCQkJCSAxNiwgQXBwbHlDb250ZXh0KTsKIAl9CiAKIAkvKiBDcmVhdGUgYW4gZW50 cnkgZm9yIHRoZSByZXF1ZXN0ZWQgdHJhbnNhY3Rpb24uICovCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKaW5kZXggMTBiM2QwZDliODIuLmM0YWY4NWQ3NGYxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCkBAIC0xMDQsOCAr MTA0LDYgQEAgbG9naWNhbHJlcF9yZWxtYXBfaW52YWxpZGF0ZV9jYihEYXR1bSBhcmcsIE9pZCBy ZWxvaWQpCiBzdGF0aWMgdm9pZAogbG9naWNhbHJlcF9yZWxtYXBfaW5pdCh2b2lkKQogewotCUhB U0hDVEwJCWN0bDsKLQogCWlmICghTG9naWNhbFJlcFJlbE1hcENvbnRleHQpCiAJCUxvZ2ljYWxS ZXBSZWxNYXBDb250ZXh0ID0KIAkJCUFsbG9jU2V0Q29udGV4dENyZWF0ZShDYWNoZU1lbW9yeUNv bnRleHQsCkBAIC0xMTMsMTIgKzExMSw5IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2luaXQodm9pZCkK IAkJCQkJCQkJICBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAogCS8qIEluaXRpYWxpemUgdGhl IHJlbGF0aW9uIGhhc2ggdGFibGUuICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoTG9naWNhbFJl cFJlbElkKTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSk7 Ci0JY3RsLmhjeHQgPSBMb2dpY2FsUmVwUmVsTWFwQ29udGV4dDsKLQotCUxvZ2ljYWxSZXBSZWxN YXAgPSBoYXNoX2NyZWF0ZSgibG9naWNhbHJlcCByZWxhdGlvbiBtYXAgY2FjaGUiLCAxMjgsICZj dGwsCi0JCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOwor CUxvZ2ljYWxSZXBSZWxNYXAgPSBoYXNoX21ha2VfY3h0KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSwg cmVtb3RlcmVsLnJlbW90ZWlkLAorCQkJCQkJCQkJICJsb2dpY2FscmVwIHJlbGF0aW9uIG1hcCBj YWNoZSIsIDEyOCwKKwkJCQkJCQkJCSBMb2dpY2FsUmVwUmVsTWFwQ29udGV4dCk7CiAKIAkvKiBX YXRjaCBmb3IgaW52YWxpZGF0aW9uIGV2ZW50cy4gKi8KIAlDYWNoZVJlZ2lzdGVyUmVsY2FjaGVD YWxsYmFjayhsb2dpY2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiLApAQCAtNjEwLDggKzYwNSw2 IEBAIGxvZ2ljYWxyZXBfcGFydG1hcF9yZXNldF9yZWxtYXAoTG9naWNhbFJlcFJlbGF0aW9uICpy ZW1vdGVyZWwpCiBzdGF0aWMgdm9pZAogbG9naWNhbHJlcF9wYXJ0bWFwX2luaXQodm9pZCkKIHsK LQlIQVNIQ1RMCQljdGw7Ci0KIAlpZiAoIUxvZ2ljYWxSZXBQYXJ0TWFwQ29udGV4dCkKIAkJTG9n aWNhbFJlcFBhcnRNYXBDb250ZXh0ID0KIAkJCUFsbG9jU2V0Q29udGV4dENyZWF0ZShDYWNoZU1l bW9yeUNvbnRleHQsCkBAIC02MTksMTIgKzYxMiw5IEBAIGxvZ2ljYWxyZXBfcGFydG1hcF9pbml0 KHZvaWQpCiAJCQkJCQkJCSAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CiAKIAkvKiBJbml0aWFs aXplIHRoZSByZWxhdGlvbiBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9p ZCk7CS8qIHBhcnRpdGlvbiBPSUQgKi8KLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKExvZ2ljYWxS ZXBQYXJ0TWFwRW50cnkpOwotCWN0bC5oY3h0ID0gTG9naWNhbFJlcFBhcnRNYXBDb250ZXh0Owot Ci0JTG9naWNhbFJlcFBhcnRNYXAgPSBoYXNoX2NyZWF0ZSgibG9naWNhbHJlcCBwYXJ0aXRpb24g bWFwIGNhY2hlIiwgNjQsICZjdGwsCi0JCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwg SEFTSF9DT05URVhUKTsKKwlMb2dpY2FsUmVwUGFydE1hcCA9IGhhc2hfbWFrZV9jeHQoTG9naWNh bFJlcFBhcnRNYXBFbnRyeSwgcGFydG9pZCwKKwkJCQkJCQkJCSAgImxvZ2ljYWxyZXAgcGFydGl0 aW9uIG1hcCBjYWNoZSIsIDY0LAorCQkJCQkJCQkJICBMb2dpY2FsUmVwUGFydE1hcENvbnRleHQp OwogCiAJLyogV2F0Y2ggZm9yIGludmFsaWRhdGlvbiBldmVudHMuICovCiAJQ2FjaGVSZWdpc3Rl clJlbGNhY2hlQ2FsbGJhY2sobG9naWNhbHJlcF9wYXJ0bWFwX2ludmFsaWRhdGVfY2IsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCmluZGV4IGVi NmE4NDU1NGI3Li5lMDk1MTZkM2Q4YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKQEAgLTMyNCw3ICszMjQsNiBAQCBSZW9yZGVyQnVmZmVy ICoKIFJlb3JkZXJCdWZmZXJBbGxvY2F0ZSh2b2lkKQogewogCVJlb3JkZXJCdWZmZXIgKmJ1ZmZl cjsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAlNZW1vcnlDb250ZXh0IG5ld19jdHg7CiAKIAlBc3Nl cnQoTXlSZXBsaWNhdGlvblNsb3QgIT0gTlVMTCk7CkBAIC0zMzcsOCArMzM2LDYgQEAgUmVvcmRl ckJ1ZmZlckFsbG9jYXRlKHZvaWQpCiAJYnVmZmVyID0KIAkJKFJlb3JkZXJCdWZmZXIgKikgTWVt b3J5Q29udGV4dEFsbG9jKG5ld19jdHgsIHNpemVvZihSZW9yZGVyQnVmZmVyKSk7CiAKLQltZW1z ZXQoJmhhc2hfY3RsLCAwLCBzaXplb2YoaGFzaF9jdGwpKTsKLQogCWJ1ZmZlci0+Y29udGV4dCA9 IG5ld19jdHg7CiAKIAlidWZmZXItPmNoYW5nZV9jb250ZXh0ID0gU2xhYkNvbnRleHRDcmVhdGUo bmV3X2N0eCwKQEAgLTM2NywxMiArMzY0LDggQEAgUmVvcmRlckJ1ZmZlckFsbG9jYXRlKHZvaWQp CiAJCQkJCQkJCQkJCQkgIFNMQUJfREVGQVVMVF9CTE9DS19TSVpFLAogCQkJCQkJCQkJCQkJICBT TEFCX0RFRkFVTFRfQkxPQ0tfU0laRSk7CiAKLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFRy YW5zYWN0aW9uSWQpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZW9yZGVyQnVmZmVy VFhOQnlJZEVudCk7Ci0JaGFzaF9jdGwuaGN4dCA9IGJ1ZmZlci0+Y29udGV4dDsKLQotCWJ1ZmZl ci0+YnlfdHhuID0gaGFzaF9jcmVhdGUoIlJlb3JkZXJCdWZmZXJCeVhpZCIsIDEwMDAsICZoYXNo X2N0bCwKLQkJCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOwor CWJ1ZmZlci0+YnlfdHhuID0gaGFzaF9tYWtlX2N4dChSZW9yZGVyQnVmZmVyVFhOQnlJZEVudCwg eGlkLAorCQkJCQkJCQkgICAiUmVvcmRlckJ1ZmZlckJ5WGlkIiwgMTAwMCwgYnVmZmVyLT5jb250 ZXh0KTsKIAogCWJ1ZmZlci0+YnlfdHhuX2xhc3RfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7 CiAJYnVmZmVyLT5ieV90eG5fbGFzdF90eG4gPSBOVUxMOwpAQCAtMTgzNiwyMiArMTgyOSwxNyBA QCBzdGF0aWMgdm9pZAogUmVvcmRlckJ1ZmZlckJ1aWxkVHVwbGVDaWRIYXNoKFJlb3JkZXJCdWZm ZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pCiB7CiAJZGxpc3RfaXRlcglpdGVyOwotCUhB U0hDVEwJCWhhc2hfY3RsOwogCiAJaWYgKCFyYnR4bl9oYXNfY2F0YWxvZ19jaGFuZ2VzKHR4bikg fHwgZGxpc3RfaXNfZW1wdHkoJnR4bi0+dHVwbGVjaWRzKSkKIAkJcmV0dXJuOwogCi0JaGFzaF9j dGwua2V5c2l6ZSA9IHNpemVvZihSZW9yZGVyQnVmZmVyVHVwbGVDaWRLZXkpOwotCWhhc2hfY3Rs LmVudHJ5c2l6ZSA9IHNpemVvZihSZW9yZGVyQnVmZmVyVHVwbGVDaWRFbnQpOwotCWhhc2hfY3Rs LmhjeHQgPSByYi0+Y29udGV4dDsKLQogCS8qCiAJICogY3JlYXRlIHRoZSBoYXNoIHdpdGggdGhl IGV4YWN0IG51bWJlciBvZiB0by1iZS1zdG9yZWQgdHVwbGVjaWRzIGZyb20KIAkgKiB0aGUgc3Rh cnQKIAkgKi8KIAl0eG4tPnR1cGxlY2lkX2hhc2ggPQotCQloYXNoX2NyZWF0ZSgiUmVvcmRlckJ1 ZmZlclR1cGxlQ2lkIiwgdHhuLT5udHVwbGVjaWRzLCAmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxF TSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCQloYXNoX21ha2VfY3h0KFJlb3JkZXJC dWZmZXJUdXBsZUNpZEVudCwga2V5LAorCQkJCQkgICJSZW9yZGVyQnVmZmVyVHVwbGVDaWQiLCB0 eG4tPm50dXBsZWNpZHMsIHJiLT5jb250ZXh0KTsKIAogCWRsaXN0X2ZvcmVhY2goaXRlciwgJnR4 bi0+dHVwbGVjaWRzKQogCXsKQEAgLTQ5NzcsMTUgKzQ5NjUsMTAgQEAgU3RhcnR1cFJlb3JkZXJC dWZmZXIodm9pZCkKIHN0YXRpYyB2b2lkCiBSZW9yZGVyQnVmZmVyVG9hc3RJbml0SGFzaChSZW9y ZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKQogewotCUhBU0hDVEwJCWhhc2hf Y3RsOwotCiAJQXNzZXJ0KHR4bi0+dG9hc3RfaGFzaCA9PSBOVUxMKTsKIAotCWhhc2hfY3RsLmtl eXNpemUgPSBzaXplb2YoT2lkKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVvcmRl ckJ1ZmZlclRvYXN0RW50KTsKLQloYXNoX2N0bC5oY3h0ID0gcmItPmNvbnRleHQ7Ci0JdHhuLT50 b2FzdF9oYXNoID0gaGFzaF9jcmVhdGUoIlJlb3JkZXJCdWZmZXJUb2FzdEhhc2giLCA1LCAmaGFz aF9jdGwsCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7 CisJdHhuLT50b2FzdF9oYXNoID0gaGFzaF9tYWtlX2N4dChSZW9yZGVyQnVmZmVyVG9hc3RFbnQs IGNodW5rX2lkLAorCQkJCQkJCQkJIlJlb3JkZXJCdWZmZXJUb2FzdEhhc2giLCA1LCByYi0+Y29u dGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5 bmMuYwppbmRleCBmYThlM2JmOTY5YS4uMGE0YTQ3ZDZjOGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtMTE3LDYgKzExNyw3IEBACiAjaW5jbHVk ZSAidXRpbHMvYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVk ZSAidXRpbHMvcmxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0 aWxzL3N5c2NhY2hlLmgiCkBAIC0zOTAsMTIgKzM5MSw5IEBAIFByb2Nlc3NTeW5jaW5nVGFibGVz Rm9yQXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIAkgKi8KIAlpZiAodGFibGVfc3RhdGVz X25vdF9yZWFkeSAhPSBOSUwgJiYgIWxhc3Rfc3RhcnRfdGltZXMpCiAJewotCQlIQVNIQ1RMCQlj dGw7Ci0KLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNp emVvZihzdHJ1Y3QgdGFibGVzeW5jX3N0YXJ0X3RpbWVfbWFwcGluZyk7Ci0JCWxhc3Rfc3RhcnRf dGltZXMgPSBoYXNoX2NyZWF0ZSgiTG9naWNhbCByZXBsaWNhdGlvbiB0YWJsZSBzeW5jIHdvcmtl ciBzdGFydCB0aW1lcyIsCi0JCQkJCQkJCQkgICAyNTYsICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hf QkxPQlMpOworCQlsYXN0X3N0YXJ0X3RpbWVzID0gaGFzaF9tYWtlX2N4dChzdHJ1Y3QgdGFibGVz eW5jX3N0YXJ0X3RpbWVfbWFwcGluZywgcmVsaWQsCisJCQkJCQkJCQkJICJMb2dpY2FsIHJlcGxp Y2F0aW9uIHRhYmxlIHN5bmMgd29ya2VyIHN0YXJ0IHRpbWVzIiwKKwkJCQkJCQkJCQkgMjU2LCBU b3BNZW1vcnlDb250ZXh0KTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bn b3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggOTQyZTFhYmRiNTguLjZkZWEyNGZmMGE2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTE5NjksNyArMTk2 OSw2IEBAIHBnb3V0cHV0X3N0cmVhbV9wcmVwYXJlX3R4bihMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHgsCiBzdGF0aWMgdm9pZAogaW5pdF9yZWxfc3luY19jYWNoZShNZW1vcnlDb250ZXh0IGNh Y2hlY3R4KQogewotCUhBU0hDVEwJCWN0bDsKIAlzdGF0aWMgYm9vbCByZWxhdGlvbl9jYWxsYmFj a3NfcmVnaXN0ZXJlZCA9IGZhbHNlOwogCiAJLyogTm90aGluZyB0byBkbyBpZiBoYXNoIHRhYmxl IGFscmVhZHkgZXhpc3RzICovCkBAIC0xOTc3LDEzICsxOTc2LDkgQEAgaW5pdF9yZWxfc3luY19j YWNoZShNZW1vcnlDb250ZXh0IGNhY2hlY3R4KQogCQlyZXR1cm47CiAKIAkvKiBNYWtlIGEgbmV3 IGhhc2ggdGFibGUgZm9yIHRoZSBjYWNoZSAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7 Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZWxhdGlvblN5bmNFbnRyeSk7Ci0JY3RsLmhjeHQg PSBjYWNoZWN0eDsKLQotCVJlbGF0aW9uU3luY0NhY2hlID0gaGFzaF9jcmVhdGUoImxvZ2ljYWwg cmVwbGljYXRpb24gb3V0cHV0IHJlbGF0aW9uIGNhY2hlIiwKLQkJCQkJCQkJCTEyOCwgJmN0bCwK LQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQ09OVEVYVCB8IEhBU0hfQkxPQlMpOworCVJlbGF0 aW9uU3luY0NhY2hlID0gaGFzaF9tYWtlX2N4dChSZWxhdGlvblN5bmNFbnRyeSwgcmVsaWQsCisJ CQkJCQkJCQkgICJsb2dpY2FsIHJlcGxpY2F0aW9uIG91dHB1dCByZWxhdGlvbiBjYWNoZSIsCisJ CQkJCQkJCQkgIDEyOCwgY2FjaGVjdHgpOwogCiAJQXNzZXJ0KFJlbGF0aW9uU3luY0NhY2hlICE9 IE5VTEwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFi bGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl90YWJsZS5jCmluZGV4IDlkMjU2 NTU5YmFiLi5iZmNlYzg1NWZmNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZm ZXIvYnVmX3RhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX3RhYmxl LmMKQEAgLTUwLDE5ICs1MCwxNiBAQCBCdWZUYWJsZVNobWVtU2l6ZShpbnQgc2l6ZSkKIHZvaWQK IEluaXRCdWZUYWJsZShpbnQgc2l6ZSkKIHsKLQlIQVNIQ1RMCQlpbmZvOworCUhBU0hPUFRTCW9w dHMgPSB7MH07CiAKIAkvKiBhc3N1bWUgbm8gbG9ja2luZyBpcyBuZWVkZWQgeWV0ICovCiAKIAkv KiBCdWZmZXJUYWcgbWFwcyB0byBCdWZmZXIgKi8KLQlpbmZvLmtleXNpemUgPSBzaXplb2YoQnVm ZmVyVGFnKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihCdWZmZXJMb29rdXBFbnQpOwotCWlu Zm8ubnVtX3BhcnRpdGlvbnMgPSBOVU1fQlVGRkVSX1BBUlRJVElPTlM7Ci0KLQlTaGFyZWRCdWZI YXNoID0gU2htZW1Jbml0SGFzaCgiU2hhcmVkIEJ1ZmZlciBMb29rdXAgVGFibGUiLAotCQkJCQkJ CQkgIHNpemUsIHNpemUsCi0JCQkJCQkJCSAgJmluZm8sCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwg SEFTSF9CTE9CUyB8IEhBU0hfUEFSVElUSU9OIHwgSEFTSF9GSVhFRF9TSVpFKTsKKwlvcHRzLm51 bV9wYXJ0aXRpb25zID0gTlVNX0JVRkZFUl9QQVJUSVRJT05TOworCW9wdHMuZml4ZWRfc2l6ZSA9 IHRydWU7CisJU2hhcmVkQnVmSGFzaCA9IHNobWVtX2hhc2hfbWFrZV9leHQoQnVmZmVyTG9va3Vw RW50LCBrZXksCisJCQkJCQkJCQkJIlNoYXJlZCBCdWZmZXIgTG9va3VwIFRhYmxlIiwKKwkJCQkJ CQkJCQlzaXplLCBzaXplLCAmb3B0cyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1 Zm1nci5jCmluZGV4IGYzNzNjZWFkOTVmLi42ZjU5MzI4NDNjYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9i dWZmZXIvYnVmbWdyLmMKQEAgLTYyLDYgKzYyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3Iu aCIKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5kYnkuaCIKICNpbmNsdWRlICJ1dGlscy9tZW1kZWJ1 Zy5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcHNfc3Rh dHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIu aCIKQEAgLTQwMDYsOCArNDAwNyw2IEBAIEF0RU9YYWN0X0J1ZmZlcnMoYm9vbCBpc0NvbW1pdCkK IHZvaWQKIEluaXRCdWZmZXJNYW5hZ2VyQWNjZXNzKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9j dGw7Ci0KIAkvKgogCSAqIEFuIGFkdmlzb3J5IGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgcGlucyBl YWNoIGJhY2tlbmQgc2hvdWxkIGhvbGQsIGJhc2VkCiAJICogb24gc2hhcmVkX2J1ZmZlcnMgYW5k IHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyBwb3NzaWJsZS4KQEAgLTQwMTksMTEg KzQwMTgsOSBAQCBJbml0QnVmZmVyTWFuYWdlckFjY2Vzcyh2b2lkKQogCiAJbWVtc2V0KCZQcml2 YXRlUmVmQ291bnRBcnJheSwgMCwgc2l6ZW9mKFByaXZhdGVSZWZDb3VudEFycmF5KSk7CiAKLQlo YXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKGludDMyKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBz aXplb2YoUHJpdmF0ZVJlZkNvdW50RW50cnkpOwotCi0JUHJpdmF0ZVJlZkNvdW50SGFzaCA9IGhh c2hfY3JlYXRlKCJQcml2YXRlUmVmQ291bnQiLCAxMDAsICZoYXNoX2N0bCwKLQkJCQkJCQkJCSAg SEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJUHJpdmF0ZVJlZkNvdW50SGFzaCA9IGhhc2hfbWFr ZV9jeHQoUHJpdmF0ZVJlZkNvdW50RW50cnksIGJ1ZmZlciwKKwkJCQkJCQkJCQkiUHJpdmF0ZVJl ZkNvdW50IiwgMTAwLAorCQkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyoKIAkgKiBB dFByb2NFeGl0X0J1ZmZlcnMgbmVlZHMgTFdMb2NrIGFjY2VzcywgYW5kIHRoZXJlYnkgaGFzIHRv IGJlIGNhbGxlZCBhdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9j YWxidWYuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMKaW5kZXggMTVh YWM3ZDFjOWYuLmE2NmYyOTc1YTQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9sb2NhbGJ1Zi5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVm LmMKQEAgLTcyOCw3ICs3MjgsNiBAQCBzdGF0aWMgdm9pZAogSW5pdExvY2FsQnVmZmVycyh2b2lk KQogewogCWludAkJCW5idWZzID0gbnVtX3RlbXBfYnVmZmVyczsKLQlIQVNIQ1RMCQlpbmZvOwog CWludAkJCWk7CiAKIAkvKgpAQCAtNzc5LDEzICs3NzgsOSBAQCBJbml0TG9jYWxCdWZmZXJzKHZv aWQpCiAJfQogCiAJLyogQ3JlYXRlIHRoZSBsb29rdXAgaGFzaCB0YWJsZSAqLwotCWluZm8ua2V5 c2l6ZSA9IHNpemVvZihCdWZmZXJUYWcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKExvY2Fs QnVmZmVyTG9va3VwRW50KTsKLQotCUxvY2FsQnVmSGFzaCA9IGhhc2hfY3JlYXRlKCJMb2NhbCBC dWZmZXIgTG9va3VwIFRhYmxlIiwKLQkJCQkJCQkgICBuYnVmcywKLQkJCQkJCQkgICAmaW5mbywK LQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlMb2NhbEJ1Zkhhc2ggPSBoYXNo X21ha2VfY3h0KExvY2FsQnVmZmVyTG9va3VwRW50LCBrZXksCisJCQkJCQkJCSAiTG9jYWwgQnVm ZmVyIExvb2t1cCBUYWJsZSIsIG5idWZzLAorCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiAK IAlpZiAoIUxvY2FsQnVmSGFzaCkKIAkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBpbml0aWFsaXpl IGxvY2FsIGJ1ZmZlciBoYXNoIHRhYmxlIik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2ZpbGUvcmVpbml0LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvcmVpbml0LmMKaW5k ZXggNWM4Mjc1Y2Y1MzYuLmE5NDM5ODI3MTViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9y YWdlL2ZpbGUvcmVpbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL3JlaW5pdC5j CkBAIC0xNzUsNyArMTc1LDYgQEAgUmVzZXRVbmxvZ2dlZFJlbGF0aW9uc0luRGJzcGFjZURpcihj b25zdCBjaGFyICpkYnNwYWNlZGlybmFtZSwgaW50IG9wKQogCWlmICgob3AgJiBVTkxPR0dFRF9S RUxBVElPTl9DTEVBTlVQKSAhPSAwKQogCXsKIAkJSFRBQgkgICAqaGFzaDsKLQkJSEFTSENUTAkJ Y3RsOwogCiAJCS8qCiAJCSAqIEl0J3MgcG9zc2libGUgdGhhdCBzb21lb25lIGNvdWxkIGNyZWF0 ZSBhIHRvbiBvZiB1bmxvZ2dlZCByZWxhdGlvbnMKQEAgLTE4NCwxMSArMTgzLDggQEAgUmVzZXRV bmxvZ2dlZFJlbGF0aW9uc0luRGJzcGFjZURpcihjb25zdCBjaGFyICpkYnNwYWNlZGlybmFtZSwg aW50IG9wKQogCQkgKiBuZWVkIHRvIGJlIHJlc2V0LiAgT3RoZXJ3aXNlLCB0aGlzIGNsZWFudXAg b3BlcmF0aW9uIHdvdWxkIGJlCiAJCSAqIE8obl4yKS4KIAkJICovCi0JCWN0bC5rZXlzaXplID0g c2l6ZW9mKE9pZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YodW5sb2dnZWRfcmVsYXRpb25f ZW50cnkpOwotCQljdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCQloYXNoID0gaGFz aF9jcmVhdGUoInVubG9nZ2VkIHJlbGF0aW9uIE9JRHMiLCAzMiwgJmN0bCwKLQkJCQkJCSAgIEhB U0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCQloYXNoID0gaGFzaF9tYWtl KHVubG9nZ2VkX3JlbGF0aW9uX2VudHJ5LCByZWxudW1iZXIsCisJCQkJCQkgInVubG9nZ2VkIHJl bGF0aW9uIE9JRHMiLCAzMik7CiAKIAkJLyogU2NhbiB0aGUgZGlyZWN0b3J5LiAqLwogCQlkYnNw YWNlX2RpciA9IEFsbG9jYXRlRGlyKGRic3BhY2VkaXJuYW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1l bS5jCmluZGV4IGVlMzQwOGRmMzAxLi4yZDRjNTE4ZGVjMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc2htZW0uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1l bS5jCkBAIC0yODQsOCArMjg0LDYgQEAgU2htZW1BZGRySXNWYWxpZChjb25zdCB2b2lkICphZGRy KQogdm9pZAogSW5pdFNobWVtSW5kZXgodm9pZCkKIHsKLQlIQVNIQ1RMCQlpbmZvOwotCiAJLyoK IAkgKiBDcmVhdGUgdGhlIHNoYXJlZCBtZW1vcnkgc2htZW0gaW5kZXguCiAJICoKQEAgLTI5NCwx MyArMjkyLDggQEAgSW5pdFNobWVtSW5kZXgodm9pZCkKIAkgKiBpbml0aWFsaXppbmcgdGhlIFNo bWVtSW5kZXggaXRzZWxmLiAgVGhlIHNwZWNpYWwgIlNobWVtSW5kZXgiIGhhc2gKIAkgKiB0YWJs ZSBuYW1lIHdpbGwgdGVsbCBTaG1lbUluaXRTdHJ1Y3QgdG8gZmFrZSBpdC4KIAkgKi8KLQlpbmZv LmtleXNpemUgPSBTSE1FTV9JTkRFWF9LRVlTSVpFOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9m KFNobWVtSW5kZXhFbnQpOwotCi0JU2htZW1JbmRleCA9IFNobWVtSW5pdEhhc2goIlNobWVtSW5k ZXgiLAotCQkJCQkJCSAgIFNITUVNX0lOREVYX1NJWkUsIFNITUVNX0lOREVYX1NJWkUsCi0JCQkJ CQkJICAgJmluZm8sCi0JCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwlTaG1l bUluZGV4ID0gc2htZW1faGFzaF9tYWtlKFNobWVtSW5kZXhFbnQsIGtleSwgIlNobWVtSW5kZXgi LAorCQkJCQkJCQkgU0hNRU1fSU5ERVhfU0laRSwgU0hNRU1fSU5ERVhfU0laRSk7CiB9CiAKIC8q CkBAIC0zNjksNiArMzYyLDI4IEBAIFNobWVtSW5pdEhhc2goY29uc3QgY2hhciAqbmFtZSwJCS8q IHRhYmxlIHN0cmluZyBuYW1lIGZvciBzaG1lbSBpbmRleCAqLwogCXJldHVybiBoYXNoX2NyZWF0 ZShuYW1lLCBpbml0X3NpemUsIGluZm9QLCBoYXNoX2ZsYWdzKTsKIH0KIAorLyoKKyAqIEltcGxl bWVudGF0aW9uIGZ1bmN0aW9uIGZvciBzaG1lbV9oYXNoX21ha2UgbWFjcm9zLgorICoKKyAqIENy ZWF0ZXMgYSBzaGFyZWQgbWVtb3J5IGhhc2ggdGFibGUgd2l0aCBzaW1wbGlmaWVkIHBhcmFtZXRl cnMuCisgKiBQYXNzIE5VTEwgZm9yIG9wdHMgdG8gdXNlIGFsbCBkZWZhdWx0cy4KKyAqLworSFRB QiAqCitzaG1lbV9oYXNoX21ha2VfaW1wbChjb25zdCBjaGFyICpuYW1lLCBpbnQ2NCBpbml0X3Np emUsIGludDY0IG1heF9zaXplLAorCQkJCQkgU2l6ZSBrZXlzaXplLCBTaXplIGVudHJ5c2l6ZSwg Ym9vbCBzdHJpbmdfa2V5LAorCQkJCQkgY29uc3QgSEFTSE9QVFMgKm9wdHMpCit7CisJSEFTSENU TAkJY3RsOworCWludAkJCWZsYWdzOworCisJLyogU2hhcmVkIG1lbW9yeSBoYXNoIHRhYmxlcyB1 c2UgU2htZW1BbGxvY05vRXJyb3IsIG5vdCBhIGN1c3RvbSBhbGxvY2F0b3IgKi8KKwlBc3NlcnQo b3B0cyA9PSBOVUxMIHx8IG9wdHMtPmFsbG9jID09IE5VTEwpOworCisJaGFzaF9vcHRzX2luaXQo JmN0bCwgJmZsYWdzLCBrZXlzaXplLCBlbnRyeXNpemUsIHN0cmluZ19rZXksIG9wdHMpOworCisJ cmV0dXJuIFNobWVtSW5pdEhhc2gobmFtZSwgaW5pdF9zaXplLCBtYXhfc2l6ZSwgJmN0bCwgZmxh Z3MpOworfQorCiAvKgogICogU2htZW1Jbml0U3RydWN0IC0tIENyZWF0ZS9hdHRhY2ggdG8gYSBz dHJ1Y3R1cmUgaW4gc2hhcmVkIG1lbW9yeS4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zdGFuZGJ5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMK aW5kZXggNDIyMmJkYWIwNzguLjkzMDVlMDA5NzcyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRi eS5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5LmgiCiAjaW5j bHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5o IgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcHNfc3RhdHVz LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFt cC5oIgpAQCAtOTUsNyArOTYsNiBAQCB2b2lkCiBJbml0UmVjb3ZlcnlUcmFuc2FjdGlvbkVudmly b25tZW50KHZvaWQpCiB7CiAJVmlydHVhbFRyYW5zYWN0aW9uSWQgdnhpZDsKLQlIQVNIQ1RMCQlo YXNoX2N0bDsKIAogCUFzc2VydChSZWNvdmVyeUxvY2tIYXNoID09IE5VTEwpOwkvKiBkb24ndCBy dW4gdGhpcyB0d2ljZSAqLwogCkBAIC0xMDMsMTggKzEwMywxMiBAQCBJbml0UmVjb3ZlcnlUcmFu c2FjdGlvbkVudmlyb25tZW50KHZvaWQpCiAJICogSW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZXMg Zm9yIHRyYWNraW5nIHRoZSBsb2NrcyBoZWxkIGJ5IGVhY2gKIAkgKiB0cmFuc2FjdGlvbi4KIAkg Ki8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKHhsX3N0YW5kYnlfbG9jayk7Ci0JaGFzaF9j dGwuZW50cnlzaXplID0gc2l6ZW9mKFJlY292ZXJ5TG9ja0VudHJ5KTsKLQlSZWNvdmVyeUxvY2tI YXNoID0gaGFzaF9jcmVhdGUoIlJlY292ZXJ5TG9ja0hhc2giLAotCQkJCQkJCQkgICA2NCwKLQkJ CQkJCQkJICAgJmhhc2hfY3RsLAotCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsK LQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOwotCWhhc2hfY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihSZWNvdmVyeUxvY2tYaWRFbnRyeSk7Ci0JUmVjb3ZlcnlMb2NrWGlk SGFzaCA9IGhhc2hfY3JlYXRlKCJSZWNvdmVyeUxvY2tYaWRIYXNoIiwKLQkJCQkJCQkJCSAgNjQs Ci0JCQkJCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9C Uyk7CisJUmVjb3ZlcnlMb2NrSGFzaCA9IGhhc2hfbWFrZV9jeHQoUmVjb3ZlcnlMb2NrRW50cnks IGtleSwKKwkJCQkJCQkJCSAiUmVjb3ZlcnlMb2NrSGFzaCIsIDY0LAorCQkJCQkJCQkJIFRvcE1l bW9yeUNvbnRleHQpOworCVJlY292ZXJ5TG9ja1hpZEhhc2ggPSBoYXNoX21ha2VfY3h0KFJlY292 ZXJ5TG9ja1hpZEVudHJ5LCB4aWQsCisJCQkJCQkJCQkJIlJlY292ZXJ5TG9ja1hpZEhhc2giLCA2 NCwKKwkJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBz aGFyZWQgaW52YWxpZGF0aW9uIG1hbmFnZW1lbnQgZm9yIFN0YXJ0dXAgcHJvY2VzcywgYmVpbmcK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvbG9jay5jCmluZGV4IDljYjc4ZWFkMTA1Li5lNWVhNTRlNzgyNCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvbG9jay5jCkBAIC00NDMsNyArNDQzLDcgQEAgc3RhdGljIHZvaWQgR2V0 U2luZ2xlUHJvY0Jsb2NrZXJTdGF0dXNEYXRhKFBHUFJPQyAqYmxvY2tlZF9wcm9jLAogdm9pZAog TG9ja01hbmFnZXJTaG1lbUluaXQodm9pZCkKIHsKLQlIQVNIQ1RMCQlpbmZvOworCUhBU0hPUFRT CW9wdHM7CiAJaW50NjQJCWluaXRfdGFibGVfc2l6ZSwKIAkJCQltYXhfdGFibGVfc2l6ZTsKIAli b29sCQlmb3VuZDsKQEAgLTQ1OSwxNSArNDU5LDExIEBAIExvY2tNYW5hZ2VyU2htZW1Jbml0KHZv aWQpCiAJICogQWxsb2NhdGUgaGFzaCB0YWJsZSBmb3IgTE9DSyBzdHJ1Y3RzLiAgVGhpcyBzdG9y ZXMgcGVyLWxvY2tlZC1vYmplY3QKIAkgKiBpbmZvcm1hdGlvbi4KIAkgKi8KLQlpbmZvLmtleXNp emUgPSBzaXplb2YoTE9DS1RBRyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoTE9DSyk7Ci0J aW5mby5udW1fcGFydGl0aW9ucyA9IE5VTV9MT0NLX1BBUlRJVElPTlM7Ci0KLQlMb2NrTWV0aG9k TG9ja0hhc2ggPSBTaG1lbUluaXRIYXNoKCJMT0NLIGhhc2giLAotCQkJCQkJCQkJICAgaW5pdF90 YWJsZV9zaXplLAotCQkJCQkJCQkJICAgbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkgICAmaW5m bywKLQkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX1BBUlRJVElPTik7 CisJTWVtU2V0KCZvcHRzLCAwLCBzaXplb2Yob3B0cykpOworCW9wdHMubnVtX3BhcnRpdGlvbnMg PSBOVU1fTE9DS19QQVJUSVRJT05TOworCUxvY2tNZXRob2RMb2NrSGFzaCA9IHNobWVtX2hhc2hf bWFrZV9leHQoTE9DSywgdGFnLCAiTE9DSyBoYXNoIiwKKwkJCQkJCQkJCQkJIGluaXRfdGFibGVf c2l6ZSwgbWF4X3RhYmxlX3NpemUsCisJCQkJCQkJCQkJCSAmb3B0cyk7CiAKIAkvKiBBc3N1bWUg YW4gYXZlcmFnZSBvZiAyIGhvbGRlcnMgcGVyIGxvY2sgKi8KIAltYXhfdGFibGVfc2l6ZSAqPSAy OwpAQCAtNDc3LDE2ICs0NzMsMTIgQEAgTG9ja01hbmFnZXJTaG1lbUluaXQodm9pZCkKIAkgKiBB bGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBQUk9DTE9DSyBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMKIAkg KiBwZXItbG9jay1wZXItaG9sZGVyIGluZm9ybWF0aW9uLgogCSAqLwotCWluZm8ua2V5c2l6ZSA9 IHNpemVvZihQUk9DTE9DS1RBRyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoUFJPQ0xPQ0sp OwotCWluZm8uaGFzaCA9IHByb2Nsb2NrX2hhc2g7Ci0JaW5mby5udW1fcGFydGl0aW9ucyA9IE5V TV9MT0NLX1BBUlRJVElPTlM7Ci0KLQlMb2NrTWV0aG9kUHJvY0xvY2tIYXNoID0gU2htZW1Jbml0 SGFzaCgiUFJPQ0xPQ0sgaGFzaCIsCi0JCQkJCQkJCQkJICAgaW5pdF90YWJsZV9zaXplLAotCQkJ CQkJCQkJCSAgIG1heF90YWJsZV9zaXplLAotCQkJCQkJCQkJCSAgICZpbmZvLAotCQkJCQkJCQkJ CSAgIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX1BBUlRJVElPTik7CisJTWVtU2V0 KCZvcHRzLCAwLCBzaXplb2Yob3B0cykpOworCW9wdHMuaGFzaCA9IHByb2Nsb2NrX2hhc2g7CisJ b3B0cy5udW1fcGFydGl0aW9ucyA9IE5VTV9MT0NLX1BBUlRJVElPTlM7CisJTG9ja01ldGhvZFBy b2NMb2NrSGFzaCA9IHNobWVtX2hhc2hfbWFrZV9leHQoUFJPQ0xPQ0ssIHRhZywgIlBST0NMT0NL IGhhc2giLAorCQkJCQkJCQkJCQkJIGluaXRfdGFibGVfc2l6ZSwgbWF4X3RhYmxlX3NpemUsCisJ CQkJCQkJCQkJCQkgJm9wdHMpOwogCiAJLyoKIAkgKiBBbGxvY2F0ZSBmYXN0LXBhdGggc3RydWN0 dXJlcy4KQEAgLTUwOCwxNSArNTAwLDkgQEAgSW5pdExvY2tNYW5hZ2VyQWNjZXNzKHZvaWQpCiAJ ICogQWxsb2NhdGUgbm9uLXNoYXJlZCBoYXNoIHRhYmxlIGZvciBMT0NBTExPQ0sgc3RydWN0cy4g IFRoaXMgc3RvcmVzIGxvY2sKIAkgKiBjb3VudHMgYW5kIHJlc291cmNlIG93bmVyIGluZm9ybWF0 aW9uLgogCSAqLwotCUhBU0hDVEwJCWluZm87Ci0KLQlpbmZvLmtleXNpemUgPSBzaXplb2YoTE9D QUxMT0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihMT0NBTExPQ0spOwotCi0JTG9j a01ldGhvZExvY2FsSGFzaCA9IGhhc2hfY3JlYXRlKCJMT0NBTExPQ0sgaGFzaCIsCi0JCQkJCQkJ CQkgIDE2LAotCQkJCQkJCQkJICAmaW5mbywKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9C TE9CUyk7CisJTG9ja01ldGhvZExvY2FsSGFzaCA9IGhhc2hfbWFrZV9jeHQoTE9DQUxMT0NLLCB0 YWcsCisJCQkJCQkJCQkJIkxPQ0FMTE9DSyBoYXNoIiwgMTYsCisJCQkJCQkJCQkJVG9wTWVtb3J5 Q29udGV4dCk7CiB9CiAKIApAQCAtMzM5NiwyMCArMzM4MiwxMyBAQCBDaGVja0ZvclNlc3Npb25B bmRYYWN0TG9ja3Modm9pZCkKIAkJYm9vbAkJeGFjdExvY2s7CS8qIGlzIGFueSBsb2NrbW9kZSBo ZWxkIGF0IHhhY3QgbGV2ZWw/ICovCiAJfSBQZXJMb2NrVGFnRW50cnk7CiAKLQlIQVNIQ1RMCQlo YXNoX2N0bDsKIAlIVEFCCSAgICpsb2NraHRhYjsKIAlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwog CUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKIAogCS8qIENyZWF0ZSBhIGxvY2FsIGhhc2ggdGFibGUg a2V5ZWQgYnkgTE9DS1RBRyBvbmx5ICovCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihMT0NL VEFHKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUGVyTG9ja1RhZ0VudHJ5KTsKLQlo YXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQlsb2NraHRhYiA9IGhhc2hf Y3JlYXRlKCJDaGVja0ZvclNlc3Npb25BbmRYYWN0TG9ja3MgdGFibGUiLAotCQkJCQkJICAgMjU2 LCAvKiBhcmJpdHJhcnkgaW5pdGlhbCBzaXplICovCi0JCQkJCQkgICAmaGFzaF9jdGwsCi0JCQkJ CQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwlsb2NraHRhYiA9 IGhhc2hfbWFrZShQZXJMb2NrVGFnRW50cnksIGxvY2ssCisJCQkJCQkgIkNoZWNrRm9yU2Vzc2lv bkFuZFhhY3RMb2NrcyB0YWJsZSIsIDI1Nik7CiAKIAkvKiBTY2FuIGxvY2FsIGxvY2sgdGFibGUg dG8gZmluZCBlbnRyaWVzIGZvciBlYWNoIExPQ0tUQUcgKi8KIAloYXNoX3NlcV9pbml0KCZzdGF0 dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2x3bG9jay5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCmluZGV4 IDI1NWNmYThmYTk1Li4xZjc0OWJlYWRjZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2x3bG9jay5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYwpA QCAtMjg1LDcgKzI4NSw2IEBAIHN0YXRpYyBsd2xvY2tfc3RhdHMgKiBnZXRfbHdsb2NrX3N0YXRz X2VudHJ5KExXTG9jayAqbG9jayk7CiBzdGF0aWMgdm9pZAogaW5pdF9sd2xvY2tfc3RhdHModm9p ZCkKIHsKLQlIQVNIQ1RMCQljdGw7CiAJc3RhdGljIE1lbW9yeUNvbnRleHQgbHdsb2NrX3N0YXRz X2N4dCA9IE5VTEw7CiAJc3RhdGljIGJvb2wgZXhpdF9yZWdpc3RlcmVkID0gZmFsc2U7CiAKQEAg LTMwNSwxMSArMzA0LDggQEAgaW5pdF9sd2xvY2tfc3RhdHModm9pZCkKIAkJCQkJCQkJCQkJIEFM TE9DU0VUX0RFRkFVTFRfU0laRVMpOwogCU1lbW9yeUNvbnRleHRBbGxvd0luQ3JpdGljYWxTZWN0 aW9uKGx3bG9ja19zdGF0c19jeHQsIHRydWUpOwogCi0JY3RsLmtleXNpemUgPSBzaXplb2YobHds b2NrX3N0YXRzX2tleSk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihsd2xvY2tfc3RhdHMpOwot CWN0bC5oY3h0ID0gbHdsb2NrX3N0YXRzX2N4dDsKLQlsd2xvY2tfc3RhdHNfaHRhYiA9IGhhc2hf Y3JlYXRlKCJsd2xvY2sgc3RhdHMiLCAxNjM4NCwgJmN0bCwKLQkJCQkJCQkJCUhBU0hfRUxFTSB8 IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCWx3bG9ja19zdGF0c19odGFiID0gaGFzaF9t YWtlX2N4dChsd2xvY2tfc3RhdHMsIGtleSwKKwkJCQkJCQkJCSAgImx3bG9jayBzdGF0cyIsIDE2 Mzg0LCBsd2xvY2tfc3RhdHNfY3h0KTsKIAlpZiAoIWV4aXRfcmVnaXN0ZXJlZCkKIAl7CiAJCW9u X3NobWVtX2V4aXQocHJpbnRfbHdsb2NrX3N0YXRzLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9w cmVkaWNhdGUuYwppbmRleCBmMTJmOGY3N2FhZC4uYzJkODUwMzI3MTYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2xtZ3IvcHJlZGljYXRlLmMKQEAgLTIxMiw2ICsyMTIsNyBAQAogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAidXRp bHMvZ3VjX2hvb2tzLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1 dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKQEAgLTExNDQsNyArMTE0 NSw3IEBAIENoZWNrUG9pbnRQcmVkaWNhdGUodm9pZCkKIHZvaWQKIFByZWRpY2F0ZUxvY2tTaG1l bUluaXQodm9pZCkKIHsKLQlIQVNIQ1RMCQlpbmZvOworCUhBU0hPUFRTCW9wdHM7CiAJaW50NjQJ CW1heF90YWJsZV9zaXplOwogCVNpemUJCXJlcXVlc3RTaXplOwogCWJvb2wJCWZvdW5kOwpAQCAt MTE2MywxNiArMTE2NCwxMyBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiAJICogQWxs b2NhdGUgaGFzaCB0YWJsZSBmb3IgUFJFRElDQVRFTE9DS1RBUkdFVCBzdHJ1Y3RzLiAgVGhpcyBz dG9yZXMKIAkgKiBwZXItcHJlZGljYXRlLWxvY2stdGFyZ2V0IGluZm9ybWF0aW9uLgogCSAqLwot CWluZm8ua2V5c2l6ZSA9IHNpemVvZihQUkVESUNBVEVMT0NLVEFSR0VUVEFHKTsKLQlpbmZvLmVu dHJ5c2l6ZSA9IHNpemVvZihQUkVESUNBVEVMT0NLVEFSR0VUKTsKLQlpbmZvLm51bV9wYXJ0aXRp b25zID0gTlVNX1BSRURJQ0FURUxPQ0tfUEFSVElUSU9OUzsKLQotCVByZWRpY2F0ZUxvY2tUYXJn ZXRIYXNoID0gU2htZW1Jbml0SGFzaCgiUFJFRElDQVRFTE9DS1RBUkdFVCBoYXNoIiwKLQkJCQkJ CQkJCQkJbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkJCW1heF90YWJsZV9zaXplLAotCQkJCQkJ CQkJCQkmaW5mbywKLQkJCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8Ci0JCQkJCQkJ CQkJCUhBU0hfUEFSVElUSU9OIHwgSEFTSF9GSVhFRF9TSVpFKTsKKwlNZW1TZXQoJm9wdHMsIDAs IHNpemVvZihvcHRzKSk7CisJb3B0cy5udW1fcGFydGl0aW9ucyA9IE5VTV9QUkVESUNBVEVMT0NL X1BBUlRJVElPTlM7CisJb3B0cy5maXhlZF9zaXplID0gdHJ1ZTsKKwlQcmVkaWNhdGVMb2NrVGFy Z2V0SGFzaCA9IHNobWVtX2hhc2hfbWFrZV9leHQoUFJFRElDQVRFTE9DS1RBUkdFVCwgdGFnLAor CQkJCQkJCQkJCQkJICAiUFJFRElDQVRFTE9DS1RBUkdFVCBoYXNoIiwKKwkJCQkJCQkJCQkJCSAg bWF4X3RhYmxlX3NpemUsIG1heF90YWJsZV9zaXplLAorCQkJCQkJCQkJCQkJICAmb3B0cyk7CiAK IAkvKgogCSAqIFJlc2VydmUgYSBkdW1teSBlbnRyeSBpbiB0aGUgaGFzaCB0YWJsZTsgd2UgdXNl IGl0IHRvIG1ha2Ugc3VyZSB0aGVyZSdzCkBAIC0xMTk1LDIwICsxMTkzLDE3IEBAIFByZWRpY2F0 ZUxvY2tTaG1lbUluaXQodm9pZCkKIAkgKiBBbGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBQUkVESUNB VEVMT0NLIHN0cnVjdHMuICBUaGlzIHN0b3JlcyBwZXIKIAkgKiB4YWN0LWxvY2stb2YtYS10YXJn ZXQgaW5mb3JtYXRpb24uCiAJICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxP Q0tUQUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0spOwotCWluZm8u aGFzaCA9IHByZWRpY2F0ZWxvY2tfaGFzaDsKLQlpbmZvLm51bV9wYXJ0aXRpb25zID0gTlVNX1BS RURJQ0FURUxPQ0tfUEFSVElUSU9OUzsKLQogCS8qIEFzc3VtZSBhbiBhdmVyYWdlIG9mIDIgeGFj dHMgcGVyIHRhcmdldCAqLwogCW1heF90YWJsZV9zaXplICo9IDI7CiAKLQlQcmVkaWNhdGVMb2Nr SGFzaCA9IFNobWVtSW5pdEhhc2goIlBSRURJQ0FURUxPQ0sgaGFzaCIsCi0JCQkJCQkJCQkgIG1h eF90YWJsZV9zaXplLAotCQkJCQkJCQkJICBtYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkJCSAgJmlu Zm8sCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfAotCQkJCQkJCQkJICBI QVNIX1BBUlRJVElPTiB8IEhBU0hfRklYRURfU0laRSk7CisJTWVtU2V0KCZvcHRzLCAwLCBzaXpl b2Yob3B0cykpOworCW9wdHMuaGFzaCA9IHByZWRpY2F0ZWxvY2tfaGFzaDsKKwlvcHRzLm51bV9w YXJ0aXRpb25zID0gTlVNX1BSRURJQ0FURUxPQ0tfUEFSVElUSU9OUzsKKwlvcHRzLmZpeGVkX3Np emUgPSB0cnVlOworCVByZWRpY2F0ZUxvY2tIYXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChQUkVE SUNBVEVMT0NLLCB0YWcsCisJCQkJCQkJCQkJCSJQUkVESUNBVEVMT0NLIGhhc2giLAorCQkJCQkJ CQkJCQltYXhfdGFibGVfc2l6ZSwgbWF4X3RhYmxlX3NpemUsCisJCQkJCQkJCQkJCSZvcHRzKTsK IAogCS8qCiAJICogQ29tcHV0ZSBzaXplIGZvciBzZXJpYWxpemFibGUgdHJhbnNhY3Rpb24gaGFz aHRhYmxlLiBOb3RlIHRoZXNlCkBAIC0xMjgyLDE1ICsxMjc3LDEyIEBAIFByZWRpY2F0ZUxvY2tT aG1lbUluaXQodm9pZCkKIAkgKiBBbGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBTRVJJQUxJWkFCTEVY SUQgc3RydWN0cy4gIFRoaXMgc3RvcmVzIHBlci14aWQKIAkgKiBpbmZvcm1hdGlvbiBmb3Igc2Vy aWFsaXphYmxlIHRyYW5zYWN0aW9ucyB3aGljaCBoYXZlIGFjY2Vzc2VkIGRhdGEuCiAJICovCi0J aW5mby5rZXlzaXplID0gc2l6ZW9mKFNFUklBTElaQUJMRVhJRFRBRyk7Ci0JaW5mby5lbnRyeXNp emUgPSBzaXplb2YoU0VSSUFMSVpBQkxFWElEKTsKLQotCVNlcmlhbGl6YWJsZVhpZEhhc2ggPSBT aG1lbUluaXRIYXNoKCJTRVJJQUxJWkFCTEVYSUQgaGFzaCIsCi0JCQkJCQkJCQkJbWF4X3RhYmxl X3NpemUsCi0JCQkJCQkJCQkJbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkJJmluZm8sCi0JCQkJ CQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8Ci0JCQkJCQkJCQkJSEFTSF9GSVhFRF9TSVpF KTsKKwlNZW1TZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CisJb3B0cy5maXhlZF9zaXplID0g dHJ1ZTsKKwlTZXJpYWxpemFibGVYaWRIYXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChTRVJJQUxJ WkFCTEVYSUQsIHRhZywKKwkJCQkJCQkJCQkJICAiU0VSSUFMSVpBQkxFWElEIGhhc2giLAorCQkJ CQkJCQkJCQkgIG1heF90YWJsZV9zaXplLCBtYXhfdGFibGVfc2l6ZSwKKwkJCQkJCQkJCQkJICAm b3B0cyk7CiAKIAkvKgogCSAqIEFsbG9jYXRlIHNwYWNlIGZvciB0cmFja2luZyBydy1jb25mbGlj dHMgaW4gbGlzdHMgYXR0YWNoZWQgdG8gdGhlCkBAIC0xOTM5LDE2ICsxOTMxLDEyIEBAIEdldFNl cmlhbGl6YWJsZVRyYW5zYWN0aW9uU25hcHNob3RJbnQoU25hcHNob3Qgc25hcHNob3QsCiBzdGF0 aWMgdm9pZAogQ3JlYXRlTG9jYWxQcmVkaWNhdGVMb2NrSGFzaCh2b2lkKQogewotCUhBU0hDVEwJ CWhhc2hfY3RsOwotCiAJLyogSW5pdGlhbGl6ZSB0aGUgYmFja2VuZC1sb2NhbCBoYXNoIHRhYmxl IG9mIHBhcmVudCBsb2NrcyAqLwogCUFzc2VydChMb2NhbFByZWRpY2F0ZUxvY2tIYXNoID09IE5V TEwpOwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoUFJFRElDQVRFTE9DS1RBUkdFVFRBRyk7 Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKExPQ0FMUFJFRElDQVRFTE9DSyk7Ci0JTG9j YWxQcmVkaWNhdGVMb2NrSGFzaCA9IGhhc2hfY3JlYXRlKCJMb2NhbCBwcmVkaWNhdGUgbG9jayIs Ci0JCQkJCQkJCQkJIG1heF9wcmVkaWNhdGVfbG9ja3NfcGVyX3hhY3QsCi0JCQkJCQkJCQkJICZo YXNoX2N0bCwKLQkJCQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJTG9jYWxQcmVk aWNhdGVMb2NrSGFzaCA9IGhhc2hfbWFrZV9jeHQoTE9DQUxQUkVESUNBVEVMT0NLLCB0YWcsCisJ CQkJCQkJCQkJICAgIkxvY2FsIHByZWRpY2F0ZSBsb2NrIiwKKwkJCQkJCQkJCQkgICBtYXhfcHJl ZGljYXRlX2xvY2tzX3Blcl94YWN0LAorCQkJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMKaW5kZXggYmNlMzdhMzZkNTEuLmQ0ZmE2YTE0 NGYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMKQEAgLTczLDYgKzczLDcgQEAKICNpbmNsdWRl ICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAi dXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCiAKIC8qCkBAIC0y NTAsMTIgKzI1MSw5IEBAIHNtZ3JvcGVuKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBQcm9jTnVt YmVyIGJhY2tlbmQpCiAJaWYgKFNNZ3JSZWxhdGlvbkhhc2ggPT0gTlVMTCkKIAl7CiAJCS8qIEZp cnN0IHRpbWUgdGhyb3VnaDogaW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAqLwotCQlIQVNIQ1RM CQljdGw7Ci0KLQkJY3RsLmtleXNpemUgPSBzaXplb2YoUmVsRmlsZUxvY2F0b3JCYWNrZW5kKTsK LQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihTTWdyUmVsYXRpb25EYXRhKTsKLQkJU01nclJlbGF0 aW9uSGFzaCA9IGhhc2hfY3JlYXRlKCJzbWdyIHJlbGF0aW9uIHRhYmxlIiwgNDAwLAotCQkJCQkJ CQkJICAgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCVNNZ3JSZWxhdGlvbkhhc2gg PSBoYXNoX21ha2VfY3h0KFNNZ3JSZWxhdGlvbkRhdGEsIHNtZ3JfcmxvY2F0b3IsCisJCQkJCQkJ CQkJICJzbWdyIHJlbGF0aW9uIHRhYmxlIiwgNDAwLAorCQkJCQkJCQkJCSBUb3BNZW1vcnlDb250 ZXh0KTsKIAkJZGxpc3RfaW5pdCgmdW5waW5uZWRfcmVsbnMpOwogCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3lu Yy9zeW5jLmMKaW5kZXggZmMxNmRiOTAxMzMuLjQyYjdmYzExMjg4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3lu Yy9zeW5jLmMKQEAgLTEzMCw4ICsxMzAsNiBAQCBJbml0U3luYyh2b2lkKQogCSAqLwogCWlmICgh SXNVbmRlclBvc3RtYXN0ZXIgfHwgQW1DaGVja3BvaW50ZXJQcm9jZXNzKCkpCiAJewotCQlIQVNI Q1RMCQloYXNoX2N0bDsKLQogCQkvKgogCQkgKiBYWFg6IFRoZSBjaGVja3BvaW50ZXIgbmVlZHMg dG8gYWRkIGVudHJpZXMgdG8gdGhlIHBlbmRpbmcgb3BzIHRhYmxlCiAJCSAqIHdoZW4gYWJzb3Ji aW5nIGZzeW5jIHJlcXVlc3RzLiAgVGhhdCBpcyBkb25lIHdpdGhpbiBhIGNyaXRpY2FsCkBAIC0x NDYsMTMgKzE0NCw4IEBAIEluaXRTeW5jKHZvaWQpCiAJCQkJCQkJCQkJCSAgQUxMT0NTRVRfREVG QVVMVF9TSVpFUyk7CiAJCU1lbW9yeUNvbnRleHRBbGxvd0luQ3JpdGljYWxTZWN0aW9uKHBlbmRp bmdPcHNDeHQsIHRydWUpOwogCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoRmlsZVRhZyk7 Ci0JCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQZW5kaW5nRnN5bmNFbnRyeSk7Ci0JCWhh c2hfY3RsLmhjeHQgPSBwZW5kaW5nT3BzQ3h0OwotCQlwZW5kaW5nT3BzID0gaGFzaF9jcmVhdGUo IlBlbmRpbmcgT3BzIFRhYmxlIiwKLQkJCQkJCQkJIDEwMEwsCi0JCQkJCQkJCSAmaGFzaF9jdGws Ci0JCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwkJcGVu ZGluZ09wcyA9IGhhc2hfbWFrZV9jeHQoUGVuZGluZ0ZzeW5jRW50cnksIHRhZywKKwkJCQkJCQkJ ICAgIlBlbmRpbmcgT3BzIFRhYmxlIiwgMTAwTCwgcGVuZGluZ09wc0N4dCk7CiAJCXBlbmRpbmdV bmxpbmtzID0gTklMOwogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNf dHlwYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMKaW5kZXgg OTNhYWIwMGEzY2EuLmE5YmM2OTAxYTEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90c2VhcmNo L3RzX3R5cGFuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUu YwpAQCAtMTQ5LDcgKzE0OSw2IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0YXRz ICpzdGF0cywKIAogCS8qIFRoaXMgaXMgRCBmcm9tIHRoZSBMQyBhbGdvcml0aG0uICovCiAJSFRB QgkgICAqbGV4ZW1lc190YWI7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJSEFTSF9TRVFfU1RBVFVT IHNjYW5fc3RhdHVzOwogCiAJLyogVGhpcyBpcyB0aGUgY3VycmVudCBidWNrZXQgbnVtYmVyIGZy b20gdGhlIExDIGFsZ29yaXRobSAqLwpAQCAtMTgwLDE1ICsxNzksOSBAQCBjb21wdXRlX3RzdmVj dG9yX3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsCiAJICogd29ycnkgYWJvdXQgb3ZlcmZsb3dp bmcgdGhlIGluaXRpYWwgc2l6ZS4gQWxzbyB3ZSBkb24ndCBuZWVkIHRvIHBheSBhbnkKIAkgKiBh dHRlbnRpb24gdG8gbG9ja2luZyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuCiAJICovCi0JaGFzaF9j dGwua2V5c2l6ZSA9IHNpemVvZihMZXhlbWVIYXNoS2V5KTsKLQloYXNoX2N0bC5lbnRyeXNpemUg PSBzaXplb2YoVHJhY2tJdGVtKTsKLQloYXNoX2N0bC5oYXNoID0gbGV4ZW1lX2hhc2g7Ci0JaGFz aF9jdGwubWF0Y2ggPSBsZXhlbWVfbWF0Y2g7Ci0JaGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRNZW1v cnlDb250ZXh0OwotCWxleGVtZXNfdGFiID0gaGFzaF9jcmVhdGUoIkFuYWx5emVkIGxleGVtZXMg dGFibGUiLAotCQkJCQkJCSAgbnVtX21jZWxlbSwKLQkJCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJ CQkgIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUgfCBIQVNIX0NPTlRF WFQpOworCWxleGVtZXNfdGFiID0gaGFzaF9tYWtlX2ZuKFRyYWNrSXRlbSwga2V5LAorCQkJCQkJ CSAgICJBbmFseXplZCBsZXhlbWVzIHRhYmxlIiwgbnVtX21jZWxlbSwKKwkJCQkJCQkgICBsZXhl bWVfaGFzaCwgbGV4ZW1lX21hdGNoKTsKIAogCS8qIEluaXRpYWxpemUgY291bnRlcnMuICovCiAJ Yl9jdXJyZW50ID0gMTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dh aXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRl eCBkOWI4ZjM0YTM1NS4uNTZhNjIwMjlhYmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93 YWl0X2V2ZW50LmMKQEAgLTExOSw3ICsxMTksNiBAQCB2b2lkCiBXYWl0RXZlbnRDdXN0b21TaG1l bUluaXQodm9pZCkKIHsKIAlib29sCQlmb3VuZDsKLQlIQVNIQ1RMCQlpbmZvOwogCiAJV2FpdEV2 ZW50Q3VzdG9tQ291bnRlciA9IChXYWl0RXZlbnRDdXN0b21Db3VudGVyRGF0YSAqKQogCQlTaG1l bUluaXRTdHJ1Y3QoIldhaXRFdmVudEN1c3RvbUNvdW50ZXJEYXRhIiwKQEAgLTEzMywyNCArMTMy LDE4IEBAIFdhaXRFdmVudEN1c3RvbVNobWVtSW5pdCh2b2lkKQogCX0KIAogCS8qIGluaXRpYWxp emUgb3IgYXR0YWNoIHRoZSBoYXNoIHRhYmxlcyB0byBzdG9yZSBjdXN0b20gd2FpdCBldmVudHMg Ki8KLQlpbmZvLmtleXNpemUgPSBzaXplb2YodWludDMyKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNp emVvZihXYWl0RXZlbnRDdXN0b21FbnRyeUJ5SW5mbyk7CiAJV2FpdEV2ZW50Q3VzdG9tSGFzaEJ5 SW5mbyA9Ci0JCVNobWVtSW5pdEhhc2goIldhaXRFdmVudEN1c3RvbSBoYXNoIGJ5IHdhaXQgZXZl bnQgaW5mb3JtYXRpb24iLAotCQkJCQkgIFdBSVRfRVZFTlRfQ1VTVE9NX0hBU0hfSU5JVF9TSVpF LAotCQkJCQkgIFdBSVRfRVZFTlRfQ1VTVE9NX0hBU0hfTUFYX1NJWkUsCi0JCQkJCSAgJmluZm8s Ci0JCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCXNobWVtX2hhc2hfbWFrZShXYWl0 RXZlbnRDdXN0b21FbnRyeUJ5SW5mbywgd2FpdF9ldmVudF9pbmZvLAorCQkJCQkJIldhaXRFdmVu dEN1c3RvbSBoYXNoIGJ5IHdhaXQgZXZlbnQgaW5mb3JtYXRpb24iLAorCQkJCQkJV0FJVF9FVkVO VF9DVVNUT01fSEFTSF9JTklUX1NJWkUsCisJCQkJCQlXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX01B WF9TSVpFKTsKIAogCS8qIGtleSBpcyBhIE5VTEwtdGVybWluYXRlZCBzdHJpbmcgKi8KLQlpbmZv LmtleXNpemUgPSBzaXplb2YoY2hhcltOQU1FREFUQUxFTl0pOwotCWluZm8uZW50cnlzaXplID0g c2l6ZW9mKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlOYW1lKTsKIAlXYWl0RXZlbnRDdXN0b21IYXNo QnlOYW1lID0KLQkJU2htZW1Jbml0SGFzaCgiV2FpdEV2ZW50Q3VzdG9tIGhhc2ggYnkgbmFtZSIs Ci0JCQkJCSAgV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9JTklUX1NJWkUsCi0JCQkJCSAgV0FJVF9F VkVOVF9DVVNUT01fSEFTSF9NQVhfU0laRSwKLQkJCQkJICAmaW5mbywKLQkJCQkJICBIQVNIX0VM RU0gfCBIQVNIX1NUUklOR1MpOworCQlzaG1lbV9oYXNoX21ha2UoV2FpdEV2ZW50Q3VzdG9tRW50 cnlCeU5hbWUsIHdhaXRfZXZlbnRfbmFtZSwKKwkJCQkJCSJXYWl0RXZlbnRDdXN0b20gaGFzaCBi eSBuYW1lIiwKKwkJCQkJCVdBSVRfRVZFTlRfQ1VTVE9NX0hBU0hfSU5JVF9TSVpFLAorCQkJCQkJ V0FJVF9FVkVOVF9DVVNUT01fSEFTSF9NQVhfU0laRSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2FycmF5X3R5cGFuYWx5emUuYwppbmRleCA1NjBiMjdmM2NhNy4uY2MzMTBjMDQ0YjMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3R5cGFuYWx5emUuYwpAQCAtMjIzLDcgKzIy Myw2IEBAIGNvbXB1dGVfYXJyYXlfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywgQW5hbHl6ZUF0 dHJGZXRjaEZ1bmMgZmV0Y2hmdW5jLAogCiAJLyogVGhpcyBpcyBEIGZyb20gdGhlIExDIGFsZ29y aXRobS4gKi8KIAlIVEFCCSAgICplbGVtZW50c190YWI7Ci0JSEFTSENUTAkJZWxlbV9oYXNoX2N0 bDsKIAlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7CiAKIAkvKiBUaGlzIGlzIHRoZSBjdXJy ZW50IGJ1Y2tldCBudW1iZXIgZnJvbSB0aGUgTEMgYWxnb3JpdGhtICovCkBAIC0yMzYsNyArMjM1 LDYgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0 ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJVHJhY2tJdGVtICAqaXRlbTsKIAlpbnQJCQlzbG90X2lk eDsKIAlIVEFCCSAgICpjb3VudF90YWI7Ci0JSEFTSENUTAkJY291bnRfaGFzaF9jdGw7CiAJREVD b3VudEl0ZW0gKmNvdW50X2l0ZW07CiAKIAlleHRyYV9kYXRhID0gKEFycmF5QW5hbHl6ZUV4dHJh RGF0YSAqKSBzdGF0cy0+ZXh0cmFfZGF0YTsKQEAgLTI3NiwyNCArMjc0LDEzIEBAIGNvbXB1dGVf YXJyYXlfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywgQW5hbHl6ZUF0dHJGZXRjaEZ1bmMgZmV0 Y2hmdW5jLAogCSAqIHdvcnJ5IGFib3V0IG92ZXJmbG93aW5nIHRoZSBpbml0aWFsIHNpemUuIEFs c28gd2UgZG9uJ3QgbmVlZCB0byBwYXkgYW55CiAJICogYXR0ZW50aW9uIHRvIGxvY2tpbmcgYW5k IG1lbW9yeSBtYW5hZ2VtZW50LgogCSAqLwotCWVsZW1faGFzaF9jdGwua2V5c2l6ZSA9IHNpemVv ZihEYXR1bSk7Ci0JZWxlbV9oYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoVHJhY2tJdGVtKTsK LQllbGVtX2hhc2hfY3RsLmhhc2ggPSBlbGVtZW50X2hhc2g7Ci0JZWxlbV9oYXNoX2N0bC5tYXRj aCA9IGVsZW1lbnRfbWF0Y2g7Ci0JZWxlbV9oYXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNv bnRleHQ7Ci0JZWxlbWVudHNfdGFiID0gaGFzaF9jcmVhdGUoIkFuYWx5emVkIGVsZW1lbnRzIHRh YmxlIiwKLQkJCQkJCQkgICBudW1fbWNlbGVtLAotCQkJCQkJCSAgICZlbGVtX2hhc2hfY3RsLAot CQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUgfCBIQVNI X0NPTlRFWFQpOworCWVsZW1lbnRzX3RhYiA9IGhhc2hfbWFrZV9mbihUcmFja0l0ZW0sIGtleSwK KwkJCQkJCQkJIkFuYWx5emVkIGVsZW1lbnRzIHRhYmxlIiwgbnVtX21jZWxlbSwKKwkJCQkJCQkJ ZWxlbWVudF9oYXNoLCBlbGVtZW50X21hdGNoKTsKIAogCS8qIGhhc2h0YWJsZSBmb3IgYXJyYXkg ZGlzdGluY3QgZWxlbWVudHMgY291bnRzICovCi0JY291bnRfaGFzaF9jdGwua2V5c2l6ZSA9IHNp emVvZihpbnQpOwotCWNvdW50X2hhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihERUNvdW50SXRl bSk7Ci0JY291bnRfaGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCWNvdW50 X3RhYiA9IGhhc2hfY3JlYXRlKCJBcnJheSBkaXN0aW5jdCBlbGVtZW50IGNvdW50IHRhYmxlIiwK LQkJCQkJCQk2NCwKLQkJCQkJCQkmY291bnRfaGFzaF9jdGwsCi0JCQkJCQkJSEFTSF9FTEVNIHwg SEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJY291bnRfdGFiID0gaGFzaF9tYWtlKERFQ291 bnRJdGVtLCBjb3VudCwKKwkJCQkJCSAgIkFycmF5IGRpc3RpbmN0IGVsZW1lbnQgY291bnQgdGFi bGUiLCA2NCk7CiAKIAkvKiBJbml0aWFsaXplIGNvdW50ZXJzLiAqLwogCWJfY3VycmVudCA9IDE7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb24uYwppbmRleCAwNmRkNjJmMDAwOC4uNTZhYTg4ZTQ5NWUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb24uYwpAQCAtOTMzLDE5ICs5MzMsOCBAQCBqc29uX3VuaXF1ZV9oYXNoX21hdGNoKGNv bnN0IHZvaWQgKmtleTEsIGNvbnN0IHZvaWQgKmtleTIsIFNpemUga2V5c2l6ZSkKIHN0YXRpYyB2 b2lkCiBqc29uX3VuaXF1ZV9jaGVja19pbml0KEpzb25VbmlxdWVDaGVja1N0YXRlICpjeHQpCiB7 Ci0JSEFTSENUTAkJY3RsOwotCi0JbWVtc2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKLQljdGwu a2V5c2l6ZSA9IHNpemVvZihKc29uVW5pcXVlSGFzaEVudHJ5KTsKLQljdGwuZW50cnlzaXplID0g c2l6ZW9mKEpzb25VbmlxdWVIYXNoRW50cnkpOwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNv bnRleHQ7Ci0JY3RsLmhhc2ggPSBqc29uX3VuaXF1ZV9oYXNoOwotCWN0bC5tYXRjaCA9IGpzb25f dW5pcXVlX2hhc2hfbWF0Y2g7Ci0KLQkqY3h0ID0gaGFzaF9jcmVhdGUoImpzb24gb2JqZWN0IGhh c2h0YWJsZSIsCi0JCQkJCSAgIDMyLAotCQkJCQkgICAmY3RsLAotCQkJCQkgICBIQVNIX0VMRU0g fCBIQVNIX0NPTlRFWFQgfCBIQVNIX0ZVTkNUSU9OIHwgSEFTSF9DT01QQVJFKTsKKwkqY3h0ID0g aGFzaHNldF9tYWtlX2ZuKEpzb25VbmlxdWVIYXNoRW50cnksICJqc29uIG9iamVjdCBoYXNodGFi bGUiLCAzMiwKKwkJCQkJCSAgIGpzb25fdW5pcXVlX2hhc2gsIGpzb25fdW5pcXVlX2hhc2hfbWF0 Y2gpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25mdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCmluZGV4IGRl MzJlMzI5OTc1Li44MWUzMGQ3OTQzNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25mdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uZnVuY3MuYwpAQCAt MzgxMSwxOCArMzgxMSwxMiBAQCBzdGF0aWMgSFRBQiAqCiBnZXRfanNvbl9vYmplY3RfYXNfaGFz aChjb25zdCBjaGFyICpqc29uLCBpbnQgbGVuLCBjb25zdCBjaGFyICpmdW5jbmFtZSwKIAkJCQkJ CU5vZGUgKmVzY29udGV4dCkKIHsKLQlIQVNIQ1RMCQljdGw7CiAJSFRBQgkgICAqdGFiOwogCUpI YXNoU3RhdGUgKnN0YXRlOwogCUpzb25TZW1BY3Rpb24gKnNlbTsKIAotCWN0bC5rZXlzaXplID0g TkFNRURBVEFMRU47Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihKc29uSGFzaEVudHJ5KTsKLQlj dGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCXRhYiA9IGhhc2hfY3JlYXRlKCJqc29u IG9iamVjdCBoYXNodGFibGUiLAotCQkJCQkgIDEwMCwKLQkJCQkJICAmY3RsLAotCQkJCQkgIEhB U0hfRUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJdGFiID0gaGFzaF9tYWtl KEpzb25IYXNoRW50cnksIGZuYW1lLAorCQkJCQkianNvbiBvYmplY3QgaGFzaHRhYmxlIiwgMTAw KTsKIAogCXN0YXRlID0gcGFsbG9jMChzaXplb2YoSkhhc2hTdGF0ZSkpOwogCXNlbSA9IHBhbGxv YzAoc2l6ZW9mKEpzb25TZW1BY3Rpb24pKTsKQEAgLTQyMTYsNyArNDIxMCw2IEBAIHBvcHVsYXRl X3JlY29yZHNldF9vYmplY3Rfc3RhcnQodm9pZCAqc3RhdGUpCiB7CiAJUG9wdWxhdGVSZWNvcmRz ZXRTdGF0ZSAqX3N0YXRlID0gKFBvcHVsYXRlUmVjb3Jkc2V0U3RhdGUgKikgc3RhdGU7CiAJaW50 CQkJbGV4X2xldmVsID0gX3N0YXRlLT5sZXgtPmxleF9sZXZlbDsKLQlIQVNIQ1RMCQljdGw7CiAK IAkvKiBSZWplY3Qgb2JqZWN0IGF0IHRvcCBsZXZlbDogd2UgbXVzdCBoYXZlIGFuIGFycmF5IGF0 IGxldmVsIDAgKi8KIAlpZiAobGV4X2xldmVsID09IDApCkBAIC00MjMwLDEzICs0MjIzLDggQEAg cG9wdWxhdGVfcmVjb3Jkc2V0X29iamVjdF9zdGFydCh2b2lkICpzdGF0ZSkKIAkJcmV0dXJuIEpT T05fU1VDQ0VTUzsKIAogCS8qIE9iamVjdCBhdCBsZXZlbCAxOiBzZXQgdXAgYSBuZXcgaGFzaCB0 YWJsZSBmb3IgdGhpcyBvYmplY3QgKi8KLQljdGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwotCWN0 bC5lbnRyeXNpemUgPSBzaXplb2YoSnNvbkhhc2hFbnRyeSk7Ci0JY3RsLmhjeHQgPSBDdXJyZW50 TWVtb3J5Q29udGV4dDsKLQlfc3RhdGUtPmpzb25faGFzaCA9IGhhc2hfY3JlYXRlKCJqc29uIG9i amVjdCBoYXNodGFibGUiLAotCQkJCQkJCQkJMTAwLAotCQkJCQkJCQkJJmN0bCwKLQkJCQkJCQkJ CUhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJX3N0YXRlLT5qc29u X2hhc2ggPSBoYXNoX21ha2UoSnNvbkhhc2hFbnRyeSwgZm5hbWUsCisJCQkJCQkJCSAgImpzb24g b2JqZWN0IGhhc2h0YWJsZSIsIDEwMCk7CiAKIAlyZXR1cm4gSlNPTl9TVUNDRVNTOwogfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L21jeHRmdW5jcy5jCmluZGV4IGZlNmRjZTljYmEzLi44NGI0M2Y1YzRlMCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9tY3h0ZnVuY3MuYwpAQCAtMTg1LDE3ICsxODUsMTAgQEAgcGdfZ2V0X2Jh Y2tlbmRfbWVtb3J5X2NvbnRleHRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUmV0dXJuU2V0SW5mbyAq cnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOwogCWludAkJCWNv bnRleHRfaWQ7CiAJTGlzdAkgICAqY29udGV4dHM7Ci0JSEFTSENUTAkJY3RsOwogCUhUQUIJICAg KmNvbnRleHRfaWRfbG9va3VwOwogCi0JY3RsLmtleXNpemUgPSBzaXplb2YoTWVtb3J5Q29udGV4 dCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihNZW1vcnlDb250ZXh0SWQpOwotCWN0bC5oY3h0 ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0KLQljb250ZXh0X2lkX2xvb2t1cCA9IGhhc2hfY3Jl YXRlKCJwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMiLAotCQkJCQkJCQkJMjU2LAotCQkJ CQkJCQkJJmN0bCwKLQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRF WFQpOworCWNvbnRleHRfaWRfbG9va3VwID0gaGFzaF9tYWtlKE1lbW9yeUNvbnRleHRJZCwgY29u dGV4dCwKKwkJCQkJCQkJICAicGdfZ2V0X2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzIiwgMjU2KTsK IAogCUluaXRNYXRlcmlhbGl6ZWRTUkYoZmNpbmZvLCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlf dHJpZ2dlcnMuYwppbmRleCAwNTlmYzVlYmY2MC4uZTBmMDVmMmNjNGEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0yODU3LDMwICsyODU3LDI1IEBAIHJpX051bGxDaGVjayhU dXBsZURlc2MgdHVwRGVzYywKIHN0YXRpYyB2b2lkCiByaV9Jbml0SGFzaFRhYmxlcyh2b2lkKQog ewotCUhBU0hDVEwJCWN0bDsKLQotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihSSV9Db25zdHJhaW50SW5mbyk7Ci0JcmlfY29uc3RyYWludF9jYWNo ZSA9IGhhc2hfY3JlYXRlKCJSSSBjb25zdHJhaW50IGNhY2hlIiwKLQkJCQkJCQkJCSAgUklfSU5J VF9DT05TVFJBSU5USEFTSFNJWkUsCi0JCQkJCQkJCQkgICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hf QkxPQlMpOworCXJpX2NvbnN0cmFpbnRfY2FjaGUgPSBoYXNoX21ha2VfY3h0KFJJX0NvbnN0cmFp bnRJbmZvLCBjb25zdHJhaW50X2lkLAorCQkJCQkJCQkJCSJSSSBjb25zdHJhaW50IGNhY2hlIiwK KwkJCQkJCQkJCQlSSV9JTklUX0NPTlNUUkFJTlRIQVNIU0laRSwKKwkJCQkJCQkJCQlUb3BNZW1v cnlDb250ZXh0KTsKIAogCS8qIEFycmFuZ2UgdG8gZmx1c2ggY2FjaGUgb24gcGdfY29uc3RyYWlu dCBjaGFuZ2VzICovCiAJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soQ09OU1RST0lELAog CQkJCQkJCQkgIEludmFsaWRhdGVDb25zdHJhaW50Q2FjaGVDYWxsQmFjaywKIAkJCQkJCQkJICAo RGF0dW0pIDApOwogCi0JY3RsLmtleXNpemUgPSBzaXplb2YoUklfUXVlcnlLZXkpOwotCWN0bC5l bnRyeXNpemUgPSBzaXplb2YoUklfUXVlcnlIYXNoRW50cnkpOwotCXJpX3F1ZXJ5X2NhY2hlID0g aGFzaF9jcmVhdGUoIlJJIHF1ZXJ5IGNhY2hlIiwKLQkJCQkJCQkJIFJJX0lOSVRfUVVFUllIQVNI U0laRSwKLQkJCQkJCQkJICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOwotCi0JY3RsLmtl eXNpemUgPSBzaXplb2YoUklfQ29tcGFyZUtleSk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihS SV9Db21wYXJlSGFzaEVudHJ5KTsKLQlyaV9jb21wYXJlX2NhY2hlID0gaGFzaF9jcmVhdGUoIlJJ IGNvbXBhcmUgY2FjaGUiLAorCXJpX3F1ZXJ5X2NhY2hlID0gaGFzaF9tYWtlX2N4dChSSV9RdWVy eUhhc2hFbnRyeSwga2V5LAorCQkJCQkJCQkgICAiUkkgcXVlcnkgY2FjaGUiLAogCQkJCQkJCQkg ICBSSV9JTklUX1FVRVJZSEFTSFNJWkUsCi0JCQkJCQkJCSAgICZjdGwsIEhBU0hfRUxFTSB8IEhB U0hfQkxPQlMpOworCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsKKworCXJpX2NvbXBhcmVf Y2FjaGUgPSBoYXNoX21ha2VfY3h0KFJJX0NvbXBhcmVIYXNoRW50cnksIGtleSwKKwkJCQkJCQkJ CSAiUkkgY29tcGFyZSBjYWNoZSIsCisJCQkJCQkJCQkgUklfSU5JVF9RVUVSWUhBU0hTSVpFLAor CQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYwppbmRleCA2Y2Y5MGJlNDBiYi4uOThkMzMxYzI5MGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVs ZXV0aWxzLmMKQEAgLTM4ODcsNyArMzg4Nyw2IEBAIHN0YXRpYyB2b2lkCiBzZXRfcnRhYmxlX25h bWVzKGRlcGFyc2VfbmFtZXNwYWNlICpkcG5zLCBMaXN0ICpwYXJlbnRfbmFtZXNwYWNlcywKIAkJ CQkgQml0bWFwc2V0ICpyZWxzX3VzZWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJSFRBQgkg ICAqbmFtZXNfaGFzaDsKIAlOYW1lSGFzaEVudHJ5ICpoZW50cnk7CiAJYm9vbAkJZm91bmQ7CkBA IC0zOTAzLDEzICszOTAyLDkgQEAgc2V0X3J0YWJsZV9uYW1lcyhkZXBhcnNlX25hbWVzcGFjZSAq ZHBucywgTGlzdCAqcGFyZW50X25hbWVzcGFjZXMsCiAJICogV2UgdXNlIGEgaGFzaCB0YWJsZSB0 byBob2xkIGtub3duIG5hbWVzLCBzbyB0aGF0IHRoaXMgcHJvY2VzcyBpcyBPKE4pCiAJICogbm90 IE8oTl4yKSBmb3IgTiBuYW1lcy4KIAkgKi8KLQloYXNoX2N0bC5rZXlzaXplID0gTkFNRURBVEFM RU47Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE5hbWVIYXNoRW50cnkpOwotCWhhc2hf Y3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQluYW1lc19oYXNoID0gaGFzaF9jcmVh dGUoInNldF9ydGFibGVfbmFtZXMgbmFtZXMiLAotCQkJCQkJCSBsaXN0X2xlbmd0aChkcG5zLT5y dGFibGUpLAotCQkJCQkJCSAmaGFzaF9jdGwsCi0JCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hfU1RS SU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJbmFtZXNfaGFzaCA9IGhhc2hfbWFrZShOYW1lSGFzaEVu dHJ5LCBuYW1lLAorCQkJCQkJICAgInNldF9ydGFibGVfbmFtZXMgbmFtZXMiLAorCQkJCQkJICAg bGlzdF9sZW5ndGgoZHBucy0+cnRhYmxlKSk7CiAKIAkvKiBQcmVsb2FkIHRoZSBoYXNoIHRhYmxl IHdpdGggbmFtZXMgYXBwZWFyaW5nIGluIHBhcmVudF9uYW1lc3BhY2VzICovCiAJZm9yZWFjaChs YywgcGFyZW50X25hbWVzcGFjZXMpCkBAIC00OTgwLDcgKzQ5NzUsNiBAQCBleHBhbmRfY29sbmFt ZXNfYXJyYXlfdG8oZGVwYXJzZV9jb2x1bW5zICpjb2xpbmZvLCBpbnQgbikKIHN0YXRpYyB2b2lk CiBidWlsZF9jb2xpbmZvX25hbWVzX2hhc2goZGVwYXJzZV9jb2x1bW5zICpjb2xpbmZvKQogewot CUhBU0hDVEwJCWhhc2hfY3RsOwogCWludAkJCWk7CiAJTGlzdENlbGwgICAqbGM7CiAKQEAgLTQ5 OTYsMTMgKzQ5OTAsMTAgQEAgYnVpbGRfY29saW5mb19uYW1lc19oYXNoKGRlcGFyc2VfY29sdW1u cyAqY29saW5mbykKIAkgKiBTZXQgdXAgdGhlIGhhc2ggdGFibGUuICBUaGUgZW50cmllcyBhcmUg anVzdCBzdHJpbmdzIHdpdGggbm8gb3RoZXIKIAkgKiBwYXlsb2FkLgogCSAqLwotCWhhc2hfY3Rs LmtleXNpemUgPSBOQU1FREFUQUxFTjsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBOQU1FREFUQUxF TjsKLQloYXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JY29saW5mby0+bmFt ZXNfaGFzaCA9IGhhc2hfY3JlYXRlKCJkZXBhcnNlX2NvbHVtbnMgbmFtZXMiLAotCQkJCQkJCQkJ ICBjb2xpbmZvLT5udW1fY29scyArIGNvbGluZm8tPm51bV9uZXdfY29scywKLQkJCQkJCQkJCSAg Jmhhc2hfY3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MgfCBIQVNIX0NP TlRFWFQpOworCWNvbGluZm8tPm5hbWVzX2hhc2ggPQorCQloYXNoc2V0X21ha2VfY3h0KE5hbWVE YXRhLCAiZGVwYXJzZV9jb2x1bW5zIG5hbWVzIiwKKwkJCQkJCSBjb2xpbmZvLT5udW1fY29scyAr IGNvbGluZm8tPm51bV9uZXdfY29scywKKwkJCQkJCSBDdXJyZW50TWVtb3J5Q29udGV4dCk7CiAK IAkvKgogCSAqIFByZWxvYWQgdGhlIGhhc2ggdGFibGUgd2l0aCBhbnkgbmFtZXMgYWxyZWFkeSBw cmVzZW50ICh0aGVzZSB3b3VsZCBoYXZlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9hdHRvcHRjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvYXR0b3B0Y2FjaGUu YwppbmRleCA0NWQxZTJiZTAwNy4uY2FhZTM5ZTNiYjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL2F0dG9wdGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv YXR0b3B0Y2FjaGUuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgInV0aWxzL2NhdGNhY2hl LmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgi CisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5o IgogI2luY2x1ZGUgInZhcmF0dC5oIgogCkBAIC05NiwyMiArOTcsMTUgQEAgcmVsYXR0X2NhY2hl X3N5c2hhc2goY29uc3Qgdm9pZCAqa2V5LCBTaXplIGtleXNpemUpCiBzdGF0aWMgdm9pZAogSW5p dGlhbGl6ZUF0dG9wdENhY2hlKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwotCi0JLyogSW5pdGlh bGl6ZSB0aGUgaGFzaCB0YWJsZS4gKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihBdHRvcHRDYWNo ZUtleSk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihBdHRvcHRDYWNoZUVudHJ5KTsKLQogCS8q CiAJICogQXR0b3B0Q2FjaGVFbnRyeSB0YWtlcyBoYXNoIHZhbHVlIGZyb20gdGhlIHN5c3RlbSBj YWNoZS4gRm9yCiAJICogQXR0b3B0Q2FjaGVIYXNoIHdlIHVzZSB0aGUgc2FtZSBoYXNoIGluIG9y ZGVyIHRvIHNwZWVkdXAgc2VhcmNoIGJ5IGhhc2gKIAkgKiB2YWx1ZS4gVGhpcyBpcyB1c2VkIGJ5 IGhhc2hfc2VxX2luaXRfd2l0aF9oYXNoX3ZhbHVlKCkuCiAJICovCi0JY3RsLmhhc2ggPSByZWxh dHRfY2FjaGVfc3lzaGFzaDsKLQotCUF0dG9wdENhY2hlSGFzaCA9Ci0JCWhhc2hfY3JlYXRlKCJB dHRvcHQgY2FjaGUiLCAyNTYsICZjdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04p OworCUF0dG9wdENhY2hlSGFzaCA9IGhhc2hfbWFrZV9mbl9jeHQoQXR0b3B0Q2FjaGVFbnRyeSwg a2V5LAorCQkJCQkJCQkJICAgIkF0dG9wdCBjYWNoZSIsIDI1NiwKKwkJCQkJCQkJCSAgIHJlbGF0 dF9jYWNoZV9zeXNoYXNoLCBOVUxMLAorCQkJCQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiAK IAkvKiBNYWtlIHN1cmUgd2UndmUgaW5pdGlhbGl6ZWQgQ2FjaGVNZW1vcnlDb250ZXh0LiAqLwog CWlmICghQ2FjaGVNZW1vcnlDb250ZXh0KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvZXZ0Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2V2dGNhY2hlLmMKaW5k ZXggYjlkNWE1OTk4YmUuLjY0ZmY3NTY4ODc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9ldnRjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2V2dGNhY2hl LmMKQEAgLTc2LDcgKzc2LDYgQEAgRXZlbnRDYWNoZUxvb2t1cChFdmVudFRyaWdnZXJFdmVudCBl dmVudCkKIHN0YXRpYyB2b2lkCiBCdWlsZEV2ZW50VHJpZ2dlckNhY2hlKHZvaWQpCiB7Ci0JSEFT SENUTAkJY3RsOwogCUhUQUIJICAgKmNhY2hlOwogCVJlbGF0aW9uCXJlbDsKIAlSZWxhdGlvbglp cmVsOwpAQCAtMTEzLDExICsxMTIsOSBAQCBCdWlsZEV2ZW50VHJpZ2dlckNhY2hlKHZvaWQpCiAJ RXZlbnRUcmlnZ2VyQ2FjaGVTdGF0ZSA9IEVUQ1NfUkVCVUlMRF9TVEFSVEVEOwogCiAJLyogQ3Jl YXRlIG5ldyBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKEV2ZW50VHJpZ2dl ckV2ZW50KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKEV2ZW50VHJpZ2dlckNhY2hlRW50cnkp OwotCWN0bC5oY3h0ID0gRXZlbnRUcmlnZ2VyQ2FjaGVDb250ZXh0OwotCWNhY2hlID0gaGFzaF9j cmVhdGUoIkV2ZW50VHJpZ2dlckNhY2hlSGFzaCIsIDMyLCAmY3RsLAotCQkJCQkJSEFTSF9FTEVN IHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJY2FjaGUgPSBoYXNoX21ha2VfY3h0KEV2 ZW50VHJpZ2dlckNhY2hlRW50cnksIGV2ZW50LAorCQkJCQkJICAiRXZlbnRUcmlnZ2VyQ2FjaGVI YXNoIiwgMzIsCisJCQkJCQkgIEV2ZW50VHJpZ2dlckNhY2hlQ29udGV4dCk7CiAKIAkvKgogCSAq IFByZXBhcmUgdG8gc2NhbiBwZ19ldmVudF90cmlnZ2VyIGluIG5hbWUgb3JkZXIuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2Z1bmNjYWNoZS5jCmluZGV4IGFmYzA0OGEwNTFlLi4zNDQzOGE5ZjkzYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMKQEAgLTU4LDE5ICs1OCwxMyBAQCBzdGF0aWMg aW50CWNmdW5jX21hdGNoKGNvbnN0IHZvaWQgKmtleTEsIGNvbnN0IHZvaWQgKmtleTIsIFNpemUg a2V5c2l6ZSk7CiBzdGF0aWMgdm9pZAogY2Z1bmNfaGFzaHRhYmxlX2luaXQodm9pZCkKIHsKLQlI QVNIQ1RMCQljdGw7Ci0KIAkvKiBkb24ndCBhbGxvdyBkb3VibGUtaW5pdGlhbGl6YXRpb24gKi8K IAlBc3NlcnQoY2Z1bmNfaGFzaHRhYmxlID09IE5VTEwpOwogCi0JY3RsLmtleXNpemUgPSBzaXpl b2YoQ2FjaGVkRnVuY3Rpb25IYXNoS2V5KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKENhY2hl ZEZ1bmN0aW9uSGFzaEVudHJ5KTsKLQljdGwuaGFzaCA9IGNmdW5jX2hhc2g7Ci0JY3RsLm1hdGNo ID0gY2Z1bmNfbWF0Y2g7Ci0JY2Z1bmNfaGFzaHRhYmxlID0gaGFzaF9jcmVhdGUoIkNhY2hlZCBm dW5jdGlvbiBoYXNoIiwKLQkJCQkJCQkJICBGVU5DU19QRVJfVVNFUiwKLQkJCQkJCQkJICAmY3Rs LAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUpOwor CWNmdW5jX2hhc2h0YWJsZSA9IGhhc2hfbWFrZV9mbl9jeHQoQ2FjaGVkRnVuY3Rpb25IYXNoRW50 cnksIGtleSwKKwkJCQkJCQkJCSAgICJDYWNoZWQgZnVuY3Rpb24gaGFzaCIsIEZVTkNTX1BFUl9V U0VSLAorCQkJCQkJCQkJICAgY2Z1bmNfaGFzaCwgY2Z1bmNfbWF0Y2gsCisJCQkJCQkJCQkgICBU b3BNZW1vcnlDb250ZXh0KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmlu ZGV4IDkxNWQwYmM5MDg0Li5iNzZkNmJiZDVjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNo ZS5jCkBAIC0xNjc3LDE3ICsxNjc3LDE0IEBAIExvb2t1cE9wY2xhc3NJbmZvKE9pZCBvcGVyYXRv ckNsYXNzT2lkLAogCiAJaWYgKE9wQ2xhc3NDYWNoZSA9PSBOVUxMKQogCXsKLQkJLyogRmlyc3Qg dGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBvcGNsYXNzIGNhY2hlICovCi0JCUhBU0hDVEwJ CWN0bDsKLQogCQkvKiBBbHNvIG1ha2Ugc3VyZSBDYWNoZU1lbW9yeUNvbnRleHQgZXhpc3RzICov CiAJCWlmICghQ2FjaGVNZW1vcnlDb250ZXh0KQogCQkJQ3JlYXRlQ2FjaGVNZW1vcnlDb250ZXh0 KCk7CiAKLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNp emVvZihPcENsYXNzQ2FjaGVFbnQpOwotCQlPcENsYXNzQ2FjaGUgPSBoYXNoX2NyZWF0ZSgiT3Bl cmF0b3IgY2xhc3MgY2FjaGUiLCA2NCwKLQkJCQkJCQkJICAgJmN0bCwgSEFTSF9FTEVNIHwgSEFT SF9CTE9CUyk7CisJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlhbGl6ZSB0aGUgb3BjbGFz cyBjYWNoZSAqLworCQlPcENsYXNzQ2FjaGUgPSBoYXNoX21ha2VfY3h0KE9wQ2xhc3NDYWNoZUVu dCwgb3BjbGFzc29pZCwKKwkJCQkJCQkJCSAiT3BlcmF0b3IgY2xhc3MgY2FjaGUiLCA2NCwKKwkJ CQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAl9CiAKIAlvcGNlbnRyeSA9IChPcENsYXNzQ2Fj aGVFbnQgKikgaGFzaF9zZWFyY2goT3BDbGFzc0NhY2hlLApAQCAtNDAwMSw3ICszOTk4LDYgQEAg UmVsYXRpb25Bc3N1bWVOZXdSZWxmaWxlbG9jYXRvcihSZWxhdGlvbiByZWxhdGlvbikKIHZvaWQK IFJlbGF0aW9uQ2FjaGVJbml0aWFsaXplKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwogCWludAkJ CWFsbG9jc2l6ZTsKIAogCS8qCkBAIC00MDEzLDEwICs0MDA5LDkgQEAgUmVsYXRpb25DYWNoZUlu aXRpYWxpemUodm9pZCkKIAkvKgogCSAqIGNyZWF0ZSBoYXNodGFibGUgdGhhdCBpbmRleGVzIHRo ZSByZWxjYWNoZQogCSAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihSZWxJZENhY2hlRW50KTsKLQlSZWxhdGlvbklkQ2FjaGUgPSBoYXNoX2Ny ZWF0ZSgiUmVsY2FjaGUgYnkgT0lEIiwgSU5JVFJFTENBQ0hFU0laRSwKLQkJCQkJCQkJICAmY3Rs LCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlSZWxhdGlvbklkQ2FjaGUgPSBoYXNoX21ha2Vf Y3h0KFJlbElkQ2FjaGVFbnQsIHJlbG9pZCwKKwkJCQkJCQkJCSJSZWxjYWNoZSBieSBPSUQiLCBJ TklUUkVMQ0FDSEVTSVpFLAorCQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkvKgogCSAq IHJlc2VydmUgZW5vdWdoIGluX3Byb2dyZXNzX2xpc3Qgc2xvdHMgZm9yIG1hbnkgY2FzZXMKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYwppbmRleCAwYjZmOWNmM2Zh MS4uNjlhYmE0NjNlYWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZp bGVudW1iZXJtYXAuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVy bWFwLmMKQEAgLTg1LDcgKzg1LDYgQEAgUmVsZmlsZW51bWJlck1hcEludmFsaWRhdGVDYWxsYmFj ayhEYXR1bSBhcmcsIE9pZCByZWxpZCkKIHN0YXRpYyB2b2lkCiBJbml0aWFsaXplUmVsZmlsZW51 bWJlck1hcCh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKIAlpbnQJCQlpOwogCiAJLyogTWFrZSBz dXJlIHdlJ3ZlIGluaXRpYWxpemVkIENhY2hlTWVtb3J5Q29udGV4dC4gKi8KQEAgLTExMywxMyAr MTEyLDkgQEAgSW5pdGlhbGl6ZVJlbGZpbGVudW1iZXJNYXAodm9pZCkKIAkgKiBpbml0aWFsaXpl ZCB3aGVuIGZtZ3JfaW5mb19jeHQoKSBhYm92ZSBFUlJPUnMgb3V0IHdpdGggYW4gb3V0IG9mIG1l bW9yeQogCSAqIGVycm9yLgogCSAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKFJlbGZpbGVudW1i ZXJNYXBLZXkpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVsZmlsZW51bWJlck1hcEVudHJ5 KTsKLQljdGwuaGN4dCA9IENhY2hlTWVtb3J5Q29udGV4dDsKLQogCVJlbGZpbGVudW1iZXJNYXBI YXNoID0KLQkJaGFzaF9jcmVhdGUoIlJlbGZpbGVudW1iZXJNYXAgY2FjaGUiLCA2NCwgJmN0bCwK LQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJCWhhc2hfbWFr ZV9jeHQoUmVsZmlsZW51bWJlck1hcEVudHJ5LCBrZXksCisJCQkJCSAgIlJlbGZpbGVudW1iZXJN YXAgY2FjaGUiLCA2NCwgQ2FjaGVNZW1vcnlDb250ZXh0KTsKIAogCS8qIFdhdGNoIGZvciBpbnZh bGlkYXRpb24gZXZlbnRzLiAqLwogCUNhY2hlUmVnaXN0ZXJSZWxjYWNoZUNhbGxiYWNrKFJlbGZp bGVudW1iZXJNYXBJbnZhbGlkYXRlQ2FsbGJhY2ssCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9zcGNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUu YwppbmRleCAyMzQ1ODU5OTI5OC4uYmNmZDZhOWYwZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3Bj Y2FjaGUuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgInV0aWxzL2NhdGNhY2hlLmgiCiAj aW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisjaW5j bHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9zcGNjYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidmFyYXR0LmgiCkBAIC03NywxNCAr NzgsMTAgQEAgSW52YWxpZGF0ZVRhYmxlU3BhY2VDYWNoZUNhbGxiYWNrKERhdHVtIGFyZywgaW50 IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiBzdGF0aWMgdm9pZAogSW5pdGlhbGl6ZVRhYmxl U3BhY2VDYWNoZSh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQogCS8qIEluaXRpYWxpemUgdGhl IGhhc2ggdGFibGUuICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50cnlz aXplID0gc2l6ZW9mKFRhYmxlU3BhY2VDYWNoZUVudHJ5KTsKIAlUYWJsZVNwYWNlQ2FjaGVIYXNo ID0KLQkJaGFzaF9jcmVhdGUoIlRhYmxlU3BhY2UgY2FjaGUiLCAxNiwgJmN0bCwKLQkJCQkJSEFT SF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCWhhc2hfbWFrZV9jeHQoVGFibGVTcGFjZUNhY2hlRW50 cnksIG9pZCwKKwkJCQkJICAiVGFibGVTcGFjZSBjYWNoZSIsIDE2LCBUb3BNZW1vcnlDb250ZXh0 KTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSd2ZSBpbml0aWFsaXplZCBDYWNoZU1lbW9yeUNvbnRleHQu ICovCiAJaWYgKCFDYWNoZU1lbW9yeUNvbnRleHQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS90c19jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHNfY2FjaGUu YwppbmRleCBlOGFlNTMyMzhkMC4uY2ZhNmQ4YjA5YTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHNf Y2FjaGUuYwpAQCAtMTE3LDEyICsxMTcsOSBAQCBsb29rdXBfdHNfcGFyc2VyX2NhY2hlKE9pZCBw cnNJZCkKIAlpZiAoVFNQYXJzZXJDYWNoZUhhc2ggPT0gTlVMTCkKIAl7CiAJCS8qIEZpcnN0IHRp bWUgdGhyb3VnaDogaW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAqLwotCQlIQVNIQ1RMCQljdGw7 Ci0KLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVv ZihUU1BhcnNlckNhY2hlRW50cnkpOwotCQlUU1BhcnNlckNhY2hlSGFzaCA9IGhhc2hfY3JlYXRl KCJUc2VhcmNoIHBhcnNlciBjYWNoZSIsIDQsCi0JCQkJCQkJCQkJJmN0bCwgSEFTSF9FTEVNIHwg SEFTSF9CTE9CUyk7CisJCVRTUGFyc2VyQ2FjaGVIYXNoID0gaGFzaF9tYWtlX2N4dChUU1BhcnNl ckNhY2hlRW50cnksIHByc0lkLAorCQkJCQkJCQkJCSAgIlRzZWFyY2ggcGFyc2VyIGNhY2hlIiwg NCwKKwkJCQkJCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQpOwogCQkvKiBGbHVzaCBjYWNoZSBvbiBw Z190c19wYXJzZXIgY2hhbmdlcyAqLwogCQlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhU U1BBUlNFUk9JRCwgSW52YWxpZGF0ZVRTQ2FjaGVDYWxsQmFjaywKIAkJCQkJCQkJCSAgUG9pbnRl ckdldERhdHVtKFRTUGFyc2VyQ2FjaGVIYXNoKSk7CkBAIC0yMTIsMTIgKzIwOSw5IEBAIGxvb2t1 cF90c19kaWN0aW9uYXJ5X2NhY2hlKE9pZCBkaWN0SWQpCiAJaWYgKFRTRGljdGlvbmFyeUNhY2hl SGFzaCA9PSBOVUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRo ZSBoYXNoIHRhYmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwua2V5c2l6ZSA9IHNpemVv ZihPaWQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFRTRGljdGlvbmFyeUNhY2hlRW50cnkp OwotCQlUU0RpY3Rpb25hcnlDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgiVHNlYXJjaCBkaWN0aW9u YXJ5IGNhY2hlIiwgOCwKLQkJCQkJCQkJCQkJJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7 CisJCVRTRGljdGlvbmFyeUNhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQoVFNEaWN0aW9uYXJ5Q2Fj aGVFbnRyeSwgZGljdElkLAorCQkJCQkJCQkJCQkgICJUc2VhcmNoIGRpY3Rpb25hcnkgY2FjaGUi LCA4LAorCQkJCQkJCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQpOwogCQkvKiBGbHVzaCBjYWNoZSBv biBwZ190c19kaWN0IGFuZCBwZ190c190ZW1wbGF0ZSBjaGFuZ2VzICovCiAJCUNhY2hlUmVnaXN0 ZXJTeXNjYWNoZUNhbGxiYWNrKFRTRElDVE9JRCwgSW52YWxpZGF0ZVRTQ2FjaGVDYWxsQmFjaywK IAkJCQkJCQkJCSAgUG9pbnRlckdldERhdHVtKFRTRGljdGlvbmFyeUNhY2hlSGFzaCkpOwpAQCAt MzYzLDEyICszNTcsOSBAQCBsb29rdXBfdHNfZGljdGlvbmFyeV9jYWNoZShPaWQgZGljdElkKQog c3RhdGljIHZvaWQKIGluaXRfdHNfY29uZmlnX2NhY2hlKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3Rs OwotCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9m KFRTQ29uZmlnQ2FjaGVFbnRyeSk7Ci0JVFNDb25maWdDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgi VHNlYXJjaCBjb25maWd1cmF0aW9uIGNhY2hlIiwgMTYsCi0JCQkJCQkJCQkmY3RsLCBIQVNIX0VM RU0gfCBIQVNIX0JMT0JTKTsKKwlUU0NvbmZpZ0NhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQoVFND b25maWdDYWNoZUVudHJ5LCBjZmdJZCwKKwkJCQkJCQkJCSAgIlRzZWFyY2ggY29uZmlndXJhdGlv biBjYWNoZSIsIDE2LAorCQkJCQkJCQkJICBUb3BNZW1vcnlDb250ZXh0KTsKIAkvKiBGbHVzaCBj YWNoZSBvbiBwZ190c19jb25maWcgYW5kIHBnX3RzX2NvbmZpZ19tYXAgY2hhbmdlcyAqLwogCUNh Y2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFRTQ09ORklHT0lELCBJbnZhbGlkYXRlVFNDYWNo ZUNhbGxCYWNrLAogCQkJCQkJCQkgIFBvaW50ZXJHZXREYXR1bShUU0NvbmZpZ0NhY2hlSGFzaCkp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggNmEzNDc2OThlZGYuLjdlNGZmYmU2 NzA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKQEAgLTM5MiwyOCArMzkyLDIzIEBA IGxvb2t1cF90eXBlX2NhY2hlKE9pZCB0eXBlX2lkLCBpbnQgZmxhZ3MpCiAJaWYgKFR5cGVDYWNo ZUhhc2ggPT0gTlVMTCkKIAl7CiAJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlhbGl6ZSB0 aGUgaGFzaCB0YWJsZSAqLwotCQlIQVNIQ1RMCQljdGw7CiAJCWludAkJCWFsbG9jc2l6ZTsKIAot CQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFR5 cGVDYWNoZUVudHJ5KTsKLQogCQkvKgogCQkgKiBUeXBlQ2FjaGVFbnRyeSB0YWtlcyBoYXNoIHZh bHVlIGZyb20gdGhlIHN5c3RlbSBjYWNoZS4gRm9yCiAJCSAqIFR5cGVDYWNoZUhhc2ggd2UgdXNl IHRoZSBzYW1lIGhhc2ggaW4gb3JkZXIgdG8gc3BlZWR1cCBzZWFyY2ggYnkKIAkJICogaGFzaCB2 YWx1ZS4gVGhpcyBpcyB1c2VkIGJ5IGhhc2hfc2VxX2luaXRfd2l0aF9oYXNoX3ZhbHVlKCkuCiAJ CSAqLwotCQljdGwuaGFzaCA9IHR5cGVfY2FjaGVfc3lzaGFzaDsKLQotCQlUeXBlQ2FjaGVIYXNo ID0gaGFzaF9jcmVhdGUoIlR5cGUgaW5mb3JtYXRpb24gY2FjaGUiLCA2NCwKLQkJCQkJCQkJCSZj dGwsIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04pOworCQlUeXBlQ2FjaGVIYXNoID0gaGFzaF9t YWtlX2ZuX2N4dChUeXBlQ2FjaGVFbnRyeSwgdHlwZV9pZCwKKwkJCQkJCQkJCQkgIlR5cGUgaW5m b3JtYXRpb24gY2FjaGUiLCA2NCwKKwkJCQkJCQkJCQkgdHlwZV9jYWNoZV9zeXNoYXNoLCBOVUxM LAorCQkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAogCQlBc3NlcnQoUmVsSWRUb1R5cGVJ ZENhY2hlSGFzaCA9PSBOVUxMKTsKIAotCQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQlj dGwuZW50cnlzaXplID0gc2l6ZW9mKFJlbElkVG9UeXBlSWRDYWNoZUVudHJ5KTsKLQkJUmVsSWRU b1R5cGVJZENhY2hlSGFzaCA9IGhhc2hfY3JlYXRlKCJNYXAgZnJvbSByZWxpZCB0byBPSUQgb2Yg Y2FjaGVkIGNvbXBvc2l0ZSB0eXBlIiwgNjQsCi0JCQkJCQkJCQkJCSAmY3RsLCBIQVNIX0VMRU0g fCBIQVNIX0JMT0JTKTsKKwkJUmVsSWRUb1R5cGVJZENhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQo UmVsSWRUb1R5cGVJZENhY2hlRW50cnksIHJlbGlkLAorCQkJCQkJCQkJCQkgICAiTWFwIGZyb20g cmVsaWQgdG8gT0lEIG9mIGNhY2hlZCBjb21wb3NpdGUgdHlwZSIsCisJCQkJCQkJCQkJCSAgIDY0 LCBUb3BNZW1vcnlDb250ZXh0KTsKIAogCQkvKiBBbHNvIHNldCB1cCBjYWxsYmFja3MgZm9yIFNJ IGludmFsaWRhdGlvbnMgKi8KIAkJQ2FjaGVSZWdpc3RlclJlbGNhY2hlQ2FsbGJhY2soVHlwZUNh Y2hlUmVsQ2FsbGJhY2ssIChEYXR1bSkgMCk7CkBAIC0yMDUwLDE1ICsyMDQ1LDExIEBAIGFzc2ln bl9yZWNvcmRfdHlwZV90eXBtb2QoVHVwbGVEZXNjIHR1cERlc2MpCiAJaWYgKFJlY29yZENhY2hl SGFzaCA9PSBOVUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRo ZSBoYXNoIHRhYmxlICovCi0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwua2V5c2l6ZSA9IHNpemVv ZihUdXBsZURlc2MpOwkvKiBqdXN0IHRoZSBwb2ludGVyICovCi0JCWN0bC5lbnRyeXNpemUgPSBz aXplb2YoUmVjb3JkQ2FjaGVFbnRyeSk7Ci0JCWN0bC5oYXNoID0gcmVjb3JkX3R5cGVfdHlwbW9k X2hhc2g7Ci0JCWN0bC5tYXRjaCA9IHJlY29yZF90eXBlX3R5cG1vZF9jb21wYXJlOwotCQlSZWNv cmRDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgiUmVjb3JkIGluZm9ybWF0aW9uIGNhY2hlIiwgNjQs Ci0JCQkJCQkJCQkgICZjdGwsCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04g fCBIQVNIX0NPTVBBUkUpOworCQlSZWNvcmRDYWNoZUhhc2ggPSBoYXNoX21ha2VfZm5fY3h0KFJl Y29yZENhY2hlRW50cnksIHR1cGRlc2MsCisJCQkJCQkJCQkJICAgIlJlY29yZCBpbmZvcm1hdGlv biBjYWNoZSIsIDY0LAorCQkJCQkJCQkJCSAgIHJlY29yZF90eXBlX3R5cG1vZF9oYXNoLAorCQkJ CQkJCQkJCSAgIHJlY29yZF90eXBlX3R5cG1vZF9jb21wYXJlLAorCQkJCQkJCQkJCSAgIFRvcE1l bW9yeUNvbnRleHQpOwogCiAJCS8qIEFsc28gbWFrZSBzdXJlIENhY2hlTWVtb3J5Q29udGV4dCBl eGlzdHMgKi8KIAkJaWYgKCFDYWNoZU1lbW9yeUNvbnRleHQpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9mbWdyL2RmbWdyLmMgYi9zcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdyLmMK aW5kZXggMTM2NjUyMWY0NzEuLmY1ODdiYmI0Y2Y5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9mbWdyL2RmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9kZm1nci5jCkBA IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3Jh Z2Uvc2htZW0uaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCisjaW5jbHVkZSAidXRpbHMv bWVtdXRpbHMuaCIKIAogCiAvKiBzaWduYXR1cmUgZm9yIFBvc3RncmVTUUwtc3BlY2lmaWMgbGli cmFyeSBpbml0IGZ1bmN0aW9uICovCkBAIC02NzEsMTQgKzY3Miw5IEBAIGZpbmRfcmVuZGV6dm91 c192YXJpYWJsZShjb25zdCBjaGFyICp2YXJOYW1lKQogCS8qIENyZWF0ZSBhIGhhc2h0YWJsZSBp ZiB3ZSBoYXZlbid0IGFscmVhZHkgZG9uZSBzbyBpbiB0aGlzIHByb2Nlc3MgKi8KIAlpZiAocmVu ZGV6dm91c0hhc2ggPT0gTlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWN0bDsKLQotCQljdGwua2V5c2l6 ZSA9IE5BTUVEQVRBTEVOOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKHJlbmRlenZvdXNIYXNo RW50cnkpOwotCQlyZW5kZXp2b3VzSGFzaCA9IGhhc2hfY3JlYXRlKCJSZW5kZXp2b3VzIHZhcmlh YmxlIGhhc2giLAotCQkJCQkJCQkJIDE2LAotCQkJCQkJCQkJICZjdGwsCi0JCQkJCQkJCQkgSEFT SF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwkJcmVuZGV6dm91c0hhc2ggPSBoYXNoX21ha2VfY3h0 KHJlbmRlenZvdXNIYXNoRW50cnksIHZhck5hbWUsCisJCQkJCQkJCQkgICAiUmVuZGV6dm91cyB2 YXJpYWJsZSBoYXNoIiwgMTYsCisJCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsKIAl9CiAK IAkvKiBGaW5kIG9yIGNyZWF0ZSB0aGUgaGFzaHRhYmxlIGVudHJ5IGZvciB0aGlzIHZhck5hbWUg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvZm1nci9mbWdyLmMKaW5kZXggMGZlNjNjNmJiODMuLmZjODVhMDUzNjdjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9mbWdyL2ZtZ3IuYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgInV0aWxzL2ZtZ3J0 YWIuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUu aCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hl LmgiCiAKIC8qCkBAIC01NDcsMTQgKzU0OCw4IEBAIHJlY29yZF9DX2Z1bmMoSGVhcFR1cGxlIHBy b2NlZHVyZVR1cGxlLAogCS8qIENyZWF0ZSB0aGUgaGFzaCB0YWJsZSBpZiBpdCBkb2Vzbid0IGV4 aXN0IHlldCAqLwogCWlmIChDRnVuY0hhc2ggPT0gTlVMTCkKIAl7Ci0JCUhBU0hDVEwJCWhhc2hf Y3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJaGFzaF9jdGwuZW50 cnlzaXplID0gc2l6ZW9mKENGdW5jSGFzaFRhYkVudHJ5KTsKLQkJQ0Z1bmNIYXNoID0gaGFzaF9j cmVhdGUoIkNGdW5jSGFzaCIsCi0JCQkJCQkJCTEwMCwKLQkJCQkJCQkJJmhhc2hfY3RsLAotCQkJ CQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJQ0Z1bmNIYXNoID0gaGFzaF9tYWtlX2N4 dChDRnVuY0hhc2hUYWJFbnRyeSwgZm5fb2lkLAorCQkJCQkJCQkgICJDRnVuY0hhc2giLCAxMDAs IFRvcE1lbW9yeUNvbnRleHQpOwogCX0KIAogCWVudHJ5ID0gKENGdW5jSGFzaFRhYkVudHJ5ICop CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWMuYwppbmRleCBjNjQ4NGFlYTA4Ny4uZjM4OTdjOTUzZDMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWMuYwpAQCAtODcxLDcgKzg3MSw2IEBAIGJ1aWxkX2d1Y192YXJpYWJsZXModm9pZCkK IHsKIAlpbnQJCQlzaXplX3ZhcnM7CiAJaW50CQkJbnVtX3ZhcnMgPSAwOwotCUhBU0hDVEwJCWhh c2hfY3RsOwogCUdVQ0hhc2hFbnRyeSAqaGVudHJ5OwogCWJvb2wJCWZvdW5kOwogCkBAIC04OTQs MTUgKzg5MywxMCBAQCBidWlsZF9ndWNfdmFyaWFibGVzKHZvaWQpCiAJICovCiAJc2l6ZV92YXJz ID0gbnVtX3ZhcnMgKyBudW1fdmFycyAvIDQ7CiAKLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9m KGNoYXIgKik7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKEdVQ0hhc2hFbnRyeSk7Ci0J aGFzaF9jdGwuaGFzaCA9IGd1Y19uYW1lX2hhc2g7Ci0JaGFzaF9jdGwubWF0Y2ggPSBndWNfbmFt ZV9tYXRjaDsKLQloYXNoX2N0bC5oY3h0ID0gR1VDTWVtb3J5Q29udGV4dDsKLQlndWNfaGFzaHRh YiA9IGhhc2hfY3JlYXRlKCJHVUMgaGFzaCB0YWJsZSIsCi0JCQkJCQkJICBzaXplX3ZhcnMsCi0J CQkJCQkJICAmaGFzaF9jdGwsCi0JCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwg SEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsKKwlndWNfaGFzaHRhYiA9IGhhc2hfbWFrZV9m bl9jeHQoR1VDSGFzaEVudHJ5LCBndWNuYW1lLAorCQkJCQkJCQkgICAiR1VDIGhhc2ggdGFibGUi LCBzaXplX3ZhcnMsCisJCQkJCQkJCSAgIGd1Y19uYW1lX2hhc2gsIGd1Y19uYW1lX21hdGNoLAor CQkJCQkJCQkgICBHVUNNZW1vcnlDb250ZXh0KTsKIAogCWZvciAoaW50IGkgPSAwOyBDb25maWd1 cmVOYW1lc1tpXS5uYW1lOyBpKyspCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9pbmplY3Rpb25fcG9pbnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvaW5qZWN0aW9u X3BvaW50LmMKaW5kZXggZDAyNjE4YzdmZmUuLjUwNzUzOTlmMDE3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9taXNjL2luamVjdGlvbl9wb2ludC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvaW5qZWN0aW9uX3BvaW50LmMKQEAgLTEyNywxNiArMTI3LDEwIEBAIGluamVjdGlv bl9wb2ludF9jYWNoZV9hZGQoY29uc3QgY2hhciAqbmFtZSwKIAkvKiBJZiBmaXJzdCB0aW1lLCBp bml0aWFsaXplICovCiAJaWYgKEluamVjdGlvblBvaW50Q2FjaGUgPT0gTlVMTCkKIAl7Ci0JCUhB U0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoY2hhcltJTkpf TkFNRV9NQVhMRU5dKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKEluamVjdGlvblBv aW50Q2FjaGVFbnRyeSk7Ci0JCWhhc2hfY3RsLmhjeHQgPSBUb3BNZW1vcnlDb250ZXh0OwotCi0J CUluamVjdGlvblBvaW50Q2FjaGUgPSBoYXNoX2NyZWF0ZSgiSW5qZWN0aW9uUG9pbnQgY2FjaGUg aGFzaCIsCi0JCQkJCQkJCQkJICBNQVhfSU5KRUNUSU9OX1BPSU5UUywKLQkJCQkJCQkJCQkgICZo YXNoX2N0bCwKLQkJCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfQ09O VEVYVCk7CisJCUluamVjdGlvblBvaW50Q2FjaGUgPSBoYXNoX21ha2VfY3h0KEluamVjdGlvblBv aW50Q2FjaGVFbnRyeSwgbmFtZSwKKwkJCQkJCQkJCQkJIkluamVjdGlvblBvaW50IGNhY2hlIGhh c2giLAorCQkJCQkJCQkJCQlNQVhfSU5KRUNUSU9OX1BPSU5UUywKKwkJCQkJCQkJCQkJVG9wTWVt b3J5Q29udGV4dCk7CiAJfQogCiAJZW50cnkgPSAoSW5qZWN0aW9uUG9pbnRDYWNoZUVudHJ5ICop CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwppbmRleCA5NDNkYTA4N2M5Zi4uODI0MWQzMmYw YzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpAQCAtMTAzLDIzICsxMDMsMTkgQEAg c3RhdGljIE1lbW9yeUNvbnRleHQgVG9wUG9ydGFsQ29udGV4dCA9IE5VTEw7CiB2b2lkCiBFbmFi bGVQb3J0YWxNYW5hZ2VyKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwotCiAJQXNzZXJ0KFRvcFBv cnRhbENvbnRleHQgPT0gTlVMTCk7CiAKIAlUb3BQb3J0YWxDb250ZXh0ID0gQWxsb2NTZXRDb250 ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCiAJCQkJCQkJCQkJCSAiVG9wUG9ydGFsQ29udGV4 dCIsCiAJCQkJCQkJCQkJCSBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAotCWN0bC5rZXlzaXpl ID0gTUFYX1BPUlRBTE5BTUVfTEVOOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUG9ydGFsSGFz aEVudCk7Ci0KIAkvKgogCSAqIHVzZSBQT1JUQUxTX1BFUl9VU0VSIGFzIGEgZ3Vlc3Mgb2YgaG93 IG1hbnkgaGFzaCB0YWJsZSBlbnRyaWVzIHRvCiAJICogY3JlYXRlLCBpbml0aWFsbHkKIAkgKi8K LQlQb3J0YWxIYXNoVGFibGUgPSBoYXNoX2NyZWF0ZSgiUG9ydGFsIGhhc2giLCBQT1JUQUxTX1BF Ul9VU0VSLAotCQkJCQkJCQkgICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJUG9y dGFsSGFzaFRhYmxlID0gaGFzaF9tYWtlX2N4dChQb3J0YWxIYXNoRW50LCBwb3J0YWxuYW1lLAor CQkJCQkJCQkJIlBvcnRhbCBoYXNoIiwgUE9SVEFMU19QRVJfVVNFUiwKKwkJCQkJCQkJCVRvcE1l bW9yeUNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvdGlt ZS9jb21ib2NpZC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9jb21ib2NpZC5jCmluZGV4IDFl ODE1NTcxNTcwLi45MjY2MmE2MzE3NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvdGlt ZS9jb21ib2NpZC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvY29tYm9jaWQuYwpAQCAt MjE0LDggKzIxNCw2IEBAIEdldENvbWJvQ29tbWFuZElkKENvbW1hbmRJZCBjbWluLCBDb21tYW5k SWQgY21heCkKIAkgKi8KIAlpZiAoY29tYm9IYXNoID09IE5VTEwpCiAJewotCQlIQVNIQ1RMCQlo YXNoX2N0bDsKLQogCQkvKiBNYWtlIGFycmF5IGZpcnN0OyBleGlzdGVuY2Ugb2YgaGFzaCB0YWJs ZSBhc3NlcnRzIGFycmF5IGV4aXN0cyAqLwogCQljb21ib0NpZHMgPSAoQ29tYm9DaWRLZXlEYXRh ICopCiAJCQlNZW1vcnlDb250ZXh0QWxsb2MoVG9wVHJhbnNhY3Rpb25Db250ZXh0LApAQCAtMjIz LDE0ICsyMjEsOSBAQCBHZXRDb21ib0NvbW1hbmRJZChDb21tYW5kSWQgY21pbiwgQ29tbWFuZElk IGNtYXgpCiAJCXNpemVDb21ib0NpZHMgPSBDQ0lEX0FSUkFZX1NJWkU7CiAJCXVzZWRDb21ib0Np ZHMgPSAwOwogCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoQ29tYm9DaWRLZXlEYXRhKTsK LQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKENvbWJvQ2lkRW50cnlEYXRhKTsKLQkJaGFz aF9jdGwuaGN4dCA9IFRvcFRyYW5zYWN0aW9uQ29udGV4dDsKLQotCQljb21ib0hhc2ggPSBoYXNo X2NyZWF0ZSgiQ29tYm8gQ0lEcyIsCi0JCQkJCQkJCUNDSURfSEFTSF9TSVpFLAotCQkJCQkJCQkm aGFzaF9jdGwsCi0JCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQp OworCQljb21ib0hhc2ggPSBoYXNoX21ha2VfY3h0KENvbWJvQ2lkRW50cnlEYXRhLCBrZXksCisJ CQkJCQkJCSAgIkNvbWJvIENJRHMiLCBDQ0lEX0hBU0hfU0laRSwKKwkJCQkJCQkJICBUb3BUcmFu c2FjdGlvbkNvbnRleHQpOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZXJsL3Bs cGVybC5jIGIvc3JjL3BsL3BscGVybC9wbHBlcmwuYwppbmRleCA3M2JhMTc0OGZlMC4uZTIxMWY4 MjFlZGMgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBlcmwvcGxwZXJsLmMKKysrIGIvc3JjL3BsL3Bs cGVybC9wbHBlcmwuYwpAQCAtMzkwLDcgKzM5MCw2IEBAIF9QR19pbml0KHZvaWQpCiAJICogInBs cGVybC51c2Vfc3RyaWN0IgogCSAqLwogCXN0YXRpYyBib29sIGluaXRlZCA9IGZhbHNlOwotCUhB U0hDVEwJCWhhc2hfY3RsOwogCiAJaWYgKGluaXRlZCkKIAkJcmV0dXJuOwpAQCAtNDYwLDE5ICs0 NTksMTMgQEAgX1BHX2luaXQodm9pZCkKIAkvKgogCSAqIENyZWF0ZSBoYXNoIHRhYmxlcy4KIAkg Ki8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXpl ID0gc2l6ZW9mKHBscGVybF9pbnRlcnBfZGVzYyk7Ci0JcGxwZXJsX2ludGVycF9oYXNoID0gaGFz aF9jcmVhdGUoIlBML1BlcmwgaW50ZXJwcmV0ZXJzIiwKLQkJCQkJCQkJCSA4LAotCQkJCQkJCQkJ ICZoYXNoX2N0bCwKLQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKLQotCWhhc2hf Y3RsLmtleXNpemUgPSBzaXplb2YocGxwZXJsX3Byb2Nfa2V5KTsKLQloYXNoX2N0bC5lbnRyeXNp emUgPSBzaXplb2YocGxwZXJsX3Byb2NfcHRyKTsKLQlwbHBlcmxfcHJvY19oYXNoID0gaGFzaF9j cmVhdGUoIlBML1BlcmwgcHJvY2VkdXJlcyIsCi0JCQkJCQkJCSAgIDMyLAotCQkJCQkJCQkgICAm aGFzaF9jdGwsCi0JCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCXBscGVybF9p bnRlcnBfaGFzaCA9IGhhc2hfbWFrZV9jeHQocGxwZXJsX2ludGVycF9kZXNjLCB1c2VyX2lkLAor CQkJCQkJCQkJICAgIlBML1BlcmwgaW50ZXJwcmV0ZXJzIiwgOCwKKwkJCQkJCQkJCSAgIFRvcE1l bW9yeUNvbnRleHQpOworCisJcGxwZXJsX3Byb2NfaGFzaCA9IGhhc2hfbWFrZV9jeHQocGxwZXJs X3Byb2NfcHRyLCBwcm9jX2tleSwKKwkJCQkJCQkJCSAiUEwvUGVybCBwcm9jZWR1cmVzIiwgMzIs CisJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkvKgogCSAqIFNhdmUgdGhlIGRlZmF1 bHQgb3BtYXNrLgpAQCAtNTc4LDE0ICs1NzEsOSBAQCBzZWxlY3RfcGVybF9jb250ZXh0KGJvb2wg dHJ1c3RlZCkKIAkvKiBNYWtlIHN1cmUgd2UgaGF2ZSBhIHF1ZXJ5X2hhc2ggZm9yIHRoaXMgaW50 ZXJwcmV0ZXIgKi8KIAlpZiAoaW50ZXJwX2Rlc2MtPnF1ZXJ5X2hhc2ggPT0gTlVMTCkKIAl7Ci0J CUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUgPSBOQU1FREFUQUxFTjsK LQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKHBscGVybF9xdWVyeV9lbnRyeSk7Ci0JCWlu dGVycF9kZXNjLT5xdWVyeV9oYXNoID0gaGFzaF9jcmVhdGUoIlBML1BlcmwgcXVlcmllcyIsCi0J CQkJCQkJCQkJCSAgMzIsCi0JCQkJCQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJCQkJCQkgIEhB U0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJCWludGVycF9kZXNjLT5xdWVyeV9oYXNoID0gaGFz aF9tYWtlX2N4dChwbHBlcmxfcXVlcnlfZW50cnksIHF1ZXJ5X25hbWUsCisJCQkJCQkJCQkJCQki UEwvUGVybCBxdWVyaWVzIiwgMzIsCisJCQkJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIAl9 CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYyBiL3NyYy9w bC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKaW5kZXggZDE5NDI1YjdhNzEuLmYzYjQ2OTQzMmFhIDEw MDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCisrKyBiL3NyYy9wbC9wbHBn c3FsL3NyYy9wbF9leGVjLmMKQEAgLTM5OTYsOCArMzk5Niw2IEBAIHBscGdzcWxfZXN0YXRlX3Nl dHVwKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCQkJCSBFU3RhdGUgKnNpbXBsZV9ldmFs X2VzdGF0ZSwKIAkJCQkJIFJlc291cmNlT3duZXIgc2ltcGxlX2V2YWxfcmVzb3duZXIpCiB7Ci0J SEFTSENUTAkJY3RsOwotCiAJLyogdGhpcyBsaW5rIHdpbGwgYmUgcmVzdG9yZWQgYXQgZXhpdCBm cm9tIHBscGdzcWxfY2FsbF9oYW5kbGVyICovCiAJZnVuYy0+Y3VyX2VzdGF0ZSA9IGVzdGF0ZTsK IApAQCAtNDA1MiwxMiArNDA1MCwxMCBAQCBwbHBnc3FsX2VzdGF0ZV9zZXR1cChQTHBnU1FMX2V4 ZWNzdGF0ZSAqZXN0YXRlLAogCS8qIENyZWF0ZSB0aGUgc2Vzc2lvbi13aWRlIGNhc3QtZXhwcmVz c2lvbiBoYXNoIGlmIHdlIGRpZG4ndCBhbHJlYWR5ICovCiAJaWYgKGNhc3RfZXhwcl9oYXNoID09 IE5VTEwpCiAJewotCQljdGwua2V5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RIYXNoS2V5KTsK LQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RFeHBySGFzaEVudHJ5KTsKLQkJ Y2FzdF9leHByX2hhc2ggPSBoYXNoX2NyZWF0ZSgiUExwZ1NRTCBjYXN0IGV4cHJlc3Npb25zIiwK LQkJCQkJCQkJCSAxNiwJLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAqLwotCQkJCQkJCQkJICZj dGwsCi0JCQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJCWNhc3RfZXhwcl9oYXNo ID0gaGFzaF9tYWtlX2N4dChwbHBnc3FsX0Nhc3RFeHBySGFzaEVudHJ5LCBrZXksCisJCQkJCQkJ CQkgICAiUExwZ1NRTCBjYXN0IGV4cHJlc3Npb25zIiwKKwkJCQkJCQkJCSAgIDE2LAkvKiBzdGFy dCBzbWFsbCBhbmQgZXh0ZW5kICovCisJCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsKIAl9 CiAKIAkvKiBzZXQgdXAgZm9yIHVzZSBvZiBhcHByb3ByaWF0ZSBzaW1wbGUtZXhwcmVzc2lvbiBF U3RhdGUgYW5kIGNhc3QgaGFzaCAqLwpAQCAtNDA2NSwxMyArNDA2MSw5IEBAIHBscGdzcWxfZXN0 YXRlX3NldHVwKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJewogCQllc3RhdGUtPnNpbXBs ZV9ldmFsX2VzdGF0ZSA9IHNpbXBsZV9ldmFsX2VzdGF0ZTsKIAkJLyogUHJpdmF0ZSBjYXN0IGhh c2gganVzdCBsaXZlcyBpbiBmdW5jdGlvbidzIG1haW4gY29udGV4dCAqLwotCQljdGwua2V5c2l6 ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RIYXNoS2V5KTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVv ZihwbHBnc3FsX0Nhc3RIYXNoRW50cnkpOwotCQljdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250 ZXh0OwotCQllc3RhdGUtPmNhc3RfaGFzaCA9IGhhc2hfY3JlYXRlKCJQTHBnU1FMIHByaXZhdGUg Y2FzdCBjYWNoZSIsCi0JCQkJCQkJCQkJMTYsIC8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8K LQkJCQkJCQkJCQkmY3RsLAotCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNI X0NPTlRFWFQpOworCQllc3RhdGUtPmNhc3RfaGFzaCA9IGhhc2hfbWFrZShwbHBnc3FsX0Nhc3RI YXNoRW50cnksIGtleSwKKwkJCQkJCQkJCSAgIlBMcGdTUUwgcHJpdmF0ZSBjYXN0IGNhY2hlIiwK KwkJCQkJCQkJCSAgMTYpOwkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCiAJfQogCWVsc2UK IAl7CkBAIC00MDc5LDEyICs0MDcxLDEwIEBAIHBscGdzcWxfZXN0YXRlX3NldHVwKFBMcGdTUUxf ZXhlY3N0YXRlICplc3RhdGUsCiAJCS8qIENyZWF0ZSB0aGUgc2Vzc2lvbi13aWRlIGNhc3QtaW5m byBoYXNoIHRhYmxlIGlmIHdlIGRpZG4ndCBhbHJlYWR5ICovCiAJCWlmIChzaGFyZWRfY2FzdF9o YXNoID09IE5VTEwpCiAJCXsKLQkJCWN0bC5rZXlzaXplID0gc2l6ZW9mKHBscGdzcWxfQ2FzdEhh c2hLZXkpOwotCQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwbHBnc3FsX0Nhc3RIYXNoRW50cnkp OwotCQkJc2hhcmVkX2Nhc3RfaGFzaCA9IGhhc2hfY3JlYXRlKCJQTHBnU1FMIGNhc3QgY2FjaGUi LAotCQkJCQkJCQkJCSAgIDE2LAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCi0JCQkJCQkJ CQkJICAgJmN0bCwKLQkJCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJCXNo YXJlZF9jYXN0X2hhc2ggPSBoYXNoX21ha2VfY3h0KHBscGdzcWxfQ2FzdEhhc2hFbnRyeSwga2V5 LAorCQkJCQkJCQkJCQkgIlBMcGdTUUwgY2FzdCBjYWNoZSIsCisJCQkJCQkJCQkJCSAxNiwJLyog c3RhcnQgc21hbGwgYW5kIGV4dGVuZCAqLworCQkJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7 CiAJCX0KIAkJZXN0YXRlLT5jYXN0X2hhc2ggPSBzaGFyZWRfY2FzdF9oYXNoOwogCX0KZGlmZiAt LWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYyBiL3NyYy9wbC9wbHB5dGhv bi9wbHB5X3BscHltb2R1bGUuYwppbmRleCA4OTkzMTYxMmM1Yi4uYjI2OGIzODBjZDUgMTAwNjQ0 Ci0tLSBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYworKysgYi9zcmMvcGwvcGxw eXRob24vcGxweV9wbHB5bW9kdWxlLmMKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJwbHB5 X3N1YnhhY3RvYmplY3QuaCIKICNpbmNsdWRlICJwbHB5X3V0aWwuaCIKICNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKIEhUQUIJICAgKlBM eV9zcGlfZXhjZXB0aW9ucyA9IE5VTEw7CiAKQEAgLTE3Miw3ICsxNzMsNiBAQCBzdGF0aWMgdm9p ZAogUEx5X2FkZF9leGNlcHRpb25zKFB5T2JqZWN0ICpwbHB5KQogewogCVB5T2JqZWN0ICAgKmV4 Y21vZDsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAogCWV4Y21vZCA9IFB5TW9kdWxlX0NyZWF0ZSgm UEx5X2V4Y19tb2R1bGUpOwogCWlmIChleGNtb2QgPT0gTlVMTCkKQEAgLTE5MywxMCArMTkzLDkg QEAgUEx5X2FkZF9leGNlcHRpb25zKFB5T2JqZWN0ICpwbHB5KQogCVBMeV9leGNfc3BpX2Vycm9y ID0gUEx5X2NyZWF0ZV9leGNlcHRpb24oInBscHkuU1BJRXJyb3IiLCBOVUxMLCBOVUxMLAogCQkJ CQkJCQkJCQkgIlNQSUVycm9yIiwgcGxweSk7CiAKLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9m KGludCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFBMeUV4Y2VwdGlvbkVudHJ5KTsK LQlQTHlfc3BpX2V4Y2VwdGlvbnMgPSBoYXNoX2NyZWF0ZSgiUEwvUHl0aG9uIFNQSSBleGNlcHRp b25zIiwgMjU2LAotCQkJCQkJCQkJICZoYXNoX2N0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7 CisJUEx5X3NwaV9leGNlcHRpb25zID0gaGFzaF9tYWtlX2N4dChQTHlFeGNlcHRpb25FbnRyeSwg c3Fsc3RhdGUsCisJCQkJCQkJCQkgICAiUEwvUHl0aG9uIFNQSSBleGNlcHRpb25zIiwgMjU2LAor CQkJCQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAlQTHlfZ2VuZXJhdGVfc3BpX2V4Y2Vw dGlvbnMoZXhjbW9kLCBQTHlfZXhjX3NwaV9lcnJvcik7CiB9CmRpZmYgLS1naXQgYS9zcmMvcGwv cGxweXRob24vcGxweV9wcm9jZWR1cmUuYyBiL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVy ZS5jCmluZGV4IDY1NWFiMWQwOWVlLi42MzE3NjA2ZTAxZSAxMDA2NDQKLS0tIGEvc3JjL3BsL3Bs cHl0aG9uL3BscHlfcHJvY2VkdXJlLmMKKysrIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfcHJvY2Vk dXJlLmMKQEAgLTI5LDEyICsyOSw5IEBAIHN0YXRpYyBjaGFyICpQTHlfcHJvY2VkdXJlX211bmdl X3NvdXJjZShjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzcmMpOwogdm9pZAogaW5pdF9w cm9jZWR1cmVfY2FjaGVzKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQloYXNoX2N0 bC5rZXlzaXplID0gc2l6ZW9mKFBMeVByb2NlZHVyZUtleSk7Ci0JaGFzaF9jdGwuZW50cnlzaXpl ID0gc2l6ZW9mKFBMeVByb2NlZHVyZUVudHJ5KTsKLQlQTHlfcHJvY2VkdXJlX2NhY2hlID0gaGFz aF9jcmVhdGUoIlBML1B5dGhvbiBwcm9jZWR1cmVzIiwgMzIsICZoYXNoX2N0bCwKLQkJCQkJCQkJ CSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJUEx5X3Byb2NlZHVyZV9jYWNoZSA9IGhhc2hf bWFrZV9jeHQoUEx5UHJvY2VkdXJlRW50cnksIGtleSwKKwkJCQkJCQkJCQkiUEwvUHl0aG9uIHBy b2NlZHVyZXMiLCAzMiwKKwkJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9wbC90Y2wvcGx0Y2wuYyBiL3NyYy9wbC90Y2wvcGx0Y2wuYwppbmRleCA3 M2Q2NjBlODhhNi4uYTNlZjQyOWQ5MjYgMTAwNjQ0Ci0tLSBhL3NyYy9wbC90Y2wvcGx0Y2wuYwor KysgYi9zcmMvcGwvdGNsL3BsdGNsLmMKQEAgLTQwOCw3ICs0MDgsNiBAQCB2b2lkCiBfUEdfaW5p dCh2b2lkKQogewogCVRjbF9Ob3RpZmllclByb2NzIG5vdGlmaWVyOwotCUhBU0hDVEwJCWhhc2hf Y3RsOwogCiAJLyogQmUgc3VyZSB3ZSBkbyBpbml0aWFsaXphdGlvbiBvbmx5IG9uY2UgKHNob3Vs ZCBiZSByZWR1bmRhbnQgbm93KSAqLwogCWlmIChwbHRjbF9wbV9pbml0X2RvbmUpCkBAIC00NDYs MjIgKzQ0NSwxNiBAQCBfUEdfaW5pdCh2b2lkKQogCS8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAkgKiBDcmVhdGUgdGhlIGhhc2gg dGFibGUgZm9yIHdvcmtpbmcgaW50ZXJwcmV0ZXJzCiAJICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQloYXNoX2N0bC5rZXlzaXpl ID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKHBsdGNsX2ludGVy cF9kZXNjKTsKLQlwbHRjbF9pbnRlcnBfaHRhYiA9IGhhc2hfY3JlYXRlKCJQTC9UY2wgaW50ZXJw cmV0ZXJzIiwKLQkJCQkJCQkJCTgsCi0JCQkJCQkJCQkmaGFzaF9jdGwsCi0JCQkJCQkJCQlIQVNI X0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlwbHRjbF9pbnRlcnBfaHRhYiA9IGhhc2hfbWFrZV9jeHQo cGx0Y2xfaW50ZXJwX2Rlc2MsIHVzZXJfaWQsCisJCQkJCQkJCQkgICJQTC9UY2wgaW50ZXJwcmV0 ZXJzIiwgOCwKKwkJCQkJCQkJCSAgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAJICogQ3Jl YXRlIHRoZSBoYXNoIHRhYmxlIGZvciBmdW5jdGlvbiBsb29rdXAKIAkgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCWhhc2hfY3Rs LmtleXNpemUgPSBzaXplb2YocGx0Y2xfcHJvY19rZXkpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9 IHNpemVvZihwbHRjbF9wcm9jX3B0cik7Ci0JcGx0Y2xfcHJvY19odGFiID0gaGFzaF9jcmVhdGUo IlBML1RjbCBmdW5jdGlvbnMiLAotCQkJCQkJCQkgIDEwMCwKLQkJCQkJCQkJICAmaGFzaF9jdGws Ci0JCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJcGx0Y2xfcHJvY19odGFiID0g aGFzaF9tYWtlX2N4dChwbHRjbF9wcm9jX3B0ciwgcHJvY19rZXksCisJCQkJCQkJCQkiUEwvVGNs IGZ1bmN0aW9ucyIsIDEwMCwKKwkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgog CSAqIERlZmluZSBQTC9UY2wncyBjdXN0b20gR1VDcwpkaWZmIC0tZ2l0IGEvc3JjL3RpbWV6b25l L3BndHouYyBiL3NyYy90aW1lem9uZS9wZ3R6LmMKaW5kZXggNTA0YzAyMzVmZmIuLmNlMGVkZjk4 MjY2IDEwMDY0NAotLS0gYS9zcmMvdGltZXpvbmUvcGd0ei5jCisrKyBiL3NyYy90aW1lem9uZS9w Z3R6LmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJwZ3R6LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9mZC5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNpbmNsdWRlICJ1dGlscy9t ZW11dGlscy5oIgogCiAKIC8qIEN1cnJlbnQgc2Vzc2lvbiB0aW1lem9uZSAoY29udHJvbGxlZCBi eSBUaW1lWm9uZSBHVUMpICovCkBAIC0yMDEsMTUgKzIwMiw4IEBAIHN0YXRpYyBIVEFCICp0aW1l em9uZV9jYWNoZSA9IE5VTEw7CiBzdGF0aWMgYm9vbAogaW5pdF90aW1lem9uZV9oYXNodGFibGUo dm9pZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKLQotCWhhc2hfY3RsLmtleXNpemUgPSBUWl9T VFJMRU5fTUFYICsgMTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YocGdfdHpfY2FjaGUp OwotCi0JdGltZXpvbmVfY2FjaGUgPSBoYXNoX2NyZWF0ZSgiVGltZXpvbmVzIiwKLQkJCQkJCQkJ IDQsCi0JCQkJCQkJCSAmaGFzaF9jdGwsCi0JCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX1NUUklO R1MpOworCXRpbWV6b25lX2NhY2hlID0gaGFzaF9tYWtlX2N4dChwZ190el9jYWNoZSwgdHpuYW1l dXBwZXIsCisJCQkJCQkJCSAgICJUaW1lem9uZXMiLCA0LCBUb3BNZW1vcnlDb250ZXh0KTsKIAlp ZiAoIXRpbWV6b25lX2NhY2hlKQogCQlyZXR1cm4gZmFsc2U7CiAKLS0gCjIuNTIuMAoK --1f5aa97c3717d9898fe1632888cf97f42cb8cdb8e993b8ebf6ce2dd0f12d Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0003-Inline-functions-that-have-now-become-trivial.patch Content-Type: text/x-patch; charset=utf-8; name=v2-0003-Inline-functions-that-have-now-become-trivial.patch RnJvbSA3MmUzZmQyNjhjZWM1MjMyZDJkY2Y2MjdkZTY4NTdiOTlmODVlM2ZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMjM6MzM6MTggKzAxMDAKU3ViamVjdDogW1BBVENIIHYy IDMvNV0gSW5saW5lIGZ1bmN0aW9ucyB0aGF0IGhhdmUgbm93IGJlY29tZSB0cml2aWFsCgotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgIHwgMTcgKysrLS0tLS0tLS0tLS0t LS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgIHwgMTYgKysrLS0tLS0tLS0t LS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMgfCAyMiArKysrLS0tLS0t LS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDQ1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCAwMDAyYzZkYzk5My4uY2M5NTBjZTI4 ODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTQ2LDcgKzQ2LDYgQEAKICAqLwogc3RhdGlj IEhUQUIgKnByZXBhcmVkX3F1ZXJpZXMgPSBOVUxMOwogCi1zdGF0aWMgdm9pZCBJbml0UXVlcnlI YXNoVGFibGUodm9pZCk7CiBzdGF0aWMgUGFyYW1MaXN0SW5mbyBFdmFsdWF0ZVBhcmFtcyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQlQcmVwYXJlZFN0YXRlbWVudCAqcHN0bXQsIExpc3Qg KnBhcmFtcywKIAkJCQkJCQkJCUVTdGF0ZSAqZXN0YXRlKTsKQEAgLTM2NCwxOCArMzYzLDYgQEAg RXZhbHVhdGVQYXJhbXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQcmVwYXJlZFN0YXRlbWVudCAqcHN0 bXQsIExpc3QgKnBhcmFtcywKIAlyZXR1cm4gcGFyYW1MSTsKIH0KIAotCi0vKgotICogSW5pdGlh bGl6ZSBxdWVyeSBoYXNoIHRhYmxlIHVwb24gZmlyc3QgdXNlLgotICovCi1zdGF0aWMgdm9pZAot SW5pdFF1ZXJ5SGFzaFRhYmxlKHZvaWQpCi17Ci0JcHJlcGFyZWRfcXVlcmllcyA9IGhhc2hfbWFr ZV9jeHQoUHJlcGFyZWRTdGF0ZW1lbnQsIHN0bXRfbmFtZSwKLQkJCQkJCQkJCSAiUHJlcGFyZWQg UXVlcmllcyIsIDMyLAotCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwotfQotCiAvKgogICog U3RvcmUgYWxsIHRoZSBkYXRhIHBlcnRhaW5pbmcgdG8gYSBxdWVyeSBpbiB0aGUgaGFzaCB0YWJs ZSB1c2luZwogICogdGhlIHNwZWNpZmllZCBrZXkuICBUaGUgcGFzc2VkIENhY2hlZFBsYW5Tb3Vy Y2Ugc2hvdWxkIGJlICJ1bnNhdmVkIgpAQCAtMzkzLDcgKzM4MCw5IEBAIFN0b3JlUHJlcGFyZWRT dGF0ZW1lbnQoY29uc3QgY2hhciAqc3RtdF9uYW1lLAogCiAJLyogSW5pdGlhbGl6ZSB0aGUgaGFz aCB0YWJsZSwgaWYgbmVjZXNzYXJ5ICovCiAJaWYgKCFwcmVwYXJlZF9xdWVyaWVzKQotCQlJbml0 UXVlcnlIYXNoVGFibGUoKTsKKwkJcHJlcGFyZWRfcXVlcmllcyA9IGhhc2hfbWFrZV9jeHQoUHJl cGFyZWRTdGF0ZW1lbnQsIHN0bXRfbmFtZSwKKwkJCQkJCQkJCQkgIlByZXBhcmVkIFF1ZXJpZXMi LCAzMiwKKwkJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkvKiBBZGQgZW50cnkgdG8g aGFzaCB0YWJsZSAqLwogCWVudHJ5ID0gKFByZXBhcmVkU3RhdGVtZW50ICopIGhhc2hfc2VhcmNo KHByZXBhcmVkX3F1ZXJpZXMsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1 ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwppbmRleCA1ZmJiM2NlOTAz MC4uYWEwMzc5MDE2MTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNl LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwpAQCAtODksNyArODksNiBA QCBzdGF0aWMgU2VxVGFibGVEYXRhICpsYXN0X3VzZWRfc2VxID0gTlVMTDsKIHN0YXRpYyB2b2lk IGZpbGxfc2VxX3dpdGhfZGF0YShSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXBsZSk7CiBzdGF0 aWMgdm9pZCBmaWxsX3NlcV9mb3JrX3dpdGhfZGF0YShSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0 dXBsZSwgRm9ya051bWJlciBmb3JrTnVtKTsKIHN0YXRpYyBSZWxhdGlvbiBsb2NrX2FuZF9vcGVu X3NlcXVlbmNlKFNlcVRhYmxlIHNlcSk7Ci1zdGF0aWMgdm9pZCBjcmVhdGVfc2VxX2hhc2h0YWJs ZSh2b2lkKTsKIHN0YXRpYyB2b2lkIGluaXRfc2VxdWVuY2UoT2lkIHJlbGlkLCBTZXFUYWJsZSAq cF9lbG0sIFJlbGF0aW9uICpwX3JlbCk7CiBzdGF0aWMgRm9ybV9wZ19zZXF1ZW5jZV9kYXRhIHJl YWRfc2VxX3R1cGxlKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJQnVmZmVyICpidWYsIEhlYXBU dXBsZSBzZXFkYXRhdHVwbGUpOwpAQCAtMTEwNywxNyArMTEwNiw2IEBAIGxvY2tfYW5kX29wZW5f c2VxdWVuY2UoU2VxVGFibGUgc2VxKQogCXJldHVybiBzZXF1ZW5jZV9vcGVuKHNlcS0+cmVsaWQs IE5vTG9jayk7CiB9CiAKLS8qCi0gKiBDcmVhdGVzIHRoZSBoYXNoIHRhYmxlIGZvciBzdG9yaW5n IHNlcXVlbmNlIGRhdGEKLSAqLwotc3RhdGljIHZvaWQKLWNyZWF0ZV9zZXFfaGFzaHRhYmxlKHZv aWQpCi17Ci0Jc2VxaGFzaHRhYiA9IGhhc2hfbWFrZV9jeHQoU2VxVGFibGVEYXRhLCByZWxpZCwK LQkJCQkJCQkgICAiU2VxdWVuY2UgdmFsdWVzIiwgMTYsCi0JCQkJCQkJICAgVG9wTWVtb3J5Q29u dGV4dCk7Ci19Ci0KIC8qCiAgKiBHaXZlbiBhIHJlbGF0aW9uIE9JRCwgb3BlbiBhbmQgbG9jayB0 aGUgc2VxdWVuY2UuICBwX2VsbSBhbmQgcF9yZWwgYXJlCiAgKiBvdXRwdXQgcGFyYW1ldGVycy4K QEAgLTExMzEsNyArMTExOSw5IEBAIGluaXRfc2VxdWVuY2UoT2lkIHJlbGlkLCBTZXFUYWJsZSAq cF9lbG0sIFJlbGF0aW9uICpwX3JlbCkKIAogCS8qIEZpbmQgb3IgY3JlYXRlIGEgaGFzaCB0YWJs ZSBlbnRyeSBmb3IgdGhpcyBzZXF1ZW5jZSAqLwogCWlmIChzZXFoYXNodGFiID09IE5VTEwpCi0J CWNyZWF0ZV9zZXFfaGFzaHRhYmxlKCk7CisJCXNlcWhhc2h0YWIgPSBoYXNoX21ha2VfY3h0KFNl cVRhYmxlRGF0YSwgcmVsaWQsCisJCQkJCQkJCSAgICJTZXF1ZW5jZSB2YWx1ZXMiLCAxNiwKKwkJ CQkJCQkJICAgVG9wTWVtb3J5Q29udGV4dCk7CiAKIAllbG0gPSAoU2VxVGFibGUpIGhhc2hfc2Vh cmNoKHNlcWhhc2h0YWIsICZyZWxpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9mdW5jY2FjaGUuYwppbmRleCAzNDQzOGE5ZjkzYi4uNjEzZmNmZGM5ZjUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jCkBAIC01MCwyMyArNTAsNiBAQCBzdGF0aWMgdWlu dDMyIGNmdW5jX2hhc2goY29uc3Qgdm9pZCAqa2V5LCBTaXplIGtleXNpemUpOwogc3RhdGljIGlu dAljZnVuY19tYXRjaChjb25zdCB2b2lkICprZXkxLCBjb25zdCB2b2lkICprZXkyLCBTaXplIGtl eXNpemUpOwogCiAKLS8qCi0gKiBJbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlIG9uIGZpcnN0IHVz ZS4KLSAqCi0gKiBUaGUgaGFzaCB0YWJsZSB3aWxsIGJlIGluIFRvcE1lbW9yeUNvbnRleHQgcmVn YXJkbGVzcyBvZiBjYWxsZXIncyBjb250ZXh0LgotICovCi1zdGF0aWMgdm9pZAotY2Z1bmNfaGFz aHRhYmxlX2luaXQodm9pZCkKLXsKLQkvKiBkb24ndCBhbGxvdyBkb3VibGUtaW5pdGlhbGl6YXRp b24gKi8KLQlBc3NlcnQoY2Z1bmNfaGFzaHRhYmxlID09IE5VTEwpOwotCi0JY2Z1bmNfaGFzaHRh YmxlID0gaGFzaF9tYWtlX2ZuX2N4dChDYWNoZWRGdW5jdGlvbkhhc2hFbnRyeSwga2V5LAotCQkJ CQkJCQkJICAgIkNhY2hlZCBmdW5jdGlvbiBoYXNoIiwgRlVOQ1NfUEVSX1VTRVIsCi0JCQkJCQkJ CQkgICBjZnVuY19oYXNoLCBjZnVuY19tYXRjaCwKLQkJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRl eHQpOwotfQotCiAvKgogICogY2Z1bmNfaGFzaDogaGFzaCBmdW5jdGlvbiBmb3IgY2Z1bmMgaGFz aCB0YWJsZQogICoKQEAgLTE2NSw3ICsxNDgsMTAgQEAgY2Z1bmNfaGFzaHRhYmxlX2luc2VydChD YWNoZWRGdW5jdGlvbiAqZnVuY3Rpb24sCiAJYm9vbAkJZm91bmQ7CiAKIAlpZiAoY2Z1bmNfaGFz aHRhYmxlID09IE5VTEwpCi0JCWNmdW5jX2hhc2h0YWJsZV9pbml0KCk7CisJCWNmdW5jX2hhc2h0 YWJsZSA9IGhhc2hfbWFrZV9mbl9jeHQoQ2FjaGVkRnVuY3Rpb25IYXNoRW50cnksIGtleSwKKwkJ CQkJCQkJCQkgICAiQ2FjaGVkIGZ1bmN0aW9uIGhhc2giLCBGVU5DU19QRVJfVVNFUiwKKwkJCQkJ CQkJCQkgICBjZnVuY19oYXNoLCBjZnVuY19tYXRjaCwKKwkJCQkJCQkJCQkgICBUb3BNZW1vcnlD b250ZXh0KTsKIAogCWhlbnRyeSA9IChDYWNoZWRGdW5jdGlvbkhhc2hFbnRyeSAqKSBoYXNoX3Nl YXJjaChjZnVuY19oYXNodGFibGUsCiAJCQkJCQkJCQkJCQkJIGZ1bmNfa2V5LAotLSAKMi41Mi4w Cgo= --1f5aa97c3717d9898fe1632888cf97f42cb8cdb8e993b8ebf6ce2dd0f12d Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0004-Add-foreach_hash-macro.patch Content-Type: text/x-patch; charset=utf-8; name=v2-0004-Add-foreach_hash-macro.patch RnJvbSBlNWVhZTM3ODZmYTBjODQ2YTNlMDFmMjc1OGU3ZGZhNDgxYTI3NDEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDAgKzAxMDAKU3ViamVjdDogW1BBVENIIHYy IDQvNV0gQWRkIGZvcmVhY2hfaGFzaCBtYWNybwoKRm9yIGxpc3RzIHdlJ3ZlIGhhZCBhIG5ldyBm b3JlYWNoIHN0eWxlIG1hY3JvcyBzaW5jZSAxNGRkMGYyN2Q3LiBUaGlzCmFkZHMgYSBzaW1pbGFy IG1hY3JvIGZvciBoYXNoIHRhYmxlcy4gVGhpcyBuZXcgZm9yZWFjaF9oYXNoIG1hY3JvIG1ha2Vz Cml0ZXJhdGluZyBvdmVyIHRoZSBpdGVtcyBpbiBhbiBIVEFCIGFzIHNpbXBsZSBhcyBpdGVyYXRp bmcgb3ZlciB0aGUKaXRlbXMgaW4gYSBMaXN0LiBUaGUgb25seSBhZGRpdGlvbmFsIHRoaW5nIHRv IGtlZXAgaW4gbWluZCBpcyB0aGF0IHdoZW4KZXhpdGluZyB0aGUgbG9vcCBlYXJseSB5b3UgbmVl ZCB0byBjYWxsIGZvcmVhY2hfaGFzaF90ZXJtLgotLS0KIHNyYy9pbmNsdWRlL3V0aWxzL2hzZWFy Y2guaCB8IDQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBj aGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv aHNlYXJjaC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oCmluZGV4IDM2YjMxYmU3YWQ2 Li5iM2EzNjFkNzhhZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaApAQCAtMjc3LDYgKzI3Nyw1MiBAQCB0eXBl ZGVmIHN0cnVjdAogCXVpbnQzMgkJaGFzaHZhbHVlOwkJLyogaGFzaHZhbHVlIHRvIHN0YXJ0IHNl cXNjYW4gb3ZlciBoYXNoICovCiB9IEhBU0hfU0VRX1NUQVRVUzsKIAorLyoKKyAqIGZvcmVhY2hf aGFzaCAtIGl0ZXJhdGUgb3ZlciBhbGwgZW50cmllcyBpbiBhIGhhc2ggdGFibGUKKyAqCisgKiBU aGlzIG1hY3JvIHNpbXBsaWZpZXMgaGFzaCB0YWJsZSBpdGVyYXRpb24gYnkgY29tYmluaW5nIGhh c2hfc2VxX2luaXQKKyAqIGFuZCBoYXNoX3NlcV9zZWFyY2ggaW50byBhIHNpbmdsZSBmb3ItbG9v cCBjb25zdHJ1Y3QuCisgKgorICogVXNhZ2U6CisgKiAgIGZvcmVhY2hfaGFzaChNeUVudHJ5LCBl bnRyeSwgbXlfaGFzaHRhYmxlKQorICogICB7CisgKiAgICAgICAvLyB1c2UgZW50cnkKKyAqICAg fQorICoKKyAqIFRoaXMgcmVwbGFjZXMgdGhlIG1vcmUgdmVyYm9zZSBwYXR0ZXJuOgorICogICBI QVNIX1NFUV9TVEFUVVMgc3RhdHVzOworICogICBNeUVudHJ5ICplbnRyeTsKKyAqICAgaGFzaF9z ZXFfaW5pdCgmc3RhdHVzLCBteV9oYXNodGFibGUpOworICogICB3aGlsZSAoKGVudHJ5ID0gKE15 RW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorICogICB7CisgKiAg ICAgICAvLyB1c2UgZW50cnkKKyAqICAgfQorICoKKyAqIEZvciBlYXJseSB0ZXJtaW5hdGlvbiwg dXNlIGZvcmVhY2hfaGFzaF90ZXJtKCkgYmVmb3JlIGJyZWFrOgorICogICBmb3JlYWNoX2hhc2go TXlFbnRyeSwgZW50cnksIG15X2hhc2h0YWJsZSkKKyAqICAgeworICogICAgICAgaWYgKGZvdW5k X2l0KQorICogICAgICAgeworICogICAgICAgICAgIGZvcmVhY2hfaGFzaF90ZXJtKGVudHJ5KTsK KyAqICAgICAgICAgICBicmVhazsKKyAqICAgICAgIH0KKyAqICAgfQorICovCisjZGVmaW5lIGZv cmVhY2hfaGFzaCh0eXBlLCB2YXIsIGh0YWIpIFwKKwlmb3IgKHR5cGUgKnZhciA9IDAsICp2YXIj I19fb3V0ZXJsb29wID0gKHR5cGUgKikgMTsgXAorCQkgdmFyIyNfX291dGVybG9vcDsgXAorCQkg dmFyIyNfX291dGVybG9vcCA9IDApIFwKKwkJZm9yIChIQVNIX1NFUV9TVEFUVVMgdmFyIyNfX3N0 YXR1cyA9IChoYXNoX3NlcV9pbml0KCZ2YXIjI19fc3RhdHVzLCAoaHRhYikpLCB2YXIjI19fc3Rh dHVzKTsgXAorCQkJICh2YXIgPSAodHlwZSAqKSBoYXNoX3NlcV9zZWFyY2goJnZhciMjX19zdGF0 dXMpKSAhPSBOVUxMOyBcCisJCQkpCisKKy8qCisgKiBmb3JlYWNoX2hhc2hfdGVybSAtIHRlcm1p bmF0ZSBhIGZvcmVhY2hfaGFzaCBsb29wIGVhcmx5CisgKgorICogQ2FsbCB0aGlzIGJlZm9yZSAn YnJlYWsnIHRvIHByb3Blcmx5IGNsZWFuIHVwIHRoZSBoYXNoIHNjYW4uCisgKi8KKyNkZWZpbmUg Zm9yZWFjaF9oYXNoX3Rlcm0odmFyKSBoYXNoX3NlcV90ZXJtKCZ2YXIjI19fc3RhdHVzKQorCiAv KgogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIGR5bmFoYXNoLmMKICAqLwotLSAKMi41 Mi4wCgo= --1f5aa97c3717d9898fe1632888cf97f42cb8cdb8e993b8ebf6ce2dd0f12d Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0005-Use-foreach_hash-macro-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v2-0005-Use-foreach_hash-macro-throughout-the-codebase.patch RnJvbSBhMmVkNGE1YmRkYzhjODdjMTRiYjFjMTVmMjhlNTMyNzY0N2Y2ZGEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDkgKzAxMDAKU3ViamVjdDogW1BBVENIIHYy IDUvNV0gVXNlIGZvcmVhY2hfaGFzaCBtYWNybyB0aHJvdWdob3V0IHRoZSBjb2RlYmFzZQoKVGhp cyBzdGFydHMgdXNpbmcgdGhlIG5ldyBmb3JlYWNoX2hhc2ggbWFjcm8gdGhyb3VnaG91dCB0aGUg Y29kZWJhc2UuClRoaXMgbWFrZXMgY29kZSBlYXNpZXIgdG8gcmVhZCwgYnV0IG9idmlvdXNseSBk b2VzIGludHJvZHVjZQpiYWNrcGF0Y2hpbmcgcHJvYmxlbXMuIFdlIGNhbiBjaG9vc2Ugbm90IHRv IGRvIHRoaXMgcmVmYWN0b3IgdG8gYXZvaWQKdGhhdC4gT3Igd2UgY291bGQgaW5zdGVhZCBjaG9v c2UgdG8gZG8gdGhlIHJlZmFjdG9yIGFuZCB0aGVuIGJhY2twYXRjaAp0aGVzZSBuZXcgbWFjcm9z IHNvIHRoZXkgY2FuIGJlIHVzZWQgaW4gYmFja3BhdGNoZWQgY29kZS4KCkF0IHRoZSB2ZXJ5IGxl YXN0IHdlIHNob3VsZCBjaG9vc2UgYSBmZXcgcGxhY2VzIHdoZXJlIHdlIHVzZSB0aGUgbmV3Cm1h Y3JvcyB0byBtYWtlIHN1cmUgdGhleSBoYXZlIGNvdmVyYWdlLgotLS0KIGNvbnRyaWIvZGJsaW5r L2RibGluay5jICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICstCiAuLi4vcGdfc3RhdF9zdGF0 ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jICAgfCAzOSArKysrLS0tLS0tLQogY29udHJpYi9w Z190cmdtL3RyZ21fcmVnZXhwLmMgICAgICAgICAgICAgICAgIHwgMTggKystLS0KIGNvbnRyaWIv cG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyAgICAgICAgICAgICB8IDI2ICsrLS0tLS0KIGNvbnRy aWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jICAgICAgICAgICAgICB8ICA2ICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jICAgICAgICAgfCAxOCArLS0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMgICAgICAgIHwgMjAgKy0tLS0tCiBzcmMv YmFja2VuZC9jYXRhbG9nL3BnX2VudW0uYyAgICAgICAgICAgICAgICAgfCAxNiArKy0tLQogc3Jj L2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMgICAgICAgICAgICAgICAgIHwgMTggKystLS0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAgICB8IDEyICstLS0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA3ICstCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jICAgICAgICAgfCAgNyArLQogc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYyAgICAgICAgICAgICAgIHwgIDcgKy0KIHNyYy9iYWNr ZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5jICAgICAgICAgICB8ICA2ICstCiBzcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAgNyArLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jICAgIHwgMzcgKystLS0tLS0tLQogLi4uL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgICAgIHwgMTIgKy0tLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgIHwgMjQgKystLS0tLQogc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgICAgICAgICAgIHwgMTAgKy0tCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jICAgICAgICAgICAgICAgfCAxMiArLS0tCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgICAgICAgICAgfCAxMiArLS0tCiBzcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jICAgICAgICAgICAgICAgfCA2NyArKysrLS0tLS0t LS0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMgICAgICAgICAgICAg fCAgNyArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jICAgICAgICAgIHwg MTggKy0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMgICAgICAgICAgICAgICB8 ICA3ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jICAgICAgICAgICAgICAgfCAx MyArLS0tCiBzcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUuYyAgICAgICAgICAgfCAx MSArLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICB8ICA2 ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jICAgICAgfCAxNyAr Ky0tLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwgNDIg KysrKy0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFwLmMg ICAgfCAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUuYyAgICAgICAgICAg IHwgIDYgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMgICAgICAgICAgICB8 ICA1ICstCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAgICAgfCAz MCArKy0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgICAgICAgICAg ICB8IDY3ICsrKy0tLS0tLS0tLS0tLS0tLS0KIDM1IGZpbGVzIGNoYW5nZWQsIDEzMSBpbnNlcnRp b25zKCspLCA0OTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9kYmxpbmsvZGJs aW5rLmMgYi9jb250cmliL2RibGluay9kYmxpbmsuYwppbmRleCAyOTUxYzM5ZDY5Zi4uZDYyMTQ2 NWJkM2IgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZGJsaW5rL2RibGluay5jCisrKyBiL2NvbnRyaWIv ZGJsaW5rL2RibGluay5jCkBAIC0xMjc1LDE0ICsxMjc1LDExIEBAIFBHX0ZVTkNUSU9OX0lORk9f VjEoZGJsaW5rX2dldF9jb25uZWN0aW9ucyk7CiBEYXR1bQogZGJsaW5rX2dldF9jb25uZWN0aW9u cyhQR19GVU5DVElPTl9BUkdTKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JcmVtb3Rl Q29ubkhhc2hFbnQgKmhlbnRyeTsKIAlBcnJheUJ1aWxkU3RhdGUgKmFzdGF0ZSA9IE5VTEw7CiAK IAlpZiAocmVtb3RlQ29ubkhhc2gpCiAJewotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHJlbW90 ZUNvbm5IYXNoKTsKLQkJd2hpbGUgKChoZW50cnkgPSAocmVtb3RlQ29ubkhhc2hFbnQgKikgaGFz aF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2gocmVtb3RlQ29u bkhhc2hFbnQsIGhlbnRyeSwgcmVtb3RlQ29ubkhhc2gpCiAJCXsKIAkJCS8qIGlnbm9yZSBpdCBp ZiBpdCdzIG5vdCBhbiBvcGVuIGNvbm5lY3Rpb24gKi8KIAkJCWlmIChoZW50cnktPnJjb25uLmNv bm4gPT0gTlVMTCkKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0 YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0 ZW1lbnRzLmMKaW5kZXggMmM1NWI3OGU5YmEuLmEyZTEzZjBhNWQ4IDEwMDY0NAotLS0gYS9jb250 cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYworKysgYi9jb250cmli L3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwpAQCAtNzQxLDkgKzc0MSw3 IEBAIHBnc3Nfc2htZW1fc2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKIAlGSUxFCSAgICpm aWxlOwogCWNoYXIJICAgKnFidWZmZXIgPSBOVUxMOwogCVNpemUJCXFidWZmZXJfc2l6ZSA9IDA7 Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwogCWludDMyCQludW1fZW50cmllczsKLQlwZ3Nz RW50cnkgICplbnRyeTsKIAogCS8qIERvbid0IHRyeSB0byBkdW1wIGR1cmluZyBhIGNyYXNoLiAq LwogCWlmIChjb2RlKQpAQCAtNzc3LDggKzc3NSw3IEBAIHBnc3Nfc2htZW1fc2h1dGRvd24oaW50 IGNvZGUsIERhdHVtIGFyZykKIAkgKiBXaGVuIHNlcmlhbGl6aW5nIHRvIGRpc2ssIHdlIHN0b3Jl IHF1ZXJ5IHRleHRzIGltbWVkaWF0ZWx5IGFmdGVyIHRoZWlyCiAJICogZW50cnkgZGF0YS4gIEFu eSBvcnBoYW5lZCBxdWVyeSB0ZXh0cyBhcmUgdGhlcmVieSBleGNsdWRlZC4KIAkgKi8KLQloYXNo X3NlcV9pbml0KCZoYXNoX3NlcSwgcGdzc19oYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9z ZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKHBnc3NFbnRyeSwg ZW50cnksIHBnc3NfaGFzaCkKIAl7CiAJCWludAkJCWxlbiA9IGVudHJ5LT5xdWVyeV9sZW47CiAJ CWNoYXIJICAgKnFzdHIgPSBxdGV4dF9mZXRjaChlbnRyeS0+cXVlcnlfb2Zmc2V0LCBsZW4sCkBA IC03OTAsOCArNzg3LDggQEAgcGdzc19zaG1lbV9zaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJn KQogCQlpZiAoZndyaXRlKGVudHJ5LCBzaXplb2YocGdzc0VudHJ5KSwgMSwgZmlsZSkgIT0gMSB8 fAogCQkJZndyaXRlKHFzdHIsIDEsIGxlbiArIDEsIGZpbGUpICE9IGxlbiArIDEpCiAJCXsKLQkJ CS8qIG5vdGU6IHdlIGFzc3VtZSBoYXNoX3NlcV90ZXJtIHdvbid0IGNoYW5nZSBlcnJubyAqLwot CQkJaGFzaF9zZXFfdGVybSgmaGFzaF9zZXEpOworCQkJLyogbm90ZTogd2UgYXNzdW1lIGZvcmVh Y2hfaGFzaF90ZXJtIHdvbid0IGNoYW5nZSBlcnJubyAqLworCQkJZm9yZWFjaF9oYXNoX3Rlcm0o ZW50cnkpOwogCQkJZ290byBlcnJvcjsKIAkJfQogCX0KQEAgLTE2OTUsOCArMTY5Miw2IEBAIHBn X3N0YXRfc3RhdGVtZW50c19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAlTaXpl CQlxYnVmZmVyX3NpemUgPSAwOwogCVNpemUJCWV4dGVudCA9IDA7CiAJaW50CQkJZ2NfY291bnQg PSAwOwotCUhBU0hfU0VRX1NUQVRVUyBoYXNoX3NlcTsKLQlwZ3NzRW50cnkgICplbnRyeTsKIAog CS8qCiAJICogU3VwZXJ1c2VycyBvciByb2xlcyB3aXRoIHRoZSBwcml2aWxlZ2VzIG9mIHBnX3Jl YWRfYWxsX3N0YXRzIG1lbWJlcnMKQEAgLTE4MjUsOCArMTgyMCw3IEBAIHBnX3N0YXRfc3RhdGVt ZW50c19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJfQogCX0KIAotCWhhc2hf c2VxX2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwotCXdoaWxlICgoZW50cnkgPSBoYXNoX3Nl cV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2gocGdzc0VudHJ5LCBl bnRyeSwgcGdzc19oYXNoKQogCXsKIAkJRGF0dW0JCXZhbHVlc1tQR19TVEFUX1NUQVRFTUVOVFNf Q09MU107CiAJCWJvb2wJCW51bGxzW1BHX1NUQVRfU1RBVEVNRU5UU19DT0xTXTsKQEAgLTIxNzAs OSArMjE2NCw3IEBAIGVudHJ5X2NtcChjb25zdCB2b2lkICpsaHMsIGNvbnN0IHZvaWQgKnJocykK IHN0YXRpYyB2b2lkCiBlbnRyeV9kZWFsbG9jKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIGhh c2hfc2VxOwogCXBnc3NFbnRyeSAqKmVudHJpZXM7Ci0JcGdzc0VudHJ5ICAqZW50cnk7CiAJaW50 CQkJbnZpY3RpbXM7CiAJaW50CQkJaTsKIAlTaXplCQl0b3R0ZXh0bGVuOwpAQCAtMjE5Niw4ICsy MTg4LDcgQEAgZW50cnlfZGVhbGxvYyh2b2lkKQogCXRvdHRleHRsZW4gPSAwOwogCW52YWxpZHRl eHRzID0gMDsKIAotCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwotCXdoaWxl ICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVMTCkKKwlmb3JlYWNo X2hhc2gocGdzc0VudHJ5LCBlbnRyeSwgcGdzc19oYXNoKQogCXsKIAkJZW50cmllc1tpKytdID0g ZW50cnk7CiAJCS8qICJTdGlja3kiIGVudHJpZXMgZ2V0IGEgZGlmZmVyZW50IHVzYWdlIGRlY2F5 IHJhdGUuICovCkBAIC0yNTA5LDggKzI1MDAsNiBAQCBnY19xdGV4dHModm9pZCkKIAljaGFyCSAg ICpxYnVmZmVyOwogCVNpemUJCXFidWZmZXJfc2l6ZTsKIAlGSUxFCSAgICpxZmlsZSA9IE5VTEw7 Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwotCXBnc3NFbnRyeSAgKmVudHJ5OwogCVNpemUJ CWV4dGVudDsKIAlpbnQJCQluZW50cmllczsKIApAQCAtMjU1Miw4ICsyNTQxLDcgQEAgZ2NfcXRl eHRzKHZvaWQpCiAJZXh0ZW50ID0gMDsKIAluZW50cmllcyA9IDA7CiAKLQloYXNoX3NlcV9pbml0 KCZoYXNoX3NlcSwgcGdzc19oYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNo KCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKHBnc3NFbnRyeSwgZW50cnksIHBn c3NfaGFzaCkKIAl7CiAJCWludAkJCXF1ZXJ5X2xlbiA9IGVudHJ5LT5xdWVyeV9sZW47CiAJCWNo YXIJICAgKnFyeSA9IHF0ZXh0X2ZldGNoKGVudHJ5LT5xdWVyeV9vZmZzZXQsCkBAIC0yNTc2LDcg KzI1NjQsNyBAQCBnY19xdGV4dHModm9pZCkKIAkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNz KCksCiAJCQkJCSBlcnJtc2coImNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLAogCQkJ CQkJCVBHU1NfVEVYVF9GSUxFKSkpOwotCQkJaGFzaF9zZXFfdGVybSgmaGFzaF9zZXEpOworCQkJ Zm9yZWFjaF9oYXNoX3Rlcm0oZW50cnkpOwogCQkJZ290byBnY19mYWlsOwogCQl9CiAKQEAgLTI2 NDMsOCArMjYzMSw3IEBAIGdjX2ZhaWw6CiAJICogU2luY2UgdGhlIGNvbnRlbnRzIG9mIHRoZSBl eHRlcm5hbCBmaWxlIGFyZSBub3cgdW5jZXJ0YWluLCBtYXJrIGFsbAogCSAqIGhhc2h0YWJsZSBl bnRyaWVzIGFzIGhhdmluZyBpbnZhbGlkIHRleHRzLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJmhh c2hfc2VxLCBwZ3NzX2hhc2gpOwotCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJmhh c2hfc2VxKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2gocGdzc0VudHJ5LCBlbnRyeSwgcGdzc19o YXNoKQogCXsKIAkJZW50cnktPnF1ZXJ5X29mZnNldCA9IDA7CiAJCWVudHJ5LT5xdWVyeV9sZW4g PSAtMTsKQEAgLTI3MDgsOCArMjY5NSw2IEBAIGlmIChlKSB7IFwKIHN0YXRpYyBUaW1lc3RhbXBU egogZW50cnlfcmVzZXQoT2lkIHVzZXJpZCwgT2lkIGRiaWQsIGludDY0IHF1ZXJ5aWQsIGJvb2wg bWlubWF4X29ubHkpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwotCXBnc3NFbnRyeSAg KmVudHJ5OwogCUZJTEUJICAgKnFmaWxlOwogCWludDY0CQludW1fZW50cmllczsKIAlpbnQ2NAkJ bnVtX3JlbW92ZSA9IDA7CkBAIC0yNzI5LDYgKzI3MTQsOCBAQCBlbnRyeV9yZXNldChPaWQgdXNl cmlkLCBPaWQgZGJpZCwgaW50NjQgcXVlcnlpZCwgYm9vbCBtaW5tYXhfb25seSkKIAlpZiAodXNl cmlkICE9IDAgJiYgZGJpZCAhPSAwICYmIHF1ZXJ5aWQgIT0gSU5UNjRDT05TVCgwKSkKIAl7CiAJ CS8qIElmIGFsbCB0aGUgcGFyYW1ldGVycyBhcmUgYXZhaWxhYmxlLCB1c2UgdGhlIGZhc3QgcGF0 aC4gKi8KKwkJcGdzc0VudHJ5ICAqZW50cnk7CisKIAkJbWVtc2V0KCZrZXksIDAsIHNpemVvZihw Z3NzSGFzaEtleSkpOwogCQlrZXkudXNlcmlkID0gdXNlcmlkOwogCQlrZXkuZGJpZCA9IGRiaWQ7 CkBAIC0yNzUyLDggKzI3MzksNyBAQCBlbnRyeV9yZXNldChPaWQgdXNlcmlkLCBPaWQgZGJpZCwg aW50NjQgcXVlcnlpZCwgYm9vbCBtaW5tYXhfb25seSkKIAllbHNlIGlmICh1c2VyaWQgIT0gMCB8 fCBkYmlkICE9IDAgfHwgcXVlcnlpZCAhPSBJTlQ2NENPTlNUKDApKQogCXsKIAkJLyogUmVzZXQg ZW50cmllcyBjb3JyZXNwb25kaW5nIHRvIHZhbGlkIHBhcmFtZXRlcnMuICovCi0JCWhhc2hfc2Vx X2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwotCQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFf c2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChwZ3NzRW50cnksIGVu dHJ5LCBwZ3NzX2hhc2gpCiAJCXsKIAkJCWlmICgoIXVzZXJpZCB8fCBlbnRyeS0+a2V5LnVzZXJp ZCA9PSB1c2VyaWQpICYmCiAJCQkJKCFkYmlkIHx8IGVudHJ5LT5rZXkuZGJpZCA9PSBkYmlkKSAm JgpAQCAtMjc2Niw4ICsyNzUyLDcgQEAgZW50cnlfcmVzZXQoT2lkIHVzZXJpZCwgT2lkIGRiaWQs IGludDY0IHF1ZXJ5aWQsIGJvb2wgbWlubWF4X29ubHkpCiAJZWxzZQogCXsKIAkJLyogUmVzZXQg YWxsIGVudHJpZXMuICovCi0JCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBwZ3NzX2hhc2gpOwot CQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJ CWZvcmVhY2hfaGFzaChwZ3NzRW50cnksIGVudHJ5LCBwZ3NzX2hhc2gpCiAJCXsKIAkJCVNJTkdM RV9FTlRSWV9SRVNFVChlbnRyeSk7CiAJCX0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdHJnbS90 cmdtX3JlZ2V4cC5jIGIvY29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMKaW5kZXggY2VkNGQz MzNiOWEuLmMwMzJkOGIwYWM4IDEwMDY0NAotLS0gYS9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdl eHAuYworKysgYi9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYwpAQCAtMTQ1MCwxMCArMTQ1 MCw4IEBAIHByZWZpeENvbnRhaW5zKFRyZ21QcmVmaXggKnByZWZpeDEsIFRyZ21QcmVmaXggKnBy ZWZpeDIpCiBzdGF0aWMgYm9vbAogc2VsZWN0Q29sb3JUcmlncmFtcyhUcmdtTkZBICp0cmdtTkZB KQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKIAlpbnQJCQlhcmNzQ291bnQgPSB0 cmdtTkZBLT5hcmNzQ291bnQsCiAJCQkJaTsKLQlUcmdtU3RhdGUgICpzdGF0ZTsKIAlDb2xvclRy Z21JbmZvICpjb2xvclRyZ21zOwogCWludDY0CQl0b3RhbFRyZ21Db3VudDsKIAlmbG9hdDQJCXRv dGFsVHJnbVBlbmFsdHk7CkBAIC0xNDY0LDggKzE0NjIsNyBAQCBzZWxlY3RDb2xvclRyaWdyYW1z KFRyZ21ORkEgKnRyZ21ORkEpCiAJdHJnbU5GQS0+Y29sb3JUcmdtcyA9IGNvbG9yVHJnbXM7CiAK IAlpID0gMDsKLQloYXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1cywgdHJnbU5GQS0+c3RhdGVzKTsK LQl3aGlsZSAoKHN0YXRlID0gKFRyZ21TdGF0ZSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3Rh dHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJnbVN0YXRlLCBzdGF0ZSwgdHJnbU5GQS0+ c3RhdGVzKQogCXsKIAkJTGlzdENlbGwgICAqY2VsbDsKIApAQCAtMTkyNyw4ICsxOTI0LDYgQEAg cGFja0dyYXBoKFRyZ21ORkEgKnRyZ21ORkEsIE1lbW9yeUNvbnRleHQgcmNvbnRleHQpCiAJaW50 CQkJc251bWJlciA9IDIsCiAJCQkJYXJjSW5kZXgsCiAJCQkJYXJjc0NvdW50OwotCUhBU0hfU0VR X1NUQVRVUyBzY2FuX3N0YXR1czsKLQlUcmdtU3RhdGUgICpzdGF0ZTsKIAlUcmdtUGFja0FyY0lu Zm8gKmFyY3M7CiAJVHJnbVBhY2tlZEFyYyAqcGFja2VkQXJjczsKIAlUcmdtUGFja2VkR3JhcGgg KnJlc3VsdDsKQEAgLTE5MzYsOCArMTkzMSw3IEBAIHBhY2tHcmFwaChUcmdtTkZBICp0cmdtTkZB LCBNZW1vcnlDb250ZXh0IHJjb250ZXh0KQogCQkJCWo7CiAKIAkvKiBFbnVtZXJhdGUgc3Vydml2 aW5nIHN0YXRlcywgZ2l2aW5nIGluaXQgYW5kIGZpbiByZXNlcnZlZCBudW1iZXJzICovCi0JaGFz aF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIHRyZ21ORkEtPnN0YXRlcyk7Ci0Jd2hpbGUgKChzdGF0 ZSA9IChUcmdtU3RhdGUgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuX3N0YXR1cykpICE9IE5VTEwp CisJZm9yZWFjaF9oYXNoKFRyZ21TdGF0ZSwgc3RhdGUsIHRyZ21ORkEtPnN0YXRlcykKIAl7CiAJ CXdoaWxlIChzdGF0ZS0+cGFyZW50KQogCQkJc3RhdGUgPSBzdGF0ZS0+cGFyZW50OwpAQCAtMTk2 MCw4ICsxOTU0LDcgQEAgcGFja0dyYXBoKFRyZ21ORkEgKnRyZ21ORkEsIE1lbW9yeUNvbnRleHQg cmNvbnRleHQpCiAJYXJjcyA9IChUcmdtUGFja0FyY0luZm8gKikKIAkJcGFsbG9jKHNpemVvZihU cmdtUGFja0FyY0luZm8pICogdHJnbU5GQS0+YXJjc0NvdW50KTsKIAlhcmNJbmRleCA9IDA7Ci0J aGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIHRyZ21ORkEtPnN0YXRlcyk7Ci0Jd2hpbGUgKChz dGF0ZSA9IChUcmdtU3RhdGUgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuX3N0YXR1cykpICE9IE5V TEwpCisJZm9yZWFjaF9oYXNoKFRyZ21TdGF0ZSwgc3RhdGUsIHRyZ21ORkEtPnN0YXRlcykKIAl7 CiAJCVRyZ21TdGF0ZSAgKnNvdXJjZSA9IHN0YXRlOwogCQlMaXN0Q2VsbCAgICpjZWxsOwpAQCAt MjIwNCwxNiArMjE5NywxMyBAQCBzdGF0aWMgdm9pZAogcHJpbnRUcmdtTkZBKFRyZ21ORkEgKnRy Z21ORkEpCiB7CiAJU3RyaW5nSW5mb0RhdGEgYnVmOwotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0 YXR1czsKLQlUcmdtU3RhdGUgICpzdGF0ZTsKIAlUcmdtU3RhdGUgICppbml0c3RhdGUgPSBOVUxM OwogCiAJaW5pdFN0cmluZ0luZm8oJmJ1Zik7CiAKIAlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZi dWYsICJcbmRpZ3JhcGggdHJhbnNmb3JtZWRORkEge1xuIik7CiAKLQloYXNoX3NlcV9pbml0KCZz Y2FuX3N0YXR1cywgdHJnbU5GQS0+c3RhdGVzKTsKLQl3aGlsZSAoKHN0YXRlID0gKFRyZ21TdGF0 ZSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hh c2goVHJnbVN0YXRlLCBzdGF0ZSwgdHJnbU5GQS0+c3RhdGVzKQogCXsKIAkJTGlzdENlbGwgICAq Y2VsbDsKIApkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jIGIv Y29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCmluZGV4IDA0MmE3ZmIzYWMxLi40Mjg2 M2IwMjkwOSAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCisr KyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYwpAQCAtMTA0NCw4ICsxMDQ0LDYg QEAgcGdmZHdfcmVwb3J0X2ludGVybmFsKGludCBlbGV2ZWwsIFBHcmVzdWx0ICpyZXMsIFBHY29u biAqY29ubiwKIHN0YXRpYyB2b2lkCiBwZ2Zkd194YWN0X2NhbGxiYWNrKFhhY3RFdmVudCBldmVu dCwgdm9pZCAqYXJnKQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwotCUNvbm5DYWNoZUVudHJ5 ICplbnRyeTsKIAlMaXN0CSAgICpwZW5kaW5nX2VudHJpZXMgPSBOSUw7CiAJTGlzdAkgICAqY2Fu Y2VsX3JlcXVlc3RlZCA9IE5JTDsKIApAQCAtMTA1Nyw4ICsxMDU1LDcgQEAgcGdmZHdfeGFjdF9j YWxsYmFjayhYYWN0RXZlbnQgZXZlbnQsIHZvaWQgKmFyZykKIAkgKiBTY2FuIGFsbCBjb25uZWN0 aW9uIGNhY2hlIGVudHJpZXMgdG8gZmluZCBvcGVuIHJlbW90ZSB0cmFuc2FjdGlvbnMsIGFuZAog CSAqIGNsb3NlIHRoZW0uCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc2NhbiwgQ29ubmVjdGlvbkhh c2gpOwotCXdoaWxlICgoZW50cnkgPSAoQ29ubkNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNo KCZzY2FuKSkpCisJZm9yZWFjaF9oYXNoKENvbm5DYWNoZUVudHJ5LCBlbnRyeSwgQ29ubmVjdGlv bkhhc2gpCiAJewogCQlQR3Jlc3VsdCAgICpyZXM7CiAKQEAgLTExOTUsOCArMTE5Miw2IEBAIHN0 YXRpYyB2b2lkCiBwZ2Zkd19zdWJ4YWN0X2NhbGxiYWNrKFN1YlhhY3RFdmVudCBldmVudCwgU3Vi VHJhbnNhY3Rpb25JZCBteVN1YmlkLAogCQkJCQkgICBTdWJUcmFuc2FjdGlvbklkIHBhcmVudFN1 YmlkLCB2b2lkICphcmcpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNhY2hlRW50 cnkgKmVudHJ5OwogCWludAkJCWN1cmxldmVsOwogCUxpc3QJICAgKnBlbmRpbmdfZW50cmllcyA9 IE5JTDsKIAlMaXN0CSAgICpjYW5jZWxfcmVxdWVzdGVkID0gTklMOwpAQCAtMTIxNSw4ICsxMjEw LDcgQEAgcGdmZHdfc3VieGFjdF9jYWxsYmFjayhTdWJYYWN0RXZlbnQgZXZlbnQsIFN1YlRyYW5z YWN0aW9uSWQgbXlTdWJpZCwKIAkgKiBvZiB0aGUgY3VycmVudCBsZXZlbCwgYW5kIGNsb3NlIHRo ZW0uCiAJICovCiAJY3VybGV2ZWwgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25OZXN0TGV2ZWwoKTsK LQloYXNoX3NlcV9pbml0KCZzY2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9 IChDb25uQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNoX2hh c2goQ29ubkNhY2hlRW50cnksIGVudHJ5LCBDb25uZWN0aW9uSGFzaCkKIAl7CiAJCWNoYXIJCXNx bFsxMDBdOwogCkBAIC0xMzA3LDE0ICsxMzAxLDEwIEBAIHBnZmR3X3N1YnhhY3RfY2FsbGJhY2so U3ViWGFjdEV2ZW50IGV2ZW50LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiBzdGF0aWMgdm9p ZAogcGdmZHdfaW52YWxfY2FsbGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhh c2h2YWx1ZSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2NhbjsKLQlDb25uQ2FjaGVFbnRyeSAqZW50 cnk7Ci0KIAlBc3NlcnQoY2FjaGVpZCA9PSBGT1JFSUdOU0VSVkVST0lEIHx8IGNhY2hlaWQgPT0g VVNFUk1BUFBJTkdPSUQpOwogCiAJLyogQ29ubmVjdGlvbkhhc2ggbXVzdCBleGlzdCBhbHJlYWR5 LCBpZiB3ZSdyZSByZWdpc3RlcmVkICovCi0JaGFzaF9zZXFfaW5pdCgmc2NhbiwgQ29ubmVjdGlv bkhhc2gpOwotCXdoaWxlICgoZW50cnkgPSAoQ29ubkNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2Vh cmNoKCZzY2FuKSkpCisJZm9yZWFjaF9oYXNoKENvbm5DYWNoZUVudHJ5LCBlbnRyeSwgQ29ubmVj dGlvbkhhc2gpCiAJewogCQkvKiBJZ25vcmUgaW52YWxpZCBlbnRyaWVzICovCiAJCWlmIChlbnRy eS0+Y29ubiA9PSBOVUxMKQpAQCAtMjE2NSw4ICsyMTU1LDYgQEAgcG9zdGdyZXNfZmR3X2dldF9j b25uZWN0aW9uc19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCQkJCQkJCSAg ZW51bSBwZ2Zkd1ZlcnNpb24gYXBpX3ZlcnNpb24pCiB7CiAJUmV0dXJuU2V0SW5mbyAqcnNpbmZv ID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOwotCUhBU0hfU0VRX1NUQVRV UyBzY2FuOwotCUNvbm5DYWNoZUVudHJ5ICplbnRyeTsKIAogCUluaXRNYXRlcmlhbGl6ZWRTUkYo ZmNpbmZvLCAwKTsKIApAQCAtMjE4OSw4ICsyMTc3LDcgQEAgcG9zdGdyZXNfZmR3X2dldF9jb25u ZWN0aW9uc19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCWVsb2coRVJST1Is ICJpbmNvcnJlY3QgbnVtYmVyIG9mIG91dHB1dCBhcmd1bWVudHMiKTsKIAl9CiAKLQloYXNoX3Nl cV9pbml0KCZzY2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IChDb25uQ2Fj aGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2goQ29ubkNh Y2hlRW50cnksIGVudHJ5LCBDb25uZWN0aW9uSGFzaCkKIAl7CiAJCUZvcmVpZ25TZXJ2ZXIgKnNl cnZlcjsKIAkJRGF0dW0JCXZhbHVlc1tQT1NUR1JFU19GRFdfR0VUX0NPTk5FQ1RJT05TX0NPTFNd ID0gezB9OwpAQCAtMjM5Miw4ICsyMzc5LDYgQEAgcG9zdGdyZXNfZmR3X2Rpc2Nvbm5lY3RfYWxs KFBHX0ZVTkNUSU9OX0FSR1MpCiBzdGF0aWMgYm9vbAogZGlzY29ubmVjdF9jYWNoZWRfY29ubmVj dGlvbnMoT2lkIHNlcnZlcmlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwotCUNvbm5DYWNo ZUVudHJ5ICplbnRyeTsKIAlib29sCQlhbGwgPSAhT2lkSXNWYWxpZChzZXJ2ZXJpZCk7CiAJYm9v bAkJcmVzdWx0ID0gZmFsc2U7CiAKQEAgLTI0MDQsOCArMjM4OSw3IEBAIGRpc2Nvbm5lY3RfY2Fj aGVkX2Nvbm5lY3Rpb25zKE9pZCBzZXJ2ZXJpZCkKIAlpZiAoIUNvbm5lY3Rpb25IYXNoKQogCQly ZXR1cm4gZmFsc2U7CiAKLQloYXNoX3NlcV9pbml0KCZzY2FuLCBDb25uZWN0aW9uSGFzaCk7Ci0J d2hpbGUgKChlbnRyeSA9IChDb25uQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW4p KSkKKwlmb3JlYWNoX2hhc2goQ29ubkNhY2hlRW50cnksIGVudHJ5LCBDb25uZWN0aW9uSGFzaCkK IAl7CiAJCS8qIElnbm9yZSBjYWNoZSBlbnRyeSBpZiBubyBvcGVuIGNvbm5lY3Rpb24gcmlnaHQg bm93LiAqLwogCQlpZiAoIWVudHJ5LT5jb25uKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jl c19mZHcvc2hpcHBhYmxlLmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zaGlwcGFibGUuYwppbmRl eCA2NmQyZDBiOWZmNC4uYmM1ZGM5MGU1NDEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L3NoaXBwYWJsZS5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jCkBA IC02NSwxNyArNjUsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QKIHN0YXRpYyB2b2lkCiBJbnZhbGlkYXRl U2hpcHBhYmxlQ2FjaGVDYWxsYmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFz aHZhbHVlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JU2hpcHBhYmxlQ2FjaGVFbnRy eSAqZW50cnk7Ci0KIAkvKgogCSAqIEluIHByaW5jaXBsZSB3ZSBjb3VsZCBmbHVzaCBvbmx5IGNh Y2hlIGVudHJpZXMgcmVsYXRpbmcgdG8gdGhlCiAJICogcGdfZm9yZWlnbl9zZXJ2ZXIgZW50cnkg YmVpbmcgb3V0ZGF0ZWQ7IGJ1dCB0aGF0IHdvdWxkIGJlIG1vcmUKIAkgKiBjb21wbGljYXRlZCwg YW5kIGl0J3MgcHJvYmFibHkgbm90IHdvcnRoIHRoZSB0cm91YmxlLiAgU28gZm9yIG5vdywganVz dAogCSAqIGZsdXNoIGFsbCBlbnRyaWVzLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywg U2hpcHBhYmxlQ2FjaGVIYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKFNoaXBwYWJsZUNhY2hlRW50 cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChT aGlwcGFibGVDYWNoZUVudHJ5LCBlbnRyeSwgU2hpcHBhYmxlQ2FjaGVIYXNoKQogCXsKIAkJaWYg KGhhc2hfc2VhcmNoKFNoaXBwYWJsZUNhY2hlSGFzaCwKIAkJCQkJCSZlbnRyeS0+a2V5LApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKaW5kZXggZGMyYzQ2NzQyZmQuLjMyNDMzZmNl NGE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMKQEAgLTI5MCwxNiArMjkw LDExIEBAIGJlZ2luX2hlYXBfcmV3cml0ZShSZWxhdGlvbiBvbGRfaGVhcCwgUmVsYXRpb24gbmV3 X2hlYXAsIFRyYW5zYWN0aW9uSWQgb2xkZXN0X3htCiB2b2lkCiBlbmRfaGVhcF9yZXdyaXRlKFJl d3JpdGVTdGF0ZSBzdGF0ZSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2VxX3N0YXR1czsKLQlVbnJl c29sdmVkVHVwIHVucmVzb2x2ZWQ7Ci0KIAkvKgogCSAqIFdyaXRlIGFueSByZW1haW5pbmcgdHVw bGVzIGluIHRoZSBVbnJlc29sdmVkVHVwcyB0YWJsZS4gSWYgd2UgaGF2ZSBhbnkKIAkgKiBsZWZ0 LCB0aGV5IHNob3VsZCBpbiBmYWN0IGJlIGRlYWQsIGJ1dCBsZXQncyBlcnIgb24gdGhlIHNhZmUg c2lkZS4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzZXFfc3RhdHVzLCBzdGF0ZS0+cnNfdW5yZXNv bHZlZF90dXBzKTsKLQotCXdoaWxlICgodW5yZXNvbHZlZCA9IGhhc2hfc2VxX3NlYXJjaCgmc2Vx X3N0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFVucmVzb2x2ZWRUdXBEYXRhLCB1bnJl c29sdmVkLCBzdGF0ZS0+cnNfdW5yZXNvbHZlZF90dXBzKQogCXsKIAkJSXRlbVBvaW50ZXJTZXRJ bnZhbGlkKCZ1bnJlc29sdmVkLT50dXBsZS0+dF9kYXRhLT50X2N0aWQpOwogCQlyYXdfaGVhcF9p bnNlcnQoc3RhdGUsIHVucmVzb2x2ZWQtPnR1cGxlKTsKQEAgLTc5NCw4ICs3ODksNiBAQCBsb2dp Y2FsX2JlZ2luX2hlYXBfcmV3cml0ZShSZXdyaXRlU3RhdGUgc3RhdGUpCiBzdGF0aWMgdm9pZAog bG9naWNhbF9oZWFwX3Jld3JpdGVfZmx1c2hfbWFwcGluZ3MoUmV3cml0ZVN0YXRlIHN0YXRlKQog ewotCUhBU0hfU0VRX1NUQVRVUyBzZXFfc3RhdHVzOwotCVJld3JpdGVNYXBwaW5nRmlsZSAqc3Jj OwogCWRsaXN0X211dGFibGVfaXRlciBpdGVyOwogCiAJQXNzZXJ0KHN0YXRlLT5yc19sb2dpY2Fs X3Jld3JpdGUpOwpAQCAtODA3LDggKzgwMCw3IEBAIGxvZ2ljYWxfaGVhcF9yZXdyaXRlX2ZsdXNo X21hcHBpbmdzKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIAllbG9nKERFQlVHMSwgImZsdXNoaW5nICV1 IGxvZ2ljYWwgcmV3cml0ZSBtYXBwaW5nIGVudHJpZXMiLAogCQkgc3RhdGUtPnJzX251bV9yZXdy aXRlX21hcHBpbmdzKTsKIAotCWhhc2hfc2VxX2luaXQoJnNlcV9zdGF0dXMsIHN0YXRlLT5yc19s b2dpY2FsX21hcHBpbmdzKTsKLQl3aGlsZSAoKHNyYyA9IChSZXdyaXRlTWFwcGluZ0ZpbGUgKikg aGFzaF9zZXFfc2VhcmNoKCZzZXFfc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmV3 cml0ZU1hcHBpbmdGaWxlLCBzcmMsIHN0YXRlLT5yc19sb2dpY2FsX21hcHBpbmdzKQogCXsKIAkJ Y2hhcgkgICAqd2FsZGF0YTsKIAkJY2hhcgkgICAqd2FsZGF0YV9zdGFydDsKQEAgLTg5Miw5ICs4 ODQsNiBAQCBsb2dpY2FsX2hlYXBfcmV3cml0ZV9mbHVzaF9tYXBwaW5ncyhSZXdyaXRlU3RhdGUg c3RhdGUpCiBzdGF0aWMgdm9pZAogbG9naWNhbF9lbmRfaGVhcF9yZXdyaXRlKFJld3JpdGVTdGF0 ZSBzdGF0ZSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2VxX3N0YXR1czsKLQlSZXdyaXRlTWFwcGlu Z0ZpbGUgKnNyYzsKLQogCS8qIGRvbmUsIG5vIGxvZ2ljYWwgcmV3cml0ZSBpbiBwcm9ncmVzcyAq LwogCWlmICghc3RhdGUtPnJzX2xvZ2ljYWxfcmV3cml0ZSkKIAkJcmV0dXJuOwpAQCAtOTA0LDgg Kzg5Myw3IEBAIGxvZ2ljYWxfZW5kX2hlYXBfcmV3cml0ZShSZXdyaXRlU3RhdGUgc3RhdGUpCiAJ CWxvZ2ljYWxfaGVhcF9yZXdyaXRlX2ZsdXNoX21hcHBpbmdzKHN0YXRlKTsKIAogCS8qIEl0ZXJh dGUgb3ZlciBhbGwgbWFwcGluZ3Mgd2UgaGF2ZSB3cml0dGVuIGFuZCBmc3luYyB0aGUgZmlsZXMu ICovCi0JaGFzaF9zZXFfaW5pdCgmc2VxX3N0YXR1cywgc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGlu Z3MpOwotCXdoaWxlICgoc3JjID0gKFJld3JpdGVNYXBwaW5nRmlsZSAqKSBoYXNoX3NlcV9zZWFy Y2goJnNlcV9zdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZXdyaXRlTWFwcGluZ0Zp bGUsIHNyYywgc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3MpCiAJewogCQlpZiAoRmlsZVN5bmMo c3JjLT52ZmQsIFdBSVRfRVZFTlRfTE9HSUNBTF9SRVdSSVRFX1NZTkMpICE9IDApCiAJCQllcmVw b3J0KGRhdGFfc3luY19lbGV2ZWwoRVJST1IpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n dXRpbHMuYwppbmRleCA5ZTI0NzU5ZjVjYy4uZWYxM2YwNGUwOGQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2d1dGlscy5jCkBAIC0xNjAsMTUgKzE2MCwxMCBAQCBzdGF0aWMgdm9pZAog Zm9yZ2V0X2ludmFsaWRfcGFnZXMoUmVsRmlsZUxvY2F0b3IgbG9jYXRvciwgRm9ya051bWJlciBm b3Jrbm8sCiAJCQkJCSBCbG9ja051bWJlciBtaW5ibGtubykKIHsKLQlIQVNIX1NFUV9TVEFUVVMg c3RhdHVzOwotCXhsX2ludmFsaWRfcGFnZSAqaGVudHJ5OwotCiAJaWYgKGludmFsaWRfcGFnZV90 YWIgPT0gTlVMTCkKIAkJcmV0dXJuOwkJCQkJLyogbm90aGluZyB0byBkbyAqLwogCi0JaGFzaF9z ZXFfaW5pdCgmc3RhdHVzLCBpbnZhbGlkX3BhZ2VfdGFiKTsKLQotCXdoaWxlICgoaGVudHJ5ID0g KHhsX2ludmFsaWRfcGFnZSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJ Zm9yZWFjaF9oYXNoKHhsX2ludmFsaWRfcGFnZSwgaGVudHJ5LCBpbnZhbGlkX3BhZ2VfdGFiKQog CXsKIAkJaWYgKFJlbEZpbGVMb2NhdG9yRXF1YWxzKGhlbnRyeS0+a2V5LmxvY2F0b3IsIGxvY2F0 b3IpICYmCiAJCQloZW50cnktPmtleS5mb3Jrbm8gPT0gZm9ya25vICYmCkBAIC0xOTAsMTUgKzE4 NSwxMCBAQCBmb3JnZXRfaW52YWxpZF9wYWdlcyhSZWxGaWxlTG9jYXRvciBsb2NhdG9yLCBGb3Jr TnVtYmVyIGZvcmtubywKIHN0YXRpYyB2b2lkCiBmb3JnZXRfaW52YWxpZF9wYWdlc19kYihPaWQg ZGJpZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCXhsX2ludmFsaWRfcGFnZSAqaGVu dHJ5OwotCiAJaWYgKGludmFsaWRfcGFnZV90YWIgPT0gTlVMTCkKIAkJcmV0dXJuOwkJCQkJLyog bm90aGluZyB0byBkbyAqLwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBpbnZhbGlkX3BhZ2Vf dGFiKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKHhsX2ludmFsaWRfcGFnZSAqKSBoYXNoX3NlcV9z ZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKHhsX2ludmFsaWRfcGFnZSwg aGVudHJ5LCBpbnZhbGlkX3BhZ2VfdGFiKQogCXsKIAkJaWYgKGhlbnRyeS0+a2V5LmxvY2F0b3Iu ZGJPaWQgPT0gZGJpZCkKIAkJewpAQCAtMjI4LDIwICsyMTgsMTYgQEAgWExvZ0hhdmVJbnZhbGlk UGFnZXModm9pZCkKIHZvaWQKIFhMb2dDaGVja0ludmFsaWRQYWdlcyh2b2lkKQogewotCUhBU0hf U0VRX1NUQVRVUyBzdGF0dXM7Ci0JeGxfaW52YWxpZF9wYWdlICpoZW50cnk7CiAJYm9vbAkJZm91 bmRvbmUgPSBmYWxzZTsKIAogCWlmIChpbnZhbGlkX3BhZ2VfdGFiID09IE5VTEwpCiAJCXJldHVy bjsJCQkJCS8qIG5vdGhpbmcgdG8gZG8gKi8KIAotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgaW52 YWxpZF9wYWdlX3RhYik7Ci0KIAkvKgogCSAqIE91ciBzdHJhdGVneSBpcyB0byBlbWl0IFdBUk5J TkcgbWVzc2FnZXMgZm9yIGFsbCByZW1haW5pbmcgZW50cmllcyBhbmQKIAkgKiBvbmx5IFBBTklD IGFmdGVyIHdlJ3ZlIGR1bXBlZCBhbGwgdGhlIGF2YWlsYWJsZSBpbmZvLgogCSAqLwotCXdoaWxl ICgoaGVudHJ5ID0gKHhsX2ludmFsaWRfcGFnZSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykp ICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKHhsX2ludmFsaWRfcGFnZSwgaGVudHJ5LCBpbnZhbGlk X3BhZ2VfdGFiKQogCXsKIAkJcmVwb3J0X2ludmFsaWRfcGFnZShXQVJOSU5HLCBoZW50cnktPmtl eS5sb2NhdG9yLCBoZW50cnktPmtleS5mb3Jrbm8sCiAJCQkJCQkJaGVudHJ5LT5rZXkuYmxrbm8s IGhlbnRyeS0+cHJlc2VudCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2Vu dW0uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfZW51bS5jCmluZGV4IDQ3ODdhNjFjN2QzLi5m Y2ExMzZiNjhhZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVtLmMKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVtLmMKQEAgLTgzOCwxMiArODM4LDEwIEBAIFNl cmlhbGl6ZVVuY29tbWl0dGVkRW51bXModm9pZCAqc3BhY2UsIFNpemUgc2l6ZSkKIAkvKiBXcml0 ZSBvdXQgYWxsIHRoZSBPSURzIGZyb20gdGhlIHR5cGVzIGhhc2ggdGFibGUsIGlmIHRoZXJlIGlz IG9uZS4gKi8KIAlpZiAodW5jb21taXR0ZWRfZW51bV90eXBlcykKIAl7Ci0JCUhBU0hfU0VRX1NU QVRVUyBzdGF0dXM7Ci0JCU9pZAkJICAgKnZhbHVlOwotCi0JCWhhc2hfc2VxX2luaXQoJnN0YXR1 cywgdW5jb21taXR0ZWRfZW51bV90eXBlcyk7Ci0JCXdoaWxlICgodmFsdWUgPSAoT2lkICopIGhh c2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkpCisJCWZvcmVhY2hfaGFzaChPaWQsIHZhbHVlLCB1bmNv bW1pdHRlZF9lbnVtX3R5cGVzKQorCQl7CiAJCQkqc2VyaWFsaXplZCsrID0gKnZhbHVlOworCQl9 CiAJfQogCiAJLyogV3JpdGUgb3V0IHRoZSB0ZXJtaW5hdG9yLiAqLwpAQCAtODUyLDEyICs4NTAs OCBAQCBTZXJpYWxpemVVbmNvbW1pdHRlZEVudW1zKHZvaWQgKnNwYWNlLCBTaXplIHNpemUpCiAJ LyogV3JpdGUgb3V0IGFsbCB0aGUgT0lEcyBmcm9tIHRoZSB2YWx1ZXMgaGFzaCB0YWJsZSwgaWYg dGhlcmUgaXMgb25lLiAqLwogCWlmICh1bmNvbW1pdHRlZF9lbnVtX3ZhbHVlcykKIAl7Ci0JCUhB U0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JCU9pZAkJICAgKnZhbHVlOwotCi0JCWhhc2hfc2VxX2lu aXQoJnN0YXR1cywgdW5jb21taXR0ZWRfZW51bV92YWx1ZXMpOwotCQl3aGlsZSAoKHZhbHVlID0g KE9pZCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpKQotCQkJKnNlcmlhbGl6ZWQrKyA9ICp2 YWx1ZTsKKwkJZm9yZWFjaF9oYXNoKE9pZCwgdmFsdWUsIHVuY29tbWl0dGVkX2VudW1fdmFsdWVz KQorCQkJKiBzZXJpYWxpemVkKysgPSAqdmFsdWU7CiAJfQogCiAJLyogV3JpdGUgb3V0IHRoZSB0 ZXJtaW5hdG9yLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3N0b3JhZ2UuYwppbmRleCAxZDEzYjRhMWYzOS4uZGM0NGNh ZTllM2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jCkBAIC01OTQsMTAgKzU5NCw3IEBAIHZvaWQKIFNl cmlhbGl6ZVBlbmRpbmdTeW5jcyhTaXplIG1heFNpemUsIGNoYXIgKnN0YXJ0QWRkcmVzcykKIHsK IAlIVEFCCSAgICp0bXBoYXNoOwotCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwotCVBlbmRpbmdSZWxT eW5jICpzeW5jOwogCVBlbmRpbmdSZWxEZWxldGUgKmRlbGV0ZTsKLQlSZWxGaWxlTG9jYXRvciAq c3JjOwogCVJlbEZpbGVMb2NhdG9yICpkZXN0ID0gKFJlbEZpbGVMb2NhdG9yICopIHN0YXJ0QWRk cmVzczsKIAogCWlmICghcGVuZGluZ1N5bmNIYXNoKQpAQCAtNjA4LDkgKzYwNSwxMCBAQCBTZXJp YWxpemVQZW5kaW5nU3luY3MoU2l6ZSBtYXhTaXplLCBjaGFyICpzdGFydEFkZHJlc3MpCiAJCQkJ CQkgICBoYXNoX2dldF9udW1fZW50cmllcyhwZW5kaW5nU3luY0hhc2gpKTsKIAogCS8qIGNvbGxl Y3QgYWxsIHJsb2NhdG9yIGZyb20gcGVuZGluZyBzeW5jcyAqLwotCWhhc2hfc2VxX2luaXQoJnNj YW4sIHBlbmRpbmdTeW5jSGFzaCk7Ci0Jd2hpbGUgKChzeW5jID0gKFBlbmRpbmdSZWxTeW5jICop IGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpKQorCWZvcmVhY2hfaGFzaChQZW5kaW5nUmVsU3luYywg c3luYywgcGVuZGluZ1N5bmNIYXNoKQorCXsKIAkJKHZvaWQpIGhhc2hfc2VhcmNoKHRtcGhhc2gs ICZzeW5jLT5ybG9jYXRvciwgSEFTSF9FTlRFUiwgTlVMTCk7CisJfQogCiAJLyogcmVtb3ZlIGRl bGV0ZWQgcm5vZGVzICovCiAJZm9yIChkZWxldGUgPSBwZW5kaW5nRGVsZXRlczsgZGVsZXRlICE9 IE5VTEw7IGRlbGV0ZSA9IGRlbGV0ZS0+bmV4dCkKQEAgLTYxOCw5ICs2MTYsMTAgQEAgU2VyaWFs aXplUGVuZGluZ1N5bmNzKFNpemUgbWF4U2l6ZSwgY2hhciAqc3RhcnRBZGRyZXNzKQogCQkJKHZv aWQpIGhhc2hfc2VhcmNoKHRtcGhhc2gsICZkZWxldGUtPnJsb2NhdG9yLAogCQkJCQkJCSAgIEhB U0hfUkVNT1ZFLCBOVUxMKTsKIAotCWhhc2hfc2VxX2luaXQoJnNjYW4sIHRtcGhhc2gpOwotCXdo aWxlICgoc3JjID0gKFJlbEZpbGVMb2NhdG9yICopIGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpKQor CWZvcmVhY2hfaGFzaChSZWxGaWxlTG9jYXRvciwgc3JjLCB0bXBoYXNoKQorCXsKIAkJKmRlc3Qr KyA9ICpzcmM7CisJfQogCiAJaGFzaF9kZXN0cm95KHRtcGhhc2gpOwogCkBAIC03MzMsOCArNzMy LDYgQEAgc21nckRvUGVuZGluZ1N5bmNzKGJvb2wgaXNDb21taXQsIGJvb2wgaXNQYXJhbGxlbFdv cmtlcikKIAlpbnQJCQlucmVscyA9IDAsCiAJCQkJbWF4cmVscyA9IDA7CiAJU01nclJlbGF0aW9u ICpzcmVscyA9IE5VTEw7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JUGVuZGluZ1JlbFN5bmMg KnBlbmRpbmdzeW5jOwogCiAJQXNzZXJ0KEdldEN1cnJlbnRUcmFuc2FjdGlvbk5lc3RMZXZlbCgp ID09IDEpOwogCkBAIC03NjMsOCArNzYwLDcgQEAgc21nckRvUGVuZGluZ1N5bmNzKGJvb2wgaXND b21taXQsIGJvb2wgaXNQYXJhbGxlbFdvcmtlcikKIAkJCSh2b2lkKSBoYXNoX3NlYXJjaChwZW5k aW5nU3luY0hhc2gsICZwZW5kaW5nLT5ybG9jYXRvciwKIAkJCQkJCQkgICBIQVNIX1JFTU9WRSwg TlVMTCk7CiAKLQloYXNoX3NlcV9pbml0KCZzY2FuLCBwZW5kaW5nU3luY0hhc2gpOwotCXdoaWxl ICgocGVuZGluZ3N5bmMgPSAoUGVuZGluZ1JlbFN5bmMgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2Fu KSkpCisJZm9yZWFjaF9oYXNoKFBlbmRpbmdSZWxTeW5jLCBwZW5kaW5nc3luYywgcGVuZGluZ1N5 bmNIYXNoKQogCXsKIAkJRm9ya051bWJlcglmb3JrOwogCQlCbG9ja051bWJlciBuYmxvY2tzW01B WF9GT1JLTlVNICsgMV07CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJl LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggY2M5NTBjZTI4ODcuLjdk NGU0YmQ4NjJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC01MjIsMTYgKzUyMiwxMiBAQCBE cm9wUHJlcGFyZWRTdGF0ZW1lbnQoY29uc3QgY2hhciAqc3RtdF9uYW1lLCBib29sIHNob3dFcnJv cikKIHZvaWQKIERyb3BBbGxQcmVwYXJlZFN0YXRlbWVudHModm9pZCkKIHsKLQlIQVNIX1NFUV9T VEFUVVMgc2VxOwotCVByZXBhcmVkU3RhdGVtZW50ICplbnRyeTsKLQogCS8qIG5vdGhpbmcgY2Fj aGVkICovCiAJaWYgKCFwcmVwYXJlZF9xdWVyaWVzKQogCQlyZXR1cm47CiAKIAkvKiB3YWxrIG92 ZXIgY2FjaGUgKi8KLQloYXNoX3NlcV9pbml0KCZzZXEsIHByZXBhcmVkX3F1ZXJpZXMpOwotCXdo aWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJnNlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9o YXNoKFByZXBhcmVkU3RhdGVtZW50LCBlbnRyeSwgcHJlcGFyZWRfcXVlcmllcykKIAl7CiAJCS8q IFJlbGVhc2UgdGhlIHBsYW5jYWNoZSBlbnRyeSAqLwogCQlEcm9wQ2FjaGVkUGxhbihlbnRyeS0+ cGxhbnNvdXJjZSk7CkBAIC02NzgsMTEgKzY3NCw3IEBAIHBnX3ByZXBhcmVkX3N0YXRlbWVudChQ R19GVU5DVElPTl9BUkdTKQogCS8qIGhhc2ggdGFibGUgbWlnaHQgYmUgdW5pbml0aWFsaXplZCAq LwogCWlmIChwcmVwYXJlZF9xdWVyaWVzKQogCXsKLQkJSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2Vx OwotCQlQcmVwYXJlZFN0YXRlbWVudCAqcHJlcF9zdG10OwotCi0JCWhhc2hfc2VxX2luaXQoJmhh c2hfc2VxLCBwcmVwYXJlZF9xdWVyaWVzKTsKLQkJd2hpbGUgKChwcmVwX3N0bXQgPSBoYXNoX3Nl cV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKFByZXBhcmVkU3Rh dGVtZW50LCBwcmVwX3N0bXQsIHByZXBhcmVkX3F1ZXJpZXMpCiAJCXsKIAkJCVR1cGxlRGVzYwly ZXN1bHRfZGVzYzsKIAkJCURhdHVtCQl2YWx1ZXNbOF07CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CmluZGV4IDdmMGZiMjYzNzcyLi45YTU1NjYyYWY1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMKQEAgLTIyMzYsMTQgKzIyMzYsOSBAQCBFeGVjdXRlVHJ1bmNhdGVHdXRzKExpc3QgKmV4cGxp Y2l0X3JlbHMsCiAJLyogTm93IGdvIHRocm91Z2ggdGhlIGhhc2ggdGFibGUsIGFuZCB0cnVuY2F0 ZSBmb3JlaWduIHRhYmxlcyAqLwogCWlmIChmdF9odGFiKQogCXsKLQkJRm9yZWlnblRydW5jYXRl SW5mbyAqZnRfaW5mbzsKLQkJSEFTSF9TRVFfU1RBVFVTIHNlcTsKLQotCQloYXNoX3NlcV9pbml0 KCZzZXEsIGZ0X2h0YWIpOwotCiAJCVBHX1RSWSgpOwogCQl7Ci0JCQl3aGlsZSAoKGZ0X2luZm8g PSBoYXNoX3NlcV9zZWFyY2goJnNlcSkpICE9IE5VTEwpCisJCQlmb3JlYWNoX2hhc2goRm9yZWln blRydW5jYXRlSW5mbywgZnRfaW5mbywgZnRfaHRhYikKIAkJCXsKIAkJCQlGZHdSb3V0aW5lICpy b3V0aW5lID0gR2V0RmR3Um91dGluZUJ5U2VydmVySWQoZnRfaW5mby0+c2VydmVyaWQpOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYwppbmRleCA0MzI5MWYxMjhmZC4uZmE1MmY3 YTc3NmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYwpAQCAtMjM0MiwxNSAr MjM0MiwxMCBAQCBnZXRfYnRyZWVfdGVzdF9vcChPaWQgcHJlZF9vcCwgT2lkIGNsYXVzZV9vcCwg Ym9vbCByZWZ1dGVfaXQpCiBzdGF0aWMgdm9pZAogSW52YWxpZGF0ZU9wclByb29mQ2FjaGVDYWxs QmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hf U0VRX1NUQVRVUyBzdGF0dXM7Ci0JT3ByUHJvb2ZDYWNoZUVudHJ5ICpoZW50cnk7Ci0KIAlBc3Nl cnQoT3ByUHJvb2ZDYWNoZUhhc2ggIT0gTlVMTCk7CiAKIAkvKiBDdXJyZW50bHkgd2UganVzdCBy ZXNldCBhbGwgZW50cmllczsgaGFyZCB0byBiZSBzbWFydGVyIC4uLiAqLwotCWhhc2hfc2VxX2lu aXQoJnN0YXR1cywgT3ByUHJvb2ZDYWNoZUhhc2gpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoT3By UHJvb2ZDYWNoZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlm b3JlYWNoX2hhc2goT3ByUHJvb2ZDYWNoZUVudHJ5LCBoZW50cnksIE9wclByb29mQ2FjaGVIYXNo KQogCXsKIAkJaGVudHJ5LT5oYXZlX2ltcGxpYyA9IGZhbHNlOwogCQloZW50cnktPmhhdmVfcmVm dXRlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5j IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYwppbmRleCBmOTU4ODg2NWNmYy4uOTEz ODI5NjJkOTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYwpAQCAtMTA3NiwxNSArMTA3NiwxMCBA QCBtYWtlX29wZXJfY2FjaGVfZW50cnkoT3ByQ2FjaGVLZXkgKmtleSwgT2lkIG9wcl9vaWQpCiBz dGF0aWMgdm9pZAogSW52YWxpZGF0ZU9wckNhY2hlQ2FsbEJhY2soRGF0dW0gYXJnLCBpbnQgY2Fj aGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCU9w ckNhY2hlRW50cnkgKmhlbnRyeTsKLQogCUFzc2VydChPcHJDYWNoZUhhc2ggIT0gTlVMTCk7CiAK IAkvKiBDdXJyZW50bHkgd2UganVzdCBmbHVzaCBhbGwgZW50cmllczsgaGFyZCB0byBiZSBzbWFy dGVyIC4uLiAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgT3ByQ2FjaGVIYXNoKTsKLQotCXdo aWxlICgoaGVudHJ5ID0gKE9wckNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMp KSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChPcHJDYWNoZUVudHJ5LCBoZW50cnksIE9wckNhY2hl SGFzaCkKIAl7CiAJCWlmIChoYXNoX3NlYXJjaChPcHJDYWNoZUhhc2gsCiAJCQkJCQkmaGVudHJ5 LT5rZXksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYyBi L3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5jCmluZGV4IGIzZmJkNzgxNDk0Li45 MDhiMGUzOWI4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNj LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmMKQEAgLTQ3OCwxMSAr NDc4LDcgQEAgUGFydGl0aW9uRGlyZWN0b3J5TG9va3VwKFBhcnRpdGlvbkRpcmVjdG9yeSBwZGly LCBSZWxhdGlvbiByZWwpCiB2b2lkCiBEZXN0cm95UGFydGl0aW9uRGlyZWN0b3J5KFBhcnRpdGlv bkRpcmVjdG9yeSBwZGlyKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUGFydGl0aW9u RGlyZWN0b3J5RW50cnkgKnBkZTsKLQotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgcGRpci0+cGRp cl9oYXNoKTsKLQl3aGlsZSAoKHBkZSA9IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVM TCkKKwlmb3JlYWNoX2hhc2goUGFydGl0aW9uRGlyZWN0b3J5RW50cnksIHBkZSwgcGRpci0+cGRp cl9oYXNoKQogCQlSZWxhdGlvbkRlY3JlbWVudFJlZmVyZW5jZUNvdW50KHBkZS0+cmVsKTsKIH0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCBmMWI2YjFhMjRhOS4uYjBkZjdm YmE2OTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisr KyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCkBAIC0xMDIxLDggKzEwMjEs NiBAQCByZWJ1aWxkX2RhdGFiYXNlX2xpc3QoT2lkIG5ld2RiKQogCQlUaW1lc3RhbXBUeiBjdXJy ZW50X3RpbWU7CiAJCWludAkJCW1pbGxpc19pbmNyZW1lbnQ7CiAJCWF2bF9kYmFzZSAgKmRiYXJ5 OwotCQlhdmxfZGJhc2UgICpkYjsKLQkJSEFTSF9TRVFfU1RBVFVTIHNlcTsKIAkJaW50CQkJaTsK IAogCQkvKiBwdXQgYWxsIHRoZSBoYXNoIGVsZW1lbnRzIGludG8gYW4gYXJyYXkgKi8KQEAgLTEw MzMsOCArMTAzMSw3IEBAIHJlYnVpbGRfZGF0YWJhc2VfbGlzdChPaWQgbmV3ZGIpCiAjZW5kaWYK IAogCQlpID0gMDsKLQkJaGFzaF9zZXFfaW5pdCgmc2VxLCBkYmhhc2gpOwotCQl3aGlsZSAoKGRi ID0gaGFzaF9zZXFfc2VhcmNoKCZzZXEpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goYXZsX2Ri YXNlLCBkYiwgZGJoYXNoKQogCQkJbWVtY3B5KCYoZGJhcnlbaSsrXSksIGRiLCBzaXplb2YoYXZs X2RiYXNlKSk7CiAKIAkJLyogc29ydCB0aGUgYXJyYXkgKi8KQEAgLTEwNTksNyArMTA1Niw3IEBA IHJlYnVpbGRfZGF0YWJhc2VfbGlzdChPaWQgbmV3ZGIpCiAJCSAqLwogCQlmb3IgKGkgPSAwOyBp IDwgbmVsZW1zOyBpKyspCiAJCXsKLQkJCWRiID0gJihkYmFyeVtpXSk7CisJCQlhdmxfZGJhc2Ug ICpkYiA9ICYoZGJhcnlbaV0pOwogCiAJCQljdXJyZW50X3RpbWUgPSBUaW1lc3RhbXBUelBsdXNN aWxsaXNlY29uZHMoY3VycmVudF90aW1lLAogCQkJCQkJCQkJCQkJCSAgIG1pbGxpc19pbmNyZW1l bnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlv bi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4IGM0 YWY4NWQ3NGYxLi41N2Y1ODcyOTg0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcmVsYXRpb24uYwpAQCAtNjMsMjUgKzYzLDE5IEBAIHN0YXRpYyBPaWQJRmluZExvZ2ljYWxS ZXBMb2NhbEluZGV4KFJlbGF0aW9uIGxvY2FscmVsLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbW90 CiBzdGF0aWMgdm9pZAogbG9naWNhbHJlcF9yZWxtYXBfaW52YWxpZGF0ZV9jYihEYXR1bSBhcmcs IE9pZCByZWxvaWQpCiB7Ci0JTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeTsKLQogCS8qIEp1 c3QgdG8gYmUgc3VyZS4gKi8KIAlpZiAoTG9naWNhbFJlcFJlbE1hcCA9PSBOVUxMKQogCQlyZXR1 cm47CiAKIAlpZiAocmVsb2lkICE9IEludmFsaWRPaWQpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMg c3RhdHVzOwotCi0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9naWNhbFJlcFJlbE1hcCk7Ci0K IAkJLyogVE9ETywgdXNlIGludmVyc2UgbG9va3VwIGhhc2h0YWJsZT8gKi8KLQkJd2hpbGUgKChl bnRyeSA9IChMb2dpY2FsUmVwUmVsTWFwRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMp KSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTG9naWNhbFJlcFJlbE1hcEVudHJ5LCBlbnRyeSwg TG9naWNhbFJlcFJlbE1hcCkKIAkJewogCQkJaWYgKGVudHJ5LT5sb2NhbHJlbG9pZCA9PSByZWxv aWQpCiAJCQl7CiAJCQkJZW50cnktPmxvY2FscmVsdmFsaWQgPSBmYWxzZTsKLQkJCQloYXNoX3Nl cV90ZXJtKCZzdGF0dXMpOworCQkJCWZvcmVhY2hfaGFzaF90ZXJtKGVudHJ5KTsKIAkJCQlicmVh azsKIAkJCX0KIAkJfQpAQCAtODksMTEgKzgzLDcgQEAgbG9naWNhbHJlcF9yZWxtYXBfaW52YWxp ZGF0ZV9jYihEYXR1bSBhcmcsIE9pZCByZWxvaWQpCiAJZWxzZQogCXsKIAkJLyogaW52YWxpZGF0 ZSBhbGwgY2FjaGUgZW50cmllcyAqLwotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCi0JCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgTG9naWNhbFJlcFJlbE1hcCk7Ci0KLQkJd2hpbGUgKChlbnRy eSA9IChMb2dpY2FsUmVwUmVsTWFwRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAh PSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTG9naWNhbFJlcFJlbE1hcEVudHJ5LCBlbnRyeSwgTG9n aWNhbFJlcFJlbE1hcCkKIAkJCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gZmFsc2U7CiAJfQogfQpA QCAtNTMwLDI1ICs1MjAsMTkgQEAgbG9naWNhbHJlcF9yZWxfY2xvc2UoTG9naWNhbFJlcFJlbE1h cEVudHJ5ICpyZWwsIExPQ0tNT0RFIGxvY2ttb2RlKQogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBf cGFydG1hcF9pbnZhbGlkYXRlX2NiKERhdHVtIGFyZywgT2lkIHJlbG9pZCkKIHsKLQlMb2dpY2Fs UmVwUGFydE1hcEVudHJ5ICplbnRyeTsKLQogCS8qIEp1c3QgdG8gYmUgc3VyZS4gKi8KIAlpZiAo TG9naWNhbFJlcFBhcnRNYXAgPT0gTlVMTCkKIAkJcmV0dXJuOwogCiAJaWYgKHJlbG9pZCAhPSBJ bnZhbGlkT2lkKQogCXsKLQkJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQotCQloYXNoX3NlcV9p bml0KCZzdGF0dXMsIExvZ2ljYWxSZXBQYXJ0TWFwKTsKLQogCQkvKiBUT0RPLCB1c2UgaW52ZXJz ZSBsb29rdXAgaGFzaHRhYmxlPyAqLwotCQl3aGlsZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBQYXJ0 TWFwRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNo X2hhc2goTG9naWNhbFJlcFBhcnRNYXBFbnRyeSwgZW50cnksIExvZ2ljYWxSZXBQYXJ0TWFwKQog CQl7CiAJCQlpZiAoZW50cnktPnJlbG1hcGVudHJ5LmxvY2FscmVsb2lkID09IHJlbG9pZCkKIAkJ CXsKIAkJCQllbnRyeS0+cmVsbWFwZW50cnkubG9jYWxyZWx2YWxpZCA9IGZhbHNlOwotCQkJCWhh c2hfc2VxX3Rlcm0oJnN0YXR1cyk7CisJCQkJZm9yZWFjaF9oYXNoX3Rlcm0oZW50cnkpOwogCQkJ CWJyZWFrOwogCQkJfQogCQl9CkBAIC01NTYsMTEgKzU0MCw3IEBAIGxvZ2ljYWxyZXBfcGFydG1h cF9pbnZhbGlkYXRlX2NiKERhdHVtIGFyZywgT2lkIHJlbG9pZCkKIAllbHNlCiAJewogCQkvKiBp bnZhbGlkYXRlIGFsbCBjYWNoZSBlbnRyaWVzICovCi0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2dpY2FsUmVwUGFydE1hcCk7Ci0KLQkJd2hp bGUgKChlbnRyeSA9IChMb2dpY2FsUmVwUGFydE1hcEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgm c3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKExvZ2ljYWxSZXBQYXJ0TWFwRW50cnks IGVudHJ5LCBMb2dpY2FsUmVwUGFydE1hcCkKIAkJCWVudHJ5LT5yZWxtYXBlbnRyeS5sb2NhbHJl bHZhbGlkID0gZmFsc2U7CiAJfQogfQpAQCAtNTc4LDE1ICs1NTgsMTIgQEAgbG9naWNhbHJlcF9w YXJ0bWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQogdm9pZAogbG9naWNh bHJlcF9wYXJ0bWFwX3Jlc2V0X3JlbG1hcChMb2dpY2FsUmVwUmVsYXRpb24gKnJlbW90ZXJlbCkK IHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCUxvZ2ljYWxSZXBQYXJ0TWFwRW50cnkgKnBh cnRfZW50cnk7CiAJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeTsKIAogCWlmIChMb2dpY2Fs UmVwUGFydE1hcCA9PSBOVUxMKQogCQlyZXR1cm47CiAKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMs IExvZ2ljYWxSZXBQYXJ0TWFwKTsKLQl3aGlsZSAoKHBhcnRfZW50cnkgPSAoTG9naWNhbFJlcFBh cnRNYXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKExvZ2ljYWxSZXBQYXJ0TWFwRW50cnksIHBhcnRfZW50cnksIExvZ2ljYWxSZXBQYXJ0 TWFwKQogCXsKIAkJZW50cnkgPSAmcGFydF9lbnRyeS0+cmVsbWFwZW50cnk7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggZTA5NTE2 ZDNkOGIuLjU2MmZkNzQzZDk0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Jlb3JkZXJidWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3Jlb3JkZXJidWZmZXIuYwpAQCAtNTI1MCwxNSArNTI1MCwxMSBAQCBSZW9yZGVyQnVmZmVy VG9hc3RSZXBsYWNlKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiBz dGF0aWMgdm9pZAogUmVvcmRlckJ1ZmZlclRvYXN0UmVzZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFJl b3JkZXJCdWZmZXJUWE4gKnR4bikKIHsKLQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JUmVvcmRl ckJ1ZmZlclRvYXN0RW50ICplbnQ7Ci0KIAlpZiAodHhuLT50b2FzdF9oYXNoID09IE5VTEwpCiAJ CXJldHVybjsKIAogCS8qIHNlcXVlbnRpYWxseSB3YWxrIG92ZXIgdGhlIGhhc2ggYW5kIGZyZWUg ZXZlcnl0aGluZyAqLwotCWhhc2hfc2VxX2luaXQoJmhzdGF0LCB0eG4tPnRvYXN0X2hhc2gpOwot CXdoaWxlICgoZW50ID0gKFJlb3JkZXJCdWZmZXJUb2FzdEVudCAqKSBoYXNoX3NlcV9zZWFyY2go JmhzdGF0KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVvcmRlckJ1ZmZlclRvYXN0RW50LCBl bnQsIHR4bi0+dG9hc3RfaGFzaCkKIAl7CiAJCWRsaXN0X211dGFibGVfaXRlciBpdDsKIApAQCAt NTMyMSwxMSArNTMxNyw3IEBAIHR5cGVkZWYgc3RydWN0IFJld3JpdGVNYXBwaW5nRmlsZQogc3Rh dGljIHZvaWQKIERpc3BsYXlNYXBwaW5nKEhUQUIgKnR1cGxlY2lkX2RhdGEpCiB7Ci0JSEFTSF9T RVFfU1RBVFVTIGhzdGF0OwotCVJlb3JkZXJCdWZmZXJUdXBsZUNpZEVudCAqZW50OwotCi0JaGFz aF9zZXFfaW5pdCgmaHN0YXQsIHR1cGxlY2lkX2RhdGEpOwotCXdoaWxlICgoZW50ID0gKFJlb3Jk ZXJCdWZmZXJUdXBsZUNpZEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJmhzdGF0KSkgIT0gTlVMTCkK Kwlmb3JlYWNoX2hhc2goUmVvcmRlckJ1ZmZlclR1cGxlQ2lkRW50LCBlbnQsIHR1cGxlY2lkX2Rh dGEpCiAJewogCQllbG9nKERFQlVHMywgIm1hcHBpbmc6IG5vZGU6ICV1LyV1LyV1IHRpZDogJXUv JXUgY21pbjogJXUsIGNtYXg6ICV1IiwKIAkJCSBlbnQtPmtleS5ybG9jYXRvci5kYk9pZCwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDZkZWEyNGZm MGE2Li4zNzUwYTg4MGFlZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdv dXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9w Z291dHB1dC5jCkBAIC0yMzM5LDEzICsyMzM5LDkgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0 cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiBzdGF0aWMgdm9pZAogY2xlYW51cF9y ZWxfc3luY19jYWNoZShUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBpc19jb21taXQpCiB7Ci0JSEFT SF9TRVFfU1RBVFVTIGhhc2hfc2VxOwotCVJlbGF0aW9uU3luY0VudHJ5ICplbnRyeTsKLQogCUFz c2VydChSZWxhdGlvblN5bmNDYWNoZSAhPSBOVUxMKTsKIAotCWhhc2hfc2VxX2luaXQoJmhhc2hf c2VxLCBSZWxhdGlvblN5bmNDYWNoZSk7Ci0Jd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJj aCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZWxhdGlvblN5bmNFbnRyeSwg ZW50cnksIFJlbGF0aW9uU3luY0NhY2hlKQogCXsKIAkJLyoKIAkJICogV2UgY2FuIHNldCB0aGUg c2NoZW1hX3NlbnQgZmxhZyBmb3IgYW4gZW50cnkgdGhhdCBoYXMgY29tbWl0dGVkIHhpZApAQCAt MjM3NCw4ICsyMzcwLDYgQEAgY2xlYW51cF9yZWxfc3luY19jYWNoZShUcmFuc2FjdGlvbklkIHhp ZCwgYm9vbCBpc19jb21taXQpCiBzdGF0aWMgdm9pZAogcmVsX3N5bmNfY2FjaGVfcmVsYXRpb25f Y2IoRGF0dW0gYXJnLCBPaWQgcmVsaWQpCiB7Ci0JUmVsYXRpb25TeW5jRW50cnkgKmVudHJ5Owot CiAJLyoKIAkgKiBXZSBjYW4gZ2V0IGhlcmUgaWYgdGhlIHBsdWdpbiB3YXMgdXNlZCBpbiBTUUwg aW50ZXJmYWNlIGFzIHRoZQogCSAqIFJlbGF0aW9uU3luY0NhY2hlIGlzIGRlc3Ryb3llZCB3aGVu IHRoZSBkZWNvZGluZyBmaW5pc2hlcywgYnV0IHRoZXJlIGlzCkBAIC0yMzk4LDE4ICsyMzkyLDE2 IEBAIHJlbF9zeW5jX2NhY2hlX3JlbGF0aW9uX2NiKERhdHVtIGFyZywgT2lkIHJlbGlkKQogCQkg KiBHZXR0aW5nIGludmFsaWRhdGlvbnMgZm9yIHJlbGF0aW9ucyB0aGF0IGFyZW4ndCBpbiB0aGUg dGFibGUgaXMKIAkJICogZW50aXJlbHkgbm9ybWFsLiAgU28gd2UgZG9uJ3QgY2FyZSBpZiBpdCdz IGZvdW5kIG9yIG5vdC4KIAkJICovCi0JCWVudHJ5ID0gKFJlbGF0aW9uU3luY0VudHJ5ICopIGhh c2hfc2VhcmNoKFJlbGF0aW9uU3luY0NhY2hlLCAmcmVsaWQsCi0JCQkJCQkJCQkJCQkgIEhBU0hf RklORCwgTlVMTCk7CisJCVJlbGF0aW9uU3luY0VudHJ5ICplbnRyeSA9IGhhc2hfc2VhcmNoKFJl bGF0aW9uU3luY0NhY2hlLCAmcmVsaWQsCisJCQkJCQkJCQkJCSAgIEhBU0hfRklORCwgTlVMTCk7 CisKIAkJaWYgKGVudHJ5ICE9IE5VTEwpCiAJCQllbnRyeS0+cmVwbGljYXRlX3ZhbGlkID0gZmFs c2U7CiAJfQogCWVsc2UKIAl7CiAJCS8qIFdob2xlIGNhY2hlIG11c3QgYmUgZmx1c2hlZC4gKi8K LQkJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJl bGF0aW9uU3luY0NhY2hlKTsKLQkJd2hpbGUgKChlbnRyeSA9IChSZWxhdGlvblN5bmNFbnRyeSAq KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChSZWxh dGlvblN5bmNFbnRyeSwgZW50cnksIFJlbGF0aW9uU3luY0NhY2hlKQogCQl7CiAJCQllbnRyeS0+ cmVwbGljYXRlX3ZhbGlkID0gZmFsc2U7CiAJCX0KQEAgLTI0MjQsOSArMjQxNiw2IEBAIHJlbF9z eW5jX2NhY2hlX3JlbGF0aW9uX2NiKERhdHVtIGFyZywgT2lkIHJlbGlkKQogc3RhdGljIHZvaWQK IHJlbF9zeW5jX2NhY2hlX3B1YmxpY2F0aW9uX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVp bnQzMiBoYXNodmFsdWUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlSZWxhdGlvblN5 bmNFbnRyeSAqZW50cnk7Ci0KIAkvKgogCSAqIFdlIGNhbiBnZXQgaGVyZSBpZiB0aGUgcGx1Z2lu IHdhcyB1c2VkIGluIFNRTCBpbnRlcmZhY2UgYXMgdGhlCiAJICogUmVsYXRpb25TeW5jQ2FjaGUg aXMgZGVzdHJveWVkIHdoZW4gdGhlIGRlY29kaW5nIGZpbmlzaGVzLCBidXQgdGhlcmUgaXMKQEAg LTI0MzksOCArMjQyOCw3IEBAIHJlbF9zeW5jX2NhY2hlX3B1YmxpY2F0aW9uX2NiKERhdHVtIGFy ZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiAJICogV2UgaGF2ZSBubyBlYXN5IHdh eSB0byBpZGVudGlmeSB3aGljaCBjYWNoZSBlbnRyaWVzIHRoaXMgaW52YWxpZGF0aW9uCiAJICog ZXZlbnQgbWlnaHQgaGF2ZSBhZmZlY3RlZCwgc28ganVzdCBtYXJrIHRoZW0gYWxsIGludmFsaWQu CiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWxhdGlvblN5bmNDYWNoZSk7Ci0Jd2hp bGUgKChlbnRyeSA9IChSZWxhdGlvblN5bmNFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1 cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJlbGF0aW9uU3luY0VudHJ5LCBlbnRyeSwgUmVs YXRpb25TeW5jQ2FjaGUpCiAJewogCQllbnRyeS0+cmVwbGljYXRlX3ZhbGlkID0gZmFsc2U7CiAJ fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwppbmRleCA2ZjU5MzI4NDNjYy4uYjk2ZDg5 YWJlOTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCkBAIC00MDU3LDE0ICs0MDU3 LDEzIEBAIENoZWNrRm9yQnVmZmVyTGVha3Modm9pZCkKIHsKICNpZmRlZiBVU0VfQVNTRVJUX0NI RUNLSU5HCiAJaW50CQkJUmVmQ291bnRFcnJvcnMgPSAwOwotCVByaXZhdGVSZWZDb3VudEVudHJ5 ICpyZXM7CiAJaW50CQkJaTsKIAljaGFyCSAgICpzOwogCiAJLyogY2hlY2sgdGhlIGFycmF5ICov CiAJZm9yIChpID0gMDsgaSA8IFJFRkNPVU5UX0FSUkFZX0VOVFJJRVM7IGkrKykKIAl7Ci0JCXJl cyA9ICZQcml2YXRlUmVmQ291bnRBcnJheVtpXTsKKwkJUHJpdmF0ZVJlZkNvdW50RW50cnkgKnJl cyA9ICZQcml2YXRlUmVmQ291bnRBcnJheVtpXTsKIAogCQlpZiAocmVzLT5idWZmZXIgIT0gSW52 YWxpZEJ1ZmZlcikKIAkJewpAQCAtNDA3OSwxMiArNDA3OCw5IEBAIENoZWNrRm9yQnVmZmVyTGVh a3Modm9pZCkKIAkvKiBpZiBuZWNlc3Nhcnkgc2VhcmNoIHRoZSBoYXNoICovCiAJaWYgKFByaXZh dGVSZWZDb3VudE92ZXJmbG93ZWQpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0KLQkJ aGFzaF9zZXFfaW5pdCgmaHN0YXQsIFByaXZhdGVSZWZDb3VudEhhc2gpOwotCQl3aGlsZSAoKHJl cyA9IChQcml2YXRlUmVmQ291bnRFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJmhzdGF0KSkgIT0g TlVMTCkKKwkJZm9yZWFjaF9oYXNoKFByaXZhdGVSZWZDb3VudEVudHJ5LCBlbnQsIFByaXZhdGVS ZWZDb3VudEhhc2gpCiAJCXsKLQkJCXMgPSBEZWJ1Z1ByaW50QnVmZmVyUmVmY291bnQocmVzLT5i dWZmZXIpOworCQkJcyA9IERlYnVnUHJpbnRCdWZmZXJSZWZjb3VudChlbnQtPmJ1ZmZlcik7CiAJ CQllbG9nKFdBUk5JTkcsICJidWZmZXIgcmVmY291bnQgbGVhazogJXMiLCBzKTsKIAkJCXBmcmVl KHMpOwogCQkJUmVmQ291bnRFcnJvcnMrKzsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3NobWVtLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCmluZGV4IDJk NGM1MThkZWMyLi44MTY0YThjOTE3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc2htZW0uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCkBAIC01Mzks OCArNTM5LDYgQEAgcGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiB7 CiAjZGVmaW5lIFBHX0dFVF9TSE1FTV9TSVpFU19DT0xTIDQKIAlSZXR1cm5TZXRJbmZvICpyc2lu Zm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87Ci0JSEFTSF9TRVFfU1RB VFVTIGhzdGF0OwotCVNobWVtSW5kZXhFbnQgKmVudDsKIAlTaXplCQluYW1lZF9hbGxvY2F0ZWQg PSAwOwogCURhdHVtCQl2YWx1ZXNbUEdfR0VUX1NITUVNX1NJWkVTX0NPTFNdOwogCWJvb2wJCW51 bGxzW1BHX0dFVF9TSE1FTV9TSVpFU19DT0xTXTsKQEAgLTU0OSwxMSArNTQ3LDkgQEAgcGdfZ2V0 X3NobWVtX2FsbG9jYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlMV0xvY2tBY3F1aXJlKFNo bWVtSW5kZXhMb2NrLCBMV19TSEFSRUQpOwogCi0JaGFzaF9zZXFfaW5pdCgmaHN0YXQsIFNobWVt SW5kZXgpOwotCiAJLyogb3V0cHV0IGFsbCBhbGxvY2F0ZWQgZW50cmllcyAqLwogCW1lbXNldChu dWxscywgMCwgc2l6ZW9mKG51bGxzKSk7Ci0Jd2hpbGUgKChlbnQgPSAoU2htZW1JbmRleEVudCAq KSBoYXNoX3NlcV9zZWFyY2goJmhzdGF0KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goU2htZW1J bmRleEVudCwgZW50LCBTaG1lbUluZGV4KQogCXsKIAkJdmFsdWVzWzBdID0gQ1N0cmluZ0dldFRl eHREYXR1bShlbnQtPmtleSk7CiAJCXZhbHVlc1sxXSA9IEludDY0R2V0RGF0dW0oKGNoYXIgKikg ZW50LT5sb2NhdGlvbiAtIChjaGFyICopIFNobWVtU2VnSGRyKTsKQEAgLTU5Niw4ICs1OTIsNiBA QCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnNfbnVtYShQR19GVU5DVElPTl9BUkdTKQogewogI2Rl ZmluZSBQR19HRVRfU0hNRU1fTlVNQV9TSVpFU19DT0xTIDMKIAlSZXR1cm5TZXRJbmZvICpyc2lu Zm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87Ci0JSEFTSF9TRVFfU1RB VFVTIGhzdGF0OwotCVNobWVtSW5kZXhFbnQgKmVudDsKIAlEYXR1bQkJdmFsdWVzW1BHX0dFVF9T SE1FTV9OVU1BX1NJWkVTX0NPTFNdOwogCWJvb2wJCW51bGxzW1BHX0dFVF9TSE1FTV9OVU1BX1NJ WkVTX0NPTFNdOwogCVNpemUJCW9zX3BhZ2Vfc2l6ZTsKQEAgLTY0NywxMSArNjQxLDkgQEAgcGdf Z2V0X3NobWVtX2FsbG9jYXRpb25zX251bWEoUEdfRlVOQ1RJT05fQVJHUykKIAogCUxXTG9ja0Fj cXVpcmUoU2htZW1JbmRleExvY2ssIExXX1NIQVJFRCk7CiAKLQloYXNoX3NlcV9pbml0KCZoc3Rh dCwgU2htZW1JbmRleCk7Ci0KIAkvKiBvdXRwdXQgYWxsIGFsbG9jYXRlZCBlbnRyaWVzICovCiAJ bWVtc2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKLQl3aGlsZSAoKGVudCA9IChTaG1lbUlu ZGV4RW50ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFz aChTaG1lbUluZGV4RW50LCBlbnQsIFNobWVtSW5kZXgpCiAJewogCQlpbnQJCQlpOwogCQljaGFy CSAgICpzdGFydHB0ciwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5k YnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCA5MzA1ZTAwOTc3 Mi4uN2Q5ZTU0YmUwMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5k YnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTEwOTksMTMg KzEwOTksOSBAQCBTdGFuZGJ5UmVsZWFzZUxvY2tUcmVlKFRyYW5zYWN0aW9uSWQgeGlkLCBpbnQg bnN1YnhpZHMsIFRyYW5zYWN0aW9uSWQgKnN1YnhpZHMpCiB2b2lkCiBTdGFuZGJ5UmVsZWFzZUFs bExvY2tzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlSZWNvdmVyeUxvY2tY aWRFbnRyeSAqZW50cnk7Ci0KIAllbG9nKERFQlVHMiwgInJlbGVhc2UgYWxsIHN0YW5kYnkgbG9j a3MiKTsKIAotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUmVjb3ZlcnlMb2NrWGlkSGFzaCk7Ci0J d2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkpCisJZm9yZWFjaF9oYXNo KFJlY292ZXJ5TG9ja1hpZEVudHJ5LCBlbnRyeSwgUmVjb3ZlcnlMb2NrWGlkSGFzaCkKIAl7CiAJ CVN0YW5kYnlSZWxlYXNlWGlkRW50cnlMb2NrcyhlbnRyeSk7CiAJCWhhc2hfc2VhcmNoKFJlY292 ZXJ5TG9ja1hpZEhhc2gsIGVudHJ5LCBIQVNIX1JFTU9WRSwgTlVMTCk7CkBAIC0xMTIzLDExICsx MTE5LDcgQEAgU3RhbmRieVJlbGVhc2VBbGxMb2Nrcyh2b2lkKQogdm9pZAogU3RhbmRieVJlbGVh c2VPbGRMb2NrcyhUcmFuc2FjdGlvbklkIG9sZHhpZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3Rh dHVzOwotCVJlY292ZXJ5TG9ja1hpZEVudHJ5ICplbnRyeTsKLQotCWhhc2hfc2VxX2luaXQoJnN0 YXR1cywgUmVjb3ZlcnlMb2NrWGlkSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3Nl YXJjaCgmc3RhdHVzKSkpCisJZm9yZWFjaF9oYXNoKFJlY292ZXJ5TG9ja1hpZEVudHJ5LCBlbnRy eSwgUmVjb3ZlcnlMb2NrWGlkSGFzaCkKIAl7CiAJCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxp ZChlbnRyeS0+eGlkKSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9s b2NrLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCmluZGV4IGU1ZWE1NGU3ODI0 Li4wMjg1MmVlMWE0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2su YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCkBAIC0yMjkyLDExICsyMjky LDkgQEAgTG9ja1JlbGVhc2UoY29uc3QgTE9DS1RBRyAqbG9ja3RhZywgTE9DS01PREUgbG9ja21v ZGUsIGJvb2wgc2Vzc2lvbkxvY2spCiB2b2lkCiBMb2NrUmVsZWFzZUFsbChMT0NLTUVUSE9ESUQg bG9ja21ldGhvZGlkLCBib29sIGFsbExvY2tzKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 CiAJTG9ja01ldGhvZAlsb2NrTWV0aG9kVGFibGU7CiAJaW50CQkJaSwKIAkJCQludW1Mb2NrTW9k ZXM7Ci0JTE9DQUxMT0NLICAqbG9jYWxsb2NrOwogCUxPQ0sJICAgKmxvY2s7CiAJaW50CQkJcGFy dGl0aW9uOwogCWJvb2wJCWhhdmVfZmFzdF9wYXRoX2x3bG9jayA9IGZhbHNlOwpAQCAtMjMyOSw5 ICsyMzI3LDcgQEAgTG9ja1JlbGVhc2VBbGwoTE9DS01FVEhPRElEIGxvY2ttZXRob2RpZCwgYm9v bCBhbGxMb2NrcykKIAkgKiBwb2ludGVycy4gIEZhc3QtcGF0aCBsb2NrcyBhcmUgY2xlYW5lZCB1 cCBkdXJpbmcgdGhlIGxvY2FsbG9jayB0YWJsZQogCSAqIHNjYW4sIHRob3VnaC4KIAkgKi8KLQlo YXNoX3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUgKChs b2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVM TCkKKwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2NhbEhh c2gpCiAJewogCQkvKgogCQkgKiBJZiB0aGUgTE9DQUxMT0NLIGVudHJ5IGlzIHVudXNlZCwgc29t ZXRoaW5nIG11c3QndmUgZ29uZSB3cm9uZwpAQCAtMjU2NiwxNSArMjU2MiwxMCBAQCBMb2NrUmVs ZWFzZUFsbChMT0NLTUVUSE9ESUQgbG9ja21ldGhvZGlkLCBib29sIGFsbExvY2tzKQogdm9pZAog TG9ja1JlbGVhc2VTZXNzaW9uKExPQ0tNRVRIT0RJRCBsb2NrbWV0aG9kaWQpCiB7Ci0JSEFTSF9T RVFfU1RBVFVTIHN0YXR1czsKLQlMT0NBTExPQ0sgICpsb2NhbGxvY2s7Ci0KIAlpZiAobG9ja21l dGhvZGlkIDw9IDAgfHwgbG9ja21ldGhvZGlkID49IGxlbmd0aG9mKExvY2tNZXRob2RzKSkKIAkJ ZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBsb2NrIG1ldGhvZDogJWQiLCBsb2NrbWV0aG9kaWQp OwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kTG9jYWxIYXNoKTsKLQotCXdo aWxlICgobG9jYWxsb2NrID0gKExPQ0FMTE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykp ICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKExPQ0FMTE9DSywgbG9jYWxsb2NrLCBMb2NrTWV0aG9k TG9jYWxIYXNoKQogCXsKIAkJLyogSWdub3JlIGl0ZW1zIHRoYXQgYXJlIG5vdCBvZiB0aGUgc3Bl Y2lmaWVkIGxvY2sgbWV0aG9kICovCiAJCWlmIChMT0NBTExPQ0tfTE9DS01FVEhPRCgqbG9jYWxs b2NrKSAhPSBsb2NrbWV0aG9kaWQpCkBAIC0yNTk4LDEyICsyNTg5LDcgQEAgTG9ja1JlbGVhc2VD dXJyZW50T3duZXIoTE9DQUxMT0NLICoqbG9jYWxsb2NrcywgaW50IG5sb2NrcykKIHsKIAlpZiAo bG9jYWxsb2NrcyA9PSBOVUxMKQogCXsKLQkJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQkJTE9D QUxMT0NLICAqbG9jYWxsb2NrOwotCi0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhv ZExvY2FsSGFzaCk7Ci0KLQkJd2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hf c2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKExPQ0FMTE9DSywg bG9jYWxsb2NrLCBMb2NrTWV0aG9kTG9jYWxIYXNoKQogCQkJUmVsZWFzZUxvY2tJZkhlbGQobG9j YWxsb2NrLCBmYWxzZSk7CiAJfQogCWVsc2UKQEAgLTI2OTcsMTIgKzI2ODMsNyBAQCBMb2NrUmVh c3NpZ25DdXJyZW50T3duZXIoTE9DQUxMT0NLICoqbG9jYWxsb2NrcywgaW50IG5sb2NrcykKIAog CWlmIChsb2NhbGxvY2tzID09IE5VTEwpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwot CQlMT0NBTExPQ0sgICpsb2NhbGxvY2s7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2Nr TWV0aG9kTG9jYWxIYXNoKTsKLQotCQl3aGlsZSAoKGxvY2FsbG9jayA9IChMT0NBTExPQ0sgKikg aGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTE9DQUxM T0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gpCiAJCQlMb2NrUmVhc3NpZ25Pd25l cihsb2NhbGxvY2ssIHBhcmVudCk7CiAJfQogCWVsc2UKQEAgLTMzODMsMTcgKzMzNjQsMTMgQEAg Q2hlY2tGb3JTZXNzaW9uQW5kWGFjdExvY2tzKHZvaWQpCiAJfSBQZXJMb2NrVGFnRW50cnk7CiAK IAlIVEFCCSAgICpsb2NraHRhYjsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCUxPQ0FMTE9D SyAgKmxvY2FsbG9jazsKIAogCS8qIENyZWF0ZSBhIGxvY2FsIGhhc2ggdGFibGUga2V5ZWQgYnkg TE9DS1RBRyBvbmx5ICovCiAJbG9ja2h0YWIgPSBoYXNoX21ha2UoUGVyTG9ja1RhZ0VudHJ5LCBs b2NrLAogCQkJCQkJICJDaGVja0ZvclNlc3Npb25BbmRYYWN0TG9ja3MgdGFibGUiLCAyNTYpOwog CiAJLyogU2NhbiBsb2NhbCBsb2NrIHRhYmxlIHRvIGZpbmQgZW50cmllcyBmb3IgZWFjaCBMT0NL VEFHICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kTG9jYWxIYXNoKTsKLQot CXdoaWxlICgobG9jYWxsb2NrID0gKExPQ0FMTE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1 cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKExPQ0FMTE9DSywgbG9jYWxsb2NrLCBMb2NrTWV0 aG9kTG9jYWxIYXNoKQogCXsKIAkJTE9DQUxMT0NLT1dORVIgKmxvY2tPd25lcnMgPSBsb2NhbGxv Y2stPmxvY2tPd25lcnM7CiAJCVBlckxvY2tUYWdFbnRyeSAqaGVudHJ5OwpAQCAtMzQ1NiwxNiAr MzQzMywxMSBAQCBDaGVja0ZvclNlc3Npb25BbmRYYWN0TG9ja3Modm9pZCkKIHZvaWQKIEF0UHJl cGFyZV9Mb2Nrcyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JTE9DQUxMT0NL ICAqbG9jYWxsb2NrOwotCiAJLyogRmlyc3QsIHZlcmlmeSB0aGVyZSBhcmVuJ3QgbG9ja3Mgb2Yg Ym90aCB4YWN0IGFuZCBzZXNzaW9uIGxldmVsICovCiAJQ2hlY2tGb3JTZXNzaW9uQW5kWGFjdExv Y2tzKCk7CiAKIAkvKiBOb3cgZG8gdGhlIHBlci1sb2NhbGxvY2sgY2xlYW51cCB3b3JrICovCi0J aGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kTG9jYWxIYXNoKTsKLQotCXdoaWxlICgo bG9jYWxsb2NrID0gKExPQ0FMTE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5V TEwpCisJZm9yZWFjaF9oYXNoKExPQ0FMTE9DSywgbG9jYWxsb2NrLCBMb2NrTWV0aG9kTG9jYWxI YXNoKQogCXsKIAkJVHdvUGhhc2VMb2NrUmVjb3JkIHJlY29yZDsKIAkJTE9DQUxMT0NLT1dORVIg KmxvY2tPd25lcnMgPSBsb2NhbGxvY2stPmxvY2tPd25lcnM7CkBAIC0zNTUzLDggKzM1MjUsNiBA QCB2b2lkCiBQb3N0UHJlcGFyZV9Mb2NrcyhGdWxsVHJhbnNhY3Rpb25JZCBmeGlkKQogewogCVBH UFJPQwkgICAqbmV3cHJvYyA9IFR3b1BoYXNlR2V0RHVtbXlQcm9jKGZ4aWQsIGZhbHNlKTsKLQlI QVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKIAlMT0NLCSAg ICpsb2NrOwogCVBST0NMT0NLICAgKnByb2Nsb2NrOwogCVBST0NMT0NLVEFHIHByb2Nsb2NrdGFn OwpAQCAtMzU3Niw5ICszNTQ2LDcgQEAgUG9zdFByZXBhcmVfTG9ja3MoRnVsbFRyYW5zYWN0aW9u SWQgZnhpZCkKIAkgKiBwb2ludGluZyB0byB0aGUgc2FtZSBwcm9jbG9jaywgYW5kIHdlIGRhcmVu J3QgZW5kIHVwIHdpdGggYW55IGRhbmdsaW5nCiAJICogcG9pbnRlcnMuCiAJICovCi0JaGFzaF9z ZXFfaW5pdCgmc3RhdHVzLCBMb2NrTWV0aG9kTG9jYWxIYXNoKTsKLQotCXdoaWxlICgobG9jYWxs b2NrID0gKExPQ0FMTE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJ Zm9yZWFjaF9oYXNoKExPQ0FMTE9DSywgbG9jYWxsb2NrLCBMb2NrTWV0aG9kTG9jYWxIYXNoKQog CXsKIAkJTE9DQUxMT0NLT1dORVIgKmxvY2tPd25lcnMgPSBsb2NhbGxvY2stPmxvY2tPd25lcnM7 CiAJCWJvb2wJCWhhdmVTZXNzaW9uTG9jazsKQEAgLTM3NzQsOCArMzc0Miw2IEBAIExvY2tEYXRh ICoKIEdldExvY2tTdGF0dXNEYXRhKHZvaWQpCiB7CiAJTG9ja0RhdGEgICAqZGF0YTsKLQlQUk9D TE9DSyAgICpwcm9jbG9jazsKLQlIQVNIX1NFUV9TVEFUVVMgc2Vxc3RhdDsKIAlpbnQJCQllbHM7 CiAJaW50CQkJZWw7CiAJaW50CQkJaTsKQEAgLTM5MTEsOSArMzg3Nyw3IEBAIEdldExvY2tTdGF0 dXNEYXRhKHZvaWQpCiAJfQogCiAJLyogTm93IHNjYW4gdGhlIHRhYmxlcyB0byBjb3B5IHRoZSBk YXRhICovCi0JaGFzaF9zZXFfaW5pdCgmc2Vxc3RhdCwgTG9ja01ldGhvZFByb2NMb2NrSGFzaCk7 Ci0KLQl3aGlsZSAoKHByb2Nsb2NrID0gKFBST0NMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc2Vx c3RhdCkpKQorCWZvcmVhY2hfaGFzaChQUk9DTE9DSywgcHJvY2xvY2ssIExvY2tNZXRob2RQcm9j TG9ja0hhc2gpCiAJewogCQlQR1BST0MJICAgKnByb2MgPSBwcm9jbG9jay0+dGFnLm15UHJvYzsK IAkJTE9DSwkgICAqbG9jayA9IHByb2Nsb2NrLT50YWcubXlMb2NrOwpAQCAtNDE1Miw4ICs0MTE2 LDYgQEAgeGxfc3RhbmRieV9sb2NrICoKIEdldFJ1bm5pbmdUcmFuc2FjdGlvbkxvY2tzKGludCAq bmxvY2tzKQogewogCXhsX3N0YW5kYnlfbG9jayAqYWNjZXNzRXhjbHVzaXZlTG9ja3M7Ci0JUFJP Q0xPQ0sgICAqcHJvY2xvY2s7Ci0JSEFTSF9TRVFfU1RBVFVTIHNlcXN0YXQ7CiAJaW50CQkJaTsK IAlpbnQJCQlpbmRleDsKIAlpbnQJCQllbHM7CkBAIC00MTc1LDEwICs0MTM3LDkgQEAgR2V0UnVu bmluZ1RyYW5zYWN0aW9uTG9ja3MoaW50ICpubG9ja3MpCiAJICovCiAJYWNjZXNzRXhjbHVzaXZl TG9ja3MgPSBwYWxsb2MoZWxzICogc2l6ZW9mKHhsX3N0YW5kYnlfbG9jaykpOwogCi0JLyogTm93 IHNjYW4gdGhlIHRhYmxlcyB0byBjb3B5IHRoZSBkYXRhICovCi0JaGFzaF9zZXFfaW5pdCgmc2Vx c3RhdCwgTG9ja01ldGhvZFByb2NMb2NrSGFzaCk7Ci0KIAkvKgorCSAqIE5vdyBzY2FuIHRoZSB0 YWJsZXMgdG8gY29weSB0aGUgZGF0YS4KKwkgKgogCSAqIElmIGxvY2sgaXMgYSBjdXJyZW50bHkg Z3JhbnRlZCBBY2Nlc3NFeGNsdXNpdmVMb2NrIHRoZW4gaXQgd2lsbCBoYXZlCiAJICoganVzdCBv bmUgcHJvY2xvY2sgaG9sZGVyLCBzbyBsb2NrcyBhcmUgbmV2ZXIgYWNjZXNzZWQgdHdpY2UgaW4g dGhpcwogCSAqIHBhcnRpY3VsYXIgY2FzZS4gRG9uJ3QgY29weSB0aGlzIGNvZGUgZm9yIHVzZSBl bHNld2hlcmUgYmVjYXVzZSBpbiB0aGUKQEAgLTQxODYsNyArNDE0Nyw3IEBAIEdldFJ1bm5pbmdU cmFuc2FjdGlvbkxvY2tzKGludCAqbmxvY2tzKQogCSAqIG5vbi1leGNsdXNpdmUgbG9jayB0eXBl cy4KIAkgKi8KIAlpbmRleCA9IDA7Ci0Jd2hpbGUgKChwcm9jbG9jayA9IChQUk9DTE9DSyAqKSBo YXNoX3NlcV9zZWFyY2goJnNlcXN0YXQpKSkKKwlmb3JlYWNoX2hhc2goUFJPQ0xPQ0ssIHByb2Ns b2NrLCBMb2NrTWV0aG9kUHJvY0xvY2tIYXNoKQogCXsKIAkJLyogbWFrZSBzdXJlIHRoaXMgZGVm aW5pdGlvbiBtYXRjaGVzIHRoZSBvbmUgdXNlZCBpbiBMb2NrQWNxdWlyZSAqLwogCQlpZiAoKHBy b2Nsb2NrLT5ob2xkTWFzayAmIExPQ0tCSVRfT04oQWNjZXNzRXhjbHVzaXZlTG9jaykpICYmCkBA IC00MjgxLDE4ICs0MjQyLDE0IEBAIHZvaWQKIER1bXBBbGxMb2Nrcyh2b2lkKQogewogCVBHUFJP QwkgICAqcHJvYzsKLQlQUk9DTE9DSyAgICpwcm9jbG9jazsKIAlMT0NLCSAgICpsb2NrOwotCUhB U0hfU0VRX1NUQVRVUyBzdGF0dXM7CiAKIAlwcm9jID0gTXlQcm9jOwogCiAJaWYgKHByb2MgJiYg cHJvYy0+d2FpdExvY2spCiAJCUxPQ0tfUFJJTlQoIkR1bXBBbGxMb2Nrczogd2FpdGluZyBvbiIs IHByb2MtPndhaXRMb2NrLCAwKTsKIAotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhv ZFByb2NMb2NrSGFzaCk7Ci0KLQl3aGlsZSAoKHByb2Nsb2NrID0gKFBST0NMT0NLICopIGhhc2hf c2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUFJPQ0xPQ0ssIHBy b2Nsb2NrLCBMb2NrTWV0aG9kUHJvY0xvY2tIYXNoKQogCXsKIAkJUFJPQ0xPQ0tfUFJJTlQoIkR1 bXBBbGxMb2NrcyIsIHByb2Nsb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2x3bG9jay5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCmluZGV4 IDFmNzQ5YmVhZGNlLi5iNzQ2NmQzY2ExOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2x3bG9jay5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYwpA QCAtMzE2LDE1ICszMTYsMTAgQEAgaW5pdF9sd2xvY2tfc3RhdHModm9pZCkKIHN0YXRpYyB2b2lk CiBwcmludF9sd2xvY2tfc3RhdHMoaW50IGNvZGUsIERhdHVtIGFyZykKIHsKLQlIQVNIX1NFUV9T VEFUVVMgc2NhbjsKLQlsd2xvY2tfc3RhdHMgKmx3c3RhdHM7Ci0KLQloYXNoX3NlcV9pbml0KCZz Y2FuLCBsd2xvY2tfc3RhdHNfaHRhYik7Ci0KIAkvKiBHcmFiIGFuIExXTG9jayB0byBrZWVwIGRp ZmZlcmVudCBiYWNrZW5kcyBmcm9tIG1peGluZyByZXBvcnRzICovCiAJTFdMb2NrQWNxdWlyZSgm TWFpbkxXTG9ja0FycmF5WzBdLmxvY2ssIExXX0VYQ0xVU0lWRSk7CiAKLQl3aGlsZSAoKGx3c3Rh dHMgPSAobHdsb2NrX3N0YXRzICopIGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpICE9IE5VTEwpCisJ Zm9yZWFjaF9oYXNoKGx3bG9ja19zdGF0cywgbHdzdGF0cywgbHdsb2NrX3N0YXRzX2h0YWIpCiAJ ewogCQlmcHJpbnRmKHN0ZGVyciwKIAkJCQkiUElEICVkIGx3bG9jayAlcyAlcDogc2hhY3EgJXUg ZXhhY3EgJXUgYmxrICV1IHNwaW5kZWxheSAldSBkZXF1ZXVlIHNlbGYgJXVcbiIsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKaW5kZXggYzJkODUwMzI3MTYuLjZiNjAyYmE4OWVhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCkBAIC0xNDQwLDggKzE0NDAsNiBAQCBH ZXRQcmVkaWNhdGVMb2NrU3RhdHVzRGF0YSh2b2lkKQogCWludAkJCWk7CiAJaW50CQkJZWxzLAog CQkJCWVsOwotCUhBU0hfU0VRX1NUQVRVUyBzZXFzdGF0OwotCVBSRURJQ0FURUxPQ0sgKnByZWRs b2NrOwogCiAJZGF0YSA9IChQcmVkaWNhdGVMb2NrRGF0YSAqKSBwYWxsb2Moc2l6ZW9mKFByZWRp Y2F0ZUxvY2tEYXRhKSk7CiAKQEAgLTE0NjMsMTEgKzE0NjEsOSBAQCBHZXRQcmVkaWNhdGVMb2Nr U3RhdHVzRGF0YSh2b2lkKQogCiAKIAkvKiBTY2FuIHRocm91Z2ggUHJlZGljYXRlTG9ja0hhc2gg YW5kIGNvcHkgY29udGVudHMgKi8KLQloYXNoX3NlcV9pbml0KCZzZXFzdGF0LCBQcmVkaWNhdGVM b2NrSGFzaCk7Ci0KIAllbCA9IDA7CiAKLQl3aGlsZSAoKHByZWRsb2NrID0gKFBSRURJQ0FURUxP Q0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFzdGF0KSkpCisJZm9yZWFjaF9oYXNoKFBSRURJQ0FU RUxPQ0ssIHByZWRsb2NrLCBQcmVkaWNhdGVMb2NrSGFzaCkKIAl7CiAJCWRhdGEtPmxvY2t0YWdz W2VsXSA9IHByZWRsb2NrLT50YWcubXlUYXJnZXQtPnRhZzsKIAkJZGF0YS0+eGFjdHNbZWxdID0g KnByZWRsb2NrLT50YWcubXlYYWN0OwpAQCAtMjkyNCw4ICsyOTIwLDYgQEAgZXhpdDoKIHN0YXRp YyB2b2lkCiBEcm9wQWxsUHJlZGljYXRlTG9ja3NGcm9tVGFibGUoUmVsYXRpb24gcmVsYXRpb24s IGJvb2wgdHJhbnNmZXIpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNlcXN0YXQ7Ci0JUFJFRElDQVRF TE9DS1RBUkdFVCAqb2xkdGFyZ2V0OwogCVBSRURJQ0FURUxPQ0tUQVJHRVQgKmhlYXB0YXJnZXQ7 CiAJT2lkCQkJZGJJZDsKIAlPaWQJCQlyZWxJZDsKQEAgLTI5ODEsOSArMjk3NSw3IEBAIERyb3BB bGxQcmVkaWNhdGVMb2Nrc0Zyb21UYWJsZShSZWxhdGlvbiByZWxhdGlvbiwgYm9vbCB0cmFuc2Zl cikKIAkJUmVtb3ZlU2NyYXRjaFRhcmdldCh0cnVlKTsKIAogCS8qIFNjYW4gdGhyb3VnaCB0YXJn ZXQgbWFwICovCi0JaGFzaF9zZXFfaW5pdCgmc2Vxc3RhdCwgUHJlZGljYXRlTG9ja1RhcmdldEhh c2gpOwotCi0Jd2hpbGUgKChvbGR0YXJnZXQgPSAoUFJFRElDQVRFTE9DS1RBUkdFVCAqKSBoYXNo X3NlcV9zZWFyY2goJnNlcXN0YXQpKSkKKwlmb3JlYWNoX2hhc2goUFJFRElDQVRFTE9DS1RBUkdF VCwgb2xkdGFyZ2V0LCBQcmVkaWNhdGVMb2NrVGFyZ2V0SGFzaCkKIAl7CiAJCWRsaXN0X211dGFi bGVfaXRlciBpdGVyOwogCkBAIC00NDA2LDggKzQzOTgsNiBAQCBDaGVja0ZvclNlcmlhbGl6YWJs ZUNvbmZsaWN0SW4oUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlk LCBCbAogdm9pZAogQ2hlY2tUYWJsZUZvclNlcmlhbGl6YWJsZUNvbmZsaWN0SW4oUmVsYXRpb24g cmVsYXRpb24pCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNlcXN0YXQ7Ci0JUFJFRElDQVRFTE9DS1RB UkdFVCAqdGFyZ2V0OwogCU9pZAkJCWRiSWQ7CiAJT2lkCQkJaGVhcElkOwogCWludAkJCWk7CkBA IC00NDQxLDkgKzQ0MzEsNyBAQCBDaGVja1RhYmxlRm9yU2VyaWFsaXphYmxlQ29uZmxpY3RJbihS ZWxhdGlvbiByZWxhdGlvbikKIAlMV0xvY2tBY3F1aXJlKFNlcmlhbGl6YWJsZVhhY3RIYXNoTG9j aywgTFdfRVhDTFVTSVZFKTsKIAogCS8qIFNjYW4gdGhyb3VnaCB0YXJnZXQgbGlzdCAqLwotCWhh c2hfc2VxX2luaXQoJnNlcXN0YXQsIFByZWRpY2F0ZUxvY2tUYXJnZXRIYXNoKTsKLQotCXdoaWxl ICgodGFyZ2V0ID0gKFBSRURJQ0FURUxPQ0tUQVJHRVQgKikgaGFzaF9zZXFfc2VhcmNoKCZzZXFz dGF0KSkpCisJZm9yZWFjaF9oYXNoKFBSRURJQ0FURUxPQ0tUQVJHRVQsIHRhcmdldCwgUHJlZGlj YXRlTG9ja1RhcmdldEhhc2gpCiAJewogCQlkbGlzdF9tdXRhYmxlX2l0ZXIgaXRlcjsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2Uvc21nci9zbWdyLmMKaW5kZXggZDRmYTZhMTQ0ZjEuLmIyYWU1ODY2MmY0IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2Uvc21nci9zbWdyLmMKQEAgLTQwOSw5ICs0MDksNiBAQCBzbWdyZGVzdHJveWFsbCh2b2lk KQogdm9pZAogc21ncnJlbGVhc2VhbGwodm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVz OwotCVNNZ3JSZWxhdGlvbiByZWxuOwotCiAJLyogTm90aGluZyB0byBkbyBpZiBoYXNodGFibGUg bm90IHNldCB1cCAqLwogCWlmIChTTWdyUmVsYXRpb25IYXNoID09IE5VTEwpCiAJCXJldHVybjsK QEAgLTQxOSw5ICs0MTYsNyBAQCBzbWdycmVsZWFzZWFsbCh2b2lkKQogCS8qIHNlZW1zIHVuc2Fm ZSB0byBhY2NlcHQgaW50ZXJydXB0cyB3aGlsZSBpdGVyYXRpbmcgKi8KIAlIT0xEX0lOVEVSUlVQ VFMoKTsKIAotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgU01nclJlbGF0aW9uSGFzaCk7Ci0KLQl3 aGlsZSAoKHJlbG4gPSAoU01nclJlbGF0aW9uKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9 IE5VTEwpCisJZm9yZWFjaF9oYXNoKFNNZ3JSZWxhdGlvbkRhdGEsIHJlbG4sIFNNZ3JSZWxhdGlv bkhhc2gpCiAJewogCQlzbWdycmVsZWFzZShyZWxuKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMu YwppbmRleCA0MmI3ZmMxMTI4OC4uZjY1YzUyZWI5YTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0b3JhZ2Uvc3luYy9zeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMu YwpAQCAtMjgwLDggKzI4MCw2IEBAIFByb2Nlc3NTeW5jUmVxdWVzdHModm9pZCkKIHsKIAlzdGF0 aWMgYm9vbCBzeW5jX2luX3Byb2dyZXNzID0gZmFsc2U7CiAKLQlIQVNIX1NFUV9TVEFUVVMgaHN0 YXQ7Ci0JUGVuZGluZ0ZzeW5jRW50cnkgKmVudHJ5OwogCWludAkJCWFic29yYl9jb3VudGVyOwog CiAJLyogU3RhdGlzdGljcyBvbiBzeW5jIHRpbWVzICovCkBAIC0zMzgsOCArMzM2LDcgQEAgUHJv Y2Vzc1N5bmNSZXF1ZXN0cyh2b2lkKQogCWlmIChzeW5jX2luX3Byb2dyZXNzKQogCXsKIAkJLyog cHJpb3IgdHJ5IGZhaWxlZCwgc28gdXBkYXRlIGFueSBzdGFsZSBjeWNsZV9jdHIgdmFsdWVzICov Ci0JCWhhc2hfc2VxX2luaXQoJmhzdGF0LCBwZW5kaW5nT3BzKTsKLQkJd2hpbGUgKChlbnRyeSA9 IChQZW5kaW5nRnN5bmNFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJmhzdGF0KSkgIT0gTlVMTCkK KwkJZm9yZWFjaF9oYXNoKFBlbmRpbmdGc3luY0VudHJ5LCBlbnRyeSwgcGVuZGluZ09wcykKIAkJ ewogCQkJZW50cnktPmN5Y2xlX2N0ciA9IHN5bmNfY3ljbGVfY3RyOwogCQl9CkBAIC0zNTMsOCAr MzUwLDcgQEAgUHJvY2Vzc1N5bmNSZXF1ZXN0cyh2b2lkKQogCiAJLyogTm93IHNjYW4gdGhlIGhh c2h0YWJsZSBmb3IgZnN5bmMgcmVxdWVzdHMgdG8gcHJvY2VzcyAqLwogCWFic29yYl9jb3VudGVy ID0gRlNZTkNTX1BFUl9BQlNPUkI7Ci0JaGFzaF9zZXFfaW5pdCgmaHN0YXQsIHBlbmRpbmdPcHMp OwotCXdoaWxlICgoZW50cnkgPSAoUGVuZGluZ0ZzeW5jRW50cnkgKikgaGFzaF9zZXFfc2VhcmNo KCZoc3RhdCkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBlbmRpbmdGc3luY0VudHJ5LCBlbnRy eSwgcGVuZGluZ09wcykKIAl7CiAJCWludAkJCWZhaWx1cmVzOwogCkBAIC00OTUsMTMgKzQ5MSwx MCBAQCBSZW1lbWJlclN5bmNSZXF1ZXN0KGNvbnN0IEZpbGVUYWcgKmZ0YWcsIFN5bmNSZXF1ZXN0 VHlwZSB0eXBlKQogCX0KIAllbHNlIGlmICh0eXBlID09IFNZTkNfRklMVEVSX1JFUVVFU1QpCiAJ ewotCQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JCVBlbmRpbmdGc3luY0VudHJ5ICpwZmU7CiAJ CUxpc3RDZWxsICAgKmNlbGw7CiAKIAkJLyogQ2FuY2VsIG1hdGNoaW5nIGZzeW5jIHJlcXVlc3Rz ICovCi0JCWhhc2hfc2VxX2luaXQoJmhzdGF0LCBwZW5kaW5nT3BzKTsKLQkJd2hpbGUgKChwZmUg PSAoUGVuZGluZ0ZzeW5jRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwp CisJCWZvcmVhY2hfaGFzaChQZW5kaW5nRnN5bmNFbnRyeSwgcGZlLCBwZW5kaW5nT3BzKQogCQl7 CiAJCQlpZiAocGZlLT50YWcuaGFuZGxlciA9PSBmdGFnLT5oYW5kbGVyICYmCiAJCQkJc3luY3N3 W2Z0YWctPmhhbmRsZXJdLnN5bmNfZmlsZXRhZ21hdGNoZXMoZnRhZywgJnBmZS0+dGFnKSkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jIGIvc3JjL2JhY2tl bmQvdHNlYXJjaC90c190eXBhbmFseXplLmMKaW5kZXggYTliYzY5MDFhMTIuLjQzOWY4Nzg4MDAz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUuYworKysgYi9z cmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUuYwpAQCAtMTQ5LDcgKzE0OSw2IEBAIGNv bXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywKIAogCS8qIFRoaXMgaXMg RCBmcm9tIHRoZSBMQyBhbGdvcml0aG0uICovCiAJSFRBQgkgICAqbGV4ZW1lc190YWI7Ci0JSEFT SF9TRVFfU1RBVFVTIHNjYW5fc3RhdHVzOwogCiAJLyogVGhpcyBpcyB0aGUgY3VycmVudCBidWNr ZXQgbnVtYmVyIGZyb20gdGhlIExDIGFsZ29yaXRobSAqLwogCWludAkJCWJfY3VycmVudDsKQEAg LTI4OCw3ICsyODcsNiBAQCBjb21wdXRlX3RzdmVjdG9yX3N0YXRzKFZhY0F0dHJTdGF0cyAqc3Rh dHMsCiAJCWludAkJCW5vbm51bGxfY250ID0gc2FtcGxlcm93cyAtIG51bGxfY250OwogCQlpbnQJ CQlpOwogCQlUcmFja0l0ZW0gKipzb3J0X3RhYmxlOwotCQlUcmFja0l0ZW0gICppdGVtOwogCQlp bnQJCQl0cmFja19sZW47CiAJCWludAkJCWN1dG9mZl9mcmVxOwogCQlpbnQJCQltaW5mcmVxLApA QCAtMzE1LDEwICszMTMsOSBAQCBjb21wdXRlX3RzdmVjdG9yX3N0YXRzKFZhY0F0dHJTdGF0cyAq c3RhdHMsCiAJCWkgPSBoYXNoX2dldF9udW1fZW50cmllcyhsZXhlbWVzX3RhYik7CS8qIHN1cmVs eSBlbm91Z2ggc3BhY2UgKi8KIAkJc29ydF90YWJsZSA9IChUcmFja0l0ZW0gKiopIHBhbGxvYyhz aXplb2YoVHJhY2tJdGVtICopICogaSk7CiAKLQkJaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMs IGxleGVtZXNfdGFiKTsKIAkJdHJhY2tfbGVuID0gMDsKIAkJbWF4ZnJlcSA9IDA7Ci0JCXdoaWxl ICgoaXRlbSA9IChUcmFja0l0ZW0gKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuX3N0YXR1cykpICE9 IE5VTEwpCisJCWZvcmVhY2hfaGFzaChUcmFja0l0ZW0sIGl0ZW0sIGxleGVtZXNfdGFiKQogCQl7 CiAJCQlpZiAoaXRlbS0+ZnJlcXVlbmN5ID4gY3V0b2ZmX2ZyZXEpCiAJCQl7CkBAIC00NjIsMTEg KzQ1OSw3IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywKIHN0 YXRpYyB2b2lkCiBwcnVuZV9sZXhlbWVzX2hhc2h0YWJsZShIVEFCICpsZXhlbWVzX3RhYiwgaW50 IGJfY3VycmVudCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7Ci0JVHJhY2tJdGVt ICAqaXRlbTsKLQotCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCBsZXhlbWVzX3RhYik7Ci0J d2hpbGUgKChpdGVtID0gKFRyYWNrSXRlbSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVz KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJhY2tJdGVtLCBpdGVtLCBsZXhlbWVzX3RhYikK IAl7CiAJCWlmIChpdGVtLT5mcmVxdWVuY3kgKyBpdGVtLT5kZWx0YSA8PSBiX2N1cnJlbnQpCiAJ CXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCA1NmE2MjAyOWFi Yi4uYTI1OWYwYjcwNTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dh aXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMK QEAgLTI5OSw4ICsyOTksNiBAQCBjaGFyCSAgKioKIEdldFdhaXRFdmVudEN1c3RvbU5hbWVzKHVp bnQzMiBjbGFzc0lkLCBpbnQgKm53YWl0ZXZlbnRzKQogewogCWNoYXIJICAqKndhaXRldmVudG5h bWVzOwotCVdhaXRFdmVudEN1c3RvbUVudHJ5QnlOYW1lICpoZW50cnk7Ci0JSEFTSF9TRVFfU1RB VFVTIGhhc2hfc2VxOwogCWludAkJCWluZGV4OwogCWludAkJCWVsczsKIApAQCAtMzEzLDEwICsz MTEsOCBAQCBHZXRXYWl0RXZlbnRDdXN0b21OYW1lcyh1aW50MzIgY2xhc3NJZCwgaW50ICpud2Fp dGV2ZW50cykKIAl3YWl0ZXZlbnRuYW1lcyA9IHBhbGxvYyhlbHMgKiBzaXplb2YoY2hhciAqKSk7 CiAKIAkvKiBOb3cgc2NhbiB0aGUgaGFzaCB0YWJsZSB0byBjb3B5IHRoZSBkYXRhICovCi0JaGFz aF9zZXFfaW5pdCgmaGFzaF9zZXEsIFdhaXRFdmVudEN1c3RvbUhhc2hCeU5hbWUpOwotCiAJaW5k ZXggPSAwOwotCXdoaWxlICgoaGVudHJ5ID0gKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlOYW1lICop IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChXYWl0 RXZlbnRDdXN0b21FbnRyeUJ5TmFtZSwgaGVudHJ5LCBXYWl0RXZlbnRDdXN0b21IYXNoQnlOYW1l KQogCXsKIAkJaWYgKChoZW50cnktPndhaXRfZXZlbnRfaW5mbyAmIFdBSVRfRVZFTlRfQ0xBU1Nf TUFTSykgIT0gY2xhc3NJZCkKIAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2FycmF5X3R5cGFuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJh eV90eXBhbmFseXplLmMKaW5kZXggY2MzMTBjMDQ0YjMuLmE1YmU3ZTRjMWMzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMKQEAgLTIyMyw3ICsyMjMsNiBAQCBjb21w dXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5j IGZldGNoZnVuYywKIAogCS8qIFRoaXMgaXMgRCBmcm9tIHRoZSBMQyBhbGdvcml0aG0uICovCiAJ SFRBQgkgICAqZWxlbWVudHNfdGFiOwotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKIAog CS8qIFRoaXMgaXMgdGhlIGN1cnJlbnQgYnVja2V0IG51bWJlciBmcm9tIHRoZSBMQyBhbGdvcml0 aG0gKi8KIAlpbnQJCQliX2N1cnJlbnQ7CkBAIC0yMzIsMTAgKzIzMSw4IEBAIGNvbXB1dGVfYXJy YXlfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywgQW5hbHl6ZUF0dHJGZXRjaEZ1bmMgZmV0Y2hm dW5jLAogCWludAkJCWJ1Y2tldF93aWR0aDsKIAlpbnQJCQlhcnJheV9ubzsKIAlpbnQ2NAkJZWxl bWVudF9ubzsKLQlUcmFja0l0ZW0gICppdGVtOwogCWludAkJCXNsb3RfaWR4OwogCUhUQUIJICAg KmNvdW50X3RhYjsKLQlERUNvdW50SXRlbSAqY291bnRfaXRlbTsKIAogCWV4dHJhX2RhdGEgPSAo QXJyYXlBbmFseXplRXh0cmFEYXRhICopIHN0YXRzLT5leHRyYV9kYXRhOwogCkBAIC0zMDAsNiAr Mjk3LDcgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXpl QXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCWludDY0CQlwcmV2X2VsZW1lbnRfbm8gPSBlbGVt ZW50X25vOwogCQlpbnQJCQlkaXN0aW5jdF9jb3VudDsKIAkJYm9vbAkJY291bnRfaXRlbV9mb3Vu ZDsKKwkJREVDb3VudEl0ZW0gKmNvdW50X2l0ZW07CiAKIAkJdmFjdXVtX2RlbGF5X3BvaW50KHRy dWUpOwogCkBAIC0zMzgsNiArMzM2LDcgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3Rh dHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCXsKIAkJCURhdHVt CQllbGVtX3ZhbHVlOwogCQkJYm9vbAkJZm91bmQ7CisJCQlUcmFja0l0ZW0gICppdGVtOwogCiAJ CQkvKiBObyBudWxsIGVsZW1lbnQgcHJvY2Vzc2luZyBvdGhlciB0aGFuIGZsYWcgc2V0dGluZyBo ZXJlICovCiAJCQlpZiAoZWxlbV9udWxsc1tqXSkKQEAgLTQ1OCwxMCArNDU3LDkgQEAgY29tcHV0 ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVuYyBm ZXRjaGZ1bmMsCiAJCWkgPSBoYXNoX2dldF9udW1fZW50cmllcyhlbGVtZW50c190YWIpOyAvKiBz dXJlbHkgZW5vdWdoIHNwYWNlICovCiAJCXNvcnRfdGFibGUgPSAoVHJhY2tJdGVtICoqKSBwYWxs b2Moc2l6ZW9mKFRyYWNrSXRlbSAqKSAqIGkpOwogCi0JCWhhc2hfc2VxX2luaXQoJnNjYW5fc3Rh dHVzLCBlbGVtZW50c190YWIpOwogCQl0cmFja19sZW4gPSAwOwogCQltYXhmcmVxID0gMDsKLQkJ d2hpbGUgKChpdGVtID0gKFRyYWNrSXRlbSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVz KSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKFRyYWNrSXRlbSwgaXRlbSwgZWxlbWVudHNfdGFi KQogCQl7CiAJCQlpZiAoaXRlbS0+ZnJlcXVlbmN5ID4gY3V0b2ZmX2ZyZXEpCiAJCQl7CkBAIC01 OTUsOSArNTkzLDggQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBB bmFseXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAJCQkgKi8KIAkJCXNvcnRlZF9jb3VudF9p dGVtcyA9IChERUNvdW50SXRlbSAqKikKIAkJCQlwYWxsb2Moc2l6ZW9mKERFQ291bnRJdGVtICop ICogY291bnRfaXRlbXNfY291bnQpOwotCQkJaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIGNv dW50X3RhYik7CiAJCQlqID0gMDsKLQkJCXdoaWxlICgoY291bnRfaXRlbSA9IChERUNvdW50SXRl bSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwkJCWZvcmVhY2hf aGFzaChERUNvdW50SXRlbSwgY291bnRfaXRlbSwgY291bnRfdGFiKQogCQkJewogCQkJCXNvcnRl ZF9jb3VudF9pdGVtc1tqKytdID0gY291bnRfaXRlbTsKIAkJCX0KQEAgLTY4NCwxMSArNjgxLDcg QEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZl dGNoRnVuYyBmZXRjaGZ1bmMsCiBzdGF0aWMgdm9pZAogcHJ1bmVfZWxlbWVudF9oYXNodGFibGUo SFRBQiAqZWxlbWVudHNfdGFiLCBpbnQgYl9jdXJyZW50KQogewotCUhBU0hfU0VRX1NUQVRVUyBz Y2FuX3N0YXR1czsKLQlUcmFja0l0ZW0gICppdGVtOwotCi0JaGFzaF9zZXFfaW5pdCgmc2Nhbl9z dGF0dXMsIGVsZW1lbnRzX3RhYik7Ci0Jd2hpbGUgKChpdGVtID0gKFRyYWNrSXRlbSAqKSBoYXNo X3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJhY2tJ dGVtLCBpdGVtLCBlbGVtZW50c190YWIpCiAJewogCQlpZiAoaXRlbS0+ZnJlcXVlbmN5ICsgaXRl bS0+ZGVsdGEgPD0gYl9jdXJyZW50KQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpp bmRleCBiNzZkNmJiZDVjOS4uZWI0NDFhODE1NTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2Fj aGUuYwpAQCAtMjk5MCw4ICsyOTkwLDYgQEAgUmVsYXRpb25DYWNoZUludmFsaWRhdGVFbnRyeShP aWQgcmVsYXRpb25JZCkKIHZvaWQKIFJlbGF0aW9uQ2FjaGVJbnZhbGlkYXRlKGJvb2wgZGVidWdf ZGlzY2FyZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbElkQ2FjaGVFbnQgKmlk aGVudHJ5OwogCVJlbGF0aW9uCXJlbGF0aW9uOwogCUxpc3QJICAgKnJlYnVpbGRGaXJzdExpc3Qg PSBOSUw7CiAJTGlzdAkgICAqcmVidWlsZExpc3QgPSBOSUw7CkBAIC0zMDA0LDkgKzMwMDIsNyBA QCBSZWxhdGlvbkNhY2hlSW52YWxpZGF0ZShib29sIGRlYnVnX2Rpc2NhcmQpCiAJUmVsYXRpb25N YXBJbnZhbGlkYXRlQWxsKCk7CiAKIAkvKiBQaGFzZSAxICovCi0JaGFzaF9zZXFfaW5pdCgmc3Rh dHVzLCBSZWxhdGlvbklkQ2FjaGUpOwotCi0Jd2hpbGUgKChpZGhlbnRyeSA9IChSZWxJZENhY2hl RW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2go UmVsSWRDYWNoZUVudCwgaWRoZW50cnksIFJlbGF0aW9uSWRDYWNoZSkKIAl7CiAJCXJlbGF0aW9u ID0gaWRoZW50cnktPnJlbGRlc2M7CiAKQEAgLTMxNTEsMTIgKzMxNDcsOSBAQCBBc3NlcnRQZW5k aW5nU3luY0NvbnNpc3RlbmN5KFJlbGF0aW9uIHJlbGF0aW9uKQogdm9pZAogQXNzZXJ0UGVuZGlu Z1N5bmNzX1JlbGF0aW9uQ2FjaGUodm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwot CUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKIAlSZWxhdGlvbiAgICpyZWxzOwogCWludAkJCW1heHJl bHM7CiAJaW50CQkJbnJlbHM7Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CiAJaW50CQkJaTsK IAogCS8qCkBAIC0zMTcwLDggKzMxNjMsNyBAQCBBc3NlcnRQZW5kaW5nU3luY3NfUmVsYXRpb25D YWNoZSh2b2lkKQogCW1heHJlbHMgPSAxOwogCXJlbHMgPSBwYWxsb2MobWF4cmVscyAqIHNpemVv ZigqcmVscykpOwogCW5yZWxzID0gMDsKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIEdldExvY2tN ZXRob2RMb2NhbEhhc2goKSk7Ci0Jd2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhh c2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxMT0NL LCBsb2NhbGxvY2ssIEdldExvY2tNZXRob2RMb2NhbEhhc2goKSkKIAl7CiAJCU9pZAkJCXJlbGlk OwogCQlSZWxhdGlvbglyOwpAQCAtMzE5Myw4ICszMTg1LDcgQEAgQXNzZXJ0UGVuZGluZ1N5bmNz X1JlbGF0aW9uQ2FjaGUodm9pZCkKIAkJcmVsc1tucmVscysrXSA9IHI7CiAJfQogCi0JaGFzaF9z ZXFfaW5pdCgmc3RhdHVzLCBSZWxhdGlvbklkQ2FjaGUpOwotCXdoaWxlICgoaWRoZW50cnkgPSAo UmVsSWRDYWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9y ZWFjaF9oYXNoKFJlbElkQ2FjaGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJCUFz c2VydFBlbmRpbmdTeW5jQ29uc2lzdGVuY3koaWRoZW50cnktPnJlbGRlc2MpOwogCiAJZm9yIChp ID0gMDsgaSA8IG5yZWxzOyBpKyspCkBAIC0zMjIyLDggKzMyMTMsNiBAQCBBc3NlcnRQZW5kaW5n U3luY3NfUmVsYXRpb25DYWNoZSh2b2lkKQogdm9pZAogQXRFT1hhY3RfUmVsYXRpb25DYWNoZShi b29sIGlzQ29tbWl0KQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVsSWRDYWNoZUVu dCAqaWRoZW50cnk7CiAJaW50CQkJaTsKIAogCS8qCkBAIC0zMjQ2LDggKzMyMzUsNyBAQCBBdEVP WGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQpCiAJICovCiAJaWYgKGVveGFjdF9saXN0 X292ZXJmbG93ZWQpCiAJewotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlbGF0aW9uSWRDYWNo ZSk7Ci0JCXdoaWxlICgoaWRoZW50cnkgPSAoUmVsSWRDYWNoZUVudCAqKSBoYXNoX3NlcV9zZWFy Y2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChSZWxJZENhY2hlRW50LCBpZGhl bnRyeSwgUmVsYXRpb25JZENhY2hlKQogCQl7CiAJCQlBdEVPWGFjdF9jbGVhbnVwKGlkaGVudHJ5 LT5yZWxkZXNjLCBpc0NvbW1pdCk7CiAJCX0KQEAgLTMyNTYsMTAgKzMyNDQsMTEgQEAgQXRFT1hh Y3RfUmVsYXRpb25DYWNoZShib29sIGlzQ29tbWl0KQogCXsKIAkJZm9yIChpID0gMDsgaSA8IGVv eGFjdF9saXN0X2xlbjsgaSsrKQogCQl7Ci0JCQlpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICop IGhhc2hfc2VhcmNoKFJlbGF0aW9uSWRDYWNoZSwKLQkJCQkJCQkJCQkJCQkgJmVveGFjdF9saXN0 W2ldLAotCQkJCQkJCQkJCQkJCSBIQVNIX0ZJTkQsCi0JCQkJCQkJCQkJCQkJIE5VTEwpOworCQkJ UmVsSWRDYWNoZUVudCAqaWRoZW50cnkgPSBoYXNoX3NlYXJjaChSZWxhdGlvbklkQ2FjaGUsCisJ CQkJCQkJCQkJCQkgICZlb3hhY3RfbGlzdFtpXSwKKwkJCQkJCQkJCQkJCSAgSEFTSF9GSU5ELAor CQkJCQkJCQkJCQkJICBOVUxMKTsKKwogCQkJaWYgKGlkaGVudHJ5ICE9IE5VTEwpCiAJCQkJQXRF T1hhY3RfY2xlYW51cChpZGhlbnRyeS0+cmVsZGVzYywgaXNDb21taXQpOwogCQl9CkBAIC0zMzc1 LDggKzMzNjQsNiBAQCB2b2lkCiBBdEVPU3ViWGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21t aXQsIFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIAkJCQkJCSAgU3ViVHJhbnNhY3Rpb25JZCBw YXJlbnRTdWJpZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbElkQ2FjaGVFbnQg KmlkaGVudHJ5OwogCWludAkJCWk7CiAKIAkvKgpAQCAtMzM5NCw4ICszMzgxLDcgQEAgQXRFT1N1 YlhhY3RfUmVsYXRpb25DYWNoZShib29sIGlzQ29tbWl0LCBTdWJUcmFuc2FjdGlvbklkIG15U3Vi aWQsCiAJICovCiAJaWYgKGVveGFjdF9saXN0X292ZXJmbG93ZWQpCiAJewotCQloYXNoX3NlcV9p bml0KCZzdGF0dXMsIFJlbGF0aW9uSWRDYWNoZSk7Ci0JCXdoaWxlICgoaWRoZW50cnkgPSAoUmVs SWRDYWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVh Y2hfaGFzaChSZWxJZENhY2hlRW50LCBpZGhlbnRyeSwgUmVsYXRpb25JZENhY2hlKQogCQl7CiAJ CQlBdEVPU3ViWGFjdF9jbGVhbnVwKGlkaGVudHJ5LT5yZWxkZXNjLCBpc0NvbW1pdCwKIAkJCQkJ CQkJbXlTdWJpZCwgcGFyZW50U3ViaWQpOwpAQCAtMzQwNSw2ICszMzkxLDggQEAgQXRFT1N1Ylhh Y3RfUmVsYXRpb25DYWNoZShib29sIGlzQ29tbWl0LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQs CiAJewogCQlmb3IgKGkgPSAwOyBpIDwgZW94YWN0X2xpc3RfbGVuOyBpKyspCiAJCXsKKwkJCVJl bElkQ2FjaGVFbnQgKmlkaGVudHJ5OworCiAJCQlpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICop IGhhc2hfc2VhcmNoKFJlbGF0aW9uSWRDYWNoZSwKIAkJCQkJCQkJCQkJCQkgJmVveGFjdF9saXN0 W2ldLAogCQkJCQkJCQkJCQkJCSBIQVNIX0ZJTkQsCkBAIC02NTgzLDggKzY1NzEsNiBAQCB3cml0 ZV9yZWxjYWNoZV9pbml0X2ZpbGUoYm9vbCBzaGFyZWQpCiAJY2hhcgkJdGVtcGZpbGVuYW1lW01B WFBHUEFUSF07CiAJY2hhcgkJZmluYWxmaWxlbmFtZVtNQVhQR1BBVEhdOwogCWludAkJCW1hZ2lj OwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CiAJ aW50CQkJaTsKIAogCS8qCkBAIC02NjQ0LDkgKzY2MzAsNyBAQCB3cml0ZV9yZWxjYWNoZV9pbml0 X2ZpbGUoYm9vbCBzaGFyZWQpCiAJLyoKIAkgKiBXcml0ZSBhbGwgdGhlIGFwcHJvcHJpYXRlIHJl bGRlc2NzIChpbiBubyBwYXJ0aWN1bGFyIG9yZGVyKS4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZz dGF0dXMsIFJlbGF0aW9uSWRDYWNoZSk7Ci0KLQl3aGlsZSAoKGlkaGVudHJ5ID0gKFJlbElkQ2Fj aGVFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFz aChSZWxJZENhY2hlRW50LCBpZGhlbnRyeSwgUmVsYXRpb25JZENhY2hlKQogCXsKIAkJUmVsYXRp b24JcmVsID0gaWRoZW50cnktPnJlbGRlc2M7CiAJCUZvcm1fcGdfY2xhc3MgcmVsZm9ybSA9IHJl bC0+cmRfcmVsOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmlsZW51 bWJlcm1hcC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jCmlu ZGV4IDY5YWJhNDYzZWFlLi4yYjljYThiMzZhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3JlbGZpbGVudW1iZXJtYXAuYwpAQCAtNTEsMTQgKzUxLDEwIEBAIHR5cGVkZWYgc3RydWN0CiBz dGF0aWMgdm9pZAogUmVsZmlsZW51bWJlck1hcEludmFsaWRhdGVDYWxsYmFjayhEYXR1bSBhcmcs IE9pZCByZWxpZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlbGZpbGVudW1iZXJN YXBFbnRyeSAqZW50cnk7Ci0KIAkvKiBjYWxsYmFjayBvbmx5IGdldHMgcmVnaXN0ZXJlZCBhZnRl ciBjcmVhdGluZyB0aGUgaGFzaCAqLwogCUFzc2VydChSZWxmaWxlbnVtYmVyTWFwSGFzaCAhPSBO VUxMKTsKIAotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUmVsZmlsZW51bWJlck1hcEhhc2gpOwot CXdoaWxlICgoZW50cnkgPSAoUmVsZmlsZW51bWJlck1hcEVudHJ5ICopIGhhc2hfc2VxX3NlYXJj aCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVsZmlsZW51bWJlck1hcEVudHJ5 LCBlbnRyeSwgUmVsZmlsZW51bWJlck1hcEhhc2gpCiAJewogCQkvKgogCQkgKiBJZiByZWxpZCBp cyBJbnZhbGlkT2lkLCBzaWduYWxpbmcgYSBjb21wbGV0ZSByZXNldCwgd2UgbXVzdCByZW1vdmUK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9zcGNjYWNoZS5jCmluZGV4IGJjZmQ2YTlmMGQyLi5iZDZhMTYxZTdk ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9zcGNjYWNoZS5jCkBAIC01NSwxMSArNTUsNyBAQCB0eXBl ZGVmIHN0cnVjdAogc3RhdGljIHZvaWQKIEludmFsaWRhdGVUYWJsZVNwYWNlQ2FjaGVDYWxsYmFj ayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7Ci0JVGFibGVTcGFjZUNhY2hlRW50cnkgKnNwYzsKLQotCWhhc2hfc2Vx X2luaXQoJnN0YXR1cywgVGFibGVTcGFjZUNhY2hlSGFzaCk7Ci0Jd2hpbGUgKChzcGMgPSAoVGFi bGVTcGFjZUNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQor CWZvcmVhY2hfaGFzaChUYWJsZVNwYWNlQ2FjaGVFbnRyeSwgc3BjLCBUYWJsZVNwYWNlQ2FjaGVI YXNoKQogCXsKIAkJaWYgKHNwYy0+b3B0cykKIAkJCXBmcmVlKHNwYy0+b3B0cyk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90c19jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvdHNfY2FjaGUuYwppbmRleCBjZmE2ZDhiMDlhNC4uNTQ0NmRlNWViMWEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvdHNfY2FjaGUuYwpAQCAtOTQsMTEgKzk0LDggQEAgc3RhdGljIHZvaWQK IEludmFsaWRhdGVUU0NhY2hlQ2FsbEJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMy IGhhc2h2YWx1ZSkKIHsKIAlIVEFCCSAgICpoYXNoID0gKEhUQUIgKikgRGF0dW1HZXRQb2ludGVy KGFyZyk7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlUU0FueUNhY2hlRW50cnkgKmVudHJ5 OwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBoYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKFRT QW55Q2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9y ZWFjaF9oYXNoKFRTQW55Q2FjaGVFbnRyeSwgZW50cnksIGhhc2gpCiAJCWVudHJ5LT5pc3ZhbGlk ID0gZmFsc2U7CiAKIAkvKiBBbHNvIGludmFsaWRhdGUgdGhlIGN1cnJlbnQtY29uZmlnIGNhY2hl IGlmIGl0J3MgcGdfdHNfY29uZmlnICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCBmMzg5N2M5NTNk My4uZjljZTdjNWRkZjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtMjg4LDggKzI4OCw2IEBAIFBy b2Nlc3NDb25maWdGaWxlSW50ZXJuYWwoR3VjQ29udGV4dCBjb250ZXh0LCBib29sIGFwcGx5U2V0 dGluZ3MsIGludCBlbGV2ZWwpCiAJY29uc3QgY2hhciAqQ29uZkZpbGVXaXRoRXJyb3I7CiAJQ29u ZmlnVmFyaWFibGUgKmhlYWQsCiAJCQkgICAqdGFpbDsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVz OwotCUdVQ0hhc2hFbnRyeSAqaGVudHJ5OwogCiAJLyogUGFyc2UgdGhlIG1haW4gY29uZmlnIGZp bGUgaW50byBhIGxpc3Qgb2Ygb3B0aW9uIG5hbWVzIGFuZCB2YWx1ZXMgKi8KIAlDb25mRmlsZVdp dGhFcnJvciA9IENvbmZpZ0ZpbGVOYW1lOwpAQCAtMzY0LDggKzM2Miw3IEBAIFByb2Nlc3NDb25m aWdGaWxlSW50ZXJuYWwoR3VjQ29udGV4dCBjb250ZXh0LCBib29sIGFwcGx5U2V0dGluZ3MsIGlu dCBlbGV2ZWwpCiAJICogbmVlZCB0aGlzIHNvIHRoYXQgd2UgY2FuIHRlbGwgYmVsb3cgd2hpY2gg b25lcyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tCiAJICogdGhlIGZpbGUgc2luY2Ugd2UgbGFzdCBw cm9jZXNzZWQgaXQuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBndWNfaGFzaHRhYik7 Ci0Jd2hpbGUgKChoZW50cnkgPSAoR1VDSGFzaEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3Rh dHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goR1VDSGFzaEVudHJ5LCBoZW50cnksIGd1Y19o YXNodGFiKQogCXsKIAkJc3RydWN0IGNvbmZpZ19nZW5lcmljICpnY29uZiA9IGhlbnRyeS0+Z3Vj dmFyOwogCkBAIC00NDksOCArNDQ2LDcgQEAgUHJvY2Vzc0NvbmZpZ0ZpbGVJbnRlcm5hbChHdWND b250ZXh0IGNvbnRleHQsIGJvb2wgYXBwbHlTZXR0aW5ncywgaW50IGVsZXZlbCkKIAkgKiBib290 LXRpbWUgZGVmYXVsdHMuICBJZiBzdWNoIGEgdmFyaWFibGUgY2FuJ3QgYmUgY2hhbmdlZCBhZnRl ciBzdGFydHVwLAogCSAqIHJlcG9ydCB0aGF0IGFuZCBjb250aW51ZS4KIAkgKi8KLQloYXNoX3Nl cV9pbml0KCZzdGF0dXMsIGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNo RW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFz aChHVUNIYXNoRW50cnksIGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJewogCQlzdHJ1Y3QgY29uZmln X2dlbmVyaWMgKmdjb25mID0gaGVudHJ5LT5ndWN2YXI7CiAKQEAgLTgzOSw4ICs4MzUsNiBAQCBz dHJ1Y3QgY29uZmlnX2dlbmVyaWMgKioKIGdldF9ndWNfdmFyaWFibGVzKGludCAqbnVtX3ZhcnMp CiB7CiAJc3RydWN0IGNvbmZpZ19nZW5lcmljICoqcmVzdWx0OwotCUhBU0hfU0VRX1NUQVRVUyBz dGF0dXM7Ci0JR1VDSGFzaEVudHJ5ICpoZW50cnk7CiAJaW50CQkJaTsKIAogCSpudW1fdmFycyA9 IGhhc2hfZ2V0X251bV9lbnRyaWVzKGd1Y19oYXNodGFiKTsKQEAgLTg0OCw4ICs4NDIsNyBAQCBn ZXRfZ3VjX3ZhcmlhYmxlcyhpbnQgKm51bV92YXJzKQogCiAJLyogRXh0cmFjdCBwb2ludGVycyBm cm9tIHRoZSBoYXNoIHRhYmxlICovCiAJaSA9IDA7Ci0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBn dWNfaGFzaHRhYik7Ci0Jd2hpbGUgKChoZW50cnkgPSAoR1VDSGFzaEVudHJ5ICopIGhhc2hfc2Vx X3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goR1VDSGFzaEVudHJ5LCBo ZW50cnksIGd1Y19oYXNodGFiKQogCQlyZXN1bHRbaSsrXSA9IGhlbnRyeS0+Z3VjdmFyOwogCUFz c2VydChpID09ICpudW1fdmFycyk7CiAKQEAgLTE0MDAsOSArMTM5Myw2IEBAIGNoZWNrX0dVQ19p bml0KGNvbnN0IHN0cnVjdCBjb25maWdfZ2VuZXJpYyAqZ2NvbmYpCiB2b2lkCiBJbml0aWFsaXpl R1VDT3B0aW9ucyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JR1VDSGFzaEVu dHJ5ICpoZW50cnk7Ci0KIAkvKgogCSAqIEJlZm9yZSBsb2dfbGluZV9wcmVmaXggY291bGQgcG9z c2libHkgcmVjZWl2ZSBhIG5vbmVtcHR5IHNldHRpbmcsIG1ha2UKIAkgKiBzdXJlIHRoYXQgdGlt ZXpvbmUgcHJvY2Vzc2luZyBpcyBtaW5pbWFsbHkgYWxpdmUgKHNlZSBlbG9nLmMpLgpAQCAtMTQx OCw4ICsxNDA4LDcgQEAgSW5pdGlhbGl6ZUdVQ09wdGlvbnModm9pZCkKIAkgKiBMb2FkIGFsbCB2 YXJpYWJsZXMgd2l0aCB0aGVpciBjb21waWxlZC1pbiBkZWZhdWx0cywgYW5kIGluaXRpYWxpemUK IAkgKiBzdGF0dXMgZmllbGRzIGFzIG5lZWRlZC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0 dXMsIGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50cnkgKikgaGFz aF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChHVUNIYXNoRW50 cnksIGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJewogCQkvKiBDaGVjayBtYXBwaW5nIGJldHdlZW4g aW5pdGlhbCBhbmQgZGVmYXVsdCB2YWx1ZSAqLwogCQlBc3NlcnQoY2hlY2tfR1VDX2luaXQoaGVu dHJ5LT5ndWN2YXIpKTsKQEAgLTI0MTQsOSArMjQwMyw2IEBAIEF0RU9YYWN0X0dVQyhib29sIGlz Q29tbWl0LCBpbnQgbmVzdExldmVsKQogdm9pZAogQmVnaW5SZXBvcnRpbmdHVUNPcHRpb25zKHZv aWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlHVUNIYXNoRW50cnkgKmhlbnRyeTsK LQogCS8qCiAJICogRG9uJ3QgZG8gYW55dGhpbmcgdW5sZXNzIHRhbGtpbmcgdG8gYW4gaW50ZXJh Y3RpdmUgZnJvbnRlbmQuCiAJICovCkBAIC0yNDM4LDggKzI0MjQsNyBAQCBCZWdpblJlcG9ydGlu Z0dVQ09wdGlvbnModm9pZCkKIAkJCQkJCVBHQ19JTlRFUk5BTCwgUEdDX1NfT1ZFUlJJREUpOwog CiAJLyogVHJhbnNtaXQgaW5pdGlhbCB2YWx1ZXMgb2YgaW50ZXJlc3RpbmcgdmFyaWFibGVzICov Ci0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBndWNfaGFzaHRhYik7Ci0Jd2hpbGUgKChoZW50cnkg PSAoR1VDSGFzaEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlm b3JlYWNoX2hhc2goR1VDSGFzaEVudHJ5LCBoZW50cnksIGd1Y19oYXNodGFiKQogCXsKIAkJc3Ry dWN0IGNvbmZpZ19nZW5lcmljICpjb25mID0gaGVudHJ5LT5ndWN2YXI7CiAKQEAgLTUxNDIsMTYg KzUxMjcsMTMgQEAgdm9pZAogTWFya0dVQ1ByZWZpeFJlc2VydmVkKGNvbnN0IGNoYXIgKmNsYXNz TmFtZSkKIHsKIAlpbnQJCQljbGFzc0xlbiA9IHN0cmxlbihjbGFzc05hbWUpOwotCUhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7Ci0JR1VDSGFzaEVudHJ5ICpoZW50cnk7CiAJTWVtb3J5Q29udGV4dCBv bGRjb250ZXh0OwogCiAJLyoKIAkgKiBDaGVjayBmb3IgZXhpc3RpbmcgcGxhY2Vob2xkZXJzLiAg V2UgbXVzdCBhY3R1YWxseSByZW1vdmUgaW52YWxpZAogCSAqIHBsYWNlaG9sZGVycywgZWxzZSBm dXR1cmUgcGFyYWxsZWwgd29ya2VyIHN0YXJ0dXBzIHdpbGwgZmFpbC4KIAkgKi8KLQloYXNoX3Nl cV9pbml0KCZzdGF0dXMsIGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNo RW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFz aChHVUNIYXNoRW50cnksIGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJewogCQlzdHJ1Y3QgY29uZmln X2dlbmVyaWMgKnZhciA9IGhlbnRyeS0+Z3VjdmFyOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxt ZW0uYwppbmRleCA4MjQxZDMyZjBjNi4uNGE3YjEwZDIxOWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9w b3J0YWxtZW0uYwpAQCAtNzc2LDEyICs3NzYsNyBAQCBQcmVDb21taXRfUG9ydGFscyhib29sIGlz UHJlcGFyZSkKIHZvaWQKIEF0QWJvcnRfUG9ydGFscyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRV UyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3Rh dHVzLCBQb3J0YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVu dCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBv cnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0 YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtODUzLDEyICs4NDgsNyBAQCBBdEFib3J0X1BvcnRh bHModm9pZCkKIHZvaWQKIEF0Q2xlYW51cF9Qb3J0YWxzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RB VFVTIHN0YXR1czsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZz dGF0dXMsIFBvcnRhbEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNo RW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2go UG9ydGFsSGFzaEVudCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBv cnRhbCA9IGhlbnRyeS0+cG9ydGFsOwogCkBAIC05MTIsMTIgKzkwMiw3IEBAIEF0Q2xlYW51cF9Q b3J0YWxzKHZvaWQpCiB2b2lkCiBQb3J0YWxFcnJvckNsZWFudXAodm9pZCkKIHsKLQlIQVNIX1NF UV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hfc2VxX2lu aXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKFBvcnRh bEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hf aGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBvcnRh bAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTk0MSwxMiArOTI2LDcgQEAgQXRTdWJD b21taXRfUG9ydGFscyhTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJCQkJCWludCBwYXJlbnRM ZXZlbCwKIAkJCQkJUmVzb3VyY2VPd25lciBwYXJlbnRYYWN0T3duZXIpCiB7Ci0JSEFTSF9TRVFf U1RBVFVTIHN0YXR1czsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0 KCZzdGF0dXMsIFBvcnRhbEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxI YXNoRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hh c2goUG9ydGFsSGFzaEVudCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJ CXBvcnRhbCA9IGhlbnRyeS0+cG9ydGFsOwogCkBAIC05NzcsMTIgKzk1Nyw3IEBAIEF0U3ViQWJv cnRfUG9ydGFscyhTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJCQkJICAgUmVzb3VyY2VPd25l ciBteVhhY3RPd25lciwKIAkJCQkgICBSZXNvdXJjZU93bmVyIHBhcmVudFhhY3RPd25lcikKIHsK LQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5 ID0gKFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQor CWZvcmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7 CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTEwODcsMTIgKzEwNjIs NyBAQCBBdFN1YkFib3J0X1BvcnRhbHMoU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAogdm9pZAog QXRTdWJDbGVhbnVwX1BvcnRhbHMoU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkKQogewotCUhBU0hf U0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCi0JaGFzaF9zZXFf aW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9y dGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9y dGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtMTEyNyw4ICsxMDk3LDYgQEAgRGF0 dW0KIHBnX2N1cnNvcihQR19GVU5DVElPTl9BUkdTKQogewogCVJldHVyblNldEluZm8gKnJzaW5m byA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKLQlIQVNIX1NFUV9TVEFU VVMgaGFzaF9zZXE7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwogCiAJLyoKIAkgKiBXZSBwdXQg YWxsIHRoZSB0dXBsZXMgaW50byBhIHR1cGxlc3RvcmUgaW4gb25lIHNjYW4gb2YgdGhlIGhhc2h0 YWJsZS4KQEAgLTExMzYsOCArMTEwNCw3IEBAIHBnX2N1cnNvcihQR19GVU5DVElPTl9BUkdTKQog CSAqLwogCUluaXRNYXRlcmlhbGl6ZWRTUkYoZmNpbmZvLCAwKTsKIAotCWhhc2hfc2VxX2luaXQo Jmhhc2hfc2VxLCBQb3J0YWxIYXNoVGFibGUpOwotCXdoaWxlICgoaGVudHJ5ID0gaGFzaF9zZXFf c2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQs IGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnkt PnBvcnRhbDsKIAkJRGF0dW0JCXZhbHVlc1s2XTsKQEAgLTExNjYsMTIgKzExMzMsNyBAQCBwZ19j dXJzb3IoUEdfRlVOQ1RJT05fQVJHUykKIGJvb2wKIFRoZXJlQXJlTm9SZWFkeVBvcnRhbHModm9p ZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsK LQotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgo aGVudHJ5ID0gKFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBO VUxMKQorCWZvcmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJs ZSkKIAl7CiAJCVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTEyMDIsMTIg KzExNjQsNyBAQCBUaGVyZUFyZU5vUmVhZHlQb3J0YWxzKHZvaWQpCiB2b2lkCiBIb2xkUGlubmVk UG9ydGFscyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVu dCAqaGVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOwot Ci0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0 YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9y dGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApA QCAtMTI1MSwxNSArMTIwOCwxMSBAQCBIb2xkUGlubmVkUG9ydGFscyh2b2lkKQogdm9pZAogRm9y Z2V0UG9ydGFsU25hcHNob3RzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQ b3J0YWxIYXNoRW50ICpoZW50cnk7CiAJaW50CQkJbnVtUG9ydGFsU25hcHMgPSAwOwogCWludAkJ CW51bUFjdGl2ZVNuYXBzID0gMDsKIAogCS8qIEZpcnN0LCBzY2FuIFBvcnRhbEhhc2hUYWJsZSBh bmQgY2xlYXIgcG9ydGFsU25hcHNob3QgZmllbGRzICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVz LCBQb3J0YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAq KSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRh bEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwg PSBoZW50cnktPnBvcnRhbDsKIAotLSAKMi41Mi4wCgo= --1f5aa97c3717d9898fe1632888cf97f42cb8cdb8e993b8ebf6ce2dd0f12d--