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 1vSYrg-000kP1-15 for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Dec 2025 10:53:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vSYre-00GO1h-0s for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Dec 2025 10:53:10 +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 1vSYrd-00GO1Y-2N for pgsql-hackers@lists.postgresql.org; Mon, 08 Dec 2025 10:53:10 +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 1vSYra-003pbB-1C for pgsql-hackers@lists.postgresql.org; Mon, 08 Dec 2025 10:53:09 +0000 Received: by mail-ej1-x631.google.com with SMTP id a640c23a62f3a-b79ea617f55so808835266b.3 for ; Mon, 08 Dec 2025 02:53:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1765191184; x=1765795984; darn=lists.postgresql.org; h=in-reply-to:references:to:subject:cc:from:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=0YgRMGLe2dKnnEAIXIyf8AAwb74vlr1pHujt0Rk+tro=; b=oXR1YznoJY0QcaCSn7DnXyK2A2n4ABwLuwHBPmNmae+3Hfd8wF9HDRG4+KGHhUl8ep AyhGnTjUm1CrVevR9T4hCT5nfh0KrRpXjLalo8XgluKBNe7waLXS6G4UdiQTcslrgi7J XbeRRs+MzN6aCO1yxU3fWJMymmnYyuBrLHRSYVbJfwR6Z9UJABoyslWwMv8QfyXFKLS7 +2OBmRYOH0YIKTM72Morb3lodGa3+wkOztO2Oknz6pjrFXp4HP0UNj9UQWuazPQ/fJ4a P6qKhzT+fdKEHXBxW6I2q/bwfDlcKN963O6e/vx5ZK1SrGWXZmu3woHUfz9ZLzOo7pFU VZjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765191184; x=1765795984; h=in-reply-to:references:to:subject:cc:from:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=0YgRMGLe2dKnnEAIXIyf8AAwb74vlr1pHujt0Rk+tro=; b=npKJtNGHcaIwANfwbiALZoga52QvNzHzxTDDHyR8ckReTaK5IJC3mvOhKJNibhRhQ2 EL0/ckw0xVgSxiRzbiv/4EZ463CW+KdWOO9S9xx5NrO8eJ3dPI47f7kmjasT2X76PPiz exjUMva8TP6bCp6KtHUggffawjpd9RSQd/xsa2NEtLwz49Da4DrUNYWkOH0R4Gb2HZYs o7YR5fv+X0btvolxTZ+t2PKmIWJzdpltZkh4tTrqmvIpmXOI+ApCAtFrs8XsaADZ01wH aMhulwh2qpRSilgann1LwhrFeYvbG1XMy4hg+2+fxOSISM6dw59mDoNKCTX28VUjkGzO rMPQ== X-Forwarded-Encrypted: i=1; AJvYcCU5pZzV0XdRgZ6SreTPuF/HrgqpVVro7g1fV8GeH3DLGwd2f/SWMuH+Fc0YWlKnmO21WhFJKGoglX2GSSZp@lists.postgresql.org X-Gm-Message-State: AOJu0YwignQIwphhG59nbqNgJZYEz9bOHzMTzVGLAP9mQ19rPF+I/wY7 GYy33MMFFX/VWuSw+jhT9Tx+NZPp5fJP3RibBi1wVaEifN3Vl7bEWOGl3qGznClGN9w= X-Gm-Gg: ASbGncutR4yjJ02JQgBtezZmHvUKzNyrT+02GlnXFRTC1sMb115GUJ7P0pb4y+okPOG nIR8RvRyFusiJzwWTbY/kCuWK1VzIM8z5GQv67qIISPDJIT1ozGtHK0B6kHz+C0Do+TZgpp6CBp VLF45WJ0TJhl6ATxiv5649jCdG50pbg838rabVm4Gsvl0AnCecgAI6VHhG2kr+86TTje5qMUKjZ nCHoASENOZD7HAB4DOyRHL2A1pWxkFJ65iZWxQpmYQ+gzJpHrnwJ4Ewn9/YE8YjuQ1d83ogkBVe efjNBzEGqNEh17pg02zHXNfkwNEu5jOMigzYgYGvlpKL6Z9VQs9xzIsqZLhnoayAZlJ2Mp8haXx x718yxorIrZ0ERLSR52rDJtYEWyJHo31RHjJmS/ksrMfLbtkU9/SXDLhyGCNeIwJdiILxnYLLCg EI8A1Rzarg+rlKf46k/sWNwrddvWa8EoR8DRc= X-Google-Smtp-Source: AGHT+IH8WZ7AIUztxN/0jxAtu7oLiCrMIBmMqEZzy3ssDIma7HZxLqkxB3AvpYNusX13syVVWCW4rA== X-Received: by 2002:a17:907:3e98:b0:b79:eaf6:8f54 with SMTP id a640c23a62f3a-b7a2477ad42mr883431066b.43.1765191183573; Mon, 08 Dec 2025 02:53:03 -0800 (PST) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b79f449b160sm1083604866b.23.2025.12.08.02.53.02 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 08 Dec 2025 02:53:02 -0800 (PST) Content-Type: multipart/mixed; boundary=4a64335236636428890df52b41be4626d0df87532bd999859fd0fd98123d Mime-Version: 1.0 Date: Mon, 08 Dec 2025 11:53:02 +0100 Message-Id: From: "Jelte Fennema-Nio" Cc: "Bertrand Drouvot" , Subject: Re: Safer hash table initialization macro To: "Thomas Munro" 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 --4a64335236636428890df52b41be4626d0df87532bd999859fd0fd98123d Content-Type: multipart/alternative; boundary=32d739e74625a799f00e2849a0430e6308780fa58549b3d17a3fec4737b9 --32d739e74625a799f00e2849a0430e6308780fa58549b3d17a3fec4737b9 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Sat Dec 6, 2025 at 1:56 AM CET, Thomas Munro wrote: > On Sat, Dec 6, 2025 at 3:32=E2=80=AFAM Jelte Fennema-Nio wrote: >> On Fri, 5 Dec 2025 at 02:30, Thomas Munro wrote= : >> create a hashmap it's still possible to call the. > > ... C functions without the helper macros. Oops, forgot to finish that sentence. > > Yeah. I don't think we want that sort of thing all over the place. > We could eventually come up with a small set of tools in a central > place though, so people can work with this stuff without also known > C++ meta-programming voodoo. For example something like (untested, I > didn't think about char[size], just spitballing here...): > > (pg_expr_has_type_p(ptr, char *) || pg_expr_has_type_p(ptr, NameData *)) > > ... given the definition I posted recently[1]. Ugh... It would have saved me some time if I'd seen that email before. I also had no clue that 'extern "C++"' was a thing. Attached is a new patchset where your proposed macro is used. I also needed a pg_nullptr_of macro, because the trick that worked in C didn't in C++. Also, it's probably worth checking out this thread[2]. Especially because it overlaps significantly with[1]. > Sure, I was just thinking about how such cross-language usage would be > forced to unpick our macrology and call the underlying C functions > without them. Doesn't seem like the end of the world anyway, I was > just thinking out loud about the consequences of this phenomenon in > headers. It's not great, but yeah that's the situation. Stuff like PG_TRY and PG_CATCH are especially painful to reimplement. Luckily those things can usually be re-implemented similarly in the target language, so the macros only need to be disected once. > [1] https://www.postgresql.org/message-id/CA+hUKGL7trhWiJ4qxpksBztMMTWDyP= nP1QN+Lq341V7QL775DA@mail.gmail.com [2]: https://www.postgresql.org/message-id/flat/CAGECzQR21OnnKiZO_1rLWO0-16= kg1JBxnVq-wymYW0-_1cUNtg%40mail.gmail.com --32d739e74625a799f00e2849a0430e6308780fa58549b3d17a3fec4737b9-- --4a64335236636428890df52b41be4626d0df87532bd999859fd0fd98123d Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0001-Add-hash_make-macros.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0001-Add-hash_make-macros.patch RnJvbSA1Mjg4OTIwZmQ4MGE2MTJkNTY2MGZiNTc2ZGNmODBiYjY0NjFhYjBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzU6MDggKzAxMDAKU3ViamVjdDogW1BBVENIIHYz IDEvNV0gQWRkIGhhc2hfbWFrZSBtYWNyb3MKClRoaXMgYWRkcyBhIGJ1bmNoIG9mIGhhc2hfbWFr ZSogYW5kIHNobWVtX2hhc2hfbWFrZSogbWFjcm9zIHRvIG1ha2UgaXQKZWFzaWVyIGFuZCBsZXNz IGVycm9yIHByb25lIHRvIGNyZWF0ZSBIVEFCcy4gVGhlc2UgbWFjcm9zIGFyZQppbXBsZW1lbnRl ZCBhcyB3cmFwcGVycyBhcm91bmQgdGhlIGFscmVhZHkgZXhpc3RpbmcgaGFzaF9jcmVhdGUKZnVu Y3Rpb24uIFVzaW5nIHRoZSBuZXcgbWFjcm9zIGlzIHByZWZlcnJlZCwgZHVlIHRvIHRoZSBhZGRp dGlvbmFsCmNvbXBpbGUgdGltZSBjaGVja3MgdGhhdCB0aGV5IGJyaW5nLgoKQ28tQXV0aG9yZWQt Qnk6IEJlcnRyYW5kIERyb3V2b3QgPGJlcnRyYW5kZHJvdXZvdC5wZ0BnbWFpbC5jb20+Ci0tLQog c3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jIHwgMTA5ICsrKysrKysrKysrKysrKysr KysrCiBzcmMvaW5jbHVkZS9jLmggICAgICAgICAgICAgICAgICAgfCAgMzEgKysrKysrCiBzcmMv aW5jbHVkZS9zdG9yYWdlL3NobWVtLmggICAgICAgfCAgMzIgKysrKysrCiBzcmMvaW5jbHVkZS91 dGlscy9oc2VhcmNoLmggICAgICAgfCAxNjAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst CiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgfCAgIDEgKwogNSBmaWxlcyBjaGFu Z2VkLCAzMjggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9oYXNoL2R5bmFoYXNoLmMgYi9zcmMvYmFja2VuZC91dGlscy9oYXNoL2R5 bmFoYXNoLmMKaW5kZXggYWM5NGI5ZTkzYzYuLmJjNDc0NjlhYjNjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9oYXNoL2R5bmFoYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaGFz aC9keW5haGFzaC5jCkBAIC02MzEsNiArNjMxLDExNSBAQCBoYXNoX2NyZWF0ZShjb25zdCBjaGFy ICp0YWJuYW1lLCBpbnQ2NCBuZWxlbSwgY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKQog CXJldHVybiBoYXNocDsKIH0KIAorLyoKKyAqIGhhc2hfb3B0c19pbml0IC0tIGluaXRpYWxpemUg SEFTSENUTCBhbmQgZmxhZ3MgZnJvbSBIQVNIT1BUUworICoKKyAqIFRoaXMgcHJvY2Vzc2VzIEhB U0hPUFRTIGZpZWxkcyBpbnRvIEhBU0hDVEwgYW5kIGZsYWdzLiBJdCdzIHVzZWQgYnkgY29kZQor ICogdGhhdCBuZWVkcyB0byBjYWxsIHRoZSBsb3ctbGV2ZWwgaGFzaF9jcmVhdGUgZnVuY3Rpb24u CisgKi8KK3ZvaWQKK2hhc2hfb3B0c19pbml0KEhBU0hDVEwgKmN0bCwgaW50ICpmbGFncywKKwkJ CSAgIFNpemUga2V5c2l6ZSwgU2l6ZSBlbnRyeXNpemUsIGJvb2wgc3RyaW5nX2tleSwKKwkJCSAg IGNvbnN0IEhBU0hPUFRTICpvcHRzKQoreworCU1lbVNldChjdGwsIDAsIHNpemVvZigqY3RsKSk7 CisJY3RsLT5rZXlzaXplID0ga2V5c2l6ZTsKKwljdGwtPmVudHJ5c2l6ZSA9IGVudHJ5c2l6ZTsK KworCSpmbGFncyA9IEhBU0hfRUxFTTsKKworCWlmIChvcHRzICE9IE5VTEwgJiYgb3B0cy0+aGFz aCAhPSBOVUxMKQorCXsKKwkJLyogZm9yY2VfYmxvYnMgb25seSBhZmZlY3RzIGRlZmF1bHQgaGFz aCBzZWxlY3Rpb24sIG5vdCBjdXN0b20gaGFzaCAqLworCQlBc3NlcnQoIW9wdHMtPmZvcmNlX2Js b2JzKTsKKwkJY3RsLT5oYXNoID0gb3B0cy0+aGFzaDsKKwkJKmZsYWdzIHw9IEhBU0hfRlVOQ1RJ T047CisJfQorCWVsc2UgaWYgKG9wdHMgIT0gTlVMTCAmJiBvcHRzLT5mb3JjZV9ibG9icykKKwl7 CisJCSpmbGFncyB8PSBIQVNIX0JMT0JTOworCX0KKwllbHNlCisJeworCQkqZmxhZ3MgfD0gc3Ry aW5nX2tleSA/IEhBU0hfU1RSSU5HUyA6IEhBU0hfQkxPQlM7CisJfQorCisJaWYgKG9wdHMgIT0g TlVMTCAmJiBvcHRzLT5tYXRjaCAhPSBOVUxMKQorCXsKKwkJY3RsLT5tYXRjaCA9IG9wdHMtPm1h dGNoOworCQkqZmxhZ3MgfD0gSEFTSF9DT01QQVJFOworCX0KKworCWlmIChvcHRzICE9IE5VTEwg JiYgb3B0cy0+a2V5Y29weSAhPSBOVUxMKQorCXsKKwkJY3RsLT5rZXljb3B5ID0gb3B0cy0+a2V5 Y29weTsKKwkJKmZsYWdzIHw9IEhBU0hfS0VZQ09QWTsKKwl9CisKKwlpZiAob3B0cyAhPSBOVUxM ICYmIG9wdHMtPmFsbG9jICE9IE5VTEwpCisJeworCQljdGwtPmFsbG9jID0gb3B0cy0+YWxsb2M7 CisJCSpmbGFncyB8PSBIQVNIX0FMTE9DOworCX0KKworCWlmIChvcHRzICE9IE5VTEwgJiYgb3B0 cy0+bnVtX3BhcnRpdGlvbnMgPiAwKQorCXsKKwkJY3RsLT5udW1fcGFydGl0aW9ucyA9IG9wdHMt Pm51bV9wYXJ0aXRpb25zOworCQkqZmxhZ3MgfD0gSEFTSF9QQVJUSVRJT047CisJfQorCisJaWYg KG9wdHMgIT0gTlVMTCAmJiBvcHRzLT5maXhlZF9zaXplKQorCQkqZmxhZ3MgfD0gSEFTSF9GSVhF RF9TSVpFOworfQorCisvKgorICogaGFzaF9tYWtlX2ltcGwgLS0gc2ltcGxpZmllZCBoYXNoIHRh YmxlIGNyZWF0aW9uCisgKgorICogVGhpcyBpcyB0aGUgaW1wbGVtZW50YXRpb24gZnVuY3Rpb24g Zm9yIHRoZSBoYXNoX21ha2UoKSBhbmQgaGFzaF9tYWtlX2V4dCgpCisgKiBtYWNyb3MuIEl0IGNy ZWF0ZXMgYSBoYXNoIHRhYmxlIHdpdGggc2Vuc2libGUgZGVmYXVsdHMuCisgKgorICogSWYgc3Ry aW5nX2tleSBpcyB0cnVlLCB0aGUga2V5IGlzIHRyZWF0ZWQgYXMgYSBudWxsLXRlcm1pbmF0ZWQg c3RyaW5nCisgKiAodXNlcyBIQVNIX1NUUklOR1MpLiBPdGhlcndpc2UsIHRoZSBrZXkgaXMgdHJl YXRlZCBhcyBhIGJpbmFyeSBibG9iCisgKiAodXNlcyBIQVNIX0JMT0JTKS4KKyAqCisgKiBQYXNz IE5VTEwgZm9yIG9wdHMgdG8gdXNlIGFsbCBkZWZhdWx0cy4KKyAqLworSFRBQiAqCitoYXNoX21h a2VfaW1wbChjb25zdCBjaGFyICp0YWJuYW1lLCBpbnQ2NCBuZWxlbSwKKwkJCSAgIFNpemUga2V5 c2l6ZSwgU2l6ZSBlbnRyeXNpemUsCisJCQkgICBib29sIHN0cmluZ19rZXksCisJCQkgICBjb25z dCBIQVNIT1BUUyAqb3B0cywKKwkJCSAgIE1lbW9yeUNvbnRleHQgbWN4dCkKK3sKKwlIQVNIQ1RM CQljdGw7CisJaW50CQkJZmxhZ3M7CisKKwloYXNoX29wdHNfaW5pdCgmY3RsLCAmZmxhZ3MsIGtl eXNpemUsIGVudHJ5c2l6ZSwgc3RyaW5nX2tleSwgb3B0cyk7CisKKwljdGwuaGN4dCA9IG1jeHQ7 CisJZmxhZ3MgfD0gSEFTSF9DT05URVhUOworCisJcmV0dXJuIGhhc2hfY3JlYXRlKHRhYm5hbWUs IG5lbGVtLCAmY3RsLCBmbGFncyk7Cit9CisKKy8qCisgKiBoYXNoX21ha2VfZm5faW1wbCAtLSBj cmVhdGUgYSBoYXNoIHRhYmxlIHdpdGggY3VzdG9tIGZ1bmN0aW9ucworICovCitIVEFCICoKK2hh c2hfbWFrZV9mbl9pbXBsKGNvbnN0IGNoYXIgKnRhYm5hbWUsIGludDY0IG5lbGVtLAorCQkJCSAg U2l6ZSBrZXlzaXplLCBTaXplIGVudHJ5c2l6ZSwgYm9vbCBzdHJpbmdfa2V5LAorCQkJCSAgSGFz aFZhbHVlRnVuYyBoYXNoZm4sIEhhc2hDb21wYXJlRnVuYyBtYXRjaGZuLAorCQkJCSAgTWVtb3J5 Q29udGV4dCBtY3h0KQoreworCUhBU0hPUFRTCW9wdHMgPSB7CisJCS5oYXNoID0gaGFzaGZuLAor CQkubWF0Y2ggPSBtYXRjaGZuCisJfTsKKworCXJldHVybiBoYXNoX21ha2VfaW1wbCh0YWJuYW1l LCBuZWxlbSwga2V5c2l6ZSwgZW50cnlzaXplLAorCQkJCQkJICBzdHJpbmdfa2V5LCAmb3B0cywg bWN4dCk7Cit9CisKIC8qCiAgKiBTZXQgZGVmYXVsdCBIQVNISERSIHBhcmFtZXRlcnMuCiAgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2MuaCBiL3NyYy9pbmNsdWRlL2MuaAppbmRleCBjY2Qy YjY1NGQ0NS4uZTNjODZkNjg5MzIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9z cmMvaW5jbHVkZS9jLmgKQEAgLTgxLDYgKzgxLDExIEBACiAjZW5kaWYKICNpZmRlZiBFTkFCTEVf TkxTCiAjaW5jbHVkZSA8bGliaW50bC5oPgorI2VuZGlmCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4 dGVybiAiQysrIiB7CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+Cit9CiAjZW5kaWYKIAogIC8qIFB1 bGwgaW4gZnVuZGFtZW50YWwgc3ltYm9scyB0aGF0IHdlIGFsc28gZXhwb3NlIHRvIGFwcGxpY2F0 aW9ucyAqLwpAQCAtMzYyLDYgKzM2NywzMiBAQAogI2RlZmluZSBIQVZFX1BHX0lOVEVHRVJfQ09O U1RBTlRfUAogI2VuZGlmCiAKKy8qCisgKiBwZ19leHByX2hhc190eXBlX3AoZXhwciwgdHlwZSkg LSBDaGVjayBpZiBhbiBleHByZXNzaW9uIGhhcyBhIHNwZWNpZmljIHR5cGUuCisgKgorICogU2lt aWxhciB0byBwZ19pc19zYW1lLCBidXQgdGFrZXMgYW4gZXhwcmVzc2lvbiBpbnN0ZWFkIG9mIGEg dHlwZSBhcyB0aGUKKyAqIGZpcnN0IGFyZ3VtZW50LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSBo YXZlIGFuIGV4cHJlc3Npb24gYW5kIHdhbnQgdG8KKyAqIGNoZWNrIGl0cyB0eXBlIHdpdGhvdXQg bmVlZGluZyB0eXBlb2YvZGVjbHR5cGUuCisgKi8KKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQor I2RlZmluZSBwZ19leHByX2hhc190eXBlX3AoZXhwciwgdHlwZSkgKHN0ZDo6aXNfc2FtZTxkZWNs dHlwZShleHByKSwgdHlwZT46OnZhbHVlKQorI2Vsc2UKKyNkZWZpbmUgcGdfZXhwcl9oYXNfdHlw ZV9wKGV4cHIsIHR5cGUpIFwKKwlfR2VuZXJpYygoZXhwciksIHR5cGU6IDEsIGRlZmF1bHQ6IDAp CisjZW5kaWYKKworLyoKKyAqIHBnX251bGxwdHJfb2YodHlwZSkgLSBDcmVhdGUgYSBudWxsIHBv aW50ZXIgb2YgdGhlIGdpdmVuIHR5cGUuCisgKgorICogSW4gQywgKHR5cGUgKilOVUxMIHdvcmtz IGZvciBhbGwgdHlwZXMuIEluIEMrKywgdGhpcyBzeW50YXggZmFpbHMgZm9yIHR5cGVzCisgKiBj b250YWluaW5nIGJyYWNrZXRzIChsaWtlIGNoYXJbNjRdKSwgc28gd2UgdXNlIHN0ZDo6YWRkX3Bv aW50ZXJfdCBpbnN0ZWFkLgorICovCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKKyNkZWZpbmUg cGdfbnVsbHB0cl9vZih0eXBlKSAoc3RhdGljX2Nhc3Q8c3RkOjphZGRfcG9pbnRlcl90PHR5cGU+ PihudWxscHRyKSkKKyNlbHNlCisjZGVmaW5lIHBnX251bGxwdHJfb2YodHlwZSkgKCh0eXBlICop TlVMTCkKKyNlbmRpZgorCiAvKgogICogcGdfYXNzdW1lKGV4cHIpIHN0YXRlcyB0aGF0IHdlIGFz c3VtZSBgZXhwcmAgdG8gZXZhbHVhdGUgdG8gdHJ1ZS4gSW4gYXNzZXJ0CiAgKiBlbmFibGVkIGJ1 aWxkcyBwZ19hc3N1bWUoKSBpcyB0dXJuZWQgaW50byBhbiBhc3NlcnRpb24sIGluIG9wdGltaXpl ZCBidWlsZHMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCBiL3NyYy9p bmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAppbmRleCA3MGE1YjhiMTcyYy4uNzRmNjFhZWJjMWEgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAorKysgYi9zcmMvaW5jbHVkZS9z dG9yYWdlL3NobWVtLmgKQEAgLTQzLDYgKzQzLDM4IEBAIGV4dGVybiBTaXplIG11bF9zaXplKFNp emUgczEsIFNpemUgczIpOwogCiBleHRlcm4gUEdETExJTVBPUlQgU2l6ZSBwZ19nZXRfc2htZW1f cGFnZXNpemUodm9pZCk7CiAKKy8qCisgKiBTaW1wbGlmaWVkIHNoYXJlZCBtZW1vcnkgaGFzaCB0 YWJsZSBjcmVhdGlvbiBBUEkKKyAqCisgKiBUaGVzZSBtYWNyb3MgcHJvdmlkZSBhIHNpbXBsZXIg d2F5IHRvIGNyZWF0ZSBzaGFyZWQgbWVtb3J5IGhhc2ggdGFibGVzIGJ5OgorICogLSBBdXRvbWF0 aWNhbGx5IGRldGVybWluaW5nIGtleXNpemUgYW5kIGVudHJ5c2l6ZSBmcm9tIHR5cGUgaW5mb3Jt YXRpb24KKyAqIC0gQXV0b21hdGljYWxseSBjaG9vc2luZyBIQVNIX1NUUklOR1MgdnMgSEFTSF9C TE9CUyBiYXNlZCBvbiBrZXkgdHlwZQorICogLSBFbGltaW5hdGluZyB0aGUgbmVlZCBmb3IgZXhw bGljaXQgSEFTSENUTCBhbmQgZmxhZ3MgaW4gY29tbW9uIGNhc2VzCisgKgorICogVXNhZ2U6Cisg KiAgIEhUQUIgKmhhc2ggPSBzaG1lbV9oYXNoX21ha2UoTXlFbnRyeSwga2V5ZmllbGQsICJNeSBo YXNoIiwgNjQsIDEyOCk7CisgKgorICogRm9yIG1vcmUgb3B0aW9ucyAocGFydGl0aW9uaW5nLCBm aXhlZCBzaXplLCBjdXN0b20gaGFzaCk6CisgKiAgIEhBU0hPUFRTIG9wdHMgPSB7Lm51bV9wYXJ0 aXRpb25zID0gMTYsIC5maXhlZF9zaXplID0gdHJ1ZX07CisgKiAgIEhUQUIgKmhhc2ggPSBzaG1l bV9oYXNoX21ha2VfZXh0KE15RW50cnksIGtleWZpZWxkLCAiTXkgaGFzaCIsIDY0LCAxMjgsICZv cHRzKTsKKyAqLworI2RlZmluZSBzaG1lbV9oYXNoX21ha2UoZW50cnl0eXBlLCBrZXltZW1iZXIs IHRhYm5hbWUsIGluaXRfc2l6ZSwgbWF4X3NpemUpIFwKKwlzaG1lbV9oYXNoX21ha2VfZXh0KGVu dHJ5dHlwZSwga2V5bWVtYmVyLCB0YWJuYW1lLCBpbml0X3NpemUsIG1heF9zaXplLCBOVUxMKQor CisjZGVmaW5lIHNobWVtX2hhc2hfbWFrZV9leHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5h bWUsIGluaXRfc2l6ZSwgbWF4X3NpemUsIG9wdHMpIFwKKwkoU3RhdGljQXNzZXJ0RXhwcihvZmZz ZXRvZihlbnRyeXR5cGUsIGtleW1lbWJlcikgPT0gMCwgXAorCQkJCQkJICNrZXltZW1iZXIgIiBt dXN0IGJlIGZpcnN0IG1lbWJlciBpbiAiICNlbnRyeXR5cGUpLCBcCisJc2htZW1faGFzaF9tYWtl X2ltcGwoIFwKKwkJKHRhYm5hbWUpLCAoaW5pdF9zaXplKSwgKG1heF9zaXplKSwgXAorCQlzaXpl b2YoKChlbnRyeXR5cGUgKikwKS0+a2V5bWVtYmVyKSwgXAorCQlzaXplb2YoZW50cnl0eXBlKSwg XAorCQlIQVNIX0tFWV9BU19TVFJJTkcoZW50cnl0eXBlLCBrZXltZW1iZXIpLCBcCisJCShvcHRz KSkpCisKK2V4dGVybiBIVEFCICpzaG1lbV9oYXNoX21ha2VfaW1wbChjb25zdCBjaGFyICpuYW1l LCBpbnQ2NCBpbml0X3NpemUsIGludDY0IG1heF9zaXplLAorCQkJCQkJCQkgIFNpemUga2V5c2l6 ZSwgU2l6ZSBlbnRyeXNpemUsIGJvb2wgc3RyaW5nX2tleSwKKwkJCQkJCQkJICBjb25zdCBIQVNI T1BUUyAqb3B0cyk7CisKIC8qIGlwY2kuYyAqLwogZXh0ZXJuIHZvaWQgUmVxdWVzdEFkZGluU2ht ZW1TcGFjZShTaXplIHNpemUpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9oc2Vh cmNoLmggYi9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKaW5kZXggY2IwOWE0Y2JlOGMuLjk4 Yzg4NzI2MzQ1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKKysrIGIv c3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oCkBAIC0xNSw2ICsxNSw5IEBACiAjZGVmaW5lIEhT RUFSQ0hfSAogCiAKKy8qIEhhc2ggdGFibGUgY29udHJvbCBzdHJ1Y3QgaXMgYW4gb3BhcXVlIHR5 cGUga25vd24gb25seSB3aXRoaW4gZHluYWhhc2guYyAqLwordHlwZWRlZiBzdHJ1Y3QgSFRBQiBI VEFCOworCiAvKgogICogSGFzaCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoaXMgc2lnbmF0dXJlLgog ICovCkBAIC00Myw2ICs0NiwxNTAgQEAgdHlwZWRlZiB2b2lkICooKkhhc2hDb3B5RnVuYykgKHZv aWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgU2l6ZSBrZXlzaXplKTsKICAqLwogdHlwZWRlZiB2 b2lkICooKkhhc2hBbGxvY0Z1bmMpIChTaXplIHJlcXVlc3QpOwogCisvKgorICogSGFzaCBvcHRp b25zIGZvciBoYXNoX21ha2VfZXh0IGFuZCBzaG1lbV9oYXNoX21ha2VfZXh0IG1hY3Jvcy4KKyAq IENvbnRhaW5zIGxlc3MgY29tbW9ubHkgbmVlZGVkIG9wdGlvbnMgdGhhdCBhcmVuJ3QgY292ZXJl ZCBieSB0aGUgYmFzaWMgbWFjcm9zLgorICogQWxsIGZpZWxkcyBkZWZhdWx0IHRvIE5VTEwvMC9m YWxzZSB3aGVuIHplcm8taW5pdGlhbGl6ZWQuCisgKi8KK3R5cGVkZWYgc3RydWN0IEhBU0hPUFRT Cit7CisJSGFzaFZhbHVlRnVuYyBoYXNoOwkJCS8qIGN1c3RvbSBoYXNoIGZ1bmN0aW9uIChOVUxM IGZvciBkZWZhdWx0KSAqLworCUhhc2hDb21wYXJlRnVuYyBtYXRjaDsJCS8qIGN1c3RvbSBjb21w YXJpc29uIGZ1bmN0aW9uIChOVUxMIGZvcgorCQkJCQkJCQkgKiBkZWZhdWx0KSAqLworCUhhc2hD b3B5RnVuYyBrZXljb3B5OwkJLyogY3VzdG9tIGtleSBjb3B5IGZ1bmN0aW9uIChOVUxMIGZvciBk ZWZhdWx0KSAqLworCUhhc2hBbGxvY0Z1bmMgYWxsb2M7CQkvKiBjdXN0b20gYWxsb2NhdG9yIChO VUxMIGZvciBkZWZhdWx0KSAqLworCWludDY0CQludW1fcGFydGl0aW9uczsgLyogcGFydGl0aW9u IGNvdW50ICgwIGZvciBub25lKSAqLworCWJvb2wJCWZpeGVkX3NpemU7CQkvKiBpZiB0cnVlLCBo YXNoIHRhYmxlIGNhbm5vdCBncm93ICovCisJYm9vbAkJZm9yY2VfYmxvYnM7CS8qIGlmIHRydWUs IHVzZSBIQVNIX0JMT0JTIGV2ZW4gZm9yIHN0cmluZworCQkJCQkJCQkgKiB0eXBlcyAqLworfSBI QVNIT1BUUzsKKworLyoKKyAqIEhlbHBlcnMgdG8gZGV0ZWN0IGlmIGEgdHlwZSBzaG91bGQgYmUg aGFzaGVkIGFzIGEgc3RyaW5nLgorICoKKyAqIFN0cmluZyB0eXBlcyBpbmNsdWRlOiBjaGFyIGFy cmF5cyBhbmQgTmFtZURhdGEuCisgKiBFdmVyeXRoaW5nIGVsc2UgaXMgdHJlYXRlZCBhcyBhIGJp bmFyeSBibG9iIChIQVNIX0JMT0JTKS4KKyAqLworI2RlZmluZSBIQVNIX1BUUl9BU19TVFJJTkco cHRyLCBzaXplKSBcCisJKHBnX2V4cHJfaGFzX3R5cGVfcCgocHRyKSwgY2hhcigqKVtzaXplXSkg fHwgcGdfZXhwcl9oYXNfdHlwZV9wKChwdHIpLCBOYW1lRGF0YSAqKSkKKyNkZWZpbmUgSEFTSF9L RVlfQVNfU1RSSU5HKGVudHJ5dHlwZSwga2V5bWVtYmVyKSBcCisJSEFTSF9QVFJfQVNfU1RSSU5H KCYoKGVudHJ5dHlwZSAqKTApLT5rZXltZW1iZXIsIFwKKwkJCQkJICAgc2l6ZW9mKCgoZW50cnl0 eXBlICopMCktPmtleW1lbWJlcikpCisjZGVmaW5lIEhBU0hfVFlQRV9BU19TVFJJTkcodHlwZSkg XAorCUhBU0hfUFRSX0FTX1NUUklORyhwZ19udWxscHRyX29mKHR5cGUpLCBzaXplb2YodHlwZSkp CisKKy8qCisgKiBDcmVhdGUgYSBoYXNoIHRhYmxlIHdpdGggbWluaW1hbCBib2lsZXJwbGF0ZS4K KyAqCisgKiBUaGlzIGlzIHRoZSBzaW1wbGVzdCB3YXkgdG8gY3JlYXRlIGEgaGFzaCB0YWJsZS4g SXQ6CisgKiAtIERlcml2ZXMga2V5c2l6ZSBmcm9tIHRoZSBrZXltZW1iZXIncyBhY3R1YWwgdHlw ZQorICogLSBEZXJpdmVzIGVudHJ5c2l6ZSBmcm9tIHRoZSBlbnRyeXR5cGUKKyAqIC0gQXV0b21h dGljYWxseSBjaG9vc2VzIEhBU0hfU1RSSU5HUyBvciBIQVNIX0JMT0JTIGJhc2VkIG9uIGtleSB0 eXBlIChjaGFyIGFycmF5cyBhbmQgTmFtZURhdGEgYXJlIHRyZWF0ZWQgYXMgc3RyaW5ncykKKyAq IC0gVXNlcyBDdXJyZW50TWVtb3J5Q29udGV4dCAobm90IFRvcE1lbW9yeUNvbnRleHQpCisgKiAt IFZhbGlkYXRlcyB0aGF0IGtleW1lbWJlciBpcyBhdCBvZmZzZXQgMAorICoKKyAqIFVzYWdlOgor ICogICB0eXBlZGVmIHN0cnVjdCB7IE9pZCBvaWQ7IGNoYXIgKmRhdGE7IH0gTXlFbnRyeTsKKyAq ICAgSFRBQiAqaCA9IGhhc2hfbWFrZShNeUVudHJ5LCBvaWQsICJteSB0YWJsZSIsIDY0KTsKKyAq LworI2RlZmluZSBoYXNoX21ha2UoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVt KSBcCisJaGFzaF9tYWtlX2N4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFibmFtZSwgbmVsZW0s IEN1cnJlbnRNZW1vcnlDb250ZXh0KQorCisvKgorICogTGlrZSBoYXNoX21ha2UsIGJ1dCBhbGxv d3Mgc3BlY2lmeWluZyBhIG1lbW9yeSBjb250ZXh0LgorICovCisjZGVmaW5lIGhhc2hfbWFrZV9j eHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBtY3h0KSBcCisJaGFzaF9t YWtlX2V4dF9jeHQoZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBOVUxMLCBt Y3h0KQorCisvKgorICogSGFzaCB0YWJsZSB3aXRoIGN1c3RvbSBoYXNoIGFuZC9vciBtYXRjaCBm dW5jdGlvbnMuCisgKgorICogTGlrZSBoYXNoX21ha2UsIGJ1dCBhY2NlcHRzIGN1c3RvbSBoYXNo IGFuZCBtYXRjaCBmdW5jdGlvbiBwb2ludGVycy4KKyAqIFBhc3MgTlVMTCBmb3IgaGFzaGZuIHRv IHVzZSB0aGUgZGVmYXVsdCBoYXNoIChiYXNlZCBvbiBrZXkgdHlwZSksCisgKiBvciBOVUxMIGZv ciBtYXRjaGZuIHRvIHVzZSB0aGUgZGVmYXVsdCBtZW1jbXAtYmFzZWQgY29tcGFyaXNvbi4KKyAq LworI2RlZmluZSBoYXNoX21ha2VfZm4oZW50cnl0eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5l bGVtLCBoYXNoZm4sIG1hdGNoZm4pIFwKKwloYXNoX21ha2VfZm5fY3h0KGVudHJ5dHlwZSwga2V5 bWVtYmVyLCB0YWJuYW1lLCBuZWxlbSwgaGFzaGZuLCBtYXRjaGZuLCBcCisJCQkJCSBDdXJyZW50 TWVtb3J5Q29udGV4dCkKKyNkZWZpbmUgaGFzaF9tYWtlX2ZuX2N4dChlbnRyeXR5cGUsIGtleW1l bWJlciwgdGFibmFtZSwgbmVsZW0sIGhhc2hmbiwgbWF0Y2hmbiwgbWN4dCkgXAorCShTdGF0aWNB c3NlcnRFeHByKG9mZnNldG9mKGVudHJ5dHlwZSwga2V5bWVtYmVyKSA9PSAwLCBcCisJCQkJCSAg I2tleW1lbWJlciAiIG11c3QgYmUgZmlyc3QgbWVtYmVyIGluICIgI2VudHJ5dHlwZSksIFwKKwkg aGFzaF9tYWtlX2ZuX2ltcGwoKHRhYm5hbWUpLCAobmVsZW0pLCBcCisJCQkJCSAgIHNpemVvZigo KGVudHJ5dHlwZSAqKTApLT5rZXltZW1iZXIpLCBcCisJCQkJCSAgIHNpemVvZihlbnRyeXR5cGUp LCBcCisJCQkJCSAgIEhBU0hfS0VZX0FTX1NUUklORyhlbnRyeXR5cGUsIGtleW1lbWJlciksIFwK KwkJCQkJICAgKGhhc2hmbiksIChtYXRjaGZuKSwgKG1jeHQpKSkKKworLyoKKyAqIEhhc2ggdGFi bGUgd2l0aCBleHRlbmRlZCBvcHRpb25zIHZpYSBIQVNIT1BUUyBzdHJ1Y3QuCisgKgorICogTGlr ZSBoYXNoX21ha2UsIGJ1dCBhY2NlcHRzIGFkZGl0aW9uYWwgb3B0aW9ucyB2aWEgSEFTSE9QVFMg c3RydWN0IHBvaW50ZXIuCisgKiBQYXNzIE5VTEwgZm9yIG9wdHMgdG8gdXNlIGFsbCBkZWZhdWx0 cy4KKyAqCisgKiBFeGFtcGxlIHVzYWdlOgorICogICBIQVNIT1BUUyBvcHRzID0gezB9OworICog ICBvcHRzLmhhc2ggPSBteV9oYXNoX2Z1bmM7CisgKiAgIG9wdHMubnVtX3BhcnRpdGlvbnMgPSAx NjsKKyAqICAgSFRBQiAqaCA9IGhhc2hfbWFrZV9leHQoTXlFbnRyeSwga2V5LCAibXkgdGFibGUi LCA2NCwgJm9wdHMpOworICovCisjZGVmaW5lIGhhc2hfbWFrZV9leHQoZW50cnl0eXBlLCBrZXlt ZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBvcHRzKSBcCisJaGFzaF9tYWtlX2V4dF9jeHQoZW50cnl0 eXBlLCBrZXltZW1iZXIsIHRhYm5hbWUsIG5lbGVtLCBvcHRzLCBDdXJyZW50TWVtb3J5Q29udGV4 dCkKKworI2RlZmluZSBoYXNoX21ha2VfZXh0X2N4dChlbnRyeXR5cGUsIGtleW1lbWJlciwgdGFi bmFtZSwgbmVsZW0sIG9wdHMsIG1jeHQpIFwKKwkoU3RhdGljQXNzZXJ0RXhwcihvZmZzZXRvZihl bnRyeXR5cGUsIGtleW1lbWJlcikgPT0gMCwgXAorCQkJCQkJICNrZXltZW1iZXIgIiBtdXN0IGJl IGZpcnN0IG1lbWJlciBpbiAiICNlbnRyeXR5cGUpLCBcCisJaGFzaF9tYWtlX2ltcGwoIFwKKwkJ KHRhYm5hbWUpLCAobmVsZW0pLCBcCisJCXNpemVvZigoKGVudHJ5dHlwZSAqKTApLT5rZXltZW1i ZXIpLCBcCisJCXNpemVvZihlbnRyeXR5cGUpLCBcCisJCUhBU0hfS0VZX0FTX1NUUklORyhlbnRy eXR5cGUsIGtleW1lbWJlciksIFwKKwkJKG9wdHMpLCBcCisJCShtY3h0KSkpCisKKworLyoKKyAq IENyZWF0ZSBhIGhhc2ggc2V0IHdoZXJlIHRoZSBlbnRpcmUgZW50cnkgaXMgdGhlIGtleS4gVGhp cyBpcworICogbGlrZSBoYXNoX21ha2UsIGJ1dCB3aGVyZSB0aGUga2V5IGlzIGFsc28gdGhlIGVu dHJ5LgorICovCisjZGVmaW5lIGhhc2hzZXRfbWFrZShlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVt KSBcCisJaGFzaHNldF9tYWtlX2N4dChlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBDdXJyZW50 TWVtb3J5Q29udGV4dCkKKyNkZWZpbmUgaGFzaHNldF9tYWtlX2N4dChlbnRyeXR5cGUsIHRhYm5h bWUsIG5lbGVtLCBtY3h0KSBcCisJaGFzaHNldF9tYWtlX2V4dF9jeHQoZW50cnl0eXBlLCB0YWJu YW1lLCBuZWxlbSwgTlVMTCwgbWN4dCkKKyNkZWZpbmUgaGFzaHNldF9tYWtlX2ZuKGVudHJ5dHlw ZSwgdGFibmFtZSwgbmVsZW0sIGhhc2hmbiwgbWF0Y2hmbikgXAorCWhhc2hzZXRfbWFrZV9mbl9j eHQoZW50cnl0eXBlLCB0YWJuYW1lLCBuZWxlbSwgaGFzaGZuLCBtYXRjaGZuLCBcCisJCQkJCQkJ Q3VycmVudE1lbW9yeUNvbnRleHQpCisjZGVmaW5lIGhhc2hzZXRfbWFrZV9mbl9jeHQoZW50cnl0 eXBlLCB0YWJuYW1lLCBuZWxlbSwgaGFzaGZuLCBtYXRjaGZuLCBtY3h0KSBcCisJaGFzaF9tYWtl X2ZuX2ltcGwoKHRhYm5hbWUpLCAobmVsZW0pLCBzaXplb2YoZW50cnl0eXBlKSwgc2l6ZW9mKGVu dHJ5dHlwZSksIFwKKwkJCQkJCSBIQVNIX1RZUEVfQVNfU1RSSU5HKGVudHJ5dHlwZSksIChoYXNo Zm4pLCAobWF0Y2hmbiksIFwKKwkJCQkJCSBtY3h0KQorI2RlZmluZSBoYXNoc2V0X21ha2VfZXh0 KGVudHJ5dHlwZSwgdGFibmFtZSwgbmVsZW0sIG9wdHMpIFwKKwloYXNoc2V0X21ha2VfZXh0X2N4 dChlbnRyeXR5cGUsIHRhYm5hbWUsIG5lbGVtLCBvcHRzLCBcCisJCQkJCQkJQ3VycmVudE1lbW9y eUNvbnRleHQpCisjZGVmaW5lIGhhc2hzZXRfbWFrZV9leHRfY3h0KGVudHJ5dHlwZSwgdGFibmFt ZSwgbmVsZW0sIG9wdHMsIG1jeHQpIFwKKwloYXNoX21ha2VfaW1wbCgodGFibmFtZSksIChuZWxl bSksIHNpemVvZihlbnRyeXR5cGUpLCBzaXplb2YoZW50cnl0eXBlKSwgXAorCQkJCSAgIEhBU0hf VFlQRV9BU19TVFJJTkcoZW50cnl0eXBlKSwgb3B0cywgKG1jeHQpKQorCisvKgorICogSW1wbGVt ZW50YXRpb24gZnVuY3Rpb24gZm9yIGhhc2hfbWFrZSBtYWNyb3MuIE5vdCBtZWFudCB0byBiZSBj YWxsZWQKKyAqIGRpcmVjdGx5LgorICoKKyAqIElmIHN0cmluZ19rZXkgaXMgdHJ1ZSwgdGhlIGtl eSBpcyB0cmVhdGVkIGFzIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4KKyAqIFBhc3MgTlVMTCBm b3Igb3B0cyB0byB1c2UgYWxsIGRlZmF1bHRzLgorICovCitleHRlcm4gSFRBQiAqaGFzaF9tYWtl X2ltcGwoY29uc3QgY2hhciAqdGFibmFtZSwgaW50NjQgbmVsZW0sCisJCQkJCQkJU2l6ZSBrZXlz aXplLCBTaXplIGVudHJ5c2l6ZSwKKwkJCQkJCQlib29sIHN0cmluZ19rZXksCisJCQkJCQkJY29u c3QgSEFTSE9QVFMgKm9wdHMsCisJCQkJCQkJTWVtb3J5Q29udGV4dCBtY3h0KTsKKworLyoKKyAq IEltcGxlbWVudGF0aW9uIGZ1bmN0aW9uIGZvciBoYXNoX21ha2VfZm4gbWFjcm9zLgorICovCitl eHRlcm4gSFRBQiAqaGFzaF9tYWtlX2ZuX2ltcGwoY29uc3QgY2hhciAqdGFibmFtZSwgaW50NjQg bmVsZW0sCisJCQkJCQkJICAgU2l6ZSBrZXlzaXplLCBTaXplIGVudHJ5c2l6ZSwgYm9vbCBzdHJp bmdfa2V5LAorCQkJCQkJCSAgIEhhc2hWYWx1ZUZ1bmMgaGFzaGZuLCBIYXNoQ29tcGFyZUZ1bmMg bWF0Y2hmbiwKKwkJCQkJCQkgICBNZW1vcnlDb250ZXh0IG1jeHQpOworCiAvKgogICogSEFTSEVM RU1FTlQgaXMgdGhlIHByaXZhdGUgcGFydCBvZiBhIGhhc2h0YWJsZSBlbnRyeS4gIFRoZSBjYWxs ZXIncyBkYXRhCiAgKiBmb2xsb3dzIHRoZSBIQVNIRUxFTUVOVCBzdHJ1Y3R1cmUgKG9uIGEgTUFY QUxJR04nZCBib3VuZGFyeSkuICBUaGUgaGFzaCBrZXkKQEAgLTU3LDExICsyMDQsMTEgQEAgdHlw ZWRlZiBzdHJ1Y3QgSEFTSEVMRU1FTlQKIC8qIEhhc2ggdGFibGUgaGVhZGVyIHN0cnVjdCBpcyBh biBvcGFxdWUgdHlwZSBrbm93biBvbmx5IHdpdGhpbiBkeW5haGFzaC5jICovCiB0eXBlZGVmIHN0 cnVjdCBIQVNISERSIEhBU0hIRFI7CiAKLS8qIEhhc2ggdGFibGUgY29udHJvbCBzdHJ1Y3QgaXMg YW4gb3BhcXVlIHR5cGUga25vd24gb25seSB3aXRoaW4gZHluYWhhc2guYyAqLwotdHlwZWRlZiBz dHJ1Y3QgSFRBQiBIVEFCOwotCi0vKiBQYXJhbWV0ZXIgZGF0YSBzdHJ1Y3R1cmUgZm9yIGhhc2hf Y3JlYXRlICovCi0vKiBPbmx5IHRob3NlIGZpZWxkcyBpbmRpY2F0ZWQgYnkgaGFzaF9mbGFncyBu ZWVkIGJlIHNldCAqLworLyoKKyAqIFBhcmFtZXRlciBkYXRhIHN0cnVjdHVyZSBmb3IgaGFzaF9j cmVhdGUgKHdoaWNoIGlzIHRoZSBsb3ctbGV2ZWwgbWV0aG9kIG9mCisgKiBpbml0aWFsaXppbmcg aGFzaCB0YWJsZXMsIGhhc2hfbWFrZSBtYWNyb3MgYXJlIHByZWZlcnJlZCkKKyAqIE9ubHkgdGhv c2UgZmllbGRzIGluZGljYXRlZCBieSBoYXNoX2ZsYWdzIG5lZWQgYmUgc2V0CisgKi8KIHR5cGVk ZWYgc3RydWN0IEhBU0hDVEwKIHsKIAkvKiBVc2VkIGlmIEhBU0hfUEFSVElUSU9OIGZsYWcgaXMg c2V0OiAqLwpAQCAtMTMxLDYgKzI3OCw5IEBAIHR5cGVkZWYgc3RydWN0CiAgKi8KIGV4dGVybiBI VEFCICpoYXNoX2NyZWF0ZShjb25zdCBjaGFyICp0YWJuYW1lLCBpbnQ2NCBuZWxlbSwKIAkJCQkJ CSBjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxhZ3MpOworZXh0ZXJuIHZvaWQgaGFzaF9vcHRz X2luaXQoSEFTSENUTCAqY3RsLCBpbnQgKmZsYWdzLAorCQkJCQkJICAgU2l6ZSBrZXlzaXplLCBT aXplIGVudHJ5c2l6ZSwgYm9vbCBzdHJpbmdfa2V5LAorCQkJCQkJICAgY29uc3QgSEFTSE9QVFMg Km9wdHMpOwogZXh0ZXJuIHZvaWQgaGFzaF9kZXN0cm95KEhUQUIgKmhhc2hwKTsKIGV4dGVybiB2 b2lkIGhhc2hfc3RhdHMoY29uc3QgY2hhciAqY2FsbGVyLCBIVEFCICpoYXNocCk7CiBleHRlcm4g dm9pZCAqaGFzaF9zZWFyY2goSFRBQiAqaGFzaHAsIGNvbnN0IHZvaWQgKmtleVB0ciwgSEFTSEFD VElPTiBhY3Rpb24sCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDZlMmVkMGM4ODI1Li43 MzYwMTkxMDY0MiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK KysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTExNDUsNiArMTE0NSw3 IEBAIEhBU0hCVUNLRVQKIEhBU0hDVEwKIEhBU0hFTEVNRU5UCiBIQVNISERSCitIQVNIT1BUUwog SEFTSFNFR01FTlQKIEhBU0hfU0VRX1NUQVRVUwogSEUKCmJhc2UtY29tbWl0OiAzMTI4MGQ5NmE2 NDg1MGY1YTlhOTI0MDg4ODkwYWI0M2EyOTA1MjM3Ci0tIAoyLjUyLjAKCg== --4a64335236636428890df52b41be4626d0df87532bd999859fd0fd98123d Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0002-Use-hash_make-macros-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0002-Use-hash_make-macros-throughout-the-codebase.patch RnJvbSAyNmZhZjFkNWFiMTFhMDc4MmQ1YzZjOGY0OGY5NDE1NzAxNTk5NzcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6MzY6MTkgKzAxMDAKU3ViamVjdDogW1BBVENIIHYz 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 X3JlZ2V4cC5jCmluZGV4IDFhNzY3OTRjNDIyLi5kZjdkM2I3MGQwNCAxMDA2NDQKLS0tIGEvY29u dHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMKKysrIGIvY29udHJpYi9wZ190cmdtL3RyZ21fcmVn ZXhwLmMKQEAgLTg5Myw3ICs4OTMsNiBAQCBjb252ZXJ0UGdXY2hhcihwZ193Y2hhciBjLCB0cmdt X21iX2NoYXIgKnJlc3VsdCkKIHN0YXRpYyB2b2lkCiB0cmFuc2Zvcm1HcmFwaChUcmdtTkZBICp0 cmdtTkZBKQogewotCUhBU0hDVEwJCWhhc2hDdGw7CiAJVHJnbVN0YXRlS2V5IGluaXRrZXk7CiAJ VHJnbVN0YXRlICAqaW5pdHN0YXRlOwogCUxpc3RDZWxsICAgKmxjOwpAQCAtOTA1LDEzICs5MDQs 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 b250cmliL3RhYmxlZnVuYy90YWJsZWZ1bmMuYwppbmRleCBjNDBmZDM2ZGM5Ni4uNTE5ODU1MTg5 Y2YgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGFibGVmdW5jL3RhYmxlZnVuYy5jCisrKyBiL2NvbnRy aWIvdGFibGVmdW5jL3RhYmxlZnVuYy5jCkBAIC03MDUsMjQgKzcwNSwxNyBAQCBzdGF0aWMgSFRB QiAqCiBsb2FkX2NhdGVnb3JpZXNfaGFzaChjaGFyICpjYXRzX3NxbCwgTWVtb3J5Q29udGV4dCBw ZXJfcXVlcnlfY3R4KQogewogCUhUQUIJICAgKmNyb3NzdGFiX2hhc2g7Ci0JSEFTSENUTAkJY3Rs OwogCWludAkJCXJldDsKIAl1aW50NjQJCXByb2M7CiAJTWVtb3J5Q29udGV4dCBTUEljb250ZXh0 OwogCi0JLyogaW5pdGlhbGl6ZSB0aGUgY2F0ZWdvcnkgaGFzaCB0YWJsZSAqLwotCWN0bC5rZXlz aXplID0gTUFYX0NBVE5BTUVfTEVOOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoY3Jvc3N0YWJf SGFzaEVudCk7Ci0JY3RsLmhjeHQgPSBwZXJfcXVlcnlfY3R4OwotCiAJLyoKLQkgKiB1c2UgSU5J VF9DQVRTLCBkZWZpbmVkIGFib3ZlIGFzIGEgZ3Vlc3Mgb2YgaG93IG1hbnkgaGFzaCB0YWJsZSBl bnRyaWVzCi0JICogdG8gY3JlYXRlLCBpbml0aWFsbHkKKwkgKiBJbml0aWFsaXplIHRoZSBjYXRl Z29yeSBoYXNoIHRhYmxlLiBVc2UgSU5JVF9DQVRTLCBkZWZpbmVkIGFib3ZlIGFzIGEKKwkgKiBn dWVzcyBvZiBob3cgbWFueSBoYXNoIHRhYmxlIGVudHJpZXMgdG8gY3JlYXRlLCBpbml0aWFsbHku CiAJICovCi0JY3Jvc3N0YWJfaGFzaCA9IGhhc2hfY3JlYXRlKCJjcm9zc3RhYiBoYXNoIiwKLQkJ CQkJCQkJSU5JVF9DQVRTLAotCQkJCQkJCQkmY3RsLAotCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNI X1NUUklOR1MgfCBIQVNIX0NPTlRFWFQpOworCWNyb3NzdGFiX2hhc2ggPSBoYXNoX21ha2VfY3h0 KGNyb3NzdGFiX0hhc2hFbnQsIGludGVybmFsX2NhdG5hbWUsCisJCQkJCQkJCSAgImNyb3NzdGFi IGhhc2giLCBJTklUX0NBVFMsCisJCQkJCQkJCSAgcGVyX3F1ZXJ5X2N0eCk7CiAKIAkvKiBDb25u ZWN0IHRvIFNQSSBtYW5hZ2VyICovCiAJU1BJX2Nvbm5lY3QoKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9jb21tb24vaGVhcHR1cGxlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29t bW9uL2hlYXB0dXBsZS5jCmluZGV4IDE5NjdiMDQ3MDIwLi45ODc5M2EzZjJlYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9oZWFwdHVwbGUuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvY29tbW9uL2hlYXB0dXBsZS5jCkBAIC0xMjUsMTggKzEyNSw5IEBAIG1pc3Npbmdf bWF0Y2goY29uc3Qgdm9pZCAqa2V5MSwgY29uc3Qgdm9pZCAqa2V5MiwgU2l6ZSBrZXlzaXplKQog c3RhdGljIHZvaWQKIGluaXRfbWlzc2luZ19jYWNoZSh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hf Y3RsOwotCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihtaXNzaW5nX2NhY2hlX2tleSk7Ci0J aGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKG1pc3NpbmdfY2FjaGVfa2V5KTsKLQloYXNoX2N0 bC5oY3h0ID0gVG9wTWVtb3J5Q29udGV4dDsKLQloYXNoX2N0bC5oYXNoID0gbWlzc2luZ19oYXNo OwotCWhhc2hfY3RsLm1hdGNoID0gbWlzc2luZ19tYXRjaDsKIAltaXNzaW5nX2NhY2hlID0KLQkJ aGFzaF9jcmVhdGUoIk1pc3NpbmcgVmFsdWVzIENhY2hlIiwKLQkJCQkJMzIsCi0JCQkJCSZoYXNo X2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9DT05URVhUIHwgSEFTSF9GVU5DVElPTiB8IEhB U0hfQ09NUEFSRSk7CisJCWhhc2hzZXRfbWFrZV9mbl9jeHQobWlzc2luZ19jYWNoZV9rZXksICJN aXNzaW5nIFZhbHVlcyBDYWNoZSIsIDMyLAorCQkJCQkJCW1pc3NpbmdfaGFzaCwgbWlzc2luZ19t YXRjaCwgVG9wTWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkLmMKaW5kZXggYmUwZmQ1Yjc1M2QuLjYyOTU1OGQ5MDViIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwpAQCAtMTUxNSwxNSArMTUxNSw4IEBAIHR5cGVkZWYgc3Ry dWN0CiBzdGF0aWMgdm9pZAogZ2lzdEluaXRQYXJlbnRNYXAoR0lTVEJ1aWxkU3RhdGUgKmJ1aWxk c3RhdGUpCiB7Ci0JSEFTSENUTAkJaGFzaEN0bDsKLQotCWhhc2hDdGwua2V5c2l6ZSA9IHNpemVv ZihCbG9ja051bWJlcik7Ci0JaGFzaEN0bC5lbnRyeXNpemUgPSBzaXplb2YoUGFyZW50TWFwRW50 cnkpOwotCWhhc2hDdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCWJ1aWxkc3RhdGUt PnBhcmVudE1hcCA9IGhhc2hfY3JlYXRlKCJnaXN0YnVpbGQgcGFyZW50IG1hcCIsCi0JCQkJCQkJ CQkJMTAyNCwKLQkJCQkJCQkJCQkmaGFzaEN0bCwKLQkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNI X0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwlidWlsZHN0YXRlLT5wYXJlbnRNYXAgPSBoYXNoX21h a2UoUGFyZW50TWFwRW50cnksIGNoaWxkYmxrbm8sCisJCQkJCQkJCQkgICJnaXN0YnVpbGQgcGFy ZW50IG1hcCIsIDEwMjQpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkYnVmZmVycy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdGJ1aWxkYnVmZmVycy5jCmluZGV4IDA3MDcyNTRkMThlLi5mYzM2YzkwZDMzMyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkYnVmZmVycy5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZGJ1ZmZlcnMuYwpAQCAtNDQsNyArNDQs NiBAQCBHSVNUQnVpbGRCdWZmZXJzICoKIGdpc3RJbml0QnVpbGRCdWZmZXJzKGludCBwYWdlc1Bl ckJ1ZmZlciwgaW50IGxldmVsU3RlcCwgaW50IG1heExldmVsKQogewogCUdJU1RCdWlsZEJ1ZmZl cnMgKmdmYmI7Ci0JSEFTSENUTAkJaGFzaEN0bDsKIAogCWdmYmIgPSBwYWxsb2Moc2l6ZW9mKEdJ U1RCdWlsZEJ1ZmZlcnMpKTsKIAlnZmJiLT5wYWdlc1BlckJ1ZmZlciA9IHBhZ2VzUGVyQnVmZmVy OwpAQCAtNzIsMTMgKzcxLDggQEAgZ2lzdEluaXRCdWlsZEJ1ZmZlcnMoaW50IHBhZ2VzUGVyQnVm ZmVyLCBpbnQgbGV2ZWxTdGVwLCBpbnQgbWF4TGV2ZWwpCiAJICogbm9kZUJ1ZmZlcnNUYWIgaGFz aCBpcyBhc3NvY2lhdGlvbiBiZXR3ZWVuIGluZGV4IGJsb2NrcyBhbmQgaXQncwogCSAqIGJ1ZmZl cnMuCiAJICovCi0JaGFzaEN0bC5rZXlzaXplID0gc2l6ZW9mKEJsb2NrTnVtYmVyKTsKLQloYXNo Q3RsLmVudHJ5c2l6ZSA9IHNpemVvZihHSVNUTm9kZUJ1ZmZlcik7Ci0JaGFzaEN0bC5oY3h0ID0g Q3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JZ2ZiYi0+bm9kZUJ1ZmZlcnNUYWIgPSBoYXNoX2NyZWF0 ZSgiZ2lzdGJ1aWxkYnVmZmVycyIsCi0JCQkJCQkJCQkgICAxMDI0LAotCQkJCQkJCQkJICAgJmhh c2hDdGwsCi0JCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhU KTsKKwlnZmJiLT5ub2RlQnVmZmVyc1RhYiA9IGhhc2hfbWFrZShHSVNUTm9kZUJ1ZmZlciwgbm9k ZUJsb2NrbnVtLAorCQkJCQkJCQkJICJnaXN0YnVpbGRidWZmZXJzIiwgMTAyNCk7CiAKIAlnZmJi LT5idWZmZXJFbXB0eWluZ1F1ZXVlID0gTklMOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGFzaC9oYXNocGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaHBhZ2Uu YwppbmRleCBiOGU1YmQwMDVlNS4uY2Y3MWZhOWNiNGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oYXNoL2hhc2hwYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFz aHBhZ2UuYwpAQCAtMTM1Niw3ICsxMzU2LDYgQEAgdm9pZAogX2hhc2hfZmluaXNoX3NwbGl0KFJl bGF0aW9uIHJlbCwgQnVmZmVyIG1ldGFidWYsIEJ1ZmZlciBvYnVmLCBCdWNrZXQgb2J1Y2tldCwK IAkJCQkgICB1aW50MzIgbWF4YnVja2V0LCB1aW50MzIgaGlnaG1hc2ssIHVpbnQzMiBsb3dtYXNr KQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwogCUhUQUIJICAgKnRpZGh0YWI7CiAJQnVmZmVyCQli dWNrZXRfbmJ1ZiA9IEludmFsaWRCdWZmZXI7CiAJQnVmZmVyCQluYnVmOwpAQCAtMTM2NywxNiAr MTM2Niw4IEBAIF9oYXNoX2ZpbmlzaF9zcGxpdChSZWxhdGlvbiByZWwsIEJ1ZmZlciBtZXRhYnVm LCBCdWZmZXIgb2J1ZiwgQnVja2V0IG9idWNrZXQsCiAJQnVja2V0CQluYnVja2V0OwogCWJvb2wJ CWZvdW5kOwogCi0JLyogSW5pdGlhbGl6ZSBoYXNoIHRhYmxlcyB1c2VkIHRvIHRyYWNrIFRJRHMg Ki8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKEl0ZW1Qb2ludGVyRGF0YSk7Ci0JaGFzaF9j dGwuZW50cnlzaXplID0gc2l6ZW9mKEl0ZW1Qb2ludGVyRGF0YSk7Ci0JaGFzaF9jdGwuaGN4dCA9 IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCi0JdGlkaHRhYiA9Ci0JCWhhc2hfY3JlYXRlKCJidWNr ZXQgY3RpZHMiLAotCQkJCQkyNTYsCQkvKiBhcmJpdHJhcnkgaW5pdGlhbCBzaXplICovCi0JCQkJ CSZoYXNoX2N0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7 CisJLyogSW5pdGlhbGl6ZSBoYXNoIHRhYmxlcyB1c2VkIHRvIHRyYWNrIFRJRHMgKHdpdGggYXJi aXRyYXJ5IGluaXRpYWwgc2l6ZSkgKi8KKwl0aWRodGFiID0gaGFzaHNldF9tYWtlKEl0ZW1Qb2lu dGVyRGF0YSwgImJ1Y2tldCBjdGlkcyIsIDI1Nik7CiAKIAlidWNrZXRfbmJsa25vID0gbmJsa25v ID0gX2hhc2hfZ2V0X25ld2Jsb2NrX2Zyb21fb2xkYnVja2V0KHJlbCwgb2J1Y2tldCk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVoZWFwLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jCmluZGV4IDY2YWI0OGYwZmUwLi5kYzJjNDY3 NDJmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jCkBAIC0yMzcsNyArMjM3 LDYgQEAgYmVnaW5faGVhcF9yZXdyaXRlKFJlbGF0aW9uIG9sZF9oZWFwLCBSZWxhdGlvbiBuZXdf aGVhcCwgVHJhbnNhY3Rpb25JZCBvbGRlc3RfeG0KIAlSZXdyaXRlU3RhdGUgc3RhdGU7CiAJTWVt b3J5Q29udGV4dCByd19jeHQ7CiAJTWVtb3J5Q29udGV4dCBvbGRfY3h0OwotCUhBU0hDVEwJCWhh c2hfY3RsOwogCiAJLyoKIAkgKiBUbyBlYXNlIGNsZWFudXAsIG1ha2UgYSBzZXBhcmF0ZSBjb250 ZXh0IHRoYXQgd2lsbCBjb250YWluIHRoZQpAQCAtMjYyLDI0ICsyNjEsMTkgQEAgYmVnaW5faGVh cF9yZXdyaXRlKFJlbGF0aW9uIG9sZF9oZWFwLCBSZWxhdGlvbiBuZXdfaGVhcCwgVHJhbnNhY3Rp b25JZCBvbGRlc3RfeG0KIAlzdGF0ZS0+cnNfY3h0ID0gcndfY3h0OwogCXN0YXRlLT5yc19idWxr c3RhdGUgPSBzbWdyX2J1bGtfc3RhcnRfcmVsKG5ld19oZWFwLCBNQUlOX0ZPUktOVU0pOwogCi0J LyogSW5pdGlhbGl6ZSBoYXNoIHRhYmxlcyB1c2VkIHRvIHRyYWNrIHVwZGF0ZSBjaGFpbnMgKi8K LQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKFRpZEhhc2hLZXkpOwotCWhhc2hfY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihVbnJlc29sdmVkVHVwRGF0YSk7Ci0JaGFzaF9jdGwuaGN4dCA9IHN0YXRl LT5yc19jeHQ7Ci0KKwkvKgorCSAqIEluaXRpYWxpemUgaGFzaCB0YWJsZXMgdXNlZCB0byB0cmFj ayB1cGRhdGUgY2hhaW5zICh3aXRoIGFyYml0cmFyeQorCSAqIGluaXRpYWwgc2l6ZXMpCisJICov CiAJc3RhdGUtPnJzX3VucmVzb2x2ZWRfdHVwcyA9Ci0JCWhhc2hfY3JlYXRlKCJSZXdyaXRlIC8g VW5yZXNvbHZlZCBjdGlkcyIsCi0JCQkJCTEyOCwJCS8qIGFyYml0cmFyeSBpbml0aWFsIHNpemUg Ki8KLQkJCQkJJmhhc2hfY3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9D T05URVhUKTsKLQotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihPbGRUb05ld01hcHBpbmdE YXRhKTsKKwkJaGFzaF9tYWtlX2N4dChVbnJlc29sdmVkVHVwRGF0YSwga2V5LAorCQkJCQkgICJS ZXdyaXRlIC8gVW5yZXNvbHZlZCBjdGlkcyIsIDEyOCwKKwkJCQkJICBzdGF0ZS0+cnNfY3h0KTsK IAogCXN0YXRlLT5yc19vbGRfbmV3X3RpZF9tYXAgPQotCQloYXNoX2NyZWF0ZSgiUmV3cml0ZSAv IE9sZCB0byBuZXcgdGlkIG1hcCIsCi0JCQkJCTEyOCwJCS8qIGFyYml0cmFyeSBpbml0aWFsIHNp emUgKi8KLQkJCQkJJmhhc2hfY3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFT SF9DT05URVhUKTsKKwkJaGFzaF9tYWtlX2N4dChPbGRUb05ld01hcHBpbmdEYXRhLCBrZXksCisJ CQkJCSAgIlJld3JpdGUgLyBPbGQgdG8gbmV3IHRpZCBtYXAiLCAxMjgsCisJCQkJCSAgc3RhdGUt PnJzX2N4dCk7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkX2N4dCk7CiAKQEAgLTc1Nyw3 ICs3NTEsNiBAQCByYXdfaGVhcF9pbnNlcnQoUmV3cml0ZVN0YXRlIHN0YXRlLCBIZWFwVHVwbGUg dHVwKQogc3RhdGljIHZvaWQKIGxvZ2ljYWxfYmVnaW5faGVhcF9yZXdyaXRlKFJld3JpdGVTdGF0 ZSBzdGF0ZSkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAlUcmFuc2FjdGlvbklkIGxvZ2ljYWxf eG1pbjsKIAogCS8qCkBAIC03ODgsMTUgKzc4MSwxMSBAQCBsb2dpY2FsX2JlZ2luX2hlYXBfcmV3 cml0ZShSZXdyaXRlU3RhdGUgc3RhdGUpCiAJc3RhdGUtPnJzX2JlZ2luX2xzbiA9IEdldFhMb2dJ bnNlcnRSZWNQdHIoKTsKIAlzdGF0ZS0+cnNfbnVtX3Jld3JpdGVfbWFwcGluZ3MgPSAwOwogCi0J aGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihUcmFuc2FjdGlvbklkKTsKLQloYXNoX2N0bC5lbnRy eXNpemUgPSBzaXplb2YoUmV3cml0ZU1hcHBpbmdGaWxlKTsKLQloYXNoX2N0bC5oY3h0ID0gc3Rh dGUtPnJzX2N4dDsKLQogCXN0YXRlLT5yc19sb2dpY2FsX21hcHBpbmdzID0KLQkJaGFzaF9jcmVh dGUoIkxvZ2ljYWwgcmV3cml0ZSBtYXBwaW5nIiwKLQkJCQkJMTI4LAkJLyogYXJiaXRyYXJ5IGlu aXRpYWwgc2l6ZSAqLwotCQkJCQkmaGFzaF9jdGwsCi0JCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxP QlMgfCBIQVNIX0NPTlRFWFQpOworCQloYXNoX21ha2VfY3h0KFJld3JpdGVNYXBwaW5nRmlsZSwg eGlkLAorCQkJCQkgICJMb2dpY2FsIHJld3JpdGUgbWFwcGluZyIsCisJCQkJCSAgMTI4LAkJLyog YXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSAqLworCQkJCQkgIHN0YXRlLT5yc19jeHQpOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIu YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dwcmVmZXRjaGVyLmMKaW5kZXggZWQz YWFjYWJjOTguLmY3OTBlZWE4N2ZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9ncHJlZmV0Y2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2dwcmVmZXRjaGVyLmMKQEAgLTM2MiwxNSArMzYyLDEzIEBAIFhMb2dQcmVmZXRjaGVyICoKIFhM b2dQcmVmZXRjaGVyQWxsb2NhdGUoWExvZ1JlYWRlclN0YXRlICpyZWFkZXIpCiB7CiAJWExvZ1By ZWZldGNoZXIgKnByZWZldGNoZXI7Ci0JSEFTSENUTAkJY3RsOwogCiAJcHJlZmV0Y2hlciA9IHBh bGxvYzAoc2l6ZW9mKFhMb2dQcmVmZXRjaGVyKSk7CiAJcHJlZmV0Y2hlci0+cmVhZGVyID0gcmVh ZGVyOwogCi0JY3RsLmtleXNpemUgPSBzaXplb2YoUmVsRmlsZUxvY2F0b3IpOwotCWN0bC5lbnRy eXNpemUgPSBzaXplb2YoWExvZ1ByZWZldGNoZXJGaWx0ZXIpOwotCXByZWZldGNoZXItPmZpbHRl cl90YWJsZSA9IGhhc2hfY3JlYXRlKCJYTG9nUHJlZmV0Y2hlckZpbHRlclRhYmxlIiwgMTAyNCwK LQkJCQkJCQkJCQkgICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlwcmVmZXRjaGVy LT5maWx0ZXJfdGFibGUgPSBoYXNoX21ha2VfY3h0KFhMb2dQcmVmZXRjaGVyRmlsdGVyLCBybG9j YXRvciwKKwkJCQkJCQkJCQkJICJYTG9nUHJlZmV0Y2hlckZpbHRlclRhYmxlIiwgMTAyNCwKKwkJ CQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCWRsaXN0X2luaXQoJnByZWZldGNoZXItPmZp bHRlcl9xdWV1ZSk7CiAKIAlTaGFyZWRTdGF0cy0+d2FsX2Rpc3RhbmNlID0gMDsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKaW5kZXggY2UyYTNlNDIxNDYuLjllMjQ3NTlmNWNj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYwpAQCAtMjcsNiArMjcsNyBA QAogI2luY2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNp bmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNp bmNsdWRlICJ1dGlscy9yZWwuaCIKIAogCkBAIC0xMzEsMTUgKzEzMiw5IEBAIGxvZ19pbnZhbGlk X3BhZ2UoUmVsRmlsZUxvY2F0b3IgbG9jYXRvciwgRm9ya051bWJlciBmb3Jrbm8sIEJsb2NrTnVt YmVyIGJsa25vLAogCWlmIChpbnZhbGlkX3BhZ2VfdGFiID09IE5VTEwpCiAJewogCQkvKiBjcmVh dGUgaGFzaCB0YWJsZSB3aGVuIGZpcnN0IG5lZWRlZCAqLwotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJ Y3RsLmtleXNpemUgPSBzaXplb2YoeGxfaW52YWxpZF9wYWdlX2tleSk7Ci0JCWN0bC5lbnRyeXNp emUgPSBzaXplb2YoeGxfaW52YWxpZF9wYWdlKTsKLQotCQlpbnZhbGlkX3BhZ2VfdGFiID0gaGFz aF9jcmVhdGUoIlhMT0cgaW52YWxpZC1wYWdlIHRhYmxlIiwKLQkJCQkJCQkJCSAgIDEwMCwKLQkJ CQkJCQkJCSAgICZjdGwsCi0JCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJ aW52YWxpZF9wYWdlX3RhYiA9IGhhc2hfbWFrZV9jeHQoeGxfaW52YWxpZF9wYWdlLCBrZXksCisJ CQkJCQkJCQkJICJYTE9HIGludmFsaWQtcGFnZSB0YWJsZSIsIDEwMCwKKwkJCQkJCQkJCQkgVG9w TWVtb3J5Q29udGV4dCk7CiAJfQogCiAJLyogd2UgY3VycmVudGx5IGFzc3VtZSB4bF9pbnZhbGlk X3BhZ2Vfa2V5IGNvbnRhaW5zIG5vIHBhZGRpbmcgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvcGdfZW51bS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVtLmMKaW5kZXgg ZGE5YzJhNDZjZmEuLjQ3ODdhNjFjN2QzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX2VudW0uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2VudW0uYwpAQCAtMjY3LDE1 ICsyNjcsOSBAQCBFbnVtVmFsdWVzRGVsZXRlKE9pZCBlbnVtVHlwZU9pZCkKIHN0YXRpYyB2b2lk CiBpbml0X3VuY29tbWl0dGVkX2VudW1fdHlwZXModm9pZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0 bDsKLQotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQloYXNoX2N0bC5lbnRyeXNp emUgPSBzaXplb2YoT2lkKTsKLQloYXNoX2N0bC5oY3h0ID0gVG9wVHJhbnNhY3Rpb25Db250ZXh0 OwotCXVuY29tbWl0dGVkX2VudW1fdHlwZXMgPSBoYXNoX2NyZWF0ZSgiVW5jb21taXR0ZWQgZW51 bSB0eXBlcyIsCi0JCQkJCQkJCQkJIDMyLAotCQkJCQkJCQkJCSAmaGFzaF9jdGwsCi0JCQkJCQkJ CQkJIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCXVuY29tbWl0dGVk X2VudW1fdHlwZXMgPSBoYXNoc2V0X21ha2VfY3h0KE9pZCwKKwkJCQkJCQkJCQkJICAiVW5jb21t aXR0ZWQgZW51bSB0eXBlcyIsIDMyLAorCQkJCQkJCQkJCQkgIFRvcFRyYW5zYWN0aW9uQ29udGV4 dCk7CiB9CiAKIC8qCkBAIC0yODQsMTUgKzI3OCw5IEBAIGluaXRfdW5jb21taXR0ZWRfZW51bV90 eXBlcyh2b2lkKQogc3RhdGljIHZvaWQKIGluaXRfdW5jb21taXR0ZWRfZW51bV92YWx1ZXModm9p ZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKLQotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2Yo T2lkKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoT2lkKTsKLQloYXNoX2N0bC5oY3h0 ID0gVG9wVHJhbnNhY3Rpb25Db250ZXh0OwotCXVuY29tbWl0dGVkX2VudW1fdmFsdWVzID0gaGFz aF9jcmVhdGUoIlVuY29tbWl0dGVkIGVudW0gdmFsdWVzIiwKLQkJCQkJCQkJCQkgIDMyLAotCQkJ CQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8 IEhBU0hfQ09OVEVYVCk7CisJdW5jb21taXR0ZWRfZW51bV92YWx1ZXMgPSBoYXNoc2V0X21ha2Vf Y3h0KE9pZCwKKwkJCQkJCQkJCQkJICAgIlVuY29tbWl0dGVkIGVudW0gdmFsdWVzIiwgMzIsCisJ CQkJCQkJCQkJCSAgIFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2luaGVyaXRzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX2luaGVyaXRzLmMKaW5kZXggOTI5YmI1M2I2MjAuLmM3OGFhNzI3ZjBiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2luaGVyaXRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19pbmhlcml0cy5jCkBAIC0yNTYsMTkgKzI1NiwxMiBAQCBmaW5kX2FsbF9pbmhlcml0 b3JzKE9pZCBwYXJlbnRyZWxJZCwgTE9DS01PREUgbG9ja21vZGUsIExpc3QgKipudW1wYXJlbnRz KQogewogCS8qIGhhc2ggdGFibGUgZm9yIE8oMSkgcmVsX29pZCAtPiByZWxfbnVtcGFyZW50cyBj ZWxsIGxvb2t1cCAqLwogCUhUQUIJICAgKnNlZW5fcmVsczsKLQlIQVNIQ1RMCQljdGw7CiAJTGlz dAkgICAqcmVsc19saXN0LAogCQkJICAgKnJlbF9udW1wYXJlbnRzOwogCUxpc3RDZWxsICAgKmw7 CiAKLQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2Yo U2VlblJlbHNFbnRyeSk7Ci0JY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQotCXNl ZW5fcmVscyA9IGhhc2hfY3JlYXRlKCJmaW5kX2FsbF9pbmhlcml0b3JzIHRlbXBvcmFyeSB0YWJs ZSIsCi0JCQkJCQkJMzIsIC8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8KLQkJCQkJCQkmY3Rs LAotCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCXNlZW5f cmVscyA9IGhhc2hfbWFrZShTZWVuUmVsc0VudHJ5LCByZWxfaWQsCisJCQkJCQkgICJmaW5kX2Fs bF9pbmhlcml0b3JzIHRlbXBvcmFyeSB0YWJsZSIsIDMyKTsKIAogCS8qCiAJICogV2UgYnVpbGQg YSBsaXN0IHN0YXJ0aW5nIHdpdGggdGhlIGdpdmVuIHJlbCBhbmQgYWRkaW5nIGFsbCBkaXJlY3Qg YW5kCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N0b3JhZ2UuYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3RvcmFnZS5jCmluZGV4IGM1OGU5NDE4YWMzLi4xZDEzYjRhMWYzOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zdG9yYWdlLmMKQEAgLTkwLDE1ICs5MCw5IEBAIEFkZFBlbmRpbmdTeW5jKGNvbnN0 IFJlbEZpbGVMb2NhdG9yICpybG9jYXRvcikKIAogCS8qIGNyZWF0ZSB0aGUgaGFzaCBpZiBub3Qg eWV0ICovCiAJaWYgKCFwZW5kaW5nU3luY0hhc2gpCi0JewotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJ Y3RsLmtleXNpemUgPSBzaXplb2YoUmVsRmlsZUxvY2F0b3IpOwotCQljdGwuZW50cnlzaXplID0g c2l6ZW9mKFBlbmRpbmdSZWxTeW5jKTsKLQkJY3RsLmhjeHQgPSBUb3BUcmFuc2FjdGlvbkNvbnRl eHQ7Ci0JCXBlbmRpbmdTeW5jSGFzaCA9IGhhc2hfY3JlYXRlKCJwZW5kaW5nIHN5bmMgaGFzaCIs IDE2LCAmY3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05U RVhUKTsKLQl9CisJCXBlbmRpbmdTeW5jSGFzaCA9IGhhc2hfbWFrZV9jeHQoUGVuZGluZ1JlbFN5 bmMsIHJsb2NhdG9yLAorCQkJCQkJCQkJCSJwZW5kaW5nIHN5bmMgaGFzaCIsIDE2LAorCQkJCQkJ CQkJCVRvcFRyYW5zYWN0aW9uQ29udGV4dCk7CiAKIAlwZW5kaW5nID0gaGFzaF9zZWFyY2gocGVu ZGluZ1N5bmNIYXNoLCBybG9jYXRvciwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKIAlBc3NlcnQoIWZv dW5kKTsKQEAgLTYwMCw3ICs1OTQsNiBAQCB2b2lkCiBTZXJpYWxpemVQZW5kaW5nU3luY3MoU2l6 ZSBtYXhTaXplLCBjaGFyICpzdGFydEFkZHJlc3MpCiB7CiAJSFRBQgkgICAqdG1waGFzaDsKLQlI QVNIQ1RMCQljdGw7CiAJSEFTSF9TRVFfU1RBVFVTIHNjYW47CiAJUGVuZGluZ1JlbFN5bmMgKnN5 bmM7CiAJUGVuZGluZ1JlbERlbGV0ZSAqZGVsZXRlOwpAQCAtNjExLDEyICs2MDQsOCBAQCBTZXJp YWxpemVQZW5kaW5nU3luY3MoU2l6ZSBtYXhTaXplLCBjaGFyICpzdGFydEFkZHJlc3MpCiAJCWdv dG8gdGVybWluYXRlOwogCiAJLyogQ3JlYXRlIHRlbXBvcmFyeSBoYXNoIHRvIGNvbGxlY3QgYWN0 aXZlIHJlbGZpbGVsb2NhdG9ycyAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKFJlbEZpbGVMb2Nh dG9yKTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKTsKLQljdGwuaGN4 dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCXRtcGhhc2ggPSBoYXNoX2NyZWF0ZSgidG1wIHJl bGZpbGVsb2NhdG9ycyIsCi0JCQkJCQkgIGhhc2hfZ2V0X251bV9lbnRyaWVzKHBlbmRpbmdTeW5j SGFzaCksICZjdGwsCi0JCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRF WFQpOworCXRtcGhhc2ggPSBoYXNoc2V0X21ha2UoUmVsRmlsZUxvY2F0b3IsICJ0bXAgcmVsZmls ZWxvY2F0b3JzIiwKKwkJCQkJCSAgIGhhc2hfZ2V0X251bV9lbnRyaWVzKHBlbmRpbmdTeW5jSGFz aCkpOwogCiAJLyogY29sbGVjdCBhbGwgcmxvY2F0b3IgZnJvbSBwZW5kaW5nIHN5bmNzICovCiAJ aGFzaF9zZXFfaW5pdCgmc2NhbiwgcGVuZGluZ1N5bmNIYXNoKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCmlu ZGV4IGViODY0MDJjYWU0Li45YTdjOGQxZmI5NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvYXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCkBAIC0yNDE0 LDIwICsyNDE0LDE0IEBAIEFkZEV2ZW50VG9QZW5kaW5nTm90aWZpZXMoTm90aWZpY2F0aW9uICpu KQogCWlmIChsaXN0X2xlbmd0aChwZW5kaW5nTm90aWZpZXMtPmV2ZW50cykgPj0gTUlOX0hBU0hB QkxFX05PVElGSUVTICYmCiAJCXBlbmRpbmdOb3RpZmllcy0+aGFzaHRhYiA9PSBOVUxMKQogCXsK LQkJSEFTSENUTAkJaGFzaF9jdGw7CiAJCUxpc3RDZWxsICAgKmw7CiAKIAkJLyogQ3JlYXRlIHRo ZSBoYXNoIHRhYmxlICovCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoTm90aWZpY2F0aW9u ICopOwotCQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2Yoc3RydWN0IE5vdGlmaWNhdGlvbkhh c2gpOwotCQloYXNoX2N0bC5oYXNoID0gbm90aWZpY2F0aW9uX2hhc2g7Ci0JCWhhc2hfY3RsLm1h dGNoID0gbm90aWZpY2F0aW9uX21hdGNoOwotCQloYXNoX2N0bC5oY3h0ID0gQ3VyVHJhbnNhY3Rp b25Db250ZXh0OwogCQlwZW5kaW5nTm90aWZpZXMtPmhhc2h0YWIgPQotCQkJaGFzaF9jcmVhdGUo IlBlbmRpbmcgTm90aWZpZXMiLAotCQkJCQkJMjU2TCwKLQkJCQkJCSZoYXNoX2N0bCwKLQkJCQkJ CUhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUgfCBIQVNIX0NPTlRFWFQp OworCQkJaGFzaF9tYWtlX2ZuX2N4dChzdHJ1Y3QgTm90aWZpY2F0aW9uSGFzaCwgZXZlbnQsCisJ CQkJCQkJICJQZW5kaW5nIE5vdGlmaWVzIiwgMjU2LAorCQkJCQkJCSBub3RpZmljYXRpb25faGFz aCwgbm90aWZpY2F0aW9uX21hdGNoLAorCQkJCQkJCSBDdXJUcmFuc2FjdGlvbkNvbnRleHQpOwog CiAJCS8qIEluc2VydCBhbGwgdGhlIGFscmVhZHktZXhpc3RpbmcgZXZlbnRzICovCiAJCWZvcmVh Y2gobCwgcGVuZGluZ05vdGlmaWVzLT5ldmVudHMpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXgg MzRiNjQxMGQ2YTIuLjAwMDJjNmRjOTkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC0zNzEs MTUgKzM3MSw5IEBAIEV2YWx1YXRlUGFyYW1zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUHJlcGFyZWRT dGF0ZW1lbnQgKnBzdG10LCBMaXN0ICpwYXJhbXMsCiBzdGF0aWMgdm9pZAogSW5pdFF1ZXJ5SGFz aFRhYmxlKHZvaWQpCiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQloYXNoX2N0bC5rZXlzaXpl ID0gTkFNRURBVEFMRU47Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFByZXBhcmVkU3Rh dGVtZW50KTsKLQotCXByZXBhcmVkX3F1ZXJpZXMgPSBoYXNoX2NyZWF0ZSgiUHJlcGFyZWQgUXVl cmllcyIsCi0JCQkJCQkJCSAgIDMyLAotCQkJCQkJCQkgICAmaGFzaF9jdGwsCi0JCQkJCQkJCSAg IEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJcHJlcGFyZWRfcXVlcmllcyA9IGhhc2hfbWFr ZV9jeHQoUHJlcGFyZWRTdGF0ZW1lbnQsIHN0bXRfbmFtZSwKKwkJCQkJCQkJCSAiUHJlcGFyZWQg UXVlcmllcyIsIDMyLAorCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogfQogCiAvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3NlcXVlbmNlLmMKaW5kZXggNTE1Njc5OTQxMjYuLjVmYmIzY2U5MDMwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3NlcXVlbmNlLmMKQEAgLTExMTMsMTMgKzExMTMsOSBAQCBsb2NrX2FuZF9vcGVuX3Nl cXVlbmNlKFNlcVRhYmxlIHNlcSkKIHN0YXRpYyB2b2lkCiBjcmVhdGVfc2VxX2hhc2h0YWJsZSh2 b2lkKQogewotCUhBU0hDVEwJCWN0bDsKLQotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0J Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihTZXFUYWJsZURhdGEpOwotCi0Jc2VxaGFzaHRhYiA9IGhh c2hfY3JlYXRlKCJTZXF1ZW5jZSB2YWx1ZXMiLCAxNiwgJmN0bCwKLQkJCQkJCQkgSEFTSF9FTEVN IHwgSEFTSF9CTE9CUyk7CisJc2VxaGFzaHRhYiA9IGhhc2hfbWFrZV9jeHQoU2VxVGFibGVEYXRh LCByZWxpZCwKKwkJCQkJCQkgICAiU2VxdWVuY2UgdmFsdWVzIiwgMTYsCisJCQkJCQkJICAgVG9w TWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDA3 ZTViOTU3ODJlLi43ZjBmYjI2Mzc3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTIx NTQsMTkgKzIxNTQsOSBAQCBFeGVjdXRlVHJ1bmNhdGVHdXRzKExpc3QgKmV4cGxpY2l0X3JlbHMs CiAKIAkJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlhbGl6ZSBoYXNodGFibGUgZm9yIGZv cmVpZ24gdGFibGVzICovCiAJCQlpZiAoIWZ0X2h0YWIpCi0JCQl7Ci0JCQkJSEFTSENUTAkJaGN0 bDsKLQotCQkJCW1lbXNldCgmaGN0bCwgMCwgc2l6ZW9mKEhBU0hDVEwpKTsKLQkJCQloY3RsLmtl eXNpemUgPSBzaXplb2YoT2lkKTsKLQkJCQloY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihGb3JlaWdu VHJ1bmNhdGVJbmZvKTsKLQkJCQloY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQot CQkJCWZ0X2h0YWIgPSBoYXNoX2NyZWF0ZSgiVFJVTkNBVEUgZm9yIEZvcmVpZ24gVGFibGVzIiwK LQkJCQkJCQkJCSAgMzIsCS8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8KLQkJCQkJCQkJCSAg JmhjdGwsCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQp OwotCQkJfQorCQkJCWZ0X2h0YWIgPSBoYXNoX21ha2UoRm9yZWlnblRydW5jYXRlSW5mbywgc2Vy dmVyaWQsCisJCQkJCQkJCQkiVFJVTkNBVEUgZm9yIEZvcmVpZ24gVGFibGVzIiwKKwkJCQkJCQkJ CTMyKTsJLyogc3RhcnQgc21hbGwgYW5kIGV4dGVuZCAqLwogCiAJCQkvKiBGaW5kIG9yIGNyZWF0 ZSBjYWNoZWQgZW50cnkgZm9yIHRoZSBmb3JlaWduIHRhYmxlICovCiAJCQlmdF9pbmZvID0gaGFz aF9zZWFyY2goZnRfaHRhYiwgJnNlcnZlcmlkLCBIQVNIX0VOVEVSLCAmZm91bmQpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCBlNDRmMTIyMzg4Ni4uNTM3OTAxYWQ1 YTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC01MTM0LDE1ICs1 MTM0LDkgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAjZW5kaWYKIAlpZiAobnJlbHMgPj0gTVRfTlJFTFNfSEFTSCkK IAl7Ci0JCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2Yo T2lkKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKE1UVGFyZ2V0UmVsTG9va3VwKTsK LQkJaGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwogCQltdHN0YXRlLT5tdF9y ZXN1bHRPaWRIYXNoID0KLQkJCWhhc2hfY3JlYXRlKCJNb2RpZnlUYWJsZSB0YXJnZXQgaGFzaCIs Ci0JCQkJCQlucmVscywgJmhhc2hfY3RsLAotCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8 IEhBU0hfQ09OVEVYVCk7CisJCQloYXNoX21ha2UoTVRUYXJnZXRSZWxMb29rdXAsIHJlbGF0aW9u T2lkLAorCQkJCQkgICJNb2RpZnlUYWJsZSB0YXJnZXQgaGFzaCIsIG5yZWxzKTsKIAkJZm9yIChp ID0gMDsgaSA8IG5yZWxzOyBpKyspCiAJCXsKIAkJCU9pZAkJCWhhc2hrZXk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9ub2Rlcy9leHRlbnNpYmxlLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9leHRl bnNpYmxlLmMKaW5kZXggM2VkZTFlZTBmNWQuLjFjMGUyYjIwY2QxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9ub2Rlcy9leHRlbnNpYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXh0ZW5z aWJsZS5jCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJub2Rlcy9leHRlbnNpYmxlLmgi CiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAKIHN0YXRpYyBIVEFCICpleHRlbnNpYmxlX25vZGVfbWV0aG9kcyA9IE5VTEw7CiBzdGF0aWMg SFRBQiAqY3VzdG9tX3NjYW5fbWV0aG9kcyA9IE5VTEw7CkBAIC00NSwxMyArNDYsOCBAQCBSZWdp c3RlckV4dGVuc2libGVOb2RlRW50cnkoSFRBQiAqKnBfaHRhYmxlLCBjb25zdCBjaGFyICpodGFi bGVfbGFiZWwsCiAKIAlpZiAoKnBfaHRhYmxlID09IE5VTEwpCiAJewotCQlIQVNIQ1RMCQljdGw7 Ci0KLQkJY3RsLmtleXNpemUgPSBFWFROT0RFTkFNRV9NQVhfTEVOOwotCQljdGwuZW50cnlzaXpl ID0gc2l6ZW9mKEV4dGVuc2libGVOb2RlRW50cnkpOwotCi0JCSpwX2h0YWJsZSA9IGhhc2hfY3Jl YXRlKGh0YWJsZV9sYWJlbCwgMTAwLCAmY3RsLAotCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX1NU UklOR1MpOworCQkqcF9odGFibGUgPSBoYXNoX21ha2VfY3h0KEV4dGVuc2libGVOb2RlRW50cnks IGV4dG5vZGVuYW1lLAorCQkJCQkJCQkgIGh0YWJsZV9sYWJlbCwgMTAwLCBUb3BNZW1vcnlDb250 ZXh0KTsKIAl9CiAKIAlpZiAoc3RybGVuKGV4dG5vZGVuYW1lKSA+PSBFWFROT0RFTkFNRV9NQVhf TEVOKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCmluZGV4IDA3ZjkyZmFjMjM5Li4z MjQzNTkzM2E5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNh dC5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwpAQCAtNjk0LDE5 ICs2OTQsMTAgQEAgZ2V0X3JlbGF0aW9uX25vdG51bGxhdHRzKFBsYW5uZXJJbmZvICpyb290LCBS ZWxhdGlvbiByZWxhdGlvbikKIAkvKiBjcmVhdGUgdGhlIGhhc2ggdGFibGUgaWYgaXQgaGFzbid0 IGJlZW4gY3JlYXRlZCB5ZXQgKi8KIAlpZiAocm9vdC0+Z2xvYi0+cmVsX25vdG51bGxhdHRzX2hh c2ggPT0gTlVMTCkKIAl7Ci0JCUhUQUIJICAgKmhhc2h0YWI7Ci0JCUhBU0hDVEwJCWhhc2hfY3Rs OwotCi0JCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQkJaGFzaF9jdGwuZW50cnlz aXplID0gc2l6ZW9mKE5vdG51bGxIYXNoRW50cnkpOwotCQloYXNoX2N0bC5oY3h0ID0gQ3VycmVu dE1lbW9yeUNvbnRleHQ7Ci0KLQkJaGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJSZWxhdGlvbiBOT1Qg TlVMTCBhdHRudW1zIiwKLQkJCQkJCQkgIDY0TCwJLyogYXJiaXRyYXJ5IGluaXRpYWwgc2l6ZSAq LwotCQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8 IEhBU0hfQ09OVEVYVCk7Ci0KLQkJcm9vdC0+Z2xvYi0+cmVsX25vdG51bGxhdHRzX2hhc2ggPSBo YXNodGFiOworCQlyb290LT5nbG9iLT5yZWxfbm90bnVsbGF0dHNfaGFzaCA9CisJCQloYXNoX21h a2UoTm90bnVsbEhhc2hFbnRyeSwgcmVsaWQsCisJCQkJCSAgIlJlbGF0aW9uIE5PVCBOVUxMIGF0 dG51bXMiLAorCQkJCQkgIDY0TCk7CQkvKiBhcmJpdHJhcnkgaW5pdGlhbCBzaXplICovCiAJfQog CiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jCmluZGV4IGFjMjg1NzNjZDBh Li40MzI5MWYxMjhmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJl ZHRlc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jCkBAIC0y MTE3LDEyICsyMTE3LDkgQEAgbG9va3VwX3Byb29mX2NhY2hlKE9pZCBwcmVkX29wLCBPaWQgY2xh dXNlX29wLCBib29sIHJlZnV0ZV9pdCkKIAlpZiAoT3ByUHJvb2ZDYWNoZUhhc2ggPT0gTlVMTCkK IAl7CiAJCS8qIEZpcnN0IHRpbWUgdGhyb3VnaDogaW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAq LwotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJY3RsLmtleXNpemUgPSBzaXplb2YoT3ByUHJvb2ZDYWNo ZUtleSk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoT3ByUHJvb2ZDYWNoZUVudHJ5KTsKLQkJ T3ByUHJvb2ZDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgiQnRyZWUgcHJvb2YgbG9va3VwIGNhY2hl IiwgMjU2LAotCQkJCQkJCQkJCSZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQlPcHJQ cm9vZkNhY2hlSGFzaCA9IGhhc2hfbWFrZV9jeHQoT3ByUHJvb2ZDYWNoZUVudHJ5LCBrZXksCisJ CQkJCQkJCQkJICAiQnRyZWUgcHJvb2YgbG9va3VwIGNhY2hlIiwgMjU2LAorCQkJCQkJCQkJCSAg VG9wTWVtb3J5Q29udGV4dCk7CiAKIAkJLyogQXJyYW5nZSB0byBmbHVzaCBjYWNoZSBvbiBwZ19h bW9wIGNoYW5nZXMgKi8KIAkJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soQU1PUE9QSUQs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKaW5kZXggMTE1OGJjMTk0YzMuLjNlZDYx ZmVmYjBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jCkBAIC02MDEsMTkgKzYw MSwxMiBAQCBzdGF0aWMgdm9pZAogYnVpbGRfam9pbl9yZWxfaGFzaChQbGFubmVySW5mbyAqcm9v dCkKIHsKIAlIVEFCCSAgICpoYXNodGFiOwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCUxpc3RDZWxs ICAgKmw7CiAKIAkvKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgKi8KLQloYXNoX2N0bC5rZXlzaXpl ID0gc2l6ZW9mKFJlbGlkcyk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKEpvaW5IYXNo RW50cnkpOwotCWhhc2hfY3RsLmhhc2ggPSBiaXRtYXBfaGFzaDsKLQloYXNoX2N0bC5tYXRjaCA9 IGJpdG1hcF9tYXRjaDsKLQloYXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0J aGFzaHRhYiA9IGhhc2hfY3JlYXRlKCJKb2luUmVsSGFzaFRhYmxlIiwKLQkJCQkJCSAgMjU2TCwK LQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwg SEFTSF9DT01QQVJFIHwgSEFTSF9DT05URVhUKTsKKwloYXNodGFiID0gaGFzaF9tYWtlX2ZuKEpv aW5IYXNoRW50cnksIGpvaW5fcmVsaWRzLAorCQkJCQkJICAgIkpvaW5SZWxIYXNoVGFibGUiLCAy NTYsCisJCQkJCQkgICBiaXRtYXBfaGFzaCwgYml0bWFwX21hdGNoKTsKIAogCS8qIEluc2VydCBh bGwgdGhlIGFscmVhZHktZXhpc3Rpbmcgam9pbnJlbHMgKi8KIAlmb3JlYWNoKGwsIHJvb3QtPmpv aW5fcmVsX2xpc3QpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5j IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYwppbmRleCA3YmQ3YTMzNmZkNi4uZjk1 ODg4NjVjZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYwpAQCAtMjcsNiArMjcsNyBAQAogI2lu Y2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKICNpbmNs dWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2lu Y2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKIApA QCAtMTAyOCwxMiArMTAyOSw5IEBAIGZpbmRfb3Blcl9jYWNoZV9lbnRyeShPcHJDYWNoZUtleSAq a2V5KQogCWlmIChPcHJDYWNoZUhhc2ggPT0gTlVMTCkKIAl7CiAJCS8qIEZpcnN0IHRpbWUgdGhy b3VnaDogaW5pdGlhbGl6ZSB0aGUgaGFzaCB0YWJsZSAqLwotCQlIQVNIQ1RMCQljdGw7Ci0KLQkJ Y3RsLmtleXNpemUgPSBzaXplb2YoT3ByQ2FjaGVLZXkpOwotCQljdGwuZW50cnlzaXplID0gc2l6 ZW9mKE9wckNhY2hlRW50cnkpOwotCQlPcHJDYWNoZUhhc2ggPSBoYXNoX2NyZWF0ZSgiT3BlcmF0 b3IgbG9va3VwIGNhY2hlIiwgMjU2LAotCQkJCQkJCQkgICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTKTsKKwkJT3ByQ2FjaGVIYXNoID0gaGFzaF9tYWtlX2N4dChPcHJDYWNoZUVudHJ5LCBr ZXksCisJCQkJCQkJCQkgIk9wZXJhdG9yIGxvb2t1cCBjYWNoZSIsIDI1NiwKKwkJCQkJCQkJCSBU b3BNZW1vcnlDb250ZXh0KTsKIAogCQkvKiBBcnJhbmdlIHRvIGZsdXNoIGNhY2hlIG9uIHBnX29w ZXJhdG9yIGFuZCBwZ19jYXN0IGNoYW5nZXMgKi8KIAkJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2Fs bGJhY2soT1BFUk5BTUVOU1AsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcv cGFydGRlc2MuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0ZGVzYy5jCmluZGV4IDMy OGI0ZDQ1MGU0Li5iM2ZiZDc4MTQ5NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9u aW5nL3BhcnRkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmMK QEAgLTQyNCwxNyArNDI0LDEyIEBAIENyZWF0ZVBhcnRpdGlvbkRpcmVjdG9yeShNZW1vcnlDb250 ZXh0IG1jeHQsIGJvb2wgb21pdF9kZXRhY2hlZCkKIHsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRl eHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8obWN4dCk7CiAJUGFydGl0aW9uRGlyZWN0b3J5IHBk aXI7Ci0JSEFTSENUTAkJY3RsOwogCiAJcGRpciA9IHBhbGxvYyhzaXplb2YoUGFydGl0aW9uRGly ZWN0b3J5RGF0YSkpOwogCXBkaXItPnBkaXJfbWN4dCA9IG1jeHQ7CiAKLQljdGwua2V5c2l6ZSA9 IHNpemVvZihPaWQpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUGFydGl0aW9uRGlyZWN0b3J5 RW50cnkpOwotCWN0bC5oY3h0ID0gbWN4dDsKLQotCXBkaXItPnBkaXJfaGFzaCA9IGhhc2hfY3Jl YXRlKCJwYXJ0aXRpb24gZGlyZWN0b3J5IiwgMjU2LCAmY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxF TSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCXBkaXItPnBkaXJfaGFzaCA9IGhhc2hf bWFrZV9jeHQoUGFydGl0aW9uRGlyZWN0b3J5RW50cnksIHJlbG9pZCwKKwkJCQkJCQkJCSJwYXJ0 aXRpb24gZGlyZWN0b3J5IiwgMjU2LCBtY3h0KTsKIAlwZGlyLT5vbWl0X2RldGFjaGVkID0gb21p dF9kZXRhY2hlZDsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggMWMzODQ4OGYyY2IuLmYxYjZiMWEyNGE5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtOTA3LDcgKzkwNyw2IEBAIHJlYnVp bGRfZGF0YWJhc2VfbGlzdChPaWQgbmV3ZGIpCiAJTWVtb3J5Q29udGV4dCBuZXdjeHQ7CiAJTWVt b3J5Q29udGV4dCBvbGRjeHQ7CiAJTWVtb3J5Q29udGV4dCB0bXBjeHQ7Ci0JSEFTSENUTAkJaGN0 bDsKIAlpbnQJCQlzY29yZTsKIAlpbnQJCQluZWxlbXM7CiAJSFRBQgkgICAqZGJoYXNoOwpAQCAt OTM3LDEyICs5MzYsMTAgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0KE9pZCBuZXdkYikKIAkgKiBz Y29yZSwgYW5kIGZpbmFsbHkgcHV0IHRoZSBhcnJheSBlbGVtZW50cyBpbnRvIHRoZSBuZXcgZG91 Ymx5IGxpbmtlZAogCSAqIGxpc3QuCiAJICovCi0JaGN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7 Ci0JaGN0bC5lbnRyeXNpemUgPSBzaXplb2YoYXZsX2RiYXNlKTsKLQloY3RsLmhjeHQgPSB0bXBj eHQ7Ci0JZGJoYXNoID0gaGFzaF9jcmVhdGUoImF1dG92YWN1dW0gZGIgaGFzaCIsIDIwLCAmaGN0 bCwJLyogbWFnaWMgbnVtYmVyIGhlcmUKLQkJCQkJCQkJCQkJCQkJCSAqIEZJWE1FICovCi0JCQkJ CQkgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJZGJoYXNoID0gaGFz aF9tYWtlX2N4dChhdmxfZGJhc2UsIGFkbF9kYXRpZCwKKwkJCQkJCSAgICJhdXRvdmFjdXVtIGRi IGhhc2giLAorCQkJCQkJICAgMjAsCS8qIG1hZ2ljIG51bWJlciBoZXJlIEZJWE1FICovCisJCQkJ CQkgICB0bXBjeHQpOwogCiAJLyogc3RhcnQgYnkgaW5zZXJ0aW5nIHRoZSBuZXcgZGF0YWJhc2Ug Ki8KIAlzY29yZSA9IDA7CkBAIC0xOTA0LDcgKzE5MDEsNiBAQCBkb19hdXRvdmFjdXVtKHZvaWQp CiAJRm9ybV9wZ19kYXRhYmFzZSBkYkZvcm07CiAJTGlzdAkgICAqdGFibGVfb2lkcyA9IE5JTDsK IAlMaXN0CSAgICpvcnBoYW5fb2lkcyA9IE5JTDsKLQlIQVNIQ1RMCQljdGw7CiAJSFRBQgkgICAq dGFibGVfdG9hc3RfbWFwOwogCUxpc3RDZWxsICAgKnZvbGF0aWxlIGNlbGw7CiAJQnVmZmVyQWNj ZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5OwpAQCAtMTk3NywxMyArMTk3Myw5IEBAIGRvX2F1dG92YWN1 dW0odm9pZCkKIAlwZ19jbGFzc19kZXNjID0gQ3JlYXRlVHVwbGVEZXNjQ29weShSZWxhdGlvbkdl dERlc2NyKGNsYXNzUmVsKSk7CiAKIAkvKiBjcmVhdGUgaGFzaCB0YWJsZSBmb3IgdG9hc3QgPC0+ IG1haW4gcmVsaWQgbWFwcGluZyAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JY3Rs LmVudHJ5c2l6ZSA9IHNpemVvZihhdl9yZWxhdGlvbik7Ci0KLQl0YWJsZV90b2FzdF9tYXAgPSBo YXNoX2NyZWF0ZSgiVE9BU1QgdG8gbWFpbiByZWxpZCBtYXAiLAotCQkJCQkJCQkgIDEwMCwKLQkJ CQkJCQkJICAmY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCXRhYmxl X3RvYXN0X21hcCA9IGhhc2hfbWFrZV9jeHQoYXZfcmVsYXRpb24sIGFyX3RvYXN0cmVsaWQsCisJ CQkJCQkJCQkiVE9BU1QgdG8gbWFpbiByZWxpZCBtYXAiLCAxMDAsCisJCQkJCQkJCQlUb3BNZW1v cnlDb250ZXh0KTsKIAogCS8qCiAJICogU2NhbiBwZ19jbGFzcyB0byBkZXRlcm1pbmUgd2hpY2gg dGFibGVzIHRvIHZhY3V1bS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hl Y2twb2ludGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCmluZGV4 IGU4NGU4NjYzZTk2Li44M2JhZTJiNzViNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9jaGVja3BvaW50ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9p bnRlci5jCkBAIC0xMzAxLDcgKzEzMDEsNiBAQCBDb21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1 ZXVlKHZvaWQpCiAJaW50CQkJbnVtX3JlcXVlc3RzOwogCWludAkJCXJlYWRfaWR4LAogCQkJCXdy aXRlX2lkeDsKLQlIQVNIQ1RMCQljdGw7CiAJSFRBQgkgICAqaHRhYjsKIAlib29sCSAgICpza2lw X3Nsb3Q7CiAKQEAgLTEzMjEsMTQgKzEzMjAsOSBAQCBDb21wYWN0Q2hlY2twb2ludGVyUmVxdWVz dFF1ZXVlKHZvaWQpCiAJaGVhZCA9IENoZWNrcG9pbnRlclNobWVtLT5oZWFkOwogCiAJLyogSW5p dGlhbGl6ZSB0ZW1wb3JhcnkgaGFzaCB0YWJsZSAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKENo ZWNrcG9pbnRlclJlcXVlc3QpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2Yoc3RydWN0IENoZWNr cG9pbnRlclNsb3RNYXBwaW5nKTsKLQljdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0Owot Ci0JaHRhYiA9IGhhc2hfY3JlYXRlKCJDb21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1ZXVlIiwK LQkJCQkJICAgQ2hlY2twb2ludGVyU2htZW0tPm51bV9yZXF1ZXN0cywKLQkJCQkJICAgJmN0bCwK LQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJaHRhYiA9 IGhhc2hfbWFrZShzdHJ1Y3QgQ2hlY2twb2ludGVyU2xvdE1hcHBpbmcsIHJlcXVlc3QsCisJCQkJ CSAiQ29tcGFjdENoZWNrcG9pbnRlclJlcXVlc3RRdWV1ZSIsCisJCQkJCSBDaGVja3BvaW50ZXJT aG1lbS0+bnVtX3JlcXVlc3RzKTsKIAogCS8qCiAJICogVGhlIGJhc2ljIGlkZWEgaGVyZSBpcyB0 aGF0IGEgcmVxdWVzdCBjYW4gYmUgc2tpcHBlZCBpZiBpdCdzIGZvbGxvd2VkCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmlu ZGV4IGE0ZWIzOTYyY2IxLi5lYWRmNWI2N2ViNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTQ4NCwxNiArNDg0 LDkgQEAgcGFfYWxsb2NhdGVfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQogCS8qIEZpcnN0IHRp bWUgdGhyb3VnaCwgaW5pdGlhbGl6ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc3RhdGUgaGFzaHRh YmxlLiAqLwogCWlmICghUGFyYWxsZWxBcHBseVR4bkhhc2gpCiAJewotCQlIQVNIQ1RMCQljdGw7 Ci0KLQkJTWVtU2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKLQkJY3RsLmtleXNpemUgPSBzaXpl b2YoVHJhbnNhY3Rpb25JZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUGFyYWxsZWxBcHBs eVdvcmtlckVudHJ5KTsKLQkJY3RsLmhjeHQgPSBBcHBseUNvbnRleHQ7Ci0KLQkJUGFyYWxsZWxB cHBseVR4bkhhc2ggPSBoYXNoX2NyZWF0ZSgibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBh cHBseSB3b3JrZXJzIGhhc2giLAotCQkJCQkJCQkJCSAgIDE2LCAmY3RsLAotCQkJCQkJCQkJCSAg IEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCQlQYXJhbGxlbEFwcGx5 VHhuSGFzaCA9IGhhc2hfbWFrZV9jeHQoUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5LCB4aWQsCisJ CQkJCQkJCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGhh c2giLAorCQkJCQkJCQkJCQkgMTYsIEFwcGx5Q29udGV4dCk7CiAJfQogCiAJLyogQ3JlYXRlIGFu IGVudHJ5IGZvciB0aGUgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLiAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4IDEwYjNkMGQ5YjgyLi5jNGFmODVkNzRm MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwpAQCAtMTA0 LDggKzEwNCw2IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBP aWQgcmVsb2lkKQogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfcmVsbWFwX2luaXQodm9pZCkKIHsK LQlIQVNIQ1RMCQljdGw7Ci0KIAlpZiAoIUxvZ2ljYWxSZXBSZWxNYXBDb250ZXh0KQogCQlMb2dp Y2FsUmVwUmVsTWFwQ29udGV4dCA9CiAJCQlBbGxvY1NldENvbnRleHRDcmVhdGUoQ2FjaGVNZW1v cnlDb250ZXh0LApAQCAtMTEzLDEyICsxMTEsOSBAQCBsb2dpY2FscmVwX3JlbG1hcF9pbml0KHZv aWQpCiAJCQkJCQkJCSAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CiAKIAkvKiBJbml0aWFsaXpl IHRoZSByZWxhdGlvbiBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKExvZ2lj YWxSZXBSZWxJZCk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihMb2dpY2FsUmVwUmVsTWFwRW50 cnkpOwotCWN0bC5oY3h0ID0gTG9naWNhbFJlcFJlbE1hcENvbnRleHQ7Ci0KLQlMb2dpY2FsUmVw UmVsTWFwID0gaGFzaF9jcmVhdGUoImxvZ2ljYWxyZXAgcmVsYXRpb24gbWFwIGNhY2hlIiwgMTI4 LCAmY3RsLAotCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhU KTsKKwlMb2dpY2FsUmVwUmVsTWFwID0gaGFzaF9tYWtlX2N4dChMb2dpY2FsUmVwUmVsTWFwRW50 cnksIHJlbW90ZXJlbC5yZW1vdGVpZCwKKwkJCQkJCQkJCSAibG9naWNhbHJlcCByZWxhdGlvbiBt YXAgY2FjaGUiLCAxMjgsCisJCQkJCQkJCQkgTG9naWNhbFJlcFJlbE1hcENvbnRleHQpOwogCiAJ LyogV2F0Y2ggZm9yIGludmFsaWRhdGlvbiBldmVudHMuICovCiAJQ2FjaGVSZWdpc3RlclJlbGNh Y2hlQ2FsbGJhY2sobG9naWNhbHJlcF9yZWxtYXBfaW52YWxpZGF0ZV9jYiwKQEAgLTYxMCw4ICs2 MDUsNiBAQCBsb2dpY2FscmVwX3BhcnRtYXBfcmVzZXRfcmVsbWFwKExvZ2ljYWxSZXBSZWxhdGlv biAqcmVtb3RlcmVsKQogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfcGFydG1hcF9pbml0KHZvaWQp CiB7Ci0JSEFTSENUTAkJY3RsOwotCiAJaWYgKCFMb2dpY2FsUmVwUGFydE1hcENvbnRleHQpCiAJ CUxvZ2ljYWxSZXBQYXJ0TWFwQ29udGV4dCA9CiAJCQlBbGxvY1NldENvbnRleHRDcmVhdGUoQ2Fj aGVNZW1vcnlDb250ZXh0LApAQCAtNjE5LDEyICs2MTIsOSBAQCBsb2dpY2FscmVwX3BhcnRtYXBf aW5pdCh2b2lkKQogCQkJCQkJCQkgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwogCiAJLyogSW5p dGlhbGl6ZSB0aGUgcmVsYXRpb24gaGFzaCB0YWJsZS4gKi8KLQljdGwua2V5c2l6ZSA9IHNpemVv ZihPaWQpOwkvKiBwYXJ0aXRpb24gT0lEICovCi0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihMb2dp Y2FsUmVwUGFydE1hcEVudHJ5KTsKLQljdGwuaGN4dCA9IExvZ2ljYWxSZXBQYXJ0TWFwQ29udGV4 dDsKLQotCUxvZ2ljYWxSZXBQYXJ0TWFwID0gaGFzaF9jcmVhdGUoImxvZ2ljYWxyZXAgcGFydGl0 aW9uIG1hcCBjYWNoZSIsIDY0LCAmY3RsLAotCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9C UyB8IEhBU0hfQ09OVEVYVCk7CisJTG9naWNhbFJlcFBhcnRNYXAgPSBoYXNoX21ha2VfY3h0KExv Z2ljYWxSZXBQYXJ0TWFwRW50cnksIHBhcnRvaWQsCisJCQkJCQkJCQkgICJsb2dpY2FscmVwIHBh cnRpdGlvbiBtYXAgY2FjaGUiLCA2NCwKKwkJCQkJCQkJCSAgTG9naWNhbFJlcFBhcnRNYXBDb250 ZXh0KTsKIAogCS8qIFdhdGNoIGZvciBpbnZhbGlkYXRpb24gZXZlbnRzLiAqLwogCUNhY2hlUmVn aXN0ZXJSZWxjYWNoZUNhbGxiYWNrKGxvZ2ljYWxyZXBfcGFydG1hcF9pbnZhbGlkYXRlX2NiLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRl eCBlYjZhODQ1NTRiNy4uZTA5NTE2ZDNkOGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0zMjQsNyArMzI0LDYgQEAgUmVvcmRlckJ1 ZmZlciAqCiBSZW9yZGVyQnVmZmVyQWxsb2NhdGUodm9pZCkKIHsKIAlSZW9yZGVyQnVmZmVyICpi dWZmZXI7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJTWVtb3J5Q29udGV4dCBuZXdfY3R4OwogCiAJ QXNzZXJ0KE15UmVwbGljYXRpb25TbG90ICE9IE5VTEwpOwpAQCAtMzM3LDggKzMzNiw2IEBAIFJl b3JkZXJCdWZmZXJBbGxvY2F0ZSh2b2lkKQogCWJ1ZmZlciA9CiAJCShSZW9yZGVyQnVmZmVyICop IE1lbW9yeUNvbnRleHRBbGxvYyhuZXdfY3R4LCBzaXplb2YoUmVvcmRlckJ1ZmZlcikpOwogCi0J bWVtc2V0KCZoYXNoX2N0bCwgMCwgc2l6ZW9mKGhhc2hfY3RsKSk7Ci0KIAlidWZmZXItPmNvbnRl eHQgPSBuZXdfY3R4OwogCiAJYnVmZmVyLT5jaGFuZ2VfY29udGV4dCA9IFNsYWJDb250ZXh0Q3Jl YXRlKG5ld19jdHgsCkBAIC0zNjcsMTIgKzM2NCw4IEBAIFJlb3JkZXJCdWZmZXJBbGxvY2F0ZSh2 b2lkKQogCQkJCQkJCQkJCQkJICBTTEFCX0RFRkFVTFRfQkxPQ0tfU0laRSwKIAkJCQkJCQkJCQkJ CSAgU0xBQl9ERUZBVUxUX0JMT0NLX1NJWkUpOwogCi0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVv ZihUcmFuc2FjdGlvbklkKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVvcmRlckJ1 ZmZlclRYTkJ5SWRFbnQpOwotCWhhc2hfY3RsLmhjeHQgPSBidWZmZXItPmNvbnRleHQ7Ci0KLQli dWZmZXItPmJ5X3R4biA9IGhhc2hfY3JlYXRlKCJSZW9yZGVyQnVmZmVyQnlYaWQiLCAxMDAwLCAm aGFzaF9jdGwsCi0JCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhU KTsKKwlidWZmZXItPmJ5X3R4biA9IGhhc2hfbWFrZV9jeHQoUmVvcmRlckJ1ZmZlclRYTkJ5SWRF bnQsIHhpZCwKKwkJCQkJCQkJICAgIlJlb3JkZXJCdWZmZXJCeVhpZCIsIDEwMDAsIGJ1ZmZlci0+ Y29udGV4dCk7CiAKIAlidWZmZXItPmJ5X3R4bl9sYXN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlv bklkOwogCWJ1ZmZlci0+YnlfdHhuX2xhc3RfdHhuID0gTlVMTDsKQEAgLTE4MzYsMjIgKzE4Mjks MTcgQEAgc3RhdGljIHZvaWQKIFJlb3JkZXJCdWZmZXJCdWlsZFR1cGxlQ2lkSGFzaChSZW9yZGVy QnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKQogewogCWRsaXN0X2l0ZXIJaXRlcjsK LQlIQVNIQ1RMCQloYXNoX2N0bDsKIAogCWlmICghcmJ0eG5faGFzX2NhdGFsb2dfY2hhbmdlcyh0 eG4pIHx8IGRsaXN0X2lzX2VtcHR5KCZ0eG4tPnR1cGxlY2lkcykpCiAJCXJldHVybjsKIAotCWhh c2hfY3RsLmtleXNpemUgPSBzaXplb2YoUmVvcmRlckJ1ZmZlclR1cGxlQ2lkS2V5KTsKLQloYXNo X2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVvcmRlckJ1ZmZlclR1cGxlQ2lkRW50KTsKLQloYXNo X2N0bC5oY3h0ID0gcmItPmNvbnRleHQ7Ci0KIAkvKgogCSAqIGNyZWF0ZSB0aGUgaGFzaCB3aXRo IHRoZSBleGFjdCBudW1iZXIgb2YgdG8tYmUtc3RvcmVkIHR1cGxlY2lkcyBmcm9tCiAJICogdGhl IHN0YXJ0CiAJICovCiAJdHhuLT50dXBsZWNpZF9oYXNoID0KLQkJaGFzaF9jcmVhdGUoIlJlb3Jk ZXJCdWZmZXJUdXBsZUNpZCIsIHR4bi0+bnR1cGxlY2lkcywgJmhhc2hfY3RsLAotCQkJCQlIQVNI X0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwkJaGFzaF9tYWtlX2N4dChSZW9y ZGVyQnVmZmVyVHVwbGVDaWRFbnQsIGtleSwKKwkJCQkJICAiUmVvcmRlckJ1ZmZlclR1cGxlQ2lk IiwgdHhuLT5udHVwbGVjaWRzLCByYi0+Y29udGV4dCk7CiAKIAlkbGlzdF9mb3JlYWNoKGl0ZXIs ICZ0eG4tPnR1cGxlY2lkcykKIAl7CkBAIC00OTc3LDE1ICs0OTY1LDEwIEBAIFN0YXJ0dXBSZW9y ZGVyQnVmZmVyKHZvaWQpCiBzdGF0aWMgdm9pZAogUmVvcmRlckJ1ZmZlclRvYXN0SW5pdEhhc2go UmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKIHsKLQlIQVNIQ1RMCQlo YXNoX2N0bDsKLQogCUFzc2VydCh0eG4tPnRvYXN0X2hhc2ggPT0gTlVMTCk7CiAKLQloYXNoX2N0 bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFJl b3JkZXJCdWZmZXJUb2FzdEVudCk7Ci0JaGFzaF9jdGwuaGN4dCA9IHJiLT5jb250ZXh0OwotCXR4 bi0+dG9hc3RfaGFzaCA9IGhhc2hfY3JlYXRlKCJSZW9yZGVyQnVmZmVyVG9hc3RIYXNoIiwgNSwg Jmhhc2hfY3RsLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRF WFQpOworCXR4bi0+dG9hc3RfaGFzaCA9IGhhc2hfbWFrZV9jeHQoUmVvcmRlckJ1ZmZlclRvYXN0 RW50LCBjaHVua19pZCwKKwkJCQkJCQkJCSJSZW9yZGVyQnVmZmVyVG9hc3RIYXNoIiwgNSwgcmIt PmNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFi bGVzeW5jLmMKaW5kZXggNmJiMGNiZWVkYWQuLjI3NmI3NDZiNGRiIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTExNyw2ICsxMTcsNyBAQAogI2lu Y2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2lu Y2x1ZGUgInV0aWxzL3Jscy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRl ICJ1dGlscy9zeXNjYWNoZS5oIgpAQCAtMzkwLDEyICszOTEsOSBAQCBQcm9jZXNzU3luY2luZ1Rh Ymxlc0ZvckFwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiAJICovCiAJaWYgKHRhYmxlX3N0 YXRlc19ub3RfcmVhZHkgIT0gTklMICYmICFsYXN0X3N0YXJ0X3RpbWVzKQogCXsKLQkJSEFTSENU TAkJY3RsOwotCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JCWN0bC5lbnRyeXNpemUg PSBzaXplb2Yoc3RydWN0IHRhYmxlc3luY19zdGFydF90aW1lX21hcHBpbmcpOwotCQlsYXN0X3N0 YXJ0X3RpbWVzID0gaGFzaF9jcmVhdGUoIkxvZ2ljYWwgcmVwbGljYXRpb24gdGFibGUgc3luYyB3 b3JrZXIgc3RhcnQgdGltZXMiLAotCQkJCQkJCQkJICAgMjU2LCAmY3RsLCBIQVNIX0VMRU0gfCBI QVNIX0JMT0JTKTsKKwkJbGFzdF9zdGFydF90aW1lcyA9IGhhc2hfbWFrZV9jeHQoc3RydWN0IHRh Ymxlc3luY19zdGFydF90aW1lX21hcHBpbmcsIHJlbGlkLAorCQkJCQkJCQkJCSAiTG9naWNhbCBy ZXBsaWNhdGlvbiB0YWJsZSBzeW5jIHdvcmtlciBzdGFydCB0aW1lcyIsCisJCQkJCQkJCQkJIDI1 NiwgVG9wTWVtb3J5Q29udGV4dCk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDk0MmUxYWJkYjU4Li42ZGVhMjRmZjBhNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0xOTY5LDcg KzE5NjksNiBAQCBwZ291dHB1dF9zdHJlYW1fcHJlcGFyZV90eG4oTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LAogc3RhdGljIHZvaWQKIGluaXRfcmVsX3N5bmNfY2FjaGUoTWVtb3J5Q29udGV4 dCBjYWNoZWN0eCkKIHsKLQlIQVNIQ1RMCQljdGw7CiAJc3RhdGljIGJvb2wgcmVsYXRpb25fY2Fs bGJhY2tzX3JlZ2lzdGVyZWQgPSBmYWxzZTsKIAogCS8qIE5vdGhpbmcgdG8gZG8gaWYgaGFzaCB0 YWJsZSBhbHJlYWR5IGV4aXN0cyAqLwpAQCAtMTk3NywxMyArMTk3Niw5IEBAIGluaXRfcmVsX3N5 bmNfY2FjaGUoTWVtb3J5Q29udGV4dCBjYWNoZWN0eCkKIAkJcmV0dXJuOwogCiAJLyogTWFrZSBh IG5ldyBoYXNoIHRhYmxlIGZvciB0aGUgY2FjaGUgKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihP aWQpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVsYXRpb25TeW5jRW50cnkpOwotCWN0bC5o Y3h0ID0gY2FjaGVjdHg7Ci0KLQlSZWxhdGlvblN5bmNDYWNoZSA9IGhhc2hfY3JlYXRlKCJsb2dp Y2FsIHJlcGxpY2F0aW9uIG91dHB1dCByZWxhdGlvbiBjYWNoZSIsCi0JCQkJCQkJCQkxMjgsICZj dGwsCi0JCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0NPTlRFWFQgfCBIQVNIX0JMT0JTKTsKKwlS ZWxhdGlvblN5bmNDYWNoZSA9IGhhc2hfbWFrZV9jeHQoUmVsYXRpb25TeW5jRW50cnksIHJlbGlk LAorCQkJCQkJCQkJICAibG9naWNhbCByZXBsaWNhdGlvbiBvdXRwdXQgcmVsYXRpb24gY2FjaGUi LAorCQkJCQkJCQkJICAxMjgsIGNhY2hlY3R4KTsKIAogCUFzc2VydChSZWxhdGlvblN5bmNDYWNo ZSAhPSBOVUxMKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVm X3RhYmxlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFibGUuYwppbmRleCA5 ZDI1NjU1OWJhYi4uYmZjZWM4NTVmZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv YnVmZmVyL2J1Zl90YWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl90 YWJsZS5jCkBAIC01MCwxOSArNTAsMTYgQEAgQnVmVGFibGVTaG1lbVNpemUoaW50IHNpemUpCiB2 b2lkCiBJbml0QnVmVGFibGUoaW50IHNpemUpCiB7Ci0JSEFTSENUTAkJaW5mbzsKKwlIQVNIT1BU UwlvcHRzID0gezB9OwogCiAJLyogYXNzdW1lIG5vIGxvY2tpbmcgaXMgbmVlZGVkIHlldCAqLwog CiAJLyogQnVmZmVyVGFnIG1hcHMgdG8gQnVmZmVyICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9m KEJ1ZmZlclRhZyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoQnVmZmVyTG9va3VwRW50KTsK LQlpbmZvLm51bV9wYXJ0aXRpb25zID0gTlVNX0JVRkZFUl9QQVJUSVRJT05TOwotCi0JU2hhcmVk QnVmSGFzaCA9IFNobWVtSW5pdEhhc2goIlNoYXJlZCBCdWZmZXIgTG9va3VwIFRhYmxlIiwKLQkJ CQkJCQkJICBzaXplLCBzaXplLAotCQkJCQkJCQkgICZpbmZvLAotCQkJCQkJCQkgIEhBU0hfRUxF TSB8IEhBU0hfQkxPQlMgfCBIQVNIX1BBUlRJVElPTiB8IEhBU0hfRklYRURfU0laRSk7CisJb3B0 cy5udW1fcGFydGl0aW9ucyA9IE5VTV9CVUZGRVJfUEFSVElUSU9OUzsKKwlvcHRzLmZpeGVkX3Np emUgPSB0cnVlOworCVNoYXJlZEJ1Zkhhc2ggPSBzaG1lbV9oYXNoX21ha2VfZXh0KEJ1ZmZlckxv b2t1cEVudCwga2V5LAorCQkJCQkJCQkJCSJTaGFyZWQgQnVmZmVyIExvb2t1cCBUYWJsZSIsCisJ CQkJCQkJCQkJc2l6ZSwgc2l6ZSwgJm9wdHMpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZl ci9idWZtZ3IuYwppbmRleCBjZTUyZDZjYTgxZi4uNzgxNzM4OTU2YWYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2J1Zm1nci5jCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9z bWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVt ZGVidWcuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3Bz X3N0YXR1cy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3Jlc293 bmVyLmgiCkBAIC00MDA2LDggKzQwMDcsNiBAQCBBdEVPWGFjdF9CdWZmZXJzKGJvb2wgaXNDb21t aXQpCiB2b2lkCiBJbml0QnVmZmVyTWFuYWdlckFjY2Vzcyh2b2lkKQogewotCUhBU0hDVEwJCWhh c2hfY3RsOwotCiAJLyoKIAkgKiBBbiBhZHZpc29yeSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHBp bnMgZWFjaCBiYWNrZW5kIHNob3VsZCBob2xkLCBiYXNlZAogCSAqIG9uIHNoYXJlZF9idWZmZXJz IGFuZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgcG9zc2libGUuCkBAIC00MDE5 LDExICs0MDE4LDkgQEAgSW5pdEJ1ZmZlck1hbmFnZXJBY2Nlc3Modm9pZCkKIAogCW1lbXNldCgm UHJpdmF0ZVJlZkNvdW50QXJyYXksIDAsIHNpemVvZihQcml2YXRlUmVmQ291bnRBcnJheSkpOwog Ci0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihCdWZmZXIpOwotCWhhc2hfY3RsLmVudHJ5c2l6 ZSA9IHNpemVvZihQcml2YXRlUmVmQ291bnRFbnRyeSk7Ci0KLQlQcml2YXRlUmVmQ291bnRIYXNo ID0gaGFzaF9jcmVhdGUoIlByaXZhdGVSZWZDb3VudCIsIDEwMCwgJmhhc2hfY3RsLAotCQkJCQkJ CQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlQcml2YXRlUmVmQ291bnRIYXNoID0gaGFz aF9tYWtlX2N4dChQcml2YXRlUmVmQ291bnRFbnRyeSwgYnVmZmVyLAorCQkJCQkJCQkJCSJQcml2 YXRlUmVmQ291bnQiLCAxMDAsCisJCQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkvKgog CSAqIEF0UHJvY0V4aXRfQnVmZmVycyBuZWVkcyBMV0xvY2sgYWNjZXNzLCBhbmQgdGhlcmVieSBo YXMgdG8gYmUgY2FsbGVkIGF0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZl ci9sb2NhbGJ1Zi5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYwppbmRl eCAxNWFhYzdkMWM5Zi4uYTY2ZjI5NzVhNDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2xvY2FsYnVmLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9j YWxidWYuYwpAQCAtNzI4LDcgKzcyOCw2IEBAIHN0YXRpYyB2b2lkCiBJbml0TG9jYWxCdWZmZXJz KHZvaWQpCiB7CiAJaW50CQkJbmJ1ZnMgPSBudW1fdGVtcF9idWZmZXJzOwotCUhBU0hDVEwJCWlu Zm87CiAJaW50CQkJaTsKIAogCS8qCkBAIC03NzksMTMgKzc3OCw5IEBAIEluaXRMb2NhbEJ1ZmZl cnModm9pZCkKIAl9CiAKIAkvKiBDcmVhdGUgdGhlIGxvb2t1cCBoYXNoIHRhYmxlICovCi0JaW5m by5rZXlzaXplID0gc2l6ZW9mKEJ1ZmZlclRhZyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2Yo TG9jYWxCdWZmZXJMb29rdXBFbnQpOwotCi0JTG9jYWxCdWZIYXNoID0gaGFzaF9jcmVhdGUoIkxv Y2FsIEJ1ZmZlciBMb29rdXAgVGFibGUiLAotCQkJCQkJCSAgIG5idWZzLAotCQkJCQkJCSAgICZp bmZvLAotCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCUxvY2FsQnVmSGFzaCA9 IGhhc2hfbWFrZV9jeHQoTG9jYWxCdWZmZXJMb29rdXBFbnQsIGtleSwKKwkJCQkJCQkJICJMb2Nh bCBCdWZmZXIgTG9va3VwIFRhYmxlIiwgbmJ1ZnMsCisJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0 KTsKIAogCWlmICghTG9jYWxCdWZIYXNoKQogCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGluaXRp YWxpemUgbG9jYWwgYnVmZmVyIGhhc2ggdGFibGUiKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvZmlsZS9yZWluaXQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWluaXQu YwppbmRleCA1YzgyNzVjZjUzNi4uYTk0Mzk4MjcxNWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvZmlsZS9yZWluaXQuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvcmVp bml0LmMKQEAgLTE3NSw3ICsxNzUsNiBAQCBSZXNldFVubG9nZ2VkUmVsYXRpb25zSW5EYnNwYWNl RGlyKGNvbnN0IGNoYXIgKmRic3BhY2VkaXJuYW1lLCBpbnQgb3ApCiAJaWYgKChvcCAmIFVOTE9H R0VEX1JFTEFUSU9OX0NMRUFOVVApICE9IDApCiAJewogCQlIVEFCCSAgICpoYXNoOwotCQlIQVNI Q1RMCQljdGw7CiAKIAkJLyoKIAkJICogSXQncyBwb3NzaWJsZSB0aGF0IHNvbWVvbmUgY291bGQg Y3JlYXRlIGEgdG9uIG9mIHVubG9nZ2VkIHJlbGF0aW9ucwpAQCAtMTg0LDExICsxODMsOCBAQCBS ZXNldFVubG9nZ2VkUmVsYXRpb25zSW5EYnNwYWNlRGlyKGNvbnN0IGNoYXIgKmRic3BhY2VkaXJu YW1lLCBpbnQgb3ApCiAJCSAqIG5lZWQgdG8gYmUgcmVzZXQuICBPdGhlcndpc2UsIHRoaXMgY2xl YW51cCBvcGVyYXRpb24gd291bGQgYmUKIAkJICogTyhuXjIpLgogCQkgKi8KLQkJY3RsLmtleXNp emUgPSBzaXplb2YoT2lkKTsKLQkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZih1bmxvZ2dlZF9yZWxh dGlvbl9lbnRyeSk7Ci0JCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JCWhhc2gg PSBoYXNoX2NyZWF0ZSgidW5sb2dnZWQgcmVsYXRpb24gT0lEcyIsIDMyLCAmY3RsLAotCQkJCQkJ ICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJCWhhc2ggPSBoYXNo X21ha2UodW5sb2dnZWRfcmVsYXRpb25fZW50cnksIHJlbG51bWJlciwKKwkJCQkJCSAidW5sb2dn ZWQgcmVsYXRpb24gT0lEcyIsIDMyKTsKIAogCQkvKiBTY2FuIHRoZSBkaXJlY3RvcnkuICovCiAJ CWRic3BhY2VfZGlyID0gQWxsb2NhdGVEaXIoZGJzcGFjZWRpcm5hbWUpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NobWVtLmMKaW5kZXggZWUzNDA4ZGYzMDEuLjJkNGM1MThkZWMyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NobWVtLmMKQEAgLTI4NCw4ICsyODQsNiBAQCBTaG1lbUFkZHJJc1ZhbGlkKGNvbnN0IHZvaWQg KmFkZHIpCiB2b2lkCiBJbml0U2htZW1JbmRleCh2b2lkKQogewotCUhBU0hDVEwJCWluZm87Ci0K IAkvKgogCSAqIENyZWF0ZSB0aGUgc2hhcmVkIG1lbW9yeSBzaG1lbSBpbmRleC4KIAkgKgpAQCAt Mjk0LDEzICsyOTIsOCBAQCBJbml0U2htZW1JbmRleCh2b2lkKQogCSAqIGluaXRpYWxpemluZyB0 aGUgU2htZW1JbmRleCBpdHNlbGYuICBUaGUgc3BlY2lhbCAiU2htZW1JbmRleCIgaGFzaAogCSAq IHRhYmxlIG5hbWUgd2lsbCB0ZWxsIFNobWVtSW5pdFN0cnVjdCB0byBmYWtlIGl0LgogCSAqLwot CWluZm8ua2V5c2l6ZSA9IFNITUVNX0lOREVYX0tFWVNJWkU7Ci0JaW5mby5lbnRyeXNpemUgPSBz aXplb2YoU2htZW1JbmRleEVudCk7Ci0KLQlTaG1lbUluZGV4ID0gU2htZW1Jbml0SGFzaCgiU2ht ZW1JbmRleCIsCi0JCQkJCQkJICAgU0hNRU1fSU5ERVhfU0laRSwgU0hNRU1fSU5ERVhfU0laRSwK LQkJCQkJCQkgICAmaW5mbywKLQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOwor CVNobWVtSW5kZXggPSBzaG1lbV9oYXNoX21ha2UoU2htZW1JbmRleEVudCwga2V5LCAiU2htZW1J bmRleCIsCisJCQkJCQkJCSBTSE1FTV9JTkRFWF9TSVpFLCBTSE1FTV9JTkRFWF9TSVpFKTsKIH0K IAogLyoKQEAgLTM2OSw2ICszNjIsMjggQEAgU2htZW1Jbml0SGFzaChjb25zdCBjaGFyICpuYW1l LAkJLyogdGFibGUgc3RyaW5nIG5hbWUgZm9yIHNobWVtIGluZGV4ICovCiAJcmV0dXJuIGhhc2hf Y3JlYXRlKG5hbWUsIGluaXRfc2l6ZSwgaW5mb1AsIGhhc2hfZmxhZ3MpOwogfQogCisvKgorICog SW1wbGVtZW50YXRpb24gZnVuY3Rpb24gZm9yIHNobWVtX2hhc2hfbWFrZSBtYWNyb3MuCisgKgor ICogQ3JlYXRlcyBhIHNoYXJlZCBtZW1vcnkgaGFzaCB0YWJsZSB3aXRoIHNpbXBsaWZpZWQgcGFy YW1ldGVycy4KKyAqIFBhc3MgTlVMTCBmb3Igb3B0cyB0byB1c2UgYWxsIGRlZmF1bHRzLgorICov CitIVEFCICoKK3NobWVtX2hhc2hfbWFrZV9pbXBsKGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IGlu aXRfc2l6ZSwgaW50NjQgbWF4X3NpemUsCisJCQkJCSBTaXplIGtleXNpemUsIFNpemUgZW50cnlz aXplLCBib29sIHN0cmluZ19rZXksCisJCQkJCSBjb25zdCBIQVNIT1BUUyAqb3B0cykKK3sKKwlI QVNIQ1RMCQljdGw7CisJaW50CQkJZmxhZ3M7CisKKwkvKiBTaGFyZWQgbWVtb3J5IGhhc2ggdGFi bGVzIHVzZSBTaG1lbUFsbG9jTm9FcnJvciwgbm90IGEgY3VzdG9tIGFsbG9jYXRvciAqLworCUFz c2VydChvcHRzID09IE5VTEwgfHwgb3B0cy0+YWxsb2MgPT0gTlVMTCk7CisKKwloYXNoX29wdHNf aW5pdCgmY3RsLCAmZmxhZ3MsIGtleXNpemUsIGVudHJ5c2l6ZSwgc3RyaW5nX2tleSwgb3B0cyk7 CisKKwlyZXR1cm4gU2htZW1Jbml0SGFzaChuYW1lLCBpbml0X3NpemUsIG1heF9zaXplLCAmY3Rs LCBmbGFncyk7Cit9CisKIC8qCiAgKiBTaG1lbUluaXRTdHJ1Y3QgLS0gQ3JlYXRlL2F0dGFjaCB0 byBhIHN0cnVjdHVyZSBpbiBzaGFyZWQgbWVtb3J5LgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5k YnkuYwppbmRleCBmYzQ1ZDcyYzc5Yi4uN2I5ZjdlMjE4YWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z dGFuZGJ5LmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5kYnkuaCIK ICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3Bv aW50LmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9wc19z dGF0dXMuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lb3V0LmgiCiAjaW5jbHVkZSAidXRpbHMvdGlt ZXN0YW1wLmgiCkBAIC05NSw3ICs5Niw2IEBAIHZvaWQKIEluaXRSZWNvdmVyeVRyYW5zYWN0aW9u RW52aXJvbm1lbnQodm9pZCkKIHsKIAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2eGlkOwotCUhBU0hD VEwJCWhhc2hfY3RsOwogCiAJQXNzZXJ0KFJlY292ZXJ5TG9ja0hhc2ggPT0gTlVMTCk7CS8qIGRv bid0IHJ1biB0aGlzIHR3aWNlICovCiAKQEAgLTEwMywxOCArMTAzLDEyIEBAIEluaXRSZWNvdmVy eVRyYW5zYWN0aW9uRW52aXJvbm1lbnQodm9pZCkKIAkgKiBJbml0aWFsaXplIHRoZSBoYXNoIHRh YmxlcyBmb3IgdHJhY2tpbmcgdGhlIGxvY2tzIGhlbGQgYnkgZWFjaAogCSAqIHRyYW5zYWN0aW9u LgogCSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoeGxfc3RhbmRieV9sb2NrKTsKLQlo YXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVjb3ZlcnlMb2NrRW50cnkpOwotCVJlY292ZXJ5 TG9ja0hhc2ggPSBoYXNoX2NyZWF0ZSgiUmVjb3ZlcnlMb2NrSGFzaCIsCi0JCQkJCQkJCSAgIDY0 LAotCQkJCQkJCQkgICAmaGFzaF9jdGwsCi0JCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMpOwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoVHJhbnNhY3Rpb25JZCk7Ci0JaGFzaF9j dGwuZW50cnlzaXplID0gc2l6ZW9mKFJlY292ZXJ5TG9ja1hpZEVudHJ5KTsKLQlSZWNvdmVyeUxv Y2tYaWRIYXNoID0gaGFzaF9jcmVhdGUoIlJlY292ZXJ5TG9ja1hpZEhhc2giLAotCQkJCQkJCQkJ ICA2NCwKLQkJCQkJCQkJCSAgJmhhc2hfY3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTKTsKKwlSZWNvdmVyeUxvY2tIYXNoID0gaGFzaF9tYWtlX2N4dChSZWNvdmVyeUxvY2tF bnRyeSwga2V5LAorCQkJCQkJCQkJICJSZWNvdmVyeUxvY2tIYXNoIiwgNjQsCisJCQkJCQkJCQkg VG9wTWVtb3J5Q29udGV4dCk7CisJUmVjb3ZlcnlMb2NrWGlkSGFzaCA9IGhhc2hfbWFrZV9jeHQo UmVjb3ZlcnlMb2NrWGlkRW50cnksIHhpZCwKKwkJCQkJCQkJCQkiUmVjb3ZlcnlMb2NrWGlkSGFz aCIsIDY0LAorCQkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogCiAJLyoKIAkgKiBJbml0aWFs aXplIHNoYXJlZCBpbnZhbGlkYXRpb24gbWFuYWdlbWVudCBmb3IgU3RhcnR1cCBwcm9jZXNzLCBi ZWluZwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKaW5kZXggOWNiNzhlYWQxMDUuLmU1ZWE1NGU3ODI0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKQEAgLTQ0Myw3ICs0NDMsNyBAQCBzdGF0aWMgdm9p ZCBHZXRTaW5nbGVQcm9jQmxvY2tlclN0YXR1c0RhdGEoUEdQUk9DICpibG9ja2VkX3Byb2MsCiB2 b2lkCiBMb2NrTWFuYWdlclNobWVtSW5pdCh2b2lkKQogewotCUhBU0hDVEwJCWluZm87CisJSEFT SE9QVFMJb3B0czsKIAlpbnQ2NAkJaW5pdF90YWJsZV9zaXplLAogCQkJCW1heF90YWJsZV9zaXpl OwogCWJvb2wJCWZvdW5kOwpAQCAtNDU5LDE1ICs0NTksMTEgQEAgTG9ja01hbmFnZXJTaG1lbUlu aXQodm9pZCkKIAkgKiBBbGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBMT0NLIHN0cnVjdHMuICBUaGlz IHN0b3JlcyBwZXItbG9ja2VkLW9iamVjdAogCSAqIGluZm9ybWF0aW9uLgogCSAqLwotCWluZm8u a2V5c2l6ZSA9IHNpemVvZihMT0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihMT0NL KTsKLQlpbmZvLm51bV9wYXJ0aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9OUzsKLQotCUxvY2tN ZXRob2RMb2NrSGFzaCA9IFNobWVtSW5pdEhhc2goIkxPQ0sgaGFzaCIsCi0JCQkJCQkJCQkgICBp bml0X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkgICBtYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkJCSAg ICZpbmZvLAotCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfUEFSVElU SU9OKTsKKwlNZW1TZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CisJb3B0cy5udW1fcGFydGl0 aW9ucyA9IE5VTV9MT0NLX1BBUlRJVElPTlM7CisJTG9ja01ldGhvZExvY2tIYXNoID0gc2htZW1f aGFzaF9tYWtlX2V4dChMT0NLLCB0YWcsICJMT0NLIGhhc2giLAorCQkJCQkJCQkJCQkgaW5pdF90 YWJsZV9zaXplLCBtYXhfdGFibGVfc2l6ZSwKKwkJCQkJCQkJCQkJICZvcHRzKTsKIAogCS8qIEFz c3VtZSBhbiBhdmVyYWdlIG9mIDIgaG9sZGVycyBwZXIgbG9jayAqLwogCW1heF90YWJsZV9zaXpl ICo9IDI7CkBAIC00NzcsMTYgKzQ3MywxMiBAQCBMb2NrTWFuYWdlclNobWVtSW5pdCh2b2lkKQog CSAqIEFsbG9jYXRlIGhhc2ggdGFibGUgZm9yIFBST0NMT0NLIHN0cnVjdHMuICBUaGlzIHN0b3Jl cwogCSAqIHBlci1sb2NrLXBlci1ob2xkZXIgaW5mb3JtYXRpb24uCiAJICovCi0JaW5mby5rZXlz aXplID0gc2l6ZW9mKFBST0NMT0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihQUk9D TE9DSyk7Ci0JaW5mby5oYXNoID0gcHJvY2xvY2tfaGFzaDsKLQlpbmZvLm51bV9wYXJ0aXRpb25z ID0gTlVNX0xPQ0tfUEFSVElUSU9OUzsKLQotCUxvY2tNZXRob2RQcm9jTG9ja0hhc2ggPSBTaG1l bUluaXRIYXNoKCJQUk9DTE9DSyBoYXNoIiwKLQkJCQkJCQkJCQkgICBpbml0X3RhYmxlX3NpemUs Ci0JCQkJCQkJCQkJICAgbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkJICAgJmluZm8sCi0JCQkJ CQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfUEFSVElUSU9OKTsKKwlN ZW1TZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CisJb3B0cy5oYXNoID0gcHJvY2xvY2tfaGFz aDsKKwlvcHRzLm51bV9wYXJ0aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9OUzsKKwlMb2NrTWV0 aG9kUHJvY0xvY2tIYXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChQUk9DTE9DSywgdGFnLCAiUFJP Q0xPQ0sgaGFzaCIsCisJCQkJCQkJCQkJCQkgaW5pdF90YWJsZV9zaXplLCBtYXhfdGFibGVfc2l6 ZSwKKwkJCQkJCQkJCQkJCSAmb3B0cyk7CiAKIAkvKgogCSAqIEFsbG9jYXRlIGZhc3QtcGF0aCBz dHJ1Y3R1cmVzLgpAQCAtNTA4LDE1ICs1MDAsOSBAQCBJbml0TG9ja01hbmFnZXJBY2Nlc3Modm9p ZCkKIAkgKiBBbGxvY2F0ZSBub24tc2hhcmVkIGhhc2ggdGFibGUgZm9yIExPQ0FMTE9DSyBzdHJ1 Y3RzLiAgVGhpcyBzdG9yZXMgbG9jawogCSAqIGNvdW50cyBhbmQgcmVzb3VyY2Ugb3duZXIgaW5m b3JtYXRpb24uCiAJICovCi0JSEFTSENUTAkJaW5mbzsKLQotCWluZm8ua2V5c2l6ZSA9IHNpemVv ZihMT0NBTExPQ0tUQUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKExPQ0FMTE9DSyk7Ci0K LQlMb2NrTWV0aG9kTG9jYWxIYXNoID0gaGFzaF9jcmVhdGUoIkxPQ0FMTE9DSyBoYXNoIiwKLQkJ CQkJCQkJCSAgMTYsCi0JCQkJCQkJCQkgICZpbmZvLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBI QVNIX0JMT0JTKTsKKwlMb2NrTWV0aG9kTG9jYWxIYXNoID0gaGFzaF9tYWtlX2N4dChMT0NBTExP Q0ssIHRhZywKKwkJCQkJCQkJCQkiTE9DQUxMT0NLIGhhc2giLCAxNiwKKwkJCQkJCQkJCQlUb3BN ZW1vcnlDb250ZXh0KTsKIH0KIAogCkBAIC0zMzk2LDIwICszMzgyLDEzIEBAIENoZWNrRm9yU2Vz c2lvbkFuZFhhY3RMb2Nrcyh2b2lkKQogCQlib29sCQl4YWN0TG9jazsJLyogaXMgYW55IGxvY2tt b2RlIGhlbGQgYXQgeGFjdCBsZXZlbD8gKi8KIAl9IFBlckxvY2tUYWdFbnRyeTsKIAotCUhBU0hD VEwJCWhhc2hfY3RsOwogCUhUQUIJICAgKmxvY2todGFiOwogCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7CiAJTE9DQUxMT0NLICAqbG9jYWxsb2NrOwogCiAJLyogQ3JlYXRlIGEgbG9jYWwgaGFzaCB0 YWJsZSBrZXllZCBieSBMT0NLVEFHIG9ubHkgKi8KLQloYXNoX2N0bC5rZXlzaXplID0gc2l6ZW9m KExPQ0tUQUcpOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQZXJMb2NrVGFnRW50cnkp OwotCWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQotCWxvY2todGFiID0g aGFzaF9jcmVhdGUoIkNoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2NrcyB0YWJsZSIsCi0JCQkJCQkg ICAyNTYsIC8qIGFyYml0cmFyeSBpbml0aWFsIHNpemUgKi8KLQkJCQkJCSAgICZoYXNoX2N0bCwK LQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCWxvY2to dGFiID0gaGFzaF9tYWtlKFBlckxvY2tUYWdFbnRyeSwgbG9jaywKKwkJCQkJCSAiQ2hlY2tGb3JT ZXNzaW9uQW5kWGFjdExvY2tzIHRhYmxlIiwgMjU2KTsKIAogCS8qIFNjYW4gbG9jYWwgbG9jayB0 YWJsZSB0byBmaW5kIGVudHJpZXMgZm9yIGVhY2ggTE9DS1RBRyAqLwogCWhhc2hfc2VxX2luaXQo JnN0YXR1cywgTG9ja01ldGhvZExvY2FsSGFzaCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvbHdsb2NrLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMK aW5kZXggMjU1Y2ZhOGZhOTUuLjFmNzQ5YmVhZGNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvbHdsb2NrLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9j ay5jCkBAIC0yODUsNyArMjg1LDYgQEAgc3RhdGljIGx3bG9ja19zdGF0cyAqIGdldF9sd2xvY2tf c3RhdHNfZW50cnkoTFdMb2NrICpsb2NrKTsKIHN0YXRpYyB2b2lkCiBpbml0X2x3bG9ja19zdGF0 cyh2b2lkKQogewotCUhBU0hDVEwJCWN0bDsKIAlzdGF0aWMgTWVtb3J5Q29udGV4dCBsd2xvY2tf c3RhdHNfY3h0ID0gTlVMTDsKIAlzdGF0aWMgYm9vbCBleGl0X3JlZ2lzdGVyZWQgPSBmYWxzZTsK IApAQCAtMzA1LDExICszMDQsOCBAQCBpbml0X2x3bG9ja19zdGF0cyh2b2lkKQogCQkJCQkJCQkJ CQkgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CiAJTWVtb3J5Q29udGV4dEFsbG93SW5Dcml0aWNh bFNlY3Rpb24obHdsb2NrX3N0YXRzX2N4dCwgdHJ1ZSk7CiAKLQljdGwua2V5c2l6ZSA9IHNpemVv Zihsd2xvY2tfc3RhdHNfa2V5KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKGx3bG9ja19zdGF0 cyk7Ci0JY3RsLmhjeHQgPSBsd2xvY2tfc3RhdHNfY3h0OwotCWx3bG9ja19zdGF0c19odGFiID0g aGFzaF9jcmVhdGUoImx3bG9jayBzdGF0cyIsIDE2Mzg0LCAmY3RsLAotCQkJCQkJCQkJSEFTSF9F TEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJbHdsb2NrX3N0YXRzX2h0YWIgPSBo YXNoX21ha2VfY3h0KGx3bG9ja19zdGF0cywga2V5LAorCQkJCQkJCQkJICAibHdsb2NrIHN0YXRz IiwgMTYzODQsIGx3bG9ja19zdGF0c19jeHQpOwogCWlmICghZXhpdF9yZWdpc3RlcmVkKQogCXsK IAkJb25fc2htZW1fZXhpdChwcmludF9sd2xvY2tfc3RhdHMsIDApOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3ByZWRpY2F0ZS5jCmluZGV4IGYxMmY4Zjc3YWFkLi5jMmQ4NTAzMjcxNiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpAQCAtMjEyLDYgKzIxMiw3IEBACiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRl ICJ1dGlscy9ndWNfaG9va3MuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1 ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKIApAQCAtMTE0NCw3 ICsxMTQ1LDcgQEAgQ2hlY2tQb2ludFByZWRpY2F0ZSh2b2lkKQogdm9pZAogUHJlZGljYXRlTG9j a1NobWVtSW5pdCh2b2lkKQogewotCUhBU0hDVEwJCWluZm87CisJSEFTSE9QVFMJb3B0czsKIAlp bnQ2NAkJbWF4X3RhYmxlX3NpemU7CiAJU2l6ZQkJcmVxdWVzdFNpemU7CiAJYm9vbAkJZm91bmQ7 CkBAIC0xMTYzLDE2ICsxMTY0LDEzIEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAkg KiBBbGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBQUkVESUNBVEVMT0NLVEFSR0VUIHN0cnVjdHMuICBU aGlzIHN0b3JlcwogCSAqIHBlci1wcmVkaWNhdGUtbG9jay10YXJnZXQgaW5mb3JtYXRpb24uCiAJ ICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tUQVJHRVRUQUcpOwotCWlu Zm8uZW50cnlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tUQVJHRVQpOwotCWluZm8ubnVtX3Bh cnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05TOwotCi0JUHJlZGljYXRlTG9j a1RhcmdldEhhc2ggPSBTaG1lbUluaXRIYXNoKCJQUkVESUNBVEVMT0NLVEFSR0VUIGhhc2giLAot CQkJCQkJCQkJCQltYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkJCQkJbWF4X3RhYmxlX3NpemUsCi0J CQkJCQkJCQkJCSZpbmZvLAotCQkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwKLQkJ CQkJCQkJCQkJSEFTSF9QQVJUSVRJT04gfCBIQVNIX0ZJWEVEX1NJWkUpOworCU1lbVNldCgmb3B0 cywgMCwgc2l6ZW9mKG9wdHMpKTsKKwlvcHRzLm51bV9wYXJ0aXRpb25zID0gTlVNX1BSRURJQ0FU RUxPQ0tfUEFSVElUSU9OUzsKKwlvcHRzLmZpeGVkX3NpemUgPSB0cnVlOworCVByZWRpY2F0ZUxv Y2tUYXJnZXRIYXNoID0gc2htZW1faGFzaF9tYWtlX2V4dChQUkVESUNBVEVMT0NLVEFSR0VULCB0 YWcsCisJCQkJCQkJCQkJCQkgICJQUkVESUNBVEVMT0NLVEFSR0VUIGhhc2giLAorCQkJCQkJCQkJ CQkJICBtYXhfdGFibGVfc2l6ZSwgbWF4X3RhYmxlX3NpemUsCisJCQkJCQkJCQkJCQkgICZvcHRz KTsKIAogCS8qCiAJICogUmVzZXJ2ZSBhIGR1bW15IGVudHJ5IGluIHRoZSBoYXNoIHRhYmxlOyB3 ZSB1c2UgaXQgdG8gbWFrZSBzdXJlIHRoZXJlJ3MKQEAgLTExOTUsMjAgKzExOTMsMTcgQEAgUHJl ZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCSAqIEFsbG9jYXRlIGhhc2ggdGFibGUgZm9yIFBS RURJQ0FURUxPQ0sgc3RydWN0cy4gIFRoaXMgc3RvcmVzIHBlcgogCSAqIHhhY3QtbG9jay1vZi1h LXRhcmdldCBpbmZvcm1hdGlvbi4KIAkgKi8KLQlpbmZvLmtleXNpemUgPSBzaXplb2YoUFJFRElD QVRFTE9DS1RBRyk7Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoUFJFRElDQVRFTE9DSyk7Ci0J aW5mby5oYXNoID0gcHJlZGljYXRlbG9ja19oYXNoOwotCWluZm8ubnVtX3BhcnRpdGlvbnMgPSBO VU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05TOwotCiAJLyogQXNzdW1lIGFuIGF2ZXJhZ2Ugb2Yg MiB4YWN0cyBwZXIgdGFyZ2V0ICovCiAJbWF4X3RhYmxlX3NpemUgKj0gMjsKIAotCVByZWRpY2F0 ZUxvY2tIYXNoID0gU2htZW1Jbml0SGFzaCgiUFJFRElDQVRFTE9DSyBoYXNoIiwKLQkJCQkJCQkJ CSAgbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJCQkgIG1heF90YWJsZV9zaXplLAotCQkJCQkJCQkJ ICAmaW5mbywKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8Ci0JCQkJCQkJ CQkgIEhBU0hfUEFSVElUSU9OIHwgSEFTSF9GSVhFRF9TSVpFKTsKKwlNZW1TZXQoJm9wdHMsIDAs IHNpemVvZihvcHRzKSk7CisJb3B0cy5oYXNoID0gcHJlZGljYXRlbG9ja19oYXNoOworCW9wdHMu bnVtX3BhcnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05TOworCW9wdHMuZml4 ZWRfc2l6ZSA9IHRydWU7CisJUHJlZGljYXRlTG9ja0hhc2ggPSBzaG1lbV9oYXNoX21ha2VfZXh0 KFBSRURJQ0FURUxPQ0ssIHRhZywKKwkJCQkJCQkJCQkJIlBSRURJQ0FURUxPQ0sgaGFzaCIsCisJ CQkJCQkJCQkJCW1heF90YWJsZV9zaXplLCBtYXhfdGFibGVfc2l6ZSwKKwkJCQkJCQkJCQkJJm9w dHMpOwogCiAJLyoKIAkgKiBDb21wdXRlIHNpemUgZm9yIHNlcmlhbGl6YWJsZSB0cmFuc2FjdGlv biBoYXNodGFibGUuIE5vdGUgdGhlc2UKQEAgLTEyODIsMTUgKzEyNzcsMTIgQEAgUHJlZGljYXRl TG9ja1NobWVtSW5pdCh2b2lkKQogCSAqIEFsbG9jYXRlIGhhc2ggdGFibGUgZm9yIFNFUklBTEla QUJMRVhJRCBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMgcGVyLXhpZAogCSAqIGluZm9ybWF0aW9uIGZv ciBzZXJpYWxpemFibGUgdHJhbnNhY3Rpb25zIHdoaWNoIGhhdmUgYWNjZXNzZWQgZGF0YS4KIAkg Ki8KLQlpbmZvLmtleXNpemUgPSBzaXplb2YoU0VSSUFMSVpBQkxFWElEVEFHKTsKLQlpbmZvLmVu dHJ5c2l6ZSA9IHNpemVvZihTRVJJQUxJWkFCTEVYSUQpOwotCi0JU2VyaWFsaXphYmxlWGlkSGFz aCA9IFNobWVtSW5pdEhhc2goIlNFUklBTElaQUJMRVhJRCBoYXNoIiwKLQkJCQkJCQkJCQltYXhf dGFibGVfc2l6ZSwKLQkJCQkJCQkJCQltYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkJCQkmaW5mbywK LQkJCQkJCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwKLQkJCQkJCQkJCQlIQVNIX0ZJWEVE X1NJWkUpOworCU1lbVNldCgmb3B0cywgMCwgc2l6ZW9mKG9wdHMpKTsKKwlvcHRzLmZpeGVkX3Np emUgPSB0cnVlOworCVNlcmlhbGl6YWJsZVhpZEhhc2ggPSBzaG1lbV9oYXNoX21ha2VfZXh0KFNF UklBTElaQUJMRVhJRCwgdGFnLAorCQkJCQkJCQkJCQkgICJTRVJJQUxJWkFCTEVYSUQgaGFzaCIs CisJCQkJCQkJCQkJCSAgbWF4X3RhYmxlX3NpemUsIG1heF90YWJsZV9zaXplLAorCQkJCQkJCQkJ CQkgICZvcHRzKTsKIAogCS8qCiAJICogQWxsb2NhdGUgc3BhY2UgZm9yIHRyYWNraW5nIHJ3LWNv bmZsaWN0cyBpbiBsaXN0cyBhdHRhY2hlZCB0byB0aGUKQEAgLTE5MzksMTYgKzE5MzEsMTIgQEAg R2V0U2VyaWFsaXphYmxlVHJhbnNhY3Rpb25TbmFwc2hvdEludChTbmFwc2hvdCBzbmFwc2hvdCwK IHN0YXRpYyB2b2lkCiBDcmVhdGVMb2NhbFByZWRpY2F0ZUxvY2tIYXNoKHZvaWQpCiB7Ci0JSEFT SENUTAkJaGFzaF9jdGw7Ci0KIAkvKiBJbml0aWFsaXplIHRoZSBiYWNrZW5kLWxvY2FsIGhhc2gg dGFibGUgb2YgcGFyZW50IGxvY2tzICovCiAJQXNzZXJ0KExvY2FsUHJlZGljYXRlTG9ja0hhc2gg PT0gTlVMTCk7Ci0JaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihQUkVESUNBVEVMT0NLVEFSR0VU VEFHKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoTE9DQUxQUkVESUNBVEVMT0NLKTsK LQlMb2NhbFByZWRpY2F0ZUxvY2tIYXNoID0gaGFzaF9jcmVhdGUoIkxvY2FsIHByZWRpY2F0ZSBs b2NrIiwKLQkJCQkJCQkJCQkgbWF4X3ByZWRpY2F0ZV9sb2Nrc19wZXJfeGFjdCwKLQkJCQkJCQkJ CQkgJmhhc2hfY3RsLAotCQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlMb2Nh bFByZWRpY2F0ZUxvY2tIYXNoID0gaGFzaF9tYWtlX2N4dChMT0NBTFBSRURJQ0FURUxPQ0ssIHRh ZywKKwkJCQkJCQkJCQkgICAiTG9jYWwgcHJlZGljYXRlIGxvY2siLAorCQkJCQkJCQkJCSAgIG1h eF9wcmVkaWNhdGVfbG9ja3NfcGVyX3hhY3QsCisJCQkJCQkJCQkJICAgVG9wTWVtb3J5Q29udGV4 dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYwppbmRleCBiY2UzN2EzNmQ1MS4uZDRm YTZhMTQ0ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYwpAQCAtNzMsNiArNzMsNyBAQAogI2lu Y2x1ZGUgInN0b3JhZ2Uvc21nci5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNs dWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKIAogLyoK QEAgLTI1MCwxMiArMjUxLDkgQEAgc21ncm9wZW4oUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIFBy b2NOdW1iZXIgYmFja2VuZCkKIAlpZiAoU01nclJlbGF0aW9uSGFzaCA9PSBOVUxMKQogCXsKIAkJ LyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlICovCi0JCUhB U0hDVEwJCWN0bDsKLQotCQljdGwua2V5c2l6ZSA9IHNpemVvZihSZWxGaWxlTG9jYXRvckJhY2tl bmQpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFNNZ3JSZWxhdGlvbkRhdGEpOwotCQlTTWdy UmVsYXRpb25IYXNoID0gaGFzaF9jcmVhdGUoInNtZ3IgcmVsYXRpb24gdGFibGUiLCA0MDAsCi0J CQkJCQkJCQkgICAmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJU01nclJlbGF0aW9u SGFzaCA9IGhhc2hfbWFrZV9jeHQoU01nclJlbGF0aW9uRGF0YSwgc21ncl9ybG9jYXRvciwKKwkJ CQkJCQkJCQkgInNtZ3IgcmVsYXRpb24gdGFibGUiLCA0MDAsCisJCQkJCQkJCQkJIFRvcE1lbW9y eUNvbnRleHQpOwogCQlkbGlzdF9pbml0KCZ1bnBpbm5lZF9yZWxucyk7CiAJfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9zeW5jL3N5bmMuYwppbmRleCBmYzE2ZGI5MDEzMy4uNDJiN2ZjMTEyODggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9zeW5jL3N5bmMuYwpAQCAtMTMwLDggKzEzMCw2IEBAIEluaXRTeW5jKHZvaWQpCiAJICovCiAJ aWYgKCFJc1VuZGVyUG9zdG1hc3RlciB8fCBBbUNoZWNrcG9pbnRlclByb2Nlc3MoKSkKIAl7Ci0J CUhBU0hDVEwJCWhhc2hfY3RsOwotCiAJCS8qCiAJCSAqIFhYWDogVGhlIGNoZWNrcG9pbnRlciBu ZWVkcyB0byBhZGQgZW50cmllcyB0byB0aGUgcGVuZGluZyBvcHMgdGFibGUKIAkJICogd2hlbiBh YnNvcmJpbmcgZnN5bmMgcmVxdWVzdHMuICBUaGF0IGlzIGRvbmUgd2l0aGluIGEgY3JpdGljYWwK QEAgLTE0NiwxMyArMTQ0LDggQEAgSW5pdFN5bmModm9pZCkKIAkJCQkJCQkJCQkJICBBTExPQ1NF VF9ERUZBVUxUX1NJWkVTKTsKIAkJTWVtb3J5Q29udGV4dEFsbG93SW5Dcml0aWNhbFNlY3Rpb24o cGVuZGluZ09wc0N4dCwgdHJ1ZSk7CiAKLQkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihGaWxl VGFnKTsKLQkJaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFBlbmRpbmdGc3luY0VudHJ5KTsK LQkJaGFzaF9jdGwuaGN4dCA9IHBlbmRpbmdPcHNDeHQ7Ci0JCXBlbmRpbmdPcHMgPSBoYXNoX2Ny ZWF0ZSgiUGVuZGluZyBPcHMgVGFibGUiLAotCQkJCQkJCQkgMTAwTCwKLQkJCQkJCQkJICZoYXNo X2N0bCwKLQkJCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOwor CQlwZW5kaW5nT3BzID0gaGFzaF9tYWtlX2N4dChQZW5kaW5nRnN5bmNFbnRyeSwgdGFnLAorCQkJ CQkJCQkgICAiUGVuZGluZyBPcHMgVGFibGUiLCAxMDBMLCBwZW5kaW5nT3BzQ3h0KTsKIAkJcGVu ZGluZ1VubGlua3MgPSBOSUw7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdHNlYXJj aC90c190eXBhbmFseXplLmMgYi9zcmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUuYwpp bmRleCA5M2FhYjAwYTNjYS4uYTliYzY5MDFhMTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rz ZWFyY2gvdHNfdHlwYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5h bHl6ZS5jCkBAIC0xNDksNyArMTQ5LDYgQEAgY29tcHV0ZV90c3ZlY3Rvcl9zdGF0cyhWYWNBdHRy U3RhdHMgKnN0YXRzLAogCiAJLyogVGhpcyBpcyBEIGZyb20gdGhlIExDIGFsZ29yaXRobS4gKi8K IAlIVEFCCSAgICpsZXhlbWVzX3RhYjsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAlIQVNIX1NFUV9T VEFUVVMgc2Nhbl9zdGF0dXM7CiAKIAkvKiBUaGlzIGlzIHRoZSBjdXJyZW50IGJ1Y2tldCBudW1i ZXIgZnJvbSB0aGUgTEMgYWxnb3JpdGhtICovCkBAIC0xODAsMTUgKzE3OSw5IEBAIGNvbXB1dGVf dHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywKIAkgKiB3b3JyeSBhYm91dCBvdmVy Zmxvd2luZyB0aGUgaW5pdGlhbCBzaXplLiBBbHNvIHdlIGRvbid0IG5lZWQgdG8gcGF5IGFueQog CSAqIGF0dGVudGlvbiB0byBsb2NraW5nIGFuZCBtZW1vcnkgbWFuYWdlbWVudC4KIAkgKi8KLQlo YXNoX2N0bC5rZXlzaXplID0gc2l6ZW9mKExleGVtZUhhc2hLZXkpOwotCWhhc2hfY3RsLmVudHJ5 c2l6ZSA9IHNpemVvZihUcmFja0l0ZW0pOwotCWhhc2hfY3RsLmhhc2ggPSBsZXhlbWVfaGFzaDsK LQloYXNoX2N0bC5tYXRjaCA9IGxleGVtZV9tYXRjaDsKLQloYXNoX2N0bC5oY3h0ID0gQ3VycmVu dE1lbW9yeUNvbnRleHQ7Ci0JbGV4ZW1lc190YWIgPSBoYXNoX2NyZWF0ZSgiQW5hbHl6ZWQgbGV4 ZW1lcyB0YWJsZSIsCi0JCQkJCQkJICBudW1fbWNlbGVtLAotCQkJCQkJCSAgJmhhc2hfY3RsLAot CQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfQ09NUEFSRSB8IEhBU0hf Q09OVEVYVCk7CisJbGV4ZW1lc190YWIgPSBoYXNoX21ha2VfZm4oVHJhY2tJdGVtLCBrZXksCisJ CQkJCQkJICAgIkFuYWx5emVkIGxleGVtZXMgdGFibGUiLCBudW1fbWNlbGVtLAorCQkJCQkJCSAg IGxleGVtZV9oYXNoLCBsZXhlbWVfbWF0Y2gpOwogCiAJLyogSW5pdGlhbGl6ZSBjb3VudGVycy4g Ki8KIAliX2N1cnJlbnQgPSAxOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5j CmluZGV4IDk2ZDYxZjc3ZjZlLi4zNWFhMDIwOGZjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3dhaXRfZXZlbnQuYwpAQCAtMTE5LDcgKzExOSw2IEBAIHZvaWQKIFdhaXRFdmVudEN1c3Rv bVNobWVtSW5pdCh2b2lkKQogewogCWJvb2wJCWZvdW5kOwotCUhBU0hDVEwJCWluZm87CiAKIAlX YWl0RXZlbnRDdXN0b21Db3VudGVyID0gKFdhaXRFdmVudEN1c3RvbUNvdW50ZXJEYXRhICopCiAJ CVNobWVtSW5pdFN0cnVjdCgiV2FpdEV2ZW50Q3VzdG9tQ291bnRlckRhdGEiLApAQCAtMTMzLDI0 ICsxMzIsMTggQEAgV2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KHZvaWQpCiAJfQogCiAJLyogaW5p dGlhbGl6ZSBvciBhdHRhY2ggdGhlIGhhc2ggdGFibGVzIHRvIHN0b3JlIGN1c3RvbSB3YWl0IGV2 ZW50cyAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZih1aW50MzIpOwotCWluZm8uZW50cnlzaXpl ID0gc2l6ZW9mKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlJbmZvKTsKIAlXYWl0RXZlbnRDdXN0b21I YXNoQnlJbmZvID0KLQkJU2htZW1Jbml0SGFzaCgiV2FpdEV2ZW50Q3VzdG9tIGhhc2ggYnkgd2Fp dCBldmVudCBpbmZvcm1hdGlvbiIsCi0JCQkJCSAgV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9JTklU X1NJWkUsCi0JCQkJCSAgV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9NQVhfU0laRSwKLQkJCQkJICAm aW5mbywKLQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJc2htZW1faGFzaF9tYWtl KFdhaXRFdmVudEN1c3RvbUVudHJ5QnlJbmZvLCB3YWl0X2V2ZW50X2luZm8sCisJCQkJCQkiV2Fp dEV2ZW50Q3VzdG9tIGhhc2ggYnkgd2FpdCBldmVudCBpbmZvcm1hdGlvbiIsCisJCQkJCQlXQUlU X0VWRU5UX0NVU1RPTV9IQVNIX0lOSVRfU0laRSwKKwkJCQkJCVdBSVRfRVZFTlRfQ1VTVE9NX0hB U0hfTUFYX1NJWkUpOwogCiAJLyoga2V5IGlzIGEgTlVMTC10ZXJtaW5hdGVkIHN0cmluZyAqLwot CWluZm8ua2V5c2l6ZSA9IHNpemVvZihjaGFyW05BTUVEQVRBTEVOXSk7Ci0JaW5mby5lbnRyeXNp emUgPSBzaXplb2YoV2FpdEV2ZW50Q3VzdG9tRW50cnlCeU5hbWUpOwogCVdhaXRFdmVudEN1c3Rv bUhhc2hCeU5hbWUgPQotCQlTaG1lbUluaXRIYXNoKCJXYWl0RXZlbnRDdXN0b20gaGFzaCBieSBu YW1lIiwKLQkJCQkJICBXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX0lOSVRfU0laRSwKLQkJCQkJICBX QUlUX0VWRU5UX0NVU1RPTV9IQVNIX01BWF9TSVpFLAotCQkJCQkgICZpbmZvLAotCQkJCQkgIEhB U0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJCXNobWVtX2hhc2hfbWFrZShXYWl0RXZlbnRDdXN0 b21FbnRyeUJ5TmFtZSwgd2FpdF9ldmVudF9uYW1lLAorCQkJCQkJIldhaXRFdmVudEN1c3RvbSBo YXNoIGJ5IG5hbWUiLAorCQkJCQkJV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9JTklUX1NJWkUsCisJ CQkJCQlXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX01BWF9TSVpFKTsKIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jCmluZGV4IDU2MGIyN2YzY2E3Li5jYzMxMGMw NDRiMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3R5cGFuYWx5emUu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jCkBAIC0yMjMs NyArMjIzLDYgQEAgY29tcHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFs eXplQXR0ckZldGNoRnVuYyBmZXRjaGZ1bmMsCiAKIAkvKiBUaGlzIGlzIEQgZnJvbSB0aGUgTEMg YWxnb3JpdGhtLiAqLwogCUhUQUIJICAgKmVsZW1lbnRzX3RhYjsKLQlIQVNIQ1RMCQllbGVtX2hh c2hfY3RsOwogCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKIAogCS8qIFRoaXMgaXMgdGhl IGN1cnJlbnQgYnVja2V0IG51bWJlciBmcm9tIHRoZSBMQyBhbGdvcml0aG0gKi8KQEAgLTIzNiw3 ICsyMzUsNiBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5 emVBdHRyRmV0Y2hGdW5jIGZldGNoZnVuYywKIAlUcmFja0l0ZW0gICppdGVtOwogCWludAkJCXNs b3RfaWR4OwogCUhUQUIJICAgKmNvdW50X3RhYjsKLQlIQVNIQ1RMCQljb3VudF9oYXNoX2N0bDsK IAlERUNvdW50SXRlbSAqY291bnRfaXRlbTsKIAogCWV4dHJhX2RhdGEgPSAoQXJyYXlBbmFseXpl RXh0cmFEYXRhICopIHN0YXRzLT5leHRyYV9kYXRhOwpAQCAtMjc2LDI0ICsyNzQsMTMgQEAgY29t cHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVu YyBmZXRjaGZ1bmMsCiAJICogd29ycnkgYWJvdXQgb3ZlcmZsb3dpbmcgdGhlIGluaXRpYWwgc2l6 ZS4gQWxzbyB3ZSBkb24ndCBuZWVkIHRvIHBheSBhbnkKIAkgKiBhdHRlbnRpb24gdG8gbG9ja2lu ZyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuCiAJICovCi0JZWxlbV9oYXNoX2N0bC5rZXlzaXplID0g c2l6ZW9mKERhdHVtKTsKLQllbGVtX2hhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihUcmFja0l0 ZW0pOwotCWVsZW1faGFzaF9jdGwuaGFzaCA9IGVsZW1lbnRfaGFzaDsKLQllbGVtX2hhc2hfY3Rs Lm1hdGNoID0gZWxlbWVudF9tYXRjaDsKLQllbGVtX2hhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVt b3J5Q29udGV4dDsKLQllbGVtZW50c190YWIgPSBoYXNoX2NyZWF0ZSgiQW5hbHl6ZWQgZWxlbWVu dHMgdGFibGUiLAotCQkJCQkJCSAgIG51bV9tY2VsZW0sCi0JCQkJCQkJICAgJmVsZW1faGFzaF9j dGwsCi0JCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfQ09NUEFSRSB8 IEhBU0hfQ09OVEVYVCk7CisJZWxlbWVudHNfdGFiID0gaGFzaF9tYWtlX2ZuKFRyYWNrSXRlbSwg a2V5LAorCQkJCQkJCQkiQW5hbHl6ZWQgZWxlbWVudHMgdGFibGUiLCBudW1fbWNlbGVtLAorCQkJ CQkJCQllbGVtZW50X2hhc2gsIGVsZW1lbnRfbWF0Y2gpOwogCiAJLyogaGFzaHRhYmxlIGZvciBh cnJheSBkaXN0aW5jdCBlbGVtZW50cyBjb3VudHMgKi8KLQljb3VudF9oYXNoX2N0bC5rZXlzaXpl ID0gc2l6ZW9mKGludCk7Ci0JY291bnRfaGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKERFQ291 bnRJdGVtKTsKLQljb3VudF9oYXNoX2N0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0J Y291bnRfdGFiID0gaGFzaF9jcmVhdGUoIkFycmF5IGRpc3RpbmN0IGVsZW1lbnQgY291bnQgdGFi bGUiLAotCQkJCQkJCTY0LAotCQkJCQkJCSZjb3VudF9oYXNoX2N0bCwKLQkJCQkJCQlIQVNIX0VM RU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwljb3VudF90YWIgPSBoYXNoX21ha2Uo REVDb3VudEl0ZW0sIGNvdW50LAorCQkJCQkJICAiQXJyYXkgZGlzdGluY3QgZWxlbWVudCBjb3Vu dCB0YWJsZSIsIDY0KTsKIAogCS8qIEluaXRpYWxpemUgY291bnRlcnMuICovCiAJYl9jdXJyZW50 ID0gMTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvanNvbi5jCmluZGV4IDA2ZGQ2MmYwMDA4Li41NmFhODhlNDk1ZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbi5jCkBAIC05MzMsMTkgKzkzMyw4IEBAIGpzb25fdW5pcXVlX2hhc2hfbWF0 Y2goY29uc3Qgdm9pZCAqa2V5MSwgY29uc3Qgdm9pZCAqa2V5MiwgU2l6ZSBrZXlzaXplKQogc3Rh dGljIHZvaWQKIGpzb25fdW5pcXVlX2NoZWNrX2luaXQoSnNvblVuaXF1ZUNoZWNrU3RhdGUgKmN4 dCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KLQltZW1zZXQoJmN0bCwgMCwgc2l6ZW9mKGN0bCkpOwot CWN0bC5rZXlzaXplID0gc2l6ZW9mKEpzb25VbmlxdWVIYXNoRW50cnkpOwotCWN0bC5lbnRyeXNp emUgPSBzaXplb2YoSnNvblVuaXF1ZUhhc2hFbnRyeSk7Ci0JY3RsLmhjeHQgPSBDdXJyZW50TWVt b3J5Q29udGV4dDsKLQljdGwuaGFzaCA9IGpzb25fdW5pcXVlX2hhc2g7Ci0JY3RsLm1hdGNoID0g anNvbl91bmlxdWVfaGFzaF9tYXRjaDsKLQotCSpjeHQgPSBoYXNoX2NyZWF0ZSgianNvbiBvYmpl Y3QgaGFzaHRhYmxlIiwKLQkJCQkJICAgMzIsCi0JCQkJCSAgICZjdGwsCi0JCQkJCSAgIEhBU0hf RUxFTSB8IEhBU0hfQ09OVEVYVCB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX0NPTVBBUkUpOworCSpj eHQgPSBoYXNoc2V0X21ha2VfZm4oSnNvblVuaXF1ZUhhc2hFbnRyeSwgImpzb24gb2JqZWN0IGhh c2h0YWJsZSIsIDMyLAorCQkJCQkJICAganNvbl91bmlxdWVfaGFzaCwganNvbl91bmlxdWVfaGFz aF9tYXRjaCk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvanNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKaW5k ZXggMjJkZTE4YmM1YjkuLmIzNjlhOWUzYjE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvanNvbmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5j CkBAIC0zODA4LDE4ICszODA4LDEyIEBAIHN0YXRpYyBIVEFCICoKIGdldF9qc29uX29iamVjdF9h c19oYXNoKGNvbnN0IGNoYXIgKmpzb24sIGludCBsZW4sIGNvbnN0IGNoYXIgKmZ1bmNuYW1lLAog CQkJCQkJTm9kZSAqZXNjb250ZXh0KQogewotCUhBU0hDVEwJCWN0bDsKIAlIVEFCCSAgICp0YWI7 CiAJSkhhc2hTdGF0ZSAqc3RhdGU7CiAJSnNvblNlbUFjdGlvbiAqc2VtOwogCi0JY3RsLmtleXNp emUgPSBOQU1FREFUQUxFTjsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKEpzb25IYXNoRW50cnkp OwotCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7Ci0JdGFiID0gaGFzaF9jcmVhdGUo Impzb24gb2JqZWN0IGhhc2h0YWJsZSIsCi0JCQkJCSAgMTAwLAotCQkJCQkgICZjdGwsCi0JCQkJ CSAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTIHwgSEFTSF9DT05URVhUKTsKKwl0YWIgPSBoYXNo X21ha2UoSnNvbkhhc2hFbnRyeSwgZm5hbWUsCisJCQkJCSJqc29uIG9iamVjdCBoYXNodGFibGUi LCAxMDApOwogCiAJc3RhdGUgPSBwYWxsb2MwKHNpemVvZihKSGFzaFN0YXRlKSk7CiAJc2VtID0g cGFsbG9jMChzaXplb2YoSnNvblNlbUFjdGlvbikpOwpAQCAtNDIxMyw3ICs0MjA3LDYgQEAgcG9w dWxhdGVfcmVjb3Jkc2V0X29iamVjdF9zdGFydCh2b2lkICpzdGF0ZSkKIHsKIAlQb3B1bGF0ZVJl Y29yZHNldFN0YXRlICpfc3RhdGUgPSAoUG9wdWxhdGVSZWNvcmRzZXRTdGF0ZSAqKSBzdGF0ZTsK IAlpbnQJCQlsZXhfbGV2ZWwgPSBfc3RhdGUtPmxleC0+bGV4X2xldmVsOwotCUhBU0hDVEwJCWN0 bDsKIAogCS8qIFJlamVjdCBvYmplY3QgYXQgdG9wIGxldmVsOiB3ZSBtdXN0IGhhdmUgYW4gYXJy YXkgYXQgbGV2ZWwgMCAqLwogCWlmIChsZXhfbGV2ZWwgPT0gMCkKQEAgLTQyMjcsMTMgKzQyMjAs OCBAQCBwb3B1bGF0ZV9yZWNvcmRzZXRfb2JqZWN0X3N0YXJ0KHZvaWQgKnN0YXRlKQogCQlyZXR1 cm4gSlNPTl9TVUNDRVNTOwogCiAJLyogT2JqZWN0IGF0IGxldmVsIDE6IHNldCB1cCBhIG5ldyBo YXNoIHRhYmxlIGZvciB0aGlzIG9iamVjdCAqLwotCWN0bC5rZXlzaXplID0gTkFNRURBVEFMRU47 Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihKc29uSGFzaEVudHJ5KTsKLQljdGwuaGN4dCA9IEN1 cnJlbnRNZW1vcnlDb250ZXh0OwotCV9zdGF0ZS0+anNvbl9oYXNoID0gaGFzaF9jcmVhdGUoImpz b24gb2JqZWN0IGhhc2h0YWJsZSIsCi0JCQkJCQkJCQkxMDAsCi0JCQkJCQkJCQkmY3RsLAotCQkJ CQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTIHwgSEFTSF9DT05URVhUKTsKKwlfc3RhdGUt Pmpzb25faGFzaCA9IGhhc2hfbWFrZShKc29uSGFzaEVudHJ5LCBmbmFtZSwKKwkJCQkJCQkJICAi anNvbiBvYmplY3QgaGFzaHRhYmxlIiwgMTAwKTsKIAogCXJldHVybiBKU09OX1NVQ0NFU1M7CiB9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKaW5kZXggZmU2ZGNlOWNiYTMuLjg0YjQzZjVjNGUw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbWN4dGZ1bmNzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L21jeHRmdW5jcy5jCkBAIC0xODUsMTcgKzE4NSwxMCBAQCBwZ19n ZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMoUEdfRlVOQ1RJT05fQVJHUykKIAlSZXR1cm5TZXRJ bmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CiAJaW50 CQkJY29udGV4dF9pZDsKIAlMaXN0CSAgICpjb250ZXh0czsKLQlIQVNIQ1RMCQljdGw7CiAJSFRB QgkgICAqY29udGV4dF9pZF9sb29rdXA7CiAKLQljdGwua2V5c2l6ZSA9IHNpemVvZihNZW1vcnlD b250ZXh0KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKE1lbW9yeUNvbnRleHRJZCk7Ci0JY3Rs LmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQotCWNvbnRleHRfaWRfbG9va3VwID0gaGFz aF9jcmVhdGUoInBnX2dldF9iYWNrZW5kX21lbW9yeV9jb250ZXh0cyIsCi0JCQkJCQkJCQkyNTYs Ci0JCQkJCQkJCQkmY3RsLAotCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hf Q09OVEVYVCk7CisJY29udGV4dF9pZF9sb29rdXAgPSBoYXNoX21ha2UoTWVtb3J5Q29udGV4dElk LCBjb250ZXh0LAorCQkJCQkJCQkgICJwZ19nZXRfYmFja2VuZF9tZW1vcnlfY29udGV4dHMiLCAy NTYpOwogCiAJSW5pdE1hdGVyaWFsaXplZFNSRihmY2luZm8sIDApOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9yaV90cmlnZ2Vycy5jCmluZGV4IDA1OWZjNWViZjYwLi5lMGYwNWYyY2M0YSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKQEAgLTI4NTcsMzAgKzI4NTcsMjUgQEAgcmlfTnVsbENo ZWNrKFR1cGxlRGVzYyB0dXBEZXNjLAogc3RhdGljIHZvaWQKIHJpX0luaXRIYXNoVGFibGVzKHZv aWQpCiB7Ci0JSEFTSENUTAkJY3RsOwotCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQlj dGwuZW50cnlzaXplID0gc2l6ZW9mKFJJX0NvbnN0cmFpbnRJbmZvKTsKLQlyaV9jb25zdHJhaW50 X2NhY2hlID0gaGFzaF9jcmVhdGUoIlJJIGNvbnN0cmFpbnQgY2FjaGUiLAotCQkJCQkJCQkJICBS SV9JTklUX0NPTlNUUkFJTlRIQVNIU0laRSwKLQkJCQkJCQkJCSAgJmN0bCwgSEFTSF9FTEVNIHwg SEFTSF9CTE9CUyk7CisJcmlfY29uc3RyYWludF9jYWNoZSA9IGhhc2hfbWFrZV9jeHQoUklfQ29u c3RyYWludEluZm8sIGNvbnN0cmFpbnRfaWQsCisJCQkJCQkJCQkJIlJJIGNvbnN0cmFpbnQgY2Fj aGUiLAorCQkJCQkJCQkJCVJJX0lOSVRfQ09OU1RSQUlOVEhBU0hTSVpFLAorCQkJCQkJCQkJCVRv cE1lbW9yeUNvbnRleHQpOwogCiAJLyogQXJyYW5nZSB0byBmbHVzaCBjYWNoZSBvbiBwZ19jb25z dHJhaW50IGNoYW5nZXMgKi8KIAlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhDT05TVFJP SUQsCiAJCQkJCQkJCSAgSW52YWxpZGF0ZUNvbnN0cmFpbnRDYWNoZUNhbGxCYWNrLAogCQkJCQkJ CQkgIChEYXR1bSkgMCk7CiAKLQljdGwua2V5c2l6ZSA9IHNpemVvZihSSV9RdWVyeUtleSk7Ci0J Y3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSSV9RdWVyeUhhc2hFbnRyeSk7Ci0JcmlfcXVlcnlfY2Fj aGUgPSBoYXNoX2NyZWF0ZSgiUkkgcXVlcnkgY2FjaGUiLAotCQkJCQkJCQkgUklfSU5JVF9RVUVS WUhBU0hTSVpFLAotCQkJCQkJCQkgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7Ci0KLQlj dGwua2V5c2l6ZSA9IHNpemVvZihSSV9Db21wYXJlS2V5KTsKLQljdGwuZW50cnlzaXplID0gc2l6 ZW9mKFJJX0NvbXBhcmVIYXNoRW50cnkpOwotCXJpX2NvbXBhcmVfY2FjaGUgPSBoYXNoX2NyZWF0 ZSgiUkkgY29tcGFyZSBjYWNoZSIsCisJcmlfcXVlcnlfY2FjaGUgPSBoYXNoX21ha2VfY3h0KFJJ X1F1ZXJ5SGFzaEVudHJ5LCBrZXksCisJCQkJCQkJCSAgICJSSSBxdWVyeSBjYWNoZSIsCiAJCQkJ CQkJCSAgIFJJX0lOSVRfUVVFUllIQVNIU0laRSwKLQkJCQkJCQkJICAgJmN0bCwgSEFTSF9FTEVN IHwgSEFTSF9CTE9CUyk7CisJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOworCisJcmlfY29t cGFyZV9jYWNoZSA9IGhhc2hfbWFrZV9jeHQoUklfQ29tcGFyZUhhc2hFbnRyeSwga2V5LAorCQkJ CQkJCQkJICJSSSBjb21wYXJlIGNhY2hlIiwKKwkJCQkJCQkJCSBSSV9JTklUX1FVRVJZSEFTSFNJ WkUsCisJCQkJCQkJCQkgVG9wTWVtb3J5Q29udGV4dCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jCmluZGV4IDZjZjkwYmU0MGJiLi45OGQzMzFjMjkwZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYwpAQCAtMzg4Nyw3ICszODg3LDYgQEAgc3RhdGljIHZvaWQKIHNldF9ydGFi bGVfbmFtZXMoZGVwYXJzZV9uYW1lc3BhY2UgKmRwbnMsIExpc3QgKnBhcmVudF9uYW1lc3BhY2Vz LAogCQkJCSBCaXRtYXBzZXQgKnJlbHNfdXNlZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKIAlI VEFCCSAgICpuYW1lc19oYXNoOwogCU5hbWVIYXNoRW50cnkgKmhlbnRyeTsKIAlib29sCQlmb3Vu ZDsKQEAgLTM5MDMsMTMgKzM5MDIsOSBAQCBzZXRfcnRhYmxlX25hbWVzKGRlcGFyc2VfbmFtZXNw YWNlICpkcG5zLCBMaXN0ICpwYXJlbnRfbmFtZXNwYWNlcywKIAkgKiBXZSB1c2UgYSBoYXNoIHRh YmxlIHRvIGhvbGQga25vd24gbmFtZXMsIHNvIHRoYXQgdGhpcyBwcm9jZXNzIGlzIE8oTikKIAkg KiBub3QgTyhOXjIpIGZvciBOIG5hbWVzLgogCSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBOQU1F REFUQUxFTjsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoTmFtZUhhc2hFbnRyeSk7Ci0J aGFzaF9jdGwuaGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OwotCW5hbWVzX2hhc2ggPSBoYXNo X2NyZWF0ZSgic2V0X3J0YWJsZV9uYW1lcyBuYW1lcyIsCi0JCQkJCQkJIGxpc3RfbGVuZ3RoKGRw bnMtPnJ0YWJsZSksCi0JCQkJCQkJICZoYXNoX2N0bCwKLQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFT SF9TVFJJTkdTIHwgSEFTSF9DT05URVhUKTsKKwluYW1lc19oYXNoID0gaGFzaF9tYWtlKE5hbWVI YXNoRW50cnksIG5hbWUsCisJCQkJCQkgICAic2V0X3J0YWJsZV9uYW1lcyBuYW1lcyIsCisJCQkJ CQkgICBsaXN0X2xlbmd0aChkcG5zLT5ydGFibGUpKTsKIAogCS8qIFByZWxvYWQgdGhlIGhhc2gg dGFibGUgd2l0aCBuYW1lcyBhcHBlYXJpbmcgaW4gcGFyZW50X25hbWVzcGFjZXMgKi8KIAlmb3Jl YWNoKGxjLCBwYXJlbnRfbmFtZXNwYWNlcykKQEAgLTQ5ODAsNyArNDk3NSw2IEBAIGV4cGFuZF9j b2xuYW1lc19hcnJheV90byhkZXBhcnNlX2NvbHVtbnMgKmNvbGluZm8sIGludCBuKQogc3RhdGlj IHZvaWQKIGJ1aWxkX2NvbGluZm9fbmFtZXNfaGFzaChkZXBhcnNlX2NvbHVtbnMgKmNvbGluZm8p CiB7Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAJaW50CQkJaTsKIAlMaXN0Q2VsbCAgICpsYzsKIApA QCAtNDk5NiwxMyArNDk5MCwxMCBAQCBidWlsZF9jb2xpbmZvX25hbWVzX2hhc2goZGVwYXJzZV9j b2x1bW5zICpjb2xpbmZvKQogCSAqIFNldCB1cCB0aGUgaGFzaCB0YWJsZS4gIFRoZSBlbnRyaWVz IGFyZSBqdXN0IHN0cmluZ3Mgd2l0aCBubyBvdGhlcgogCSAqIHBheWxvYWQuCiAJICovCi0JaGFz aF9jdGwua2V5c2l6ZSA9IE5BTUVEQVRBTEVOOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IE5BTUVE QVRBTEVOOwotCWhhc2hfY3RsLmhjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKLQljb2xpbmZv LT5uYW1lc19oYXNoID0gaGFzaF9jcmVhdGUoImRlcGFyc2VfY29sdW1ucyBuYW1lcyIsCi0JCQkJ CQkJCQkgIGNvbGluZm8tPm51bV9jb2xzICsgY29saW5mby0+bnVtX25ld19jb2xzLAotCQkJCQkJ CQkJICAmaGFzaF9jdGwsCi0JCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhB U0hfQ09OVEVYVCk7CisJY29saW5mby0+bmFtZXNfaGFzaCA9CisJCWhhc2hzZXRfbWFrZV9jeHQo TmFtZURhdGEsICJkZXBhcnNlX2NvbHVtbnMgbmFtZXMiLAorCQkJCQkJIGNvbGluZm8tPm51bV9j b2xzICsgY29saW5mby0+bnVtX25ld19jb2xzLAorCQkJCQkJIEN1cnJlbnRNZW1vcnlDb250ZXh0 KTsKIAogCS8qCiAJICogUHJlbG9hZCB0aGUgaGFzaCB0YWJsZSB3aXRoIGFueSBuYW1lcyBhbHJl YWR5IHByZXNlbnQgKHRoZXNlIHdvdWxkIGhhdmUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2F0dG9wdGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9hdHRvcHRj YWNoZS5jCmluZGV4IDQ1ZDFlMmJlMDA3Li5jYWFlMzllM2JiMSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvYXR0b3B0Y2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9hdHRvcHRjYWNoZS5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAidXRpbHMvY2F0 Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvaW52 YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2Nh Y2hlLmgiCiAjaW5jbHVkZSAidmFyYXR0LmgiCiAKQEAgLTk2LDIyICs5NywxNSBAQCByZWxhdHRf Y2FjaGVfc3lzaGFzaChjb25zdCB2b2lkICprZXksIFNpemUga2V5c2l6ZSkKIHN0YXRpYyB2b2lk CiBJbml0aWFsaXplQXR0b3B0Q2FjaGUodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KLQkvKiBJ bml0aWFsaXplIHRoZSBoYXNoIHRhYmxlLiAqLwotCWN0bC5rZXlzaXplID0gc2l6ZW9mKEF0dG9w dENhY2hlS2V5KTsKLQljdGwuZW50cnlzaXplID0gc2l6ZW9mKEF0dG9wdENhY2hlRW50cnkpOwot CiAJLyoKIAkgKiBBdHRvcHRDYWNoZUVudHJ5IHRha2VzIGhhc2ggdmFsdWUgZnJvbSB0aGUgc3lz dGVtIGNhY2hlLiBGb3IKIAkgKiBBdHRvcHRDYWNoZUhhc2ggd2UgdXNlIHRoZSBzYW1lIGhhc2gg aW4gb3JkZXIgdG8gc3BlZWR1cCBzZWFyY2ggYnkgaGFzaAogCSAqIHZhbHVlLiBUaGlzIGlzIHVz ZWQgYnkgaGFzaF9zZXFfaW5pdF93aXRoX2hhc2hfdmFsdWUoKS4KIAkgKi8KLQljdGwuaGFzaCA9 IHJlbGF0dF9jYWNoZV9zeXNoYXNoOwotCi0JQXR0b3B0Q2FjaGVIYXNoID0KLQkJaGFzaF9jcmVh dGUoIkF0dG9wdCBjYWNoZSIsIDI1NiwgJmN0bCwKLQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9GVU5D VElPTik7CisJQXR0b3B0Q2FjaGVIYXNoID0gaGFzaF9tYWtlX2ZuX2N4dChBdHRvcHRDYWNoZUVu dHJ5LCBrZXksCisJCQkJCQkJCQkgICAiQXR0b3B0IGNhY2hlIiwgMjU2LAorCQkJCQkJCQkJICAg cmVsYXR0X2NhY2hlX3N5c2hhc2gsIE5VTEwsCisJCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0 KTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSd2ZSBpbml0aWFsaXplZCBDYWNoZU1lbW9yeUNvbnRleHQu ICovCiAJaWYgKCFDYWNoZU1lbW9yeUNvbnRleHQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9ldnRjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0Y2FjaGUu YwppbmRleCA3NmJhMmRiNTM5MC4uZjVjZTg3M2Y0M2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL2V2dGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0 Y2FjaGUuYwpAQCAtNzYsNyArNzYsNiBAQCBFdmVudENhY2hlTG9va3VwKEV2ZW50VHJpZ2dlckV2 ZW50IGV2ZW50KQogc3RhdGljIHZvaWQKIEJ1aWxkRXZlbnRUcmlnZ2VyQ2FjaGUodm9pZCkKIHsK LQlIQVNIQ1RMCQljdGw7CiAJSFRBQgkgICAqY2FjaGU7CiAJUmVsYXRpb24JcmVsOwogCVJlbGF0 aW9uCWlyZWw7CkBAIC0xMTMsMTEgKzExMiw5IEBAIEJ1aWxkRXZlbnRUcmlnZ2VyQ2FjaGUodm9p ZCkKIAlFdmVudFRyaWdnZXJDYWNoZVN0YXRlID0gRVRDU19SRUJVSUxEX1NUQVJURUQ7CiAKIAkv KiBDcmVhdGUgbmV3IGhhc2ggdGFibGUuICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoRXZlbnRU cmlnZ2VyRXZlbnQpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoRXZlbnRUcmlnZ2VyQ2FjaGVF bnRyeSk7Ci0JY3RsLmhjeHQgPSBFdmVudFRyaWdnZXJDYWNoZUNvbnRleHQ7Ci0JY2FjaGUgPSBo YXNoX2NyZWF0ZSgiRXZlbnRUcmlnZ2VyQ2FjaGVIYXNoIiwgMzIsICZjdGwsCi0JCQkJCQlIQVNI X0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwljYWNoZSA9IGhhc2hfbWFrZV9j eHQoRXZlbnRUcmlnZ2VyQ2FjaGVFbnRyeSwgZXZlbnQsCisJCQkJCQkgICJFdmVudFRyaWdnZXJD YWNoZUhhc2giLCAzMiwKKwkJCQkJCSAgRXZlbnRUcmlnZ2VyQ2FjaGVDb250ZXh0KTsKIAogCS8q CiAJICogUHJlcGFyZSB0byBzY2FuIHBnX2V2ZW50X3RyaWdnZXIgaW4gbmFtZSBvcmRlci4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Z1bmNjYWNoZS5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvZnVuY2NhY2hlLmMKaW5kZXggYWZjMDQ4YTA1MWUuLjM0NDM4YTlmOTNi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9mdW5jY2FjaGUuYwpAQCAtNTgsMTkgKzU4LDEzIEBAIHN0 YXRpYyBpbnQJY2Z1bmNfbWF0Y2goY29uc3Qgdm9pZCAqa2V5MSwgY29uc3Qgdm9pZCAqa2V5Miwg U2l6ZSBrZXlzaXplKTsKIHN0YXRpYyB2b2lkCiBjZnVuY19oYXNodGFibGVfaW5pdCh2b2lkKQog ewotCUhBU0hDVEwJCWN0bDsKLQogCS8qIGRvbid0IGFsbG93IGRvdWJsZS1pbml0aWFsaXphdGlv biAqLwogCUFzc2VydChjZnVuY19oYXNodGFibGUgPT0gTlVMTCk7CiAKLQljdGwua2V5c2l6ZSA9 IHNpemVvZihDYWNoZWRGdW5jdGlvbkhhc2hLZXkpOwotCWN0bC5lbnRyeXNpemUgPSBzaXplb2Yo Q2FjaGVkRnVuY3Rpb25IYXNoRW50cnkpOwotCWN0bC5oYXNoID0gY2Z1bmNfaGFzaDsKLQljdGwu bWF0Y2ggPSBjZnVuY19tYXRjaDsKLQljZnVuY19oYXNodGFibGUgPSBoYXNoX2NyZWF0ZSgiQ2Fj aGVkIGZ1bmN0aW9uIGhhc2giLAotCQkJCQkJCQkgIEZVTkNTX1BFUl9VU0VSLAotCQkJCQkJCQkg ICZjdGwsCi0JCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8IEhBU0hfQ09NUEFS RSk7CisJY2Z1bmNfaGFzaHRhYmxlID0gaGFzaF9tYWtlX2ZuX2N4dChDYWNoZWRGdW5jdGlvbkhh c2hFbnRyeSwga2V5LAorCQkJCQkJCQkJICAgIkNhY2hlZCBmdW5jdGlvbiBoYXNoIiwgRlVOQ1Nf UEVSX1VTRVIsCisJCQkJCQkJCQkgICBjZnVuY19oYXNoLCBjZnVuY19tYXRjaCwKKwkJCQkJCQkJ CSAgIFRvcE1lbW9yeUNvbnRleHQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hl LmMKaW5kZXggOTE1ZDBiYzkwODQuLmI3NmQ2YmJkNWM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3Jl bGNhY2hlLmMKQEAgLTE2NzcsMTcgKzE2NzcsMTQgQEAgTG9va3VwT3BjbGFzc0luZm8oT2lkIG9w ZXJhdG9yQ2xhc3NPaWQsCiAKIAlpZiAoT3BDbGFzc0NhY2hlID09IE5VTEwpCiAJewotCQkvKiBG aXJzdCB0aW1lIHRocm91Z2g6IGluaXRpYWxpemUgdGhlIG9wY2xhc3MgY2FjaGUgKi8KLQkJSEFT SENUTAkJY3RsOwotCiAJCS8qIEFsc28gbWFrZSBzdXJlIENhY2hlTWVtb3J5Q29udGV4dCBleGlz dHMgKi8KIAkJaWYgKCFDYWNoZU1lbW9yeUNvbnRleHQpCiAJCQlDcmVhdGVDYWNoZU1lbW9yeUNv bnRleHQoKTsKIAotCQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQljdGwuZW50cnlzaXpl ID0gc2l6ZW9mKE9wQ2xhc3NDYWNoZUVudCk7Ci0JCU9wQ2xhc3NDYWNoZSA9IGhhc2hfY3JlYXRl KCJPcGVyYXRvciBjbGFzcyBjYWNoZSIsIDY0LAotCQkJCQkJCQkgICAmY3RsLCBIQVNIX0VMRU0g fCBIQVNIX0JMT0JTKTsKKwkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBv cGNsYXNzIGNhY2hlICovCisJCU9wQ2xhc3NDYWNoZSA9IGhhc2hfbWFrZV9jeHQoT3BDbGFzc0Nh Y2hlRW50LCBvcGNsYXNzb2lkLAorCQkJCQkJCQkJICJPcGVyYXRvciBjbGFzcyBjYWNoZSIsIDY0 LAorCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCX0KIAogCW9wY2VudHJ5ID0gKE9wQ2xh c3NDYWNoZUVudCAqKSBoYXNoX3NlYXJjaChPcENsYXNzQ2FjaGUsCkBAIC00MDAxLDcgKzM5OTgs NiBAQCBSZWxhdGlvbkFzc3VtZU5ld1JlbGZpbGVsb2NhdG9yKFJlbGF0aW9uIHJlbGF0aW9uKQog dm9pZAogUmVsYXRpb25DYWNoZUluaXRpYWxpemUodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7CiAJ aW50CQkJYWxsb2NzaXplOwogCiAJLyoKQEAgLTQwMTMsMTAgKzQwMDksOSBAQCBSZWxhdGlvbkNh Y2hlSW5pdGlhbGl6ZSh2b2lkKQogCS8qCiAJICogY3JlYXRlIGhhc2h0YWJsZSB0aGF0IGluZGV4 ZXMgdGhlIHJlbGNhY2hlCiAJICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQljdGwu ZW50cnlzaXplID0gc2l6ZW9mKFJlbElkQ2FjaGVFbnQpOwotCVJlbGF0aW9uSWRDYWNoZSA9IGhh c2hfY3JlYXRlKCJSZWxjYWNoZSBieSBPSUQiLCBJTklUUkVMQ0FDSEVTSVpFLAotCQkJCQkJCQkg ICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCVJlbGF0aW9uSWRDYWNoZSA9IGhhc2hf bWFrZV9jeHQoUmVsSWRDYWNoZUVudCwgcmVsb2lkLAorCQkJCQkJCQkJIlJlbGNhY2hlIGJ5IE9J RCIsIElOSVRSRUxDQUNIRVNJWkUsCisJCQkJCQkJCQlUb3BNZW1vcnlDb250ZXh0KTsKIAogCS8q CiAJICogcmVzZXJ2ZSBlbm91Z2ggaW5fcHJvZ3Jlc3NfbGlzdCBzbG90cyBmb3IgbWFueSBjYXNl cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jCmluZGV4IDBiNmY5 Y2YzZmExLi42OWFiYTQ2M2VhZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv cmVsZmlsZW51bWJlcm1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGZpbGVu dW1iZXJtYXAuYwpAQCAtODUsNyArODUsNiBAQCBSZWxmaWxlbnVtYmVyTWFwSW52YWxpZGF0ZUNh bGxiYWNrKERhdHVtIGFyZywgT2lkIHJlbGlkKQogc3RhdGljIHZvaWQKIEluaXRpYWxpemVSZWxm aWxlbnVtYmVyTWFwKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwogCWludAkJCWk7CiAKIAkvKiBN YWtlIHN1cmUgd2UndmUgaW5pdGlhbGl6ZWQgQ2FjaGVNZW1vcnlDb250ZXh0LiAqLwpAQCAtMTEz LDEzICsxMTIsOSBAQCBJbml0aWFsaXplUmVsZmlsZW51bWJlck1hcCh2b2lkKQogCSAqIGluaXRp YWxpemVkIHdoZW4gZm1ncl9pbmZvX2N4dCgpIGFib3ZlIEVSUk9ScyBvdXQgd2l0aCBhbiBvdXQg b2YgbWVtb3J5CiAJICogZXJyb3IuCiAJICovCi0JY3RsLmtleXNpemUgPSBzaXplb2YoUmVsZmls ZW51bWJlck1hcEtleSk7Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZWxmaWxlbnVtYmVyTWFw RW50cnkpOwotCWN0bC5oY3h0ID0gQ2FjaGVNZW1vcnlDb250ZXh0OwotCiAJUmVsZmlsZW51bWJl ck1hcEhhc2ggPQotCQloYXNoX2NyZWF0ZSgiUmVsZmlsZW51bWJlck1hcCBjYWNoZSIsIDY0LCAm Y3RsLAotCQkJCQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwkJaGFz aF9tYWtlX2N4dChSZWxmaWxlbnVtYmVyTWFwRW50cnksIGtleSwKKwkJCQkJICAiUmVsZmlsZW51 bWJlck1hcCBjYWNoZSIsIDY0LCBDYWNoZU1lbW9yeUNvbnRleHQpOwogCiAJLyogV2F0Y2ggZm9y IGludmFsaWRhdGlvbiBldmVudHMuICovCiAJQ2FjaGVSZWdpc3RlclJlbGNhY2hlQ2FsbGJhY2so UmVsZmlsZW51bWJlck1hcEludmFsaWRhdGVDYWxsYmFjaywKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zcGNj YWNoZS5jCmluZGV4IDIzNDU4NTk5Mjk4Li5iY2ZkNmE5ZjBkMiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9zcGNjYWNoZS5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAidXRpbHMvY2F0Y2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIK KyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3NwY2NhY2hlLmgi CiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ2YXJhdHQuaCIKQEAgLTc3 LDE0ICs3OCwxMCBAQCBJbnZhbGlkYXRlVGFibGVTcGFjZUNhY2hlQ2FsbGJhY2soRGF0dW0gYXJn LCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHN0YXRpYyB2b2lkCiBJbml0aWFsaXpl VGFibGVTcGFjZUNhY2hlKHZvaWQpCiB7Ci0JSEFTSENUTAkJY3RsOwotCiAJLyogSW5pdGlhbGl6 ZSB0aGUgaGFzaCB0YWJsZS4gKi8KLQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWN0bC5l bnRyeXNpemUgPSBzaXplb2YoVGFibGVTcGFjZUNhY2hlRW50cnkpOwogCVRhYmxlU3BhY2VDYWNo ZUhhc2ggPQotCQloYXNoX2NyZWF0ZSgiVGFibGVTcGFjZSBjYWNoZSIsIDE2LCAmY3RsLAotCQkJ CQlIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJaGFzaF9tYWtlX2N4dChUYWJsZVNwYWNlQ2Fj aGVFbnRyeSwgb2lkLAorCQkJCQkgICJUYWJsZVNwYWNlIGNhY2hlIiwgMTYsIFRvcE1lbW9yeUNv bnRleHQpOwogCiAJLyogTWFrZSBzdXJlIHdlJ3ZlIGluaXRpYWxpemVkIENhY2hlTWVtb3J5Q29u dGV4dC4gKi8KIAlpZiAoIUNhY2hlTWVtb3J5Q29udGV4dCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90c19j YWNoZS5jCmluZGV4IGU4YWU1MzIzOGQwLi5jZmE2ZDhiMDlhNCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvdHNfY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS90c19jYWNoZS5jCkBAIC0xMTcsMTIgKzExNyw5IEBAIGxvb2t1cF90c19wYXJzZXJfY2FjaGUo T2lkIHByc0lkKQogCWlmIChUU1BhcnNlckNhY2hlSGFzaCA9PSBOVUxMKQogCXsKIAkJLyogRmly c3QgdGltZSB0aHJvdWdoOiBpbml0aWFsaXplIHRoZSBoYXNoIHRhYmxlICovCi0JCUhBU0hDVEwJ CWN0bDsKLQotCQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQljdGwuZW50cnlzaXplID0g c2l6ZW9mKFRTUGFyc2VyQ2FjaGVFbnRyeSk7Ci0JCVRTUGFyc2VyQ2FjaGVIYXNoID0gaGFzaF9j cmVhdGUoIlRzZWFyY2ggcGFyc2VyIGNhY2hlIiwgNCwKLQkJCQkJCQkJCQkmY3RsLCBIQVNIX0VM RU0gfCBIQVNIX0JMT0JTKTsKKwkJVFNQYXJzZXJDYWNoZUhhc2ggPSBoYXNoX21ha2VfY3h0KFRT UGFyc2VyQ2FjaGVFbnRyeSwgcHJzSWQsCisJCQkJCQkJCQkJICAiVHNlYXJjaCBwYXJzZXIgY2Fj aGUiLCA0LAorCQkJCQkJCQkJCSAgVG9wTWVtb3J5Q29udGV4dCk7CiAJCS8qIEZsdXNoIGNhY2hl IG9uIHBnX3RzX3BhcnNlciBjaGFuZ2VzICovCiAJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxi YWNrKFRTUEFSU0VST0lELCBJbnZhbGlkYXRlVFNDYWNoZUNhbGxCYWNrLAogCQkJCQkJCQkJICBQ b2ludGVyR2V0RGF0dW0oVFNQYXJzZXJDYWNoZUhhc2gpKTsKQEAgLTIxMiwxMiArMjA5LDkgQEAg bG9va3VwX3RzX2RpY3Rpb25hcnlfY2FjaGUoT2lkIGRpY3RJZCkKIAlpZiAoVFNEaWN0aW9uYXJ5 Q2FjaGVIYXNoID09IE5VTEwpCiAJewogCQkvKiBGaXJzdCB0aW1lIHRocm91Z2g6IGluaXRpYWxp emUgdGhlIGhhc2ggdGFibGUgKi8KLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5rZXlzaXplID0g c2l6ZW9mKE9pZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoVFNEaWN0aW9uYXJ5Q2FjaGVF bnRyeSk7Ci0JCVRTRGljdGlvbmFyeUNhY2hlSGFzaCA9IGhhc2hfY3JlYXRlKCJUc2VhcmNoIGRp Y3Rpb25hcnkgY2FjaGUiLCA4LAotCQkJCQkJCQkJCQkmY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JM T0JTKTsKKwkJVFNEaWN0aW9uYXJ5Q2FjaGVIYXNoID0gaGFzaF9tYWtlX2N4dChUU0RpY3Rpb25h cnlDYWNoZUVudHJ5LCBkaWN0SWQsCisJCQkJCQkJCQkJCSAgIlRzZWFyY2ggZGljdGlvbmFyeSBj YWNoZSIsIDgsCisJCQkJCQkJCQkJCSAgVG9wTWVtb3J5Q29udGV4dCk7CiAJCS8qIEZsdXNoIGNh Y2hlIG9uIHBnX3RzX2RpY3QgYW5kIHBnX3RzX3RlbXBsYXRlIGNoYW5nZXMgKi8KIAkJQ2FjaGVS ZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soVFNESUNUT0lELCBJbnZhbGlkYXRlVFNDYWNoZUNhbGxC YWNrLAogCQkJCQkJCQkJICBQb2ludGVyR2V0RGF0dW0oVFNEaWN0aW9uYXJ5Q2FjaGVIYXNoKSk7 CkBAIC0zNjMsMTIgKzM1Nyw5IEBAIGxvb2t1cF90c19kaWN0aW9uYXJ5X2NhY2hlKE9pZCBkaWN0 SWQpCiBzdGF0aWMgdm9pZAogaW5pdF90c19jb25maWdfY2FjaGUodm9pZCkKIHsKLQlIQVNIQ1RM CQljdGw7Ci0KLQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCWN0bC5lbnRyeXNpemUgPSBz aXplb2YoVFNDb25maWdDYWNoZUVudHJ5KTsKLQlUU0NvbmZpZ0NhY2hlSGFzaCA9IGhhc2hfY3Jl YXRlKCJUc2VhcmNoIGNvbmZpZ3VyYXRpb24gY2FjaGUiLCAxNiwKLQkJCQkJCQkJCSZjdGwsIEhB U0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCVRTQ29uZmlnQ2FjaGVIYXNoID0gaGFzaF9tYWtlX2N4 dChUU0NvbmZpZ0NhY2hlRW50cnksIGNmZ0lkLAorCQkJCQkJCQkJICAiVHNlYXJjaCBjb25maWd1 cmF0aW9uIGNhY2hlIiwgMTYsCisJCQkJCQkJCQkgIFRvcE1lbW9yeUNvbnRleHQpOwogCS8qIEZs dXNoIGNhY2hlIG9uIHBnX3RzX2NvbmZpZyBhbmQgcGdfdHNfY29uZmlnX21hcCBjaGFuZ2VzICov CiAJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soVFNDT05GSUdPSUQsIEludmFsaWRhdGVU U0NhY2hlQ2FsbEJhY2ssCiAJCQkJCQkJCSAgUG9pbnRlckdldERhdHVtKFRTQ29uZmlnQ2FjaGVI YXNoKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYwppbmRleCA2YTM0NzY5OGVkZi4uN2U0 ZmZiZTY3MDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYwpAQCAtMzkyLDI4ICszOTIs MjMgQEAgbG9va3VwX3R5cGVfY2FjaGUoT2lkIHR5cGVfaWQsIGludCBmbGFncykKIAlpZiAoVHlw ZUNhY2hlSGFzaCA9PSBOVUxMKQogCXsKIAkJLyogRmlyc3QgdGltZSB0aHJvdWdoOiBpbml0aWFs aXplIHRoZSBoYXNoIHRhYmxlICovCi0JCUhBU0hDVEwJCWN0bDsKIAkJaW50CQkJYWxsb2NzaXpl OwogCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXpl b2YoVHlwZUNhY2hlRW50cnkpOwotCiAJCS8qCiAJCSAqIFR5cGVDYWNoZUVudHJ5IHRha2VzIGhh c2ggdmFsdWUgZnJvbSB0aGUgc3lzdGVtIGNhY2hlLiBGb3IKIAkJICogVHlwZUNhY2hlSGFzaCB3 ZSB1c2UgdGhlIHNhbWUgaGFzaCBpbiBvcmRlciB0byBzcGVlZHVwIHNlYXJjaCBieQogCQkgKiBo YXNoIHZhbHVlLiBUaGlzIGlzIHVzZWQgYnkgaGFzaF9zZXFfaW5pdF93aXRoX2hhc2hfdmFsdWUo KS4KIAkJICovCi0JCWN0bC5oYXNoID0gdHlwZV9jYWNoZV9zeXNoYXNoOwotCi0JCVR5cGVDYWNo ZUhhc2ggPSBoYXNoX2NyZWF0ZSgiVHlwZSBpbmZvcm1hdGlvbiBjYWNoZSIsIDY0LAotCQkJCQkJ CQkJJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTik7CisJCVR5cGVDYWNoZUhhc2ggPSBo YXNoX21ha2VfZm5fY3h0KFR5cGVDYWNoZUVudHJ5LCB0eXBlX2lkLAorCQkJCQkJCQkJCSAiVHlw ZSBpbmZvcm1hdGlvbiBjYWNoZSIsIDY0LAorCQkJCQkJCQkJCSB0eXBlX2NhY2hlX3N5c2hhc2gs IE5VTEwsCisJCQkJCQkJCQkJIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJCUFzc2VydChSZWxJZFRv VHlwZUlkQ2FjaGVIYXNoID09IE5VTEwpOwogCi0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKE9pZCk7 Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUmVsSWRUb1R5cGVJZENhY2hlRW50cnkpOwotCQlS ZWxJZFRvVHlwZUlkQ2FjaGVIYXNoID0gaGFzaF9jcmVhdGUoIk1hcCBmcm9tIHJlbGlkIHRvIE9J RCBvZiBjYWNoZWQgY29tcG9zaXRlIHR5cGUiLCA2NCwKLQkJCQkJCQkJCQkJICZjdGwsIEhBU0hf RUxFTSB8IEhBU0hfQkxPQlMpOworCQlSZWxJZFRvVHlwZUlkQ2FjaGVIYXNoID0gaGFzaF9tYWtl X2N4dChSZWxJZFRvVHlwZUlkQ2FjaGVFbnRyeSwgcmVsaWQsCisJCQkJCQkJCQkJCSAgICJNYXAg ZnJvbSByZWxpZCB0byBPSUQgb2YgY2FjaGVkIGNvbXBvc2l0ZSB0eXBlIiwKKwkJCQkJCQkJCQkJ ICAgNjQsIFRvcE1lbW9yeUNvbnRleHQpOwogCiAJCS8qIEFsc28gc2V0IHVwIGNhbGxiYWNrcyBm b3IgU0kgaW52YWxpZGF0aW9ucyAqLwogCQlDYWNoZVJlZ2lzdGVyUmVsY2FjaGVDYWxsYmFjayhU eXBlQ2FjaGVSZWxDYWxsYmFjaywgKERhdHVtKSAwKTsKQEAgLTIwNTAsMTUgKzIwNDUsMTEgQEAg YXNzaWduX3JlY29yZF90eXBlX3R5cG1vZChUdXBsZURlc2MgdHVwRGVzYykKIAlpZiAoUmVjb3Jk Q2FjaGVIYXNoID09IE5VTEwpCiAJewogCQkvKiBGaXJzdCB0aW1lIHRocm91Z2g6IGluaXRpYWxp emUgdGhlIGhhc2ggdGFibGUgKi8KLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5rZXlzaXplID0g c2l6ZW9mKFR1cGxlRGVzYyk7CS8qIGp1c3QgdGhlIHBvaW50ZXIgKi8KLQkJY3RsLmVudHJ5c2l6 ZSA9IHNpemVvZihSZWNvcmRDYWNoZUVudHJ5KTsKLQkJY3RsLmhhc2ggPSByZWNvcmRfdHlwZV90 eXBtb2RfaGFzaDsKLQkJY3RsLm1hdGNoID0gcmVjb3JkX3R5cGVfdHlwbW9kX2NvbXBhcmU7Ci0J CVJlY29yZENhY2hlSGFzaCA9IGhhc2hfY3JlYXRlKCJSZWNvcmQgaW5mb3JtYXRpb24gY2FjaGUi LCA2NCwKLQkJCQkJCQkJCSAgJmN0bCwKLQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9GVU5D VElPTiB8IEhBU0hfQ09NUEFSRSk7CisJCVJlY29yZENhY2hlSGFzaCA9IGhhc2hfbWFrZV9mbl9j eHQoUmVjb3JkQ2FjaGVFbnRyeSwgdHVwZGVzYywKKwkJCQkJCQkJCQkgICAiUmVjb3JkIGluZm9y bWF0aW9uIGNhY2hlIiwgNjQsCisJCQkJCQkJCQkJICAgcmVjb3JkX3R5cGVfdHlwbW9kX2hhc2gs CisJCQkJCQkJCQkJICAgcmVjb3JkX3R5cGVfdHlwbW9kX2NvbXBhcmUsCisJCQkJCQkJCQkJICAg VG9wTWVtb3J5Q29udGV4dCk7CiAKIAkJLyogQWxzbyBtYWtlIHN1cmUgQ2FjaGVNZW1vcnlDb250 ZXh0IGV4aXN0cyAqLwogCQlpZiAoIUNhY2hlTWVtb3J5Q29udGV4dCkKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZGZtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZGZt Z3IuYwppbmRleCAxMzY2NTIxZjQ3MS4uZjU4N2JiYjRjZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2ZtZ3IvZGZtZ3IuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9mbWdyL2RmbWdy LmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9zaG1lbS5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKyNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgogCiAKIC8qIHNpZ25hdHVyZSBmb3IgUG9zdGdyZVNRTC1zcGVjaWZp YyBsaWJyYXJ5IGluaXQgZnVuY3Rpb24gKi8KQEAgLTY3MSwxNCArNjcyLDkgQEAgZmluZF9yZW5k ZXp2b3VzX3ZhcmlhYmxlKGNvbnN0IGNoYXIgKnZhck5hbWUpCiAJLyogQ3JlYXRlIGEgaGFzaHRh YmxlIGlmIHdlIGhhdmVuJ3QgYWxyZWFkeSBkb25lIHNvIGluIHRoaXMgcHJvY2VzcyAqLwogCWlm IChyZW5kZXp2b3VzSGFzaCA9PSBOVUxMKQogCXsKLQkJSEFTSENUTAkJY3RsOwotCi0JCWN0bC5r ZXlzaXplID0gTkFNRURBVEFMRU47Ci0JCWN0bC5lbnRyeXNpemUgPSBzaXplb2YocmVuZGV6dm91 c0hhc2hFbnRyeSk7Ci0JCXJlbmRlenZvdXNIYXNoID0gaGFzaF9jcmVhdGUoIlJlbmRlenZvdXMg dmFyaWFibGUgaGFzaCIsCi0JCQkJCQkJCQkgMTYsCi0JCQkJCQkJCQkgJmN0bCwKLQkJCQkJCQkJ CSBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOworCQlyZW5kZXp2b3VzSGFzaCA9IGhhc2hfbWFr ZV9jeHQocmVuZGV6dm91c0hhc2hFbnRyeSwgdmFyTmFtZSwKKwkJCQkJCQkJCSAgICJSZW5kZXp2 b3VzIHZhcmlhYmxlIGhhc2giLCAxNiwKKwkJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQpOwog CX0KIAogCS8qIEZpbmQgb3IgY3JlYXRlIHRoZSBoYXNodGFibGUgZW50cnkgZm9yIHRoaXMgdmFy TmFtZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvZm1nci9mbWdyLmMgYi9zcmMv YmFja2VuZC91dGlscy9mbWdyL2ZtZ3IuYwppbmRleCAwZmU2M2M2YmI4My4uZmM4NWEwNTM2N2Mg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2ZtZ3IvZm1nci5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2ZtZ3IvZm1nci5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAidXRpbHMv Zm1ncnRhYi5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lz Y2FjaGUuaCIKIAogLyoKQEAgLTU0NywxNCArNTQ4LDggQEAgcmVjb3JkX0NfZnVuYyhIZWFwVHVw bGUgcHJvY2VkdXJlVHVwbGUsCiAJLyogQ3JlYXRlIHRoZSBoYXNoIHRhYmxlIGlmIGl0IGRvZXNu J3QgZXhpc3QgeWV0ICovCiAJaWYgKENGdW5jSGFzaCA9PSBOVUxMKQogCXsKLQkJSEFTSENUTAkJ aGFzaF9jdGw7Ci0KLQkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOwotCQloYXNoX2N0 bC5lbnRyeXNpemUgPSBzaXplb2YoQ0Z1bmNIYXNoVGFiRW50cnkpOwotCQlDRnVuY0hhc2ggPSBo YXNoX2NyZWF0ZSgiQ0Z1bmNIYXNoIiwKLQkJCQkJCQkJMTAwLAotCQkJCQkJCQkmaGFzaF9jdGws Ci0JCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCQlDRnVuY0hhc2ggPSBoYXNoX21h a2VfY3h0KENGdW5jSGFzaFRhYkVudHJ5LCBmbl9vaWQsCisJCQkJCQkJCSAgIkNGdW5jSGFzaCIs IDEwMCwgVG9wTWVtb3J5Q29udGV4dCk7CiAJfQogCiAJZW50cnkgPSAoQ0Z1bmNIYXNoVGFiRW50 cnkgKikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IGM2NDg0YWVhMDg3Li5mMzg5N2M5NTNkMyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Yy5jCkBAIC04NzEsNyArODcxLDYgQEAgYnVpbGRfZ3VjX3ZhcmlhYmxlcyh2 b2lkKQogewogCWludAkJCXNpemVfdmFyczsKIAlpbnQJCQludW1fdmFycyA9IDA7Ci0JSEFTSENU TAkJaGFzaF9jdGw7CiAJR1VDSGFzaEVudHJ5ICpoZW50cnk7CiAJYm9vbAkJZm91bmQ7CiAKQEAg LTg5NCwxNSArODkzLDEwIEBAIGJ1aWxkX2d1Y192YXJpYWJsZXModm9pZCkKIAkgKi8KIAlzaXpl X3ZhcnMgPSBudW1fdmFycyArIG51bV92YXJzIC8gNDsKIAotCWhhc2hfY3RsLmtleXNpemUgPSBz aXplb2YoY2hhciAqKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoR1VDSGFzaEVudHJ5 KTsKLQloYXNoX2N0bC5oYXNoID0gZ3VjX25hbWVfaGFzaDsKLQloYXNoX2N0bC5tYXRjaCA9IGd1 Y19uYW1lX21hdGNoOwotCWhhc2hfY3RsLmhjeHQgPSBHVUNNZW1vcnlDb250ZXh0OwotCWd1Y19o YXNodGFiID0gaGFzaF9jcmVhdGUoIkdVQyBoYXNoIHRhYmxlIiwKLQkJCQkJCQkgIHNpemVfdmFy cywKLQkJCQkJCQkgICZoYXNoX2N0bCwKLQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJ T04gfCBIQVNIX0NPTVBBUkUgfCBIQVNIX0NPTlRFWFQpOworCWd1Y19oYXNodGFiID0gaGFzaF9t YWtlX2ZuX2N4dChHVUNIYXNoRW50cnksIGd1Y25hbWUsCisJCQkJCQkJCSAgICJHVUMgaGFzaCB0 YWJsZSIsIHNpemVfdmFycywKKwkJCQkJCQkJICAgZ3VjX25hbWVfaGFzaCwgZ3VjX25hbWVfbWF0 Y2gsCisJCQkJCQkJCSAgIEdVQ01lbW9yeUNvbnRleHQpOwogCiAJZm9yIChpbnQgaSA9IDA7IENv bmZpZ3VyZU5hbWVzW2ldLm5hbWU7IGkrKykKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL2luamVjdGlvbl9wb2ludC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9pbmpl Y3Rpb25fcG9pbnQuYwppbmRleCBkMDI2MThjN2ZmZS4uNTA3NTM5OWYwMTcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvaW5qZWN0aW9uX3BvaW50LmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9pbmplY3Rpb25fcG9pbnQuYwpAQCAtMTI3LDE2ICsxMjcsMTAgQEAgaW5q ZWN0aW9uX3BvaW50X2NhY2hlX2FkZChjb25zdCBjaGFyICpuYW1lLAogCS8qIElmIGZpcnN0IHRp bWUsIGluaXRpYWxpemUgKi8KIAlpZiAoSW5qZWN0aW9uUG9pbnRDYWNoZSA9PSBOVUxMKQogCXsK LQkJSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihjaGFy W0lOSl9OQU1FX01BWExFTl0pOwotCQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoSW5qZWN0 aW9uUG9pbnRDYWNoZUVudHJ5KTsKLQkJaGFzaF9jdGwuaGN4dCA9IFRvcE1lbW9yeUNvbnRleHQ7 Ci0KLQkJSW5qZWN0aW9uUG9pbnRDYWNoZSA9IGhhc2hfY3JlYXRlKCJJbmplY3Rpb25Qb2ludCBj YWNoZSBoYXNoIiwKLQkJCQkJCQkJCQkgIE1BWF9JTkpFQ1RJT05fUE9JTlRTLAotCQkJCQkJCQkJ CSAgJmhhc2hfY3RsLAotCQkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTIHwgSEFT SF9DT05URVhUKTsKKwkJSW5qZWN0aW9uUG9pbnRDYWNoZSA9IGhhc2hfbWFrZV9jeHQoSW5qZWN0 aW9uUG9pbnRDYWNoZUVudHJ5LCBuYW1lLAorCQkJCQkJCQkJCQkiSW5qZWN0aW9uUG9pbnQgY2Fj aGUgaGFzaCIsCisJCQkJCQkJCQkJCU1BWF9JTkpFQ1RJT05fUE9JTlRTLAorCQkJCQkJCQkJCQlU b3BNZW1vcnlDb250ZXh0KTsKIAl9CiAKIAllbnRyeSA9IChJbmplY3Rpb25Qb2ludENhY2hlRW50 cnkgKikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgYi9z cmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4IDk0M2RhMDg3YzlmLi44MjQx ZDMyZjBjNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCkBAIC0xMDMsMjMgKzEwMywx OSBAQCBzdGF0aWMgTWVtb3J5Q29udGV4dCBUb3BQb3J0YWxDb250ZXh0ID0gTlVMTDsKIHZvaWQK IEVuYWJsZVBvcnRhbE1hbmFnZXIodm9pZCkKIHsKLQlIQVNIQ1RMCQljdGw7Ci0KIAlBc3NlcnQo VG9wUG9ydGFsQ29udGV4dCA9PSBOVUxMKTsKIAogCVRvcFBvcnRhbENvbnRleHQgPSBBbGxvY1Nl dENvbnRleHRDcmVhdGUoVG9wTWVtb3J5Q29udGV4dCwKIAkJCQkJCQkJCQkJICJUb3BQb3J0YWxD b250ZXh0IiwKIAkJCQkJCQkJCQkJIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwogCi0JY3RsLmtl eXNpemUgPSBNQVhfUE9SVEFMTkFNRV9MRU47Ci0JY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQb3J0 YWxIYXNoRW50KTsKLQogCS8qCiAJICogdXNlIFBPUlRBTFNfUEVSX1VTRVIgYXMgYSBndWVzcyBv ZiBob3cgbWFueSBoYXNoIHRhYmxlIGVudHJpZXMgdG8KIAkgKiBjcmVhdGUsIGluaXRpYWxseQog CSAqLwotCVBvcnRhbEhhc2hUYWJsZSA9IGhhc2hfY3JlYXRlKCJQb3J0YWwgaGFzaCIsIFBPUlRB TFNfUEVSX1VTRVIsCi0JCQkJCQkJCSAgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsK KwlQb3J0YWxIYXNoVGFibGUgPSBoYXNoX21ha2VfY3h0KFBvcnRhbEhhc2hFbnQsIHBvcnRhbG5h bWUsCisJCQkJCQkJCQkiUG9ydGFsIGhhc2giLCBQT1JUQUxTX1BFUl9VU0VSLAorCQkJCQkJCQkJ VG9wTWVtb3J5Q29udGV4dCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy90aW1lL2NvbWJvY2lkLmMgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL2NvbWJvY2lkLmMKaW5k ZXggMWU4MTU1NzE1NzAuLjkyNjYyYTYzMTc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy90aW1lL2NvbWJvY2lkLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9jb21ib2NpZC5j CkBAIC0yMTQsOCArMjE0LDYgQEAgR2V0Q29tYm9Db21tYW5kSWQoQ29tbWFuZElkIGNtaW4sIENv bW1hbmRJZCBjbWF4KQogCSAqLwogCWlmIChjb21ib0hhc2ggPT0gTlVMTCkKIAl7Ci0JCUhBU0hD VEwJCWhhc2hfY3RsOwotCiAJCS8qIE1ha2UgYXJyYXkgZmlyc3Q7IGV4aXN0ZW5jZSBvZiBoYXNo IHRhYmxlIGFzc2VydHMgYXJyYXkgZXhpc3RzICovCiAJCWNvbWJvQ2lkcyA9IChDb21ib0NpZEtl eURhdGEgKikKIAkJCU1lbW9yeUNvbnRleHRBbGxvYyhUb3BUcmFuc2FjdGlvbkNvbnRleHQsCkBA IC0yMjMsMTQgKzIyMSw5IEBAIEdldENvbWJvQ29tbWFuZElkKENvbW1hbmRJZCBjbWluLCBDb21t YW5kSWQgY21heCkKIAkJc2l6ZUNvbWJvQ2lkcyA9IENDSURfQVJSQVlfU0laRTsKIAkJdXNlZENv bWJvQ2lkcyA9IDA7CiAKLQkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihDb21ib0NpZEtleURh dGEpOwotCQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoQ29tYm9DaWRFbnRyeURhdGEpOwot CQloYXNoX2N0bC5oY3h0ID0gVG9wVHJhbnNhY3Rpb25Db250ZXh0OwotCi0JCWNvbWJvSGFzaCA9 IGhhc2hfY3JlYXRlKCJDb21ibyBDSURzIiwKLQkJCQkJCQkJQ0NJRF9IQVNIX1NJWkUsCi0JCQkJ CQkJCSZoYXNoX2N0bCwKLQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09O VEVYVCk7CisJCWNvbWJvSGFzaCA9IGhhc2hfbWFrZV9jeHQoQ29tYm9DaWRFbnRyeURhdGEsIGtl eSwKKwkJCQkJCQkJICAiQ29tYm8gQ0lEcyIsIENDSURfSEFTSF9TSVpFLAorCQkJCQkJCQkgIFRv cFRyYW5zYWN0aW9uQ29udGV4dCk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBl cmwvcGxwZXJsLmMgYi9zcmMvcGwvcGxwZXJsL3BscGVybC5jCmluZGV4IDczYmExNzQ4ZmUwLi5l MjExZjgyMWVkYyAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGVybC9wbHBlcmwuYworKysgYi9zcmMv cGwvcGxwZXJsL3BscGVybC5jCkBAIC0zOTAsNyArMzkwLDYgQEAgX1BHX2luaXQodm9pZCkKIAkg KiAicGxwZXJsLnVzZV9zdHJpY3QiCiAJICovCiAJc3RhdGljIGJvb2wgaW5pdGVkID0gZmFsc2U7 Ci0JSEFTSENUTAkJaGFzaF9jdGw7CiAKIAlpZiAoaW5pdGVkKQogCQlyZXR1cm47CkBAIC00NjAs MTkgKzQ1OSwxMyBAQCBfUEdfaW5pdCh2b2lkKQogCS8qCiAJICogQ3JlYXRlIGhhc2ggdGFibGVz LgogCSAqLwotCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsKLQloYXNoX2N0bC5lbnRy eXNpemUgPSBzaXplb2YocGxwZXJsX2ludGVycF9kZXNjKTsKLQlwbHBlcmxfaW50ZXJwX2hhc2gg PSBoYXNoX2NyZWF0ZSgiUEwvUGVybCBpbnRlcnByZXRlcnMiLAotCQkJCQkJCQkJIDgsCi0JCQkJ CQkJCQkgJmhhc2hfY3RsLAotCQkJCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOwotCi0J aGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihwbHBlcmxfcHJvY19rZXkpOwotCWhhc2hfY3RsLmVu dHJ5c2l6ZSA9IHNpemVvZihwbHBlcmxfcHJvY19wdHIpOwotCXBscGVybF9wcm9jX2hhc2ggPSBo YXNoX2NyZWF0ZSgiUEwvUGVybCBwcm9jZWR1cmVzIiwKLQkJCQkJCQkJICAgMzIsCi0JCQkJCQkJ CSAgICZoYXNoX2N0bCwKLQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJcGxw ZXJsX2ludGVycF9oYXNoID0gaGFzaF9tYWtlX2N4dChwbHBlcmxfaW50ZXJwX2Rlc2MsIHVzZXJf aWQsCisJCQkJCQkJCQkgICAiUEwvUGVybCBpbnRlcnByZXRlcnMiLCA4LAorCQkJCQkJCQkJICAg VG9wTWVtb3J5Q29udGV4dCk7CisKKwlwbHBlcmxfcHJvY19oYXNoID0gaGFzaF9tYWtlX2N4dChw bHBlcmxfcHJvY19wdHIsIHByb2Nfa2V5LAorCQkJCQkJCQkJICJQTC9QZXJsIHByb2NlZHVyZXMi LCAzMiwKKwkJCQkJCQkJCSBUb3BNZW1vcnlDb250ZXh0KTsKIAogCS8qCiAJICogU2F2ZSB0aGUg ZGVmYXVsdCBvcG1hc2suCkBAIC01NzgsMTQgKzU3MSw5IEBAIHNlbGVjdF9wZXJsX2NvbnRleHQo Ym9vbCB0cnVzdGVkKQogCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGEgcXVlcnlfaGFzaCBmb3IgdGhp cyBpbnRlcnByZXRlciAqLwogCWlmIChpbnRlcnBfZGVzYy0+cXVlcnlfaGFzaCA9PSBOVUxMKQog CXsKLQkJSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQkJaGFzaF9jdGwua2V5c2l6ZSA9IE5BTUVEQVRB TEVOOwotCQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YocGxwZXJsX3F1ZXJ5X2VudHJ5KTsK LQkJaW50ZXJwX2Rlc2MtPnF1ZXJ5X2hhc2ggPSBoYXNoX2NyZWF0ZSgiUEwvUGVybCBxdWVyaWVz IiwKLQkJCQkJCQkJCQkJICAzMiwKLQkJCQkJCQkJCQkJICAmaGFzaF9jdGwsCi0JCQkJCQkJCQkJ CSAgSEFTSF9FTEVNIHwgSEFTSF9TVFJJTkdTKTsKKwkJaW50ZXJwX2Rlc2MtPnF1ZXJ5X2hhc2gg PSBoYXNoX21ha2VfY3h0KHBscGVybF9xdWVyeV9lbnRyeSwgcXVlcnlfbmFtZSwKKwkJCQkJCQkJ CQkJCSJQTC9QZXJsIHF1ZXJpZXMiLCAzMiwKKwkJCQkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQp OwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jIGIv c3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYwppbmRleCBkMTk0MjViN2E3MS4uZjNiNDY5NDMy YWEgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKKysrIGIvc3JjL3Bs L3BscGdzcWwvc3JjL3BsX2V4ZWMuYwpAQCAtMzk5Niw4ICszOTk2LDYgQEAgcGxwZ3NxbF9lc3Rh dGVfc2V0dXAoUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSwKIAkJCQkJIEVTdGF0ZSAqc2ltcGxl X2V2YWxfZXN0YXRlLAogCQkJCQkgUmVzb3VyY2VPd25lciBzaW1wbGVfZXZhbF9yZXNvd25lcikK IHsKLQlIQVNIQ1RMCQljdGw7Ci0KIAkvKiB0aGlzIGxpbmsgd2lsbCBiZSByZXN0b3JlZCBhdCBl eGl0IGZyb20gcGxwZ3NxbF9jYWxsX2hhbmRsZXIgKi8KIAlmdW5jLT5jdXJfZXN0YXRlID0gZXN0 YXRlOwogCkBAIC00MDUyLDEyICs0MDUwLDEwIEBAIHBscGdzcWxfZXN0YXRlX3NldHVwKFBMcGdT UUxfZXhlY3N0YXRlICplc3RhdGUsCiAJLyogQ3JlYXRlIHRoZSBzZXNzaW9uLXdpZGUgY2FzdC1l eHByZXNzaW9uIGhhc2ggaWYgd2UgZGlkbid0IGFscmVhZHkgKi8KIAlpZiAoY2FzdF9leHByX2hh c2ggPT0gTlVMTCkKIAl7Ci0JCWN0bC5rZXlzaXplID0gc2l6ZW9mKHBscGdzcWxfQ2FzdEhhc2hL ZXkpOwotCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKHBscGdzcWxfQ2FzdEV4cHJIYXNoRW50cnkp OwotCQljYXN0X2V4cHJfaGFzaCA9IGhhc2hfY3JlYXRlKCJQTHBnU1FMIGNhc3QgZXhwcmVzc2lv bnMiLAotCQkJCQkJCQkJIDE2LAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCi0JCQkJCQkJ CQkgJmN0bCwKLQkJCQkJCQkJCSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwkJY2FzdF9leHBy X2hhc2ggPSBoYXNoX21ha2VfY3h0KHBscGdzcWxfQ2FzdEV4cHJIYXNoRW50cnksIGtleSwKKwkJ CQkJCQkJCSAgICJQTHBnU1FMIGNhc3QgZXhwcmVzc2lvbnMiLAorCQkJCQkJCQkJICAgMTYsCS8q IHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8KKwkJCQkJCQkJCSAgIFRvcE1lbW9yeUNvbnRleHQp OwogCX0KIAogCS8qIHNldCB1cCBmb3IgdXNlIG9mIGFwcHJvcHJpYXRlIHNpbXBsZS1leHByZXNz aW9uIEVTdGF0ZSBhbmQgY2FzdCBoYXNoICovCkBAIC00MDY1LDEzICs0MDYxLDkgQEAgcGxwZ3Nx bF9lc3RhdGVfc2V0dXAoUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSwKIAl7CiAJCWVzdGF0ZS0+ c2ltcGxlX2V2YWxfZXN0YXRlID0gc2ltcGxlX2V2YWxfZXN0YXRlOwogCQkvKiBQcml2YXRlIGNh c3QgaGFzaCBqdXN0IGxpdmVzIGluIGZ1bmN0aW9uJ3MgbWFpbiBjb250ZXh0ICovCi0JCWN0bC5r ZXlzaXplID0gc2l6ZW9mKHBscGdzcWxfQ2FzdEhhc2hLZXkpOwotCQljdGwuZW50cnlzaXplID0g c2l6ZW9mKHBscGdzcWxfQ2FzdEhhc2hFbnRyeSk7Ci0JCWN0bC5oY3h0ID0gQ3VycmVudE1lbW9y eUNvbnRleHQ7Ci0JCWVzdGF0ZS0+Y2FzdF9oYXNoID0gaGFzaF9jcmVhdGUoIlBMcGdTUUwgcHJp dmF0ZSBjYXN0IGNhY2hlIiwKLQkJCQkJCQkJCQkxNiwgLyogc3RhcnQgc21hbGwgYW5kIGV4dGVu ZCAqLwotCQkJCQkJCQkJCSZjdGwsCi0JCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8 IEhBU0hfQ09OVEVYVCk7CisJCWVzdGF0ZS0+Y2FzdF9oYXNoID0gaGFzaF9tYWtlKHBscGdzcWxf Q2FzdEhhc2hFbnRyeSwga2V5LAorCQkJCQkJCQkJICAiUExwZ1NRTCBwcml2YXRlIGNhc3QgY2Fj aGUiLAorCQkJCQkJCQkJICAxNik7CS8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8KIAl9CiAJ ZWxzZQogCXsKQEAgLTQwNzksMTIgKzQwNzEsMTAgQEAgcGxwZ3NxbF9lc3RhdGVfc2V0dXAoUExw Z1NRTF9leGVjc3RhdGUgKmVzdGF0ZSwKIAkJLyogQ3JlYXRlIHRoZSBzZXNzaW9uLXdpZGUgY2Fz dC1pbmZvIGhhc2ggdGFibGUgaWYgd2UgZGlkbid0IGFscmVhZHkgKi8KIAkJaWYgKHNoYXJlZF9j YXN0X2hhc2ggPT0gTlVMTCkKIAkJewotCQkJY3RsLmtleXNpemUgPSBzaXplb2YocGxwZ3NxbF9D YXN0SGFzaEtleSk7Ci0JCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKHBscGdzcWxfQ2FzdEhhc2hF bnRyeSk7Ci0JCQlzaGFyZWRfY2FzdF9oYXNoID0gaGFzaF9jcmVhdGUoIlBMcGdTUUwgY2FzdCBj YWNoZSIsCi0JCQkJCQkJCQkJICAgMTYsCS8qIHN0YXJ0IHNtYWxsIGFuZCBleHRlbmQgKi8KLQkJ CQkJCQkJCQkgICAmY3RsLAotCQkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOwor CQkJc2hhcmVkX2Nhc3RfaGFzaCA9IGhhc2hfbWFrZV9jeHQocGxwZ3NxbF9DYXN0SGFzaEVudHJ5 LCBrZXksCisJCQkJCQkJCQkJCSAiUExwZ1NRTCBjYXN0IGNhY2hlIiwKKwkJCQkJCQkJCQkJIDE2 LAkvKiBzdGFydCBzbWFsbCBhbmQgZXh0ZW5kICovCisJCQkJCQkJCQkJCSBUb3BNZW1vcnlDb250 ZXh0KTsKIAkJfQogCQllc3RhdGUtPmNhc3RfaGFzaCA9IHNoYXJlZF9jYXN0X2hhc2g7CiAJfQpk aWZmIC0tZ2l0IGEvc3JjL3BsL3BscHl0aG9uL3BscHlfcGxweW1vZHVsZS5jIGIvc3JjL3BsL3Bs cHl0aG9uL3BscHlfcGxweW1vZHVsZS5jCmluZGV4IDg5OTMxNjEyYzViLi5iMjY4YjM4MGNkNSAx MDA2NDQKLS0tIGEvc3JjL3BsL3BscHl0aG9uL3BscHlfcGxweW1vZHVsZS5jCisrKyBiL3NyYy9w bC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUg InBscHlfc3VieGFjdG9iamVjdC5oIgogI2luY2x1ZGUgInBscHlfdXRpbC5oIgogI2luY2x1ZGUg InV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKIAogSFRBQgkg ICAqUEx5X3NwaV9leGNlcHRpb25zID0gTlVMTDsKIApAQCAtMTcyLDcgKzE3Myw2IEBAIHN0YXRp YyB2b2lkCiBQTHlfYWRkX2V4Y2VwdGlvbnMoUHlPYmplY3QgKnBscHkpCiB7CiAJUHlPYmplY3Qg ICAqZXhjbW9kOwotCUhBU0hDVEwJCWhhc2hfY3RsOwogCiAJZXhjbW9kID0gUHlNb2R1bGVfQ3Jl YXRlKCZQTHlfZXhjX21vZHVsZSk7CiAJaWYgKGV4Y21vZCA9PSBOVUxMKQpAQCAtMTkzLDEwICsx OTMsOSBAQCBQTHlfYWRkX2V4Y2VwdGlvbnMoUHlPYmplY3QgKnBscHkpCiAJUEx5X2V4Y19zcGlf ZXJyb3IgPSBQTHlfY3JlYXRlX2V4Y2VwdGlvbigicGxweS5TUElFcnJvciIsIE5VTEwsIE5VTEws CiAJCQkJCQkJCQkJCSAiU1BJRXJyb3IiLCBwbHB5KTsKIAotCWhhc2hfY3RsLmtleXNpemUgPSBz aXplb2YoaW50KTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YoUEx5RXhjZXB0aW9uRW50 cnkpOwotCVBMeV9zcGlfZXhjZXB0aW9ucyA9IGhhc2hfY3JlYXRlKCJQTC9QeXRob24gU1BJIGV4 Y2VwdGlvbnMiLCAyNTYsCi0JCQkJCQkJCQkgJmhhc2hfY3RsLCBIQVNIX0VMRU0gfCBIQVNIX0JM T0JTKTsKKwlQTHlfc3BpX2V4Y2VwdGlvbnMgPSBoYXNoX21ha2VfY3h0KFBMeUV4Y2VwdGlvbkVu dHJ5LCBzcWxzdGF0ZSwKKwkJCQkJCQkJCSAgICJQTC9QeXRob24gU1BJIGV4Y2VwdGlvbnMiLCAy NTYsCisJCQkJCQkJCQkgICBUb3BNZW1vcnlDb250ZXh0KTsKIAogCVBMeV9nZW5lcmF0ZV9zcGlf ZXhjZXB0aW9ucyhleGNtb2QsIFBMeV9leGNfc3BpX2Vycm9yKTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9wbC9wbHB5dGhvbi9wbHB5X3Byb2NlZHVyZS5jIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfcHJv Y2VkdXJlLmMKaW5kZXggNjU1YWIxZDA5ZWUuLjYzMTc2MDZlMDFlIDEwMDY0NAotLS0gYS9zcmMv cGwvcGxweXRob24vcGxweV9wcm9jZWR1cmUuYworKysgYi9zcmMvcGwvcGxweXRob24vcGxweV9w cm9jZWR1cmUuYwpAQCAtMjksMTIgKzI5LDkgQEAgc3RhdGljIGNoYXIgKlBMeV9wcm9jZWR1cmVf bXVuZ2Vfc291cmNlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnNyYyk7CiB2b2lkCiBp bml0X3Byb2NlZHVyZV9jYWNoZXModm9pZCkKIHsKLQlIQVNIQ1RMCQloYXNoX2N0bDsKLQotCWhh c2hfY3RsLmtleXNpemUgPSBzaXplb2YoUEx5UHJvY2VkdXJlS2V5KTsKLQloYXNoX2N0bC5lbnRy eXNpemUgPSBzaXplb2YoUEx5UHJvY2VkdXJlRW50cnkpOwotCVBMeV9wcm9jZWR1cmVfY2FjaGUg PSBoYXNoX2NyZWF0ZSgiUEwvUHl0aG9uIHByb2NlZHVyZXMiLCAzMiwgJmhhc2hfY3RsLAotCQkJ CQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlQTHlfcHJvY2VkdXJlX2NhY2hlID0g aGFzaF9tYWtlX2N4dChQTHlQcm9jZWR1cmVFbnRyeSwga2V5LAorCQkJCQkJCQkJCSJQTC9QeXRo b24gcHJvY2VkdXJlcyIsIDMyLAorCQkJCQkJCQkJCVRvcE1lbW9yeUNvbnRleHQpOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL3BsL3RjbC9wbHRjbC5jIGIvc3JjL3BsL3RjbC9wbHRjbC5jCmlu ZGV4IDczZDY2MGU4OGE2Li5hM2VmNDI5ZDkyNiAxMDA2NDQKLS0tIGEvc3JjL3BsL3RjbC9wbHRj bC5jCisrKyBiL3NyYy9wbC90Y2wvcGx0Y2wuYwpAQCAtNDA4LDcgKzQwOCw2IEBAIHZvaWQKIF9Q R19pbml0KHZvaWQpCiB7CiAJVGNsX05vdGlmaWVyUHJvY3Mgbm90aWZpZXI7Ci0JSEFTSENUTAkJ aGFzaF9jdGw7CiAKIAkvKiBCZSBzdXJlIHdlIGRvIGluaXRpYWxpemF0aW9uIG9ubHkgb25jZSAo c2hvdWxkIGJlIHJlZHVuZGFudCBub3cpICovCiAJaWYgKHBsdGNsX3BtX2luaXRfZG9uZSkKQEAg LTQ0NiwyMiArNDQ1LDE2IEBAIF9QR19pbml0KHZvaWQpCiAJLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCSAqIENyZWF0ZSB0aGUg aGFzaCB0YWJsZSBmb3Igd29ya2luZyBpbnRlcnByZXRlcnMKIAkgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCWhhc2hfY3RsLmtl eXNpemUgPSBzaXplb2YoT2lkKTsKLQloYXNoX2N0bC5lbnRyeXNpemUgPSBzaXplb2YocGx0Y2xf aW50ZXJwX2Rlc2MpOwotCXBsdGNsX2ludGVycF9odGFiID0gaGFzaF9jcmVhdGUoIlBML1RjbCBp bnRlcnByZXRlcnMiLAotCQkJCQkJCQkJOCwKLQkJCQkJCQkJCSZoYXNoX2N0bCwKLQkJCQkJCQkJ CUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCXBsdGNsX2ludGVycF9odGFiID0gaGFzaF9tYWtl X2N4dChwbHRjbF9pbnRlcnBfZGVzYywgdXNlcl9pZCwKKwkJCQkJCQkJCSAgIlBML1RjbCBpbnRl cnByZXRlcnMiLCA4LAorCQkJCQkJCQkJICBUb3BNZW1vcnlDb250ZXh0KTsKIAogCS8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAkg KiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgZm9yIGZ1bmN0aW9uIGxvb2t1cAogCSAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0JaGFz aF9jdGwua2V5c2l6ZSA9IHNpemVvZihwbHRjbF9wcm9jX2tleSk7Ci0JaGFzaF9jdGwuZW50cnlz aXplID0gc2l6ZW9mKHBsdGNsX3Byb2NfcHRyKTsKLQlwbHRjbF9wcm9jX2h0YWIgPSBoYXNoX2Ny ZWF0ZSgiUEwvVGNsIGZ1bmN0aW9ucyIsCi0JCQkJCQkJCSAgMTAwLAotCQkJCQkJCQkgICZoYXNo X2N0bCwKLQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKwlwbHRjbF9wcm9jX2h0 YWIgPSBoYXNoX21ha2VfY3h0KHBsdGNsX3Byb2NfcHRyLCBwcm9jX2tleSwKKwkJCQkJCQkJCSJQ TC9UY2wgZnVuY3Rpb25zIiwgMTAwLAorCQkJCQkJCQkJVG9wTWVtb3J5Q29udGV4dCk7CiAKIAkv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCiAJICogRGVmaW5lIFBML1RjbCdzIGN1c3RvbSBHVUNzCmRpZmYgLS1naXQgYS9zcmMvdGlt ZXpvbmUvcGd0ei5jIGIvc3JjL3RpbWV6b25lL3BndHouYwppbmRleCA1MDRjMDIzNWZmYi4uY2Uw ZWRmOTgyNjYgMTAwNjQ0Ci0tLSBhL3NyYy90aW1lem9uZS9wZ3R6LmMKKysrIGIvc3JjL3RpbWV6 b25lL3BndHouYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgInBndHouaCIKICNpbmNsdWRl ICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgorI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCiAKIAogLyogQ3VycmVudCBzZXNzaW9uIHRpbWV6b25lIChjb250cm9s bGVkIGJ5IFRpbWVab25lIEdVQykgKi8KQEAgLTIwMSwxNSArMjAyLDggQEAgc3RhdGljIEhUQUIg KnRpbWV6b25lX2NhY2hlID0gTlVMTDsKIHN0YXRpYyBib29sCiBpbml0X3RpbWV6b25lX2hhc2h0 YWJsZSh2b2lkKQogewotCUhBU0hDVEwJCWhhc2hfY3RsOwotCi0JaGFzaF9jdGwua2V5c2l6ZSA9 IFRaX1NUUkxFTl9NQVggKyAxOwotCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihwZ190el9j YWNoZSk7Ci0KLQl0aW1lem9uZV9jYWNoZSA9IGhhc2hfY3JlYXRlKCJUaW1lem9uZXMiLAotCQkJ CQkJCQkgNCwKLQkJCQkJCQkJICZoYXNoX2N0bCwKLQkJCQkJCQkJIEhBU0hfRUxFTSB8IEhBU0hf U1RSSU5HUyk7CisJdGltZXpvbmVfY2FjaGUgPSBoYXNoX21ha2VfY3h0KHBnX3R6X2NhY2hlLCB0 em5hbWV1cHBlciwKKwkJCQkJCQkJICAgIlRpbWV6b25lcyIsIDQsIFRvcE1lbW9yeUNvbnRleHQp OwogCWlmICghdGltZXpvbmVfY2FjaGUpCiAJCXJldHVybiBmYWxzZTsKIAotLSAKMi41Mi4wCgo= --4a64335236636428890df52b41be4626d0df87532bd999859fd0fd98123d Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0003-Inline-functions-that-have-now-become-trivial.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0003-Inline-functions-that-have-now-become-trivial.patch RnJvbSBlZGVkODZhOWI1M2FhMzNiZjIyNjk2MDdkMzQ0ZDUyNjRjNjYzZDE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMjM6MzM6MTggKzAxMDAKU3ViamVjdDogW1BBVENIIHYz 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= --4a64335236636428890df52b41be4626d0df87532bd999859fd0fd98123d Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0004-Add-foreach_hash-macro.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0004-Add-foreach_hash-macro.patch RnJvbSBiNTliOTUwZTllYzZkYWQ5NTEzZWRiMmY0ZWVkNWJmZDY0YTNkZDhhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDAgKzAxMDAKU3ViamVjdDogW1BBVENIIHYz IDQvNV0gQWRkIGZvcmVhY2hfaGFzaCBtYWNybwoKRm9yIGxpc3RzIHdlJ3ZlIGhhZCBhIG5ldyBm b3JlYWNoIHN0eWxlIG1hY3JvcyBzaW5jZSAxNGRkMGYyN2Q3LiBUaGlzCmFkZHMgYSBzaW1pbGFy IG1hY3JvIGZvciBoYXNoIHRhYmxlcy4gVGhpcyBuZXcgZm9yZWFjaF9oYXNoIG1hY3JvIG1ha2Vz Cml0ZXJhdGluZyBvdmVyIHRoZSBpdGVtcyBpbiBhbiBIVEFCIGFzIHNpbXBsZSBhcyBpdGVyYXRp bmcgb3ZlciB0aGUKaXRlbXMgaW4gYSBMaXN0LiBUaGUgb25seSBhZGRpdGlvbmFsIHRoaW5nIHRv IGtlZXAgaW4gbWluZCBpcyB0aGF0IHdoZW4KZXhpdGluZyB0aGUgbG9vcCBlYXJseSB5b3UgbmVl ZCB0byBjYWxsIGZvcmVhY2hfaGFzaF90ZXJtLgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2hhc2gv ZHluYWhhc2guYyB8IDE1ICsrKysrKysrKy0KIHNyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaCAg ICAgICB8IDQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdl ZCwgNjAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhh c2guYwppbmRleCBiYzQ3NDY5YWIzYy4uNTBiZTczNDYyNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYworKysgYi9zcmMvYmFja2VuZC91dGlscy9oYXNoL2R5 bmFoYXNoLmMKQEAgLTE0NjIsNyArMTQ2Miw3IEBAIGhhc2hfZ2V0X251bV9lbnRyaWVzKEhUQUIg Kmhhc2hwKQogfQogCiAvKgotICogaGFzaF9zZXFfaW5pdC9fc2VhcmNoL190ZXJtCisgKiBoYXNo X3NlcV9pbml0L19uZXcvX3NlYXJjaC9fdGVybQogICoJCQlTZXF1ZW50aWFsbHkgc2VhcmNoIHRo cm91Z2ggaGFzaCB0YWJsZSBhbmQgcmV0dXJuCiAgKgkJCWFsbCB0aGUgZWxlbWVudHMgb25lIGJ5 IG9uZSwgcmV0dXJuIE5VTEwgd2hlbiBubyBtb3JlLgogICoKQEAgLTE0OTYsNiArMTQ5NiwxOSBA QCBoYXNoX3NlcV9pbml0KEhBU0hfU0VRX1NUQVRVUyAqc3RhdHVzLCBIVEFCICpoYXNocCkKIAkJ cmVnaXN0ZXJfc2VxX3NjYW4oaGFzaHApOwogfQogCisvKgorICogU2FtZSBhcyBoYXNoX3NlcV9p bml0KCksIGJ1dCByZXR1cm5zIHRoZSBzdGF0dXMgc3RydWN0IGluc3RlYWQgb2YgdGFraW5nIGEK KyAqIHBvaW50ZXIuCisgKi8KK0hBU0hfU0VRX1NUQVRVUworaGFzaF9zZXFfbmV3KEhUQUIgKmhh c2hwKQoreworCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CisKKwloYXNoX3NlcV9pbml0KCZzdGF0 dXMsIGhhc2hwKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCiAvKgogICogU2FtZSBhcyBhYm92ZSBi dXQgc2NhbiBieSB0aGUgZ2l2ZW4gaGFzaCB2YWx1ZS4KICAqIFNlZSBhbHNvIGhhc2hfc2VxX3Nl YXJjaCgpLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvaHNlYXJjaC5oCmluZGV4IDk4Yzg4NzI2MzQ1Li45NTc2ODBkN2E5YiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0 aWxzL2hzZWFyY2guaApAQCAtMjczLDYgKzI3Myw1MSBAQCB0eXBlZGVmIHN0cnVjdAogCXVpbnQz MgkJaGFzaHZhbHVlOwkJLyogaGFzaHZhbHVlIHRvIHN0YXJ0IHNlcXNjYW4gb3ZlciBoYXNoICov CiB9IEhBU0hfU0VRX1NUQVRVUzsKIAorLyoKKyAqIGZvcmVhY2hfaGFzaCAtIGl0ZXJhdGUgb3Zl ciBhbGwgZW50cmllcyBpbiBhIGhhc2ggdGFibGUKKyAqCisgKiBUaGlzIG1hY3JvIHNpbXBsaWZp ZXMgaGFzaCB0YWJsZSBpdGVyYXRpb24gYnkgY29tYmluaW5nIGhhc2hfc2VxX2luaXQKKyAqIGFu ZCBoYXNoX3NlcV9zZWFyY2ggaW50byBhIHNpbmdsZSBmb3ItbG9vcCBjb25zdHJ1Y3QuCisgKgor ICogVXNhZ2U6CisgKiAgIGZvcmVhY2hfaGFzaChNeUVudHJ5LCBlbnRyeSwgbXlfaGFzaHRhYmxl KQorICogICB7CisgKiAgICAgICAvLyB1c2UgZW50cnkKKyAqICAgfQorICoKKyAqIFRoaXMgcmVw bGFjZXMgdGhlIG1vcmUgdmVyYm9zZSBwYXR0ZXJuOgorICogICBIQVNIX1NFUV9TVEFUVVMgc3Rh dHVzOworICogICBNeUVudHJ5ICplbnRyeTsKKyAqICAgaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBt eV9oYXNodGFibGUpOworICogICB3aGlsZSAoKGVudHJ5ID0gKE15RW50cnkgKikgaGFzaF9zZXFf c2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorICogICB7CisgKiAgICAgICAvLyB1c2UgZW50cnkK KyAqICAgfQorICoKKyAqIEZvciBlYXJseSB0ZXJtaW5hdGlvbiwgdXNlIGZvcmVhY2hfaGFzaF90 ZXJtKCkgYmVmb3JlIGJyZWFrOgorICogICBmb3JlYWNoX2hhc2goTXlFbnRyeSwgZW50cnksIG15 X2hhc2h0YWJsZSkKKyAqICAgeworICogICAgICAgaWYgKGZvdW5kX2l0KQorICogICAgICAgewor ICogICAgICAgICAgIGZvcmVhY2hfaGFzaF90ZXJtKGVudHJ5KTsKKyAqICAgICAgICAgICBicmVh azsKKyAqICAgICAgIH0KKyAqICAgfQorICovCisjZGVmaW5lIGZvcmVhY2hfaGFzaCh0eXBlLCB2 YXIsIGh0YWIpIFwKKwlmb3IgKHR5cGUgKnZhciA9IDAsICp2YXIjI19fb3V0ZXJsb29wID0gKHR5 cGUgKikgMTsgXAorCQkgdmFyIyNfX291dGVybG9vcDsgXAorCQkgdmFyIyNfX291dGVybG9vcCA9 IDApIFwKKwkJZm9yIChIQVNIX1NFUV9TVEFUVVMgdmFyIyNfX3N0YXR1cyA9IGhhc2hfc2VxX25l dyhodGFiKTsgXAorCQkJICh2YXIgPSAodHlwZSAqKSBoYXNoX3NlcV9zZWFyY2goJnZhciMjX19z dGF0dXMpKSAhPSBOVUxMOyApCisKKy8qCisgKiBmb3JlYWNoX2hhc2hfdGVybSAtIHRlcm1pbmF0 ZSBhIGZvcmVhY2hfaGFzaCBsb29wIGVhcmx5CisgKgorICogQ2FsbCB0aGlzIGJlZm9yZSAnYnJl YWsnIHRvIHByb3Blcmx5IGNsZWFuIHVwIHRoZSBoYXNoIHNjYW4uCisgKi8KKyNkZWZpbmUgZm9y ZWFjaF9oYXNoX3Rlcm0odmFyKSBoYXNoX3NlcV90ZXJtKCZ2YXIjI19fc3RhdHVzKQorCiAvKgog ICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIGR5bmFoYXNoLmMKICAqLwpAQCAtMjkzLDYg KzMzOCw3IEBAIGV4dGVybiBib29sIGhhc2hfdXBkYXRlX2hhc2hfa2V5KEhUQUIgKmhhc2hwLCB2 b2lkICpleGlzdGluZ0VudHJ5LAogCQkJCQkJCQkgY29uc3Qgdm9pZCAqbmV3S2V5UHRyKTsKIGV4 dGVybiBpbnQ2NCBoYXNoX2dldF9udW1fZW50cmllcyhIVEFCICpoYXNocCk7CiBleHRlcm4gdm9p ZCBoYXNoX3NlcV9pbml0KEhBU0hfU0VRX1NUQVRVUyAqc3RhdHVzLCBIVEFCICpoYXNocCk7Citl eHRlcm4gSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxX25ldyhIVEFCICpoYXNocCk7CiBleHRlcm4g dm9pZCBoYXNoX3NlcV9pbml0X3dpdGhfaGFzaF92YWx1ZShIQVNIX1NFUV9TVEFUVVMgKnN0YXR1 cywKIAkJCQkJCQkJCQkgIEhUQUIgKmhhc2hwLAogCQkJCQkJCQkJCSAgdWludDMyIGhhc2h2YWx1 ZSk7Ci0tIAoyLjUyLjAKCg== --4a64335236636428890df52b41be4626d0df87532bd999859fd0fd98123d Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0005-Use-foreach_hash-macro-throughout-the-codebase.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0005-Use-foreach_hash-macro-throughout-the-codebase.patch RnJvbSBiMDFkMzMxMDZjNzVhZTk5MzY1N2FhZTY1ZWRkYjZjOTYwMGRmNDUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDQgRGVjIDIwMjUgMTU6Mzk6MDkgKzAxMDAKU3ViamVjdDogW1BBVENIIHYz 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 cmdtX3JlZ2V4cC5jIGIvY29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMKaW5kZXggZGY3ZDNi NzBkMDQuLjUzYTlmODg1ZWMyIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdl eHAuYworKysgYi9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYwpAQCAtMTQ0OSwxMCArMTQ0 OSw4IEBAIHByZWZpeENvbnRhaW5zKFRyZ21QcmVmaXggKnByZWZpeDEsIFRyZ21QcmVmaXggKnBy ZWZpeDIpCiBzdGF0aWMgYm9vbAogc2VsZWN0Q29sb3JUcmlncmFtcyhUcmdtTkZBICp0cmdtTkZB KQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKIAlpbnQJCQlhcmNzQ291bnQgPSB0 cmdtTkZBLT5hcmNzQ291bnQsCiAJCQkJaTsKLQlUcmdtU3RhdGUgICpzdGF0ZTsKIAlDb2xvclRy Z21JbmZvICpjb2xvclRyZ21zOwogCWludDY0CQl0b3RhbFRyZ21Db3VudDsKIAlmbG9hdDQJCXRv dGFsVHJnbVBlbmFsdHk7CkBAIC0xNDYzLDggKzE0NjEsNyBAQCBzZWxlY3RDb2xvclRyaWdyYW1z KFRyZ21ORkEgKnRyZ21ORkEpCiAJdHJnbU5GQS0+Y29sb3JUcmdtcyA9IGNvbG9yVHJnbXM7CiAK IAlpID0gMDsKLQloYXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1cywgdHJnbU5GQS0+c3RhdGVzKTsK LQl3aGlsZSAoKHN0YXRlID0gKFRyZ21TdGF0ZSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3Rh dHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJnbVN0YXRlLCBzdGF0ZSwgdHJnbU5GQS0+ c3RhdGVzKQogCXsKIAkJTGlzdENlbGwgICAqY2VsbDsKIApAQCAtMTkyNiw4ICsxOTIzLDYgQEAg cGFja0dyYXBoKFRyZ21ORkEgKnRyZ21ORkEsIE1lbW9yeUNvbnRleHQgcmNvbnRleHQpCiAJaW50 CQkJc251bWJlciA9IDIsCiAJCQkJYXJjSW5kZXgsCiAJCQkJYXJjc0NvdW50OwotCUhBU0hfU0VR X1NUQVRVUyBzY2FuX3N0YXR1czsKLQlUcmdtU3RhdGUgICpzdGF0ZTsKIAlUcmdtUGFja0FyY0lu Zm8gKmFyY3M7CiAJVHJnbVBhY2tlZEFyYyAqcGFja2VkQXJjczsKIAlUcmdtUGFja2VkR3JhcGgg KnJlc3VsdDsKQEAgLTE5MzUsOCArMTkzMCw3IEBAIHBhY2tHcmFwaChUcmdtTkZBICp0cmdtTkZB LCBNZW1vcnlDb250ZXh0IHJjb250ZXh0KQogCQkJCWo7CiAKIAkvKiBFbnVtZXJhdGUgc3Vydml2 aW5nIHN0YXRlcywgZ2l2aW5nIGluaXQgYW5kIGZpbiByZXNlcnZlZCBudW1iZXJzICovCi0JaGFz aF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIHRyZ21ORkEtPnN0YXRlcyk7Ci0Jd2hpbGUgKChzdGF0 ZSA9IChUcmdtU3RhdGUgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuX3N0YXR1cykpICE9IE5VTEwp CisJZm9yZWFjaF9oYXNoKFRyZ21TdGF0ZSwgc3RhdGUsIHRyZ21ORkEtPnN0YXRlcykKIAl7CiAJ CXdoaWxlIChzdGF0ZS0+cGFyZW50KQogCQkJc3RhdGUgPSBzdGF0ZS0+cGFyZW50OwpAQCAtMTk1 OCw4ICsxOTUyLDcgQEAgcGFja0dyYXBoKFRyZ21ORkEgKnRyZ21ORkEsIE1lbW9yeUNvbnRleHQg cmNvbnRleHQpCiAJLyogQ29sbGVjdCBhcnJheSBvZiBhbGwgYXJjcyAqLwogCWFyY3MgPSBwYWxs b2NfYXJyYXkoVHJnbVBhY2tBcmNJbmZvLCB0cmdtTkZBLT5hcmNzQ291bnQpOwogCWFyY0luZGV4 ID0gMDsKLQloYXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1cywgdHJnbU5GQS0+c3RhdGVzKTsKLQl3 aGlsZSAoKHN0YXRlID0gKFRyZ21TdGF0ZSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVz KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVHJnbVN0YXRlLCBzdGF0ZSwgdHJnbU5GQS0+c3Rh dGVzKQogCXsKIAkJVHJnbVN0YXRlICAqc291cmNlID0gc3RhdGU7CiAJCUxpc3RDZWxsICAgKmNl bGw7CkBAIC0yMjAyLDE2ICsyMTk1LDEzIEBAIHN0YXRpYyB2b2lkCiBwcmludFRyZ21ORkEoVHJn bU5GQSAqdHJnbU5GQSkKIHsKIAlTdHJpbmdJbmZvRGF0YSBidWY7Ci0JSEFTSF9TRVFfU1RBVFVT IHNjYW5fc3RhdHVzOwotCVRyZ21TdGF0ZSAgKnN0YXRlOwogCVRyZ21TdGF0ZSAgKmluaXRzdGF0 ZSA9IE5VTEw7CiAKIAlpbml0U3RyaW5nSW5mbygmYnVmKTsKIAogCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmJ1ZiwgIlxuZGlncmFwaCB0cmFuc2Zvcm1lZE5GQSB7XG4iKTsKIAotCWhhc2hfc2Vx X2luaXQoJnNjYW5fc3RhdHVzLCB0cmdtTkZBLT5zdGF0ZXMpOwotCXdoaWxlICgoc3RhdGUgPSAo VHJnbVN0YXRlICopIGhhc2hfc2VxX3NlYXJjaCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQorCWZv cmVhY2hfaGFzaChUcmdtU3RhdGUsIHN0YXRlLCB0cmdtTkZBLT5zdGF0ZXMpCiAJewogCQlMaXN0 Q2VsbCAgICpjZWxsOwogCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0 aW9uLmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKaW5kZXggMDQyYTdmYjNh YzEuLjQyODYzYjAyOTA5IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0 aW9uLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jCkBAIC0xMDQ0LDgg KzEwNDQsNiBAQCBwZ2Zkd19yZXBvcnRfaW50ZXJuYWwoaW50IGVsZXZlbCwgUEdyZXN1bHQgKnJl cywgUEdjb25uICpjb25uLAogc3RhdGljIHZvaWQKIHBnZmR3X3hhY3RfY2FsbGJhY2soWGFjdEV2 ZW50IGV2ZW50LCB2b2lkICphcmcpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNh Y2hlRW50cnkgKmVudHJ5OwogCUxpc3QJICAgKnBlbmRpbmdfZW50cmllcyA9IE5JTDsKIAlMaXN0 CSAgICpjYW5jZWxfcmVxdWVzdGVkID0gTklMOwogCkBAIC0xMDU3LDggKzEwNTUsNyBAQCBwZ2Zk d194YWN0X2NhbGxiYWNrKFhhY3RFdmVudCBldmVudCwgdm9pZCAqYXJnKQogCSAqIFNjYW4gYWxs IGNvbm5lY3Rpb24gY2FjaGUgZW50cmllcyB0byBmaW5kIG9wZW4gcmVtb3RlIHRyYW5zYWN0aW9u cywgYW5kCiAJICogY2xvc2UgdGhlbS4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzY2FuLCBDb25u ZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IChDb25uQ2FjaGVFbnRyeSAqKSBoYXNoX3Nl cV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2goQ29ubkNhY2hlRW50cnksIGVudHJ5LCBD b25uZWN0aW9uSGFzaCkKIAl7CiAJCVBHcmVzdWx0ICAgKnJlczsKIApAQCAtMTE5NSw4ICsxMTky LDYgQEAgc3RhdGljIHZvaWQKIHBnZmR3X3N1YnhhY3RfY2FsbGJhY2soU3ViWGFjdEV2ZW50IGV2 ZW50LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJCQkJCSAgIFN1YlRyYW5zYWN0aW9uSWQg cGFyZW50U3ViaWQsIHZvaWQgKmFyZykKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2NhbjsKLQlDb25u Q2FjaGVFbnRyeSAqZW50cnk7CiAJaW50CQkJY3VybGV2ZWw7CiAJTGlzdAkgICAqcGVuZGluZ19l bnRyaWVzID0gTklMOwogCUxpc3QJICAgKmNhbmNlbF9yZXF1ZXN0ZWQgPSBOSUw7CkBAIC0xMjE1 LDggKzEyMTAsNyBAQCBwZ2Zkd19zdWJ4YWN0X2NhbGxiYWNrKFN1YlhhY3RFdmVudCBldmVudCwg U3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAogCSAqIG9mIHRoZSBjdXJyZW50IGxldmVsLCBhbmQg Y2xvc2UgdGhlbS4KIAkgKi8KIAljdXJsZXZlbCA9IEdldEN1cnJlbnRUcmFuc2FjdGlvbk5lc3RM ZXZlbCgpOwotCWhhc2hfc2VxX2luaXQoJnNjYW4sIENvbm5lY3Rpb25IYXNoKTsKLQl3aGlsZSAo KGVudHJ5ID0gKENvbm5DYWNoZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpKQorCWZv cmVhY2hfaGFzaChDb25uQ2FjaGVFbnRyeSwgZW50cnksIENvbm5lY3Rpb25IYXNoKQogCXsKIAkJ Y2hhcgkJc3FsWzEwMF07CiAKQEAgLTEzMDcsMTQgKzEzMDEsMTAgQEAgcGdmZHdfc3VieGFjdF9j YWxsYmFjayhTdWJYYWN0RXZlbnQgZXZlbnQsIFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIHN0 YXRpYyB2b2lkCiBwZ2Zkd19pbnZhbF9jYWxsYmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1 aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuOwotCUNvbm5DYWNoZUVu dHJ5ICplbnRyeTsKLQogCUFzc2VydChjYWNoZWlkID09IEZPUkVJR05TRVJWRVJPSUQgfHwgY2Fj aGVpZCA9PSBVU0VSTUFQUElOR09JRCk7CiAKIAkvKiBDb25uZWN0aW9uSGFzaCBtdXN0IGV4aXN0 IGFscmVhZHksIGlmIHdlJ3JlIHJlZ2lzdGVyZWQgKi8KLQloYXNoX3NlcV9pbml0KCZzY2FuLCBD b25uZWN0aW9uSGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IChDb25uQ2FjaGVFbnRyeSAqKSBoYXNo X3NlcV9zZWFyY2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2goQ29ubkNhY2hlRW50cnksIGVudHJ5 LCBDb25uZWN0aW9uSGFzaCkKIAl7CiAJCS8qIElnbm9yZSBpbnZhbGlkIGVudHJpZXMgKi8KIAkJ aWYgKGVudHJ5LT5jb25uID09IE5VTEwpCkBAIC0yMTY1LDggKzIxNTUsNiBAQCBwb3N0Z3Jlc19m ZHdfZ2V0X2Nvbm5lY3Rpb25zX2ludGVybmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJ CQkJCQkJICBlbnVtIHBnZmR3VmVyc2lvbiBhcGlfdmVyc2lvbikKIHsKIAlSZXR1cm5TZXRJbmZv ICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87Ci0JSEFTSF9T RVFfU1RBVFVTIHNjYW47Ci0JQ29ubkNhY2hlRW50cnkgKmVudHJ5OwogCiAJSW5pdE1hdGVyaWFs aXplZFNSRihmY2luZm8sIDApOwogCkBAIC0yMTg5LDggKzIxNzcsNyBAQCBwb3N0Z3Jlc19mZHdf Z2V0X2Nvbm5lY3Rpb25zX2ludGVybmFsKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJZWxv ZyhFUlJPUiwgImluY29ycmVjdCBudW1iZXIgb2Ygb3V0cHV0IGFyZ3VtZW50cyIpOwogCX0KIAot CWhhc2hfc2VxX2luaXQoJnNjYW4sIENvbm5lY3Rpb25IYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0g KENvbm5DYWNoZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc2NhbikpKQorCWZvcmVhY2hfaGFz aChDb25uQ2FjaGVFbnRyeSwgZW50cnksIENvbm5lY3Rpb25IYXNoKQogCXsKIAkJRm9yZWlnblNl cnZlciAqc2VydmVyOwogCQlEYXR1bQkJdmFsdWVzW1BPU1RHUkVTX0ZEV19HRVRfQ09OTkVDVElP TlNfQ09MU10gPSB7MH07CkBAIC0yMzkyLDggKzIzNzksNiBAQCBwb3N0Z3Jlc19mZHdfZGlzY29u bmVjdF9hbGwoUEdfRlVOQ1RJT05fQVJHUykKIHN0YXRpYyBib29sCiBkaXNjb25uZWN0X2NhY2hl ZF9jb25uZWN0aW9ucyhPaWQgc2VydmVyaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0J Q29ubkNhY2hlRW50cnkgKmVudHJ5OwogCWJvb2wJCWFsbCA9ICFPaWRJc1ZhbGlkKHNlcnZlcmlk KTsKIAlib29sCQlyZXN1bHQgPSBmYWxzZTsKIApAQCAtMjQwNCw4ICsyMzg5LDcgQEAgZGlzY29u bmVjdF9jYWNoZWRfY29ubmVjdGlvbnMoT2lkIHNlcnZlcmlkKQogCWlmICghQ29ubmVjdGlvbkhh c2gpCiAJCXJldHVybiBmYWxzZTsKIAotCWhhc2hfc2VxX2luaXQoJnNjYW4sIENvbm5lY3Rpb25I YXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gKENvbm5DYWNoZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJj aCgmc2NhbikpKQorCWZvcmVhY2hfaGFzaChDb25uQ2FjaGVFbnRyeSwgZW50cnksIENvbm5lY3Rp b25IYXNoKQogCXsKIAkJLyogSWdub3JlIGNhY2hlIGVudHJ5IGlmIG5vIG9wZW4gY29ubmVjdGlv biByaWdodCBub3cuICovCiAJCWlmICghZW50cnktPmNvbm4pCmRpZmYgLS1naXQgYS9jb250cmli L3Bvc3RncmVzX2Zkdy9zaGlwcGFibGUuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJs ZS5jCmluZGV4IDY2ZDJkMGI5ZmY0Li5iYzVkYzkwZTU0MSAxMDA2NDQKLS0tIGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvc2hpcHBhYmxlLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc2hpcHBh YmxlLmMKQEAgLTY1LDE3ICs2NSwxMyBAQCB0eXBlZGVmIHN0cnVjdAogc3RhdGljIHZvaWQKIElu dmFsaWRhdGVTaGlwcGFibGVDYWNoZUNhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVp bnQzMiBoYXNodmFsdWUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlTaGlwcGFibGVD YWNoZUVudHJ5ICplbnRyeTsKLQogCS8qCiAJICogSW4gcHJpbmNpcGxlIHdlIGNvdWxkIGZsdXNo IG9ubHkgY2FjaGUgZW50cmllcyByZWxhdGluZyB0byB0aGUKIAkgKiBwZ19mb3JlaWduX3NlcnZl ciBlbnRyeSBiZWluZyBvdXRkYXRlZDsgYnV0IHRoYXQgd291bGQgYmUgbW9yZQogCSAqIGNvbXBs aWNhdGVkLCBhbmQgaXQncyBwcm9iYWJseSBub3Qgd29ydGggdGhlIHRyb3VibGUuICBTbyBmb3Ig bm93LCBqdXN0CiAJICogZmx1c2ggYWxsIGVudHJpZXMuCiAJICovCi0JaGFzaF9zZXFfaW5pdCgm c3RhdHVzLCBTaGlwcGFibGVDYWNoZUhhc2gpOwotCXdoaWxlICgoZW50cnkgPSAoU2hpcHBhYmxl Q2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFj aF9oYXNoKFNoaXBwYWJsZUNhY2hlRW50cnksIGVudHJ5LCBTaGlwcGFibGVDYWNoZUhhc2gpCiAJ ewogCQlpZiAoaGFzaF9zZWFyY2goU2hpcHBhYmxlQ2FjaGVIYXNoLAogCQkJCQkJJmVudHJ5LT5r ZXksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9yZXdyaXRlaGVhcC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYwppbmRleCBkYzJjNDY3NDJmZC4u MzI0MzNmY2U0YTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Jld3JpdGVo ZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcmV3cml0ZWhlYXAuYwpAQCAtMjkw LDE2ICsyOTAsMTEgQEAgYmVnaW5faGVhcF9yZXdyaXRlKFJlbGF0aW9uIG9sZF9oZWFwLCBSZWxh dGlvbiBuZXdfaGVhcCwgVHJhbnNhY3Rpb25JZCBvbGRlc3RfeG0KIHZvaWQKIGVuZF9oZWFwX3Jl d3JpdGUoUmV3cml0ZVN0YXRlIHN0YXRlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzZXFfc3RhdHVz OwotCVVucmVzb2x2ZWRUdXAgdW5yZXNvbHZlZDsKLQogCS8qCiAJICogV3JpdGUgYW55IHJlbWFp bmluZyB0dXBsZXMgaW4gdGhlIFVucmVzb2x2ZWRUdXBzIHRhYmxlLiBJZiB3ZSBoYXZlIGFueQog CSAqIGxlZnQsIHRoZXkgc2hvdWxkIGluIGZhY3QgYmUgZGVhZCwgYnV0IGxldCdzIGVyciBvbiB0 aGUgc2FmZSBzaWRlLgogCSAqLwotCWhhc2hfc2VxX2luaXQoJnNlcV9zdGF0dXMsIHN0YXRlLT5y c191bnJlc29sdmVkX3R1cHMpOwotCi0Jd2hpbGUgKCh1bnJlc29sdmVkID0gaGFzaF9zZXFfc2Vh cmNoKCZzZXFfc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goVW5yZXNvbHZlZFR1cERh dGEsIHVucmVzb2x2ZWQsIHN0YXRlLT5yc191bnJlc29sdmVkX3R1cHMpCiAJewogCQlJdGVtUG9p bnRlclNldEludmFsaWQoJnVucmVzb2x2ZWQtPnR1cGxlLT50X2RhdGEtPnRfY3RpZCk7CiAJCXJh d19oZWFwX2luc2VydChzdGF0ZSwgdW5yZXNvbHZlZC0+dHVwbGUpOwpAQCAtNzk0LDggKzc4OSw2 IEBAIGxvZ2ljYWxfYmVnaW5faGVhcF9yZXdyaXRlKFJld3JpdGVTdGF0ZSBzdGF0ZSkKIHN0YXRp YyB2b2lkCiBsb2dpY2FsX2hlYXBfcmV3cml0ZV9mbHVzaF9tYXBwaW5ncyhSZXdyaXRlU3RhdGUg c3RhdGUpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHNlcV9zdGF0dXM7Ci0JUmV3cml0ZU1hcHBpbmdG aWxlICpzcmM7CiAJZGxpc3RfbXV0YWJsZV9pdGVyIGl0ZXI7CiAKIAlBc3NlcnQoc3RhdGUtPnJz X2xvZ2ljYWxfcmV3cml0ZSk7CkBAIC04MDcsOCArODAwLDcgQEAgbG9naWNhbF9oZWFwX3Jld3Jp dGVfZmx1c2hfbWFwcGluZ3MoUmV3cml0ZVN0YXRlIHN0YXRlKQogCWVsb2coREVCVUcxLCAiZmx1 c2hpbmcgJXUgbG9naWNhbCByZXdyaXRlIG1hcHBpbmcgZW50cmllcyIsCiAJCSBzdGF0ZS0+cnNf bnVtX3Jld3JpdGVfbWFwcGluZ3MpOwogCi0JaGFzaF9zZXFfaW5pdCgmc2VxX3N0YXR1cywgc3Rh dGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3MpOwotCXdoaWxlICgoc3JjID0gKFJld3JpdGVNYXBwaW5n RmlsZSAqKSBoYXNoX3NlcV9zZWFyY2goJnNlcV9zdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hf aGFzaChSZXdyaXRlTWFwcGluZ0ZpbGUsIHNyYywgc3RhdGUtPnJzX2xvZ2ljYWxfbWFwcGluZ3Mp CiAJewogCQljaGFyCSAgICp3YWxkYXRhOwogCQljaGFyCSAgICp3YWxkYXRhX3N0YXJ0OwpAQCAt ODkyLDkgKzg4NCw2IEBAIGxvZ2ljYWxfaGVhcF9yZXdyaXRlX2ZsdXNoX21hcHBpbmdzKFJld3Jp dGVTdGF0ZSBzdGF0ZSkKIHN0YXRpYyB2b2lkCiBsb2dpY2FsX2VuZF9oZWFwX3Jld3JpdGUoUmV3 cml0ZVN0YXRlIHN0YXRlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzZXFfc3RhdHVzOwotCVJld3Jp dGVNYXBwaW5nRmlsZSAqc3JjOwotCiAJLyogZG9uZSwgbm8gbG9naWNhbCByZXdyaXRlIGluIHBy b2dyZXNzICovCiAJaWYgKCFzdGF0ZS0+cnNfbG9naWNhbF9yZXdyaXRlKQogCQlyZXR1cm47CkBA IC05MDQsOCArODkzLDcgQEAgbG9naWNhbF9lbmRfaGVhcF9yZXdyaXRlKFJld3JpdGVTdGF0ZSBz dGF0ZSkKIAkJbG9naWNhbF9oZWFwX3Jld3JpdGVfZmx1c2hfbWFwcGluZ3Moc3RhdGUpOwogCiAJ LyogSXRlcmF0ZSBvdmVyIGFsbCBtYXBwaW5ncyB3ZSBoYXZlIHdyaXR0ZW4gYW5kIGZzeW5jIHRo ZSBmaWxlcy4gKi8KLQloYXNoX3NlcV9pbml0KCZzZXFfc3RhdHVzLCBzdGF0ZS0+cnNfbG9naWNh bF9tYXBwaW5ncyk7Ci0Jd2hpbGUgKChzcmMgPSAoUmV3cml0ZU1hcHBpbmdGaWxlICopIGhhc2hf c2VxX3NlYXJjaCgmc2VxX3N0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJld3JpdGVN YXBwaW5nRmlsZSwgc3JjLCBzdGF0ZS0+cnNfbG9naWNhbF9tYXBwaW5ncykKIAl7CiAJCWlmIChG aWxlU3luYyhzcmMtPnZmZCwgV0FJVF9FVkVOVF9MT0dJQ0FMX1JFV1JJVEVfU1lOQykgIT0gMCkK IAkJCWVyZXBvcnQoZGF0YV9zeW5jX2VsZXZlbChFUlJPUiksCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ndXRpbHMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2d1dGlscy5jCmluZGV4IDllMjQ3NTlmNWNjLi5lZjEzZjA0ZTA4ZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKQEAgLTE2MCwxNSArMTYwLDEwIEBAIHN0YXRp YyB2b2lkCiBmb3JnZXRfaW52YWxpZF9wYWdlcyhSZWxGaWxlTG9jYXRvciBsb2NhdG9yLCBGb3Jr TnVtYmVyIGZvcmtubywKIAkJCQkJIEJsb2NrTnVtYmVyIG1pbmJsa25vKQogewotCUhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7Ci0JeGxfaW52YWxpZF9wYWdlICpoZW50cnk7Ci0KIAlpZiAoaW52YWxp ZF9wYWdlX3RhYiA9PSBOVUxMKQogCQlyZXR1cm47CQkJCQkvKiBub3RoaW5nIHRvIGRvICovCiAK LQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGludmFsaWRfcGFnZV90YWIpOwotCi0Jd2hpbGUgKCho ZW50cnkgPSAoeGxfaW52YWxpZF9wYWdlICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0g TlVMTCkKKwlmb3JlYWNoX2hhc2goeGxfaW52YWxpZF9wYWdlLCBoZW50cnksIGludmFsaWRfcGFn ZV90YWIpCiAJewogCQlpZiAoUmVsRmlsZUxvY2F0b3JFcXVhbHMoaGVudHJ5LT5rZXkubG9jYXRv ciwgbG9jYXRvcikgJiYKIAkJCWhlbnRyeS0+a2V5LmZvcmtubyA9PSBmb3Jrbm8gJiYKQEAgLTE5 MCwxNSArMTg1LDEwIEBAIGZvcmdldF9pbnZhbGlkX3BhZ2VzKFJlbEZpbGVMb2NhdG9yIGxvY2F0 b3IsIEZvcmtOdW1iZXIgZm9ya25vLAogc3RhdGljIHZvaWQKIGZvcmdldF9pbnZhbGlkX3BhZ2Vz X2RiKE9pZCBkYmlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JeGxfaW52YWxpZF9w YWdlICpoZW50cnk7Ci0KIAlpZiAoaW52YWxpZF9wYWdlX3RhYiA9PSBOVUxMKQogCQlyZXR1cm47 CQkJCQkvKiBub3RoaW5nIHRvIGRvICovCiAKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGludmFs aWRfcGFnZV90YWIpOwotCi0Jd2hpbGUgKChoZW50cnkgPSAoeGxfaW52YWxpZF9wYWdlICopIGhh c2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goeGxfaW52YWxp ZF9wYWdlLCBoZW50cnksIGludmFsaWRfcGFnZV90YWIpCiAJewogCQlpZiAoaGVudHJ5LT5rZXku bG9jYXRvci5kYk9pZCA9PSBkYmlkKQogCQl7CkBAIC0yMjgsMjAgKzIxOCwxNiBAQCBYTG9nSGF2 ZUludmFsaWRQYWdlcyh2b2lkKQogdm9pZAogWExvZ0NoZWNrSW52YWxpZFBhZ2VzKHZvaWQpCiB7 Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQl4bF9pbnZhbGlkX3BhZ2UgKmhlbnRyeTsKIAli b29sCQlmb3VuZG9uZSA9IGZhbHNlOwogCiAJaWYgKGludmFsaWRfcGFnZV90YWIgPT0gTlVMTCkK IAkJcmV0dXJuOwkJCQkJLyogbm90aGluZyB0byBkbyAqLwogCi0JaGFzaF9zZXFfaW5pdCgmc3Rh dHVzLCBpbnZhbGlkX3BhZ2VfdGFiKTsKLQogCS8qCiAJICogT3VyIHN0cmF0ZWd5IGlzIHRvIGVt aXQgV0FSTklORyBtZXNzYWdlcyBmb3IgYWxsIHJlbWFpbmluZyBlbnRyaWVzIGFuZAogCSAqIG9u bHkgUEFOSUMgYWZ0ZXIgd2UndmUgZHVtcGVkIGFsbCB0aGUgYXZhaWxhYmxlIGluZm8uCiAJICov Ci0Jd2hpbGUgKChoZW50cnkgPSAoeGxfaW52YWxpZF9wYWdlICopIGhhc2hfc2VxX3NlYXJjaCgm c3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goeGxfaW52YWxpZF9wYWdlLCBoZW50cnks IGludmFsaWRfcGFnZV90YWIpCiAJewogCQlyZXBvcnRfaW52YWxpZF9wYWdlKFdBUk5JTkcsIGhl bnRyeS0+a2V5LmxvY2F0b3IsIGhlbnRyeS0+a2V5LmZvcmtubywKIAkJCQkJCQloZW50cnktPmtl eS5ibGtubywgaGVudHJ5LT5wcmVzZW50KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfZW51bS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19lbnVtLmMKaW5kZXggNDc4N2E2 MWM3ZDMuLmZjYTEzNmI2OGFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2Vu dW0uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2VudW0uYwpAQCAtODM4LDEyICs4Mzgs MTAgQEAgU2VyaWFsaXplVW5jb21taXR0ZWRFbnVtcyh2b2lkICpzcGFjZSwgU2l6ZSBzaXplKQog CS8qIFdyaXRlIG91dCBhbGwgdGhlIE9JRHMgZnJvbSB0aGUgdHlwZXMgaGFzaCB0YWJsZSwgaWYg dGhlcmUgaXMgb25lLiAqLwogCWlmICh1bmNvbW1pdHRlZF9lbnVtX3R5cGVzKQogCXsKLQkJSEFT SF9TRVFfU1RBVFVTIHN0YXR1czsKLQkJT2lkCQkgICAqdmFsdWU7Ci0KLQkJaGFzaF9zZXFfaW5p dCgmc3RhdHVzLCB1bmNvbW1pdHRlZF9lbnVtX3R5cGVzKTsKLQkJd2hpbGUgKCh2YWx1ZSA9IChP aWQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSkKKwkJZm9yZWFjaF9oYXNoKE9pZCwgdmFs dWUsIHVuY29tbWl0dGVkX2VudW1fdHlwZXMpCisJCXsKIAkJCSpzZXJpYWxpemVkKysgPSAqdmFs dWU7CisJCX0KIAl9CiAKIAkvKiBXcml0ZSBvdXQgdGhlIHRlcm1pbmF0b3IuICovCkBAIC04NTIs MTIgKzg1MCw4IEBAIFNlcmlhbGl6ZVVuY29tbWl0dGVkRW51bXModm9pZCAqc3BhY2UsIFNpemUg c2l6ZSkKIAkvKiBXcml0ZSBvdXQgYWxsIHRoZSBPSURzIGZyb20gdGhlIHZhbHVlcyBoYXNoIHRh YmxlLCBpZiB0aGVyZSBpcyBvbmUuICovCiAJaWYgKHVuY29tbWl0dGVkX2VudW1fdmFsdWVzKQog CXsKLQkJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQkJT2lkCQkgICAqdmFsdWU7Ci0KLQkJaGFz aF9zZXFfaW5pdCgmc3RhdHVzLCB1bmNvbW1pdHRlZF9lbnVtX3ZhbHVlcyk7Ci0JCXdoaWxlICgo dmFsdWUgPSAoT2lkICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkpCi0JCQkqc2VyaWFsaXpl ZCsrID0gKnZhbHVlOworCQlmb3JlYWNoX2hhc2goT2lkLCB2YWx1ZSwgdW5jb21taXR0ZWRfZW51 bV92YWx1ZXMpCisJCQkqIHNlcmlhbGl6ZWQrKyA9ICp2YWx1ZTsKIAl9CiAKIAkvKiBXcml0ZSBv dXQgdGhlIHRlcm1pbmF0b3IuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N0 b3JhZ2UuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3RvcmFnZS5jCmluZGV4IDFkMTNiNGExZjM5 Li5kYzQ0Y2FlOWUzZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMKQEAgLTU5NCwxMCArNTk0LDcgQEAg dm9pZAogU2VyaWFsaXplUGVuZGluZ1N5bmNzKFNpemUgbWF4U2l6ZSwgY2hhciAqc3RhcnRBZGRy ZXNzKQogewogCUhUQUIJICAgKnRtcGhhc2g7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW47Ci0JUGVu ZGluZ1JlbFN5bmMgKnN5bmM7CiAJUGVuZGluZ1JlbERlbGV0ZSAqZGVsZXRlOwotCVJlbEZpbGVM b2NhdG9yICpzcmM7CiAJUmVsRmlsZUxvY2F0b3IgKmRlc3QgPSAoUmVsRmlsZUxvY2F0b3IgKikg c3RhcnRBZGRyZXNzOwogCiAJaWYgKCFwZW5kaW5nU3luY0hhc2gpCkBAIC02MDgsOSArNjA1LDEw IEBAIFNlcmlhbGl6ZVBlbmRpbmdTeW5jcyhTaXplIG1heFNpemUsIGNoYXIgKnN0YXJ0QWRkcmVz cykKIAkJCQkJCSAgIGhhc2hfZ2V0X251bV9lbnRyaWVzKHBlbmRpbmdTeW5jSGFzaCkpOwogCiAJ LyogY29sbGVjdCBhbGwgcmxvY2F0b3IgZnJvbSBwZW5kaW5nIHN5bmNzICovCi0JaGFzaF9zZXFf aW5pdCgmc2NhbiwgcGVuZGluZ1N5bmNIYXNoKTsKLQl3aGlsZSAoKHN5bmMgPSAoUGVuZGluZ1Jl bFN5bmMgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuKSkpCisJZm9yZWFjaF9oYXNoKFBlbmRpbmdS ZWxTeW5jLCBzeW5jLCBwZW5kaW5nU3luY0hhc2gpCisJewogCQkodm9pZCkgaGFzaF9zZWFyY2go dG1waGFzaCwgJnN5bmMtPnJsb2NhdG9yLCBIQVNIX0VOVEVSLCBOVUxMKTsKKwl9CiAKIAkvKiBy ZW1vdmUgZGVsZXRlZCBybm9kZXMgKi8KIAlmb3IgKGRlbGV0ZSA9IHBlbmRpbmdEZWxldGVzOyBk ZWxldGUgIT0gTlVMTDsgZGVsZXRlID0gZGVsZXRlLT5uZXh0KQpAQCAtNjE4LDkgKzYxNiwxMCBA QCBTZXJpYWxpemVQZW5kaW5nU3luY3MoU2l6ZSBtYXhTaXplLCBjaGFyICpzdGFydEFkZHJlc3Mp CiAJCQkodm9pZCkgaGFzaF9zZWFyY2godG1waGFzaCwgJmRlbGV0ZS0+cmxvY2F0b3IsCiAJCQkJ CQkJICAgSEFTSF9SRU1PVkUsIE5VTEwpOwogCi0JaGFzaF9zZXFfaW5pdCgmc2NhbiwgdG1waGFz aCk7Ci0Jd2hpbGUgKChzcmMgPSAoUmVsRmlsZUxvY2F0b3IgKikgaGFzaF9zZXFfc2VhcmNoKCZz Y2FuKSkpCisJZm9yZWFjaF9oYXNoKFJlbEZpbGVMb2NhdG9yLCBzcmMsIHRtcGhhc2gpCisJewog CQkqZGVzdCsrID0gKnNyYzsKKwl9CiAKIAloYXNoX2Rlc3Ryb3kodG1waGFzaCk7CiAKQEAgLTcz Myw4ICs3MzIsNiBAQCBzbWdyRG9QZW5kaW5nU3luY3MoYm9vbCBpc0NvbW1pdCwgYm9vbCBpc1Bh cmFsbGVsV29ya2VyKQogCWludAkJCW5yZWxzID0gMCwKIAkJCQltYXhyZWxzID0gMDsKIAlTTWdy UmVsYXRpb24gKnNyZWxzID0gTlVMTDsKLQlIQVNIX1NFUV9TVEFUVVMgc2NhbjsKLQlQZW5kaW5n UmVsU3luYyAqcGVuZGluZ3N5bmM7CiAKIAlBc3NlcnQoR2V0Q3VycmVudFRyYW5zYWN0aW9uTmVz dExldmVsKCkgPT0gMSk7CiAKQEAgLTc2Myw4ICs3NjAsNyBAQCBzbWdyRG9QZW5kaW5nU3luY3Mo Ym9vbCBpc0NvbW1pdCwgYm9vbCBpc1BhcmFsbGVsV29ya2VyKQogCQkJKHZvaWQpIGhhc2hfc2Vh cmNoKHBlbmRpbmdTeW5jSGFzaCwgJnBlbmRpbmctPnJsb2NhdG9yLAogCQkJCQkJCSAgIEhBU0hf UkVNT1ZFLCBOVUxMKTsKIAotCWhhc2hfc2VxX2luaXQoJnNjYW4sIHBlbmRpbmdTeW5jSGFzaCk7 Ci0Jd2hpbGUgKChwZW5kaW5nc3luYyA9IChQZW5kaW5nUmVsU3luYyAqKSBoYXNoX3NlcV9zZWFy Y2goJnNjYW4pKSkKKwlmb3JlYWNoX2hhc2goUGVuZGluZ1JlbFN5bmMsIHBlbmRpbmdzeW5jLCBw ZW5kaW5nU3luY0hhc2gpCiAJewogCQlGb3JrTnVtYmVyCWZvcms7CiAJCUJsb2NrTnVtYmVyIG5i bG9ja3NbTUFYX0ZPUktOVU0gKyAxXTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCBjYzk1MGNl Mjg4Ny4uN2Q0ZTRiZDg2MmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBh cmUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTUyMiwxNiArNTIy LDEyIEBAIERyb3BQcmVwYXJlZFN0YXRlbWVudChjb25zdCBjaGFyICpzdG10X25hbWUsIGJvb2wg c2hvd0Vycm9yKQogdm9pZAogRHJvcEFsbFByZXBhcmVkU3RhdGVtZW50cyh2b2lkKQogewotCUhB U0hfU0VRX1NUQVRVUyBzZXE7Ci0JUHJlcGFyZWRTdGF0ZW1lbnQgKmVudHJ5OwotCiAJLyogbm90 aGluZyBjYWNoZWQgKi8KIAlpZiAoIXByZXBhcmVkX3F1ZXJpZXMpCiAJCXJldHVybjsKIAogCS8q IHdhbGsgb3ZlciBjYWNoZSAqLwotCWhhc2hfc2VxX2luaXQoJnNlcSwgcHJlcGFyZWRfcXVlcmll cyk7Ci0Jd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmc2VxKSkgIT0gTlVMTCkKKwlm b3JlYWNoX2hhc2goUHJlcGFyZWRTdGF0ZW1lbnQsIGVudHJ5LCBwcmVwYXJlZF9xdWVyaWVzKQog CXsKIAkJLyogUmVsZWFzZSB0aGUgcGxhbmNhY2hlIGVudHJ5ICovCiAJCURyb3BDYWNoZWRQbGFu KGVudHJ5LT5wbGFuc291cmNlKTsKQEAgLTY3OCwxMSArNjc0LDcgQEAgcGdfcHJlcGFyZWRfc3Rh dGVtZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJLyogaGFzaCB0YWJsZSBtaWdodCBiZSB1bmluaXRp YWxpemVkICovCiAJaWYgKHByZXBhcmVkX3F1ZXJpZXMpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMg aGFzaF9zZXE7Ci0JCVByZXBhcmVkU3RhdGVtZW50ICpwcmVwX3N0bXQ7Ci0KLQkJaGFzaF9zZXFf aW5pdCgmaGFzaF9zZXEsIHByZXBhcmVkX3F1ZXJpZXMpOwotCQl3aGlsZSAoKHByZXBfc3RtdCA9 IGhhc2hfc2VxX3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goUHJl cGFyZWRTdGF0ZW1lbnQsIHByZXBfc3RtdCwgcHJlcGFyZWRfcXVlcmllcykKIAkJewogCQkJVHVw bGVEZXNjCXJlc3VsdF9kZXNjOwogCQkJRGF0dW0JCXZhbHVlc1s4XTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKaW5kZXggN2YwZmIyNjM3NzIuLjlhNTU2NjJhZjU1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYwpAQCAtMjIzNiwxNCArMjIzNiw5IEBAIEV4ZWN1dGVUcnVuY2F0ZUd1dHMoTGlz dCAqZXhwbGljaXRfcmVscywKIAkvKiBOb3cgZ28gdGhyb3VnaCB0aGUgaGFzaCB0YWJsZSwgYW5k IHRydW5jYXRlIGZvcmVpZ24gdGFibGVzICovCiAJaWYgKGZ0X2h0YWIpCiAJewotCQlGb3JlaWdu VHJ1bmNhdGVJbmZvICpmdF9pbmZvOwotCQlIQVNIX1NFUV9TVEFUVVMgc2VxOwotCi0JCWhhc2hf c2VxX2luaXQoJnNlcSwgZnRfaHRhYik7Ci0KIAkJUEdfVFJZKCk7CiAJCXsKLQkJCXdoaWxlICgo ZnRfaW5mbyA9IGhhc2hfc2VxX3NlYXJjaCgmc2VxKSkgIT0gTlVMTCkKKwkJCWZvcmVhY2hfaGFz aChGb3JlaWduVHJ1bmNhdGVJbmZvLCBmdF9pbmZvLCBmdF9odGFiKQogCQkJewogCQkJCUZkd1Jv dXRpbmUgKnJvdXRpbmUgPSBHZXRGZHdSb3V0aW5lQnlTZXJ2ZXJJZChmdF9pbmZvLT5zZXJ2ZXJp ZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jCmluZGV4IDQzMjkxZjEyOGZk Li5mYTUyZjdhNzc2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcHJl ZHRlc3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jCkBAIC0y MzQyLDE1ICsyMzQyLDEwIEBAIGdldF9idHJlZV90ZXN0X29wKE9pZCBwcmVkX29wLCBPaWQgY2xh dXNlX29wLCBib29sIHJlZnV0ZV9pdCkKIHN0YXRpYyB2b2lkCiBJbnZhbGlkYXRlT3ByUHJvb2ZD YWNoZUNhbGxCYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7 Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlPcHJQcm9vZkNhY2hlRW50cnkgKmhlbnRyeTsK LQogCUFzc2VydChPcHJQcm9vZkNhY2hlSGFzaCAhPSBOVUxMKTsKIAogCS8qIEN1cnJlbnRseSB3 ZSBqdXN0IHJlc2V0IGFsbCBlbnRyaWVzOyBoYXJkIHRvIGJlIHNtYXJ0ZXIgLi4uICovCi0JaGFz aF9zZXFfaW5pdCgmc3RhdHVzLCBPcHJQcm9vZkNhY2hlSGFzaCk7Ci0KLQl3aGlsZSAoKGhlbnRy eSA9IChPcHJQcm9vZkNhY2hlRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBO VUxMKQorCWZvcmVhY2hfaGFzaChPcHJQcm9vZkNhY2hlRW50cnksIGhlbnRyeSwgT3ByUHJvb2ZD YWNoZUhhc2gpCiAJewogCQloZW50cnktPmhhdmVfaW1wbGljID0gZmFsc2U7CiAJCWhlbnRyeS0+ aGF2ZV9yZWZ1dGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9vcGVyLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCmluZGV4IGY5NTg4ODY1 Y2ZjLi45MTM4Mjk2MmQ5NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29w ZXIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCkBAIC0xMDc2LDE1ICsx MDc2LDEwIEBAIG1ha2Vfb3Blcl9jYWNoZV9lbnRyeShPcHJDYWNoZUtleSAqa2V5LCBPaWQgb3By X29pZCkKIHN0YXRpYyB2b2lkCiBJbnZhbGlkYXRlT3ByQ2FjaGVDYWxsQmFjayhEYXR1bSBhcmcs IGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0 dXM7Ci0JT3ByQ2FjaGVFbnRyeSAqaGVudHJ5OwotCiAJQXNzZXJ0KE9wckNhY2hlSGFzaCAhPSBO VUxMKTsKIAogCS8qIEN1cnJlbnRseSB3ZSBqdXN0IGZsdXNoIGFsbCBlbnRyaWVzOyBoYXJkIHRv IGJlIHNtYXJ0ZXIgLi4uICovCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBPcHJDYWNoZUhhc2gp OwotCi0Jd2hpbGUgKChoZW50cnkgPSAoT3ByQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKE9wckNhY2hlRW50cnksIGhlbnRyeSwg T3ByQ2FjaGVIYXNoKQogCXsKIAkJaWYgKGhhc2hfc2VhcmNoKE9wckNhY2hlSGFzaCwKIAkJCQkJ CSZoZW50cnktPmtleSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0 ZGVzYy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRkZXNjLmMKaW5kZXggYjNmYmQ3 ODE0OTQuLjkwOGIwZTM5YjhjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcv cGFydGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGRlc2MuYwpAQCAt NDc4LDExICs0NzgsNyBAQCBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoUGFydGl0aW9uRGlyZWN0 b3J5IHBkaXIsIFJlbGF0aW9uIHJlbCkKIHZvaWQKIERlc3Ryb3lQYXJ0aXRpb25EaXJlY3Rvcnko UGFydGl0aW9uRGlyZWN0b3J5IHBkaXIpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQ YXJ0aXRpb25EaXJlY3RvcnlFbnRyeSAqcGRlOwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBw ZGlyLT5wZGlyX2hhc2gpOwotCXdoaWxlICgocGRlID0gaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMp KSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQYXJ0aXRpb25EaXJlY3RvcnlFbnRyeSwgcGRlLCBw ZGlyLT5wZGlyX2hhc2gpCiAJCVJlbGF0aW9uRGVjcmVtZW50UmVmZXJlbmNlQ291bnQocGRlLT5y ZWwpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0u YyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IGYxYjZiMWEyNGE5 Li5iMGRmN2ZiYTY5MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTEwMjEs OCArMTAyMSw2IEBAIHJlYnVpbGRfZGF0YWJhc2VfbGlzdChPaWQgbmV3ZGIpCiAJCVRpbWVzdGFt cFR6IGN1cnJlbnRfdGltZTsKIAkJaW50CQkJbWlsbGlzX2luY3JlbWVudDsKIAkJYXZsX2RiYXNl ICAqZGJhcnk7Ci0JCWF2bF9kYmFzZSAgKmRiOwotCQlIQVNIX1NFUV9TVEFUVVMgc2VxOwogCQlp bnQJCQlpOwogCiAJCS8qIHB1dCBhbGwgdGhlIGhhc2ggZWxlbWVudHMgaW50byBhbiBhcnJheSAq LwpAQCAtMTAzMyw4ICsxMDMxLDcgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0KE9pZCBuZXdkYikK ICNlbmRpZgogCiAJCWkgPSAwOwotCQloYXNoX3NlcV9pbml0KCZzZXEsIGRiaGFzaCk7Ci0JCXdo aWxlICgoZGIgPSBoYXNoX3NlcV9zZWFyY2goJnNlcSkpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFz aChhdmxfZGJhc2UsIGRiLCBkYmhhc2gpCiAJCQltZW1jcHkoJihkYmFyeVtpKytdKSwgZGIsIHNp emVvZihhdmxfZGJhc2UpKTsKIAogCQkvKiBzb3J0IHRoZSBhcnJheSAqLwpAQCAtMTA1OSw3ICsx MDU2LDcgQEAgcmVidWlsZF9kYXRhYmFzZV9saXN0KE9pZCBuZXdkYikKIAkJICovCiAJCWZvciAo aSA9IDA7IGkgPCBuZWxlbXM7IGkrKykKIAkJewotCQkJZGIgPSAmKGRiYXJ5W2ldKTsKKwkJCWF2 bF9kYmFzZSAgKmRiID0gJihkYmFyeVtpXSk7CiAKIAkJCWN1cnJlbnRfdGltZSA9IFRpbWVzdGFt cFR6UGx1c01pbGxpc2Vjb25kcyhjdXJyZW50X3RpbWUsCiAJCQkJCQkJCQkJCQkJICAgbWlsbGlz X2luY3JlbWVudCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMK aW5kZXggYzRhZjg1ZDc0ZjEuLjU3ZjU4NzI5ODRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9yZWxhdGlvbi5jCkBAIC02MywyNSArNjMsMTkgQEAgc3RhdGljIE9pZAlGaW5k TG9naWNhbFJlcExvY2FsSW5kZXgoUmVsYXRpb24gbG9jYWxyZWwsIExvZ2ljYWxSZXBSZWxhdGlv biAqcmVtb3QKIHN0YXRpYyB2b2lkCiBsb2dpY2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiKERh dHVtIGFyZywgT2lkIHJlbG9pZCkKIHsKLQlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5Owot CiAJLyogSnVzdCB0byBiZSBzdXJlLiAqLwogCWlmIChMb2dpY2FsUmVwUmVsTWFwID09IE5VTEwp CiAJCXJldHVybjsKIAogCWlmIChyZWxvaWQgIT0gSW52YWxpZE9pZCkKIAl7Ci0JCUhBU0hfU0VR X1NUQVRVUyBzdGF0dXM7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2dpY2FsUmVwUmVs TWFwKTsKLQogCQkvKiBUT0RPLCB1c2UgaW52ZXJzZSBsb29rdXAgaGFzaHRhYmxlPyAqLwotCQl3 aGlsZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMb2dpY2FsUmVwUmVsTWFwRW50cnks IGVudHJ5LCBMb2dpY2FsUmVwUmVsTWFwKQogCQl7CiAJCQlpZiAoZW50cnktPmxvY2FscmVsb2lk ID09IHJlbG9pZCkKIAkJCXsKIAkJCQllbnRyeS0+bG9jYWxyZWx2YWxpZCA9IGZhbHNlOwotCQkJ CWhhc2hfc2VxX3Rlcm0oJnN0YXR1cyk7CisJCQkJZm9yZWFjaF9oYXNoX3Rlcm0oZW50cnkpOwog CQkJCWJyZWFrOwogCQkJfQogCQl9CkBAIC04OSwxMSArODMsNyBAQCBsb2dpY2FscmVwX3JlbG1h cF9pbnZhbGlkYXRlX2NiKERhdHVtIGFyZywgT2lkIHJlbG9pZCkKIAllbHNlCiAJewogCQkvKiBp bnZhbGlkYXRlIGFsbCBjYWNoZSBlbnRyaWVzICovCi0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7 Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBMb2dpY2FsUmVwUmVsTWFwKTsKLQotCQl3aGls ZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0 YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFzaChMb2dpY2FsUmVwUmVsTWFwRW50cnksIGVu dHJ5LCBMb2dpY2FsUmVwUmVsTWFwKQogCQkJZW50cnktPmxvY2FscmVsdmFsaWQgPSBmYWxzZTsK IAl9CiB9CkBAIC01MzAsMjUgKzUyMCwxOSBAQCBsb2dpY2FscmVwX3JlbF9jbG9zZShMb2dpY2Fs UmVwUmVsTWFwRW50cnkgKnJlbCwgTE9DS01PREUgbG9ja21vZGUpCiBzdGF0aWMgdm9pZAogbG9n aWNhbHJlcF9wYXJ0bWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQogewot CUxvZ2ljYWxSZXBQYXJ0TWFwRW50cnkgKmVudHJ5OwotCiAJLyogSnVzdCB0byBiZSBzdXJlLiAq LwogCWlmIChMb2dpY2FsUmVwUGFydE1hcCA9PSBOVUxMKQogCQlyZXR1cm47CiAKIAlpZiAocmVs b2lkICE9IEludmFsaWRPaWQpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCi0JCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgTG9naWNhbFJlcFBhcnRNYXApOwotCiAJCS8qIFRPRE8sIHVz ZSBpbnZlcnNlIGxvb2t1cCBoYXNodGFibGU/ICovCi0JCXdoaWxlICgoZW50cnkgPSAoTG9naWNh bFJlcFBhcnRNYXBFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJ CWZvcmVhY2hfaGFzaChMb2dpY2FsUmVwUGFydE1hcEVudHJ5LCBlbnRyeSwgTG9naWNhbFJlcFBh cnRNYXApCiAJCXsKIAkJCWlmIChlbnRyeS0+cmVsbWFwZW50cnkubG9jYWxyZWxvaWQgPT0gcmVs b2lkKQogCQkJewogCQkJCWVudHJ5LT5yZWxtYXBlbnRyeS5sb2NhbHJlbHZhbGlkID0gZmFsc2U7 Ci0JCQkJaGFzaF9zZXFfdGVybSgmc3RhdHVzKTsKKwkJCQlmb3JlYWNoX2hhc2hfdGVybShlbnRy eSk7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KQEAgLTU1NiwxMSArNTQwLDcgQEAgbG9naWNhbHJl cF9wYXJ0bWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQogCWVsc2UKIAl7 CiAJCS8qIGludmFsaWRhdGUgYWxsIGNhY2hlIGVudHJpZXMgKi8KLQkJSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKLQotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvZ2ljYWxSZXBQYXJ0TWFwKTsK LQotCQl3aGlsZSAoKGVudHJ5ID0gKExvZ2ljYWxSZXBQYXJ0TWFwRW50cnkgKikgaGFzaF9zZXFf c2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTG9naWNhbFJlcFBhcnRN YXBFbnRyeSwgZW50cnksIExvZ2ljYWxSZXBQYXJ0TWFwKQogCQkJZW50cnktPnJlbG1hcGVudHJ5 LmxvY2FscmVsdmFsaWQgPSBmYWxzZTsKIAl9CiB9CkBAIC01NzgsMTUgKzU1OCwxMiBAQCBsb2dp Y2FscmVwX3BhcnRtYXBfaW52YWxpZGF0ZV9jYihEYXR1bSBhcmcsIE9pZCByZWxvaWQpCiB2b2lk CiBsb2dpY2FscmVwX3BhcnRtYXBfcmVzZXRfcmVsbWFwKExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVt b3RlcmVsKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JTG9naWNhbFJlcFBhcnRNYXBF bnRyeSAqcGFydF9lbnRyeTsKIAlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5OwogCiAJaWYg KExvZ2ljYWxSZXBQYXJ0TWFwID09IE5VTEwpCiAJCXJldHVybjsKIAotCWhhc2hfc2VxX2luaXQo JnN0YXR1cywgTG9naWNhbFJlcFBhcnRNYXApOwotCXdoaWxlICgocGFydF9lbnRyeSA9IChMb2dp Y2FsUmVwUGFydE1hcEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkK Kwlmb3JlYWNoX2hhc2goTG9naWNhbFJlcFBhcnRNYXBFbnRyeSwgcGFydF9lbnRyeSwgTG9naWNh bFJlcFBhcnRNYXApCiAJewogCQllbnRyeSA9ICZwYXJ0X2VudHJ5LT5yZWxtYXBlbnRyeTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRl eCBlMDk1MTZkM2Q4Yi4uNTYyZmQ3NDNkOTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC01MjUwLDE1ICs1MjUwLDExIEBAIFJlb3Jk ZXJCdWZmZXJUb2FzdFJlcGxhY2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKIHN0YXRpYyB2b2lkCiBSZW9yZGVyQnVmZmVyVG9hc3RSZXNldChSZW9yZGVyQnVmZmVy ICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKQogewotCUhBU0hfU0VRX1NUQVRVUyBoc3RhdDsK LQlSZW9yZGVyQnVmZmVyVG9hc3RFbnQgKmVudDsKLQogCWlmICh0eG4tPnRvYXN0X2hhc2ggPT0g TlVMTCkKIAkJcmV0dXJuOwogCiAJLyogc2VxdWVudGlhbGx5IHdhbGsgb3ZlciB0aGUgaGFzaCBh bmQgZnJlZSBldmVyeXRoaW5nICovCi0JaGFzaF9zZXFfaW5pdCgmaHN0YXQsIHR4bi0+dG9hc3Rf aGFzaCk7Ci0Jd2hpbGUgKChlbnQgPSAoUmVvcmRlckJ1ZmZlclRvYXN0RW50ICopIGhhc2hfc2Vx X3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZW9yZGVyQnVmZmVyVG9h c3RFbnQsIGVudCwgdHhuLT50b2FzdF9oYXNoKQogCXsKIAkJZGxpc3RfbXV0YWJsZV9pdGVyIGl0 OwogCkBAIC01MzIxLDExICs1MzE3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmV3cml0ZU1hcHBpbmdG aWxlCiBzdGF0aWMgdm9pZAogRGlzcGxheU1hcHBpbmcoSFRBQiAqdHVwbGVjaWRfZGF0YSkKIHsK LQlIQVNIX1NFUV9TVEFUVVMgaHN0YXQ7Ci0JUmVvcmRlckJ1ZmZlclR1cGxlQ2lkRW50ICplbnQ7 Ci0KLQloYXNoX3NlcV9pbml0KCZoc3RhdCwgdHVwbGVjaWRfZGF0YSk7Ci0Jd2hpbGUgKChlbnQg PSAoUmVvcmRlckJ1ZmZlclR1cGxlQ2lkRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAh PSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZW9yZGVyQnVmZmVyVHVwbGVDaWRFbnQsIGVudCwgdHVw bGVjaWRfZGF0YSkKIAl7CiAJCWVsb2coREVCVUczLCAibWFwcGluZzogbm9kZTogJXUvJXUvJXUg dGlkOiAldS8ldSBjbWluOiAldSwgY21heDogJXUiLAogCQkJIGVudC0+a2V5LnJsb2NhdG9yLmRi T2lkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXgg NmRlYTI0ZmYwYTYuLjM3NTBhODgwYWVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bn b3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTIzMzksMTMgKzIzMzksOSBAQCBnZXRfcmVsX3N5bmNfZW50 cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIHN0YXRpYyB2b2lkCiBj bGVhbnVwX3JlbF9zeW5jX2NhY2hlKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGlzX2NvbW1pdCkK IHsKLQlIQVNIX1NFUV9TVEFUVVMgaGFzaF9zZXE7Ci0JUmVsYXRpb25TeW5jRW50cnkgKmVudHJ5 OwotCiAJQXNzZXJ0KFJlbGF0aW9uU3luY0NhY2hlICE9IE5VTEwpOwogCi0JaGFzaF9zZXFfaW5p dCgmaGFzaF9zZXEsIFJlbGF0aW9uU3luY0NhY2hlKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9z ZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFJlbGF0aW9uU3lu Y0VudHJ5LCBlbnRyeSwgUmVsYXRpb25TeW5jQ2FjaGUpCiAJewogCQkvKgogCQkgKiBXZSBjYW4g c2V0IHRoZSBzY2hlbWFfc2VudCBmbGFnIGZvciBhbiBlbnRyeSB0aGF0IGhhcyBjb21taXR0ZWQg eGlkCkBAIC0yMzc0LDggKzIzNzAsNiBAQCBjbGVhbnVwX3JlbF9zeW5jX2NhY2hlKFRyYW5zYWN0 aW9uSWQgeGlkLCBib29sIGlzX2NvbW1pdCkKIHN0YXRpYyB2b2lkCiByZWxfc3luY19jYWNoZV9y ZWxhdGlvbl9jYihEYXR1bSBhcmcsIE9pZCByZWxpZCkKIHsKLQlSZWxhdGlvblN5bmNFbnRyeSAq ZW50cnk7Ci0KIAkvKgogCSAqIFdlIGNhbiBnZXQgaGVyZSBpZiB0aGUgcGx1Z2luIHdhcyB1c2Vk IGluIFNRTCBpbnRlcmZhY2UgYXMgdGhlCiAJICogUmVsYXRpb25TeW5jQ2FjaGUgaXMgZGVzdHJv eWVkIHdoZW4gdGhlIGRlY29kaW5nIGZpbmlzaGVzLCBidXQgdGhlcmUgaXMKQEAgLTIzOTgsMTgg KzIzOTIsMTYgQEAgcmVsX3N5bmNfY2FjaGVfcmVsYXRpb25fY2IoRGF0dW0gYXJnLCBPaWQgcmVs aWQpCiAJCSAqIEdldHRpbmcgaW52YWxpZGF0aW9ucyBmb3IgcmVsYXRpb25zIHRoYXQgYXJlbid0 IGluIHRoZSB0YWJsZSBpcwogCQkgKiBlbnRpcmVseSBub3JtYWwuICBTbyB3ZSBkb24ndCBjYXJl IGlmIGl0J3MgZm91bmQgb3Igbm90LgogCQkgKi8KLQkJZW50cnkgPSAoUmVsYXRpb25TeW5jRW50 cnkgKikgaGFzaF9zZWFyY2goUmVsYXRpb25TeW5jQ2FjaGUsICZyZWxpZCwKLQkJCQkJCQkJCQkJ CSAgSEFTSF9GSU5ELCBOVUxMKTsKKwkJUmVsYXRpb25TeW5jRW50cnkgKmVudHJ5ID0gaGFzaF9z ZWFyY2goUmVsYXRpb25TeW5jQ2FjaGUsICZyZWxpZCwKKwkJCQkJCQkJCQkJICAgSEFTSF9GSU5E LCBOVUxMKTsKKwogCQlpZiAoZW50cnkgIT0gTlVMTCkKIAkJCWVudHJ5LT5yZXBsaWNhdGVfdmFs aWQgPSBmYWxzZTsKIAl9CiAJZWxzZQogCXsKIAkJLyogV2hvbGUgY2FjaGUgbXVzdCBiZSBmbHVz aGVkLiAqLwotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCi0JCWhhc2hfc2VxX2luaXQoJnN0 YXR1cywgUmVsYXRpb25TeW5jQ2FjaGUpOwotCQl3aGlsZSAoKGVudHJ5ID0gKFJlbGF0aW9uU3lu Y0VudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9o YXNoKFJlbGF0aW9uU3luY0VudHJ5LCBlbnRyeSwgUmVsYXRpb25TeW5jQ2FjaGUpCiAJCXsKIAkJ CWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQgPSBmYWxzZTsKIAkJfQpAQCAtMjQyNCw5ICsyNDE2LDYg QEAgcmVsX3N5bmNfY2FjaGVfcmVsYXRpb25fY2IoRGF0dW0gYXJnLCBPaWQgcmVsaWQpCiBzdGF0 aWMgdm9pZAogcmVsX3N5bmNfY2FjaGVfcHVibGljYXRpb25fY2IoRGF0dW0gYXJnLCBpbnQgY2Fj aGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJl bGF0aW9uU3luY0VudHJ5ICplbnRyeTsKLQogCS8qCiAJICogV2UgY2FuIGdldCBoZXJlIGlmIHRo ZSBwbHVnaW4gd2FzIHVzZWQgaW4gU1FMIGludGVyZmFjZSBhcyB0aGUKIAkgKiBSZWxhdGlvblN5 bmNDYWNoZSBpcyBkZXN0cm95ZWQgd2hlbiB0aGUgZGVjb2RpbmcgZmluaXNoZXMsIGJ1dCB0aGVy ZSBpcwpAQCAtMjQzOSw4ICsyNDI4LDcgQEAgcmVsX3N5bmNfY2FjaGVfcHVibGljYXRpb25fY2Io RGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIAkgKiBXZSBoYXZlIG5v IGVhc3kgd2F5IHRvIGlkZW50aWZ5IHdoaWNoIGNhY2hlIGVudHJpZXMgdGhpcyBpbnZhbGlkYXRp b24KIAkgKiBldmVudCBtaWdodCBoYXZlIGFmZmVjdGVkLCBzbyBqdXN0IG1hcmsgdGhlbSBhbGwg aW52YWxpZC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlbGF0aW9uU3luY0NhY2hl KTsKLQl3aGlsZSAoKGVudHJ5ID0gKFJlbGF0aW9uU3luY0VudHJ5ICopIGhhc2hfc2VxX3NlYXJj aCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUmVsYXRpb25TeW5jRW50cnksIGVu dHJ5LCBSZWxhdGlvblN5bmNDYWNoZSkKIAl7CiAJCWVudHJ5LT5yZXBsaWNhdGVfdmFsaWQgPSBm YWxzZTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3Iu YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IDc4MTczODk1NmFm Li5lZGNmOTE3ZmI3ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVm bWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKQEAgLTQwNTcs MTQgKzQwNTcsMTMgQEAgQ2hlY2tGb3JCdWZmZXJMZWFrcyh2b2lkKQogewogI2lmZGVmIFVTRV9B U1NFUlRfQ0hFQ0tJTkcKIAlpbnQJCQlSZWZDb3VudEVycm9ycyA9IDA7Ci0JUHJpdmF0ZVJlZkNv dW50RW50cnkgKnJlczsKIAlpbnQJCQlpOwogCWNoYXIJICAgKnM7CiAKIAkvKiBjaGVjayB0aGUg YXJyYXkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgUkVGQ09VTlRfQVJSQVlfRU5UUklFUzsgaSsrKQog CXsKLQkJcmVzID0gJlByaXZhdGVSZWZDb3VudEFycmF5W2ldOworCQlQcml2YXRlUmVmQ291bnRF bnRyeSAqcmVzID0gJlByaXZhdGVSZWZDb3VudEFycmF5W2ldOwogCiAJCWlmIChyZXMtPmJ1ZmZl ciAhPSBJbnZhbGlkQnVmZmVyKQogCQl7CkBAIC00MDc5LDEyICs0MDc4LDkgQEAgQ2hlY2tGb3JC dWZmZXJMZWFrcyh2b2lkKQogCS8qIGlmIG5lY2Vzc2FyeSBzZWFyY2ggdGhlIGhhc2ggKi8KIAlp ZiAoUHJpdmF0ZVJlZkNvdW50T3ZlcmZsb3dlZCkKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBoc3Rh dDsKLQotCQloYXNoX3NlcV9pbml0KCZoc3RhdCwgUHJpdmF0ZVJlZkNvdW50SGFzaCk7Ci0JCXdo aWxlICgocmVzID0gKFByaXZhdGVSZWZDb3VudEVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0 YXQpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goUHJpdmF0ZVJlZkNvdW50RW50cnksIGVudCwg UHJpdmF0ZVJlZkNvdW50SGFzaCkKIAkJewotCQkJcyA9IERlYnVnUHJpbnRCdWZmZXJSZWZjb3Vu dChyZXMtPmJ1ZmZlcik7CisJCQlzID0gRGVidWdQcmludEJ1ZmZlclJlZmNvdW50KGVudC0+YnVm ZmVyKTsKIAkJCWVsb2coV0FSTklORywgImJ1ZmZlciByZWZjb3VudCBsZWFrOiAlcyIsIHMpOwog CQkJcGZyZWUocyk7CiAJCQlSZWZDb3VudEVycm9ycysrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMK aW5kZXggMmQ0YzUxOGRlYzIuLjgxNjRhOGM5MTc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMK QEAgLTUzOSw4ICs1MzksNiBAQCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05f QVJHUykKIHsKICNkZWZpbmUgUEdfR0VUX1NITUVNX1NJWkVTX0NPTFMgNAogCVJldHVyblNldElu Zm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKLQlIQVNI X1NFUV9TVEFUVVMgaHN0YXQ7Ci0JU2htZW1JbmRleEVudCAqZW50OwogCVNpemUJCW5hbWVkX2Fs bG9jYXRlZCA9IDA7CiAJRGF0dW0JCXZhbHVlc1tQR19HRVRfU0hNRU1fU0laRVNfQ09MU107CiAJ Ym9vbAkJbnVsbHNbUEdfR0VUX1NITUVNX1NJWkVTX0NPTFNdOwpAQCAtNTQ5LDExICs1NDcsOSBA QCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAogCUxXTG9ja0Fj cXVpcmUoU2htZW1JbmRleExvY2ssIExXX1NIQVJFRCk7CiAKLQloYXNoX3NlcV9pbml0KCZoc3Rh dCwgU2htZW1JbmRleCk7Ci0KIAkvKiBvdXRwdXQgYWxsIGFsbG9jYXRlZCBlbnRyaWVzICovCiAJ bWVtc2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKLQl3aGlsZSAoKGVudCA9IChTaG1lbUlu ZGV4RW50ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFz aChTaG1lbUluZGV4RW50LCBlbnQsIFNobWVtSW5kZXgpCiAJewogCQl2YWx1ZXNbMF0gPSBDU3Ry aW5nR2V0VGV4dERhdHVtKGVudC0+a2V5KTsKIAkJdmFsdWVzWzFdID0gSW50NjRHZXREYXR1bSgo Y2hhciAqKSBlbnQtPmxvY2F0aW9uIC0gKGNoYXIgKikgU2htZW1TZWdIZHIpOwpAQCAtNTk2LDgg KzU5Miw2IEBAIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9uc19udW1hKFBHX0ZVTkNUSU9OX0FSR1Mp CiB7CiAjZGVmaW5lIFBHX0dFVF9TSE1FTV9OVU1BX1NJWkVTX0NPTFMgMwogCVJldHVyblNldElu Zm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKLQlIQVNI X1NFUV9TVEFUVVMgaHN0YXQ7Ci0JU2htZW1JbmRleEVudCAqZW50OwogCURhdHVtCQl2YWx1ZXNb UEdfR0VUX1NITUVNX05VTUFfU0laRVNfQ09MU107CiAJYm9vbAkJbnVsbHNbUEdfR0VUX1NITUVN X05VTUFfU0laRVNfQ09MU107CiAJU2l6ZQkJb3NfcGFnZV9zaXplOwpAQCAtNjQ3LDExICs2NDEs OSBAQCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnNfbnVtYShQR19GVU5DVElPTl9BUkdTKQogCiAJ TFdMb2NrQWNxdWlyZShTaG1lbUluZGV4TG9jaywgTFdfU0hBUkVEKTsKIAotCWhhc2hfc2VxX2lu aXQoJmhzdGF0LCBTaG1lbUluZGV4KTsKLQogCS8qIG91dHB1dCBhbGwgYWxsb2NhdGVkIGVudHJp ZXMgKi8KIAltZW1zZXQobnVsbHMsIDAsIHNpemVvZihudWxscykpOwotCXdoaWxlICgoZW50ID0g KFNobWVtSW5kZXhFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZoc3RhdCkpICE9IE5VTEwpCisJZm9y ZWFjaF9oYXNoKFNobWVtSW5kZXhFbnQsIGVudCwgU2htZW1JbmRleCkKIAl7CiAJCWludAkJCWk7 CiAJCWNoYXIJICAgKnN0YXJ0cHRyLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IDdi OWY3ZTIxOGFhLi5jNjNmZWFhOWRkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc3RhbmRieS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAt MTA5OSwxMyArMTA5OSw5IEBAIFN0YW5kYnlSZWxlYXNlTG9ja1RyZWUoVHJhbnNhY3Rpb25JZCB4 aWQsIGludCBuc3VieGlkcywgVHJhbnNhY3Rpb25JZCAqc3VieGlkcykKIHZvaWQKIFN0YW5kYnlS ZWxlYXNlQWxsTG9ja3Modm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVJlY292 ZXJ5TG9ja1hpZEVudHJ5ICplbnRyeTsKLQogCWVsb2coREVCVUcyLCAicmVsZWFzZSBhbGwgc3Rh bmRieSBsb2NrcyIpOwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWNvdmVyeUxvY2tYaWRI YXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSkKKwlmb3Jl YWNoX2hhc2goUmVjb3ZlcnlMb2NrWGlkRW50cnksIGVudHJ5LCBSZWNvdmVyeUxvY2tYaWRIYXNo KQogCXsKIAkJU3RhbmRieVJlbGVhc2VYaWRFbnRyeUxvY2tzKGVudHJ5KTsKIAkJaGFzaF9zZWFy Y2goUmVjb3ZlcnlMb2NrWGlkSGFzaCwgZW50cnksIEhBU0hfUkVNT1ZFLCBOVUxMKTsKQEAgLTEx MjMsMTEgKzExMTksNyBAQCBTdGFuZGJ5UmVsZWFzZUFsbExvY2tzKHZvaWQpCiB2b2lkCiBTdGFu ZGJ5UmVsZWFzZU9sZExvY2tzKFRyYW5zYWN0aW9uSWQgb2xkeGlkKQogewotCUhBU0hfU0VRX1NU QVRVUyBzdGF0dXM7Ci0JUmVjb3ZlcnlMb2NrWGlkRW50cnkgKmVudHJ5OwotCi0JaGFzaF9zZXFf aW5pdCgmc3RhdHVzLCBSZWNvdmVyeUxvY2tYaWRIYXNoKTsKLQl3aGlsZSAoKGVudHJ5ID0gaGFz aF9zZXFfc2VhcmNoKCZzdGF0dXMpKSkKKwlmb3JlYWNoX2hhc2goUmVjb3ZlcnlMb2NrWGlkRW50 cnksIGVudHJ5LCBSZWNvdmVyeUxvY2tYaWRIYXNoKQogCXsKIAkJQXNzZXJ0KFRyYW5zYWN0aW9u SWRJc1ZhbGlkKGVudHJ5LT54aWQpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2xvY2suYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKaW5kZXggZTVl YTU0ZTc4MjQuLjAyODUyZWUxYTRjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbG9jay5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKQEAgLTIyOTIs MTEgKzIyOTIsOSBAQCBMb2NrUmVsZWFzZShjb25zdCBMT0NLVEFHICpsb2NrdGFnLCBMT0NLTU9E RSBsb2NrbW9kZSwgYm9vbCBzZXNzaW9uTG9jaykKIHZvaWQKIExvY2tSZWxlYXNlQWxsKExPQ0tN RVRIT0RJRCBsb2NrbWV0aG9kaWQsIGJvb2wgYWxsTG9ja3MpCiB7Ci0JSEFTSF9TRVFfU1RBVFVT IHN0YXR1czsKIAlMb2NrTWV0aG9kCWxvY2tNZXRob2RUYWJsZTsKIAlpbnQJCQlpLAogCQkJCW51 bUxvY2tNb2RlczsKLQlMT0NBTExPQ0sgICpsb2NhbGxvY2s7CiAJTE9DSwkgICAqbG9jazsKIAlp bnQJCQlwYXJ0aXRpb247CiAJYm9vbAkJaGF2ZV9mYXN0X3BhdGhfbHdsb2NrID0gZmFsc2U7CkBA IC0yMzI5LDkgKzIzMjcsNyBAQCBMb2NrUmVsZWFzZUFsbChMT0NLTUVUSE9ESUQgbG9ja21ldGhv ZGlkLCBib29sIGFsbExvY2tzKQogCSAqIHBvaW50ZXJzLiAgRmFzdC1wYXRoIGxvY2tzIGFyZSBj bGVhbmVkIHVwIGR1cmluZyB0aGUgbG9jYWxsb2NrIHRhYmxlCiAJICogc2NhbiwgdGhvdWdoLgog CSAqLwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgTG9ja01ldGhvZExvY2FsSGFzaCk7Ci0KLQl3 aGlsZSAoKGxvY2FsbG9jayA9IChMT0NBTExPQ0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMp KSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChMT0NBTExPQ0ssIGxvY2FsbG9jaywgTG9ja01ldGhv ZExvY2FsSGFzaCkKIAl7CiAJCS8qCiAJCSAqIElmIHRoZSBMT0NBTExPQ0sgZW50cnkgaXMgdW51 c2VkLCBzb21ldGhpbmcgbXVzdCd2ZSBnb25lIHdyb25nCkBAIC0yNTY2LDE1ICsyNTYyLDEwIEBA IExvY2tSZWxlYXNlQWxsKExPQ0tNRVRIT0RJRCBsb2NrbWV0aG9kaWQsIGJvb2wgYWxsTG9ja3Mp CiB2b2lkCiBMb2NrUmVsZWFzZVNlc3Npb24oTE9DS01FVEhPRElEIGxvY2ttZXRob2RpZCkKIHsK LQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKLQogCWlm IChsb2NrbWV0aG9kaWQgPD0gMCB8fCBsb2NrbWV0aG9kaWQgPj0gbGVuZ3Rob2YoTG9ja01ldGhv ZHMpKQogCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGxvY2sgbWV0aG9kOiAlZCIsIGxvY2tt ZXRob2RpZCk7CiAKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gp OwotCi0Jd2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgm c3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExv Y2tNZXRob2RMb2NhbEhhc2gpCiAJewogCQkvKiBJZ25vcmUgaXRlbXMgdGhhdCBhcmUgbm90IG9m IHRoZSBzcGVjaWZpZWQgbG9jayBtZXRob2QgKi8KIAkJaWYgKExPQ0FMTE9DS19MT0NLTUVUSE9E KCpsb2NhbGxvY2spICE9IGxvY2ttZXRob2RpZCkKQEAgLTI1OTgsMTIgKzI1ODksNyBAQCBMb2Nr UmVsZWFzZUN1cnJlbnRPd25lcihMT0NBTExPQ0sgKipsb2NhbGxvY2tzLCBpbnQgbmxvY2tzKQog ewogCWlmIChsb2NhbGxvY2tzID09IE5VTEwpCiAJewotCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVz OwotCQlMT0NBTExPQ0sgICpsb2NhbGxvY2s7Ci0KLQkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBM b2NrTWV0aG9kTG9jYWxIYXNoKTsKLQotCQl3aGlsZSAoKGxvY2FsbG9jayA9IChMT0NBTExPQ0sg KikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goTE9D QUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2NhbEhhc2gpCiAJCQlSZWxlYXNlTG9ja0lm SGVsZChsb2NhbGxvY2ssIGZhbHNlKTsKIAl9CiAJZWxzZQpAQCAtMjY5NywxMiArMjY4Myw3IEBA IExvY2tSZWFzc2lnbkN1cnJlbnRPd25lcihMT0NBTExPQ0sgKipsb2NhbGxvY2tzLCBpbnQgbmxv Y2tzKQogCiAJaWYgKGxvY2FsbG9ja3MgPT0gTlVMTCkKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBz dGF0dXM7Ci0JCUxPQ0FMTE9DSyAgKmxvY2FsbG9jazsKLQotCQloYXNoX3NlcV9pbml0KCZzdGF0 dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0JCXdoaWxlICgobG9jYWxsb2NrID0gKExPQ0FM TE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCWZvcmVhY2hfaGFz aChMT0NBTExPQ0ssIGxvY2FsbG9jaywgTG9ja01ldGhvZExvY2FsSGFzaCkKIAkJCUxvY2tSZWFz c2lnbk93bmVyKGxvY2FsbG9jaywgcGFyZW50KTsKIAl9CiAJZWxzZQpAQCAtMzM4MywxNyArMzM2 NCwxMyBAQCBDaGVja0ZvclNlc3Npb25BbmRYYWN0TG9ja3Modm9pZCkKIAl9IFBlckxvY2tUYWdF bnRyeTsKIAogCUhUQUIJICAgKmxvY2todGFiOwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0J TE9DQUxMT0NLICAqbG9jYWxsb2NrOwogCiAJLyogQ3JlYXRlIGEgbG9jYWwgaGFzaCB0YWJsZSBr ZXllZCBieSBMT0NLVEFHIG9ubHkgKi8KIAlsb2NraHRhYiA9IGhhc2hfbWFrZShQZXJMb2NrVGFn RW50cnksIGxvY2ssCiAJCQkJCQkgIkNoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2NrcyB0YWJsZSIs IDI1Nik7CiAKIAkvKiBTY2FuIGxvY2FsIGxvY2sgdGFibGUgdG8gZmluZCBlbnRyaWVzIGZvciBl YWNoIExPQ0tUQUcgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhh c2gpOwotCi0Jd2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJj aCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ss IExvY2tNZXRob2RMb2NhbEhhc2gpCiAJewogCQlMT0NBTExPQ0tPV05FUiAqbG9ja093bmVycyA9 IGxvY2FsbG9jay0+bG9ja093bmVyczsKIAkJUGVyTG9ja1RhZ0VudHJ5ICpoZW50cnk7CkBAIC0z NDU2LDE2ICszNDMzLDExIEBAIENoZWNrRm9yU2Vzc2lvbkFuZFhhY3RMb2Nrcyh2b2lkKQogdm9p ZAogQXRQcmVwYXJlX0xvY2tzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlM T0NBTExPQ0sgICpsb2NhbGxvY2s7Ci0KIAkvKiBGaXJzdCwgdmVyaWZ5IHRoZXJlIGFyZW4ndCBs b2NrcyBvZiBib3RoIHhhY3QgYW5kIHNlc3Npb24gbGV2ZWwgKi8KIAlDaGVja0ZvclNlc3Npb25B bmRYYWN0TG9ja3MoKTsKIAogCS8qIE5vdyBkbyB0aGUgcGVyLWxvY2FsbG9jayBjbGVhbnVwIHdv cmsgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0J d2hpbGUgKChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVz KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRo b2RMb2NhbEhhc2gpCiAJewogCQlUd29QaGFzZUxvY2tSZWNvcmQgcmVjb3JkOwogCQlMT0NBTExP Q0tPV05FUiAqbG9ja093bmVycyA9IGxvY2FsbG9jay0+bG9ja093bmVyczsKQEAgLTM1NTMsOCAr MzUyNSw2IEBAIHZvaWQKIFBvc3RQcmVwYXJlX0xvY2tzKEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQp CiB7CiAJUEdQUk9DCSAgICpuZXdwcm9jID0gVHdvUGhhc2VHZXREdW1teVByb2MoZnhpZCwgZmFs c2UpOwotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JTE9DQUxMT0NLICAqbG9jYWxsb2NrOwog CUxPQ0sJICAgKmxvY2s7CiAJUFJPQ0xPQ0sgICAqcHJvY2xvY2s7CiAJUFJPQ0xPQ0tUQUcgcHJv Y2xvY2t0YWc7CkBAIC0zNTc2LDkgKzM1NDYsNyBAQCBQb3N0UHJlcGFyZV9Mb2NrcyhGdWxsVHJh bnNhY3Rpb25JZCBmeGlkKQogCSAqIHBvaW50aW5nIHRvIHRoZSBzYW1lIHByb2Nsb2NrLCBhbmQg d2UgZGFyZW4ndCBlbmQgdXAgd2l0aCBhbnkgZGFuZ2xpbmcKIAkgKiBwb2ludGVycy4KIAkgKi8K LQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIExvY2tNZXRob2RMb2NhbEhhc2gpOwotCi0Jd2hpbGUg KChsb2NhbGxvY2sgPSAoTE9DQUxMT0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0g TlVMTCkKKwlmb3JlYWNoX2hhc2goTE9DQUxMT0NLLCBsb2NhbGxvY2ssIExvY2tNZXRob2RMb2Nh bEhhc2gpCiAJewogCQlMT0NBTExPQ0tPV05FUiAqbG9ja093bmVycyA9IGxvY2FsbG9jay0+bG9j a093bmVyczsKIAkJYm9vbAkJaGF2ZVNlc3Npb25Mb2NrOwpAQCAtMzc3NCw4ICszNzQyLDYgQEAg TG9ja0RhdGEgKgogR2V0TG9ja1N0YXR1c0RhdGEodm9pZCkKIHsKIAlMb2NrRGF0YSAgICpkYXRh OwotCVBST0NMT0NLICAgKnByb2Nsb2NrOwotCUhBU0hfU0VRX1NUQVRVUyBzZXFzdGF0OwogCWlu dAkJCWVsczsKIAlpbnQJCQllbDsKIAlpbnQJCQlpOwpAQCAtMzkxMSw5ICszODc3LDcgQEAgR2V0 TG9ja1N0YXR1c0RhdGEodm9pZCkKIAl9CiAKIAkvKiBOb3cgc2NhbiB0aGUgdGFibGVzIHRvIGNv cHkgdGhlIGRhdGEgKi8KLQloYXNoX3NlcV9pbml0KCZzZXFzdGF0LCBMb2NrTWV0aG9kUHJvY0xv Y2tIYXNoKTsKLQotCXdoaWxlICgocHJvY2xvY2sgPSAoUFJPQ0xPQ0sgKikgaGFzaF9zZXFfc2Vh cmNoKCZzZXFzdGF0KSkpCisJZm9yZWFjaF9oYXNoKFBST0NMT0NLLCBwcm9jbG9jaywgTG9ja01l dGhvZFByb2NMb2NrSGFzaCkKIAl7CiAJCVBHUFJPQwkgICAqcHJvYyA9IHByb2Nsb2NrLT50YWcu bXlQcm9jOwogCQlMT0NLCSAgICpsb2NrID0gcHJvY2xvY2stPnRhZy5teUxvY2s7CkBAIC00MTUy LDggKzQxMTYsNiBAQCB4bF9zdGFuZGJ5X2xvY2sgKgogR2V0UnVubmluZ1RyYW5zYWN0aW9uTG9j a3MoaW50ICpubG9ja3MpCiB7CiAJeGxfc3RhbmRieV9sb2NrICphY2Nlc3NFeGNsdXNpdmVMb2Nr czsKLQlQUk9DTE9DSyAgICpwcm9jbG9jazsKLQlIQVNIX1NFUV9TVEFUVVMgc2Vxc3RhdDsKIAlp bnQJCQlpOwogCWludAkJCWluZGV4OwogCWludAkJCWVsczsKQEAgLTQxNzUsMTAgKzQxMzcsOSBA QCBHZXRSdW5uaW5nVHJhbnNhY3Rpb25Mb2NrcyhpbnQgKm5sb2NrcykKIAkgKi8KIAlhY2Nlc3NF eGNsdXNpdmVMb2NrcyA9IHBhbGxvYyhlbHMgKiBzaXplb2YoeGxfc3RhbmRieV9sb2NrKSk7CiAK LQkvKiBOb3cgc2NhbiB0aGUgdGFibGVzIHRvIGNvcHkgdGhlIGRhdGEgKi8KLQloYXNoX3NlcV9p bml0KCZzZXFzdGF0LCBMb2NrTWV0aG9kUHJvY0xvY2tIYXNoKTsKLQogCS8qCisJICogTm93IHNj YW4gdGhlIHRhYmxlcyB0byBjb3B5IHRoZSBkYXRhLgorCSAqCiAJICogSWYgbG9jayBpcyBhIGN1 cnJlbnRseSBncmFudGVkIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgdGhlbiBpdCB3aWxsIGhhdmUKIAkg KiBqdXN0IG9uZSBwcm9jbG9jayBob2xkZXIsIHNvIGxvY2tzIGFyZSBuZXZlciBhY2Nlc3NlZCB0 d2ljZSBpbiB0aGlzCiAJICogcGFydGljdWxhciBjYXNlLiBEb24ndCBjb3B5IHRoaXMgY29kZSBm b3IgdXNlIGVsc2V3aGVyZSBiZWNhdXNlIGluIHRoZQpAQCAtNDE4Niw3ICs0MTQ3LDcgQEAgR2V0 UnVubmluZ1RyYW5zYWN0aW9uTG9ja3MoaW50ICpubG9ja3MpCiAJICogbm9uLWV4Y2x1c2l2ZSBs b2NrIHR5cGVzLgogCSAqLwogCWluZGV4ID0gMDsKLQl3aGlsZSAoKHByb2Nsb2NrID0gKFBST0NM T0NLICopIGhhc2hfc2VxX3NlYXJjaCgmc2Vxc3RhdCkpKQorCWZvcmVhY2hfaGFzaChQUk9DTE9D SywgcHJvY2xvY2ssIExvY2tNZXRob2RQcm9jTG9ja0hhc2gpCiAJewogCQkvKiBtYWtlIHN1cmUg dGhpcyBkZWZpbml0aW9uIG1hdGNoZXMgdGhlIG9uZSB1c2VkIGluIExvY2tBY3F1aXJlICovCiAJ CWlmICgocHJvY2xvY2stPmhvbGRNYXNrICYgTE9DS0JJVF9PTihBY2Nlc3NFeGNsdXNpdmVMb2Nr KSkgJiYKQEAgLTQyODEsMTggKzQyNDIsMTQgQEAgdm9pZAogRHVtcEFsbExvY2tzKHZvaWQpCiB7 CiAJUEdQUk9DCSAgICpwcm9jOwotCVBST0NMT0NLICAgKnByb2Nsb2NrOwogCUxPQ0sJICAgKmxv Y2s7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKIAogCXByb2MgPSBNeVByb2M7CiAKIAlpZiAo cHJvYyAmJiBwcm9jLT53YWl0TG9jaykKIAkJTE9DS19QUklOVCgiRHVtcEFsbExvY2tzOiB3YWl0 aW5nIG9uIiwgcHJvYy0+d2FpdExvY2ssIDApOwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBM b2NrTWV0aG9kUHJvY0xvY2tIYXNoKTsKLQotCXdoaWxlICgocHJvY2xvY2sgPSAoUFJPQ0xPQ0sg KikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChQUk9D TE9DSywgcHJvY2xvY2ssIExvY2tNZXRob2RQcm9jTG9ja0hhc2gpCiAJewogCQlQUk9DTE9DS19Q UklOVCgiRHVtcEFsbExvY2tzIiwgcHJvY2xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2Nr LmMKaW5kZXggMWY3NDliZWFkY2UuLmI3NDY2ZDNjYTE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3 bG9jay5jCkBAIC0zMTYsMTUgKzMxNiwxMCBAQCBpbml0X2x3bG9ja19zdGF0cyh2b2lkKQogc3Rh dGljIHZvaWQKIHByaW50X2x3bG9ja19zdGF0cyhpbnQgY29kZSwgRGF0dW0gYXJnKQogewotCUhB U0hfU0VRX1NUQVRVUyBzY2FuOwotCWx3bG9ja19zdGF0cyAqbHdzdGF0czsKLQotCWhhc2hfc2Vx X2luaXQoJnNjYW4sIGx3bG9ja19zdGF0c19odGFiKTsKLQogCS8qIEdyYWIgYW4gTFdMb2NrIHRv IGtlZXAgZGlmZmVyZW50IGJhY2tlbmRzIGZyb20gbWl4aW5nIHJlcG9ydHMgKi8KIAlMV0xvY2tB Y3F1aXJlKCZNYWluTFdMb2NrQXJyYXlbMF0ubG9jaywgTFdfRVhDTFVTSVZFKTsKIAotCXdoaWxl ICgobHdzdGF0cyA9IChsd2xvY2tfc3RhdHMgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuKSkgIT0g TlVMTCkKKwlmb3JlYWNoX2hhc2gobHdsb2NrX3N0YXRzLCBsd3N0YXRzLCBsd2xvY2tfc3RhdHNf aHRhYikKIAl7CiAJCWZwcmludGYoc3RkZXJyLAogCQkJCSJQSUQgJWQgbHdsb2NrICVzICVwOiBz aGFjcSAldSBleGFjcSAldSBibGsgJXUgc3BpbmRlbGF5ICV1IGRlcXVldWUgc2VsZiAldVxuIiwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwppbmRleCBjMmQ4NTAzMjcxNi4uNmI2MDJi YTg5ZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKQEAgLTE0NDAsOCArMTQ0 MCw2IEBAIEdldFByZWRpY2F0ZUxvY2tTdGF0dXNEYXRhKHZvaWQpCiAJaW50CQkJaTsKIAlpbnQJ CQllbHMsCiAJCQkJZWw7Ci0JSEFTSF9TRVFfU1RBVFVTIHNlcXN0YXQ7Ci0JUFJFRElDQVRFTE9D SyAqcHJlZGxvY2s7CiAKIAlkYXRhID0gKFByZWRpY2F0ZUxvY2tEYXRhICopIHBhbGxvYyhzaXpl b2YoUHJlZGljYXRlTG9ja0RhdGEpKTsKIApAQCAtMTQ2MywxMSArMTQ2MSw5IEBAIEdldFByZWRp Y2F0ZUxvY2tTdGF0dXNEYXRhKHZvaWQpCiAKIAogCS8qIFNjYW4gdGhyb3VnaCBQcmVkaWNhdGVM b2NrSGFzaCBhbmQgY29weSBjb250ZW50cyAqLwotCWhhc2hfc2VxX2luaXQoJnNlcXN0YXQsIFBy ZWRpY2F0ZUxvY2tIYXNoKTsKLQogCWVsID0gMDsKIAotCXdoaWxlICgocHJlZGxvY2sgPSAoUFJF RElDQVRFTE9DSyAqKSBoYXNoX3NlcV9zZWFyY2goJnNlcXN0YXQpKSkKKwlmb3JlYWNoX2hhc2go UFJFRElDQVRFTE9DSywgcHJlZGxvY2ssIFByZWRpY2F0ZUxvY2tIYXNoKQogCXsKIAkJZGF0YS0+ bG9ja3RhZ3NbZWxdID0gcHJlZGxvY2stPnRhZy5teVRhcmdldC0+dGFnOwogCQlkYXRhLT54YWN0 c1tlbF0gPSAqcHJlZGxvY2stPnRhZy5teVhhY3Q7CkBAIC0yOTI0LDggKzI5MjAsNiBAQCBleGl0 Ogogc3RhdGljIHZvaWQKIERyb3BBbGxQcmVkaWNhdGVMb2Nrc0Zyb21UYWJsZShSZWxhdGlvbiBy ZWxhdGlvbiwgYm9vbCB0cmFuc2ZlcikKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2Vxc3RhdDsKLQlQ UkVESUNBVEVMT0NLVEFSR0VUICpvbGR0YXJnZXQ7CiAJUFJFRElDQVRFTE9DS1RBUkdFVCAqaGVh cHRhcmdldDsKIAlPaWQJCQlkYklkOwogCU9pZAkJCXJlbElkOwpAQCAtMjk4MSw5ICsyOTc1LDcg QEAgRHJvcEFsbFByZWRpY2F0ZUxvY2tzRnJvbVRhYmxlKFJlbGF0aW9uIHJlbGF0aW9uLCBib29s IHRyYW5zZmVyKQogCQlSZW1vdmVTY3JhdGNoVGFyZ2V0KHRydWUpOwogCiAJLyogU2NhbiB0aHJv dWdoIHRhcmdldCBtYXAgKi8KLQloYXNoX3NlcV9pbml0KCZzZXFzdGF0LCBQcmVkaWNhdGVMb2Nr VGFyZ2V0SGFzaCk7Ci0KLQl3aGlsZSAoKG9sZHRhcmdldCA9IChQUkVESUNBVEVMT0NLVEFSR0VU ICopIGhhc2hfc2VxX3NlYXJjaCgmc2Vxc3RhdCkpKQorCWZvcmVhY2hfaGFzaChQUkVESUNBVEVM T0NLVEFSR0VULCBvbGR0YXJnZXQsIFByZWRpY2F0ZUxvY2tUYXJnZXRIYXNoKQogCXsKIAkJZGxp c3RfbXV0YWJsZV9pdGVyIGl0ZXI7CiAKQEAgLTQ0MDYsOCArNDM5OCw2IEBAIENoZWNrRm9yU2Vy aWFsaXphYmxlQ29uZmxpY3RJbihSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJE YXRhICp0aWQsIEJsCiB2b2lkCiBDaGVja1RhYmxlRm9yU2VyaWFsaXphYmxlQ29uZmxpY3RJbihS ZWxhdGlvbiByZWxhdGlvbikKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc2Vxc3RhdDsKLQlQUkVESUNB VEVMT0NLVEFSR0VUICp0YXJnZXQ7CiAJT2lkCQkJZGJJZDsKIAlPaWQJCQloZWFwSWQ7CiAJaW50 CQkJaTsKQEAgLTQ0NDEsOSArNDQzMSw3IEBAIENoZWNrVGFibGVGb3JTZXJpYWxpemFibGVDb25m bGljdEluKFJlbGF0aW9uIHJlbGF0aW9uKQogCUxXTG9ja0FjcXVpcmUoU2VyaWFsaXphYmxlWGFj dEhhc2hMb2NrLCBMV19FWENMVVNJVkUpOwogCiAJLyogU2NhbiB0aHJvdWdoIHRhcmdldCBsaXN0 ICovCi0JaGFzaF9zZXFfaW5pdCgmc2Vxc3RhdCwgUHJlZGljYXRlTG9ja1RhcmdldEhhc2gpOwot Ci0Jd2hpbGUgKCh0YXJnZXQgPSAoUFJFRElDQVRFTE9DS1RBUkdFVCAqKSBoYXNoX3NlcV9zZWFy Y2goJnNlcXN0YXQpKSkKKwlmb3JlYWNoX2hhc2goUFJFRElDQVRFTE9DS1RBUkdFVCwgdGFyZ2V0 LCBQcmVkaWNhdGVMb2NrVGFyZ2V0SGFzaCkKIAl7CiAJCWRsaXN0X211dGFibGVfaXRlciBpdGVy OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3NtZ3Ivc21nci5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYwppbmRleCBkNGZhNmExNDRmMS4uYjJhZTU4NjYyZjQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc21nci9zbWdyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9zbWdyL3NtZ3IuYwpAQCAtNDA5LDkgKzQwOSw2IEBAIHNtZ3JkZXN0cm95 YWxsKHZvaWQpCiB2b2lkCiBzbWdycmVsZWFzZWFsbCh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRV UyBzdGF0dXM7Ci0JU01nclJlbGF0aW9uIHJlbG47Ci0KIAkvKiBOb3RoaW5nIHRvIGRvIGlmIGhh c2h0YWJsZSBub3Qgc2V0IHVwICovCiAJaWYgKFNNZ3JSZWxhdGlvbkhhc2ggPT0gTlVMTCkKIAkJ cmV0dXJuOwpAQCAtNDE5LDkgKzQxNiw3IEBAIHNtZ3JyZWxlYXNlYWxsKHZvaWQpCiAJLyogc2Vl bXMgdW5zYWZlIHRvIGFjY2VwdCBpbnRlcnJ1cHRzIHdoaWxlIGl0ZXJhdGluZyAqLwogCUhPTERf SU5URVJSVVBUUygpOwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBTTWdyUmVsYXRpb25IYXNo KTsKLQotCXdoaWxlICgocmVsbiA9IChTTWdyUmVsYXRpb24pIGhhc2hfc2VxX3NlYXJjaCgmc3Rh dHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goU01nclJlbGF0aW9uRGF0YSwgcmVsbiwgU01n clJlbGF0aW9uSGFzaCkKIAl7CiAJCXNtZ3JyZWxlYXNlKHJlbG4pOwogCX0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3N5 bmMvc3luYy5jCmluZGV4IDQyYjdmYzExMjg4Li5mNjVjNTJlYjlhMiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3N5 bmMvc3luYy5jCkBAIC0yODAsOCArMjgwLDYgQEAgUHJvY2Vzc1N5bmNSZXF1ZXN0cyh2b2lkKQog ewogCXN0YXRpYyBib29sIHN5bmNfaW5fcHJvZ3Jlc3MgPSBmYWxzZTsKIAotCUhBU0hfU0VRX1NU QVRVUyBoc3RhdDsKLQlQZW5kaW5nRnN5bmNFbnRyeSAqZW50cnk7CiAJaW50CQkJYWJzb3JiX2Nv dW50ZXI7CiAKIAkvKiBTdGF0aXN0aWNzIG9uIHN5bmMgdGltZXMgKi8KQEAgLTMzOCw4ICszMzYs NyBAQCBQcm9jZXNzU3luY1JlcXVlc3RzKHZvaWQpCiAJaWYgKHN5bmNfaW5fcHJvZ3Jlc3MpCiAJ ewogCQkvKiBwcmlvciB0cnkgZmFpbGVkLCBzbyB1cGRhdGUgYW55IHN0YWxlIGN5Y2xlX2N0ciB2 YWx1ZXMgKi8KLQkJaGFzaF9zZXFfaW5pdCgmaHN0YXQsIHBlbmRpbmdPcHMpOwotCQl3aGlsZSAo KGVudHJ5ID0gKFBlbmRpbmdGc3luY0VudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAh PSBOVUxMKQorCQlmb3JlYWNoX2hhc2goUGVuZGluZ0ZzeW5jRW50cnksIGVudHJ5LCBwZW5kaW5n T3BzKQogCQl7CiAJCQllbnRyeS0+Y3ljbGVfY3RyID0gc3luY19jeWNsZV9jdHI7CiAJCX0KQEAg LTM1Myw4ICszNTAsNyBAQCBQcm9jZXNzU3luY1JlcXVlc3RzKHZvaWQpCiAKIAkvKiBOb3cgc2Nh biB0aGUgaGFzaHRhYmxlIGZvciBmc3luYyByZXF1ZXN0cyB0byBwcm9jZXNzICovCiAJYWJzb3Ji X2NvdW50ZXIgPSBGU1lOQ1NfUEVSX0FCU09SQjsKLQloYXNoX3NlcV9pbml0KCZoc3RhdCwgcGVu ZGluZ09wcyk7Ci0Jd2hpbGUgKChlbnRyeSA9IChQZW5kaW5nRnN5bmNFbnRyeSAqKSBoYXNoX3Nl cV9zZWFyY2goJmhzdGF0KSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUGVuZGluZ0ZzeW5jRW50 cnksIGVudHJ5LCBwZW5kaW5nT3BzKQogCXsKIAkJaW50CQkJZmFpbHVyZXM7CiAKQEAgLTQ5NSwx MyArNDkxLDEwIEBAIFJlbWVtYmVyU3luY1JlcXVlc3QoY29uc3QgRmlsZVRhZyAqZnRhZywgU3lu Y1JlcXVlc3RUeXBlIHR5cGUpCiAJfQogCWVsc2UgaWYgKHR5cGUgPT0gU1lOQ19GSUxURVJfUkVR VUVTVCkKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBoc3RhdDsKLQkJUGVuZGluZ0ZzeW5jRW50cnkg KnBmZTsKIAkJTGlzdENlbGwgICAqY2VsbDsKIAogCQkvKiBDYW5jZWwgbWF0Y2hpbmcgZnN5bmMg cmVxdWVzdHMgKi8KLQkJaGFzaF9zZXFfaW5pdCgmaHN0YXQsIHBlbmRpbmdPcHMpOwotCQl3aGls ZSAoKHBmZSA9IChQZW5kaW5nRnN5bmNFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJmhzdGF0KSkg IT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKFBlbmRpbmdGc3luY0VudHJ5LCBwZmUsIHBlbmRpbmdP cHMpCiAJCXsKIAkJCWlmIChwZmUtPnRhZy5oYW5kbGVyID09IGZ0YWctPmhhbmRsZXIgJiYKIAkJ CQlzeW5jc3dbZnRhZy0+aGFuZGxlcl0uc3luY19maWxldGFnbWF0Y2hlcyhmdGFnLCAmcGZlLT50 YWcpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMgYi9z cmMvYmFja2VuZC90c2VhcmNoL3RzX3R5cGFuYWx5emUuYwppbmRleCBhOWJjNjkwMWExMi4uNDM5 Zjg3ODgwMDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5j CisrKyBiL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlwYW5hbHl6ZS5jCkBAIC0xNDksNyArMTQ5 LDYgQEAgY29tcHV0ZV90c3ZlY3Rvcl9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLAogCiAJLyog VGhpcyBpcyBEIGZyb20gdGhlIExDIGFsZ29yaXRobS4gKi8KIAlIVEFCCSAgICpsZXhlbWVzX3Rh YjsKLQlIQVNIX1NFUV9TVEFUVVMgc2Nhbl9zdGF0dXM7CiAKIAkvKiBUaGlzIGlzIHRoZSBjdXJy ZW50IGJ1Y2tldCBudW1iZXIgZnJvbSB0aGUgTEMgYWxnb3JpdGhtICovCiAJaW50CQkJYl9jdXJy ZW50OwpAQCAtMjg4LDcgKzI4Nyw2IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0clN0 YXRzICpzdGF0cywKIAkJaW50CQkJbm9ubnVsbF9jbnQgPSBzYW1wbGVyb3dzIC0gbnVsbF9jbnQ7 CiAJCWludAkJCWk7CiAJCVRyYWNrSXRlbSAqKnNvcnRfdGFibGU7Ci0JCVRyYWNrSXRlbSAgKml0 ZW07CiAJCWludAkJCXRyYWNrX2xlbjsKIAkJaW50CQkJY3V0b2ZmX2ZyZXE7CiAJCWludAkJCW1p bmZyZXEsCkBAIC0zMTUsMTAgKzMxMyw5IEBAIGNvbXB1dGVfdHN2ZWN0b3Jfc3RhdHMoVmFjQXR0 clN0YXRzICpzdGF0cywKIAkJaSA9IGhhc2hfZ2V0X251bV9lbnRyaWVzKGxleGVtZXNfdGFiKTsJ Lyogc3VyZWx5IGVub3VnaCBzcGFjZSAqLwogCQlzb3J0X3RhYmxlID0gKFRyYWNrSXRlbSAqKikg cGFsbG9jKHNpemVvZihUcmFja0l0ZW0gKikgKiBpKTsKIAotCQloYXNoX3NlcV9pbml0KCZzY2Fu X3N0YXR1cywgbGV4ZW1lc190YWIpOwogCQl0cmFja19sZW4gPSAwOwogCQltYXhmcmVxID0gMDsK LQkJd2hpbGUgKChpdGVtID0gKFRyYWNrSXRlbSAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3Rh dHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKFRyYWNrSXRlbSwgaXRlbSwgbGV4ZW1lc190 YWIpCiAJCXsKIAkJCWlmIChpdGVtLT5mcmVxdWVuY3kgPiBjdXRvZmZfZnJlcSkKIAkJCXsKQEAg LTQ2MiwxMSArNDU5LDcgQEAgY29tcHV0ZV90c3ZlY3Rvcl9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0 YXRzLAogc3RhdGljIHZvaWQKIHBydW5lX2xleGVtZXNfaGFzaHRhYmxlKEhUQUIgKmxleGVtZXNf dGFiLCBpbnQgYl9jdXJyZW50KQogewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKLQlU cmFja0l0ZW0gICppdGVtOwotCi0JaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIGxleGVtZXNf dGFiKTsKLQl3aGlsZSAoKGl0ZW0gPSAoVHJhY2tJdGVtICopIGhhc2hfc2VxX3NlYXJjaCgmc2Nh bl9zdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChUcmFja0l0ZW0sIGl0ZW0sIGxleGVt ZXNfdGFiKQogCXsKIAkJaWYgKGl0ZW0tPmZyZXF1ZW5jeSArIGl0ZW0tPmRlbHRhIDw9IGJfY3Vy cmVudCkKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9l dmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IDM1 YWEwMjA4ZmM5Li5kMGI5MGY0MGQzMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRf ZXZlbnQuYwpAQCAtMjk5LDggKzI5OSw2IEBAIGNoYXIJICAqKgogR2V0V2FpdEV2ZW50Q3VzdG9t TmFtZXModWludDMyIGNsYXNzSWQsIGludCAqbndhaXRldmVudHMpCiB7CiAJY2hhcgkgICoqd2Fp dGV2ZW50bmFtZXM7Ci0JV2FpdEV2ZW50Q3VzdG9tRW50cnlCeU5hbWUgKmhlbnRyeTsKLQlIQVNI X1NFUV9TVEFUVVMgaGFzaF9zZXE7CiAJaW50CQkJaW5kZXg7CiAJaW50CQkJZWxzOwogCkBAIC0z MTMsMTAgKzMxMSw4IEBAIEdldFdhaXRFdmVudEN1c3RvbU5hbWVzKHVpbnQzMiBjbGFzc0lkLCBp bnQgKm53YWl0ZXZlbnRzKQogCXdhaXRldmVudG5hbWVzID0gcGFsbG9jKGVscyAqIHNpemVvZihj aGFyICopKTsKIAogCS8qIE5vdyBzY2FuIHRoZSBoYXNoIHRhYmxlIHRvIGNvcHkgdGhlIGRhdGEg Ki8KLQloYXNoX3NlcV9pbml0KCZoYXNoX3NlcSwgV2FpdEV2ZW50Q3VzdG9tSGFzaEJ5TmFtZSk7 Ci0KIAlpbmRleCA9IDA7Ci0Jd2hpbGUgKChoZW50cnkgPSAoV2FpdEV2ZW50Q3VzdG9tRW50cnlC eU5hbWUgKikgaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJZm9yZWFjaF9o YXNoKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlOYW1lLCBoZW50cnksIFdhaXRFdmVudEN1c3RvbUhh c2hCeU5hbWUpCiAJewogCQlpZiAoKGhlbnRyeS0+d2FpdF9ldmVudF9pbmZvICYgV0FJVF9FVkVO VF9DTEFTU19NQVNLKSAhPSBjbGFzc0lkKQogCQkJY29udGludWU7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvYXJyYXlfdHlwYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2FycmF5X3R5cGFuYWx5emUuYwppbmRleCBjYzMxMGMwNDRiMy4uYTViZTdlNGMxYzMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hcnJheV90eXBhbmFseXplLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FycmF5X3R5cGFuYWx5emUuYwpAQCAtMjIzLDcgKzIyMyw2 IEBAIGNvbXB1dGVfYXJyYXlfc3RhdHMoVmFjQXR0clN0YXRzICpzdGF0cywgQW5hbHl6ZUF0dHJG ZXRjaEZ1bmMgZmV0Y2hmdW5jLAogCiAJLyogVGhpcyBpcyBEIGZyb20gdGhlIExDIGFsZ29yaXRo bS4gKi8KIAlIVEFCCSAgICplbGVtZW50c190YWI7Ci0JSEFTSF9TRVFfU1RBVFVTIHNjYW5fc3Rh dHVzOwogCiAJLyogVGhpcyBpcyB0aGUgY3VycmVudCBidWNrZXQgbnVtYmVyIGZyb20gdGhlIExD IGFsZ29yaXRobSAqLwogCWludAkJCWJfY3VycmVudDsKQEAgLTIzMiwxMCArMjMxLDggQEAgY29t cHV0ZV9hcnJheV9zdGF0cyhWYWNBdHRyU3RhdHMgKnN0YXRzLCBBbmFseXplQXR0ckZldGNoRnVu YyBmZXRjaGZ1bmMsCiAJaW50CQkJYnVja2V0X3dpZHRoOwogCWludAkJCWFycmF5X25vOwogCWlu dDY0CQllbGVtZW50X25vOwotCVRyYWNrSXRlbSAgKml0ZW07CiAJaW50CQkJc2xvdF9pZHg7CiAJ SFRBQgkgICAqY291bnRfdGFiOwotCURFQ291bnRJdGVtICpjb3VudF9pdGVtOwogCiAJZXh0cmFf ZGF0YSA9IChBcnJheUFuYWx5emVFeHRyYURhdGEgKikgc3RhdHMtPmV4dHJhX2RhdGE7CiAKQEAg LTMwMCw2ICsyOTcsNyBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMs IEFuYWx5emVBdHRyRmV0Y2hGdW5jIGZldGNoZnVuYywKIAkJaW50NjQJCXByZXZfZWxlbWVudF9u byA9IGVsZW1lbnRfbm87CiAJCWludAkJCWRpc3RpbmN0X2NvdW50OwogCQlib29sCQljb3VudF9p dGVtX2ZvdW5kOworCQlERUNvdW50SXRlbSAqY291bnRfaXRlbTsKIAogCQl2YWN1dW1fZGVsYXlf cG9pbnQodHJ1ZSk7CiAKQEAgLTMzOCw2ICszMzYsNyBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZh Y0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5jIGZldGNoZnVuYywKIAkJewog CQkJRGF0dW0JCWVsZW1fdmFsdWU7CiAJCQlib29sCQlmb3VuZDsKKwkJCVRyYWNrSXRlbSAgKml0 ZW07CiAKIAkJCS8qIE5vIG51bGwgZWxlbWVudCBwcm9jZXNzaW5nIG90aGVyIHRoYW4gZmxhZyBz ZXR0aW5nIGhlcmUgKi8KIAkJCWlmIChlbGVtX251bGxzW2pdKQpAQCAtNDU4LDEwICs0NTcsOSBA QCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5emVBdHRyRmV0 Y2hGdW5jIGZldGNoZnVuYywKIAkJaSA9IGhhc2hfZ2V0X251bV9lbnRyaWVzKGVsZW1lbnRzX3Rh Yik7IC8qIHN1cmVseSBlbm91Z2ggc3BhY2UgKi8KIAkJc29ydF90YWJsZSA9IChUcmFja0l0ZW0g KiopIHBhbGxvYyhzaXplb2YoVHJhY2tJdGVtICopICogaSk7CiAKLQkJaGFzaF9zZXFfaW5pdCgm c2Nhbl9zdGF0dXMsIGVsZW1lbnRzX3RhYik7CiAJCXRyYWNrX2xlbiA9IDA7CiAJCW1heGZyZXEg PSAwOwotCQl3aGlsZSAoKGl0ZW0gPSAoVHJhY2tJdGVtICopIGhhc2hfc2VxX3NlYXJjaCgmc2Nh bl9zdGF0dXMpKSAhPSBOVUxMKQorCQlmb3JlYWNoX2hhc2goVHJhY2tJdGVtLCBpdGVtLCBlbGVt ZW50c190YWIpCiAJCXsKIAkJCWlmIChpdGVtLT5mcmVxdWVuY3kgPiBjdXRvZmZfZnJlcSkKIAkJ CXsKQEAgLTU5NSw5ICs1OTMsOCBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAq c3RhdHMsIEFuYWx5emVBdHRyRmV0Y2hGdW5jIGZldGNoZnVuYywKIAkJCSAqLwogCQkJc29ydGVk X2NvdW50X2l0ZW1zID0gKERFQ291bnRJdGVtICoqKQogCQkJCXBhbGxvYyhzaXplb2YoREVDb3Vu dEl0ZW0gKikgKiBjb3VudF9pdGVtc19jb3VudCk7Ci0JCQloYXNoX3NlcV9pbml0KCZzY2FuX3N0 YXR1cywgY291bnRfdGFiKTsKIAkJCWogPSAwOwotCQkJd2hpbGUgKChjb3VudF9pdGVtID0gKERF Q291bnRJdGVtICopIGhhc2hfc2VxX3NlYXJjaCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQorCQkJ Zm9yZWFjaF9oYXNoKERFQ291bnRJdGVtLCBjb3VudF9pdGVtLCBjb3VudF90YWIpCiAJCQl7CiAJ CQkJc29ydGVkX2NvdW50X2l0ZW1zW2orK10gPSBjb3VudF9pdGVtOwogCQkJfQpAQCAtNjg0LDEx ICs2ODEsNyBAQCBjb21wdXRlX2FycmF5X3N0YXRzKFZhY0F0dHJTdGF0cyAqc3RhdHMsIEFuYWx5 emVBdHRyRmV0Y2hGdW5jIGZldGNoZnVuYywKIHN0YXRpYyB2b2lkCiBwcnVuZV9lbGVtZW50X2hh c2h0YWJsZShIVEFCICplbGVtZW50c190YWIsIGludCBiX2N1cnJlbnQpCiB7Ci0JSEFTSF9TRVFf U1RBVFVTIHNjYW5fc3RhdHVzOwotCVRyYWNrSXRlbSAgKml0ZW07Ci0KLQloYXNoX3NlcV9pbml0 KCZzY2FuX3N0YXR1cywgZWxlbWVudHNfdGFiKTsKLQl3aGlsZSAoKGl0ZW0gPSAoVHJhY2tJdGVt ICopIGhhc2hfc2VxX3NlYXJjaCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFz aChUcmFja0l0ZW0sIGl0ZW0sIGVsZW1lbnRzX3RhYikKIAl7CiAJCWlmIChpdGVtLT5mcmVxdWVu Y3kgKyBpdGVtLT5kZWx0YSA8PSBiX2N1cnJlbnQpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxj YWNoZS5jCmluZGV4IGI3NmQ2YmJkNWM5Li5lYjQ0MWE4MTU1MiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jCkBAIC0yOTkwLDggKzI5OTAsNiBAQCBSZWxhdGlvbkNhY2hlSW52YWxpZGF0 ZUVudHJ5KE9pZCByZWxhdGlvbklkKQogdm9pZAogUmVsYXRpb25DYWNoZUludmFsaWRhdGUoYm9v bCBkZWJ1Z19kaXNjYXJkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVsSWRDYWNo ZUVudCAqaWRoZW50cnk7CiAJUmVsYXRpb24JcmVsYXRpb247CiAJTGlzdAkgICAqcmVidWlsZEZp cnN0TGlzdCA9IE5JTDsKIAlMaXN0CSAgICpyZWJ1aWxkTGlzdCA9IE5JTDsKQEAgLTMwMDQsOSAr MzAwMiw3IEBAIFJlbGF0aW9uQ2FjaGVJbnZhbGlkYXRlKGJvb2wgZGVidWdfZGlzY2FyZCkKIAlS ZWxhdGlvbk1hcEludmFsaWRhdGVBbGwoKTsKIAogCS8qIFBoYXNlIDEgKi8KLQloYXNoX3NlcV9p bml0KCZzdGF0dXMsIFJlbGF0aW9uSWRDYWNoZSk7Ci0KLQl3aGlsZSAoKGlkaGVudHJ5ID0gKFJl bElkQ2FjaGVFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVh Y2hfaGFzaChSZWxJZENhY2hlRW50LCBpZGhlbnRyeSwgUmVsYXRpb25JZENhY2hlKQogCXsKIAkJ cmVsYXRpb24gPSBpZGhlbnRyeS0+cmVsZGVzYzsKIApAQCAtMzE1MSwxMiArMzE0Nyw5IEBAIEFz c2VydFBlbmRpbmdTeW5jQ29uc2lzdGVuY3koUmVsYXRpb24gcmVsYXRpb24pCiB2b2lkCiBBc3Nl cnRQZW5kaW5nU3luY3NfUmVsYXRpb25DYWNoZSh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBz dGF0dXM7Ci0JTE9DQUxMT0NLICAqbG9jYWxsb2NrOwogCVJlbGF0aW9uICAgKnJlbHM7CiAJaW50 CQkJbWF4cmVsczsKIAlpbnQJCQlucmVsczsKLQlSZWxJZENhY2hlRW50ICppZGhlbnRyeTsKIAlp bnQJCQlpOwogCiAJLyoKQEAgLTMxNzAsOCArMzE2Myw3IEBAIEFzc2VydFBlbmRpbmdTeW5jc19S ZWxhdGlvbkNhY2hlKHZvaWQpCiAJbWF4cmVscyA9IDE7CiAJcmVscyA9IHBhbGxvYyhtYXhyZWxz ICogc2l6ZW9mKCpyZWxzKSk7CiAJbnJlbHMgPSAwOwotCWhhc2hfc2VxX2luaXQoJnN0YXR1cywg R2V0TG9ja01ldGhvZExvY2FsSGFzaCgpKTsKLQl3aGlsZSAoKGxvY2FsbG9jayA9IChMT0NBTExP Q0sgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChM T0NBTExPQ0ssIGxvY2FsbG9jaywgR2V0TG9ja01ldGhvZExvY2FsSGFzaCgpKQogCXsKIAkJT2lk CQkJcmVsaWQ7CiAJCVJlbGF0aW9uCXI7CkBAIC0zMTkzLDggKzMxODUsNyBAQCBBc3NlcnRQZW5k aW5nU3luY3NfUmVsYXRpb25DYWNoZSh2b2lkKQogCQlyZWxzW25yZWxzKytdID0gcjsKIAl9CiAK LQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFJlbGF0aW9uSWRDYWNoZSk7Ci0Jd2hpbGUgKChpZGhl bnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVM TCkKKwlmb3JlYWNoX2hhc2goUmVsSWRDYWNoZUVudCwgaWRoZW50cnksIFJlbGF0aW9uSWRDYWNo ZSkKIAkJQXNzZXJ0UGVuZGluZ1N5bmNDb25zaXN0ZW5jeShpZGhlbnRyeS0+cmVsZGVzYyk7CiAK IAlmb3IgKGkgPSAwOyBpIDwgbnJlbHM7IGkrKykKQEAgLTMyMjIsOCArMzIxMyw2IEBAIEFzc2Vy dFBlbmRpbmdTeW5jc19SZWxhdGlvbkNhY2hlKHZvaWQpCiB2b2lkCiBBdEVPWGFjdF9SZWxhdGlv bkNhY2hlKGJvb2wgaXNDb21taXQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlSZWxJ ZENhY2hlRW50ICppZGhlbnRyeTsKIAlpbnQJCQlpOwogCiAJLyoKQEAgLTMyNDYsOCArMzIzNSw3 IEBAIEF0RU9YYWN0X1JlbGF0aW9uQ2FjaGUoYm9vbCBpc0NvbW1pdCkKIAkgKi8KIAlpZiAoZW94 YWN0X2xpc3Rfb3ZlcmZsb3dlZCkKIAl7Ci0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgUmVsYXRp b25JZENhY2hlKTsKLQkJd2hpbGUgKChpZGhlbnRyeSA9IChSZWxJZENhY2hlRW50ICopIGhhc2hf c2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJZm9yZWFjaF9oYXNoKFJlbElkQ2FjaGVF bnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJCXsKIAkJCUF0RU9YYWN0X2NsZWFudXAo aWRoZW50cnktPnJlbGRlc2MsIGlzQ29tbWl0KTsKIAkJfQpAQCAtMzI1NiwxMCArMzI0NCwxMSBA QCBBdEVPWGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQpCiAJewogCQlmb3IgKGkgPSAw OyBpIDwgZW94YWN0X2xpc3RfbGVuOyBpKyspCiAJCXsKLQkJCWlkaGVudHJ5ID0gKFJlbElkQ2Fj aGVFbnQgKikgaGFzaF9zZWFyY2goUmVsYXRpb25JZENhY2hlLAotCQkJCQkJCQkJCQkJCSAmZW94 YWN0X2xpc3RbaV0sCi0JCQkJCQkJCQkJCQkJIEhBU0hfRklORCwKLQkJCQkJCQkJCQkJCQkgTlVM TCk7CisJCQlSZWxJZENhY2hlRW50ICppZGhlbnRyeSA9IGhhc2hfc2VhcmNoKFJlbGF0aW9uSWRD YWNoZSwKKwkJCQkJCQkJCQkJCSAgJmVveGFjdF9saXN0W2ldLAorCQkJCQkJCQkJCQkJICBIQVNI X0ZJTkQsCisJCQkJCQkJCQkJCQkgIE5VTEwpOworCiAJCQlpZiAoaWRoZW50cnkgIT0gTlVMTCkK IAkJCQlBdEVPWGFjdF9jbGVhbnVwKGlkaGVudHJ5LT5yZWxkZXNjLCBpc0NvbW1pdCk7CiAJCX0K QEAgLTMzNzUsOCArMzM2NCw2IEBAIHZvaWQKIEF0RU9TdWJYYWN0X1JlbGF0aW9uQ2FjaGUoYm9v bCBpc0NvbW1pdCwgU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAogCQkJCQkJICBTdWJUcmFuc2Fj dGlvbklkIHBhcmVudFN1YmlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVsSWRD YWNoZUVudCAqaWRoZW50cnk7CiAJaW50CQkJaTsKIAogCS8qCkBAIC0zMzk0LDggKzMzODEsNyBA QCBBdEVPU3ViWGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQsIFN1YlRyYW5zYWN0aW9u SWQgbXlTdWJpZCwKIAkgKi8KIAlpZiAoZW94YWN0X2xpc3Rfb3ZlcmZsb3dlZCkKIAl7Ci0JCWhh c2hfc2VxX2luaXQoJnN0YXR1cywgUmVsYXRpb25JZENhY2hlKTsKLQkJd2hpbGUgKChpZGhlbnRy eSA9IChSZWxJZENhY2hlRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkK KwkJZm9yZWFjaF9oYXNoKFJlbElkQ2FjaGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUp CiAJCXsKIAkJCUF0RU9TdWJYYWN0X2NsZWFudXAoaWRoZW50cnktPnJlbGRlc2MsIGlzQ29tbWl0 LAogCQkJCQkJCQlteVN1YmlkLCBwYXJlbnRTdWJpZCk7CkBAIC0zNDA1LDYgKzMzOTEsOCBAQCBB dEVPU3ViWGFjdF9SZWxhdGlvbkNhY2hlKGJvb2wgaXNDb21taXQsIFN1YlRyYW5zYWN0aW9uSWQg bXlTdWJpZCwKIAl7CiAJCWZvciAoaSA9IDA7IGkgPCBlb3hhY3RfbGlzdF9sZW47IGkrKykKIAkJ eworCQkJUmVsSWRDYWNoZUVudCAqaWRoZW50cnk7CisKIAkJCWlkaGVudHJ5ID0gKFJlbElkQ2Fj aGVFbnQgKikgaGFzaF9zZWFyY2goUmVsYXRpb25JZENhY2hlLAogCQkJCQkJCQkJCQkJCSAmZW94 YWN0X2xpc3RbaV0sCiAJCQkJCQkJCQkJCQkJIEhBU0hfRklORCwKQEAgLTY1ODMsOCArNjU3MSw2 IEBAIHdyaXRlX3JlbGNhY2hlX2luaXRfZmlsZShib29sIHNoYXJlZCkKIAljaGFyCQl0ZW1wZmls ZW5hbWVbTUFYUEdQQVRIXTsKIAljaGFyCQlmaW5hbGZpbGVuYW1lW01BWFBHUEFUSF07CiAJaW50 CQkJbWFnaWM7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlSZWxJZENhY2hlRW50ICppZGhl bnRyeTsKIAlpbnQJCQlpOwogCiAJLyoKQEAgLTY2NDQsOSArNjYzMCw3IEBAIHdyaXRlX3JlbGNh Y2hlX2luaXRfZmlsZShib29sIHNoYXJlZCkKIAkvKgogCSAqIFdyaXRlIGFsbCB0aGUgYXBwcm9w cmlhdGUgcmVsZGVzY3MgKGluIG5vIHBhcnRpY3VsYXIgb3JkZXIpLgogCSAqLwotCWhhc2hfc2Vx X2luaXQoJnN0YXR1cywgUmVsYXRpb25JZENhY2hlKTsKLQotCXdoaWxlICgoaWRoZW50cnkgPSAo UmVsSWRDYWNoZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9y ZWFjaF9oYXNoKFJlbElkQ2FjaGVFbnQsIGlkaGVudHJ5LCBSZWxhdGlvbklkQ2FjaGUpCiAJewog CQlSZWxhdGlvbglyZWwgPSBpZGhlbnRyeS0+cmVsZGVzYzsKIAkJRm9ybV9wZ19jbGFzcyByZWxm b3JtID0gcmVsLT5yZF9yZWw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9y ZWxmaWxlbnVtYmVybWFwLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVy bWFwLmMKaW5kZXggNjlhYmE0NjNlYWUuLjJiOWNhOGIzNmExIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9yZWxmaWxlbnVtYmVybWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jCkBAIC01MSwxNCArNTEsMTAgQEAgdHlwZWRlZiBz dHJ1Y3QKIHN0YXRpYyB2b2lkCiBSZWxmaWxlbnVtYmVyTWFwSW52YWxpZGF0ZUNhbGxiYWNrKERh dHVtIGFyZywgT2lkIHJlbGlkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUmVsZmls ZW51bWJlck1hcEVudHJ5ICplbnRyeTsKLQogCS8qIGNhbGxiYWNrIG9ubHkgZ2V0cyByZWdpc3Rl cmVkIGFmdGVyIGNyZWF0aW5nIHRoZSBoYXNoICovCiAJQXNzZXJ0KFJlbGZpbGVudW1iZXJNYXBI YXNoICE9IE5VTEwpOwogCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBSZWxmaWxlbnVtYmVyTWFw SGFzaCk7Ci0Jd2hpbGUgKChlbnRyeSA9IChSZWxmaWxlbnVtYmVyTWFwRW50cnkgKikgaGFzaF9z ZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChSZWxmaWxlbnVtYmVy TWFwRW50cnksIGVudHJ5LCBSZWxmaWxlbnVtYmVyTWFwSGFzaCkKIAl7CiAJCS8qCiAJCSAqIElm IHJlbGlkIGlzIEludmFsaWRPaWQsIHNpZ25hbGluZyBhIGNvbXBsZXRlIHJlc2V0LCB3ZSBtdXN0 IHJlbW92ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMKaW5kZXggYmNmZDZhOWYwZDIuLmJk NmExNjFlN2RlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zcGNjYWNoZS5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMKQEAgLTU1LDExICs1NSw3 IEBAIHR5cGVkZWYgc3RydWN0CiBzdGF0aWMgdm9pZAogSW52YWxpZGF0ZVRhYmxlU3BhY2VDYWNo ZUNhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7Ci0J SEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlUYWJsZVNwYWNlQ2FjaGVFbnRyeSAqc3BjOwotCi0J aGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBUYWJsZVNwYWNlQ2FjaGVIYXNoKTsKLQl3aGlsZSAoKHNw YyA9IChUYWJsZVNwYWNlQ2FjaGVFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9 IE5VTEwpCisJZm9yZWFjaF9oYXNoKFRhYmxlU3BhY2VDYWNoZUVudHJ5LCBzcGMsIFRhYmxlU3Bh Y2VDYWNoZUhhc2gpCiAJewogCQlpZiAoc3BjLT5vcHRzKQogCQkJcGZyZWUoc3BjLT5vcHRzKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS90c19jYWNoZS5jCmluZGV4IGNmYTZkOGIwOWE0Li41NDQ2ZGU1ZWIx YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHNfY2FjaGUuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9jYWNoZS90c19jYWNoZS5jCkBAIC05NCwxMSArOTQsOCBAQCBzdGF0 aWMgdm9pZAogSW52YWxpZGF0ZVRTQ2FjaGVDYWxsQmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlk LCB1aW50MzIgaGFzaHZhbHVlKQogewogCUhUQUIJICAgKmhhc2ggPSAoSFRBQiAqKSBEYXR1bUdl dFBvaW50ZXIoYXJnKTsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVRTQW55Q2FjaGVFbnRy eSAqZW50cnk7CiAKLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGhhc2gpOwotCXdoaWxlICgoZW50 cnkgPSAoVFNBbnlDYWNoZUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVM TCkKKwlmb3JlYWNoX2hhc2goVFNBbnlDYWNoZUVudHJ5LCBlbnRyeSwgaGFzaCkKIAkJZW50cnkt PmlzdmFsaWQgPSBmYWxzZTsKIAogCS8qIEFsc28gaW52YWxpZGF0ZSB0aGUgY3VycmVudC1jb25m aWcgY2FjaGUgaWYgaXQncyBwZ190c19jb25maWcgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IGYz ODk3Yzk1M2QzLi5mOWNlN2M1ZGRmMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC0yODgsOCArMjg4 LDYgQEAgUHJvY2Vzc0NvbmZpZ0ZpbGVJbnRlcm5hbChHdWNDb250ZXh0IGNvbnRleHQsIGJvb2wg YXBwbHlTZXR0aW5ncywgaW50IGVsZXZlbCkKIAljb25zdCBjaGFyICpDb25mRmlsZVdpdGhFcnJv cjsKIAlDb25maWdWYXJpYWJsZSAqaGVhZCwKIAkJCSAgICp0YWlsOwotCUhBU0hfU0VRX1NUQVRV UyBzdGF0dXM7Ci0JR1VDSGFzaEVudHJ5ICpoZW50cnk7CiAKIAkvKiBQYXJzZSB0aGUgbWFpbiBj b25maWcgZmlsZSBpbnRvIGEgbGlzdCBvZiBvcHRpb24gbmFtZXMgYW5kIHZhbHVlcyAqLwogCUNv bmZGaWxlV2l0aEVycm9yID0gQ29uZmlnRmlsZU5hbWU7CkBAIC0zNjQsOCArMzYyLDcgQEAgUHJv Y2Vzc0NvbmZpZ0ZpbGVJbnRlcm5hbChHdWNDb250ZXh0IGNvbnRleHQsIGJvb2wgYXBwbHlTZXR0 aW5ncywgaW50IGVsZXZlbCkKIAkgKiBuZWVkIHRoaXMgc28gdGhhdCB3ZSBjYW4gdGVsbCBiZWxv dyB3aGljaCBvbmVzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20KIAkgKiB0aGUgZmlsZSBzaW5jZSB3 ZSBsYXN0IHByb2Nlc3NlZCBpdC4KIAkgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGd1Y19o YXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50cnkgKikgaGFzaF9zZXFfc2Vh cmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChHVUNIYXNoRW50cnksIGhlbnRy eSwgZ3VjX2hhc2h0YWIpCiAJewogCQlzdHJ1Y3QgY29uZmlnX2dlbmVyaWMgKmdjb25mID0gaGVu dHJ5LT5ndWN2YXI7CiAKQEAgLTQ0OSw4ICs0NDYsNyBAQCBQcm9jZXNzQ29uZmlnRmlsZUludGVy bmFsKEd1Y0NvbnRleHQgY29udGV4dCwgYm9vbCBhcHBseVNldHRpbmdzLCBpbnQgZWxldmVsKQog CSAqIGJvb3QtdGltZSBkZWZhdWx0cy4gIElmIHN1Y2ggYSB2YXJpYWJsZSBjYW4ndCBiZSBjaGFu Z2VkIGFmdGVyIHN0YXJ0dXAsCiAJICogcmVwb3J0IHRoYXQgYW5kIGNvbnRpbnVlLgogCSAqLwot CWhhc2hfc2VxX2luaXQoJnN0YXR1cywgZ3VjX2hhc2h0YWIpOwotCXdoaWxlICgoaGVudHJ5ID0g KEdVQ0hhc2hFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9y ZWFjaF9oYXNoKEdVQ0hhc2hFbnRyeSwgaGVudHJ5LCBndWNfaGFzaHRhYikKIAl7CiAJCXN0cnVj dCBjb25maWdfZ2VuZXJpYyAqZ2NvbmYgPSBoZW50cnktPmd1Y3ZhcjsKIApAQCAtODM5LDggKzgz NSw2IEBAIHN0cnVjdCBjb25maWdfZ2VuZXJpYyAqKgogZ2V0X2d1Y192YXJpYWJsZXMoaW50ICpu dW1fdmFycykKIHsKIAlzdHJ1Y3QgY29uZmlnX2dlbmVyaWMgKipyZXN1bHQ7Ci0JSEFTSF9TRVFf U1RBVFVTIHN0YXR1czsKLQlHVUNIYXNoRW50cnkgKmhlbnRyeTsKIAlpbnQJCQlpOwogCiAJKm51 bV92YXJzID0gaGFzaF9nZXRfbnVtX2VudHJpZXMoZ3VjX2hhc2h0YWIpOwpAQCAtODQ4LDggKzg0 Miw3IEBAIGdldF9ndWNfdmFyaWFibGVzKGludCAqbnVtX3ZhcnMpCiAKIAkvKiBFeHRyYWN0IHBv aW50ZXJzIGZyb20gdGhlIGhhc2ggdGFibGUgKi8KIAlpID0gMDsKLQloYXNoX3NlcV9pbml0KCZz dGF0dXMsIGd1Y19oYXNodGFiKTsKLQl3aGlsZSAoKGhlbnRyeSA9IChHVUNIYXNoRW50cnkgKikg aGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVhY2hfaGFzaChHVUNIYXNo RW50cnksIGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJCXJlc3VsdFtpKytdID0gaGVudHJ5LT5ndWN2 YXI7CiAJQXNzZXJ0KGkgPT0gKm51bV92YXJzKTsKIApAQCAtMTQwMCw5ICsxMzkzLDYgQEAgY2hl Y2tfR1VDX2luaXQoY29uc3Qgc3RydWN0IGNvbmZpZ19nZW5lcmljICpnY29uZikKIHZvaWQKIElu aXRpYWxpemVHVUNPcHRpb25zKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlH VUNIYXNoRW50cnkgKmhlbnRyeTsKLQogCS8qCiAJICogQmVmb3JlIGxvZ19saW5lX3ByZWZpeCBj b3VsZCBwb3NzaWJseSByZWNlaXZlIGEgbm9uZW1wdHkgc2V0dGluZywgbWFrZQogCSAqIHN1cmUg dGhhdCB0aW1lem9uZSBwcm9jZXNzaW5nIGlzIG1pbmltYWxseSBhbGl2ZSAoc2VlIGVsb2cuYyku CkBAIC0xNDE4LDggKzE0MDgsNyBAQCBJbml0aWFsaXplR1VDT3B0aW9ucyh2b2lkKQogCSAqIExv YWQgYWxsIHZhcmlhYmxlcyB3aXRoIHRoZWlyIGNvbXBpbGVkLWluIGRlZmF1bHRzLCBhbmQgaW5p dGlhbGl6ZQogCSAqIHN0YXR1cyBmaWVsZHMgYXMgbmVlZGVkLgogCSAqLwotCWhhc2hfc2VxX2lu aXQoJnN0YXR1cywgZ3VjX2hhc2h0YWIpOwotCXdoaWxlICgoaGVudHJ5ID0gKEdVQ0hhc2hFbnRy eSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKEdV Q0hhc2hFbnRyeSwgaGVudHJ5LCBndWNfaGFzaHRhYikKIAl7CiAJCS8qIENoZWNrIG1hcHBpbmcg YmV0d2VlbiBpbml0aWFsIGFuZCBkZWZhdWx0IHZhbHVlICovCiAJCUFzc2VydChjaGVja19HVUNf aW5pdChoZW50cnktPmd1Y3ZhcikpOwpAQCAtMjQxNCw5ICsyNDAzLDYgQEAgQXRFT1hhY3RfR1VD KGJvb2wgaXNDb21taXQsIGludCBuZXN0TGV2ZWwpCiB2b2lkCiBCZWdpblJlcG9ydGluZ0dVQ09w dGlvbnModm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCUdVQ0hhc2hFbnRyeSAq aGVudHJ5OwotCiAJLyoKIAkgKiBEb24ndCBkbyBhbnl0aGluZyB1bmxlc3MgdGFsa2luZyB0byBh biBpbnRlcmFjdGl2ZSBmcm9udGVuZC4KIAkgKi8KQEAgLTI0MzgsOCArMjQyNCw3IEBAIEJlZ2lu UmVwb3J0aW5nR1VDT3B0aW9ucyh2b2lkKQogCQkJCQkJUEdDX0lOVEVSTkFMLCBQR0NfU19PVkVS UklERSk7CiAKIAkvKiBUcmFuc21pdCBpbml0aWFsIHZhbHVlcyBvZiBpbnRlcmVzdGluZyB2YXJp YWJsZXMgKi8KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGd1Y19oYXNodGFiKTsKLQl3aGlsZSAo KGhlbnRyeSA9IChHVUNIYXNoRW50cnkgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBO VUxMKQorCWZvcmVhY2hfaGFzaChHVUNIYXNoRW50cnksIGhlbnRyeSwgZ3VjX2hhc2h0YWIpCiAJ ewogCQlzdHJ1Y3QgY29uZmlnX2dlbmVyaWMgKmNvbmYgPSBoZW50cnktPmd1Y3ZhcjsKIApAQCAt NTE0MiwxNiArNTEyNywxMyBAQCB2b2lkCiBNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoY29uc3QgY2hh ciAqY2xhc3NOYW1lKQogewogCWludAkJCWNsYXNzTGVuID0gc3RybGVuKGNsYXNzTmFtZSk7Ci0J SEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlHVUNIYXNoRW50cnkgKmhlbnRyeTsKIAlNZW1vcnlD b250ZXh0IG9sZGNvbnRleHQ7CiAKIAkvKgogCSAqIENoZWNrIGZvciBleGlzdGluZyBwbGFjZWhv bGRlcnMuICBXZSBtdXN0IGFjdHVhbGx5IHJlbW92ZSBpbnZhbGlkCiAJICogcGxhY2Vob2xkZXJz LCBlbHNlIGZ1dHVyZSBwYXJhbGxlbCB3b3JrZXIgc3RhcnR1cHMgd2lsbCBmYWlsLgogCSAqLwot CWhhc2hfc2VxX2luaXQoJnN0YXR1cywgZ3VjX2hhc2h0YWIpOwotCXdoaWxlICgoaGVudHJ5ID0g KEdVQ0hhc2hFbnRyeSAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJZm9y ZWFjaF9oYXNoKEdVQ0hhc2hFbnRyeSwgaGVudHJ5LCBndWNfaGFzaHRhYikKIAl7CiAJCXN0cnVj dCBjb25maWdfZ2VuZXJpYyAqdmFyID0gaGVudHJ5LT5ndWN2YXI7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdy L3BvcnRhbG1lbS5jCmluZGV4IDgyNDFkMzJmMGM2Li40YTdiMTBkMjE5YiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYworKysgYi9zcmMvYmFja2VuZC91dGls cy9tbWdyL3BvcnRhbG1lbS5jCkBAIC03NzYsMTIgKzc3Niw3IEBAIFByZUNvbW1pdF9Qb3J0YWxz KGJvb2wgaXNQcmVwYXJlKQogdm9pZAogQXRBYm9ydF9Qb3J0YWxzKHZvaWQpCiB7Ci0JSEFTSF9T RVFfU1RBVFVTIHN0YXR1czsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9p bml0KCZzdGF0dXMsIFBvcnRhbEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0 YWxIYXNoRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNo X2hhc2goUG9ydGFsSGFzaEVudCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0 YWwJCXBvcnRhbCA9IGhlbnRyeS0+cG9ydGFsOwogCkBAIC04NTMsMTIgKzg0OCw3IEBAIEF0QWJv cnRfUG9ydGFscyh2b2lkKQogdm9pZAogQXRDbGVhbnVwX1BvcnRhbHModm9pZCkKIHsKLQlIQVNI X1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hfc2Vx X2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0gKFBv cnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZvcmVh Y2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJCVBv cnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTkxMiwxMiArOTAyLDcgQEAgQXRD bGVhbnVwX1BvcnRhbHModm9pZCkKIHZvaWQKIFBvcnRhbEVycm9yQ2xlYW51cCh2b2lkKQogewot CUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5OwotCi0JaGFz aF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUgKChoZW50cnkg PSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJ Zm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRhYmxlKQogCXsK IAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtOTQxLDEyICs5MjYsNyBA QCBBdFN1YkNvbW1pdF9Qb3J0YWxzKFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIAkJCQkJaW50 IHBhcmVudExldmVsLAogCQkJCQlSZXNvdXJjZU93bmVyIHBhcmVudFhhY3RPd25lcikKIHsKLQlI QVNIX1NFUV9TVEFUVVMgc3RhdHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKLQotCWhhc2hf c2VxX2luaXQoJnN0YXR1cywgUG9ydGFsSGFzaFRhYmxlKTsKLQotCXdoaWxlICgoaGVudHJ5ID0g KFBvcnRhbEhhc2hFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCWZv cmVhY2hfaGFzaChQb3J0YWxIYXNoRW50LCBoZW50cnksIFBvcnRhbEhhc2hUYWJsZSkKIAl7CiAJ CVBvcnRhbAkJcG9ydGFsID0gaGVudHJ5LT5wb3J0YWw7CiAKQEAgLTk3NywxMiArOTU3LDcgQEAg QXRTdWJBYm9ydF9Qb3J0YWxzKFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKIAkJCQkgICBSZXNv dXJjZU93bmVyIG15WGFjdE93bmVyLAogCQkJCSAgIFJlc291cmNlT3duZXIgcGFyZW50WGFjdE93 bmVyKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAqaGVudHJ5 OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOwotCi0Jd2hpbGUg KChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9 IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFsSGFzaFRh YmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAtMTA4Nywx MiArMTA2Miw3IEBAIEF0U3ViQWJvcnRfUG9ydGFscyhTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQs CiB2b2lkCiBBdFN1YkNsZWFudXBfUG9ydGFscyhTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQpCiB7 Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7Ci0KLQlo YXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRy eSA9IChQb3J0YWxIYXNoRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkK Kwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVudCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJ ewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRyeS0+cG9ydGFsOwogCkBAIC0xMTI3LDggKzEwOTcs NiBAQCBEYXR1bQogcGdfY3Vyc29yKFBHX0ZVTkNUSU9OX0FSR1MpCiB7CiAJUmV0dXJuU2V0SW5m byAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOwotCUhBU0hf U0VRX1NUQVRVUyBoYXNoX3NlcTsKLQlQb3J0YWxIYXNoRW50ICpoZW50cnk7CiAKIAkvKgogCSAq IFdlIHB1dCBhbGwgdGhlIHR1cGxlcyBpbnRvIGEgdHVwbGVzdG9yZSBpbiBvbmUgc2NhbiBvZiB0 aGUgaGFzaHRhYmxlLgpAQCAtMTEzNiw4ICsxMTA0LDcgQEAgcGdfY3Vyc29yKFBHX0ZVTkNUSU9O X0FSR1MpCiAJICovCiAJSW5pdE1hdGVyaWFsaXplZFNSRihmY2luZm8sIDApOwogCi0JaGFzaF9z ZXFfaW5pdCgmaGFzaF9zZXEsIFBvcnRhbEhhc2hUYWJsZSk7Ci0Jd2hpbGUgKChoZW50cnkgPSBo YXNoX3NlcV9zZWFyY2goJmhhc2hfc2VxKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFs SGFzaEVudCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9 IGhlbnRyeS0+cG9ydGFsOwogCQlEYXR1bQkJdmFsdWVzWzZdOwpAQCAtMTE2NiwxMiArMTEzMyw3 IEBAIHBnX2N1cnNvcihQR19GVU5DVElPTl9BUkdTKQogYm9vbAogVGhlcmVBcmVOb1JlYWR5UG9y dGFscyh2b2lkKQogewotCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JUG9ydGFsSGFzaEVudCAq aGVudHJ5OwotCi0JaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBQb3J0YWxIYXNoVGFibGUpOwotCi0J d2hpbGUgKChoZW50cnkgPSAoUG9ydGFsSGFzaEVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1 cykpICE9IE5VTEwpCisJZm9yZWFjaF9oYXNoKFBvcnRhbEhhc2hFbnQsIGhlbnRyeSwgUG9ydGFs SGFzaFRhYmxlKQogCXsKIAkJUG9ydGFsCQlwb3J0YWwgPSBoZW50cnktPnBvcnRhbDsKIApAQCAt MTIwMiwxMiArMTE2NCw3IEBAIFRoZXJlQXJlTm9SZWFkeVBvcnRhbHModm9pZCkKIHZvaWQKIEhv bGRQaW5uZWRQb3J0YWxzKHZvaWQpCiB7Ci0JSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKLQlQb3J0 YWxIYXNoRW50ICpoZW50cnk7Ci0KLQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIFBvcnRhbEhhc2hU YWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxIYXNoRW50ICopIGhhc2hfc2VxX3Nl YXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hhc2goUG9ydGFsSGFzaEVudCwgaGVu dHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJCXBvcnRhbCA9IGhlbnRyeS0+cG9y dGFsOwogCkBAIC0xMjUxLDE1ICsxMjA4LDExIEBAIEhvbGRQaW5uZWRQb3J0YWxzKHZvaWQpCiB2 b2lkCiBGb3JnZXRQb3J0YWxTbmFwc2hvdHModm9pZCkKIHsKLQlIQVNIX1NFUV9TVEFUVVMgc3Rh dHVzOwotCVBvcnRhbEhhc2hFbnQgKmhlbnRyeTsKIAlpbnQJCQludW1Qb3J0YWxTbmFwcyA9IDA7 CiAJaW50CQkJbnVtQWN0aXZlU25hcHMgPSAwOwogCiAJLyogRmlyc3QsIHNjYW4gUG9ydGFsSGFz aFRhYmxlIGFuZCBjbGVhciBwb3J0YWxTbmFwc2hvdCBmaWVsZHMgKi8KLQloYXNoX3NlcV9pbml0 KCZzdGF0dXMsIFBvcnRhbEhhc2hUYWJsZSk7Ci0KLQl3aGlsZSAoKGhlbnRyeSA9IChQb3J0YWxI YXNoRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwlmb3JlYWNoX2hh c2goUG9ydGFsSGFzaEVudCwgaGVudHJ5LCBQb3J0YWxIYXNoVGFibGUpCiAJewogCQlQb3J0YWwJ CXBvcnRhbCA9IGhlbnRyeS0+cG9ydGFsOwogCi0tIAoyLjUyLjAKCg== --4a64335236636428890df52b41be4626d0df87532bd999859fd0fd98123d--