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.98.2) (envelope-from ) id 1xChZN-000000004Od-1hBR for pgsql-bugs@arkaria.postgresql.org; Fri, 02 Oct 2026 18:01:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1xChZL-00000000pw4-1E0A for pgsql-bugs@arkaria.postgresql.org; Fri, 02 Oct 2026 18:01:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xChZK-00000000pvp-2UbO for pgsql-bugs@lists.postgresql.org; Fri, 02 Oct 2026 18:01:14 +0000 Received: from mail-dy2-x10.google.com ([2607:f8b0:4864:36::10]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1xChZH-0000000030P-1v9D for pgsql-bugs@lists.postgresql.org; Fri, 02 Oct 2026 18:01:13 +0000 Received: by mail-dy2-x10.google.com with SMTP id 5a478bee46e88-33bc6ff6cadso1204772eec.0 for ; Fri, 02 Oct 2026 11:01:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790964070; x=1791568870; darn=lists.postgresql.org; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to :content-type; bh=/jIuOhY5ZYST+1kpjaIOMOaq1yXXkXhAY90nCrbWbvk=; b=mW4c6C7Waat8qAihTsmCBnyhSaHWnuY5C3G4G5WUKZKy7DSwMgp5CM1k5VDuTsQF5l pke4GKXbTozKojWLHyiMcKrK32zcemzbpYRiJ5dnEcyM12oN7AXZsMpBWbkx6q0d/30Q U1bEz7q36gzt91HKIReoLZsxfkC/y15DmEoqpj/Ob77WRpsCIIHSfM24xpBQiD68rr+u TZsPfBwITDTt2TJW3/BJeFSPLlI6htrIg8aE+EPswYunbMAj8P8x1OgSZD/1nFHfVQHa cEpMMiDMKfZyY5jLIHRvf2D2mCikhh6FHlga8JGZ4VoJs6Q9c4fHl7zmQJICcuzx8kKn 5eww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790964070; x=1791568870; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=/jIuOhY5ZYST+1kpjaIOMOaq1yXXkXhAY90nCrbWbvk=; b=fsRMK4pmwCr9ciI1sI8PfLOGtT/m5b+Y9wE2KqkZs/4gRJ+Mv7qPuab6mRZ3wpBaE5 lctVlhrnQjpw9Vb6vE2r5RW1O0idDo7Ti9PwTbW4PPBlcEfx1kfQl2GB7o0VMvsYqL8l Pt40wJWCuZq7lMX+3MX3SB4+Z8iZocyDWRfMYNTfSJ2GTqEzEp67vMrN2LJFhiAY1+f7 EHG/F11QdcKeL4WSdbIVFko7X+c4Bl1NMQn7KwOPd4rn/XMm+N6F5i7bDQ4v8AeZxtpD 78CUQzu3HfYFxySXHjczkdK7kZwCUZ7TwBEicoWZN4nepYxN7j9jylhiLDk00x34QR/A g6BQ== X-Gm-Message-State: AFuF++lyHFOdrDgHByqA36CrYADLBMRgLBT0mSKP2ZQq9WV/XdPsdd5W 7VXLAQLWq3zpKvfu/f7n0Kc6gFiGgzzNBUcqCq0p/ecKkt7nyZGRSJsABl7ApV8m0x2lCg== X-Gm-Gg: AYBFou1D1b7tusE/DJ/86MM/SbnusZw8iIMXbbvfbuylyrtqehyg+W+MjFeAuwNq7aG NxjEA3AR4sCFvJAQf7hbt+ge2imcG9j9ol/2qVw4ZqwR0I5L837MB8x2HN4fbeJQGVupNdJEdXF MDtLSKDDSBjf9Z6SwLBkQgpWIYlLn8VBUQCgcTZhvAJ8CW5F2zSNNph41carhrvJG/zB/qowIIL rFVbZtG+9wUEJtcL+KiOy+EjjKCiKW0erR1Pdgci0svgxTxu63U02x8ZBrQNteBzt3LFsW9hTD4 cWvXIfJGidJwDiqPKmb+YioDrsYS4Mf7Lemo4D2RItaNrSph6UM2T6bn10aH6c1L3N7aI6RL3cM 8K5YzU/OqgtMlXNlhg56lShxoa2hXQnWhxTjZJm6rskQDXh2mJZ8vBvurAdoWNxcEaoIDqgkYkO rSSMogyyNaQ7pWuFg4lZ/BuA2nU6Dse1p8mBYXnEo4+Kw1sWPBdTh+kD/lj6JvUuIRjqc0/PVgd XdUbfOYoJn6/tqu/f9aB/TdJbqeRPkjnyPND58o0lxS3s8ICivjo302rWsSTMWOt95//gRiBBOW 0b0x/Id3QWX8JfyAfjV+BNOJ6Dwi9TUD0QVh X-Received: by 2002:a05:693c:8858:b0:33e:8552:6e06 with SMTP id 5a478bee46e88-34f06674f4fmr5704006eec.0.1790964070137; Fri, 02 Oct 2026 11:01:10 -0700 (PDT) Received: from 192.168.1.109 ([2803:3c90:cee:ea00:5c3c:7e70:29e3:7a55]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-34f14f9f2afsm18075850eec.18.2026.10.02.11.01.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Oct 2026 11:01:09 -0700 (PDT) From: Manu To: pgsql-bugs@lists.postgresql.org Cc: chaturvedipalak1911@gmail.com, kehan5800@gmail.com Subject: Re: BUG #19701: GIN trigram index loses rows at similarity_threshold 0 Date: Fri, 02 Oct 2026 15:01:07 -0300 Message-ID: <179096406728.463468.10787135519393288680@gmail.com> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5772473012185991545==" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============5772473012185991545== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Hi Palak, > No further comments from me. The patch look good to me. Thanks for the review. Before anyone picks it up: cfbot fails v2 on the two Linux tasks (CF 7382). Those builds use -fsanitize=undefined, and the server aborts on the new "'' <<% t" query: runtime error: load of value 126, which is not a valid value for type 'bool' (calc_word_similarity, trgm_op.c:922) The bug is not in v2; v2 only reaches it. After its merge loop, calc_word_similarity() reads found[j] once more. When neither string has a trigram, found[] has no elements and that read is past its end (126 is 0x7E, the sentinel byte after a chunk in cassert builds). Master does the same with "SELECT word_similarity('', '')". The value never changes the result: with no trigrams in the second string the similarity is 0 without using it. v3 attached: 0001 checks len > 0 before that read, with a test for word_similarity('', ''). 0002 is v2, unchanged. Built with the same sanitizer flags as cfbot, plus --enable-cassert: master, 0001's test without its fix: aborts master + v2: aborts on '' <<% t master + v3: all 4 pg_trgm tests pass REL_14_STABLE + v3: all 4 pg_trgm tests pass Regards, Manu --===============5772473012185991545== Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v3-0001-Fix-out-of-bounds-read-in-pg_trgm-word-similarity.patch" MIME-Version: 1.0 RnJvbSAzMzBjNmZmNzQxNTc1YjMxOGI2YmYwMDEzMWNiY2E1NzZkMmUyMzg3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYW51ZWwgUmV5ZXMgQnJhdm8gPG1hbnVlbHJleWVzYnJhdm9A Z21haWwuY29tPgpEYXRlOiBGcmksIDIgT2N0IDIwMjYgMTQ6NDQ6NDQgLTAzMDAKU3ViamVjdDog W1BBVENIIHYzIDEvMl0gRml4IG91dC1vZi1ib3VuZHMgcmVhZCBpbiBwZ190cmdtIHdvcmQgc2lt aWxhcml0eQoKY2FsY193b3JkX3NpbWlsYXJpdHkoKSBsb29rcyBhdCBmb3VuZFtqXSBvbmNlIG1v cmUgYWZ0ZXIgaXRzIG1lcmdlCmxvb3AuICBXaGVuIG5laXRoZXIgc3RyaW5nIGhhcyBhIHRyaWdy YW0sIGFzIGluIHdvcmRfc2ltaWxhcml0eSgnJywKJycpLCBmb3VuZFtdIGhhcyBubyBlbGVtZW50 cyBhbmQgdGhhdCByZWFkIGlzIHBhc3QgaXRzIGVuZC4KClRoZSB2YWx1ZSBuZXZlciBhZmZlY3Rz IHRoZSByZXN1bHQ6IHdpdGggbm8gdHJpZ3JhbXMgaW4gdGhlIHNlY29uZApzdHJpbmcsIGl0ZXJh dGVfd29yZF9zaW1pbGFyaXR5KCkgcmV0dXJucyAwIHdpdGhvdXQgdXNpbmcgdWxlbjEuICBCdXQK aXQgaXMgdW5kZWZpbmVkIGJlaGF2aW9yLCBhbmQgYnVpbGRzIHdpdGggLWZzYW5pdGl6ZT11bmRl ZmluZWQgYWJvcnQKb24gaXQuICBjZmJvdCBoaXQgaXQgdGhyb3VnaCBhIHRlc3Qgd2l0aCBzdG9y ZWQgZW1wdHkgc3RyaW5ncyBpbiB0aGUKZml4IGZvciBidWcgIzE5NzAxLgoKQmFja3BhdGNoLXRo cm91Z2g6IDE0CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vMTk3MDEtYzg2MWE2MmU3 OWJmNDljZUBwb3N0Z3Jlc3FsLm9yZwotLS0KIGNvbnRyaWIvcGdfdHJnbS9leHBlY3RlZC9wZ193 b3JkX3RyZ20ub3V0IHwgNyArKysrKysrCiBjb250cmliL3BnX3RyZ20vc3FsL3BnX3dvcmRfdHJn bS5zcWwgICAgICB8IDMgKysrCiBjb250cmliL3BnX3RyZ20vdHJnbV9vcC5jICAgICAgICAgICAg ICAgICB8IDMgKystCiAzIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3RyZ20vZXhwZWN0ZWQvcGdfd29yZF90cmdt Lm91dCBiL2NvbnRyaWIvcGdfdHJnbS9leHBlY3RlZC9wZ193b3JkX3RyZ20ub3V0CmluZGV4IGM2 NmE2N2YzMGVmLi4xN2EzODMxZGZlNyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ190cmdtL2V4cGVj dGVkL3BnX3dvcmRfdHJnbS5vdXQKKysrIGIvY29udHJpYi9wZ190cmdtL2V4cGVjdGVkL3BnX3dv cmRfdHJnbS5vdXQKQEAgLTEwNTAsMyArMTA1MCwxMCBAQCBzZWxlY3QgKiBmcm9tIHRlc3RfdHJn bTIgd2hlcmUgdCB+ICcuKiR4JzsKIC0tLQogKDAgcm93cykKIAorLS0gTm8gdHJpZ3JhbXMgb24g ZWl0aGVyIHNpZGU6IG11c3Qgbm90IHJlYWQgcGFzdCB0aGUgZW5kIG9mIGFuIGVtcHR5IGFycmF5 CitTRUxFQ1Qgd29yZF9zaW1pbGFyaXR5KCcnLCAnJyksIHN0cmljdF93b3JkX3NpbWlsYXJpdHko JycsICcnKTsKKyB3b3JkX3NpbWlsYXJpdHkgfCBzdHJpY3Rfd29yZF9zaW1pbGFyaXR5IAorLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAw IHwgICAgICAgICAgICAgICAgICAgICAgMAorKDEgcm93KQorCmRpZmYgLS1naXQgYS9jb250cmli L3BnX3RyZ20vc3FsL3BnX3dvcmRfdHJnbS5zcWwgYi9jb250cmliL3BnX3RyZ20vc3FsL3BnX3dv cmRfdHJnbS5zcWwKaW5kZXggZDJhZGE0OTEzM2EuLjMwNDQwOTcyOGNjIDEwMDY0NAotLS0gYS9j b250cmliL3BnX3RyZ20vc3FsL3BnX3dvcmRfdHJnbS5zcWwKKysrIGIvY29udHJpYi9wZ190cmdt L3NxbC9wZ193b3JkX3RyZ20uc3FsCkBAIC00NiwzICs0Niw2IEBAIHNlbGVjdCB0LHdvcmRfc2lt aWxhcml0eSgnS2FiYW5rYWxhJyx0KSBhcyBzbWwgZnJvbSB0ZXN0X3RyZ20yIHdoZXJlIHQgJT4g J0thYmFuCiAKIC0tIHRlc3QgdW5zYXRpc2ZpYWJsZSBwYXR0ZXJuCiBzZWxlY3QgKiBmcm9tIHRl c3RfdHJnbTIgd2hlcmUgdCB+ICcuKiR4JzsKKworLS0gTm8gdHJpZ3JhbXMgb24gZWl0aGVyIHNp ZGU6IG11c3Qgbm90IHJlYWQgcGFzdCB0aGUgZW5kIG9mIGFuIGVtcHR5IGFycmF5CitTRUxFQ1Qg d29yZF9zaW1pbGFyaXR5KCcnLCAnJyksIHN0cmljdF93b3JkX3NpbWlsYXJpdHkoJycsICcnKTsK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdHJnbS90cmdtX29wLmMgYi9jb250cmliL3BnX3RyZ20v dHJnbV9vcC5jCmluZGV4IDIyYmNjM2MzMzYxLi4wMGNjMGU1ZTYzZSAxMDA2NDQKLS0tIGEvY29u dHJpYi9wZ190cmdtL3RyZ21fb3AuYworKysgYi9jb250cmliL3BnX3RyZ20vdHJnbV9vcC5jCkBA IC05MTksNyArOTE5LDggQEAgY2FsY193b3JkX3NpbWlsYXJpdHkoY2hhciAqc3RyMSwgaW50IHNs ZW4xLCBjaGFyICpzdHIyLCBpbnQgc2xlbjIsCiAJCQlmb3VuZFtqXSA9IHRydWU7CiAJCX0KIAl9 Ci0JaWYgKGZvdW5kW2pdKQorCS8qIFdpdGggbm8gdHJpZ3JhbXMgYXQgYWxsLCBmb3VuZFtdIGlz IGVtcHR5IGFuZCB0aGVyZSBpcyBubyBsYXN0IG9uZSAqLworCWlmIChsZW4gPiAwICYmIGZvdW5k W2pdKQogCQl1bGVuMSsrOwogCiAJLyogUnVuIGl0ZXJhdGl2ZSBwcm9jZWR1cmUgdG8gZmluZCBt YXhpbXVtIHNpbWlsYXJpdHkgd2l0aCB3b3JkICovCi0tIAoyLjU1LjAKCg== --===============5772473012185991545== Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v3-0002-Don-t-lose-rows-in-pg_trgm-index-scans-with-a-zer.patch" MIME-Version: 1.0 RnJvbSBlNjNiMjVmMzE0NWIzZDY1NjZkYmUzMmZjMzBkNGMzNTg4Yjg1ZTI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYW51IDxtYW51ZWxyZXllc2JyYXZvQGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMyBTZXAgMjAyNiAxNjoyMzoxMiAtMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjMgMi8y XSBEb24ndCBsb3NlIHJvd3MgaW4gcGdfdHJnbSBpbmRleCBzY2FucyB3aXRoIGEgemVybwogc2lt aWxhcml0eSB0aHJlc2hvbGQKClRoZSBzaW1pbGFyaXR5IG9wZXJhdG9ycyAoJSwgPCUgYW5kIDw8 JSkgYXJlIHRydWUgd2hlbiB0aGUgc2ltaWxhcml0eSBpcwpncmVhdGVyIHRoYW4gb3IgZXF1YWwg dG8gdGhlIHRocmVzaG9sZCwgYW5kIHplcm8gaXMgYSB2YWxpZCB0aHJlc2hvbGQsCnVuZGVyIHdo aWNoIGV2ZXJ5IHJvdyBtYXRjaGVzLiAgVGhlIGluZGV4ZXMgZGlkIG5vdCBmb2xsb3c6CgotIEEg R0lOIHNjYW4gb25seSB2aXNpdHMgdGhlIHJvd3MgdGhhdCBzaGFyZSBhIHRyaWdyYW0gd2l0aCB0 aGUgcXVlcnksCiAgc28gdGhlIHJvd3Mgd2l0aCBub25lIHdlcmUgbmV2ZXIgcmV0dXJuZWQuICBB c2sgZm9yIGEgZnVsbCBpbmRleCBzY2FuCiAgd2hlbiB0aGUgdGhyZXNob2xkIGlzIHplcm8sIGFz IGlzIGFscmVhZHkgZG9uZSB3aGVuIHRoZSBxdWVyeSBoYXMgbm8KICB0cmlncmFtcy4KCi0gV2hl biB0aGUgcXVlcnkgaGFzIG5vIHRyaWdyYW1zLCBib3RoIHRoZSBHSU4gY29uc2lzdGVudCBmdW5j dGlvbnMgYW5kCiAgdGhlIEdpU1QgY29uc2lzdGVudCBmdW5jdGlvbiBvbiBpbnRlcm5hbCBwYWdl cyByZWplY3RlZCBldmVyeXRoaW5nLAogIGFsdGhvdWdoIHRoZSBzaW1pbGFyaXR5IHdpdGggc3Vj aCBhIHF1ZXJ5IGlzIHplcm8sIHdoaWNoIGEgemVybwogIHRocmVzaG9sZCBhY2NlcHRzLgoKUmVw b3J0ZWQtYnk6IEtlIDxrZWhhbjU4MDBAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bv c3Rnci5lcy9tLzE5NzAxLWM4NjFhNjJlNzliZjQ5Y2VAcG9zdGdyZXNxbC5vcmcKLS0tCiBjb250 cmliL3BnX3RyZ20vZXhwZWN0ZWQvcGdfdHJnbS5vdXQgfCAxNzUgKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBjb250cmliL3BnX3RyZ20vc3FsL3BnX3RyZ20uc3FsICAgICAgfCAgNTEgKysr KysrKysKIGNvbnRyaWIvcGdfdHJnbS90cmdtX2dpbi5jICAgICAgICAgICB8ICAyNCArKystCiBj b250cmliL3BnX3RyZ20vdHJnbV9naXN0LmMgICAgICAgICAgfCAgIDYgKy0KIDQgZmlsZXMgY2hh bmdlZCwgMjUxIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29u dHJpYi9wZ190cmdtL2V4cGVjdGVkL3BnX3RyZ20ub3V0IGIvY29udHJpYi9wZ190cmdtL2V4cGVj dGVkL3BnX3RyZ20ub3V0CmluZGV4IDYxMjYyNWYxZmRhLi5jYzMwYTJlNjM2YSAxMDA2NDQKLS0t IGEvY29udHJpYi9wZ190cmdtL2V4cGVjdGVkL3BnX3RyZ20ub3V0CisrKyBiL2NvbnRyaWIvcGdf dHJnbS9leHBlY3RlZC9wZ190cmdtLm91dApAQCAtNTQ0OCwzICs1NDQ4LDE3OCBAQCBTRUxFQ1Qg RElTVElOQ1QgY2l0eSwgc2ltaWxhcml0eShjaXR5LCAnV2Fyc2F3JyksIHNob3dfbGltaXQoKQog IFdhcnNhdyB8ICAgICAgICAgIDEgfCAgICAgICAgMC41CiAoMSByb3cpCiAKKy0tIEEgdGhyZXNo b2xkIG9mIHplcm8gaXMgbWV0IGJ5IGV2ZXJ5IHJvdzogYnkgdGhlIHJvd3MgdGhhdCBzaGFyZSBu byB0cmlncmFtCistLSB3aXRoIHRoZSBxdWVyeSwgYW5kIGJ5IGFsbCBvZiB0aGVtIHdoZW4gdGhl IHF1ZXJ5IGhhcyBubyB0cmlncmFtcyBhdCBhbGwuCistLSBUaGUgaW5kZXhlcyBtdXN0IG5vdCBs b3NlIGFueSAoYnVnICMxOTcwMSkuCitTRUxFQ1Qgc2V0X2xpbWl0KDApOworIHNldF9saW1pdCAK Ky0tLS0tLS0tLS0tCisgICAgICAgICAwCisoMSByb3cpCisKK1NFVCBwZ190cmdtLndvcmRfc2lt aWxhcml0eV90aHJlc2hvbGQgPSAwOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50 KCopIEZST00gcmVzdGF1cmFudHMgV0hFUkUgY2l0eSAlICdXYXJzYXcnOworICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQor ICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gcmVzdGF1cmFudHMKKyAgICAgICAgIFJlY2hlY2sg Q29uZDogKGNpdHkgJSAnV2Fyc2F3Jzo6dGV4dCkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiByZXN0YXVyYW50c19jaXR5X2lkeAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KGNpdHkgJSAnV2Fyc2F3Jzo6dGV4dCkKKyg1IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9N IHJlc3RhdXJhbnRzIFdIRVJFIGNpdHkgJSAnV2Fyc2F3JzsKKyBjb3VudCAKKy0tLS0tLS0KKyAy MDAwMAorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSByZXN0YXVyYW50cyBXSEVSRSBj aXR5ICUgJyc7CisgY291bnQgCistLS0tLS0tCisgMjAwMDAKKygxIHJvdykKKworU0VMRUNUIGNv dW50KCopIEZST00gcmVzdGF1cmFudHMgV0hFUkUgJ1dhcnNhdycgPCUgY2l0eTsKKyBjb3VudCAK Ky0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitEUk9QIElOREVYIHJlc3RhdXJhbnRzX2NpdHlf aWR4OworQ1JFQVRFIElOREVYIE9OIHJlc3RhdXJhbnRzIFVTSU5HIGdpbihjaXR5IGdpbl90cmdt X29wcyk7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSByZXN0YXVy YW50cyBXSEVSRSBjaXR5ICUgJ1dhcnNhdyc7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFwIEhl YXAgU2NhbiBvbiByZXN0YXVyYW50cworICAgICAgICAgUmVjaGVjayBDb25kOiAoY2l0eSAlICdX YXJzYXcnOjp0ZXh0KQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHJlc3RhdXJh bnRzX2NpdHlfaWR4CisgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoY2l0eSAlICdXYXJzYXcn Ojp0ZXh0KQorKDUgcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gcmVzdGF1cmFudHMgV0hF UkUgY2l0eSAlICdXYXJzYXcnOworIGNvdW50IAorLS0tLS0tLQorIDIwMDAwCisoMSByb3cpCisK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHJlc3RhdXJhbnRzIFdIRVJFIGNpdHkgJSAnJzsKKyBjb3Vu dCAKKy0tLS0tLS0KKyAyMDAwMAorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSByZXN0 YXVyYW50cyBXSEVSRSAnV2Fyc2F3JyA8JSBjaXR5OworIGNvdW50IAorLS0tLS0tLQorIDIwMDAw CisoMSByb3cpCisKK1JFU0VUIHBnX3RyZ20ud29yZF9zaW1pbGFyaXR5X3RocmVzaG9sZDsKKy0t IFRoZSBzYW1lIGZvciByb3dzIHRoYXQgYXJlIHN0aWxsIGluIHRoZSBHSU4gcGVuZGluZyBsaXN0 LCBhbmQgZm9yIHN0cmljdAorLS0gd29yZCBzaW1pbGFyaXR5LCB3aXRoIGVtcHR5IHN0cmluZ3Mg YW5kIE5VTExzIHN0b3JlZC4gIEV2ZXJ5IG5vbi1OVUxMIHJvdworLS0gbXVzdCBiZSByZXR1cm5l ZC4KK1NFVCBwZ190cmdtLnN0cmljdF93b3JkX3NpbWlsYXJpdHlfdGhyZXNob2xkID0gMDsKK1NF VCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK0NSRUFURSBURU1QIFRBQkxFIHRyZ21femVybyAodCB0 ZXh0KTsKK0NSRUFURSBJTkRFWCB0cmdtX3plcm9faWR4IE9OIHRyZ21femVybworICBVU0lORyBn aW4gKHQgZ2luX3RyZ21fb3BzKSBXSVRIIChmYXN0dXBkYXRlID0gb24pOworSU5TRVJUIElOVE8g dHJnbV96ZXJvIFZBTFVFUyAoJ1dhcnNhdycpLCAoJ1N6Y3plY2luJyksICgnJyksICgnJyksIChO VUxMKTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRyZ21femVy byBXSEVSRSB0ICUgJyc7CisgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gdHJnbV96ZXJvCisgICAg ICAgICBSZWNoZWNrIENvbmQ6ICh0ICUgJyc6OnRleHQpCisgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gdHJnbV96ZXJvX2lkeAorICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKHQg JSAnJzo6dGV4dCkKKyg1IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRyZ21femVybyBX SEVSRSB0ICUgJyc7CisgY291bnQgCistLS0tLS0tCisgICAgIDQKKygxIHJvdykKKworU0VMRUNU IGNvdW50KCopIEZST00gdHJnbV96ZXJvIFdIRVJFIHQgJSAnV2Fyc2F3JzsKKyBjb3VudCAKKy0t LS0tLS0KKyAgICAgNAorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmdtX3plcm8g V0hFUkUgJycgPDwlIHQ7CisgY291bnQgCistLS0tLS0tCisgICAgIDQKKygxIHJvdykKKworU0VM RUNUIGNvdW50KCopIEZST00gdHJnbV96ZXJvIFdIRVJFICdXYXJzYXcnIDw8JSB0OworIGNvdW50 IAorLS0tLS0tLQorICAgICA0CisoMSByb3cpCisKK1NFTEVDVCBnaW5fY2xlYW5fcGVuZGluZ19s aXN0KCd0cmdtX3plcm9faWR4JykgPiAwIEFTIGNsZWFuZWQ7CisgY2xlYW5lZCAKKy0tLS0tLS0t LQorIHQKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00gdHJnbV96ZXJvIFdIRVJFIHQg JSAnJzsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgNAorKDEgcm93KQorCitTRUxFQ1QgY291bnQo KikgRlJPTSB0cmdtX3plcm8gV0hFUkUgdCAlICdXYXJzYXcnOworIGNvdW50IAorLS0tLS0tLQor ICAgICA0CisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRyZ21femVybyBXSEVSRSAn JyA8PCUgdDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgNAorKDEgcm93KQorCitTRUxFQ1QgY291 bnQoKikgRlJPTSB0cmdtX3plcm8gV0hFUkUgJ1dhcnNhdycgPDwlIHQ7CisgY291bnQgCistLS0t LS0tCisgICAgIDQKKygxIHJvdykKKworLS0gRW5vdWdoIHJvd3MgZm9yIHRoZSBHaVNUIGluZGV4 IHRvIGhhdmUgaW50ZXJuYWwgcGFnZXMuCitEUk9QIElOREVYIHRyZ21femVyb19pZHg7CitJTlNF UlQgSU5UTyB0cmdtX3plcm8gU0VMRUNUICdXYXJzYXcnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDEwMDApOworQ1JFQVRFIElOREVYIHRyZ21femVyb19pZHggT04gdHJnbV96ZXJvIFVTSU5HIGdp c3QgKHQgZ2lzdF90cmdtX29wcyk7CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQo KikgRlJPTSB0cmdtX3plcm8gV0hFUkUgJycgPDwlIHQ7CisgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4g b24gdHJnbV96ZXJvCisgICAgICAgICBGaWx0ZXI6ICgnJzo6dGV4dCA8PCUgdCkKKyAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiB0cmdtX3plcm9faWR4CisgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAodCAlPj4gJyc6OnRleHQpCisoNSByb3dzKQorCitTRUxFQ1QgY291bnQoKikg RlJPTSB0cmdtX3plcm8gV0hFUkUgJycgPDwlIHQ7CisgY291bnQgCistLS0tLS0tCisgIDEwMDQK KygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00gdHJnbV96ZXJvIFdIRVJFICdXYXJzYXcn IDw8JSB0OworIGNvdW50IAorLS0tLS0tLQorICAxMDA0CisoMSByb3cpCisKK0RST1AgVEFCTEUg dHJnbV96ZXJvOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitSRVNFVCBwZ190cmdtLnN0cmljdF93 b3JkX3NpbWlsYXJpdHlfdGhyZXNob2xkOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ190cmdtL3Nx bC9wZ190cmdtLnNxbCBiL2NvbnRyaWIvcGdfdHJnbS9zcWwvcGdfdHJnbS5zcWwKaW5kZXggNDlk Yjg2Y2FmN2QuLjI1MTRjZTVkN2YwIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3RyZ20vc3FsL3Bn X3RyZ20uc3FsCisrKyBiL2NvbnRyaWIvcGdfdHJnbS9zcWwvcGdfdHJnbS5zcWwKQEAgLTI0NCwz ICsyNDQsNTQgQEAgU0VMRUNUIERJU1RJTkNUIGNpdHksIHNpbWlsYXJpdHkoY2l0eSwgJ1dhcnNh dycpLCBzaG93X2xpbWl0KCkKIFNFTEVDVCBzZXRfbGltaXQoMC41KTsKIFNFTEVDVCBESVNUSU5D VCBjaXR5LCBzaW1pbGFyaXR5KGNpdHksICdXYXJzYXcnKSwgc2hvd19saW1pdCgpCiAgIEZST00g cmVzdGF1cmFudHMgV0hFUkUgY2l0eSAlICdXYXJzYXcnOworCistLSBBIHRocmVzaG9sZCBvZiB6 ZXJvIGlzIG1ldCBieSBldmVyeSByb3c6IGJ5IHRoZSByb3dzIHRoYXQgc2hhcmUgbm8gdHJpZ3Jh bQorLS0gd2l0aCB0aGUgcXVlcnksIGFuZCBieSBhbGwgb2YgdGhlbSB3aGVuIHRoZSBxdWVyeSBo YXMgbm8gdHJpZ3JhbXMgYXQgYWxsLgorLS0gVGhlIGluZGV4ZXMgbXVzdCBub3QgbG9zZSBhbnkg KGJ1ZyAjMTk3MDEpLgorU0VMRUNUIHNldF9saW1pdCgwKTsKK1NFVCBwZ190cmdtLndvcmRfc2lt aWxhcml0eV90aHJlc2hvbGQgPSAwOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50 KCopIEZST00gcmVzdGF1cmFudHMgV0hFUkUgY2l0eSAlICdXYXJzYXcnOworU0VMRUNUIGNvdW50 KCopIEZST00gcmVzdGF1cmFudHMgV0hFUkUgY2l0eSAlICdXYXJzYXcnOworU0VMRUNUIGNvdW50 KCopIEZST00gcmVzdGF1cmFudHMgV0hFUkUgY2l0eSAlICcnOworU0VMRUNUIGNvdW50KCopIEZS T00gcmVzdGF1cmFudHMgV0hFUkUgJ1dhcnNhdycgPCUgY2l0eTsKK0RST1AgSU5ERVggcmVzdGF1 cmFudHNfY2l0eV9pZHg7CitDUkVBVEUgSU5ERVggT04gcmVzdGF1cmFudHMgVVNJTkcgZ2luKGNp dHkgZ2luX3RyZ21fb3BzKTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHJlc3RhdXJhbnRzIFdIRVJFIGNpdHkgJSAnV2Fyc2F3JzsKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHJlc3RhdXJhbnRzIFdIRVJFIGNpdHkgJSAnV2Fyc2F3JzsKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHJlc3RhdXJhbnRzIFdIRVJFIGNpdHkgJSAnJzsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHJl c3RhdXJhbnRzIFdIRVJFICdXYXJzYXcnIDwlIGNpdHk7CitSRVNFVCBwZ190cmdtLndvcmRfc2lt aWxhcml0eV90aHJlc2hvbGQ7CisKKy0tIFRoZSBzYW1lIGZvciByb3dzIHRoYXQgYXJlIHN0aWxs IGluIHRoZSBHSU4gcGVuZGluZyBsaXN0LCBhbmQgZm9yIHN0cmljdAorLS0gd29yZCBzaW1pbGFy aXR5LCB3aXRoIGVtcHR5IHN0cmluZ3MgYW5kIE5VTExzIHN0b3JlZC4gIEV2ZXJ5IG5vbi1OVUxM IHJvdworLS0gbXVzdCBiZSByZXR1cm5lZC4KK1NFVCBwZ190cmdtLnN0cmljdF93b3JkX3NpbWls YXJpdHlfdGhyZXNob2xkID0gMDsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK0NSRUFURSBU RU1QIFRBQkxFIHRyZ21femVybyAodCB0ZXh0KTsKK0NSRUFURSBJTkRFWCB0cmdtX3plcm9faWR4 IE9OIHRyZ21femVybworICBVU0lORyBnaW4gKHQgZ2luX3RyZ21fb3BzKSBXSVRIIChmYXN0dXBk YXRlID0gb24pOworSU5TRVJUIElOVE8gdHJnbV96ZXJvIFZBTFVFUyAoJ1dhcnNhdycpLCAoJ1N6 Y3plY2luJyksICgnJyksICgnJyksIChOVUxMKTsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHRyZ21femVybyBXSEVSRSB0ICUgJyc7CitTRUxFQ1QgY291bnQoKikg RlJPTSB0cmdtX3plcm8gV0hFUkUgdCAlICcnOworU0VMRUNUIGNvdW50KCopIEZST00gdHJnbV96 ZXJvIFdIRVJFIHQgJSAnV2Fyc2F3JzsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRyZ21femVybyBX SEVSRSAnJyA8PCUgdDsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRyZ21femVybyBXSEVSRSAnV2Fy c2F3JyA8PCUgdDsKK1NFTEVDVCBnaW5fY2xlYW5fcGVuZGluZ19saXN0KCd0cmdtX3plcm9faWR4 JykgPiAwIEFTIGNsZWFuZWQ7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmdtX3plcm8gV0hFUkUg dCAlICcnOworU0VMRUNUIGNvdW50KCopIEZST00gdHJnbV96ZXJvIFdIRVJFIHQgJSAnV2Fyc2F3 JzsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRyZ21femVybyBXSEVSRSAnJyA8PCUgdDsKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHRyZ21femVybyBXSEVSRSAnV2Fyc2F3JyA8PCUgdDsKKy0tIEVub3Vn aCByb3dzIGZvciB0aGUgR2lTVCBpbmRleCB0byBoYXZlIGludGVybmFsIHBhZ2VzLgorRFJPUCBJ TkRFWCB0cmdtX3plcm9faWR4OworSU5TRVJUIElOVE8gdHJnbV96ZXJvIFNFTEVDVCAnV2Fyc2F3 JyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKTsKK0NSRUFURSBJTkRFWCB0cmdtX3plcm9f aWR4IE9OIHRyZ21femVybyBVU0lORyBnaXN0ICh0IGdpc3RfdHJnbV9vcHMpOworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gdHJnbV96ZXJvIFdIRVJFICcnIDw8JSB0 OworU0VMRUNUIGNvdW50KCopIEZST00gdHJnbV96ZXJvIFdIRVJFICcnIDw8JSB0OworU0VMRUNU IGNvdW50KCopIEZST00gdHJnbV96ZXJvIFdIRVJFICdXYXJzYXcnIDw8JSB0OworRFJPUCBUQUJM RSB0cmdtX3plcm87CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1JFU0VUIHBnX3RyZ20uc3RyaWN0 X3dvcmRfc2ltaWxhcml0eV90aHJlc2hvbGQ7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3RyZ20v dHJnbV9naW4uYyBiL2NvbnRyaWIvcGdfdHJnbS90cmdtX2dpbi5jCmluZGV4IDU3NjZiM2U5OTU1 Li4yNDNkNWJiZWVhOSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ190cmdtL3RyZ21fZ2luLmMKKysr IGIvY29udHJpYi9wZ190cmdtL3RyZ21fZ2luLmMKQEAgLTE2NSw2ICsxNjUsMTcgQEAgZ2luX2V4 dHJhY3RfcXVlcnlfdHJnbShQR19GVU5DVElPTl9BUkdTKQogCWlmICh0cmdsZW4gPT0gMCkKIAkJ KnNlYXJjaE1vZGUgPSBHSU5fU0VBUkNIX01PREVfQUxMOwogCisJLyoKKwkgKiBMaWtld2lzZSB3 aGVuIHRoZSBzaW1pbGFyaXR5IHRocmVzaG9sZCBpcyB6ZXJvOiBldmVyeSByb3cgc2F0aXNmaWVz IHRoZQorCSAqIG9wZXJhdG9yIHRoZW4sIGluY2x1ZGluZyB0aGUgcm93cyB0aGF0IHNoYXJlIG5v IHRyaWdyYW0gd2l0aCB0aGUgcXVlcnksCisJICogd2hpY2ggdGhlIGV4dHJhY3RlZCB0cmlncmFt cyBhbG9uZSB3b3VsZCBuZXZlciBsZWFkIHRvLgorCSAqLworCWlmICgoc3RyYXRlZ3kgPT0gU2lt aWxhcml0eVN0cmF0ZWd5TnVtYmVyIHx8CisJCSBzdHJhdGVneSA9PSBXb3JkU2ltaWxhcml0eVN0 cmF0ZWd5TnVtYmVyIHx8CisJCSBzdHJhdGVneSA9PSBTdHJpY3RXb3JkU2ltaWxhcml0eVN0cmF0 ZWd5TnVtYmVyKSAmJgorCQlpbmRleF9zdHJhdGVneV9nZXRfbGltaXQoc3RyYXRlZ3kpIDw9IDAu MCkKKwkJKnNlYXJjaE1vZGUgPSBHSU5fU0VBUkNIX01PREVfQUxMOworCiAJUEdfUkVUVVJOX1BP SU5URVIoZW50cmllcyk7CiB9CiAKQEAgLTIxNiw4ICsyMjcsMTEgQEAgZ2luX3RyZ21fY29uc2lz dGVudChQR19GVU5DVElPTl9BUkdTKQogCQkJICoganVzdCBieSBkZWZpbml0aW9uIGFuZCwgY29u c2VxdWVudGx5LCB1cHBlciBib3VuZCBvZgogCQkJICogc2ltaWxhcml0eSBpcyBqdXN0IGMgLyBs ZW4xLgogCQkJICogU28sIGluZGVwZW5kZW50bHkgb24gRElWVU5JT04gdGhlIHVwcGVyIGJvdW5k IGZvcm11bGEgaXMgdGhlIHNhbWUuCisJCQkgKgorCQkJICogQSBxdWVyeSB3aXRoIG5vIHRyaWdy YW1zIGhhcyBhIHNpbWlsYXJpdHkgb2YgemVybyB3aXRoIGFueQorCQkJICogdmFsdWUsIHdoaWNo IG9ubHkgYSB0aHJlc2hvbGQgb2YgemVybyBhY2NlcHRzLgogCQkJICovCi0JCQlyZXMgPSAobmtl eXMgPT0gMCkgPyBmYWxzZSA6CisJCQlyZXMgPSAobmtleXMgPT0gMCkgPyAobmxpbWl0IDw9IDAu MCkgOgogCQkJCSgoKCgoZmxvYXQ0KSBudHJ1ZSkgLyAoKGZsb2F0NCkgbmtleXMpKSkgPj0gbmxp bWl0KTsKIAkJCWJyZWFrOwogCQljYXNlIElMaWtlU3RyYXRlZ3lOdW1iZXI6CkBAIC0zMDIsOSAr MzE2LDExIEBAIGdpbl90cmdtX3RyaWNvbnNpc3RlbnQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCSAq IFNlZSBjb21tZW50IGluIGdpbl90cmdtX2NvbnNpc3RlbnQoKSBhYm91dCAqIHVwcGVyIGJvdW5k CiAJCQkgKiBmb3JtdWxhCiAJCQkgKi8KLQkJCXJlcyA9IChua2V5cyA9PSAwKQotCQkJCT8gR0lO X0ZBTFNFIDogKCgoKChmbG9hdDQpIG50cnVlKSAvICgoZmxvYXQ0KSBua2V5cykpID49IG5saW1p dCkKLQkJCQkJCQkgICA/IEdJTl9NQVlCRSA6IEdJTl9GQUxTRSk7CisJCQlpZiAobmtleXMgPT0g MCkKKwkJCQlyZXMgPSAobmxpbWl0IDw9IDAuMCkgPyBHSU5fTUFZQkUgOiBHSU5fRkFMU0U7CisJ CQllbHNlCisJCQkJcmVzID0gKCgoKChmbG9hdDQpIG50cnVlKSAvICgoZmxvYXQ0KSBua2V5cykp ID49IG5saW1pdCkKKwkJCQkJICAgPyBHSU5fTUFZQkUgOiBHSU5fRkFMU0UpOwogCQkJYnJlYWs7 CiAJCWNhc2UgSUxpa2VTdHJhdGVneU51bWJlcjoKICNpZm5kZWYgSUdOT1JFQ0FTRQpkaWZmIC0t Z2l0IGEvY29udHJpYi9wZ190cmdtL3RyZ21fZ2lzdC5jIGIvY29udHJpYi9wZ190cmdtL3RyZ21f Z2lzdC5jCmluZGV4IDQyZDBiN2E1ZDY1Li4wY2I2OGFjNzU3ZSAxMDA2NDQKLS0tIGEvY29udHJp Yi9wZ190cmdtL3RyZ21fZ2lzdC5jCisrKyBiL2NvbnRyaWIvcGdfdHJnbS90cmdtX2dpc3QuYwpA QCAtMzM1LDggKzMzNSwxMiBAQCBndHJnbV9jb25zaXN0ZW50KFBHX0ZVTkNUSU9OX0FSR1MpCiAJ CQkJaW50MzIJCWNvdW50ID0gY250X3NtbF9zaWduX2NvbW1vbihxdHJnLCBHRVRTSUdOKGtleSks IHNpZ2xlbik7CiAJCQkJaW50MzIJCWxlbiA9IEFSUk5FTEVNKHF0cmcpOwogCisJCQkJLyoKKwkJ CQkgKiBBIHF1ZXJ5IHdpdGggbm8gdHJpZ3JhbXMgaGFzIGEgc2ltaWxhcml0eSBvZiB6ZXJvIHdp dGggYW55CisJCQkJICogdmFsdWUsIHdoaWNoIG9ubHkgYSB0aHJlc2hvbGQgb2YgemVybyBhY2Nl cHRzLgorCQkJCSAqLwogCQkJCWlmIChsZW4gPT0gMCkKLQkJCQkJcmVzID0gZmFsc2U7CisJCQkJ CXJlcyA9IChubGltaXQgPD0gMC4wKTsKIAkJCQllbHNlCiAJCQkJCXJlcyA9ICgoKCgoZmxvYXQ4 KSBjb3VudCkgLyAoKGZsb2F0OCkgbGVuKSkpID49IG5saW1pdCk7CiAJCQl9Ci0tIAoyLjU1LjAK Cg== --===============5772473012185991545==--