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 1lUIZx-0000nm-FL for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Apr 2021 00:31:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lUIZw-0001v5-4s for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Apr 2021 00:31:24 +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 1lUIZv-0001uy-Nu for pgsql-hackers@lists.postgresql.org; Thu, 08 Apr 2021 00:31:23 +0000 Received: from mail-io1-xd31.google.com ([2607:f8b0:4864:20::d31]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1lUIZs-0007WS-AE for pgsql-hackers@postgresql.org; Thu, 08 Apr 2021 00:31:23 +0000 Received: by mail-io1-xd31.google.com with SMTP id x17so388901iog.2 for ; Wed, 07 Apr 2021 17:31:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=F75CQ3E4VyrgE8qr0WKgCI72yK0rTBT5iLvy9bE+sP0=; b=h1kts3kStk8Gny2cOlTNzV7DN4Z92elaQ7N/oeAuBFakBhJQXqqwuJP77G7ON6HsvQ 65d7VLyWblt4xyQphJ4+Igj7xzNP3WYjtCDmJrUBigXCirtwWNZgl3qYvNfKaRnQ8gen NXaVVyMbWKhPN8/RWvLdom1d3l0GGl9pp4THDj+03XF5VgnwjtcNIzGPe5RLiCHJoJeY TmtpSgzQFHE14oQdbZvvmV86oD4IajU0auJtRhSJOasnZEAXGpv1EE2LZzJwp80iW6+A FCee+MxlIfrQ1na5rAIxtwUI5ELZT1PiZ4IDPeVH8hV6URioVoZZHJUaLhjnxeJtgPyD HaUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=F75CQ3E4VyrgE8qr0WKgCI72yK0rTBT5iLvy9bE+sP0=; b=R24/bVdxWng/zapwIwpY2nm0EK7vCgRWiDNAEhylMfBrn9/C5v6e5iKzXeE95Hz/j2 zFFxs5qaFToyeS3x2191DelE3TOGNMzcpvyR4Q0mxLuBvz1uUEnbbxIdOzl0e13GOlgz zSCkdMr3bZpMJQuloJH3s23BT5T4c8CKsd6vxV8/XeKLXz+YF94flqLmlFZy5jX8CEhU j1yw0TWXkuCVFkDbb72/CHlGT1GBxSR+o9P2EZbRAJwDG6JAHdOtkdj/IG3AZGz47gzA Ng80RBu6PqO7+HgLmL3v+OermG6e2G3WxxZbvGCqxKd8vsuVFLYytHM48I8IgeZH7aix rj6A== X-Gm-Message-State: AOAM532WAFqZoMbHE1hYdfKdpdnL8Q9K0ivAYNIwaa+qjWxVZAB3StoK RN/qRFe1NdoFIP7D9F3uKlecpNeQg/bCkPfEIYc= X-Google-Smtp-Source: ABdhPJwbwRMBU3EHgimmlOjvYbpQZJ6ER+SaalYWtCenz+NuVoUdq9e1tuEojPfPb0cECdS8kZYDW2TW161ITC7TMvw= X-Received: by 2002:a02:c50f:: with SMTP id s15mr6027457jam.133.1617841878287; Wed, 07 Apr 2021 17:31:18 -0700 (PDT) MIME-Version: 1.0 References: <20201028013651.de5cj2xadgmba5nf@development> <13D8FD63-559A-4737-B7FD-05288D1CEF8B@yandex-team.ru> <20201028233243.ygm6yqlynkqpzekr@development> <43F3DE92-F236-4EA5-B4D6-39BEF6BD849D@yandex-team.ru> <20201029134933.xd4mh2cofuf6tdfz@development> <65C1B4BA-D16F-4939-978B-AC8F370F5A5E@yandex-team.ru> <9b4d17df-b811-8323-16be-3cab913216d1@enterprisedb.com> <35862787-8b4d-a290-789e-6e12dc6527e8@enterprisedb.com> <13F86913-C01B-4983-AE2E-493F5A028280@yandex-team.ru> <6ba7eae2-8b0c-0690-11a5-e921e6586180@darold.net> <3F5E23A3-6250-486E-9CCA-E2A5B6A28B4F@yandex-team.ru> <636f694a-4d69-d6d9-78d1-c88714f3e2e0@darold.net> <3319917a-679e-b07d-b194-473552b72082@darold.net> <1E3DD5BF-A54E-4203-86C5-94C9EFA0E095@yandex-team.ru> <04ae150b-6442-148a-bb23-77082f6fca1d@darold.net> <3768803E-4794-409D-88D2-C3EF7CA1B7FC@yandex-team.ru> <75B95FDD-2BE0-4525-8BDD-FC67C8BCBD53@yandex-team.ru> <88CB7042-6181-4EF4-8B25-61EC5E5725D4@yandex-team.ru> <018EF641-FC9D-4BA9-A458-6842E27E91C2@yandex-team.ru> <27D90FFC-B897-4BC5-B4F5-9047B9886AA3@yandex-team.ru> <15CA416B-3446-462D-902B-4883DD3ADEE6@yandex-team.ru> In-Reply-To: <15CA416B-3446-462D-902B-4883DD3ADEE6@yandex-team.ru> From: Thomas Munro Date: Thu, 8 Apr 2021 12:30:41 +1200 Message-ID: Subject: Re: MultiXact\SLRU buffers configuration To: Andrey Borodin Cc: Gilles Darold , Tomas Vondra , Tomas Vondra , Alexander Korotkov , Anastasia Lubennikova , Daniel Gustafsson , Kyotaro Horiguchi , pgsql-hackers Content-Type: multipart/mixed; boundary="00000000000075776505bf6b2ae2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000075776505bf6b2ae2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Apr 8, 2021 at 12:13 AM Andrey Borodin wrote= : > > 7 =D0=B0=D0=BF=D1=80. 2021 =D0=B3., =D0=B2 14:44, Andrey Borodin =D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BB(=D0=B0): > > Maybe instead of fully associative cache with random replacement we cou= ld use 1-associative cache? > > i.e. each page can reside only in one spcific buffer slot. If there's s= omething else - evict it. > > I think this would be as efficient as RR cache. And it's soooo fast. > > I thought a bit more and understood that RR is protected from two competi= ng pages in working set, while 1-associative cache is not. So, discard that= idea. It's an interesting idea. I know that at least one proprietary fork just puts the whole CLOG in memory for direct indexing, which is what we'd have here if we said "oh, your xact_buffers setting is so large I'm just going to use slotno =3D pageno & mask". Here's another approach that is a little less exciting than "tournament RR" (or whatever that should be called; I couldn't find an established name for it). This version is just our traditional linear search, except that it stops at 128, and remembers where to start from next time (like a sort of Fisher-Price GCLOCK hand). This feels more committable to me. You can argue that all buffers above 128 are bonus buffers that PostgreSQL 13 didn't have, so the fact that we can no longer find the globally least recently used page when you set xact_buffers > 128 doesn't seem too bad to me, as an incremental step (but to be clear, of course we can do better than this with more work in later releases). --00000000000075776505bf6b2ae2 Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0001-Add-a-buffer-mapping-table-for-SLRUs.patch" Content-Disposition: attachment; filename="v16-0001-Add-a-buffer-mapping-table-for-SLRUs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kn8589yl0 RnJvbSA3MmViZDUwNTI4NTFhYTRiOWFhMjgxZGYzMGI5YmY0MmMwYWQ1ZGU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFRodSwgMjUgTWFyIDIwMjEgMTA6MTE6MzEgKzEzMDAKU3ViamVjdDogW1BBVENIIHYx NiAxLzNdIEFkZCBhIGJ1ZmZlciBtYXBwaW5nIHRhYmxlIGZvciBTTFJVcy4KCkluc3RlYWQgb2Yg ZG9pbmcgYSBsaW5lYXIgc2VhcmNoIGZvciB0aGUgYnVmZmVyIGhvbGRpbmcgYSBnaXZlbiBwYWdl Cm51bWJlciwgdXNlIGEgaGFzaCB0YWJsZS4gIFRoaXMgd2lsbCBhbGxvdyB1cyB0byBpbmNyZWFz ZSB0aGUgc2l6ZSBvZgp0aGVzZSBjYWNoZXMuCgpSZXZpZXdlZC1ieTogQW5kcmV5IE0uIEJvcm9k aW4gPHg0bW1tQHlhbmRleC10ZWFtLnJ1PgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t LzJCRUMyQjNGLTlCNjEtNEMxRC05RkI1LTVGQUIwRjA1RUY4NiU0MHlhbmRleC10ZWFtLnJ1Ci0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc2xydS5jIHwgMTIxICsrKysrKysrKysrKysr KysrKysrKysrKystLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUuaCAgICAgICAgIHwgICAy ICsKIDIgZmlsZXMgY2hhbmdlZCwgMTAzIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYwppbmRleCA4MjE0OWFkNzgyLi44MmM2MWM0NzViIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vc2xydS5jCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAi cGdzdGF0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ht ZW0uaCIKKyNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAKICNkZWZpbmUgU2xydUZpbGVOYW1l KGN0bCwgcGF0aCwgc2VnKSBcCiAJc25wcmludGYocGF0aCwgTUFYUEdQQVRILCAiJXMvJTA0WCIs IChjdGwpLT5EaXIsIHNlZykKQEAgLTc5LDYgKzgwLDEyIEBAIHR5cGVkZWYgc3RydWN0IFNscnVX cml0ZUFsbERhdGEKIAogdHlwZWRlZiBzdHJ1Y3QgU2xydVdyaXRlQWxsRGF0YSAqU2xydVdyaXRl QWxsOwogCit0eXBlZGVmIHN0cnVjdCBTbHJ1TWFwcGluZ1RhYmxlRW50cnkKK3sKKwlpbnQJCQlw YWdlbm87CisJaW50CQkJc2xvdG5vOworfSBTbHJ1TWFwcGluZ1RhYmxlRW50cnk7CisKIC8qCiAg KiBQb3B1bGF0ZSBhIGZpbGUgdGFnIGRlc2NyaWJpbmcgYSBzZWdtZW50IGZpbGUuICBXZSBvbmx5 IHVzZSB0aGUgc2VnbWVudAogICogbnVtYmVyLCBzaW5jZSB3ZSBjYW4gZGVyaXZlIGV2ZXJ5dGhp bmcgZWxzZSB3ZSBuZWVkIGJ5IGhhdmluZyBzZXBhcmF0ZQpAQCAtMTQ2LDEzICsxNTMsMTYgQEAg c3RhdGljIGludAlTbHJ1U2VsZWN0TFJVUGFnZShTbHJ1Q3RsIGN0bCwgaW50IHBhZ2Vubyk7CiBz dGF0aWMgYm9vbCBTbHJ1U2NhbkRpckNiRGVsZXRlQ3V0b2ZmKFNscnVDdGwgY3RsLCBjaGFyICpm aWxlbmFtZSwKIAkJCQkJCQkJCSAgaW50IHNlZ3BhZ2UsIHZvaWQgKmRhdGEpOwogc3RhdGljIHZv aWQgU2xydUludGVybmFsRGVsZXRlU2VnbWVudChTbHJ1Q3RsIGN0bCwgaW50IHNlZ25vKTsKK3N0 YXRpYyB2b2lkCVNscnVNYXBwaW5nQWRkKFNscnVDdGwgY3RsLCBpbnQgcGFnZW5vLCBpbnQgc2xv dG5vKTsKK3N0YXRpYyB2b2lkCVNscnVNYXBwaW5nUmVtb3ZlKFNscnVDdGwgY3RsLCBpbnQgcGFn ZW5vKTsKK3N0YXRpYyBpbnQJU2xydU1hcHBpbmdGaW5kKFNscnVDdGwgY3RsLCBpbnQgcGFnZW5v KTsKIAogLyoKICAqIEluaXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkKICAqLwogCi1TaXpl Ci1TaW1wbGVMcnVTaG1lbVNpemUoaW50IG5zbG90cywgaW50IG5sc25zKQorc3RhdGljIFNpemUK K1NpbXBsZUxydVN0cnVjdFNpemUoaW50IG5zbG90cywgaW50IG5sc25zKQogewogCVNpemUJCXN6 OwogCkBAIC0xNjcsMTAgKzE3NywxNiBAQCBTaW1wbGVMcnVTaG1lbVNpemUoaW50IG5zbG90cywg aW50IG5sc25zKQogCiAJaWYgKG5sc25zID4gMCkKIAkJc3ogKz0gTUFYQUxJR04obnNsb3RzICog bmxzbnMgKiBzaXplb2YoWExvZ1JlY1B0cikpOwkvKiBncm91cF9sc25bXSAqLwotCiAJcmV0dXJu IEJVRkZFUkFMSUdOKHN6KSArIEJMQ0tTWiAqIG5zbG90czsKIH0KIAorU2l6ZQorU2ltcGxlTHJ1 U2htZW1TaXplKGludCBuc2xvdHMsIGludCBubHNucykKK3sKKwlyZXR1cm4gU2ltcGxlTHJ1U3Ry dWN0U2l6ZShuc2xvdHMsIG5sc25zKSArCisJCWhhc2hfZXN0aW1hdGVfc2l6ZShuc2xvdHMsIHNp emVvZihTbHJ1TWFwcGluZ1RhYmxlRW50cnkpKTsKK30KKwogLyoKICAqIEluaXRpYWxpemUsIG9y IGF0dGFjaCB0bywgYSBzaW1wbGUgTFJVIGNhY2hlIGluIHNoYXJlZCBtZW1vcnkuCiAgKgpAQCAt MTg3LDExICsyMDMsMTQgQEAgU2ltcGxlTHJ1SW5pdChTbHJ1Q3RsIGN0bCwgY29uc3QgY2hhciAq bmFtZSwgaW50IG5zbG90cywgaW50IG5sc25zLAogCQkJICBMV0xvY2sgKmN0bGxvY2ssIGNvbnN0 IGNoYXIgKnN1YmRpciwgaW50IHRyYW5jaGVfaWQsCiAJCQkgIFN5bmNSZXF1ZXN0SGFuZGxlciBz eW5jX2hhbmRsZXIpCiB7CisJY2hhcgkJbWFwcGluZ190YWJsZV9uYW1lW1NITUVNX0lOREVYX0tF WVNJWkVdOworCUhBU0hDVEwJCW1hcHBpbmdfdGFibGVfaW5mbzsKKwlIVEFCCSAgICptYXBwaW5n X3RhYmxlOwogCVNscnVTaGFyZWQJc2hhcmVkOwogCWJvb2wJCWZvdW5kOwogCiAJc2hhcmVkID0g KFNscnVTaGFyZWQpIFNobWVtSW5pdFN0cnVjdChuYW1lLAotCQkJCQkJCQkJCSAgU2ltcGxlTHJ1 U2htZW1TaXplKG5zbG90cywgbmxzbnMpLAorCQkJCQkJCQkJCSAgU2ltcGxlTHJ1U3RydWN0U2l6 ZShuc2xvdHMsIG5sc25zKSwKIAkJCQkJCQkJCQkgICZmb3VuZCk7CiAKIAlpZiAoIUlzVW5kZXJQ b3N0bWFzdGVyKQpAQCAtMjU4LDExICsyNzcsMjEgQEAgU2ltcGxlTHJ1SW5pdChTbHJ1Q3RsIGN0 bCwgY29uc3QgY2hhciAqbmFtZSwgaW50IG5zbG90cywgaW50IG5sc25zLAogCWVsc2UKIAkJQXNz ZXJ0KGZvdW5kKTsKIAorCS8qIENyZWF0ZSBvciBmaW5kIHRoZSBidWZmZXIgbWFwcGluZyB0YWJs ZS4gKi8KKwltZW1zZXQoJm1hcHBpbmdfdGFibGVfaW5mbywgMCwgc2l6ZW9mKG1hcHBpbmdfdGFi bGVfaW5mbykpOworCW1hcHBpbmdfdGFibGVfaW5mby5rZXlzaXplID0gc2l6ZW9mKGludCk7CisJ bWFwcGluZ190YWJsZV9pbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihTbHJ1TWFwcGluZ1RhYmxlRW50 cnkpOworCXNucHJpbnRmKG1hcHBpbmdfdGFibGVfbmFtZSwgc2l6ZW9mKG1hcHBpbmdfdGFibGVf bmFtZSksCisJCQkgIiVzIExvb2t1cCBUYWJsZSIsIG5hbWUpOworCW1hcHBpbmdfdGFibGUgPSBT aG1lbUluaXRIYXNoKG1hcHBpbmdfdGFibGVfbmFtZSwgbnNsb3RzLCBuc2xvdHMsCisJCQkJCQkJ CSAgJm1hcHBpbmdfdGFibGVfaW5mbywgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisKIAkvKgog CSAqIEluaXRpYWxpemUgdGhlIHVuc2hhcmVkIGNvbnRyb2wgc3RydWN0LCBpbmNsdWRpbmcgZGly ZWN0b3J5IHBhdGguIFdlCiAJICogYXNzdW1lIGNhbGxlciBzZXQgUGFnZVByZWNlZGVzLgogCSAq LwogCWN0bC0+c2hhcmVkID0gc2hhcmVkOworCWN0bC0+bWFwcGluZ190YWJsZSA9IG1hcHBpbmdf dGFibGU7CiAJY3RsLT5zeW5jX2hhbmRsZXIgPSBzeW5jX2hhbmRsZXI7CiAJc3RybGNweShjdGwt PkRpciwgc3ViZGlyLCBzaXplb2YoY3RsLT5EaXIpKTsKIH0KQEAgLTI4OSw2ICszMTgsOSBAQCBT aW1wbGVMcnVaZXJvUGFnZShTbHJ1Q3RsIGN0bCwgaW50IHBhZ2VubykKIAkJICAgc2hhcmVkLT5w YWdlX251bWJlcltzbG90bm9dID09IHBhZ2Vubyk7CiAKIAkvKiBNYXJrIHRoZSBzbG90IGFzIGNv bnRhaW5pbmcgdGhpcyBwYWdlICovCisJaWYgKHNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSAh PSBTTFJVX1BBR0VfRU1QVFkpCisJCVNscnVNYXBwaW5nUmVtb3ZlKGN0bCwgc2hhcmVkLT5wYWdl X251bWJlcltzbG90bm9dKTsKKwlTbHJ1TWFwcGluZ0FkZChjdGwsIHBhZ2Vubywgc2xvdG5vKTsK IAlzaGFyZWQtPnBhZ2VfbnVtYmVyW3Nsb3Rub10gPSBwYWdlbm87CiAJc2hhcmVkLT5wYWdlX3N0 YXR1c1tzbG90bm9dID0gU0xSVV9QQUdFX1ZBTElEOwogCXNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90 bm9dID0gdHJ1ZTsKQEAgLTM2Miw3ICszOTQsMTAgQEAgU2ltcGxlTHJ1V2FpdElPKFNscnVDdGwg Y3RsLCBpbnQgc2xvdG5vKQogCQl7CiAJCQkvKiBpbmRlZWQsIHRoZSBJL08gbXVzdCBoYXZlIGZh aWxlZCAqLwogCQkJaWYgKHNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9PSBTTFJVX1BBR0Vf UkVBRF9JTl9QUk9HUkVTUykKKwkJCXsKKwkJCQlTbHJ1TWFwcGluZ1JlbW92ZShjdGwsIHNoYXJl ZC0+cGFnZV9udW1iZXJbc2xvdG5vXSk7CiAJCQkJc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9d ID0gU0xSVV9QQUdFX0VNUFRZOworCQkJfQogCQkJZWxzZQkJCQkvKiB3cml0ZV9pbl9wcm9ncmVz cyAqLwogCQkJewogCQkJCXNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9IFNMUlVfUEFHRV9W QUxJRDsKQEAgLTQzNiw2ICs0NzEsOSBAQCBTaW1wbGVMcnVSZWFkUGFnZShTbHJ1Q3RsIGN0bCwg aW50IHBhZ2VubywgYm9vbCB3cml0ZV9vaywKIAkJCQkhc2hhcmVkLT5wYWdlX2RpcnR5W3Nsb3Ru b10pKTsKIAogCQkvKiBNYXJrIHRoZSBzbG90IHJlYWQtYnVzeSAqLworCQlpZiAoc2hhcmVkLT5w YWdlX3N0YXR1c1tzbG90bm9dICE9IFNMUlVfUEFHRV9FTVBUWSkKKwkJCVNscnVNYXBwaW5nUmVt b3ZlKGN0bCwgc2hhcmVkLT5wYWdlX251bWJlcltzbG90bm9dKTsKKwkJU2xydU1hcHBpbmdBZGQo Y3RsLCBwYWdlbm8sIHNsb3Rubyk7CiAJCXNoYXJlZC0+cGFnZV9udW1iZXJbc2xvdG5vXSA9IHBh Z2VubzsKIAkJc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dID0gU0xSVV9QQUdFX1JFQURfSU5f UFJPR1JFU1M7CiAJCXNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dID0gZmFsc2U7CkBAIC00NTks NyArNDk3LDEzIEBAIFNpbXBsZUxydVJlYWRQYWdlKFNscnVDdGwgY3RsLCBpbnQgcGFnZW5vLCBi b29sIHdyaXRlX29rLAogCQkJICAgc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dID09IFNMUlVf UEFHRV9SRUFEX0lOX1BST0dSRVNTICYmCiAJCQkgICAhc2hhcmVkLT5wYWdlX2RpcnR5W3Nsb3Ru b10pOwogCi0JCXNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSA9IG9rID8gU0xSVV9QQUdFX1ZB TElEIDogU0xSVV9QQUdFX0VNUFRZOworCQlpZiAob2spCisJCQlzaGFyZWQtPnBhZ2Vfc3RhdHVz W3Nsb3Rub10gPSBTTFJVX1BBR0VfVkFMSUQ7CisJCWVsc2UKKwkJeworCQkJU2xydU1hcHBpbmdS ZW1vdmUoY3RsLCBwYWdlbm8pOworCQkJc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dID0gIFNM UlVfUEFHRV9FTVBUWTsKKwkJfQogCiAJCUxXTG9ja1JlbGVhc2UoJnNoYXJlZC0+YnVmZmVyX2xv Y2tzW3Nsb3Rub10ubG9jayk7CiAKQEAgLTUwMCwyMCArNTQ0LDIwIEBAIFNpbXBsZUxydVJlYWRQ YWdlX1JlYWRPbmx5KFNscnVDdGwgY3RsLCBpbnQgcGFnZW5vLCBUcmFuc2FjdGlvbklkIHhpZCkK IAlMV0xvY2tBY3F1aXJlKHNoYXJlZC0+Q29udHJvbExvY2ssIExXX1NIQVJFRCk7CiAKIAkvKiBT ZWUgaWYgcGFnZSBpcyBhbHJlYWR5IGluIGEgYnVmZmVyICovCi0JZm9yIChzbG90bm8gPSAwOyBz bG90bm8gPCBzaGFyZWQtPm51bV9zbG90czsgc2xvdG5vKyspCisJc2xvdG5vID0gU2xydU1hcHBp bmdGaW5kKGN0bCwgcGFnZW5vKTsKKwlpZiAoc2xvdG5vID49IDAgJiYKKwkJc2hhcmVkLT5wYWdl X3N0YXR1c1tzbG90bm9dICE9IFNMUlVfUEFHRV9SRUFEX0lOX1BST0dSRVNTKQogCXsKLQkJaWYg KHNoYXJlZC0+cGFnZV9udW1iZXJbc2xvdG5vXSA9PSBwYWdlbm8gJiYKLQkJCXNoYXJlZC0+cGFn ZV9zdGF0dXNbc2xvdG5vXSAhPSBTTFJVX1BBR0VfRU1QVFkgJiYKLQkJCXNoYXJlZC0+cGFnZV9z dGF0dXNbc2xvdG5vXSAhPSBTTFJVX1BBR0VfUkVBRF9JTl9QUk9HUkVTUykKLQkJewotCQkJLyog U2VlIGNvbW1lbnRzIGZvciBTbHJ1UmVjZW50bHlVc2VkIG1hY3JvICovCi0JCQlTbHJ1UmVjZW50 bHlVc2VkKHNoYXJlZCwgc2xvdG5vKTsKKwkJQXNzZXJ0KHNoYXJlZC0+cGFnZV9zdGF0dXNbc2xv dG5vXSAhPSBTTFJVX1BBR0VfRU1QVFkpOworCQlBc3NlcnQoc2hhcmVkLT5wYWdlX251bWJlcltz bG90bm9dID09IHBhZ2Vubyk7CiAKLQkJCS8qIHVwZGF0ZSB0aGUgc3RhdHMgY291bnRlciBvZiBw YWdlcyBmb3VuZCBpbiB0aGUgU0xSVSAqLwotCQkJcGdzdGF0X2NvdW50X3NscnVfcGFnZV9oaXQo c2hhcmVkLT5zbHJ1X3N0YXRzX2lkeCk7CisJCS8qIFNlZSBjb21tZW50cyBmb3IgU2xydVJlY2Vu dGx5VXNlZCBtYWNybyAqLworCQlTbHJ1UmVjZW50bHlVc2VkKHNoYXJlZCwgc2xvdG5vKTsKIAot CQkJcmV0dXJuIHNsb3RubzsKLQkJfQorCQkvKiB1cGRhdGUgdGhlIHN0YXRzIGNvdW50ZXIgb2Yg cGFnZXMgZm91bmQgaW4gdGhlIFNMUlUgKi8KKwkJcGdzdGF0X2NvdW50X3NscnVfcGFnZV9oaXQo c2hhcmVkLT5zbHJ1X3N0YXRzX2lkeCk7CisKKwkJcmV0dXJuIHNsb3RubzsKIAl9CiAKIAkvKiBO byBsdWNrLCBzbyBzd2l0Y2ggdG8gbm9ybWFsIGV4Y2x1c2l2ZSBsb2NrIGFuZCBkbyByZWd1bGFy IHJlYWQgKi8KQEAgLTEwMjksMTEgKzEwNzMsMTIgQEAgU2xydVNlbGVjdExSVVBhZ2UoU2xydUN0 bCBjdGwsIGludCBwYWdlbm8pCiAJCWludAkJCWJlc3RfaW52YWxpZF9wYWdlX251bWJlciA9IDA7 CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIAogCQkvKiBTZWUgaWYgcGFnZSBhbHJlYWR5IGhh cyBhIGJ1ZmZlciBhc3NpZ25lZCAqLwotCQlmb3IgKHNsb3RubyA9IDA7IHNsb3RubyA8IHNoYXJl ZC0+bnVtX3Nsb3RzOyBzbG90bm8rKykKKwkJc2xvdG5vID0gU2xydU1hcHBpbmdGaW5kKGN0bCwg cGFnZW5vKTsKKwkJaWYgKHNsb3RubyA+PSAwKQogCQl7Ci0JCQlpZiAoc2hhcmVkLT5wYWdlX251 bWJlcltzbG90bm9dID09IHBhZ2VubyAmJgotCQkJCXNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5v XSAhPSBTTFJVX1BBR0VfRU1QVFkpCi0JCQkJcmV0dXJuIHNsb3RubzsKKwkJCUFzc2VydChzaGFy ZWQtPnBhZ2VfbnVtYmVyW3Nsb3Rub10gPT0gcGFnZW5vKTsKKwkJCUFzc2VydChzaGFyZWQtPnBh Z2Vfc3RhdHVzW3Nsb3Rub10gIT0gU0xSVV9QQUdFX0VNUFRZKTsKKwkJCXJldHVybiBzbG90bm87 CiAJCX0KIAogCQkvKgpAQCAtMTI2Niw2ICsxMzExLDcgQEAgcmVzdGFydDo7CiAJCWlmIChzaGFy ZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gPT0gU0xSVV9QQUdFX1ZBTElEICYmCiAJCQkhc2hhcmVk LT5wYWdlX2RpcnR5W3Nsb3Rub10pCiAJCXsKKwkJCVNscnVNYXBwaW5nUmVtb3ZlKGN0bCwgc2hh cmVkLT5wYWdlX251bWJlcltzbG90bm9dKTsKIAkJCXNoYXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5v XSA9IFNMUlVfUEFHRV9FTVBUWTsKIAkJCWNvbnRpbnVlOwogCQl9CkBAIC0xMzQ4LDYgKzEzOTQs NyBAQCByZXN0YXJ0OgogCQlpZiAoc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dID09IFNMUlVf UEFHRV9WQUxJRCAmJgogCQkJIXNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKQogCQl7CisJCQlT bHJ1TWFwcGluZ1JlbW92ZShjdGwsIHNoYXJlZC0+cGFnZV9udW1iZXJbc2xvdG5vXSk7CiAJCQlz aGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gPSBTTFJVX1BBR0VfRU1QVFk7CiAJCQljb250aW51 ZTsKIAkJfQpAQCAtMTYwOSwzICsxNjU2LDM3IEBAIFNscnVTeW5jRmlsZVRhZyhTbHJ1Q3RsIGN0 bCwgY29uc3QgRmlsZVRhZyAqZnRhZywgY2hhciAqcGF0aCkKIAllcnJubyA9IHNhdmVfZXJybm87 CiAJcmV0dXJuIHJlc3VsdDsKIH0KKworc3RhdGljIGludAorU2xydU1hcHBpbmdGaW5kKFNscnVD dGwgY3RsLCBpbnQgcGFnZW5vKQoreworCVNscnVNYXBwaW5nVGFibGVFbnRyeSAqbWFwcGluZzsK KworCW1hcHBpbmcgPSBoYXNoX3NlYXJjaChjdGwtPm1hcHBpbmdfdGFibGUsICZwYWdlbm8sIEhB U0hfRklORCwgTlVMTCk7CisJaWYgKG1hcHBpbmcpCisJCXJldHVybiBtYXBwaW5nLT5zbG90bm87 CisKKwlyZXR1cm4gLTE7Cit9CisKK3N0YXRpYyB2b2lkCitTbHJ1TWFwcGluZ0FkZChTbHJ1Q3Rs IGN0bCwgaW50IHBhZ2VubywgaW50IHNsb3RubykKK3sKKwlTbHJ1TWFwcGluZ1RhYmxlRW50cnkg Km1hcHBpbmc7CisJYm9vbAkJZm91bmQgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOworCisJbWFw cGluZyA9IGhhc2hfc2VhcmNoKGN0bC0+bWFwcGluZ190YWJsZSwgJnBhZ2VubywgSEFTSF9FTlRF UiwgJmZvdW5kKTsKKwltYXBwaW5nLT5zbG90bm8gPSBzbG90bm87CisKKwlBc3NlcnQoIWZvdW5k KTsKK30KKworc3RhdGljIHZvaWQKK1NscnVNYXBwaW5nUmVtb3ZlKFNscnVDdGwgY3RsLCBpbnQg cGFnZW5vKQoreworCWJvb2wJCWZvdW5kIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKworCWhh c2hfc2VhcmNoKGN0bC0+bWFwcGluZ190YWJsZSwgJnBhZ2VubywgSEFTSF9SRU1PVkUsICZmb3Vu ZCk7CisKKwlBc3NlcnQoZm91bmQpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L3NscnUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmgKaW5kZXggZGQ1MmU4Y2VjNy4uOGFh M2VmYzBlZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUuaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3Mvc2xydS5oCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAiYWNjZXNz L3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJzdG9y YWdlL3N5bmMuaCIKKyNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAKIAogLyoKQEAgLTExMCw2 ICsxMTEsNyBAQCB0eXBlZGVmIFNscnVTaGFyZWREYXRhICpTbHJ1U2hhcmVkOwogdHlwZWRlZiBz dHJ1Y3QgU2xydUN0bERhdGEKIHsKIAlTbHJ1U2hhcmVkCXNoYXJlZDsKKwlIVEFCCSAgICptYXBw aW5nX3RhYmxlOwogCiAJLyoKIAkgKiBXaGljaCBzeW5jIGhhbmRsZXIgZnVuY3Rpb24gdG8gdXNl IHdoZW4gaGFuZGluZyBzeW5jIHJlcXVlc3RzIG92ZXIgdG8KLS0gCjIuMzAuMQoK --00000000000075776505bf6b2ae2 Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0002-Make-all-SLRU-buffer-sizes-configurable.patch" Content-Disposition: attachment; filename="v16-0002-Make-all-SLRU-buffer-sizes-configurable.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kn858c491 RnJvbSA5N2M1MDc4ZjY2MWE0MTYxNzQ1MDgyNjE3M2RkMjUyZmM0ZDBjODU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgQm9yb2RpbiA8YW1ib3JvZGluQGFjbS5vcmc+CkRh dGU6IE1vbiwgMTUgRmViIDIwMjEgMjE6NTE6NTYgKzA1MDAKU3ViamVjdDogW1BBVENIIHYxNiAy LzNdIE1ha2UgYWxsIFNMUlUgYnVmZmVyIHNpemVzIGNvbmZpZ3VyYWJsZS4KClByb3ZpZGUgbmV3 IEdVQ3MgdG8gc2V0IHRoZSBudW1iZXIgb2YgYnVmZmVycywgaW5zdGVhZCBvZiB1c2luZyBoYXJk CmNvZGVkIGRlZmF1bHRzLgoKUmVtb3ZlIHRoZSBsaW1pdHMgb24geGFjdF9idWZmZXJzIGFuZCBj b21taXRfdHNfYnVmZmVycy4gIFRoZSBkZWZhdWx0CnNpemVzIGZvciB0aG9zZSBjYWNoZXMgYXJl IH4wLjIlIGFuZCB+MC4xJSBvZiBzaGFyZWRfYnVmZmVycywgYXMgYmVmb3JlLApidXQgbm93IHRo ZXJlIGlzIG5vIGNhcCBhdCAxMjggYW5kIDE2IGJ1ZmZlcnMgcmVzcGVjdGl2ZWx5ICh1bmxlc3MK dHJhY2tfY29tbWl0X3RpbWVzdGFtcCBpcyBkaXNhYmxlZCwgaW4gdGhlIGxhdHRlciBjYXNlLCB0 aGVuIHdlIG1pZ2h0IGFzCndlbGwga2VlcCBpdCB0aW55KS4gIFNpemVzIG11Y2ggbGFyZ2VyIHRo YW4gdGhlIG9sZCBsaW1pdHMgaGF2ZSBiZWVuCnNob3duIHRvIGJlIHVzZWZ1bCBvbiBtb2Rlcm4g c3lzdGVtcywgYW5kIGFuIGVhcmxpZXIgY29tbWl0IHJlcGxhY2VkIGEKbGluZWFyIHNlYXJjaCB3 aXRoIGEgaGFzaCB0YWJsZSB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIGV4dHJlbWUgY2FzZXMuCgpB dXRob3I6IEFuZHJleSBNLiBCb3JvZGluIDx4NG1tbUB5YW5kZXgtdGVhbS5ydT4KUmV2aWV3ZWQt Ynk6IEFuYXN0YXNpYSBMdWJlbm5pa292YSA8YS5sdWJlbm5pa292YUBwb3N0Z3Jlc3Byby5ydT4K UmV2aWV3ZWQtYnk6IFRvbWFzIFZvbmRyYSA8dG9tYXMudm9uZHJhQDJuZHF1YWRyYW50LmNvbT4K UmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3JvdGtvdkBnbWFpbC5jb20+ClJl dmlld2VkLWJ5OiBHaWxsZXMgRGFyb2xkIDxnaWxsZXNAZGFyb2xkLm5ldD4KUmV2aWV3ZWQtYnk6 IFRob21hcyBNdW5ybyA8dGhvbWFzLm11bnJvQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6 Ly9wb3N0Z3IuZXMvbS8yQkVDMkIzRi05QjYxLTRDMUQtOUZCNS01RkFCMEYwNUVGODYlNDB5YW5k ZXgtdGVhbS5ydQotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAg ICAgICB8IDEzNSArKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L2Nsb2cuYyAgICAgICAgICAgICB8ICAyMyArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L2NvbW1pdF90cy5jICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v bXVsdGl4YWN0LmMgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9z dWJ0cmFucy5jICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMg ICAgICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRp Y2F0ZS5jICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMu YyAgICAgICAgICAgICAgfCAgIDggKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgICAg ICAgICAgICAgICAgICB8ICA5OSArKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9taXNj L3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDkgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9jbG9n LmggICAgICAgICAgICAgICAgICAgICB8ICAxMCArKwogc3JjL2luY2x1ZGUvYWNjZXNzL2NvbW1p dF90cy5oICAgICAgICAgICAgICAgIHwgICAxIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhh Y3QuaCAgICAgICAgICAgICAgICB8ICAgNCAtCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oICAg ICAgICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3N1YnRyYW5zLmgg ICAgICAgICAgICAgICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmggICAg ICAgICAgICAgICAgICB8ICAgNSAtCiBzcmMvaW5jbHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDcgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcmVkaWNhdGUuaCAgICAg ICAgICAgICAgIHwgICA0IC0KIDE4IGZpbGVzIGNoYW5nZWQsIDMwMSBpbnNlcnRpb25zKCspLCA0 NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggOTYzODI0ZDA1MC4uNThjNDZlZGY2MiAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbApAQCAtMTkyNCw2ICsxOTI0LDE0MSBAQCBpbmNsdWRlX2RpciAnY29uZi5kJwogICAg ICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgorICAg ICAKKyAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbXVsdGl4YWN0LW9mZnNldHMtYnVmZmVycyIg eHJlZmxhYmVsPSJtdWx0aXhhY3Rfb2Zmc2V0c19idWZmZXJzIj4KKyAgICAgIDx0ZXJtPjx2YXJu YW1lPm11bHRpeGFjdF9vZmZzZXRzX2J1ZmZlcnM8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90 eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+bXVsdGl4 YWN0X29mZnNldHNfYnVmZmVyczwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3By aW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRl bT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU3BlY2lmaWVzIHRoZSBhbW91bnQgb2Ygc2hhcmVk IG1lbW9yeSB0byB1c2UgdG8gY2FjaGUgdGhlIGNvbnRlbnRzCisgICAgICAgIG9mIDxsaXRlcmFs PnBnX211bHRpeGFjdC9vZmZzZXRzPC9saXRlcmFsPiAoc2VlCisgICAgICAgIDx4cmVmIGxpbmtl bmQ9InBnZGF0YS1jb250ZW50cy10YWJsZSIvPikuCisgICAgICAgIElmIHRoaXMgdmFsdWUgaXMg c3BlY2lmaWVkIHdpdGhvdXQgdW5pdHMsIGl0IGlzIHRha2VuIGFzIGJsb2NrcywKKyAgICAgICAg dGhhdCBpcyA8c3ltYm9sPkJMQ0tTWjwvc3ltYm9sPiBieXRlcywgdHlwaWNhbGx5IDhrQi4KKyAg ICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+ODwvbGl0ZXJhbD4uCisgICAgICAg IFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBhdCBzZXJ2ZXIgc3RhcnQuCisgICAgICAg PC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8 dmFybGlzdGVudHJ5IGlkPSJndWMtbXVsdGl4YWN0LW1lbWJlcnMtYnVmZmVycyIgeHJlZmxhYmVs PSJtdWx0aXhhY3RfbWVtYmVyc19idWZmZXJzIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPm11bHRp eGFjdF9tZW1iZXJzX2J1ZmZlcnM8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAg ICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+bXVsdGl4YWN0X21lbWJl cnNfYnVmZmVyczwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+Cisg ICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgU3BlY2lmaWVzIHRoZSBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSB0 byB1c2UgdG8gY2FjaGUgdGhlIGNvbnRlbnRzCisgICAgICAgIG9mIDxsaXRlcmFsPnBnX211bHRp eGFjdC9tZW1iZXJzPC9saXRlcmFsPiAoc2VlCisgICAgICAgIDx4cmVmIGxpbmtlbmQ9InBnZGF0 YS1jb250ZW50cy10YWJsZSIvPikuCisgICAgICAgIElmIHRoaXMgdmFsdWUgaXMgc3BlY2lmaWVk IHdpdGhvdXQgdW5pdHMsIGl0IGlzIHRha2VuIGFzIGJsb2NrcywKKyAgICAgICAgdGhhdCBpcyA8 c3ltYm9sPkJMQ0tTWjwvc3ltYm9sPiBieXRlcywgdHlwaWNhbGx5IDhrQi4KKyAgICAgICAgVGhl IGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+MTY8L2xpdGVyYWw+LgorICAgICAgICBUaGlzIHBh cmFtZXRlciBjYW4gb25seSBiZSBzZXQgYXQgc2VydmVyIHN0YXJ0LgorICAgICAgIDwvcGFyYT4K KyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAKKyAgICA8dmFy bGlzdGVudHJ5IGlkPSJndWMtc3VidHJhbnMtYnVmZmVycyIgeHJlZmxhYmVsPSJzdWJ0cmFuc19i dWZmZXJzIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPnN1YnRyYW5zX2J1ZmZlcnM8L3Zhcm5hbWU+ ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1h cnk+PHZhcm5hbWU+c3VidHJhbnNfYnVmZmVyczwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJh bWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAg IDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU3BlY2lmaWVzIHRoZSBhbW91bnQg b2Ygc2hhcmVkIG1lbW9yeSB0byB1c2UgdG8gY2FjaGUgdGhlIGNvbnRlbnRzCisgICAgICAgIG9m IDxsaXRlcmFsPnBnX3N1YnRyYW5zPC9saXRlcmFsPiAoc2VlCisgICAgICAgIDx4cmVmIGxpbmtl bmQ9InBnZGF0YS1jb250ZW50cy10YWJsZSIvPikuCisgICAgICAgIElmIHRoaXMgdmFsdWUgaXMg c3BlY2lmaWVkIHdpdGhvdXQgdW5pdHMsIGl0IGlzIHRha2VuIGFzIGJsb2NrcywKKyAgICAgICAg dGhhdCBpcyA8c3ltYm9sPkJMQ0tTWjwvc3ltYm9sPiBieXRlcywgdHlwaWNhbGx5IDhrQi4KKyAg ICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+ODwvbGl0ZXJhbD4uCisgICAgICAg IFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBhdCBzZXJ2ZXIgc3RhcnQuCisgICAgICAg PC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgIAor ICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1ub3RpZnktYnVmZmVycyIgeHJlZmxhYmVsPSJub3Rp ZnlfYnVmZmVycyI+CisgICAgICA8dGVybT48dmFybmFtZT5ub3RpZnlfYnVmZmVyczwvdmFybmFt ZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJp bWFyeT48dmFybmFtZT5ub3RpZnlfYnVmZmVyczwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJh bWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAg IDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU3BlY2lmaWVzIHRoZSBhbW91bnQg b2Ygc2hhcmVkIG1lbW9yeSB0byB1c2UgdG8gY2FjaGUgdGhlIGNvbnRlbnRzCisgICAgICAgIG9m IDxsaXRlcmFsPnBnX25vdGlmeTwvbGl0ZXJhbD4gKHNlZQorICAgICAgICA8eHJlZiBsaW5rZW5k PSJwZ2RhdGEtY29udGVudHMtdGFibGUiLz4pLgorICAgICAgICBJZiB0aGlzIHZhbHVlIGlzIHNw ZWNpZmllZCB3aXRob3V0IHVuaXRzLCBpdCBpcyB0YWtlbiBhcyBibG9ja3MsCisgICAgICAgIHRo YXQgaXMgPHN5bWJvbD5CTENLU1o8L3N5bWJvbD4gYnl0ZXMsIHR5cGljYWxseSA4a0IuCisgICAg ICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPjg8L2xpdGVyYWw+LgorICAgICAgICBU aGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBzZXQgYXQgc2VydmVyIHN0YXJ0LgorICAgICAgIDwv cGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAKKyAg ICA8dmFybGlzdGVudHJ5IGlkPSJndWMtc2VyaWFsLWJ1ZmZlcnMiIHhyZWZsYWJlbD0ic2VyaWFs X2J1ZmZlcnMiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+c2VyaWFsX2J1ZmZlcnM8L3Zhcm5hbWU+ ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1h cnk+PHZhcm5hbWU+c2VyaWFsX2J1ZmZlcnM8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1l dGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFNwZWNpZmllcyB0aGUgYW1vdW50IG9m IHNoYXJlZCBtZW1vcnkgdG8gdXNlIHRvIGNhY2hlIHRoZSBjb250ZW50cworICAgICAgICBvZiA8 bGl0ZXJhbD5wZ19zZXJpYWw8L2xpdGVyYWw+IChzZWUKKyAgICAgICAgPHhyZWYgbGlua2VuZD0i cGdkYXRhLWNvbnRlbnRzLXRhYmxlIi8+KS4KKyAgICAgICAgSWYgdGhpcyB2YWx1ZSBpcyBzcGVj aWZpZWQgd2l0aG91dCB1bml0cywgaXQgaXMgdGFrZW4gYXMgYmxvY2tzLAorICAgICAgICB0aGF0 IGlzIDxzeW1ib2w+QkxDS1NaPC9zeW1ib2w+IGJ5dGVzLCB0eXBpY2FsbHkgOGtCLgorICAgICAg ICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD4xNjwvbGl0ZXJhbD4uCisgICAgICAgIFRo aXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBhdCBzZXJ2ZXIgc3RhcnQuCisgICAgICAgPC9w YXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgIAorICAg IDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy14YWN0LWJ1ZmZlcnMiIHhyZWZsYWJlbD0ieGFjdF9idWZm ZXJzIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPnhhY3RfYnVmZmVyczwvdmFybmFtZT4gKDx0eXBl PmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFy bmFtZT54YWN0X2J1ZmZlcnM8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmlt YXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIFNwZWNpZmllcyB0aGUgYW1vdW50IG9mIHNoYXJlZCBt ZW1vcnkgdG8gdXNlIHRvIGNhY2hlIHRoZSBjb250ZW50cworICAgICAgICBvZiA8bGl0ZXJhbD5w Z194YWN0PC9saXRlcmFsPiAoc2VlCisgICAgICAgIDx4cmVmIGxpbmtlbmQ9InBnZGF0YS1jb250 ZW50cy10YWJsZSIvPikuCisgICAgICAgIElmIHRoaXMgdmFsdWUgaXMgc3BlY2lmaWVkIHdpdGhv dXQgdW5pdHMsIGl0IGlzIHRha2VuIGFzIGJsb2NrcywKKyAgICAgICAgdGhhdCBpcyA8c3ltYm9s PkJMQ0tTWjwvc3ltYm9sPiBieXRlcywgdHlwaWNhbGx5IDhrQi4KKyAgICAgICAgVGhlIGRlZmF1 bHQgdmFsdWUgaXMgPGxpdGVyYWw+MDwvbGl0ZXJhbD4sIHdoaWNoIHJlcXVlc3RzCisgICAgICAg IDx2YXJuYW1lPnNoYXJlZF9idWZmZXJzPC92YXJuYW1lPiAvIDUxMiwgYnV0IG5vdCBmZXdlciB0 aGFuIDQgYmxvY2tzLgorICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBzZXQgYXQg c2VydmVyIHN0YXJ0LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwv dmFybGlzdGVudHJ5PgorICAgICAKKyAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtY29tbWl0LXRz LWJ1ZmZlcnMiIHhyZWZsYWJlbD0iY29tbWl0X3RzX2J1ZmZlcnMiPgorICAgICAgPHRlcm0+PHZh cm5hbWU+Y29tbWl0X3RzX2J1ZmZlcnM8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikK KyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+Y29tbWl0X3RzX2J1 ZmZlcnM8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAg PC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBh cmE+CisgICAgICAgIFNwZWNpZmllcyB0aGUgYW1vdW50IG9mIG1lbW9yeSB0byB1c2UgdG8gY2Fj aGUgdGhlIGNvdGVudHMgb2YKKyAgICAgICAgPGxpdGVyYWw+cGdfY29tbWl0X3RzPC9saXRlcmFs PiAoc2VlCisgICAgICAgIDx4cmVmIGxpbmtlbmQ9InBnZGF0YS1jb250ZW50cy10YWJsZSIvPiku CisgICAgICAgIElmIHRoaXMgdmFsdWUgaXMgc3BlY2lmaWVkIHdpdGhvdXQgdW5pdHMsIGl0IGlz IHRha2VuIGFzIGJsb2NrcywKKyAgICAgICAgdGhhdCBpcyA8c3ltYm9sPkJMQ0tTWjwvc3ltYm9s PiBieXRlcywgdHlwaWNhbGx5IDhrQi4KKyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxp dGVyYWw+MDwvbGl0ZXJhbD4sIHdoaWNoIHJlcXVlc3RzCisgICAgICAgIDx2YXJuYW1lPnNoYXJl ZF9idWZmZXJzPC92YXJuYW1lPiAvIDEwMjQsIGJ1dCBub3QgZmV3ZXIgdGhhbiA0IGJsb2Nrcy4K KyAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGF0IHNlcnZlciBzdGFydC4K KyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4K IAogICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbWF4LXN0YWNrLWRlcHRoIiB4cmVmbGFiZWw9 Im1heF9zdGFja19kZXB0aCI+CiAgICAgICA8dGVybT48dmFybmFtZT5tYXhfc3RhY2tfZGVwdGg8 L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL2Nsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cu YwppbmRleCA2ZmE0NzEzZmI0Li5kZDJkN2E1MTg0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9jbG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xv Zy5jCkBAIC01OCw4ICs1OCw4IEBACiAKIC8qIFdlIG5lZWQgdHdvIGJpdHMgcGVyIHhhY3QsIHNv IGZvdXIgeGFjdHMgZml0IGluIGEgYnl0ZSAqLwogI2RlZmluZSBDTE9HX0JJVFNfUEVSX1hBQ1QJ MgotI2RlZmluZSBDTE9HX1hBQ1RTX1BFUl9CWVRFIDQKLSNkZWZpbmUgQ0xPR19YQUNUU19QRVJf UEFHRSAoQkxDS1NaICogQ0xPR19YQUNUU19QRVJfQllURSkKK1N0YXRpY0Fzc2VydERlY2woKENM T0dfQklUU19QRVJfWEFDVCAqIENMT0dfWEFDVFNfUEVSX0JZVEUpID09IEJJVFNfUEVSX0JZVEUs CisJCQkJICJDTE9HX0JJVFNfUEVSX1hBQ1QgYW5kIENMT0dfWEFDVFNfUEVSX0JZVEUgYXJlIGlu Y29uc2lzdGVudCIpOwogI2RlZmluZSBDTE9HX1hBQ1RfQklUTUFTSwkoKDEgPDwgQ0xPR19CSVRT X1BFUl9YQUNUKSAtIDEpCiAKICNkZWZpbmUgVHJhbnNhY3Rpb25JZFRvUGFnZSh4aWQpCSgoeGlk KSAvIChUcmFuc2FjdGlvbklkKSBDTE9HX1hBQ1RTX1BFUl9QQUdFKQpAQCAtNjU5LDIzICs2NTks MTYgQEAgVHJhbnNhY3Rpb25JZEdldFN0YXR1cyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0 ciAqbHNuKQogLyoKICAqIE51bWJlciBvZiBzaGFyZWQgQ0xPRyBidWZmZXJzLgogICoKLSAqIE9u IGxhcmdlciBtdWx0aS1wcm9jZXNzb3Igc3lzdGVtcywgaXQgaXMgcG9zc2libGUgdG8gaGF2ZSBt YW55IENMT0cgcGFnZQotICogcmVxdWVzdHMgaW4gZmxpZ2h0IGF0IG9uZSB0aW1lIHdoaWNoIGNv dWxkIGxlYWQgdG8gZGlzayBhY2Nlc3MgZm9yIENMT0cKLSAqIHBhZ2UgaWYgdGhlIHJlcXVpcmVk IHBhZ2UgaXMgbm90IGZvdW5kIGluIG1lbW9yeS4gIFRlc3RpbmcgcmV2ZWFsZWQgdGhhdCB3ZQot ICogY2FuIGdldCB0aGUgYmVzdCBwZXJmb3JtYW5jZSBieSBoYXZpbmcgMTI4IENMT0cgYnVmZmVy cywgbW9yZSB0aGFuIHRoYXQgaXQKLSAqIGRvZXNuJ3QgaW1wcm92ZSBwZXJmb3JtYW5jZS4KLSAq Ci0gKiBVbmNvbmRpdGlvbmFsbHkga2VlcGluZyB0aGUgbnVtYmVyIG9mIENMT0cgYnVmZmVycyB0 byAxMjggZGlkIG5vdCBzZWVtIGxpa2UKLSAqIGEgZ29vZCBpZGVhLCBiZWNhdXNlIGl0IHdvdWxk IGluY3JlYXNlIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5Ci0gKiByZXF1aXJl ZCB0byBzdGFydCwgd2hpY2ggY291bGQgYmUgYSBwcm9ibGVtIGZvciBwZW9wbGUgcnVubmluZyB2 ZXJ5IHNtYWxsCi0gKiBjb25maWd1cmF0aW9ucy4gIFRoZSBmb2xsb3dpbmcgZm9ybXVsYSBzZWVt cyB0byByZXByZXNlbnQgYSByZWFzb25hYmxlCi0gKiBjb21wcm9taXNlOiBwZW9wbGUgd2l0aCB2 ZXJ5IGxvdyB2YWx1ZXMgZm9yIHNoYXJlZF9idWZmZXJzIHdpbGwgZ2V0IGZld2VyCi0gKiBDTE9H IGJ1ZmZlcnMgYXMgd2VsbCwgYW5kIGV2ZXJ5b25lIGVsc2Ugd2lsbCBnZXQgMTI4LgorICogQnkg ZGVmYXVsdCwgd2UnbGwgdXNlIDJNQiBvZiBmb3IgZXZlcnkgMUdCIG9mIHNoYXJlZCBidWZmZXJz LCB1cCB0byB0aGUKKyAqIHRoZW9yZXRpY2FsIG1heGltdW0gdXNlZnVsIHZhbHVlLCBidXQgYWx3 YXlzIGF0IGxlYXN0IDQgYnVmZmVycy4KICAqLwogU2l6ZQogQ0xPR1NobWVtQnVmZmVycyh2b2lk KQogewotCXJldHVybiBNaW4oMTI4LCBNYXgoNCwgTkJ1ZmZlcnMgLyA1MTIpKTsKKwkvKiBVc2Ug Y29uZmlndXJlZCB2YWx1ZSBpZiBwcm92aWRlZC4gKi8KKwlpZiAoeGFjdF9idWZmZXJzID4gMCkK KwkJcmV0dXJuIE1heCg0LCB4YWN0X2J1ZmZlcnMpOworCXJldHVybiBNaW4oQ0xPR19NQVhfQUxM T1dFRF9CVUZGRVJTLCBNYXgoNCwgTkJ1ZmZlcnMgLyA1MTIpKTsKIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMKaW5kZXggMjY4YmRiYTMzOS4uNzI5YTRiOTIxMiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMKQEAgLTUyNCwxMyArNTI0LDE3 IEBAIHBnX3hhY3RfY29tbWl0X3RpbWVzdGFtcF9vcmlnaW4oUEdfRlVOQ1RJT05fQVJHUykKIC8q CiAgKiBOdW1iZXIgb2Ygc2hhcmVkIENvbW1pdFRTIGJ1ZmZlcnMuCiAgKgotICogV2UgdXNlIGEg dmVyeSBzaW1pbGFyIGxvZ2ljIGFzIGZvciB0aGUgbnVtYmVyIG9mIENMT0cgYnVmZmVyczsgc2Vl IGNvbW1lbnRzCi0gKiBpbiBDTE9HU2htZW1CdWZmZXJzLgorICogQnkgZGVmYXVsdCwgd2UnbGwg dXNlIDFNQiBvZiBmb3IgZXZlcnkgMUdCIG9mIHNoYXJlZCBidWZmZXJzLCB1cCB0byB0aGUKKyAq IG1heGltdW0gdmFsdWUgdGhhdCBzbHJ1LmMgd2lsbCBhbGxvdywgYnV0IGFsd2F5cyBhdCBsZWFz dCA0IGJ1ZmZlcnMuCiAgKi8KIFNpemUKIENvbW1pdFRzU2htZW1CdWZmZXJzKHZvaWQpCiB7Ci0J cmV0dXJuIE1pbigxNiwgTWF4KDQsIE5CdWZmZXJzIC8gMTAyNCkpOworCS8qIFVzZSBjb25maWd1 cmVkIHZhbHVlIGlmIHByb3ZpZGVkLiAqLworCWlmIChjb21taXRfdHNfYnVmZmVycyA+IDApCisJ CXJldHVybiBNYXgoNCwgY29tbWl0X3RzX2J1ZmZlcnMpOworCXJldHVybiBNaW4odHJhY2tfY29t bWl0X3RpbWVzdGFtcCA/IFNMUlVfTUFYX0FMTE9XRURfQlVGRkVSUyA6IDE2LAorCQkJICAgTWF4 KDQsIE5CdWZmZXJzIC8gMTAyNCkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9t dWx0aXhhY3QuYwppbmRleCAxZjlmMWExZmExLi4yMTc4Nzc2NWUyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9tdWx0aXhhY3QuYwpAQCAtMTgzMSw4ICsxODMxLDggQEAgTXVsdGlYYWN0U2ht ZW1TaXplKHZvaWQpCiAJCQkgbXVsX3NpemUoc2l6ZW9mKE11bHRpWGFjdElkKSAqIDIsIE1heE9s ZGVzdFNsb3QpKQogCiAJc2l6ZSA9IFNIQVJFRF9NVUxUSVhBQ1RfU1RBVEVfU0laRTsKLQlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgU2ltcGxlTHJ1U2htZW1TaXplKE5VTV9NVUxUSVhBQ1RPRkZTRVRf QlVGRkVSUywgMCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBTaW1wbGVMcnVTaG1lbVNpemUo TlVNX01VTFRJWEFDVE1FTUJFUl9CVUZGRVJTLCAwKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUs IFNpbXBsZUxydVNobWVtU2l6ZShtdWx0aXhhY3Rfb2Zmc2V0c19idWZmZXJzLCAwKSk7CisJc2l6 ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6ZShtdWx0aXhhY3RfbWVtYmVyc19i dWZmZXJzLCAwKSk7CiAKIAlyZXR1cm4gc2l6ZTsKIH0KQEAgLTE4NDgsMTMgKzE4NDgsMTMgQEAg TXVsdGlYYWN0U2htZW1Jbml0KHZvaWQpCiAJTXVsdGlYYWN0TWVtYmVyQ3RsLT5QYWdlUHJlY2Vk ZXMgPSBNdWx0aVhhY3RNZW1iZXJQYWdlUHJlY2VkZXM7CiAKIAlTaW1wbGVMcnVJbml0KE11bHRp WGFjdE9mZnNldEN0bCwKLQkJCQkgICJNdWx0aVhhY3RPZmZzZXQiLCBOVU1fTVVMVElYQUNUT0ZG U0VUX0JVRkZFUlMsIDAsCisJCQkJICAiTXVsdGlYYWN0T2Zmc2V0IiwgbXVsdGl4YWN0X29mZnNl dHNfYnVmZmVycywgMCwKIAkJCQkgIE11bHRpWGFjdE9mZnNldFNMUlVMb2NrLCAicGdfbXVsdGl4 YWN0L29mZnNldHMiLAogCQkJCSAgTFdUUkFOQ0hFX01VTFRJWEFDVE9GRlNFVF9CVUZGRVIsCiAJ CQkJICBTWU5DX0hBTkRMRVJfTVVMVElYQUNUX09GRlNFVCk7CiAJU2xydVBhZ2VQcmVjZWRlc1Vu aXRUZXN0cyhNdWx0aVhhY3RPZmZzZXRDdGwsIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFKTsK IAlTaW1wbGVMcnVJbml0KE11bHRpWGFjdE1lbWJlckN0bCwKLQkJCQkgICJNdWx0aVhhY3RNZW1i ZXIiLCBOVU1fTVVMVElYQUNUTUVNQkVSX0JVRkZFUlMsIDAsCisJCQkJICAiTXVsdGlYYWN0TWVt YmVyIiwgbXVsdGl4YWN0X29mZnNldHNfYnVmZmVycywgMCwKIAkJCQkgIE11bHRpWGFjdE1lbWJl clNMUlVMb2NrLCAicGdfbXVsdGl4YWN0L21lbWJlcnMiLAogCQkJCSAgTFdUUkFOQ0hFX01VTFRJ WEFDVE1FTUJFUl9CVUZGRVIsCiAJCQkJICBTWU5DX0hBTkRMRVJfTVVMVElYQUNUX01FTUJFUik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYwppbmRleCA2YThlNTIxZjg5Li43ODVm MjUyMGZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMKQEAgLTMxLDYgKzMx LDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mvc2xydS5oIgogI2luY2x1ZGUgImFjY2Vzcy9zdWJ0cmFu cy5oIgogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgi CiAjaW5jbHVkZSAicGdfdHJhY2UuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKQEAg LTE4NCwxNCArMTg1LDE0IEBAIFN1YlRyYW5zR2V0VG9wbW9zdFRyYW5zYWN0aW9uKFRyYW5zYWN0 aW9uSWQgeGlkKQogU2l6ZQogU1VCVFJBTlNTaG1lbVNpemUodm9pZCkKIHsKLQlyZXR1cm4gU2lt cGxlTHJ1U2htZW1TaXplKE5VTV9TVUJUUkFOU19CVUZGRVJTLCAwKTsKKwlyZXR1cm4gU2ltcGxl THJ1U2htZW1TaXplKHN1YnRyYW5zX2J1ZmZlcnMsIDApOwogfQogCiB2b2lkCiBTVUJUUkFOU1No bWVtSW5pdCh2b2lkKQogewogCVN1YlRyYW5zQ3RsLT5QYWdlUHJlY2VkZXMgPSBTdWJUcmFuc1Bh Z2VQcmVjZWRlczsKLQlTaW1wbGVMcnVJbml0KFN1YlRyYW5zQ3RsLCAiU3VidHJhbnMiLCBOVU1f U1VCVFJBTlNfQlVGRkVSUywgMCwKKwlTaW1wbGVMcnVJbml0KFN1YlRyYW5zQ3RsLCAiU3VidHJh bnMiLCBzdWJ0cmFuc19idWZmZXJzLCAwLAogCQkJCSAgU3VidHJhbnNTTFJVTG9jaywgInBnX3N1 YnRyYW5zIiwKIAkJCQkgIExXVFJBTkNIRV9TVUJUUkFOU19CVUZGRVIsIFNZTkNfSEFORExFUl9O T05FKTsKIAlTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKFN1YlRyYW5zQ3RsLCBTVUJUUkFOU19Y QUNUU19QRVJfUEFHRSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwppbmRleCA0YjE2ZmI1NjgyLi5kZTE3ZjUy Y2Q3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKQEAgLTEwNyw3ICsxMDcsNyBAQAogICogZnJvbnRlbmQg ZHVyaW5nIHN0YXJ0dXAuKSAgVGhlIGFib3ZlIGRlc2lnbiBndWFyYW50ZWVzIHRoYXQgbm90aWZp ZXMgZnJvbQogICogb3RoZXIgYmFja2VuZHMgd2lsbCBuZXZlciBiZSBtaXNzZWQgYnkgaWdub3Jp bmcgc2VsZi1ub3RpZmllcy4KICAqCi0gKiBUaGUgYW1vdW50IG9mIHNoYXJlZCBtZW1vcnkgdXNl ZCBmb3Igbm90aWZ5IG1hbmFnZW1lbnQgKE5VTV9OT1RJRllfQlVGRkVSUykKKyAqIFRoZSBhbW91 bnQgb2Ygc2hhcmVkIG1lbW9yeSB1c2VkIGZvciBub3RpZnkgbWFuYWdlbWVudCAobm90aWZ5X2J1 ZmZlcnMpCiAgKiBjYW4gYmUgdmFyaWVkIHdpdGhvdXQgYWZmZWN0aW5nIGFueXRoaW5nIGJ1dCBw ZXJmb3JtYW5jZS4gIFRoZSBtYXhpbXVtCiAgKiBhbW91bnQgb2Ygbm90aWZpY2F0aW9uIGRhdGEg dGhhdCBjYW4gYmUgcXVldWVkIGF0IG9uZSB0aW1lIGlzIGRldGVybWluZWQKICAqIGJ5IHNscnUu YydzIHdyYXBhcm91bmQgbGltaXQ7IHNlZSBRVUVVRV9NQVhfUEFHRSBiZWxvdy4KQEAgLTIyNSw3 ICsyMjUsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWV1ZVBvc2l0aW9uCiAgKgogICogUmVzaXN0IHRo ZSB0ZW1wdGF0aW9uIHRvIG1ha2UgdGhpcyByZWFsbHkgbGFyZ2UuICBXaGlsZSB0aGF0IHdvdWxk IHNhdmUKICAqIHdvcmsgaW4gc29tZSBwbGFjZXMsIGl0IHdvdWxkIGFkZCBjb3N0IGluIG90aGVy cy4gIEluIHBhcnRpY3VsYXIsIHRoaXMKLSAqIHNob3VsZCBsaWtlbHkgYmUgbGVzcyB0aGFuIE5V TV9OT1RJRllfQlVGRkVSUywgdG8gZW5zdXJlIHRoYXQgYmFja2VuZHMKKyAqIHNob3VsZCBsaWtl bHkgYmUgbGVzcyB0aGFuIG5vdGlmeV9idWZmZXJzLCB0byBlbnN1cmUgdGhhdCBiYWNrZW5kcwog ICogY2F0Y2ggdXAgYmVmb3JlIHRoZSBwYWdlcyB0aGV5J2xsIG5lZWQgdG8gcmVhZCBmYWxsIG91 dCBvZiBTTFJVIGNhY2hlLgogICovCiAjZGVmaW5lIFFVRVVFX0NMRUFOVVBfREVMQVkgNApAQCAt NTE0LDcgKzUxNCw3IEBAIEFzeW5jU2htZW1TaXplKHZvaWQpCiAJc2l6ZSA9IG11bF9zaXplKE1h eEJhY2tlbmRzICsgMSwgc2l6ZW9mKFF1ZXVlQmFja2VuZFN0YXR1cykpOwogCXNpemUgPSBhZGRf c2l6ZShzaXplLCBvZmZzZXRvZihBc3luY1F1ZXVlQ29udHJvbCwgYmFja2VuZCkpOwogCi0Jc2l6 ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6ZShOVU1fTk9USUZZX0JVRkZFUlMs IDApKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2ltcGxlTHJ1U2htZW1TaXplKG5vdGlmeV9i dWZmZXJzLCAwKSk7CiAKIAlyZXR1cm4gc2l6ZTsKIH0KQEAgLTU2Miw3ICs1NjIsNyBAQCBBc3lu Y1NobWVtSW5pdCh2b2lkKQogCSAqIFNldCB1cCBTTFJVIG1hbmFnZW1lbnQgb2YgdGhlIHBnX25v dGlmeSBkYXRhLgogCSAqLwogCU5vdGlmeUN0bC0+UGFnZVByZWNlZGVzID0gYXN5bmNRdWV1ZVBh Z2VQcmVjZWRlczsKLQlTaW1wbGVMcnVJbml0KE5vdGlmeUN0bCwgIk5vdGlmeSIsIE5VTV9OT1RJ RllfQlVGRkVSUywgMCwKKwlTaW1wbGVMcnVJbml0KE5vdGlmeUN0bCwgIk5vdGlmeSIsIG5vdGlm eV9idWZmZXJzLCAwLAogCQkJCSAgTm90aWZ5U0xSVUxvY2ssICJwZ19ub3RpZnkiLCBMV1RSQU5D SEVfTk9USUZZX0JVRkZFUiwKIAkJCQkgIFNZTkNfSEFORExFUl9OT05FKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IGQ0OTNhZWVmMGYuLmIxZjRmMTY1MWQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYworKysgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKQEAgLTg3Miw3ICs4NzIsNyBAQCBTZXJpYWxJ bml0KHZvaWQpCiAJICovCiAJU2VyaWFsU2xydUN0bC0+UGFnZVByZWNlZGVzID0gU2VyaWFsUGFn ZVByZWNlZGVzTG9naWNhbGx5OwogCVNpbXBsZUxydUluaXQoU2VyaWFsU2xydUN0bCwgIlNlcmlh bCIsCi0JCQkJICBOVU1fU0VSSUFMX0JVRkZFUlMsIDAsIFNlcmlhbFNMUlVMb2NrLCAicGdfc2Vy aWFsIiwKKwkJCQkgIHNlcmlhbF9idWZmZXJzLCAwLCBTZXJpYWxTTFJVTG9jaywgInBnX3Nlcmlh bCIsCiAJCQkJICBMV1RSQU5DSEVfU0VSSUFMX0JVRkZFUiwgU1lOQ19IQU5ETEVSX05PTkUpOwog I2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKIAlTZXJpYWxQYWdlUHJlY2VkZXNMb2dpY2FsbHlV bml0VGVzdHMoKTsKQEAgLTEzOTUsNyArMTM5NSw3IEBAIFByZWRpY2F0ZUxvY2tTaG1lbVNpemUo dm9pZCkKIAogCS8qIFNoYXJlZCBtZW1vcnkgc3RydWN0dXJlcyBmb3IgU0xSVSB0cmFja2luZyBv ZiBvbGQgY29tbWl0dGVkIHhpZHMuICovCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIHNpemVvZihT ZXJpYWxDb250cm9sRGF0YSkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBTaW1wbGVMcnVTaG1l bVNpemUoTlVNX1NFUklBTF9CVUZGRVJTLCAwKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNp bXBsZUxydVNobWVtU2l6ZShzZXJpYWxfYnVmZmVycywgMCkpOwogCiAJcmV0dXJuIHNpemU7CiB9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCmluZGV4IDM4MWQ5ZTU0OGQuLmM4MzE1MWQ1YWIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCkBAIC0xNTAsMyArMTUwLDExIEBAIGludDY0CQlWYWN1 dW1QYWdlRGlydHkgPSAwOwogCiBpbnQJCQlWYWN1dW1Db3N0QmFsYW5jZSA9IDA7CS8qIHdvcmtp bmcgc3RhdGUgZm9yIHZhY3V1bSAqLwogYm9vbAkJVmFjdXVtQ29zdEFjdGl2ZSA9IGZhbHNlOwor CitpbnQJCQltdWx0aXhhY3Rfb2Zmc2V0c19idWZmZXJzID0gODsKK2ludAkJCW11bHRpeGFjdF9t ZW1iZXJzX2J1ZmZlcnMgPSAxNjsKK2ludAkJCXN1YnRyYW5zX2J1ZmZlcnMgPSAzMjsKK2ludAkJ CW5vdGlmeV9idWZmZXJzID0gODsKK2ludAkJCXNlcmlhbF9idWZmZXJzID0gMTY7CitpbnQJCQl4 YWN0X2J1ZmZlcnMgPSAwOworaW50CQkJY29tbWl0X3RzX2J1ZmZlcnMgPSAwOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjLmMKaW5kZXggYmVlOTc2YmFlOC4uMjUwY2VmODBiZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCkBA IC0zMiw5ICszMiwxMSBAQAogI2VuZGlmCiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKKyNpbmNsdWRl ICJhY2Nlc3MvY2xvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy9jb21taXRfdHMuaCIKICNpbmNsdWRl ICJhY2Nlc3MvZ2luLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JtZ3IuaCIKKyNpbmNsdWRlICJhY2Nl c3Mvc2xydS5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCiAjaW5jbHVkZSAiYWNjZXNz L3RvYXN0X2NvbXByZXNzaW9uLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKQEAgLTIw MCw2ICsyMDIsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqc2hvd190Y3Bfa2VlcGFsaXZlc19pZGxl KHZvaWQpOwogc3RhdGljIGNvbnN0IGNoYXIgKnNob3dfdGNwX2tlZXBhbGl2ZXNfaW50ZXJ2YWwo dm9pZCk7CiBzdGF0aWMgY29uc3QgY2hhciAqc2hvd190Y3Bfa2VlcGFsaXZlc19jb3VudCh2b2lk KTsKIHN0YXRpYyBjb25zdCBjaGFyICpzaG93X3RjcF91c2VyX3RpbWVvdXQodm9pZCk7CitzdGF0 aWMgY29uc3QgY2hhciAqc2hvd194YWN0X2J1ZmZlcnModm9pZCk7CitzdGF0aWMgY29uc3QgY2hh ciAqc2hvd19jb21taXRfdHNfYnVmZmVycyh2b2lkKTsKIHN0YXRpYyBib29sIGNoZWNrX21heGNv bm5lY3Rpb25zKGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3VyY2UpOwog c3RhdGljIGJvb2wgY2hlY2tfbWF4X3dvcmtlcl9wcm9jZXNzZXMoaW50ICpuZXd2YWwsIHZvaWQg KipleHRyYSwgR3VjU291cmNlIHNvdXJjZSk7CiBzdGF0aWMgYm9vbCBjaGVja19hdXRvdmFjdXVt X21heF93b3JrZXJzKGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3VyY2Up OwpAQCAtMjM0MCw2ICsyMzQ0LDgzIEBAIHN0YXRpYyBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1 cmVOYW1lc0ludFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsibXVsdGl4 YWN0X29mZnNldHNfYnVmZmVycyIsIFBHQ19QT1NUTUFTVEVSLCBSRVNPVVJDRVNfTUVNLAorCQkJ Z2V0dGV4dF9ub29wKCJTZXRzIHRoZSBudW1iZXIgb2Ygc2hhcmVkIG1lbW9yeSBidWZmZXJzIHVz ZWQgZm9yIHRoZSBNdWx0aVhhY3Qgb2Zmc2V0IFNMUlUgY2FjaGUuIiksCisJCQlOVUxMLAorCQkJ R1VDX1VOSVRfQkxPQ0tTCisJCX0sCisJCSZtdWx0aXhhY3Rfb2Zmc2V0c19idWZmZXJzLAorCQk4 LCAyLCBTTFJVX01BWF9BTExPV0VEX0JVRkZFUlMsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAor CisJeworCQl7Im11bHRpeGFjdF9tZW1iZXJzX2J1ZmZlcnMiLCBQR0NfUE9TVE1BU1RFUiwgUkVT T1VSQ0VTX01FTSwKKwkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgbnVtYmVyIG9mIHNoYXJlZCBt ZW1vcnkgYnVmZmVycyB1c2VkIGZvciB0aGUgTXVsdGlYYWN0IG1lbWJlciBTTFJVIGNhY2hlLiIp LAorCQkJTlVMTCwKKwkJCUdVQ19VTklUX0JMT0NLUworCQl9LAorCQkmbXVsdGl4YWN0X21lbWJl cnNfYnVmZmVycywKKwkJMTYsIDIsIFNMUlVfTUFYX0FMTE9XRURfQlVGRkVSUywKKwkJTlVMTCwg TlVMTCwgTlVMTAorCX0sCisKKwl7CisJCXsic3VidHJhbnNfYnVmZmVycyIsIFBHQ19QT1NUTUFT VEVSLCBSRVNPVVJDRVNfTUVNLAorCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBudW1iZXIgb2Yg c2hhcmVkIG1lbW9yeSBidWZmZXJzIHVzZWQgZm9yIHRoZSBzdWItdHJhbnNhY3Rpb24gU0xSVSBj YWNoZS4iKSwKKwkJCU5VTEwsCisJCQlHVUNfVU5JVF9CTE9DS1MKKwkJfSwKKwkJJnN1YnRyYW5z X2J1ZmZlcnMsCisJCTMyLCAyLCBTTFJVX01BWF9BTExPV0VEX0JVRkZFUlMsCisJCU5VTEwsIE5V TEwsIE5VTEwKKwl9LAorCisJeworCQl7Im5vdGlmeV9idWZmZXJzIiwgUEdDX1BPU1RNQVNURVIs IFJFU09VUkNFU19NRU0sCisJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIG51bWJlciBvZiBzaGFy ZWQgbWVtb3J5IGJ1ZmZlcnMgdXNlZCBmb3IgdGhlIE5PVElGWSBtZXNzYWdlIFNMUlUgY2FjaGUu IiksCisJCQlOVUxMLAorCQkJR1VDX1VOSVRfQkxPQ0tTCisJCX0sCisJCSZub3RpZnlfYnVmZmVy cywKKwkJOCwgMiwgU0xSVV9NQVhfQUxMT1dFRF9CVUZGRVJTLAorCQlOVUxMLCBOVUxMLCBOVUxM CisJfSwKKworCXsKKwkJeyJzZXJpYWxfYnVmZmVycyIsIFBHQ19QT1NUTUFTVEVSLCBSRVNPVVJD RVNfTUVNLAorCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBudW1iZXIgb2Ygc2hhcmVkIG1lbW9y eSBidWZmZXJzIHVzZWQgZm9yIHRoZSBzZXJpYWxpemFibGUgdHJhbnNhY3Rpb24gU0xSVSBjYWNo ZS4iKSwKKwkJCU5VTEwsCisJCQlHVUNfVU5JVF9CTE9DS1MKKwkJfSwKKwkJJnNlcmlhbF9idWZm ZXJzLAorCQkxNiwgMiwgU0xSVV9NQVhfQUxMT1dFRF9CVUZGRVJTLAorCQlOVUxMLCBOVUxMLCBO VUxMCisJfSwKKworCXsKKwkJeyJ4YWN0X2J1ZmZlcnMiLCBQR0NfUE9TVE1BU1RFUiwgUkVTT1VS Q0VTX01FTSwKKwkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgbnVtYmVyIG9mIHNoYXJlZCBtZW1v cnkgYnVmZmVycyB1c2VkIGZvciB0aGUgdHJhbnNhY3Rpb24gc3RhdHVzIFNMUlUgY2FjaGUuIiks CisJCQlOVUxMLAorCQkJR1VDX1VOSVRfQkxPQ0tTCisJCX0sCisJCSZ4YWN0X2J1ZmZlcnMsCisJ CTAsIDAsIENMT0dfTUFYX0FMTE9XRURfQlVGRkVSUywKKwkJTlVMTCwgTlVMTCwgc2hvd194YWN0 X2J1ZmZlcnMKKwl9LAorCisJeworCQl7ImNvbW1pdF90c19idWZmZXJzIiwgUEdDX1BPU1RNQVNU RVIsIFJFU09VUkNFU19NRU0sCisJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIHNpemUgb2YgdGhl IGRlZGljYXRlZCBidWZmZXIgcG9vbCB1c2VkIGZvciB0aGUgY29tbWl0IHRpbWVzdGFtcCBTTFJV IGNhY2hlLiIpLAorCQkJTlVMTCwKKwkJCUdVQ19VTklUX0JMT0NLUworCQl9LAorCQkmY29tbWl0 X3RzX2J1ZmZlcnMsCisJCTAsIDAsIFNMUlVfTUFYX0FMTE9XRURfQlVGRkVSUywKKwkJTlVMTCwg TlVMTCwgc2hvd19jb21taXRfdHNfYnVmZmVycworCX0sCisKIAl7CiAJCXsidGVtcF9idWZmZXJz IiwgUEdDX1VTRVJTRVQsIFJFU09VUkNFU19NRU0sCiAJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhl IG1heGltdW0gbnVtYmVyIG9mIHRlbXBvcmFyeSBidWZmZXJzIHVzZWQgYnkgZWFjaCBzZXNzaW9u LiIpLApAQCAtMTE5NTksNiArMTIwNDAsMjQgQEAgc2hvd190Y3BfdXNlcl90aW1lb3V0KHZvaWQp CiAJcmV0dXJuIG5idWY7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyICoKK3Nob3dfeGFjdF9idWZm ZXJzKHZvaWQpCit7CisJc3RhdGljIGNoYXIgbmJ1ZlsxNl07CisKKwlzbnByaW50ZihuYnVmLCBz aXplb2YobmJ1ZiksICIlenUiLCBDTE9HU2htZW1CdWZmZXJzKCkpOworCXJldHVybiBuYnVmOwor fQorCitzdGF0aWMgY29uc3QgY2hhciAqCitzaG93X2NvbW1pdF90c19idWZmZXJzKHZvaWQpCit7 CisJc3RhdGljIGNoYXIgbmJ1ZlsxNl07CisKKwlzbnByaW50ZihuYnVmLCBzaXplb2YobmJ1Ziks ICIlenUiLCBDb21taXRUc1NobWVtQnVmZmVycygpKTsKKwlyZXR1cm4gbmJ1ZjsKK30KKwogc3Rh dGljIGJvb2wKIGNoZWNrX21heGNvbm5lY3Rpb25zKGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEs IEd1Y1NvdXJjZSBzb3VyY2UpCiB7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNj L3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUKaW5kZXggZmY5ZmEwMDZmZS4uN2UxNGRmM2I1MSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMTkwLDYgKzE5MCwx NSBAQAogCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNiYWNrZW5kX2ZsdXNoX2Fm dGVyID0gMAkJIyBtZWFzdXJlZCBpbiBwYWdlcywgMCBkaXNhYmxlcwogCisjIC0gU0xSVSBCdWZm ZXJzIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkgLQorCisjeGFjdF9idWZmZXJzID0gMAkJCSMg bWVtb3J5IGZvciBwZ194YWN0ICgwID0gYXV0bykKKyNzdWJ0cmFuc19idWZmZXJzID0gMzIJCQkj IG1lbW9yeSBmb3IgcGdfc3VidHJhbnMKKyNtdWx0aXhhY3Rfb2Zmc2V0c19idWZmZXJzID0gOAkJ IyBtZW1vcnkgZm9yIHBnX211bHRpeGFjdC9vZmZzZXRzCisjbXVsdGl4YWN0X21lbWJlcnNfYnVm ZmVycyA9IDE2CQkjIG1lbW9yeSBmb3IgcGdfbXVsdGl4YWN0L21lbWJlcnMKKyNub3RpZnlfYnVm ZmVycyA9IDgJCQkjIG1lbW9yeSBmb3IgcGdfbm90aWZ5Cisjc2VyaWFsX2J1ZmZlcnMgPSAxNgkJ CSMgbWVtb3J5IGZvciBwZ19zZXJpYWwKKyNjb21taXRfdHNfYnVmZmVycyA9IDAJCQkjIG1lbW9y eSBmb3IgcGdfY29tbWl0X3RzICgwID0gYXV0bykKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog IyBXUklURS1BSEVBRCBMT0cKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9jbG9nLmgg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvY2xvZy5oCmluZGV4IDM5YjhlNGFmYTguLjczOWEyOTJmN2Yg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9jbG9nLmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL2Nsb2cuaApAQCAtMTUsNiArMTUsMTYgQEAKICNpbmNsdWRlICJzdG9yYWdlL3N5bmMu aCIKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgogCisvKgorICogRG9uJ3QgYWxsb3cgeGFj dF9idWZmZXJzIHRvIGJlIHNldCBoaWdoZXIgdGhhbiBjb3VsZCBwb3NzaWJseSBiZSB1c2VmdWwg b3IKKyAqIFNMUlUgd291bGQgYWxsb3cuCisgKi8KKyNkZWZpbmUgQ0xPR19YQUNUU19QRVJfQllU RSA0CisjZGVmaW5lIENMT0dfWEFDVFNfUEVSX1BBR0UgKEJMQ0tTWiAqIENMT0dfWEFDVFNfUEVS X0JZVEUpCisjZGVmaW5lIENMT0dfTUFYX0FMTE9XRURfQlVGRkVSUyBcCisJTWluKFNMUlVfTUFY X0FMTE9XRURfQlVGRkVSUywgXAorCQkoKChNYXhUcmFuc2FjdGlvbklkIC8gMikgKyAoQ0xPR19Y QUNUU19QRVJfUEFHRSAtIDEpKSAvIENMT0dfWEFDVFNfUEVSX1BBR0UpKQorCiAvKgogICogUG9z c2libGUgdHJhbnNhY3Rpb24gc3RhdHVzZXMgLS0tIG5vdGUgdGhhdCBhbGwtemVyb2VzIGlzIHRo ZSBpbml0aWFsCiAgKiBzdGF0ZS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9jb21t aXRfdHMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9jb21taXRfdHMuaAppbmRleCA3NTAzNjkxMDRh Li5lNGNmOTg4NjA5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvY29tbWl0X3RzLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2NvbW1pdF90cy5oCkBAIC0xNyw3ICsxNyw2IEBACiAj aW5jbHVkZSAic3RvcmFnZS9zeW5jLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAKLQogZXh0 ZXJuIFBHRExMSU1QT1JUIGJvb2wgdHJhY2tfY29tbWl0X3RpbWVzdGFtcDsKIAogZXh0ZXJuIGJv b2wgY2hlY2tfdHJhY2tfY29tbWl0X3RpbWVzdGFtcChib29sICpuZXd2YWwsIHZvaWQgKipleHRy YSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAppbmRleCA0YmJiMDM1ZWFlLi45N2MwYTQ2Mzc2IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL211bHRpeGFjdC5oCkBAIC0yOSwxMCArMjksNiBAQAogCiAjZGVmaW5lIE1heE11bHRp WGFjdE9mZnNldAkoKE11bHRpWGFjdE9mZnNldCkgMHhGRkZGRkZGRikKIAotLyogTnVtYmVyIG9m IFNMUlUgYnVmZmVycyB0byB1c2UgZm9yIG11bHRpeGFjdCAqLwotI2RlZmluZSBOVU1fTVVMVElY QUNUT0ZGU0VUX0JVRkZFUlMJCTgKLSNkZWZpbmUgTlVNX01VTFRJWEFDVE1FTUJFUl9CVUZGRVJT CQkxNgotCiAvKgogICogUG9zc2libGUgbXVsdGl4YWN0IGxvY2sgbW9kZXMgKCJzdGF0dXMiKS4g IFRoZSBmaXJzdCBmb3VyIG1vZGVzIGFyZSBmb3IKICAqIHR1cGxlIGxvY2tzIChGT1IgS0VZIFNI QVJFLCBGT1IgU0hBUkUsIEZPUiBOTyBLRVkgVVBEQVRFLCBGT1IgVVBEQVRFKTsgdGhlCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Ns cnUuaAppbmRleCA4YWEzZWZjMGVlLi45N2VhODM3NjQ2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3Mvc2xydS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmgKQEAgLTE4LDYg KzE4LDExIEBACiAjaW5jbHVkZSAic3RvcmFnZS9zeW5jLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNl YXJjaC5oIgogCisvKgorICogVG8gYXZvaWQgb3ZlcmZsb3dpbmcgaW50ZXJuYWwgYXJpdGhtZXRp YyBhbmQgdGhlIHNpemVfdCBkYXRhIHR5cGUsIHRoZQorICogbnVtYmVyIG9mIGJ1ZmZlcnMgc2hv dWxkIG5vdCBleGNlZWQgdGhpcyBudW1iZXIuCisgKi8KKyNkZWZpbmUgU0xSVV9NQVhfQUxMT1dF RF9CVUZGRVJTICgoMTAyNCAqIDEwMjQgKiAxMDI0KSAvIEJMQ0tTWikKIAogLyoKICAqIERlZmlu ZSBTTFJVIHNlZ21lbnQgc2l6ZS4gIEEgcGFnZSBpcyB0aGUgc2FtZSBCTENLU1ogYXMgaXMgdXNl ZCBldmVyeXdoZXJlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3VidHJhbnMuaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9zdWJ0cmFucy5oCmluZGV4IGQwYWI0NGFlODIuLjY0ZmE4Njkz OGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zdWJ0cmFucy5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9zdWJ0cmFucy5oCkBAIC0xMSw4ICsxMSw2IEBACiAjaWZuZGVmIFNVQlRS QU5TX0gKICNkZWZpbmUgU1VCVFJBTlNfSAogCi0vKiBOdW1iZXIgb2YgU0xSVSBidWZmZXJzIHRv IHVzZSBmb3Igc3VidHJhbnMgKi8KLSNkZWZpbmUgTlVNX1NVQlRSQU5TX0JVRkZFUlMJMzIKIAog ZXh0ZXJuIHZvaWQgU3ViVHJhbnNTZXRQYXJlbnQoVHJhbnNhY3Rpb25JZCB4aWQsIFRyYW5zYWN0 aW9uSWQgcGFyZW50KTsKIGV4dGVybiBUcmFuc2FjdGlvbklkIFN1YlRyYW5zR2V0UGFyZW50KFRy YW5zYWN0aW9uSWQgeGlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5j LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5oCmluZGV4IDkyMTdmNjZiOTEuLmZhODMx ZTM3MjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmgKKysrIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvYXN5bmMuaApAQCAtMTUsMTEgKzE1LDYgQEAKIAogI2luY2x1ZGUg PHNpZ25hbC5oPgogCi0vKgotICogVGhlIG51bWJlciBvZiBTTFJVIHBhZ2UgYnVmZmVycyB3ZSB1 c2UgZm9yIHRoZSBub3RpZmljYXRpb24gcXVldWUuCi0gKi8KLSNkZWZpbmUgTlVNX05PVElGWV9C VUZGRVJTCTgKLQogZXh0ZXJuIGJvb2wgVHJhY2Vfbm90aWZ5OwogZXh0ZXJuIHZvbGF0aWxlIHNp Z19hdG9taWNfdCBub3RpZnlJbnRlcnJ1cHRQZW5kaW5nOwogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IDk1MjAyZDM3 YWYuLjQ5NWMxYmY5MDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBi L3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC0xNjQsNiArMTY0LDEzIEBAIGV4dGVybiBQR0RM TElNUE9SVCBpbnQgTWF4QmFja2VuZHM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IE1heENvbm5l Y3Rpb25zOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfd29ya2VyX3Byb2Nlc3NlczsKIGV4 dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3BhcmFsbGVsX3dvcmtlcnM7CitleHRlcm4gUEdETExJ TVBPUlQgaW50IG11bHRpeGFjdF9vZmZzZXRzX2J1ZmZlcnM7CitleHRlcm4gUEdETExJTVBPUlQg aW50IG11bHRpeGFjdF9tZW1iZXJzX2J1ZmZlcnM7CitleHRlcm4gUEdETExJTVBPUlQgaW50IHN1 YnRyYW5zX2J1ZmZlcnM7CitleHRlcm4gUEdETExJTVBPUlQgaW50IG5vdGlmeV9idWZmZXJzOwor ZXh0ZXJuIFBHRExMSU1QT1JUIGludCBzZXJpYWxfYnVmZmVyczsKK2V4dGVybiBQR0RMTElNUE9S VCBpbnQgeGFjdF9idWZmZXJzOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBjb21taXRfdHNfYnVm ZmVyczsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBNeVByb2NQaWQ7CiBleHRlcm4gUEdETExJ TVBPUlQgcGdfdGltZV90IE15U3RhcnRUaW1lOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcmVkaWNhdGUuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJlZGljYXRlLmgKaW5kZXgg MTUyYjY5ODYxMS4uYzcyNzc5YmQ4OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9w cmVkaWNhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3ByZWRpY2F0ZS5oCkBAIC0yNiwx MCArMjYsNiBAQCBleHRlcm4gaW50CW1heF9wcmVkaWNhdGVfbG9ja3NfcGVyX3hhY3Q7CiBleHRl cm4gaW50CW1heF9wcmVkaWNhdGVfbG9ja3NfcGVyX3JlbGF0aW9uOwogZXh0ZXJuIGludAltYXhf cHJlZGljYXRlX2xvY2tzX3Blcl9wYWdlOwogCi0KLS8qIE51bWJlciBvZiBTTFJVIGJ1ZmZlcnMg dG8gdXNlIGZvciBTZXJpYWwgU0xSVSAqLwotI2RlZmluZSBOVU1fU0VSSUFMX0JVRkZFUlMJCTE2 Ci0KIC8qCiAgKiBBIGhhbmRsZSB1c2VkIGZvciBzaGFyaW5nIFNFUklBTElaQUJMRVhBQ1Qgb2Jq ZWN0cyBiZXR3ZWVuIHRoZSBwYXJ0aWNpcGFudHMKICAqIGluIGEgcGFyYWxsZWwgcXVlcnkuCi0t IAoyLjMwLjEKCg== --00000000000075776505bf6b2ae2 Content-Type: text/x-patch; charset="US-ASCII"; name="v16-0003-Limit-SLRU-buffer-replacement-search.patch" Content-Disposition: attachment; filename="v16-0003-Limit-SLRU-buffer-replacement-search.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kn858e7t2 RnJvbSA3OWMxNWY3M2EyMWNmYjY3Y2I2MTU3ZmM1YjY4MjJiY2RjNjk2MzgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFRodSwgOCBBcHIgMjAyMSAxMjoxODoyNSArMTIwMApTdWJqZWN0OiBbUEFUQ0ggdjE2 IDMvM10gTGltaXQgU0xSVSBidWZmZXIgcmVwbGFjZW1lbnQgc2VhcmNoLgoKTm93IHRoYXQgdXNl cnMgY2FuIGNvbmZpZ3VyZSBsYXJnZSBTTFJVIGNhY2hlcywgc2xydS5jJ3Mgc2ltcGxlIGJ1ZmZl cgpyZXBsYWNlbWVudCBhbGdvcml0aG0gbmVlZHMgc29tZSBhZGp1c3RtZW50LiAgRm9yIG5vdywg bGltaXQgaXRzIGxpbmVhcgpzZWFyY2ggZm9yIHRoZSBsZWFzdCByZWNlbnRseSBhY2Nlc3NlZCBi dWZmZXIgdG8gYW4gYXJiaXRyYXJ5IGNhcC4gIFRoaXMKbWVhbnMgaXQgd29uJ3QgZmluZCB0aGUg Z2xvYmFsbHkgbGVhc3QgcmVjZW50bHkgdXNlZCBidWZmZXIsIGp1c3QgdGhlCmxlYXN0IHJlY2Vu dGx5IHVzZWQgaW4gYSBnaXZlbiByYW5nZSBvZiBwYWdlcy4gIFRoZSBjYXAgaXMgaW5pdGlhbGx5 IHNldAphcyBsYXJnZSBhcyB0aGUgcHJldmlvdXMgaGFyZC1jb2RlZCBzZWFyY2ggc2l6ZS4KCkRp c2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vMkJFQzJCM0YtOUI2MS00QzFELTlGQjUtNUZB QjBGMDVFRjg2JTQweWFuZGV4LXRlYW0ucnUKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9zbHJ1LmMgfCAxNSArKysrKysrKysrKysrKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1Lmgg ICAgICAgICB8ICAzICsrKwogMiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc2xydS5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc2xydS5jCmluZGV4IDgyYzYxYzQ3NWIuLjEz MWY3YTQ4ZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMKQEAgLTcxLDYgKzcxLDEyIEBA CiAgKi8KICNkZWZpbmUgTUFYX1dSSVRFQUxMX0JVRkZFUlMJMTYKIAorLyoKKyAqIFdoZW4gc2Vh cmNoaW5nIGZvciBidWZmZXJzIHRvIHJlcGxhY2UsIHdlIHdpbGwgbGltaXQgdGhlIHNjb3BlIG9m IG91ciBzZWFyY2gKKyAqIGZvciBub3csIHRvIGF2b2lkIGhvbGRpbmcgYW4gZXhjbHVzaXZlIGxv Y2sgZm9yIHRvbyBsb25nLgorICovCisjZGVmaW5lIE1BWF9SRVBMQUNFTUVOVF9TRUFSQ0gJMTI4 CisKIHR5cGVkZWYgc3RydWN0IFNscnVXcml0ZUFsbERhdGEKIHsKIAlpbnQJCQludW1fZmlsZXM7 CQkvKiAjIGZpbGVzIGFjdHVhbGx5IG9wZW4gKi8KQEAgLTEwNjAsNiArMTA2Niw3IEBAIFNscnVT ZWxlY3RMUlVQYWdlKFNscnVDdGwgY3RsLCBpbnQgcGFnZW5vKQogewogCVNscnVTaGFyZWQJc2hh cmVkID0gY3RsLT5zaGFyZWQ7CiAKKwogCS8qIE91dGVyIGxvb3AgaGFuZGxlcyByZXN0YXJ0IGFm dGVyIEkvTyAqLwogCWZvciAoOzspCiAJewpAQCAtMTA3MSw2ICsxMDc4LDcgQEAgU2xydVNlbGVj dExSVVBhZ2UoU2xydUN0bCBjdGwsIGludCBwYWdlbm8pCiAJCWludAkJCWJlc3RpbnZhbGlkc2xv dCA9IDA7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIAkJaW50CQkJYmVzdF9pbnZhbGlkX2Rl bHRhID0gLTE7CiAJCWludAkJCWJlc3RfaW52YWxpZF9wYWdlX251bWJlciA9IDA7CS8qIGtlZXAg Y29tcGlsZXIgcXVpZXQgKi8KKwkJaW50CQkJbWF4X3NlYXJjaDsKIAogCQkvKiBTZWUgaWYgcGFn ZSBhbHJlYWR5IGhhcyBhIGJ1ZmZlciBhc3NpZ25lZCAqLwogCQlzbG90bm8gPSBTbHJ1TWFwcGlu Z0ZpbmQoY3RsLCBwYWdlbm8pOwpAQCAtMTEwOCwxMiArMTExNiwxNyBAQCBTbHJ1U2VsZWN0TFJV UGFnZShTbHJ1Q3RsIGN0bCwgaW50IHBhZ2VubykKIAkJICogVGhhdCBnZXRzIHVzIGJhY2sgb24g dGhlIHBhdGggdG8gaGF2aW5nIGdvb2QgZGF0YSB3aGVuIHRoZXJlIGFyZQogCQkgKiBtdWx0aXBs ZSBwYWdlcyB3aXRoIHRoZSBzYW1lIGxydV9jb3VudC4KIAkJICovCisJCW1heF9zZWFyY2ggPSBN aW4oc2hhcmVkLT5udW1fc2xvdHMsIE1BWF9SRVBMQUNFTUVOVF9TRUFSQ0gpOwogCQljdXJfY291 bnQgPSAoc2hhcmVkLT5jdXJfbHJ1X2NvdW50KSsrOwotCQlmb3IgKHNsb3RubyA9IDA7IHNsb3Ru byA8IHNoYXJlZC0+bnVtX3Nsb3RzOyBzbG90bm8rKykKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBt YXhfc2VhcmNoOyArK2kpCiAJCXsKIAkJCWludAkJCXRoaXNfZGVsdGE7CiAJCQlpbnQJCQl0aGlz X3BhZ2VfbnVtYmVyOwogCisJCQlzbG90bm8gPSBzaGFyZWQtPnNlYXJjaF9zbG90bm8rKzsKKwkJ CWlmIChzaGFyZWQtPnNlYXJjaF9zbG90bm8gPT0gc2hhcmVkLT5udW1fc2xvdHMpCisJCQkJc2hh cmVkLT5zZWFyY2hfc2xvdG5vID0gMDsKKwogCQkJaWYgKHNoYXJlZC0+cGFnZV9zdGF0dXNbc2xv dG5vXSA9PSBTTFJVX1BBR0VfRU1QVFkpCiAJCQkJcmV0dXJuIHNsb3RubzsKIAkJCXRoaXNfZGVs dGEgPSBjdXJfY291bnQgLSBzaGFyZWQtPnBhZ2VfbHJ1X2NvdW50W3Nsb3Rub107CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUu aAppbmRleCA5N2VhODM3NjQ2Li5mYjhhMDM5NzJkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3Mvc2xydS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmgKQEAgLTYzLDYgKzYz LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgU2xydVNoYXJlZERhdGEKIAkvKiBOdW1iZXIgb2YgYnVmZmVy cyBtYW5hZ2VkIGJ5IHRoaXMgU0xSVSBzdHJ1Y3R1cmUgKi8KIAlpbnQJCQludW1fc2xvdHM7CiAK KwkvKiBXaGVyZSB0byBzdGFydCBidWZmZXIgcmVwbGFjZW1lbnQgc2VhcmNoLiAqLworCWludAkJ CXNlYXJjaF9zbG90bm87CisKIAkvKgogCSAqIEFycmF5cyBob2xkaW5nIGluZm8gZm9yIGVhY2gg YnVmZmVyIHNsb3QuICBQYWdlIG51bWJlciBpcyB1bmRlZmluZWQKIAkgKiB3aGVuIHN0YXR1cyBp cyBFTVBUWSwgYXMgaXMgcGFnZV9scnVfY291bnQuCi0tIAoyLjMwLjEKCg== --00000000000075776505bf6b2ae2--