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 1mNZ2h-0005c0-QX for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Sep 2021 11:13:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mNZ2e-00079U-JV for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Sep 2021 11:13:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mNZ2c-00079L-Qv for pgsql-hackers@lists.postgresql.org; Tue, 07 Sep 2021 11:13:27 +0000 Received: from wout5-smtp.messagingengine.com ([64.147.123.21]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mNZ2T-0003XH-3C for pgsql-hackers@postgresql.org; Tue, 07 Sep 2021 11:13:25 +0000 Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.west.internal (Postfix) with ESMTP id 17BF3320085B; Tue, 7 Sep 2021 07:13:14 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Tue, 07 Sep 2021 07:13:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=XuswCw Z8ooHbv3sPIUDjQ4gfxPIcX01HT5BlqWgWbVI=; b=U2yncRe1q7NzaDnWsZ+IFx Ru9+zK/lR/6KLEALWzJhJ9QXh9SxUzDCD0wfH4t6Cy+DUsugKgaBom2YXcM2RQYb K+V3ewLOUYHFjVDLGP1Iin/NfeL/J3tbdF3Rqjeovlpav8jVpyneQWIgYiU/OgFH Zu4YsQKftTwwmkV0zLT7ON9lj6YiZaAy9ErloEXFfsmDjCdogCw20EA7ZOkEk364 u+vHJtBD4KBz2EWiHzLWA2liCiTXrKWvS1bqtYFC2vMSP00mrNmne3HHbmPuceCg TyDQI89A/0UKJ5JUYG99mR3huQn1SHvpNKxsJOANHxeiOj+rL9h3GAH1LnmFgVFg == X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvtddrudefhedgfeekucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepuffvfhfhkffffgggjggtsehmtderredtfeejnecuhfhrohhmpefrvghtvghr ucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvghnthgvrh hprhhishgvuggsrdgtohhmqeenucggtffrrghtthgvrhhnpeffvdfhiedvhedutdeihfdt keevfffhkeejudehieeuveegkefggfeiteefhfdtudenucevlhhushhtvghrufhiiigvpe dtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvghtvghrrdgvihhsvghnthhrrghuthes vghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 7 Sep 2021 07:13:12 -0400 (EDT) Subject: Re: Non-decimal integer literals To: John Naylor Cc: pgsql-hackers References: From: Peter Eisentraut Message-ID: <1e3118df-bd41-0f36-7e02-14ff31392a84@enterprisedb.com> Date: Tue, 7 Sep 2021 13:13:10 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------AB8012F4DB761BDD295139DF" Content-Language: en-US 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. --------------AB8012F4DB761BDD295139DF Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit On 16.08.21 17:32, John Naylor wrote: > The one thing that jumped out at me on a cursory reading is > theĀ {integer} rule, which seems to be used nowhere except to > callĀ process_integer_literal, which must then inspect the token text to > figure out what type of integer it is. Maybe consider 4 separate > process_*_literal functions? Agreed, that can be done in a simpler way. Here is an updated patch. --------------AB8012F4DB761BDD295139DF Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v2-0001-Non-decimal-integer-literals.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0001-Non-decimal-integer-literals.patch" RnJvbSBmOTA4MjZmNzdkODA2N2ExNjQxZjYwZGQ3NWQ1ZWExZDgzNDY2ZWE5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCA3IFNlcCAyMDIxIDEzOjEwOjE4ICswMjAwClN1YmplY3Q6 IFtQQVRDSCB2Ml0gTm9uLWRlY2ltYWwgaW50ZWdlciBsaXRlcmFscwoKQWRkIHN1cHBvcnQg Zm9yIGhleGFkZWNpbWFsLCBvY3RhbCwgYW5kIGJpbmFyeSBpbnRlZ2VyIGxpdGVyYWxzOgoK ICAgIDB4NDJFCiAgICAwbzExMgogICAgMGIxMDAxMDEKCnBlciBTUUw6MjAyeCBkcmFmdC4K ClRoaXMgYWRkcyBzdXBwb3J0IGluIHRoZSBsZXhlciBhcyB3ZWxsIGFzIGluIHRoZSBpbnRl Z2VyIHR5cGUgaW5wdXQKZnVuY3Rpb25zLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9z dGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0L2IyMzk1NjRjLWNhZDAtYjIzZS1jNTdlLTE2 NmQ4ODNjYjk3ZEBlbnRlcnByaXNlZGIuY29tCi0tLQogZG9jL3NyYy9zZ21sL3N5bnRheC5z Z21sICAgICAgICAgICAgIHwgMjYgKysrKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3Fs X2ZlYXR1cmVzLnR4dCB8ICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9zY2FuLmwgICAgICAg ICAgICB8IDg3ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9pbnQ4LmMgICAgICAgICB8IDU0ICsrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9udW11dGlscy5jICAgICB8IDk3ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysKIHNyYy9mZV91dGlscy9wc3Fsc2Nhbi5sICAgICAgICAgICAgICB8IDU1ICsrKysr KysrKysrLS0tLS0KIHNyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9wZ2MubCAgICB8IDY0 ICsrKysrKysrKysrLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnQyLm91 dCAgIHwgMTkgKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ludDQub3V0ICAg fCAzNyArKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnQ4Lm91dCAg IHwgMTkgKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9pbnQyLnNxbCAgICAgICAgfCAg NyArKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW50NC5zcWwgICAgICAgIHwgMTEgKysrKwog c3JjL3Rlc3QvcmVncmVzcy9zcWwvaW50OC5zcWwgICAgICAgIHwgIDcgKysKIDEzIGZpbGVz IGNoYW5nZWQsIDQyMiBpbnNlcnRpb25zKCspLCA2MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvc3ludGF4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3ludGF4LnNn bWwKaW5kZXggZDY2NTYwYjU4Ny4uOGZiNGIxMjI4ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3N5bnRheC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbApAQCAtNjk0 LDYgKzY5NCwzMiBAQCA8dGl0bGU+TnVtZXJpYyBDb25zdGFudHM8L3RpdGxlPgogPC9saXRl cmFsbGF5b3V0PgogICAgIDwvcGFyYT4KIAorICAgIDxwYXJhPgorICAgICBBZGRpdGlvbmFs bHksIG5vbi1kZWNpbWFsIGludGVnZXIgY29uc3RhbnRzIGNhbiBiZSB1c2VkIGluIHRoZXNl IGZvcm1zOgorPHN5bm9wc2lzPgorMHg8cmVwbGFjZWFibGU+aGV4ZGlnaXRzPC9yZXBsYWNl YWJsZT4KKzBvPHJlcGxhY2VhYmxlPm9jdGRpZ2l0czwvcmVwbGFjZWFibGU+CiswYjxyZXBs YWNlYWJsZT5iaW5kaWdpdHM8L3JlcGxhY2VhYmxlPgorPC9zeW5vcHNpcz4KKyAgICAgPHJl cGxhY2VhYmxlPmhleGRpZ2l0czwvcmVwbGFjZWFibGU+IGlzIG9uZSBvciBtb3JlIGhleGFk ZWNpbWFsIGRpZ2l0cworICAgICAoMC05LCBBLUYpLCA8cmVwbGFjZWFibGU+b2N0ZGlnaXRz PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9yIG1vcmUgb2N0YWwKKyAgICAgZGlnaXRzICgwLTcp LCA8cmVwbGFjZWFibGU+YmluZGlnaXRzPC9yZXBsYWNlYWJsZT4gaXMgb25lIG9yIG1vcmUg YmluYXJ5CisgICAgIGRpZ2l0cyAoMCBvciAxKS4gIEhleGFkZWNpbWFsIGRpZ2l0cyBhbmQg dGhlIHJhZGl4IHByZWZpeGVzIGNhbiBiZSBpbgorICAgICB1cHBlciBvciBsb3dlciBjYXNl LiAgTm90ZSB0aGF0IG9ubHkgaW50ZWdlcnMgY2FuIGhhdmUgbm9uLWRlY2ltYWwgZm9ybXMs CisgICAgIG5vdCBudW1iZXJzIHdpdGggZnJhY3Rpb25hbCBwYXJ0cy4KKyAgICA8L3BhcmE+ CisKKyAgICA8cGFyYT4KKyAgICAgVGhlc2UgYXJlIHNvbWUgZXhhbXBsZXMgb2YgdGhpczoK KzxsaXRlcmFsbGF5b3V0PjBiMTAwMTAxCiswQjEwMDExMDAxCiswbzExMgorME83NTUKKzB4 NDJlCiswWEZGRkYKKzwvbGl0ZXJhbGxheW91dD4KKyAgICA8L3BhcmE+CisKICAgICA8cGFy YT4KICAgICAgPGluZGV4dGVybT48cHJpbWFyeT5pbnRlZ2VyPC9wcmltYXJ5PjwvaW5kZXh0 ZXJtPgogICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5PmJpZ2ludDwvcHJpbWFyeT48L2luZGV4 dGVybT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4 dCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAppbmRleCA5ZjQyNDIx NmUyLi5kNjM1OTUwM2YzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9m ZWF0dXJlcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0 CkBAIC01MjYsNiArNTI2LDcgQEAgVDY1MglTUUwtZHluYW1pYyBzdGF0ZW1lbnRzIGluIFNR TCByb3V0aW5lcwkJCU5PCiBUNjUzCVNRTC1zY2hlbWEgc3RhdGVtZW50cyBpbiBleHRlcm5h bCByb3V0aW5lcwkJCVlFUwkKIFQ2NTQJU1FMLWR5bmFtaWMgc3RhdGVtZW50cyBpbiBleHRl cm5hbCByb3V0aW5lcwkJCU5PCQogVDY1NQlDeWNsaWNhbGx5IGRlcGVuZGVudCByb3V0aW5l cwkJCVlFUwkKK1Q2NjEJTm9uLWRlY2ltYWwgaW50ZWdlciBsaXRlcmFscwkJCVlFUwlTUUw6 MjAyeCBkcmFmdAogVDgxMQlCYXNpYyBTUUwvSlNPTiBjb25zdHJ1Y3RvciBmdW5jdGlvbnMJ CQlOTwkKIFQ4MTIJU1FML0pTT046IEpTT05fT0JKRUNUQUdHCQkJTk8JCiBUODEzCVNRTC9K U09OOiBKU09OX0FSUkFZQUdHIHdpdGggT1JERVIgQlkJCQlOTwkKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9zY2FuLmwgYi9zcmMvYmFja2VuZC9wYXJzZXIvc2Nhbi5sCmlu ZGV4IDZlNjgyNGZhZWIuLmE3OGZlN2EyZWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9zY2FuLmwKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3NjYW4ubApAQCAtMTI0LDcg KzEyNCw3IEBAIHN0YXRpYyB2b2lkIGFkZGxpdChjaGFyICp5dGV4dCwgaW50IHlsZW5nLCBj b3JlX3l5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgdm9pZCBhZGRsaXRjaGFyKHVuc2ln bmVkIGNoYXIgeWNoYXIsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRpYyBjaGFy ICpsaXRidWZkdXAoY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIHVuc2lnbmVk IGNoYXIgdW5lc2NhcGVfc2luZ2xlX2NoYXIodW5zaWduZWQgY2hhciBjLCBjb3JlX3l5c2Nh bl90IHl5c2Nhbm5lcik7Ci1zdGF0aWMgaW50CXByb2Nlc3NfaW50ZWdlcl9saXRlcmFsKGNv bnN0IGNoYXIgKnRva2VuLCBZWVNUWVBFICpsdmFsKTsKK3N0YXRpYyBpbnQJcHJvY2Vzc19p bnRlZ2VyX2xpdGVyYWwoY29uc3QgY2hhciAqdG9rZW4sIFlZU1RZUEUgKmx2YWwsIGludCBi YXNlKTsKIHN0YXRpYyB2b2lkIGFkZHVuaWNvZGUocGdfd2NoYXIgYywgeXlzY2FuX3QgeXlz Y2FubmVyKTsKIAogI2RlZmluZSB5eWVycm9yKG1zZykgIHNjYW5uZXJfeXllcnJvcihtc2cs IHl5c2Nhbm5lcikKQEAgLTI2Miw3ICsyNjIsNyBAQCBxdW90ZWNvbnRpbnVlZmFpbAl7d2hp dGVzcGFjZX0qIi0iPwogeGJzdGFydAkJCVtiQl17cXVvdGV9CiB4Ymluc2lkZQkJW14nXSoK IAotLyogSGV4YWRlY2ltYWwgbnVtYmVyICovCisvKiBIZXhhZGVjaW1hbCBieXRlIHN0cmlu ZyAqLwogeGhzdGFydAkJCVt4WF17cXVvdGV9CiB4aGluc2lkZQkJW14nXSoKIApAQCAtMzQx LDcgKzM0MSw3IEBAIHhjc3RhcnQJCQlcL1wqe29wX2NoYXJzfSoKIHhjc3RvcAkJCVwqK1wv CiB4Y2luc2lkZQkJW14qL10rCiAKLWRpZ2l0CQkJWzAtOV0KKwogaWRlbnRfc3RhcnQJCVtB LVphLXpcMjAwLVwzNzdfXQogaWRlbnRfY29udAkJW0EtWmEtelwyMDAtXDM3N18wLTlcJF0K IApAQCAtMzgwLDI0ICszODAsMzkgQEAgc2VsZgkJCVssKClcW1xdLjtcOlwrXC1cKlwvXCVc Xlw8XD5cPV0KIG9wX2NoYXJzCQlbXH5cIVxAXCNcXlwmXHxcYFw/XCtcLVwqXC9cJVw8XD5c PV0KIG9wZXJhdG9yCQl7b3BfY2hhcnN9KwogCi0vKiB3ZSBubyBsb25nZXIgYWxsb3cgdW5h cnkgbWludXMgaW4gbnVtYmVycy4KLSAqIGluc3RlYWQgd2UgcGFzcyBpdCBzZXBhcmF0ZWx5 IHRvIHBhcnNlci4gdGhlcmUgaXQgZ2V0cwotICogY29lcmNlZCB2aWEgZG9OZWdhdGUoKSAt LSBMZW9uIGF1ZyAyMCAxOTk5CisvKgorICogTnVtYmVycwogICoKLSAqIHtkZWNpbWFsZmFp bH0gaXMgdXNlZCBiZWNhdXNlIHdlIHdvdWxkIGxpa2UgIjEuLjEwIiB0byBsZXggYXMgMSwg ZG90X2RvdCwgMTAuCisgKiBVbmFyeSBtaW51cyBpcyBub3QgcGFydCBvZiBhIG51bWJlciBo ZXJlLiAgSW5zdGVhZCB3ZSBwYXNzIGl0IHNlcGFyYXRlbHkgdG8KKyAqIHBhcnNlciwgYW5k IHRoZXJlIGl0IGdldHMgY29lcmNlZCB2aWEgZG9OZWdhdGUoKS4KKyAqCisgKiB7bnVtZXJp Y2ZhaWx9IGlzIHVzZWQgYmVjYXVzZSB3ZSB3b3VsZCBsaWtlICIxLi4xMCIgdG8gbGV4IGFz IDEsIGRvdF9kb3QsIDEwLgogICoKICAqIHtyZWFsZmFpbDF9IGFuZCB7cmVhbGZhaWwyfSBh cmUgYWRkZWQgdG8gcHJldmVudCB0aGUgbmVlZCBmb3Igc2Nhbm5lcgogICogYmFja3VwIHdo ZW4gdGhlIHtyZWFsfSBydWxlIGZhaWxzIHRvIG1hdGNoIGNvbXBsZXRlbHkuCiAgKi8KK2Rl Y2RpZ2l0CQlbMC05XQoraGV4ZGlnaXQJCVswLTlBLUZhLWZdCitvY3RkaWdpdAkJWzAtN10K K2JpbmRpZ2l0CQlbMC0xXQorCitkZWNpbnRlZ2VyCQl7ZGVjZGlnaXR9KworaGV4aW50ZWdl cgkJMFt4WF17aGV4ZGlnaXR9Kworb2N0aW50ZWdlcgkJMFtvT117b2N0ZGlnaXR9KworYmlu aW50ZWdlcgkJMFtiQl17YmluZGlnaXR9KwogCi1pbnRlZ2VyCQkJe2RpZ2l0fSsKLWRlY2lt YWwJCQkoKHtkaWdpdH0qXC57ZGlnaXR9Kyl8KHtkaWdpdH0rXC57ZGlnaXR9KikpCi1kZWNp bWFsZmFpbAkJe2RpZ2l0fStcLlwuCi1yZWFsCQkJKHtpbnRlZ2VyfXx7ZGVjaW1hbH0pW0Vl XVstK10/e2RpZ2l0fSsKLXJlYWxmYWlsMQkJKHtpbnRlZ2VyfXx7ZGVjaW1hbH0pW0VlXQot cmVhbGZhaWwyCQkoe2ludGVnZXJ9fHtkZWNpbWFsfSlbRWVdWy0rXQoraGV4ZmFpbAkJCTBb eFhdCitvY3RmYWlsCQkJMFtvT10KK2JpbmZhaWwJCQkwW2JCXQogCi1wYXJhbQkJCVwke2lu dGVnZXJ9CitudW1lcmljCQkJKCh7ZGVjaW50ZWdlcn1cLntkZWNpbnRlZ2VyfT8pfChcLntk ZWNpbnRlZ2VyfSkpCitudW1lcmljZmFpbAkJe2RlY2RpZ2l0fStcLlwuCisKK3JlYWwJCQko e2RlY2ludGVnZXJ9fHtudW1lcmljfSlbRWVdWy0rXT97ZGVjZGlnaXR9KworcmVhbGZhaWwx CQkoe2RlY2ludGVnZXJ9fHtudW1lcmljfSlbRWVdCityZWFsZmFpbDIJCSh7ZGVjaW50ZWdl cn18e251bWVyaWN9KVtFZV1bLStdCisKK3BhcmFtCQkJXCR7ZGVjaW50ZWdlcn0KIAogb3Ro ZXIJCQkuCiAKQEAgLTk3MywyMCArOTg4LDQyIEBAIG90aGVyCQkJLgogCQkJCQlyZXR1cm4g UEFSQU07CiAJCQkJfQogCi17aW50ZWdlcn0JCXsKK3tkZWNpbnRlZ2VyfQl7CisJCQkJCVNF VF9ZWUxMT0MoKTsKKwkJCQkJcmV0dXJuIHByb2Nlc3NfaW50ZWdlcl9saXRlcmFsKHl5dGV4 dCwgeXlsdmFsLCAxMCk7CisJCQkJfQore2hleGludGVnZXJ9CXsKIAkJCQkJU0VUX1lZTExP QygpOwotCQkJCQlyZXR1cm4gcHJvY2Vzc19pbnRlZ2VyX2xpdGVyYWwoeXl0ZXh0LCB5eWx2 YWwpOworCQkJCQlyZXR1cm4gcHJvY2Vzc19pbnRlZ2VyX2xpdGVyYWwoeXl0ZXh0ICsgMiwg eXlsdmFsLCAxNik7CiAJCQkJfQote2RlY2ltYWx9CQl7Cit7b2N0aW50ZWdlcn0JeworCQkJ CQlTRVRfWVlMTE9DKCk7CisJCQkJCXJldHVybiBwcm9jZXNzX2ludGVnZXJfbGl0ZXJhbCh5 eXRleHQgKyAyLCB5eWx2YWwsIDgpOworCQkJCX0KK3tiaW5pbnRlZ2VyfQl7CisJCQkJCVNF VF9ZWUxMT0MoKTsKKwkJCQkJcmV0dXJuIHByb2Nlc3NfaW50ZWdlcl9saXRlcmFsKHl5dGV4 dCArIDIsIHl5bHZhbCwgMik7CisJCQkJfQore2hleGZhaWx9CQl7CisJCQkJCXl5ZXJyb3Io ImludmFsaWQgaGV4YWRlY2ltYWwgaW50ZWdlciIpOworCQkJCX0KK3tvY3RmYWlsfQkJewor CQkJCQl5eWVycm9yKCJpbnZhbGlkIG9jdGFsIGludGVnZXIiKTsKKwkJCQl9Cit7YmluZmFp bH0JCXsKKwkJCQkJeXllcnJvcigiaW52YWxpZCBiaW5hcnkgaW50ZWdlciIpOworCQkJCX0K Kwore251bWVyaWN9CQl7CiAJCQkJCVNFVF9ZWUxMT0MoKTsKIAkJCQkJeXlsdmFsLT5zdHIg PSBwc3RyZHVwKHl5dGV4dCk7CiAJCQkJCXJldHVybiBGQ09OU1Q7CiAJCQkJfQote2RlY2lt YWxmYWlsfQl7Cit7bnVtZXJpY2ZhaWx9CXsKIAkJCQkJLyogdGhyb3cgYmFjayB0aGUgLi4s IGFuZCB0cmVhdCBhcyBpbnRlZ2VyICovCiAJCQkJCXl5bGVzcyh5eWxlbmcgLSAyKTsKIAkJ CQkJU0VUX1lZTExPQygpOwotCQkJCQlyZXR1cm4gcHJvY2Vzc19pbnRlZ2VyX2xpdGVyYWwo eXl0ZXh0LCB5eWx2YWwpOworCQkJCQlyZXR1cm4gcHJvY2Vzc19pbnRlZ2VyX2xpdGVyYWwo eXl0ZXh0LCB5eWx2YWwsIDEwKTsKIAkJCQl9CiB7cmVhbH0JCQl7CiAJCQkJCVNFVF9ZWUxM T0MoKTsKQEAgLTk5NiwxNyArMTAzMywxNyBAQCBvdGhlcgkJCS4KIHtyZWFsZmFpbDF9CQl7 CiAJCQkJCS8qCiAJCQkJCSAqIHRocm93IGJhY2sgdGhlIFtFZV0sIGFuZCBmaWd1cmUgb3V0 IHdoZXRoZXIgd2hhdAotCQkJCQkgKiByZW1haW5zIGlzIGFuIHtpbnRlZ2VyfSBvciB7ZGVj aW1hbH0uCisJCQkJCSAqIHJlbWFpbnMgaXMgYSB7ZGVjaW50ZWdlcn0gb3Ige251bWVyaWN9 LgogCQkJCQkgKi8KIAkJCQkJeXlsZXNzKHl5bGVuZyAtIDEpOwogCQkJCQlTRVRfWVlMTE9D KCk7Ci0JCQkJCXJldHVybiBwcm9jZXNzX2ludGVnZXJfbGl0ZXJhbCh5eXRleHQsIHl5bHZh bCk7CisJCQkJCXJldHVybiBwcm9jZXNzX2ludGVnZXJfbGl0ZXJhbCh5eXRleHQsIHl5bHZh bCwgMTApOwogCQkJCX0KIHtyZWFsZmFpbDJ9CQl7CiAJCQkJCS8qIHRocm93IGJhY2sgdGhl IFtFZV1bKy1dLCBhbmQgcHJvY2VlZCBhcyBhYm92ZSAqLwogCQkJCQl5eWxlc3MoeXlsZW5n IC0gMik7CiAJCQkJCVNFVF9ZWUxMT0MoKTsKLQkJCQkJcmV0dXJuIHByb2Nlc3NfaW50ZWdl cl9saXRlcmFsKHl5dGV4dCwgeXlsdmFsKTsKKwkJCQkJcmV0dXJuIHByb2Nlc3NfaW50ZWdl cl9saXRlcmFsKHl5dGV4dCwgeXlsdmFsLCAxMCk7CiAJCQkJfQogCiAKQEAgLTEyOTYsMTcg KzEzMzMsMTcgQEAgbGl0YnVmZHVwKGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogfQogCiAv KgotICogUHJvY2VzcyB7aW50ZWdlcn0uICBOb3RlIHRoaXMgd2lsbCBhbHNvIGRvIHRoZSBy aWdodCB0aGluZyB3aXRoIHtkZWNpbWFsfSwKKyAqIFByb2Nlc3MgeyppbnRlZ2VyfS4gIE5v dGUgdGhpcyB3aWxsIGFsc28gZG8gdGhlIHJpZ2h0IHRoaW5nIHdpdGgge251bWVyaWN9LAog ICogaWUgZGlnaXRzIGFuZCBhIGRlY2ltYWwgcG9pbnQuCiAgKi8KIHN0YXRpYyBpbnQKLXBy b2Nlc3NfaW50ZWdlcl9saXRlcmFsKGNvbnN0IGNoYXIgKnRva2VuLCBZWVNUWVBFICpsdmFs KQorcHJvY2Vzc19pbnRlZ2VyX2xpdGVyYWwoY29uc3QgY2hhciAqdG9rZW4sIFlZU1RZUEUg Kmx2YWwsIGludCBiYXNlKQogewogCWludAkJCXZhbDsKIAljaGFyCSAgICplbmRwdHI7CiAK IAllcnJubyA9IDA7Ci0JdmFsID0gc3RydG9pbnQodG9rZW4sICZlbmRwdHIsIDEwKTsKKwl2 YWwgPSBzdHJ0b2ludCh0b2tlbiwgJmVuZHB0ciwgYmFzZSk7CiAJaWYgKCplbmRwdHIgIT0g J1wwJyB8fCBlcnJubyA9PSBFUkFOR0UpCiAJewogCQkvKiBpbnRlZ2VyIHRvbyBsYXJnZSAo b3IgY29udGFpbnMgZGVjaW1hbCBwdCksIHRyZWF0IGl0IGFzIGEgZmxvYXQgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9pbnQ4LmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvaW50OC5jCmluZGV4IDIxNjgwODBkY2MuLmMzZWQ5NDRhNmMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9pbnQ4LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2ludDguYwpAQCAtNDUsNiArNDUsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QKICAqIEZvcm1h dHRpbmcgYW5kIGNvbnZlcnNpb24gcm91dGluZXMuCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKK3N0YXRpYyBjb25z dCBpbnQ4IGhleGxvb2t1cFsxMjhdID0geworCS0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0x LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAorCS0xLCAtMSwgLTEsIC0x LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAorCS0x LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwg LTEsIC0xLAorCTAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIC0xLCAtMSwgLTEsIC0x LCAtMSwgLTEsCisJLTEsIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIC0xLCAtMSwgLTEsIC0x LCAtMSwgLTEsIC0xLCAtMSwgLTEsCisJLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0x LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCisJLTEsIDEwLCAxMSwgMTIsIDEz LCAxNCwgMTUsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCisJLTEsIC0x LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwg LTEsCit9OworCiAvKgogICogc2NhbmludDggLS0tIHRyeSB0byBwYXJzZSBhIHN0cmluZyBp bnRvIGFuIGludDguCiAgKgpAQCAtODQsNiArOTUsNDggQEAgc2NhbmludDgoY29uc3QgY2hh ciAqc3RyLCBib29sIGVycm9yT0ssIGludDY0ICpyZXN1bHQpCiAJCWdvdG8gaW52YWxpZF9z eW50YXg7CiAKIAkvKiBwcm9jZXNzIGRpZ2l0cyAqLworCWlmIChwdHJbMF0gPT0gJzAnICYm IChwdHJbMV0gPT0gJ3gnIHx8IHB0clsxXSA9PSAnWCcpKQorCXsKKwkJcHRyICs9IDI7CisJ CXdoaWxlICgqcHRyICYmIGlzeGRpZ2l0KCh1bnNpZ25lZCBjaGFyKSAqcHRyKSkKKwkJewor CQkJaW50OAkJZGlnaXQgPSBoZXhsb29rdXBbKHVuc2lnbmVkIGNoYXIpICpwdHJdOworCisJ CQlpZiAodW5saWtlbHkocGdfbXVsX3M2NF9vdmVyZmxvdyh0bXAsIDE2LCAmdG1wKSkgfHwK KwkJCQl1bmxpa2VseShwZ19zdWJfczY0X292ZXJmbG93KHRtcCwgZGlnaXQsICZ0bXApKSkK KwkJCQlnb3RvIG91dF9vZl9yYW5nZTsKKworCQkJcHRyKys7CisJCX0KKwl9CisJZWxzZSBp ZiAocHRyWzBdID09ICcwJyAmJiAocHRyWzFdID09ICdvJyB8fCBwdHJbMV0gPT0gJ08nKSkK Kwl7CisJCXB0ciArPSAyOworCisJCXdoaWxlICgqcHRyICYmICgqcHRyID49ICcwJyAmJiAq cHRyIDw9ICc3JykpCisJCXsKKwkJCWludDgJCWRpZ2l0ID0gKCpwdHIrKyAtICcwJyk7CisK KwkJCWlmICh1bmxpa2VseShwZ19tdWxfczY0X292ZXJmbG93KHRtcCwgOCwgJnRtcCkpIHx8 CisJCQkJdW5saWtlbHkocGdfc3ViX3M2NF9vdmVyZmxvdyh0bXAsIGRpZ2l0LCAmdG1wKSkp CisJCQkJZ290byBvdXRfb2ZfcmFuZ2U7CisJCX0KKwl9CisJZWxzZSBpZiAocHRyWzBdID09 ICcwJyAmJiAocHRyWzFdID09ICdiJyB8fCBwdHJbMV0gPT0gJ0InKSkKKwl7CisJCXB0ciAr PSAyOworCisJCXdoaWxlICgqcHRyICYmICgqcHRyID49ICcwJyAmJiAqcHRyIDw9ICcxJykp CisJCXsKKwkJCWludDgJCWRpZ2l0ID0gKCpwdHIrKyAtICcwJyk7CisKKwkJCWlmICh1bmxp a2VseShwZ19tdWxfczY0X292ZXJmbG93KHRtcCwgMiwgJnRtcCkpIHx8CisJCQkJdW5saWtl bHkocGdfc3ViX3M2NF9vdmVyZmxvdyh0bXAsIGRpZ2l0LCAmdG1wKSkpCisJCQkJZ290byBv dXRfb2ZfcmFuZ2U7CisJCX0KKwl9CisJZWxzZQorCXsKIAl3aGlsZSAoKnB0ciAmJiBpc2Rp Z2l0KCh1bnNpZ25lZCBjaGFyKSAqcHRyKSkKIAl7CiAJCWludDgJCWRpZ2l0ID0gKCpwdHIr KyAtICcwJyk7CkBAIC05Miw2ICsxNDUsNyBAQCBzY2FuaW50OChjb25zdCBjaGFyICpzdHIs IGJvb2wgZXJyb3JPSywgaW50NjQgKnJlc3VsdCkKIAkJCXVubGlrZWx5KHBnX3N1Yl9zNjRf b3ZlcmZsb3codG1wLCBkaWdpdCwgJnRtcCkpKQogCQkJZ290byBvdXRfb2ZfcmFuZ2U7CiAJ fQorCX0KIAogCS8qIGFsbG93IHRyYWlsaW5nIHdoaXRlc3BhY2UsIGJ1dCBub3Qgb3RoZXIg dHJhaWxpbmcgY2hhcnMgKi8KIAl3aGlsZSAoKnB0ciAhPSAnXDAnICYmIGlzc3BhY2UoKHVu c2lnbmVkIGNoYXIpICpwdHIpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L251bXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtdXRpbHMuYwppbmRleCBi OTMwOTZmMjg4Li43YzY1MjAzNDZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvbnVtdXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbnVtdXRpbHMuYwpA QCAtMTczLDYgKzE3MywxNyBAQCBwZ19hdG9pKGNvbnN0IGNoYXIgKnMsIGludCBzaXplLCBp bnQgYykKIAlyZXR1cm4gKGludDMyKSBsOwogfQogCitzdGF0aWMgY29uc3QgaW50OCBoZXhs b29rdXBbMTI4XSA9IHsKKwktMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAt MSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwKKwktMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAt MSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwKKwktMSwgLTEsIC0xLCAt MSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwKKwkw LCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAor CS0xLCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAt MSwgLTEsIC0xLAorCS0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAt MSwgLTEsIC0xLCAtMSwgLTEsIC0xLAorCS0xLCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAt MSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAorCS0xLCAtMSwgLTEsIC0xLCAt MSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAorfTsKKwog LyoKICAqIENvbnZlcnQgaW5wdXQgc3RyaW5nIHRvIGEgc2lnbmVkIDE2IGJpdCBpbnRlZ2Vy LgogICoKQEAgLTIwOCw2ICsyMTksNDggQEAgcGdfc3RydG9pbnQxNihjb25zdCBjaGFyICpz KQogCQlnb3RvIGludmFsaWRfc3ludGF4OwogCiAJLyogcHJvY2VzcyBkaWdpdHMgKi8KKwlp ZiAocHRyWzBdID09ICcwJyAmJiAocHRyWzFdID09ICd4JyB8fCBwdHJbMV0gPT0gJ1gnKSkK Kwl7CisJCXB0ciArPSAyOworCQl3aGlsZSAoKnB0ciAmJiBpc3hkaWdpdCgodW5zaWduZWQg Y2hhcikgKnB0cikpCisJCXsKKwkJCWludDgJCWRpZ2l0ID0gaGV4bG9va3VwWyh1bnNpZ25l ZCBjaGFyKSAqcHRyXTsKKworCQkJaWYgKHVubGlrZWx5KHBnX211bF9zMTZfb3ZlcmZsb3co dG1wLCAxNiwgJnRtcCkpIHx8CisJCQkJdW5saWtlbHkocGdfc3ViX3MxNl9vdmVyZmxvdyh0 bXAsIGRpZ2l0LCAmdG1wKSkpCisJCQkJZ290byBvdXRfb2ZfcmFuZ2U7CisKKwkJCXB0cisr OworCQl9CisJfQorCWVsc2UgaWYgKHB0clswXSA9PSAnMCcgJiYgKHB0clsxXSA9PSAnbycg fHwgcHRyWzFdID09ICdPJykpCisJeworCQlwdHIgKz0gMjsKKworCQl3aGlsZSAoKnB0ciAm JiAoKnB0ciA+PSAnMCcgJiYgKnB0ciA8PSAnNycpKQorCQl7CisJCQlpbnQ4CQlkaWdpdCA9 ICgqcHRyKysgLSAnMCcpOworCisJCQlpZiAodW5saWtlbHkocGdfbXVsX3MxNl9vdmVyZmxv dyh0bXAsIDgsICZ0bXApKSB8fAorCQkJCXVubGlrZWx5KHBnX3N1Yl9zMTZfb3ZlcmZsb3co dG1wLCBkaWdpdCwgJnRtcCkpKQorCQkJCWdvdG8gb3V0X29mX3JhbmdlOworCQl9CisJfQor CWVsc2UgaWYgKHB0clswXSA9PSAnMCcgJiYgKHB0clsxXSA9PSAnYicgfHwgcHRyWzFdID09 ICdCJykpCisJeworCQlwdHIgKz0gMjsKKworCQl3aGlsZSAoKnB0ciAmJiAoKnB0ciA+PSAn MCcgJiYgKnB0ciA8PSAnMScpKQorCQl7CisJCQlpbnQ4CQlkaWdpdCA9ICgqcHRyKysgLSAn MCcpOworCisJCQlpZiAodW5saWtlbHkocGdfbXVsX3MxNl9vdmVyZmxvdyh0bXAsIDIsICZ0 bXApKSB8fAorCQkJCXVubGlrZWx5KHBnX3N1Yl9zMTZfb3ZlcmZsb3codG1wLCBkaWdpdCwg JnRtcCkpKQorCQkJCWdvdG8gb3V0X29mX3JhbmdlOworCQl9CisJfQorCWVsc2UKKwl7CiAJ d2hpbGUgKCpwdHIgJiYgaXNkaWdpdCgodW5zaWduZWQgY2hhcikgKnB0cikpCiAJewogCQlp bnQ4CQlkaWdpdCA9ICgqcHRyKysgLSAnMCcpOwpAQCAtMjE2LDYgKzI2OSw3IEBAIHBnX3N0 cnRvaW50MTYoY29uc3QgY2hhciAqcykKIAkJCXVubGlrZWx5KHBnX3N1Yl9zMTZfb3ZlcmZs b3codG1wLCBkaWdpdCwgJnRtcCkpKQogCQkJZ290byBvdXRfb2ZfcmFuZ2U7CiAJfQorCX0K IAogCS8qIGFsbG93IHRyYWlsaW5nIHdoaXRlc3BhY2UsIGJ1dCBub3Qgb3RoZXIgdHJhaWxp bmcgY2hhcnMgKi8KIAl3aGlsZSAoKnB0ciAhPSAnXDAnICYmIGlzc3BhY2UoKHVuc2lnbmVk IGNoYXIpICpwdHIpKQpAQCAtMjg0LDYgKzMzOCw0OCBAQCBwZ19zdHJ0b2ludDMyKGNvbnN0 IGNoYXIgKnMpCiAJCWdvdG8gaW52YWxpZF9zeW50YXg7CiAKIAkvKiBwcm9jZXNzIGRpZ2l0 cyAqLworCWlmIChwdHJbMF0gPT0gJzAnICYmIChwdHJbMV0gPT0gJ3gnIHx8IHB0clsxXSA9 PSAnWCcpKQorCXsKKwkJcHRyICs9IDI7CisJCXdoaWxlICgqcHRyICYmIGlzeGRpZ2l0KCh1 bnNpZ25lZCBjaGFyKSAqcHRyKSkKKwkJeworCQkJaW50OAkJZGlnaXQgPSBoZXhsb29rdXBb KHVuc2lnbmVkIGNoYXIpICpwdHJdOworCisJCQlpZiAodW5saWtlbHkocGdfbXVsX3MzMl9v dmVyZmxvdyh0bXAsIDE2LCAmdG1wKSkgfHwKKwkJCQl1bmxpa2VseShwZ19zdWJfczMyX292 ZXJmbG93KHRtcCwgZGlnaXQsICZ0bXApKSkKKwkJCQlnb3RvIG91dF9vZl9yYW5nZTsKKwor CQkJcHRyKys7CisJCX0KKwl9CisJZWxzZSBpZiAocHRyWzBdID09ICcwJyAmJiAocHRyWzFd ID09ICdvJyB8fCBwdHJbMV0gPT0gJ08nKSkKKwl7CisJCXB0ciArPSAyOworCisJCXdoaWxl ICgqcHRyICYmICgqcHRyID49ICcwJyAmJiAqcHRyIDw9ICc3JykpCisJCXsKKwkJCWludDgJ CWRpZ2l0ID0gKCpwdHIrKyAtICcwJyk7CisKKwkJCWlmICh1bmxpa2VseShwZ19tdWxfczMy X292ZXJmbG93KHRtcCwgOCwgJnRtcCkpIHx8CisJCQkJdW5saWtlbHkocGdfc3ViX3MzMl9v dmVyZmxvdyh0bXAsIGRpZ2l0LCAmdG1wKSkpCisJCQkJZ290byBvdXRfb2ZfcmFuZ2U7CisJ CX0KKwl9CisJZWxzZSBpZiAocHRyWzBdID09ICcwJyAmJiAocHRyWzFdID09ICdiJyB8fCBw dHJbMV0gPT0gJ0InKSkKKwl7CisJCXB0ciArPSAyOworCisJCXdoaWxlICgqcHRyICYmICgq cHRyID49ICcwJyAmJiAqcHRyIDw9ICcxJykpCisJCXsKKwkJCWludDgJCWRpZ2l0ID0gKCpw dHIrKyAtICcwJyk7CisKKwkJCWlmICh1bmxpa2VseShwZ19tdWxfczMyX292ZXJmbG93KHRt cCwgMiwgJnRtcCkpIHx8CisJCQkJdW5saWtlbHkocGdfc3ViX3MzMl9vdmVyZmxvdyh0bXAs IGRpZ2l0LCAmdG1wKSkpCisJCQkJZ290byBvdXRfb2ZfcmFuZ2U7CisJCX0KKwl9CisJZWxz ZQorCXsKIAl3aGlsZSAoKnB0ciAmJiBpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKSAqcHRyKSkK IAl7CiAJCWludDgJCWRpZ2l0ID0gKCpwdHIrKyAtICcwJyk7CkBAIC0yOTIsNiArMzg4LDcg QEAgcGdfc3RydG9pbnQzMihjb25zdCBjaGFyICpzKQogCQkJdW5saWtlbHkocGdfc3ViX3Mz Ml9vdmVyZmxvdyh0bXAsIGRpZ2l0LCAmdG1wKSkpCiAJCQlnb3RvIG91dF9vZl9yYW5nZTsK IAl9CisJfQogCiAJLyogYWxsb3cgdHJhaWxpbmcgd2hpdGVzcGFjZSwgYnV0IG5vdCBvdGhl ciB0cmFpbGluZyBjaGFycyAqLwogCXdoaWxlICgqcHRyICE9ICdcMCcgJiYgaXNzcGFjZSgo dW5zaWduZWQgY2hhcikgKnB0cikpCmRpZmYgLS1naXQgYS9zcmMvZmVfdXRpbHMvcHNxbHNj YW4ubCBiL3NyYy9mZV91dGlscy9wc3Fsc2Nhbi5sCmluZGV4IDBmYWI0OGEzODIuLjcyOWFl YzU2MmIgMTAwNjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9wc3Fsc2Nhbi5sCisrKyBiL3NyYy9m ZV91dGlscy9wc3Fsc2Nhbi5sCkBAIC0yMDAsNyArMjAwLDcgQEAgcXVvdGVjb250aW51ZWZh aWwJe3doaXRlc3BhY2V9KiItIj8KIHhic3RhcnQJCQlbYkJde3F1b3RlfQogeGJpbnNpZGUJ CVteJ10qCiAKLS8qIEhleGFkZWNpbWFsIG51bWJlciAqLworLyogSGV4YWRlY2ltYWwgYnl0 ZSBzdHJpbmcgKi8KIHhoc3RhcnQJCQlbeFhde3F1b3RlfQogeGhpbnNpZGUJCVteJ10qCiAK QEAgLTI3OSw3ICsyNzksNiBAQCB4Y3N0YXJ0CQkJXC9cKntvcF9jaGFyc30qCiB4Y3N0b3AJ CQlcKitcLwogeGNpbnNpZGUJCVteKi9dKwogCi1kaWdpdAkJCVswLTldCiBpZGVudF9zdGFy dAkJW0EtWmEtelwyMDAtXDM3N19dCiBpZGVudF9jb250CQlbQS1aYS16XDIwMC1cMzc3XzAt OVwkXQogCkBAIC0zMTgsMjQgKzMxNyw0MSBAQCBzZWxmCQkJWywoKVxbXF0uO1w6XCtcLVwq XC9cJVxeXDxcPlw9XQogb3BfY2hhcnMJCVtcflwhXEBcI1xeXCZcfFxgXD9cK1wtXCpcL1wl XDxcPlw9XQogb3BlcmF0b3IJCXtvcF9jaGFyc30rCiAKLS8qIHdlIG5vIGxvbmdlciBhbGxv dyB1bmFyeSBtaW51cyBpbiBudW1iZXJzLgotICogaW5zdGVhZCB3ZSBwYXNzIGl0IHNlcGFy YXRlbHkgdG8gcGFyc2VyLiB0aGVyZSBpdCBnZXRzCi0gKiBjb2VyY2VkIHZpYSBkb05lZ2F0 ZSgpIC0tIExlb24gYXVnIDIwIDE5OTkKKy8qCisgKiBOdW1iZXJzCisgKgorICogVW5hcnkg bWludXMgaXMgbm90IHBhcnQgb2YgYSBudW1iZXIgaGVyZS4gIEluc3RlYWQgd2UgcGFzcyBp dCBzZXBhcmF0ZWx5IHRvCisgKiBwYXJzZXIsIGFuZCB0aGVyZSBpdCBnZXRzIGNvZXJjZWQg dmlhIGRvTmVnYXRlKCkuCiAgKgotICoge2RlY2ltYWxmYWlsfSBpcyB1c2VkIGJlY2F1c2Ug d2Ugd291bGQgbGlrZSAiMS4uMTAiIHRvIGxleCBhcyAxLCBkb3RfZG90LCAxMC4KKyAqIHtu dW1lcmljZmFpbH0gaXMgdXNlZCBiZWNhdXNlIHdlIHdvdWxkIGxpa2UgIjEuLjEwIiB0byBs ZXggYXMgMSwgZG90X2RvdCwgMTAuCiAgKgogICoge3JlYWxmYWlsMX0gYW5kIHtyZWFsZmFp bDJ9IGFyZSBhZGRlZCB0byBwcmV2ZW50IHRoZSBuZWVkIGZvciBzY2FubmVyCiAgKiBiYWNr dXAgd2hlbiB0aGUge3JlYWx9IHJ1bGUgZmFpbHMgdG8gbWF0Y2ggY29tcGxldGVseS4KICAq LworZGVjZGlnaXQJCVswLTldCitoZXhkaWdpdAkJWzAtOUEtRmEtZl0KK29jdGRpZ2l0CQlb MC03XQorYmluZGlnaXQJCVswLTFdCisKK2RlY2ludGVnZXIJCXtkZWNkaWdpdH0rCitoZXhp bnRlZ2VyCQkwW3hYXXtoZXhkaWdpdH0rCitvY3RpbnRlZ2VyCQkwW29PXXtvY3RkaWdpdH0r CitiaW5pbnRlZ2VyCQkwW2JCXXtiaW5kaWdpdH0rCisKK2hleGZhaWwJCQkwW3hYXQorb2N0 ZmFpbAkJCTBbb09dCitiaW5mYWlsCQkJMFtiQl0KKworaW50ZWdlcgkJCSh7ZGVjaW50ZWdl cn18e2hleGludGVnZXJ9fHtvY3RpbnRlZ2VyfXx7YmluaW50ZWdlcn0pCisKK251bWVyaWMJ CQkoKHtkZWNpbnRlZ2VyfVwue2RlY2ludGVnZXJ9Pyl8KFwue2RlY2ludGVnZXJ9KSkKK251 bWVyaWNmYWlsCQl7ZGVjZGlnaXR9K1wuXC4KIAotaW50ZWdlcgkJCXtkaWdpdH0rCi1kZWNp bWFsCQkJKCh7ZGlnaXR9Klwue2RpZ2l0fSspfCh7ZGlnaXR9K1wue2RpZ2l0fSopKQotZGVj aW1hbGZhaWwJCXtkaWdpdH0rXC5cLgotcmVhbAkJCSh7aW50ZWdlcn18e2RlY2ltYWx9KVtF ZV1bLStdP3tkaWdpdH0rCi1yZWFsZmFpbDEJCSh7aW50ZWdlcn18e2RlY2ltYWx9KVtFZV0K LXJlYWxmYWlsMgkJKHtpbnRlZ2VyfXx7ZGVjaW1hbH0pW0VlXVstK10KK3JlYWwJCQkoe2Rl Y2ludGVnZXJ9fHtudW1lcmljfSlbRWVdWy0rXT97ZGVjZGlnaXR9KworcmVhbGZhaWwxCQko e2RlY2ludGVnZXJ9fHtudW1lcmljfSlbRWVdCityZWFsZmFpbDIJCSh7ZGVjaW50ZWdlcn18 e251bWVyaWN9KVtFZV1bLStdCiAKLXBhcmFtCQkJXCR7aW50ZWdlcn0KK3BhcmFtCQkJXCR7 ZGVjaW50ZWdlcn0KIAogLyogcHNxbC1zcGVjaWZpYzogY2hhcmFjdGVycyBhbGxvd2VkIGlu IHZhcmlhYmxlIG5hbWVzICovCiB2YXJpYWJsZV9jaGFyCVtBLVphLXpcMjAwLVwzNzdfMC05 XQpAQCAtODQyLDEwICs4NTgsMTkgQEAgb3RoZXIJCQkuCiB7aW50ZWdlcn0JCXsKIAkJCQkJ RUNITzsKIAkJCQl9Ci17ZGVjaW1hbH0JCXsKK3toZXhmYWlsfQkJeworCQkJCQlFQ0hPOwor CQkJCX0KK3tvY3RmYWlsfQkJeworCQkJCQlFQ0hPOworCQkJCX0KK3tiaW5mYWlsfQkJewor CQkJCQlFQ0hPOworCQkJCX0KK3tudW1lcmljfQkJewogCQkJCQlFQ0hPOwogCQkJCX0KLXtk ZWNpbWFsZmFpbH0Jewore251bWVyaWNmYWlsfQl7CiAJCQkJCS8qIHRocm93IGJhY2sgdGhl IC4uLCBhbmQgdHJlYXQgYXMgaW50ZWdlciAqLwogCQkJCQl5eWxlc3MoeXlsZW5nIC0gMik7 CiAJCQkJCUVDSE87CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2Mv cGdjLmwgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvcGdjLmwKaW5kZXggN2EwMzU2 NjM4ZC4uZWJkMWYzZDdmNCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVw cm9jL3BnYy5sCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9wZ2MubApAQCAt MzA1LDcgKzMwNSw2IEBAIHhjc3RhcnQJCQlcL1wqe29wX2NoYXJzfSoKIHhjc3RvcAkJCVwq K1wvCiB4Y2luc2lkZQkJW14qL10rCiAKLWRpZ2l0CQkJWzAtOV0KIGlkZW50X3N0YXJ0CQlb QS1aYS16XDIwMC1cMzc3X10KIGlkZW50X2NvbnQJCVtBLVphLXpcMjAwLVwzNzdfMC05XCRd CiAKQEAgLTM0NiwyNCArMzQ1LDQxIEBAIHNlbGYJCQlbLCgpXFtcXS47XDpcK1wtXCpcL1wl XF5cPFw+XD1dCiBvcF9jaGFycwkJW1x+XCFcQFwjXF5cJlx8XGBcP1wrXC1cKlwvXCVcPFw+ XD1dCiBvcGVyYXRvcgkJe29wX2NoYXJzfSsKIAotLyogd2Ugbm8gbG9uZ2VyIGFsbG93IHVu YXJ5IG1pbnVzIGluIG51bWJlcnMuCi0gKiBpbnN0ZWFkIHdlIHBhc3MgaXQgc2VwYXJhdGVs eSB0byBwYXJzZXIuIHRoZXJlIGl0IGdldHMKLSAqIGNvZXJjZWQgdmlhIGRvTmVnYXRlKCkg LS0gTGVvbiBhdWcgMjAgMTk5OQorLyoKKyAqIE51bWJlcnMKKyAqCisgKiBVbmFyeSBtaW51 cyBpcyBub3QgcGFydCBvZiBhIG51bWJlciBoZXJlLiAgSW5zdGVhZCB3ZSBwYXNzIGl0IHNl cGFyYXRlbHkgdG8KKyAqIHBhcnNlciwgYW5kIHRoZXJlIGl0IGdldHMgY29lcmNlZCB2aWEg ZG9OZWdhdGUoKS4KICAqCi0gKiB7ZGVjaW1hbGZhaWx9IGlzIHVzZWQgYmVjYXVzZSB3ZSB3 b3VsZCBsaWtlICIxLi4xMCIgdG8gbGV4IGFzIDEsIGRvdF9kb3QsIDEwLgorICoge251bWVy aWNmYWlsfSBpcyB1c2VkIGJlY2F1c2Ugd2Ugd291bGQgbGlrZSAiMS4uMTAiIHRvIGxleCBh cyAxLCBkb3RfZG90LCAxMC4KICAqCiAgKiB7cmVhbGZhaWwxfSBhbmQge3JlYWxmYWlsMn0g YXJlIGFkZGVkIHRvIHByZXZlbnQgdGhlIG5lZWQgZm9yIHNjYW5uZXIKICAqIGJhY2t1cCB3 aGVuIHRoZSB7cmVhbH0gcnVsZSBmYWlscyB0byBtYXRjaCBjb21wbGV0ZWx5LgogICovCitk ZWNkaWdpdAkJWzAtOV0KK2hleGRpZ2l0CQlbMC05QS1GYS1mXQorb2N0ZGlnaXQJCVswLTdd CitiaW5kaWdpdAkJWzAtMV0KKworZGVjaW50ZWdlcgkJe2RlY2RpZ2l0fSsKK2hleGludGVn ZXIJCTBbeFhde2hleGRpZ2l0fSsKK29jdGludGVnZXIJCTBbb09de29jdGRpZ2l0fSsKK2Jp bmludGVnZXIJCTBbYkJde2JpbmRpZ2l0fSsKKworaGV4ZmFpbAkJCTBbeFhdCitvY3RmYWls CQkJMFtvT10KK2JpbmZhaWwJCQkwW2JCXQogCi1pbnRlZ2VyCQkJe2RpZ2l0fSsKLWRlY2lt YWwJCQkoKHtkaWdpdH0qXC57ZGlnaXR9Kyl8KHtkaWdpdH0rXC57ZGlnaXR9KikpCi1kZWNp bWFsZmFpbAkJe2RpZ2l0fStcLlwuCi1yZWFsCQkJKHtpbnRlZ2VyfXx7ZGVjaW1hbH0pW0Vl XVstK10/e2RpZ2l0fSsKLXJlYWxmYWlsMQkJKHtpbnRlZ2VyfXx7ZGVjaW1hbH0pW0VlXQot cmVhbGZhaWwyCQkoe2ludGVnZXJ9fHtkZWNpbWFsfSlbRWVdWy0rXQoraW50ZWdlcgkJCSh7 ZGVjaW50ZWdlcn18e2hleGludGVnZXJ9fHtvY3RpbnRlZ2VyfXx7YmluaW50ZWdlcn0pCiAK LXBhcmFtCQkJXCR7aW50ZWdlcn0KK251bWVyaWMJCQkoKHtkZWNpbnRlZ2VyfVwue2RlY2lu dGVnZXJ9Pyl8KFwue2RlY2ludGVnZXJ9KSkKK251bWVyaWNmYWlsCQl7ZGVjZGlnaXR9K1wu XC4KKworcmVhbAkJCSh7ZGVjaW50ZWdlcn18e251bWVyaWN9KVtFZV1bLStdP3tkZWNkaWdp dH0rCityZWFsZmFpbDEJCSh7ZGVjaW50ZWdlcn18e251bWVyaWN9KVtFZV0KK3JlYWxmYWls MgkJKHtkZWNpbnRlZ2VyfXx7bnVtZXJpY30pW0VlXVstK10KKworcGFyYW0JCQlcJHtkZWNp bnRlZ2VyfQogCiAvKiBzcGVjaWFsIGNoYXJhY3RlcnMgZm9yIG90aGVyIGRibXMgKi8KIC8q IHdlIGhhdmUgdG8gcmVhY3QgZGlmZmVyZW50bHkgaW4gY29tcGF0IG1vZGUgKi8KQEAgLTM5 Myw5ICs0MDksNiBAQCBpbmNsdWRlX25leHQJW2lJXVtuTl1bY0NdW2xMXVt1VV1bZERdW2VF XV9bbk5dW2VFXVt4WF1bdFRdCiBpbXBvcnQJCQlbaUldW21NXVtwUF1bb09dW3JSXVt0VF0K IHVuZGVmCQkJW3VVXVtuTl1bZERdW2VFXVtmRl0KIAotLyogQyB2ZXJzaW9uIG9mIGhleCBu dW1iZXIgKi8KLXhjaAkJCQkwW3hYXVswLTlBLUZhLWZdKgotCiBjY29tbWVudAkJIi8vIi4q XG4KIAogaWYJCQkJW2lJXVtmRl0KQEAgLTQwOCw3ICs0MjEsNyBAQCBlbmRpZgkJCVtlRV1b bk5dW2REXVtpSV1bZkZdCiBzdHJ1Y3QJCQlbc1NdW3RUXVtyUl1bdVVdW2NDXVt0VF0KIAog ZXhlY19zcWwJCXtleGVjfXtzcGFjZX0qe3NxbH17c3BhY2V9KgotaXBkaWdpdAkJCSh7ZGln aXR9fHtkaWdpdH17ZGlnaXR9fHtkaWdpdH17ZGlnaXR9e2RpZ2l0fSkKK2lwZGlnaXQJCQko e2RlY2RpZ2l0fXx7ZGVjZGlnaXR9e2RlY2RpZ2l0fXx7ZGVjZGlnaXR9e2RlY2RpZ2l0fXtk ZWNkaWdpdH0pCiBpcAkJCQl7aXBkaWdpdH1cLntpcGRpZ2l0fVwue2lwZGlnaXR9XC57aXBk aWdpdH0KIAogLyogd2UgbWlnaHQgd2FudCB0byBwYXJzZSBhbGwgY3BwIGluY2x1ZGUgZmls ZXMgKi8KQEAgLTkyNiwxMSArOTM5LDExIEBAIGNwcGxpbmUJCQl7c3BhY2V9KiMoW15pXVtB LVphLXpdKnx7aWZ9fHtpZmRlZn18e2lmbmRlZn18e2ltcG9ydH0pKChcL1wqW14qL10qXCor CiB7aW50ZWdlcn0JCXsKIAkJCQkJcmV0dXJuIHByb2Nlc3NfaW50ZWdlcl9saXRlcmFsKHl5 dGV4dCwgJmJhc2VfeXlsdmFsKTsKIAkJCQl9Ci17ZGVjaW1hbH0JCXsKK3tudW1lcmljfQkJ ewogCQkJCQliYXNlX3l5bHZhbC5zdHIgPSBtbV9zdHJkdXAoeXl0ZXh0KTsKIAkJCQkJcmV0 dXJuIEZDT05TVDsKIAkJCQl9Ci17ZGVjaW1hbGZhaWx9CXsKK3tudW1lcmljZmFpbH0Jewog CQkJCQkvKiB0aHJvdyBiYWNrIHRoZSAuLiwgYW5kIHRyZWF0IGFzIGludGVnZXIgKi8KIAkJ CQkJeXlsZXNzKHl5bGVuZyAtIDIpOwogCQkJCQlyZXR1cm4gcHJvY2Vzc19pbnRlZ2VyX2xp dGVyYWwoeXl0ZXh0LCAmYmFzZV95eWx2YWwpOwpAQCAtOTQyLDcgKzk1NSw3IEBAIGNwcGxp bmUJCQl7c3BhY2V9KiMoW15pXVtBLVphLXpdKnx7aWZ9fHtpZmRlZn18e2lmbmRlZn18e2lt cG9ydH0pKChcL1wqW14qL10qXCorCiB7cmVhbGZhaWwxfQkJewogCQkJCQkvKgogCQkJCQkg KiB0aHJvdyBiYWNrIHRoZSBbRWVdLCBhbmQgZmlndXJlIG91dCB3aGV0aGVyIHdoYXQKLQkJ CQkJICogcmVtYWlucyBpcyBhbiB7aW50ZWdlcn0gb3Ige2RlY2ltYWx9LgorCQkJCQkgKiBy ZW1haW5zIGlzIGFuIHtpbnRlZ2VyfSBvciB7bnVtZXJpY30uCiAJCQkJCSAqLwogCQkJCQl5 eWxlc3MoeXlsZW5nIC0gMSk7CiAJCQkJCXJldHVybiBwcm9jZXNzX2ludGVnZXJfbGl0ZXJh bCh5eXRleHQsICZiYXNlX3l5bHZhbCk7CkBAIC0xMDA5LDcgKzEwMjIsNyBAQCBjcHBsaW5l CQkJe3NwYWNlfSojKFteaV1bQS1aYS16XSp8e2lmfXx7aWZkZWZ9fHtpZm5kZWZ9fHtpbXBv cnR9KSgoXC9cKlteKi9dKlwqKwogCQkJCQkJCXJldHVybiBTX0FOWVRISU5HOwogCQkJCQkg fQogPEM+e2Njb21tZW50fQkJeyBFQ0hPOyB9Ci08Qz57eGNofQkJCXsKKzxDPntoZXhpbnRl Z2VyfQkJewogCQkJCQkJY2hhciogZW5kcHRyOwogCiAJCQkJCQllcnJubyA9IDA7CkBAIC0x NTQ2LDcgKzE1NTksNyBAQCBhZGRsaXRjaGFyKHVuc2lnbmVkIGNoYXIgeWNoYXIpCiB9CiAK IC8qCi0gKiBQcm9jZXNzIHtpbnRlZ2VyfS4gIE5vdGUgdGhpcyB3aWxsIGFsc28gZG8gdGhl IHJpZ2h0IHRoaW5nIHdpdGgge2RlY2ltYWx9LAorICogUHJvY2VzcyB7aW50ZWdlcn0uICBO b3RlIHRoaXMgd2lsbCBhbHNvIGRvIHRoZSByaWdodCB0aGluZyB3aXRoIHtudW1lcmljfSwK ICAqIGllIGRpZ2l0cyBhbmQgYSBkZWNpbWFsIHBvaW50LgogICovCiBzdGF0aWMgaW50CkBA IC0xNTU2LDcgKzE1NjksMTQgQEAgcHJvY2Vzc19pbnRlZ2VyX2xpdGVyYWwoY29uc3QgY2hh ciAqdG9rZW4sIFlZU1RZUEUgKmx2YWwpCiAJY2hhcgkgICAqZW5kcHRyOwogCiAJZXJybm8g PSAwOwotCXZhbCA9IHN0cnRvaW50KHRva2VuLCAmZW5kcHRyLCAxMCk7CisJaWYgKHRva2Vu WzBdID09ICcwJyAmJiAodG9rZW5bMV0gPT0gJ1gnIHx8IHRva2VuWzFdID09ICd4JykpCisJ CXZhbCA9IHN0cnRvaW50KHRva2VuICsgMiwgJmVuZHB0ciwgMTYpOworCWVsc2UgaWYgKHRv a2VuWzBdID09ICcwJyAmJiAodG9rZW5bMV0gPT0gJ08nIHx8IHRva2VuWzFdID09ICdvJykp CisJCXZhbCA9IHN0cnRvaW50KHRva2VuICsgMiwgJmVuZHB0ciwgOCk7CisJZWxzZSBpZiAo dG9rZW5bMF0gPT0gJzAnICYmICh0b2tlblsxXSA9PSAnQicgfHwgdG9rZW5bMV0gPT0gJ2In KSkKKwkJdmFsID0gc3RydG9pbnQodG9rZW4gKyAyLCAmZW5kcHRyLCAyKTsKKwllbHNlCisJ CXZhbCA9IHN0cnRvaW50KHRva2VuLCAmZW5kcHRyLCAxMCk7CiAJaWYgKCplbmRwdHIgIT0g J1wwJyB8fCBlcnJubyA9PSBFUkFOR0UpCiAJewogCQkvKiBpbnRlZ2VyIHRvbyBsYXJnZSAo b3IgY29udGFpbnMgZGVjaW1hbCBwdCksIHRyZWF0IGl0IGFzIGEgZmxvYXQgKi8KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW50Mi5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2ludDIub3V0CmluZGV4IDU1ZWE3MjAyY2QuLjBmZmEwMGE4MzUg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW50Mi5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnQyLm91dApAQCAtMzA2LDMgKzMwNiwyMiBA QCBGUk9NIChWQUxVRVMgKC0yLjU6Om51bWVyaWMpLAogICAyLjUgfCAgICAgICAgICAzCiAo NyByb3dzKQogCistLSBub24tZGVjaW1hbCBsaXRlcmFscworU0VMRUNUIGludDIgJzBiMTAw MTAxJzsKKyBpbnQyIAorLS0tLS0tCisgICAzNworKDEgcm93KQorCitTRUxFQ1QgaW50MiAn MG8xMTInOworIGludDIgCistLS0tLS0KKyAgIDc0CisoMSByb3cpCisKK1NFTEVDVCBpbnQy ICcweDQyRSc7CisgaW50MiAKKy0tLS0tLQorIDEwNzAKKygxIHJvdykKKwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnQ0Lm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvaW50NC5vdXQKaW5kZXggOWQyMGIzMzgwZi4uOGMxZTQyMzdlOCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnQ0Lm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ludDQub3V0CkBAIC00MzcsMyArNDM3LDQwIEBAIFNF TEVDVCBsY20oKC0yMTQ3NDgzNjQ4KTo6aW50NCwgMTo6aW50NCk7IC0tIG92ZXJmbG93CiBF UlJPUjogIGludGVnZXIgb3V0IG9mIHJhbmdlCiBTRUxFQ1QgbGNtKDIxNDc0ODM2NDc6Omlu dDQsIDIxNDc0ODM2NDY6OmludDQpOyAtLSBvdmVyZmxvdwogRVJST1I6ICBpbnRlZ2VyIG91 dCBvZiByYW5nZQorLS0gbm9uLWRlY2ltYWwgbGl0ZXJhbHMKK1NFTEVDVCAwYjEwMDEwMTsK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyAgICAgICAzNworKDEgcm93KQorCitTRUxFQ1Qg MG8xMTI7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgICAgICAgNzQKKygxIHJvdykKKwor U0VMRUNUIDB4NDJFOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorICAgICAxMDcwCisoMSBy b3cpCisKK1NFTEVDVCBpbnQ0ICcwYjEwMDEwMSc7CisgaW50NCAKKy0tLS0tLQorICAgMzcK KygxIHJvdykKKworU0VMRUNUIGludDQgJzBvMTEyJzsKKyBpbnQ0IAorLS0tLS0tCisgICA3 NAorKDEgcm93KQorCitTRUxFQ1QgaW50NCAnMHg0MkUnOworIGludDQgCistLS0tLS0KKyAx MDcwCisoMSByb3cpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv aW50OC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ludDgub3V0CmluZGV4IDM2 NTQwZWM0NTYuLjBhMWMyYWUyMTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvaW50OC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbnQ4Lm91 dApAQCAtOTMyLDMgKzkzMiwyMiBAQCBTRUxFQ1QgbGNtKCgtOTIyMzM3MjAzNjg1NDc3NTgw OCk6OmludDgsIDE6OmludDgpOyAtLSBvdmVyZmxvdwogRVJST1I6ICBiaWdpbnQgb3V0IG9m IHJhbmdlCiBTRUxFQ1QgbGNtKDkyMjMzNzIwMzY4NTQ3NzU4MDc6OmludDgsIDkyMjMzNzIw MzY4NTQ3NzU4MDY6OmludDgpOyAtLSBvdmVyZmxvdwogRVJST1I6ICBiaWdpbnQgb3V0IG9m IHJhbmdlCistLSBub24tZGVjaW1hbCBsaXRlcmFscworU0VMRUNUIGludDggJzBiMTAwMTAx JzsKKyBpbnQ4IAorLS0tLS0tCisgICAzNworKDEgcm93KQorCitTRUxFQ1QgaW50OCAnMG8x MTInOworIGludDggCistLS0tLS0KKyAgIDc0CisoMSByb3cpCisKK1NFTEVDVCBpbnQ4ICcw eDQyRSc7CisgaW50OCAKKy0tLS0tLQorIDEwNzAKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvaW50Mi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9p bnQyLnNxbAppbmRleCA2MTNiMzQ0NzA0Li5jNDQxMGZhNjJkIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9pbnQyLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9p bnQyLnNxbApAQCAtMTEyLDMgKzExMiwxMCBAQCBDUkVBVEUgVEFCTEUgSU5UMl9UQkwoZjEg aW50Mik7CiAgICAgICAgICAgICAgKDAuNTo6bnVtZXJpYyksCiAgICAgICAgICAgICAgKDEu NTo6bnVtZXJpYyksCiAgICAgICAgICAgICAgKDIuNTo6bnVtZXJpYykpIHQoeCk7CisKKwor LS0gbm9uLWRlY2ltYWwgbGl0ZXJhbHMKKworU0VMRUNUIGludDIgJzBiMTAwMTAxJzsKK1NF TEVDVCBpbnQyICcwbzExMic7CitTRUxFQ1QgaW50MiAnMHg0MkUnOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvaW50NC5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9p bnQ0LnNxbAppbmRleCA1NWVjMDdhMTQ3Li5jNGRhODZiYTMzIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9pbnQ0LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9p bnQ0LnNxbApAQCAtMTc2LDMgKzE3NiwxNCBAQCBDUkVBVEUgVEFCTEUgSU5UNF9UQkwoZjEg aW50NCk7CiAKIFNFTEVDVCBsY20oKC0yMTQ3NDgzNjQ4KTo6aW50NCwgMTo6aW50NCk7IC0t IG92ZXJmbG93CiBTRUxFQ1QgbGNtKDIxNDc0ODM2NDc6OmludDQsIDIxNDc0ODM2NDY6Omlu dDQpOyAtLSBvdmVyZmxvdworCisKKy0tIG5vbi1kZWNpbWFsIGxpdGVyYWxzCisKK1NFTEVD VCAwYjEwMDEwMTsKK1NFTEVDVCAwbzExMjsKK1NFTEVDVCAweDQyRTsKKworU0VMRUNUIGlu dDQgJzBiMTAwMTAxJzsKK1NFTEVDVCBpbnQ0ICcwbzExMic7CitTRUxFQ1QgaW50NCAnMHg0 MkUnOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW50OC5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9pbnQ4LnNxbAppbmRleCAzMjk0MGI0ZGFhLi40Y2M0ODMwYmRj IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbnQ4LnNxbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9pbnQ4LnNxbApAQCAtMjUwLDMgKzI1MCwxMCBAQCBDUkVBVEUg VEFCTEUgSU5UOF9UQkwocTEgaW50OCwgcTIgaW50OCk7CiAKIFNFTEVDVCBsY20oKC05MjIz MzcyMDM2ODU0Nzc1ODA4KTo6aW50OCwgMTo6aW50OCk7IC0tIG92ZXJmbG93CiBTRUxFQ1Qg bGNtKDkyMjMzNzIwMzY4NTQ3NzU4MDc6OmludDgsIDkyMjMzNzIwMzY4NTQ3NzU4MDY6Omlu dDgpOyAtLSBvdmVyZmxvdworCisKKy0tIG5vbi1kZWNpbWFsIGxpdGVyYWxzCisKK1NFTEVD VCBpbnQ4ICcwYjEwMDEwMSc7CitTRUxFQ1QgaW50OCAnMG8xMTInOworU0VMRUNUIGludDgg JzB4NDJFJzsKLS0gCjIuMzMuMAoK --------------AB8012F4DB761BDD295139DF--