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 1pSTBs-0005WP-DO for pgsql-hackers@arkaria.postgresql.org; Thu, 16 Feb 2023 01:36:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pSTBq-0007jU-KU for pgsql-hackers@arkaria.postgresql.org; Thu, 16 Feb 2023 01:36:02 +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 1pSTBo-0007jK-5U for pgsql-hackers@lists.postgresql.org; Thu, 16 Feb 2023 01:36:02 +0000 Received: from mail-ej1-x629.google.com ([2a00:1450:4864:20::629]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pSTBg-0000Uw-1A for pgsql-hackers@lists.postgresql.org; Thu, 16 Feb 2023 01:35:58 +0000 Received: by mail-ej1-x629.google.com with SMTP id my5so1555308ejc.7 for ; Wed, 15 Feb 2023 17:35:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=in-reply-to:references:to:from:content-language:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=WGrjCMPseTZT8WXo9cT30KqmNfCR5WCRKKYflm5rRIk=; b=kKO6FrD3Hl2ajTtQEmSc9+G0Og37gQcPtPxkyOBdT4qpVTGTwltuWNNlZiiJKQa1Jo +f5tY8ZiLEnmTRQCJrEHS72Zfw2ywjjMVUF7MeCJip7C8sbR43rxNl2P95zoEf7ncng1 RoYLKkU2frpCzAJmWBvj7dS3p8XVDYHfXwoeSP3hEBrneSEaBbz81Tdtiau/jtlkVEy5 EMhq+jzKliTmYXCuM0QrEvu3JElvY+3b0fqtgYF4UsIdFzpljQXHZ2ZAGU1bHThn8luD nmb5sSO8A30zOeFvAftV5GVGYvfhTCUlnmMzq+IBxn1rscu0Fxpxekrprd9dMsw2Z/le G//Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:references:to:from:content-language:subject:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=WGrjCMPseTZT8WXo9cT30KqmNfCR5WCRKKYflm5rRIk=; b=GSYEH2JioHHIWr1MpHiFokhfC4A/HZTkDZwVSb+WbB3eUvH0oMFqyt/XPx0xe885Bf lmuarUAjYbw1XKPu8B8KG6n24MipLvWEQdErMJX3kqV3QIepgRUloAdDllCXrBnkkFHb P3VHoqCGY3x/M/5ddukI+U0QbScWmbiXeWA0l9bmES9y6zH3WgRChcwbIy/vv5xKI4oS wo4RXbHh2YsB9WCvXkH5kmiJ664K/Olm+3i5g73dfSLgpnFTvQ/Z2Eem/bqIOGymoPh2 L1/rsiXPDq5iizgVza6zpKPrvAw1Z8OSjqzJmY+hfKrBhHGibk79dz5a4pWL9vyd/M6i GXoA== X-Gm-Message-State: AO0yUKWMpubzGeFQakqSE88uelQDqpYXfVh6jWJhAzQgxnkT4Hj1YnFw TfypZcBMXPF3mJ+9oR+HVFt98xn4oJ+d2rNxq9byiz0L5YXl57eEfnavXhXbk0p/IsTmNhXqxMi To88mbtpcF6HQGygqkX6rozTuG22qTT50wPtrncSUlynxueJCV/x8vQurVf7rXMydaC4saN+XVv OHE3fKMaH/TGdALK0nnEOpIo7AdeLuTyiZI/+uUokW22iXL8Mw+i+KmvuRjVSvvn9W5Q+oEmUrS 5Ddm1VW6w3NdUfR9yShIgfq1B5lY8lvfgz/+/4vvoDRdCQ+NXeHR0MM X-Google-Smtp-Source: AK7set8bh6CLlRqYhr1sOPZ2vbSoq87HWnwVZTa3f63bobchWUahvOvUYebhK/eEH3gp8tqoLKClrg== X-Received: by 2002:a17:907:a407:b0:8b1:383a:6b4d with SMTP id sg7-20020a170907a40700b008b1383a6b4dmr621190ejc.16.1676511349713; Wed, 15 Feb 2023 17:35:49 -0800 (PST) Received: from [10.137.0.17] (ip-86-49-228-162.bb.vodafone.cz. [86.49.228.162]) by smtp.gmail.com with ESMTPSA id f13-20020a170906560d00b0087879f8c65asm106246ejq.89.2023.02.15.17.35.49 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 15 Feb 2023 17:35:49 -0800 (PST) Content-Type: multipart/mixed; boundary="------------mzJK0H1XSWOfxSV5Dx6We88O" Message-ID: <0e1f3350-c9cf-ab62-43a5-5dae314de89c@enterprisedb.com> Date: Thu, 16 Feb 2023 02:35:47 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: BRIN indexes vs. SK_SEARCHARRAY (and preprocessing scan keys) Content-Language: en-US From: Tomas Vondra To: PostgreSQL Hackers References: In-Reply-To: X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 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. --------------mzJK0H1XSWOfxSV5Dx6We88O Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, Attached is a patch series adopting the idea of scan key preprocessing in brinrescan(), and producing scan keys. It turns out to work pretty nicely, and it allows different opclasses doing different things: - minmax / minmax-multi: sort the array values (leave scalars alone) - inclusion: no preprocessing - bloom: precalculate hash values The _consistent functions are modified to leverage the preprocessed keys. I wonder if it should check the existence of the (optional) procedure, and fallback to the non-optimized search if not defined. That would allow opclasses (e.g. from extensions) to keep using the built-in consistent function without tweaking the definition to also have the preprocess function. But that seems like a rather minor issue, especially because the number of external opclasses is tiny and updating the definition to also reference the preprocess function is trivial. I don't think it's worth the extra code complexity. 0001 and 0002 are minor code cleanup in the opclasses introduced in PG 13. There's a couple places assigning boolean values to Datum variables, and misleading comments. 0003 is a minor refactoring making the Bloom filter size calculation easier to reuse. 0004 introduces the optional "preprocess" opclass procedure, and calls it for keys from brinrescan(). 0005-0008 add the preprocess procedure to the various BRIN types, and adjust the consistent procedures accordingly. Attached is a python script I used to measure this. It builds a table with 10M rows, with sequential but slightly randomized (value may move within the 1% of table), and minmax/bloom indexes. The table has ~500MB, the indexes are using pages_per_range=1 (tiny, but simulates large table with regular page ranges). And then the script queries the table with different number of random values in the "IN (...)" clause, and measures query duration (in ms). The results look like this: int text index values master patched master patched int text ------------------------------------------------------------------ minmax 1 7 7 27 25 100% 92% 10 66 15 277 70 23% 25% 20 132 16 558 85 12% 15% 50 331 21 1398 102 7% 7% 100 663 29 2787 118 4% 4% 500 3312 81 13964 198 2% 1% ------------------------------------------------------------------ bloom 1 30 27 23 18 92% 77% 10 302 208 231 35 69% 15% 20 585 381 463 54 65% 12% 50 1299 761 1159 111 59% 10% 100 2194 1099 2312 204 50% 9% 500 6850 1228 11559 918 18% 8% ------------------------------------------------------------------ With minmax, consider for example queries with 20 values, which used to take ~130ms, but with the patch this drops to 16ms (~23%). And the improvement is even more significant for larger number of values. For text data the results are pretty comparable. With bloom indexes, the improvements are proportional to how expensive the hash function is (for the data type). For int the hash is fairly cheap, so the improvement is rather moderate (but visible). For text, the improvements are way more significant - for 10 values the duration is reduced by a whopping 85%. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------mzJK0H1XSWOfxSV5Dx6We88O Content-Type: text/x-patch; charset=UTF-8; name="0001-BRIN-bloom-cleanup-20230215.patch" Content-Disposition: attachment; filename="0001-BRIN-bloom-cleanup-20230215.patch" Content-Transfer-Encoding: base64 RnJvbSA5YzI3MjZlOWEyMjdkYWQyZWQxMWQyNDZiZWEzMjFjMzdlMzhjNWMxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogV2VkLCAxNSBGZWIgMjAyMyAxMjozOToyMyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMS85XSBCUklOIGJsb29tIGNsZWFudXAKCk1pbm9yIGNsZWFudXAgb2YgdGhlIEJS SU4gYmxvb20gY29kZSAtIHVzZSB0aGUgcHJvcGVyIGRhdGEgdHlwZSBmb3IgdGhlCmJvb2xl YW4gdmFyaWFibGUsIGFuZCBjb3JyZWN0IGNvbW1lbnQgY29waWVkIGZyb20gbWlubWF4Lgot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fYmxvb20uYyB8IDEyICsrKysrKy0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX2Jsb29tLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX2Jsb29tLmMKaW5kZXggZTQ5NTNhOWQzNy4u NmM3MTY5MjRmZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9i bG9vbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fYmxvb20uYwpAQCAt NTc0LDcgKzU3NCw3IEBAIGJyaW5fYmxvb21fY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdT KQogCU9pZAkJCWNvbGxvaWQgPSBQR19HRVRfQ09MTEFUSU9OKCk7CiAJQXR0ck51bWJlcglh dHRubzsKIAlEYXR1bQkJdmFsdWU7Ci0JRGF0dW0JCW1hdGNoZXM7CisJYm9vbAkJbWF0Y2hl czsKIAlGbWdySW5mbyAgICpmaW5mbzsKIAl1aW50MzIJCWhhc2hWYWx1ZTsKIAlCbG9vbUZp bHRlciAqZmlsdGVyOwpAQCAtNTg0LDYgKzU4NCw3IEBAIGJyaW5fYmxvb21fY29uc2lzdGVu dChQR19GVU5DVElPTl9BUkdTKQogCiAJQXNzZXJ0KGZpbHRlcik7CiAKKwkvKiBhc3N1bWUg YWxsIHNjYW4ga2V5cyBtYXRjaCAqLwogCW1hdGNoZXMgPSB0cnVlOwogCiAJZm9yIChrZXlu byA9IDA7IGtleW5vIDwgbmtleXM7IGtleW5vKyspCkBAIC02MDEsOSArNjAyLDggQEAgYnJp bl9ibG9vbV9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQljYXNlIEJsb29tRXF1 YWxTdHJhdGVneU51bWJlcjoKIAogCQkJCS8qCi0JCQkJICogSW4gdGhlIGVxdWFsaXR5IGNh c2UgKFdIRVJFIGNvbCA9IHNvbWV2YWwpLCB3ZSB3YW50IHRvCi0JCQkJICogcmV0dXJuIHRo ZSBjdXJyZW50IHBhZ2UgcmFuZ2UgaWYgdGhlIG1pbmltdW0gdmFsdWUgaW4gdGhlCi0JCQkJ ICogcmFuZ2UgPD0gc2NhbiBrZXksIGFuZCB0aGUgbWF4aW11bSB2YWx1ZSA+PSBzY2FuIGtl eS4KKwkJCQkgKiBXZSB3YW50IHRvIHJldHVybiB0aGUgY3VycmVudCBwYWdlIHJhbmdlIGlm IHRoZSBibG9vbSBmaWx0ZXIKKwkJCQkgKiBzZWVtcyB0byBjb250YWluIHRoZSB2YWx1ZS4K IAkJCQkgKi8KIAkJCQlmaW5mbyA9IGJsb29tX2dldF9wcm9jaW5mbyhiZGVzYywgYXR0bm8s IFBST0NOVU1fSEFTSCk7CiAKQEAgLTYxNCw3ICs2MTQsNyBAQCBicmluX2Jsb29tX2NvbnNp c3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWRlZmF1bHQ6CiAJCQkJLyogc2hvdWxkbid0 IGhhcHBlbiAqLwogCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIHN0cmF0ZWd5IG51bWJlciAl ZCIsIGtleS0+c2tfc3RyYXRlZ3kpOwotCQkJCW1hdGNoZXMgPSAwOworCQkJCW1hdGNoZXMg PSBmYWxzZTsKIAkJCQlicmVhazsKIAkJfQogCkBAIC02MjIsNyArNjIyLDcgQEAgYnJpbl9i bG9vbV9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQlicmVhazsKIAl9CiAKLQlQ R19SRVRVUk5fREFUVU0obWF0Y2hlcyk7CisJUEdfUkVUVVJOX0JPT0wobWF0Y2hlcyk7CiB9 CiAKIC8qCi0tIAoyLjM5LjEKCg== --------------mzJK0H1XSWOfxSV5Dx6We88O Content-Type: text/x-patch; charset=UTF-8; name="0002-BRIN-minmax-multi-cleanup-20230215.patch" Content-Disposition: attachment; filename="0002-BRIN-minmax-multi-cleanup-20230215.patch" Content-Transfer-Encoding: base64 RnJvbSBiNTc1MTRlZDQ0NTY2Mjk1YmI4Mzg4ZGIyMDBiN2QxNjM4ZGRhMDAyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogV2VkLCAxNSBGZWIgMjAyMyAxMjo1Mzo0NyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMi85XSBCUklOIG1pbm1heC1tdWx0aSBjbGVhbnVwCgpXaGVuIGFzc2lnbmluZyB0 byBhIERhdHVtIHZhcmlhYmxlLCB1c2UgQm9vbEdldERhdHVtKCkgY29uc2lzdGVudGx5LgpT aW1ucGxpZnkgdGhlIGNvZGUgYnkgdXNpbmcgUEdfUkVUVVJOX0JPT0woKS4KLS0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heF9tdWx0aS5jIHwgMTQgKysrKysrKy0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXhfbXVs dGkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4X211bHRpLmMKaW5k ZXggMGFjZTYwMzViZS4uODU5ZTAwMjJmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbl9taW5tYXhfbXVsdGkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluX21pbm1heF9tdWx0aS5jCkBAIC0yNjI3LDcgKzI2MjcsNyBAQCBicmluX21p bm1heF9tdWx0aV9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQlGbWdySW5m byAgICpjbXBGbjsKIAogCQkJCQkJLyogYnkgZGVmYXVsdCB0aGlzIHJhbmdlIGRvZXMgbm90 IG1hdGNoICovCi0JCQkJCQltYXRjaGVzID0gZmFsc2U7CisJCQkJCQltYXRjaGVzID0gQm9v bEdldERhdHVtKGZhbHNlKTsKIAogCQkJCQkJLyoKIAkJCQkJCSAqIE90aGVyd2lzZSwgbmVl ZCB0byBjb21wYXJlIHRoZSBuZXcgdmFsdWUgd2l0aApAQCAtMjY1NSw3ICsyNjU1LDcgQEAg YnJpbl9taW5tYXhfbXVsdGlfY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJ ICogV2UgaGF2ZW4ndCBtYW5hZ2VkIHRvIGVsaW1pbmF0ZSB0aGlzIHJhbmdlLCBzbwogCQkJ CQkJICogY29uc2lkZXIgaXQgbWF0Y2hpbmcuCiAJCQkJCQkgKi8KLQkJCQkJCW1hdGNoZXMg PSB0cnVlOworCQkJCQkJbWF0Y2hlcyA9IEJvb2xHZXREYXR1bSh0cnVlKTsKIAogCQkJCQkJ YnJlYWs7CiAJCQkJCX0KQEAgLTI2NzAsNyArMjY3MCw3IEBAIGJyaW5fbWlubWF4X211bHRp X2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQlkZWZhdWx0OgogCQkJCQkvKiBz aG91bGRuJ3QgaGFwcGVuICovCiAJCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIHN0cmF0ZWd5 IG51bWJlciAlZCIsIGtleS0+c2tfc3RyYXRlZ3kpOwotCQkJCQltYXRjaGVzID0gMDsKKwkJ CQkJbWF0Y2hlcyA9IEJvb2xHZXREYXR1bShmYWxzZSk7CiAJCQkJCWJyZWFrOwogCQkJfQog CkBAIC0yNjg2LDcgKzI2ODYsNyBAQCBicmluX21pbm1heF9tdWx0aV9jb25zaXN0ZW50KFBH X0ZVTkNUSU9OX0FSR1MpCiAJCSAqIGhhdmUgd2UgZm91bmQgYSByYW5nZSBtYXRjaGluZyBh bGwgc2NhbiBrZXlzPyBpZiB5ZXMsIHdlJ3JlIGRvbmUKIAkJICovCiAJCWlmIChtYXRjaGlu ZykKLQkJCVBHX1JFVFVSTl9EQVRVTShCb29sR2V0RGF0dW0odHJ1ZSkpOworCQkJUEdfUkVU VVJOX0JPT0wodHJ1ZSk7CiAJfQogCiAJLyoKQEAgLTI3MjksNyArMjcyOSw3IEBAIGJyaW5f bWlubWF4X211bHRpX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQlkZWZhdWx0 OgogCQkJCQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCiAJCQkJCWVsb2coRVJST1IsICJpbnZh bGlkIHN0cmF0ZWd5IG51bWJlciAlZCIsIGtleS0+c2tfc3RyYXRlZ3kpOwotCQkJCQltYXRj aGVzID0gMDsKKwkJCQkJbWF0Y2hlcyA9IEJvb2xHZXREYXR1bShmYWxzZSk7CiAJCQkJCWJy ZWFrOwogCQkJfQogCkBAIC0yNzQzLDEwICsyNzQzLDEwIEBAIGJyaW5fbWlubWF4X211bHRp X2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAogCQkvKiBoYXZlIHdlIGZvdW5kIGEg cmFuZ2UgbWF0Y2hpbmcgYWxsIHNjYW4ga2V5cz8gaWYgeWVzLCB3ZSdyZSBkb25lICovCiAJ CWlmIChtYXRjaGluZykKLQkJCVBHX1JFVFVSTl9EQVRVTShCb29sR2V0RGF0dW0odHJ1ZSkp OworCQkJUEdfUkVUVVJOX0JPT0wodHJ1ZSk7CiAJfQogCi0JUEdfUkVUVVJOX0RBVFVNKEJv b2xHZXREYXR1bShmYWxzZSkpOworCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKIH0KIAogLyoK LS0gCjIuMzkuMQoK --------------mzJK0H1XSWOfxSV5Dx6We88O Content-Type: text/x-patch; charset=UTF-8; name="0003-Introduce-bloom_filter_size-20230215.patch" Content-Disposition: attachment; filename="0003-Introduce-bloom_filter_size-20230215.patch" Content-Transfer-Encoding: base64 RnJvbSA1YzQ4Zjk0ODQ4NmE1YjRkYTVlODg4YWI1NzQ1MTgxOGViYjM2ZWVmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogVHVlLCAxNCBGZWIgMjAyMyAyMDoyODowOCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMy85XSBJbnRyb2R1Y2UgYmxvb21fZmlsdGVyX3NpemUKCldyYXAgY2FsY3VsYXRp b24gb2YgQmxvb20gZmlsdGVyIHBhcmFtZXRlcnMgKGZyb20gbmRpc3RpbmN0IGFuZCBmYWxz ZQpwb3NpdGl2ZSByYXRlKSBpbnRvIGEgZnVuY3Rpb24uIFdlJ2xsIG5lZWQgdG8gZG8gdGhp cyBjYWxjdWxhdGlvbiBpbgpvdGhlciBwbGFjZXMsIGFuZCB0aGlzIG1ha2VzIGl0IG1vcmUg Y29uc2lzdGVudC4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX2Jsb29tLmMg fCA2MyArKysrKysrKysrKysrKysrKysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNDcg aW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2JyaW4vYnJpbl9ibG9vbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4v YnJpbl9ibG9vbS5jCmluZGV4IDZjNzE2OTI0ZmYuLjRmZjgwYWViMGMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fYmxvb20uYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluX2Jsb29tLmMKQEAgLTI1OSw2ICsyNTksNDggQEAgdHlwZWRl ZiBzdHJ1Y3QgQmxvb21GaWx0ZXIKIAljaGFyCQlkYXRhW0ZMRVhJQkxFX0FSUkFZX01FTUJF Ul07CiB9IEJsb29tRmlsdGVyOwogCisvKgorICogYmxvb21fZmlsdGVyX3NpemUKKyAqCQlD YWxjdWxhdGUgQmxvb20gZmlsdGVyIHBhcmFtZXRlcnMgKG5iaXRzLCBuYnl0ZXMsIG5oYXNo ZXMpLgorICoKKyAqIEdpdmVuIGV4cGVjdGVkIG51bWJlciBvZiBkaXN0aW5jdCB2YWx1ZXMg YW5kIGRlc2lyZWQgZmFsc2UgcG9zaXRpdmUgcmF0ZSwKKyAqIGNhbGN1bGF0ZXMgdGhlIG9w dGltYWwgcGFyYW1ldGVycyBvZiB0aGUgQmxvb20gZmlsdGVyLgorICoKKyAqIFRoZSByZXN1 bHRpbmcgcGFyYW1ldGVycyBhcmUgcmV0dXJuZWQgdGhyb3VnaCBuYnl0ZXNwIChudW1iZXIg b2YgYnl0ZXMpLAorICogbmJpdHNwIChudW1iZXIgb2YgYml0cykgYW5kIG5oYXNoZXNwIChu dW1iZXIgb2YgaGFzaCBmdW5jdGlvbnMpLiBJZiBhCisgKiBwb2ludGVyIGlzIE5VTEwsIHRo ZSBwYXJhbWV0ZXIgaXMgbm90IHJldHVybmVkLgorICovCitzdGF0aWMgdm9pZAorYmxvb21f ZmlsdGVyX3NpemUoaW50IG5kaXN0aW5jdCwgZG91YmxlIGZhbHNlX3Bvc2l0aXZlX3JhdGUs CisJCQkJICBpbnQgKm5ieXRlc3AsIGludCAqbmJpdHNwLCBpbnQgKm5oYXNoZXNwKQorewor CWRvdWJsZQlrOworCWludAkJbmJpdHMsCisJCQluYnl0ZXM7CisKKwkvKiBzaXppbmcgYmxv b20gZmlsdGVyOiAtKG4gKiBsbihwKSkgLyAobG4oMikpXjIgKi8KKwluYml0cyA9IGNlaWwo LShuZGlzdGluY3QgKiBsb2coZmFsc2VfcG9zaXRpdmVfcmF0ZSkpIC8gcG93KGxvZygyLjAp LCAyKSk7CisKKwkvKiByb3VuZCBtIHRvIHdob2xlIGJ5dGVzICovCisJbmJ5dGVzID0gKChu Yml0cyArIDcpIC8gOCk7CisJbmJpdHMgPSBuYnl0ZXMgKiA4OworCisJLyoKKwkgKiByb3Vu ZChsb2coMi4wKSAqIG0gLyBuZGlzdGluY3QpLCBidXQgYXNzdW1lIHJvdW5kKCkgbWF5IG5v dCBiZQorCSAqIGF2YWlsYWJsZSBvbiBXaW5kb3dzCisJICovCisJayA9IGxvZygyLjApICog bmJpdHMgLyBuZGlzdGluY3Q7CisJayA9IChrIC0gZmxvb3IoaykgPj0gMC41KSA/IGNlaWwo aykgOiBmbG9vcihrKTsKKworCWlmIChuYnl0ZXNwKQorCQkqbmJ5dGVzcCA9IG5ieXRlczsK KworCWlmIChuYml0c3ApCisJCSpuYml0c3AgPSBuYml0czsKKworCWlmIChuaGFzaGVzcCkK KwkJKm5oYXNoZXNwID0gKGludCkgazsKK30KIAogLyoKICAqIGJsb29tX2luaXQKQEAgLTI3 NSwxOSArMzE3LDE1IEBAIGJsb29tX2luaXQoaW50IG5kaXN0aW5jdCwgZG91YmxlIGZhbHNl X3Bvc2l0aXZlX3JhdGUpCiAKIAlpbnQJCQluYml0czsJCQkvKiBzaXplIG9mIGZpbHRlciAv IG51bWJlciBvZiBiaXRzICovCiAJaW50CQkJbmJ5dGVzOwkJCS8qIHNpemUgb2YgZmlsdGVy IC8gbnVtYmVyIG9mIGJ5dGVzICovCi0KLQlkb3VibGUJCWs7CQkJCS8qIG51bWJlciBvZiBo YXNoIGZ1bmN0aW9ucyAqLworCWludAkJCW5oYXNoZXM7CQkvKiBudW1iZXIgb2YgaGFzaCBm dW5jdGlvbnMgKi8KIAogCUFzc2VydChuZGlzdGluY3QgPiAwKTsKIAlBc3NlcnQoKGZhbHNl X3Bvc2l0aXZlX3JhdGUgPj0gQkxPT01fTUlOX0ZBTFNFX1BPU0lUSVZFX1JBVEUpICYmCiAJ CSAgIChmYWxzZV9wb3NpdGl2ZV9yYXRlIDwgQkxPT01fTUFYX0ZBTFNFX1BPU0lUSVZFX1JB VEUpKTsKIAotCS8qIHNpemluZyBibG9vbSBmaWx0ZXI6IC0obiAqIGxuKHApKSAvIChsbigy KSleMiAqLwotCW5iaXRzID0gY2VpbCgtKG5kaXN0aW5jdCAqIGxvZyhmYWxzZV9wb3NpdGl2 ZV9yYXRlKSkgLyBwb3cobG9nKDIuMCksIDIpKTsKLQotCS8qIHJvdW5kIG0gdG8gd2hvbGUg Ynl0ZXMgKi8KLQluYnl0ZXMgPSAoKG5iaXRzICsgNykgLyA4KTsKLQluYml0cyA9IG5ieXRl cyAqIDg7CisJLyogY2FsY3VsYXRlIGJsb29tIGZpbHRlciBzaXplIC8gcGFyYW1ldGVycyAq LworCWJsb29tX2ZpbHRlcl9zaXplKG5kaXN0aW5jdCwgZmFsc2VfcG9zaXRpdmVfcmF0ZSwK KwkJCQkJICAmbmJ5dGVzLCAmbmJpdHMsICZuaGFzaGVzKTsKIAogCS8qCiAJICogUmVqZWN0 IGZpbHRlcnMgdGhhdCBhcmUgb2J2aW91c2x5IHRvbyBsYXJnZSB0byBzdG9yZSBvbiBhIHBh Z2UuCkBAIC0zMTAsMTMgKzM0OCw2IEBAIGJsb29tX2luaXQoaW50IG5kaXN0aW5jdCwgZG91 YmxlIGZhbHNlX3Bvc2l0aXZlX3JhdGUpCiAJCWVsb2coRVJST1IsICJ0aGUgYmxvb20gZmls dGVyIGlzIHRvbyBsYXJnZSAoJWQgPiAlenUpIiwgbmJ5dGVzLAogCQkJIEJsb29tTWF4Rmls dGVyU2l6ZSk7CiAKLQkvKgotCSAqIHJvdW5kKGxvZygyLjApICogbSAvIG5kaXN0aW5jdCks IGJ1dCBhc3N1bWUgcm91bmQoKSBtYXkgbm90IGJlCi0JICogYXZhaWxhYmxlIG9uIFdpbmRv d3MKLQkgKi8KLQlrID0gbG9nKDIuMCkgKiBuYml0cyAvIG5kaXN0aW5jdDsKLQlrID0gKGsg LSBmbG9vcihrKSA+PSAwLjUpID8gY2VpbChrKSA6IGZsb29yKGspOwotCiAJLyoKIAkgKiBX ZSBhbGxvY2F0ZSB0aGUgd2hvbGUgZmlsdGVyLiBNb3N0IG9mIGl0IGlzIGdvaW5nIHRvIGJl IDAgYml0cywgc28gdGhlCiAJICogdmFybGVuYSBpcyBlYXN5IHRvIGNvbXByZXNzLgpAQCAt MzI2LDcgKzM1Nyw3IEBAIGJsb29tX2luaXQoaW50IG5kaXN0aW5jdCwgZG91YmxlIGZhbHNl X3Bvc2l0aXZlX3JhdGUpCiAJZmlsdGVyID0gKEJsb29tRmlsdGVyICopIHBhbGxvYzAobGVu KTsKIAogCWZpbHRlci0+ZmxhZ3MgPSAwOwotCWZpbHRlci0+bmhhc2hlcyA9IChpbnQpIGs7 CisJZmlsdGVyLT5uaGFzaGVzID0gbmhhc2hlczsKIAlmaWx0ZXItPm5iaXRzID0gbmJpdHM7 CiAKIAlTRVRfVkFSU0laRShmaWx0ZXIsIGxlbik7Ci0tIAoyLjM5LjEKCg== --------------mzJK0H1XSWOfxSV5Dx6We88O Content-Type: text/x-patch; charset=UTF-8; name="0004-Introduce-BRIN_PROCNUM_PREPROCESS-procedure-20230215.patch" Content-Disposition: attachment; filename*0="0004-Introduce-BRIN_PROCNUM_PREPROCESS-procedure-20230215.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0ODU5MzM2M2NkY2E5MzU4ZWZiMzc4NGNiOGUzYjMzOTUyNzY0ODQyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogVHVlLCAxNCBGZWIgMjAyMyAyMDoyOTozMyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggNC85XSBJbnRyb2R1Y2UgQlJJTl9QUk9DTlVNX1BSRVBST0NFU1MgcHJvY2VkdXJl CgpBbGxvdyBCUklOIG9wY2xhc3NlcyB0byBkZWZpbmUgYW4gb3B0aW9uYWwgcHJvY2VkdXJl IHRvIHByZXByb2Nlc3Mgc2NhbgprZXlzLCBhbmQgY2FsbCBpdCBmcm9tIGJyaW5yZXNjYW4o KS4gVGhpcyBhbGxvd3MgdGhlIG9wY2xhc3MgdG8gbW9kaWZ5CnRoZSBrZXlzIGluIHZhcmlv dXMgd2F5cyAtIHNvcnQgYXJyYXlzLCBjYWxjdWxhdGUgaGFzaGVzLCAuLi4KCk5vdGU6IFRo ZSBwcm9jZWR1cmUgaXMgb3B0aW9uYWwsIHNvIGV4aXN0aW5nIG9wY2xhc3NlcyBkb24ndCBu ZWVkIHRvIGFkZAppdC4gQnV0IGlmIGl0IHVzZXMgdGhlIGV4aXN0aW5nIEJSSU5fUFJPQ05V TV9DT05TSVNURU5UIGZ1bmN0aW9uLCBpdCdsbApnZXQgYnJva2VuLiBJZiB3ZSB3YW50IHRv IG1ha2UgdGhpcyBiYWNrd2FyZHMtY29tcGF0aWJsZSwgd2UgbWlnaHQgY2hlY2sKaWYgQlJJ Tl9QUk9DTlVNX1BSRVBST0NFU1MgZXhpc3QgZnJvbSBCUklOX1BST0NOVU1fQ09OU0lTVEVO VCwgYW5kCmFkanVzdCBiZWhhdmlvciBiYXNlZCBvbiB0aGF0LgotLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9icmluL2JyaW4uYyAgICAgfCA3MiArKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9icmluX2ludGVybmFsLmggfCAgMSArCiAyIGZp bGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbi5jCmluZGV4IDg1YWU3OTU5NDkuLmVmM2Q2NGRhZjYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvYnJpbi9icmluLmMKQEAgLTY2LDYgKzY2LDEyIEBAIHR5cGVkZWYgc3RydWN0IEJy aW5PcGFxdWUKIAlCbG9ja051bWJlciBib19wYWdlc1BlclJhbmdlOwogCUJyaW5SZXZtYXAg KmJvX3JtQWNjZXNzOwogCUJyaW5EZXNjICAgKmJvX2JkZXNjOworCisJLyogcHJlcHJvY2Vz c2VkIHNjYW4ga2V5cyAqLworCWludAkJCWJvX251bVNjYW5LZXlzOwkJLyogbnVtYmVyIG9m IChwcmVwcm9jZXNzZWQpIHNjYW4ga2V5cyAqLworCVNjYW5LZXkJICAgKmJvX3NjYW5LZXlz OwkJLyogbW9kaWZpZWQgY29weSBvZiBzY2FuLT5rZXlEYXRhICovCisJTWVtb3J5Q29udGV4 dCBib19zY2FuS2V5c0N4dDsJLyogc2Nhbi1saWZlc3BhbiBjb250ZXh0IGZvciBrZXkgZGF0 YSAqLworCiB9IEJyaW5PcGFxdWU7CiAKICNkZWZpbmUgQlJJTl9BTExfQkxPQ0tSQU5HRVMJ SW52YWxpZEJsb2NrTnVtYmVyCkBAIC0zMzQsNiArMzQwLDExIEBAIGJyaW5iZWdpbnNjYW4o UmVsYXRpb24gciwgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKQogCW9wYXF1ZS0+Ym9fcm1B Y2Nlc3MgPSBicmluUmV2bWFwSW5pdGlhbGl6ZShyLCAmb3BhcXVlLT5ib19wYWdlc1BlclJh bmdlLAogCQkJCQkJCQkJCQkgICBzY2FuLT54c19zbmFwc2hvdCk7CiAJb3BhcXVlLT5ib19i ZGVzYyA9IGJyaW5fYnVpbGRfZGVzYyhyKTsKKworCW9wYXF1ZS0+Ym9fbnVtU2NhbktleXMg PSAwOworCW9wYXF1ZS0+Ym9fc2NhbktleXMgPSBOVUxMOworCW9wYXF1ZS0+Ym9fc2Nhbktl eXNDeHQgPSBOVUxMOworCiAJc2Nhbi0+b3BhcXVlID0gb3BhcXVlOwogCiAJcmV0dXJuIHNj YW47CkBAIC00NTYsNyArNDY3LDcgQEAgYnJpbmdldGJpdG1hcChJbmRleFNjYW5EZXNjIHNj YW4sIFRJREJpdG1hcCAqdGJtKQogCS8qIFByZXByb2Nlc3MgdGhlIHNjYW4ga2V5cyAtIHNw bGl0IHRoZW0gaW50byBwZXItYXR0cmlidXRlIGFycmF5cy4gKi8KIAlmb3IgKGludCBrZXlu byA9IDA7IGtleW5vIDwgc2Nhbi0+bnVtYmVyT2ZLZXlzOyBrZXlubysrKQogCXsKLQkJU2Nh bktleQkJa2V5ID0gJnNjYW4tPmtleURhdGFba2V5bm9dOworCQlTY2FuS2V5CQlrZXkgPSBv cGFxdWUtPmJvX3NjYW5LZXlzW2tleW5vXTsKIAkJQXR0ck51bWJlcglrZXlhdHRubyA9IGtl eS0+c2tfYXR0bm87CiAKIAkJLyoKQEAgLTczNSwxNyArNzQ2LDYyIEBAIHZvaWQKIGJyaW5y ZXNjYW4oSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2Nhbmtl eXMsCiAJCSAgIFNjYW5LZXkgb3JkZXJieXMsIGludCBub3JkZXJieXMpCiB7Ci0JLyoKLQkg KiBPdGhlciBpbmRleCBBTXMgcHJlcHJvY2VzcyB0aGUgc2NhbiBrZXlzIGF0IHRoaXMgcG9p bnQsIG9yIHNvbWV0aW1lCi0JICogZWFybHkgZHVyaW5nIHRoZSBzY2FuOyB0aGlzIGxldHMg dGhlbSBvcHRpbWl6ZSBieSByZW1vdmluZyByZWR1bmRhbnQKLQkgKiBrZXlzLCBvciBkb2lu ZyBlYXJseSByZXR1cm5zIHdoZW4gdGhleSBhcmUgaW1wb3NzaWJsZSB0byBzYXRpc2Z5OyBz ZWUKLQkgKiBfYnRfcHJlcHJvY2Vzc19rZXlzIGZvciBhbiBleGFtcGxlLiAgU29tZXRoaW5n IGxpa2UgdGhhdCBjb3VsZCBiZSBhZGRlZAotCSAqIGhlcmUgc29tZWRheSwgdG9vLgotCSAq LworCUJyaW5PcGFxdWUgKmJvID0gKEJyaW5PcGFxdWUgKikgc2Nhbi0+b3BhcXVlOworCVJl bGF0aW9uCWlkeFJlbCA9IHNjYW4tPmluZGV4UmVsYXRpb247CisJTWVtb3J5Q29udGV4dAlv bGRjeHQ7CiAKIAlpZiAoc2NhbmtleSAmJiBzY2FuLT5udW1iZXJPZktleXMgPiAwKQogCQlt ZW1tb3ZlKHNjYW4tPmtleURhdGEsIHNjYW5rZXksCiAJCQkJc2Nhbi0+bnVtYmVyT2ZLZXlz ICogc2l6ZW9mKFNjYW5LZXlEYXRhKSk7CisKKwkvKgorCSAqIFVzZSB0aGUgQlJJTl9QUk9D TlVNX1BSRVBST0NFU1MgcHJvY2VkdXJlIChpZiBkZWZpbmVkKSB0byBwcmVwcm9jZXNzCisJ ICogdGhlIHNjYW4ga2V5cy4gVGhlIHByb2NlZHVyZSBtYXkgZG8gYW55dGhpbmcsIGFzIGxv bmcgYXMgdGhlIHJlc3VsdAorCSAqIGxvb2tzIGxpa2UgYSBTY2FuS2V5LiBJZiB0aGVyZSdz IG5vIHByb2NlZHVyZSwgd2Uga2VlcCB0aGUgb3JpZ2luYWwKKwkgKiBzY2FuIGtleS4KKwkg KgorCSAqIEZJWE1FIFByb2JhYmx5IG5lZWQgZml4ZXMgdG8gaGFuZGxlIE5VTExzIGNvcnJl Y3RseS4KKwkgKi8KKwlpZiAoYm8tPmJvX3NjYW5LZXlzQ3h0ID09IE5VTEwpCisJCWJvLT5i b19zY2FuS2V5c0N4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29u dGV4dCwKKwkJCQkJCQkJCQkJCSAgICJCUklOIHNjYW4ga2V5cyBjb250ZXh0IiwKKwkJCQkJ CQkJCQkJCSAgIEFMTE9DU0VUX1NNQUxMX1NJWkVTKTsKKwllbHNlCisJCU1lbW9yeUNvbnRl eHRSZXNldChiby0+Ym9fc2NhbktleXNDeHQpOworCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKGJvLT5ib19zY2FuS2V5c0N4dCk7CisKKwliby0+Ym9fc2NhbktleXMgPSBw YWxsb2MwKHNpemVvZihTY2FuS2V5KSAqIG5zY2Fua2V5cyk7CisKKwlmb3IgKGludCBpID0g MDsgaSA8IG5zY2Fua2V5czsgaSsrKQorCXsKKwkJRm1nckluZm8gICAqZmluZm87CisJCVNj YW5LZXkJCWtleSA9ICZzY2FuLT5rZXlEYXRhW2ldOworCQlPaWQJCQlwcm9jaWQ7CisJCURh dHVtCQlyZXQ7CisKKwkJLyogZmV0Y2gga2V5IHByZXByb2Nlc3Mgc3VwcG9ydCBwcm9jZWR1 cmUgaWYgc3BlY2lmaWVkICovCisJCXByb2NpZCA9IGluZGV4X2dldHByb2NpZChpZHhSZWws IGtleS0+c2tfYXR0bm8sCisJCQkJCQkJCSBCUklOX1BST0NOVU1fUFJFUFJPQ0VTUyk7CisK KwkJLyogbm90IHNwZWNpZmllZCwganVzdCBwb2ludCB0byB0aGUgb3JpZ2luYWwga2V5ICov CisJCWlmICghT2lkSXNWYWxpZChwcm9jaWQpKQorCQl7CisJCQliby0+Ym9fc2NhbktleXNb aV0gPSBrZXk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWZpbmZvID0gaW5kZXhfZ2V0cHJv Y2luZm8oaWR4UmVsLCBrZXktPnNrX2F0dG5vLAorCQkJCQkJCQkgIEJSSU5fUFJPQ05VTV9Q UkVQUk9DRVNTKTsKKworCQlyZXQgPSBGdW5jdGlvbkNhbGwyKGZpbmZvLAorCQkJCQkJCVBv aW50ZXJHZXREYXR1bShiby0+Ym9fYmRlc2MpLAorCQkJCQkJCVBvaW50ZXJHZXREYXR1bShr ZXkpKTsKKworCQliby0+Ym9fc2NhbktleXNbaV0gPSAoU2NhbktleSkgRGF0dW1HZXRQb2lu dGVyKHJldCk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiB9CiAK IC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl9pbnRlcm5hbC5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5faW50ZXJuYWwuaAppbmRleCA5N2RkYzkyNWIyLi5k NmE1MWYyYmM0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl9pbnRlcm5h bC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX2ludGVybmFsLmgKQEAgLTczLDYg KzczLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpbkRlc2MKICNkZWZpbmUgQlJJTl9QUk9DTlVN X1VOSU9OCQkJNAogI2RlZmluZSBCUklOX01BTkRBVE9SWV9OUFJPQ1MJCTQKICNkZWZpbmUg QlJJTl9QUk9DTlVNX09QVElPTlMgCQk1CS8qIG9wdGlvbmFsICovCisjZGVmaW5lIEJSSU5f UFJPQ05VTV9QUkVQUk9DRVNTCQk2CS8qIG9wdGlvbmFsICovCiAvKiBwcm9jZWR1cmUgbnVt YmVycyB1cCB0byAxMCBhcmUgcmVzZXJ2ZWQgZm9yIEJSSU4gZnV0dXJlIGV4cGFuc2lvbiAq LwogI2RlZmluZSBCUklOX0ZJUlNUX09QVElPTkFMX1BST0NOVU0gMTEKICNkZWZpbmUgQlJJ Tl9MQVNUX09QVElPTkFMX1BST0NOVU0JMTUKLS0gCjIuMzkuMQoK --------------mzJK0H1XSWOfxSV5Dx6We88O Content-Type: text/x-patch; charset=UTF-8; name="0005-Support-SK_SEARCHARRAY-in-BRIN-minmax-20230215.patch" Content-Disposition: attachment; filename*0="0005-Support-SK_SEARCHARRAY-in-BRIN-minmax-20230215.patch" Content-Transfer-Encoding: base64 RnJvbSA0NTU5MzJlYjhlNGQwNWU5ZjA1MzUwZWExYTEzN2U5M2JmNzg2YWU5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogRnJpLCAxMCBGZWIgMjAyMyAxNjowNzo1NyArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNS85XSBTdXBwb3J0IFNLX1NFQVJDSEFSUkFZIGluIEJSSU4gbWlubWF4 CgpTZXQgImFtc2VhcmNoYXJyYXk9dHJ1ZSIgZm9yIEJSSU4sIGFuZCBleHRlbmQgdGhlIG1p bm1heCBvcGNsYXNzIHRvCmhhbmRsZSBib3RoIHNjYWxhciB2YWx1ZXMgYW5kIGFycmF5cy4g VGhpcyBhbGxvd3MgaGFuZGxpbmcgY29uZGl0aW9ucwoKICAgIC4uLiBXSEVSRSBhIElOICgx LCAyLCA0MywgMjEzMiwgMTM0KQoKICAgIC4uLiBXSEVSRSBhID0gQU5ZKEFSUkFZWzM0LCA0 NSwgLTEsIDIzNF0pCgogICAgLi4uIFdIRVJFIGEgPD0gQU5ZKEFSUkFZWzQ5MzgsIDI4Miwg MjkzNF0pCgptb3JlIGVmZmljaWVudGx5IC0gdW50aWwgbm93IHdlIHNpbXBseSBidWlsdCB0 aGUgYml0bWFwIGZvciBlYWNoCnNjYWxhciB2YWx1ZSwgc28gd2Ugd2Fsa2VkIHRoZSBCUklO IGluZGV4IG1hbnkgdGltZXMuIFdoaWNoIG1heSBiZSBxdWl0ZQpleHBlbnNpdmUgZm9yIGlu ZGV4ZXMgd2l0aCBtYW55IHJhbmdlcyAobGFyZ2UgdGFibGVzIGFuZC9vciBsb3cKcGFnZXNf cGVyX3JhbmdlKS4KClRoZXJlJ3MgYSBjb3VwbGUgcHJvYmxlbXMgLyBvcGVuIHF1ZXN0aW9u cyAvIFRPRE8gaXRlbXM6CgotIFRoZSBvdGhlciBvcGNsYXNzZXMgZG9uJ3QgaGFuZGxlIFNL X1NFQVJDSEFSUkFZIHlldC4KCi0gVGhlIGFycmF5IGlzIGFsd2F5cyBzZWFyY2hlZCBsaW5l YXJseSwgc28gdGhpcyBtYXkgYmUgY29zdGx5IGZvciBsYXJnZQogIGFycmF5cyAod2l0aCBt YW55IGVsZW1lbnRzKS4KCi0gVGhlIGFycmF5IGlzIGRlY29uc3RydWN0ZWQgYWdhaW4gZm9y IGVhY2ggcmFuZ2UuIFdlIHNob3VsZCByZXVzZSB0aGlzLAogIHNvbWVob3cuCi0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgIHwgICAzICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heC5jICAgfCAzNDYgKysrKysrKysrKysrKysr KysrKysrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3ZhbGlkYXRlLmMgfCAg IDQgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0ICAgICAgIHwgIDY0ICsr KysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgfCAgIDMgKwog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbXV0aWxzLm91dCAgIHwgICAyICstCiA2IGZp bGVzIGNoYW5nZWQsIDM4MiBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvYnJpbi9icmluLmMKaW5kZXggZWYzZDY0ZGFmNi4uYTIzMjI3NWMxNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9icmluL2JyaW4uYwpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgInV0aWxz L2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5k ZXhfc2VsZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRl ICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCkBAIC0xMDcs NyArMTA4LDcgQEAgYnJpbmhhbmRsZXIoUEdfRlVOQ1RJT05fQVJHUykKIAlhbXJvdXRpbmUt PmFtY2FudW5pcXVlID0gZmFsc2U7CiAJYW1yb3V0aW5lLT5hbWNhbm11bHRpY29sID0gdHJ1 ZTsKIAlhbXJvdXRpbmUtPmFtb3B0aW9uYWxrZXkgPSB0cnVlOwotCWFtcm91dGluZS0+YW1z ZWFyY2hhcnJheSA9IGZhbHNlOworCWFtcm91dGluZS0+YW1zZWFyY2hhcnJheSA9IHRydWU7 CiAJYW1yb3V0aW5lLT5hbXNlYXJjaG51bGxzID0gdHJ1ZTsKIAlhbXJvdXRpbmUtPmFtc3Rv cmFnZSA9IHRydWU7CiAJYW1yb3V0aW5lLT5hbWNsdXN0ZXJhYmxlID0gZmFsc2U7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXguYwppbmRleCAyNDMxNTkxYmU2Li4zNTli YjM5Zjk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1h eC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fbWlubWF4LmMKQEAgLTE2 LDExICsxNiwyMSBAQAogI2luY2x1ZGUgImFjY2Vzcy9zdHJhdG51bS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfYW1vcC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2lu Y2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNp bmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisj aW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKKworLyoKKyAqIFdlIHVzZSBzb21lIHBy aXZhdGUgc2tfZmxhZ3MgYml0cyBpbiBwcmVwcm9jZXNzZWQgc2NhbiBrZXlzLiAgV2UncmUg YWxsb3dlZAorICogdG8gdXNlIGJpdHMgMTYtMzEgKHNlZSBza2V5LmgpLiAgVGhlIHVwcGVy bW9zdCBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUKKyAqIGluZGV4J3MgaW5kb3B0aW9uW10g YXJyYXkgZW50cnkgZm9yIHRoZSBpbmRleCBhdHRyaWJ1dGUuCisgKi8KKyNkZWZpbmUgU0tf QlJJTl9TT1JURUQJMHgwMDAxMDAwMAkvKiBkZWNvbnN0cnVjdGVkIGFuZCBzb3J0ZWQgYXJy YXkgKi8KKwogCiB0eXBlZGVmIHN0cnVjdCBNaW5tYXhPcGFxdWUKIHsKQEAgLTEyNiw2ICsx MzYsMTMzIEBAIGJyaW5fbWlubWF4X2FkZF92YWx1ZShQR19GVU5DVElPTl9BUkdTKQogCVBH X1JFVFVSTl9CT09MKHVwZGF0ZWQpOwogfQogCisKK3N0YXRpYyBpbnQKK2NvbXBhcmVfYXJy YXlfdmFsdWVzKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHZvaWQgKmFyZykKK3sK KwlEYXR1bQlkYSA9ICogKERhdHVtICopIGE7CisJRGF0dW0JZGIgPSAqIChEYXR1bSAqKSBi OworCVNvcnRTdXBwb3J0CXNzdXAgPSAoU29ydFN1cHBvcnQpIGFyZzsKKworCXJldHVybiBB cHBseVNvcnRDb21wYXJhdG9yKGRhLCBmYWxzZSwgZGIsIGZhbHNlLCBzc3VwKTsKK30KKwor LyoKKyAqIGxvd2VyX2JvdW5kYXJ5CisgKgkJRGV0ZXJtaW5lIGxvd2VzdCBpbmRleCBzbyB0 aGF0ICh2YWx1ZXNbaW5kZXhdID49IG1pbnZhbHVlKS4KKyAqCisgKiBUaGUgYXJyYXkgb2Yg dmFsdWVzIGlzIGV4cGVjdGVkIHRvIGJlIHNvcnRlZCwgc28gdGhpcyBpcyB0aGUgZmlyc3Qg dmFsdWUKKyAqIHRoYXQgbWF5IGZhbGwgaW50byB0aGUgW21pbnZhbHVlLCBtYXh2YWx1ZV0g cmFuZ2UsIGFzIGl0IGV4Y2VlZHMgbWludmFsLgorICogSXQncyBub3QgZ3VhcmFudGVlZCwg dGhvdWdoLCBhcyBpdCBtaWdodCBleGNlZWQgbWF4dmFsdWUgdG9vLgorICovCitzdGF0aWMg aW50Citsb3dlcl9ib3VuZGFyeShEYXR1bSAqdmFsdWVzLCBpbnQgbnZhbHVlcywgRGF0dW0g bWludmFsdWUsIFNvcnRTdXBwb3J0IHNzdXApCit7CisJaW50CQlzdGFydCA9IDAsCisJCQll bmQgPSAobnZhbHVlcyAtIDEpOworCisJLyogZXZlcnl0aGluZyBleGNlZWRzIG1pbnZhbCBh bmQgbWlnaHQgbWF0Y2ggKi8KKwlpZiAoY29tcGFyZV9hcnJheV92YWx1ZXMoJm1pbnZhbHVl LCAmdmFsdWVzW3N0YXJ0XSwgc3N1cCkgPD0gMCkKKwkJcmV0dXJuIDA7CisKKwkvKiBub3Ro aW5nIGNvdWxkIG1hdGNoICovCisJaWYgKGNvbXBhcmVfYXJyYXlfdmFsdWVzKCZtaW52YWx1 ZSwgJnZhbHVlc1tlbmRdLCBzc3VwKSA+IDApCisJCXJldHVybiBudmFsdWVzOworCisJd2hp bGUgKChlbmQgLSBzdGFydCkgPiAwKQorCXsKKwkJaW50IG1pZHBvaW50OworCQlpbnQgcjsK KworCQltaWRwb2ludCA9IHN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSAvIDI7CisKKwkJciA9IGNv bXBhcmVfYXJyYXlfdmFsdWVzKCZtaW52YWx1ZSwgJnZhbHVlc1ttaWRwb2ludF0sIHNzdXAp OworCisJCWlmIChyID4gMCkKKwkJCXN0YXJ0ID0gTWF4KG1pZHBvaW50LCBzdGFydCArIDEp OworCQllbHNlCisJCQllbmQgPSBtaWRwb2ludDsKKwl9CisKKwkvKiB0aGUgdmFsdWUgc2hv dWxkIG1lZXQgdGhlICh2ID49bWludmFsdWUpIHJlcXVpcmVtZW50ICovCisJQXNzZXJ0KGNv bXBhcmVfYXJyYXlfdmFsdWVzKCZ2YWx1ZXNbc3RhcnRdLCAmbWludmFsdWUsIHNzdXApID49 IDApOworCisJLyogd2Uga25vdyBzdGFydCBjYW4ndCBiZSAwLCBzbyBpdCdzIGxlZ2FsIHRv IHN1YnRyYWN0IDEgKi8KKwlBc3NlcnQoY29tcGFyZV9hcnJheV92YWx1ZXMoJnZhbHVlc1tz dGFydC0xXSwgJm1pbnZhbHVlLCBzc3VwKSA8IDApOworCisJcmV0dXJuIHN0YXJ0OworfQor Cit0eXBlZGVmIHN0cnVjdCBTY2FuS2V5QXJyYXkgeworCU9pZAkJdHlwZWlkOworCWludAkJ bmVsZW1lbnRzOworCURhdHVtICAqZWxlbWVudHM7Cit9IFNjYW5LZXlBcnJheTsKKworRGF0 dW0KK2JyaW5fbWlubWF4X3ByZXByb2Nlc3MoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvLyBC cmluRGVzYyAgICpiZGVzYyA9IChCcmluRGVzYyAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsK KwlTY2FuS2V5CQlrZXkgPSAoU2NhbktleSkgUEdfR0VUQVJHX1BPSU5URVIoMSk7CisJU2Nh bktleQkJbmV3a2V5OworCVNjYW5LZXlBcnJheSAqc2NhbmFycmF5OworCisJQXJyYXlUeXBl ICAqYXJyYXl2YWw7CisJaW50MTYJCWVsbWxlbjsKKwlib29sCQllbG1ieXZhbDsKKwljaGFy CQllbG1hbGlnbjsKKwlpbnQJCQludW1fZWxlbXM7CisJRGF0dW0JICAgKmVsZW1fdmFsdWVz OworCWJvb2wJICAgKmVsZW1fbnVsbHM7CisJVHlwZUNhY2hlRW50cnkgKnR5cGU7CisJU29y dFN1cHBvcnREYXRhIHNzdXA7CisKKwkvKiBpZ25vcmUgc2NhbGFyIGtleXMgKi8KKwlpZiAo IShrZXktPnNrX2ZsYWdzICYgU0tfU0VBUkNIQVJSQVkpKQorCQlQR19SRVRVUk5fUE9JTlRF UihrZXkpOworCisJYXJyYXl2YWwgPSBEYXR1bUdldEFycmF5VHlwZVAoa2V5LT5za19hcmd1 bWVudCk7CisKKwlnZXRfdHlwbGVuYnl2YWxhbGlnbihBUlJfRUxFTVRZUEUoYXJyYXl2YWwp LAorCQkJCQkJICZlbG1sZW4sICZlbG1ieXZhbCwgJmVsbWFsaWduKTsKKworCWRlY29uc3Ry dWN0X2FycmF5KGFycmF5dmFsLAorCQkJCQkgIEFSUl9FTEVNVFlQRShhcnJheXZhbCksCisJ CQkJCSAgZWxtbGVuLCBlbG1ieXZhbCwgZWxtYWxpZ24sCisJCQkJCSAgJmVsZW1fdmFsdWVz LCAmZWxlbV9udWxscywgJm51bV9lbGVtcyk7CisKKwl0eXBlID0gbG9va3VwX3R5cGVfY2Fj aGUoQVJSX0VMRU1UWVBFKGFycmF5dmFsKSwgVFlQRUNBQ0hFX0xUX09QUik7CisKKwltZW1z ZXQoJnNzdXAsIDAsIHNpemVvZihTb3J0U3VwcG9ydERhdGEpKTsKKworCXNzdXAuc3N1cF9j b2xsYXRpb24gPSBrZXktPnNrX2NvbGxhdGlvbjsKKwlzc3VwLnNzdXBfY3h0ID0gQ3VycmVu dE1lbW9yeUNvbnRleHQ7CisKKwlQcmVwYXJlU29ydFN1cHBvcnRGcm9tT3JkZXJpbmdPcCh0 eXBlLT5sdF9vcHIsICZzc3VwKTsKKworCXFzb3J0X2ludGVycnVwdGlibGUoZWxlbV92YWx1 ZXMsIG51bV9lbGVtcywgc2l6ZW9mKERhdHVtKSwKKwkJCQkJCWNvbXBhcmVfYXJyYXlfdmFs dWVzLCAmc3N1cCk7CisKKwlzY2FuYXJyYXkgPSBwYWxsb2MwKHNpemVvZihTY2FuS2V5QXJy YXkpKTsKKwlzY2FuYXJyYXktPnR5cGVpZCA9IEFSUl9FTEVNVFlQRShhcnJheXZhbCk7CisJ c2NhbmFycmF5LT5uZWxlbWVudHMgPSBudW1fZWxlbXM7CisJc2NhbmFycmF5LT5lbGVtZW50 cyA9IGVsZW1fdmFsdWVzOworCisJbmV3a2V5ID0gcGFsbG9jMChzaXplb2YoU2NhbktleURh dGEpKTsKKworCVNjYW5LZXlFbnRyeUluaXRpYWxpemVXaXRoSW5mbyhuZXdrZXksCisJCQkJ CQkJCSAgIChrZXktPnNrX2ZsYWdzIHwgU0tfQlJJTl9TT1JURUQpLAorCQkJCQkJCQkgICBr ZXktPnNrX2F0dG5vLAorCQkJCQkJCQkgICBrZXktPnNrX3N0cmF0ZWd5LAorCQkJCQkJCQkg ICBrZXktPnNrX3N1YnR5cGUsCisJCQkJCQkJCSAgIGtleS0+c2tfY29sbGF0aW9uLAorCQkJ CQkJCQkgICAma2V5LT5za19mdW5jLAorCQkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oc2Nh bmFycmF5KSk7CisKKwlQR19SRVRVUk5fUE9JTlRFUihuZXdrZXkpOworfQorCisKIC8qCiAg KiBHaXZlbiBhbiBpbmRleCB0dXBsZSBjb3JyZXNwb25kaW5nIHRvIGEgY2VydGFpbiBwYWdl IHJhbmdlIGFuZCBhIHNjYW4ga2V5LAogICogcmV0dXJuIHdoZXRoZXIgdGhlIHNjYW4ga2V5 IGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgaW5kZXggdHVwbGUncyBtaW4vbWF4CkBAIC0xNTcs NDYgKzI5NCwxNzkgQEAgYnJpbl9taW5tYXhfY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdT KQogCWF0dG5vID0ga2V5LT5za19hdHRubzsKIAlzdWJ0eXBlID0ga2V5LT5za19zdWJ0eXBl OwogCXZhbHVlID0ga2V5LT5za19hcmd1bWVudDsKLQlzd2l0Y2ggKGtleS0+c2tfc3RyYXRl Z3kpCisKKwkvKgorCSAqIEZvciByZWd1bGFyIChzY2FsYXIpIHNjYW4ga2V5cywgd2Ugc2lt cGx5IGNvbXBhcmUgdGhlIHZhbHVlIHRvIHRoZQorCSAqIHJhbmdlIG1pbi9tYXggdmFsdWVz LCBhbmQgd2UncmUgZG9uZS4gRm9yIHByZXByb2Nlc3NlZCBTS19TRUFSQ0hBUlJBWQorCSAq IGtleXMgd2UgbmVlZCB0byBsb29wIHRocm91Z2ggdGhlIGRlcGFyc2VkIHZhbHVlcy4KKwkg Ki8KKwlpZiAobGlrZWx5KCEoa2V5LT5za19mbGFncyAmIFNLX0JSSU5fU09SVEVEKSkpCisJ eworCQlzd2l0Y2ggKGtleS0+c2tfc3RyYXRlZ3kpCisJCXsKKwkJCWNhc2UgQlRMZXNzU3Ry YXRlZ3lOdW1iZXI6CisJCQljYXNlIEJUTGVzc0VxdWFsU3RyYXRlZ3lOdW1iZXI6CisJCQkJ ZmluZm8gPSBtaW5tYXhfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgc3Vi dHlwZSwKKwkJCQkJCQkJCQkJCQkga2V5LT5za19zdHJhdGVneSk7CisJCQkJbWF0Y2hlcyA9 IEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xsb2lkLCBjb2x1bW4tPmJ2X3ZhbHVlc1sw XSwKKwkJCQkJCQkJCQkJdmFsdWUpOworCQkJCWJyZWFrOworCQkJY2FzZSBCVEVxdWFsU3Ry YXRlZ3lOdW1iZXI6CisKKwkJCQkvKgorCQkJCSAqIEluIHRoZSBlcXVhbGl0eSBjYXNlIChX SEVSRSBjb2wgPSBzb21ldmFsKSwgd2Ugd2FudCB0byByZXR1cm4KKwkJCQkgKiB0aGUgY3Vy cmVudCBwYWdlIHJhbmdlIGlmIHRoZSBtaW5pbXVtIHZhbHVlIGluIHRoZSByYW5nZSA8PQor CQkJCSAqIHNjYW4ga2V5LCBhbmQgdGhlIG1heGltdW0gdmFsdWUgPj0gc2NhbiBrZXkuCisJ CQkJICovCisJCQkJZmluZm8gPSBtaW5tYXhfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNj LCBhdHRubywgc3VidHlwZSwKKwkJCQkJCQkJCQkJCQkgQlRMZXNzRXF1YWxTdHJhdGVneU51 bWJlcik7CisJCQkJbWF0Y2hlcyA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xsb2lk LCBjb2x1bW4tPmJ2X3ZhbHVlc1swXSwKKwkJCQkJCQkJCQkJdmFsdWUpOworCQkJCWlmICgh RGF0dW1HZXRCb29sKG1hdGNoZXMpKQorCQkJCQlicmVhazsKKwkJCQkvKiBtYXgoKSA+PSBz Y2Fua2V5ICovCisJCQkJZmluZm8gPSBtaW5tYXhfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJk ZXNjLCBhdHRubywgc3VidHlwZSwKKwkJCQkJCQkJCQkJCQkgQlRHcmVhdGVyRXF1YWxTdHJh dGVneU51bWJlcik7CisJCQkJbWF0Y2hlcyA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBj b2xsb2lkLCBjb2x1bW4tPmJ2X3ZhbHVlc1sxXSwKKwkJCQkJCQkJCQkJdmFsdWUpOworCQkJ CWJyZWFrOworCQkJY2FzZSBCVEdyZWF0ZXJFcXVhbFN0cmF0ZWd5TnVtYmVyOgorCQkJY2Fz ZSBCVEdyZWF0ZXJTdHJhdGVneU51bWJlcjoKKwkJCQlmaW5mbyA9IG1pbm1heF9nZXRfc3Ry YXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJCQkJCQkJCQkJCSBr ZXktPnNrX3N0cmF0ZWd5KTsKKwkJCQltYXRjaGVzID0gRnVuY3Rpb25DYWxsMkNvbGwoZmlu Zm8sIGNvbGxvaWQsIGNvbHVtbi0+YnZfdmFsdWVzWzFdLAorCQkJCQkJCQkJCQl2YWx1ZSk7 CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8K KwkJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBzdHJhdGVneSBudW1iZXIgJWQiLCBrZXktPnNr X3N0cmF0ZWd5KTsKKwkJCQltYXRjaGVzID0gMDsKKwkJCQlicmVhazsKKwkJfQorCX0KKwll bHNlCiAJewotCQljYXNlIEJUTGVzc1N0cmF0ZWd5TnVtYmVyOgotCQljYXNlIEJUTGVzc0Vx dWFsU3RyYXRlZ3lOdW1iZXI6Ci0JCQlmaW5mbyA9IG1pbm1heF9nZXRfc3RyYXRlZ3lfcHJv Y2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAotCQkJCQkJCQkJCQkJIGtleS0+c2tfc3Ry YXRlZ3kpOwotCQkJbWF0Y2hlcyA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xsb2lk LCBjb2x1bW4tPmJ2X3ZhbHVlc1swXSwKLQkJCQkJCQkJCQl2YWx1ZSk7Ci0JCQlicmVhazsK LQkJY2FzZSBCVEVxdWFsU3RyYXRlZ3lOdW1iZXI6Ci0KLQkJCS8qCi0JCQkgKiBJbiB0aGUg ZXF1YWxpdHkgY2FzZSAoV0hFUkUgY29sID0gc29tZXZhbCksIHdlIHdhbnQgdG8gcmV0dXJu Ci0JCQkgKiB0aGUgY3VycmVudCBwYWdlIHJhbmdlIGlmIHRoZSBtaW5pbXVtIHZhbHVlIGlu IHRoZSByYW5nZSA8PQotCQkJICogc2NhbiBrZXksIGFuZCB0aGUgbWF4aW11bSB2YWx1ZSA+ PSBzY2FuIGtleS4KLQkJCSAqLwotCQkJZmluZm8gPSBtaW5tYXhfZ2V0X3N0cmF0ZWd5X3By b2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwKLQkJCQkJCQkJCQkJCSBCVExlc3NFcXVh bFN0cmF0ZWd5TnVtYmVyKTsKLQkJCW1hdGNoZXMgPSBGdW5jdGlvbkNhbGwyQ29sbChmaW5m bywgY29sbG9pZCwgY29sdW1uLT5idl92YWx1ZXNbMF0sCi0JCQkJCQkJCQkJdmFsdWUpOwot CQkJaWYgKCFEYXR1bUdldEJvb2wobWF0Y2hlcykpCisJCVNjYW5LZXlBcnJheSAqYXJyYXkg PSAoU2NhbktleUFycmF5ICopIHZhbHVlOworCisJCXN3aXRjaCAoa2V5LT5za19zdHJhdGVn eSkKKwkJeworCQkJY2FzZSBCVExlc3NTdHJhdGVneU51bWJlcjoKKwkJCWNhc2UgQlRMZXNz RXF1YWxTdHJhdGVneU51bWJlcjoKKwkJCQkvKgorCQkJCSAqIENoZWNrIHRoZSBsYXN0IChs YXJnZXN0KSB2YWx1ZSBpbiB0aGUgYXJyYXkgLSBhdCBsZWFzdCB0aGlzCisJCQkJICogdmFs dWUgaGFzIHRvIGV4Y2VlZCB0aGUgcmFuZ2UgbWludmFsLgorCQkJCSAqLworCQkJCWZpbmZv ID0gbWlubWF4X2dldF9zdHJhdGVneV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5cGUs CisJCQkJCQkJCQkJCQkJIGtleS0+c2tfc3RyYXRlZ3kpOworCQkJCW1hdGNoZXMgPSBGdW5j dGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgY29sdW1uLT5idl92YWx1ZXNbMF0sCisJ CQkJCQkJCQkJCWFycmF5LT5lbGVtZW50c1thcnJheS0+bmVsZW1lbnRzLTFdKTsKKwkJCQli cmVhazsKKwkJCWNhc2UgQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOgorCisJCQkJLyoKKwkJCQkg KiBJbiB0aGUgZXF1YWxpdHkgY2FzZSAoV0hFUkUgY29sID0gc29tZXZhbCksIHdlIHdhbnQg dG8gcmV0dXJuCisJCQkJICogdGhlIGN1cnJlbnQgcGFnZSByYW5nZSBpZiB0aGUgbWluaW11 bSB2YWx1ZSBpbiB0aGUgcmFuZ2UgPD0KKwkJCQkgKiBzY2FuIGtleSwgYW5kIHRoZSBtYXhp bXVtIHZhbHVlID49IHNjYW4ga2V5LgorCQkJCSAqCisJCQkJICogV2UgZG8gdGhpcyBpbiB0 d28gcGhhc2VzLiBXZSBjaGVjayB0aGUgYXJyYXkgbWluL21heCB2YWx1ZXMgdG8gc2VlCisJ CQkJICogaWYgdGhlcmUgZXZlbiBjYW4gYmUgYSBtYXRjaGluZyB2YWx1ZSwgYW5kIGlmIHll cyB3ZSBkbyBhIGJpbmFyeQorCQkJCSAqIHNlYXJjaCB0byBmaW5kIHRoZSBmaXJzdCB2YWx1 ZSB0aGF0IGV4Y2VlZHMgcmFuZ2UgbWludmFsLiBBbmQgdGhlbgorCQkJCSAqIHdlIGNoZWNr IGlmIGl0IGFjdHVhbGx5IG1hdGNoZXMgdGhlIHJhbmdlLgorCQkJCSAqCisJCQkJICogWFhY IFRoZSBmaXJzdCBwaGFzZSBpcyBwcm9iYWJseSB1bm5lY2Vzc2FyeSwgYmVjYXVzZSBsb3dl cl9ib3VuZCgpCisJCQkJICogZG9lcyBwcmV0dHkgbXVjaCBleGFjdGx5IHRoYXQgdG9vLgor CQkJCSAqLworCQkJCXsKKwkJCQkJRGF0dW0gdmFsOworCQkJCQlTb3J0U3VwcG9ydERhdGEg c3N1cDsKKwkJCQkJaW50CQkJbG93ZXI7CisJCQkJCVR5cGVDYWNoZUVudHJ5ICp0eXBlOwor CisJCQkJCS8qIElzIHRoZSBmaXJzdCAoc21hbGxlc3QpIHZhbHVlIGFmdGVyIHRoZSBCUklO IHJhbmdlPyAqLworCQkJCQl2YWwgPSBhcnJheS0+ZWxlbWVudHNbMF07CisKKwkJCQkJZmlu Zm8gPSBtaW5tYXhfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlw ZSwKKwkJCQkJCQkJCQkJCQkJIEJUTGVzc0VxdWFsU3RyYXRlZ3lOdW1iZXIpOworCQkJCQlt YXRjaGVzID0gRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsIHZhbCwgY29sdW1u LT5idl92YWx1ZXNbMV0pOworCisJCQkJCS8qIG1pbnZhbCA+IG1heChyYW5nZSB2YWx1ZXMp ICovCisJCQkJCWlmICghRGF0dW1HZXRCb29sKG1hdGNoZXMpKQorCQkJCQkJYnJlYWs7CisK KwkJCQkJLyogSXMgdGhlIGxhc3QgKGxhcmdlc3QpIHZhbHVlIGJlZm9yZSB0aGUgQlJJTiBy YW5nZT8gKi8KKwkJCQkJdmFsID0gYXJyYXktPmVsZW1lbnRzW2FycmF5LT5uZWxlbWVudHMt MV07CisKKwkJCQkJZmluZm8gPSBtaW5tYXhfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNj LCBhdHRubywgc3VidHlwZSwKKwkJCQkJCQkJCQkJCQkJIEJUR3JlYXRlckVxdWFsU3RyYXRl Z3lOdW1iZXIpOworCQkJCQltYXRjaGVzID0gRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNv bGxvaWQsIHZhbCwgY29sdW1uLT5idl92YWx1ZXNbMF0pOworCisJCQkJCS8qIG1heHZhbCA8 IG1pbihyYW5nZSB2YWx1ZXMpICovCisJCQkJCWlmICghRGF0dW1HZXRCb29sKG1hdGNoZXMp KQorCQkJCQkJYnJlYWs7CisKKwkJCQkJLyoKKwkJCQkJICogT0ssIHRoZXJlIG1pZ2h0IGJl IHNvbWUgdmFsdWVzIG1hdGNoaW5nIHRoZSByYW5nZS4gV2UgaGF2ZQorCQkJCQkgKiB0byBz ZWFyY2ggdGhlbSBvbmUgYnkgb25lLCBvciBwZXJoYXBzIHRyeSBiaW5zZWFyY2guCisJCQkJ CSAqLworCQkJCQl0eXBlID0gbG9va3VwX3R5cGVfY2FjaGUoYXJyYXktPnR5cGVpZCwgVFlQ RUNBQ0hFX0xUX09QUik7CisKKwkJCQkJbWVtc2V0KCZzc3VwLCAwLCBzaXplb2YoU29ydFN1 cHBvcnREYXRhKSk7CisKKwkJCQkJc3N1cC5zc3VwX2NvbGxhdGlvbiA9IGtleS0+c2tfY29s bGF0aW9uOworCQkJCQlzc3VwLnNzdXBfY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7CisK KwkJCQkJUHJlcGFyZVNvcnRTdXBwb3J0RnJvbU9yZGVyaW5nT3AodHlwZS0+bHRfb3ByLCAm c3N1cCk7CisKKwkJCQkJbG93ZXIgPSBsb3dlcl9ib3VuZGFyeShhcnJheS0+ZWxlbWVudHMs IGFycmF5LT5uZWxlbWVudHMsIGNvbHVtbi0+YnZfdmFsdWVzWzBdLCAmc3N1cCk7CisKKwkJ CQkJLyogbm8gZWxlbWVudHMgY2FuIHBvc3NpYmx5IG1hdGNoICovCisJCQkJCWlmIChsb3dl ciA9PSBhcnJheS0+bmVsZW1lbnRzKQorCQkJCQl7CisJCQkJCQltYXRjaGVzID0gQm9vbEdl dERhdHVtKGZhbHNlKTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisKKwkJCQkJLyoKKwkJCQkJ ICogT0ssIHRoZSBmaXJzdCBlbGVtZW50IG11c3QgbWF0Y2ggdGhlIHVwcGVyIGJvdW5kYXJ5 IHRvbworCQkJCQkgKiAoaWYgaXQgZG9lcyBub3QsIG5vIGZvbGxvd2luZyBlbGVtZW50cyBj YW4pLgorCQkJCQkgKi8KKwkJCQkJdmFsID0gYXJyYXktPmVsZW1lbnRzW2xvd2VyXTsKKwor CQkJCQkvKgorCQkJCQkgKiBJbiB0aGUgZXF1YWxpdHkgY2FzZSAoV0hFUkUgY29sID0gc29t ZXZhbCksIHdlIHdhbnQgdG8gcmV0dXJuCisJCQkJCSAqIHRoZSBjdXJyZW50IHBhZ2UgcmFu Z2UgaWYgdGhlIG1pbmltdW0gdmFsdWUgaW4gdGhlIHJhbmdlIDw9CisJCQkJCSAqIHNjYW4g a2V5LCBhbmQgdGhlIG1heGltdW0gdmFsdWUgPj0gc2NhbiBrZXkuCisJCQkJCSAqLworCQkJ CQlmaW5mbyA9IG1pbm1heF9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBz dWJ0eXBlLAorCQkJCQkJCQkJCQkJCQkgQlRMZXNzRXF1YWxTdHJhdGVneU51bWJlcik7CisJ CQkJCW1hdGNoZXMgPSBGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgY29sdW1u LT5idl92YWx1ZXNbMF0sCisJCQkJCQkJCQkJCQl2YWwpOworCQkJCQlpZiAoIURhdHVtR2V0 Qm9vbChtYXRjaGVzKSkKKwkJCQkJCWJyZWFrOworCQkJCQkvKiBtYXgoKSA+PSBzY2Fua2V5 ICovCisJCQkJCWZpbmZvID0gbWlubWF4X2dldF9zdHJhdGVneV9wcm9jaW5mbyhiZGVzYywg YXR0bm8sIHN1YnR5cGUsCisJCQkJCQkJCQkJCQkJCSBCVEdyZWF0ZXJFcXVhbFN0cmF0ZWd5 TnVtYmVyKTsKKwkJCQkJbWF0Y2hlcyA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xs b2lkLCBjb2x1bW4tPmJ2X3ZhbHVlc1sxXSwKKwkJCQkJCQkJCQkJCXZhbCk7CisJCQkJCWJy ZWFrOworCQkJCX0KKwkJCWNhc2UgQlRHcmVhdGVyRXF1YWxTdHJhdGVneU51bWJlcjoKKwkJ CWNhc2UgQlRHcmVhdGVyU3RyYXRlZ3lOdW1iZXI6CisJCQkJLyoKKwkJCQkgKiBDaGVjayB0 aGUgZmlyc3QgKHNtYWxsZXN0KSB2YWx1ZSBpbiB0aGUgYXJyYXkgLSBhdCBsZWFzdCB0aGlz CisJCQkJICogdmFsdWUgaGFzIHRvIGJlIHNtYWxsZXIgdGhhbiB0aGUgcmFuZ2UgbWF4dmFs LgorCQkJCSAqLworCQkJCWZpbmZvID0gbWlubWF4X2dldF9zdHJhdGVneV9wcm9jaW5mbyhi ZGVzYywgYXR0bm8sIHN1YnR5cGUsCisJCQkJCQkJCQkJCQkJIGtleS0+c2tfc3RyYXRlZ3kp OworCQkJCW1hdGNoZXMgPSBGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgY29s dW1uLT5idl92YWx1ZXNbMV0sCisJCQkJCQkJCQkJCWFycmF5LT5lbGVtZW50c1swXSk7CisJ CQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8KKwkJ CQllbG9nKEVSUk9SLCAiaW52YWxpZCBzdHJhdGVneSBudW1iZXIgJWQiLCBrZXktPnNrX3N0 cmF0ZWd5KTsKKwkJCQltYXRjaGVzID0gMDsKIAkJCQlicmVhazsKLQkJCS8qIG1heCgpID49 IHNjYW5rZXkgKi8KLQkJCWZpbmZvID0gbWlubWF4X2dldF9zdHJhdGVneV9wcm9jaW5mbyhi ZGVzYywgYXR0bm8sIHN1YnR5cGUsCi0JCQkJCQkJCQkJCQkgQlRHcmVhdGVyRXF1YWxTdHJh dGVneU51bWJlcik7Ci0JCQltYXRjaGVzID0gRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNv bGxvaWQsIGNvbHVtbi0+YnZfdmFsdWVzWzFdLAotCQkJCQkJCQkJCXZhbHVlKTsKLQkJCWJy ZWFrOwotCQljYXNlIEJUR3JlYXRlckVxdWFsU3RyYXRlZ3lOdW1iZXI6Ci0JCWNhc2UgQlRH cmVhdGVyU3RyYXRlZ3lOdW1iZXI6Ci0JCQlmaW5mbyA9IG1pbm1heF9nZXRfc3RyYXRlZ3lf cHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAotCQkJCQkJCQkJCQkJIGtleS0+c2tf c3RyYXRlZ3kpOwotCQkJbWF0Y2hlcyA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xs b2lkLCBjb2x1bW4tPmJ2X3ZhbHVlc1sxXSwKLQkJCQkJCQkJCQl2YWx1ZSk7Ci0JCQlicmVh azsKLQkJZGVmYXVsdDoKLQkJCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8KLQkJCWVsb2coRVJS T1IsICJpbnZhbGlkIHN0cmF0ZWd5IG51bWJlciAlZCIsIGtleS0+c2tfc3RyYXRlZ3kpOwot CQkJbWF0Y2hlcyA9IDA7Ci0JCQlicmVhazsKKwkJfQogCX0KIAogCVBHX1JFVFVSTl9EQVRV TShtYXRjaGVzKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5f dmFsaWRhdGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fdmFsaWRhdGUuYwpp bmRleCBjOGVkZmIzNzU5Li4wODg5ZTI0YmMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvYnJpbi9icmluX3ZhbGlkYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2Jy aW4vYnJpbl92YWxpZGF0ZS5jCkBAIC0xMDgsNiArMTA4LDEwIEBAIGJyaW52YWxpZGF0ZShP aWQgb3BjbGFzc29pZCkKIAkJCWNhc2UgQlJJTl9QUk9DTlVNX09QVElPTlM6CiAJCQkJb2sg PSBjaGVja19hbW9wdHNwcm9jX3NpZ25hdHVyZShwcm9jZm9ybS0+YW1wcm9jKTsKIAkJCQli cmVhazsKKwkJCWNhc2UgQlJJTl9QUk9DTlVNX1BSRVBST0NFU1M6CisJCQkJb2sgPSBjaGVj a19hbXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIElOVEVSTkFMT0lELCB0cnVl LAorCQkJCQkJCQkJCQkyLCAyLCBJTlRFUk5BTE9JRCwgSU5URVJOQUxPSUQpOworCQkJCWJy ZWFrOwogCQkJZGVmYXVsdDoKIAkJCQkvKiBDb21wbGFpbiBpZiBpdCdzIG5vdCBhIHZhbGlk IG9wdGlvbmFsIHByb2MgbnVtYmVyICovCiAJCQkJaWYgKHByb2Nmb3JtLT5hbXByb2NudW0g PCBCUklOX0ZJUlNUX09QVElPTkFMX1BST0NOVU0gfHwKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1w cm9jLmRhdAppbmRleCA1Yjk1MDEyOWRlLi4xNjY2ODFjMzFlIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19hbXByb2MuZGF0CkBAIC04MDQsNiArODA0LDggQEAKICAgYW1wcm9jID0+ICdicmlu X21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnl0ZWFf bWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdieXRlYScsCiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnYnl0ZWEnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlu bWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYnl0ZWFfbWlubWF4X29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdieXRlYScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn Ynl0ZWEnLCBhbXByb2NudW0gPT4gJzYnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3ByZXBy b2Nlc3MnIH0sCiAKICMgYmxvb20gYnl0ZWEKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2J5 dGVhX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdieXRlYScsCkBAIC04MzUsNiAr ODM3LDggQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vY2hhcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ2NoYXInLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2NoYXInLCBhbXByb2NudW0gPT4g JzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vY2hhcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2NoYXInLAor ICBhbXByb2NyaWdodHR5cGUgPT4gJ2NoYXInLCBhbXByb2NudW0gPT4gJzYnLCBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X3ByZXByb2Nlc3MnIH0sCiAKICMgYmxvb20gImNoYXIiCiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi9jaGFyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdjaGFyJywKQEAgLTg2NCw2ICs4NjgsOCBAQAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uYW1lX21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbmFtZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn bmFtZScsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24n IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uYW1lX21pbm1heF9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAnbmFtZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbmFtZScsIGFtcHJv Y251bSA9PiAnNicsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcHJlcHJvY2VzcycgfSwKIAog IyBibG9vbSBuYW1lCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uYW1lX2Jsb29tX29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICduYW1lJywKQEAgLTg5Myw2ICs4OTksOCBAQAogICBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50OCcsCiAg IGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50OCcsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9 PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRl Z2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50OCcsCisgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAnaW50OCcsIGFtcHJvY251bSA9PiAnNicsIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfcHJlcHJvY2VzcycgfSwKIAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdl cl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDInLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ2ludDInLCBhbXByb2NudW0gPT4gJzEnLApAQCAtOTA1LDYgKzkxMyw4IEBA CiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcgfSwKIHsgYW1wcm9jZmFt aWx5ID0+ICdicmluL2ludGVnZXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdp bnQyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQyJywgYW1wcm9jbnVtID0+ICc0Jywg YW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdi cmluL2ludGVnZXJfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQyJywKKyAg YW1wcm9jcmlnaHR0eXBlID0+ICdpbnQyJywgYW1wcm9jbnVtID0+ICc2JywgYW1wcm9jID0+ ICdicmluX21pbm1heF9wcmVwcm9jZXNzJyB9LAogCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9pbnRlZ2VyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50NCcsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnaW50NCcsIGFtcHJvY251bSA9PiAnMScsCkBAIC05MTcsNiAr OTI3LDggQEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ2ludDQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDQnLCBhbXByb2NudW0g PT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2lu dDQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDQnLCBhbXByb2NudW0gPT4gJzYnLCBh bXByb2MgPT4gJ2JyaW5fbWlubWF4X3ByZXByb2Nlc3MnIH0sCiAKICMgbWlubWF4IG11bHRp IGludGVnZXI6IGludDIsIGludDQsIGludDgKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2lu dGVnZXJfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQyJywKQEAg LTEwMzQsNiArMTA0Niw4IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVu dCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RleHRfbWlubWF4X29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICd0ZXh0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0ZXh0JywgYW1w cm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1w cm9jZmFtaWx5ID0+ICdicmluL3RleHRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICd0ZXh0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0ZXh0JywgYW1wcm9jbnVtID0+ICc2 JywgYW1wcm9jID0+ICdicmluX21pbm1heF9wcmVwcm9jZXNzJyB9LAogCiAjIGJsb29tIHRl eHQKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RleHRfYmxvb21fb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ3RleHQnLApAQCAtMTA2Miw2ICsxMDc2LDggQEAKICAgYW1wcm9jID0+ICdi cmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vb2lk X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lkJywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vb2lkX21pbm1heF9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAnb2lkJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdvaWQnLCBh bXByb2NudW0gPT4gJzYnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3ByZXByb2Nlc3MnIH0s CiAKICMgbWlubWF4IG11bHRpIG9pZAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vb2lkX21p bm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lkJywKQEAgLTExMTAsNiAr MTEyNiw4IEBACiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcgfSwKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL3RpZF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ3RpZCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGlkJywgYW1wcm9jbnVtID0+ICc0 JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ ICdicmluL3RpZF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpZCcsCisgIGFt cHJvY3JpZ2h0dHlwZSA9PiAndGlkJywgYW1wcm9jbnVtID0+ICc2JywgYW1wcm9jID0+ICdi cmluX21pbm1heF9wcmVwcm9jZXNzJyB9LAogCiAjIGJsb29tIHRpZAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vdGlkX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aWQnLApA QCAtMTE2MCw2ICsxMTc4LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X21p bm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZmxvYXQ0JywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICdmbG9hdDQnLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5f bWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlubWF4 X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLAorICBhbXByb2NyaWdodHR5cGUg PT4gJ2Zsb2F0NCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5t YXhfcHJlcHJvY2VzcycgfSwKIAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlu bWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDgnLAogICBhbXByb2NyaWdodHR5 cGUgPT4gJ2Zsb2F0OCcsIGFtcHJvY251bSA9PiAnMScsCkBAIC0xMTczLDYgKzExOTQsOSBA QAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfbWlubWF4X29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdmbG9hdDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0OCcsIGFt cHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5pb24nIH0sCit7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ2Zsb2F0OCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ4JywgYW1wcm9j bnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9wcmVwcm9jZXNzJyB9LAog CiAjIG1pbm1heCBtdWx0aSBmbG9hdAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRf bWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQnLApAQCAtMTI2 MSw2ICsxMjg1LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHJfbWlubWF4 X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICdtYWNhZGRyJywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21p bm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHJfbWlubWF4 X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywKKyAgYW1wcm9jcmlnaHR0eXBl ID0+ICdtYWNhZGRyJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21p bm1heF9wcmVwcm9jZXNzJyB9LAogCiAjIG1pbm1heCBtdWx0aSBtYWNhZGRyCiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnbWFjYWRkcicsCkBAIC0xMzE0LDYgKzEzNDEsOSBAQAogeyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vbWFjYWRkcjhfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdt YWNhZGRyOCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbWFjYWRkcjgnLCBhbXByb2NudW0g PT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vbWFjYWRkcjhfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdtYWNhZGRyOCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbWFjYWRkcjgnLCBhbXByb2Nu dW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3ByZXByb2Nlc3MnIH0sCiAK ICMgbWlubWF4IG11bHRpIG1hY2FkZHI4CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNh ZGRyOF9taW5tYXhfbXVsdGlfb3BzJywKQEAgLTEzNjYsNiArMTM5Niw4IEBACiAgIGFtcHJv YyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL25ldHdvcmtfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL25ldHdv cmtfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKKyAgYW1wcm9jcmln aHR0eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICc2JywgYW1wcm9jID0+ICdicmluX21p bm1heF9wcmVwcm9jZXNzJyB9LAogCiAjIG1pbm1heCBtdWx0aSBpbmV0CiB7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9uZXR3b3JrX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAnaW5ldCcsCkBAIC0xNDM2LDYgKzE0NjgsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vYnBjaGFyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYnBjaGFyJywK ICAgYW1wcm9jcmlnaHR0eXBlID0+ICdicGNoYXInLCBhbXByb2NudW0gPT4gJzQnLAogICBh bXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vYnBjaGFyX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYnBjaGFyJywKKyAg YW1wcm9jcmlnaHR0eXBlID0+ICdicGNoYXInLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXBy b2MgPT4gJ2JyaW5fbWlubWF4X3ByZXByb2Nlc3MnIH0sCiAKICMgYmxvb20gY2hhcmFjdGVy CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9icGNoYXJfYmxvb21fb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ2JwY2hhcicsCkBAIC0xNDY3LDYgKzE1MDIsOCBAQAogICBhbXByb2MgPT4g J2JyaW5fbWlubWF4X2NvbnNpc3RlbnQnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90 aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZScsCiAgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAndGltZScsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9t aW5tYXhfdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1lX21pbm1heF9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn dGltZScsIGFtcHJvY251bSA9PiAnNicsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcHJlcHJv Y2VzcycgfSwKIAogIyBtaW5tYXggbXVsdGkgdGltZSB3aXRob3V0IHRpbWUgem9uZQogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vdGltZV9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ3RpbWUnLApAQCAtMTUxNyw2ICsxNTU0LDkgQEAKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGlt ZXN0YW1wJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lc3RhbXAnLCBhbXByb2NudW0g PT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICd0aW1lc3RhbXAnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcCcsIGFtcHJv Y251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfcHJlcHJvY2VzcycgfSwK IAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICd0aW1lc3RhbXB0eicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGlt ZXN0YW1wdHonLCBhbXByb2NudW0gPT4gJzEnLApAQCAtMTUzMCw2ICsxNTcwLDkgQEAKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAndGltZXN0YW1wdHonLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFt cHR6JywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlv bicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wdHonLAorICBhbXByb2NyaWdodHR5cGUgPT4g J3RpbWVzdGFtcHR6JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21p bm1heF9wcmVwcm9jZXNzJyB9LAogCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGlt ZV9taW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2RhdGUnLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ2RhdGUnLCBhbXByb2NudW0gPT4gJzEnLApAQCAtMTU0Miw2ICsxNTg1LDgg QEAKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdkYXRlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdkYXRlJywgYW1wcm9jbnVtID0+ICc0 JywgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ ICdicmluL2RhdGV0aW1lX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnZGF0ZScs CisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZGF0ZScsIGFtcHJvY251bSA9PiAnNicsIGFtcHJv YyA9PiAnYnJpbl9taW5tYXhfcHJlcHJvY2VzcycgfSwKIAogIyBtaW5tYXggbXVsdGkgZGF0 ZXRpbWUgKGRhdGUsIHRpbWVzdGFtcCwgdGltZXN0YW1wdHopCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9kYXRldGltZV9taW5tYXhfbXVsdGlfb3BzJywKQEAgLTE2NjgsNiArMTcxMyw5 IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlcnZhbF9taW5tYXhfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2ludGVydmFsJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnRl cnZhbCcsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfdW5p b24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlcnZhbF9taW5tYXhfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ2ludGVydmFsJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdp bnRlcnZhbCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf cHJlcHJvY2VzcycgfSwKIAogIyBtaW5tYXggbXVsdGkgaW50ZXJ2YWwKIHsgYW1wcm9jZmFt aWx5ID0+ICdicmluL2ludGVydmFsX21pbm1heF9tdWx0aV9vcHMnLApAQCAtMTcyMSw2ICsx NzY5LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWV0el9taW5tYXhfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWV0eicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGlt ZXR6JywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF91bmlv bicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWV0el9taW5tYXhfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ3RpbWV0eicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXR6 JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9wcmVwcm9j ZXNzJyB9LAogCiAjIG1pbm1heCBtdWx0aSB0aW1lIHdpdGggdGltZSB6b25lCiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi90aW1ldHpfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICd0aW1ldHonLApAQCAtMTc3MSw2ICsxODIyLDggQEAKICAgYW1wcm9jID0+ICdi cmluX21pbm1heF9jb25zaXN0ZW50JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYml0 X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYml0JywKICAgYW1wcm9jcmlnaHR0 eXBlID0+ICdiaXQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYml0X21pbm1heF9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAnYml0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdiaXQnLCBh bXByb2NudW0gPT4gJzYnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X3ByZXByb2Nlc3MnIH0s CiAKICMgbWlubWF4IGJpdCB2YXJ5aW5nCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi92YXJi aXRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd2YXJiaXQnLApAQCAtMTc4NSw2 ICsxODM4LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3ZhcmJpdF9taW5tYXhfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ3ZhcmJpdCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn dmFyYml0JywgYW1wcm9jbnVtID0+ICc0JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF91 bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3ZhcmJpdF9taW5tYXhfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ3ZhcmJpdCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndmFy Yml0JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9wcmVw cm9jZXNzJyB9LAogCiAjIG1pbm1heCBudW1lcmljCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9udW1lcmljX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbnVtZXJpYycsCkBA IC0xNzk5LDYgKzE4NTUsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbnVtZXJpY19t aW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ251bWVyaWMnLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ251bWVyaWMnLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbnVtZXJpY19t aW5tYXhfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ251bWVyaWMnLAorICBhbXByb2NyaWdo dHR5cGUgPT4gJ251bWVyaWMnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X3ByZXByb2Nlc3MnIH0sCiAKICMgbWlubWF4IG11bHRpIG51bWVyaWMKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL251bWVyaWNfbWlubWF4X211bHRpX29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICdudW1lcmljJywKQEAgLTE4NTEsNiArMTkxMCw4IEBACiAgIGFtcHJv YyA9PiAnYnJpbl9taW5tYXhfY29uc2lzdGVudCcgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL3V1aWRfbWlubWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd1dWlkJywKICAgYW1w cm9jcmlnaHR0eXBlID0+ICd1dWlkJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdi cmluX21pbm1heF91bmlvbicgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3V1aWRfbWlu bWF4X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd1dWlkJywKKyAgYW1wcm9jcmlnaHR0eXBl ID0+ICd1dWlkJywgYW1wcm9jbnVtID0+ICc2JywgYW1wcm9jID0+ICdicmluX21pbm1heF9w cmVwcm9jZXNzJyB9LAogCiAjIG1pbm1heCBtdWx0aSB1dWlkCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi91dWlkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndXVp ZCcsCkBAIC0xOTI0LDYgKzE5ODUsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vcGdf bHNuX21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncGdfbHNuJywKICAgYW1wcm9j cmlnaHR0eXBlID0+ICdwZ19sc24nLCBhbXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4g J2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vcGdfbHNu X21pbm1heF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncGdfbHNuJywKKyAgYW1wcm9jcmln aHR0eXBlID0+ICdwZ19sc24nLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X3ByZXByb2Nlc3MnIH0sCiAKICMgbWlubWF4IG11bHRpIHBnX2xzbgogeyBh bXByb2NmYW1pbHkgPT4gJ2JyaW4vcGdfbHNuX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAncGdfbHNuJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDY2 YjczYzM5MDAuLjY2Mzg1NTJiZDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAt ODQ5Niw2ICs4NDk2LDkgQEAKIHsgb2lkID0+ICczMzg2JywgZGVzY3IgPT4gJ0JSSU4gbWlu bWF4IHN1cHBvcnQnLAogICBwcm9uYW1lID0+ICdicmluX21pbm1heF91bmlvbicsIHByb3Jl dHR5cGUgPT4gJ2Jvb2wnLAogICBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgaW50ZXJuYWwg aW50ZXJuYWwnLCBwcm9zcmMgPT4gJ2JyaW5fbWlubWF4X3VuaW9uJyB9LAoreyBvaWQgPT4g JzkzMjcnLCBkZXNjciA9PiAnQlJJTiBtaW5tYXggc3VwcG9ydCcsCisgIHByb25hbWUgPT4g J2JyaW5fbWlubWF4X3ByZXByb2Nlc3MnLCBwcm9yZXR0eXBlID0+ICdpbnRlcm5hbCcsCisg IHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCBpbnRlcm5hbCcsIHByb3NyYyA9PiAnYnJpbl9t aW5tYXhfcHJlcHJvY2VzcycgfSwKIAogIyBCUklOIG1pbm1heCBtdWx0aQogeyBvaWQgPT4g JzQ2MTYnLCBkZXNjciA9PiAnQlJJTiBtdWx0aSBtaW5tYXggc3VwcG9ydCcsCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRpbHMub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9hbXV0aWxzLm91dAppbmRleCA3YWI2MTEzYzYxLi5mM2UxZmJk MmFlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FtdXRpbHMub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYW11dGlscy5vdXQKQEAgLTEwMiw3 ICsxMDIsNyBAQCBzZWxlY3QgcHJvcCwKICBvcmRlcmFibGUgICAgICAgICAgfCB0ICAgICB8 IGYgICAgfCBmICAgIHwgZiAgICAgICAgICAgIHwgZiAgICAgICAgICAgfCBmICAgfCBmCiAg ZGlzdGFuY2Vfb3JkZXJhYmxlIHwgZiAgICAgfCBmICAgIHwgdCAgICB8IGYgICAgICAgICAg ICB8IHQgICAgICAgICAgIHwgZiAgIHwgZgogIHJldHVybmFibGUgICAgICAgICB8IHQgICAg IHwgZiAgICB8IGYgICAgfCB0ICAgICAgICAgICAgfCB0ICAgICAgICAgICB8IGYgICB8IGYK LSBzZWFyY2hfYXJyYXkgICAgICAgfCB0ICAgICB8IGYgICAgfCBmICAgIHwgZiAgICAgICAg ICAgIHwgZiAgICAgICAgICAgfCBmICAgfCBmCisgc2VhcmNoX2FycmF5ICAgICAgIHwgdCAg ICAgfCBmICAgIHwgZiAgICB8IGYgICAgICAgICAgICB8IGYgICAgICAgICAgIHwgZiAgIHwg dAogIHNlYXJjaF9udWxscyAgICAgICB8IHQgICAgIHwgZiAgICB8IHQgICAgfCB0ICAgICAg ICAgICAgfCB0ICAgICAgICAgICB8IGYgICB8IHQKICBib2d1cyAgICAgICAgICAgICAgfCAg ICAgICB8ICAgICAgfCAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAg fCAKICgxMCByb3dzKQotLSAKMi4zOS4xCgo= --------------mzJK0H1XSWOfxSV5Dx6We88O Content-Type: text/x-patch; charset=UTF-8; name="0006-Support-SK_SEARCHARRAY-in-BRIN-minmax-multi-20230215.patch" Content-Disposition: attachment; filename*0="0006-Support-SK_SEARCHARRAY-in-BRIN-minmax-multi-20230215.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3YmJhZmFiMTA4NWRlYTE3NWVmN2U1NGFjODUxM2M2MzNmZTc3NDYxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAxMSBGZWIgMjAyMyAxOTo0MzozOCArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNi85XSBTdXBwb3J0IFNLX1NFQVJDSEFSUkFZIGluIEJSSU4gbWlubWF4 LW11bHRpCgpTaW1pbGFyIGFwcHJvYWNoIHRvIG1pbm1heCwgYnV0IHRoZSBpc3N1ZXMgd2l0 aCBkZWNvbnN0cnVjdGluZyB0aGUgYXJyYXkKb3ZlciBhbmQgb3ZlciBhcmUgZXZlbiBtb3Jl IHNlcmlvdXMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXhfbXVs dGkuYyB8IDQzOSArKysrKysrKysrKysrKysrKy0tLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19hbXByb2MuZGF0ICAgICAgICAgICB8ICA1NyArKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQgICAgICAgICAgICAgfCAgIDQgKwogMyBmaWxlcyBjaGFuZ2VkLCA0MzQg aW5zZXJ0aW9ucygrKSwgNjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXhfbXVsdGkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW5fbWlubWF4X211bHRpLmMKaW5kZXggODU5ZTAwMjJmYi4uYjcwMTE2ZDMz YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9taW5tYXhfbXVs dGkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX21pbm1heF9tdWx0aS5j CkBAIC0xMDksNiArMTA5LDE0IEBACiAjZGVmaW5lCQlNSU5NQVhfQlVGRkVSX01BWAkJCQk4 MTkyCiAjZGVmaW5lCQlNSU5NQVhfQlVGRkVSX0xPQURfRkFDVE9SCQkwLjUKIAorLyoKKyAq IFdlIHVzZSBzb21lIHByaXZhdGUgc2tfZmxhZ3MgYml0cyBpbiBwcmVwcm9jZXNzZWQgc2Nh biBrZXlzLiAgV2UncmUgYWxsb3dlZAorICogdG8gdXNlIGJpdHMgMTYtMzEgKHNlZSBza2V5 LmgpLiAgVGhlIHVwcGVybW9zdCBiaXRzIGFyZSBjb3BpZWQgZnJvbSB0aGUKKyAqIGluZGV4 J3MgaW5kb3B0aW9uW10gYXJyYXkgZW50cnkgZm9yIHRoZSBpbmRleCBhdHRyaWJ1dGUuCisg Ki8KKyNkZWZpbmUgU0tfQlJJTl9TT1JURUQJMHgwMDAxMDAwMAkvKiBkZWNvbnN0cnVjdGVk IGFuZCBzb3J0ZWQgYXJyYXkgKi8KKworCiB0eXBlZGVmIHN0cnVjdCBNaW5tYXhNdWx0aU9w YXF1ZQogewogCUZtZ3JJbmZvCWV4dHJhX3Byb2NpbmZvc1tNSU5NQVhfTUFYX1BST0NOVU1T XTsKQEAgLTI1NjIsNiArMjU3MCwxMzIgQEAgYnJpbl9taW5tYXhfbXVsdGlfYWRkX3ZhbHVl KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX0JPT0wobW9kaWZpZWQpOwogfQogCisK K3N0YXRpYyBpbnQKK2NvbXBhcmVfYXJyYXlfdmFsdWVzKGNvbnN0IHZvaWQgKmEsIGNvbnN0 IHZvaWQgKmIsIHZvaWQgKmFyZykKK3sKKwlEYXR1bQlkYSA9ICogKERhdHVtICopIGE7CisJ RGF0dW0JZGIgPSAqIChEYXR1bSAqKSBiOworCVNvcnRTdXBwb3J0CXNzdXAgPSAoU29ydFN1 cHBvcnQpIGFyZzsKKworCXJldHVybiBBcHBseVNvcnRDb21wYXJhdG9yKGRhLCBmYWxzZSwg ZGIsIGZhbHNlLCBzc3VwKTsKK30KKworLyoKKyAqIGxvd2VyX2JvdW5kYXJ5CisgKgkJRGV0 ZXJtaW5lIGxvd2VzdCBpbmRleCBzbyB0aGF0ICh2YWx1ZXNbaW5kZXhdID49IG1pbnZhbHVl KS4KKyAqCisgKiBUaGUgYXJyYXkgb2YgdmFsdWVzIGlzIGV4cGVjdGVkIHRvIGJlIHNvcnRl ZCwgc28gdGhpcyBpcyB0aGUgZmlyc3QgdmFsdWUKKyAqIHRoYXQgbWF5IGZhbGwgaW50byB0 aGUgW21pbnZhbHVlLCBtYXh2YWx1ZV0gcmFuZ2UsIGFzIGl0IGV4Y2VlZHMgbWludmFsLgor ICogSXQncyBub3QgZ3VhcmFudGVlZCwgdGhvdWdoLCBhcyBpdCBtaWdodCBleGNlZWQgbWF4 dmFsdWUgdG9vLgorICovCitzdGF0aWMgaW50Citsb3dlcl9ib3VuZGFyeShEYXR1bSAqdmFs dWVzLCBpbnQgbnZhbHVlcywgRGF0dW0gbWludmFsdWUsIFNvcnRTdXBwb3J0IHNzdXApCit7 CisJaW50CQlzdGFydCA9IDAsCisJCQllbmQgPSAobnZhbHVlcyAtIDEpOworCisJLyogZXZl cnl0aGluZyBleGNlZWRzIG1pbnZhbCBhbmQgbWlnaHQgbWF0Y2ggKi8KKwlpZiAoY29tcGFy ZV9hcnJheV92YWx1ZXMoJm1pbnZhbHVlLCAmdmFsdWVzW3N0YXJ0XSwgc3N1cCkgPD0gMCkK KwkJcmV0dXJuIDA7CisKKwkvKiBub3RoaW5nIGNvdWxkIG1hdGNoICovCisJaWYgKGNvbXBh cmVfYXJyYXlfdmFsdWVzKCZtaW52YWx1ZSwgJnZhbHVlc1tlbmRdLCBzc3VwKSA+IDApCisJ CXJldHVybiBudmFsdWVzOworCisJd2hpbGUgKChlbmQgLSBzdGFydCkgPiAwKQorCXsKKwkJ aW50IG1pZHBvaW50OworCQlpbnQgcjsKKworCQltaWRwb2ludCA9IHN0YXJ0ICsgKGVuZCAt IHN0YXJ0KSAvIDI7CisKKwkJciA9IGNvbXBhcmVfYXJyYXlfdmFsdWVzKCZtaW52YWx1ZSwg JnZhbHVlc1ttaWRwb2ludF0sIHNzdXApOworCisJCWlmIChyID4gMCkKKwkJCXN0YXJ0ID0g TWF4KG1pZHBvaW50LCBzdGFydCArIDEpOworCQllbHNlCisJCQllbmQgPSBtaWRwb2ludDsK Kwl9CisKKwkvKiB0aGUgdmFsdWUgc2hvdWxkIG1lZXQgdGhlICh2ID49bWludmFsdWUpIHJl cXVpcmVtZW50ICovCisJQXNzZXJ0KGNvbXBhcmVfYXJyYXlfdmFsdWVzKCZ2YWx1ZXNbc3Rh cnRdLCAmbWludmFsdWUsIHNzdXApID49IDApOworCisJLyogd2Uga25vdyBzdGFydCBjYW4n dCBiZSAwLCBzbyBpdCdzIGxlZ2FsIHRvIHN1YnRyYWN0IDEgKi8KKwlBc3NlcnQoY29tcGFy ZV9hcnJheV92YWx1ZXMoJnZhbHVlc1tzdGFydC0xXSwgJm1pbnZhbHVlLCBzc3VwKSA8IDAp OworCisJcmV0dXJuIHN0YXJ0OworfQorCit0eXBlZGVmIHN0cnVjdCBTY2FuS2V5QXJyYXkg eworCU9pZAkJdHlwZWlkOworCWludAkJbmVsZW1lbnRzOworCURhdHVtICAqZWxlbWVudHM7 Cit9IFNjYW5LZXlBcnJheTsKKworRGF0dW0KK2JyaW5fbWlubWF4X211bHRpX3ByZXByb2Nl c3MoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvLyBCcmluRGVzYyAgICpiZGVzYyA9IChCcmlu RGVzYyAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKwlTY2FuS2V5CQlrZXkgPSAoU2Nhbktl eSkgUEdfR0VUQVJHX1BPSU5URVIoMSk7CisJU2NhbktleQkJbmV3a2V5OworCVNjYW5LZXlB cnJheSAqc2NhbmFycmF5OworCisJQXJyYXlUeXBlICAqYXJyYXl2YWw7CisJaW50MTYJCWVs bWxlbjsKKwlib29sCQllbG1ieXZhbDsKKwljaGFyCQllbG1hbGlnbjsKKwlpbnQJCQludW1f ZWxlbXM7CisJRGF0dW0JICAgKmVsZW1fdmFsdWVzOworCWJvb2wJICAgKmVsZW1fbnVsbHM7 CisJVHlwZUNhY2hlRW50cnkgKnR5cGU7CisJU29ydFN1cHBvcnREYXRhIHNzdXA7CisKKwkv KiBpZ25vcmUgc2NhbGFyIGtleXMgKi8KKwlpZiAoIShrZXktPnNrX2ZsYWdzICYgU0tfU0VB UkNIQVJSQVkpKQorCQlQR19SRVRVUk5fUE9JTlRFUihrZXkpOworCisJYXJyYXl2YWwgPSBE YXR1bUdldEFycmF5VHlwZVAoa2V5LT5za19hcmd1bWVudCk7CisKKwlnZXRfdHlwbGVuYnl2 YWxhbGlnbihBUlJfRUxFTVRZUEUoYXJyYXl2YWwpLAorCQkJCQkJICZlbG1sZW4sICZlbG1i eXZhbCwgJmVsbWFsaWduKTsKKworCWRlY29uc3RydWN0X2FycmF5KGFycmF5dmFsLAorCQkJ CQkgIEFSUl9FTEVNVFlQRShhcnJheXZhbCksCisJCQkJCSAgZWxtbGVuLCBlbG1ieXZhbCwg ZWxtYWxpZ24sCisJCQkJCSAgJmVsZW1fdmFsdWVzLCAmZWxlbV9udWxscywgJm51bV9lbGVt cyk7CisKKwl0eXBlID0gbG9va3VwX3R5cGVfY2FjaGUoQVJSX0VMRU1UWVBFKGFycmF5dmFs KSwgVFlQRUNBQ0hFX0xUX09QUik7CisKKwltZW1zZXQoJnNzdXAsIDAsIHNpemVvZihTb3J0 U3VwcG9ydERhdGEpKTsKKworCXNzdXAuc3N1cF9jb2xsYXRpb24gPSBrZXktPnNrX2NvbGxh dGlvbjsKKwlzc3VwLnNzdXBfY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7CisKKwlQcmVw YXJlU29ydFN1cHBvcnRGcm9tT3JkZXJpbmdPcCh0eXBlLT5sdF9vcHIsICZzc3VwKTsKKwor CXFzb3J0X2ludGVycnVwdGlibGUoZWxlbV92YWx1ZXMsIG51bV9lbGVtcywgc2l6ZW9mKERh dHVtKSwKKwkJCQkJCWNvbXBhcmVfYXJyYXlfdmFsdWVzLCAmc3N1cCk7CisKKwlzY2FuYXJy YXkgPSBwYWxsb2MwKHNpemVvZihTY2FuS2V5QXJyYXkpKTsKKwlzY2FuYXJyYXktPnR5cGVp ZCA9IEFSUl9FTEVNVFlQRShhcnJheXZhbCk7CisJc2NhbmFycmF5LT5uZWxlbWVudHMgPSBu dW1fZWxlbXM7CisJc2NhbmFycmF5LT5lbGVtZW50cyA9IGVsZW1fdmFsdWVzOworCisJbmV3 a2V5ID0gcGFsbG9jMChzaXplb2YoU2NhbktleURhdGEpKTsKKworCVNjYW5LZXlFbnRyeUlu aXRpYWxpemVXaXRoSW5mbyhuZXdrZXksCisJCQkJCQkJCSAgIChrZXktPnNrX2ZsYWdzIHwg U0tfQlJJTl9TT1JURUQpLAorCQkJCQkJCQkgICBrZXktPnNrX2F0dG5vLAorCQkJCQkJCQkg ICBrZXktPnNrX3N0cmF0ZWd5LAorCQkJCQkJCQkgICBrZXktPnNrX3N1YnR5cGUsCisJCQkJ CQkJCSAgIGtleS0+c2tfY29sbGF0aW9uLAorCQkJCQkJCQkgICAma2V5LT5za19mdW5jLAor CQkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oc2NhbmFycmF5KSk7CisKKwlQR19SRVRVUk5f UE9JTlRFUihuZXdrZXkpOworfQorCiAvKgogICogR2l2ZW4gYW4gaW5kZXggdHVwbGUgY29y cmVzcG9uZGluZyB0byBhIGNlcnRhaW4gcGFnZSByYW5nZSBhbmQgYSBzY2FuIGtleSwKICAq IHJldHVybiB3aGV0aGVyIHRoZSBzY2FuIGtleSBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGlu ZGV4IHR1cGxlJ3MgbWluL21heApAQCAtMjU5MSw2ICsyNzI1LDE1IEBAIGJyaW5fbWlubWF4 X211bHRpX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAlzZXJpYWxpemVkID0gKFNl cmlhbGl6ZWRSYW5nZXMgKikgUEdfREVUT0FTVF9EQVRVTShjb2x1bW4tPmJ2X3ZhbHVlc1sw XSk7CiAJcmFuZ2VzID0gYnJpbl9yYW5nZV9kZXNlcmlhbGl6ZShzZXJpYWxpemVkLT5tYXh2 YWx1ZXMsIHNlcmlhbGl6ZWQpOwogCisJLyoKKwkgKiBYWFggV291bGQgaXQgbWFrZSBzZW5z ZSB0byBoYXZlIGEgcXVpY2sgaW5pdGlhbCBjaGVjayBvbiB0aGUgd2hvbGUKKwkgKiBzdW1t YXJ5PyBXZSBrbm93IG1vc3QgcGFnZSByYW5nZXMgYXJlIG5vdCBleHBlY3RlZCB0byBtYXRj aCwgYW5kIHdlCisJICoga25vdyB0aGUgcmFuZ2VzL3ZhbHVlcyBhcmUgc29ydGVkIHNvIHdl IGNvdWxkIGNoZWNrIGdsb2JhbCBtaW4vbWF4CisJICogKGVzc2VudGlhbGx5IHdoYXQgcmVn dWxhciBtaW5tYXggaXMgZG9pbmcpIGFuZCBiYWlsIGlmIG5vIG1hdGNoIGlzCisJICogcG9z c2libGUuIFRoYXQgc2hvdWxkIGJlIGNoZWFwIGFuZCBtaWdodCBzYXZlIGEgbG90IG9uIGlu c3BlY3RpbmcKKwkgKiB0aGUgaW5kaXZpZHVhbCByYW5nZXMvdmFsdWVzLgorCSAqLworCiAJ LyogaW5zcGVjdCB0aGUgcmFuZ2VzLCBhbmQgZm9yIGVhY2ggb25lIGV2YWx1YXRlIHRoZSBz Y2FuIGtleXMgKi8KIAlmb3IgKHJhbmdlbm8gPSAwOyByYW5nZW5vIDwgcmFuZ2VzLT5ucmFu Z2VzOyByYW5nZW5vKyspCiAJewpAQCAtMjYxMSw2NyArMjc1NCwxNzkgQEAgYnJpbl9taW5t YXhfbXVsdGlfY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCQkJYXR0bm8gPSBrZXkt PnNrX2F0dG5vOwogCQkJc3VidHlwZSA9IGtleS0+c2tfc3VidHlwZTsKIAkJCXZhbHVlID0g a2V5LT5za19hcmd1bWVudDsKLQkJCXN3aXRjaCAoa2V5LT5za19zdHJhdGVneSkKLQkJCXsK LQkJCQljYXNlIEJUTGVzc1N0cmF0ZWd5TnVtYmVyOgotCQkJCWNhc2UgQlRMZXNzRXF1YWxT dHJhdGVneU51bWJlcjoKLQkJCQkJZmluZm8gPSBtaW5tYXhfbXVsdGlfZ2V0X3N0cmF0ZWd5 X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwKLQkJCQkJCQkJCQkJCQkJCSAgIGtl eS0+c2tfc3RyYXRlZ3kpOwotCQkJCQkvKiBmaXJzdCB2YWx1ZSBmcm9tIHRoZSBhcnJheSAq LwotCQkJCQltYXRjaGVzID0gRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsIG1p bnZhbCwgdmFsdWUpOwotCQkJCQlicmVhazsKIAotCQkJCWNhc2UgQlRFcXVhbFN0cmF0ZWd5 TnVtYmVyOgotCQkJCQl7Ci0JCQkJCQlEYXR1bQkJY29tcGFyOwotCQkJCQkJRm1nckluZm8g ICAqY21wRm47CisJCQlpZiAobGlrZWx5KCEoa2V5LT5za19mbGFncyAmIFNLX0JSSU5fU09S VEVEKSkpCisJCQl7CisJCQkJc3dpdGNoIChrZXktPnNrX3N0cmF0ZWd5KQorCQkJCXsKKwkJ CQkJY2FzZSBCVExlc3NTdHJhdGVneU51bWJlcjoKKwkJCQkJY2FzZSBCVExlc3NFcXVhbFN0 cmF0ZWd5TnVtYmVyOgorCQkJCQkJZmluZm8gPSBtaW5tYXhfbXVsdGlfZ2V0X3N0cmF0ZWd5 X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwKKwkJCQkJCQkJCQkJCQkJCQkgICBr ZXktPnNrX3N0cmF0ZWd5KTsKKwkJCQkJCS8qIGZpcnN0IHZhbHVlIGZyb20gdGhlIGFycmF5 ICovCisJCQkJCQltYXRjaGVzID0gRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQs IG1pbnZhbCwgdmFsdWUpOworCQkJCQkJYnJlYWs7CiAKLQkJCQkJCS8qIGJ5IGRlZmF1bHQg dGhpcyByYW5nZSBkb2VzIG5vdCBtYXRjaCAqLwotCQkJCQkJbWF0Y2hlcyA9IEJvb2xHZXRE YXR1bShmYWxzZSk7CisJCQkJCWNhc2UgQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOgorCQkJCQkJ eworCQkJCQkJCURhdHVtCQljb21wYXI7CisJCQkJCQkJRm1nckluZm8gICAqY21wRm47CisK KwkJCQkJCQkvKiBieSBkZWZhdWx0IHRoaXMgcmFuZ2UgZG9lcyBub3QgbWF0Y2ggKi8KKwkJ CQkJCQltYXRjaGVzID0gQm9vbEdldERhdHVtKGZhbHNlKTsKKworCQkJCQkJCS8qCisJCQkJ CQkJICogT3RoZXJ3aXNlLCBuZWVkIHRvIGNvbXBhcmUgdGhlIG5ldyB2YWx1ZSB3aXRoCisJ CQkJCQkJICogYm91bmRhcmllcyBvZiBhbGwgdGhlIHJhbmdlcy4gRmlyc3QgY2hlY2sgaWYg aXQncworCQkJCQkJCSAqIGxlc3MgdGhhbiB0aGUgYWJzb2x1dGUgbWluaW11bSwgd2hpY2gg aXMgdGhlIGZpcnN0CisJCQkJCQkJICogdmFsdWUgaW4gdGhlIGFycmF5LgorCQkJCQkJCSAq LworCQkJCQkJCWNtcEZuID0gbWlubWF4X211bHRpX2dldF9zdHJhdGVneV9wcm9jaW5mbyhi ZGVzYywgYXR0bm8sIHN1YnR5cGUsCisJCQkJCQkJCQkJCQkJCQkJCSAgIEJUR3JlYXRlclN0 cmF0ZWd5TnVtYmVyKTsKKwkJCQkJCQljb21wYXIgPSBGdW5jdGlvbkNhbGwyQ29sbChjbXBG biwgY29sbG9pZCwgbWludmFsLCB2YWx1ZSk7CisKKwkJCQkJCQkvKiBzbWFsbGVyIHRoYW4g dGhlIHNtYWxsZXN0IHZhbHVlIGluIHRoaXMgcmFuZ2UgKi8KKwkJCQkJCQlpZiAoRGF0dW1H ZXRCb29sKGNvbXBhcikpCisJCQkJCQkJCWJyZWFrOworCisJCQkJCQkJY21wRm4gPSBtaW5t YXhfbXVsdGlfZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwK KwkJCQkJCQkJCQkJCQkJCQkJICAgQlRMZXNzU3RyYXRlZ3lOdW1iZXIpOworCQkJCQkJCWNv bXBhciA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGNtcEZuLCBjb2xsb2lkLCBtYXh2YWwsIHZhbHVl KTsKKworCQkJCQkJCS8qIGxhcmdlciB0aGFuIHRoZSBsYXJnZXN0IHZhbHVlIGluIHRoaXMg cmFuZ2UgKi8KKwkJCQkJCQlpZiAoRGF0dW1HZXRCb29sKGNvbXBhcikpCisJCQkJCQkJCWJy ZWFrOworCisJCQkJCQkJLyoKKwkJCQkJCQkgKiBXZSBoYXZlbid0IG1hbmFnZWQgdG8gZWxp bWluYXRlIHRoaXMgcmFuZ2UsIHNvCisJCQkJCQkJICogY29uc2lkZXIgaXQgbWF0Y2hpbmcu CisJCQkJCQkJICovCisJCQkJCQkJbWF0Y2hlcyA9IEJvb2xHZXREYXR1bSh0cnVlKTsKIAot CQkJCQkJLyoKLQkJCQkJCSAqIE90aGVyd2lzZSwgbmVlZCB0byBjb21wYXJlIHRoZSBuZXcg dmFsdWUgd2l0aAotCQkJCQkJICogYm91bmRhcmllcyBvZiBhbGwgdGhlIHJhbmdlcy4gRmly c3QgY2hlY2sgaWYgaXQncwotCQkJCQkJICogbGVzcyB0aGFuIHRoZSBhYnNvbHV0ZSBtaW5p bXVtLCB3aGljaCBpcyB0aGUgZmlyc3QKLQkJCQkJCSAqIHZhbHVlIGluIHRoZSBhcnJheS4K LQkJCQkJCSAqLwotCQkJCQkJY21wRm4gPSBtaW5tYXhfbXVsdGlfZ2V0X3N0cmF0ZWd5X3By b2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwKLQkJCQkJCQkJCQkJCQkJCQkgICBCVEdy ZWF0ZXJTdHJhdGVneU51bWJlcik7Ci0JCQkJCQljb21wYXIgPSBGdW5jdGlvbkNhbGwyQ29s bChjbXBGbiwgY29sbG9pZCwgbWludmFsLCB2YWx1ZSk7Ci0KLQkJCQkJCS8qIHNtYWxsZXIg dGhhbiB0aGUgc21hbGxlc3QgdmFsdWUgaW4gdGhpcyByYW5nZSAqLwotCQkJCQkJaWYgKERh dHVtR2V0Qm9vbChjb21wYXIpKQogCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJCQljYXNl IEJUR3JlYXRlckVxdWFsU3RyYXRlZ3lOdW1iZXI6CisJCQkJCWNhc2UgQlRHcmVhdGVyU3Ry YXRlZ3lOdW1iZXI6CisJCQkJCQlmaW5mbyA9IG1pbm1heF9tdWx0aV9nZXRfc3RyYXRlZ3lf cHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJCQkJCQkJCQkJCQkJCSAgIGtl eS0+c2tfc3RyYXRlZ3kpOworCQkJCQkJLyogbGFzdCB2YWx1ZSBmcm9tIHRoZSBhcnJheSAq LworCQkJCQkJbWF0Y2hlcyA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xsb2lkLCBt YXh2YWwsIHZhbHVlKTsKKwkJCQkJCWJyZWFrOwogCi0JCQkJCQljbXBGbiA9IG1pbm1heF9t dWx0aV9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAotCQkJ CQkJCQkJCQkJCQkJCSAgIEJUTGVzc1N0cmF0ZWd5TnVtYmVyKTsKLQkJCQkJCWNvbXBhciA9 IEZ1bmN0aW9uQ2FsbDJDb2xsKGNtcEZuLCBjb2xsb2lkLCBtYXh2YWwsIHZhbHVlKTsKKwkJ CQkJZGVmYXVsdDoKKwkJCQkJCS8qIHNob3VsZG4ndCBoYXBwZW4gKi8KKwkJCQkJCWVsb2co RVJST1IsICJpbnZhbGlkIHN0cmF0ZWd5IG51bWJlciAlZCIsIGtleS0+c2tfc3RyYXRlZ3kp OworCQkJCQkJbWF0Y2hlcyA9IEJvb2xHZXREYXR1bShmYWxzZSk7CisJCQkJCQlicmVhazsK KwkJCQl9CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJU2NhbktleUFycmF5ICphcnJheSA9 IChTY2FuS2V5QXJyYXkgKikgdmFsdWU7CiAKLQkJCQkJCS8qIGxhcmdlciB0aGFuIHRoZSBs YXJnZXN0IHZhbHVlIGluIHRoaXMgcmFuZ2UgKi8KLQkJCQkJCWlmIChEYXR1bUdldEJvb2wo Y29tcGFyKSkKLQkJCQkJCQlicmVhazsKKwkJCQlzd2l0Y2ggKGtleS0+c2tfc3RyYXRlZ3kp CisJCQkJeworCQkJCQljYXNlIEJUTGVzc1N0cmF0ZWd5TnVtYmVyOgorCQkJCQljYXNlIEJU TGVzc0VxdWFsU3RyYXRlZ3lOdW1iZXI6CisJCQkJCQlmaW5mbyA9IG1pbm1heF9tdWx0aV9n ZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJCQkJCQkJ CQkJCQkJCSAgIGtleS0+c2tfc3RyYXRlZ3kpOworCQkJCQkJLyogZmlyc3QgdmFsdWUgZnJv bSB0aGUgYXJyYXkgKi8KKwkJCQkJCW1hdGNoZXMgPSBGdW5jdGlvbkNhbGwyQ29sbChmaW5m bywgY29sbG9pZCwgbWludmFsLAorCQkJCQkJCQkJCQkJCWFycmF5LT5lbGVtZW50c1thcnJh eS0+bmVsZW1lbnRzLTFdKTsKKwkJCQkJCWJyZWFrOworCisJCQkJCWNhc2UgQlRFcXVhbFN0 cmF0ZWd5TnVtYmVyOgogCiAJCQkJCQkvKgotCQkJCQkJICogV2UgaGF2ZW4ndCBtYW5hZ2Vk IHRvIGVsaW1pbmF0ZSB0aGlzIHJhbmdlLCBzbwotCQkJCQkJICogY29uc2lkZXIgaXQgbWF0 Y2hpbmcuCisJCQkJCQkgKiBTZWUgYnJpbl9taW5tYXguYyBmb3IgZGVzY3JpcHRpb24gb2Yg d2hhdCB0aGlzIGlzIGRvaW5nLgogCQkJCQkJICovCi0JCQkJCQltYXRjaGVzID0gQm9vbEdl dERhdHVtKHRydWUpOwotCisJCQkJCQl7CisJCQkJCQkJRGF0dW0gdmFsOworCQkJCQkJCVNv cnRTdXBwb3J0RGF0YSBzc3VwOworCQkJCQkJCWludAkJCWxvd2VyOworCQkJCQkJCVR5cGVD YWNoZUVudHJ5ICp0eXBlOworCisJCQkJCQkJLyogSXMgdGhlIGZpcnN0IChzbWFsbGVzdCkg dmFsdWUgYWZ0ZXIgdGhlIEJSSU4gcmFuZ2U/ICovCisJCQkJCQkJdmFsID0gYXJyYXktPmVs ZW1lbnRzWzBdOworCisJCQkJCQkJZmluZm8gPSBtaW5tYXhfbXVsdGlfZ2V0X3N0cmF0ZWd5 X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwKKwkJCQkJCQkJCQkJCQkJCQkJICAg QlRMZXNzRXF1YWxTdHJhdGVneU51bWJlcik7CisJCQkJCQkJbWF0Y2hlcyA9IEZ1bmN0aW9u Q2FsbDJDb2xsKGZpbmZvLCBjb2xsb2lkLCB2YWwsIG1heHZhbCk7CisKKwkJCQkJCQkvKiBt aW52YWwgPiBtYXgocmFuZ2UgdmFsdWVzKSAqLworCQkJCQkJCWlmICghRGF0dW1HZXRCb29s KG1hdGNoZXMpKQorCQkJCQkJCQlicmVhazsKKworCQkJCQkJCS8qIElzIHRoZSBsYXN0IChs YXJnZXN0KSB2YWx1ZSBiZWZvcmUgdGhlIEJSSU4gcmFuZ2U/ICovCisJCQkJCQkJdmFsID0g YXJyYXktPmVsZW1lbnRzW2FycmF5LT5uZWxlbWVudHMtMV07CisKKwkJCQkJCQlmaW5mbyA9 IG1pbm1heF9tdWx0aV9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0 eXBlLAorCQkJCQkJCQkJCQkJCQkJCQkgICBCVEdyZWF0ZXJFcXVhbFN0cmF0ZWd5TnVtYmVy KTsKKwkJCQkJCQltYXRjaGVzID0gRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQs IHZhbCwgbWludmFsKTsKKworCQkJCQkJCS8qIG1heHZhbCA8IG1pbihyYW5nZSB2YWx1ZXMp ICovCisJCQkJCQkJaWYgKCFEYXR1bUdldEJvb2wobWF0Y2hlcykpCisJCQkJCQkJCWJyZWFr OworCisJCQkJCQkJLyoKKwkJCQkJCQkgKiBPSywgdGhlcmUgbWlnaHQgYmUgc29tZSB2YWx1 ZXMgbWF0Y2hpbmcgdGhlIHJhbmdlLiBXZSBoYXZlCisJCQkJCQkJICogdG8gc2VhcmNoIHRo ZW0gb25lIGJ5IG9uZSwgb3IgcGVyaGFwcyB0cnkgYmluc2VhcmNoLgorCQkJCQkJCSAqLwor CQkJCQkJCXR5cGUgPSBsb29rdXBfdHlwZV9jYWNoZShhcnJheS0+dHlwZWlkLCBUWVBFQ0FD SEVfTFRfT1BSKTsKKworCQkJCQkJCW1lbXNldCgmc3N1cCwgMCwgc2l6ZW9mKFNvcnRTdXBw b3J0RGF0YSkpOworCisJCQkJCQkJc3N1cC5zc3VwX2NvbGxhdGlvbiA9IGtleS0+c2tfY29s bGF0aW9uOworCQkJCQkJCXNzdXAuc3N1cF9jeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsK KworCQkJCQkJCVByZXBhcmVTb3J0U3VwcG9ydEZyb21PcmRlcmluZ09wKHR5cGUtPmx0X29w ciwgJnNzdXApOworCisJCQkJCQkJbG93ZXIgPSBsb3dlcl9ib3VuZGFyeShhcnJheS0+ZWxl bWVudHMsIGFycmF5LT5uZWxlbWVudHMsIG1pbnZhbCwgJnNzdXApOworCisJCQkJCQkJLyog bm8gZWxlbWVudHMgY2FuIHBvc3NpYmx5IG1hdGNoICovCisJCQkJCQkJaWYgKGxvd2VyID09 IGFycmF5LT5uZWxlbWVudHMpCisJCQkJCQkJeworCQkJCQkJCQltYXRjaGVzID0gQm9vbEdl dERhdHVtKGZhbHNlKTsKKwkJCQkJCQkJYnJlYWs7CisJCQkJCQkJfQorCisJCQkJCQkJLyoK KwkJCQkJCQkgKiBPSywgdGhlIGZpcnN0IGVsZW1lbnQgbXVzdCBtYXRjaCB0aGUgdXBwZXIg Ym91bmRhcnkgdG9vCisJCQkJCQkJICogKGlmIGl0IGRvZXMgbm90LCBubyBmb2xsb3dpbmcg ZWxlbWVudHMgY2FuKS4KKwkJCQkJCQkgKi8KKwkJCQkJCQl2YWwgPSBhcnJheS0+ZWxlbWVu dHNbbG93ZXJdOworCisJCQkJCQkJLyoKKwkJCQkJCQkgKiBJbiB0aGUgZXF1YWxpdHkgY2Fz ZSAoV0hFUkUgY29sID0gc29tZXZhbCksIHdlIHdhbnQgdG8gcmV0dXJuCisJCQkJCQkJICog dGhlIGN1cnJlbnQgcGFnZSByYW5nZSBpZiB0aGUgbWluaW11bSB2YWx1ZSBpbiB0aGUgcmFu Z2UgPD0KKwkJCQkJCQkgKiBzY2FuIGtleSwgYW5kIHRoZSBtYXhpbXVtIHZhbHVlID49IHNj YW4ga2V5LgorCQkJCQkJCSAqLworCQkJCQkJCWZpbmZvID0gbWlubWF4X211bHRpX2dldF9z dHJhdGVneV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5cGUsCisJCQkJCQkJCQkJCQkJ CQkJCSAgIEJUTGVzc0VxdWFsU3RyYXRlZ3lOdW1iZXIpOworCQkJCQkJCW1hdGNoZXMgPSBG dW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgbWludmFsLCB2YWwpOworCQkJCQkJ CWlmICghRGF0dW1HZXRCb29sKG1hdGNoZXMpKQorCQkJCQkJCQlicmVhazsKKwkJCQkJCQkv KiBtYXgoKSA+PSBzY2Fua2V5ICovCisJCQkJCQkJZmluZm8gPSBtaW5tYXhfbXVsdGlfZ2V0 X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwKKwkJCQkJCQkJCQkJ CQkJCQkJICAgQlRHcmVhdGVyRXF1YWxTdHJhdGVneU51bWJlcik7CisJCQkJCQkJbWF0Y2hl cyA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xsb2lkLCBtYXh2YWwsIHZhbCk7CisJ CQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCWNhc2UgQlRHcmVhdGVyRXF1YWxTdHJhdGVn eU51bWJlcjoKKwkJCQkJY2FzZSBCVEdyZWF0ZXJTdHJhdGVneU51bWJlcjoKKwkJCQkJCWZp bmZvID0gbWlubWF4X211bHRpX2dldF9zdHJhdGVneV9wcm9jaW5mbyhiZGVzYywgYXR0bm8s IHN1YnR5cGUsCisJCQkJCQkJCQkJCQkJCQkJICAga2V5LT5za19zdHJhdGVneSk7CisJCQkJ CQkvKiBsYXN0IHZhbHVlIGZyb20gdGhlIGFycmF5ICovCisJCQkJCQltYXRjaGVzID0gRnVu Y3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsIG1heHZhbCwKKwkJCQkJCQkJCQkJCQlh cnJheS0+ZWxlbWVudHNbMF0pOwogCQkJCQkJYnJlYWs7Ci0JCQkJCX0KLQkJCQljYXNlIEJU R3JlYXRlckVxdWFsU3RyYXRlZ3lOdW1iZXI6Ci0JCQkJY2FzZSBCVEdyZWF0ZXJTdHJhdGVn eU51bWJlcjoKLQkJCQkJZmluZm8gPSBtaW5tYXhfbXVsdGlfZ2V0X3N0cmF0ZWd5X3Byb2Np bmZvKGJkZXNjLCBhdHRubywgc3VidHlwZSwKLQkJCQkJCQkJCQkJCQkJCSAgIGtleS0+c2tf c3RyYXRlZ3kpOwotCQkJCQkvKiBsYXN0IHZhbHVlIGZyb20gdGhlIGFycmF5ICovCi0JCQkJ CW1hdGNoZXMgPSBGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgbWF4dmFsLCB2 YWx1ZSk7Ci0JCQkJCWJyZWFrOwogCi0JCQkJZGVmYXVsdDoKLQkJCQkJLyogc2hvdWxkbid0 IGhhcHBlbiAqLwotCQkJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBzdHJhdGVneSBudW1iZXIg JWQiLCBrZXktPnNrX3N0cmF0ZWd5KTsKLQkJCQkJbWF0Y2hlcyA9IEJvb2xHZXREYXR1bShm YWxzZSk7Ci0JCQkJCWJyZWFrOworCQkJCQlkZWZhdWx0OgorCQkJCQkJLyogc2hvdWxkbid0 IGhhcHBlbiAqLworCQkJCQkJZWxvZyhFUlJPUiwgImludmFsaWQgc3RyYXRlZ3kgbnVtYmVy ICVkIiwga2V5LT5za19zdHJhdGVneSk7CisJCQkJCQltYXRjaGVzID0gQm9vbEdldERhdHVt KGZhbHNlKTsKKwkJCQkJCWJyZWFrOworCQkJCX0KIAkJCX0KIAogCQkJLyogdGhlIHJhbmdl IGhhcyB0byBtYXRjaCBhbGwgdGhlIHNjYW4ga2V5cyAqLwpAQCAtMjcxMywyNCArMjk2OCw3 NiBAQCBicmluX21pbm1heF9tdWx0aV9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CQlhdHRubyA9IGtleS0+c2tfYXR0bm87CiAJCQlzdWJ0eXBlID0ga2V5LT5za19zdWJ0eXBl OwogCQkJdmFsdWUgPSBrZXktPnNrX2FyZ3VtZW50OwotCQkJc3dpdGNoIChrZXktPnNrX3N0 cmF0ZWd5KQorCQkJaWYgKGxpa2VseSghKGtleS0+c2tfZmxhZ3MgJiBTS19TRUFSQ0hBUlJB WSkpKQogCQkJewotCQkJCWNhc2UgQlRMZXNzU3RyYXRlZ3lOdW1iZXI6Ci0JCQkJY2FzZSBC VExlc3NFcXVhbFN0cmF0ZWd5TnVtYmVyOgotCQkJCWNhc2UgQlRFcXVhbFN0cmF0ZWd5TnVt YmVyOgotCQkJCWNhc2UgQlRHcmVhdGVyRXF1YWxTdHJhdGVneU51bWJlcjoKLQkJCQljYXNl IEJUR3JlYXRlclN0cmF0ZWd5TnVtYmVyOgotCi0JCQkJCWZpbmZvID0gbWlubWF4X211bHRp X2dldF9zdHJhdGVneV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5cGUsCi0JCQkJCQkJ CQkJCQkJCQkgICBrZXktPnNrX3N0cmF0ZWd5KTsKLQkJCQkJbWF0Y2hlcyA9IEZ1bmN0aW9u Q2FsbDJDb2xsKGZpbmZvLCBjb2xsb2lkLCB2YWwsIHZhbHVlKTsKLQkJCQkJYnJlYWs7CisJ CQkJc3dpdGNoIChrZXktPnNrX3N0cmF0ZWd5KQorCQkJCXsKKwkJCQkJY2FzZSBCVExlc3NT dHJhdGVneU51bWJlcjoKKwkJCQkJY2FzZSBCVExlc3NFcXVhbFN0cmF0ZWd5TnVtYmVyOgor CQkJCQljYXNlIEJURXF1YWxTdHJhdGVneU51bWJlcjoKKwkJCQkJY2FzZSBCVEdyZWF0ZXJF cXVhbFN0cmF0ZWd5TnVtYmVyOgorCQkJCQljYXNlIEJUR3JlYXRlclN0cmF0ZWd5TnVtYmVy OgorCisJCQkJCQlmaW5mbyA9IG1pbm1heF9tdWx0aV9nZXRfc3RyYXRlZ3lfcHJvY2luZm8o YmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAorCQkJCQkJCQkJCQkJCQkJCSAgIGtleS0+c2tfc3Ry YXRlZ3kpOworCQkJCQkJbWF0Y2hlcyA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xs b2lkLCB2YWwsIHZhbHVlKTsKKwkJCQkJCWJyZWFrOwogCi0JCQkJZGVmYXVsdDoKLQkJCQkJ Lyogc2hvdWxkbid0IGhhcHBlbiAqLwotCQkJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBzdHJh dGVneSBudW1iZXIgJWQiLCBrZXktPnNrX3N0cmF0ZWd5KTsKLQkJCQkJbWF0Y2hlcyA9IEJv b2xHZXREYXR1bShmYWxzZSk7Ci0JCQkJCWJyZWFrOworCQkJCQlkZWZhdWx0OgorCQkJCQkJ Lyogc2hvdWxkbid0IGhhcHBlbiAqLworCQkJCQkJZWxvZyhFUlJPUiwgImludmFsaWQgc3Ry YXRlZ3kgbnVtYmVyICVkIiwga2V5LT5za19zdHJhdGVneSk7CisJCQkJCQltYXRjaGVzID0g Qm9vbEdldERhdHVtKGZhbHNlKTsKKwkJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWVs c2UKKwkJCXsKKwkJCQkvKgorCQkJCSAqIEZJWE1FIFRoaXMgaXMgcmVhbGx5IHdyb25nLCBi ZWNhdXNlIGl0IGRlc2VyaWFsaXplcyB0aGUKKwkJCQkgKiBhcnJheSBvdmVyIGFuZCBvdmVy IGZvciBlYWNoIHZhbHVlIGluIHRoZSBtaW5tYXgtbXVsdGkKKwkJCQkgKiBzdW1tYXJ5Lgor CQkJCSAqLworCQkJCUFycmF5VHlwZSAgKmFycmF5dmFsOworCQkJCWludDE2CQllbG1sZW47 CisJCQkJYm9vbAkJZWxtYnl2YWw7CisJCQkJY2hhcgkJZWxtYWxpZ247CisJCQkJaW50CQkJ bnVtX2VsZW1zOworCQkJCURhdHVtCSAgICplbGVtX3ZhbHVlczsKKwkJCQlib29sCSAgICpl bGVtX251bGxzOworCisJCQkJU29ydFN1cHBvcnREYXRhIHNzdXA7CisJCQkJaW50CQkJbG93 ZXI7CisJCQkJVHlwZUNhY2hlRW50cnkgKnR5cGU7CisKKwkJCQlhcnJheXZhbCA9IERhdHVt R2V0QXJyYXlUeXBlUChrZXktPnNrX2FyZ3VtZW50KTsKKworCQkJCWdldF90eXBsZW5ieXZh bGFsaWduKEFSUl9FTEVNVFlQRShhcnJheXZhbCksCisJCQkJCQkJCQkgJmVsbWxlbiwgJmVs bWJ5dmFsLCAmZWxtYWxpZ24pOworCisJCQkJZGVjb25zdHJ1Y3RfYXJyYXkoYXJyYXl2YWws CisJCQkJCQkJCSAgQVJSX0VMRU1UWVBFKGFycmF5dmFsKSwKKwkJCQkJCQkJICBlbG1sZW4s IGVsbWJ5dmFsLCBlbG1hbGlnbiwKKwkJCQkJCQkJICAmZWxlbV92YWx1ZXMsICZlbGVtX251 bGxzLCAmbnVtX2VsZW1zKTsKKworCQkJCS8qIGFzc3VtZSBub3QgbWFjaGVzICovCisJCQkJ bWF0Y2hlcyA9IEJvb2xHZXREYXR1bShmYWxzZSk7CisKKwkJCQkvKgorCQkJCSAqIE9LLCB0 aGVyZSBtaWdodCBiZSBzb21lIHZhbHVlcyBtYXRjaGluZyB0aGUgcmFuZ2UuIFdlIGhhdmUK KwkJCQkgKiB0byBzZWFyY2ggdGhlbSBvbmUgYnkgb25lLCBvciBwZXJoYXBzIHRyeSBiaW5z ZWFyY2guCisJCQkJICovCisJCQkJdHlwZSA9IGxvb2t1cF90eXBlX2NhY2hlKEFSUl9FTEVN VFlQRShhcnJheXZhbCksIFRZUEVDQUNIRV9MVF9PUFIpOworCisJCQkJbWVtc2V0KCZzc3Vw LCAwLCBzaXplb2YoU29ydFN1cHBvcnREYXRhKSk7CisJCQkJUHJlcGFyZVNvcnRTdXBwb3J0 RnJvbU9yZGVyaW5nT3AodHlwZS0+bHRfb3ByLCAmc3N1cCk7CisKKwkJCQlsb3dlciA9IGxv d2VyX2JvdW5kYXJ5KGVsZW1fdmFsdWVzLCBudW1fZWxlbXMsIHZhbHVlLCAmc3N1cCk7CisK KwkJCQlpZiAoKGxvd2VyIDwgbnVtX2VsZW1zKSAmJgorCQkJCQkoY29tcGFyZV9hcnJheV92 YWx1ZXMoJmVsZW1fdmFsdWVzW2xvd2VyXSwgJnZhbHVlLCAmc3N1cCkgPT0gMCkpCisJCQkJ eworCQkJCQltYXRjaGVzID0gQm9vbEdldERhdHVtKHRydWUpOworCQkJCX0KIAkJCX0KIAog CQkJLyogdGhlIHJhbmdlIGhhcyB0byBtYXRjaCBhbGwgdGhlIHNjYW4ga2V5cyAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0IGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CmluZGV4IDE2NjY4MWMzMWUuLjRmMTdmMGQ1OGMg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKQEAgLTk0Niw2ICs5NDYsOSBAQAog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfbXVsdGlfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2ludDInLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDInLCBh bXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlv bnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9tdWx0aV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50MicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn aW50MicsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVs dGlfcHJlcHJvY2VzcycgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlu bWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQyJywKICAgYW1wcm9jcmln aHR0eXBlID0+ICdpbnQyJywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJp bl9taW5tYXhfbXVsdGlfZGlzdGFuY2VfaW50MicgfSwKQEAgLTk2NSw2ICs5NjgsOSBAQAog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfbXVsdGlfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2ludDQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDQnLCBh bXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlv bnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9tdWx0aV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50NCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn aW50NCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVs dGlfcHJlcHJvY2VzcycgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlu bWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQ0JywKICAgYW1wcm9jcmln aHR0eXBlID0+ICdpbnQ0JywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJp bl9taW5tYXhfbXVsdGlfZGlzdGFuY2VfaW50NCcgfSwKQEAgLTk4NCw2ICs5OTAsOSBAQAog eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9taW5tYXhfbXVsdGlfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2ludDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludDgnLCBh bXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlv bnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX21pbm1heF9tdWx0aV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50OCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn aW50OCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVs dGlfcHJlcHJvY2VzcycgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfbWlu bWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbnQ4JywKICAgYW1wcm9jcmln aHR0eXBlID0+ICdpbnQ4JywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJp bl9taW5tYXhfbXVsdGlfZGlzdGFuY2VfaW50OCcgfSwKQEAgLTEwOTUsNiArMTEwNCw5IEBA CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9vaWRfbWlubWF4X211bHRpX29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICdvaWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ29pZCcsIGFtcHJv Y251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycg fSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL29pZF9taW5tYXhfbXVsdGlfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ29pZCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnb2lkJywgYW1w cm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9wcmVwcm9j ZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vb2lkX21pbm1heF9tdWx0aV9vcHMn LCBhbXByb2NsZWZ0dHlwZSA9PiAnb2lkJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdvaWQn LCBhbXByb2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9k aXN0YW5jZV9pbnQ0JyB9LApAQCAtMTE2MSw2ICsxMTczLDkgQEAKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL3RpZF9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3Rp ZCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGlkJywgYW1wcm9jbnVtID0+ICc1JywKICAg YW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1p bHkgPT4gJ2JyaW4vdGlkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn dGlkJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aWQnLCBhbXByb2NudW0gPT4gJzYnLAor ICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi90aWRfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICd0aWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpZCcsIGFtcHJvY251bSA9PiAn MTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX2Rpc3RhbmNlX3RpZCcgfSwK QEAgLTEyMTQsNiArMTIyOSw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9t aW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2Zsb2F0NCcsCiAgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnZmxvYXQ0JywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ ICdicmluX21pbm1heF9tdWx0aV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vZmxvYXRfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDQn LAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0NCcsIGFtcHJvY251bSA9PiAnNicsCisg IGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfcHJlcHJvY2VzcycgfSwKIHsgYW1wcm9j ZmFtaWx5ID0+ICdicmluL2Zsb2F0X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAnZmxvYXQ0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDQnLCBhbXByb2Nu dW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV9m bG9hdDQnIH0sCkBAIC0xMjMzLDYgKzEyNTEsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vZmxvYXRfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdmbG9hdDgn LAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0OCcsIGFtcHJvY251bSA9PiAnNScsCiAg IGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFt aWx5ID0+ICdicmluL2Zsb2F0X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnZmxvYXQ4JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDgnLCBhbXByb2NudW0g PT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX3ByZXByb2Nlc3MnIH0s CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9taW5tYXhfbXVsdGlfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2Zsb2F0OCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ4 JywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlf ZGlzdGFuY2VfZmxvYXQ4JyB9LApAQCAtMTMwNSw2ICsxMzI2LDkgQEAKIHsgYW1wcm9jZmFt aWx5ID0+ICdicmluL21hY2FkZHJfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdtYWNhZGRyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRyJywgYW1wcm9j bnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9vcHRpb25zJyB9 LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcl9taW5tYXhfbXVsdGlfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ21hY2FkZHInLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ21h Y2FkZHInLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211 bHRpX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyX21p bm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbWFjYWRkcicsCiAgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnbWFjYWRkcicsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X211bHRpX2Rpc3RhbmNlX21hY2FkZHInIH0sCkBAIC0xMzYxLDYg KzEzODUsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbWFjYWRkcjhfbWlubWF4X211 bHRpX29wcycsCiAgIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyOCcsIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnbWFjYWRkcjgnLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2Jy aW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9t YWNhZGRyOF9taW5tYXhfbXVsdGlfb3BzJywKKyAgYW1wcm9jbGVmdHR5cGUgPT4gJ21hY2Fk ZHI4JywgYW1wcm9jcmlnaHR0eXBlID0+ICdtYWNhZGRyOCcsIGFtcHJvY251bSA9PiAnNics CisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfcHJlcHJvY2VzcycgfSwKIHsgYW1w cm9jZmFtaWx5ID0+ICdicmluL21hY2FkZHI4X21pbm1heF9tdWx0aV9vcHMnLAogICBhbXBy b2NsZWZ0dHlwZSA9PiAnbWFjYWRkcjgnLCBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHI4 JywKICAgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlf ZGlzdGFuY2VfbWFjYWRkcjgnIH0sCkBAIC0xNDE1LDYgKzE0NDIsOSBAQAogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vbmV0d29ya19taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ2luZXQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0g PT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0sCit7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uZXR3b3JrX21pbm1heF9tdWx0aV9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAnaW5ldCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW5ldCcsIGFt cHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfcHJlcHJv Y2VzcycgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL25ldHdvcmtfbWlubWF4X211bHRp X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdpbmV0JywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf bXVsdGlfZGlzdGFuY2VfaW5ldCcgfSwKQEAgLTE1MjEsNiArMTU1MSw5IEBACiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi90aW1lX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAndGltZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZScsIGFtcHJvY251bSA9 PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sg YW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWVfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICd0aW1lJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lJywgYW1wcm9j bnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9wcmVwcm9jZXNz JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGltZV9taW5tYXhfbXVsdGlfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWUnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWUn LCBhbXByb2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9k aXN0YW5jZV90aW1lJyB9LApAQCAtMTYwNCw2ICsxNjM3LDkgQEAKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9tdWx0aV9vcHMnLAogICBhbXByb2NsZWZ0dHlw ZSA9PiAndGltZXN0YW1wJywgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lc3RhbXAnLAogICBh bXByb2NudW0gPT4gJzUnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMn IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9taW5tYXhfbXVsdGlfb3Bz JywKKyAgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFtcCcsIGFtcHJvY3JpZ2h0dHlwZSA9 PiAndGltZXN0YW1wJywKKyAgYW1wcm9jbnVtID0+ICc2JywgYW1wcm9jID0+ICdicmluX21p bm1heF9tdWx0aV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0 ZXRpbWVfbWlubWF4X211bHRpX29wcycsCiAgIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3Rh bXAnLCBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcCcsCiAgIGFtcHJvY251bSA9PiAn MTEnLCBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX2Rpc3RhbmNlX3RpbWVzdGFtcCcg fSwKQEAgLTE2MjMsNiArMTY1OSw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRl dGltZV9taW5tYXhfbXVsdGlfb3BzJywKICAgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWVzdGFt cHR6JywgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lc3RhbXB0eicsCiAgIGFtcHJvY251bSA9 PiAnNScsIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1w cm9jZmFtaWx5ID0+ICdicmluL2RhdGV0aW1lX21pbm1heF9tdWx0aV9vcHMnLAorICBhbXBy b2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wdHonLCBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVz dGFtcHR6JywKKyAgYW1wcm9jbnVtID0+ICc2JywgYW1wcm9jID0+ICdicmluX21pbm1heF9t dWx0aV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVf bWlubWF4X211bHRpX29wcycsCiAgIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1lc3RhbXB0eics IGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wdHonLAogICBhbXByb2NudW0gPT4gJzEx JywgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV90aW1lc3RhbXAnIH0s CkBAIC0xNjQyLDYgKzE2ODEsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZGF0ZXRp bWVfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdkYXRlJywKICAgYW1w cm9jcmlnaHR0eXBlID0+ICdkYXRlJywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ ICdicmluX21pbm1heF9tdWx0aV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vZGF0ZXRpbWVfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdkYXRl JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdkYXRlJywgYW1wcm9jbnVtID0+ICc2JywKKyAg YW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICdkYXRlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdkYXRlJywgYW1wcm9jbnVt ID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfZGlzdGFuY2VfZGF0 ZScgfSwKQEAgLTE3MzMsNiArMTc3NSw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9p bnRlcnZhbF9taW5tYXhfbXVsdGlfb3BzJywKICAgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludGVy dmFsJywgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnRlcnZhbCcsIGFtcHJvY251bSA9PiAnNScs CiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9j ZmFtaWx5ID0+ICdicmluL2ludGVydmFsX21pbm1heF9tdWx0aV9vcHMnLAorICBhbXByb2Ns ZWZ0dHlwZSA9PiAnaW50ZXJ2YWwnLCBhbXByb2NyaWdodHR5cGUgPT4gJ2ludGVydmFsJywg YW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9wcmVw cm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vaW50ZXJ2YWxfbWlubWF4X211 bHRpX29wcycsCiAgIGFtcHJvY2xlZnR0eXBlID0+ICdpbnRlcnZhbCcsIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnaW50ZXJ2YWwnLAogICBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdi cmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV9pbnRlcnZhbCcgfSwKQEAgLTE3ODksNiArMTgz NCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aW1ldHpfbWlubWF4X211bHRpX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1ldHonLAogICBhbXByb2NyaWdodHR5cGUgPT4g J3RpbWV0eicsIGFtcHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhf bXVsdGlfb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWV0el9taW5t YXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpbWV0eicsCisgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAndGltZXR6JywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdi cmluX21pbm1heF9tdWx0aV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vdGltZXR6X21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXR6 JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1ldHonLCBhbXByb2NudW0gPT4gJzExJywK ICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV90aW1ldHonIH0sCkBA IC0xODc1LDYgKzE5MjMsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbnVtZXJpY19t aW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ251bWVyaWMnLAogICBhbXBy b2NyaWdodHR5cGUgPT4gJ251bWVyaWMnLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2Mg PT4gJ2JyaW5fbWlubWF4X211bHRpX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9udW1lcmljX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbnVt ZXJpYycsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnbnVtZXJpYycsIGFtcHJvY251bSA9PiAn NicsCisgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfcHJlcHJvY2VzcycgfSwKIHsg YW1wcm9jZmFtaWx5ID0+ICdicmluL251bWVyaWNfbWlubWF4X211bHRpX29wcycsIGFtcHJv Y2xlZnR0eXBlID0+ICdudW1lcmljJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdudW1lcmlj JywgYW1wcm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlf ZGlzdGFuY2VfbnVtZXJpYycgfSwKQEAgLTE5MjksNiArMTk4MCw5IEBACiB7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi91dWlkX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAndXVpZCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndXVpZCcsIGFtcHJvY251bSA9PiAn NScsCiAgIGFtcHJvYyA9PiAnYnJpbl9taW5tYXhfbXVsdGlfb3B0aW9ucycgfSwKK3sgYW1w cm9jZmFtaWx5ID0+ICdicmluL3V1aWRfbWlubWF4X211bHRpX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICd1dWlkJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd1dWlkJywgYW1wcm9jbnVt ID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9wcmVwcm9jZXNzJyB9 LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdXVpZF9taW5tYXhfbXVsdGlfb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ3V1aWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3V1aWQnLCBh bXByb2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0 YW5jZV91dWlkJyB9LApAQCAtMjAwNSw2ICsyMDU5LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ ICdicmluL3BnX2xzbl9taW5tYXhfbXVsdGlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3Bn X2xzbicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAncGdfbHNuJywgYW1wcm9jbnVtID0+ICc1 JywKICAgYW1wcm9jID0+ICdicmluX21pbm1heF9tdWx0aV9vcHRpb25zJyB9LAoreyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vcGdfbHNuX21pbm1heF9tdWx0aV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAncGdfbHNuJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdwZ19sc24nLCBhbXBy b2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4X211bHRpX3ByZXByb2Nl c3MnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9wZ19sc25fbWlubWF4X211bHRpX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdwZ19sc24nLAogICBhbXByb2NyaWdodHR5cGUgPT4g J3BnX2xzbicsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ2JyaW5fbWlubWF4 X211bHRpX2Rpc3RhbmNlX3BnX2xzbicgfSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0Cmlu ZGV4IDY2Mzg1NTJiZDAuLjRlOGQ2NjY4NjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dApAQCAtODUyMCw2ICs4NTIwLDEwIEBACiAgIHByb25hbWUgPT4gJ2JyaW5fbWlubWF4X211 bHRpX29wdGlvbnMnLCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3JldHR5cGUgPT4gJ3Zv aWQnLCBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwnLAogICBwcm9zcmMgPT4gJ2JyaW5fbWlu bWF4X211bHRpX29wdGlvbnMnIH0sCit7IG9pZCA9PiAnOTMyNicsIGRlc2NyID0+ICdCUklO IG11bHRpIG1pbm1heCBzdXBwb3J0JywKKyAgcHJvbmFtZSA9PiAnYnJpbl9taW5tYXhfbXVs dGlfcHJlcHJvY2VzcycsIHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJvcmV0dHlwZSA9PiAn aW50ZXJuYWwnLCBwcm9hcmd0eXBlcyA9PiAnaW50ZXJuYWwgaW50ZXJuYWwnLAorICBwcm9z cmMgPT4gJ2JyaW5fbWlubWF4X211bHRpX3ByZXByb2Nlc3MnIH0sCiAKIHsgb2lkID0+ICc0 NjIxJywgZGVzY3IgPT4gJ0JSSU4gbXVsdGkgbWlubWF4IGludDIgZGlzdGFuY2UnLAogICBw cm9uYW1lID0+ICdicmluX21pbm1heF9tdWx0aV9kaXN0YW5jZV9pbnQyJywgcHJvcmV0dHlw ZSA9PiAnZmxvYXQ4JywKLS0gCjIuMzkuMQoK --------------mzJK0H1XSWOfxSV5Dx6We88O Content-Type: text/x-patch; charset=UTF-8; name="0007-Support-SK_SEARCHARRAY-in-BRIN-inclusion-20230215.patch" Content-Disposition: attachment; filename*0="0007-Support-SK_SEARCHARRAY-in-BRIN-inclusion-20230215.patch" Content-Transfer-Encoding: base64 RnJvbSA2YjUxOTBhM2Q1NjRlYTc1ZjE0NGJjNzQxNjBlMjQ0M2YyMTc2MGFlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAxMSBGZWIgMjAyMyAxNToyMzoyNSArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNy85XSBTdXBwb3J0IFNLX1NFQVJDSEFSUkFZIGluIEJSSU4gaW5jbHVz aW9uCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5faW5jbHVzaW9uLmMgfCAy MjEgKysrKysrKysrKysrKysrKystLS0tLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1w cm9jLmRhdCAgICAgICAgfCAgIDkgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dCAgICAgICAgICB8ICAgNCArCiAzIGZpbGVzIGNoYW5nZWQsIDE4MCBpbnNlcnRpb25zKCsp LCA1NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluX2luY2x1c2lvbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9pbmNs dXNpb24uYwppbmRleCAyNDgxMTZjMTQ5Li4wZjQwOWVmNTI3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX2luY2x1c2lvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9icmluL2JyaW5faW5jbHVzaW9uLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs dWRlICJhY2Nlc3Mvc2tleS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYW1vcC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgog I2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgpAQCAtNzIsNiArNzMsMTMgQEAKICNkZWZp bmUgSU5DTFVTSU9OX1VOTUVSR0VBQkxFCQkxCiAjZGVmaW5lIElOQ0xVU0lPTl9DT05UQUlO U19FTVBUWQkyCiAKKy8qCisgKiBXZSB1c2Ugc29tZSBwcml2YXRlIHNrX2ZsYWdzIGJpdHMg aW4gcHJlcHJvY2Vzc2VkIHNjYW4ga2V5cy4gIFdlJ3JlIGFsbG93ZWQKKyAqIHRvIHVzZSBi aXRzIDE2LTMxIChzZWUgc2tleS5oKS4gIFRoZSB1cHBlcm1vc3QgYml0cyBhcmUgY29waWVk IGZyb20gdGhlCisgKiBpbmRleCdzIGluZG9wdGlvbltdIGFycmF5IGVudHJ5IGZvciB0aGUg aW5kZXggYXR0cmlidXRlLgorICovCisjZGVmaW5lIFNLX0JSSU5fQVJSQVkJMHgwMDAxMDAw MAkvKiBkZWNvbnN0cnVjdGVkIGFycmF5ICovCisKIAogdHlwZWRlZiBzdHJ1Y3QgSW5jbHVz aW9uT3BhcXVlCiB7CkBAIC0yMzgsNDQgKzI0Niw3NCBAQCBicmluX2luY2x1c2lvbl9hZGRf dmFsdWUoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fQk9PTCh0cnVlKTsKIH0KIAor dHlwZWRlZiBzdHJ1Y3QgU2NhbktleUFycmF5IHsKKwlpbnQJCW5lbGVtZW50czsKKwlEYXR1 bSAgKmVsZW1lbnRzOworfSBTY2FuS2V5QXJyYXk7CisKK0RhdHVtCiticmluX2luY2x1c2lv bl9wcmVwcm9jZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLy8gQnJpbkRlc2MgICAqYmRl c2MgPSAoQnJpbkRlc2MgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7CisJU2NhbktleQkJa2V5 ID0gKFNjYW5LZXkpIFBHX0dFVEFSR19QT0lOVEVSKDEpOworCVNjYW5LZXkJCW5ld2tleTsK KwlTY2FuS2V5QXJyYXkgKnNjYW5hcnJheTsKKworCUFycmF5VHlwZSAgKmFycmF5dmFsOwor CWludDE2CQllbG1sZW47CisJYm9vbAkJZWxtYnl2YWw7CisJY2hhcgkJZWxtYWxpZ247CisJ aW50CQkJbnVtX2VsZW1zOworCURhdHVtCSAgICplbGVtX3ZhbHVlczsKKwlib29sCSAgICpl bGVtX251bGxzOworCisJLyogaWdub3JlIHNjYWxhciBrZXlzICovCisJaWYgKCEoa2V5LT5z a19mbGFncyAmIFNLX1NFQVJDSEFSUkFZKSkKKwkJUEdfUkVUVVJOX1BPSU5URVIoa2V5KTsK KworCWFycmF5dmFsID0gRGF0dW1HZXRBcnJheVR5cGVQKGtleS0+c2tfYXJndW1lbnQpOwor CisJZ2V0X3R5cGxlbmJ5dmFsYWxpZ24oQVJSX0VMRU1UWVBFKGFycmF5dmFsKSwKKwkJCQkJ CSAmZWxtbGVuLCAmZWxtYnl2YWwsICZlbG1hbGlnbik7CisKKwlkZWNvbnN0cnVjdF9hcnJh eShhcnJheXZhbCwKKwkJCQkJICBBUlJfRUxFTVRZUEUoYXJyYXl2YWwpLAorCQkJCQkgIGVs bWxlbiwgZWxtYnl2YWwsIGVsbWFsaWduLAorCQkJCQkgICZlbGVtX3ZhbHVlcywgJmVsZW1f bnVsbHMsICZudW1fZWxlbXMpOworCisJc2NhbmFycmF5ID0gcGFsbG9jMChzaXplb2YoU2Nh bktleUFycmF5KSk7CisJc2NhbmFycmF5LT5uZWxlbWVudHMgPSBudW1fZWxlbXM7CisJc2Nh bmFycmF5LT5lbGVtZW50cyA9IGVsZW1fdmFsdWVzOworCisJbmV3a2V5ID0gcGFsbG9jMChz aXplb2YoU2NhbktleURhdGEpKTsKKworCVNjYW5LZXlFbnRyeUluaXRpYWxpemVXaXRoSW5m byhuZXdrZXksCisJCQkJCQkJCSAgIChrZXktPnNrX2ZsYWdzIHwgU0tfQlJJTl9BUlJBWSks CisJCQkJCQkJCSAgIGtleS0+c2tfYXR0bm8sCisJCQkJCQkJCSAgIGtleS0+c2tfc3RyYXRl Z3ksCisJCQkJCQkJCSAgIGtleS0+c2tfc3VidHlwZSwKKwkJCQkJCQkJICAga2V5LT5za19j b2xsYXRpb24sCisJCQkJCQkJCSAgICZrZXktPnNrX2Z1bmMsCisJCQkJCQkJCSAgIFBvaW50 ZXJHZXREYXR1bShzY2FuYXJyYXkpKTsKKworCVBHX1JFVFVSTl9QT0lOVEVSKG5ld2tleSk7 Cit9CisKIC8qCi0gKiBCUklOIGluY2x1c2lvbiBjb25zaXN0ZW50IGZ1bmN0aW9uCisgKiBD aGVjayBjb25zaXN0ZW5jeSBvZiBhIHNpbmdsZSBzY2FsYXIgdmFsdWUgd2l0aCB0aGUgQlJJ TiByYW5nZS4KICAqCi0gKiBXZSdyZSBubyBsb25nZXIgZGVhbGluZyB3aXRoIE5VTEwga2V5 cyBpbiB0aGUgY29uc2lzdGVudCBmdW5jdGlvbiwgdGhhdCBpcwotICogbm93IGhhbmRsZWQg YnkgdGhlIEFNIGNvZGUuIFRoYXQgbWVhbnMgd2Ugc2hvdWxkIG5vdCBnZXQgYW55IGFsbC1O VUxMIHJhbmdlcwotICogZWl0aGVyLCBiZWNhdXNlIHRob3NlIGNhbid0IGJlIGNvbnNpc3Rl bnQgd2l0aCByZWd1bGFyIChub3QgW0lTXSBOVUxMKSBrZXlzLgotICoKLSAqIEFsbCBvZiB0 aGUgc3RyYXRlZ2llcyBhcmUgb3B0aW9uYWwuCisgKiBDYWxsZWQgZm9yIGJvdGggc2NhbGFy IHNjYW5rZXlzIGFuZCBmb3IgZWFjaCB2YWx1ZSBpbiBTS19TRUFSQ0hBUlJBWS4KICAqLwot RGF0dW0KLWJyaW5faW5jbHVzaW9uX2NvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKK3N0 YXRpYyBib29sCiticmluX2luY2x1c2lvbl9jb25zaXN0ZW50X3ZhbHVlKEJyaW5EZXNjICpi ZGVzYywgQnJpblZhbHVlcyAqY29sdW1uLAorCQkJCQkJCQlBdHRyTnVtYmVyIGF0dG5vLAor CQkJCQkJCQlTdHJhdGVneU51bWJlciBzdHJhdGVneSwgT2lkIHN1YnR5cGUsCisJCQkJCQkJ CU9pZCBjb2xsb2lkLCBEYXR1bSB1bmlvbnZhbCwgRGF0dW0gcXVlcnkpCiB7Ci0JQnJpbkRl c2MgICAqYmRlc2MgPSAoQnJpbkRlc2MgKikgUEdfR0VUQVJHX1BPSU5URVIoMCk7Ci0JQnJp blZhbHVlcyAqY29sdW1uID0gKEJyaW5WYWx1ZXMgKikgUEdfR0VUQVJHX1BPSU5URVIoMSk7 Ci0JU2NhbktleQkJa2V5ID0gKFNjYW5LZXkpIFBHX0dFVEFSR19QT0lOVEVSKDIpOwotCU9p ZAkJCWNvbGxvaWQgPSBQR19HRVRfQ09MTEFUSU9OKCksCi0JCQkJc3VidHlwZTsKLQlEYXR1 bQkJdW5pb252YWw7Ci0JQXR0ck51bWJlcglhdHRubzsKLQlEYXR1bQkJcXVlcnk7CiAJRm1n ckluZm8gICAqZmluZm87CiAJRGF0dW0JCXJlc3VsdDsKIAotCS8qIFRoaXMgb3BjbGFzcyB1 c2VzIHRoZSBvbGQgc2lnbmF0dXJlIHdpdGggb25seSB0aHJlZSBhcmd1bWVudHMuICovCi0J QXNzZXJ0KFBHX05BUkdTKCkgPT0gMyk7Ci0KLQkvKiBTaG91bGQgbm90IGJlIGRlYWxpbmcg d2l0aCBhbGwtTlVMTCByYW5nZXMuICovCi0JQXNzZXJ0KCFjb2x1bW4tPmJ2X2FsbG51bGxz KTsKLQotCS8qIEl0IGhhcyB0byBiZSBjaGVja2VkLCBpZiBpdCBjb250YWlucyBlbGVtZW50 cyB0aGF0IGFyZSBub3QgbWVyZ2VhYmxlLiAqLwotCWlmIChEYXR1bUdldEJvb2woY29sdW1u LT5idl92YWx1ZXNbSU5DTFVTSU9OX1VOTUVSR0VBQkxFXSkpCi0JCVBHX1JFVFVSTl9CT09M KHRydWUpOwotCi0JYXR0bm8gPSBrZXktPnNrX2F0dG5vOwotCXN1YnR5cGUgPSBrZXktPnNr X3N1YnR5cGU7Ci0JcXVlcnkgPSBrZXktPnNrX2FyZ3VtZW50OwotCXVuaW9udmFsID0gY29s dW1uLT5idl92YWx1ZXNbSU5DTFVTSU9OX1VOSU9OXTsKLQlzd2l0Y2ggKGtleS0+c2tfc3Ry YXRlZ3kpCisJc3dpdGNoIChzdHJhdGVneSkKIAl7CiAJCQkvKgogCQkJICogUGxhY2VtZW50 IHN0cmF0ZWdpZXMKQEAgLTI5NCw0OSArMzMyLDQ5IEBAIGJyaW5faW5jbHVzaW9uX2NvbnNp c3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWZpbmZvID0gaW5jbHVzaW9uX2dldF9zdHJh dGVneV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5cGUsCiAJCQkJCQkJCQkJCQkJUlRP dmVyUmlnaHRTdHJhdGVneU51bWJlcik7CiAJCQlyZXN1bHQgPSBGdW5jdGlvbkNhbGwyQ29s bChmaW5mbywgY29sbG9pZCwgdW5pb252YWwsIHF1ZXJ5KTsKLQkJCVBHX1JFVFVSTl9CT09M KCFEYXR1bUdldEJvb2wocmVzdWx0KSk7CisJCQlyZXR1cm4gKCFEYXR1bUdldEJvb2wocmVz dWx0KSk7CiAKIAkJY2FzZSBSVE92ZXJMZWZ0U3RyYXRlZ3lOdW1iZXI6CiAJCQlmaW5mbyA9 IGluY2x1c2lvbl9nZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBl LAogCQkJCQkJCQkJCQkJCVJUUmlnaHRTdHJhdGVneU51bWJlcik7CiAJCQlyZXN1bHQgPSBG dW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgdW5pb252YWwsIHF1ZXJ5KTsKLQkJ CVBHX1JFVFVSTl9CT09MKCFEYXR1bUdldEJvb2wocmVzdWx0KSk7CisJCQlyZXR1cm4gKCFE YXR1bUdldEJvb2wocmVzdWx0KSk7CiAKIAkJY2FzZSBSVE92ZXJSaWdodFN0cmF0ZWd5TnVt YmVyOgogCQkJZmluZm8gPSBpbmNsdXNpb25fZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNj LCBhdHRubywgc3VidHlwZSwKIAkJCQkJCQkJCQkJCQlSVExlZnRTdHJhdGVneU51bWJlcik7 CiAJCQlyZXN1bHQgPSBGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgdW5pb252 YWwsIHF1ZXJ5KTsKLQkJCVBHX1JFVFVSTl9CT09MKCFEYXR1bUdldEJvb2wocmVzdWx0KSk7 CisJCQlyZXR1cm4gKCFEYXR1bUdldEJvb2wocmVzdWx0KSk7CiAKIAkJY2FzZSBSVFJpZ2h0 U3RyYXRlZ3lOdW1iZXI6CiAJCQlmaW5mbyA9IGluY2x1c2lvbl9nZXRfc3RyYXRlZ3lfcHJv Y2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAogCQkJCQkJCQkJCQkJCVJUT3ZlckxlZnRT dHJhdGVneU51bWJlcik7CiAJCQlyZXN1bHQgPSBGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywg Y29sbG9pZCwgdW5pb252YWwsIHF1ZXJ5KTsKLQkJCVBHX1JFVFVSTl9CT09MKCFEYXR1bUdl dEJvb2wocmVzdWx0KSk7CisJCQlyZXR1cm4gKCFEYXR1bUdldEJvb2wocmVzdWx0KSk7CiAK IAkJY2FzZSBSVEJlbG93U3RyYXRlZ3lOdW1iZXI6CiAJCQlmaW5mbyA9IGluY2x1c2lvbl9n ZXRfc3RyYXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAogCQkJCQkJCQkJ CQkJCVJUT3ZlckFib3ZlU3RyYXRlZ3lOdW1iZXIpOwogCQkJcmVzdWx0ID0gRnVuY3Rpb25D YWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsIHVuaW9udmFsLCBxdWVyeSk7Ci0JCQlQR19SRVRV Uk5fQk9PTCghRGF0dW1HZXRCb29sKHJlc3VsdCkpOworCQkJcmV0dXJuICghRGF0dW1HZXRC b29sKHJlc3VsdCkpOwogCiAJCWNhc2UgUlRPdmVyQmVsb3dTdHJhdGVneU51bWJlcjoKIAkJ CWZpbmZvID0gaW5jbHVzaW9uX2dldF9zdHJhdGVneV9wcm9jaW5mbyhiZGVzYywgYXR0bm8s IHN1YnR5cGUsCiAJCQkJCQkJCQkJCQkJUlRBYm92ZVN0cmF0ZWd5TnVtYmVyKTsKIAkJCXJl c3VsdCA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xsb2lkLCB1bmlvbnZhbCwgcXVl cnkpOwotCQkJUEdfUkVUVVJOX0JPT0woIURhdHVtR2V0Qm9vbChyZXN1bHQpKTsKKwkJCXJl dHVybiAoIURhdHVtR2V0Qm9vbChyZXN1bHQpKTsKIAogCQljYXNlIFJUT3ZlckFib3ZlU3Ry YXRlZ3lOdW1iZXI6CiAJCQlmaW5mbyA9IGluY2x1c2lvbl9nZXRfc3RyYXRlZ3lfcHJvY2lu Zm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAogCQkJCQkJCQkJCQkJCVJUQmVsb3dTdHJhdGVn eU51bWJlcik7CiAJCQlyZXN1bHQgPSBGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9p ZCwgdW5pb252YWwsIHF1ZXJ5KTsKLQkJCVBHX1JFVFVSTl9CT09MKCFEYXR1bUdldEJvb2wo cmVzdWx0KSk7CisJCQlyZXR1cm4gKCFEYXR1bUdldEJvb2wocmVzdWx0KSk7CiAKIAkJY2Fz ZSBSVEFib3ZlU3RyYXRlZ3lOdW1iZXI6CiAJCQlmaW5mbyA9IGluY2x1c2lvbl9nZXRfc3Ry YXRlZ3lfcHJvY2luZm8oYmRlc2MsIGF0dG5vLCBzdWJ0eXBlLAogCQkJCQkJCQkJCQkJCVJU T3ZlckJlbG93U3RyYXRlZ3lOdW1iZXIpOwogCQkJcmVzdWx0ID0gRnVuY3Rpb25DYWxsMkNv bGwoZmluZm8sIGNvbGxvaWQsIHVuaW9udmFsLCBxdWVyeSk7Ci0JCQlQR19SRVRVUk5fQk9P TCghRGF0dW1HZXRCb29sKHJlc3VsdCkpOworCQkJcmV0dXJuICghRGF0dW1HZXRCb29sKHJl c3VsdCkpOwogCiAJCQkvKgogCQkJICogT3ZlcmxhcCBhbmQgY29udGFpbnMgc3RyYXRlZ2ll cwpAQCAtMzUyLDkgKzM5MCw5IEBAIGJyaW5faW5jbHVzaW9uX2NvbnNpc3RlbnQoUEdfRlVO Q1RJT05fQVJHUykKIAkJY2FzZSBSVFN1YlN0cmF0ZWd5TnVtYmVyOgogCQljYXNlIFJUU3Vi RXF1YWxTdHJhdGVneU51bWJlcjoKIAkJCWZpbmZvID0gaW5jbHVzaW9uX2dldF9zdHJhdGVn eV9wcm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5cGUsCi0JCQkJCQkJCQkJCQkJa2V5LT5z a19zdHJhdGVneSk7CisJCQkJCQkJCQkJCQkJc3RyYXRlZ3kpOwogCQkJcmVzdWx0ID0gRnVu Y3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsIHVuaW9udmFsLCBxdWVyeSk7Ci0JCQlQ R19SRVRVUk5fREFUVU0ocmVzdWx0KTsKKwkJCXJldHVybiAoRGF0dW1HZXRCb29sKHJlc3Vs dCkpOwogCiAJCQkvKgogCQkJICogQ29udGFpbmVkIGJ5IHN0cmF0ZWdpZXMKQEAgLTM3NCw5 ICs0MTIsOSBAQCBicmluX2luY2x1c2lvbl9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCQkJCQkJCQkJCQkJUlRPdmVybGFwU3RyYXRlZ3lOdW1iZXIpOwogCQkJcmVzdWx0ID0g RnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsIHVuaW9udmFsLCBxdWVyeSk7CiAJ CQlpZiAoRGF0dW1HZXRCb29sKHJlc3VsdCkpCi0JCQkJUEdfUkVUVVJOX0JPT0wodHJ1ZSk7 CisJCQkJcmV0dXJuICh0cnVlKTsKIAotCQkJUEdfUkVUVVJOX0RBVFVNKGNvbHVtbi0+YnZf dmFsdWVzW0lOQ0xVU0lPTl9DT05UQUlOU19FTVBUWV0pOworCQkJcmV0dXJuIChjb2x1bW4t PmJ2X3ZhbHVlc1tJTkNMVVNJT05fQ09OVEFJTlNfRU1QVFldKTsKIAogCQkJLyoKIAkJCSAq IEFkamFjZW50IHN0cmF0ZWd5CkBAIC0zOTMsMTIgKzQzMSwxMiBAQCBicmluX2luY2x1c2lv bl9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQkJCQkJCQkJUlRPdmVybGFw U3RyYXRlZ3lOdW1iZXIpOwogCQkJcmVzdWx0ID0gRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8s IGNvbGxvaWQsIHVuaW9udmFsLCBxdWVyeSk7CiAJCQlpZiAoRGF0dW1HZXRCb29sKHJlc3Vs dCkpCi0JCQkJUEdfUkVUVVJOX0JPT0wodHJ1ZSk7CisJCQkJcmV0dXJuICh0cnVlKTsKIAog CQkJZmluZm8gPSBpbmNsdXNpb25fZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRu bywgc3VidHlwZSwKIAkJCQkJCQkJCQkJCQlSVEFkamFjZW50U3RyYXRlZ3lOdW1iZXIpOwog CQkJcmVzdWx0ID0gRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGxvaWQsIHVuaW9udmFs LCBxdWVyeSk7Ci0JCQlQR19SRVRVUk5fREFUVU0ocmVzdWx0KTsKKwkJCXJldHVybiAoRGF0 dW1HZXRCb29sKHJlc3VsdCkpOwogCiAJCQkvKgogCQkJICogQmFzaWMgY29tcGFyaXNvbiBz dHJhdGVnaWVzCkBAIC00MjgsOSArNDY2LDkgQEAgYnJpbl9pbmNsdXNpb25fY29uc2lzdGVu dChQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJCQkJCQkJCVJUUmlnaHRTdHJhdGVneU51bWJl cik7CiAJCQlyZXN1bHQgPSBGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgdW5p b252YWwsIHF1ZXJ5KTsKIAkJCWlmICghRGF0dW1HZXRCb29sKHJlc3VsdCkpCi0JCQkJUEdf UkVUVVJOX0JPT0wodHJ1ZSk7CisJCQkJcmV0dXJuICh0cnVlKTsKIAotCQkJUEdfUkVUVVJO X0RBVFVNKGNvbHVtbi0+YnZfdmFsdWVzW0lOQ0xVU0lPTl9DT05UQUlOU19FTVBUWV0pOwor CQkJcmV0dXJuIChjb2x1bW4tPmJ2X3ZhbHVlc1tJTkNMVVNJT05fQ09OVEFJTlNfRU1QVFld KTsKIAogCQljYXNlIFJUU2FtZVN0cmF0ZWd5TnVtYmVyOgogCQljYXNlIFJURXF1YWxTdHJh dGVneU51bWJlcjoKQEAgLTQzOCwzMCArNDc2LDEwNSBAQCBicmluX2luY2x1c2lvbl9jb25z aXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQkJCQkJCQkJUlRDb250YWluc1N0cmF0 ZWd5TnVtYmVyKTsKIAkJCXJlc3VsdCA9IEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xs b2lkLCB1bmlvbnZhbCwgcXVlcnkpOwogCQkJaWYgKERhdHVtR2V0Qm9vbChyZXN1bHQpKQot CQkJCVBHX1JFVFVSTl9CT09MKHRydWUpOworCQkJCXJldHVybiAodHJ1ZSk7CiAKLQkJCVBH X1JFVFVSTl9EQVRVTShjb2x1bW4tPmJ2X3ZhbHVlc1tJTkNMVVNJT05fQ09OVEFJTlNfRU1Q VFldKTsKKwkJCXJldHVybiAoY29sdW1uLT5idl92YWx1ZXNbSU5DTFVTSU9OX0NPTlRBSU5T X0VNUFRZXSk7CiAKIAkJY2FzZSBSVEdyZWF0ZXJFcXVhbFN0cmF0ZWd5TnVtYmVyOgogCQkJ ZmluZm8gPSBpbmNsdXNpb25fZ2V0X3N0cmF0ZWd5X3Byb2NpbmZvKGJkZXNjLCBhdHRubywg c3VidHlwZSwKIAkJCQkJCQkJCQkJCQlSVExlZnRTdHJhdGVneU51bWJlcik7CiAJCQlyZXN1 bHQgPSBGdW5jdGlvbkNhbGwyQ29sbChmaW5mbywgY29sbG9pZCwgdW5pb252YWwsIHF1ZXJ5 KTsKIAkJCWlmICghRGF0dW1HZXRCb29sKHJlc3VsdCkpCi0JCQkJUEdfUkVUVVJOX0JPT0wo dHJ1ZSk7CisJCQkJcmV0dXJuICh0cnVlKTsKIAotCQkJUEdfUkVUVVJOX0RBVFVNKGNvbHVt bi0+YnZfdmFsdWVzW0lOQ0xVU0lPTl9DT05UQUlOU19FTVBUWV0pOworCQkJcmV0dXJuIChj b2x1bW4tPmJ2X3ZhbHVlc1tJTkNMVVNJT05fQ09OVEFJTlNfRU1QVFldKTsKIAogCQljYXNl IFJUR3JlYXRlclN0cmF0ZWd5TnVtYmVyOgogCQkJLyogbm8gbmVlZCB0byBjaGVjayBmb3Ig ZW1wdHkgZWxlbWVudHMgKi8KIAkJCWZpbmZvID0gaW5jbHVzaW9uX2dldF9zdHJhdGVneV9w cm9jaW5mbyhiZGVzYywgYXR0bm8sIHN1YnR5cGUsCiAJCQkJCQkJCQkJCQkJUlRMZWZ0U3Ry YXRlZ3lOdW1iZXIpOwogCQkJcmVzdWx0ID0gRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNv bGxvaWQsIHVuaW9udmFsLCBxdWVyeSk7Ci0JCQlQR19SRVRVUk5fQk9PTCghRGF0dW1HZXRC b29sKHJlc3VsdCkpOworCQkJcmV0dXJuICghRGF0dW1HZXRCb29sKHJlc3VsdCkpOwogCiAJ CWRlZmF1bHQ6CiAJCQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCi0JCQllbG9nKEVSUk9SLCAi aW52YWxpZCBzdHJhdGVneSBudW1iZXIgJWQiLCBrZXktPnNrX3N0cmF0ZWd5KTsKLQkJCVBH X1JFVFVSTl9CT09MKGZhbHNlKTsKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIHN0cmF0ZWd5 IG51bWJlciAlZCIsIHN0cmF0ZWd5KTsKKwkJCXJldHVybiAoZmFsc2UpOworCX0KK30KKwor LyoKKyAqIEJSSU4gaW5jbHVzaW9uIGNvbnNpc3RlbnQgZnVuY3Rpb24KKyAqCisgKiBXZSdy ZSBubyBsb25nZXIgZGVhbGluZyB3aXRoIE5VTEwga2V5cyBpbiB0aGUgY29uc2lzdGVudCBm dW5jdGlvbiwgdGhhdCBpcworICogbm93IGhhbmRsZWQgYnkgdGhlIEFNIGNvZGUuIFRoYXQg bWVhbnMgd2Ugc2hvdWxkIG5vdCBnZXQgYW55IGFsbC1OVUxMIHJhbmdlcworICogZWl0aGVy LCBiZWNhdXNlIHRob3NlIGNhbid0IGJlIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIChub3Qg W0lTXSBOVUxMKSBrZXlzLgorICoKKyAqIEFsbCBvZiB0aGUgc3RyYXRlZ2llcyBhcmUgb3B0 aW9uYWwuCisgKi8KK0RhdHVtCiticmluX2luY2x1c2lvbl9jb25zaXN0ZW50KFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJQnJpbkRlc2MgICAqYmRlc2MgPSAoQnJpbkRlc2MgKikgUEdfR0VU QVJHX1BPSU5URVIoMCk7CisJQnJpblZhbHVlcyAqY29sdW1uID0gKEJyaW5WYWx1ZXMgKikg UEdfR0VUQVJHX1BPSU5URVIoMSk7CisJU2NhbktleQkJa2V5ID0gKFNjYW5LZXkpIFBHX0dF VEFSR19QT0lOVEVSKDIpOworCU9pZAkJCWNvbGxvaWQgPSBQR19HRVRfQ09MTEFUSU9OKCks CisJCQkJc3VidHlwZTsKKwlEYXR1bQkJdW5pb252YWw7CisJQXR0ck51bWJlcglhdHRubzsK KwlEYXR1bQkJcXVlcnk7CisKKwkvKiBUaGlzIG9wY2xhc3MgdXNlcyB0aGUgb2xkIHNpZ25h dHVyZSB3aXRoIG9ubHkgdGhyZWUgYXJndW1lbnRzLiAqLworCUFzc2VydChQR19OQVJHUygp ID09IDMpOworCisJLyogU2hvdWxkIG5vdCBiZSBkZWFsaW5nIHdpdGggYWxsLU5VTEwgcmFu Z2VzLiAqLworCUFzc2VydCghY29sdW1uLT5idl9hbGxudWxscyk7CisKKwkvKiBJdCBoYXMg dG8gYmUgY2hlY2tlZCwgaWYgaXQgY29udGFpbnMgZWxlbWVudHMgdGhhdCBhcmUgbm90IG1l cmdlYWJsZS4gKi8KKwlpZiAoRGF0dW1HZXRCb29sKGNvbHVtbi0+YnZfdmFsdWVzW0lOQ0xV U0lPTl9VTk1FUkdFQUJMRV0pKQorCQlQR19SRVRVUk5fQk9PTCh0cnVlKTsKKworCWF0dG5v ID0ga2V5LT5za19hdHRubzsKKwlzdWJ0eXBlID0ga2V5LT5za19zdWJ0eXBlOworCXF1ZXJ5 ID0ga2V5LT5za19hcmd1bWVudDsKKwl1bmlvbnZhbCA9IGNvbHVtbi0+YnZfdmFsdWVzW0lO Q0xVU0lPTl9VTklPTl07CisKKwkvKgorCSAqIEZvciByZWd1bGFyIChzY2FsYXIpIHNjYW4g a2V5cywgd2Ugc2ltcGx5IGNvbXBhcmUgdGhlIHZhbHVlIHRvIHRoZQorCSAqIHJhbmdlIG1p bi9tYXggdmFsdWVzLCBhbmQgd2UncmUgZG9uZS4gRm9yIFNLX1NFQVJDSEFSUkFZIGtleXMg d2UKKwkgKiBuZWVkIHRvIGRlcGFyc2UgdGhlIGFycmF5IGFuZCBsb29wIHRocm91Z2ggdGhl IHZhbHVlcy4KKwkgKi8KKwlpZiAobGlrZWx5KCEoa2V5LT5za19mbGFncyAmIFNLX1NFQVJD SEFSUkFZKSkpCisJeworCQlib29sIHRtcDsKKworCQl0bXAgPSBicmluX2luY2x1c2lvbl9j b25zaXN0ZW50X3ZhbHVlKGJkZXNjLCBjb2x1bW4sIGF0dG5vLAorCQkJCQkJCQkJCQkgIGtl eS0+c2tfc3RyYXRlZ3ksCisJCQkJCQkJCQkJCSAgc3VidHlwZSwgY29sbG9pZCwKKwkJCQkJ CQkJCQkJICB1bmlvbnZhbCwgcXVlcnkpOworCQlQR19SRVRVUk5fQk9PTCh0bXApOworCX0K KwllbHNlCisJeworCQlTY2FuS2V5QXJyYXkgKmFycmF5ID0gKFNjYW5LZXlBcnJheSAqKSBx dWVyeTsKKwkJYm9vbAkJbWF0Y2hlcyA9IGZhbHNlOworCisJCS8qIGhhdmUgdG8gbG9vcCB0 aHJvdWdoIGFsbCBlbGVtZW50cywgaGF2aW5nIHRoZW0gc29ydGVkIGRvZXMgbm90IGhlbHAg Ki8KKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheS0+bmVsZW1lbnRzOyBpKyspCisJCXsK KwkJCURhdHVtIAlxdWVyeV9lbGVtZW50ID0gYXJyYXktPmVsZW1lbnRzW2ldOworCisJCQlt YXRjaGVzID0gYnJpbl9pbmNsdXNpb25fY29uc2lzdGVudF92YWx1ZShiZGVzYywgY29sdW1u LCBhdHRubywKKwkJCQkJCQkJCQkJCQkgIGtleS0+c2tfc3RyYXRlZ3ksCisJCQkJCQkJCQkJ CQkJICBzdWJ0eXBlLCBjb2xsb2lkLAorCQkJCQkJCQkJCQkJCSAgdW5pb252YWwsIHF1ZXJ5 X2VsZW1lbnQpOworCisJCQlpZiAobWF0Y2hlcykKKwkJCQlicmVhazsKKwkJfQorCisJCS8q IHdlIGNvdWxkIGdldCBoZXJlIGZvciBlbXB0eSBhcnJheSwgZS5nLiB3aXRoICJAPiAne30n Ojpwb2ludFtdIiAqLworCQlQR19SRVRVUk5fQk9PTChtYXRjaGVzKTsKIAl9CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAppbmRleCA0ZjE3ZjBkNThjLi5lZDViMjFlN2Y5 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CkBAIC0xNDc4LDYgKzE0NzgsOSBA QAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19pbmNsdXNpb25fb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2luZXQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBh bXByb2NudW0gPT4gJzQnLAogICBhbXByb2MgPT4gJ2JyaW5faW5jbHVzaW9uX3VuaW9uJyB9 LAoreyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vbmV0d29ya19pbmNsdXNpb25fb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2luZXQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBh bXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5faW5jbHVzaW9uX3ByZXByb2Nl c3MnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uZXR3b3JrX2luY2x1c2lvbl9vcHMn LCBhbXByb2NsZWZ0dHlwZSA9PiAnaW5ldCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW5l dCcsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2luZXRfbWVyZ2UnIH0sCiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi9uZXR3b3JrX2luY2x1c2lvbl9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnaW5ldCcsCkBAIC0yMDE2LDYgKzIwMTksOSBAQAogeyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vcmFuZ2VfaW5jbHVzaW9uX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnly YW5nZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYW55cmFuZ2UnLCBhbXByb2NudW0gPT4g JzQnLAogICBhbXByb2MgPT4gJ2JyaW5faW5jbHVzaW9uX3VuaW9uJyB9LAoreyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vcmFuZ2VfaW5jbHVzaW9uX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdhbnlyYW5nZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnYW55cmFuZ2UnLCBhbXByb2Nu dW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5faW5jbHVzaW9uX3ByZXByb2Nlc3MnIH0s CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9yYW5nZV9pbmNsdXNpb25fb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2FueXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnlyYW5n ZScsIGFtcHJvY251bSA9PiAnMTEnLAogICBhbXByb2MgPT4gJ3JhbmdlX21lcmdlKGFueXJh bmdlLGFueXJhbmdlKScgfSwKQEAgLTIwOTcsNiArMjEwMyw5IEBACiB7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi9ib3hfaW5jbHVzaW9uX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdib3gn LAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2JveCcsIGFtcHJvY251bSA9PiAnNCcsCiAgIGFt cHJvYyA9PiAnYnJpbl9pbmNsdXNpb25fdW5pb24nIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9ib3hfaW5jbHVzaW9uX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdib3gnLAorICBh bXByb2NyaWdodHR5cGUgPT4gJ2JveCcsIGFtcHJvY251bSA9PiAnNicsCisgIGFtcHJvYyA9 PiAnYnJpbl9pbmNsdXNpb25fcHJlcHJvY2VzcycgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdi cmluL2JveF9pbmNsdXNpb25fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2JveCcsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnYm94JywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAn Ym91bmRfYm94JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vYm94X2luY2x1c2lvbl9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYm94JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CmluZGV4IDRlOGQ2NjY4NjQuLjc1M2M0MWQ1Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdApAQCAtODYxMCw2ICs4NjEwLDEwIEBACiAgIHByb25hbWUgPT4gJ2JyaW5faW5jbHVz aW9uX3VuaW9uJywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsCiAgIHByb2FyZ3R5cGVzID0+ICdp bnRlcm5hbCBpbnRlcm5hbCBpbnRlcm5hbCcsCiAgIHByb3NyYyA9PiAnYnJpbl9pbmNsdXNp b25fdW5pb24nIH0sCit7IG9pZCA9PiAnOTMyNCcsIGRlc2NyID0+ICdCUklOIGluY2x1c2lv biBzdXBwb3J0JywKKyAgcHJvbmFtZSA9PiAnYnJpbl9pbmNsdXNpb25fcHJlcHJvY2Vzcycs IHByb2lzc3RyaWN0ID0+ICdmJywKKyAgcHJvcmV0dHlwZSA9PiAnaW50ZXJuYWwnLCBwcm9h cmd0eXBlcyA9PiAnaW50ZXJuYWwgaW50ZXJuYWwnLAorICBwcm9zcmMgPT4gJ2JyaW5faW5j bHVzaW9uX3ByZXByb2Nlc3MnIH0sCiAKICMgQlJJTiBibG9vbQogeyBvaWQgPT4gJzQ1OTEn LCBkZXNjciA9PiAnQlJJTiBibG9vbSBzdXBwb3J0JywKLS0gCjIuMzkuMQoK --------------mzJK0H1XSWOfxSV5Dx6We88O Content-Type: text/x-patch; charset=UTF-8; name="0008-Support-SK_SEARCHARRAY-in-BRIN-bloom-20230215.patch" Content-Disposition: attachment; filename="0008-Support-SK_SEARCHARRAY-in-BRIN-bloom-20230215.patch" Content-Transfer-Encoding: base64 RnJvbSAyY2Y1ZDEzNmY2YTgwY2EyY2ZjNzAzYzU0NTY2ZmU2MzZiNDFjYTI4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU2F0LCAxMSBGZWIgMjAyMyAyMDo1MDowMyArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggOC85XSBTdXBwb3J0IFNLX1NFQVJDSEFSUkFZIGluIEJSSU4gYmxvb20K Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl9ibG9vbS5jIHwgMTU3ICsrKysr KysrKysrKysrKysrKysrKystLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2Mu ZGF0ICAgIHwgIDYwICsrKysrKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQgICAgICB8ICAgMyArCiAzIGZpbGVzIGNoYW5nZWQsIDE5NCBpbnNlcnRpb25zKCspLCAy NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluX2Jsb29tLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX2Jsb29tLmMKaW5k ZXggNGZmODBhZWIwYy4uNDhiOTg0N2JiMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbl9ibG9vbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW5fYmxvb20uYwpAQCAtMTI1LDkgKzEyNSwxMSBAQAogI2luY2x1ZGUgImFjY2Vzcy9zdHJh dG51bS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfYW1vcC5oIgorI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2luY2x1ZGUgInV0 aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVk ZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIApAQCAtMTUx LDYgKzE1MywxMyBAQAogICovCiAjZGVmaW5lCQlQUk9DTlVNX0JBU0UJCQkxMQogCisvKgor ICogV2UgdXNlIHNvbWUgcHJpdmF0ZSBza19mbGFncyBiaXRzIGluIHByZXByb2Nlc3NlZCBz Y2FuIGtleXMuICBXZSdyZSBhbGxvd2VkCisgKiB0byB1c2UgYml0cyAxNi0zMSAoc2VlIHNr ZXkuaCkuICBUaGUgdXBwZXJtb3N0IGJpdHMgYXJlIGNvcGllZCBmcm9tIHRoZQorICogaW5k ZXgncyBpbmRvcHRpb25bXSBhcnJheSBlbnRyeSBmb3IgdGhlIGluZGV4IGF0dHJpYnV0ZS4K KyAqLworI2RlZmluZSBTS19CUklOX0hBU0hFUwkweDAwMDEwMDAwCS8qIGRlY29uc3RydWN0 ZWQgYXJyYXksIGNhbGN1bGF0ZWQgaGFzaGVzICovCisKIC8qCiAgKiBTdG9yYWdlIHR5cGUg Zm9yIEJSSU4ncyByZWxvcHRpb25zLgogICovCkBAIC00MDIsMjEgKzQxMSwxNCBAQCBibG9v bV9hZGRfdmFsdWUoQmxvb21GaWx0ZXIgKmZpbHRlciwgdWludDMyIHZhbHVlLCBib29sICp1 cGRhdGVkKQogCXJldHVybiBmaWx0ZXI7CiB9CiAKLQogLyoKICAqIGJsb29tX2NvbnRhaW5z X3ZhbHVlCiAgKiAJCUNoZWNrIGlmIHRoZSBibG9vbSBmaWx0ZXIgY29udGFpbnMgYSBwYXJ0 aWN1bGFyIHZhbHVlLgogICovCiBzdGF0aWMgYm9vbAotYmxvb21fY29udGFpbnNfdmFsdWUo Qmxvb21GaWx0ZXIgKmZpbHRlciwgdWludDMyIHZhbHVlKQorYmxvb21fY29udGFpbnNfaGFz aGVzKEJsb29tRmlsdGVyICpmaWx0ZXIsIHVpbnQ2NCBoMSwgdWludDY0IGgyKQogewogCWlu dAkJCWk7Ci0JdWludDY0CQloMSwKLQkJCQloMjsKLQotCS8qIGNhbGN1bGF0ZSB0aGUgdHdv IGhhc2hlcyAqLwotCWgxID0gaGFzaF9ieXRlc191aW50MzJfZXh0ZW5kZWQodmFsdWUsIEJM T09NX1NFRURfMSkgJSBmaWx0ZXItPm5iaXRzOwotCWgyID0gaGFzaF9ieXRlc191aW50MzJf ZXh0ZW5kZWQodmFsdWUsIEJMT09NX1NFRURfMikgJSBmaWx0ZXItPm5iaXRzOwogCiAJLyog Y29tcHV0ZSB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBoYXNoZXMgKi8KIAlmb3IgKGkgPSAw OyBpIDwgZmlsdGVyLT5uaGFzaGVzOyBpKyspCkBAIC01OTAsNiArNTkyLDk5IEBAIGJyaW5f Ymxvb21fYWRkX3ZhbHVlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX0JPT0wodXBk YXRlZCk7CiB9CiAKK3R5cGVkZWYgc3RydWN0IEhhc2hDYWNoZSB7CisJaW50CQluZWxlbWVu dHM7CisJdWludDY0ICpoMTsKKwl1aW50NjQgKmgyOworfSBIYXNoQ2FjaGU7CisKK0RhdHVt CiticmluX2Jsb29tX3ByZXByb2Nlc3MoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlCcmluRGVz YyAgICpiZGVzYyA9IChCcmluRGVzYyAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKwlTY2Fu S2V5CQlrZXkgPSAoU2NhbktleSkgUEdfR0VUQVJHX1BPSU5URVIoMSk7CisJQmxvb21PcHRp b25zICpvcHRzID0gKEJsb29tT3B0aW9ucyAqKSBQR19HRVRfT1BDTEFTU19PUFRJT05TKCk7 CisJU2NhbktleQkJbmV3a2V5OworCUhhc2hDYWNoZSAgKmNhY2hlID0gcGFsbG9jMChzaXpl b2YoSGFzaENhY2hlKSk7CisKKwlpbnQJCQluYml0czsKKwlGbWdySW5mbyAgICpmaW5mbzsK Kwl1aW50MzIJCWhhc2hWYWx1ZTsKKworCS8qIHdlJ2xsIG5lZWQgdG8gY2FsY3VsYXRlIGhh c2hlcywgc28gZ2V0IHRoZSBwcm9jICovCisJZmluZm8gPSBibG9vbV9nZXRfcHJvY2luZm8o YmRlc2MsIGtleS0+c2tfYXR0bm8sIFBST0NOVU1fSEFTSCk7CisKKwkvKgorCSAqIFdlIGRv bid0IGhhdmUgYSBmaWx0ZXIgZnJvbSBhbnkgcmFuZ2UgeWV0LCBzbyB3ZSBqdXN0IHJlLWNh bGN1bGF0ZQorCSAqIHRoZSBzaXplIChudW1iZXIgb2YgYml0cykganVzdCBsaWtlIGJsb29t X2luaXQuCisJICovCisJYmxvb21fZmlsdGVyX3NpemUoYnJpbl9ibG9vbV9nZXRfbmRpc3Rp bmN0KGJkZXNjLCBvcHRzKSwKKwkJCQkJICBCbG9vbUdldEZhbHNlUG9zaXRpdmVSYXRlKG9w dHMpLAorCQkJCQkgIE5VTEwsICZuYml0cywgTlVMTCk7CisKKwkvKiBwcmVjYWxjdWxhdGUg dGhlIGhhc2ggZXZlbiBmb3Igc2ltcGxlIHNjYW4ga2V5cyAqLworCWlmICghKGtleS0+c2tf ZmxhZ3MgJiBTS19TRUFSQ0hBUlJBWSkpCisJeworCQlEYXR1bSB2YWx1ZSA9IGtleS0+c2tf YXJndW1lbnQ7CisKKwkJY2FjaGUtPm5lbGVtZW50cyA9IDE7CisJCWNhY2hlLT5oMSA9ICh1 aW50NjQgKikgcGFsbG9jMChzaXplb2YodWludDY0KSk7CisJCWNhY2hlLT5oMiA9ICh1aW50 NjQgKikgcGFsbG9jMChzaXplb2YodWludDY0KSk7CisKKwkJaGFzaFZhbHVlID0gRGF0dW1H ZXRVSW50MzIoRnVuY3Rpb25DYWxsMUNvbGwoZmluZm8sIGtleS0+c2tfY29sbGF0aW9uLCB2 YWx1ZSkpOworCisJCWNhY2hlLT5oMVswXSA9IGhhc2hfYnl0ZXNfdWludDMyX2V4dGVuZGVk KGhhc2hWYWx1ZSwgQkxPT01fU0VFRF8xKSAlIG5iaXRzOworCQljYWNoZS0+aDJbMF0gPSBo YXNoX2J5dGVzX3VpbnQzMl9leHRlbmRlZChoYXNoVmFsdWUsIEJMT09NX1NFRURfMikgJSBu Yml0czsKKwl9CisJZWxzZQorCXsKKwkJQXJyYXlUeXBlICAqYXJyYXl2YWw7CisJCWludDE2 CQllbG1sZW47CisJCWJvb2wJCWVsbWJ5dmFsOworCQljaGFyCQllbG1hbGlnbjsKKwkJaW50 CQkJbnVtX2VsZW1zOworCQlEYXR1bQkgICAqZWxlbV92YWx1ZXM7CisJCWJvb2wJICAgKmVs ZW1fbnVsbHM7CisKKwkJYXJyYXl2YWwgPSBEYXR1bUdldEFycmF5VHlwZVAoa2V5LT5za19h cmd1bWVudCk7CisKKwkJZ2V0X3R5cGxlbmJ5dmFsYWxpZ24oQVJSX0VMRU1UWVBFKGFycmF5 dmFsKSwKKwkJCQkJCQkgJmVsbWxlbiwgJmVsbWJ5dmFsLCAmZWxtYWxpZ24pOworCisJCWRl Y29uc3RydWN0X2FycmF5KGFycmF5dmFsLAorCQkJCQkJICBBUlJfRUxFTVRZUEUoYXJyYXl2 YWwpLAorCQkJCQkJICBlbG1sZW4sIGVsbWJ5dmFsLCBlbG1hbGlnbiwKKwkJCQkJCSAgJmVs ZW1fdmFsdWVzLCAmZWxlbV9udWxscywgJm51bV9lbGVtcyk7CisKKwkJY2FjaGUtPm5lbGVt ZW50cyA9IG51bV9lbGVtczsKKwkJY2FjaGUtPmgxID0gKHVpbnQ2NCAqKSBwYWxsb2MwKHNp emVvZih1aW50NjQpICogbnVtX2VsZW1zKTsKKwkJY2FjaGUtPmgyID0gKHVpbnQ2NCAqKSBw YWxsb2MwKHNpemVvZih1aW50NjQpICogbnVtX2VsZW1zKTsKKworCQlmb3IgKGludCBpID0g MDsgaSA8IG51bV9lbGVtczsgaSsrKQorCQl7CisJCQlEYXR1bQllbGVtZW50ID0gZWxlbV92 YWx1ZXNbaV07CisKKwkJCWhhc2hWYWx1ZSA9IERhdHVtR2V0VUludDMyKEZ1bmN0aW9uQ2Fs bDFDb2xsKGZpbmZvLCBrZXktPnNrX2NvbGxhdGlvbiwgZWxlbWVudCkpOworCisJCQljYWNo ZS0+aDFbaV0gPSBoYXNoX2J5dGVzX3VpbnQzMl9leHRlbmRlZChoYXNoVmFsdWUsIEJMT09N X1NFRURfMSkgJSBuYml0czsKKwkJCWNhY2hlLT5oMltpXSA9IGhhc2hfYnl0ZXNfdWludDMy X2V4dGVuZGVkKGhhc2hWYWx1ZSwgQkxPT01fU0VFRF8yKSAlIG5iaXRzOworCQl9CisJfQor CisJbmV3a2V5ID0gcGFsbG9jMChzaXplb2YoU2NhbktleURhdGEpKTsKKworCVNjYW5LZXlF bnRyeUluaXRpYWxpemVXaXRoSW5mbyhuZXdrZXksCisJCQkJCQkJCSAgIChrZXktPnNrX2Zs YWdzIHwgU0tfQlJJTl9IQVNIRVMpLAorCQkJCQkJCQkgICBrZXktPnNrX2F0dG5vLAorCQkJ CQkJCQkgICBrZXktPnNrX3N0cmF0ZWd5LAorCQkJCQkJCQkgICBrZXktPnNrX3N1YnR5cGUs CisJCQkJCQkJCSAgIGtleS0+c2tfY29sbGF0aW9uLAorCQkJCQkJCQkgICAma2V5LT5za19m dW5jLAorCQkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oY2FjaGUpKTsKKworCVBHX1JFVFVS Tl9QT0lOVEVSKG5ld2tleSk7Cit9CisKIC8qCiAgKiBHaXZlbiBhbiBpbmRleCB0dXBsZSBj b3JyZXNwb25kaW5nIHRvIGEgY2VydGFpbiBwYWdlIHJhbmdlIGFuZCBhIHNjYW4ga2V5LAog ICogcmV0dXJuIHdoZXRoZXIgdGhlIHNjYW4ga2V5IGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUg aW5kZXggdHVwbGUncyBibG9vbQpAQCAtNTk4LDE2ICs2OTMsMTAgQEAgYnJpbl9ibG9vbV9h ZGRfdmFsdWUoUEdfRlVOQ1RJT05fQVJHUykKIERhdHVtCiBicmluX2Jsb29tX2NvbnNpc3Rl bnQoUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlCcmluRGVzYyAgICpiZGVzYyA9IChCcmluRGVz YyAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKIAlCcmluVmFsdWVzICpjb2x1bW4gPSAoQnJp blZhbHVlcyAqKSBQR19HRVRBUkdfUE9JTlRFUigxKTsKIAlTY2FuS2V5ICAgICprZXlzID0g KFNjYW5LZXkgKikgUEdfR0VUQVJHX1BPSU5URVIoMik7CiAJaW50CQkJbmtleXMgPSBQR19H RVRBUkdfSU5UMzIoMyk7Ci0JT2lkCQkJY29sbG9pZCA9IFBHX0dFVF9DT0xMQVRJT04oKTsK LQlBdHRyTnVtYmVyCWF0dG5vOwotCURhdHVtCQl2YWx1ZTsKIAlib29sCQltYXRjaGVzOwot CUZtZ3JJbmZvICAgKmZpbmZvOwotCXVpbnQzMgkJaGFzaFZhbHVlOwogCUJsb29tRmlsdGVy ICpmaWx0ZXI7CiAJaW50CQkJa2V5bm87CiAKQEAgLTYyMSwyNiArNzEwLDQyIEBAIGJyaW5f Ymxvb21fY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCWZvciAoa2V5bm8gPSAwOyBr ZXlubyA8IG5rZXlzOyBrZXlubysrKQogCXsKIAkJU2NhbktleQkJa2V5ID0ga2V5c1trZXlu b107CisJCUhhc2hDYWNoZSAgKmNhY2hlID0gKEhhc2hDYWNoZSAqKSBrZXktPnNrX2FyZ3Vt ZW50OwogCiAJCS8qIE5VTEwga2V5cyBhcmUgaGFuZGxlZCBhbmQgZmlsdGVyZWQtb3V0IGlu IGJyaW5nZXRiaXRtYXAgKi8KIAkJQXNzZXJ0KCEoa2V5LT5za19mbGFncyAmIFNLX0lTTlVM TCkpOwogCi0JCWF0dG5vID0ga2V5LT5za19hdHRubzsKLQkJdmFsdWUgPSBrZXktPnNrX2Fy Z3VtZW50OworCQkvKgorCQkgKiBLZXlzIHNob3VsZCBiZSBwcmVwcm9jZXNzZWQgaW50byBh IGhhc2ggY2FjaGUgKGV2ZW4gYSBzaW5nbGUKKwkJICogdmFsdWUgc2NhbiBrZXlzLCBub3Qg anVzdCBTS19TRUFSQ0hBUlJBWSBvbmVzKS4KKwkJICovCisJCUFzc2VydChrZXktPnNrX2Zs YWdzICYgU0tfQlJJTl9IQVNIRVMpOwogCiAJCXN3aXRjaCAoa2V5LT5za19zdHJhdGVneSkK IAkJewogCQkJY2FzZSBCbG9vbUVxdWFsU3RyYXRlZ3lOdW1iZXI6Ci0KLQkJCQkvKgotCQkJ CSAqIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBjdXJyZW50IHBhZ2UgcmFuZ2UgaWYgdGhlIGJs b29tIGZpbHRlcgotCQkJCSAqIHNlZW1zIHRvIGNvbnRhaW4gdGhlIHZhbHVlLgotCQkJCSAq LwotCQkJCWZpbmZvID0gYmxvb21fZ2V0X3Byb2NpbmZvKGJkZXNjLCBhdHRubywgUFJPQ05V TV9IQVNIKTsKLQotCQkJCWhhc2hWYWx1ZSA9IERhdHVtR2V0VUludDMyKEZ1bmN0aW9uQ2Fs bDFDb2xsKGZpbmZvLCBjb2xsb2lkLCB2YWx1ZSkpOwotCQkJCW1hdGNoZXMgJj0gYmxvb21f Y29udGFpbnNfdmFsdWUoZmlsdGVyLCBoYXNoVmFsdWUpOwotCisJCQkJeworCQkJCQkvKiBh c3N1bWUgbm8gbWF0Y2ggKi8KKwkJCQkJbWF0Y2hlcyA9IGZhbHNlOworCisJCQkJCS8qCisJ CQkJCSAqIFdlIHdhbnQgdG8gcmV0dXJuIHRoZSBjdXJyZW50IHBhZ2UgcmFuZ2UgaWYgdGhl IGJsb29tIGZpbHRlcgorCQkJCQkgKiBzZWVtcyB0byBjb250YWluIGFueSBvZiB0aGUgdmFs dWVzIChvciBhIHNpbmdsZSB2YWx1ZSkuCisJCQkJCSAqLworCQkJCQlmb3IgKGludCBpID0g MDsgaSA8IGNhY2hlLT5uZWxlbWVudHM7IGkrKykKKwkJCQkJeworCQkJCQkJYm9vbAl0bXAg PSBmYWxzZTsKKworCQkJCQkJdG1wID0gYmxvb21fY29udGFpbnNfaGFzaGVzKGZpbHRlciwg Y2FjaGUtPmgxW2ldLCBjYWNoZS0+aDJbaV0pOworCisJCQkJCQkvKiBpZiB3ZSBmb3VuZCBh IG1hdGNoaW5nIHZhbHVlLCB3ZSBoYXZlIGEgbWF0Y2ggKi8KKwkJCQkJCWlmIChEYXR1bUdl dEJvb2wodG1wKSkKKwkJCQkJCXsKKwkJCQkJCQltYXRjaGVzID0gQm9vbEdldERhdHVtKHRy dWUpOworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJCQl9CisJCQkJfQogCQkJCWJyZWFr OwogCQkJZGVmYXVsdDoKIAkJCQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2FtcHJvYy5kYXQKaW5kZXggZWQ1YjIxZTdmOS4uZDk1MWZjZDFhMCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdApAQCAtODIyLDYgKzgyMiw5IEBACiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi9ieXRlYV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn Ynl0ZWEnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2J5dGVhJywgYW1wcm9jbnVtID0+ICc1 JywKICAgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi9ieXRlYV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYnl0ZWEn LAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2J5dGVhJywgYW1wcm9jbnVtID0+ICc2JywKKyAg YW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9ieXRlYV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYnl0ZWEnLAog ICBhbXByb2NyaWdodHR5cGUgPT4gJ2J5dGVhJywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJv YyA9PiAnaGFzaHZhcmxlbmEnIH0sCiAKQEAgLTg1Myw2ICs4NTYsOCBAQAogICBhbXByb2Ny aWdodHR5cGUgPT4gJ2NoYXInLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5f Ymxvb21fdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9jaGFyX2Jsb29tX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdjaGFyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdj aGFyJywgYW1wcm9jbnVtID0+ICc1JywgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMn IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9jaGFyX2Jsb29tX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdjaGFyJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdjaGFyJywgYW1wcm9j bnVtID0+ICc2JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nlc3MnIH0sCiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi9jaGFyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ ICdjaGFyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdjaGFyJywgYW1wcm9jbnVtID0+ICcx MScsIGFtcHJvYyA9PiAnaGFzaGNoYXInIH0sCiAKQEAgLTg4NCw2ICs4ODksOCBAQAogICBh bXByb2NyaWdodHR5cGUgPT4gJ25hbWUnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4g J2JyaW5fYmxvb21fdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uYW1lX2Js b29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICduYW1lJywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICduYW1lJywgYW1wcm9jbnVtID0+ICc1JywgYW1wcm9jID0+ICdicmluX2Jsb29tX29w dGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uYW1lX2Jsb29tX29wcycsIGFt cHJvY2xlZnR0eXBlID0+ICduYW1lJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICduYW1lJywg YW1wcm9jbnVtID0+ICc2JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nlc3MnIH0s CiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uYW1lX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0 eXBlID0+ICduYW1lJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICduYW1lJywgYW1wcm9jbnVt ID0+ICcxMScsIGFtcHJvYyA9PiAnaGFzaG5hbWUnIH0sCiAKQEAgLTEwMTAsNiArMTAxNyw4 IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50OCcsIGFtcHJvY251bSA9PiAnNCcsIGFt cHJvYyA9PiAnYnJpbl9ibG9vbV91bmlvbicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmlu L2ludGVnZXJfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDgnLAogICBhbXBy b2NyaWdodHR5cGUgPT4gJ2ludDgnLCBhbXByb2NudW0gPT4gJzUnLCBhbXByb2MgPT4gJ2Jy aW5fYmxvb21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJf Ymxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDgnLAorICBhbXByb2NyaWdodHR5 cGUgPT4gJ2ludDgnLCBhbXByb2NudW0gPT4gJzYnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21f cHJlcHJvY2VzcycgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2ludGVnZXJfYmxvb21f b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2ludDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4g J2ludDgnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdoYXNoaW50OCcgfSwKIApA QCAtMTAyNSw2ICsxMDM0LDggQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQyJywgYW1w cm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3VuaW9uJyB9LAogeyBhbXBy b2NmYW1pbHkgPT4gJ2JyaW4vaW50ZWdlcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnaW50MicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJvY251bSA9PiAn NScsIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkg PT4gJ2JyaW4vaW50ZWdlcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50Mics CisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJvY251bSA9PiAnNicsIGFtcHJv YyA9PiAnYnJpbl9ibG9vbV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2Jy aW4vaW50ZWdlcl9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50MicsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAnaW50MicsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4g J2hhc2hpbnQyJyB9LAogCkBAIC0xMDQwLDYgKzEwNTEsOCBAQAogICBhbXByb2NyaWdodHR5 cGUgPT4gJ2ludDQnLCBhbXByb2NudW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21f dW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX2Jsb29tX29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdpbnQ0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ0 JywgYW1wcm9jbnVtID0+ICc1JywgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0s Cit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX2Jsb29tX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdpbnQ0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ0JywgYW1wcm9j bnVtID0+ICc2JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nlc3MnIH0sCiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi9pbnRlZ2VyX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdpbnQ0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdpbnQ0JywgYW1wcm9jbnVtID0+ ICcxMScsIGFtcHJvYyA9PiAnaGFzaGludDQnIH0sCiAKQEAgLTEwNzEsNiArMTA4NCw4IEBA CiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGV4dCcsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJv YyA9PiAnYnJpbl9ibG9vbV91bmlvbicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3Rl eHRfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RleHQnLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ3RleHQnLCBhbXByb2NudW0gPT4gJzUnLCBhbXByb2MgPT4gJ2JyaW5fYmxv b21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RleHRfYmxvb21fb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RleHQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3Rl eHQnLCBhbXByb2NudW0gPT4gJzYnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fcHJlcHJvY2Vz cycgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RleHRfYmxvb21fb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ3RleHQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RleHQnLCBhbXBy b2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdoYXNodGV4dCcgfSwKIApAQCAtMTEyNCw2ICsx MTM5LDggQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdvaWQnLCBhbXByb2NudW0gPT4gJzQn LCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9vaWRfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ29pZCcsCiAgIGFtcHJv Y3JpZ2h0dHlwZSA9PiAnb2lkJywgYW1wcm9jbnVtID0+ICc1JywgYW1wcm9jID0+ICdicmlu X2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9vaWRfYmxvb21f b3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ29pZCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAn b2lkJywgYW1wcm9jbnVtID0+ICc2JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nl c3MnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9vaWRfYmxvb21fb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ29pZCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnb2lkJywgYW1wcm9j bnVtID0+ICcxMScsIGFtcHJvYyA9PiAnaGFzaG9pZCcgfSwKIApAQCAtMTE1NCw2ICsxMTcx LDggQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aWQnLCBhbXByb2NudW0gPT4gJzQnLCBh bXByb2MgPT4gJ2JyaW5fYmxvb21fdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi90aWRfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpZCcsCiAgIGFtcHJvY3Jp Z2h0dHlwZSA9PiAndGlkJywgYW1wcm9jbnVtID0+ICc1JywgYW1wcm9jID0+ICdicmluX2Js b29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aWRfYmxvb21fb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ3RpZCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGlk JywgYW1wcm9jbnVtID0+ICc2JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nlc3Mn IH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi90aWRfYmxvb21fb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ3RpZCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGlkJywgYW1wcm9jbnVt ID0+ICcxMScsIGFtcHJvYyA9PiAnaGFzaHRpZCcgfSwKIApAQCAtMTI3Myw2ICsxMjkyLDkg QEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X2Jsb29tX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdmbG9hdDQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0NCcsIGFt cHJvY251bSA9PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAor eyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ2Zsb2F0NCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ0JywgYW1wcm9j bnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nlc3MnIH0sCiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlw ZSA9PiAnZmxvYXQ0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDQnLCBhbXByb2Nu dW0gPT4gJzExJywgYW1wcm9jID0+ICdoYXNoZmxvYXQ0JyB9LAogCkBAIC0xMjkwLDYgKzEz MTIsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vZmxvYXRfYmxvb21fb3BzJywgYW1w cm9jbGVmdHR5cGUgPT4gJ2Zsb2F0OCcsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZmxvYXQ4 JywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMn IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9mbG9hdF9ibG9vbV9vcHMnLCBhbXByb2Ns ZWZ0dHlwZSA9PiAnZmxvYXQ4JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdmbG9hdDgnLCBh bXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fYmxvb21fcHJlcHJvY2Vzcycg fSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL2Zsb2F0X2Jsb29tX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdmbG9hdDgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Zsb2F0OCcsIGFt cHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4gJ2hhc2hmbG9hdDgnIH0sCiAKQEAgLTEzNDks NiArMTM3NCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyX2Jsb29tX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdtYWNhZGRyJywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX2Jsb29t X29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyX2Jsb29tX29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ ICdtYWNhZGRyJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29t X3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9tYWNhZGRyX2Jsb29t X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdtYWNhZGRyJywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICdtYWNhZGRyJywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnaGFzaG1hY2Fk ZHInIH0sCiAKQEAgLTE0MDgsNiArMTQzNiw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9tYWNhZGRyOF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbWFjYWRkcjgnLAog ICBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHI4JywgYW1wcm9jbnVtID0+ICc1JywKICAg YW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAn YnJpbi9tYWNhZGRyOF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbWFjYWRkcjgn LAorICBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHI4JywgYW1wcm9jbnVtID0+ICc2JywK KyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi9tYWNhZGRyOF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnbWFj YWRkcjgnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ21hY2FkZHI4JywgYW1wcm9jbnVtID0+ ICcxMScsIGFtcHJvYyA9PiAnaGFzaG1hY2FkZHI4JyB9LAogCkBAIC0xNDYyLDYgKzE0OTMs OCBAQAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzQnLCBh bXByb2MgPT4gJ2JyaW5fYmxvb21fdW5pb24nIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9uZXR3b3JrX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKICAgYW1w cm9jcmlnaHR0eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICc1JywgYW1wcm9jID0+ICdi cmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uZXR3b3Jr X2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKKyAgYW1wcm9jcmlnaHR0 eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICc2JywgYW1wcm9jID0+ICdicmluX2Jsb29t X3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9uZXR3b3JrX2Jsb29t X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ ICdpbmV0JywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnaGFzaGluZXQnIH0sCiAK QEAgLTE1MjAsNiArMTU1Myw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9icGNoYXJf Ymxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2JwY2hhcicsCiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAnYnBjaGFyJywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1wcm9jID0+ICdicmlu X2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9icGNoYXJfYmxv b21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2JwY2hhcicsCisgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnYnBjaGFyJywgYW1wcm9jbnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Js b29tX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9icGNoYXJfYmxv b21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2JwY2hhcicsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnYnBjaGFyJywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAnaGFzaGJwY2hh cicgfSwKIApAQCAtMTU3NCw2ICsxNjEwLDggQEAKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0 aW1lJywgYW1wcm9jbnVtID0+ICc0JywgYW1wcm9jID0+ICdicmluX2Jsb29tX3VuaW9uJyB9 LAogeyBhbXByb2NmYW1pbHkgPT4gJ2JyaW4vdGltZV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAndGltZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZScsIGFtcHJvY251 bSA9PiAnNScsIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vdGltZV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGlt ZScsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZScsIGFtcHJvY251bSA9PiAnNicsIGFt cHJvYyA9PiAnYnJpbl9ibG9vbV9wcmVwcm9jZXNzJyB9LAogeyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vdGltZV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZScsCiAgIGFt cHJvY3JpZ2h0dHlwZSA9PiAndGltZScsIGFtcHJvY251bSA9PiAnMTEnLCBhbXByb2MgPT4g J3RpbWVfaGFzaCcgfSwKIApAQCAtMTcwNyw2ICsxNzQ1LDkgQEAKIHsgYW1wcm9jZmFtaWx5 ID0+ICdicmluL2RhdGV0aW1lX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICd0aW1l c3RhbXAnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcCcsIGFtcHJvY251bSA9 PiAnNScsCiAgIGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2Nm YW1pbHkgPT4gJ2JyaW4vZGF0ZXRpbWVfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J3RpbWVzdGFtcCcsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAndGltZXN0YW1wJywgYW1wcm9j bnVtID0+ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nlc3MnIH0sCiB7 IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGltZV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAndGltZXN0YW1wJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1lc3RhbXAn LCBhbXByb2NudW0gPT4gJzExJywKICAgYW1wcm9jID0+ICd0aW1lc3RhbXBfaGFzaCcgfSwK QEAgLTE3MjYsNiArMTc2Nyw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnYnJpbi9kYXRldGlt ZV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wdHonLAogICBhbXBy b2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywgYW1wcm9jbnVtID0+ICc1JywKICAgYW1w cm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnYnJp bi9kYXRldGltZV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXN0YW1wdHon LAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywgYW1wcm9jbnVtID0+ICc2 JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9kYXRldGltZV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn dGltZXN0YW1wdHonLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3RpbWVzdGFtcHR6JywgYW1w cm9jbnVtID0+ICcxMScsCiAgIGFtcHJvYyA9PiAndGltZXN0YW1wX2hhc2gnIH0sCkBAIC0x NzQyLDYgKzE3ODYsOCBAQAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2RhdGUnLCBhbXByb2Nu dW0gPT4gJzQnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fdW5pb24nIH0sCiB7IGFtcHJvY2Zh bWlseSA9PiAnYnJpbi9kYXRldGltZV9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAn ZGF0ZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnZGF0ZScsIGFtcHJvY251bSA9PiAnNScs IGFtcHJvYyA9PiAnYnJpbl9ibG9vbV9vcHRpb25zJyB9LAoreyBhbXByb2NmYW1pbHkgPT4g J2JyaW4vZGF0ZXRpbWVfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2RhdGUnLAor ICBhbXByb2NyaWdodHR5cGUgPT4gJ2RhdGUnLCBhbXByb2NudW0gPT4gJzYnLCBhbXByb2Mg PT4gJ2JyaW5fYmxvb21fcHJlcHJvY2VzcycgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmlu L2RhdGV0aW1lX2Jsb29tX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdkYXRlJywKICAgYW1w cm9jcmlnaHR0eXBlID0+ICdkYXRlJywgYW1wcm9jbnVtID0+ICcxMScsIGFtcHJvYyA9PiAn aGFzaGludDQnIH0sCiAKQEAgLTE4MDEsNiArMTg0Nyw5IEBACiB7IGFtcHJvY2ZhbWlseSA9 PiAnYnJpbi9pbnRlcnZhbF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50ZXJ2 YWwnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludGVydmFsJywgYW1wcm9jbnVtID0+ICc1 JywKICAgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJvY2ZhbWls eSA9PiAnYnJpbi9pbnRlcnZhbF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnaW50 ZXJ2YWwnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludGVydmFsJywgYW1wcm9jbnVtID0+ ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi9pbnRlcnZhbF9ibG9vbV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9 PiAnaW50ZXJ2YWwnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2ludGVydmFsJywgYW1wcm9j bnVtID0+ICcxMScsIGFtcHJvYyA9PiAnaW50ZXJ2YWxfaGFzaCcgfSwKIApAQCAtMTg1OSw2 ICsxOTA4LDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWV0el9ibG9vbV9vcHMn LCBhbXByb2NsZWZ0dHlwZSA9PiAndGltZXR6JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0 aW1ldHonLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2JyaW5fYmxvb21fb3B0 aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWV0el9ibG9vbV9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAndGltZXR6JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1l dHonLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2JyaW5fYmxvb21fcHJlcHJv Y2VzcycgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3RpbWV0el9ibG9vbV9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAndGltZXR6JywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0aW1l dHonLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICd0aW1ldHpfaGFzaCcgfSwKIApA QCAtMTk0OSw2ICsyMDAxLDkgQEAKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL251bWVyaWNf Ymxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ251bWVyaWMnLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ251bWVyaWMnLCBhbXByb2NudW0gPT4gJzUnLAogICBhbXByb2MgPT4gJ2Jy aW5fYmxvb21fb3B0aW9ucycgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL251bWVyaWNf Ymxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ251bWVyaWMnLAorICBhbXByb2NyaWdo dHR5cGUgPT4gJ251bWVyaWMnLCBhbXByb2NudW0gPT4gJzYnLAorICBhbXByb2MgPT4gJ2Jy aW5fYmxvb21fcHJlcHJvY2VzcycgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL251bWVy aWNfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ251bWVyaWMnLAogICBhbXByb2Ny aWdodHR5cGUgPT4gJ251bWVyaWMnLCBhbXByb2NudW0gPT4gJzExJywgYW1wcm9jID0+ICdo YXNoX251bWVyaWMnIH0sCiAKQEAgLTIwMDMsNiArMjA1OCw4IEBACiAgIGFtcHJvY3JpZ2h0 dHlwZSA9PiAndXVpZCcsIGFtcHJvY251bSA9PiAnNCcsIGFtcHJvYyA9PiAnYnJpbl9ibG9v bV91bmlvbicgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdicmluL3V1aWRfYmxvb21fb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ3V1aWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3V1aWQn LCBhbXByb2NudW0gPT4gJzUnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fb3B0aW9ucycgfSwK K3sgYW1wcm9jZmFtaWx5ID0+ICdicmluL3V1aWRfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ3V1aWQnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ3V1aWQnLCBhbXByb2NudW0g PT4gJzYnLCBhbXByb2MgPT4gJ2JyaW5fYmxvb21fcHJlcHJvY2VzcycgfSwKIHsgYW1wcm9j ZmFtaWx5ID0+ICdicmluL3V1aWRfYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ3V1 aWQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ3V1aWQnLCBhbXByb2NudW0gPT4gJzExJywg YW1wcm9jID0+ICd1dWlkX2hhc2gnIH0sCiAKQEAgLTIwODcsNiArMjE0NCw5IEBACiB7IGFt cHJvY2ZhbWlseSA9PiAnYnJpbi9wZ19sc25fYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUg PT4gJ3BnX2xzbicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAncGdfbHNuJywgYW1wcm9jbnVt ID0+ICc1JywKICAgYW1wcm9jID0+ICdicmluX2Jsb29tX29wdGlvbnMnIH0sCit7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi9wZ19sc25fYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J3BnX2xzbicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAncGdfbHNuJywgYW1wcm9jbnVtID0+ ICc2JywKKyAgYW1wcm9jID0+ICdicmluX2Jsb29tX3ByZXByb2Nlc3MnIH0sCiB7IGFtcHJv Y2ZhbWlseSA9PiAnYnJpbi9wZ19sc25fYmxvb21fb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4g J3BnX2xzbicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAncGdfbHNuJywgYW1wcm9jbnVtID0+ ICcxMScsIGFtcHJvYyA9PiAncGdfbHNuX2hhc2gnIH0sCiAKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CmluZGV4IDc1M2M0MWQ1Y2QuLjQzMjUyMjljOWQgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdApAQCAtODYzMyw2ICs4NjMzLDkgQEAKIHsgb2lkID0+ICc0NTk1JywgZGVz Y3IgPT4gJ0JSSU4gYmxvb20gc3VwcG9ydCcsCiAgIHByb25hbWUgPT4gJ2JyaW5fYmxvb21f b3B0aW9ucycsIHByb2lzc3RyaWN0ID0+ICdmJywgcHJvcmV0dHlwZSA9PiAndm9pZCcsCiAg IHByb2FyZ3R5cGVzID0+ICdpbnRlcm5hbCcsIHByb3NyYyA9PiAnYnJpbl9ibG9vbV9vcHRp b25zJyB9LAoreyBvaWQgPT4gJzkzMjUnLCBkZXNjciA9PiAnQlJJTiBibG9vbSBzdXBwb3J0 JywKKyAgcHJvbmFtZSA9PiAnYnJpbl9ibG9vbV9wcmVwcm9jZXNzJywgcHJvaXNzdHJpY3Qg PT4gJ2YnLCBwcm9yZXR0eXBlID0+ICdpbnRlcm5hbCcsCisgIHByb2FyZ3R5cGVzID0+ICdp bnRlcm5hbCBpbnRlcm5hbCcsIHByb3NyYyA9PiAnYnJpbl9ibG9vbV9wcmVwcm9jZXNzJyB9 LAogCiAjIHVzZXJsb2NrIHJlcGxhY2VtZW50cwogeyBvaWQgPT4gJzI4ODAnLCBkZXNjciA9 PiAnb2J0YWluIGV4Y2x1c2l2ZSBhZHZpc29yeSBsb2NrJywKLS0gCjIuMzkuMQoK --------------mzJK0H1XSWOfxSV5Dx6We88O Content-Type: text/x-python; charset=UTF-8; name="brin.py" Content-Disposition: attachment; filename="brin.py" Content-Transfer-Encoding: base64 aW1wb3J0IHBzeWNvcGcyCmltcG9ydCBzeXMKaW1wb3J0IHRpbWUKCmNvbm4gPSBwc3ljb3Bn Mi5jb25uZWN0KCdob3N0PWxvY2FsaG9zdCBkYm5hbWU9dGVzdCcpCgpjb25uLnNldF9zZXNz aW9uKGF1dG9jb21taXQ9VHJ1ZSkKCm5yb3dzID0gMTAwMDAwMDAKCmZvciB0IGluIFsnaW50 JywgJ3RleHQnXToKCglmb3IgbyBpbiBbJ21pbm1heCcsICdibG9vbSddOgoKCQlmb3IgZCBp biBbaW50KG5yb3dzKjUvMTAwKSwgaW50KG5yb3dzLzEwMCldOgoKCQkJaWYgdCA9PSAnaW50 JzoKCQkJCWN1ciA9IGNvbm4uY3Vyc29yKCkKCQkJCWN1ci5leGVjdXRlKCdkcm9wIHRhYmxl IGlmIGV4aXN0cyB0JykKCQkJCWN1ci5leGVjdXRlKCdjcmVhdGUgdGFibGUgdCAoYSBpbnQp JykKCQkJCWN1ci5leGVjdXRlKCdpbnNlcnQgaW50byB0IHNlbGVjdCAqIGZyb20gKHNlbGVj dCBpIGZyb20gZ2VuZXJhdGVfc2VyaWVzKDEsJWQpIHMoaSkpIGZvbyBvcmRlciBieSAoaSAr ICVkICogcmFuZG9tKCkgLyAxMDAuMCknICUgKG5yb3dzLCBkKSkKCgkJCQlpZiBvID09ICdt aW5tYXgnOgoJCQkJCWN1ci5leGVjdXRlKCdjcmVhdGUgaW5kZXggb24gdCB1c2luZyBicmlu IChhIGludDRfbWlubWF4X29wcykgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpJykKCQkJCWVs c2U6CgkJCQkJY3VyLmV4ZWN1dGUoJ2NyZWF0ZSBpbmRleCBvbiB0IHVzaW5nIGJyaW4gKGEg aW50NF9ibG9vbV9vcHMobl9kaXN0aW5jdF9wZXJfcmFuZ2U9MjAwKSkgd2l0aCAocGFnZXNf cGVyX3JhbmdlPTEpJykKCgkJCQljdXIuZXhlY3V0ZSgndmFjdXVtIGFuYWx5emUgdCcpCgkJ CQljdXIuY2xvc2UoKQoJCQllbHNlOgoJCQkJY3VyID0gY29ubi5jdXJzb3IoKQoJCQkJY3Vy LmV4ZWN1dGUoJ2Ryb3AgdGFibGUgaWYgZXhpc3RzIHQnKQoJCQkJY3VyLmV4ZWN1dGUoJ2Ny ZWF0ZSB0YWJsZSB0IChhIHRleHQpJykKCQkJCWN1ci5leGVjdXRlKCdpbnNlcnQgaW50byB0 IHNlbGVjdCBhIGZyb20gKHNlbGVjdCByb3dfbnVtYmVyKCkgb3ZlciAob3JkZXIgYnkgYSkg YXMgaSwgYSBmcm9tIChzZWxlY3QgbWQ1KGk6OnRleHQpIGEgZnJvbSBnZW5lcmF0ZV9zZXJp ZXMoMSwlZCkgcyhpKSBvcmRlciBieSAxKSBmb28pIGJhciBvcmRlciBieSAoaSArICVkICog cmFuZG9tKCkgLyAxMDAuMCknICUgKG5yb3dzLCBkKSkKCgkJCQlpZiBvID09ICdtaW5tYXgn OgoJCQkJCWN1ci5leGVjdXRlKCdjcmVhdGUgaW5kZXggb24gdCB1c2luZyBicmluIChhIHRl eHRfbWlubWF4X29wcykgd2l0aCAocGFnZXNfcGVyX3JhbmdlPTEpJykKCQkJCWVsc2U6CgkJ CQkJY3VyLmV4ZWN1dGUoJ2NyZWF0ZSBpbmRleCBvbiB0IHVzaW5nIGJyaW4gKGEgdGV4dF9i bG9vbV9vcHMobl9kaXN0aW5jdF9wZXJfcmFuZ2U9MjUwKSkgd2l0aCAocGFnZXNfcGVyX3Jh bmdlPTEpJykKCgkJCQljdXIuZXhlY3V0ZSgndmFjdXVtIGFuYWx5emUgdCcpCgkJCQljdXIu Y2xvc2UoKQoKCQkJY250ID0gc3VtKFsxLCAxMCwgMjAsIDUwLCAxMDAsIDUwMF0pICogMTAK CgkJCWN1ciA9IGNvbm4uY3Vyc29yKCkKCQkJY3VyLmV4ZWN1dGUoJ3NlbGVjdCBhIGZyb20g dCBvcmRlciBieSByYW5kb20oKSBsaW1pdCAlZCcgJSAoY250LCkpCgkJCXZhbHVlcyA9IFtz dHIodlswXSkgZm9yIHYgaW4gY3VyLmZldGNoYWxsKCldCgkJCWN1ci5jbG9zZSgpCgoJCQkj IDEwIHJ1bnMKCQkJZm9yIHIgaW4gcmFuZ2UoMCwxMCk6CgoJCQkJIyBudW1iZXIgb2YgdmFs dWVzIGluIHRoZSBsaXN0cwoJCQkJZm9yIHYgaW4gWzEsIDEwLCAyMCwgNTAsIDEwMCwgNTAw XToKCgkJCQkJdmFscyA9IHZhbHVlc1s6dl0KCQkJCQl2YWx1ZXMgPSB2YWx1ZXNbdjpdCgoJ CQkJCWlmIGxlbih2YWxzKSAhPSB2OgoJCQkJCQlwcmludCAoJ2luY29ycmVjdCBsZW5ndGgn LCBsZW4odmFscykpCgkJCQkJCXN5cy5leGl0KDEpCgoJCQkJCWlmIHQgPT0gJ3RleHQnOgoJ CQkJCQl2YWxzID0gIiciICsgIicsJyIuam9pbih2YWxzKSArICInIgoJCQkJCWVsc2U6CgkJ CQkJCXZhbHMgPSAnLCcuam9pbih2YWxzKQoKCQkJCQljdXIgPSBjb25uLmN1cnNvcigpCgoJ CQkJCWN1ci5leGVjdXRlKCdzZXQgZW5hYmxlX3NlcXNjYW4gPSBvZmYnKQoJCQkJCWN1ci5l eGVjdXRlKCdzZXQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDAnKQoKCQkJ CQlxdWVyeSA9ICdleHBsYWluIChhbmFseXplLCB0aW1pbmcgb2ZmKSBzZWxlY3QgKiBmcm9t IHQgd2hlcmUgYSBpbiAoJXMpJyAlICh2YWxzLCkKCgkJCQkJcyA9IHRpbWUudGltZSgpCgkJ CQkJY3VyLmV4ZWN1dGUocXVlcnkpCgkJCQkJZSA9IHRpbWUudGltZSgpCgoJCQkJCWN1ci5j bG9zZSgpCgoJCQkJCXByaW50KHQsIG8sIHIsIGQsIHYsIHJvdW5kKDEwMDAgKiAoZS1zKSwz KSkKCgkJCQkJc3lzLnN0ZG91dC5mbHVzaCgpCg== --------------mzJK0H1XSWOfxSV5Dx6We88O--