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 1rvkZH-00E9Lg-2e for pgsql-hackers@arkaria.postgresql.org; Sat, 13 Apr 2024 21:05:47 +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 1rvkYF-005X7x-B0 for pgsql-hackers@arkaria.postgresql.org; Sat, 13 Apr 2024 21:04:43 +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 1rvkYE-005X7m-Tr for pgsql-hackers@lists.postgresql.org; Sat, 13 Apr 2024 21:04:43 +0000 Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rvkY9-000mpt-MY for pgsql-hackers@lists.postgresql.org; Sat, 13 Apr 2024 21:04:41 +0000 Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-570097653faso748122a12.0 for ; Sat, 13 Apr 2024 14:04:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1713042275; x=1713647075; darn=lists.postgresql.org; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=uhz0hmpMiLWWsRqQ0GrrFKqyMBVnT+M9PvFYASjXBvY=; b=DWfqYkCSpNPBuzTz+r+T5/LqhLWLEf+2iBrozHPo0KEhOaXxhtIyfMv8SCNDiilIkl iXJJEa3yTAF5bap/5/IvkIpCA0lkozLJY8veABiu7/mSNQ2yBFIGHgOYRmgg+aE+Fs3B 06hZSanhuFUJ22ScXgFPF9kPfArefDAJVP+wgCGQcu5MfLMwDPSwmhJ9NWJZkcREUCgR Uw0f2xeeAPk1OaRCMUD5EqbS0j6u6ZseTa+9DhGELt/Wsh5wPBUXE+0yMk2foaYn/lD2 SoyRRi200vBaJ4dAD/vcQk1AhQz62Up1nBYxPa+x0T4YzBQ6M5iH9mFelCnauLyaa4Hr ZuVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713042275; x=1713647075; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=uhz0hmpMiLWWsRqQ0GrrFKqyMBVnT+M9PvFYASjXBvY=; b=eVJp5lCykD38ImH6rUgvJWPywHzs7A6mQPZrm9lCpPM3skW2fbpHfDfDHHmeY7uQ5H PufWP7kfENkX0Ssy3n73kgqRDBUZPpVbRGf7QPsRhtVNn5X2cuaO6TjgGjHn675HHO4N zcnHP8Nc1HR4auyH6OZgpUSTe5h58vFfFs0JAU4wdQwRGVSbKlUaEV3BwlaV0G7Nwll7 w9FszQqxdV6vbn1kTczVCZ6XolSy7Vt30AULbn6xmUvaod3XrqcRHbbtU9yb0pO/jnJA XoeVo30Ts12yhecJR8Oc4/6fegipmsMMDKvL40HW8t4ghsj9oArIVDRFVLDX68LtXdKU FXVw== X-Forwarded-Encrypted: i=1; AJvYcCUWvXN1UVymOrm9D+MD54he8nWZqp4M0QvBB/7RzX6NQFuLyuUZarsoVmwq5d7iDm8x2qQhZOHXeiAkKtBRjekhZAirhbi0LvBoUfYiFbXP79nU X-Gm-Message-State: AOJu0Yz6ZqCoyoe1Xv2/9l+gnVk1fB47fpMBRSLHdmuLbkmJJ6P4HZ1P H3qqYwZtZwddTXFH0+FbOzm8p/JaDIQmzKl9leCAKkSeI4Pu4RpRgkMErgPudg== X-Google-Smtp-Source: AGHT+IFzf9HniTzO5RhozlI/+tYTODKi5PV5w7r8qHfUFyIjja0lty5nZIxkADV8HcY4VbXfapz8Yw== X-Received: by 2002:a50:9541:0:b0:570:1de9:4cd8 with SMTP id v1-20020a509541000000b005701de94cd8mr500655eda.42.1713042274894; Sat, 13 Apr 2024 14:04:34 -0700 (PDT) Received: from [10.137.0.18] (ip-86-49-229-30.bb.vodafone.cz. [86.49.229.30]) by smtp.gmail.com with ESMTPSA id j25-20020aa7c359000000b0056ff4faa0b9sm2311564edr.6.2024.04.13.14.04.34 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 13 Apr 2024 14:04:34 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------WAuV19S0qiI0SjsaGYYN9LWI" Message-ID: <1df00a66-db5a-4e66-809a-99b386a06d86@enterprisedb.com> Date: Sat, 13 Apr 2024 23:04:33 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Parallel CREATE INDEX for BRIN indexes From: Tomas Vondra To: Andres Freund Cc: Matthias van de Meent , PostgreSQL Hackers References: <99f9ecbe-0976-8012-67b5-dbff58c7dbec@enterprisedb.com> <32e3f645-389d-87f9-2ce7-33d0087f47d4@enterprisedb.com> <3733d042-71e1-6ae6-5fac-00c12db62db6@enterprisedb.com> <20240413083635.47yve2c5pp2xt5b6@awork3.anarazel.de> <4a9c0545-6697-47d3-bf7c-2f5d0d7a7319@enterprisedb.com> Content-Language: en-US In-Reply-To: <4a9c0545-6697-47d3-bf7c-2f5d0d7a7319@enterprisedb.com> 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. --------------WAuV19S0qiI0SjsaGYYN9LWI Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 4/13/24 11:19, Tomas Vondra wrote: > On 4/13/24 10:36, Andres Freund wrote: >> Hi, >> >> While preparing a differential code coverage report between 16 and HEAD, one >> thing that stands out is the parallel brin build code. Neither on >> coverage.postgresql.org nor locally is that code reached during our tests. >> > > Thanks for pointing this out, it's definitely something that I need to > improve (admittedly, should have been part of the patch). I'll also look > into eliminating the difference between BTREE and BRIN parallel builds, > mentioned in my last message in this thread. > Here's a couple patches adding a test for the parallel CREATE INDEX with BRIN. The actual test is 0003/0004 - I added the test to pageinspect, because that allows cross-checking the index to one built without parallelism, which I think is better than just doing CREATE INDEX without properly testing it produces correct results. It's not entirely trivial because for some opclasses (e.g. minmax-multi) the results depend on the order in which values are added, and order in which summaries from different workers are merged. Funnily enough, while adding the test, I ran into two pre-existing bugs. One is that brin_bloom_union forgot to update the number of bits set in the bitmap, another one is that 6bcda4a721 changes PG_DETOAST_DATUM to the _PACKED version, which however does the wrong thing. Both of which are mostly harmless - it only affects the output function, which is unused outside pageinspect. No impact on query correctness etc. The test needs a bit more work to make sure it works on 32-bit machines etc. which I think may affect available space on a page, which in turn might affect the minmax-multi summaries. But I'll take care this early next week. Funnily -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------WAuV19S0qiI0SjsaGYYN9LWI Content-Type: text/x-patch; charset=UTF-8; name="v20240413-0001-Update-nbits_set-in-brin_bloom_union.patch" Content-Disposition: attachment; filename*0="v20240413-0001-Update-nbits_set-in-brin_bloom_union.patch" Content-Transfer-Encoding: base64 RnJvbSA0NTBmOTkyYzEyZDQzYzE0YWExYjRiNzJjZmQ5ZDNjZTAyNTFlZWQxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHR2QGZ1enp5LmN6PgpEYXRl OiBTYXQsIDEzIEFwciAyMDI0IDIyOjE1OjI2ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2MjAy NDA0MTMgMS80XSBVcGRhdGUgbmJpdHNfc2V0IGluIGJyaW5fYmxvb21fdW5pb24KCldoZW4g bWVyZ2luZyBCUklOIGJsb29tIHN1bW1hcmllcywgaXQncyBub3QgZW5vdWdoIHRvIG1lcmdl IHRoZSBiaXRtYXBzLAp3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgbmJpdHNfc2V0IGNvdW50ZXIg dG9vLgoKVGhpcyBpcyBtb3N0bHkgaGFybWxlc3MsIGFzIGl0IGRvZXMgbm90IGFmZmVjdCBj b3JyZWN0bmVzcyAtIGFzIHRoZQpjb3VudGVyIGlzIHVzZWQgb25seSBpbiB0aGUgb3V0IGZ1 bmN0aW9uLCBhbmQgdGhhdCdzIHVzZWQgb25seSBpbgpwYWdlaW5zcGVjdCB0byBzaG93IGJh c2ljIGluZm8gYWJvdXQgdGhlIHN1bW1hcnkuCgpCYWNrcGF0Y2gtdGhyb3VnaDogMTQKLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX2Jsb29tLmMgfCAxMCArKysrKysrKysr CiAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fYmxvb20uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW5fYmxvb20uYwppbmRleCBlYmYzMzAxNjI3OS4uOWUzYmM1NjczMDMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fYmxvb20uYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX2Jsb29tLmMKQEAgLTY4NywxMCArNjg3LDIwIEBA IGJyaW5fYmxvb21fdW5pb24oUEdfRlVOQ1RJT05fQVJHUykKIAogCW5ieXRlcyA9IChmaWx0 ZXJfYS0+bmJpdHMpIC8gODsKIAorCWZpbHRlcl9hLT5uYml0c19zZXQgPSAwOworCiAJLyog c2ltcGx5IE9SIHRoZSBiaXRtYXBzICovCiAJZm9yIChpID0gMDsgaSA8IG5ieXRlczsgaSsr KQorCXsKIAkJZmlsdGVyX2EtPmRhdGFbaV0gfD0gZmlsdGVyX2ItPmRhdGFbaV07CiAKKwkJ Zm9yIChpbnQgYml0ID0gMDsgYml0IDwgODsgYml0KyspCisJCXsKKwkJCWlmIChmaWx0ZXJf YS0+ZGF0YVtpXSAmICgweDAxIDw8IGJpdCkpCisJCQkJZmlsdGVyX2EtPm5iaXRzX3NldCsr OworCQl9CisJfQorCiAJUEdfUkVUVVJOX1ZPSUQoKTsKIH0KIAotLSAKMi40NC4wCgo= --------------WAuV19S0qiI0SjsaGYYN9LWI Content-Type: text/x-patch; charset=UTF-8; name="v20240413-0002-Use-correct-PG_DETOAST_DATUM-macro-in-BRIN.patch" Content-Disposition: attachment; filename*0="v20240413-0002-Use-correct-PG_DETOAST_DATUM-macro-in-BRIN.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwNzczOTcxMzg5M2JiMGY2YmU1ODUzMzI0ZTg4OTcxNTljZjJhZDA3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHR2QGZ1enp5LmN6PgpEYXRl OiBTYXQsIDEzIEFwciAyMDI0IDIyOjE4OjM3ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2MjAy NDA0MTMgMi80XSBVc2UgY29ycmVjdCBQR19ERVRPQVNUX0RBVFVNIG1hY3JvIGluIEJSSU4K CkNvbW1pdCA2YmNkYTRhNzIxIHJlcGxhY2VkIFBHX0RFVE9BU1RfREFUVU0gd2l0aCBQR19E RVRPQVNUX0RBVFVNX1BBQ0tFRAppbiB0d28gcGxhY2VzLCBpbiBvdXRwdXQgZnVuY3Rpb24g Zm9yIG1pbm1heC1tdWx0aSBhbmQgYmxvb20uIEJ1dCB0aGlzCmlzIGluY29ycmVjdCAtIHRo ZSBzdHJ1Y3RzIGJhY2tpbmcgYm90aCBzdW1tYXJpZXMgaW5jbHVkZSA0QiBoZWFkZXIsIHNv CndlIG5lZWQgdG8gZGV0b2FzdCB0aGVtIGZ1bGx5LiBXaXRoIF9QQUNLRUQgd2UgbWF5IGVu ZCB1cCB3aXRoIDFCCmhlYWRlciwgc28gdGhlIGZpZWxkcyB3aWxsIGJlIHNoaWZ0ZWQgYW5k IGhhdmUgaW5jb3JyZWN0IHZhbHVlcy4KCkJhY2twYXRjaC10aHJvdWdoOiAxNgotLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fYmxvb20uYyAgICAgICAgfCAyICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heF9tdWx0aS5jIHwgMiArLQogMiBmaWxl cyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9ibG9vbS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2JyaW4vYnJpbl9ibG9vbS5jCmluZGV4IDllM2JjNTY3MzAzLi4xYzI0MzdjZWY3 NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9ibG9vbS5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fYmxvb20uYwpAQCAtODA3LDcgKzgw Nyw3IEBAIGJyaW5fYmxvb21fc3VtbWFyeV9vdXQoUEdfRlVOQ1RJT05fQVJHUykKIAlTdHJp bmdJbmZvRGF0YSBzdHI7CiAKIAkvKiBkZXRvYXN0IHRoZSBkYXRhIHRvIGdldCB2YWx1ZSB3 aXRoIGEgZnVsbCA0QiBoZWFkZXIgKi8KLQlmaWx0ZXIgPSAoQmxvb21GaWx0ZXIgKikgUEdf REVUT0FTVF9EQVRVTV9QQUNLRUQoUEdfR0VUQVJHX0RBVFVNKDApKTsKKwlmaWx0ZXIgPSAo Qmxvb21GaWx0ZXIgKikgUEdfREVUT0FTVF9EQVRVTShQR19HRVRBUkdfREFUVU0oMCkpOwog CiAJaW5pdFN0cmluZ0luZm8oJnN0cik7CiAJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJnN0ciwg J3snKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4 X211bHRpLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heF9tdWx0aS5j CmluZGV4IGM1OTYyYzAwZDY0Li5lNWQ5NWRlNWQ4NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXhfbXVsdGkuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvYnJpbi9icmluX21pbm1heF9tdWx0aS5jCkBAIC0zMDIzLDcgKzMwMjMsNyBAQCBi cmluX21pbm1heF9tdWx0aV9zdW1tYXJ5X291dChQR19GVU5DVElPTl9BUkdTKQogCSAqIERl dG9hc3QgdG8gZ2V0IHZhbHVlIHdpdGggZnVsbCA0QiBoZWFkZXIgKGNhbid0IGJlIHN0b3Jl ZCBpbiBhIHRvYXN0CiAJICogdGFibGUsIGJ1dCBjYW4gdXNlIDFCIGhlYWRlcikuCiAJICov Ci0JcmFuZ2VzID0gKFNlcmlhbGl6ZWRSYW5nZXMgKikgUEdfREVUT0FTVF9EQVRVTV9QQUNL RUQoUEdfR0VUQVJHX0RBVFVNKDApKTsKKwlyYW5nZXMgPSAoU2VyaWFsaXplZFJhbmdlcyAq KSBQR19ERVRPQVNUX0RBVFVNKFBHX0dFVEFSR19EQVRVTSgwKSk7CiAKIAkvKiBsb29rdXAg b3V0cHV0IGZ1bmMgZm9yIHRoZSB0eXBlICovCiAJZ2V0VHlwZU91dHB1dEluZm8ocmFuZ2Vz LT50eXBpZCwgJm91dGZ1bmMsICZpc3ZhcmxlbmEpOwotLSAKMi40NC4wCgo= --------------WAuV19S0qiI0SjsaGYYN9LWI Content-Type: text/x-patch; charset=UTF-8; name="v20240413-0003-Add-regression-tests-for-BRIN-parallel-bui.patch" Content-Disposition: attachment; filename*0="v20240413-0003-Add-regression-tests-for-BRIN-parallel-bui.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlNmM4YzZmNWQxZDk0MjBhNTE2NjUxMmFmMjVlN2MzNDA3YTg3N2QxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHR2QGZ1enp5LmN6PgpEYXRl OiBTYXQsIDEzIEFwciAyMDI0IDIyOjI1OjM1ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2MjAy NDA0MTMgMy80XSBBZGQgcmVncmVzc2lvbiB0ZXN0cyBmb3IgQlJJTiBwYXJhbGxlbCBidWls ZHMKCkFkZHMgcmVncmVzc2lvbiB0ZXN0IGZvciBwYXJhbGxlbCBDUkVBVEUgSU5ERVggd2l0 aCBhIEJSSU4gaW5kZXguIFRoZQp0ZXN0IGlzIGFkZGVkIHRvIHBhZ2VpbnNwZWN0LCBhbmQg d2hpY2ggbWFrZXMgaXQgZWFzeSB0byBjb21wYXJlIHRoZQpwYXJhbGxlbCBpbmRleCB0byBh biBpbmRleCBidWlsdCB3aXRob3V0IHBhcmFsbGVsaXNtLgotLS0KIGNvbnRyaWIvcGFnZWlu c3BlY3QvZXhwZWN0ZWQvYnJpbi5vdXQgfCAxMDYgKysrKysrKysrKysrKysrKysrKysrKysr KysKIGNvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL2JyaW4uc3FsICAgICAgfCAgODUgKysrKysr KysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE5MSBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9leHBlY3RlZC9icmluLm91dCBiL2Nv bnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvYnJpbi5vdXQKaW5kZXggM2Y2ZTUxNzRiYzYu LjY2YjE5OWRiYThhIDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0L2V4cGVjdGVk L2JyaW4ub3V0CisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvZXhwZWN0ZWQvYnJpbi5vdXQK QEAgLTEwOCwzICsxMDgsMTA5IEBAIFNFTEVDVCAoQ09VTlQoKikgPSAoU0VMRUNUIHJlbHBh Z2VzIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICd0ZXN0MicpKSBBUyByCiAKIERS T1AgVEFCTEUgdGVzdDE7CiBEUk9QIFRBQkxFIHRlc3QyOworLS0gdGVzdCB0aGF0IHBhcmFs bGVsIGluZGV4IGJ1aWxkIHByb2R1Y2VzIHRoZSBzYW1lIEJSSU4gaW5kZXggYXMgc2VyaWFs IGJ1aWxkCitDUkVBVEUgVEFCTEUgYnJpbl9wYXJhbGxlbF90ZXN0IChhIGludCwgYiB0ZXh0 KSBXSVRIIChmaWxsZmFjdG9yPTI1KTsKKy0tIGEgbWl4IG9mIE5VTExzIGFuZCBub24tTlVM TCB2YWx1ZXMKK0lOU0VSVCBJTlRPIGJyaW5fcGFyYWxsZWxfdGVzdAorU0VMRUNUIChDQVNF IFdIRU4gKG1vZChpLDIzMSkgPSAwKSBPUiAoaSBCRVRXRUVOIDM1MDAgQU5EIDQwMDApIFRI RU4gTlVMTCBFTFNFIGkgRU5EKSwKKyAgICAgICAoQ0FTRSBXSEVOIChtb2QoaSwyMzMpID0g MCkgT1IgKGkgQkVUV0VFTiAzNzUwIEFORCA0MjUwKSBUSEVOIE5VTEwgRUxTRSBtZDUoaTo6 dGV4dCkgRU5EKQorICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDAwKSBTKGkpOworLS0g ZGVsZXRlIGEgY291cGxlIHBhZ2VzLCB0byBtYWtlIGEgcmFuZ2UgZW1wdHkKK0RFTEVURSBG Uk9NIGJyaW5fcGFyYWxsZWxfdGVzdCBXSEVSRSBhIEJFVFdFRU4gMTAwMCBhbmQgMjAwMDsK Ky0tIHZhY3V1bSB0byBtYWtlIHRoZSByYW5nZXMgYWN0dWFsbHkgZW1wdHkKK1ZBQ1VVTSBi cmluX3BhcmFsbGVsX3Rlc3Q7CistLSBXZSBidWlsZCBpbmRleCB3aXRoIGRpZmZlcmVudCBC UklOIG9wY2xhc3NlcywgYnV0IHdlIGNhbid0IHVzZSBtaW5tYXgtbXVsdGkKKy0tIGJlY2F1 c2UgdGhlIHN1bW1hcnkgaXMgbm90IGRldGVybWluaXN0aWMgKGkuZS4gdGhlIG9yZGVyIG9m IHZhbHVlcyBhZmZlY3RzCistLSBob3cgcmFuZ2VzIGdldCBtZXJnZWQsIGFuZCBpZiB3b3Jr ZXJzIHNlZSByYW5kb20gc3Vic2V0cyBiZXR3ZWVuIHJ1bnMsIHRoYXQKKy0tIGFmZmVjdHMg dGhlIHJlc3VsdGluZyBzdW1tYXJpZXMgdG9vKS4gVGhlIHN1bW1hcmllcyBhcmUgZXF1aXZh bGVudCBpbiB0aGUKKy0tIHNlbnNlIHRoYXQgc2hvdWxkIGdpdmUgdGhlIHNhbWUgcXVlcnkg cmVzdWx0cywgYnV0IGxvb2sgZGlmZmVyZW50IGVub3VnaCB0bworLS0gbm90IGJlIHZlcnkg dXNlZnVsL2NvbnZlbmllbnQgZm9yIHRoaXMgdGVzdC4KK1NFVCBtYXhfcGFyYWxsZWxfbWFp bnRlbmFuY2Vfd29ya2VycyA9IDA7CitDUkVBVEUgSU5ERVggYnJpbl90ZXN0X3NlcmlhbF9p ZHggT04gYnJpbl9wYXJhbGxlbF90ZXN0IFVTSU5HIGJyaW4gKGEgaW50NF9taW5tYXhfb3Bz LCBhIGludDRfYmxvb21fb3BzLCBiKSBXSVRIIChwYWdlc19wZXJfcmFuZ2U9Nyk7CistLSBY WFggd2UgaGF2ZSB0byBzZXQgc29tZSBwYXJhbWV0ZXJzIHRvIGZvcmNlIHBhcmFsbGVsIGJ1 aWxkLCBib3RoIGJlY2F1c2UKKy0tIHRoZXJlJ3MgYSByZXF1aXJlbWVudCBmb3IgdGFibGUg c2l6ZSBhbmQgcGxhbl9jcmVhdGVfaW5kZXhfd29ya2VycyBhc3N1bWVzCistLSBlYWNoIHdv cmtlciB3aWxsIHVzZSB3b3JrX21lbT0zMk1CIGZvciBzb3J0aW5nICh3aGljaCB3b3JrcyBm b3IgYnRyZWUsIGJ1dAorLS0gbm90IHJlYWxseSBmb3IgQlJJTikKK1NFVCBtaW5fcGFyYWxs ZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK1NFVCBtYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vf d29ya2VycyA9IDQ7CitTRVQgbWFpbnRlbmFuY2Vfd29ya19tZW0gPSAnMTI4TUInOworQ1JF QVRFIElOREVYIGJyaW5fdGVzdF9wYXJhbGxlbF9pZHggT04gYnJpbl9wYXJhbGxlbF90ZXN0 IFVTSU5HIGJyaW4gKGEgaW50NF9taW5tYXhfb3BzLCBhIGludDRfYmxvb21fb3BzLCBiKSBX SVRIIChwYWdlc19wZXJfcmFuZ2U9Nyk7CitTRUxFQ1QgcmVsbmFtZSwgcmVscGFnZXMgRlJP TSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lIElOICgnYnJpbl90ZXN0X3NlcmlhbF9pZHgnLCAn YnJpbl90ZXN0X3BhcmFsbGVsX2lkeCcpIE9SREVSIEJZIHJlbG5hbWU7CisgICAgICAgIHJl bG5hbWUgICAgICAgICB8IHJlbHBhZ2VzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyBicmluX3Rlc3RfcGFyYWxsZWxfaWR4IHwgICAgICAgIDQKKyBicmluX3Rl c3Rfc2VyaWFsX2lkeCAgIHwgICAgICAgIDQKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00g YnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnYnJpbl90ZXN0X3BhcmFsbGVsX2lkeCcs IDIpLCAnYnJpbl90ZXN0X3BhcmFsbGVsX2lkeCcpCitFWENFUFQKK1NFTEVDVCAqIEZST00g YnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnYnJpbl90ZXN0X3NlcmlhbF9pZHgnLCAy KSwgJ2JyaW5fdGVzdF9zZXJpYWxfaWR4Jyk7CisgaXRlbW9mZnNldCB8IGJsa251bSB8IGF0 dG51bSB8IGFsbG51bGxzIHwgaGFzbnVsbHMgfCBwbGFjZWhvbGRlciB8IGVtcHR5IHwgdmFs dWUgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5fdGVzdF9zZXJpYWxf aWR4JywgMiksICdicmluX3Rlc3Rfc2VyaWFsX2lkeCcpCitFWENFUFQKK1NFTEVDVCAqIEZS T00gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnYnJpbl90ZXN0X3BhcmFsbGVsX2lk eCcsIDIpLCAnYnJpbl90ZXN0X3BhcmFsbGVsX2lkeCcpOworIGl0ZW1vZmZzZXQgfCBibGtu dW0gfCBhdHRudW0gfCBhbGxudWxscyB8IGhhc251bGxzIHwgcGxhY2Vob2xkZXIgfCBlbXB0 eSB8IHZhbHVlIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLQorKDAgcm93cykKKwor U0VMRUNUICogRlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdicmluX3Rlc3Rf cGFyYWxsZWxfaWR4JywgMyksICdicmluX3Rlc3RfcGFyYWxsZWxfaWR4JykKK0VYQ0VQVAor U0VMRUNUICogRlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdicmluX3Rlc3Rf c2VyaWFsX2lkeCcsIDMpLCAnYnJpbl90ZXN0X3NlcmlhbF9pZHgnKTsKKyBpdGVtb2Zmc2V0 IHwgYmxrbnVtIHwgYXR0bnVtIHwgYWxsbnVsbHMgfCBoYXNudWxscyB8IHBsYWNlaG9sZGVy IHwgZW1wdHkgfCB2YWx1ZSAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0KKygwIHJv d3MpCisKK1NFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnYnJp bl90ZXN0X3NlcmlhbF9pZHgnLCAzKSwgJ2JyaW5fdGVzdF9zZXJpYWxfaWR4JykKK0VYQ0VQ VAorU0VMRUNUICogRlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdicmluX3Rl c3RfcGFyYWxsZWxfaWR4JywgMyksICdicmluX3Rlc3RfcGFyYWxsZWxfaWR4Jyk7CisgaXRl bW9mZnNldCB8IGJsa251bSB8IGF0dG51bSB8IGFsbG51bGxzIHwgaGFzbnVsbHMgfCBwbGFj ZWhvbGRlciB8IGVtcHR5IHwgdmFsdWUgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0t CisoMCByb3dzKQorCistLSBub3cgZG8gdGhlIHNhbWUgcGFyYWxsZWwgYnVpbGQsIGJ1dCBk b24ndCBhbGxvdyBzdGFydGluZyBwYXJhbGxlbCB3b3JrZXJzCistLSB0byBmb3JjZSBmYWxs YmFjayB0byBzZXJpYWwgYnVpbGQsIGFuZCByZXBlYXQgdGhlIGNoZWNrcworRFJPUCBJTkRF WCBicmluX3Rlc3RfcGFyYWxsZWxfaWR4OworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzID0g MDsKK0NSRUFURSBJTkRFWCBicmluX3Rlc3RfcGFyYWxsZWxfaWR4IE9OIGJyaW5fcGFyYWxs ZWxfdGVzdCBVU0lORyBicmluIChhIGludDRfbWlubWF4X29wcywgYSBpbnQ0X2Jsb29tX29w cywgYikgV0lUSCAocGFnZXNfcGVyX3JhbmdlPTcpOworU0VMRUNUIHJlbG5hbWUsIHJlbHBh Z2VzIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZSBJTiAoJ2JyaW5fdGVzdF9zZXJpYWxf aWR4JywgJ2JyaW5fdGVzdF9wYXJhbGxlbF9pZHgnKSBPUkRFUiBCWSByZWxuYW1lOworICAg ICAgICByZWxuYW1lICAgICAgICAgfCByZWxwYWdlcyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgYnJpbl90ZXN0X3BhcmFsbGVsX2lkeCB8ICAgICAgICA0Cisg YnJpbl90ZXN0X3NlcmlhbF9pZHggICB8ICAgICAgICA0CisoMiByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5fdGVzdF9wYXJhbGxl bF9pZHgnLCAyKSwgJ2JyaW5fdGVzdF9wYXJhbGxlbF9pZHgnKQorRVhDRVBUCitTRUxFQ1Qg KiBGUk9NIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5fdGVzdF9zZXJpYWxf aWR4JywgMiksICdicmluX3Rlc3Rfc2VyaWFsX2lkeCcpOworIGl0ZW1vZmZzZXQgfCBibGtu dW0gfCBhdHRudW0gfCBhbGxudWxscyB8IGhhc251bGxzIHwgcGxhY2Vob2xkZXIgfCBlbXB0 eSB8IHZhbHVlIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLQorKDAgcm93cykKKwor U0VMRUNUICogRlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdicmluX3Rlc3Rf c2VyaWFsX2lkeCcsIDIpLCAnYnJpbl90ZXN0X3NlcmlhbF9pZHgnKQorRVhDRVBUCitTRUxF Q1QgKiBGUk9NIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5fdGVzdF9wYXJh bGxlbF9pZHgnLCAyKSwgJ2JyaW5fdGVzdF9wYXJhbGxlbF9pZHgnKTsKKyBpdGVtb2Zmc2V0 IHwgYmxrbnVtIHwgYXR0bnVtIHwgYWxsbnVsbHMgfCBoYXNudWxscyB8IHBsYWNlaG9sZGVy IHwgZW1wdHkgfCB2YWx1ZSAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0KKygwIHJv d3MpCisKK1NFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnYnJp bl90ZXN0X3BhcmFsbGVsX2lkeCcsIDMpLCAnYnJpbl90ZXN0X3BhcmFsbGVsX2lkeCcpCitF WENFUFQKK1NFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnYnJp bl90ZXN0X3NlcmlhbF9pZHgnLCAzKSwgJ2JyaW5fdGVzdF9zZXJpYWxfaWR4Jyk7CisgaXRl bW9mZnNldCB8IGJsa251bSB8IGF0dG51bSB8IGFsbG51bGxzIHwgaGFzbnVsbHMgfCBwbGFj ZWhvbGRlciB8IGVtcHR5IHwgdmFsdWUgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0t CisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3Bh Z2UoJ2JyaW5fdGVzdF9zZXJpYWxfaWR4JywgMyksICdicmluX3Rlc3Rfc2VyaWFsX2lkeCcp CitFWENFUFQKK1NFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgn YnJpbl90ZXN0X3BhcmFsbGVsX2lkeCcsIDMpLCAnYnJpbl90ZXN0X3BhcmFsbGVsX2lkeCcp OworIGl0ZW1vZmZzZXQgfCBibGtudW0gfCBhdHRudW0gfCBhbGxudWxscyB8IGhhc251bGxz IHwgcGxhY2Vob2xkZXIgfCBlbXB0eSB8IHZhbHVlIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0r LS0tLS0tLQorKDAgcm93cykKKworRFJPUCBUQUJMRSBicmluX3BhcmFsbGVsX3Rlc3Q7CitS RVNFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFsbGVs X21haW50ZW5hbmNlX3dvcmtlcnM7CitSRVNFVCBtYWludGVuYW5jZV93b3JrX21lbTsKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL2JyaW4uc3FsIGIvY29udHJpYi9w YWdlaW5zcGVjdC9zcWwvYnJpbi5zcWwKaW5kZXggNTBmMjYwYjhlMWYuLmFmZmQ4MDViYjI3 IDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0L3NxbC9icmluLnNxbAorKysgYi9j b250cmliL3BhZ2VpbnNwZWN0L3NxbC9icmluLnNxbApAQCAtNTQsMyArNTQsODggQEAgU0VM RUNUIChDT1VOVCgqKSA9IChTRUxFQ1QgcmVscGFnZXMgRlJPTSBwZ19jbGFzcyBXSEVSRSBy ZWxuYW1lID0gJ3Rlc3QyJykpIEFTIHIKIAogRFJPUCBUQUJMRSB0ZXN0MTsKIERST1AgVEFC TEUgdGVzdDI7CisKKy0tIHRlc3QgdGhhdCBwYXJhbGxlbCBpbmRleCBidWlsZCBwcm9kdWNl cyB0aGUgc2FtZSBCUklOIGluZGV4IGFzIHNlcmlhbCBidWlsZAorQ1JFQVRFIFRBQkxFIGJy aW5fcGFyYWxsZWxfdGVzdCAoYSBpbnQsIGIgdGV4dCkgV0lUSCAoZmlsbGZhY3Rvcj0yNSk7 CisKKy0tIGEgbWl4IG9mIE5VTExzIGFuZCBub24tTlVMTCB2YWx1ZXMKK0lOU0VSVCBJTlRP IGJyaW5fcGFyYWxsZWxfdGVzdAorU0VMRUNUIChDQVNFIFdIRU4gKG1vZChpLDIzMSkgPSAw KSBPUiAoaSBCRVRXRUVOIDM1MDAgQU5EIDQwMDApIFRIRU4gTlVMTCBFTFNFIGkgRU5EKSwK KyAgICAgICAoQ0FTRSBXSEVOIChtb2QoaSwyMzMpID0gMCkgT1IgKGkgQkVUV0VFTiAzNzUw IEFORCA0MjUwKSBUSEVOIE5VTEwgRUxTRSBtZDUoaTo6dGV4dCkgRU5EKQorICBGUk9NIGdl bmVyYXRlX3NlcmllcygxLDEwMDAwKSBTKGkpOworCistLSBkZWxldGUgYSBjb3VwbGUgcGFn ZXMsIHRvIG1ha2UgYSByYW5nZSBlbXB0eQorREVMRVRFIEZST00gYnJpbl9wYXJhbGxlbF90 ZXN0IFdIRVJFIGEgQkVUV0VFTiAxMDAwIGFuZCAyMDAwOworCistLSB2YWN1dW0gdG8gbWFr ZSB0aGUgcmFuZ2VzIGFjdHVhbGx5IGVtcHR5CitWQUNVVU0gYnJpbl9wYXJhbGxlbF90ZXN0 OworCistLSBXZSBidWlsZCBpbmRleCB3aXRoIGRpZmZlcmVudCBCUklOIG9wY2xhc3Nlcywg YnV0IHdlIGNhbid0IHVzZSBtaW5tYXgtbXVsdGkKKy0tIGJlY2F1c2UgdGhlIHN1bW1hcnkg aXMgbm90IGRldGVybWluaXN0aWMgKGkuZS4gdGhlIG9yZGVyIG9mIHZhbHVlcyBhZmZlY3Rz CistLSBob3cgcmFuZ2VzIGdldCBtZXJnZWQsIGFuZCBpZiB3b3JrZXJzIHNlZSByYW5kb20g c3Vic2V0cyBiZXR3ZWVuIHJ1bnMsIHRoYXQKKy0tIGFmZmVjdHMgdGhlIHJlc3VsdGluZyBz dW1tYXJpZXMgdG9vKS4gVGhlIHN1bW1hcmllcyBhcmUgZXF1aXZhbGVudCBpbiB0aGUKKy0t IHNlbnNlIHRoYXQgc2hvdWxkIGdpdmUgdGhlIHNhbWUgcXVlcnkgcmVzdWx0cywgYnV0IGxv b2sgZGlmZmVyZW50IGVub3VnaCB0bworLS0gbm90IGJlIHZlcnkgdXNlZnVsL2NvbnZlbmll bnQgZm9yIHRoaXMgdGVzdC4KK1NFVCBtYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2Vy cyA9IDA7CitDUkVBVEUgSU5ERVggYnJpbl90ZXN0X3NlcmlhbF9pZHggT04gYnJpbl9wYXJh bGxlbF90ZXN0IFVTSU5HIGJyaW4gKGEgaW50NF9taW5tYXhfb3BzLCBhIGludDRfYmxvb21f b3BzLCBiKSBXSVRIIChwYWdlc19wZXJfcmFuZ2U9Nyk7CisKKy0tIFhYWCB3ZSBoYXZlIHRv IHNldCBzb21lIHBhcmFtZXRlcnMgdG8gZm9yY2UgcGFyYWxsZWwgYnVpbGQsIGJvdGggYmVj YXVzZQorLS0gdGhlcmUncyBhIHJlcXVpcmVtZW50IGZvciB0YWJsZSBzaXplIGFuZCBwbGFu X2NyZWF0ZV9pbmRleF93b3JrZXJzIGFzc3VtZXMKKy0tIGVhY2ggd29ya2VyIHdpbGwgdXNl IHdvcmtfbWVtPTMyTUIgZm9yIHNvcnRpbmcgKHdoaWNoIHdvcmtzIGZvciBidHJlZSwgYnV0 CistLSBub3QgcmVhbGx5IGZvciBCUklOKQorU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2Fu X3NpemUgPSAwOworU0VUIG1heF9wYXJhbGxlbF9tYWludGVuYW5jZV93b3JrZXJzID0gNDsK K1NFVCBtYWludGVuYW5jZV93b3JrX21lbSA9ICcxMjhNQic7CitDUkVBVEUgSU5ERVggYnJp bl90ZXN0X3BhcmFsbGVsX2lkeCBPTiBicmluX3BhcmFsbGVsX3Rlc3QgVVNJTkcgYnJpbiAo YSBpbnQ0X21pbm1heF9vcHMsIGEgaW50NF9ibG9vbV9vcHMsIGIpIFdJVEggKHBhZ2VzX3Bl cl9yYW5nZT03KTsKKworU0VMRUNUIHJlbG5hbWUsIHJlbHBhZ2VzIEZST00gcGdfY2xhc3Mg V0hFUkUgcmVsbmFtZSBJTiAoJ2JyaW5fdGVzdF9zZXJpYWxfaWR4JywgJ2JyaW5fdGVzdF9w YXJhbGxlbF9pZHgnKSBPUkRFUiBCWSByZWxuYW1lOworCitTRUxFQ1QgKiBGUk9NIGJyaW5f cGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5fdGVzdF9wYXJhbGxlbF9pZHgnLCAyKSwg J2JyaW5fdGVzdF9wYXJhbGxlbF9pZHgnKQorRVhDRVBUCitTRUxFQ1QgKiBGUk9NIGJyaW5f cGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5fdGVzdF9zZXJpYWxfaWR4JywgMiksICdi cmluX3Rlc3Rfc2VyaWFsX2lkeCcpOworCitTRUxFQ1QgKiBGUk9NIGJyaW5fcGFnZV9pdGVt cyhnZXRfcmF3X3BhZ2UoJ2JyaW5fdGVzdF9zZXJpYWxfaWR4JywgMiksICdicmluX3Rlc3Rf c2VyaWFsX2lkeCcpCitFWENFUFQKK1NFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1zKGdl dF9yYXdfcGFnZSgnYnJpbl90ZXN0X3BhcmFsbGVsX2lkeCcsIDIpLCAnYnJpbl90ZXN0X3Bh cmFsbGVsX2lkeCcpOworCisKK1NFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1zKGdldF9y YXdfcGFnZSgnYnJpbl90ZXN0X3BhcmFsbGVsX2lkeCcsIDMpLCAnYnJpbl90ZXN0X3BhcmFs bGVsX2lkeCcpCitFWENFUFQKK1NFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1zKGdldF9y YXdfcGFnZSgnYnJpbl90ZXN0X3NlcmlhbF9pZHgnLCAzKSwgJ2JyaW5fdGVzdF9zZXJpYWxf aWR4Jyk7CisKK1NFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgn YnJpbl90ZXN0X3NlcmlhbF9pZHgnLCAzKSwgJ2JyaW5fdGVzdF9zZXJpYWxfaWR4JykKK0VY Q0VQVAorU0VMRUNUICogRlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdicmlu X3Rlc3RfcGFyYWxsZWxfaWR4JywgMyksICdicmluX3Rlc3RfcGFyYWxsZWxfaWR4Jyk7CisK Ky0tIG5vdyBkbyB0aGUgc2FtZSBwYXJhbGxlbCBidWlsZCwgYnV0IGRvbid0IGFsbG93IHN0 YXJ0aW5nIHBhcmFsbGVsIHdvcmtlcnMKKy0tIHRvIGZvcmNlIGZhbGxiYWNrIHRvIHNlcmlh bCBidWlsZCwgYW5kIHJlcGVhdCB0aGUgY2hlY2tzCisKK0RST1AgSU5ERVggYnJpbl90ZXN0 X3BhcmFsbGVsX2lkeDsKKworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzID0gMDsKK0NSRUFU RSBJTkRFWCBicmluX3Rlc3RfcGFyYWxsZWxfaWR4IE9OIGJyaW5fcGFyYWxsZWxfdGVzdCBV U0lORyBicmluIChhIGludDRfbWlubWF4X29wcywgYSBpbnQ0X2Jsb29tX29wcywgYikgV0lU SCAocGFnZXNfcGVyX3JhbmdlPTcpOworCitTRUxFQ1QgcmVsbmFtZSwgcmVscGFnZXMgRlJP TSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lIElOICgnYnJpbl90ZXN0X3NlcmlhbF9pZHgnLCAn YnJpbl90ZXN0X3BhcmFsbGVsX2lkeCcpIE9SREVSIEJZIHJlbG5hbWU7CisKK1NFTEVDVCAq IEZST00gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnYnJpbl90ZXN0X3BhcmFsbGVs X2lkeCcsIDIpLCAnYnJpbl90ZXN0X3BhcmFsbGVsX2lkeCcpCitFWENFUFQKK1NFTEVDVCAq IEZST00gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnYnJpbl90ZXN0X3NlcmlhbF9p ZHgnLCAyKSwgJ2JyaW5fdGVzdF9zZXJpYWxfaWR4Jyk7CisKK1NFTEVDVCAqIEZST00gYnJp bl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnYnJpbl90ZXN0X3NlcmlhbF9pZHgnLCAyKSwg J2JyaW5fdGVzdF9zZXJpYWxfaWR4JykKK0VYQ0VQVAorU0VMRUNUICogRlJPTSBicmluX3Bh Z2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdicmluX3Rlc3RfcGFyYWxsZWxfaWR4JywgMiksICdi cmluX3Rlc3RfcGFyYWxsZWxfaWR4Jyk7CisKKworU0VMRUNUICogRlJPTSBicmluX3BhZ2Vf aXRlbXMoZ2V0X3Jhd19wYWdlKCdicmluX3Rlc3RfcGFyYWxsZWxfaWR4JywgMyksICdicmlu X3Rlc3RfcGFyYWxsZWxfaWR4JykKK0VYQ0VQVAorU0VMRUNUICogRlJPTSBicmluX3BhZ2Vf aXRlbXMoZ2V0X3Jhd19wYWdlKCdicmluX3Rlc3Rfc2VyaWFsX2lkeCcsIDMpLCAnYnJpbl90 ZXN0X3NlcmlhbF9pZHgnKTsKKworU0VMRUNUICogRlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0 X3Jhd19wYWdlKCdicmluX3Rlc3Rfc2VyaWFsX2lkeCcsIDMpLCAnYnJpbl90ZXN0X3Nlcmlh bF9pZHgnKQorRVhDRVBUCitTRUxFQ1QgKiBGUk9NIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3 X3BhZ2UoJ2JyaW5fdGVzdF9wYXJhbGxlbF9pZHgnLCAzKSwgJ2JyaW5fdGVzdF9wYXJhbGxl bF9pZHgnKTsKKworCitEUk9QIFRBQkxFIGJyaW5fcGFyYWxsZWxfdGVzdDsKK1JFU0VUIG1p bl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CitSRVNFVCBtYXhfcGFyYWxsZWxfbWFpbnRl bmFuY2Vfd29ya2VyczsKK1JFU0VUIG1haW50ZW5hbmNlX3dvcmtfbWVtOwotLSAKMi40NC4w Cgo= --------------WAuV19S0qiI0SjsaGYYN9LWI Content-Type: text/x-patch; charset=UTF-8; name="v20240413-0004-add-minmax-multi-to-the-regression-test.patch" Content-Disposition: attachment; filename*0="v20240413-0004-add-minmax-multi-to-the-regression-test.patch" Content-Transfer-Encoding: base64 RnJvbSBhNzk0NDZiZGM0NmM4NWFlOWU5Mzg2ZTU1YmMzZjdkYTQzNTIzMTA2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHR2QGZ1enp5LmN6PgpEYXRl OiBTYXQsIDEzIEFwciAyMDI0IDIyOjUwOjUzICswMjAwClN1YmplY3Q6IFtQQVRDSCB2MjAy NDA0MTMgNC80XSBhZGQgbWlubWF4LW11bHRpIHRvIHRoZSByZWdyZXNzaW9uIHRlc3QKCi0t LQogY29udHJpYi9wYWdlaW5zcGVjdC9leHBlY3RlZC9icmluLm91dCB8IDI1ICsrKysrKysr KysrKysrLS0tLS0tLS0tLS0KIGNvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL2JyaW4uc3FsICAg ICAgfCAyNSArKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDI4 IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIv cGFnZWluc3BlY3QvZXhwZWN0ZWQvYnJpbi5vdXQgYi9jb250cmliL3BhZ2VpbnNwZWN0L2V4 cGVjdGVkL2JyaW4ub3V0CmluZGV4IDY2YjE5OWRiYThhLi4zM2U1NjVmODMwMCAxMDA2NDQK LS0tIGEvY29udHJpYi9wYWdlaW5zcGVjdC9leHBlY3RlZC9icmluLm91dAorKysgYi9jb250 cmliL3BhZ2VpbnNwZWN0L2V4cGVjdGVkL2JyaW4ub3V0CkBAIC0xMDksMjQgKzEwOSwyNyBA QCBTRUxFQ1QgKENPVU5UKCopID0gKFNFTEVDVCByZWxwYWdlcyBGUk9NIHBnX2NsYXNzIFdI RVJFIHJlbG5hbWUgPSAndGVzdDInKSkgQVMgcgogRFJPUCBUQUJMRSB0ZXN0MTsKIERST1Ag VEFCTEUgdGVzdDI7CiAtLSB0ZXN0IHRoYXQgcGFyYWxsZWwgaW5kZXggYnVpbGQgcHJvZHVj ZXMgdGhlIHNhbWUgQlJJTiBpbmRleCBhcyBzZXJpYWwgYnVpbGQKLUNSRUFURSBUQUJMRSBi cmluX3BhcmFsbGVsX3Rlc3QgKGEgaW50LCBiIHRleHQpIFdJVEggKGZpbGxmYWN0b3I9MjUp OworQ1JFQVRFIFRBQkxFIGJyaW5fcGFyYWxsZWxfdGVzdCAoYSBpbnQsIGIgdGV4dCwgYyBi aWdpbnQpIFdJVEggKGZpbGxmYWN0b3I9NDApOwogLS0gYSBtaXggb2YgTlVMTHMgYW5kIG5v bi1OVUxMIHZhbHVlcwogSU5TRVJUIElOVE8gYnJpbl9wYXJhbGxlbF90ZXN0CiBTRUxFQ1Qg KENBU0UgV0hFTiAobW9kKGksMjMxKSA9IDApIE9SIChpIEJFVFdFRU4gMzUwMCBBTkQgNDAw MCkgVEhFTiBOVUxMIEVMU0UgaSBFTkQpLAotICAgICAgIChDQVNFIFdIRU4gKG1vZChpLDIz MykgPSAwKSBPUiAoaSBCRVRXRUVOIDM3NTAgQU5EIDQyNTApIFRIRU4gTlVMTCBFTFNFIG1k NShpOjp0ZXh0KSBFTkQpCisgICAgICAgKENBU0UgV0hFTiAobW9kKGksMjMzKSA9IDApIE9S IChpIEJFVFdFRU4gMzc1MCBBTkQgNDI1MCkgVEhFTiBOVUxMIEVMU0UgbWQ1KGk6OnRleHQp IEVORCksCisgICAgICAgKENBU0UgV0hFTiAobW9kKGksMjMzKSA9IDApIE9SIChpIEJFVFdF RU4gMzc1MCBBTkQgNDI1MCkgVEhFTiBOVUxMIEVMU0UgKGkvNDApICsgbW9kKGksOCkgRU5E KQogICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMDAwKSBTKGkpOwogLS0gZGVsZXRlIGEg Y291cGxlIHBhZ2VzLCB0byBtYWtlIGEgcmFuZ2UgZW1wdHkKIERFTEVURSBGUk9NIGJyaW5f cGFyYWxsZWxfdGVzdCBXSEVSRSBhIEJFVFdFRU4gMTAwMCBhbmQgMjAwMDsKIC0tIHZhY3V1 bSB0byBtYWtlIHRoZSByYW5nZXMgYWN0dWFsbHkgZW1wdHkKIFZBQ1VVTSBicmluX3BhcmFs bGVsX3Rlc3Q7Ci0tLSBXZSBidWlsZCBpbmRleCB3aXRoIGRpZmZlcmVudCBCUklOIG9wY2xh c3NlcywgYnV0IHdlIGNhbid0IHVzZSBtaW5tYXgtbXVsdGkKLS0tIGJlY2F1c2UgdGhlIHN1 bW1hcnkgaXMgbm90IGRldGVybWluaXN0aWMgKGkuZS4gdGhlIG9yZGVyIG9mIHZhbHVlcyBh ZmZlY3RzCi0tLSBob3cgcmFuZ2VzIGdldCBtZXJnZWQsIGFuZCBpZiB3b3JrZXJzIHNlZSBy YW5kb20gc3Vic2V0cyBiZXR3ZWVuIHJ1bnMsIHRoYXQKLS0tIGFmZmVjdHMgdGhlIHJlc3Vs dGluZyBzdW1tYXJpZXMgdG9vKS4gVGhlIHN1bW1hcmllcyBhcmUgZXF1aXZhbGVudCBpbiB0 aGUKLS0tIHNlbnNlIHRoYXQgc2hvdWxkIGdpdmUgdGhlIHNhbWUgcXVlcnkgcmVzdWx0cywg YnV0IGxvb2sgZGlmZmVyZW50IGVub3VnaCB0bwotLS0gbm90IGJlIHZlcnkgdXNlZnVsL2Nv bnZlbmllbnQgZm9yIHRoaXMgdGVzdC4KKy0tIFdlIGJ1aWxkIGluZGV4IHdpdGggZGlmZmVy ZW50IEJSSU4gb3BjbGFzc2VzIC0gbWlubWF4LCBibG9vbSBhbmQgbWlubWF4LW11bHRpLgor LS0gV2l0aCBtaW5tYXgtbXVsdGkgd2UgbmVlZCB0byBiZSBtb3JlIGNhcmVmdWwsIGJlY2F1 c2UgdGhlIHN1bW1hcnkgaXMgbm90CistLSBlbnRpcmVseSBkZXRlcm1pbmlzdGljIC0gdGhl IG9yZGVyIG9mIHZhbHVlcyBhZmZlY3RzIGhvdyByYW5nZXMgZ2V0IG1lcmdlZCwKKy0tIGFu ZCBpZiB3b3JrZXJzIHNlZSByYW5kb20gc3Vic2V0cyBiZXR3ZWVuIHJ1bnMsIHRoYXQgYWZm ZWN0cyB0aGUgcmVzdWx0aW5nCistLSBzdW1tYXJpZXMgdG9vKS4gVGhlIHN1bW1hcmllcyB3 b3VsZCBiZSBlcXVpdmFsZW50IGluIHRoZSBzZW5zZSB0aGF0IHNob3VsZAorLS0gZ2l2ZSB0 aGUgc2FtZSBxdWVyeSByZXN1bHRzLCBidXQgYXJlIG5vdCBlcXVhbCBmb3IgRVhDRVBUIHRv IHdvcmsuIFRvIHdvcmsKKy0tIGFyb3VuZCB0aGF0LCB3ZSBnZW5lcmF0ZSBvbmx5IHNtYWxs IG51bWJlciBvZiB2YWx1ZXMgdG8ga2VlcCBleGFjdCB2YWx1ZXMsCistLSBpbiB3aGljaCBj YXNlIHRoZSBvcmRlcmluZyBkb2VzIG5vdCBtYXR0ZXIuCiBTRVQgbWF4X3BhcmFsbGVsX21h aW50ZW5hbmNlX3dvcmtlcnMgPSAwOwotQ1JFQVRFIElOREVYIGJyaW5fdGVzdF9zZXJpYWxf aWR4IE9OIGJyaW5fcGFyYWxsZWxfdGVzdCBVU0lORyBicmluIChhIGludDRfbWlubWF4X29w cywgYSBpbnQ0X2Jsb29tX29wcywgYikgV0lUSCAocGFnZXNfcGVyX3JhbmdlPTcpOworQ1JF QVRFIElOREVYIGJyaW5fdGVzdF9zZXJpYWxfaWR4IE9OIGJyaW5fcGFyYWxsZWxfdGVzdCBV U0lORyBicmluIChhIGludDRfbWlubWF4X29wcywgYSBpbnQ0X2Jsb29tX29wcywgYiwgYyBp bnQ4X21pbm1heF9tdWx0aV9vcHMpIFdJVEggKHBhZ2VzX3Blcl9yYW5nZT03KTsKIC0tIFhY WCB3ZSBoYXZlIHRvIHNldCBzb21lIHBhcmFtZXRlcnMgdG8gZm9yY2UgcGFyYWxsZWwgYnVp bGQsIGJvdGggYmVjYXVzZQogLS0gdGhlcmUncyBhIHJlcXVpcmVtZW50IGZvciB0YWJsZSBz aXplIGFuZCBwbGFuX2NyZWF0ZV9pbmRleF93b3JrZXJzIGFzc3VtZXMKIC0tIGVhY2ggd29y a2VyIHdpbGwgdXNlIHdvcmtfbWVtPTMyTUIgZm9yIHNvcnRpbmcgKHdoaWNoIHdvcmtzIGZv ciBidHJlZSwgYnV0CkBAIC0xMzQsNyArMTM3LDcgQEAgQ1JFQVRFIElOREVYIGJyaW5fdGVz dF9zZXJpYWxfaWR4IE9OIGJyaW5fcGFyYWxsZWxfdGVzdCBVU0lORyBicmluIChhIGludDRf bWlubWEKIFNFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKIFNFVCBtYXhf cGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2VycyA9IDQ7CiBTRVQgbWFpbnRlbmFuY2Vfd29y a19tZW0gPSAnMTI4TUInOwotQ1JFQVRFIElOREVYIGJyaW5fdGVzdF9wYXJhbGxlbF9pZHgg T04gYnJpbl9wYXJhbGxlbF90ZXN0IFVTSU5HIGJyaW4gKGEgaW50NF9taW5tYXhfb3BzLCBh IGludDRfYmxvb21fb3BzLCBiKSBXSVRIIChwYWdlc19wZXJfcmFuZ2U9Nyk7CitDUkVBVEUg SU5ERVggYnJpbl90ZXN0X3BhcmFsbGVsX2lkeCBPTiBicmluX3BhcmFsbGVsX3Rlc3QgVVNJ TkcgYnJpbiAoYSBpbnQ0X21pbm1heF9vcHMsIGEgaW50NF9ibG9vbV9vcHMsIGIsIGMgaW50 OF9taW5tYXhfbXVsdGlfb3BzKSBXSVRIIChwYWdlc19wZXJfcmFuZ2U9Nyk7CiBTRUxFQ1Qg cmVsbmFtZSwgcmVscGFnZXMgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lIElOICgnYnJp bl90ZXN0X3NlcmlhbF9pZHgnLCAnYnJpbl90ZXN0X3BhcmFsbGVsX2lkeCcpIE9SREVSIEJZ IHJlbG5hbWU7CiAgICAgICAgIHJlbG5hbWUgICAgICAgICB8IHJlbHBhZ2VzIAogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KQEAgLTE3NCw3ICsxNzcsNyBAQCBTRUxF Q1QgKiBGUk9NIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5fdGVzdF9wYXJh bGxlbF9pZHgnLCAzKSwgJ2JyaW5fdAogLS0gdG8gZm9yY2UgZmFsbGJhY2sgdG8gc2VyaWFs IGJ1aWxkLCBhbmQgcmVwZWF0IHRoZSBjaGVja3MKIERST1AgSU5ERVggYnJpbl90ZXN0X3Bh cmFsbGVsX2lkeDsKIFNFVCBtYXhfcGFyYWxsZWxfd29ya2VycyA9IDA7Ci1DUkVBVEUgSU5E RVggYnJpbl90ZXN0X3BhcmFsbGVsX2lkeCBPTiBicmluX3BhcmFsbGVsX3Rlc3QgVVNJTkcg YnJpbiAoYSBpbnQ0X21pbm1heF9vcHMsIGEgaW50NF9ibG9vbV9vcHMsIGIpIFdJVEggKHBh Z2VzX3Blcl9yYW5nZT03KTsKK0NSRUFURSBJTkRFWCBicmluX3Rlc3RfcGFyYWxsZWxfaWR4 IE9OIGJyaW5fcGFyYWxsZWxfdGVzdCBVU0lORyBicmluIChhIGludDRfbWlubWF4X29wcywg YSBpbnQ0X2Jsb29tX29wcywgYiwgYyBpbnQ4X21pbm1heF9tdWx0aV9vcHMpIFdJVEggKHBh Z2VzX3Blcl9yYW5nZT03KTsKIFNFTEVDVCByZWxuYW1lLCByZWxwYWdlcyBGUk9NIHBnX2Ns YXNzIFdIRVJFIHJlbG5hbWUgSU4gKCdicmluX3Rlc3Rfc2VyaWFsX2lkeCcsICdicmluX3Rl c3RfcGFyYWxsZWxfaWR4JykgT1JERVIgQlkgcmVsbmFtZTsKICAgICAgICAgcmVsbmFtZSAg ICAgICAgIHwgcmVscGFnZXMgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9zcWwvYnJpbi5zcWwgYi9jb250 cmliL3BhZ2VpbnNwZWN0L3NxbC9icmluLnNxbAppbmRleCBhZmZkODA1YmIyNy4uZjExM2Rl MzljNWQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL2JyaW4uc3FsCisr KyBiL2NvbnRyaWIvcGFnZWluc3BlY3Qvc3FsL2JyaW4uc3FsCkBAIC01NiwxMiArNTYsMTMg QEAgRFJPUCBUQUJMRSB0ZXN0MTsKIERST1AgVEFCTEUgdGVzdDI7CiAKIC0tIHRlc3QgdGhh dCBwYXJhbGxlbCBpbmRleCBidWlsZCBwcm9kdWNlcyB0aGUgc2FtZSBCUklOIGluZGV4IGFz IHNlcmlhbCBidWlsZAotQ1JFQVRFIFRBQkxFIGJyaW5fcGFyYWxsZWxfdGVzdCAoYSBpbnQs IGIgdGV4dCkgV0lUSCAoZmlsbGZhY3Rvcj0yNSk7CitDUkVBVEUgVEFCTEUgYnJpbl9wYXJh bGxlbF90ZXN0IChhIGludCwgYiB0ZXh0LCBjIGJpZ2ludCkgV0lUSCAoZmlsbGZhY3Rvcj00 MCk7CiAKIC0tIGEgbWl4IG9mIE5VTExzIGFuZCBub24tTlVMTCB2YWx1ZXMKIElOU0VSVCBJ TlRPIGJyaW5fcGFyYWxsZWxfdGVzdAogU0VMRUNUIChDQVNFIFdIRU4gKG1vZChpLDIzMSkg PSAwKSBPUiAoaSBCRVRXRUVOIDM1MDAgQU5EIDQwMDApIFRIRU4gTlVMTCBFTFNFIGkgRU5E KSwKLSAgICAgICAoQ0FTRSBXSEVOIChtb2QoaSwyMzMpID0gMCkgT1IgKGkgQkVUV0VFTiAz NzUwIEFORCA0MjUwKSBUSEVOIE5VTEwgRUxTRSBtZDUoaTo6dGV4dCkgRU5EKQorICAgICAg IChDQVNFIFdIRU4gKG1vZChpLDIzMykgPSAwKSBPUiAoaSBCRVRXRUVOIDM3NTAgQU5EIDQy NTApIFRIRU4gTlVMTCBFTFNFIG1kNShpOjp0ZXh0KSBFTkQpLAorICAgICAgIChDQVNFIFdI RU4gKG1vZChpLDIzMykgPSAwKSBPUiAoaSBCRVRXRUVOIDM3NTAgQU5EIDQyNTApIFRIRU4g TlVMTCBFTFNFIChpLzQwKSArIG1vZChpLDgpIEVORCkKICAgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwxMDAwMCkgUyhpKTsKIAogLS0gZGVsZXRlIGEgY291cGxlIHBhZ2VzLCB0byBtYWtl IGEgcmFuZ2UgZW1wdHkKQEAgLTcwLDE0ICs3MSwxNiBAQCBERUxFVEUgRlJPTSBicmluX3Bh cmFsbGVsX3Rlc3QgV0hFUkUgYSBCRVRXRUVOIDEwMDAgYW5kIDIwMDA7CiAtLSB2YWN1dW0g dG8gbWFrZSB0aGUgcmFuZ2VzIGFjdHVhbGx5IGVtcHR5CiBWQUNVVU0gYnJpbl9wYXJhbGxl bF90ZXN0OwogCi0tLSBXZSBidWlsZCBpbmRleCB3aXRoIGRpZmZlcmVudCBCUklOIG9wY2xh c3NlcywgYnV0IHdlIGNhbid0IHVzZSBtaW5tYXgtbXVsdGkKLS0tIGJlY2F1c2UgdGhlIHN1 bW1hcnkgaXMgbm90IGRldGVybWluaXN0aWMgKGkuZS4gdGhlIG9yZGVyIG9mIHZhbHVlcyBh ZmZlY3RzCi0tLSBob3cgcmFuZ2VzIGdldCBtZXJnZWQsIGFuZCBpZiB3b3JrZXJzIHNlZSBy YW5kb20gc3Vic2V0cyBiZXR3ZWVuIHJ1bnMsIHRoYXQKLS0tIGFmZmVjdHMgdGhlIHJlc3Vs dGluZyBzdW1tYXJpZXMgdG9vKS4gVGhlIHN1bW1hcmllcyBhcmUgZXF1aXZhbGVudCBpbiB0 aGUKLS0tIHNlbnNlIHRoYXQgc2hvdWxkIGdpdmUgdGhlIHNhbWUgcXVlcnkgcmVzdWx0cywg YnV0IGxvb2sgZGlmZmVyZW50IGVub3VnaCB0bwotLS0gbm90IGJlIHZlcnkgdXNlZnVsL2Nv bnZlbmllbnQgZm9yIHRoaXMgdGVzdC4KKy0tIFdlIGJ1aWxkIGluZGV4IHdpdGggZGlmZmVy ZW50IEJSSU4gb3BjbGFzc2VzIC0gbWlubWF4LCBibG9vbSBhbmQgbWlubWF4LW11bHRpLgor LS0gV2l0aCBtaW5tYXgtbXVsdGkgd2UgbmVlZCB0byBiZSBtb3JlIGNhcmVmdWwsIGJlY2F1 c2UgdGhlIHN1bW1hcnkgaXMgbm90CistLSBlbnRpcmVseSBkZXRlcm1pbmlzdGljIC0gdGhl IG9yZGVyIG9mIHZhbHVlcyBhZmZlY3RzIGhvdyByYW5nZXMgZ2V0IG1lcmdlZCwKKy0tIGFu ZCBpZiB3b3JrZXJzIHNlZSByYW5kb20gc3Vic2V0cyBiZXR3ZWVuIHJ1bnMsIHRoYXQgYWZm ZWN0cyB0aGUgcmVzdWx0aW5nCistLSBzdW1tYXJpZXMgdG9vKS4gVGhlIHN1bW1hcmllcyB3 b3VsZCBiZSBlcXVpdmFsZW50IGluIHRoZSBzZW5zZSB0aGF0IHNob3VsZAorLS0gZ2l2ZSB0 aGUgc2FtZSBxdWVyeSByZXN1bHRzLCBidXQgYXJlIG5vdCBlcXVhbCBmb3IgRVhDRVBUIHRv IHdvcmsuIFRvIHdvcmsKKy0tIGFyb3VuZCB0aGF0LCB3ZSBnZW5lcmF0ZSBvbmx5IHNtYWxs IG51bWJlciBvZiB2YWx1ZXMgdG8ga2VlcCBleGFjdCB2YWx1ZXMsCistLSBpbiB3aGljaCBj YXNlIHRoZSBvcmRlcmluZyBkb2VzIG5vdCBtYXR0ZXIuCiBTRVQgbWF4X3BhcmFsbGVsX21h aW50ZW5hbmNlX3dvcmtlcnMgPSAwOwotQ1JFQVRFIElOREVYIGJyaW5fdGVzdF9zZXJpYWxf aWR4IE9OIGJyaW5fcGFyYWxsZWxfdGVzdCBVU0lORyBicmluIChhIGludDRfbWlubWF4X29w cywgYSBpbnQ0X2Jsb29tX29wcywgYikgV0lUSCAocGFnZXNfcGVyX3JhbmdlPTcpOworQ1JF QVRFIElOREVYIGJyaW5fdGVzdF9zZXJpYWxfaWR4IE9OIGJyaW5fcGFyYWxsZWxfdGVzdCBV U0lORyBicmluIChhIGludDRfbWlubWF4X29wcywgYSBpbnQ0X2Jsb29tX29wcywgYiwgYyBp bnQ4X21pbm1heF9tdWx0aV9vcHMpIFdJVEggKHBhZ2VzX3Blcl9yYW5nZT03KTsKIAogLS0g WFhYIHdlIGhhdmUgdG8gc2V0IHNvbWUgcGFyYW1ldGVycyB0byBmb3JjZSBwYXJhbGxlbCBi dWlsZCwgYm90aCBiZWNhdXNlCiAtLSB0aGVyZSdzIGEgcmVxdWlyZW1lbnQgZm9yIHRhYmxl IHNpemUgYW5kIHBsYW5fY3JlYXRlX2luZGV4X3dvcmtlcnMgYXNzdW1lcwpAQCAtODYsNyAr ODksNyBAQCBDUkVBVEUgSU5ERVggYnJpbl90ZXN0X3NlcmlhbF9pZHggT04gYnJpbl9wYXJh bGxlbF90ZXN0IFVTSU5HIGJyaW4gKGEgaW50NF9taW5tYQogU0VUIG1pbl9wYXJhbGxlbF90 YWJsZV9zY2FuX3NpemUgPSAwOwogU0VUIG1heF9wYXJhbGxlbF9tYWludGVuYW5jZV93b3Jr ZXJzID0gNDsKIFNFVCBtYWludGVuYW5jZV93b3JrX21lbSA9ICcxMjhNQic7Ci1DUkVBVEUg SU5ERVggYnJpbl90ZXN0X3BhcmFsbGVsX2lkeCBPTiBicmluX3BhcmFsbGVsX3Rlc3QgVVNJ TkcgYnJpbiAoYSBpbnQ0X21pbm1heF9vcHMsIGEgaW50NF9ibG9vbV9vcHMsIGIpIFdJVEgg KHBhZ2VzX3Blcl9yYW5nZT03KTsKK0NSRUFURSBJTkRFWCBicmluX3Rlc3RfcGFyYWxsZWxf aWR4IE9OIGJyaW5fcGFyYWxsZWxfdGVzdCBVU0lORyBicmluIChhIGludDRfbWlubWF4X29w cywgYSBpbnQ0X2Jsb29tX29wcywgYiwgYyBpbnQ4X21pbm1heF9tdWx0aV9vcHMpIFdJVEgg KHBhZ2VzX3Blcl9yYW5nZT03KTsKIAogU0VMRUNUIHJlbG5hbWUsIHJlbHBhZ2VzIEZST00g cGdfY2xhc3MgV0hFUkUgcmVsbmFtZSBJTiAoJ2JyaW5fdGVzdF9zZXJpYWxfaWR4JywgJ2Jy aW5fdGVzdF9wYXJhbGxlbF9pZHgnKSBPUkRFUiBCWSByZWxuYW1lOwogCkBAIC0xMTMsNyAr MTE2LDcgQEAgU0VMRUNUICogRlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdi cmluX3Rlc3RfcGFyYWxsZWxfaWR4JywgMyksICdicmluX3QKIERST1AgSU5ERVggYnJpbl90 ZXN0X3BhcmFsbGVsX2lkeDsKIAogU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzID0gMDsKLUNS RUFURSBJTkRFWCBicmluX3Rlc3RfcGFyYWxsZWxfaWR4IE9OIGJyaW5fcGFyYWxsZWxfdGVz dCBVU0lORyBicmluIChhIGludDRfbWlubWF4X29wcywgYSBpbnQ0X2Jsb29tX29wcywgYikg V0lUSCAocGFnZXNfcGVyX3JhbmdlPTcpOworQ1JFQVRFIElOREVYIGJyaW5fdGVzdF9wYXJh bGxlbF9pZHggT04gYnJpbl9wYXJhbGxlbF90ZXN0IFVTSU5HIGJyaW4gKGEgaW50NF9taW5t YXhfb3BzLCBhIGludDRfYmxvb21fb3BzLCBiLCBjIGludDhfbWlubWF4X211bHRpX29wcykg V0lUSCAocGFnZXNfcGVyX3JhbmdlPTcpOwogCiBTRUxFQ1QgcmVsbmFtZSwgcmVscGFnZXMg RlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lIElOICgnYnJpbl90ZXN0X3NlcmlhbF9pZHgn LCAnYnJpbl90ZXN0X3BhcmFsbGVsX2lkeCcpIE9SREVSIEJZIHJlbG5hbWU7CiAKLS0gCjIu NDQuMAoK --------------WAuV19S0qiI0SjsaGYYN9LWI--