Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t7sQF-000rSP-9x for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Nov 2024 08:26:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1t7sQC-0049oM-JK for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Nov 2024 08:26:49 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t7sQA-0049oD-RE for pgsql-hackers@lists.postgresql.org; Mon, 04 Nov 2024 08:26:48 +0000 Received: from fhigh-b7-smtp.messagingengine.com ([202.12.124.158]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t7sQ5-0006GF-Ce for pgsql-hackers@postgresql.org; Mon, 04 Nov 2024 08:26:46 +0000 Received: from phl-compute-09.internal (phl-compute-09.phl.internal [10.202.2.49]) by mailfhigh.stl.internal (Postfix) with ESMTP id B8E3A25400A2; Mon, 4 Nov 2024 03:26:39 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-09.internal (MEProxy); Mon, 04 Nov 2024 03:26:39 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eisentraut.org; h=cc:cc:content-type:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm2; t=1730708799; x= 1730795199; bh=XYybkn/uhqRmHaBiL+OA50WWF0cDV7PiThkuCzGzXWo=; b=Y uEMI7elyJlIwFgIkAjR/juTn3os7txAvLwQGTIxQOp36nmnnZtZNCjEZNtF8YGAe XP3wwr82mN+VMqCsBno0O4pd9CtWpQ7KLZGAARURTA5GCr6AWDg7U9G50UFf2EWP jsntCkAt33KNt68LaxNMAsYSn81MjriqDmVLmjHUpg5QBmk1UTdAMYk236vjqlMo DYJ/cU/tjztWRnm6khKgf57UJTpIzgO13sb7TxU2Z7X9eWQGgL4JXg65Q3pR7tP+ HOCDU3UIzdcriM2mDkxxD+suTxMANUDVFgiNpaL9IWOWZsQhrJc3zPim8L/Bgll1 zjd8GjmPfx69BxxOdWcqA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t= 1730708799; x=1730795199; bh=XYybkn/uhqRmHaBiL+OA50WWF0cDV7PiThk uCzGzXWo=; b=dL3zBZlx5ufFDnDZguggNX25JpFohyhejd2pWtsDRVGrpHfowY3 9m9RiTC36tlKKANoOomKzBxVUa5GHy90O54laruE6mvFM4+pruMvQVZzfV5okJJr hCWUC5xAv9iwwgjqH0HcKiGIbQRl2oZJK4jzzM9YtDSfCJ6qvf5HI1mD4tksK2e3 /UjpePJVndhh7VPICh/5jm04ebwANBYAwZiFva6FGuvFIrmmeHU4PgKH8CBBzThh vKxVSoXPkHE/yXKXMfFFMOHvtvl/kl1M58eUDcgYFpCitTzO9UjZfCynUe2iJOoz Dij/K9D/NVdsrovfNXoV+eXSmMUErVW+PBA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdelhedguddulecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdp uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivg hnthhsucdlqddutddtmdenucfjughrpegtkfffgggfuffvvehfhfgjsehmtderredtvdej necuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrsegvihhsvg hnthhrrghuthdrohhrgheqnecuggftrfgrthhtvghrnhepkedtuedthfdvhfeviefgffet gedvjedvhffhveefvefgtdfgleegheeivefhgfeinecuvehluhhsthgvrhfuihiivgeptd enucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhesvghishgvnhhtrhgruhhtrdho rhhgpdhnsggprhgtphhtthhopeegpdhmohguvgepshhmthhpohhuthdprhgtphhtthhope hjrggtohgsrdgthhgrmhhpihhonhesvghnthgvrhhprhhishgvuggsrdgtohhmpdhrtghp thhtohepphhgshhqlhdqhhgrtghkvghrshesphhoshhtghhrvghsqhhlrdhorhhgpdhrtg hpthhtohepuggrnhhivghlsehmrghnihhtohhuqdhmrghilhdrohhrghdprhgtphhtthho pehpjhesihhllhhumhhinhgrthgvuggtohhmphhuthhinhhgrdgtohhm X-ME-Proxy: Feedback-ID: ie0a040ee:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 4 Nov 2024 03:26:38 -0500 (EST) Content-Type: multipart/mixed; boundary="------------zH2x90yXvHOLSJ0494NJJQwX" Message-ID: <0ca761b5-7b62-42a1-bffd-8bedefad48dd@eisentraut.org> Date: Mon, 4 Nov 2024 09:26:37 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Support LIKE with nondeterministic collations To: Jacob Champion Cc: pgsql-hackers , Daniel Verite , Paul A Jungwirth References: <3104729e-1fbf-4368-ac21-1f670062de28@eisentraut.org> Content-Language: en-US From: Peter Eisentraut In-Reply-To: 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. --------------zH2x90yXvHOLSJ0494NJJQwX Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 29.10.24 18:15, Jacob Champion wrote: > libfuzzer is unhappy about the following code in MatchText: > >> + while (p1len > 0) >> + { >> + if (*p1 == '\\') >> + { >> + found_escape = true; >> + NextByte(p1, p1len); >> + } >> + else if (*p1 == '_' || *p1 == '%') >> + break; >> + NextByte(p1, p1len); >> + } > > If the pattern ends with a backslash, we'll call NextByte() twice, > p1len will wrap around to INT_MAX, and we'll walk off the end of the > buffer. (I fixed it locally by duplicating the ERROR case that's > directly above this.) Thanks. Here is an updated patch with that fixed. --------------zH2x90yXvHOLSJ0494NJJQwX Content-Type: text/plain; charset=UTF-8; name="v6-0001-Support-LIKE-with-nondeterministic-collations.patch" Content-Disposition: attachment; filename*0="v6-0001-Support-LIKE-with-nondeterministic-collations.patch" Content-Transfer-Encoding: base64 RnJvbSAxN2Y3OTMyOTM0NjliYWU4ZDU4MThlZGVlNjJmMDQyOWZkMDJkZjY3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCA0IE5vdiAyMDI0IDA5OjE2OjQ0ICswMTAwClN1YmplY3Q6 IFtQQVRDSCB2Nl0gU3VwcG9ydCBMSUtFIHdpdGggbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRp b25zCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNl dD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpUaGlzIGFsbG93cyBm b3IgZXhhbXBsZSB1c2luZyBMSUtFIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBjb2xsYXRpb25z LgpUaGVyZSB3YXMgcHJldmlvdXNseSBubyBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiB0 aGlzLCBzbyBpdCB3YXMgbWV0CndpdGggYSBub3Qtc3VwcG9ydGVkIGVycm9yLiAgVGhpcyBh ZGRzIHRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBhbmQKcmVtb3ZlcyB0aGUgZXJyb3Iu ICBUaGUgaW1wbGVtZW50YXRpb24gZm9sbG93cyB0aGUgc3BlY2lmaWNhdGlvbiBvZgp0aGUg U1FMIHN0YW5kYXJkIGZvciB0aGlzLgoKVW5saWtlIHdpdGggZGV0ZXJtaW5pc3RpYyBjb2xs YXRpb25zLCB0aGUgTElLRSBtYXRjaGluZyBjYW5ub3QgZ28KY2hhcmFjdGVyIGJ5IGNoYXJh Y3RlciBidXQgaGFzIHRvIGdvIHN1YnN0cmluZyBieSBzdWJzdHJpbmcuICBGb3IKZXhhbXBs ZSwgaWYgd2UgYXJlIG1hdGNoaW5nIGFnYWluc3QgTElLRSAnZm9vJWJhcicsIHdlIGNhbid0 IHN0YXJ0IGJ5Cmxvb2tpbmcgZm9yIGFuICdmJywgdGhlbiBhbiAnbycsIGJ1dCBpbnN0ZWFk IHdpdGggaGF2ZSB0byBmaW5kCnNvbWV0aGluZyB0aGF0IG1hdGNoZXMgJ2ZvbycuICBUaGlz IGlzIGJlY2F1c2UgdGhlIGNvbGxhdGlvbiBjb3VsZApjb25zaWRlciBzdWJzdHJpbmdzIG9m IGRpZmZlcmVudCBsZW5ndGhzIHRvIGJlIGVxdWFsLiAgVGhpcyBpcyBhbGwKaW50ZXJuYWwg dG8gTWF0Y2hUZXh0KCkgaW4gbGlrZV9tYXRjaC5jLgoKVGhlIGNoYW5nZXMgaW4gR2VuZXJp Y01hdGNoVGV4dCgpIGluIGxpa2UuYyBqdXN0IHBhc3MgdGhyb3VnaCB0aGUKbG9jYWxlIGlu Zm9ybWF0aW9uIHRvIE1hdGNoVGV4dCgpLCB3aGljaCB3YXMgcHJldmlvdXNseSBub3QgbmVl ZGVkLgpUaGlzIG1hdGNoZXMgZXhhY3RseSBHZW5lcmljX1RleHRfSUNfbGlrZSgpIGJlbG93 LgoKSUxJS0UgaXMgbm90IGFmZmVjdGVkLiAgKEl0J3MgdW5jbGVhciB3aGV0aGVyIElMSUtF IG1ha2VzIHNlbnNlIHVuZGVyCm5vbmRldGVybWluaXN0aWMgY29sbGF0aW9ucy4pCgpUaGlz IGFsc28gdXBkYXRlcyBtYXRjaF9wYXR0ZXJuX3ByZWZpeCgpIGluIGxpa2Vfc3VwcG9ydC5j IHRvIHN1cHBvcnQKb3B0aW1pemluZyB0aGUgY2FzZSBvZiBhbiBleGFjdCBwYXR0ZXJuIHdp dGggbm9uZGV0ZXJtaW5pc3RpYwpjb2xsYXRpb25zLiAgVGhpcyB3YXMgYWxyZWFkeSBhbGx1 ZGVkIHRvIGluIHRoZSBwcmV2aW91cyBjb2RlLgoKKGluY2x1ZGVzIGRvY3VtZW50YXRpb24g ZXhhbXBsZXMgZnJvbSBEYW5pZWwgVsOpcml0w6kgYW5kIHRlc3QgY2FzZXMKZnJvbSBQYXVs IEEgSnVuZ3dpcnRoKQoKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcv bWVzc2FnZS1pZC9mbGF0LzcwMGQyZTg2LWJmNzUtNDYwNy05Y2YyLWY1Yjc4MDJmNmU4OEBl aXNlbnRyYXV0Lm9yZwotLS0KIGRvYy9zcmMvc2dtbC9jaGFyc2V0LnNnbWwgICAgICAgICAg ICAgICAgICAgICB8ICAgMiArLQogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDUxICsrKystCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbGlrZS5j ICAgICAgICAgICAgICAgICAgfCAgMjYgKystCiBzcmMvYmFja2VuZC91dGlscy9hZHQvbGlr ZV9tYXRjaC5jICAgICAgICAgICAgfCAxMjggKysrKysrKysrKystCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvbGlrZV9zdXBwb3J0LmMgICAgICAgICAgfCAgMjkgKystCiAuLi4vcmVncmVz cy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dCAgICAgfCAxODkgKysrKysrKysrKysr KysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb2xsYXRlLmljdS51dGY4LnNxbCAgICAg fCAgNTUgKysrKy0KIDcgZmlsZXMgY2hhbmdlZCwgNDM2IGluc2VydGlvbnMoKyksIDQ0IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jaGFyc2V0LnNnbWwgYi9k b2Mvc3JjL3NnbWwvY2hhcnNldC5zZ21sCmluZGV4IGY1ZTExNWU4ZDZlLi4wMGUxOTg2ODQ5 YSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NoYXJzZXQuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvY2hhcnNldC5zZ21sCkBAIC0xMTk3LDcgKzExOTcsNyBAQCA8dGl0bGU+Tm9uZGV0 ZXJtaW5pc3RpYyBDb2xsYXRpb25zPC90aXRsZT4KICAgICAgdG8gYSBwZXJmb3JtYW5jZSBw ZW5hbHR5LiAgTm90ZSwgaW4gcGFydGljdWxhciwgdGhhdCBCLXRyZWUgY2Fubm90IHVzZQog ICAgICBkZWR1cGxpY2F0aW9uIHdpdGggaW5kZXhlcyB0aGF0IHVzZSBhIG5vbmRldGVybWlu aXN0aWMgY29sbGF0aW9uLiAgQWxzbywKICAgICAgY2VydGFpbiBvcGVyYXRpb25zIGFyZSBu b3QgcG9zc2libGUgd2l0aCBub25kZXRlcm1pbmlzdGljIGNvbGxhdGlvbnMsCi0gICAgIHN1 Y2ggYXMgcGF0dGVybiBtYXRjaGluZyBvcGVyYXRpb25zLiAgVGhlcmVmb3JlLCB0aGV5IHNo b3VsZCBiZSB1c2VkCisgICAgIHN1Y2ggYXMgc29tZSBwYXR0ZXJuIG1hdGNoaW5nIG9wZXJh dGlvbnMuICBUaGVyZWZvcmUsIHRoZXkgc2hvdWxkIGJlIHVzZWQKICAgICAgb25seSBpbiBj YXNlcyB3aGVyZSB0aGV5IGFyZSBzcGVjaWZpY2FsbHkgd2FudGVkLgogICAgIDwvcGFyYT4K IApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9m dW5jLnNnbWwKaW5kZXggMjIzZDg2OWY4YzguLjI4NTExMWZjOTA1IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvZnVuYy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKQEAg LTU0MTQsOSArNTQxNCwxMCBAQCA8dGl0bGU+UGF0dGVybiBNYXRjaGluZzwvdGl0bGU+CiAg ICA8L2NhdXRpb24+CiAKICAgIDxwYXJhPgotICAgIFRoZSBwYXR0ZXJuIG1hdGNoaW5nIG9w ZXJhdG9ycyBvZiBhbGwgdGhyZWUga2luZHMgZG8gbm90IHN1cHBvcnQKLSAgICBub25kZXRl cm1pbmlzdGljIGNvbGxhdGlvbnMuICBJZiByZXF1aXJlZCwgYXBwbHkgYSBkaWZmZXJlbnQg Y29sbGF0aW9uIHRvCi0gICAgdGhlIGV4cHJlc3Npb24gdG8gd29yayBhcm91bmQgdGhpcyBs aW1pdGF0aW9uLgorICAgIDxmdW5jdGlvbj5TSU1JTEFSIFRPPC9mdW5jdGlvbj4gYW5kIDxh Y3JvbnltPlBPU0lYPC9hY3JvbnltPi1zdHlsZSByZWd1bGFyCisgICAgZXhwcmVzc2lvbnMg ZG8gbm90IHN1cHBvcnQgbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25zLiAgSWYgcmVxdWly ZWQsIHVzZQorICAgIDxmdW5jdGlvbj5MSUtFPC9mdW5jdGlvbj4gb3IgYXBwbHkgYSBkaWZm ZXJlbnQgY29sbGF0aW9uIHRvIHRoZSBleHByZXNzaW9uCisgICAgdG8gd29yayBhcm91bmQg dGhpcyBsaW1pdGF0aW9uLgogICAgPC9wYXJhPgogCiAgIDxzZWN0MiBpZD0iZnVuY3Rpb25z LWxpa2UiPgpAQCAtNTQ2Miw2ICs1NDYzLDQ1IEBAIDx0aXRsZT48ZnVuY3Rpb24+TElLRTwv ZnVuY3Rpb24+PC90aXRsZT4KIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICA8L3BhcmE+CiAKKyAg IDxwYXJhPgorICAgIDxmdW5jdGlvbj5MSUtFPC9mdW5jdGlvbj4gcGF0dGVybiBtYXRjaGlu ZyBzdXBwb3J0cyBub25kZXRlcm1pbmlzdGljCisgICAgY29sbGF0aW9ucyAoc2VlIDx4cmVm IGxpbmtlbmQ9ImNvbGxhdGlvbi1ub25kZXRlcm1pbmlzdGljIi8+KSwgc3VjaCBhcworICAg IGNhc2UtaW5zZW5zaXRpdmUgY29sbGF0aW9ucyBvciBjb2xsYXRpb25zIHRoYXQsIHNheSwg aWdub3JlIHB1bmN0dWF0aW9uLgorICAgIFNvIHdpdGggYSBjYXNlLWluc2Vuc2l0aXZlIGNv bGxhdGlvbiwgb25lIGNvdWxkIGhhdmU6Cis8cHJvZ3JhbWxpc3Rpbmc+CisnQWJDJyBMSUtF ICdhYmMnIENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSAgICA8bGluZWFubm90YXRpb24+dHJ1 ZTwvbGluZWFubm90YXRpb24+CisnQWJDJyBMSUtFICdhJScgQ09MTEFURSBjYXNlX2luc2Vu c2l0aXZlICAgICA8bGluZWFubm90YXRpb24+dHJ1ZTwvbGluZWFubm90YXRpb24+Cis8L3By b2dyYW1saXN0aW5nPgorICAgIFdpdGggY29sbGF0aW9ucyB0aGF0IGlnbm9yZSBjZXJ0YWlu IGNoYXJhY3RlcnMgb3IgaW4gZ2VuZXJhbCB0aGF0IGNvbnNpZGVyCisgICAgc3RyaW5ncyBv ZiBkaWZmZXJlbnQgbGVuZ3RocyBlcXVhbCwgdGhlIHNlbWFudGljcyBjYW4gYmVjb21lIGEg Yml0IG1vcmUKKyAgICBjb21wbGljYXRlZC4gIENvbnNpZGVyIHRoZXNlIGV4YW1wbGVzOgor PHByb2dyYW1saXN0aW5nPgorJy5mb28uJyBMSUtFICdmb28nIENPTExBVEUgaWduX3B1bmN0 ICAgIDxsaW5lYW5ub3RhdGlvbj50cnVlPC9saW5lYW5ub3RhdGlvbj4KKycuZm9vLicgTElL RSAnZl9vJyBDT0xMQVRFIGlnbl9wdW5jdCAgICA8bGluZWFubm90YXRpb24+dHJ1ZTwvbGlu ZWFubm90YXRpb24+CisnLmZvby4nIExJS0UgJ19vbycgQ09MTEFURSBpZ25fcHVuY3QgICAg PGxpbmVhbm5vdGF0aW9uPmZhbHNlPC9saW5lYW5ub3RhdGlvbj4KKzwvcHJvZ3JhbWxpc3Rp bmc+CisgICAgVGhlIHdheSB0aGUgbWF0Y2hpbmcgd29ya3MgaXMgdGhhdCB0aGUgcGF0dGVy biBpcyBwYXJ0aXRpb25lZCBpbnRvCisgICAgc2VxdWVuY2VzIG9mIHdpbGRjYXJkcyBhbmQg bm9uLXdpbGRjYXJkIHN0cmluZ3MuICBGb3IgZXhhbXBsZSwgdGhlIHBhdHRlcm4KKyAgICA8 bGl0ZXJhbD5mX288L2xpdGVyYWw+IGlzIHBhcnRpdGlvbmVkIGludG8gPGxpdGVyYWw+Ziwg XywgbzwvbGl0ZXJhbD4sIHRoZQorICAgIHBhdHRlcm4gPGxpdGVyYWw+X29vPC9saXRlcmFs PiBpcyBwYXJ0aXRpb25lZCBpbnRvIDxsaXRlcmFsPl8sCisgICAgb288L2xpdGVyYWw+LiAg VGhlIGlucHV0IHN0cmluZyBtYXRjaGVzIHRoZSBwYXR0ZXJuIGlmIGl0IGNhbiBiZQorICAg IHBhcnRpdGlvbmVkIGluIHN1Y2ggYSB3YXkgdGhhdCB0aGUgd2lsZGNhcmRzIG1hdGNoIG9u ZSBjaGFyYWN0ZXIgb3IgYW55CisgICAgbnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVzcGVjdGl2 ZWx5IGFuZCB0aGUgbm9uLXdpbGRjYXJkIHBhcnRpdGlvbnMgYXJlCisgICAgZXF1YWwgdW5k ZXIgdGhlIGFwcGxpY2FibGUgY29sbGF0aW9uLiAgU28gZm9yIGV4YW1wbGUsIDxsaXRlcmFs PicuZm9vLicKKyAgICBMSUtFICdmX28nIENPTExBVEUgaWduX3B1bmN0PC9saXRlcmFsPiBp cyB0cnVlIGJlY2F1c2Ugb25lIGNhbiBwYXJ0aXRpb24KKyAgICA8bGl0ZXJhbD4uZm9vLjwv bGl0ZXJhbD4gaW50byA8bGl0ZXJhbD4uZiwgbywgby48L2xpdGVyYWw+LCBhbmQgdGhlbgor ICAgIDxsaXRlcmFsPicuZicgPSAnZicgQ09MTEFURSBpZ25fcHVuY3Q8L2xpdGVyYWw+LCA8 bGl0ZXJhbD4nbyc8L2xpdGVyYWw+CisgICAgbWF0Y2hlcyB0aGUgPGxpdGVyYWw+XzwvbGl0 ZXJhbD4gd2lsZGNhcmQsIGFuZCA8bGl0ZXJhbD4nby4nID0gJ28nIENPTExBVEUKKyAgICBp Z25fcHVuY3Q8L2xpdGVyYWw+LiAgQnV0IDxsaXRlcmFsPicuZm9vLicgTElLRSAnX29vJyBD T0xMQVRFCisgICAgaWduX3B1bmN0PC9saXRlcmFsPiBpcyBmYWxzZSBiZWNhdXNlIDxsaXRl cmFsPi5mb28uPC9saXRlcmFsPiBjYW5ub3QgYmUKKyAgICBwYXJ0aXRpb25lZCBpbiBhIHdh eSB0aGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgYW55IGNoYXJhY3RlciBhbmQgdGhlCisg ICAgcmVzdCBvZiB0aGUgc3RyaW5nIGNvbXBhcmVzIGVxdWFsIHRvIDxsaXRlcmFsPm9vPC9s aXRlcmFsPi4gIChOb3RlIHRoYXQKKyAgICB0aGUgc2luZ2xlLWNoYXJhY3RlciB3aWxkY2Fy ZCBhbHdheXMgbWF0Y2hlcyBleGFjdGx5IG9uZSBjaGFyYWN0ZXIsCisgICAgaW5kZXBlbmRl bnQgb2YgdGhlIGNvbGxhdGlvbi4gIFNvIGluIHRoaXMgZXhhbXBsZSwgdGhlCisgICAgPGxp dGVyYWw+XzwvbGl0ZXJhbD4gd291bGQgbWF0Y2ggPGxpdGVyYWw+LjwvbGl0ZXJhbD4sIGJ1 dCB0aGVuIHRoZSByZXN0CisgICAgb2YgdGhlIGlucHV0IHN0cmluZyB3b24ndCBtYXRjaCB0 aGUgcmVzdCBvZiB0aGUgcGF0dGVybi4pCisgICA8L3BhcmE+CisKICAgIDxwYXJhPgogICAg IDxmdW5jdGlvbj5MSUtFPC9mdW5jdGlvbj4gcGF0dGVybiBtYXRjaGluZyBhbHdheXMgY292 ZXJzIHRoZSBlbnRpcmUKICAgICBzdHJpbmcuICBUaGVyZWZvcmUsIGlmIGl0J3MgZGVzaXJl ZCB0byBtYXRjaCBhIHNlcXVlbmNlIGFueXdoZXJlIHdpdGhpbgpAQCAtNTUwMyw4ICs1NTQz LDkgQEAgPHRpdGxlPjxmdW5jdGlvbj5MSUtFPC9mdW5jdGlvbj48L3RpdGxlPgogCiAgICA8 cGFyYT4KICAgICBUaGUga2V5IHdvcmQgPHRva2VuPklMSUtFPC90b2tlbj4gY2FuIGJlIHVz ZWQgaW5zdGVhZCBvZgotICAgIDx0b2tlbj5MSUtFPC90b2tlbj4gdG8gbWFrZSB0aGUgbWF0 Y2ggY2FzZS1pbnNlbnNpdGl2ZSBhY2NvcmRpbmcKLSAgICB0byB0aGUgYWN0aXZlIGxvY2Fs ZS4gIFRoaXMgaXMgbm90IGluIHRoZSA8YWNyb255bT5TUUw8L2Fjcm9ueW0+IHN0YW5kYXJk IGJ1dCBpcyBhCisgICAgPHRva2VuPkxJS0U8L3Rva2VuPiB0byBtYWtlIHRoZSBtYXRjaCBj YXNlLWluc2Vuc2l0aXZlIGFjY29yZGluZyB0byB0aGUKKyAgICBhY3RpdmUgbG9jYWxlLiAg KEJ1dCB0aGlzIGRvZXMgbm90IHN1cHBvcnQgbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25z LikKKyAgICBUaGlzIGlzIG5vdCBpbiB0aGUgPGFjcm9ueW0+U1FMPC9hY3JvbnltPiBzdGFu ZGFyZCBidXQgaXMgYQogICAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFt ZT4gZXh0ZW5zaW9uLgogICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvbGlrZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xpa2UuYwppbmRleCAw MTUyNzIzYjJhNi4uN2IzZDFiNWJlNzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9saWtlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xpa2UuYwpAQCAtMTQ3 LDIyICsxNDcsMjggQEAgU0JfbG93ZXJfY2hhcih1bnNpZ25lZCBjaGFyIGMsIHBnX2xvY2Fs ZV90IGxvY2FsZSkKIHN0YXRpYyBpbmxpbmUgaW50CiBHZW5lcmljTWF0Y2hUZXh0KGNvbnN0 IGNoYXIgKnMsIGludCBzbGVuLCBjb25zdCBjaGFyICpwLCBpbnQgcGxlbiwgT2lkIGNvbGxh dGlvbikKIHsKLQlpZiAoY29sbGF0aW9uKQotCXsKLQkJcGdfbG9jYWxlX3QgbG9jYWxlID0g cGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKGNvbGxhdGlvbik7CisJcGdfbG9jYWxlX3Qg bG9jYWxlOwogCi0JCWlmICghbG9jYWxlLT5kZXRlcm1pbmlzdGljKQotCQkJZXJlcG9ydChF UlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAot CQkJCQkgZXJybXNnKCJub25kZXRlcm1pbmlzdGljIGNvbGxhdGlvbnMgYXJlIG5vdCBzdXBw b3J0ZWQgZm9yIExJS0UiKSkpOworCWlmICghT2lkSXNWYWxpZChjb2xsYXRpb24pKQorCXsK KwkJLyoKKwkJICogVGhpcyB0eXBpY2FsbHkgbWVhbnMgdGhhdCB0aGUgcGFyc2VyIGNvdWxk IG5vdCByZXNvbHZlIGEgY29uZmxpY3QKKwkJICogb2YgaW1wbGljaXQgY29sbGF0aW9ucywg c28gcmVwb3J0IGl0IHRoYXQgd2F5LgorCQkgKi8KKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX0lOREVURVJNSU5BVEVfQ09MTEFUSU9OKSwKKwkJCQkgZXJybXNn KCJjb3VsZCBub3QgZGV0ZXJtaW5lIHdoaWNoIGNvbGxhdGlvbiB0byB1c2UgZm9yIExJS0Ui KSwKKwkJCQkgZXJyaGludCgiVXNlIHRoZSBDT0xMQVRFIGNsYXVzZSB0byBzZXQgdGhlIGNv bGxhdGlvbiBleHBsaWNpdGx5LiIpKSk7CiAJfQogCisJbG9jYWxlID0gcGdfbmV3bG9jYWxl X2Zyb21fY29sbGF0aW9uKGNvbGxhdGlvbik7CisKIAlpZiAocGdfZGF0YWJhc2VfZW5jb2Rp bmdfbWF4X2xlbmd0aCgpID09IDEpCi0JCXJldHVybiBTQl9NYXRjaFRleHQocywgc2xlbiwg cCwgcGxlbiwgMCk7CisJCXJldHVybiBTQl9NYXRjaFRleHQocywgc2xlbiwgcCwgcGxlbiwg bG9jYWxlKTsKIAllbHNlIGlmIChHZXREYXRhYmFzZUVuY29kaW5nKCkgPT0gUEdfVVRGOCkK LQkJcmV0dXJuIFVURjhfTWF0Y2hUZXh0KHMsIHNsZW4sIHAsIHBsZW4sIDApOworCQlyZXR1 cm4gVVRGOF9NYXRjaFRleHQocywgc2xlbiwgcCwgcGxlbiwgbG9jYWxlKTsKIAllbHNlCi0J CXJldHVybiBNQl9NYXRjaFRleHQocywgc2xlbiwgcCwgcGxlbiwgMCk7CisJCXJldHVybiBN Ql9NYXRjaFRleHQocywgc2xlbiwgcCwgcGxlbiwgbG9jYWxlKTsKIH0KIAogc3RhdGljIGlu bGluZSBpbnQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9saWtlX21hdGNo LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbGlrZV9tYXRjaC5jCmluZGV4IGY1NjFjYzE1 ZTRjLi43OWRlNGM3ZTRiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xp a2VfbWF0Y2guYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbGlrZV9tYXRjaC5jCkBA IC0xNTcsNyArMTU3LDkgQEAgTWF0Y2hUZXh0KGNvbnN0IGNoYXIgKnQsIGludCB0bGVuLCBj b25zdCBjaGFyICpwLCBpbnQgcGxlbiwgcGdfbG9jYWxlX3QgbG9jYWxlKQogCQkJICogdGhl IGZpcnN0IHBhdHRlcm4gYnl0ZSB0byBlYWNoIHRleHQgYnl0ZSB0byBhdm9pZCByZWN1cnNp bmcKIAkJCSAqIG1vcmUgdGhhbiB3ZSBoYXZlIHRvLiAgVGhpcyBmYWN0IGFsc28gZ3VhcmFu dGVlcyB0aGF0IHdlIGRvbid0CiAJCQkgKiBoYXZlIHRvIGNvbnNpZGVyIGEgbWF0Y2ggdG8g dGhlIHplcm8tbGVuZ3RoIHN1YnN0cmluZyBhdCB0aGUKLQkJCSAqIGVuZCBvZiB0aGUgdGV4 dC4KKwkJCSAqIGVuZCBvZiB0aGUgdGV4dC4gIFdpdGggYSBub25kZXRlcm1pbmlzdGljIGNv bGxhdGlvbiwgd2UgY2FuJ3QKKwkJCSAqIHJlbHkgb24gdGhlIGZpcnN0IGJ5dGVzIGJlaW5n IGVxdWFsLCBzbyB3ZSBoYXZlIHRvIHJlY3Vyc2UgaW4KKwkJCSAqIGFueSBjYXNlLgogCQkJ ICovCiAJCQlpZiAoKnAgPT0gJ1xcJykKIAkJCXsKQEAgLTE3Miw3ICsxNzQsNyBAQCBNYXRj aFRleHQoY29uc3QgY2hhciAqdCwgaW50IHRsZW4sIGNvbnN0IGNoYXIgKnAsIGludCBwbGVu LCBwZ19sb2NhbGVfdCBsb2NhbGUpCiAKIAkJCXdoaWxlICh0bGVuID4gMCkKIAkJCXsKLQkJ CQlpZiAoR0VUQ0hBUigqdCwgbG9jYWxlKSA9PSBmaXJzdHBhdCkKKwkJCQlpZiAoR0VUQ0hB UigqdCwgbG9jYWxlKSA9PSBmaXJzdHBhdCB8fCAobG9jYWxlICYmICFsb2NhbGUtPmRldGVy bWluaXN0aWMpKQogCQkJCXsKIAkJCQkJaW50CQkJbWF0Y2hlZCA9IE1hdGNoVGV4dCh0LCB0 bGVuLCBwLCBwbGVuLCBsb2NhbGUpOwogCkBAIC0xOTYsNiArMTk4LDEyOCBAQCBNYXRjaFRl eHQoY29uc3QgY2hhciAqdCwgaW50IHRsZW4sIGNvbnN0IGNoYXIgKnAsIGludCBwbGVuLCBw Z19sb2NhbGVfdCBsb2NhbGUpCiAJCQlOZXh0Qnl0ZShwLCBwbGVuKTsKIAkJCWNvbnRpbnVl OwogCQl9CisJCWVsc2UgaWYgKGxvY2FsZSAmJiAhbG9jYWxlLT5kZXRlcm1pbmlzdGljKQor CQl7CisJCQkvKgorCQkJICogRm9yIG5vbmRldGVybWluaXN0aWMgbG9jYWxlcywgd2UgZmlu ZCB0aGUgbmV4dCBzdWJzdHJpbmcgb2YgdGhlCisJCQkgKiBwYXR0ZXJuIHRoYXQgZG9lcyBu b3QgY29udGFpbiB3aWxkY2FyZHMgYW5kIHRyeSB0byBmaW5kIGEKKwkJCSAqIG1hdGNoaW5n IHN1YnN0cmluZyBpbiB0aGUgdGV4dC4gIENydWNpYWxseSwgd2UgY2Fubm90IGRvIHRoaXMK KwkJCSAqIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIsIGFzIGluIHRoZSBub3JtYWwgY2FzZSwg YnV0IG11c3QgZG8gaXQKKwkJCSAqIHN1YnN0cmluZyBieSBzdWJzdHJpbmcsIHBhcnRpdGlv bmVkIGJ5IHRoZSB3aWxkY2FyZCBjaGFyYWN0ZXJzLgorCQkJICovCisJCQljb25zdCBjaGFy ICpwMTsKKwkJCXNpemVfdAkJcDFsZW47CisJCQljb25zdCBjaGFyICp0MTsKKwkJCXNpemVf dAkJdDFsZW47CisJCQlib29sCQlmb3VuZF9lc2NhcGU7CisJCQljb25zdCBjaGFyICpzdWJw YXQ7CisJCQlzaXplX3QJCXN1YnBhdGxlbjsKKwkJCWNoYXIJICAgKmJ1ZiA9IE5VTEw7CisK KwkJCS8qCisJCQkgKiBEZXRlcm1pbmUgbmV4dCBzdWJzdHJpbmcgb2YgcGF0dGVybiB3aXRo b3V0IHdpbGRjYXJkcy4gIHAgaXMKKwkJCSAqIHRoZSBzdGFydCBvZiB0aGUgc3VicGF0dGVy biwgcDEgaXMgb25lIHBhc3QgdGhlIGxhc3QgYnl0ZS4gQWxzbworCQkJICogdHJhY2sgaWYg d2UgZm91bmQgYW4gZXNjYXBlIGNoYXJhY3Rlci4KKwkJCSAqLworCQkJcDEgPSBwOworCQkJ cDFsZW4gPSBwbGVuOworCQkJZm91bmRfZXNjYXBlID0gZmFsc2U7CisJCQl3aGlsZSAocDFs ZW4gPiAwKQorCQkJeworCQkJCWlmICgqcDEgPT0gJ1xcJykKKwkJCQl7CisJCQkJCWZvdW5k X2VzY2FwZSA9IHRydWU7CisJCQkJCU5leHRCeXRlKHAxLCBwMWxlbik7CisJCQkJCWlmIChw MWxlbiA9PSAwKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX0VTQ0FQRV9TRVFVRU5DRSksCisJCQkJCQkJCSBlcnJtc2coIkxJS0Ug cGF0dGVybiBtdXN0IG5vdCBlbmQgd2l0aCBlc2NhcGUgY2hhcmFjdGVyIikpKTsKKwkJCQl9 CisJCQkJZWxzZSBpZiAoKnAxID09ICdfJyB8fCAqcDEgPT0gJyUnKQorCQkJCQlicmVhazsK KwkJCQlOZXh0Qnl0ZShwMSwgcDFsZW4pOworCQkJfQorCisJCQkvKgorCQkJICogSWYgd2Ug Zm91bmQgYW4gZXNjYXBlIGNoYXJhY3RlciwgdGhlbiBtYWtlIGFuIHVuZXNjYXBlZCBjb3B5 IG9mCisJCQkgKiB0aGUgc3VicGF0dGVybi4KKwkJCSAqLworCQkJaWYgKGZvdW5kX2VzY2Fw ZSkKKwkJCXsKKwkJCQljaGFyCSAgICpiOworCisJCQkJYiA9IGJ1ZiA9IHBhbGxvYyhwMSAt IHApOworCQkJCWZvciAoY29uc3QgY2hhciAqYyA9IHA7IGMgPCBwMTsgYysrKQorCQkJCXsK KwkJCQkJaWYgKCpjID09ICdcXCcpCisJCQkJCQk7CisJCQkJCWVsc2UKKwkJCQkJCSooYisr KSA9ICpjOworCQkJCX0KKworCQkJCXN1YnBhdCA9IGJ1ZjsKKwkJCQlzdWJwYXRsZW4gPSBi IC0gYnVmOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCXN1YnBhdCA9IHA7CisJCQkJc3Vi cGF0bGVuID0gcDEgLSBwOworCQkJfQorCisJCQkvKgorCQkJICogTm93IGJ1aWxkIGEgc3Vi c3RyaW5nIG9mIHRoZSB0ZXh0IGFuZCB0cnkgdG8gbWF0Y2ggaXQgYWdhaW5zdAorCQkJICog dGhlIHN1YnBhdHRlcm4uICB0IGlzIHRoZSBzdGFydCBvZiB0aGUgdGV4dCwgdDEgaXMgb25l IHBhc3QgdGhlCisJCQkgKiBsYXN0IGJ5dGUuICBXZSBzdGFydCB3aXRoIGEgemVyby1sZW5n dGggc3RyaW5nLgorCQkJICovCisJCQl0MSA9IHQ7CisJCQl0MWxlbiA9IHRsZW47CisJCQlm b3IgKDs7KQorCQkJeworCQkJCWludAkJCWNtcDsKKworCQkJCWNtcCA9IHBnX3N0cm5jb2xs KHN1YnBhdCwgc3VicGF0bGVuLCB0LCAodDEgLSB0KSwgbG9jYWxlKTsKKworCQkJCS8qCisJ CQkJICogSWYgd2UgZm91bmQgYSBtYXRjaCwgd2UgaGF2ZSB0byB0ZXN0IGlmIHRoZSByZXN0 IG9mIHBhdHRlcm4KKwkJCQkgKiBjYW4gbWF0Y2ggYWdhaW5zdCB0aGUgcmVzdCBvZiB0aGUg c3RyaW5nLiAgT3RoZXJ3aXNlIHdlCisJCQkJICogaGF2ZSB0byBjb250aW51ZSBoZXJlIHRy eSBtYXRjaGluZyB3aXRoIGEgbG9uZ2VyIHN1YnN0cmluZy4KKwkJCQkgKiAoVGhpcyBpcyBz aW1pbGFyIHRvIHRoZSByZWN1cnNpb24gZm9yIHRoZSAnJScgd2lsZGNhcmQKKwkJCQkgKiBh Ym92ZS4pCisJCQkJICoKKwkJCQkgKiBOb3RlIHRoYXQgd2UgY2FuJ3QganVzdCB3aW5kIGZv cndhcmQgcCBhbmQgdCBhbmQgY29udGludWUKKwkJCQkgKiB3aXRoIHRoZSBtYWluIGxvb3Au ICBUaGlzIHdvdWxkIGZhaWwgZm9yIGV4YW1wbGUgd2l0aAorCQkJCSAqCisJCQkJICogVSYn XDAwNjFcMDMwOGJjJyBMSUtFIFUmJ1wwMEU0X2MnIENPTExBVEUgaWdub3JlX2FjY2VudHMK KwkJCQkgKgorCQkJCSAqIFlvdSdkIGZpbmQgdGhhdCB0PVwwMDYxIG1hdGNoZXMgcD1cMDBF NCwgYnV0IHRoZW4gdGhlIHJlc3QKKwkJCQkgKiB3b24ndCBtYXRjaDsgYnV0IHQ9XDAwNjFc MDMwOCBhbHNvIG1hdGNoZXMgcD1cMDBFNCwgYW5kCisJCQkJICogdGhlbiB0aGUgcmVzdCB3 aWxsIG1hdGNoLgorCQkJCSAqLworCQkJCWlmIChjbXAgPT0gMCkKKwkJCQl7CisJCQkJCWlu dAkJCW1hdGNoZWQgPSBNYXRjaFRleHQodDEsIHQxbGVuLCBwMSwgcDFsZW4sIGxvY2FsZSk7 CisKKwkJCQkJaWYgKG1hdGNoZWQgPT0gTElLRV9UUlVFKQorCQkJCQl7CisJCQkJCQlpZiAo YnVmKQorCQkJCQkJCXBmcmVlKGJ1Zik7CisJCQkJCQlyZXR1cm4gbWF0Y2hlZDsKKwkJCQkJ fQorCQkJCX0KKworCQkJCS8qCisJCQkJICogRGlkbid0IG1hdGNoLiAgSWYgd2UgdXNlZCB1 cCB0aGUgd2hvbGUgdGV4dCwgdGhlbiB0aGUgbWF0Y2gKKwkJCQkgKiBmYWlscy4gIE90aGVy d2lzZSwgdHJ5IGFnYWluIHdpdGggYSBsb25nZXIgc3Vic3RyaW5nLgorCQkJCSAqLworCQkJ CWlmICh0MWxlbiA9PSAwKQorCQkJCQlyZXR1cm4gTElLRV9GQUxTRTsKKwkJCQllbHNlCisJ CQkJCU5leHRDaGFyKHQxLCB0MWxlbik7CisJCQl9CisJCQlpZiAoYnVmKQorCQkJCXBmcmVl KGJ1Zik7CisJCQljb250aW51ZTsKKwkJfQogCQllbHNlIGlmIChHRVRDSEFSKCpwLCBsb2Nh bGUpICE9IEdFVENIQVIoKnQsIGxvY2FsZSkpCiAJCXsKIAkJCS8qIG5vbi13aWxkY2FyZCBw YXR0ZXJuIGNoYXIgZmFpbHMgdG8gbWF0Y2ggdGV4dCBjaGFyICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hZHQvbGlrZV9zdXBwb3J0LmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvbGlrZV9zdXBwb3J0LmMKaW5kZXggOGIxNTUwOWEzYmYuLmVlNzFjYTg5ZmZkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbGlrZV9zdXBwb3J0LmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xpa2Vfc3VwcG9ydC5jCkBAIC0yNzIsMjIgKzI3Miw2 IEBAIG1hdGNoX3BhdHRlcm5fcHJlZml4KE5vZGUgKmxlZnRvcCwKIAkJcmV0dXJuIE5JTDsK IAlwYXR0ID0gKENvbnN0ICopIHJpZ2h0b3A7CiAKLQkvKgotCSAqIE5vdCBzdXBwb3J0ZWQg aWYgdGhlIGV4cHJlc3Npb24gY29sbGF0aW9uIGlzIG5vbmRldGVybWluaXN0aWMuICBUaGUK LQkgKiBvcHRpbWl6ZWQgZXF1YWxpdHkgb3IgcHJlZml4IHRlc3RzIHVzZSBieXRld2lzZSBj b21wYXJpc29ucywgd2hpY2ggaXMKLQkgKiBub3QgY29uc2lzdGVudCB3aXRoIG5vbmRldGVy bWluaXN0aWMgY29sbGF0aW9ucy4gIFRoZSBhY3R1YWwKLQkgKiBwYXR0ZXJuLW1hdGNoaW5n IGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucyB3aWxsIGxhdGVyIGVycm9yIG91dCB0aGF0Ci0J ICogcGF0dGVybi1tYXRjaGluZyBpcyBub3Qgc3VwcG9ydGVkIHdpdGggbm9uZGV0ZXJtaW5p c3RpYyBjb2xsYXRpb25zLiAoV2UKLQkgKiBjb3VsZCBhbHNvIGVycm9yIG91dCBoZXJlLCBi dXQgYnkgZG9pbmcgaXQgbGF0ZXIgd2UgZ2V0IG1vcmUgcHJlY2lzZQotCSAqIGVycm9yIG1l c3NhZ2VzLikgIChJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gc3VwcG9ydCBhdCBsZWFzdAot CSAqIFBhdHRlcm5fUHJlZml4X0V4YWN0LCBidXQgbm8gcG9pbnQgYXMgbG9uZyBhcyB0aGUg YWN0dWFsCi0JICogcGF0dGVybi1tYXRjaGluZyBpbXBsZW1lbnRhdGlvbnMgZG9uJ3Qgc3Vw cG9ydCBpdC4pCi0JICoKLQkgKiBleHByX2NvbGwgaXMgbm90IHNldCBmb3IgYSBub24tY29s bGF0aW9uLWF3YXJlIGRhdGEgdHlwZSBzdWNoIGFzIGJ5dGVhLgotCSAqLwotCWlmIChleHBy X2NvbGwgJiYgIWdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlzdGljKGV4cHJfY29sbCkpCi0J CXJldHVybiBOSUw7Ci0KIAkvKgogCSAqIFRyeSB0byBleHRyYWN0IGEgZml4ZWQgcHJlZml4 IGZyb20gdGhlIHBhdHRlcm4uCiAJICovCkBAIC00MDQsNiArMzg4LDggQEAgbWF0Y2hfcGF0 dGVybl9wcmVmaXgoTm9kZSAqbGVmdG9wLAogCXsKIAkJaWYgKCFvcF9pbl9vcGZhbWlseShl cW9wciwgb3BmYW1pbHkpKQogCQkJcmV0dXJuIE5JTDsKKwkJaWYgKGluZGV4Y29sbGF0aW9u ICE9IGV4cHJfY29sbCkKKwkJCXJldHVybiBOSUw7CiAJCWV4cHIgPSBtYWtlX29wY2xhdXNl KGVxb3ByLCBCT09MT0lELCBmYWxzZSwKIAkJCQkJCQkgKEV4cHIgKikgbGVmdG9wLCAoRXhw ciAqKSBwcmVmaXgsCiAJCQkJCQkJIEludmFsaWRPaWQsIGluZGV4Y29sbGF0aW9uKTsKQEAg LTQxMSw2ICszOTcsMTcgQEAgbWF0Y2hfcGF0dGVybl9wcmVmaXgoTm9kZSAqbGVmdG9wLAog CQlyZXR1cm4gcmVzdWx0OwogCX0KIAorCS8qCisJICogQW55dGhpbmcgb3RoZXIgdGhhbiBQ YXR0ZXJuX1ByZWZpeF9FeGFjdCBpcyBub3Qgc3VwcG9ydGVkIGlmIHRoZQorCSAqIGV4cHJl c3Npb24gY29sbGF0aW9uIGlzIG5vbmRldGVybWluaXN0aWMuICBUaGUgb3B0aW1pemVkIGVx dWFsaXR5IG9yCisJICogcHJlZml4IHRlc3RzIHVzZSBieXRld2lzZSBjb21wYXJpc29ucywg d2hpY2ggaXMgbm90IGNvbnNpc3RlbnQgd2l0aAorCSAqIG5vbmRldGVybWluaXN0aWMgY29s bGF0aW9ucy4KKwkgKgorCSAqIGV4cHJfY29sbCBpcyBub3Qgc2V0IGZvciBhIG5vbi1jb2xs YXRpb24tYXdhcmUgZGF0YSB0eXBlIHN1Y2ggYXMgYnl0ZWEuCisJICovCisJaWYgKGV4cHJf Y29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2RldGVybWluaXN0aWMoZXhwcl9jb2xsKSkKKwkJ cmV0dXJuIE5JTDsKKwogCS8qCiAJICogT3RoZXJ3aXNlLCB3ZSBoYXZlIGEgbm9uZW1wdHkg cmVxdWlyZWQgcHJlZml4IG9mIHRoZSB2YWx1ZXMuICBTb21lCiAJICogb3BjbGFzc2VzIHN1 cHBvcnQgcHJlZml4IGNoZWNrcyBkaXJlY3RseSwgb3RoZXJ3aXNlIHdlJ2xsIHRyeSB0bwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmljdS51dGY4 Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQK aW5kZXggZmFhMzc2ZTA2MGMuLjdkYTY4MTA1YjhjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKQEAgLTEyNzQsNiArMTI3NCwz MCBAQCBDUkVBVEUgQ09MTEFUSU9OIGN0ZXN0X2RldCAocHJvdmlkZXIgPSBpY3UsIGxvY2Fs ZSA9ICcnLCBkZXRlcm1pbmlzdGljID0gdHJ1ZSk7CiBOT1RJQ0U6ICB1c2luZyBzdGFuZGFy ZCBmb3JtICJ1bmQiIGZvciBJQ1UgbG9jYWxlICIiCiBDUkVBVEUgQ09MTEFUSU9OIGN0ZXN0 X25vbmRldCAocHJvdmlkZXIgPSBpY3UsIGxvY2FsZSA9ICcnLCBkZXRlcm1pbmlzdGljID0g ZmFsc2UpOwogTk9USUNFOiAgdXNpbmcgc3RhbmRhcmQgZm9ybSAidW5kIiBmb3IgSUNVIGxv Y2FsZSAiIgorU0VMRUNUICdhYmMnIExJS0UgJ2FiYycgQ09MTEFURSBjdGVzdF9kZXQ7Cisg P2NvbHVtbj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgJ2FiYycgTElL RSAnYVxiYycgQ09MTEFURSBjdGVzdF9kZXQ7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisg dAorKDEgcm93KQorCitTRUxFQ1QgJ2FiYycgTElLRSAnYWJjJyBDT0xMQVRFIGN0ZXN0X25v bmRldDsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCAn YWJjJyBMSUtFICdhXGJjJyBDT0xMQVRFIGN0ZXN0X25vbmRldDsKKyA/Y29sdW1uPyAKKy0t LS0tLS0tLS0KKyB0CisoMSByb3cpCisKIENSRUFURSBUQUJMRSB0ZXN0NiAoYSBpbnQsIGIg dGV4dCk7CiAtLSBzYW1lIHN0cmluZyBpbiBkaWZmZXJlbnQgbm9ybWFsIGZvcm1zCiBJTlNF UlQgSU5UTyB0ZXN0NiBWQUxVRVMgKDEsIFUmJ1wwMEU0YmMnKTsKQEAgLTEyOTgsNiArMTMy MiwxOSBAQCBTRUxFQ1QgKiBGUk9NIHRlc3Q2IFdIRVJFIGIgPSAnw6RiYycgQ09MTEFURSBj dGVzdF9ub25kZXQ7CiAgMiB8IGHMiGJjCiAoMiByb3dzKQogCitTRUxFQ1QgKiBGUk9NIHRl c3Q2IFdIRVJFIGIgTElLRSAnw6RiYycgQ09MTEFURSBjdGVzdF9kZXQ7CisgYSB8ICBiICAK Ky0tLSstLS0tLQorIDEgfCDDpGJjCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gdGVzdDYg V0hFUkUgYiBMSUtFICfDpGJjJyBDT0xMQVRFIGN0ZXN0X25vbmRldDsKKyBhIHwgIGIgIAor LS0tKy0tLS0tCisgMSB8IMOkYmMKKyAyIHwgYcyIYmMKKygyIHJvd3MpCisKIC0tIHNhbWUg d2l0aCBhcnJheXMKIENSRUFURSBUQUJMRSB0ZXN0NmEgKGEgaW50LCBiIHRleHRbXSk7CiBJ TlNFUlQgSU5UTyB0ZXN0NmEgVkFMVUVTICgxLCBBUlJBWVtVJidcMDBFNGJjJ10pOwpAQCAt MTUxNCw3ICsxNTUxLDEyIEBAIFNFTEVDVCB4IEZST00gdGVzdDNjaSBXSEVSRSB4IDw+ICdh YmMnOwogKDIgcm93cykKIAogU0VMRUNUIHggRlJPTSB0ZXN0M2NpIFdIRVJFIHggTElLRSAn YSUnOwotRVJST1I6ICBub25kZXRlcm1pbmlzdGljIGNvbGxhdGlvbnMgYXJlIG5vdCBzdXBw b3J0ZWQgZm9yIExJS0UKKyAgeCAgCistLS0tLQorIGFiYworIEFCQworKDIgcm93cykKKwog U0VMRUNUIHggRlJPTSB0ZXN0M2NpIFdIRVJFIHggSUxJS0UgJ2ElJzsKIEVSUk9SOiAgbm9u ZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGZvciBJTElLRQog U0VMRUNUIHggRlJPTSB0ZXN0M2NpIFdIRVJFIHggU0lNSUxBUiBUTyAnYSUnOwpAQCAtMTYz Miw3ICsxNjc0LDEyIEBAIFNFTEVDVCB4IEZST00gdGVzdDNicGNpIFdIRVJFIHggPD4gJ2Fi Yyc7CiAoMiByb3dzKQogCiBTRUxFQ1QgeCBGUk9NIHRlc3QzYnBjaSBXSEVSRSB4IExJS0Ug J2ElJzsKLUVSUk9SOiAgbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25zIGFyZSBub3Qgc3Vw cG9ydGVkIGZvciBMSUtFCisgIHggIAorLS0tLS0KKyBhYmMKKyBBQkMKKygyIHJvd3MpCisK IFNFTEVDVCB4IEZST00gdGVzdDNicGNpIFdIRVJFIHggSUxJS0UgJ2ElJzsKIEVSUk9SOiAg bm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGZvciBJTElL RQogU0VMRUNUIHggRlJPTSB0ZXN0M2JwY2kgV0hFUkUgeCBTSU1JTEFSIFRPICdhJSc7CkBA IC0xNzI5LDcgKzE3NzYsNyBAQCBTRUxFQ1Qgc3RyaW5nX3RvX2FycmF5KCdBQkNERUZHSEkn OjpjaGFyKDkpIENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZSwgTlVMTCwgJ2InKQogLS0gVGhp cyB0ZXN0cyB0aGUgaXNzdWUgZGVzY3JpYmVkIGluIG1hdGNoX3BhdHRlcm5fcHJlZml4KCku ICBJbiB0aGUKIC0tIGFic2VuY2Ugb2YgdGhhdCBjaGVjaywgdGhlIGNhc2VfaW5zZW5zaXRp dmUgdGVzdHMgYmVsb3cgd291bGQKIC0tIHJldHVybiBubyByb3dzIHdoZXJlIHRoZXkgc2hv dWxkIGxvZ2ljYWxseSByZXR1cm4gb25lLgotQ1JFQVRFIFRBQkxFIHRlc3Q0YyAoeCB0ZXh0 IENPTExBVEUgIkMiKTsKK0NSRUFURSBUQUJMRSB0ZXN0NGMgKHggdGV4dCBDT0xMQVRFIGNh c2VfaW5zZW5zaXRpdmUpOwogSU5TRVJUIElOVE8gdGVzdDRjIFZBTFVFUyAoJ2FiYycpOwog Q1JFQVRFIElOREVYIE9OIHRlc3Q0YyAoeCk7CiBTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7 CkBAIC0xNzQzLDEwICsxNzkwLDE4IEBAIFNFTEVDVCB4IEZST00gdGVzdDRjIFdIRVJFIHgg TElLRSAnQUJDJScgQ09MTEFURSBjYXNlX3NlbnNpdGl2ZTsgIC0tIG9rLCBubyByb3dzCiAt LS0KICgwIHJvd3MpCiAKLVNFTEVDVCB4IEZST00gdGVzdDRjIFdIRVJFIHggTElLRSAnQUJD JyBDT0xMQVRFIGNhc2VfaW5zZW5zaXRpdmU7ICAtLSBlcnJvcgotRVJST1I6ICBub25kZXRl cm1pbmlzdGljIGNvbGxhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIExJS0UKLVNFTEVD VCB4IEZST00gdGVzdDRjIFdIRVJFIHggTElLRSAnQUJDJScgQ09MTEFURSBjYXNlX2luc2Vu c2l0aXZlOyAgLS0gZXJyb3IKLUVSUk9SOiAgbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25z IGFyZSBub3Qgc3VwcG9ydGVkIGZvciBMSUtFCitTRUxFQ1QgeCBGUk9NIHRlc3Q0YyBXSEVS RSB4IExJS0UgJ0FCQycgQ09MTEFURSBjYXNlX2luc2Vuc2l0aXZlOyAgLS0gb2sKKyAgeCAg CistLS0tLQorIGFiYworKDEgcm93KQorCitTRUxFQ1QgeCBGUk9NIHRlc3Q0YyBXSEVSRSB4 IExJS0UgJ0FCQyUnIENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZTsgIC0tIG9rCisgIHggIAor LS0tLS0KKyBhYmMKKygxIHJvdykKKwogUkVTRVQgZW5hYmxlX3NlcXNjYW47CiAtLSBVbmlj b2RlIHNwZWNpYWwgY2FzZTogZGlmZmVyZW50IHZhcmlhbnRzIG9mIEdyZWVrIGxvd2VyIGNh c2Ugc2lnbWEuCiAtLSBBIG5haXZlIGltcGxlbWVudGF0aW9uIGxpa2UgY2l0ZXh0IHRoYXQg anVzdCBkb2VzIGxvd2VyKHgpID0KQEAgLTE4NDAsNiArMTg5NSwxMjYgQEAgU0VMRUNUICog RlJPTSB0ZXN0NCBXSEVSRSBiID0gJ0NvdGUnIENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZTsK ICAxIHwgY290ZQogKDEgcm93KQogCistLSBUaGlzIGlzIGEgdHJpY2t5IG9uZS4gIEEgbmFp dmUgaW1wbGVtZW50YXRpb24gd291bGQgZmlyc3QgdGVzdAorLS0gXDAwRTQgbWF0Y2hlcyBc MDA2MSwgd2hpY2ggaXMgdHJ1ZSB1bmRlciBpZ25vcmVfYWNjZW50cywgYnV0IHRoZW4KKy0t IHRoZSByZXN0IG9mIHRoZSBzdHJpbmcgd29uJ3QgbWF0Y2ggYW55bW9yZS4gIFRoZXJlZm9y ZSwgdGhlCistLSBhbGdvcml0aG0gaGFzIHRvIHRlc3Qgd2hldGhlciB0aGUgcmVzdCBvZiB0 aGUgc3RyaW5nIG1hdGNoZXMsIGFuZAorLS0gaWYgbm90IHRyeSBtYXRjaGluZyBcMDBFNCBh Z2FpbnN0IGEgbG9uZ2VyIHN1YnN0cmluZyBsaWtlCistLSBcMDA2MVwwMzA4LCB3aGljaCB3 aWxsIHRoZW4gd29yayBvdXQuCitTRUxFQ1QgVSYnXDAwNjFcMDMwOGJjJyBMSUtFIFUmJ1ww MEU0X2MnIENPTExBVEUgaWdub3JlX2FjY2VudHM7CisgP2NvbHVtbj8gCistLS0tLS0tLS0t CisgdAorKDEgcm93KQorCistLSBhbmQgaW4gcmV2ZXJzZToKK1NFTEVDVCBVJidcMDBFNGJj JyBMSUtFIFUmJ1wwMDYxXDAzMDhfYycgQ09MTEFURSBpZ25vcmVfYWNjZW50czsKKyA/Y29s dW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIGlubmVyICUgbWF0Y2hlcyBi OgorU0VMRUNUIFUmJ1wwMDYxXDAzMDhiYycgTElLRSBVJidcMDBFNCVjJyBDT0xMQVRFIGln bm9yZV9hY2NlbnRzOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKwor LS0gaW5uZXIgJSUgbWF0Y2hlcyBiIHRoZW4gemVybzoKK1NFTEVDVCBVJidcMDA2MVwwMzA4 YmMnIExJS0UgVSYnXDAwRTQlJWMnIENPTExBVEUgaWdub3JlX2FjY2VudHM7CisgP2NvbHVt bj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBpbm5lciAlJSBtYXRjaGVzIGIg dGhlbiB6ZXJvOgorU0VMRUNUIFUmJ2NiXDAwNjFcMDMwOCcgTElLRSBVJidjJSVcMDBFNCcg Q09MTEFURSBpZ25vcmVfYWNjZW50czsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0Ciso MSByb3cpCisKKy0tIHRyYWlsaW5nIF8gbWF0Y2hlcyB0d28gY29kZXBvaW50cyB0aGF0IGZv cm0gb25lIGdyYXBoZW1lOgorU0VMRUNUIFUmJ2NiXDAwNjFcMDMwOCcgTElLRSBVJidjYl8n IENPTExBVEUgaWdub3JlX2FjY2VudHM7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZgor KDEgcm93KQorCistLSB0cmFpbGluZyBfXyBtYXRjaGVzIHR3byBjb2RlcG9pbnRzIHRoYXQg Zm9ybSBvbmUgZ3JhcGhlbWU6CitTRUxFQ1QgVSYnY2JcMDA2MVwwMzA4JyBMSUtFIFUmJ2Ni X18nIENPTExBVEUgaWdub3JlX2FjY2VudHM7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisg dAorKDEgcm93KQorCistLSBsZWFkaW5nICUgbWF0Y2hlcyB6ZXJvOgorU0VMRUNUIFUmJ1ww MDYxXDAzMDhiYycgTElLRSBVJiclXDAwRTRiYycgQ09MTEFURSBpZ25vcmVfYWNjZW50czsK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIGxlYWRpbmcgJSBt YXRjaGVzIHplcm8gKHdpdGggbGF0ZXIgJSk6CitTRUxFQ1QgVSYnXDAwNjFcMDMwOGJjJyBM SUtFIFUmJyVcMDBFNCVjJyBDT0xMQVRFIGlnbm9yZV9hY2NlbnRzOworID9jb2x1bW4/IAor LS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gdHJhaWxpbmcgJSBtYXRjaGVzIHplcm86 CitTRUxFQ1QgVSYnXDAwNjFcMDMwOGJjJyBMSUtFIFUmJ1wwMEU0YmMlJyBDT0xMQVRFIGln bm9yZV9hY2NlbnRzOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKwor LS0gdHJhaWxpbmcgJSBtYXRjaGVzIHplcm8gKHdpdGggcHJldmlvdXMgJSk6CitTRUxFQ1Qg VSYnXDAwNjFcMDMwOGJjJyBMSUtFIFUmJ1wwMEU0JWMlJyBDT0xMQVRFIGlnbm9yZV9hY2Nl bnRzOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gXyB2ZXJz dXMgdHdvIGNvZGVwb2ludHMgdGhhdCBmb3JtIG9uZSBncmFwaGVtZToKK1NFTEVDVCBVJidc MDA2MVwwMzA4YmMnIExJS0UgVSYnX2JjJyBDT0xMQVRFIGlnbm9yZV9hY2NlbnRzOworID9j b2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gKGFjdHVhbGx5IHRoaXMg bWF0Y2hlcyBiZWNhdXNlKQorU0VMRUNUIFUmJ1wwMzA4YmMnID0gJ2JjJyBDT0xMQVRFIGln bm9yZV9hY2NlbnRzOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKwor LS0gX18gbWF0Y2hlcyB0d28gY29kZXBvaW50cyB0aGF0IGZvcm0gb25lIGdyYXBoZW1lOgor U0VMRUNUIFUmJ1wwMDYxXDAzMDhiYycgTElLRSBVJidfX2JjJyBDT0xMQVRFIGlnbm9yZV9h Y2NlbnRzOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gXyBt YXRjaGVzIG9uZSBjb2RlcG9pbnQgdGhhdCBmb3JtcyBoYWxmIGEgZ3JhcGhlbWU6CitTRUxF Q1QgVSYnXDAwNjFcMDMwOGJjJyBMSUtFIFUmJ19cMDMwOGJjJyBDT0xMQVRFIGlnbm9yZV9h Y2NlbnRzOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gZG9l c24ndCBtYXRjaCBiZWNhdXNlIFwwMGU0IGRvZXNuJ3QgbWF0Y2ggb25seSBcMDMwOAorU0VM RUNUIFUmJ1wwMDYxXDAzMDhiYycgTElLRSBVJidfXDAwZTRiYycgQ09MTEFURSBpZ25vcmVf YWNjZW50czsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKKy0tIGVz Y2FwZSBjaGFyYWN0ZXIgYXQgZW5kIG9mIHBhdHRlcm4KK1NFTEVDVCAnZm9veCcgTElLRSAn Zm9vXCcgQ09MTEFURSBpZ25vcmVfYWNjZW50czsKK0VSUk9SOiAgTElLRSBwYXR0ZXJuIG11 c3Qgbm90IGVuZCB3aXRoIGVzY2FwZSBjaGFyYWN0ZXIKIC0tIGZvcmVpZ24ga2V5cyAoc2hv dWxkIHVzZSBjb2xsYXRpb24gb2YgcHJpbWFyeSBrZXkpCiAtLSBQSyBpcyBjYXNlLXNlbnNp dGl2ZSwgRksgaXMgY2FzZS1pbnNlbnNpdGl2ZQogQ1JFQVRFIFRBQkxFIHRlc3QxMHBrICh4 IHRleHQgQ09MTEFURSBjYXNlX3NlbnNpdGl2ZSBQUklNQVJZIEtFWSk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb2xsYXRlLmljdS51dGY4LnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2NvbGxhdGUuaWN1LnV0Zjguc3FsCmluZGV4IDgwZjI4YTk3ZDc4Li5m OGRiYWZiYjY1NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5p Y3UudXRmOC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29sbGF0ZS5pY3UudXRm OC5zcWwKQEAgLTUxNCw2ICs1MTQsMTIgQEAgQ1JFQVRFIENPTExBVElPTiB0ZXN0Y29sbF9y dWxlc3ggKHByb3ZpZGVyID0gaWN1LCBsb2NhbGUgPSAnJywgcnVsZXMgPSAnISF3cm9uZyEK IENSRUFURSBDT0xMQVRJT04gY3Rlc3RfZGV0IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0g JycsIGRldGVybWluaXN0aWMgPSB0cnVlKTsKIENSRUFURSBDT0xMQVRJT04gY3Rlc3Rfbm9u ZGV0IChwcm92aWRlciA9IGljdSwgbG9jYWxlID0gJycsIGRldGVybWluaXN0aWMgPSBmYWxz ZSk7CiAKK1NFTEVDVCAnYWJjJyBMSUtFICdhYmMnIENPTExBVEUgY3Rlc3RfZGV0OworU0VM RUNUICdhYmMnIExJS0UgJ2FcYmMnIENPTExBVEUgY3Rlc3RfZGV0OworCitTRUxFQ1QgJ2Fi YycgTElLRSAnYWJjJyBDT0xMQVRFIGN0ZXN0X25vbmRldDsKK1NFTEVDVCAnYWJjJyBMSUtF ICdhXGJjJyBDT0xMQVRFIGN0ZXN0X25vbmRldDsKKwogQ1JFQVRFIFRBQkxFIHRlc3Q2IChh IGludCwgYiB0ZXh0KTsKIC0tIHNhbWUgc3RyaW5nIGluIGRpZmZlcmVudCBub3JtYWwgZm9y bXMKIElOU0VSVCBJTlRPIHRlc3Q2IFZBTFVFUyAoMSwgVSYnXDAwRTRiYycpOwpAQCAtNTIy LDYgKzUyOCw5IEBAIENSRUFURSBUQUJMRSB0ZXN0NiAoYSBpbnQsIGIgdGV4dCk7CiBTRUxF Q1QgKiBGUk9NIHRlc3Q2IFdIRVJFIGIgPSAnw6RiYycgQ09MTEFURSBjdGVzdF9kZXQ7CiBT RUxFQ1QgKiBGUk9NIHRlc3Q2IFdIRVJFIGIgPSAnw6RiYycgQ09MTEFURSBjdGVzdF9ub25k ZXQ7CiAKK1NFTEVDVCAqIEZST00gdGVzdDYgV0hFUkUgYiBMSUtFICfDpGJjJyBDT0xMQVRF IGN0ZXN0X2RldDsKK1NFTEVDVCAqIEZST00gdGVzdDYgV0hFUkUgYiBMSUtFICfDpGJjJyBD T0xMQVRFIGN0ZXN0X25vbmRldDsKKwogLS0gc2FtZSB3aXRoIGFycmF5cwogQ1JFQVRFIFRB QkxFIHRlc3Q2YSAoYSBpbnQsIGIgdGV4dFtdKTsKIElOU0VSVCBJTlRPIHRlc3Q2YSBWQUxV RVMgKDEsIEFSUkFZW1UmJ1wwMEU0YmMnXSk7CkBAIC02MzcsMTQgKzY0NiwxNCBAQCBDUkVB VEUgVU5JUVVFIElOREVYIE9OIHRlc3QzYnBjaSAoeCk7ICAtLSBlcnJvcgogLS0gVGhpcyB0 ZXN0cyB0aGUgaXNzdWUgZGVzY3JpYmVkIGluIG1hdGNoX3BhdHRlcm5fcHJlZml4KCkuICBJ biB0aGUKIC0tIGFic2VuY2Ugb2YgdGhhdCBjaGVjaywgdGhlIGNhc2VfaW5zZW5zaXRpdmUg dGVzdHMgYmVsb3cgd291bGQKIC0tIHJldHVybiBubyByb3dzIHdoZXJlIHRoZXkgc2hvdWxk IGxvZ2ljYWxseSByZXR1cm4gb25lLgotQ1JFQVRFIFRBQkxFIHRlc3Q0YyAoeCB0ZXh0IENP TExBVEUgIkMiKTsKK0NSRUFURSBUQUJMRSB0ZXN0NGMgKHggdGV4dCBDT0xMQVRFIGNhc2Vf aW5zZW5zaXRpdmUpOwogSU5TRVJUIElOVE8gdGVzdDRjIFZBTFVFUyAoJ2FiYycpOwogQ1JF QVRFIElOREVYIE9OIHRlc3Q0YyAoeCk7CiBTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CiBT RUxFQ1QgeCBGUk9NIHRlc3Q0YyBXSEVSRSB4IExJS0UgJ0FCQycgQ09MTEFURSBjYXNlX3Nl bnNpdGl2ZTsgIC0tIG9rLCBubyByb3dzCiBTRUxFQ1QgeCBGUk9NIHRlc3Q0YyBXSEVSRSB4 IExJS0UgJ0FCQyUnIENPTExBVEUgY2FzZV9zZW5zaXRpdmU7ICAtLSBvaywgbm8gcm93cwot U0VMRUNUIHggRlJPTSB0ZXN0NGMgV0hFUkUgeCBMSUtFICdBQkMnIENPTExBVEUgY2FzZV9p bnNlbnNpdGl2ZTsgIC0tIGVycm9yCi1TRUxFQ1QgeCBGUk9NIHRlc3Q0YyBXSEVSRSB4IExJ S0UgJ0FCQyUnIENPTExBVEUgY2FzZV9pbnNlbnNpdGl2ZTsgIC0tIGVycm9yCitTRUxFQ1Qg eCBGUk9NIHRlc3Q0YyBXSEVSRSB4IExJS0UgJ0FCQycgQ09MTEFURSBjYXNlX2luc2Vuc2l0 aXZlOyAgLS0gb2sKK1NFTEVDVCB4IEZST00gdGVzdDRjIFdIRVJFIHggTElLRSAnQUJDJScg Q09MTEFURSBjYXNlX2luc2Vuc2l0aXZlOyAgLS0gb2sKIFJFU0VUIGVuYWJsZV9zZXFzY2Fu OwogCiAtLSBVbmljb2RlIHNwZWNpYWwgY2FzZTogZGlmZmVyZW50IHZhcmlhbnRzIG9mIEdy ZWVrIGxvd2VyIGNhc2Ugc2lnbWEuCkBAIC02ODcsNiArNjk2LDQ2IEBAIENSRUFURSBUQUJM RSB0ZXN0NCAoYSBpbnQsIGIgdGV4dCk7CiBTRUxFQ1QgKiBGUk9NIHRlc3Q0IFdIRVJFIGIg PSAnQ290ZScgQ09MTEFURSBpZ25vcmVfYWNjZW50czsgIC0tIHN0aWxsIGNhc2Utc2Vuc2l0 aXZlCiBTRUxFQ1QgKiBGUk9NIHRlc3Q0IFdIRVJFIGIgPSAnQ290ZScgQ09MTEFURSBjYXNl X2luc2Vuc2l0aXZlOwogCistLSBUaGlzIGlzIGEgdHJpY2t5IG9uZS4gIEEgbmFpdmUgaW1w bGVtZW50YXRpb24gd291bGQgZmlyc3QgdGVzdAorLS0gXDAwRTQgbWF0Y2hlcyBcMDA2MSwg d2hpY2ggaXMgdHJ1ZSB1bmRlciBpZ25vcmVfYWNjZW50cywgYnV0IHRoZW4KKy0tIHRoZSBy ZXN0IG9mIHRoZSBzdHJpbmcgd29uJ3QgbWF0Y2ggYW55bW9yZS4gIFRoZXJlZm9yZSwgdGhl CistLSBhbGdvcml0aG0gaGFzIHRvIHRlc3Qgd2hldGhlciB0aGUgcmVzdCBvZiB0aGUgc3Ry aW5nIG1hdGNoZXMsIGFuZAorLS0gaWYgbm90IHRyeSBtYXRjaGluZyBcMDBFNCBhZ2FpbnN0 IGEgbG9uZ2VyIHN1YnN0cmluZyBsaWtlCistLSBcMDA2MVwwMzA4LCB3aGljaCB3aWxsIHRo ZW4gd29yayBvdXQuCitTRUxFQ1QgVSYnXDAwNjFcMDMwOGJjJyBMSUtFIFUmJ1wwMEU0X2Mn IENPTExBVEUgaWdub3JlX2FjY2VudHM7CistLSBhbmQgaW4gcmV2ZXJzZToKK1NFTEVDVCBV JidcMDBFNGJjJyBMSUtFIFUmJ1wwMDYxXDAzMDhfYycgQ09MTEFURSBpZ25vcmVfYWNjZW50 czsKKy0tIGlubmVyICUgbWF0Y2hlcyBiOgorU0VMRUNUIFUmJ1wwMDYxXDAzMDhiYycgTElL RSBVJidcMDBFNCVjJyBDT0xMQVRFIGlnbm9yZV9hY2NlbnRzOworLS0gaW5uZXIgJSUgbWF0 Y2hlcyBiIHRoZW4gemVybzoKK1NFTEVDVCBVJidcMDA2MVwwMzA4YmMnIExJS0UgVSYnXDAw RTQlJWMnIENPTExBVEUgaWdub3JlX2FjY2VudHM7CistLSBpbm5lciAlJSBtYXRjaGVzIGIg dGhlbiB6ZXJvOgorU0VMRUNUIFUmJ2NiXDAwNjFcMDMwOCcgTElLRSBVJidjJSVcMDBFNCcg Q09MTEFURSBpZ25vcmVfYWNjZW50czsKKy0tIHRyYWlsaW5nIF8gbWF0Y2hlcyB0d28gY29k ZXBvaW50cyB0aGF0IGZvcm0gb25lIGdyYXBoZW1lOgorU0VMRUNUIFUmJ2NiXDAwNjFcMDMw OCcgTElLRSBVJidjYl8nIENPTExBVEUgaWdub3JlX2FjY2VudHM7CistLSB0cmFpbGluZyBf XyBtYXRjaGVzIHR3byBjb2RlcG9pbnRzIHRoYXQgZm9ybSBvbmUgZ3JhcGhlbWU6CitTRUxF Q1QgVSYnY2JcMDA2MVwwMzA4JyBMSUtFIFUmJ2NiX18nIENPTExBVEUgaWdub3JlX2FjY2Vu dHM7CistLSBsZWFkaW5nICUgbWF0Y2hlcyB6ZXJvOgorU0VMRUNUIFUmJ1wwMDYxXDAzMDhi YycgTElLRSBVJiclXDAwRTRiYycgQ09MTEFURSBpZ25vcmVfYWNjZW50czsKKy0tIGxlYWRp bmcgJSBtYXRjaGVzIHplcm8gKHdpdGggbGF0ZXIgJSk6CitTRUxFQ1QgVSYnXDAwNjFcMDMw OGJjJyBMSUtFIFUmJyVcMDBFNCVjJyBDT0xMQVRFIGlnbm9yZV9hY2NlbnRzOworLS0gdHJh aWxpbmcgJSBtYXRjaGVzIHplcm86CitTRUxFQ1QgVSYnXDAwNjFcMDMwOGJjJyBMSUtFIFUm J1wwMEU0YmMlJyBDT0xMQVRFIGlnbm9yZV9hY2NlbnRzOworLS0gdHJhaWxpbmcgJSBtYXRj aGVzIHplcm8gKHdpdGggcHJldmlvdXMgJSk6CitTRUxFQ1QgVSYnXDAwNjFcMDMwOGJjJyBM SUtFIFUmJ1wwMEU0JWMlJyBDT0xMQVRFIGlnbm9yZV9hY2NlbnRzOworLS0gXyB2ZXJzdXMg dHdvIGNvZGVwb2ludHMgdGhhdCBmb3JtIG9uZSBncmFwaGVtZToKK1NFTEVDVCBVJidcMDA2 MVwwMzA4YmMnIExJS0UgVSYnX2JjJyBDT0xMQVRFIGlnbm9yZV9hY2NlbnRzOworLS0gKGFj dHVhbGx5IHRoaXMgbWF0Y2hlcyBiZWNhdXNlKQorU0VMRUNUIFUmJ1wwMzA4YmMnID0gJ2Jj JyBDT0xMQVRFIGlnbm9yZV9hY2NlbnRzOworLS0gX18gbWF0Y2hlcyB0d28gY29kZXBvaW50 cyB0aGF0IGZvcm0gb25lIGdyYXBoZW1lOgorU0VMRUNUIFUmJ1wwMDYxXDAzMDhiYycgTElL RSBVJidfX2JjJyBDT0xMQVRFIGlnbm9yZV9hY2NlbnRzOworLS0gXyBtYXRjaGVzIG9uZSBj b2RlcG9pbnQgdGhhdCBmb3JtcyBoYWxmIGEgZ3JhcGhlbWU6CitTRUxFQ1QgVSYnXDAwNjFc MDMwOGJjJyBMSUtFIFUmJ19cMDMwOGJjJyBDT0xMQVRFIGlnbm9yZV9hY2NlbnRzOworLS0g ZG9lc24ndCBtYXRjaCBiZWNhdXNlIFwwMGU0IGRvZXNuJ3QgbWF0Y2ggb25seSBcMDMwOAor U0VMRUNUIFUmJ1wwMDYxXDAzMDhiYycgTElLRSBVJidfXDAwZTRiYycgQ09MTEFURSBpZ25v cmVfYWNjZW50czsKKy0tIGVzY2FwZSBjaGFyYWN0ZXIgYXQgZW5kIG9mIHBhdHRlcm4KK1NF TEVDVCAnZm9veCcgTElLRSAnZm9vXCcgQ09MTEFURSBpZ25vcmVfYWNjZW50czsKKwogLS0g Zm9yZWlnbiBrZXlzIChzaG91bGQgdXNlIGNvbGxhdGlvbiBvZiBwcmltYXJ5IGtleSkKIAog LS0gUEsgaXMgY2FzZS1zZW5zaXRpdmUsIEZLIGlzIGNhc2UtaW5zZW5zaXRpdmUKCmJhc2Ut Y29tbWl0OiA1YjBjNDZlYTA5MzJlM2JlNjQwODFhMjc3YjVjYzAxZmE5NTcxNjg5Ci0tIAoy LjQ3LjAKCg== --------------zH2x90yXvHOLSJ0494NJJQwX--