Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wDQzv-002xq0-1x for pgsql-bugs@arkaria.postgresql.org; Thu, 16 Apr 2026 17:59:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wDQzu-006Z6x-1r for pgsql-bugs@arkaria.postgresql.org; Thu, 16 Apr 2026 17:59:26 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wDQzu-006Z6p-0u for pgsql-bugs@lists.postgresql.org; Thu, 16 Apr 2026 17:59:26 +0000 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wDQzq-00000001ReH-2ukI for pgsql-bugs@lists.postgresql.org; Thu, 16 Apr 2026 17:59:25 +0000 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-82f0fc82c76so2963129b3a.0 for ; Thu, 16 Apr 2026 10:59:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776362360; cv=none; d=google.com; s=arc-20240605; b=c71USqZhS9yeBIOdeGj7nb2NE/uGKFUzZNtuXpQu+rIdVD1g1HuFhMCicLiQgxJ7CN rOf652hJv4fx13sjPqvWGM6c9Kow1quDT1mhCyuixrn7dH3MffD9HnTPWnDsv5/YnpEu /Yjc1kdotEVkpTl8RqHsfOq364JaMpH6DcCTmkilK4GENQ05Vsf5VZ9gHqfgZryr0TZE 8hZDB27Mn0FHRk7toiBgQKNQT7gEouN5qal0nwvdDBZe3Ippx8NkjrXaYkx4oMEXhgj9 jD4IvQyVfnCgwZa3IFPKhWT23UI+ZzWI7U09qR4X4tFC9jqeSU5giA60Wrw6sJwgoGN0 V9uw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=aMZ81H9ZiXaYuUcy0lpbMjI/qSxAO+W4gV83taBvbjU=; fh=eq4N0ZJ8hrEgR38nsBqR0qT98+sD9swSO80XeCQALy8=; b=OOPx2V3XkKKzcZB4mqo/hn3wiwHaK5GZrK92Z/hz61bQ/nQS7dFlT/nKKBO0zP/JYZ IoZQBGHCrMS5wkeSZt9IilZ8tdh+xCjTyd1Dw6t9SxNqSDEh0IHxtZYBLk7yI1JOVpm8 DEn23ddUaVIyl1yCimS5PYZFuqfjNmru7qTjYYU3NQP/a6imCQvQQkWo43W67cCdSGYL Yn61r3USmNV/BYQgsqVh4PfRQ5QLlcknZJQ7fYlQR6fywjYTkAmUTYM5qihav5Yq3pLn y+7TOwcml6RAb/vkgAZeCjLq1AiDG/E9aF674ZvdwsFiAqv92kvNNhw/VgTm18lm0ylI XDtA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776362360; x=1776967160; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=aMZ81H9ZiXaYuUcy0lpbMjI/qSxAO+W4gV83taBvbjU=; b=Urmt+9aQaHV07NIt7CDJGz5+gKHVQC0i+y5XvqaDDzRVj/qpKZi8jgtbb1EXuu+K+S bVtg//4xdFhgWl2BWcZoeCNcnamPP6y0TYsQes/Zz8bBbgHcZbdsgTLoJw/x6nHA6xvO 9EX5bI11rWKG2ACM2XCeojeBPIQMQOwxJqdI0bmEUvFBPk0aUuDjFVll+zHTcZSrObQq XwthFnFKNeqpNNLqUDI6iHGJZ1unOVYvRDBQ3zTX1WmZiYsJkqAQnt96afOzS+ZaMG9Z LEBkeDgTQDUXN3lTs8UKp+pHoXZfJLYBKKDbc9CzpPnkQRJHumY0APvSwn8othCqG3dP bjqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776362360; x=1776967160; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=aMZ81H9ZiXaYuUcy0lpbMjI/qSxAO+W4gV83taBvbjU=; b=LSxpGvTTW/RuxZnetUILskwJJ6Pu6kA6DNCxUqS7WUPpl1mNM+eySXPV7+O4vhvJxh 2Bu9d13bdtYO1oXJ4WEV3kthhLoJdIa1I4BH1AAIobANmlgahN1AXXRcUR4vpwEo1DPg 4VYs2YnA0uyFDNxWxiDw1B7lYuBNUNI6sRutN9hv3KDlEVWbZv+sRK6jFUmlQYfd7BlD xBCqG4UPiMUeDA3/Vqiw5rklY3szSxiHZbgd5Lt6VVM/CRBkEL77iecLFGlLw0ozHF0G U2gSkIk0ZtqWjZpoZiVLkYEFoZgkv8IrUZHa9Cot215d2B0oT87awLeMn0jZE4CoG+gV 525w== X-Gm-Message-State: AOJu0YzEAQ9EDwnFHVAqyAIPA+V6ah82N4MxA95V14JCDqcu0lXddueD oVzvQiJ2O3jZLIsSVNoV5ffWf5REH9ZFaLW9Q1aOhN+lwFXM1HAuPTYIXvrTNehoTXVF8DTmuLB PayUnsdicGtgkEL+dyzQo+ohrrQneDRA= X-Gm-Gg: AeBDieskCBZWPLlJaV+0GCGbwSVgLnQfv1al2xwK9VDog1qSTy6Bdi6foyGZ2cCw99k Vcdunt99hx/LlShv0uy/zll7nB0C6ru12asAEsm5SqfqjHiuHg0/kzKldbhvM/i0o2IDC2sBBnG LeEfDb0yapoKLqbBR81j47+vsr0l2KMt5Zhb4pS5na2ozmrfRv7n8apE5ZID9/5RAuUYsIVuIz0 iZ4R9O2qPpw/n+KyKv38paEQwmWeOkenGSJHzFZ+8xyu8vsZO2vf4DzPO/cR7CC0zxTBChgU03P 8RTgWPev1t+tJso= X-Received: by 2002:a05:6a00:1826:b0:81f:3afe:281e with SMTP id d2e1a72fcca58-82f885560f6mr346238b3a.3.1776362359959; Thu, 16 Apr 2026 10:59:19 -0700 (PDT) MIME-Version: 1.0 References: <119bd418-1d7a-42c7-9270-86f3b6696399@gmail.com> In-Reply-To: <119bd418-1d7a-42c7-9270-86f3b6696399@gmail.com> From: Masahiko Sawada Date: Thu, 16 Apr 2026 10:58:40 -0700 X-Gm-Features: AQROBzAthRt2LzvvQlCT3H83ik3cf-au41D7I9SHeuzZdBPayzC7oMsPlnxZrXM Message-ID: Subject: Re: TRAP: failed Assert("offsets[i] > offsets[i - 1]"), File: "tidstore.c" To: Andrei Lepikhov Cc: PostgreSQL mailing lists Content-Type: multipart/mixed; boundary="000000000000754b7c064f9797e1" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000754b7c064f9797e1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Apr 16, 2026 at 1:26=E2=80=AFAM Andrei Lepikhov = wrote: > > On 16/04/2026 10:11, Masahiko Sawada wrote: > > On Thu, Apr 16, 2026 at 12:13=E2=80=AFAM Andrei Lepikhov wrote: > > -- Random TIDs test. The offset numbers are randomized and must be -- > > unique and ordered. INSERT INTO hideblocks (blockno) SELECT > > do_set_block_offsets(blkno, array_agg(DISTINCT greatest((random() * > > :maxoffset)::int, 1))::int2[]) FROM generate_series(1, 100) > > num_offsets, generate_series(1000, 1100, 1) blkno GROUP BY blkno; > > Alright, I used an explicit sort in reverse order to make sure the test i= s > stable. I usually create modules that may change different paths, costs, = and > orders, and using random can make things unpredictable. But for this spec= ific > test, I don't see any risk. > > > > > While I agree that we need to sort the offset numbers, I think it > > would be better to make sure the offset numbers in the array to be > > sorted in a test_tidstore.sql file where required, instead of doing so > > for all cases. > > I'm not sure I follow. Are you saying that do_set_block_offsets shouldn't= sort > the incoming offsets? No, I wanted to mean that if we sort the given array in do_set_block_offsets() as the proposed patch does, we end up always sorting arrays even if the sorting is no actually required (e.g., when executing "SELECT do_set_block_offsets(1, array[1,2,3,4,100]::int2[]);"). So an alternative idea to stabilize the regression test would be to create a SQL function to return a list of sorted offsets and use it where it's required. While the patch gets a little bigger, It would also help simplify the tests somewhat by removing the redundant codes. I've attached the patch for this idea. Regards, --=20 Masahiko Sawada Amazon Web Services: https://aws.amazon.com --000000000000754b7c064f9797e1 Content-Type: application/octet-stream; name="generate_random_offsets.patch" Content-Disposition: attachment; filename="generate_random_offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo1s4wt40 ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF90aWRzdG9yZS9leHBlY3RlZC90ZXN0 X3RpZHN0b3JlLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF90aWRzdG9yZS9leHBlY3RlZC90 ZXN0X3RpZHN0b3JlLm91dAppbmRleCBjYmNhY2ZkMjZlMS4uYWQ5MjA0MWJmMzUgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF90aWRzdG9yZS9leHBlY3RlZC90ZXN0X3RpZHN0b3Jl Lm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfdGlkc3RvcmUvZXhwZWN0ZWQvdGVzdF90 aWRzdG9yZS5vdXQKQEAgLTYsNiArNiwxMSBAQCBDUkVBVEUgVEVNUCBUQUJMRSBoaWRlYmxvY2tz KGJsb2Nrbm8gYmlnaW50KTsKIC0tIFRoZSBtYXhpbXVtIG51bWJlciBvZiBoZWFwIHR1cGxlcyAo TWF4SGVhcFR1cGxlc1BlclBhZ2UpIGluIDhrQiBibG9jayBpcyAyOTEuCiAtLSBXZSB1c2UgYSBo aWdoZXIgbnVtYmVyIHRvIHRlc3QgdGlkc3RvcmUuCiBcc2V0IG1heG9mZnNldCA1MTIKK0NSRUFU RSBGVU5DVElPTiBnZW5lcmF0ZV9yYW5kb21fb2Zmc2V0cyhub2ZmcyBpbnQpIFJFVFVSTlMgaW50 MltdCitCRUdJTiBBVE9NSUMKKyAgU0VMRUNUIGFycmF5X2FnZyhESVNUSU5DVCB2YWwgT1JERVIg QlkgdmFsKQorICBGUk9NIChTRUxFQ1QgKChyYW5kb20oKSAqIDptYXhvZmZzZXQpOjppbnQgKyAx KSBhcyB2YWwgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgbm9mZnMpKTsKK0VORDsKIFNFTEVDVCB0 ZXN0X2NyZWF0ZShmYWxzZSk7CiAgdGVzdF9jcmVhdGUgCiAtLS0tLS0tLS0tLS0tCkBAIC0zOSw4 ICs0NCw3IEBAIFNFTEVDVCBkb19zZXRfYmxvY2tfb2Zmc2V0cyg1MDEsIGFycmF5W2dyZWF0ZXN0 KChyYW5kb20oKSAqIDptYXhvZmZzZXQpOjppbnQsIDEpCiAgICAgICAgICAgICAgICAgICA1MDEK ICgxIHJvdykKIAotU0VMRUNUIGRvX3NldF9ibG9ja19vZmZzZXRzKDUwMiwgYXJyYXlfYWdnKERJ U1RJTkNUIGdyZWF0ZXN0KChyYW5kb20oKSAqIDptYXhvZmZzZXQpOjppbnQsIDEpKTo6aW50Mltd KQotICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKTsKK1NFTEVDVCBkb19zZXRfYmxvY2tfb2Zm c2V0cyg1MDIsIGdlbmVyYXRlX3JhbmRvbV9vZmZzZXRzKDMpKTsKICBkb19zZXRfYmxvY2tfb2Zm c2V0cyAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgIDUwMgpAQCAt MjAyLDggKzIwNiw3IEBAIFNFTEVDVCBkb19zZXRfYmxvY2tfb2Zmc2V0cyg1MDEsIGFycmF5W2dy ZWF0ZXN0KChyYW5kb20oKSAqIDptYXhvZmZzZXQpOjppbnQsIDEpCiAgICAgICAgICAgICAgICAg ICA1MDEKICgxIHJvdykKIAotU0VMRUNUIGRvX3NldF9ibG9ja19vZmZzZXRzKDUwMiwgYXJyYXlf YWdnKERJU1RJTkNUIGdyZWF0ZXN0KChyYW5kb20oKSAqIDptYXhvZmZzZXQpOjppbnQsIDEpKTo6 aW50MltdKQotICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKTsKK1NFTEVDVCBkb19zZXRfYmxv Y2tfb2Zmc2V0cyg1MDIsIGdlbmVyYXRlX3JhbmRvbV9vZmZzZXRzKDMpKTsKICBkb19zZXRfYmxv Y2tfb2Zmc2V0cyAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgIDUw MgpAQCAtMjEyLDkgKzIxNSw4IEBAIFNFTEVDVCBkb19zZXRfYmxvY2tfb2Zmc2V0cyg1MDIsIGFy cmF5X2FnZyhESVNUSU5DVCBncmVhdGVzdCgocmFuZG9tKCkgKiA6bWF4b2ZmCiAtLSBSYW5kb20g VElEcyB0ZXN0LiBUaGUgb2Zmc2V0IG51bWJlcnMgYXJlIHJhbmRvbWl6ZWQgYW5kIG11c3QgYmUK IC0tIHVuaXF1ZSBhbmQgb3JkZXJlZC4KIElOU0VSVCBJTlRPIGhpZGVibG9ja3MgKGJsb2Nrbm8p Ci1TRUxFQ1QgZG9fc2V0X2Jsb2NrX29mZnNldHMoYmxrbm8sIGFycmF5X2FnZyhESVNUSU5DVCBn cmVhdGVzdCgocmFuZG9tKCkgKiA6bWF4b2Zmc2V0KTo6aW50LCAxKSk6OmludDJbXSkKLSAgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBudW1fb2Zmc2V0cywKLSAgZ2VuZXJhdGVfc2VyaWVz KDEwMDAsIDExMDAsIDEpIGJsa25vCitTRUxFQ1QgZG9fc2V0X2Jsb2NrX29mZnNldHMoYmxrbm8s IGdlbmVyYXRlX3JhbmRvbV9vZmZzZXRzKDEwMCkpCisgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEw MDAsIDExMDAsIDEpIGJsa25vCiBHUk9VUCBCWSBibGtubzsKIC0tIENoZWNrIFRJRHMgd2UndmUg YWRkZWQgdG8gdGhlIHN0b3JlLgogU0VMRUNUIGNoZWNrX3NldF9ibG9ja19vZmZzZXRzKCk7CkBA IC0yMzEsMyArMjMzLDQgQEAgU0VMRUNUIHRlc3RfZGVzdHJveSgpOwogKDEgcm93KQogCiBEUk9Q IFRBQkxFIGhpZGVibG9ja3M7CitEUk9QIEZVTkNUSU9OIGdlbmVyYXRlX3JhbmRvbV9vZmZzZXRz KGludGVnZXIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3RpZHN0b3JlL3Nx bC90ZXN0X3RpZHN0b3JlLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF90aWRzdG9yZS9zcWwv dGVzdF90aWRzdG9yZS5zcWwKaW5kZXggYTI5ZTRlYzFjNTUuLjM4ZjA4ZDIzNTAxIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfdGlkc3RvcmUvc3FsL3Rlc3RfdGlkc3RvcmUuc3Fs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF90aWRzdG9yZS9zcWwvdGVzdF90aWRzdG9yZS5z cWwKQEAgLTksNiArOSwxMiBAQCBDUkVBVEUgVEVNUCBUQUJMRSBoaWRlYmxvY2tzKGJsb2Nrbm8g YmlnaW50KTsKIC0tIFdlIHVzZSBhIGhpZ2hlciBudW1iZXIgdG8gdGVzdCB0aWRzdG9yZS4KIFxz ZXQgbWF4b2Zmc2V0IDUxMgogCitDUkVBVEUgRlVOQ1RJT04gZ2VuZXJhdGVfcmFuZG9tX29mZnNl dHMobm9mZnMgaW50KSBSRVRVUk5TIGludDJbXQorQkVHSU4gQVRPTUlDCisgIFNFTEVDVCBhcnJh eV9hZ2coRElTVElOQ1QgdmFsIE9SREVSIEJZIHZhbCkKKyAgRlJPTSAoU0VMRUNUICgocmFuZG9t KCkgKiA6bWF4b2Zmc2V0KTo6aW50ICsgMSkgYXMgdmFsIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IG5vZmZzKSk7CitFTkQ7CisKIFNFTEVDVCB0ZXN0X2NyZWF0ZShmYWxzZSk7CiAKIC0tIFRlc3Qg b24gZW1wdHkgdGlkc3RvcmUuCkBAIC0yNSw4ICszMSw3IEBAIFNFTEVDVCBkb19zZXRfYmxvY2tf b2Zmc2V0cyhibGssIGFycmF5X2FnZyhvZmYpOjppbnQyW10pCiAKIC0tIFRlc3Qgb2Zmc2V0cyBl bWJlZGRlZCBpbiB0aGUgYml0bWFwIGhlYWRlci4KIFNFTEVDVCBkb19zZXRfYmxvY2tfb2Zmc2V0 cyg1MDEsIGFycmF5W2dyZWF0ZXN0KChyYW5kb20oKSAqIDptYXhvZmZzZXQpOjppbnQsIDEpXTo6 aW50MltdKTsKLVNFTEVDVCBkb19zZXRfYmxvY2tfb2Zmc2V0cyg1MDIsIGFycmF5X2FnZyhESVNU SU5DVCBncmVhdGVzdCgocmFuZG9tKCkgKiA6bWF4b2Zmc2V0KTo6aW50LCAxKSk6OmludDJbXSkK LSAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMyk7CitTRUxFQ1QgZG9fc2V0X2Jsb2NrX29mZnNl dHMoNTAyLCBnZW5lcmF0ZV9yYW5kb21fb2Zmc2V0cygzKSk7CiAKIC0tIEFkZCBlbm91Z2ggVElE cyB0byBjYXVzZSB0aGUgc3RvcmUgdG8gYXBwZWFyICJmdWxsIiwgY29tcGFyZWQKIC0tIHRvIHRo ZSBhbGxvY2F0ZWQgbWVtb3J5IGl0IHN0YXJ0ZWQgb3V0IHdpdGguIFRoaXMgaXMgZWFzaWVyCkBA IC02NywxNSArNzIsMTMgQEAgU0VMRUNUIHRlc3RfY3JlYXRlKHRydWUpOwogCiAtLSBUZXN0IG9m ZnNldHMgZW1iZWRkZWQgaW4gdGhlIGJpdG1hcCBoZWFkZXIuCiBTRUxFQ1QgZG9fc2V0X2Jsb2Nr X29mZnNldHMoNTAxLCBhcnJheVtncmVhdGVzdCgocmFuZG9tKCkgKiA6bWF4b2Zmc2V0KTo6aW50 LCAxKV06OmludDJbXSk7Ci1TRUxFQ1QgZG9fc2V0X2Jsb2NrX29mZnNldHMoNTAyLCBhcnJheV9h Z2coRElTVElOQ1QgZ3JlYXRlc3QoKHJhbmRvbSgpICogOm1heG9mZnNldCk6OmludCwgMSkpOjpp bnQyW10pCi0gIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpOworU0VMRUNUIGRvX3NldF9ibG9j a19vZmZzZXRzKDUwMiwgZ2VuZXJhdGVfcmFuZG9tX29mZnNldHMoMykpOwogCiAtLSBSYW5kb20g VElEcyB0ZXN0LiBUaGUgb2Zmc2V0IG51bWJlcnMgYXJlIHJhbmRvbWl6ZWQgYW5kIG11c3QgYmUK IC0tIHVuaXF1ZSBhbmQgb3JkZXJlZC4KIElOU0VSVCBJTlRPIGhpZGVibG9ja3MgKGJsb2Nrbm8p Ci1TRUxFQ1QgZG9fc2V0X2Jsb2NrX29mZnNldHMoYmxrbm8sIGFycmF5X2FnZyhESVNUSU5DVCBn cmVhdGVzdCgocmFuZG9tKCkgKiA6bWF4b2Zmc2V0KTo6aW50LCAxKSk6OmludDJbXSkKLSAgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBudW1fb2Zmc2V0cywKLSAgZ2VuZXJhdGVfc2VyaWVz KDEwMDAsIDExMDAsIDEpIGJsa25vCitTRUxFQ1QgZG9fc2V0X2Jsb2NrX29mZnNldHMoYmxrbm8s IGdlbmVyYXRlX3JhbmRvbV9vZmZzZXRzKDEwMCkpCisgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEw MDAsIDExMDAsIDEpIGJsa25vCiBHUk9VUCBCWSBibGtubzsKIAogLS0gQ2hlY2sgVElEcyB3ZSd2 ZSBhZGRlZCB0byB0aGUgc3RvcmUuCkBAIC04NCwzICs4Nyw0IEBAIFNFTEVDVCBjaGVja19zZXRf YmxvY2tfb2Zmc2V0cygpOwogLS0gY2xlYW51cAogU0VMRUNUIHRlc3RfZGVzdHJveSgpOwogRFJP UCBUQUJMRSBoaWRlYmxvY2tzOworRFJPUCBGVU5DVElPTiBnZW5lcmF0ZV9yYW5kb21fb2Zmc2V0 cyhpbnRlZ2VyKTsK --000000000000754b7c064f9797e1--