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 1pqgYz-0001bb-NY for pgsql-hackers@arkaria.postgresql.org; Sun, 23 Apr 2023 20:44:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pqgYw-0001pG-KW for pgsql-hackers@arkaria.postgresql.org; Sun, 23 Apr 2023 20:43:58 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pqgYw-0001p0-6C for pgsql-hackers@lists.postgresql.org; Sun, 23 Apr 2023 20:43:58 +0000 Received: from mail-ed1-x534.google.com ([2a00:1450:4864:20::534]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1pqgYn-004g0p-IL for pgsql-hackers@lists.postgresql.org; Sun, 23 Apr 2023 20:43:56 +0000 Received: by mail-ed1-x534.google.com with SMTP id 4fb4d7f45d1cf-50847469a7fso5288079a12.0 for ; Sun, 23 Apr 2023 13:43:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1682282628; x=1684874628; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=mkZIpu/f6htnuInat1dcr8yu9GEMqAmbgUovnh6o5WY=; b=Yo5dkwX7yrTpZaciI0PAXvMnefQQ9YsmtfLQ7KkA0ocyqct0wKtAKYQP12g1gM7hAW 9pKI0kzQq2nKoHx/Cv0qoMFd278Jxy4UNon9Eri4+sqt1U1M8oKe5iwk9y9crudnRax+ BB0G8qliHIRTPqdau0TTYwhWaOT7unbO2B2zhOaDknM8epUyrOgJnANFOz+pf1949czO TxBet6eMebdpRVLSuURD3Z2qkfXS316ogVG49aOKlpqzgnTXC2Ycft2ADHP6fH8DBThQ 0KGDDwVTuNRuBQyCMLbKbXmmqLan9wmoKLMHlDLS+4+K6Ezg5UnOp52rT1NPE6/7z2Y1 RL0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682282628; x=1684874628; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=mkZIpu/f6htnuInat1dcr8yu9GEMqAmbgUovnh6o5WY=; b=Z23WUPKD+tg5JN04CvHYZWzaA5ozh+k75dk2+GZZBxZD4CBzP/cPuhMbpj7BLzHmFg a1vNEjupY+WAcY4z4gbbEO1cuQ8ZT9sD+VJarkLrJLykE0mklchgPoDs7lQ76Z9XDvOx xqeNVYkrncew8ERXB0R8rbiA/9dNcz6DqEncFKjMuDUbOkCHBhxGiimUZ2OED4IqKi1G EUB63x941WQVH1ASzaC80MsnbAWjHWGNCPjzxGT4jZNMG2urjT9acYR+2WX54+38i2Wq HaBGP0vdLU0ErkVJ6sq4VhzaNvSsGd4KrPRz+5Y/xgR39jiABEvsAJlO+TLukwhKrjp8 XXxA== X-Gm-Message-State: AAQBX9fPW8HKTux+ENI/2l4QHLasUIGvAPF3XhV5f+QeI/w15UrwlluM o/AqUfbs2nrVV3qmWzg6cmnHWSF6eeVhb6NMZwt+EdnoHPMNf8MTm6yav6v5uUmAjyBYeovCMyT AHIebVP156eBHt0GTDI+wgfhXb8QNVigUjnAbV/fUReOPWxqq5kx2W2QcE/RZUBNBQZBYtNo0g/ U5KBZBZuVD5S4KMu3Iw7pDlxCdMLykOq0Cv4JUEdMG+gy45L6gOSBS X-Google-Smtp-Source: AKy350bPLfAAY/1xBBN1zk7dn7vMDvGy1/DBxLn6YRaTmw/1FPWBsUaO9RbB6hVRFxGSS05RF1O7dg== X-Received: by 2002:aa7:c2c5:0:b0:506:943a:6a5f with SMTP id m5-20020aa7c2c5000000b00506943a6a5fmr9496503edp.36.1682282628090; Sun, 23 Apr 2023 13:43:48 -0700 (PDT) Received: from [10.137.0.17] (ip-86-49-228-220.bb.vodafone.cz. [86.49.228.220]) by smtp.gmail.com with ESMTPSA id i25-20020a170906851900b0094f1b8901e1sm4748515ejx.68.2023.04.23.13.43.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 23 Apr 2023 13:43:46 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------lSlMzTTPhKp49XGNJhdO3vBk" Message-ID: <24ef13a1-b798-0a5f-33c0-e6cf9e65492a@enterprisedb.com> Date: Sun, 23 Apr 2023 22:43:44 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: Re: Missing update of all_hasnulls in BRIN opclasses From: Tomas Vondra To: Alvaro Herrera Cc: Justin Pryzby , Matthias van de Meent , pgsql-hackers@lists.postgresql.org References: <20230303103219.ttf42jeozpkzewci@alvherre.pgsql> Content-Language: en-US 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. --------------lSlMzTTPhKp49XGNJhdO3vBk Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, here's an updated version of the patch, including a backport version. I ended up making the code yet a bit closer to master by introducing add_values_to_range(). The current pre-14 code has the loop adding data to the BRIN tuple in two places, but with the "fixed" logic handling NULLs and the empty_range flag the amount of duplicated code got too high, so this seem reasonable. Both cases have a patch extending pageinspect to show the new flag, but obviously we should commit that only in master. In backbranches it's meant only to make testing easier. I plan to do a bit more testing, I'd welcome some feedback - it's a long-standing bug, and it'd be good to finally get this fixed. I don't think the patch can be made any simpler. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------lSlMzTTPhKp49XGNJhdO3vBk Content-Type: text/x-patch; charset=UTF-8; name="0001-Fix-handling-of-NULLs-in-BRIN-indexes-20230423-11-13.patch" Content-Disposition: attachment; filename*0="0001-Fix-handling-of-NULLs-in-BRIN-indexes-20230423-11-13.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0MjYwM2UzMmJkMGFkNDU2YTUzYTk2YWMyZDA1Y2U3MTRmOTdlMWJhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCAyMyBBcHIgMjAyMyAxOToyNjoxOCArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMS8yXSBGaXggaGFuZGxpbmcgb2YgTlVMTHMgaW4gQlJJTiBpbmRleGVz CgpCUklOIGluZGV4ZXMgZGlkIG5vdCBwcm9wZXJseSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHN1 bW1hcmllcyBmb3IgZW1wdHkKKG5vIHJvd3MpIGFuZCBhbGwtTlVMTCByYW5nZXMuIEFsbCBz dW1tYXJpZXMgd2VyZSBpbml0aWFsaXplZCB3aXRoCmFsbG51bGxzPXRydWUsIGFuZCB0aGUg b3BjbGFzc2VzIHNpbXBseSByZXNldCBhbGxudWxscyB0byBmYWxzZSB3aGVuCnByb2Nlc3Np bmcgdGhlIGZpcnN0IG5vbi1OVUxMIHZhbHVlLiBUaGlzIGhvd2V2ZXIgZmFpbHMgaWYgdGhl IHJhbmdlCnN0YXJ0cyB3aXRoIGEgTlVMTCB2YWx1ZSAob3IgYSBzZXF1ZW5jZSBvZiBOVUxM IHZhbHVlcyksIGluIHdoaWNoIGNhc2UKd2UgZm9yZ2V0IHRoZSByYW5nZSBjb250YWlucyBO VUxMIHZhbHVlcy4KClRoaXMgaGFwcGVucyBiZWNhdXNlIHRoZSBhbGxudWxscyBmbGFnIGlz IHVzZWQgZm9yIHR3byBzZXBhcmF0ZQpwdXJwb3NlcyAtIHRvIG1hcmsgZW1wdHkgcmFuZ2Vz IChub3QgcmVwcmVzZW50aW5nIGFueSByb3dzIHlldCkgYW5kCnJhbmdlcyBjb250YWluaW5n IG9ubHkgTlVMTCB2YWx1ZXMuCgpPcGNsYXNzZXMgZG9uJ3Qga25vdyB3aGljaCBvZiB0aGVz ZSBjYXNlcyBpdCBpcywgYW5kIHNvIGRvbid0IGtub3cKd2hldGhlciB0byBzZXQgaGFzbnVs bHM9dHJ1ZS4gU2V0dGluZyBoYXNudWxscz10cnVlIGluIGJvdGggY2FzZXMgd291bGQKbWFr ZSBpdCBjb3JyZWN0LCBidXQgaXQgd291bGQgYWxzbyBtYWtlIEJSSU4gaW5kZXhlcyB1c2Vs ZXNzIGZvciBxdWVyaWVzCndpdGggSVMgTlVMTCBjbGF1c2VzIC0gYWxsIHJhbmdlcyBzdGFy dCBlbXB0eSAoYW5kIHRodXMgYWxsbnVsbHM9dHJ1ZSksCnNvIGFsbCByYW5nZXMgd291bGQg ZW5kIHVwIHdpdGggZWl0aGVyIGFsbG51bGxzPXRydWUgb3IgaGFzbnVsbHM9dHJ1ZS4KClRo ZSBzZXZlcml0eSBvZiB0aGUgaXNzdWUgaXMgc29tZXdoYXQgcmVkdWNlZCBieSB0aGUgZmFj dCB0aGF0IGl0IG9ubHkKaGFwcGVucyB3aGVuIGFkZGluZyB2YWx1ZXMgdG8gYW4gZXhpc3Rp bmcgc3VtbWFyeSB3aXRoIGFsbG51bGxzPXRydWUsCm5vdCB3aGVuIHRoZSBzdW1tYXJpemF0 aW9uIGlzIHByb2Nlc3NpbmcgdmFsdWVzIGluIGJ1bGsgKGUuZy4gZHVyaW5nCkNSRUFURSBJ TkRFWCBvciBhdXRvbWF0aWMgc3VtbWFyaXphdGlvbikuIEluIHRoaXMgY2FzZSB0aGUgZmxh Z3Mgd2VyZQp1cGRhdGVkIGluIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHdheSwgbm90IGZvcmdl dHRpbmcgdGhlIE5VTEwgdmFsdWVzLgoKVGhlIGJlc3Qgc29sdXRpb24gd291bGQgYmUgdG8g aW50cm9kdWNlIGEgbmV3IGZsYWcgbWFya2luZyBpbmRleCB0dXBsZXMKcmVwcmVzZW50aW5n IHJhbmdlcyB3aXRoIG5vIHJvd3MsIGJ1dCB0aGF0IHdvdWxkIGJyZWFrIG9uLWRpc2sgZm9y bWF0CmFuZC9vciBBQkksIGRlcGVuZGluZyBvbiB3aGVyZSB3ZSBwdXQgdGhlIGZsYWcuIENv bnNpZGVyaW5nIHdlIG5lZWQgdG8KYmFja3BhdGNoIHRoaXMsIHRoYXQncyBub3QgYWNjZXB0 YWJsZS4KClNvIGluc3RlYWQgd2UgdXNlIGFuICJpbXBvc3NpYmxlIiBjb21iaW5hdGlvbiBv ZiBib3RoIGZsYWdzIChhbGxudWxscwphbmQgaGFzbnVsbHMpIHNldCB0byB0cnVlLCB0byBt YXJrICJlbXB0eSIgcmFuZ2VzIHdpdGggbm8gcm93cy4gSW4KcHJpbmNpcGxlICJlbXB0eSIg aXMgYSBmZWF0dXJlIG9mIHRoZSB3aG9sZSBpbmRleCB0dXBsZSwgd2hpY2ggbWF5CmNvbnRh aW4gbXVsdGlwbGUgc3VtbWFyaWVzIGluIGEgbXVsdGktY29sdW1uIGluZGV4LCBidXQgdGhp cyBpcyB3aGVyZQp0aGUgZmxhZ3MgYXJlLCB1bmZvcnR1bmF0ZWx5LgoKV2UgY291bGQgYWxz byBza2lwIHN0b3JpbmcgaW5kZXggdHVwbGVzIGZvciBlbXB0eSBzdW1tYXJpZXMsIGJ1dCB0 aGVuCndlJ2QgaGF2ZSB0byBhbHdheXMgcHJvY2VzcyBzdWNoIHJhbmdlcyAtIGV2ZW4gaWYg dGhlcmUgYXJlIG5vIHJvd3MgaW4KbGFyZ2UgcGFydHMgb2YgdGhlIHRhYmxlIChlLmcuIGFm dGVyIGEgYnVsayBERUxFVEUpLCBpdCB3b3VsZCBzdGlsbApyZXF1aXJlIHJlYWRpbmcgdGhl IHBhZ2VzIGV0Yy4gU28gd2Ugc3RvcmUgdGhlbSwgYnV0IGlnbm9yZSB0aGVtIHdoZW4KYnVp bGRpbmcgdGhlIGJpdG1hcC4KCkJhY2twYXRjaCB0byAxMS4gVGhlIGlzc3VlIGV4aXN0cyBz aW5jZSBCUklOIGluZGV4ZXMgd2VyZSBpbnRyb2R1Y2VkIGluCjkuNSwgYnV0IG9sZGVyIHJl bGVhc2VzIGFyZSBhbHJlYWR5IEVPTC4KCkJhY2twYXRjaC10aHJvdWdoOiAxMQpSZXZpZXdl ZC1ieTogSnVzdGluIFByeXpieSwgTWF0dGhpYXMgdmFuIGRlIE1lZW50CkRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vNDAyNDMwZTQtN2Q5ZC02Y2YxLTA5ZWYtNDY0ZDgwYWZm ZjNiQGVudGVycHJpc2VkYi5jb20KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu LmMgICAgICAgICAgICAgICAgfCAyMjYgKysrKysrKysrKysrKystLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluX3R1cGxlLmMgICAgICAgICAgfCAgMTUgKy0KIHNyYy9pbmNs dWRlL2FjY2Vzcy9icmluX3R1cGxlLmggICAgICAgICAgICAgICB8ICAgNiArLQogLi4uc3Vt bWFyaXphdGlvbi1hbmQtaW5wcm9ncmVzcy1pbnNlcnRpb24ub3V0IHwgICA4ICstCiAuLi51 bW1hcml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLnNwZWMgfCAgIDEgKwogNSBm aWxlcyBjaGFuZ2VkLCAyMDEgaW5zZXJ0aW9ucygrKSwgNTUgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2JyaW4vYnJpbi5jCmluZGV4IDBiZWNmZGUxMTMzLi5mOTlhOWJhNWNmOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW4uYwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgInN0 b3JhZ2UvZnJlZXNwYWNlLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAi dXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2luY2x1ZGUg InV0aWxzL2luZGV4X3NlbGZ1bmNzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIK ICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKQEAgLTc3LDcgKzc4LDggQEAgc3RhdGljIHZvaWQg Zm9ybV9hbmRfaW5zZXJ0X3R1cGxlKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSk7CiBzdGF0aWMg dm9pZCB1bmlvbl90dXBsZXMoQnJpbkRlc2MgKmJkZXNjLCBCcmluTWVtVHVwbGUgKmEsCiAJ CQkJCQkgQnJpblR1cGxlICpiKTsKIHN0YXRpYyB2b2lkIGJyaW5fdmFjdXVtX3NjYW4oUmVs YXRpb24gaWR4cmVsLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSk7Ci0KK3N0YXRp YyBib29sIGFkZF92YWx1ZXNfdG9fcmFuZ2UoUmVsYXRpb24gaWR4UmVsLCBCcmluRGVzYyAq YmRlc2MsCisJCQkJCQkJCUJyaW5NZW1UdXBsZSAqZHR1cCwgRGF0dW0gKnZhbHVlcywgYm9v bCAqbnVsbHMpOwogCiAvKgogICogQlJJTiBoYW5kbGVyIGZ1bmN0aW9uOiByZXR1cm4gSW5k ZXhBbVJvdXRpbmUgd2l0aCBhY2Nlc3MgbWV0aG9kIHBhcmFtZXRlcnMKQEAgLTE3MywxMSAr MTc1LDEwIEBAIGJyaW5pbnNlcnQoUmVsYXRpb24gaWR4UmVsLCBEYXR1bSAqdmFsdWVzLCBi b29sICpudWxscywKIAogCWZvciAoOzspCiAJewotCQlib29sCQluZWVkX2luc2VydCA9IGZh bHNlOworCQlib29sCQluZWVkX2luc2VydDsKIAkJT2Zmc2V0TnVtYmVyIG9mZjsKIAkJQnJp blR1cGxlICAqYnJ0dXA7CiAJCUJyaW5NZW1UdXBsZSAqZHR1cDsKLQkJaW50CQkJa2V5bm87 CiAKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIApAQCAtMjQxLDMxICsyNDIsNyBAQCBi cmluaW5zZXJ0KFJlbGF0aW9uIGlkeFJlbCwgRGF0dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMs CiAKIAkJZHR1cCA9IGJyaW5fZGVmb3JtX3R1cGxlKGJkZXNjLCBicnR1cCwgTlVMTCk7CiAK LQkJLyoKLQkJICogQ29tcGFyZSB0aGUga2V5IHZhbHVlcyBvZiB0aGUgbmV3IHR1cGxlIHRv IHRoZSBzdG9yZWQgaW5kZXggdmFsdWVzOwotCQkgKiBvdXIgZGVmb3JtZWQgdHVwbGUgd2ls bCBnZXQgdXBkYXRlZCBpZiB0aGUgbmV3IHR1cGxlIGRvZXNuJ3QgZml0Ci0JCSAqIHRoZSBv cmlnaW5hbCByYW5nZSAobm90ZSB0aGlzIG1lYW5zIHdlIGNhbid0IGJyZWFrIG91dCBvZiB0 aGUgbG9vcAotCQkgKiBlYXJseSkuIE1ha2UgYSBub3RlIG9mIHdoZXRoZXIgdGhpcyBoYXBw ZW5zLCBzbyB0aGF0IHdlIGtub3cgdG8KLQkJICogaW5zZXJ0IHRoZSBtb2RpZmllZCB0dXBs ZSBsYXRlci4KLQkJICovCi0JCWZvciAoa2V5bm8gPSAwOyBrZXlubyA8IGJkZXNjLT5iZF90 dXBkZXNjLT5uYXR0czsga2V5bm8rKykKLQkJewotCQkJRGF0dW0JCXJlc3VsdDsKLQkJCUJy aW5WYWx1ZXMgKmJ2YWw7Ci0JCQlGbWdySW5mbyAgICphZGRWYWx1ZTsKLQotCQkJYnZhbCA9 ICZkdHVwLT5idF9jb2x1bW5zW2tleW5vXTsKLQkJCWFkZFZhbHVlID0gaW5kZXhfZ2V0cHJv Y2luZm8oaWR4UmVsLCBrZXlubyArIDEsCi0JCQkJCQkJCQkJIEJSSU5fUFJPQ05VTV9BRERW QUxVRSk7Ci0JCQlyZXN1bHQgPSBGdW5jdGlvbkNhbGw0Q29sbChhZGRWYWx1ZSwKLQkJCQkJ CQkJCSAgIGlkeFJlbC0+cmRfaW5kY29sbGF0aW9uW2tleW5vXSwKLQkJCQkJCQkJCSAgIFBv aW50ZXJHZXREYXR1bShiZGVzYyksCi0JCQkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oYnZh bCksCi0JCQkJCQkJCQkgICB2YWx1ZXNba2V5bm9dLAotCQkJCQkJCQkJICAgbnVsbHNba2V5 bm9dKTsKLQkJCS8qIGlmIHRoYXQgcmV0dXJuZWQgdHJ1ZSwgd2UgbmVlZCB0byBpbnNlcnQg dGhlIHVwZGF0ZWQgdHVwbGUgKi8KLQkJCW5lZWRfaW5zZXJ0IHw9IERhdHVtR2V0Qm9vbChy ZXN1bHQpOwotCQl9CisJCW5lZWRfaW5zZXJ0ID0gYWRkX3ZhbHVlc190b19yYW5nZShpZHhS ZWwsIGJkZXNjLCBkdHVwLCB2YWx1ZXMsIG51bGxzKTsKIAogCQlpZiAoIW5lZWRfaW5zZXJ0 KQogCQl7CkBAIC01MDgsNiArNDg1LDE3IEBAIGJyaW5nZXRiaXRtYXAoSW5kZXhTY2FuRGVz YyBzY2FuLCBUSURCaXRtYXAgKnRibSkKIAkJCQkJCQkJCSAgIEN1cnJlbnRNZW1vcnlDb250 ZXh0KTsKIAkJCQkJfQogCisJCQkJCS8qCisJCQkJCSAqIElmIHRoZSBCUklOIHR1cGxlIGlu ZGljYXRlcyB0aGF0IHRoaXMgcmFuZ2UgaXMgZW1wdHksCisJCQkJCSAqIHdlIGNhbiBza2lw IGl0OiB0aGVyZSdzIG5vdGhpbmcgdG8gbWF0Y2guICBXZSBkb24ndAorCQkJCQkgKiBuZWVk IHRvIGV4YW1pbmUgdGhlIG5leHQgY29sdW1ucy4KKwkJCQkJICovCisJCQkJCWlmIChkdHVw LT5idF9lbXB0eV9yYW5nZSkKKwkJCQkJeworCQkJCQkJYWRkcmFuZ2UgPSBmYWxzZTsKKwkJ CQkJCWJyZWFrOworCQkJCQl9CisKIAkJCQkJLyoKIAkJCQkJICogQ2hlY2sgd2hldGhlciB0 aGUgc2NhbiBrZXkgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBwYWdlCiAJCQkJCSAqIHJhbmdl IHZhbHVlczsgaWYgc28sIGhhdmUgdGhlIHBhZ2VzIGluIHRoZSByYW5nZSBhZGRlZApAQCAt NjExLDcgKzU5OSw2IEBAIGJyaW5idWlsZENhbGxiYWNrKFJlbGF0aW9uIGluZGV4LAogewog CUJyaW5CdWlsZFN0YXRlICpzdGF0ZSA9IChCcmluQnVpbGRTdGF0ZSAqKSBicnN0YXRlOwog CUJsb2NrTnVtYmVyIHRoaXNibG9jazsKLQlpbnQJCQlpOwogCiAJdGhpc2Jsb2NrID0gSXRl bVBvaW50ZXJHZXRCbG9ja051bWJlcih0aWQpOwogCkBAIC02NDAsMjUgKzYyNyw4IEBAIGJy aW5idWlsZENhbGxiYWNrKFJlbGF0aW9uIGluZGV4LAogCX0KIAogCS8qIEFjY3VtdWxhdGUg dGhlIGN1cnJlbnQgdHVwbGUgaW50byB0aGUgcnVubmluZyBzdGF0ZSAqLwotCWZvciAoaSA9 IDA7IGkgPCBzdGF0ZS0+YnNfYmRlc2MtPmJkX3R1cGRlc2MtPm5hdHRzOyBpKyspCi0Jewot CQlGbWdySW5mbyAgICphZGRWYWx1ZTsKLQkJQnJpblZhbHVlcyAqY29sOwotCQlGb3JtX3Bn X2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cihzdGF0ZS0+YnNfYmRlc2MtPmJkX3R1 cGRlc2MsIGkpOwotCi0JCWNvbCA9ICZzdGF0ZS0+YnNfZHR1cGxlLT5idF9jb2x1bW5zW2ld OwotCQlhZGRWYWx1ZSA9IGluZGV4X2dldHByb2NpbmZvKGluZGV4LCBpICsgMSwKLQkJCQkJ CQkJCSBCUklOX1BST0NOVU1fQUREVkFMVUUpOwotCi0JCS8qCi0JCSAqIFVwZGF0ZSBkdHVw bGUgc3RhdGUsIGlmIGFuZCBhcyBuZWNlc3NhcnkuCi0JCSAqLwotCQlGdW5jdGlvbkNhbGw0 Q29sbChhZGRWYWx1ZSwKLQkJCQkJCSAgYXR0ci0+YXR0Y29sbGF0aW9uLAotCQkJCQkJICBQ b2ludGVyR2V0RGF0dW0oc3RhdGUtPmJzX2JkZXNjKSwKLQkJCQkJCSAgUG9pbnRlckdldERh dHVtKGNvbCksCi0JCQkJCQkgIHZhbHVlc1tpXSwgaXNudWxsW2ldKTsKLQl9CisJKHZvaWQp IGFkZF92YWx1ZXNfdG9fcmFuZ2UoaW5kZXgsIHN0YXRlLT5ic19iZGVzYywgc3RhdGUtPmJz X2R0dXBsZSwKKwkJCQkJCQkgICB2YWx1ZXMsIGlzbnVsbCk7CiB9CiAKIC8qCkBAIC0xNDQ4 LDYgKzE0MTgsOCBAQCBmb3JtX2FuZF9pbnNlcnRfdHVwbGUoQnJpbkJ1aWxkU3RhdGUgKnN0 YXRlKQogLyoKICAqIEdpdmVuIHR3byBkZWZvcm1lZCB0dXBsZXMsIGFkanVzdCB0aGUgZmly c3Qgb25lIHNvIHRoYXQgaXQncyBjb25zaXN0ZW50CiAgKiB3aXRoIHRoZSBzdW1tYXJ5IHZh bHVlcyBpbiBib3RoLgorICoKKyAqIFhYWCBJJ20gbm90IHN1cmUgd2UgY2FuIGFjdHVhbGx5 IGdldCBlbXB0eSAiYiIuCiAgKi8KIHN0YXRpYyB2b2lkCiB1bmlvbl90dXBsZXMoQnJpbkRl c2MgKmJkZXNjLCBCcmluTWVtVHVwbGUgKmEsIEJyaW5UdXBsZSAqYikKQEAgLTE0NjUsNiAr MTQzNyw2NCBAQCB1bmlvbl90dXBsZXMoQnJpbkRlc2MgKmJkZXNjLCBCcmluTWVtVHVwbGUg KmEsIEJyaW5UdXBsZSAqYikKIAlkYiA9IGJyaW5fZGVmb3JtX3R1cGxlKGJkZXNjLCBiLCBO VUxMKTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAorCS8qCisJICogQ2hl Y2sgaWYgdGhlIHJhbmdlcyBhcmUgZW1wdHkuCisJICoKKwkgKiBJZiBhdCBsZWFzdCBvbmUg b2YgdGhlbSBpcyBlbXB0eSwgd2UgZG9uJ3QgbmVlZCB0byBjYWxsIHBlci1rZXkgdW5pb24K KwkgKiBmdW5jdGlvbnMgYXQgYWxsLiBJZiAiYiIgaXMgZW1wdHksIHdlIGp1c3QgdXNlICJh IiBhcyB0aGUgcmVzdWx0IChpdAorCSAqIG1pZ2h0IGJlIGVtcHR5IGZpbmUsIGJ1dCB0aGF0 J3MgZmluZSkuIElmICJhIiBpcyBlbXB0eSBidXQgImIiIGlzIG5vdCwKKwkgKiB3ZSB1c2Ug ImIiIGFzIHRoZSByZXN1bHQgKGJ1dCB3ZSBoYXZlIHRvIGNvcHkgdGhlIGRhdGEgaW50byAi YSIgZmlyc3QpLgorCSAqCisJICogT25seSB3aGVuIGJvdGggcmFuZ2VzIGFyZSBub24tZW1w dHksIHdlIGFjdHVhbGx5IGRvIHRoZSBwZXIta2V5IG1lcmdlLgorCSAqLworCisJLyogSWYg ImIiIGlzIGVtcHR5IC0gaWdub3JlIGl0IGFuZCBqdXN0IHVzZSAiYSIgKGV2ZW4gaWYgaXQn cyBlbXB0eSBldGMuKS4gKi8KKwlpZiAoZGItPmJ0X2VtcHR5X3JhbmdlKQorCXsKKwkJLyog c2tpcCB0aGUgcGVyLWtleSBtZXJnZSAqLworCQlNZW1vcnlDb250ZXh0RGVsZXRlKGN4dCk7 CisJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIE5vdyB3ZSBrbm93ICJiIiBpcyBub3QgZW1w dHkuIElmICJhIiBpcyBlbXB0eSwgdGhlbiAiYiIgaXMgdGhlIHJlc3VsdC4KKwkgKiBCdXQg d2UgbmVlZCB0byBjb3B5IHRoZSBkYXRhIGZyb20gImIiIHRvICJhIiBmaXJzdCwgYmVjYXVz ZSB0aGF0J3MgaG93CisJICogd2UgcGFzcyByZXN1bHQgb3V0LgorCSAqCisJICogV2UgaGF2 ZSB0byBjb3B5IGFsbCB0aGUgZ2xvYmFsL3Blci1rZXkgZmxhZ3MgZXRjLiB0b28uCisJICov CisJaWYgKGEtPmJ0X2VtcHR5X3JhbmdlKQorCXsKKwkJZm9yIChrZXlubyA9IDA7IGtleW5v IDwgYmRlc2MtPmJkX3R1cGRlc2MtPm5hdHRzOyBrZXlubysrKQorCQl7CisJCQlpbnQJCQlp OworCQkJQnJpblZhbHVlcyAqY29sX2EgPSAmYS0+YnRfY29sdW1uc1trZXlub107CisJCQlC cmluVmFsdWVzICpjb2xfYiA9ICZkYi0+YnRfY29sdW1uc1trZXlub107CisJCQlCcmluT3Bj SW5mbyAqb3BjaW5mbyA9IGJkZXNjLT5iZF9pbmZvW2tleW5vXTsKKworCQkJY29sX2EtPmJ2 X2FsbG51bGxzID0gY29sX2ItPmJ2X2FsbG51bGxzOworCQkJY29sX2EtPmJ2X2hhc251bGxz ID0gY29sX2ItPmJ2X2hhc251bGxzOworCisJCQkvKiBJZiAiYiIgaGFzIG5vIGRhdGEsIHdl J3JlIGRvbmUuICovCisJCQlpZiAoY29sX2ItPmJ2X2FsbG51bGxzKQorCQkJCWNvbnRpbnVl OworCisJCQlmb3IgKGkgPSAwOyBpIDwgb3BjaW5mby0+b2lfbnN0b3JlZDsgaSsrKQorCQkJ CWNvbF9hLT5idl92YWx1ZXNbaV0gPQorCQkJCQlkYXR1bUNvcHkoY29sX2ItPmJ2X3ZhbHVl c1tpXSwKKwkJCQkJCQkgIG9wY2luZm8tPm9pX3R5cGNhY2hlW2ldLT50eXBieXZhbCwKKwkJ CQkJCQkgIG9wY2luZm8tPm9pX3R5cGNhY2hlW2ldLT50eXBsZW4pOworCQl9CisKKwkJLyog ImEiIHN0YXJ0ZWQgZW1wdHksIGJ1dCAiYiIgd2FzIG5vdCBlbXB0eSwgc28gcmVtZW1iZXIg dGhhdCAqLworCQlhLT5idF9lbXB0eV9yYW5nZSA9IGZhbHNlOworCisJCS8qIHNraXAgdGhl IHBlci1rZXkgbWVyZ2UgKi8KKwkJTWVtb3J5Q29udGV4dERlbGV0ZShjeHQpOworCQlyZXR1 cm47CisJfQorCisJLyogTm93IHdlIGtub3cgbmVpdGhlciByYW5nZSBpcyBlbXB0eS4gKi8K IAlmb3IgKGtleW5vID0gMDsga2V5bm8gPCBiZGVzYy0+YmRfdHVwZGVzYy0+bmF0dHM7IGtl eW5vKyspCiAJewogCQlGbWdySW5mbyAgICp1bmlvbkZuOwpAQCAtMTUyMywzICsxNTUzLDEw MyBAQCBicmluX3ZhY3V1bV9zY2FuKFJlbGF0aW9uIGlkeHJlbCwgQnVmZmVyQWNjZXNzU3Ry YXRlZ3kgc3RyYXRlZ3kpCiAJICovCiAJRnJlZVNwYWNlTWFwVmFjdXVtKGlkeHJlbCk7CiB9 CisKK3N0YXRpYyBib29sCithZGRfdmFsdWVzX3RvX3JhbmdlKFJlbGF0aW9uIGlkeFJlbCwg QnJpbkRlc2MgKmJkZXNjLCBCcmluTWVtVHVwbGUgKmR0dXAsCisJCQkJCURhdHVtICp2YWx1 ZXMsIGJvb2wgKm51bGxzKQoreworCWludAkJCWtleW5vOworCisJLyogSWYgdGhlIHJhbmdl IHN0YXJ0cyBlbXB0eSwgd2UncmUgY2VydGFpbmx5IGdvaW5nIHRvIG1vZGlmeSBpdC4gKi8K Kwlib29sCQltb2RpZmllZCA9IGR0dXAtPmJ0X2VtcHR5X3JhbmdlOworCisJLyoKKwkgKiBD b21wYXJlIHRoZSBrZXkgdmFsdWVzIG9mIHRoZSBuZXcgdHVwbGUgdG8gdGhlIHN0b3JlZCBp bmRleCB2YWx1ZXM7CisJICogb3VyIGRlZm9ybWVkIHR1cGxlIHdpbGwgZ2V0IHVwZGF0ZWQg aWYgdGhlIG5ldyB0dXBsZSBkb2Vzbid0IGZpdAorCSAqIHRoZSBvcmlnaW5hbCByYW5nZSAo bm90ZSB0aGlzIG1lYW5zIHdlIGNhbid0IGJyZWFrIG91dCBvZiB0aGUgbG9vcAorCSAqIGVh cmx5KS4gTWFrZSBhIG5vdGUgb2Ygd2hldGhlciB0aGlzIGhhcHBlbnMsIHNvIHRoYXQgd2Ug a25vdyB0bworCSAqIGluc2VydCB0aGUgbW9kaWZpZWQgdHVwbGUgbGF0ZXIuCisJICovCisJ Zm9yIChrZXlubyA9IDA7IGtleW5vIDwgYmRlc2MtPmJkX3R1cGRlc2MtPm5hdHRzOyBrZXlu bysrKQorCXsKKwkJRGF0dW0JCXJlc3VsdDsKKwkJQnJpblZhbHVlcyAqYnZhbDsKKwkJRm1n ckluZm8gICAqYWRkVmFsdWU7CisJCWJvb2wJCWhhc19udWxsczsKKworCQlidmFsID0gJmR0 dXAtPmJ0X2NvbHVtbnNba2V5bm9dOworCisJCS8qCisJCSAqIERvZXMgdGhlIHJhbmdlIGhh dmUgYWN0dWFsIE5VTEwgdmFsdWVzPyBFaXRoZXIgb2YgdGhlIGZsYWdzIGNhbgorCQkgKiBi ZSBzZXQsIGJ1dCB3ZSBpZ25vcmUgdGhlIHN0YXRlIGJlZm9yZSBhZGRpbmcgZmlyc3Qgcm93 LgorCQkgKgorCQkgKiBXZSBoYXZlIHRvIHJlbWVtYmVyIHRoaXMsIGJlY2F1c2Ugd2UnbGwg bW9kaWZ5IHRoZSBmbGFncyBhbmQgd2UKKwkJICogbmVlZCB0byBrbm93IGlmIHRoZSByYW5n ZSBzdGFydGVkIGFzIGVtcHR5LgorCQkgKi8KKwkJaGFzX251bGxzID0gKCghZHR1cC0+YnRf ZW1wdHlfcmFuZ2UpICYmCisJCQkJCSAoYnZhbC0+YnZfaGFzbnVsbHMgfHwgYnZhbC0+YnZf YWxsbnVsbHMpKTsKKworCQkvKgorCQkgKiBJZiB0aGUgdmFsdWUgd2UncmUgYWRkaW5nIGlz IE5VTEwsIGhhbmRsZSBpdCBsb2NhbGx5LiBPdGhlcndpc2UKKwkJICogY2FsbCB0aGUgQlJJ Tl9QUk9DTlVNX0FERFZBTFVFIHByb2NlZHVyZS4KKwkJICovCisJCWlmIChudWxsc1trZXlu b10pCisJCXsKKwkJCS8qCisJCQkgKiBXZSBjYW4ndCBjaGVjayAiYnZfaGFzbnVsbHMiIGJl Y2F1c2UgdGhlbiB3ZSBtaWdodCBlbmQgdXAgd2l0aAorCQkJICogYm90aCBmbGFncyBzZXQg dG8gdHJ1ZSwgd2hpY2ggaXMgaW50ZXJwcmV0ZWQgYXMgZW1wdHkgcmFuZ2UuCisJCQkgKiBC dXQgdGhhdCdkIGJlIHdyb25nLCBiZWNhdXNlIHdlJ3ZlIGp1c3QgYWRkZWQgYSB2YWx1ZS4K KwkJCSAqCisJCQkgKiBTbyBlaXRoZXIgdGhlIHJhbmdlIGhhcyBhbGxudWxscz10cnVlLCBv ciB3ZSBoYXZlIHRvIHNldCB0aGUKKwkJCSAqIGhhc251bGxzIGZsYWcuIENoZWNrIGlmIHdl J3JlIGNoYW5naW5nIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUKKwkJCSAqIGlmIHRoZSBpbmRl eCB0dXBsZSB3YXMgbW9kaWZpZWQuCisJCQkgKi8KKwkJCWlmICghYnZhbC0+YnZfYWxsbnVs bHMpCisJCQl7CisJCQkJLyogQXJlIHdlIGNoYW5naW5nIHRoZSB0dXBsZT8gKi8KKwkJCQlt b2RpZmllZCB8PSAoIWJ2YWwtPmJ2X2hhc251bGxzKTsKKwkJCQlidmFsLT5idl9oYXNudWxs cyA9IHRydWU7CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQlhZGRWYWx1ZSA9IGluZGV4 X2dldHByb2NpbmZvKGlkeFJlbCwga2V5bm8gKyAxLAorCQkJCQkJCQkJCSBCUklOX1BST0NO VU1fQUREVkFMVUUpOworCQkJcmVzdWx0ID0gRnVuY3Rpb25DYWxsNENvbGwoYWRkVmFsdWUs CisJCQkJCQkJCQkgICBpZHhSZWwtPnJkX2luZGNvbGxhdGlvbltrZXlub10sCisJCQkJCQkJ CQkgICBQb2ludGVyR2V0RGF0dW0oYmRlc2MpLAorCQkJCQkJCQkJICAgUG9pbnRlckdldERh dHVtKGJ2YWwpLAorCQkJCQkJCQkJICAgdmFsdWVzW2tleW5vXSwKKwkJCQkJCQkJCSAgIG51 bGxzW2tleW5vXSk7CisJCQkvKiBpZiB0aGF0IHJldHVybmVkIHRydWUsIHdlIG5lZWQgdG8g aW5zZXJ0IHRoZSB1cGRhdGVkIHR1cGxlICovCisJCQltb2RpZmllZCB8PSBEYXR1bUdldEJv b2wocmVzdWx0KTsKKwkJfQorCisJCS8qCisJCSAqIElmIHRoZSByYW5nZSB3YXMgaGFkIGFj dHVhbCBOVUxMIHZhbHVlcyAoaS5lLiBkaWQgbm90IHN0YXJ0IGVtcHR5KSwKKwkJICogbWFr ZSBzdXJlIHdlIGRvbid0IGZvcmdldCBhYm91dCB0aGUgTlVMTCB2YWx1ZXMuIEVpdGhlciB0 aGUgYWxsbnVsbHMKKwkJICogZmxhZyBpcyBzdGlsbCBzZXQgdG8gdHJ1ZSwgb3IgKGlmIHRo ZSBvcGNsYXNzIGNsZWFyZWQgaXQpIHdlIG5lZWQgdG8KKwkJICogc2V0IGhhc251bGxzPXRy dWUuCisJCSAqCisJCSAqIFhYWCBUaGlzIGNhbiBvbmx5IGhhcHBlbiB3aGVuIHRoZSBvcGNs YXNzIG1vZGlmaWVkIHRoZSB0dXBsZSwgc28gdGhlCisJCSAqIG1vZGlmaWVkIGZsYWcgc2hv dWxkIGJlIHNldC4KKwkJICovCisJCWlmIChoYXNfbnVsbHMgJiYgIShidmFsLT5idl9oYXNu dWxscyB8fCBidmFsLT5idl9hbGxudWxscykpCisJCXsKKwkJCUFzc2VydChtb2RpZmllZCk7 CisJCQlidmFsLT5idl9oYXNudWxscyA9IHRydWU7CisJCX0KKwl9CisKKwkvKgorCSAqIEFm dGVyIHVwZGF0aW5nIHN1bW1hcmllcyBmb3IgYWxsIHRoZSBrZXlzLCBtYXJrIGl0IGFzIG5v dCBlbXB0eS4KKwkgKgorCSAqIElmIHdlJ3JlIGFjdHVhbGx5IGNoYW5naW5nIHRoZSBmbGFn IHZhbHVlIChpLmUuIHR1cGxlIHN0YXJ0ZWQgYXMKKwkgKiBlbXB0eSksIHdlIHNob3VsZCBo YXZlIG1vZGlmaWVkIHRoZSB0dXBsZS4gU28gd2Ugc2hvdWxkIG5vdCBzZWUKKwkgKiBlbXB0 eSByYW5nZSB0aGF0IHdhcyBub3QgbW9kaWZpZWQuCisJICovCisJQXNzZXJ0KCFkdHVwLT5i dF9lbXB0eV9yYW5nZSB8fCBtb2RpZmllZCk7CisJZHR1cC0+YnRfZW1wdHlfcmFuZ2UgPSBm YWxzZTsKKworCXJldHVybiBtb2RpZmllZDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9icmluL2JyaW5fdHVwbGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2Jy aW5fdHVwbGUuYwppbmRleCBiM2I0NTNhZWQxMi4uZjk4Nzc5ODBmNGQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW5fdHVwbGUuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvYnJpbi9icmluX3R1cGxlLmMKQEAgLTM0OSw2ICszNDksOSBAQCBicmluX2Zv cm1fdHVwbGUoQnJpbkRlc2MgKmJyZGVzYywgQmxvY2tOdW1iZXIgYmxrbm8sIEJyaW5NZW1U dXBsZSAqdHVwbGUsCiAJaWYgKHR1cGxlLT5idF9wbGFjZWhvbGRlcikKIAkJcmV0dHVwbGUt PmJ0X2luZm8gfD0gQlJJTl9QTEFDRUhPTERFUl9NQVNLOwogCisJaWYgKHR1cGxlLT5idF9l bXB0eV9yYW5nZSkKKwkJcmV0dHVwbGUtPmJ0X2luZm8gfD0gQlJJTl9FTVBUWV9SQU5HRV9N QVNLOworCiAJKnNpemUgPSBsZW47CiAJcmV0dXJuIHJldHR1cGxlOwogfQpAQCAtMzc2LDcg KzM3OSw3IEBAIGJyaW5fZm9ybV9wbGFjZWhvbGRlcl90dXBsZShCcmluRGVzYyAqYnJkZXNj LCBCbG9ja051bWJlciBibGtubywgU2l6ZSAqc2l6ZSkKIAlyZXR0dXBsZSA9IHBhbGxvYzAo bGVuKTsKIAlyZXR0dXBsZS0+YnRfYmxrbm8gPSBibGtubzsKIAlyZXR0dXBsZS0+YnRfaW5m byA9IGhvZmY7Ci0JcmV0dHVwbGUtPmJ0X2luZm8gfD0gQlJJTl9OVUxMU19NQVNLIHwgQlJJ Tl9QTEFDRUhPTERFUl9NQVNLOworCXJldHR1cGxlLT5idF9pbmZvIHw9IEJSSU5fTlVMTFNf TUFTSyB8IEJSSU5fUExBQ0VIT0xERVJfTUFTSyB8IEJSSU5fRU1QVFlfUkFOR0VfTUFTSzsK IAogCWJpdFAgPSAoKGJpdHM4ICopICgoY2hhciAqKSByZXR0dXBsZSArIFNpemVPZkJyaW5U dXBsZSkpIC0gMTsKIAliaXRtYXNrID0gSElHSEJJVDsKQEAgLTQ2Niw2ICs0NjksOCBAQCBi cmluX25ld19tZW10dXBsZShCcmluRGVzYyAqYnJkZXNjKQogCWR0dXAtPmJ0X2FsbG51bGxz ID0gcGFsbG9jKHNpemVvZihib29sKSAqIGJyZGVzYy0+YmRfdHVwZGVzYy0+bmF0dHMpOwog CWR0dXAtPmJ0X2hhc251bGxzID0gcGFsbG9jKHNpemVvZihib29sKSAqIGJyZGVzYy0+YmRf dHVwZGVzYy0+bmF0dHMpOwogCisJZHR1cC0+YnRfZW1wdHlfcmFuZ2UgPSB0cnVlOworCiAJ ZHR1cC0+YnRfY29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5 Q29udGV4dCwKIAkJCQkJCQkJCQkJICJicmluIGR0dXBsZSIsCiAJCQkJCQkJCQkJCSBBTExP Q1NFVF9ERUZBVUxUX1NJWkVTKTsKQEAgLTQ5OSw2ICs1MDQsOSBAQCBicmluX21lbXR1cGxl X2luaXRpYWxpemUoQnJpbk1lbVR1cGxlICpkdHVwbGUsIEJyaW5EZXNjICpicmRlc2MpCiAJ CWN1cnJkYXR1bSArPSBzaXplb2YoRGF0dW0pICogYnJkZXNjLT5iZF9pbmZvW2ldLT5vaV9u c3RvcmVkOwogCX0KIAorCS8qIEZJWE1FIFNob3VsZG4ndCB0aGlzIHJlc2V0IGJ0X3BsYWNl aG9sZGVyIHRvbz8gKi8KKwlkdHVwbGUtPmJ0X2VtcHR5X3JhbmdlID0gdHJ1ZTsKKwogCXJl dHVybiBkdHVwbGU7CiB9CiAKQEAgLTUzMiw2ICs1NDAsMTEgQEAgYnJpbl9kZWZvcm1fdHVw bGUoQnJpbkRlc2MgKmJyZGVzYywgQnJpblR1cGxlICp0dXBsZSwgQnJpbk1lbVR1cGxlICpk TWVtdHVwbGUpCiAKIAlpZiAoQnJpblR1cGxlSXNQbGFjZWhvbGRlcih0dXBsZSkpCiAJCWR0 dXAtPmJ0X3BsYWNlaG9sZGVyID0gdHJ1ZTsKKworCS8qIHJhbmdlcyBzdGFydCBhcyBlbXB0 eSwgZGVwZW5kcyBvbiB0aGUgQnJpblR1cGxlICovCisJaWYgKCFCcmluVHVwbGVJc0VtcHR5 UmFuZ2UodHVwbGUpKQorCQlkdHVwLT5idF9lbXB0eV9yYW5nZSA9IGZhbHNlOworCiAJZHR1 cC0+YnRfYmxrbm8gPSB0dXBsZS0+YnRfYmxrbm87CiAKIAl2YWx1ZXMgPSBkdHVwLT5idF92 YWx1ZXM7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl90dXBsZS5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5fdHVwbGUuaAppbmRleCBhOWNjYzM5OTViNC4uNTI4 MDg3MjcwN2EgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX3R1cGxlLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5fdHVwbGUuaApAQCAtMzYsNiArMzYsNyBA QCB0eXBlZGVmIHN0cnVjdCBCcmluVmFsdWVzCiB0eXBlZGVmIHN0cnVjdCBCcmluTWVtVHVw bGUKIHsKIAlib29sCQlidF9wbGFjZWhvbGRlcjsgLyogdGhpcyBpcyBhIHBsYWNlaG9sZGVy IHR1cGxlICovCisJYm9vbAkJYnRfZW1wdHlfcmFuZ2U7CS8qIHJhbmdlIHJlcHJlc2VudHMg bm8gdHVwbGVzICovCiAJQmxvY2tOdW1iZXIgYnRfYmxrbm87CQkvKiBoZWFwIGJsa25vIHRo YXQgdGhlIHR1cGxlIGlzIGZvciAqLwogCU1lbW9yeUNvbnRleHQgYnRfY29udGV4dDsJLyog bWVtY3h0IGhvbGRpbmcgdGhlIGJ0X2NvbHVtbnMgdmFsdWVzICovCiAJLyogb3V0cHV0IGFy cmF5cyBmb3IgYnJpbl9kZWZvcm1fdHVwbGU6ICovCkBAIC02MSw3ICs2Miw3IEBAIHR5cGVk ZWYgc3RydWN0IEJyaW5UdXBsZQogCSAqCiAJICogN3RoIChoaWdoKSBiaXQ6IGhhcyBudWxs cwogCSAqIDZ0aCBiaXQ6IGlzIHBsYWNlaG9sZGVyIHR1cGxlCi0JICogNXRoIGJpdDogdW51 c2VkCisJICogNXRoIGJpdDogcmFuZ2UgaXMgZW1wdHkKIAkgKiA0LTAgYml0OiBvZmZzZXQg b2YgZGF0YQogCSAqIC0tLS0tLS0tLS0tLS0tLQogCSAqLwpAQCAtNzQsMTMgKzc1LDE0IEBA IHR5cGVkZWYgc3RydWN0IEJyaW5UdXBsZQogICogYnRfaW5mbyBtYW5pcHVsYXRpb24gbWFj cm9zCiAgKi8KICNkZWZpbmUgQlJJTl9PRkZTRVRfTUFTSwkJMHgxRgotLyogYml0IDB4MjAg aXMgbm90IHVzZWQgYXQgcHJlc2VudCAqLworI2RlZmluZSBCUklOX0VNUFRZX1JBTkdFX01B U0sJMHgyMAogI2RlZmluZSBCUklOX1BMQUNFSE9MREVSX01BU0sJMHg0MAogI2RlZmluZSBC UklOX05VTExTX01BU0sJCQkweDgwCiAKICNkZWZpbmUgQnJpblR1cGxlRGF0YU9mZnNldCh0 dXApCSgoU2l6ZSkgKCgoQnJpblR1cGxlICopICh0dXApKS0+YnRfaW5mbyAmIEJSSU5fT0ZG U0VUX01BU0spKQogI2RlZmluZSBCcmluVHVwbGVIYXNOdWxscyh0dXApCSgoKCgoQnJpblR1 cGxlICopICh0dXApKS0+YnRfaW5mbyAmIEJSSU5fTlVMTFNfTUFTSykpICE9IDApCiAjZGVm aW5lIEJyaW5UdXBsZUlzUGxhY2Vob2xkZXIodHVwKSAoKCgoKEJyaW5UdXBsZSAqKSAodHVw KSktPmJ0X2luZm8gJiBCUklOX1BMQUNFSE9MREVSX01BU0spKSAhPSAwKQorI2RlZmluZSBC cmluVHVwbGVJc0VtcHR5UmFuZ2UodHVwKSAoKCgoKEJyaW5UdXBsZSAqKSAodHVwKSktPmJ0 X2luZm8gJiBCUklOX0VNUFRZX1JBTkdFX01BU0spKSAhPSAwKQogCiAKIGV4dGVybiBCcmlu VHVwbGUgKmJyaW5fZm9ybV90dXBsZShCcmluRGVzYyAqYnJkZXNjLCBCbG9ja051bWJlciBi bGtubywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvYnJpbi9leHBlY3RlZC9zdW1t YXJpemF0aW9uLWFuZC1pbnByb2dyZXNzLWluc2VydGlvbi5vdXQgYi9zcmMvdGVzdC9tb2R1 bGVzL2JyaW4vZXhwZWN0ZWQvc3VtbWFyaXphdGlvbi1hbmQtaW5wcm9ncmVzcy1pbnNlcnRp b24ub3V0CmluZGV4IDJhNDc1NWQwOTk4Li41ODRhYzI2MDJmNyAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy9icmluL2V4cGVjdGVkL3N1bW1hcml6YXRpb24tYW5kLWlucHJvZ3Jl c3MtaW5zZXJ0aW9uLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2JyaW4vZXhwZWN0ZWQv c3VtbWFyaXphdGlvbi1hbmQtaW5wcm9ncmVzcy1pbnNlcnRpb24ub3V0CkBAIC00LDcgKzQs NyBAQCBzdGFydGluZyBwZXJtdXRhdGlvbjogczJjaGVjayBzMWIgczJiIHMxaSBzMnN1bW0g czFjIHMyYyBzMmNoZWNrCiBzdGVwIHMyY2hlY2s6IFNFTEVDVCAqIEZST00gYnJpbl9wYWdl X2l0ZW1zKGdldF9yYXdfcGFnZSgnYnJpbmlkeCcsIDIpLCAnYnJpbmlkeCc6OnJlZ2NsYXNz KTsKIGl0ZW1vZmZzZXR8YmxrbnVtfGF0dG51bXxhbGxudWxsc3xoYXNudWxsc3xwbGFjZWhv bGRlcnx2YWx1ZSAgIAogLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAg ICAgICB8ZiAgICAgICB8ZiAgICAgICAgICB8ezEgLi4gMX0KKyAgICAgICAgIDF8ICAgICAw fCAgICAgMXxmICAgICAgIHx0ICAgICAgIHxmICAgICAgICAgIHx7MSAuLiAxfQogKDEgcm93 KQogCiBzdGVwIHMxYjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVBRDsK QEAgLTI2LDcgKzI2LDcgQEAgc3RlcCBzMmM6IENPTU1JVDsKIHN0ZXAgczJjaGVjazogU0VM RUNUICogRlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdicmluaWR4JywgMiks ICdicmluaWR4Jzo6cmVnY2xhc3MpOwogaXRlbW9mZnNldHxibGtudW18YXR0bnVtfGFsbG51 bGxzfGhhc251bGxzfHBsYWNlaG9sZGVyfHZhbHVlICAgICAgCiAtLS0tLS0tLS0tKy0tLS0t LSstLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KLSAg ICAgICAgIDF8ICAgICAwfCAgICAgMXxmICAgICAgIHxmICAgICAgIHxmICAgICAgICAgIHx7 MSAuLiAxfSAgIAorICAgICAgICAgMXwgICAgIDB8ICAgICAxfGYgICAgICAgfHQgICAgICAg fGYgICAgICAgICAgfHsxIC4uIDF9ICAgCiAgICAgICAgICAyfCAgICAgMXwgICAgIDF8ZiAg ICAgICB8ZiAgICAgICB8ZiAgICAgICAgICB8ezEgLi4gMTAwMH0KICgyIHJvd3MpCiAKQEAg LTM1LDcgKzM1LDcgQEAgc3RhcnRpbmcgcGVybXV0YXRpb246IHMyY2hlY2sgczFiIHMxaSBz MnZhY3V1bSBzMWMgczJjaGVjawogc3RlcCBzMmNoZWNrOiBTRUxFQ1QgKiBGUk9NIGJyaW5f cGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5pZHgnLCAyKSwgJ2JyaW5pZHgnOjpyZWdj bGFzcyk7CiBpdGVtb2Zmc2V0fGJsa251bXxhdHRudW18YWxsbnVsbHN8aGFzbnVsbHN8cGxh Y2Vob2xkZXJ8dmFsdWUgICAKIC0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAgICAgMXwgICAgIDB8ICAgICAx fGYgICAgICAgfGYgICAgICAgfGYgICAgICAgICAgfHsxIC4uIDF9CisgICAgICAgICAxfCAg ICAgMHwgICAgIDF8ZiAgICAgICB8dCAgICAgICB8ZiAgICAgICAgICB8ezEgLi4gMX0KICgx IHJvdykKIAogc3RlcCBzMWI6IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJF QUQ7CkBAIC00NSw3ICs0NSw3IEBAIHN0ZXAgczFjOiBDT01NSVQ7CiBzdGVwIHMyY2hlY2s6 IFNFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZSgnYnJpbmlkeCcs IDIpLCAnYnJpbmlkeCc6OnJlZ2NsYXNzKTsKIGl0ZW1vZmZzZXR8YmxrbnVtfGF0dG51bXxh bGxudWxsc3xoYXNudWxsc3xwbGFjZWhvbGRlcnx2YWx1ZSAgICAgIAogLS0tLS0tLS0tLSst LS0tLS0rLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ci0gICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8ZiAgICAgICB8ZiAgICAgICAg ICB8ezEgLi4gMX0gICAKKyAgICAgICAgIDF8ICAgICAwfCAgICAgMXxmICAgICAgIHx0ICAg ICAgIHxmICAgICAgICAgIHx7MSAuLiAxfSAgIAogICAgICAgICAgMnwgICAgIDF8ICAgICAx fGYgICAgICAgfGYgICAgICAgfGYgICAgICAgICAgfHsxIC4uIDEwMDB9CiAoMiByb3dzKQog CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2JyaW4vc3BlY3Mvc3VtbWFyaXphdGlv bi1hbmQtaW5wcm9ncmVzcy1pbnNlcnRpb24uc3BlYyBiL3NyYy90ZXN0L21vZHVsZXMvYnJp bi9zcGVjcy9zdW1tYXJpemF0aW9uLWFuZC1pbnByb2dyZXNzLWluc2VydGlvbi5zcGVjCmlu ZGV4IDE5YWMxOGEyZTg4Li4xOGJhOTJiN2JhMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9k dWxlcy9icmluL3NwZWNzL3N1bW1hcml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9u LnNwZWMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9icmluL3NwZWNzL3N1bW1hcml6YXRpb24t YW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLnNwZWMKQEAgLTksNiArOSw3IEBAIHNldHVwCiAg ICAgKSBXSVRIIChmaWxsZmFjdG9yPTEwKTsKICAgICBDUkVBVEUgSU5ERVggYnJpbmlkeCBP TiBicmluX2lzbyBVU0lORyBicmluICh2YWx1ZSkgV0lUSCAocGFnZXNfcGVyX3JhbmdlPTEp OwogICAgIC0tIHRoaXMgZmlsbHMgdGhlIGZpcnN0IHBhZ2UKKyAgICBJTlNFUlQgSU5UTyBi cmluX2lzbyBWQUxVRVMgKE5VTEwpOwogICAgIERPICQkCiAgICAgREVDTEFSRSBjdXJ0aWQg dGlkOwogICAgIEJFR0lOCi0tIAoyLjQwLjAKCg== --------------lSlMzTTPhKp49XGNJhdO3vBk Content-Type: text/x-patch; charset=UTF-8; name="0002-pageinspect-tweak-20230423-11-13.patch" Content-Disposition: attachment; filename="0002-pageinspect-tweak-20230423-11-13.patch" Content-Transfer-Encoding: base64 RnJvbSAxNTc5MjNmYjNkNTUwOTVkOGQ0NWZiMWU3ZmU1NmE5OTJkNjY3YjMyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCAyMyBBcHIgMjAyMyAyMjoxOTowNSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMi8yXSBwYWdlaW5zcGVjdCB0d2VhawoKLS0tCiBjb250cmliL3BhZ2Vp bnNwZWN0L2JyaW5mdW5jcy5jICAgICAgICAgICAgICAgfCAxMCArKysrKystLS0tCiBjb250 cmliL3BhZ2VpbnNwZWN0L3BhZ2VpbnNwZWN0LS0xLjctLTEuOC5zcWwgfCAyMCArKysrKysr KysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDQgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9icmluZnVuY3Mu YyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvYnJpbmZ1bmNzLmMKaW5kZXggMDRhOTBjNDc4MmQu LjhkYjZmMWJjYzdkIDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0L2JyaW5mdW5j cy5jCisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvYnJpbmZ1bmNzLmMKQEAgLTIyNyw4ICsy MjcsOCBAQCBicmluX3BhZ2VfaXRlbXMoUEdfRlVOQ1RJT05fQVJHUykKIAlkdHVwID0gTlVM TDsKIAlmb3IgKDs7KQogCXsKLQkJRGF0dW0JCXZhbHVlc1s3XTsKLQkJYm9vbAkJbnVsbHNb N107CisJCURhdHVtCQl2YWx1ZXNbOF07CisJCWJvb2wJCW51bGxzWzhdOwogCiAJCS8qCiAJ CSAqIFRoaXMgbG9vcCBpcyBjYWxsZWQgb25jZSBmb3IgZXZlcnkgYXR0cmlidXRlIG9mIGV2 ZXJ5IHR1cGxlIGluIHRoZQpAQCAtMjY3LDYgKzI2Nyw3IEBAIGJyaW5fcGFnZV9pdGVtcyhQ R19GVU5DVElPTl9BUkdTKQogCQkJbnVsbHNbNF0gPSB0cnVlOwogCQkJbnVsbHNbNV0gPSB0 cnVlOwogCQkJbnVsbHNbNl0gPSB0cnVlOworCQkJbnVsbHNbN10gPSB0cnVlOwogCQl9CiAJ CWVsc2UKIAkJewpAQCAtMjc4LDYgKzI3OSw3IEBAIGJyaW5fcGFnZV9pdGVtcyhQR19GVU5D VElPTl9BUkdTKQogCQkJdmFsdWVzWzNdID0gQm9vbEdldERhdHVtKGR0dXAtPmJ0X2NvbHVt bnNbYXR0XS5idl9hbGxudWxscyk7CiAJCQl2YWx1ZXNbNF0gPSBCb29sR2V0RGF0dW0oZHR1 cC0+YnRfY29sdW1uc1thdHRdLmJ2X2hhc251bGxzKTsKIAkJCXZhbHVlc1s1XSA9IEJvb2xH ZXREYXR1bShkdHVwLT5idF9wbGFjZWhvbGRlcik7CisJCQl2YWx1ZXNbNl0gPSBCb29sR2V0 RGF0dW0oZHR1cC0+YnRfZW1wdHlfcmFuZ2UpOwogCQkJaWYgKCFkdHVwLT5idF9jb2x1bW5z W2F0dF0uYnZfYWxsbnVsbHMpCiAJCQl7CiAJCQkJQnJpblZhbHVlcyAqYnZhbHVlcyA9ICZk dHVwLT5idF9jb2x1bW5zW2F0dF07CkBAIC0zMDMsMTIgKzMwNSwxMiBAQCBicmluX3BhZ2Vf aXRlbXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQl9CiAJCQkJYXBwZW5kU3RyaW5nSW5mb0No YXIoJnMsICd9Jyk7CiAKLQkJCQl2YWx1ZXNbNl0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKHMu ZGF0YSk7CisJCQkJdmFsdWVzWzddID0gQ1N0cmluZ0dldFRleHREYXR1bShzLmRhdGEpOwog CQkJCXBmcmVlKHMuZGF0YSk7CiAJCQl9CiAJCQllbHNlCiAJCQl7Ci0JCQkJbnVsbHNbNl0g PSB0cnVlOworCQkJCW51bGxzWzddID0gdHJ1ZTsKIAkJCX0KIAkJfQogCmRpZmYgLS1naXQg YS9jb250cmliL3BhZ2VpbnNwZWN0L3BhZ2VpbnNwZWN0LS0xLjctLTEuOC5zcWwgYi9jb250 cmliL3BhZ2VpbnNwZWN0L3BhZ2VpbnNwZWN0LS0xLjctLTEuOC5zcWwKaW5kZXggNDUwMzFh MDI2YTYuLmVkZmI1ODBhNGVjIDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0L3Bh Z2VpbnNwZWN0LS0xLjctLTEuOC5zcWwKKysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9wYWdl aW5zcGVjdC0tMS43LS0xLjguc3FsCkBAIC02NywzICs2NywyMyBAQCBDUkVBVEUgRlVOQ1RJ T04gYnRfcGFnZV9pdGVtcyhJTiBwYWdlIGJ5dGVhLAogUkVUVVJOUyBTRVRPRiByZWNvcmQK IEFTICdNT0RVTEVfUEFUSE5BTUUnLCAnYnRfcGFnZV9pdGVtc19ieXRlYScKIExBTkdVQUdF IEMgU1RSSUNUIFBBUkFMTEVMIFNBRkU7CisKKy0tCistLSBhZGQgaW5mb3JtYXRpb24gYWJv dXQgQlJJTiBlbXB0eSByYW5nZXMKKy0tCitEUk9QIEZVTkNUSU9OIGJyaW5fcGFnZV9pdGVt cyhJTiBwYWdlIGJ5dGVhLCBJTiBpbmRleF9vaWQgcmVnY2xhc3MpOworLS0KKy0tIGJyaW5f cGFnZV9pdGVtcygpCistLQorQ1JFQVRFIEZVTkNUSU9OIGJyaW5fcGFnZV9pdGVtcyhJTiBw YWdlIGJ5dGVhLCBJTiBpbmRleF9vaWQgcmVnY2xhc3MsCisJT1VUIGl0ZW1vZmZzZXQgaW50 LAorCU9VVCBibGtudW0gaW50LAorCU9VVCBhdHRudW0gaW50LAorCU9VVCBhbGxudWxscyBi b29sLAorCU9VVCBoYXNudWxscyBib29sLAorCU9VVCBwbGFjZWhvbGRlciBib29sLAorCU9V VCBlbXB0eSBib29sLAorCU9VVCB2YWx1ZSB0ZXh0KQorUkVUVVJOUyBTRVRPRiByZWNvcmQK K0FTICdNT0RVTEVfUEFUSE5BTUUnLCAnYnJpbl9wYWdlX2l0ZW1zJworTEFOR1VBR0UgQyBT VFJJQ1QgUEFSQUxMRUwgU0FGRTsKLS0gCjIuNDAuMAoK --------------lSlMzTTPhKp49XGNJhdO3vBk Content-Type: text/x-patch; charset=UTF-8; name="0001-Fix-handling-of-NULLs-in-BRIN-indexe-20230423-master.patch" Content-Disposition: attachment; filename*0="0001-Fix-handling-of-NULLs-in-BRIN-indexe-20230423-master.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3NWNhNzQyMDgyY2Q1MGNlZjQ2MDllY2YwMDIxZTdiZjY5ZjM0ZGU2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogU3VuLCA4IEphbiAyMDIzIDE2OjQzOjA2ICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAxLzJdIEZpeCBoYW5kbGluZyBvZiBOVUxMcyBpbiBCUklOIGluZGV4ZXMK CkJSSU4gaW5kZXhlcyBkaWQgbm90IHByb3Blcmx5IGRpc3Rpbmd1aXNoIGJldHdlZW4gc3Vt bWFyaWVzIGZvciBlbXB0eQoobm8gcm93cykgYW5kIGFsbC1OVUxMIHJhbmdlcy4gQWxsIHN1 bW1hcmllcyB3ZXJlIGluaXRpYWxpemVkIHdpdGgKYWxsbnVsbHM9dHJ1ZSwgYW5kIHRoZSBv cGNsYXNzZXMgc2ltcGx5IHJlc2V0IGFsbG51bGxzIHRvIGZhbHNlIHdoZW4KcHJvY2Vzc2lu ZyB0aGUgZmlyc3Qgbm9uLU5VTEwgdmFsdWUuIFRoaXMgaG93ZXZlciBmYWlscyBpZiB0aGUg cmFuZ2UKc3RhcnRzIHdpdGggYSBOVUxMIHZhbHVlIChvciBhIHNlcXVlbmNlIG9mIE5VTEwg dmFsdWVzKSwgaW4gd2hpY2ggY2FzZQp3ZSBmb3JnZXQgdGhlIHJhbmdlIGNvbnRhaW5zIE5V TEwgdmFsdWVzLgoKVGhpcyBoYXBwZW5zIGJlY2F1c2UgdGhlIGFsbG51bGxzIGZsYWcgaXMg dXNlZCBmb3IgdHdvIHNlcGFyYXRlCnB1cnBvc2VzIC0gdG8gbWFyayBlbXB0eSByYW5nZXMg KG5vdCByZXByZXNlbnRpbmcgYW55IHJvd3MgeWV0KSBhbmQKcmFuZ2VzIGNvbnRhaW5pbmcg b25seSBOVUxMIHZhbHVlcy4KCk9wY2xhc3NlcyBkb24ndCBrbm93IHdoaWNoIG9mIHRoZXNl IGNhc2VzIGl0IGlzLCBhbmQgc28gZG9uJ3Qga25vdwp3aGV0aGVyIHRvIHNldCBoYXNudWxs cz10cnVlLiBTZXR0aW5nIGhhc251bGxzPXRydWUgaW4gYm90aCBjYXNlcyB3b3VsZAptYWtl IGl0IGNvcnJlY3QsIGJ1dCBpdCB3b3VsZCBhbHNvIG1ha2UgQlJJTiBpbmRleGVzIHVzZWxl c3MgZm9yIHF1ZXJpZXMKd2l0aCBJUyBOVUxMIGNsYXVzZXMgLSBhbGwgcmFuZ2VzIHN0YXJ0 IGVtcHR5IChhbmQgdGh1cyBhbGxudWxscz10cnVlKSwKc28gYWxsIHJhbmdlcyB3b3VsZCBl bmQgdXAgd2l0aCBlaXRoZXIgYWxsbnVsbHM9dHJ1ZSBvciBoYXNudWxscz10cnVlLgoKVGhl IHNldmVyaXR5IG9mIHRoZSBpc3N1ZSBpcyBzb21ld2hhdCByZWR1Y2VkIGJ5IHRoZSBmYWN0 IHRoYXQgaXQgb25seQpoYXBwZW5zIHdoZW4gYWRkaW5nIHZhbHVlcyB0byBhbiBleGlzdGlu ZyBzdW1tYXJ5IHdpdGggYWxsbnVsbHM9dHJ1ZSwKbm90IHdoZW4gdGhlIHN1bW1hcml6YXRp b24gaXMgcHJvY2Vzc2luZyB2YWx1ZXMgaW4gYnVsayAoZS5nLiBkdXJpbmcKQ1JFQVRFIElO REVYIG9yIGF1dG9tYXRpYyBzdW1tYXJpemF0aW9uKS4gSW4gdGhpcyBjYXNlIHRoZSBmbGFn cyB3ZXJlCnVwZGF0ZWQgaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgd2F5LCBub3QgZm9yZ2V0 dGluZyB0aGUgTlVMTCB2YWx1ZXMuCgpUaGlzIGludHJvZHVjZXMgYSBuZXcgYSBuZXcgZmxh ZyBtYXJraW5nIGluZGV4IHR1cGxlcyByZXByZXNlbnRpbmcKcmFuZ2VzIHdpdGggbm8gcm93 cy4gTHVja2lseSB3ZSBoYXZlIGFuIHVudXNlZCB0dXBsZSBpbiB0aGUgQlJJTiB0dXBsZQpo ZWFkZXIgdGhhdCB3ZSBjYW4gdXNlIGZvciB0aGlzLgoKV2Ugc3RpbGwgc3RvcmUgaW5kZXgg dHVwbGVzIGZvciBlbXB0eSByYW5nZXMsIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlJ2Qgbm90CmJl IGFibGUgdG8gc2F5IHdoZXRoZXIgYSByYW5nZSBpcyBlbXB0eSBvciBub3QgeWV0IHN1bW1h cml6ZWQsIGFuZCB3ZSdkCmhhdmUgdG8gcHJvY2VzcyB0aGVtIGZvciBhbnkgcXVlcnkuCgpC YWNrcGF0Y2ggdG8gMTEuIFRoZSBpc3N1ZSBleGlzdHMgc2luY2UgQlJJTiBpbmRleGVzIHdl cmUgaW50cm9kdWNlZCBpbgo5LjUsIGJ1dCBvbGRlciByZWxlYXNlcyBhcmUgYWxyZWFkeSBF T0wuCgpCYWNrcGF0Y2gtdGhyb3VnaDogMTEKUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJh LCBKdXN0aW4gUHJ5emJ5LCBNYXR0aGlhcyB2YW4gZGUgTWVlbnQKRGlzY3Vzc2lvbjogaHR0 cHM6Ly9wb3N0Z3IuZXMvbS80MDI0MzBlNC03ZDlkLTZjZjEtMDllZi00NjRkODBhZmZmM2JA ZW50ZXJwcmlzZWRiLmNvbQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyAg ICAgICAgICAgICAgICB8IDExNSArKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9icmluL2JyaW5fdHVwbGUuYyAgICAgICAgICB8ICAxNSArKy0KIHNyYy9pbmNsdWRl L2FjY2Vzcy9icmluX3R1cGxlLmggICAgICAgICAgICAgICB8ICAgNiArLQogLi4uc3VtbWFy aXphdGlvbi1hbmQtaW5wcm9ncmVzcy1pbnNlcnRpb24ub3V0IHwgICA4ICstCiAuLi51bW1h cml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLnNwZWMgfCAgIDEgKwogNSBmaWxl cyBjaGFuZ2VkLCAxMzcgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMKaW5kZXggNDFiZjk1MGE0YWYuLjJlMjBmMzE4ZTk1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2JyaW4vYnJpbi5jCkBAIC01OTIsNiArNTkyLDE3IEBAIGJyaW5nZXRiaXRtYXAo SW5kZXhTY2FuRGVzYyBzY2FuLCBUSURCaXRtYXAgKnRibSkKIAogCQkJCQlidmFsID0gJmR0 dXAtPmJ0X2NvbHVtbnNbYXR0bm8gLSAxXTsKIAorCQkJCQkvKgorCQkJCQkgKiBJZiB0aGUg QlJJTiB0dXBsZSBpbmRpY2F0ZXMgdGhhdCB0aGlzIHJhbmdlIGlzIGVtcHR5LAorCQkJCQkg KiB3ZSBjYW4gc2tpcCBpdDogdGhlcmUncyBub3RoaW5nIHRvIG1hdGNoLiAgV2UgZG9uJ3QK KwkJCQkJICogbmVlZCB0byBleGFtaW5lIHRoZSBuZXh0IGNvbHVtbnMuCisJCQkJCSAqLwor CQkJCQlpZiAoZHR1cC0+YnRfZW1wdHlfcmFuZ2UpCisJCQkJCXsKKwkJCQkJCWFkZHJhbmdl ID0gZmFsc2U7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCiAJCQkJCS8qCiAJCQkJCSAqIEZp cnN0IGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgSVMgW05PVF0gTlVMTCBzY2FuIGtleXMsCiAJ CQkJCSAqIGFuZCBpZiB3ZSdyZSB2aW9sYXRpbmcgdGhlbS4gSW4gdGhhdCBjYXNlIHdlIGNh bgpAQCAtMTU4OSw2ICsxNjAwLDggQEAgZm9ybV9hbmRfaW5zZXJ0X3R1cGxlKEJyaW5CdWls ZFN0YXRlICpzdGF0ZSkKIC8qCiAgKiBHaXZlbiB0d28gZGVmb3JtZWQgdHVwbGVzLCBhZGp1 c3QgdGhlIGZpcnN0IG9uZSBzbyB0aGF0IGl0J3MgY29uc2lzdGVudAogICogd2l0aCB0aGUg c3VtbWFyeSB2YWx1ZXMgaW4gYm90aC4KKyAqCisgKiBYWFggSSdtIG5vdCBzdXJlIHdlIGNh biBhY3R1YWxseSBnZXQgZW1wdHkgImIiLgogICovCiBzdGF0aWMgdm9pZAogdW5pb25fdHVw bGVzKEJyaW5EZXNjICpiZGVzYywgQnJpbk1lbVR1cGxlICphLCBCcmluVHVwbGUgKmIpCkBA IC0xNjA2LDYgKzE2MTksNjQgQEAgdW5pb25fdHVwbGVzKEJyaW5EZXNjICpiZGVzYywgQnJp bk1lbVR1cGxlICphLCBCcmluVHVwbGUgKmIpCiAJZGIgPSBicmluX2RlZm9ybV90dXBsZShi ZGVzYywgYiwgTlVMTCk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiAKKwkv KgorCSAqIENoZWNrIGlmIHRoZSByYW5nZXMgYXJlIGVtcHR5LgorCSAqCisJICogSWYgYXQg bGVhc3Qgb25lIG9mIHRoZW0gaXMgZW1wdHksIHdlIGRvbid0IG5lZWQgdG8gY2FsbCBwZXIt a2V5IHVuaW9uCisJICogZnVuY3Rpb25zIGF0IGFsbC4gSWYgImIiIGlzIGVtcHR5LCB3ZSBq dXN0IHVzZSAiYSIgYXMgdGhlIHJlc3VsdCAoaXQKKwkgKiBtaWdodCBiZSBlbXB0eSBmaW5l LCBidXQgdGhhdCdzIGZpbmUpLiBJZiAiYSIgaXMgZW1wdHkgYnV0ICJiIiBpcyBub3QsCisJ ICogd2UgdXNlICJiIiBhcyB0aGUgcmVzdWx0IChidXQgd2UgaGF2ZSB0byBjb3B5IHRoZSBk YXRhIGludG8gImEiIGZpcnN0KS4KKwkgKgorCSAqIE9ubHkgd2hlbiBib3RoIHJhbmdlcyBh cmUgbm9uLWVtcHR5LCB3ZSBhY3R1YWxseSBkbyB0aGUgcGVyLWtleSBtZXJnZS4KKwkgKi8K KworCS8qIElmICJiIiBpcyBlbXB0eSAtIGlnbm9yZSBpdCBhbmQganVzdCB1c2UgImEiIChl dmVuIGlmIGl0J3MgZW1wdHkgZXRjLikuICovCisJaWYgKGRiLT5idF9lbXB0eV9yYW5nZSkK Kwl7CisJCS8qIHNraXAgdGhlIHBlci1rZXkgbWVyZ2UgKi8KKwkJTWVtb3J5Q29udGV4dERl bGV0ZShjeHQpOworCQlyZXR1cm47CisJfQorCisJLyoKKwkgKiBOb3cgd2Uga25vdyAiYiIg aXMgbm90IGVtcHR5LiBJZiAiYSIgaXMgZW1wdHksIHRoZW4gImIiIGlzIHRoZSByZXN1bHQu CisJICogQnV0IHdlIG5lZWQgdG8gY29weSB0aGUgZGF0YSBmcm9tICJiIiB0byAiYSIgZmly c3QsIGJlY2F1c2UgdGhhdCdzIGhvdworCSAqIHdlIHBhc3MgcmVzdWx0IG91dC4KKwkgKgor CSAqIFdlIGhhdmUgdG8gY29weSBhbGwgdGhlIGdsb2JhbC9wZXIta2V5IGZsYWdzIGV0Yy4g dG9vLgorCSAqLworCWlmIChhLT5idF9lbXB0eV9yYW5nZSkKKwl7CisJCWZvciAoa2V5bm8g PSAwOyBrZXlubyA8IGJkZXNjLT5iZF90dXBkZXNjLT5uYXR0czsga2V5bm8rKykKKwkJewor CQkJaW50CQkJaTsKKwkJCUJyaW5WYWx1ZXMgKmNvbF9hID0gJmEtPmJ0X2NvbHVtbnNba2V5 bm9dOworCQkJQnJpblZhbHVlcyAqY29sX2IgPSAmZGItPmJ0X2NvbHVtbnNba2V5bm9dOwor CQkJQnJpbk9wY0luZm8gKm9wY2luZm8gPSBiZGVzYy0+YmRfaW5mb1trZXlub107CisKKwkJ CWNvbF9hLT5idl9hbGxudWxscyA9IGNvbF9iLT5idl9hbGxudWxsczsKKwkJCWNvbF9hLT5i dl9oYXNudWxscyA9IGNvbF9iLT5idl9oYXNudWxsczsKKworCQkJLyogSWYgImIiIGhhcyBu byBkYXRhLCB3ZSdyZSBkb25lLiAqLworCQkJaWYgKGNvbF9iLT5idl9hbGxudWxscykKKwkJ CQljb250aW51ZTsKKworCQkJZm9yIChpID0gMDsgaSA8IG9wY2luZm8tPm9pX25zdG9yZWQ7 IGkrKykKKwkJCQljb2xfYS0+YnZfdmFsdWVzW2ldID0KKwkJCQkJZGF0dW1Db3B5KGNvbF9i LT5idl92YWx1ZXNbaV0sCisJCQkJCQkJICBvcGNpbmZvLT5vaV90eXBjYWNoZVtpXS0+dHlw Ynl2YWwsCisJCQkJCQkJICBvcGNpbmZvLT5vaV90eXBjYWNoZVtpXS0+dHlwbGVuKTsKKwkJ fQorCisJCS8qICJhIiBzdGFydGVkIGVtcHR5LCBidXQgImIiIHdhcyBub3QgZW1wdHksIHNv IHJlbWVtYmVyIHRoYXQgKi8KKwkJYS0+YnRfZW1wdHlfcmFuZ2UgPSBmYWxzZTsKKworCQkv KiBza2lwIHRoZSBwZXIta2V5IG1lcmdlICovCisJCU1lbW9yeUNvbnRleHREZWxldGUoY3h0 KTsKKwkJcmV0dXJuOworCX0KKworCS8qIE5vdyB3ZSBrbm93IG5laXRoZXIgcmFuZ2UgaXMg ZW1wdHkuICovCiAJZm9yIChrZXlubyA9IDA7IGtleW5vIDwgYmRlc2MtPmJkX3R1cGRlc2Mt Pm5hdHRzOyBrZXlubysrKQogCXsKIAkJRm1nckluZm8gICAqdW5pb25GbjsKQEAgLTE3MDMs NyArMTc3NCw5IEBAIGFkZF92YWx1ZXNfdG9fcmFuZ2UoUmVsYXRpb24gaWR4UmVsLCBCcmlu RGVzYyAqYmRlc2MsIEJyaW5NZW1UdXBsZSAqZHR1cCwKIAkJCQkJRGF0dW0gKnZhbHVlcywg Ym9vbCAqbnVsbHMpCiB7CiAJaW50CQkJa2V5bm87Ci0JYm9vbAkJbW9kaWZpZWQgPSBmYWxz ZTsKKworCS8qIElmIHRoZSByYW5nZSBzdGFydHMgZW1wdHksIHdlJ3JlIGNlcnRhaW5seSBn b2luZyB0byBtb2RpZnkgaXQuICovCisJYm9vbAkJbW9kaWZpZWQgPSBkdHVwLT5idF9lbXB0 eV9yYW5nZTsKIAogCS8qCiAJICogQ29tcGFyZSB0aGUga2V5IHZhbHVlcyBvZiB0aGUgbmV3 IHR1cGxlIHRvIHRoZSBzdG9yZWQgaW5kZXggdmFsdWVzOyBvdXIKQEAgLTE3MTcsOSArMTc5 MCwyNCBAQCBhZGRfdmFsdWVzX3RvX3JhbmdlKFJlbGF0aW9uIGlkeFJlbCwgQnJpbkRlc2Mg KmJkZXNjLCBCcmluTWVtVHVwbGUgKmR0dXAsCiAJCURhdHVtCQlyZXN1bHQ7CiAJCUJyaW5W YWx1ZXMgKmJ2YWw7CiAJCUZtZ3JJbmZvICAgKmFkZFZhbHVlOworCQlib29sCQloYXNfbnVs bHM7CiAKIAkJYnZhbCA9ICZkdHVwLT5idF9jb2x1bW5zW2tleW5vXTsKIAorCQkvKgorCQkg KiBEb2VzIHRoZSByYW5nZSBoYXZlIGFjdHVhbCBOVUxMIHZhbHVlcz8gRWl0aGVyIG9mIHRo ZSBmbGFncyBjYW4KKwkJICogYmUgc2V0LCBidXQgd2UgaWdub3JlIHRoZSBzdGF0ZSBiZWZv cmUgYWRkaW5nIGZpcnN0IHJvdy4KKwkJICoKKwkJICogV2UgaGF2ZSB0byByZW1lbWJlciB0 aGlzLCBiZWNhdXNlIHdlJ2xsIG1vZGlmeSB0aGUgZmxhZ3MgYW5kIHdlCisJCSAqIG5lZWQg dG8ga25vdyBpZiB0aGUgcmFuZ2Ugc3RhcnRlZCBhcyBlbXB0eS4KKwkJICovCisJCWhhc19u dWxscyA9ICgoIWR0dXAtPmJ0X2VtcHR5X3JhbmdlKSAmJgorCQkJCQkgKGJ2YWwtPmJ2X2hh c251bGxzIHx8IGJ2YWwtPmJ2X2FsbG51bGxzKSk7CisKKwkJLyoKKwkJICogSWYgdGhlIHZh bHVlIHdlJ3JlIGFkZGluZyBpcyBOVUxMLCBoYW5kbGUgaXQgbG9jYWxseS4gT3RoZXJ3aXNl CisJCSAqIGNhbGwgdGhlIEJSSU5fUFJPQ05VTV9BRERWQUxVRSBwcm9jZWR1cmUuCisJCSAq LwogCQlpZiAoYmRlc2MtPmJkX2luZm9ba2V5bm9dLT5vaV9yZWd1bGFyX251bGxzICYmIG51 bGxzW2tleW5vXSkKIAkJewogCQkJLyoKQEAgLTE3NDUsOCArMTgzMywzMyBAQCBhZGRfdmFs dWVzX3RvX3JhbmdlKFJlbGF0aW9uIGlkeFJlbCwgQnJpbkRlc2MgKmJkZXNjLCBCcmluTWVt VHVwbGUgKmR0dXAsCiAJCQkJCQkJCSAgIG51bGxzW2tleW5vXSk7CiAJCS8qIGlmIHRoYXQg cmV0dXJuZWQgdHJ1ZSwgd2UgbmVlZCB0byBpbnNlcnQgdGhlIHVwZGF0ZWQgdHVwbGUgKi8K IAkJbW9kaWZpZWQgfD0gRGF0dW1HZXRCb29sKHJlc3VsdCk7CisKKwkJLyoKKwkJICogSWYg dGhlIHJhbmdlIHdhcyBoYWQgYWN0dWFsIE5VTEwgdmFsdWVzIChpLmUuIGRpZCBub3Qgc3Rh cnQgZW1wdHkpLAorCQkgKiBtYWtlIHN1cmUgd2UgZG9uJ3QgZm9yZ2V0IGFib3V0IHRoZSBO VUxMIHZhbHVlcy4gRWl0aGVyIHRoZSBhbGxudWxscworCQkgKiBmbGFnIGlzIHN0aWxsIHNl dCB0byB0cnVlLCBvciAoaWYgdGhlIG9wY2xhc3MgY2xlYXJlZCBpdCkgd2UgbmVlZCB0bwor CQkgKiBzZXQgaGFzbnVsbHM9dHJ1ZS4KKwkJICoKKwkJICogWFhYIFRoaXMgY2FuIG9ubHkg aGFwcGVuIHdoZW4gdGhlIG9wY2xhc3MgbW9kaWZpZWQgdGhlIHR1cGxlLCBzbyB0aGUKKwkJ ICogbW9kaWZpZWQgZmxhZyBzaG91bGQgYmUgc2V0LgorCQkgKi8KKwkJaWYgKGhhc19udWxs cyAmJiAhKGJ2YWwtPmJ2X2hhc251bGxzIHx8IGJ2YWwtPmJ2X2FsbG51bGxzKSkKKwkJewor CQkJQXNzZXJ0KG1vZGlmaWVkKTsKKwkJCWJ2YWwtPmJ2X2hhc251bGxzID0gdHJ1ZTsKKwkJ fQogCX0KIAorCS8qCisJICogQWZ0ZXIgdXBkYXRpbmcgc3VtbWFyaWVzIGZvciBhbGwgdGhl IGtleXMsIG1hcmsgaXQgYXMgbm90IGVtcHR5LgorCSAqCisJICogSWYgd2UncmUgYWN0dWFs bHkgY2hhbmdpbmcgdGhlIGZsYWcgdmFsdWUgKGkuZS4gdHVwbGUgc3RhcnRlZCBhcyBlbXB0 eSksCisJICogd2Ugc2hvdWxkIGhhdmUgbW9kaWZpZWQgdGhlIHR1cGxlLiBTbyB3ZSBzaG91 bGQgbm90IHNlZSBlbXB0eSByYW5nZSB0aGF0CisJICogd2FzIG5vdCBtb2RpZmllZC4KKwkg Ki8KKwlBc3NlcnQoIWR0dXAtPmJ0X2VtcHR5X3JhbmdlIHx8IG1vZGlmaWVkKTsKKwlkdHVw LT5idF9lbXB0eV9yYW5nZSA9IGZhbHNlOworCiAJcmV0dXJuIG1vZGlmaWVkOwogfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3R1cGxlLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3R1cGxlLmMKaW5kZXggODRiNzlkYmZjMGQuLmI4 MTI0N2EyNjJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluX3R1 cGxlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbl90dXBsZS5jCkBAIC0z NzIsNiArMzcyLDkgQEAgYnJpbl9mb3JtX3R1cGxlKEJyaW5EZXNjICpicmRlc2MsIEJsb2Nr TnVtYmVyIGJsa25vLCBCcmluTWVtVHVwbGUgKnR1cGxlLAogCWlmICh0dXBsZS0+YnRfcGxh Y2Vob2xkZXIpCiAJCXJldHR1cGxlLT5idF9pbmZvIHw9IEJSSU5fUExBQ0VIT0xERVJfTUFT SzsKIAorCWlmICh0dXBsZS0+YnRfZW1wdHlfcmFuZ2UpCisJCXJldHR1cGxlLT5idF9pbmZv IHw9IEJSSU5fRU1QVFlfUkFOR0VfTUFTSzsKKwogCSpzaXplID0gbGVuOwogCXJldHVybiBy ZXR0dXBsZTsKIH0KQEAgLTM5OSw3ICs0MDIsNyBAQCBicmluX2Zvcm1fcGxhY2Vob2xkZXJf dHVwbGUoQnJpbkRlc2MgKmJyZGVzYywgQmxvY2tOdW1iZXIgYmxrbm8sIFNpemUgKnNpemUp CiAJcmV0dHVwbGUgPSBwYWxsb2MwKGxlbik7CiAJcmV0dHVwbGUtPmJ0X2Jsa25vID0gYmxr bm87CiAJcmV0dHVwbGUtPmJ0X2luZm8gPSBob2ZmOwotCXJldHR1cGxlLT5idF9pbmZvIHw9 IEJSSU5fTlVMTFNfTUFTSyB8IEJSSU5fUExBQ0VIT0xERVJfTUFTSzsKKwlyZXR0dXBsZS0+ YnRfaW5mbyB8PSBCUklOX05VTExTX01BU0sgfCBCUklOX1BMQUNFSE9MREVSX01BU0sgfCBC UklOX0VNUFRZX1JBTkdFX01BU0s7CiAKIAliaXRQID0gKChiaXRzOCAqKSAoKGNoYXIgKikg cmV0dHVwbGUgKyBTaXplT2ZCcmluVHVwbGUpKSAtIDE7CiAJYml0bWFzayA9IEhJR0hCSVQ7 CkBAIC00ODksNiArNDkyLDggQEAgYnJpbl9uZXdfbWVtdHVwbGUoQnJpbkRlc2MgKmJyZGVz YykKIAlkdHVwLT5idF9hbGxudWxscyA9IHBhbGxvYyhzaXplb2YoYm9vbCkgKiBicmRlc2Mt PmJkX3R1cGRlc2MtPm5hdHRzKTsKIAlkdHVwLT5idF9oYXNudWxscyA9IHBhbGxvYyhzaXpl b2YoYm9vbCkgKiBicmRlc2MtPmJkX3R1cGRlc2MtPm5hdHRzKTsKIAorCWR0dXAtPmJ0X2Vt cHR5X3JhbmdlID0gdHJ1ZTsKKwogCWR0dXAtPmJ0X2NvbnRleHQgPSBBbGxvY1NldENvbnRl eHRDcmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCiAJCQkJCQkJCQkJCSAiYnJpbiBkdHVw bGUiLAogCQkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CkBAIC01MjcsNiAr NTMyLDkgQEAgYnJpbl9tZW10dXBsZV9pbml0aWFsaXplKEJyaW5NZW1UdXBsZSAqZHR1cGxl LCBCcmluRGVzYyAqYnJkZXNjKQogCQljdXJyZGF0dW0gKz0gc2l6ZW9mKERhdHVtKSAqIGJy ZGVzYy0+YmRfaW5mb1tpXS0+b2lfbnN0b3JlZDsKIAl9CiAKKwkvKiBGSVhNRSBTaG91bGRu J3QgdGhpcyByZXNldCBidF9wbGFjZWhvbGRlciB0b28/ICovCisJZHR1cGxlLT5idF9lbXB0 eV9yYW5nZSA9IHRydWU7CisKIAlyZXR1cm4gZHR1cGxlOwogfQogCkBAIC01NjAsNiArNTY4 LDExIEBAIGJyaW5fZGVmb3JtX3R1cGxlKEJyaW5EZXNjICpicmRlc2MsIEJyaW5UdXBsZSAq dHVwbGUsIEJyaW5NZW1UdXBsZSAqZE1lbXR1cGxlKQogCiAJaWYgKEJyaW5UdXBsZUlzUGxh Y2Vob2xkZXIodHVwbGUpKQogCQlkdHVwLT5idF9wbGFjZWhvbGRlciA9IHRydWU7CisKKwkv KiByYW5nZXMgc3RhcnQgYXMgZW1wdHksIGRlcGVuZHMgb24gdGhlIEJyaW5UdXBsZSAqLwor CWlmICghQnJpblR1cGxlSXNFbXB0eVJhbmdlKHR1cGxlKSkKKwkJZHR1cC0+YnRfZW1wdHlf cmFuZ2UgPSBmYWxzZTsKKwogCWR0dXAtPmJ0X2Jsa25vID0gdHVwbGUtPmJ0X2Jsa25vOwog CiAJdmFsdWVzID0gZHR1cC0+YnRfdmFsdWVzOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL2JyaW5fdHVwbGUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX3R1cGxlLmgK aW5kZXggNzMyZjkxZWRmMTEuLmM1Njc0N2FjYTRhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvYnJpbl90dXBsZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX3R1 cGxlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQnJpblZhbHVlcwogdHlw ZWRlZiBzdHJ1Y3QgQnJpbk1lbVR1cGxlCiB7CiAJYm9vbAkJYnRfcGxhY2Vob2xkZXI7IC8q IHRoaXMgaXMgYSBwbGFjZWhvbGRlciB0dXBsZSAqLworCWJvb2wJCWJ0X2VtcHR5X3Jhbmdl OwkvKiByYW5nZSByZXByZXNlbnRzIG5vIHR1cGxlcyAqLwogCUJsb2NrTnVtYmVyIGJ0X2Js a25vOwkJLyogaGVhcCBibGtubyB0aGF0IHRoZSB0dXBsZSBpcyBmb3IgKi8KIAlNZW1vcnlD b250ZXh0IGJ0X2NvbnRleHQ7CS8qIG1lbWN4dCBob2xkaW5nIHRoZSBidF9jb2x1bW5zIHZh bHVlcyAqLwogCS8qIG91dHB1dCBhcnJheXMgZm9yIGJyaW5fZGVmb3JtX3R1cGxlOiAqLwpA QCAtNjksNyArNzAsNyBAQCB0eXBlZGVmIHN0cnVjdCBCcmluVHVwbGUKIAkgKgogCSAqIDd0 aCAoaGlnaCkgYml0OiBoYXMgbnVsbHMKIAkgKiA2dGggYml0OiBpcyBwbGFjZWhvbGRlciB0 dXBsZQotCSAqIDV0aCBiaXQ6IHVudXNlZAorCSAqIDV0aCBiaXQ6IHJhbmdlIGlzIGVtcHR5 CiAJICogNC0wIGJpdDogb2Zmc2V0IG9mIGRhdGEKIAkgKiAtLS0tLS0tLS0tLS0tLS0KIAkg Ki8KQEAgLTgyLDEzICs4MywxNCBAQCB0eXBlZGVmIHN0cnVjdCBCcmluVHVwbGUKICAqIGJ0 X2luZm8gbWFuaXB1bGF0aW9uIG1hY3JvcwogICovCiAjZGVmaW5lIEJSSU5fT0ZGU0VUX01B U0sJCTB4MUYKLS8qIGJpdCAweDIwIGlzIG5vdCB1c2VkIGF0IHByZXNlbnQgKi8KKyNkZWZp bmUgQlJJTl9FTVBUWV9SQU5HRV9NQVNLCTB4MjAKICNkZWZpbmUgQlJJTl9QTEFDRUhPTERF Ul9NQVNLCTB4NDAKICNkZWZpbmUgQlJJTl9OVUxMU19NQVNLCQkJMHg4MAogCiAjZGVmaW5l IEJyaW5UdXBsZURhdGFPZmZzZXQodHVwKQkoKFNpemUpICgoKEJyaW5UdXBsZSAqKSAodHVw KSktPmJ0X2luZm8gJiBCUklOX09GRlNFVF9NQVNLKSkKICNkZWZpbmUgQnJpblR1cGxlSGFz TnVsbHModHVwKQkoKCgoKEJyaW5UdXBsZSAqKSAodHVwKSktPmJ0X2luZm8gJiBCUklOX05V TExTX01BU0spKSAhPSAwKQogI2RlZmluZSBCcmluVHVwbGVJc1BsYWNlaG9sZGVyKHR1cCkg KCgoKChCcmluVHVwbGUgKikgKHR1cCkpLT5idF9pbmZvICYgQlJJTl9QTEFDRUhPTERFUl9N QVNLKSkgIT0gMCkKKyNkZWZpbmUgQnJpblR1cGxlSXNFbXB0eVJhbmdlKHR1cCkgKCgoKChC cmluVHVwbGUgKikgKHR1cCkpLT5idF9pbmZvICYgQlJJTl9FTVBUWV9SQU5HRV9NQVNLKSkg IT0gMCkKIAogCiBleHRlcm4gQnJpblR1cGxlICpicmluX2Zvcm1fdHVwbGUoQnJpbkRlc2Mg KmJyZGVzYywgQmxvY2tOdW1iZXIgYmxrbm8sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL2JyaW4vZXhwZWN0ZWQvc3VtbWFyaXphdGlvbi1hbmQtaW5wcm9ncmVzcy1pbnNlcnRp b24ub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9icmluL2V4cGVjdGVkL3N1bW1hcml6YXRpb24t YW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLm91dAppbmRleCAyYTQ3NTVkMDk5OC4uNTg0YWMy NjAyZjcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvYnJpbi9leHBlY3RlZC9zdW1t YXJpemF0aW9uLWFuZC1pbnByb2dyZXNzLWluc2VydGlvbi5vdXQKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy9icmluL2V4cGVjdGVkL3N1bW1hcml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5z ZXJ0aW9uLm91dApAQCAtNCw3ICs0LDcgQEAgc3RhcnRpbmcgcGVybXV0YXRpb246IHMyY2hl Y2sgczFiIHMyYiBzMWkgczJzdW1tIHMxYyBzMmMgczJjaGVjawogc3RlcCBzMmNoZWNrOiBT RUxFQ1QgKiBGUk9NIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5pZHgnLCAy KSwgJ2JyaW5pZHgnOjpyZWdjbGFzcyk7CiBpdGVtb2Zmc2V0fGJsa251bXxhdHRudW18YWxs bnVsbHN8aGFzbnVsbHN8cGxhY2Vob2xkZXJ8dmFsdWUgICAKIC0tLS0tLS0tLS0rLS0tLS0t Ky0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLQotICAgICAg ICAgMXwgICAgIDB8ICAgICAxfGYgICAgICAgfGYgICAgICAgfGYgICAgICAgICAgfHsxIC4u IDF9CisgICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8dCAgICAgICB8ZiAgICAg ICAgICB8ezEgLi4gMX0KICgxIHJvdykKIAogc3RlcCBzMWI6IEJFR0lOIElTT0xBVElPTiBM RVZFTCBSRVBFQVRBQkxFIFJFQUQ7CkBAIC0yNiw3ICsyNiw3IEBAIHN0ZXAgczJjOiBDT01N SVQ7CiBzdGVwIHMyY2hlY2s6IFNFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1zKGdldF9y YXdfcGFnZSgnYnJpbmlkeCcsIDIpLCAnYnJpbmlkeCc6OnJlZ2NsYXNzKTsKIGl0ZW1vZmZz ZXR8YmxrbnVtfGF0dG51bXxhbGxudWxsc3xoYXNudWxsc3xwbGFjZWhvbGRlcnx2YWx1ZSAg ICAgIAogLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tCi0gICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8 ZiAgICAgICB8ZiAgICAgICAgICB8ezEgLi4gMX0gICAKKyAgICAgICAgIDF8ICAgICAwfCAg ICAgMXxmICAgICAgIHx0ICAgICAgIHxmICAgICAgICAgIHx7MSAuLiAxfSAgIAogICAgICAg ICAgMnwgICAgIDF8ICAgICAxfGYgICAgICAgfGYgICAgICAgfGYgICAgICAgICAgfHsxIC4u IDEwMDB9CiAoMiByb3dzKQogCkBAIC0zNSw3ICszNSw3IEBAIHN0YXJ0aW5nIHBlcm11dGF0 aW9uOiBzMmNoZWNrIHMxYiBzMWkgczJ2YWN1dW0gczFjIHMyY2hlY2sKIHN0ZXAgczJjaGVj azogU0VMRUNUICogRlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdicmluaWR4 JywgMiksICdicmluaWR4Jzo6cmVnY2xhc3MpOwogaXRlbW9mZnNldHxibGtudW18YXR0bnVt fGFsbG51bGxzfGhhc251bGxzfHBsYWNlaG9sZGVyfHZhbHVlICAgCiAtLS0tLS0tLS0tKy0t LS0tLSstLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0KLSAg ICAgICAgIDF8ICAgICAwfCAgICAgMXxmICAgICAgIHxmICAgICAgIHxmICAgICAgICAgIHx7 MSAuLiAxfQorICAgICAgICAgMXwgICAgIDB8ICAgICAxfGYgICAgICAgfHQgICAgICAgfGYg ICAgICAgICAgfHsxIC4uIDF9CiAoMSByb3cpCiAKIHN0ZXAgczFiOiBCRUdJTiBJU09MQVRJ T04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOwpAQCAtNDUsNyArNDUsNyBAQCBzdGVwIHMxYzog Q09NTUlUOwogc3RlcCBzMmNoZWNrOiBTRUxFQ1QgKiBGUk9NIGJyaW5fcGFnZV9pdGVtcyhn ZXRfcmF3X3BhZ2UoJ2JyaW5pZHgnLCAyKSwgJ2JyaW5pZHgnOjpyZWdjbGFzcyk7CiBpdGVt b2Zmc2V0fGJsa251bXxhdHRudW18YWxsbnVsbHN8aGFzbnVsbHN8cGxhY2Vob2xkZXJ8dmFs dWUgICAgICAKIC0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLQotICAgICAgICAgMXwgICAgIDB8ICAgICAxfGYgICAg ICAgfGYgICAgICAgfGYgICAgICAgICAgfHsxIC4uIDF9ICAgCisgICAgICAgICAxfCAgICAg MHwgICAgIDF8ZiAgICAgICB8dCAgICAgICB8ZiAgICAgICAgICB8ezEgLi4gMX0gICAKICAg ICAgICAgIDJ8ICAgICAxfCAgICAgMXxmICAgICAgIHxmICAgICAgIHxmICAgICAgICAgIHx7 MSAuLiAxMDAwfQogKDIgcm93cykKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9i cmluL3NwZWNzL3N1bW1hcml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLnNwZWMg Yi9zcmMvdGVzdC9tb2R1bGVzL2JyaW4vc3BlY3Mvc3VtbWFyaXphdGlvbi1hbmQtaW5wcm9n cmVzcy1pbnNlcnRpb24uc3BlYwppbmRleCAxOWFjMThhMmU4OC4uMThiYTkyYjdiYTEgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvYnJpbi9zcGVjcy9zdW1tYXJpemF0aW9uLWFu ZC1pbnByb2dyZXNzLWluc2VydGlvbi5zcGVjCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvYnJp bi9zcGVjcy9zdW1tYXJpemF0aW9uLWFuZC1pbnByb2dyZXNzLWluc2VydGlvbi5zcGVjCkBA IC05LDYgKzksNyBAQCBzZXR1cAogICAgICkgV0lUSCAoZmlsbGZhY3Rvcj0xMCk7CiAgICAg Q1JFQVRFIElOREVYIGJyaW5pZHggT04gYnJpbl9pc28gVVNJTkcgYnJpbiAodmFsdWUpIFdJ VEggKHBhZ2VzX3Blcl9yYW5nZT0xKTsKICAgICAtLSB0aGlzIGZpbGxzIHRoZSBmaXJzdCBw YWdlCisgICAgSU5TRVJUIElOVE8gYnJpbl9pc28gVkFMVUVTIChOVUxMKTsKICAgICBETyAk JAogICAgIERFQ0xBUkUgY3VydGlkIHRpZDsKICAgICBCRUdJTgotLSAKMi40MC4wCgo= --------------lSlMzTTPhKp49XGNJhdO3vBk Content-Type: text/x-patch; charset=UTF-8; name="0002-Show-empty-ranges-in-brin_page_items-20230423-master.patch" Content-Disposition: attachment; filename*0="0002-Show-empty-ranges-in-brin_page_items-20230423-master.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkYTEwOGVlOWJjZmQ0YjhhNGFjOGI5ZmJhMmNjOGI2YWI0Zjc1N2Y3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCAyNyBNYXIgMjAyMyAyMjo0NzoxMiArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMi8yXSBTaG93IGVtcHR5IHJhbmdlcyBpbiBicmluX3BhZ2VfaXRlbXMK ClNob3cgd2hpY2ggQlJJTiByYW5nZXMgYXJlIGVtcHR5IChubyByb3dzKSwgYXMgaW5kaWNh dGVkIGJ5IHRoZSBuZXdseQppbnRyb2R1Y2VkIGZsYWcuCi0tLQogY29udHJpYi9wYWdlaW5z cGVjdC9icmluZnVuY3MuYyAgICAgICAgICAgICAgIHwgMTAgKysrKy0tLQogY29udHJpYi9w YWdlaW5zcGVjdC9leHBlY3RlZC9icmluLm91dCAgICAgICAgIHwgIDYgKystLQogLi4uL3Bh Z2VpbnNwZWN0L3BhZ2VpbnNwZWN0LS0xLjExLS0xLjEyLnNxbCAgIHwgMTcgKysrKysrKysr KysKIC4uLnN1bW1hcml6YXRpb24tYW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLm91dCB8IDI4 ICsrKysrKysrKy0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygr KSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wYWdlaW5zcGVjdC9i cmluZnVuY3MuYyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvYnJpbmZ1bmNzLmMKaW5kZXggMDAw ZGNkOGY1ZDguLmE3ODFmMjY1NTE0IDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0 L2JyaW5mdW5jcy5jCisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvYnJpbmZ1bmNzLmMKQEAg LTIwMSw4ICsyMDEsOCBAQCBicmluX3BhZ2VfaXRlbXMoUEdfRlVOQ1RJT05fQVJHUykKIAlk dHVwID0gTlVMTDsKIAlmb3IgKDs7KQogCXsKLQkJRGF0dW0JCXZhbHVlc1s3XTsKLQkJYm9v bAkJbnVsbHNbN10gPSB7MH07CisJCURhdHVtCQl2YWx1ZXNbOF07CisJCWJvb2wJCW51bGxz WzhdID0gezB9OwogCiAJCS8qCiAJCSAqIFRoaXMgbG9vcCBpcyBjYWxsZWQgb25jZSBmb3Ig ZXZlcnkgYXR0cmlidXRlIG9mIGV2ZXJ5IHR1cGxlIGluIHRoZQpAQCAtMjM5LDYgKzIzOSw3 IEBAIGJyaW5fcGFnZV9pdGVtcyhQR19GVU5DVElPTl9BUkdTKQogCQkJbnVsbHNbNF0gPSB0 cnVlOwogCQkJbnVsbHNbNV0gPSB0cnVlOwogCQkJbnVsbHNbNl0gPSB0cnVlOworCQkJbnVs bHNbN10gPSB0cnVlOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMjYxLDYgKzI2Miw3IEBAIGJy aW5fcGFnZV9pdGVtcyhQR19GVU5DVElPTl9BUkdTKQogCQkJdmFsdWVzWzNdID0gQm9vbEdl dERhdHVtKGR0dXAtPmJ0X2NvbHVtbnNbYXR0XS5idl9hbGxudWxscyk7CiAJCQl2YWx1ZXNb NF0gPSBCb29sR2V0RGF0dW0oZHR1cC0+YnRfY29sdW1uc1thdHRdLmJ2X2hhc251bGxzKTsK IAkJCXZhbHVlc1s1XSA9IEJvb2xHZXREYXR1bShkdHVwLT5idF9wbGFjZWhvbGRlcik7CisJ CQl2YWx1ZXNbNl0gPSBCb29sR2V0RGF0dW0oZHR1cC0+YnRfZW1wdHlfcmFuZ2UpOwogCQkJ aWYgKCFkdHVwLT5idF9jb2x1bW5zW2F0dF0uYnZfYWxsbnVsbHMpCiAJCQl7CiAJCQkJQnJp blZhbHVlcyAqYnZhbHVlcyA9ICZkdHVwLT5idF9jb2x1bW5zW2F0dF07CkBAIC0yODYsMTIg KzI4OCwxMiBAQCBicmluX3BhZ2VfaXRlbXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQl9CiAJ CQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJnMsICd9Jyk7CiAKLQkJCQl2YWx1ZXNbNl0gPSBD U3RyaW5nR2V0VGV4dERhdHVtKHMuZGF0YSk7CisJCQkJdmFsdWVzWzddID0gQ1N0cmluZ0dl dFRleHREYXR1bShzLmRhdGEpOwogCQkJCXBmcmVlKHMuZGF0YSk7CiAJCQl9CiAJCQllbHNl CiAJCQl7Ci0JCQkJbnVsbHNbNl0gPSB0cnVlOworCQkJCW51bGxzWzddID0gdHJ1ZTsKIAkJ CX0KIAkJfQogCmRpZmYgLS1naXQgYS9jb250cmliL3BhZ2VpbnNwZWN0L2V4cGVjdGVkL2Jy aW4ub3V0IGIvY29udHJpYi9wYWdlaW5zcGVjdC9leHBlY3RlZC9icmluLm91dAppbmRleCBl MTJmYmViNDc3NC4uMDk4ZGRjMjAyZjQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3Bl Y3QvZXhwZWN0ZWQvYnJpbi5vdXQKKysrIGIvY29udHJpYi9wYWdlaW5zcGVjdC9leHBlY3Rl ZC9icmluLm91dApAQCAtNDMsOSArNDMsOSBAQCBTRUxFQ1QgKiBGUk9NIGJyaW5fcmV2bWFw X2RhdGEoZ2V0X3Jhd19wYWdlKCd0ZXN0MV9hX2lkeCcsIDEpKSBMSU1JVCA1OwogCiBTRUxF Q1QgKiBGUk9NIGJyaW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ3Rlc3QxX2FfaWR4Jywg MiksICd0ZXN0MV9hX2lkeCcpCiAgICAgT1JERVIgQlkgYmxrbnVtLCBhdHRudW0gTElNSVQg NTsKLSBpdGVtb2Zmc2V0IHwgYmxrbnVtIHwgYXR0bnVtIHwgYWxsbnVsbHMgfCBoYXNudWxs cyB8IHBsYWNlaG9sZGVyIHwgIHZhbHVlICAgCi0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot ICAgICAgICAgIDEgfCAgICAgIDAgfCAgICAgIDEgfCBmICAgICAgICB8IGYgICAgICAgIHwg ZiAgICAgICAgICAgfCB7MSAuLiAxfQorIGl0ZW1vZmZzZXQgfCBibGtudW0gfCBhdHRudW0g fCBhbGxudWxscyB8IGhhc251bGxzIHwgcGxhY2Vob2xkZXIgfCBlbXB0eSB8ICB2YWx1ZSAg IAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLQorICAgICAgICAgIDEgfCAgICAg IDAgfCAgICAgIDEgfCBmICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgfCBmICAg ICB8IHsxIC4uIDF9CiAoMSByb3cpCiAKIC0tIE1hc2sgREVUQUlMIG1lc3NhZ2VzIGFzIHRo ZXNlIGFyZSBub3QgcG9ydGFibGUgYWNyb3NzIGFyY2hpdGVjdHVyZXMuCmRpZmYgLS1naXQg YS9jb250cmliL3BhZ2VpbnNwZWN0L3BhZ2VpbnNwZWN0LS0xLjExLS0xLjEyLnNxbCBiL2Nv bnRyaWIvcGFnZWluc3BlY3QvcGFnZWluc3BlY3QtLTEuMTEtLTEuMTIuc3FsCmluZGV4IDcw YzNhYmNjZjU3Li5hMjBkNjdhOWU4MiAxMDA2NDQKLS0tIGEvY29udHJpYi9wYWdlaW5zcGVj dC9wYWdlaW5zcGVjdC0tMS4xMS0tMS4xMi5zcWwKKysrIGIvY29udHJpYi9wYWdlaW5zcGVj dC9wYWdlaW5zcGVjdC0tMS4xMS0tMS4xMi5zcWwKQEAgLTIxLDMgKzIxLDIwIEBAIENSRUFU RSBGVU5DVElPTiBidF9tdWx0aV9wYWdlX3N0YXRzKElOIHJlbG5hbWUgdGV4dCwgSU4gYmxr bm8gaW50OCwgSU4gYmxrX2NvdW50CiBSRVRVUk5TIFNFVE9GIHJlY29yZAogQVMgJ01PRFVM RV9QQVRITkFNRScsICdidF9tdWx0aV9wYWdlX3N0YXRzJwogTEFOR1VBR0UgQyBTVFJJQ1Qg UEFSQUxMRUwgUkVTVFJJQ1RFRDsKKworLS0KKy0tIGFkZCBpbmZvcm1hdGlvbiBhYm91dCBC UklOIGVtcHR5IHJhbmdlcworLS0KK0RST1AgRlVOQ1RJT04gYnJpbl9wYWdlX2l0ZW1zKElO IHBhZ2UgYnl0ZWEsIElOIGluZGV4X29pZCByZWdjbGFzcyk7CitDUkVBVEUgRlVOQ1RJT04g YnJpbl9wYWdlX2l0ZW1zKElOIHBhZ2UgYnl0ZWEsIElOIGluZGV4X29pZCByZWdjbGFzcywK KyAgICBPVVQgaXRlbW9mZnNldCBpbnQsCisgICAgT1VUIGJsa251bSBpbnQ4LAorICAgIE9V VCBhdHRudW0gaW50LAorICAgIE9VVCBhbGxudWxscyBib29sLAorICAgIE9VVCBoYXNudWxs cyBib29sLAorICAgIE9VVCBwbGFjZWhvbGRlciBib29sLAorICAgIE9VVCBlbXB0eSBib29s LAorICAgIE9VVCB2YWx1ZSB0ZXh0KQorUkVUVVJOUyBTRVRPRiByZWNvcmQKK0FTICdNT0RV TEVfUEFUSE5BTUUnLCAnYnJpbl9wYWdlX2l0ZW1zJworTEFOR1VBR0UgQyBTVFJJQ1QgUEFS QUxMRUwgUkVTVFJJQ1RFRDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvYnJpbi9l eHBlY3RlZC9zdW1tYXJpemF0aW9uLWFuZC1pbnByb2dyZXNzLWluc2VydGlvbi5vdXQgYi9z cmMvdGVzdC9tb2R1bGVzL2JyaW4vZXhwZWN0ZWQvc3VtbWFyaXphdGlvbi1hbmQtaW5wcm9n cmVzcy1pbnNlcnRpb24ub3V0CmluZGV4IDU4NGFjMjYwMmY3Li4yMDE3ODZjODJjMCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9icmluL2V4cGVjdGVkL3N1bW1hcml6YXRpb24t YW5kLWlucHJvZ3Jlc3MtaW5zZXJ0aW9uLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2Jy aW4vZXhwZWN0ZWQvc3VtbWFyaXphdGlvbi1hbmQtaW5wcm9ncmVzcy1pbnNlcnRpb24ub3V0 CkBAIC0yLDkgKzIsOSBAQCBQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNzaW9ucwogCiBz dGFydGluZyBwZXJtdXRhdGlvbjogczJjaGVjayBzMWIgczJiIHMxaSBzMnN1bW0gczFjIHMy YyBzMmNoZWNrCiBzdGVwIHMyY2hlY2s6IFNFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1z KGdldF9yYXdfcGFnZSgnYnJpbmlkeCcsIDIpLCAnYnJpbmlkeCc6OnJlZ2NsYXNzKTsKLWl0 ZW1vZmZzZXR8YmxrbnVtfGF0dG51bXxhbGxudWxsc3xoYXNudWxsc3xwbGFjZWhvbGRlcnx2 YWx1ZSAgIAotLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tCi0gICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8 dCAgICAgICB8ZiAgICAgICAgICB8ezEgLi4gMX0KK2l0ZW1vZmZzZXR8YmxrbnVtfGF0dG51 bXxhbGxudWxsc3xoYXNudWxsc3xwbGFjZWhvbGRlcnxlbXB0eXx2YWx1ZSAgIAorLS0tLS0t LS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t Ky0tLS0tLS0tCisgICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8dCAgICAgICB8 ZiAgICAgICAgICB8ZiAgICB8ezEgLi4gMX0KICgxIHJvdykKIAogc3RlcCBzMWI6IEJFR0lO IElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQ7CkBAIC0yNCwxOCArMjQsMTggQEAg YnJpbl9zdW1tYXJpemVfbmV3X3ZhbHVlcwogc3RlcCBzMWM6IENPTU1JVDsKIHN0ZXAgczJj OiBDT01NSVQ7CiBzdGVwIHMyY2hlY2s6IFNFTEVDVCAqIEZST00gYnJpbl9wYWdlX2l0ZW1z KGdldF9yYXdfcGFnZSgnYnJpbmlkeCcsIDIpLCAnYnJpbmlkeCc6OnJlZ2NsYXNzKTsKLWl0 ZW1vZmZzZXR8YmxrbnVtfGF0dG51bXxhbGxudWxsc3xoYXNudWxsc3xwbGFjZWhvbGRlcnx2 YWx1ZSAgICAgIAotLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCi0gICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAg ICAgICB8dCAgICAgICB8ZiAgICAgICAgICB8ezEgLi4gMX0gICAKLSAgICAgICAgIDJ8ICAg ICAxfCAgICAgMXxmICAgICAgIHxmICAgICAgIHxmICAgICAgICAgIHx7MSAuLiAxMDAwfQor aXRlbW9mZnNldHxibGtudW18YXR0bnVtfGFsbG51bGxzfGhhc251bGxzfHBsYWNlaG9sZGVy fGVtcHR5fHZhbHVlICAgICAgCistLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0KKyAgICAgICAgIDF8ICAg ICAwfCAgICAgMXxmICAgICAgIHx0ICAgICAgIHxmICAgICAgICAgIHxmICAgIHx7MSAuLiAx fSAgIAorICAgICAgICAgMnwgICAgIDF8ICAgICAxfGYgICAgICAgfGYgICAgICAgfGYgICAg ICAgICAgfGYgICAgfHsxIC4uIDEwMDB9CiAoMiByb3dzKQogCiAKIHN0YXJ0aW5nIHBlcm11 dGF0aW9uOiBzMmNoZWNrIHMxYiBzMWkgczJ2YWN1dW0gczFjIHMyY2hlY2sKIHN0ZXAgczJj aGVjazogU0VMRUNUICogRlJPTSBicmluX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdicmlu aWR4JywgMiksICdicmluaWR4Jzo6cmVnY2xhc3MpOwotaXRlbW9mZnNldHxibGtudW18YXR0 bnVtfGFsbG51bGxzfGhhc251bGxzfHBsYWNlaG9sZGVyfHZhbHVlICAgCi0tLS0tLS0tLS0t Ky0tLS0tLSstLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0K LSAgICAgICAgIDF8ICAgICAwfCAgICAgMXxmICAgICAgIHx0ICAgICAgIHxmICAgICAgICAg IHx7MSAuLiAxfQoraXRlbW9mZnNldHxibGtudW18YXR0bnVtfGFsbG51bGxzfGhhc251bGxz fHBsYWNlaG9sZGVyfGVtcHR5fHZhbHVlICAgCistLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0KKyAgICAgICAg IDF8ICAgICAwfCAgICAgMXxmICAgICAgIHx0ICAgICAgIHxmICAgICAgICAgIHxmICAgIHx7 MSAuLiAxfQogKDEgcm93KQogCiBzdGVwIHMxYjogQkVHSU4gSVNPTEFUSU9OIExFVkVMIFJF UEVBVEFCTEUgUkVBRDsKQEAgLTQzLDkgKzQzLDkgQEAgc3RlcCBzMWk6IElOU0VSVCBJTlRP IGJyaW5faXNvIFZBTFVFUyAoMTAwMCk7CiBzdGVwIHMydmFjdXVtOiBWQUNVVU0gYnJpbl9p c287CiBzdGVwIHMxYzogQ09NTUlUOwogc3RlcCBzMmNoZWNrOiBTRUxFQ1QgKiBGUk9NIGJy aW5fcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UoJ2JyaW5pZHgnLCAyKSwgJ2JyaW5pZHgnOjpy ZWdjbGFzcyk7Ci1pdGVtb2Zmc2V0fGJsa251bXxhdHRudW18YWxsbnVsbHN8aGFzbnVsbHN8 cGxhY2Vob2xkZXJ8dmFsdWUgICAgICAKLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLQotICAgICAgICAgMXwgICAg IDB8ICAgICAxfGYgICAgICAgfHQgICAgICAgfGYgICAgICAgICAgfHsxIC4uIDF9ICAgCi0g ICAgICAgICAyfCAgICAgMXwgICAgIDF8ZiAgICAgICB8ZiAgICAgICB8ZiAgICAgICAgICB8 ezEgLi4gMTAwMH0KK2l0ZW1vZmZzZXR8YmxrbnVtfGF0dG51bXxhbGxudWxsc3xoYXNudWxs c3xwbGFjZWhvbGRlcnxlbXB0eXx2YWx1ZSAgICAgIAorLS0tLS0tLS0tLSstLS0tLS0rLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tCisg ICAgICAgICAxfCAgICAgMHwgICAgIDF8ZiAgICAgICB8dCAgICAgICB8ZiAgICAgICAgICB8 ZiAgICB8ezEgLi4gMX0gICAKKyAgICAgICAgIDJ8ICAgICAxfCAgICAgMXxmICAgICAgIHxm ICAgICAgIHxmICAgICAgICAgIHxmICAgIHx7MSAuLiAxMDAwfQogKDIgcm93cykKIAotLSAK Mi40MC4wCgo= --------------lSlMzTTPhKp49XGNJhdO3vBk--