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 1lU1F5-0001gY-BU for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Apr 2021 06:00:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lU1EX-00022L-Sg for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Apr 2021 06:00:09 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lU1EX-00022E-5E for pgsql-hackers@lists.postgresql.org; Wed, 07 Apr 2021 06:00:09 +0000 Received: from mail-io1-xd2a.google.com ([2607:f8b0:4864:20::d2a]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1lU1EL-0006iF-BS for pgsql-hackers@postgresql.org; Wed, 07 Apr 2021 06:00:08 +0000 Received: by mail-io1-xd2a.google.com with SMTP id v26so18082533iox.11 for ; Tue, 06 Apr 2021 22:59:57 -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=Hns+snVHI8MPLzkUD0JQPBeJHZq/Kt9XVxodZAWC47w=; b=jM/hgTOHIfNvWBHT0pkrSMCdQciyKienT+b1oRIgLY9qhor7Myr5GIL47vlKyMcR3d 8nPmzb6db7jRd8ZbUZMwy8l1220I/yUlu3Lk6p2cEHAYVBz1yS5SeR8pTq4ZkbYOVX9w vdMjrcl2DENBD9rD4YSi94eBQi5PgGJSLazd720LC9F+ymy0Uc3Q5kK0mfZYl263aH8L PKIp+cF8s2QLkhSyCG5nYLY7xRMWlRsBtDqNdKSJx/LBr8vXORtc0WYuSqOSEGdyRONz ssKfCVeIAfCS+Hr4Di4RECNWWS1fK7KzyVhcrbYmMeEYHQvjbPtqlkv6viHkUi70oepu R7zQ== 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=Hns+snVHI8MPLzkUD0JQPBeJHZq/Kt9XVxodZAWC47w=; b=JUa4JFEO3D93EDzOOFtnulOj8dk9h7WwG5Q2PsDfe6UCFIWEH+uKE5cWZE7IVEMXbm BDNq9Up+5wIxDDpF3gE8L/EegjuDy4Zc7skb+ZDwMHA6uR1IC4idzOb1ymHFx2P19Vr9 ga0KrdhWNAj/iROol4NI9gzHMXnLqvYNzDelTZB8oZJVG4F1kcqTtM8tfQkqTx2r2lsG iuooDJTPSIRxlfNw/kV9MEgSCmj7OTUDG1DoZEHPXRYOkMSe0fwdBJzeuUrUgbUy0Wy1 Lqphgft7tIpVTKa4nGOqAaGJiReR3HT7w3YSfQCU8NqKeQn9ibM3ee4jScg7h1AggSzB JzEQ== X-Gm-Message-State: AOAM530mHiBY1FidhY2WItCeCnVoSmzic13BGGU2VKftO/gLyCtQdAx8 5LYNsuRroQcuP3Is5U0HBlNHdfvqSxJktrwaiaY= X-Google-Smtp-Source: ABdhPJyNtsY3GwPwyE2mpX2XBvfTvek8q+odYCMyo7x0Yr+f5EwrTiPfLFnA4Y2nNkVxsKStay7llXfVmwoGUMX3BMA= X-Received: by 2002:a6b:8b16:: with SMTP id n22mr1277452iod.79.1617775196522; Tue, 06 Apr 2021 22:59:56 -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> In-Reply-To: <27D90FFC-B897-4BC5-B4F5-9047B9886AA3@yandex-team.ru> From: Thomas Munro Date: Wed, 7 Apr 2021 17:59:19 +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="000000000000eacf1605bf5ba3e7" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000eacf1605bf5ba3e7 Content-Type: multipart/alternative; boundary="000000000000eacf0e05bf5ba3e5" --000000000000eacf0e05bf5ba3e5 Content-Type: text/plain; charset="UTF-8" On Sun, Apr 4, 2021 at 7:57 AM Andrey Borodin wrote: > I was toying around with big values. For example if we set different big xact_buffers we can get something like > FATAL: not enough shared memory for data structure "Notify" (72768 bytes requested) > FATAL: not enough shared memory for data structure "Async Queue Control" (2492 bytes requested) > FATAL: not enough shared memory for data structure "Checkpointer Data" (393280 bytes requested) > > But never anything about xact_buffers. I don't think it's important, though. I had added the hash table size in SimpleLruShmemSize(), but then SimpleLruInit() passed that same value in when allocating the struct, so the struct was oversized. Oops. Fixed. > > Likewise, I removed the cap of 16 buffers for commit_ts_buffers, but > > only if you have track_commit_timestamp enabled. > Is there a reason to leave 16 pages if commit_ts is disabled? They might be useful for some artefacts of previously enabled commit_ts? Alvaro, do you have an opinion on that? The remaining thing that bothers me about this patch set is that there is still a linear search in the replacement algorithm, and it runs with an exclusive lock. That creates a serious problem for large caches that still aren't large enough. I wonder if we can do something to improve that situation in the time we have. I considered a bunch of ideas but could only find one that fits with slru.c's simplistic locking while tracking recency. What do you think about a hybrid of SLRU and random replacement, that retains some characteristics of both? You could think of it as being a bit like the tournament selection of the genetic algorithm, with a tournament size of (say) 8 or 16. Any ideas on how to evaluate this and choose the number? See attached. --000000000000eacf0e05bf5ba3e5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Sun, Apr 4, 2021 at 7:57 AM Andrey Borodin <x4mmm@yandex-team.ru> wrote:
>= ; I was toying around with big values. For example if we set different big = xact_buffers we can get something like
> FATAL: =C2=A0not enough shar= ed memory for data structure "Notify" (72768 bytes requested)
= > FATAL: =C2=A0not enough shared memory for data structure "Async Q= ueue Control" (2492 bytes requested)
> FATAL: =C2=A0not enough s= hared memory for data structure "Checkpointer Data" (393280 bytes= requested)
>
> But never anything about xact_buffers. I don= 9;t think it's important, though.

I had added the hash table siz= e in SimpleLruShmemSize(), but then SimpleLruInit() passed that same value = in when allocating the struct, so the struct was oversized.=C2=A0 Oops.=C2= =A0 Fixed.

> > Likewise, I removed the cap of 16 buffers for c= ommit_ts_buffers, but
> > only if you have track_commit_timestamp = enabled.
=C2=A0
> Is there a reason to leave 16 pages if commit_ts= is disabled? They might be useful for some artefacts of previously enabled= commit_ts?

Alvaro, do you have an opinion on that?

The remai= ning thing that bothers me about this patch set is that there is still a li= near search in the replacement algorithm, and it runs with an exclusive loc= k.=C2=A0 That creates a serious problem for large caches that still aren= 9;t large enough.=C2=A0 I wonder if we can do something to improve that sit= uation in the time we have.=C2=A0 I considered a bunch of ideas but could o= nly find one that fits with slru.c's simplistic locking while tracking = recency.=C2=A0 What do you think about a hybrid of SLRU and random replacem= ent, that retains some characteristics of both?=C2=A0 You could think of it= as being a bit like the tournament selection of the genetic algorithm, wit= h a tournament size of (say) 8 or 16.=C2=A0 Any ideas on how to evaluate th= is and choose the number?=C2=A0 See attached.
--000000000000eacf0e05bf5ba3e5-- --000000000000eacf1605bf5ba3e7 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0001-Add-a-buffer-mapping-table-for-SLRUs.patch" Content-Disposition: attachment; filename="v15-0001-Add-a-buffer-mapping-table-for-SLRUs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kn718z8r0 RnJvbSA1ZjYxYmQ3ZDIyNzA3N2Y4NjY0OWE4OTBiZTYwM2VhZTAxYzgyOGY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFRodSwgMjUgTWFyIDIwMjEgMTA6MTE6MzEgKzEzMDAKU3ViamVjdDogW1BBVENIIHYx NSAxLzNdIEFkZCBhIGJ1ZmZlciBtYXBwaW5nIHRhYmxlIGZvciBTTFJVcy4KCkluc3RlYWQgb2Yg 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 IHdoZW4gaGFuZGluZyBzeW5jIHJlcXVlc3RzIG92ZXIgdG8KLS0gCjIuMjcuMAoK --000000000000eacf1605bf5ba3e7 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0002-Make-all-SLRU-buffer-sizes-configurable.patch" Content-Disposition: attachment; filename="v15-0002-Make-all-SLRU-buffer-sizes-configurable.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kn7191io1 RnJvbSAzNDYyZmZlN2Q3NDBlZjBhOGQ2YjIxN2EzMzhmYTVjYjU1YTFmYmNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgQm9yb2RpbiA8YW1ib3JvZGluQGFjbS5vcmc+CkRh dGU6IE1vbiwgMTUgRmViIDIwMjEgMjE6NTE6NTYgKzA1MDAKU3ViamVjdDogW1BBVENIIHYxNSAy 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 b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggZTUxNjM5ZDU2Yy4uNzlmNDZhM2RmOCAxMDA2 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 Z3VjLmMKaW5kZXggYzljOWRhODVmMy4uZDBmMDUzMmRhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCkBA IC0zMiw5ICszMiwxMSBAQAogI2VuZGlmCiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKKyNpbmNsdWRl ICJhY2Nlc3MvY2xvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy9jb21taXRfdHMuaCIKICNpbmNsdWRl ICJhY2Nlc3MvZ2luLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JtZ3IuaCIKKyNpbmNsdWRlICJhY2Nl c3Mvc2xydS5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCiAjaW5jbHVkZSAiYWNjZXNz L3RvYXN0X2NvbXByZXNzaW9uLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKQEAgLTIw MCw2ICsyMDIsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqc2hvd190Y3Bfa2VlcGFsaXZlc19pZGxl KHZvaWQpOwogc3RhdGljIGNvbnN0IGNoYXIgKnNob3dfdGNwX2tlZXBhbGl2ZXNfaW50ZXJ2YWwo dm9pZCk7CiBzdGF0aWMgY29uc3QgY2hhciAqc2hvd190Y3Bfa2VlcGFsaXZlc19jb3VudCh2b2lk KTsKIHN0YXRpYyBjb25zdCBjaGFyICpzaG93X3RjcF91c2VyX3RpbWVvdXQodm9pZCk7CitzdGF0 aWMgY29uc3QgY2hhciAqc2hvd194YWN0X2J1ZmZlcnModm9pZCk7CitzdGF0aWMgY29uc3QgY2hh ciAqc2hvd19jb21taXRfdHNfYnVmZmVycyh2b2lkKTsKIHN0YXRpYyBib29sIGNoZWNrX21heGNv bm5lY3Rpb25zKGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3VyY2UpOwog c3RhdGljIGJvb2wgY2hlY2tfbWF4X3dvcmtlcl9wcm9jZXNzZXMoaW50ICpuZXd2YWwsIHZvaWQg KipleHRyYSwgR3VjU291cmNlIHNvdXJjZSk7CiBzdGF0aWMgYm9vbCBjaGVja19hdXRvdmFjdXVt X21heF93b3JrZXJzKGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3VyY2Up OwpAQCAtMjMzMCw2ICsyMzM0LDgzIEBAIHN0YXRpYyBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1 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 LiIpLApAQCAtMTE4OTcsNiArMTE5NzgsMjQgQEAgc2hvd190Y3BfdXNlcl90aW1lb3V0KHZvaWQp CiAJcmV0dXJuIG5idWY7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyICoKK3Nob3dfeGFjdF9idWZm ZXJzKHZvaWQpCit7CisJc3RhdGljIGNoYXIgbmJ1ZlsxNl07CisKKwlzbnByaW50ZihuYnVmLCBz aXplb2YobmJ1ZiksICIlenUiLCBDTE9HU2htZW1CdWZmZXJzKCkpOworCXJldHVybiBuYnVmOwor fQorCitzdGF0aWMgY29uc3QgY2hhciAqCitzaG93X2NvbW1pdF90c19idWZmZXJzKHZvaWQpCit7 CisJc3RhdGljIGNoYXIgbmJ1ZlsxNl07CisKKwlzbnByaW50ZihuYnVmLCBzaXplb2YobmJ1Ziks ICIlenUiLCBDb21taXRUc1NobWVtQnVmZmVycygpKTsKKwlyZXR1cm4gbmJ1ZjsKK30KKwogc3Rh dGljIGJvb2wKIGNoZWNrX21heGNvbm5lY3Rpb25zKGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEs IEd1Y1NvdXJjZSBzb3VyY2UpCiB7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNj L3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUKaW5kZXggMzlkYTdjYzk0Mi4uNWJiYmY4NTkyMyAxMDA2NDQKLS0tIGEv 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 IAoyLjI3LjAKCg== --000000000000eacf1605bf5ba3e7 Content-Type: text/x-patch; charset="US-ASCII"; name="v15-0003-Use-hybrid-random-SLRU-replacement-for-SLRUs.patch" Content-Disposition: attachment; filename="v15-0003-Use-hybrid-random-SLRU-replacement-for-SLRUs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kn7193se2 RnJvbSBjZWEzMTQyYWY3M2M0MzRkMTEyMDZkZDM5YTdlZGFhODcxODI2OWI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgNyBBcHIgMjAyMSAxNjozOTowOSArMTIwMApTdWJqZWN0OiBbUEFUQ0ggdjE1 IDMvM10gVXNlIGh5YnJpZCByYW5kb20vU0xSVSByZXBsYWNlbWVudCBmb3IgU0xSVXMuCgpUaGUg cHJldmlvdXMgYWxnb3JpdGhtIHdvdWxkIHNlYXJjaCB0aGUgZW50aXJlIFNMUlUgdG8gZmluZCB0 aGUgbGVhc3QKcmVjZW50bHkgdXNlZCBwYWdlLiAgVGhhdCBkb2Vzbid0IHNlZW0gbGlrZSBhIGdv b2QgaWRlYSBub3cgdGhhdCB0aGUKdXNlciBjYW4gc2V0IFNMUlVzIHRvIGxhcmdlIHNpemVzLiAg SW5zdGVhZCwgYXBwbHkgdGhlIGV4aXN0aW5nIGFsZ29yaXRobQp0byBhIHNtYWxsIG51bWJlciBv ZiByYW5kb21seSBjaG9zZW4gYnVmZmVycywgZm9yIGEgY2hlYXAgaHlicmlkIG9mIFNMUlUKYW5k IHJhbmRvbSByZXBsYWNlbWVudCB0aGF0IGRvZXNuJ3QgcmVxdWlyZSBhIGNvbXBsZXRlIHJld3Jp dGUgb2YKc2xydS5jJ3MgbG9ja2luZy4KClhYWCBleHBlcmltZW50Ci0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vc2xydS5jIHwgMjIgKysrKysrKysrKysrKysrKystLS0tLQogMSBmaWxl IGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc2xydS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vc2xydS5jCmluZGV4IDgyYzYxYzQ3NWIuLjk1ZTQwNGU4NTYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS9zbHJ1LmMKQEAgLTcxLDYgKzcxLDE0IEBACiAgKi8KICNkZWZpbmUgTUFYX1dSSVRF QUxMX0JVRkZFUlMJMTYKIAorLyoKKyAqIFdlIG5lZWQgYSBmYXN0IHdheSB0byBjaG9vc2UgYSBi dWZmZXIgdG8gcmVwbGFjZSwgYmVjYXVzZSB3ZSBob2xkIGEgY29hcnNlCisgKiBncmFpbmVkIGV4 Y2x1c2l2ZSBsb2NrIHdoaWxlIHNlYXJjaGluZy4gIEFzIGFuIGltcHJvdmVtZW50IG92ZXIgc2lt cGxlCisgKiByYW5kb20gcmVwbGFjZW1lbnQgdGhhdCBzdGlsbCBoYXMgc29tZSBMUlUgdGVuZGFu Y2llcywgd2UnbGwgY29tcGFyZSB0aGUKKyAqIHJlY2VuY3kgb2YgYSBzbWFsbGlzaCBudW1iZXIg b2YgcmFuZG9tbHkgc2VsZWN0ZWQgYnVmZmVycy4KKyAqLworI2RlZmluZSBNQVhfUkFORE9NX1NF QVJDSAkJOAorCiB0eXBlZGVmIHN0cnVjdCBTbHJ1V3JpdGVBbGxEYXRhCiB7CiAJaW50CQkJbnVt X2ZpbGVzOwkJLyogIyBmaWxlcyBhY3R1YWxseSBvcGVuICovCkBAIC0xMDcxLDYgKzEwNzksNyBA QCBTbHJ1U2VsZWN0TFJVUGFnZShTbHJ1Q3RsIGN0bCwgaW50IHBhZ2VubykKIAkJaW50CQkJYmVz dGludmFsaWRzbG90ID0gMDsJLyoga2VlcCBjb21waWxlciBxdWlldCAqLwogCQlpbnQJCQliZXN0 X2ludmFsaWRfZGVsdGEgPSAtMTsKIAkJaW50CQkJYmVzdF9pbnZhbGlkX3BhZ2VfbnVtYmVyID0g MDsJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworCQlpbnQJCQljYW5kaWRhdGVzID0gTWluKHNo YXJlZC0+bnVtX3Nsb3RzLCBNQVhfUkFORE9NX1NFQVJDSCk7CiAKIAkJLyogU2VlIGlmIHBhZ2Ug YWxyZWFkeSBoYXMgYSBidWZmZXIgYXNzaWduZWQgKi8KIAkJc2xvdG5vID0gU2xydU1hcHBpbmdG aW5kKGN0bCwgcGFnZW5vKTsKQEAgLTEwODIsOSArMTA5MSwxMCBAQCBTbHJ1U2VsZWN0TFJVUGFn ZShTbHJ1Q3RsIGN0bCwgaW50IHBhZ2VubykKIAkJfQogCiAJCS8qCi0JCSAqIElmIHdlIGZpbmQg YW55IEVNUFRZIHNsb3QsIGp1c3Qgc2VsZWN0IHRoYXQgb25lLiBFbHNlIGNob29zZSBhCi0JCSAq IHZpY3RpbSBwYWdlIHRvIHJlcGxhY2UuICBXZSBub3JtYWxseSB0YWtlIHRoZSBsZWFzdCByZWNl bnRseSB1c2VkCi0JCSAqIHZhbGlkIHBhZ2UsIGJ1dCB3ZSB3aWxsIG5ldmVyIHRha2UgdGhlIHNs b3QgY29udGFpbmluZworCQkgKiBJZiB3ZSBmaW5kIGFueSBFTVBUWSBzbG90LCBqdXN0IHNlbGVj dCB0aGF0IG9uZS4gIEVsc2UgY2hvb3NlIGEKKwkJICogdmljdGltIHBhZ2UgdG8gcmVwbGFjZS4g IFdlIHRha2UgdGhlIGxlYXN0IHJlY2VudGx5IHVzZWQgb2YgYSBzbWFsbAorCQkgKiBudW1iZXIg b2YgcmFuZG9tbHkgY2hvc2VuIHBhZ2VzLCB0byBhdm9pZCBoYXZpbmcgdG8gc2NhbiBhCisJCSAq IHBvdGVudGlhbGx5IGxhcmdlIG51bWJlciBvZiBwYWdlcy4gIFdlIHNraXAgdGhlIHNsb3QgY29u dGFpbmluZwogCQkgKiBsYXRlc3RfcGFnZV9udW1iZXIsIGV2ZW4gaWYgaXQgYXBwZWFycyBsZWFz dCByZWNlbnRseSB1c2VkLiAgV2UKIAkJICogd2lsbCBzZWxlY3QgYSBzbG90IHRoYXQgaXMgYWxy ZWFkeSBJL08gYnVzeSBvbmx5IGlmIHRoZXJlIGlzIG5vCiAJCSAqIG90aGVyIGNob2ljZTogYSBy ZWFkLWJ1c3kgc2xvdCB3aWxsIG5vdCBiZSBsZWFzdCByZWNlbnRseSB1c2VkIG9uY2UKQEAgLTEx MDksMTEgKzExMTksMTMgQEAgU2xydVNlbGVjdExSVVBhZ2UoU2xydUN0bCBjdGwsIGludCBwYWdl bm8pCiAJCSAqIG11bHRpcGxlIHBhZ2VzIHdpdGggdGhlIHNhbWUgbHJ1X2NvdW50LgogCQkgKi8K IAkJY3VyX2NvdW50ID0gKHNoYXJlZC0+Y3VyX2xydV9jb3VudCkrKzsKLQkJZm9yIChzbG90bm8g PSAwOyBzbG90bm8gPCBzaGFyZWQtPm51bV9zbG90czsgc2xvdG5vKyspCisJCWZvciAoaW50IGkg PSAwOyBpIDwgY2FuZGlkYXRlczsgKytpKQogCQl7CiAJCQlpbnQJCQl0aGlzX2RlbHRhOwogCQkJ aW50CQkJdGhpc19wYWdlX251bWJlcjsKIAorcmV0cnk6CisJCQlzbG90bm8gPSAocmFuZG9tKCkg JiBMT05HX01BWCkgJSBzaGFyZWQtPm51bV9zbG90czsKIAkJCWlmIChzaGFyZWQtPnBhZ2Vfc3Rh dHVzW3Nsb3Rub10gPT0gU0xSVV9QQUdFX0VNUFRZKQogCQkJCXJldHVybiBzbG90bm87CiAJCQl0 aGlzX2RlbHRhID0gY3VyX2NvdW50IC0gc2hhcmVkLT5wYWdlX2xydV9jb3VudFtzbG90bm9dOwpA QCAtMTEzMSw3ICsxMTQzLDcgQEAgU2xydVNlbGVjdExSVVBhZ2UoU2xydUN0bCBjdGwsIGludCBw YWdlbm8pCiAJCQl9CiAJCQl0aGlzX3BhZ2VfbnVtYmVyID0gc2hhcmVkLT5wYWdlX251bWJlcltz bG90bm9dOwogCQkJaWYgKHRoaXNfcGFnZV9udW1iZXIgPT0gc2hhcmVkLT5sYXRlc3RfcGFnZV9u dW1iZXIpCi0JCQkJY29udGludWU7CisJCQkJZ290byByZXRyeTsKIAkJCWlmIChzaGFyZWQtPnBh Z2Vfc3RhdHVzW3Nsb3Rub10gPT0gU0xSVV9QQUdFX1ZBTElEKQogCQkJewogCQkJCWlmICh0aGlz X2RlbHRhID4gYmVzdF92YWxpZF9kZWx0YSB8fAotLSAKMi4yNy4wCgo= --000000000000eacf1605bf5ba3e7--