Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1obpKV-0003HX-PC for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Sep 2022 20:31:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1obpKT-0003ky-EP for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Sep 2022 20:31:21 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1obpKS-0003kn-Ah for pgsql-hackers@lists.postgresql.org; Fri, 23 Sep 2022 20:31:21 +0000 Received: from out1-smtp.messagingengine.com ([66.111.4.25]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1obpKG-0000CW-MO for pgsql-hackers@postgresql.org; Fri, 23 Sep 2022 20:31:19 +0000 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id EAD7F5C00A2; Fri, 23 Sep 2022 16:31:04 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Fri, 23 Sep 2022 16:31:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; t=1663965064; x=1664051464; bh=uaVGiEA6sQAGneYyJQoXgzXvLmY/ +H+zIU0Txvldovs=; b=PBJWjTDRNPDUTumUZZ53GtJvl98Pisr+Wvw0sXhCsNOc 4tzNbpw9Y78Xr08JuoL1oRA4TcTdleONfKyP7iJ/AUXhc4pnuUNPmMe/1BylZkpi xBVewlSMN/BAwYKJbKUlmnt8lJmIIn/VX+ArkXRROlB37byL/ik7OVdNNFGeMH2x 0TOtId/DTncVtBGcGmTbrAtPQEzhMeNBtBb7+BId5Uu+FmJmFYbaJVcQGM6vyQkc jK+5u+hCdIjxAnedkZaRgWDno/IJ20GTu3GKzgsEDMNhEH5egbw/n3dcAz2B41lW mjJ1mvWAw477vvh5yCF7KANOZ7pK9DfAxfzhQmcJtQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrfeefiedgudehfecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpegtkfffgggfuffvvehfhfgjsehmtderredtfeejnecuhfhrohhmpefrvght vghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvghnth gvrhhprhhishgvuggsrdgtohhmqeenucggtffrrghtthgvrhhnpeeutdekheeuhedtvdfg ffehleetfefhieefudeitdffiedtledujefhjedufeffffenucevlhhushhtvghrufhiii gvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvghtvghrrdgvihhsvghnthhrrghu thesvghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 23 Sep 2022 16:31:04 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------hOtcEyk5S0drHrvdBVxX9psd" Message-ID: <20eff6cb-4471-ebcb-465c-ed9052d7fc63@enterprisedb.com> Date: Fri, 23 Sep 2022 16:31:03 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Subject: Re: libpq error message refactoring Content-Language: en-US To: Andres Freund Cc: pgsql-hackers References: <7c0232ef-7b44-68db-599d-b327d0640a77@enterprisedb.com> <20220922154225.q4rtgzzsq6pd4f5x@awork3.anarazel.de> <20220923022727.mclhsv3cjbmdrrkd@awork3.anarazel.de> <20220923024543.fki3zdhyscxof6f7@awork3.anarazel.de> From: Peter Eisentraut In-Reply-To: <20220923024543.fki3zdhyscxof6f7@awork3.anarazel.de> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------hOtcEyk5S0drHrvdBVxX9psd Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 23.09.22 04:45, Andres Freund wrote: > On 2022-09-22 19:27:27 -0700, Andres Freund wrote: >> I just noticed it when trying to understand the linker failure - which I >> still don't... > > Heh, figured it out. It's inside #ifdef ENABLE_NLS. So it fails on all > platforms without NLS enabled. Hah! Here is an updated patch to get the CI clean. I'll look into the other discussed issues later. --------------hOtcEyk5S0drHrvdBVxX9psd Content-Type: text/plain; charset=UTF-8; name="v2-0001-WIP-libpq_append_error.patch" Content-Disposition: attachment; filename="v2-0001-WIP-libpq_append_error.patch" Content-Transfer-Encoding: base64 RnJvbSBkZTRjYjMzZGNjOThjN2M3MWYyMTM0OWViYTY1MDEwNWEzMzg1Y2JkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogRnJpLCAyMyBTZXAgMjAyMiAxNjoyNjoxNiAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggdjJdIFdJUDogbGlicHFfYXBwZW5kX2Vycm9yCgpEaXNjdXNzaW9uOiBodHRw czovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvN2MwMjMyZWYtN2I0NC02 OGRiLTU5OWQtYjMyN2QwNjQwYTc3QGVudGVycHJpc2VkYi5jb20KLS0tCiBzcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1jb25uZWN0LmMgIHwgMjcxICsrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMgICAgIHwgMTEwICsrKyst LS0tLS0tLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtbWlzYy5jICAgICB8ICAxNSArKwog c3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggICB8ICAgMiArCiBzcmMvaW50ZXJm YWNlcy9saWJwcS9ubHMubWsgICAgICAgIHwgICA0ICstCiBzcmMvaW50ZXJmYWNlcy9saWJw cS9wcWV4cGJ1ZmZlci5jIHwgIDI3ICsrLQogc3JjL2ludGVyZmFjZXMvbGlicHEvcHFleHBi dWZmZXIuaCB8ICAgMiArCiA3IGZpbGVzIGNoYW5nZWQsIDE4NiBpbnNlcnRpb25zKCspLCAy NDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt Y29ubmVjdC5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCmluZGV4IDc0 NmU5YjRmMWVmYy4uYjk5YzQ1NDlkMDhlIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9s aWJwcS9mZS1jb25uZWN0LmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVj dC5jCkBAIC04OTYsOCArODk2LDcgQEAgZmlsbFBHY29ubihQR2Nvbm4gKmNvbm4sIFBRY29u bmluZm9PcHRpb24gKmNvbm5PcHRpb25zKQogCQkJCSpjb25ubWVtYmVyID0gc3RyZHVwKHRt cCk7CiAJCQkJaWYgKCpjb25ubWVtYmVyID09IE5VTEwpCiAJCQkJewotCQkJCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJCSBsaWJwcV9n ZXR0ZXh0KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCQkJCWxpYnBxX2FwcGVuZF9lcnJvcihj b25uLCAib3V0IG9mIG1lbW9yeSIpOwogCQkJCQlyZXR1cm4gZmFsc2U7CiAJCQkJfQogCQkJ fQpAQCAtMTA3OSw5ICsxMDc4LDggQEAgY29ubmVjdE9wdGlvbnMyKFBHY29ubiAqY29ubikK IAkJaWYgKG1vcmUgfHwgaSAhPSBjb25uLT5uY29ubmhvc3QpCiAJCXsKIAkJCWNvbm4tPnN0 YXR1cyA9IENPTk5FQ1RJT05fQkFEOwotCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVy cm9yTWVzc2FnZSwKLQkJCQkJCQkgIGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBtYXRjaCAl ZCBob3N0IG5hbWVzIHRvICVkIGhvc3RhZGRyIHZhbHVlc1xuIiksCi0JCQkJCQkJICBjb3Vu dF9jb21tYV9zZXBhcmF0ZWRfZWxlbXMoY29ubi0+cGdob3N0KSwgY29ubi0+bmNvbm5ob3N0 KTsKKwkJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAiY291bGQgbm90IG1hdGNoICVkIGhv c3QgbmFtZXMgdG8gJWQgaG9zdGFkZHIgdmFsdWVzIiwKKwkJCQkJCQkgICBjb3VudF9jb21t YV9zZXBhcmF0ZWRfZWxlbXMoY29ubi0+cGdob3N0KSwgY29ubi0+bmNvbm5ob3N0KTsKIAkJ CXJldHVybiBmYWxzZTsKIAkJfQogCX0KQEAgLTExNjAsOSArMTE1OCw4IEBAIGNvbm5lY3RP cHRpb25zMihQR2Nvbm4gKmNvbm4pCiAJCWVsc2UgaWYgKG1vcmUgfHwgaSAhPSBjb25uLT5u Y29ubmhvc3QpCiAJCXsKIAkJCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05fQkFEOwotCQkJ YXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgIGxpYnBx X2dldHRleHQoImNvdWxkIG5vdCBtYXRjaCAlZCBwb3J0IG51bWJlcnMgdG8gJWQgaG9zdHNc biIpLAotCQkJCQkJCSAgY291bnRfY29tbWFfc2VwYXJhdGVkX2VsZW1zKGNvbm4tPnBncG9y dCksIGNvbm4tPm5jb25uaG9zdCk7CisJCQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgImNv dWxkIG5vdCBtYXRjaCAlZCBwb3J0IG51bWJlcnMgdG8gJWQgaG9zdHMiLAorCQkJCQkJCSAg IGNvdW50X2NvbW1hX3NlcGFyYXRlZF9lbGVtcyhjb25uLT5wZ3BvcnQpLCBjb25uLT5uY29u bmhvc3QpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQpAQCAtMTI1MCw5ICsxMjQ3LDgg QEAgY29ubmVjdE9wdGlvbnMyKFBHY29ubiAqY29ubikKIAkJCSYmIHN0cmNtcChjb25uLT5j aGFubmVsX2JpbmRpbmcsICJyZXF1aXJlIikgIT0gMCkKIAkJewogCQkJY29ubi0+c3RhdHVz ID0gQ09OTkVDVElPTl9CQUQ7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JN ZXNzYWdlLAotCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiaW52YWxpZCAlcyB2YWx1ZTogXCIl c1wiXG4iKSwKLQkJCQkJCQkgICJjaGFubmVsX2JpbmRpbmciLCBjb25uLT5jaGFubmVsX2Jp bmRpbmcpOworCQkJbGlicHFfYXBwZW5kX2Vycm9yKGNvbm4sICJpbnZhbGlkICVzIHZhbHVl OiBcIiVzXCIiLAorCQkJCQkJCSAgICJjaGFubmVsX2JpbmRpbmciLCBjb25uLT5jaGFubmVs X2JpbmRpbmcpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQpAQCAtMTI3Niw5ICsxMjcy LDggQEAgY29ubmVjdE9wdGlvbnMyKFBHY29ubiAqY29ubikKIAkJCSYmIHN0cmNtcChjb25u LT5zc2xtb2RlLCAidmVyaWZ5LWZ1bGwiKSAhPSAwKQogCQl7CiAJCQljb25uLT5zdGF0dXMg PSBDT05ORUNUSU9OX0JBRDsKLQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1l c3NhZ2UsCi0JCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJpbnZhbGlkICVzIHZhbHVlOiBcIiVz XCJcbiIpLAotCQkJCQkJCSAgInNzbG1vZGUiLCBjb25uLT5zc2xtb2RlKTsKKwkJCWxpYnBx X2FwcGVuZF9lcnJvcihjb25uLCAiaW52YWxpZCAlcyB2YWx1ZTogXCIlc1wiIiwKKwkJCQkJ CQkgICAic3NsbW9kZSIsIGNvbm4tPnNzbG1vZGUpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9 CiAKQEAgLTEyOTcsOSArMTI5Miw4IEBAIGNvbm5lY3RPcHRpb25zMihQR2Nvbm4gKmNvbm4p CiAJCQljYXNlICdyJzoJCQkvKiAicmVxdWlyZSIgKi8KIAkJCWNhc2UgJ3YnOgkJCS8qICJ2 ZXJpZnktY2EiIG9yICJ2ZXJpZnktZnVsbCIgKi8KIAkJCQljb25uLT5zdGF0dXMgPSBDT05O RUNUSU9OX0JBRDsKLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdl LAotCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoInNzbG1vZGUgdmFsdWUgXCIlc1wiIGludmFs aWQgd2hlbiBTU0wgc3VwcG9ydCBpcyBub3QgY29tcGlsZWQgaW5cbiIpLAotCQkJCQkJCQkg IGNvbm4tPnNzbG1vZGUpOworCQkJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAic3NsbW9k ZSB2YWx1ZSBcIiVzXCIgaW52YWxpZCB3aGVuIFNTTCBzdXBwb3J0IGlzIG5vdCBjb21waWxl ZCBpbiIsCisJCQkJCQkJCSAgIGNvbm4tPnNzbG1vZGUpOwogCQkJCXJldHVybiBmYWxzZTsK IAkJfQogI2VuZGlmCkBAIC0xMzE4LDE5ICsxMzEyLDE3IEBAIGNvbm5lY3RPcHRpb25zMihQ R2Nvbm4gKmNvbm4pCiAJaWYgKCFzc2xWZXJpZnlQcm90b2NvbFZlcnNpb24oY29ubi0+c3Ns X21pbl9wcm90b2NvbF92ZXJzaW9uKSkKIAl7CiAJCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJ T05fQkFEOwotCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJ CQkJICBsaWJwcV9nZXR0ZXh0KCJpbnZhbGlkICVzIHZhbHVlOiBcIiVzXCJcbiIpLAotCQkJ CQkJICAic3NsX21pbl9wcm90b2NvbF92ZXJzaW9uIiwKLQkJCQkJCSAgY29ubi0+c3NsX21p bl9wcm90b2NvbF92ZXJzaW9uKTsKKwkJbGlicHFfYXBwZW5kX2Vycm9yKGNvbm4sICJpbnZh bGlkICVzIHZhbHVlOiBcIiVzXCIiLAorCQkJCQkJICAgInNzbF9taW5fcHJvdG9jb2xfdmVy c2lvbiIsCisJCQkJCQkgICBjb25uLT5zc2xfbWluX3Byb3RvY29sX3ZlcnNpb24pOwogCQly ZXR1cm4gZmFsc2U7CiAJfQogCWlmICghc3NsVmVyaWZ5UHJvdG9jb2xWZXJzaW9uKGNvbm4t PnNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbikpCiAJewogCQljb25uLT5zdGF0dXMgPSBDT05O RUNUSU9OX0JBRDsKLQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwK LQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiaW52YWxpZCAlcyB2YWx1ZTogXCIlc1wiXG4iKSwK LQkJCQkJCSAgInNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbiIsCi0JCQkJCQkgIGNvbm4tPnNz bF9tYXhfcHJvdG9jb2xfdmVyc2lvbik7CisJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAi aW52YWxpZCAlcyB2YWx1ZTogXCIlc1wiIiwKKwkJCQkJCSAgICJzc2xfbWF4X3Byb3RvY29s X3ZlcnNpb24iLAorCQkJCQkJICAgY29ubi0+c3NsX21heF9wcm90b2NvbF92ZXJzaW9uKTsK IAkJcmV0dXJuIGZhbHNlOwogCX0KIApAQCAtMTM0NSw4ICsxMzM3LDcgQEAgY29ubmVjdE9w dGlvbnMyKFBHY29ubiAqY29ubikKIAkJCQkJCQkJY29ubi0+c3NsX21heF9wcm90b2NvbF92 ZXJzaW9uKSkKIAl7CiAJCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05fQkFEOwotCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9n ZXR0ZXh0KCJpbnZhbGlkIFNTTCBwcm90b2NvbCB2ZXJzaW9uIHJhbmdlXG4iKSk7CisJCWxp YnBxX2FwcGVuZF9lcnJvcihjb25uLCAiaW52YWxpZCBTU0wgcHJvdG9jb2wgdmVyc2lvbiBy YW5nZSIpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC0xMzYwLDE5ICsxMzUxLDE1IEBA IGNvbm5lY3RPcHRpb25zMihQR2Nvbm4gKmNvbm4pCiAJCQlzdHJjbXAoY29ubi0+Z3NzZW5j bW9kZSwgInJlcXVpcmUiKSAhPSAwKQogCQl7CiAJCQljb25uLT5zdGF0dXMgPSBDT05ORUNU SU9OX0JBRDsKLQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0J CQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJpbnZhbGlkICVzIHZhbHVlOiBcIiVzXCJcbiIpLAot CQkJCQkJCSAgImdzc2VuY21vZGUiLAotCQkJCQkJCSAgY29ubi0+Z3NzZW5jbW9kZSk7CisJ CQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgImludmFsaWQgJXMgdmFsdWU6IFwiJXNcIiIs ICJnc3NlbmNtb2RlIiwgY29ubi0+Z3NzZW5jbW9kZSk7CiAJCQlyZXR1cm4gZmFsc2U7CiAJ CX0KICNpZm5kZWYgRU5BQkxFX0dTUwogCQlpZiAoc3RyY21wKGNvbm4tPmdzc2VuY21vZGUs ICJyZXF1aXJlIikgPT0gMCkKIAkJewogCQkJY29ubi0+c3RhdHVzID0gQ09OTkVDVElPTl9C QUQ7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJ CSAgbGlicHFfZ2V0dGV4dCgiZ3NzZW5jbW9kZSB2YWx1ZSBcIiVzXCIgaW52YWxpZCB3aGVu IEdTU0FQSSBzdXBwb3J0IGlzIG5vdCBjb21waWxlZCBpblxuIiksCi0JCQkJCQkJICBjb25u LT5nc3NlbmNtb2RlKTsKKwkJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAiZ3NzZW5jbW9k ZSB2YWx1ZSBcIiVzXCIgaW52YWxpZCB3aGVuIEdTU0FQSSBzdXBwb3J0IGlzIG5vdCBjb21w aWxlZCBpbiIsCisJCQkJCQkJICAgY29ubi0+Z3NzZW5jbW9kZSk7CiAJCQlyZXR1cm4gZmFs c2U7CiAJCX0KICNlbmRpZgpAQCAtMTQwNCwxMCArMTM5MSw5IEBAIGNvbm5lY3RPcHRpb25z MihQR2Nvbm4gKmNvbm4pCiAJCWVsc2UKIAkJewogCQkJY29ubi0+c3RhdHVzID0gQ09OTkVD VElPTl9CQUQ7Ci0JCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAot CQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiaW52YWxpZCAlcyB2YWx1ZTogXCIlc1wiXG4iKSwK LQkJCQkJCQkgICJ0YXJnZXRfc2Vzc2lvbl9hdHRycyIsCi0JCQkJCQkJICBjb25uLT50YXJn ZXRfc2Vzc2lvbl9hdHRycyk7CisJCQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgImludmFs aWQgJXMgdmFsdWU6IFwiJXNcIiIsCisJCQkJCQkJICAgInRhcmdldF9zZXNzaW9uX2F0dHJz IiwKKwkJCQkJCQkgICBjb25uLT50YXJnZXRfc2Vzc2lvbl9hdHRycyk7CiAJCQlyZXR1cm4g ZmFsc2U7CiAJCX0KIAl9CkBAIC0xNDM3LDggKzE0MjMsNyBAQCBjb25uZWN0T3B0aW9uczIo UEdjb25uICpjb25uKQogCiBvb21fZXJyb3I6CiAJY29ubi0+c3RhdHVzID0gQ09OTkVDVElP Tl9CQUQ7Ci0JYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJ CQkJCSBsaWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJbGlicHFfYXBwZW5k X2Vycm9yKGNvbm4sICJvdXQgb2YgbWVtb3J5Iik7CiAJcmV0dXJuIGZhbHNlOwogfQogCkBA IC0xNjAwLDggKzE1ODUsNyBAQCBQUXNldGRiTG9naW4oY29uc3QgY2hhciAqcGdob3N0LCBj b25zdCBjaGFyICpwZ3BvcnQsIGNvbnN0IGNoYXIgKnBnb3B0aW9ucywKIAogb29tX2Vycm9y OgogCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05fQkFEOwotCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkgbGlicHFfZ2V0dGV4dCgib3V0IG9m IG1lbW9yeVxuIikpOworCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAib3V0IG9mIG1lbW9y eSIpOwogCXJldHVybiBjb25uOwogfQogCkBAIC0xNjI0LDkgKzE2MDgsOCBAQCBjb25uZWN0 Tm9EZWxheShQR2Nvbm4gKmNvbm4pCiAJewogCQljaGFyCQlzZWJ1ZltQR19TVFJFUlJPUl9S X0JVRkxFTl07CiAKLQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwK LQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IHNldCBzb2NrZXQgdG8gVENQIG5v IGRlbGF5IG1vZGU6ICVzXG4iKSwKLQkJCQkJCSAgU09DS19TVFJFUlJPUihTT0NLX0VSUk5P LCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwg ImNvdWxkIG5vdCBzZXQgc29ja2V0IHRvIFRDUCBubyBkZWxheSBtb2RlOiAlcyIsCisJCQkJ CQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7 CiAJCXJldHVybiAwOwogCX0KICNlbmRpZgpAQCAtMTczOCwxMSArMTcyMSw5IEBAIGNvbm5l Y3RGYWlsdXJlTWVzc2FnZShQR2Nvbm4gKmNvbm4sIGludCBlcnJvcm5vKQogCQkJCQkgIFNP Q0tfU1RSRVJST1IoZXJyb3Jubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAogCWlmIChj b25uLT5yYWRkci5hZGRyLnNzX2ZhbWlseSA9PSBBRl9VTklYKQotCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJc dElzIHRoZSBzZXJ2ZXIgcnVubmluZyBsb2NhbGx5IGFuZCBhY2NlcHRpbmcgY29ubmVjdGlv bnMgb24gdGhhdCBzb2NrZXQ/XG4iKSk7CisJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAi XHRJcyB0aGUgc2VydmVyIHJ1bm5pbmcgbG9jYWxseSBhbmQgYWNjZXB0aW5nIGNvbm5lY3Rp b25zIG9uIHRoYXQgc29ja2V0PyIpOwogCWVsc2UKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo JmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgiXHRJcyB0aGUg c2VydmVyIHJ1bm5pbmcgb24gdGhhdCBob3N0IGFuZCBhY2NlcHRpbmcgVENQL0lQIGNvbm5l Y3Rpb25zP1xuIikpOworCQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgIlx0SXMgdGhlIHNl cnZlciBydW5uaW5nIG9uIHRoYXQgaG9zdCBhbmQgYWNjZXB0aW5nIFRDUC9JUCBjb25uZWN0 aW9ucz8iKTsKIH0KIAogLyoKQEAgLTE4MDUsOSArMTc4Niw4IEBAIHBhcnNlX2ludF9wYXJh bShjb25zdCBjaGFyICp2YWx1ZSwgaW50ICpyZXN1bHQsIFBHY29ubiAqY29ubiwKIAlyZXR1 cm4gdHJ1ZTsKIAogZXJyb3I6Ci0JYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVz c2FnZSwKLQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJpbnZhbGlkIGludGVnZXIgdmFsdWUgXCIl c1wiIGZvciBjb25uZWN0aW9uIG9wdGlvbiBcIiVzXCJcbiIpLAotCQkJCQkgIHZhbHVlLCBj b250ZXh0KTsKKwlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgImludmFsaWQgaW50ZWdlciB2 YWx1ZSBcIiVzXCIgZm9yIGNvbm5lY3Rpb24gb3B0aW9uIFwiJXNcIiIsCisJCQkJCSAgIHZh bHVlLCBjb250ZXh0KTsKIAlyZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE4MzUsMTEgKzE4MTUs MTAgQEAgc2V0S2VlcGFsaXZlc0lkbGUoUEdjb25uICpjb25uKQogCXsKIAkJY2hhcgkJc2Vi dWZbUEdfU1RSRVJST1JfUl9CVUZMRU5dOwogCi0JCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25u LT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkgIGxpYnBxX2dldHRleHQoIiVzKCVzKSBmYWlsZWQ6 ICVzXG4iKSwKLQkJCQkJCSAgInNldHNvY2tvcHQiLAotCQkJCQkJICBQR19UQ1BfS0VFUEFM SVZFX0lETEVfU1RSLAotCQkJCQkJICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVm LCBzaXplb2Yoc2VidWYpKSk7CisJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAiJXMoJXMp IGZhaWxlZDogJXMiLAorCQkJCQkJICAgInNldHNvY2tvcHQiLAorCQkJCQkJICAgUEdfVENQ X0tFRVBBTElWRV9JRExFX1NUUiwKKwkJCQkJCSAgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJO Tywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJcmV0dXJuIDA7CiAJfQogI2VuZGlmCkBA IC0xODcwLDExICsxODQ5LDEwIEBAIHNldEtlZXBhbGl2ZXNJbnRlcnZhbChQR2Nvbm4gKmNv bm4pCiAJewogCQljaGFyCQlzZWJ1ZltQR19TVFJFUlJPUl9SX0JVRkxFTl07CiAKLQkJYXBw ZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCSAgbGlicHFfZ2V0 dGV4dCgiJXMoJXMpIGZhaWxlZDogJXNcbiIpLAotCQkJCQkJICAic2V0c29ja29wdCIsCi0J CQkJCQkgICJUQ1BfS0VFUElOVFZMIiwKLQkJCQkJCSAgU09DS19TVFJFUlJPUihTT0NLX0VS Uk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQlsaWJwcV9hcHBlbmRfZXJyb3IoY29u biwgIiVzKCVzKSBmYWlsZWQ6ICVzIiwKKwkJCQkJCSAgICJzZXRzb2Nrb3B0IiwKKwkJCQkJ CSAgICJUQ1BfS0VFUElOVFZMIiwKKwkJCQkJCSAgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJO Tywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJcmV0dXJuIDA7CiAJfQogI2VuZGlmCkBA IC0xOTA2LDExICsxODg0LDEwIEBAIHNldEtlZXBhbGl2ZXNDb3VudChQR2Nvbm4gKmNvbm4p CiAJewogCQljaGFyCQlzZWJ1ZltQR19TVFJFUlJPUl9SX0JVRkxFTl07CiAKLQkJYXBwZW5k UFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCSAgbGlicHFfZ2V0dGV4 dCgiJXMoJXMpIGZhaWxlZDogJXNcbiIpLAotCQkJCQkJICAic2V0c29ja29wdCIsCi0JCQkJ CQkgICJUQ1BfS0VFUENOVCIsCi0JCQkJCQkgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywg c2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJbGlicHFfYXBwZW5kX2Vycm9yKGNvbm4sICIl cyglcykgZmFpbGVkOiAlcyIsCisJCQkJCQkgICAic2V0c29ja29wdCIsCisJCQkJCQkgICAi VENQX0tFRVBDTlQiLAorCQkJCQkJICAgU09DS19TVFJFUlJPUihTT0NLX0VSUk5PLCBzZWJ1 Ziwgc2l6ZW9mKHNlYnVmKSkpOwogCQlyZXR1cm4gMDsKIAl9CiAjZW5kaWYKQEAgLTE5NzEs OCArMTk0OCw3IEBAIHByZXBLZWVwYWxpdmVzV2luMzIoUEdjb25uICpjb25uKQogCiAJaWYg KCFzZXRLZWVwYWxpdmVzV2luMzIoY29ubi0+c29jaywgaWRsZSwgaW50ZXJ2YWwpKQogCXsK LQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCSAgbGli cHFfZ2V0dGV4dCgiJXMoJXMpIGZhaWxlZDogZXJyb3IgY29kZSAlZFxuIiksCisJCWxpYnBx X2FwcGVuZF9lcnJvcihjb25uLCAiJXMoJXMpIGZhaWxlZDogZXJyb3IgY29kZSAlZCIsCiAJ CQkJCQkgICJXU0FJb2N0bCIsICJTSU9fS0VFUEFMSVZFX1ZBTFMiLAogCQkJCQkJICBXU0FH ZXRMYXN0RXJyb3IoKSk7CiAJCXJldHVybiAwOwpAQCAtMjAwNiwxMSArMTk4MiwxMCBAQCBz ZXRUQ1BVc2VyVGltZW91dChQR2Nvbm4gKmNvbm4pCiAJewogCQljaGFyCQlzZWJ1ZlsyNTZd OwogCi0JCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkg IGxpYnBxX2dldHRleHQoIiVzKCVzKSBmYWlsZWQ6ICVzXG4iKSwKLQkJCQkJCSAgInNldHNv Y2tvcHQiLAotCQkJCQkJICAiVENQX1VTRVJfVElNRU9VVCIsCi0JCQkJCQkgIFNPQ0tfU1RS RVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJbGlicHFfYXBw ZW5kX2Vycm9yKGNvbm4sICIlcyglcykgZmFpbGVkOiAlcyIsCisJCQkJCQkgICAic2V0c29j a29wdCIsCisJCQkJCQkgICAiVENQX1VTRVJfVElNRU9VVCIsCisJCQkJCQkgICBTT0NLX1NU UkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CiAJCXJldHVybiAw OwogCX0KICNlbmRpZgpAQCAtMjI4Niw4ICsyMjYxLDcgQEAgUFFjb25uZWN0UG9sbChQR2Nv bm4gKmNvbm4pCiAJCQlicmVhazsKIAogCQlkZWZhdWx0OgotCQkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJIGxpYnBxX2dldHRleHQoImlu dmFsaWQgY29ubmVjdGlvbiBzdGF0ZSwgcHJvYmFibHkgaW5kaWNhdGl2ZSBvZiBtZW1vcnkg Y29ycnVwdGlvblxuIikpOworCQkJbGlicHFfYXBwZW5kX2Vycm9yKGNvbm4sICJpbnZhbGlk IGNvbm5lY3Rpb24gc3RhdGUsIHByb2JhYmx5IGluZGljYXRpdmUgb2YgbWVtb3J5IGNvcnJ1 cHRpb24iKTsKIAkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCX0KIApAQCAtMjM2NSw5ICsyMzM5 LDcgQEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAKIAkJCWlmICh0aGlzcG9ydCA8 IDEgfHwgdGhpc3BvcnQgPiA2NTUzNSkKIAkJCXsKLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigm Y29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoImludmFsaWQg cG9ydCBudW1iZXI6IFwiJXNcIlxuIiksCi0JCQkJCQkJCSAgY2gtPnBvcnQpOworCQkJCWxp YnBxX2FwcGVuZF9lcnJvcihjb25uLCAiaW52YWxpZCBwb3J0IG51bWJlcjogXCIlc1wiIiwg Y2gtPnBvcnQpOwogCQkJCWdvdG8ga2VlcF9nb2luZzsKIAkJCX0KIAkJfQpAQCAtMjM4MSw5 ICsyMzUzLDggQEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJCQkJCQkJICZj b25uLT5hZGRybGlzdCk7CiAJCQkJaWYgKHJldCB8fCAhY29ubi0+YWRkcmxpc3QpCiAJCQkJ ewotCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJ CQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgdHJhbnNsYXRlIGhvc3QgbmFtZSBcIiVz XCIgdG8gYWRkcmVzczogJXNcbiIpLAotCQkJCQkJCQkJICBjaC0+aG9zdCwgZ2FpX3N0cmVy cm9yKHJldCkpOworCQkJCQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgImNvdWxkIG5vdCB0 cmFuc2xhdGUgaG9zdCBuYW1lIFwiJXNcIiB0byBhZGRyZXNzOiAlcyIsCisJCQkJCQkJCQkg ICBjaC0+aG9zdCwgZ2FpX3N0cmVycm9yKHJldCkpOwogCQkJCQlnb3RvIGtlZXBfZ29pbmc7 CiAJCQkJfQogCQkJCWJyZWFrOwpAQCAtMjM5NCw5ICsyMzY1LDggQEAgUFFjb25uZWN0UG9s bChQR2Nvbm4gKmNvbm4pCiAJCQkJCQkJCQkJICZjb25uLT5hZGRybGlzdCk7CiAJCQkJaWYg KHJldCB8fCAhY29ubi0+YWRkcmxpc3QpCiAJCQkJewotCQkJCQlhcHBlbmRQUUV4cEJ1ZmZl cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3Vs ZCBub3QgcGFyc2UgbmV0d29yayBhZGRyZXNzIFwiJXNcIjogJXNcbiIpLAotCQkJCQkJCQkJ ICBjaC0+aG9zdGFkZHIsIGdhaV9zdHJlcnJvcihyZXQpKTsKKwkJCQkJbGlicHFfYXBwZW5k X2Vycm9yKGNvbm4sICJjb3VsZCBub3QgcGFyc2UgbmV0d29yayBhZGRyZXNzIFwiJXNcIjog JXMiLAorCQkJCQkJCQkJICAgY2gtPmhvc3RhZGRyLCBnYWlfc3RyZXJyb3IocmV0KSk7CiAJ CQkJCWdvdG8ga2VlcF9nb2luZzsKIAkJCQl9CiAJCQkJYnJlYWs7CkBAIC0yNDA2LDEwICsy Mzc2LDkgQEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJVU5JWFNPQ0tfUEFU SChwb3J0c3RyLCB0aGlzcG9ydCwgY2gtPmhvc3QpOwogCQkJCWlmIChzdHJsZW4ocG9ydHN0 cikgPj0gVU5JWFNPQ0tfUEFUSF9CVUZMRU4pCiAJCQkJewotCQkJCQlhcHBlbmRQUUV4cEJ1 ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJV bml4LWRvbWFpbiBzb2NrZXQgcGF0aCBcIiVzXCIgaXMgdG9vIGxvbmcgKG1heGltdW0gJWQg Ynl0ZXMpXG4iKSwKLQkJCQkJCQkJCSAgcG9ydHN0ciwKLQkJCQkJCQkJCSAgKGludCkgKFVO SVhTT0NLX1BBVEhfQlVGTEVOIC0gMSkpOworCQkJCQlsaWJwcV9hcHBlbmRfZXJyb3IoY29u biwgIlVuaXgtZG9tYWluIHNvY2tldCBwYXRoIFwiJXNcIiBpcyB0b28gbG9uZyAobWF4aW11 bSAlZCBieXRlcykiLAorCQkJCQkJCQkJICAgcG9ydHN0ciwKKwkJCQkJCQkJCSAgIChpbnQp IChVTklYU09DS19QQVRIX0JVRkxFTiAtIDEpKTsKIAkJCQkJZ290byBrZWVwX2dvaW5nOwog CQkJCX0KIApAQCAtMjQyMSw5ICsyMzkwLDggQEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNv bm4pCiAJCQkJCQkJCQkJICZjb25uLT5hZGRybGlzdCk7CiAJCQkJaWYgKHJldCB8fCAhY29u bi0+YWRkcmxpc3QpCiAJCQkJewotCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJy b3JNZXNzYWdlLAotCQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgdHJhbnNs YXRlIFVuaXgtZG9tYWluIHNvY2tldCBwYXRoIFwiJXNcIiB0byBhZGRyZXNzOiAlc1xuIiks Ci0JCQkJCQkJCQkgIHBvcnRzdHIsIGdhaV9zdHJlcnJvcihyZXQpKTsKKwkJCQkJbGlicHFf YXBwZW5kX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgdHJhbnNsYXRlIFVuaXgtZG9tYWluIHNv Y2tldCBwYXRoIFwiJXNcIiB0byBhZGRyZXNzOiAlcyIsCisJCQkJCQkJCQkgICBwb3J0c3Ry LCBnYWlfc3RyZXJyb3IocmV0KSk7CiAJCQkJCWdvdG8ga2VlcF9nb2luZzsKIAkJCQl9CiAJ CQkJYnJlYWs7CkBAIC0yNTQ0LDkgKzI1MTIsOCBAQCBQUWNvbm5lY3RQb2xsKFBHY29ubiAq Y29ubikKIAkJCQkJCQlnb3RvIGtlZXBfZ29pbmc7CiAJCQkJCQl9CiAJCQkJCQllbWl0SG9z dElkZW50aXR5SW5mbyhjb25uLCBob3N0X2FkZHIpOwotCQkJCQkJYXBwZW5kUFFFeHBCdWZm ZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoImNv dWxkIG5vdCBjcmVhdGUgc29ja2V0OiAlc1xuIiksCi0JCQkJCQkJCQkJICBTT0NLX1NUUkVS Uk9SKGVycm9ybm8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQlsaWJwcV9hcHBl bmRfZXJyb3IoY29ubiwgImNvdWxkIG5vdCBjcmVhdGUgc29ja2V0OiAlcyIsCisJCQkJCQkJ CQkJICAgU09DS19TVFJFUlJPUihlcnJvcm5vLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOwog CQkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQkJCX0KIApAQCAtMjU3NSw5ICsyNTQyLDgg QEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJCX0KIAkJCQkJaWYgKCFwZ19z ZXRfbm9ibG9jayhjb25uLT5zb2NrKSkKIAkJCQkJewotCQkJCQkJYXBwZW5kUFFFeHBCdWZm ZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoImNv dWxkIG5vdCBzZXQgc29ja2V0IHRvIG5vbmJsb2NraW5nIG1vZGU6ICVzXG4iKSwKLQkJCQkJ CQkJCQkgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1Zikp KTsKKwkJCQkJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAiY291bGQgbm90IHNldCBzb2Nr ZXQgdG8gbm9uYmxvY2tpbmcgbW9kZTogJXMiLAorCQkJCQkJCQkJCSAgIFNPQ0tfU1RSRVJS T1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJCQkJCWNvbm4tPnRy eV9uZXh0X2FkZHIgPSB0cnVlOwogCQkJCQkJZ290byBrZWVwX2dvaW5nOwogCQkJCQl9CkBA IC0yNTg1LDkgKzI1NTEsOCBAQCBQUWNvbm5lY3RQb2xsKFBHY29ubiAqY29ubikKICNpZmRl ZiBGX1NFVEZECiAJCQkJCWlmIChmY250bChjb25uLT5zb2NrLCBGX1NFVEZELCBGRF9DTE9F WEVDKSA9PSAtMSkKIAkJCQkJewotCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVy cm9yTWVzc2FnZSwKLQkJCQkJCQkJCQkgIGxpYnBxX2dldHRleHQoImNvdWxkIG5vdCBzZXQg c29ja2V0IHRvIGNsb3NlLW9uLWV4ZWMgbW9kZTogJXNcbiIpLAotCQkJCQkJCQkJCSAgU09D S19TVFJFUlJPUihTT0NLX0VSUk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQkJCQkJ bGlicHFfYXBwZW5kX2Vycm9yKGNvbm4sICJjb3VsZCBub3Qgc2V0IHNvY2tldCB0byBjbG9z ZS1vbi1leGVjIG1vZGU6ICVzIiwKKwkJCQkJCQkJCQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tf RVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CiAJCQkJCQljb25uLT50cnlfbmV4dF9h ZGRyID0gdHJ1ZTsKIAkJCQkJCWdvdG8ga2VlcF9nb2luZzsKIAkJCQkJfQpAQCAtMjYwMyw4 ICsyNTY4LDcgQEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAKIAkJCQkJCWlmICh1 c2VrZWVwYWxpdmVzIDwgMCkKIAkJCQkJCXsKLQkJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJCQkJIGxpYnBxX2dldHRleHQoImtl ZXBhbGl2ZXMgcGFyYW1ldGVyIG11c3QgYmUgYW4gaW50ZWdlclxuIikpOworCQkJCQkJCWxp YnBxX2FwcGVuZF9lcnJvcihjb25uLCAia2VlcGFsaXZlcyBwYXJhbWV0ZXIgbXVzdCBiZSBh biBpbnRlZ2VyIik7CiAJCQkJCQkJZXJyID0gMTsKIAkJCQkJCX0KIAkJCQkJCWVsc2UgaWYg KHVzZWtlZXBhbGl2ZXMgPT0gMCkKQEAgLTI2MTYsMTEgKzI1ODAsMTAgQEAgUFFjb25uZWN0 UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJCQkJCQkJCVNPTF9TT0NLRVQsIFNPX0tFRVBBTElW RSwKIAkJCQkJCQkJCQkJKGNoYXIgKikgJm9uLCBzaXplb2Yob24pKSA8IDApCiAJCQkJCQl7 Ci0JCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJ CQkJCQkJICBsaWJwcV9nZXR0ZXh0KCIlcyglcykgZmFpbGVkOiAlc1xuIiksCi0JCQkJCQkJ CQkJCSAgInNldHNvY2tvcHQiLAotCQkJCQkJCQkJCQkgICJTT19LRUVQQUxJVkUiLAotCQkJ CQkJCQkJCQkgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1 ZikpKTsKKwkJCQkJCQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgIiVzKCVzKSBmYWlsZWQ6 ICVzIiwKKwkJCQkJCQkJCQkJICAgInNldHNvY2tvcHQiLAorCQkJCQkJCQkJCQkgICAiU09f S0VFUEFMSVZFIiwKKwkJCQkJCQkJCQkJICAgU09DS19TVFJFUlJPUihTT0NLX0VSUk5PLCBz ZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOwogCQkJCQkJCWVyciA9IDE7CiAJCQkJCQl9CiAJCQkJ CQllbHNlIGlmICghc2V0S2VlcGFsaXZlc0lkbGUoY29ubikKQEAgLTI3NDQsOSArMjcwNyw4 IEBAIFBRY29ubmVjdFBvbGwoUEdjb25uICpjb25uKQogCQkJCWlmIChnZXRzb2Nrb3B0KGNv bm4tPnNvY2ssIFNPTF9TT0NLRVQsIFNPX0VSUk9SLAogCQkJCQkJCSAgIChjaGFyICopICZv cHR2YWwsICZvcHRsZW4pID09IC0xKQogCQkJCXsKLQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIo JmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiY291bGQg bm90IGdldCBzb2NrZXQgZXJyb3Igc3RhdHVzOiAlc1xuIiksCi0JCQkJCQkJCQkgIFNPQ0tf U1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJCQkJbGli cHFfYXBwZW5kX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgZ2V0IHNvY2tldCBlcnJvciBzdGF0 dXM6ICVzIiwKKwkJCQkJCQkJCSAgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYs IHNpemVvZihzZWJ1ZikpKTsKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQkJfQogCQkJ CWVsc2UgaWYgKG9wdHZhbCAhPSAwKQpAQCAtMjc3Miw5ICsyNzM0LDggQEAgUFFjb25uZWN0 UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJCQkJCShzdHJ1Y3Qgc29ja2FkZHIgKikgJmNvbm4t PmxhZGRyLmFkZHIsCiAJCQkJCQkJCSZjb25uLT5sYWRkci5zYWxlbikgPCAwKQogCQkJCXsK LQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJ CSAgbGlicHFfZ2V0dGV4dCgiY291bGQgbm90IGdldCBjbGllbnQgYWRkcmVzcyBmcm9tIHNv Y2tldDogJXNcbiIpLAotCQkJCQkJCQkJICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNl YnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAi Y291bGQgbm90IGdldCBjbGllbnQgYWRkcmVzcyBmcm9tIHNvY2tldDogJXMiLAorCQkJCQkJ CQkJICAgU09DS19TVFJFUlJPUihTT0NLX0VSUk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkp OwogCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCQl9CiAKQEAgLTI4MTEsMTIgKzI3NzIs MTAgQEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJCQkgKiBzdHViCiAJCQkJ CQkgKi8KIAkJCQkJCWlmIChlcnJubyA9PSBFTk9TWVMpCi0JCQkJCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCQkJCSBsaWJwcV9nZXR0 ZXh0KCJyZXF1aXJlcGVlciBwYXJhbWV0ZXIgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBs YXRmb3JtXG4iKSk7CisJCQkJCQkJbGlicHFfYXBwZW5kX2Vycm9yKGNvbm4sICJyZXF1aXJl cGVlciBwYXJhbWV0ZXIgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIik7CiAJ CQkJCQllbHNlCi0JCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2Fn ZSwKLQkJCQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3QgZ2V0IHBlZXIgY3Jl ZGVudGlhbHM6ICVzXG4iKSwKLQkJCQkJCQkJCQkJICBzdHJlcnJvcl9yKGVycm5vLCBzZWJ1 Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQkJCQkJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAi Y291bGQgbm90IGdldCBwZWVyIGNyZWRlbnRpYWxzOiAlcyIsCisJCQkJCQkJCQkJCSAgIHN0 cmVycm9yX3IoZXJybm8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CiAJCQkJCQlnb3RvIGVy cm9yX3JldHVybjsKIAkJCQkJfQogCkBAIC0yODI4LDkgKzI3ODcsOCBAQCBQUWNvbm5lY3RQ b2xsKFBHY29ubiAqY29ubikKIAogCQkJCQlpZiAoc3RyY21wKHJlbW90ZV91c2VybmFtZSwg Y29ubi0+cmVxdWlyZXBlZXIpICE9IDApCiAJCQkJCXsKLQkJCQkJCWFwcGVuZFBRRXhwQnVm ZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJy ZXF1aXJlcGVlciBzcGVjaWZpZXMgXCIlc1wiLCBidXQgYWN0dWFsIHBlZXIgdXNlciBuYW1l IGlzIFwiJXNcIlxuIiksCi0JCQkJCQkJCQkJICBjb25uLT5yZXF1aXJlcGVlciwgcmVtb3Rl X3VzZXJuYW1lKTsKKwkJCQkJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAicmVxdWlyZXBl ZXIgc3BlY2lmaWVzIFwiJXNcIiwgYnV0IGFjdHVhbCBwZWVyIHVzZXIgbmFtZSBpcyBcIiVz XCIiLAorCQkJCQkJCQkJCSAgIGNvbm4tPnJlcXVpcmVwZWVyLCByZW1vdGVfdXNlcm5hbWUp OwogCQkJCQkJZnJlZShyZW1vdGVfdXNlcm5hbWUpOwogCQkJCQkJZ290byBlcnJvcl9yZXR1 cm47CiAJCQkJCX0KQEAgLTI4NzAsOSArMjgyOCw4IEBAIFBRY29ubmVjdFBvbGwoUEdjb25u ICpjb25uKQogCiAJCQkJCWlmIChwcVBhY2tldFNlbmQoY29ubiwgMCwgJnB2LCBzaXplb2Yo cHYpKSAhPSBTVEFUVVNfT0spCiAJCQkJCXsKLQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZj b25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBu b3Qgc2VuZCBHU1NBUEkgbmVnb3RpYXRpb24gcGFja2V0OiAlc1xuIiksCi0JCQkJCQkJCQkJ ICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJ CQkJCQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgImNvdWxkIG5vdCBzZW5kIEdTU0FQSSBu ZWdvdGlhdGlvbiBwYWNrZXQ6ICVzIiwKKwkJCQkJCQkJCQkgICBTT0NLX1NUUkVSUk9SKFNP Q0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CiAJCQkJCQlnb3RvIGVycm9yX3Jl dHVybjsKIAkJCQkJfQogCkBAIC0yODgyLDggKzI4MzksOCBAQCBQUWNvbm5lY3RQb2xsKFBH Y29ubiAqY29ubikKIAkJCQl9CiAJCQkJZWxzZSBpZiAoIWNvbm4tPmdjdHggJiYgY29ubi0+ Z3NzZW5jbW9kZVswXSA9PSAncicpCiAJCQkJewotCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJHU1NB UEkgZW5jcnlwdGlvbiByZXF1aXJlZCBidXQgd2FzIGltcG9zc2libGUgKHBvc3NpYmx5IG5v IGNyZWRlbnRpYWwgY2FjaGUsIG5vIHNlcnZlciBzdXBwb3J0LCBvciB1c2luZyBhIGxvY2Fs IHNvY2tldClcbiIpKTsKKwkJCQkJbGlicHFfYXBwZW5kX2Vycm9yKGNvbm4sCisJCQkJCQkJ CQkgICAiR1NTQVBJIGVuY3J5cHRpb24gcmVxdWlyZWQgYnV0IHdhcyBpbXBvc3NpYmxlIChw b3NzaWJseSBubyBjcmVkZW50aWFsIGNhY2hlLCBubyBzZXJ2ZXIgc3VwcG9ydCwgb3IgdXNp bmcgYSBsb2NhbCBzb2NrZXQpIik7CiAJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJCX0K ICNlbmRpZgpAQCAtMjkyNCw5ICsyODgxLDggQEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNv bm4pCiAJCQkJCXB2ID0gcGdfaHRvbjMyKE5FR09USUFURV9TU0xfQ09ERSk7CiAJCQkJCWlm IChwcVBhY2tldFNlbmQoY29ubiwgMCwgJnB2LCBzaXplb2YocHYpKSAhPSBTVEFUVVNfT0sp CiAJCQkJCXsKLQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2Us Ci0JCQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3Qgc2VuZCBTU0wgbmVnb3Rp YXRpb24gcGFja2V0OiAlc1xuIiksCi0JCQkJCQkJCQkJICBTT0NLX1NUUkVSUk9SKFNPQ0tf RVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQlsaWJwcV9hcHBlbmRfZXJy b3IoY29ubiwgImNvdWxkIG5vdCBzZW5kIFNTTCBuZWdvdGlhdGlvbiBwYWNrZXQ6ICVzIiwK KwkJCQkJCQkJCQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yo c2VidWYpKSk7CiAJCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCQkJfQogCQkJCQkvKiBP aywgd2FpdCBmb3IgcmVzcG9uc2UgKi8KQEAgLTI5NDIsOCArMjg5OCw3IEBAIFBRY29ubmVj dFBvbGwoUEdjb25uICpjb25uKQogCQkJCQkJCQkJCQkJCUVudmlyb25tZW50T3B0aW9ucyk7 CiAJCQkJaWYgKCFzdGFydHBhY2tldCkKIAkJCQl7Ci0JCQkJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJIGxpYnBxX2dldHRleHQoIm91 dCBvZiBtZW1vcnlcbiIpKTsKKwkJCQkJbGlicHFfYXBwZW5kX2Vycm9yKGNvbm4sICJvdXQg b2YgbWVtb3J5Iik7CiAJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJCX0KIApAQCAtMjk1 NSw5ICsyOTEwLDggQEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJICovCiAJ CQkJaWYgKHBxUGFja2V0U2VuZChjb25uLCAwLCBzdGFydHBhY2tldCwgcGFja2V0bGVuKSAh PSBTVEFUVVNfT0spCiAJCQkJewotCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJy b3JNZXNzYWdlLAotCQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3VsZCBub3Qgc2VuZCBz dGFydHVwIHBhY2tldDogJXNcbiIpLAotCQkJCQkJCQkJICBTT0NLX1NUUkVSUk9SKFNPQ0tf RVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCWxpYnBxX2FwcGVuZF9lcnJv cihjb25uLCAiY291bGQgbm90IHNlbmQgc3RhcnR1cCBwYWNrZXQ6ICVzIiwKKwkJCQkJCQkJ CSAgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsK IAkJCQkJZnJlZShzdGFydHBhY2tldCk7CiAJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJ CX0KQEAgLTMwMzEsOCArMjk4NSw3IEBAIFBRY29ubmVjdFBvbGwoUEdjb25uICpjb25uKQog CQkJCQkJCQkJCQkJCQkgKiAidmVyaWZ5LWZ1bGwiICovCiAJCQkJCQl7CiAJCQkJCQkJLyog UmVxdWlyZSBTU0wsIGJ1dCBzZXJ2ZXIgZG9lcyBub3Qgd2FudCBpdCAqLwotCQkJCQkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJCQkg bGlicHFfZ2V0dGV4dCgic2VydmVyIGRvZXMgbm90IHN1cHBvcnQgU1NMLCBidXQgU1NMIHdh cyByZXF1aXJlZFxuIikpOworCQkJCQkJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAic2Vy dmVyIGRvZXMgbm90IHN1cHBvcnQgU1NMLCBidXQgU1NMIHdhcyByZXF1aXJlZCIpOwogCQkJ CQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJCQkJfQogCQkJCQkJLyogT3RoZXJ3aXNlLCBw cm9jZWVkIHdpdGggbm9ybWFsIHN0YXJ0dXAgKi8KQEAgLTMwNTgsOSArMzAxMSw4IEBAIFBR Y29ubmVjdFBvbGwoUEdjb25uICpjb25uKQogCQkJCQl9CiAJCQkJCWVsc2UKIAkJCQkJewot CQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJ CQkgIGxpYnBxX2dldHRleHQoInJlY2VpdmVkIGludmFsaWQgcmVzcG9uc2UgdG8gU1NMIG5l Z290aWF0aW9uOiAlY1xuIiksCi0JCQkJCQkJCQkJICBTU0xvayk7CisJCQkJCQlsaWJwcV9h cHBlbmRfZXJyb3IoY29ubiwgInJlY2VpdmVkIGludmFsaWQgcmVzcG9uc2UgdG8gU1NMIG5l Z290aWF0aW9uOiAlYyIsCisJCQkJCQkJCQkJICAgU1NMb2spOwogCQkJCQkJZ290byBlcnJv cl9yZXR1cm47CiAJCQkJCX0KIAkJCQl9CkBAIC0zMDc5LDggKzMwMzEsNyBAQCBQUWNvbm5l Y3RQb2xsKFBHY29ubiAqY29ubikKIAkJCQkJICovCiAJCQkJCWlmIChjb25uLT5pbkN1cnNv ciAhPSBjb25uLT5pbkVuZCkKIAkJCQkJewotCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo JmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCQkJIGxpYnBxX2dldHRleHQoInJlY2Vp dmVkIHVuZW5jcnlwdGVkIGRhdGEgYWZ0ZXIgU1NMIHJlc3BvbnNlXG4iKSk7CisJCQkJCQls aWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgInJlY2VpdmVkIHVuZW5jcnlwdGVkIGRhdGEgYWZ0 ZXIgU1NMIHJlc3BvbnNlIik7CiAJCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCQkJfQog CkBAIC0zMTYwLDggKzMxMTEsNyBAQCBQUWNvbm5lY3RQb2xsKFBHY29ubiAqY29ubikKIAkJ CQkJCS8qIFNlcnZlciBkb2Vzbid0IHdhbnQgR1NTQVBJOyBmYWxsIGJhY2sgaWYgd2UgY2Fu ICovCiAJCQkJCQlpZiAoY29ubi0+Z3NzZW5jbW9kZVswXSA9PSAncicpCiAJCQkJCQl7Ci0J CQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJ CQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJzZXJ2ZXIgZG9lc24ndCBzdXBwb3J0IEdTU0FQSSBl bmNyeXB0aW9uLCBidXQgaXQgd2FzIHJlcXVpcmVkXG4iKSk7CisJCQkJCQkJbGlicHFfYXBw ZW5kX2Vycm9yKGNvbm4sICJzZXJ2ZXIgZG9lc24ndCBzdXBwb3J0IEdTU0FQSSBlbmNyeXB0 aW9uLCBidXQgaXQgd2FzIHJlcXVpcmVkIik7CiAJCQkJCQkJZ290byBlcnJvcl9yZXR1cm47 CiAJCQkJCQl9CiAKQEAgLTMxNzIsOSArMzEyMiw4IEBAIFBRY29ubmVjdFBvbGwoUEdjb25u ICpjb25uKQogCQkJCQl9CiAJCQkJCWVsc2UgaWYgKGdzc19vayAhPSAnRycpCiAJCQkJCXsK LQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJ CQkJICBsaWJwcV9nZXR0ZXh0KCJyZWNlaXZlZCBpbnZhbGlkIHJlc3BvbnNlIHRvIEdTU0FQ SSBuZWdvdGlhdGlvbjogJWNcbiIpLAotCQkJCQkJCQkJCSAgZ3NzX29rKTsKKwkJCQkJCWxp YnBxX2FwcGVuZF9lcnJvcihjb25uLCAicmVjZWl2ZWQgaW52YWxpZCByZXNwb25zZSB0byBH U1NBUEkgbmVnb3RpYXRpb246ICVjIiwKKwkJCQkJCQkJCQkgICBnc3Nfb2spOwogCQkJCQkJ Z290byBlcnJvcl9yZXR1cm47CiAJCQkJCX0KIAkJCQl9CkBAIC0zMTkxLDggKzMxNDAsNyBA QCBQUWNvbm5lY3RQb2xsKFBHY29ubiAqY29ubikKIAkJCQkJICovCiAJCQkJCWlmIChjb25u LT5pbkN1cnNvciAhPSBjb25uLT5pbkVuZCkKIAkJCQkJewotCQkJCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCQkJIGxpYnBxX2dldHRl eHQoInJlY2VpdmVkIHVuZW5jcnlwdGVkIGRhdGEgYWZ0ZXIgR1NTQVBJIGVuY3J5cHRpb24g cmVzcG9uc2VcbiIpKTsKKwkJCQkJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAicmVjZWl2 ZWQgdW5lbmNyeXB0ZWQgZGF0YSBhZnRlciBHU1NBUEkgZW5jcnlwdGlvbiByZXNwb25zZSIp OwogCQkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQkJCX0KIApAQCAtMzI1MSw5ICszMTk5 LDggQEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJICovCiAJCQkJaWYgKCEo YmVyZXNwID09ICdSJyB8fCBiZXJlc3AgPT0gJ0UnKSkKIAkJCQl7Ci0JCQkJCWFwcGVuZFBR RXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkgIGxpYnBxX2dldHRl eHQoImV4cGVjdGVkIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3QgZnJvbSBzZXJ2ZXIsIGJ1dCBy ZWNlaXZlZCAlY1xuIiksCi0JCQkJCQkJCQkgIGJlcmVzcCk7CisJCQkJCWxpYnBxX2FwcGVu ZF9lcnJvcihjb25uLCAiZXhwZWN0ZWQgYXV0aGVudGljYXRpb24gcmVxdWVzdCBmcm9tIHNl cnZlciwgYnV0IHJlY2VpdmVkICVjIiwKKwkJCQkJCQkJCSAgIGJlcmVzcCk7CiAJCQkJCWdv dG8gZXJyb3JfcmV0dXJuOwogCQkJCX0KIApAQCAtMzI3Niw5ICszMjIzLDggQEAgUFFjb25u ZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJICovCiAJCQkJaWYgKGJlcmVzcCA9PSAnUicg JiYgKG1zZ0xlbmd0aCA8IDggfHwgbXNnTGVuZ3RoID4gMjAwMCkpCiAJCQkJewotCQkJCQlh cHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJICBsaWJw cV9nZXR0ZXh0KCJleHBlY3RlZCBhdXRoZW50aWNhdGlvbiByZXF1ZXN0IGZyb20gc2VydmVy LCBidXQgcmVjZWl2ZWQgJWNcbiIpLAotCQkJCQkJCQkJICBiZXJlc3ApOworCQkJCQlsaWJw cV9hcHBlbmRfZXJyb3IoY29ubiwgImV4cGVjdGVkIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3Qg ZnJvbSBzZXJ2ZXIsIGJ1dCByZWNlaXZlZCAlYyIsCisJCQkJCQkJCQkgICBiZXJlc3ApOwog CQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCQl9CiAKQEAgLTM0ODMsOCArMzQyOSw3IEBA IFBRY29ubmVjdFBvbGwoUEdjb25uICpjb25uKQogCQkJCWlmIChyZXMpCiAJCQkJewogCQkJ CQlpZiAocmVzLT5yZXN1bHRTdGF0dXMgIT0gUEdSRVNfRkFUQUxfRVJST1IpCi0JCQkJCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJCQkg bGlicHFfZ2V0dGV4dCgidW5leHBlY3RlZCBtZXNzYWdlIGZyb20gc2VydmVyIGR1cmluZyBz dGFydHVwXG4iKSk7CisJCQkJCQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgInVuZXhwZWN0 ZWQgbWVzc2FnZSBmcm9tIHNlcnZlciBkdXJpbmcgc3RhcnR1cCIpOwogCQkJCQllbHNlIGlm IChjb25uLT5zZW5kX2FwcG5hbWUgJiYKIAkJCQkJCQkgKGNvbm4tPmFwcG5hbWUgfHwgY29u bi0+ZmJhcHBuYW1lKSkKIAkJCQkJewpAQCAtMzU3NSwxMSArMzUyMCw5IEBAIFBRY29ubmVj dFBvbGwoUEdjb25uICpjb25uKQogCQkJCQl7CiAJCQkJCQkvKiBXcm9uZyBzZXJ2ZXIgc3Rh dGUsIHJlamVjdCBhbmQgdHJ5IHRoZSBuZXh0IGhvc3QgKi8KIAkJCQkJCWlmIChjb25uLT50 YXJnZXRfc2VydmVyX3R5cGUgPT0gU0VSVkVSX1RZUEVfUkVBRF9XUklURSkKLQkJCQkJCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJCQkJ IGxpYnBxX2dldHRleHQoInNlc3Npb24gaXMgcmVhZC1vbmx5XG4iKSk7CisJCQkJCQkJbGli cHFfYXBwZW5kX2Vycm9yKGNvbm4sICJzZXNzaW9uIGlzIHJlYWQtb25seSIpOwogCQkJCQkJ ZWxzZQotCQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2Us Ci0JCQkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgic2Vzc2lvbiBpcyBub3QgcmVhZC1vbmx5 XG4iKSk7CisJCQkJCQkJbGlicHFfYXBwZW5kX2Vycm9yKGNvbm4sICJzZXNzaW9uIGlzIG5v dCByZWFkLW9ubHkiKTsKIAogCQkJCQkJLyogQ2xvc2UgY29ubmVjdGlvbiBwb2xpdGVseS4g Ki8KIAkJCQkJCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05fT0s7CkBAIC0zNjMyLDExICsz NTc1LDkgQEAgUFFjb25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQkJCXsKIAkJCQkJCS8q IFdyb25nIHNlcnZlciBzdGF0ZSwgcmVqZWN0IGFuZCB0cnkgdGhlIG5leHQgaG9zdCAqLwog CQkJCQkJaWYgKGNvbm4tPnRhcmdldF9zZXJ2ZXJfdHlwZSA9PSBTRVJWRVJfVFlQRV9QUklN QVJZKQotCQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2Us Ci0JCQkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgic2VydmVyIGlzIGluIGhvdCBzdGFuZGJ5 IG1vZGVcbiIpKTsKKwkJCQkJCQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgInNlcnZlciBp cyBpbiBob3Qgc3RhbmRieSBtb2RlIik7CiAJCQkJCQllbHNlCi0JCQkJCQkJYXBwZW5kUFFF eHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCQkJCSBsaWJwcV9n ZXR0ZXh0KCJzZXJ2ZXIgaXMgbm90IGluIGhvdCBzdGFuZGJ5IG1vZGVcbiIpKTsKKwkJCQkJ CQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgInNlcnZlciBpcyBub3QgaW4gaG90IHN0YW5k YnkgbW9kZSIpOwogCiAJCQkJCQkvKiBDbG9zZSBjb25uZWN0aW9uIHBvbGl0ZWx5LiAqLwog CQkJCQkJY29ubi0+c3RhdHVzID0gQ09OTkVDVElPTl9PSzsKZGlmZiAtLWdpdCBhL3NyYy9p bnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4 ZWMuYwppbmRleCAwMjc0YzFiMTU2YzYuLjViYzVkOTYzYWE2OCAxMDA2NDQKLS0tIGEvc3Jj L2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWV4ZWMuYwpAQCAtMTMxNiw4ICsxMzE2LDcgQEAgcHFBbGxvY0NtZFF1ZXVlRW50cnko UEdjb25uICpjb25uKQogCQllbnRyeSA9IChQR2NtZFF1ZXVlRW50cnkgKikgbWFsbG9jKHNp emVvZihQR2NtZFF1ZXVlRW50cnkpKTsKIAkJaWYgKGVudHJ5ID09IE5VTEwpCiAJCXsKLQkJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSBs aWJwcV9nZXR0ZXh0KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCQlsaWJwcV9hcHBlbmRfZXJy b3IoY29ubiwgIm91dCBvZiBtZW1vcnkiKTsKIAkJCXJldHVybiBOVUxMOwogCQl9CiAJfQpA QCAtMTQ0MCw4ICsxNDM5LDcgQEAgUFFzZW5kUXVlcnlJbnRlcm5hbChQR2Nvbm4gKmNvbm4s IGNvbnN0IGNoYXIgKnF1ZXJ5LCBib29sIG5ld1F1ZXJ5KQogCS8qIGNoZWNrIHRoZSBhcmd1 bWVudCAqLwogCWlmICghcXVlcnkpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29u bi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJjb21tYW5kIHN0cmlu ZyBpcyBhIG51bGwgcG9pbnRlclxuIikpOworCQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwg ImNvbW1hbmQgc3RyaW5nIGlzIGEgbnVsbCBwb2ludGVyIik7CiAJCXJldHVybiAwOwogCX0K IApAQCAtMTUxMSwxNSArMTUwOSwxMyBAQCBQUXNlbmRRdWVyeVBhcmFtcyhQR2Nvbm4gKmNv bm4sCiAJLyogY2hlY2sgdGhlIGFyZ3VtZW50cyAqLwogCWlmICghY29tbWFuZCkKIAl7Ci0J CWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxp YnBxX2dldHRleHQoImNvbW1hbmQgc3RyaW5nIGlzIGEgbnVsbCBwb2ludGVyXG4iKSk7CisJ CWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAiY29tbWFuZCBzdHJpbmcgaXMgYSBudWxsIHBv aW50ZXIiKTsKIAkJcmV0dXJuIDA7CiAJfQogCWlmIChuUGFyYW1zIDwgMCB8fCBuUGFyYW1z ID4gUFFfUVVFUllfUEFSQU1fTUFYX0xJTUlUKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXIo JmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgibnVtYmVyIG9m IHBhcmFtZXRlcnMgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kICVkXG4iKSwKLQkJCQkJCSAgUFFf UVVFUllfUEFSQU1fTUFYX0xJTUlUKTsKKwkJbGlicHFfYXBwZW5kX2Vycm9yKGNvbm4sICJu dW1iZXIgb2YgcGFyYW1ldGVycyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgJWQiLAorCQkJCQkJ ICAgUFFfUVVFUllfUEFSQU1fTUFYX0xJTUlUKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0x NTU0LDIxICsxNTUwLDE4IEBAIFBRc2VuZFByZXBhcmUoUEdjb25uICpjb25uLAogCS8qIGNo ZWNrIHRoZSBhcmd1bWVudHMgKi8KIAlpZiAoIXN0bXROYW1lKQogCXsKLQkJYXBwZW5kUFFF eHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4 dCgic3RhdGVtZW50IG5hbWUgaXMgYSBudWxsIHBvaW50ZXJcbiIpKTsKKwkJbGlicHFfYXBw ZW5kX2Vycm9yKGNvbm4sICJzdGF0ZW1lbnQgbmFtZSBpcyBhIG51bGwgcG9pbnRlciIpOwog CQlyZXR1cm4gMDsKIAl9CiAJaWYgKCFxdWVyeSkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQoImNvbW1h bmQgc3RyaW5nIGlzIGEgbnVsbCBwb2ludGVyXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9lcnJv cihjb25uLCAiY29tbWFuZCBzdHJpbmcgaXMgYSBudWxsIHBvaW50ZXIiKTsKIAkJcmV0dXJu IDA7CiAJfQogCWlmIChuUGFyYW1zIDwgMCB8fCBuUGFyYW1zID4gUFFfUVVFUllfUEFSQU1f TUFYX0xJTUlUKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2Fn ZSwKLQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgibnVtYmVyIG9mIHBhcmFtZXRlcnMgbXVzdCBi ZSBiZXR3ZWVuIDAgYW5kICVkXG4iKSwKLQkJCQkJCSAgUFFfUVVFUllfUEFSQU1fTUFYX0xJ TUlUKTsKKwkJbGlicHFfYXBwZW5kX2Vycm9yKGNvbm4sICJudW1iZXIgb2YgcGFyYW1ldGVy cyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgJWQiLAorCQkJCQkJICAgUFFfUVVFUllfUEFSQU1f TUFYX0xJTUlUKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0xNjU2LDE1ICsxNjQ5LDEzIEBA IFBRc2VuZFF1ZXJ5UHJlcGFyZWQoUEdjb25uICpjb25uLAogCS8qIGNoZWNrIHRoZSBhcmd1 bWVudHMgKi8KIAlpZiAoIXN0bXROYW1lKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo JmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgic3RhdGVtZW50 IG5hbWUgaXMgYSBudWxsIHBvaW50ZXJcbiIpKTsKKwkJbGlicHFfYXBwZW5kX2Vycm9yKGNv bm4sICJzdGF0ZW1lbnQgbmFtZSBpcyBhIG51bGwgcG9pbnRlciIpOwogCQlyZXR1cm4gMDsK IAl9CiAJaWYgKG5QYXJhbXMgPCAwIHx8IG5QYXJhbXMgPiBQUV9RVUVSWV9QQVJBTV9NQVhf TElNSVQpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAot CQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJudW1iZXIgb2YgcGFyYW1ldGVycyBtdXN0IGJlIGJl dHdlZW4gMCBhbmQgJWRcbiIpLAotCQkJCQkJICBQUV9RVUVSWV9QQVJBTV9NQVhfTElNSVQp OworCQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgIm51bWJlciBvZiBwYXJhbWV0ZXJzIG11 c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCIsCisJCQkJCQkgICBQUV9RVUVSWV9QQVJBTV9NQVhf TElNSVQpOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTE3MDAsOCArMTY5MSw3IEBAIFBRc2Vu ZFF1ZXJ5U3RhcnQoUEdjb25uICpjb25uLCBib29sIG5ld1F1ZXJ5KQogCS8qIERvbid0IHRy eSB0byBzZW5kIGlmIHdlIGtub3cgdGhlcmUncyBubyBsaXZlIGNvbm5lY3Rpb24uICovCiAJ aWYgKGNvbm4tPnN0YXR1cyAhPSBDT05ORUNUSU9OX09LKQogCXsKLQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgi bm8gY29ubmVjdGlvbiB0byB0aGUgc2VydmVyXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9lcnJv cihjb25uLCAibm8gY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIik7CiAJCXJldHVybiBmYWxz ZTsKIAl9CiAKQEAgLTE3MDksOCArMTY5OSw3IEBAIFBRc2VuZFF1ZXJ5U3RhcnQoUEdjb25u ICpjb25uLCBib29sIG5ld1F1ZXJ5KQogCWlmIChjb25uLT5hc3luY1N0YXR1cyAhPSBQR0FT WU5DX0lETEUgJiYKIAkJY29ubi0+cGlwZWxpbmVTdGF0dXMgPT0gUFFfUElQRUxJTkVfT0ZG KQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJ CQkJCQkgbGlicHFfZ2V0dGV4dCgiYW5vdGhlciBjb21tYW5kIGlzIGFscmVhZHkgaW4gcHJv Z3Jlc3NcbiIpKTsKKwkJbGlicHFfYXBwZW5kX2Vycm9yKGNvbm4sICJhbm90aGVyIGNvbW1h bmQgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcyIpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBA IC0xNzQwLDggKzE3MjksNyBAQCBQUXNlbmRRdWVyeVN0YXJ0KFBHY29ubiAqY29ubiwgYm9v bCBuZXdRdWVyeSkKIAkJCWNhc2UgUEdBU1lOQ19DT1BZX0lOOgogCQkJY2FzZSBQR0FTWU5D X0NPUFlfT1VUOgogCQkJY2FzZSBQR0FTWU5DX0NPUFlfQk9USDoKLQkJCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkJIGxpYnBxX2dldHRl eHQoImNhbm5vdCBxdWV1ZSBjb21tYW5kcyBkdXJpbmcgQ09QWVxuIikpOworCQkJCWxpYnBx X2FwcGVuZF9lcnJvcihjb25uLCAiY2Fubm90IHF1ZXVlIGNvbW1hbmRzIGR1cmluZyBDT1BZ Iik7CiAJCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQpAQCAtMTg1OCw4ICsxODQ2LDcgQEAg UFFzZW5kUXVlcnlHdXRzKFBHY29ubiAqY29ubiwKIAkJCQkJbmJ5dGVzID0gcGFyYW1MZW5n dGhzW2ldOwogCQkJCWVsc2UKIAkJCQl7Ci0JCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZj b25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCQkJIGxpYnBxX2dldHRleHQoImxlbmd0aCBt dXN0IGJlIGdpdmVuIGZvciBiaW5hcnkgcGFyYW1ldGVyXG4iKSk7CisJCQkJCWxpYnBxX2Fw cGVuZF9lcnJvcihjb25uLCAibGVuZ3RoIG11c3QgYmUgZ2l2ZW4gZm9yIGJpbmFyeSBwYXJh bWV0ZXIiKTsKIAkJCQkJZ290byBzZW5kRmFpbGVkOwogCQkJCX0KIAkJCX0KQEAgLTIxODEs OSArMjE2OCw3IEBAIFBRZ2V0UmVzdWx0KFBHY29ubiAqY29ubikKIAkJCXJlcyA9IGdldENv cHlSZXN1bHQoY29ubiwgUEdSRVNfQ09QWV9CT1RIKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0 OgotCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkg IGxpYnBxX2dldHRleHQoInVuZXhwZWN0ZWQgYXN5bmNTdGF0dXM6ICVkXG4iKSwKLQkJCQkJ CQkgIChpbnQpIGNvbm4tPmFzeW5jU3RhdHVzKTsKKwkJCWxpYnBxX2FwcGVuZF9lcnJvcihj b25uLCAidW5leHBlY3RlZCBhc3luY1N0YXR1czogJWQiLCAoaW50KSBjb25uLT5hc3luY1N0 YXR1cyk7CiAJCQlwcVNhdmVFcnJvclJlc3VsdChjb25uKTsKIAkJCWNvbm4tPmFzeW5jU3Rh dHVzID0gUEdBU1lOQ19JRExFOwkvKiB0cnkgdG8gcmVzdG9yZSB2YWxpZCBzdGF0ZSAqLwog CQkJcmVzID0gcHFQcmVwYXJlQXN5bmNSZXN1bHQoY29ubik7CkBAIC0yMzM5LDggKzIzMjQs NyBAQCBQUWV4ZWNTdGFydChQR2Nvbm4gKmNvbm4pCiAKIAlpZiAoY29ubi0+cGlwZWxpbmVT dGF0dXMgIT0gUFFfUElQRUxJTkVfT0ZGKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo JmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgic3luY2hyb25v dXMgY29tbWFuZCBleGVjdXRpb24gZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBwaXBl bGluZSBtb2RlXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAic3luY2hyb25v dXMgY29tbWFuZCBleGVjdXRpb24gZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBwaXBl bGluZSBtb2RlIik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTIzNzMsOCArMjM1Nyw3 IEBAIFBRZXhlY1N0YXJ0KFBHY29ubiAqY29ubikKIAkJZWxzZSBpZiAocmVzdWx0U3RhdHVz ID09IFBHUkVTX0NPUFlfQk9USCkKIAkJewogCQkJLyogV2UgZG9uJ3QgYWxsb3cgUFFleGVj IGR1cmluZyBDT1BZIEJPVEggKi8KLQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5l cnJvck1lc3NhZ2UsCi0JCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJQUWV4ZWMgbm90IGFsbG93 ZWQgZHVyaW5nIENPUFkgQk9USFxuIikpOworCQkJbGlicHFfYXBwZW5kX2Vycm9yKGNvbm4s ICJQUWV4ZWMgbm90IGFsbG93ZWQgZHVyaW5nIENPUFkgQk9USCIpOwogCQkJcmV0dXJuIGZh bHNlOwogCQl9CiAJCS8qIGNoZWNrIGZvciBsb3NzIG9mIGNvbm5lY3Rpb24sIHRvbyAqLwpA QCAtMjYwMCw4ICsyNTgzLDcgQEAgUFFwdXRDb3B5RGF0YShQR2Nvbm4gKmNvbm4sIGNvbnN0 IGNoYXIgKmJ1ZmZlciwgaW50IG5ieXRlcykKIAlpZiAoY29ubi0+YXN5bmNTdGF0dXMgIT0g UEdBU1lOQ19DT1BZX0lOICYmCiAJCWNvbm4tPmFzeW5jU3RhdHVzICE9IFBHQVNZTkNfQ09Q WV9CT1RIKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2Fn ZSwKLQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgibm8gQ09QWSBpbiBwcm9ncmVzc1xuIikpOwor CQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgIm5vIENPUFkgaW4gcHJvZ3Jlc3MiKTsKIAkJ cmV0dXJuIC0xOwogCX0KIApAQCAtMjY1Niw4ICsyNjM4LDcgQEAgUFFwdXRDb3B5RW5kKFBH Y29ubiAqY29ubiwgY29uc3QgY2hhciAqZXJyb3Jtc2cpCiAJaWYgKGNvbm4tPmFzeW5jU3Rh dHVzICE9IFBHQVNZTkNfQ09QWV9JTiAmJgogCQljb25uLT5hc3luY1N0YXR1cyAhPSBQR0FT WU5DX0NPUFlfQk9USCkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJv ck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQoIm5vIENPUFkgaW4gcHJvZ3Jlc3Nc biIpKTsKKwkJbGlicHFfYXBwZW5kX2Vycm9yKGNvbm4sICJubyBDT1BZIGluIHByb2dyZXNz Iik7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTI3MjUsOCArMjcwNiw3IEBAIFBRZ2V0Q29w eURhdGEoUEdjb25uICpjb25uLCBjaGFyICoqYnVmZmVyLCBpbnQgYXN5bmMpCiAJaWYgKGNv bm4tPmFzeW5jU3RhdHVzICE9IFBHQVNZTkNfQ09QWV9PVVQgJiYKIAkJY29ubi0+YXN5bmNT dGF0dXMgIT0gUEdBU1lOQ19DT1BZX0JPVEgpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJubyBDT1BZ IGluIHByb2dyZXNzXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAibm8gQ09Q WSBpbiBwcm9ncmVzcyIpOwogCQlyZXR1cm4gLTI7CiAJfQogCXJldHVybiBwcUdldENvcHlE YXRhMyhjb25uLCBidWZmZXIsIGFzeW5jKTsKQEAgLTI5MDUsMTcgKzI4ODUsMTQgQEAgUFFm bihQR2Nvbm4gKmNvbm4sCiAKIAlpZiAoY29ubi0+cGlwZWxpbmVTdGF0dXMgIT0gUFFfUElQ RUxJTkVfT0ZGKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2Fn ZSwKLQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgiJXMgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUg bW9kZVxuIiksCi0JCQkJCQkgICJQUWZuIik7CisJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25u LCAiJXMgbm90IGFsbG93ZWQgaW4gcGlwZWxpbmUgbW9kZSIsICJQUWZuIik7CiAJCXJldHVy biBOVUxMOwogCX0KIAogCWlmIChjb25uLT5zb2NrID09IFBHSU5WQUxJRF9TT0NLRVQgfHwg Y29ubi0+YXN5bmNTdGF0dXMgIT0gUEdBU1lOQ19JRExFIHx8CiAJCXBnSGF2ZVBlbmRpbmdS ZXN1bHQoY29ubikpCiAJewotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JN ZXNzYWdlLAotCQkJCQkJCSBsaWJwcV9nZXR0ZXh0KCJjb25uZWN0aW9uIGluIHdyb25nIHN0 YXRlXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAiY29ubmVjdGlvbiBpbiB3 cm9uZyBzdGF0ZSIpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTI5NTgsOCArMjkzNSw3 IEBAIFBRZW50ZXJQaXBlbGluZU1vZGUoUEdjb25uICpjb25uKQogCiAJaWYgKGNvbm4tPmFz eW5jU3RhdHVzICE9IFBHQVNZTkNfSURMRSkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQoImNhbm5vdCBl bnRlciBwaXBlbGluZSBtb2RlLCBjb25uZWN0aW9uIG5vdCBpZGxlXG4iKSk7CisJCWxpYnBx X2FwcGVuZF9lcnJvcihjb25uLCAiY2Fubm90IGVudGVyIHBpcGVsaW5lIG1vZGUsIGNvbm5l Y3Rpb24gbm90IGlkbGUiKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0yOTk1LDEzICsyOTcx LDExIEBAIFBRZXhpdFBpcGVsaW5lTW9kZShQR2Nvbm4gKmNvbm4pCiAJCWNhc2UgUEdBU1lO Q19SRUFEWToKIAkJY2FzZSBQR0FTWU5DX1JFQURZX01PUkU6CiAJCQkvKiB0aGVyZSBhcmUg c29tZSB1bmNvbGxlY3RlZCByZXN1bHRzICovCi0JCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigm Y29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgiY2Fubm90IGV4 aXQgcGlwZWxpbmUgbW9kZSB3aXRoIHVuY29sbGVjdGVkIHJlc3VsdHNcbiIpKTsKKwkJCWxp YnBxX2FwcGVuZF9lcnJvcihjb25uLCAiY2Fubm90IGV4aXQgcGlwZWxpbmUgbW9kZSB3aXRo IHVuY29sbGVjdGVkIHJlc3VsdHMiKTsKIAkJCXJldHVybiAwOwogCiAJCWNhc2UgUEdBU1lO Q19CVVNZOgotCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwK LQkJCQkJCQkJIGxpYnBxX2dldHRleHQoImNhbm5vdCBleGl0IHBpcGVsaW5lIG1vZGUgd2hp bGUgYnVzeVxuIikpOworCQkJbGlicHFfYXBwZW5kX2Vycm9yKGNvbm4sICJjYW5ub3QgZXhp dCBwaXBlbGluZSBtb2RlIHdoaWxlIGJ1c3kiKTsKIAkJCXJldHVybiAwOwogCiAJCWNhc2Ug UEdBU1lOQ19JRExFOgpAQCAtMzAxMiwxNSArMjk4NiwxMyBAQCBQUWV4aXRQaXBlbGluZU1v ZGUoUEdjb25uICpjb25uKQogCQljYXNlIFBHQVNZTkNfQ09QWV9JTjoKIAkJY2FzZSBQR0FT WU5DX0NPUFlfT1VUOgogCQljYXNlIFBHQVNZTkNfQ09QWV9CT1RIOgotCQkJYXBwZW5kUFFF eHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJIGxpYnBxX2dldHRl eHQoImNhbm5vdCBleGl0IHBpcGVsaW5lIG1vZGUgd2hpbGUgaW4gQ09QWVxuIikpOworCQkJ bGlicHFfYXBwZW5kX2Vycm9yKGNvbm4sICJjYW5ub3QgZXhpdCBwaXBlbGluZSBtb2RlIHdo aWxlIGluIENPUFkiKTsKIAl9CiAKIAkvKiBzdGlsbCB3b3JrIHRvIHByb2Nlc3MgKi8KIAlp ZiAoY29ubi0+Y21kX3F1ZXVlX2hlYWQgIT0gTlVMTCkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQoImNh bm5vdCBleGl0IHBpcGVsaW5lIG1vZGUgd2l0aCB1bmNvbGxlY3RlZCByZXN1bHRzXG4iKSk7 CisJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAiY2Fubm90IGV4aXQgcGlwZWxpbmUgbW9k ZSB3aXRoIHVuY29sbGVjdGVkIHJlc3VsdHMiKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0z MTM1LDggKzMxMDcsNyBAQCBwcVBpcGVsaW5lUHJvY2Vzc1F1ZXVlKFBHY29ubiAqY29ubikK IAkJY29ubi0+cmVzdWx0ID0gUFFtYWtlRW1wdHlQR3Jlc3VsdChjb25uLCBQR1JFU19QSVBF TElORV9BQk9SVEVEKTsKIAkJaWYgKCFjb25uLT5yZXN1bHQpCiAJCXsKLQkJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJCSBsaWJwcV9nZXR0 ZXh0KCJvdXQgb2YgbWVtb3J5XG4iKSk7CisJCQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwg Im91dCBvZiBtZW1vcnkiKTsKIAkJCXBxU2F2ZUVycm9yUmVzdWx0KGNvbm4pOwogCQkJcmV0 dXJuOwogCQl9CkBAIC0zMTc5LDggKzMxNTAsNyBAQCBQUXBpcGVsaW5lU3luYyhQR2Nvbm4g KmNvbm4pCiAKIAlpZiAoY29ubi0+cGlwZWxpbmVTdGF0dXMgPT0gUFFfUElQRUxJTkVfT0ZG KQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJ CQkJCQkgbGlicHFfZ2V0dGV4dCgiY2Fubm90IHNlbmQgcGlwZWxpbmUgd2hlbiBub3QgaW4g cGlwZWxpbmUgbW9kZVxuIikpOworCQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgImNhbm5v dCBzZW5kIHBpcGVsaW5lIHdoZW4gbm90IGluIHBpcGVsaW5lIG1vZGUiKTsKIAkJcmV0dXJu IDA7CiAJfQogCkBAIC0zMjQ2LDggKzMyMTYsNyBAQCBQUXNlbmRGbHVzaFJlcXVlc3QoUEdj b25uICpjb25uKQogCS8qIERvbid0IHRyeSB0byBzZW5kIGlmIHdlIGtub3cgdGhlcmUncyBu byBsaXZlIGNvbm5lY3Rpb24uICovCiAJaWYgKGNvbm4tPnN0YXR1cyAhPSBDT05ORUNUSU9O X09LKQogCXsKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwK LQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgibm8gY29ubmVjdGlvbiB0byB0aGUgc2VydmVyXG4i KSk7CisJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAibm8gY29ubmVjdGlvbiB0byB0aGUg c2VydmVyIik7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMzI1NSw4ICszMjI0LDcgQEAgUFFz ZW5kRmx1c2hSZXF1ZXN0KFBHY29ubiAqY29ubikKIAlpZiAoY29ubi0+YXN5bmNTdGF0dXMg IT0gUEdBU1lOQ19JRExFICYmCiAJCWNvbm4tPnBpcGVsaW5lU3RhdHVzID09IFBRX1BJUEVM SU5FX09GRikKIAl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3Nh Z2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQoImFub3RoZXIgY29tbWFuZCBpcyBhbHJlYWR5 IGluIHByb2dyZXNzXG4iKSk7CisJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAiYW5vdGhl ciBjb21tYW5kIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MiKTsKIAkJcmV0dXJuIDA7CiAJfQog CkBAIC0zOTkyLDggKzM5NjAsNyBAQCBQUWVzY2FwZVN0cmluZ0ludGVybmFsKFBHY29ubiAq Y29ubiwKIAkJCWlmIChlcnJvcikKIAkJCQkqZXJyb3IgPSAxOwogCQkJaWYgKGNvbm4pCi0J CQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJ CSBsaWJwcV9nZXR0ZXh0KCJpbmNvbXBsZXRlIG11bHRpYnl0ZSBjaGFyYWN0ZXJcbiIpKTsK KwkJCQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgImluY29tcGxldGUgbXVsdGlieXRlIGNo YXJhY3RlciIpOwogCQkJZm9yICg7IGkgPCBsZW47IGkrKykKIAkJCXsKIAkJCQlpZiAoKChz aXplX3QpICh0YXJnZXQgLSB0bykpIC8gMiA+PSBsZW5ndGgpCkBAIC00MDgzLDggKzQwNTAs NyBAQCBQUWVzY2FwZUludGVybmFsKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqc3RyLCBz aXplX3QgbGVuLCBib29sIGFzX2lkZW50KQogCQkJLyogTXVsdGlieXRlIGNoYXJhY3RlciBv dmVycnVucyBhbGxvd2FibGUgbGVuZ3RoLiAqLwogCQkJaWYgKChzIC0gc3RyKSArIGNoYXJs ZW4gPiBsZW4gfHwgbWVtY2hyKHMsIDAsIGNoYXJsZW4pICE9IE5VTEwpCiAJCQl7Ci0JCQkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2FnZSwKLQkJCQkJCQkJCSBs aWJwcV9nZXR0ZXh0KCJpbmNvbXBsZXRlIG11bHRpYnl0ZSBjaGFyYWN0ZXJcbiIpKTsKKwkJ CQlsaWJwcV9hcHBlbmRfZXJyb3IoY29ubiwgImluY29tcGxldGUgbXVsdGlieXRlIGNoYXJh Y3RlciIpOwogCQkJCXJldHVybiBOVUxMOwogCQkJfQogCkBAIC00MTAxLDggKzQwNjcsNyBA QCBQUWVzY2FwZUludGVybmFsKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqc3RyLCBzaXpl X3QgbGVuLCBib29sIGFzX2lkZW50KQogCXJlc3VsdCA9IHJwID0gKGNoYXIgKikgbWFsbG9j KHJlc3VsdF9zaXplKTsKIAlpZiAocnAgPT0gTlVMTCkKIAl7Ci0JCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQoIm91 dCBvZiBtZW1vcnlcbiIpKTsKKwkJbGlicHFfYXBwZW5kX2Vycm9yKGNvbm4sICJvdXQgb2Yg bWVtb3J5Iik7CiAJCXJldHVybiBOVUxMOwogCX0KIApAQCAtNDI2Niw4ICs0MjMxLDcgQEAg UFFlc2NhcGVCeXRlYUludGVybmFsKFBHY29ubiAqY29ubiwKIAlpZiAocnAgPT0gTlVMTCkK IAl7CiAJCWlmIChjb25uKQotCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9y TWVzc2FnZSwKLQkJCQkJCQkJIGxpYnBxX2dldHRleHQoIm91dCBvZiBtZW1vcnlcbiIpKTsK KwkJCWxpYnBxX2FwcGVuZF9lcnJvcihjb25uLCAib3V0IG9mIG1lbW9yeSIpOwogCQlyZXR1 cm4gTlVMTDsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLW1p c2MuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLW1pc2MuYwppbmRleCA3OTU1MDBjNTkz NTQuLmQ1MDVlZDY3Y2MxZCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt bWlzYy5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLW1pc2MuYwpAQCAtMTI3OCwz ICsxMjc4LDE4IEBAIGxpYnBxX25nZXR0ZXh0KGNvbnN0IGNoYXIgKm1zZ2lkLCBjb25zdCBj aGFyICptc2dpZF9wbHVyYWwsIHVuc2lnbmVkIGxvbmcgbikKIH0KIAogI2VuZGlmCQkJCQkJ CS8qIEVOQUJMRV9OTFMgKi8KKwordm9pZAorbGlicHFfYXBwZW5kX2Vycm9yKFBHY29ubiAq Y29ubiwgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdAkJYXJnczsKKworCUFz c2VydChmbXRbc3RybGVuKGZtdCkgLSAxXSAhPSAnXG4nKTsKKworCXZhX3N0YXJ0KGFyZ3Ms IGZtdCk7CisKKwlhcHBlbmRQUUV4cEJ1ZmZlclZBKCZjb25uLT5lcnJvck1lc3NhZ2UsIGxp YnBxX2dldHRleHQoZm10KSwgYXJncyk7CisJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKCZjb25u LT5lcnJvck1lc3NhZ2UsICdcbicpOworCisJdmFfZW5kKGFyZ3MpOworfQpkaWZmIC0tZ2l0 IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS9saWJwcS1pbnQuaAppbmRleCBjNzVlZDYzYTJjNjIuLmVlZWY4MGFiMmI3MSAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKKysrIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKQEAgLTg4Nyw2ICs4ODcsOCBAQCBleHRlcm4g Y2hhciAqbGlicHFfbmdldHRleHQoY29uc3QgY2hhciAqbXNnaWQsIGNvbnN0IGNoYXIgKm1z Z2lkX3BsdXJhbCwgdW5zaWduZQogICovCiAjdW5kZWYgXwogCitleHRlcm4gdm9pZCBsaWJw cV9hcHBlbmRfZXJyb3IoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpmbXQsIC4uLikgcGdf YXR0cmlidXRlX3ByaW50ZigyLCAzKTsKKwogLyoKICAqIFRoZXNlIG1hY3JvcyBhcmUgbmVl ZGVkIHRvIGxldCBlcnJvci1oYW5kbGluZyBjb2RlIGJlIHBvcnRhYmxlIGJldHdlZW4KICAq IFVuaXggYW5kIFdpbmRvd3MuICAodWdoKQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMv bGlicHEvbmxzLm1rIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbmxzLm1rCmluZGV4IDkyNTZi NDI2YzFkNC4uOWQ5OTRhYzE5NjBhIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJw cS9ubHMubWsKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbmxzLm1rCkBAIC0xLDUgKzEs NSBAQAogIyBzcmMvaW50ZXJmYWNlcy9saWJwcS9ubHMubWsKIENBVEFMT0dfTkFNRSAgICAg PSBsaWJwcQogR0VUVEVYVF9GSUxFUyAgICA9IGZlLWF1dGguYyBmZS1hdXRoLXNjcmFtLmMg ZmUtY29ubmVjdC5jIGZlLWV4ZWMuYyBmZS1nc3NhcGktY29tbW9uLmMgZmUtbG9iai5jIGZl LW1pc2MuYyBmZS1wcm90b2NvbDMuYyBmZS1zZWN1cmUuYyBmZS1zZWN1cmUtY29tbW9uLmMg ZmUtc2VjdXJlLWdzc2FwaS5jIGZlLXNlY3VyZS1vcGVuc3NsLmMgd2luMzIuYyAuLi8uLi9w b3J0L3RocmVhZC5jCi1HRVRURVhUX1RSSUdHRVJTID0gbGlicHFfZ2V0dGV4dCBwcUludGVy bmFsTm90aWNlOjIKLUdFVFRFWFRfRkxBR1MgICAgPSBsaWJwcV9nZXR0ZXh0OjE6cGFzcy1j LWZvcm1hdCBwcUludGVybmFsTm90aWNlOjI6Yy1mb3JtYXQKK0dFVFRFWFRfVFJJR0dFUlMg PSBsaWJwcV9hcHBlbmRfZXJyb3I6MiBsaWJwcV9nZXR0ZXh0IHBxSW50ZXJuYWxOb3RpY2U6 MgorR0VUVEVYVF9GTEFHUyAgICA9IGxpYnBxX2FwcGVuZF9lcnJvcjoyIGxpYnBxX2dldHRl eHQ6MTpwYXNzLWMtZm9ybWF0IHBxSW50ZXJuYWxOb3RpY2U6MjpjLWZvcm1hdApkaWZmIC0t Z2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvcHFleHBidWZmZXIuYyBiL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL3BxZXhwYnVmZmVyLmMKaW5kZXggZWI1MWU2ZDA4ODQwLi42NTYyMWVjM2Ix YzggMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL3BxZXhwYnVmZmVyLmMKKysr IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvcHFleHBidWZmZXIuYwpAQCAtNDAsNyArNDAsNyBA QCBzdGF0aWMgY29uc3QgY2hhciBvb21fYnVmZmVyWzFdID0gIiI7CiAvKiBOZWVkIGEgY2hh ciAqIGZvciB1bmNvbnN0aWZ5KCkgY29tcGF0aWJpbGl0eSAqLwogc3RhdGljIGNvbnN0IGNo YXIgKm9vbV9idWZmZXJfcHRyID0gb29tX2J1ZmZlcjsKIAotc3RhdGljIGJvb2wgYXBwZW5k UFFFeHBCdWZmZXJWQShQUUV4cEJ1ZmZlciBzdHIsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlz dCBhcmdzKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDIsIDApOworc3RhdGljIGJvb2wgYXBwZW5k UFFFeHBCdWZmZXJWQV9pbnRlcm5hbChQUUV4cEJ1ZmZlciBzdHIsIGNvbnN0IGNoYXIgKmZt dCwgdmFfbGlzdCBhcmdzKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDIsIDApOwogCiAKIC8qCkBA IC0yNTAsNyArMjUwLDcgQEAgcHJpbnRmUFFFeHBCdWZmZXIoUFFFeHBCdWZmZXIgc3RyLCBj b25zdCBjaGFyICpmbXQsLi4uKQogCXsKIAkJZXJybm8gPSBzYXZlX2Vycm5vOwogCQl2YV9z dGFydChhcmdzLCBmbXQpOwotCQlkb25lID0gYXBwZW5kUFFFeHBCdWZmZXJWQShzdHIsIGZt dCwgYXJncyk7CisJCWRvbmUgPSBhcHBlbmRQUUV4cEJ1ZmZlclZBX2ludGVybmFsKHN0ciwg Zm10LCBhcmdzKTsKIAkJdmFfZW5kKGFyZ3MpOwogCX0gd2hpbGUgKCFkb25lKTsKIH0KQEAg LTI3OCwxMyArMjc4LDMwIEBAIGFwcGVuZFBRRXhwQnVmZmVyKFBRRXhwQnVmZmVyIHN0ciwg Y29uc3QgY2hhciAqZm10LC4uLikKIAl7CiAJCWVycm5vID0gc2F2ZV9lcnJubzsKIAkJdmFf c3RhcnQoYXJncywgZm10KTsKLQkJZG9uZSA9IGFwcGVuZFBRRXhwQnVmZmVyVkEoc3RyLCBm bXQsIGFyZ3MpOworCQlkb25lID0gYXBwZW5kUFFFeHBCdWZmZXJWQV9pbnRlcm5hbChzdHIs IGZtdCwgYXJncyk7CiAJCXZhX2VuZChhcmdzKTsKIAl9IHdoaWxlICghZG9uZSk7CiB9CiAK K3ZvaWQKK2FwcGVuZFBRRXhwQnVmZmVyVkEoUFFFeHBCdWZmZXIgc3RyLCBjb25zdCBjaGFy ICpmbXQsIHZhX2xpc3QgYXJncykKK3sKKwlpbnQJCQlzYXZlX2Vycm5vID0gZXJybm87CisJ Ym9vbAkJZG9uZTsKKworCWlmIChQUUV4cEJ1ZmZlckJyb2tlbihzdHIpKQorCQlyZXR1cm47 CQkJCQkvKiBhbHJlYWR5IGZhaWxlZCAqLworCisJLyogTG9vcCBpbiBjYXNlIHdlIGhhdmUg dG8gcmV0cnkgYWZ0ZXIgZW5sYXJnaW5nIHRoZSBidWZmZXIuICovCisJZG8KKwl7CisJCWVy cm5vID0gc2F2ZV9lcnJubzsKKwkJZG9uZSA9IGFwcGVuZFBRRXhwQnVmZmVyVkFfaW50ZXJu YWwoc3RyLCBmbXQsIGFyZ3MpOworCX0gd2hpbGUgKCFkb25lKTsKK30KKwogLyoKLSAqIGFw cGVuZFBRRXhwQnVmZmVyVkEKKyAqIGFwcGVuZFBRRXhwQnVmZmVyVkFfaW50ZXJuYWwKICAq IFNoYXJlZCBndXRzIG9mIHByaW50ZlBRRXhwQnVmZmVyL2FwcGVuZFBRRXhwQnVmZmVyLgog ICogQXR0ZW1wdCB0byBmb3JtYXQgZGF0YSBhbmQgYXBwZW5kIGl0IHRvIHN0ci4gIFJldHVy bnMgdHJ1ZSBpZiBkb25lCiAgKiAoZWl0aGVyIHN1Y2Nlc3NmdWwgb3IgaGFyZCBmYWlsdXJl KSwgZmFsc2UgaWYgbmVlZCB0byByZXRyeS4KQEAgLTI5Myw3ICszMTAsNyBAQCBhcHBlbmRQ UUV4cEJ1ZmZlcihQUUV4cEJ1ZmZlciBzdHIsIGNvbnN0IGNoYXIgKmZtdCwuLi4pCiAgKiB3 aGVuIGxvb3BpbmcsIGluIGNhc2UgdGhlIGZtdCBjb250YWlucyAiJW0iLgogICovCiBzdGF0 aWMgYm9vbAotYXBwZW5kUFFFeHBCdWZmZXJWQShQUUV4cEJ1ZmZlciBzdHIsIGNvbnN0IGNo YXIgKmZtdCwgdmFfbGlzdCBhcmdzKQorYXBwZW5kUFFFeHBCdWZmZXJWQV9pbnRlcm5hbChQ UUV4cEJ1ZmZlciBzdHIsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKQogewogCXNp emVfdAkJYXZhaWw7CiAJc2l6ZV90CQluZWVkZWQ7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJm YWNlcy9saWJwcS9wcWV4cGJ1ZmZlci5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvcHFleHBi dWZmZXIuaAppbmRleCBlZmQ2NTJjODBhMzMuLmI4MjE2YjhhN2JkOSAxMDA2NDQKLS0tIGEv c3JjL2ludGVyZmFjZXMvbGlicHEvcHFleHBidWZmZXIuaAorKysgYi9zcmMvaW50ZXJmYWNl cy9saWJwcS9wcWV4cGJ1ZmZlci5oCkBAIC0xNTcsNiArMTU3LDggQEAgZXh0ZXJuIHZvaWQg cHJpbnRmUFFFeHBCdWZmZXIoUFFFeHBCdWZmZXIgc3RyLCBjb25zdCBjaGFyICpmbXQsLi4u KSBwZ19hdHRyaWJ1dGUKICAqLwogZXh0ZXJuIHZvaWQgYXBwZW5kUFFFeHBCdWZmZXIoUFFF eHBCdWZmZXIgc3RyLCBjb25zdCBjaGFyICpmbXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRm KDIsIDMpOwogCitleHRlcm4gdm9pZCBhcHBlbmRQUUV4cEJ1ZmZlclZBKFBRRXhwQnVmZmVy IHN0ciwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpIHBnX2F0dHJpYnV0ZV9wcmlu dGYoMiwgMCk7CisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBhcHBlbmRQUUV4 cEJ1ZmZlclN0cgogICogQXBwZW5kIHRoZSBnaXZlbiBzdHJpbmcgdG8gYSBQUUV4cEJ1ZmZl ciwgYWxsb2NhdGluZyBtb3JlIHNwYWNlCi0tIAoyLjM3LjMKCg== --------------hOtcEyk5S0drHrvdBVxX9psd--