Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uw19G-004xXJ-Ah for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Sep 2025 16:24:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uw19F-00DDeM-1b for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Sep 2025 16:24:49 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uw19E-00DDeE-0G for pgsql-hackers@lists.postgresql.org; Tue, 09 Sep 2025 16:24:49 +0000 Received: from mail-ed1-x534.google.com ([2a00:1450:4864:20::534]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uw193-001VUN-1B for pgsql-hackers@lists.postgresql.org; Tue, 09 Sep 2025 16:24:47 +0000 Received: by mail-ed1-x534.google.com with SMTP id 4fb4d7f45d1cf-6228de281baso6240934a12.1 for ; Tue, 09 Sep 2025 09:24:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757435075; x=1758039875; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=mhSOLXodwMCSNYhM9qhqT2BVWUvj4mTTnw1FtzHvoEc=; b=ZfsBQfeItGqNMV9W69LKmLMJDi8xmiUr0gKmIOgII9DMc1GtAz++/iqTenKpLNf5zY SF26TwCpbHUPZ1h7iB3X0CmfO0vC29LgoKvRhP662iMh84A3j4sJNoxftG+21Q2frwpt nCVnaZ2rWZYv7qGCIcY7HnRuSzUmU0Z3ScKL7YkQ4Lnz3RElntpu52QzNhegMwnQLw86 OmDBc7ZKu8z9PGolPts3mSEgGuZmwBGpwfqOBmARZcyNWI8Ag5x3BDsRPI9l2pvL7jEV rAkSGLQwMa/nTl5BBf0JGzweQTUZ5KGPmro09+riCP6r3+QesQNqwn2WUuhi5xjlM8qt Cfcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757435075; x=1758039875; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=mhSOLXodwMCSNYhM9qhqT2BVWUvj4mTTnw1FtzHvoEc=; b=JLAtMomuFsDM4dbibm6kllAlt0oMLKBUyT4+kmMtYZJtc2sFG/qqfDX6LK1Uq/B2pU rfOZz3oDKqVyXV102HTBw8AqKCq7LOxvf5conSoKeccJw96tvnmmuXg5Otkuk8XU0UYp 4bK2tipO1ajD+2Z3tPg0piefJAN/e9z77O5XDpzaxlNDB2nUA44wDxkwfcpZE2L5y5qW HadgnSXiybjWd+bRSsGfALtlzZJ5XLVIu2rJgsVIrC4cXfB9Kz++nGYruKYJl91TH9BW ngA5Z22lPlIdYVhhbBjfaxnB0l6NmM6+9qD+NUPJMKIl4MmOgc49YbNhoyVxRTHIx7Oa ZM2g== X-Forwarded-Encrypted: i=1; AJvYcCU6GnQnDQj/IBq9mNB7EykZsDcNi1DvlAnwqXxwuomrVYMloNnl2K39CjBQem5u4aMUNQp67+EmP4RJA0Nd@lists.postgresql.org X-Gm-Message-State: AOJu0YypfnGMIL/zOnnvQpWNq5QEXqVDWisgzGfduz1wCsGeHwvRcO3j vQ77zJN94MdmmCwchxKKQqHxY7Q3g9gUBMFA54G3bJExMdCi92nC/MbsTHfh+arknypvgdJ4p0A zKN1ZePw41doSxRxx21uWAjUQ1/tpsx4= X-Gm-Gg: ASbGncvnHuaU8/3a0nsSUTCDTQhIZrZyjsyJ6Yf+BRHTkfZQ+6Kf3FFugX10DJfStuO +Ffwep8fZSQD+TCeqTV9pdjeKx7oAfMI9p1cP298fY2VAL/Y2/s16KR/E0oQelFwF7mo1wGnPAE EoueJimPr4Wp2zX7cKAZMcImqPtfOZ++x+bl6BJgWYrrfKJDSexHuWGA5konQ9ZevykFtCfJp44 ZUU9m74zn5rFR281tyCfXbEP2MAGN26ADbdwww= X-Google-Smtp-Source: AGHT+IEgNEmZlQC+mhY4JRveUA+w8qM3VnSNlRHqjRzwrmFyWL1blsNvCI+UV8p6rU7ikDX42VlYjrO9KftRMRwCYFs= X-Received: by 2002:a05:6402:2787:b0:629:8c4d:6a91 with SMTP id 4fb4d7f45d1cf-6298c4d6ce1mr5583935a12.3.1757435074263; Tue, 09 Sep 2025 09:24:34 -0700 (PDT) MIME-Version: 1.0 References: <87DD95AA-274F-4F4F-BAD9-7738E5B1F905@yandex-team.ru> In-Reply-To: From: Melanie Plageman Date: Tue, 9 Sep 2025 12:24:20 -0400 X-Gm-Features: AS18NWCvU5Ws4xqO8LFgIdRGmExmkrN30I6ok13Rr2xnDNAfJ3LaQ3uRA9Mea2M Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Robert Haas Cc: Andres Freund , Kirill Reshke , Andrey Borodin , PostgreSQL Hackers , Heikki Linnakangas Content-Type: multipart/mixed; boundary="00000000000051af7f063e60bd82" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000051af7f063e60bd82 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Sep 9, 2025 at 10:00=E2=80=AFAM Robert Haas = wrote: > > On Mon, Sep 8, 2025 at 6:29=E2=80=AFPM Melanie Plageman > wrote: > > > The only difference is I replaced the phrase "LSN interlock" with > > "being dropped or truncated later in recovery" -- which is more > > specific and, I thought, more clear. Without this comment, it took me > > some time to understand the scenarios that might lead us to skip > > updating the heap block. heap_xlog_visible() has cause to describe > > this situation in an earlier comment -- which is why I think the LSN > > interlock comment is less confusing there. > > > > Anyway, I'm open to changing the comment. I could: > > 1) copy-paste the same comment as heap_xlog_visible() > > 2) refer to the comment in heap_xlog_visible() (comment seemed a bit > > short for that) > > 3) diverge the comments further by improving the new comment in > > heap_xlog_multi_insert() in some way > > 4) something else? > > IMHO, copying and pasting comments is not great, and comments with > identical intent and divergent wording are also not great. The former > is not great because having a whole bunch of copies of the same > comment, especially if it's a block comment rather than a 1-liner, > uses up a bunch of space and creates a maintenance hazard in the sense > that future updates might not get propagated to all copies. The latter > is not great because it makes it hard to grep for other instances that > should be adjusted when you adjust one, and also because if one > version really is better than the other than ideally we'd like to have > the good version everywhere. Of course, there's some tension between > these two goals. In this particular case, thinking a little harder > about your proposed change, it seems to me that "LSN interlock" is > more clear about what the immediate test is that would cause us to > skip updating the heap page, and "being dropped or truncated later in > recovery" is more clear about what the larger state of the world that > would lead to that situation is. But whatever preference anyone might > have about which way to go with that choice, it is hard to see why the > preference should go one way in one case and the other way in another > case. Therefore, I favor an approach that leads either to an identical > comment in both places, or to one comment referring to the other. I see what you are saying. For heap_xlog_visible() the LSN interlock comment is easier to parse because of an earlier comment before reading the heap page: /* * Read the heap page, if it still exists. If the heap file has dropped= or * truncated later in recovery, we don't need to update the page, but w= e'd * better still update the visibility map. */ I've gone with the direct copy-paste of the LSN interlock paragraph in attached v12. I think referring to the other comment is too confusing in context here. However, I also added a line about what could cause the LSN interlock -- but above it, so as to retain grep-ability of the other comment. > > > The second paragraph does not convince me at all. I see no reason to > > > believe that this is safe, or that it is a good idea. The code in > > > xlog_heap_visible() thinks its OK to unlock and relock the page to > > > make visibilitymap_set() happy, which is cringy but probably safe for > > > lack of concurrent writers, but skipping locking altogether seems > > > deeply unwise. > > > > Actually in master, heap_xlog_visible() has no lock on the heap page > > when it calls visibiltymap_set(). It releases that lock before > > recording the freespace in the FSM and doesn't take it again. > > > > It does unlock and relock the VM page -- because visibilitymap_set() > > expects to take the lock on the VM. > > > > I agree that not holding the heap lock while updating the VM is > > unsatisfying. We can't hold it while doing the IO to read in the VM > > block in XLogReadBufferForRedoExtended(). So, we could take it again > > before calling visibilitymap_set(). But we don't always have the heap > > buffer, though. I suspect this is partially why heap_xlog_visible() > > unconditionally passes InvalidBuffer to visibilitymap_set() as the > > heap buffer and has special case handling for recovery when we don't > > have the heap buffer. > > You know, I wasn't thinking carefully enough about the distinction > between the heap page and the visibility map page here. I thought you > were saying that you were modifying a page without a lock on that > page, but you aren't: you're saying you're modifying a page without a > lock on another page to which it is related. The former seems > disastrous, but the latter might be OK. However, I'm sort of confused > about what the comment is trying to say to justify that: > > + * It is only okay to set the VM bits without holding the heap pa= ge lock > + * because we can expect no other writers of this page. > > It is not exactly clear to me whether "this page" here refers to the > heap page or the VM page. If it means the heap page, why should that > be so if we haven't got any kind of lock? If it means the VM page, > then why is the heap page even relevant? I've expanded the comment in v12. In normal operation we must have the lock on the heap page when setting the VM bits because if another backend cleared PD_ALL_VISIBLE, we could have the forbidden scenario where PD_ALL_VISIBLE is clear and the VM is set. This is not allowed because then someone else may read the VM, conclude the page is all-visible, and then an index-only scan can return wrong results. In recovery, there are no concurrent writers, so it can't happen. It is worth discussing how to fix it in heap_xlog_visible() so that future scenarios like parallel recovery could not break this. However, this patch is not a deviation from the behavior on master, and, technically the behavior on master works. - Melanie --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0002-Make-heap_page_is_all_visible-independent-of-LVR.patch" Content-Disposition: attachment; filename="v12-0002-Make-heap_page_is_all_visible-independent-of-LVR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcibp1 RnJvbSAyODI1M2E1YzRjYjYwZDg0MmY4M2E2ZjNiOTBiYjk4NGZmZDEwZjg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDE1OjQ4OjUxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMDIvMjBdIE1ha2UgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlIGluZGVwZW5kZW50 IG9mCiBMVlJlbFN0YXRlCgpGdXR1cmUgY29tbWl0cyB3aWxsIHVzZSB0aGlzIGZ1bmN0aW9uIGlu c2lkZSBvZiBwcnVuZWhlYXAuYyB3aGVyZSB3ZSBkbwpub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIExW UmVsU3RhdGUuIFdlIG9ubHkgbmVlZCBhIGZldyBwYXJhbWV0ZXJzIGZyb20KdGhlIExWUmVsU3Rh dGUsIHNvIGp1c3QgcGFzcyB0aG9zZSBpbiBleHBsaWNpdGx5LgoKQXV0aG9yOiBNZWxhbmllIFBs YWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJl c2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9mbGF0L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndRM2NNT014MURoM1ZNaHA4LVY3U09M eGRLOS1nJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgfCA0OCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMzEgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCmluZGV4IDk4MWQ5MzgwYTkyLi44YTg0YmRmZTBhOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDYzLDggKzQ2MywxMSBAQCBzdGF0aWMgdm9pZCBk ZWFkX2l0ZW1zX2FkZChMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBPZmZz ZXROdW1iZXIgKgogCQkJCQkJICAgaW50IG51bV9vZmZzZXRzKTsKIHN0YXRpYyB2b2lkIGRlYWRf aXRlbXNfcmVzZXQoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNf Y2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpOwotc3RhdGljIGJvb2wgaGVhcF9wYWdlX2lzX2Fs bF92aXNpYmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkJCSBUcmFu c2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsIGJvb2wgKmFsbF9mcm96ZW4pOworc3Rh dGljIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1 ZiwKKwkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkgYm9vbCAq YWxsX2Zyb3plbiwKKwkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94 aWQsCisJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CiBzdGF0aWMgdm9p ZCB1cGRhdGVfcmVsc3RhdHNfYWxsX2luZGV4ZXMoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRp YyB2b2lkIHZhY3V1bV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwogc3RhdGljIHZvaWQgdXBk YXRlX3ZhY3V1bV9lcnJvcl9pbmZvKExWUmVsU3RhdGUgKnZhY3JlbCwKQEAgLTIwMDksOCArMjAx Miw5IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAKIAkJQXNzZXJ0KHBy ZXN1bHQubHBkZWFkX2l0ZW1zID09IDApOwogCi0JCWlmICghaGVhcF9wYWdlX2lzX2FsbF92aXNp YmxlKHZhY3JlbCwgYnVmLAotCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCAmZGVidWdfYWxsX2Zy b3plbikpCisJCWlmICghaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWYs CisJCQkJCQkJCQkgIHZhY3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWluLCAmZGVidWdfYWxsX2Zyb3pl biwKKwkJCQkJCQkJCSAgJmRlYnVnX2N1dG9mZiwgJnZhY3JlbC0+b2ZmbnVtKSkKIAkJCUFzc2Vy dChmYWxzZSk7CiAKIAkJQXNzZXJ0KHByZXN1bHQuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJv emVuKTsKQEAgLTI5MTIsOCArMjkxNiw4IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0 YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCSAqIGVtaXR0 ZWQuCiAJICovCiAJQXNzZXJ0KCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKTsKLQlpZiAoaGVhcF9w YWdlX2lzX2FsbF92aXNpYmxlKHZhY3JlbCwgYnVmZmVyLCAmdmlzaWJpbGl0eV9jdXRvZmZfeGlk LAotCQkJCQkJCQkgJmFsbF9mcm96ZW4pKQorCWlmIChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUo dmFjcmVsLT5yZWwsIGJ1ZmZlciwgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sCisJCQkJCQkJ CSAmYWxsX2Zyb3plbiwgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgJnZhY3JlbC0+b2ZmbnVtKSkK IAl7CiAJCXVpbnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CiAKQEAgLTM1 OTYsMTAgKzM2MDAsMTggQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCkK IH0KIAogLyoKLSAqIENoZWNrIGlmIGV2ZXJ5IHR1cGxlIGluIHRoZSBnaXZlbiBwYWdlIGlzIHZp c2libGUgdG8gYWxsIGN1cnJlbnQgYW5kIGZ1dHVyZQotICogdHJhbnNhY3Rpb25zLiBBbHNvIHJl dHVybiB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlkIHdoaWNoIGlzIHRoZSBoaWdoZXN0Ci0gKiB4 bWluIGFtb25nc3QgdGhlIHZpc2libGUgdHVwbGVzLiAgU2V0ICphbGxfZnJvemVuIHRvIHRydWUg aWYgZXZlcnkgdHVwbGUKLSAqIG9uIHRoaXMgcGFnZSBpcyBmcm96ZW4uCisgKiBDaGVjayBpZiBl dmVyeSB0dXBsZSBpbiB0aGUgZ2l2ZW4gcGFnZSBpbiBidWYgaXMgdmlzaWJsZSB0byBhbGwgY3Vy cmVudCBhbmQKKyAqIGZ1dHVyZSB0cmFuc2FjdGlvbnMuCisgKgorICogT2xkZXN0WG1pbiBpcyB1 c2VkIHRvIGRldGVybWluZSB2aXNpYmlsaXR5LgorICoKKyAqIFNldHMgKmFsbF9mcm96ZW4gdG8g dHJ1ZSBpZiBldmVyeSB0dXBsZSBvbiB0aGlzIHBhZ2UgaXMgZnJvemVuLgorICoKKyAqIFNldHMg KnZpc2liaWxpdHlfY3V0b2ZmX3hpZCB0byB0aGUgaGlnaGVzdCB4bWluIGFtb25nc3QgdGhlIHZp c2libGUgdHVwbGVzLgorICogSXQgaXMgb25seSB2YWxpZCBpZiB0aGUgcGFnZSBpcyBhbGwtdmlz aWJsZS4KKyAqCisgKiAqbG9nZ2luZ19vZmZudW0gd2lsbCBoYXZlIHRoZSBPZmZzZXROdW1iZXIg b2YgdGhlIGN1cnJlbnQgdHVwbGUgYmVpbmcKKyAqIHByb2Nlc3NlZCBmb3IgdmFjdXVtJ3MgZXJy b3IgY2FsbGJhY2sgc3lzdGVtLgogICoKICAqIFRoaXMgaXMgYSBzdHJpcHBlZCBkb3duIHZlcnNp b24gb2YgbGF6eV9zY2FuX3BydW5lKCkuICBJZiB5b3UgY2hhbmdlCiAgKiBhbnl0aGluZyBoZXJl LCBtYWtlIHN1cmUgdGhhdCBldmVyeXRoaW5nIHN0YXlzIGluIHN5bmMuICBOb3RlIHRoYXQgYW4K QEAgLTM2MDcsOSArMzYxOSwxMSBAQCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0ZSAqdmFj cmVsKQogICogaW50cm9kdWNpbmcgbmV3IHNpZGUtZWZmZWN0cyBoZXJlLgogICovCiBzdGF0aWMg Ym9vbAotaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVy IGJ1ZiwKK2hlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYs CisJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJIGJvb2wgKmFsbF9mcm96 ZW4sCiAJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJ IGJvb2wgKmFsbF9mcm96ZW4pCisJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkK IHsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCUJsb2NrTnVtYmVyIGJsb2Nr bm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWYpOwpAQCAtMzYzMiw3ICszNjQ2LDcgQEAgaGVh cF9wYWdlX2lzX2FsbF92aXNpYmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJ ICogU2V0IHRoZSBvZmZzZXQgbnVtYmVyIHNvIHRoYXQgd2UgY2FuIGRpc3BsYXkgaXQgYWxvbmcg d2l0aCBhbnkKIAkJICogZXJyb3IgdGhhdCBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoaXMg dHVwbGUuCiAJCSAqLwotCQl2YWNyZWwtPm9mZm51bSA9IG9mZm51bTsKKwkJKmxvZ2dpbmdfb2Zm bnVtID0gb2ZmbnVtOwogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIG9mZm51bSk7CiAK IAkJLyogVW51c2VkIG9yIHJlZGlyZWN0IGxpbmUgcG9pbnRlcnMgYXJlIG9mIG5vIGludGVyZXN0 ICovCkBAIC0zNjU2LDkgKzM2NzAsOSBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoTFZSZWxT dGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCiAJCXR1cGxlLnRfZGF0YSA9IChIZWFwVHVwbGVI ZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CiAJCXR1cGxlLnRfbGVuID0gSXRlbUlk R2V0TGVuZ3RoKGl0ZW1pZCk7Ci0JCXR1cGxlLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlk KHZhY3JlbC0+cmVsKTsKKwkJdHVwbGUudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVs KTsKIAotCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgmdHVwbGUsIHZhY3JlbC0+ Y3V0b2Zmcy5PbGRlc3RYbWluLAorCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgm dHVwbGUsIE9sZGVzdFhtaW4sCiAJCQkJCQkJCQkJIGJ1ZikpCiAJCXsKIAkJCWNhc2UgSEVBUFRV UExFX0xJVkU6CkBAIC0zNjc5LDcgKzM2OTMsNyBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUo TFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkgKi8KIAkJCQkJeG1pbiA9IEhl YXBUdXBsZUhlYWRlckdldFhtaW4odHVwbGUudF9kYXRhKTsKIAkJCQkJaWYgKCFUcmFuc2FjdGlv bklkUHJlY2VkZXMoeG1pbiwKLQkJCQkJCQkJCQkJICAgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFht aW4pKQorCQkJCQkJCQkJCQkgICBPbGRlc3RYbWluKSkKIAkJCQkJewogCQkJCQkJYWxsX3Zpc2li bGUgPSBmYWxzZTsKIAkJCQkJCSphbGxfZnJvemVuID0gZmFsc2U7CkBAIC0zNzE0LDcgKzM3Mjgs NyBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIg YnVmLAogCX0JCQkJCQkJLyogc2NhbiBhbG9uZyBwYWdlICovCiAKIAkvKiBDbGVhciB0aGUgb2Zm c2V0IGluZm9ybWF0aW9uIG9uY2Ugd2UgaGF2ZSBwcm9jZXNzZWQgdGhlIGdpdmVuIHBhZ2UuICov Ci0JdmFjcmVsLT5vZmZudW0gPSBJbnZhbGlkT2Zmc2V0TnVtYmVyOworCSpsb2dnaW5nX29mZm51 bSA9IEludmFsaWRPZmZzZXROdW1iZXI7CiAKIAlyZXR1cm4gYWxsX3Zpc2libGU7CiB9Ci0tIAoy LjQzLjAKCg== --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0001-Eliminate-xl_heap_visible-in-COPY-FREEZE.patch" Content-Disposition: attachment; filename="v12-0001-Eliminate-xl_heap_visible-in-COPY-FREEZE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcib90 RnJvbSBhMDQyY2FiZjc5ZGE4ZmFhNTgzZjA4MWI0MzJkZGI5NTVkNjIxMWJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE3IEp1biAyMDI1IDE3OjIyOjEwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMDEvMjBdIEVsaW1pbmF0ZSB4bF9oZWFwX3Zpc2libGUgaW4gQ09QWSBGUkVFWkUK Ckluc3RlYWQgb2YgZW1pdHRpbmcgYSBzZXBhcmF0ZSBXQUwgcmVjb3JkIGZvciBzZXR0aW5nIHRo ZSBWTSBiaXRzIGluCnhsX2hlYXBfdmlzaWJsZSwgc3BlY2lmeSB0aGUgY2hhbmdlcyB0byBtYWtl IHRvIHRoZSBWTSBibG9jayBpbiB0aGUKeGxfaGVhcF9tdWx0aV9pbnNlcnQgcmVjb3JkIGluc3Rl YWQuCgpUaGlzIGhhbHZlcyB0aGUgbnVtYmVyIG9mIFdBTCByZWNvcmRzIGVtaXR0ZWQgYnkgQ09Q WSBGUkVFWkUuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFp bC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpS ZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1i eTogS2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0 cHM6Ly9wb3N0Z3IuZXMvbS9mbGF0L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndRM2NNT014MURo M1ZNaHA4LVY3U09MeGRLOS1nJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYyAgICAgICAgfCA1MCArKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICB8IDU1ICsrKysrKysrKysrKysrKysrKyst CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgfCA2NyArKysrKysrKysr KysrKysrKysrKysrKystCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyAg fCAgNSArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaCAgICAgIHwgIDIgKwog NSBmaWxlcyBjaGFuZ2VkLCAxNTkgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCA0YzVhZTIwNWE3YS4uY2ZmNTMxYTQ4MDEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0yNDY2LDcgKzI0NjYsMTEgQEAgaGVhcF9tdWx0aV9p bnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVw bGVzLAogCQlzdGFydGluZ193aXRoX2VtcHR5X3BhZ2UgPSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVy KHBhZ2UpID09IDA7CiAKIAkJaWYgKHN0YXJ0aW5nX3dpdGhfZW1wdHlfcGFnZSAmJiAob3B0aW9u cyAmIEhFQVBfSU5TRVJUX0ZST1pFTikpCisJCXsKIAkJCWFsbF9mcm96ZW5fc2V0ID0gdHJ1ZTsK KwkJCS8qIExvY2sgdGhlIHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyB0aGUgY3JpdGljYWwgc2Vj dGlvbiAqLworCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsK KwkJfQogCiAJCS8qIE5PIEVSRVBPUlQoRVJST1IpIGZyb20gaGVyZSB0aWxsIGNoYW5nZXMgYXJl IGxvZ2dlZCAqLwogCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKQEAgLTI1MDQsOSArMjUwOCw2IEBA IGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNs b3RzLCBpbnQgbnR1cGxlcywKIAkJLyoKIAkJICogSWYgdGhlIHBhZ2UgaXMgYWxsIHZpc2libGUs IG5lZWQgdG8gY2xlYXIgdGhhdCwgdW5sZXNzIHdlJ3JlIG9ubHkKIAkJICogZ29pbmcgdG8gYWRk IGZ1cnRoZXIgZnJvemVuIHJvd3MgdG8gaXQuCi0JCSAqCi0JCSAqIElmIHdlJ3JlIG9ubHkgYWRk aW5nIGFscmVhZHkgZnJvemVuIHJvd3MgdG8gYSBwcmV2aW91c2x5IGVtcHR5Ci0JCSAqIHBhZ2Us IG1hcmsgaXQgYXMgYWxsLXZpc2libGUuCiAJCSAqLwogCQlpZiAoUGFnZUlzQWxsVmlzaWJsZShw YWdlKSAmJiAhKG9wdGlvbnMgJiBIRUFQX0lOU0VSVF9GUk9aRU4pKQogCQl7CkBAIC0yNTE2LDgg KzI1MTcsMjEgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFi bGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQkJCQkJCQlCdWZmZXJHZXRCbG9ja051bWJl cihidWZmZXIpLAogCQkJCQkJCQl2bWJ1ZmZlciwgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsK IAkJfQorCisJCS8qCisJCSAqIElmIHdlJ3JlIG9ubHkgYWRkaW5nIGFscmVhZHkgZnJvemVuIHJv d3MgdG8gYSBwcmV2aW91c2x5IGVtcHR5CisJCSAqIHBhZ2UsIG1hcmsgaXQgYXMgYWxsLWZyb3pl biBhbmQgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4gV2UncmUKKwkJICogYWxyZWFkeSBob2xk aW5nIGEgcGluIG9uIHRoZSB2bWJ1ZmZlci4KKwkJICovCiAJCWVsc2UgaWYgKGFsbF9mcm96ZW5f c2V0KQorCQl7CiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJCXZpc2liaWxpdHltYXBf c2V0X3ZtYml0cyhyZWxhdGlvbiwKKwkJCQkJCQkJCSBCdWZmZXJHZXRCbG9ja051bWJlcihidWZm ZXIpLAorCQkJCQkJCQkJIHZtYnVmZmVyLAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJ U0lCTEUgfAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7CisJCX0KIAogCQkv KgogCQkgKiBYWFggU2hvdWxkIHdlIHNldCBQYWdlU2V0UHJ1bmFibGUgb24gdGhpcyBwYWdlID8g U2VlIGhlYXBfaW5zZXJ0KCkKQEAgLTI1NjUsNiArMjU3OSwxMiBAQCBoZWFwX211bHRpX2luc2Vy dChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3QgKipzbG90cywgaW50IG50dXBsZXMs CiAJCQl4bHJlYy0+ZmxhZ3MgPSAwOwogCQkJaWYgKGFsbF92aXNpYmxlX2NsZWFyZWQpCiAJCQkJ eGxyZWMtPmZsYWdzID0gWExIX0lOU0VSVF9BTExfVklTSUJMRV9DTEVBUkVEOworCisJCQkvKgor CQkJICogV2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCBpbmNsdWRpbmcgYSBjb25mbGljdCB4 aWQgaW4gdGhlCisJCQkgKiBXQUwgcmVjb3JkIGFzIEhFQVBfSU5TRVJUX0ZST1pFTiBpbnRlbnRp b25hbGx5IHZpb2xhdGVzCisJCQkgKiB2aXNpYmlsaXR5IHJ1bGVzLgorCQkJICovCiAJCQlpZiAo YWxsX2Zyb3plbl9zZXQpCiAJCQkJeGxyZWMtPmZsYWdzID0gWExIX0lOU0VSVF9BTExfRlJPWkVO X1NFVDsKIApAQCAtMjYyNyw3ICsyNjQ3LDEwIEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9u IHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1cGxlcywKIAogCQkJWExv Z0JlZ2luSW5zZXJ0KCk7CiAJCQlYTG9nUmVnaXN0ZXJEYXRhKHhscmVjLCB0dXBsZWRhdGEgLSBz Y3JhdGNoLmRhdGEpOworCiAJCQlYTG9nUmVnaXN0ZXJCdWZmZXIoMCwgYnVmZmVyLCBSRUdCVUZf U1RBTkRBUkQgfCBidWZmbGFncyk7CisJCQlpZiAoYWxsX2Zyb3plbl9zZXQpCisJCQkJWExvZ1Jl Z2lzdGVyQnVmZmVyKDEsIHZtYnVmZmVyLCAwKTsKIAogCQkJWExvZ1JlZ2lzdGVyQnVmRGF0YSgw LCB0dXBsZWRhdGEsIHRvdGFsZGF0YWxlbik7CiAKQEAgLTI2MzcsMjYgKzI2NjAsMTcgQEAgaGVh cF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMs IGludCBudHVwbGVzLAogCQkJcmVjcHRyID0gWExvZ0luc2VydChSTV9IRUFQMl9JRCwgaW5mbyk7 CiAKIAkJCVBhZ2VTZXRMU04ocGFnZSwgcmVjcHRyKTsKKwkJCWlmIChhbGxfZnJvemVuX3NldCkK KwkJCXsKKwkJCQlBc3NlcnQoQnVmZmVySXNEaXJ0eSh2bWJ1ZmZlcikpOworCQkJCVBhZ2VTZXRM U04oQnVmZmVyR2V0UGFnZSh2bWJ1ZmZlciksIHJlY3B0cik7CisJCQl9CiAJCX0KIAogCQlFTkRf Q1JJVF9TRUNUSU9OKCk7CiAKLQkJLyoKLQkJICogSWYgd2UndmUgZnJvemVuIGV2ZXJ5dGhpbmcg b24gdGhlIHBhZ2UsIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eW1hcC4KLQkJICogV2UncmUgYWxyZWFk eSBob2xkaW5nIHBpbiBvbiB0aGUgdm1idWZmZXIuCi0JCSAqLwogCQlpZiAoYWxsX2Zyb3plbl9z ZXQpCi0JCXsKLQkJCS8qCi0JCQkgKiBJdCdzIGZpbmUgdG8gdXNlIEludmFsaWRUcmFuc2FjdGlv bklkIGhlcmUgLSB0aGlzIGlzIG9ubHkgdXNlZAotCQkJICogd2hlbiBIRUFQX0lOU0VSVF9GUk9a RU4gaXMgc3BlY2lmaWVkLCB3aGljaCBpbnRlbnRpb25hbGx5Ci0JCQkgKiB2aW9sYXRlcyB2aXNp YmlsaXR5IHJ1bGVzLgotCQkJICovCi0JCQl2aXNpYmlsaXR5bWFwX3NldChyZWxhdGlvbiwgQnVm ZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwgYnVmZmVyLAotCQkJCQkJCSAgSW52YWxpZFhMb2dS ZWNQdHIsIHZtYnVmZmVyLAotCQkJCQkJCSAgSW52YWxpZFRyYW5zYWN0aW9uSWQsCi0JCQkJCQkJ ICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsK LQkJfQorCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIAogCQlV bmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CiAJCW5kb25lICs9IG50aGlzcGFnZTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IGNmODQzMjc3OTM4Li44NmU1Zjc2ZTQ5 ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC01NTEsNiArNTUxLDcg QEAgaGVhcF94bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAlpbnQJ CQlpOwogCWJvb2wJCWlzaW5pdCA9IChYTG9nUmVjR2V0SW5mbyhyZWNvcmQpICYgWExPR19IRUFQ X0lOSVRfUEFHRSkgIT0gMDsKIAlYTG9nUmVkb0FjdGlvbiBhY3Rpb247CisJQnVmZmVyCQl2bWJ1 ZmZlciA9IEludmFsaWRCdWZmZXI7CiAKIAkvKgogCSAqIEluc2VydGlvbiBkb2Vzbid0IG92ZXJ3 cml0ZSBNVkNDIGRhdGEsIHNvIG5vIGNvbmZsaWN0IHByb2Nlc3NpbmcgaXMKQEAgLTU3MSwxMSAr NTcyLDExIEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp CiAJaWYgKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKIAl7 CiAJCVJlbGF0aW9uCXJlbG4gPSBDcmVhdGVGYWtlUmVsY2FjaGVFbnRyeShybG9jYXRvcik7Ci0J CUJ1ZmZlcgkJdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJCXZpc2liaWxpdHltYXBfcGlu KHJlbG4sIGJsa25vLCAmdm1idWZmZXIpOwogCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbG4sIGJs a25vLCB2bWJ1ZmZlciwgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKIAkJUmVsZWFzZUJ1ZmZl cih2bWJ1ZmZlcik7CisJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAkJRnJlZUZha2VSZWxj YWNoZUVudHJ5KHJlbG4pOwogCX0KIApAQCAtNjYyLDYgKzY2Myw1OCBAQCBoZWFwX3hsb2dfbXVs dGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCWlmIChCdWZmZXJJc1ZhbGlkKGJ1 ZmZlcikpCiAJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKIAorCWJ1ZmZlciA9IEludmFs aWRCdWZmZXI7CisKKwkvKgorCSAqIE5vdyByZWFkIGFuZCB1cGRhdGUgdGhlIFZNIGJsb2NrLgor CSAqCisJICogTm90ZSB0aGF0IHRoZSBoZWFwIHJlbGF0aW9uIG1heSBoYXZlIGJlZW4gZHJvcHBl ZCBvciB0cnVuY2F0ZWQsIGxlYWRpbmcKKwkgKiB1cyB0byBza2lwIHVwZGF0aW5nIHRoZSBoZWFw IGJsb2NrLgorCSAqCisJICogRXZlbiBpZiB3ZSBza2lwcGVkIHRoZSBoZWFwIHBhZ2UgdXBkYXRl IGR1ZSB0byB0aGUgTFNOIGludGVybG9jaywgaXQncworCSAqIHN0aWxsIHNhZmUgdG8gdXBkYXRl IHRoZSB2aXNpYmlsaXR5IG1hcC4gIEFueSBXQUwgcmVjb3JkIHRoYXQgY2xlYXJzCisJICogdGhl IHZpc2liaWxpdHkgbWFwIGJpdCBkb2VzIHNvIGJlZm9yZSBjaGVja2luZyB0aGUgcGFnZSBMU04s IHNvIGFueQorCSAqIGJpdHMgdGhhdCBuZWVkIHRvIGJlIGNsZWFyZWQgd2lsbCBzdGlsbCBiZSBj bGVhcmVkLgorCSAqCisJICogTm90ZSB0aGF0IHRoZSBsb2NrIG9uIHRoZSBoZWFwIHBhZ2Ugd2Fz IGRyb3BwZWQgYWJvdmUuIEluIG5vcm1hbAorCSAqIG9wZXJhdGlvbiB0aGlzIHdvdWxkIG5ldmVy IGJlIHNhZmUgYmVjYXVzZSBhIGNvbmN1cnJlbnQgcXVlcnkgY291bGQKKwkgKiBtb2RpZnkgdGhl IGhlYXAgcGFnZSBhbmQgY2xlYXIgUERfQUxMX1ZJU0lCTEUgLS0gdmlvbGF0aW5nIHRoZQorCSAq IGludmFyaWFudCB0aGF0IFBEX0FMTF9WSVNJQkxFIG11c3QgYmUgc2V0IGlmIHRoZSBjb3JyZXNw b25kaW5nIGJpdCBpbgorCSAqIHRoZSBWTSBpcyBzZXQuCisJICoKKwkgKiBJbiByZWNvdmVyeSwg d2UgZXhwZWN0IG5vIG90aGVyIHdyaXRlcnMsIHNvIHdyaXRpbmcgdG8gdGhlIFZNIHBhZ2UKKwkg KiB3aXRob3V0IGhvbGRpbmcgYSBsb2NrIG9uIHRoZSBoZWFwIHBhZ2UgaXMgY29uc2lkZXJlZCBz YWZlIGVub3VnaC4gSXQKKwkgKiBpcyBkb25lIHRoaXMgd2F5IHdoZW4gcmVwbGF5aW5nIHhsX2hl YXBfdmlzaWJsZSByZWNvcmRzIChzZWUKKwkgKiBoZWFwX3hsb2dfdmlzaWJsZSgpKS4KKwkgKi8K KwlpZiAoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCAmJgorCQlYTG9n UmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDEsIFJCTV9aRVJPX09OX0VSUk9SLCBm YWxzZSwKKwkJCQkJCQkJCSAgJnZtYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKKwl7CisJCVBh Z2UJCXZtcGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpOworCQlSZWxhdGlvbglyZWxuID0g Q3JlYXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0b3IpOworCisJCS8qIGluaXRpYWxpemUgdGhl IHBhZ2UgaWYgaXQgd2FzIHJlYWQgYXMgemVyb3MgKi8KKwkJaWYgKFBhZ2VJc05ldyh2bXBhZ2Up KQorCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1osIDApOworCisJCXZpc2liaWxpdHltYXBfc2V0 X3ZtYml0cyhyZWxuLCBibGtubywKKwkJCQkJCQkJIHZtYnVmZmVyLAorCQkJCQkJCQkgVklTSUJJ TElUWU1BUF9BTExfVklTSUJMRSB8CisJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4p OworCisJCS8qCisJCSAqIEl0IGlzIG5vdCBwb3NzaWJsZSB0aGF0IHRoZSBWTSB3YXMgYWxyZWFk eSBzZXQgZm9yIHRoaXMgaGVhcCBwYWdlLAorCQkgKiBzbyB0aGUgdm1idWZmZXIgbXVzdCBoYXZl IGJlZW4gbW9kaWZpZWQgYW5kIG1hcmtlZCBkaXJ0eS4KKwkJICovCisJCUFzc2VydChCdWZmZXJJ c0RpcnR5KHZtYnVmZmVyKSk7CisJCVBhZ2VTZXRMU04oQnVmZmVyR2V0UGFnZSh2bWJ1ZmZlciks IGxzbik7CisJCUZyZWVGYWtlUmVsY2FjaGVFbnRyeShyZWxuKTsKKwl9CisKKwlpZiAoQnVmZmVy SXNWYWxpZCh2bWJ1ZmZlcikpCisJCVVubG9ja1JlbGVhc2VCdWZmZXIodm1idWZmZXIpOworCiAJ LyoKIAkgKiBJZiB0aGUgcGFnZSBpcyBydW5uaW5nIGxvdyBvbiBmcmVlIHNwYWNlLCB1cGRhdGUg dGhlIEZTTSBhcyB3ZWxsLgogCSAqIEFyYml0cmFyaWx5LCBvdXIgZGVmaW5pdGlvbiBvZiAibG93 IiBpcyBsZXNzIHRoYW4gMjAlLiBXZSBjYW4ndCBkbyBtdWNoCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92aXNpYmlsaXR5bWFwLmMKaW5kZXggNzMwNmMxNmYwNWMuLmFhNDhhNDM2MTA4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0xNCw3ICsxNCw4IEBACiAgKgkJ dmlzaWJpbGl0eW1hcF9jbGVhciAgLSBjbGVhciBiaXRzIGZvciBvbmUgcGFnZSBpbiB0aGUgdmlz aWJpbGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3BpbgkgLSBwaW4gYSBtYXAgcGFnZSBmb3Ig c2V0dGluZyBhIGJpdAogICoJCXZpc2liaWxpdHltYXBfcGluX29rIC0gY2hlY2sgd2hldGhlciBj b3JyZWN0IG1hcCBwYWdlIGlzIGFscmVhZHkgcGlubmVkCi0gKgkJdmlzaWJpbGl0eW1hcF9zZXQJ IC0gc2V0IGEgYml0IGluIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQorICoJCXZpc2liaWxpdHlt YXBfc2V0CSAtIHNldCBiaXQocykgaW4gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlIGFuZCBsb2cK KyAqCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMgLSBzZXQgYml0KHMpIGluIGEgcGlubmVkIHBh Z2UKICAqCQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMgLSBnZXQgc3RhdHVzIG9mIGJpdHMKICAq CQl2aXNpYmlsaXR5bWFwX2NvdW50ICAtIGNvdW50IG51bWJlciBvZiBiaXRzIHNldCBpbiB2aXNp YmlsaXR5IG1hcAogICoJCXZpc2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZSAtCkBAIC0zMjEs NiArMzIyLDcwIEBAIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIg aGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCiAJcmV0dXJuIHN0YXR1czsKIH0KIAorLyoKKyAqIFNl dCBmbGFncyBpbiB0aGUgVk0gYmxvY2sgY29udGFpbmVkIGluIHRoZSBwYXNzZWQgaW4gdm1CdWYu CisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBmb3IgY2FsbGVycyB3aGljaCBpbmNsdWRlIHRoZSBW TSBjaGFuZ2VzIGluIHRoZSBzYW1lIFdBTAorICogcmVjb3JkIGFzIHRoZSBtb2RpZmljYXRpb25z IG9mIHRoZSBoZWFwIHBhZ2Ugd2hpY2ggcmVuZGVyZWQgaXQgYWxsLXZpc2libGUuCisgKiBDYWxs ZXJzIHNlcGFyYXRlbHkgbG9nZ2luZyB0aGUgVk0gY2hhbmdlcyBzaG91bGQgaW52b2tlIHZpc2li aWxpdHltYXBfc2V0KCkKKyAqIGluc3RlYWQuCisgKgorICogQ2FsbGVyIG11c3QgaGF2ZSBwaW5u ZWQgYW5kIGV4Y2x1c2l2ZSBsb2NrZWQgdGhlIGNvcnJlY3QgYmxvY2sgb2YgdGhlIFZNIGluCisg KiB2bUJ1Zi4gVGhpcyBibG9jayBzaG91bGQgY29udGFpbiB0aGUgVk0gYml0cyBmb3IgdGhlIGdp dmVuIGhlYXBCbGsuCisgKgorICogRHVyaW5nIG5vcm1hbCBvcGVyYXRpb24gKGkuZS4gbm90IHJl Y292ZXJ5KSwgdGhpcyBzaG91bGQgYmUgY2FsbGVkIGluIGEKKyAqIGNyaXRpY2FsIHNlY3Rpb24g d2hpY2ggYWxzbyBtYWtlcyBhbnkgbmVjZXNzYXJ5IGNoYW5nZXMgdG8gdGhlIGhlYXAgcGFnZQor ICogYW5kLCBpZiByZWxldmFudCwgZW1pdHMgV0FMLgorICoKKyAqIENhbGxlciBpcyByZXNwb25z aWJsZSBmb3IgV0FMIGxvZ2dpbmcgdGhlIGNoYW5nZXMgdG8gdGhlIFZNIGJ1ZmZlciBhbmQgZm9y CisgKiBtYWtpbmcgYW55IGNoYW5nZXMgbmVlZGVkIHRvIHRoZSBhc3NvY2lhdGVkIGhlYXAgcGFn ZS4gVGhpcyBpbmNsdWRlcworICogbWFpbnRhaW5pbmcgYW55IGludmFyaWFudHMgc3VjaCBhcyBl bnN1cmluZyB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgaGVhcEJsaworICogaXMgcGlubmVkIGFuZCBl eGNsdXNpdmUgbG9ja2VkLgorICovCit1aW50OAordmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKFJl bGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJCSBCdWZmZXIgdm1CdWYsIHVp bnQ4IGZsYWdzKQoreworCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9D SyhoZWFwQmxrKTsKKwl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJs ayk7CisJdWludDgJCW1hcE9mZnNldCA9IEhFQVBCTEtfVE9fT0ZGU0VUKGhlYXBCbGspOworCVBh Z2UJCXBhZ2U7CisJdWludDgJICAgKm1hcDsKKwl1aW50OAkJc3RhdHVzOworCisjaWZkZWYgVFJB Q0VfVklTSUJJTElUWU1BUAorCWVsb2coREVCVUcxLCAidm1fc2V0IGZsYWdzIDB4JTAyWCBmb3Ig JXMgJWQiLAorCQkgZmxhZ3MsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIGhlYXBCbGsp OworI2VuZGlmCisKKwkvKiBDYWxsIGluIHNhbWUgY3JpdGljYWwgc2VjdGlvbiB3aGVyZSBXQUwg aXMgZW1pdHRlZC4gKi8KKwlBc3NlcnQoSW5SZWNvdmVyeSB8fCBDcml0U2VjdGlvbkNvdW50ID4g MCk7CisKKwkvKiBGbGFncyBzaG91bGQgYmUgdmFsaWQuIEFsc28gbmV2ZXIgY2xlYXIgYml0cyB3 aXRoIHRoaXMgZnVuY3Rpb24gKi8KKwlBc3NlcnQoKGZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJ RF9CSVRTKSA9PSBmbGFncyk7CisKKwkvKiBNdXN0IG5ldmVyIHNldCBhbGxfZnJvemVuIGJpdCB3 aXRob3V0IGFsc28gc2V0dGluZyBhbGxfdmlzaWJsZSBiaXQgKi8KKwlBc3NlcnQoZmxhZ3MgIT0g VklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKworCS8qIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUg cmlnaHQgVk0gcGFnZSBwaW5uZWQgKi8KKwlpZiAoIUJ1ZmZlcklzVmFsaWQodm1CdWYpIHx8IEJ1 ZmZlckdldEJsb2NrTnVtYmVyKHZtQnVmKSAhPSBtYXBCbG9jaykKKwkJZWxvZyhFUlJPUiwgIndy b25nIFZNIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQiKTsKKworCUFzc2VydChC dWZmZXJJc0V4Y2x1c2l2ZUxvY2tlZCh2bUJ1ZikpOworCisJcGFnZSA9IEJ1ZmZlckdldFBhZ2Uo dm1CdWYpOworCW1hcCA9ICh1aW50OCAqKSBQYWdlR2V0Q29udGVudHMocGFnZSk7CisKKwlzdGF0 dXMgPSAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCkgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJ VFM7CisJaWYgKGZsYWdzICE9IHN0YXR1cykKKwl7CisJCW1hcFttYXBCeXRlXSB8PSAoZmxhZ3Mg PDwgbWFwT2Zmc2V0KTsKKwkJTWFya0J1ZmZlckRpcnR5KHZtQnVmKTsKKwl9CisKKwlyZXR1cm4g c3RhdHVzOworfQorCiAvKgogICoJdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzIC0gZ2V0IHN0YXR1 cyBvZiBiaXRzCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hl YXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwppbmRleCA4 MmI2MmM5NWRlNS4uYjQ4ZDdkYzFkMjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9y bWdyZGVzYy9oZWFwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFw ZGVzYy5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtX3hsb2cu aCIKICNpbmNsdWRlICJhY2Nlc3Mvcm1ncmRlc2NfdXRpbHMuaCIKKyNpbmNsdWRlICJhY2Nlc3Mv dmlzaWJpbGl0eW1hcGRlZnMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5kYnlkZWZzLmgiCiAK IC8qCkBAIC0zNTQsNiArMzU1LDEwIEBAIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIm50dXBsZXM6ICVk LCBmbGFnczogMHglMDJYIiwgeGxyZWMtPm50dXBsZXMsCiAJCQkJCQkgeGxyZWMtPmZsYWdzKTsK IAorCQlpZiAoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCkKKwkJCWFw cGVuZFN0cmluZ0luZm8oYnVmLCAiLCB2bV9mbGFnczogMHglMDJYIiwKKwkJCQkJCQkgVklTSUJJ TElUWU1BUF9BTExfVklTSUJMRSB8IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7CisKIAkJaWYg KFhMb2dSZWNIYXNCbG9ja0RhdGEocmVjb3JkLCAwKSAmJiAhaXNpbml0KQogCQl7CiAJCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgb2Zmc2V0czoiKTsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJp bGl0eW1hcC5oCmluZGV4IGJlMjFjNmRkMWEzLi5mYzcwNTZhOTFlYSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv dmlzaWJpbGl0eW1hcC5oCkBAIC0zNyw2ICszNyw4IEBAIGV4dGVybiB1aW50OCB2aXNpYmlsaXR5 bWFwX3NldChSZWxhdGlvbiByZWwsCiAJCQkJCQkJICAgQnVmZmVyIHZtQnVmLAogCQkJCQkJCSAg IFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKIAkJCQkJCQkgICB1aW50OCBmbGFncyk7CitleHRl cm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgaGVhcEJsaywKKwkJCQkJCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncyk7CiBleHRl cm4gdWludDggdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgaGVhcEJsaywgQnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gdm9pZCB2aXNpYmlsaXR5bWFwX2Nv dW50KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgKmFsbF92aXNpYmxlLCBCbG9ja051bWJlciAq YWxsX2Zyb3plbik7CiBleHRlcm4gQmxvY2tOdW1iZXIgdmlzaWJpbGl0eW1hcF9wcmVwYXJlX3Ry dW5jYXRlKFJlbGF0aW9uIHJlbCwKLS0gCjIuNDMuMAoK --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0005-Combine-lazy_scan_prune-VM-corruption-cases.patch" Content-Disposition: attachment; filename="v12-0005-Combine-lazy_scan_prune-VM-corruption-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcic14 RnJvbSBlNWM2MmU3ODljYzc3NTdlNjE1NDNhYTYyODg3N2Y5YmNhYjRkY2FjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjA0OjAzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMDUvMjBdIENvbWJpbmUgbGF6eV9zY2FuX3BydW5lIFZNIGNvcnJ1cHRpb24gY2Fz ZXMKCmxhenlfc2Nhbl9wcnVuZSgpIHVwZGF0ZXMgdGhlIHZpc2liaWxpdHkgbWFwIGFmdGVyIHBo YXNlIEkgb2YgaGVhcAp2YWN1dW1pbmcuIEl0IGFsc28gY2hlY2tzIGFuZCBmaXhlcyBjb3JydXB0 aW9uIGluIHRoZSBWTS4gVGhlIGNvcnJ1cHRpb24KY2FzZXMgd2hlcmUgbWl4ZWQgaW4gd2l0aCB0 aGUgbm9ybWFsIHZpc2liaWxpdHkgbWFwIHVwZGF0ZSBjYXNlcy4KCkNhcmVmdWwgc3R1ZHkgb2Yg dGhlIG9yZGVyaW5nIG9mIHRoZSBjdXJyZW50IGxvZ2ljIHJldmVhbHMgdGhhdCB0aGUKY29ycnVw dGlvbiBjYXNlcyBjYW4gYmUgcmVvcmRlcmVkIGFuZCBleHRyYWN0ZWQgaW50byBhIHNlcGFyYXRl CmZ1bmN0aW9uLiBUaGlzIHNob3VsZCByZXN1bHQgaW4gbm8gYWRkaXRpb25hbCBvdmVyaGVhZCB3 aGVuIGNvbXBhcmVkIHRvCnByZXZpb3VzIGV4ZWN1dGlvbi4KClRoaXMgcmVvcmRlcmluZyBtYWtl cyBpdCBjbGVhciB3aGljaCBjYXNlcyBhcmUgYWJvdXQgY29ycnVwdGlvbiBhbmQKd2hpY2ggY2Fz ZXMgYXJlIG5vcm1hbCBWTSB1cGRhdGVzLiBTZXBhcmF0aW5nIHRoZW0gYWxzbyBtYWtlcyBpdApw b3NzaWJsZSB0byBjb21iaW5lIHRoZSBub3JtYWwgY2FzZXMgaW4gYSBmdXR1cmUgY29tbWl0LiBU aGlzIHdpbGwgbWFrZQp0aGUgbG9naWMgZWFzaWVyIHRvIHVuZGVyc3RhbmQgYW5kIGFsbG93IGZv ciBmdXJ0aGVyIHNlcGFyYXRpb24gb2YgdGhlCmxvZ2ljIHRvIGFsbG93IHVwZGF0aW5nIHRoZSBW TSBpbiB0aGUgc2FtZSByZWNvcmQgYXMgcHJ1bmluZyBhbmQKZnJlZXppbmcgaW4gcGhhc2UgSS4K LS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAxMjYgKysrKysrKysr KysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKSwgNDcg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGExY2Rh YWViYjU3Li5lOWI0ZTkyNGQyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpA QCAtNDMwLDYgKzQzMCwxMiBAQCBzdGF0aWMgdm9pZCBmaW5kX25leHRfdW5za2lwcGFibGVfYmxv Y2soTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29sICpza2lwc2FsbHZpcyk7CiBzdGF0aWMgYm9vbCBs YXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJ CQkJCQkJICAgQmxvY2tOdW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKIAkJCQkJCQkJICAgYm9vbCBz aGFyZWxvY2ssIEJ1ZmZlciB2bWJ1ZmZlcik7CitzdGF0aWMgYm9vbCBpZGVudGlmeV9hbmRfZml4 X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJCQkJICAgQmxvY2tOdW1i ZXIgaGVhcF9ibGssCisJCQkJCQkJCQkJICAgQnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhlYXBf cGFnZSwKKwkJCQkJCQkJCQkgICBib29sIGhlYXBfYmxrX2tub3duX2F2LAorCQkJCQkJCQkJCSAg IGludDY0IG5scGRlYWRfaXRlbXMsCisJCQkJCQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyKTsKIHN0 YXRpYyBpbnQJbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwK IAkJCQkJCQlCbG9ja051bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCUJ1ZmZlciB2bWJ1 ZmZlciwgYm9vbCBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0sCkBAIC0xOTM0LDYgKzE5NDAs NzIgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBi dWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIFdoZW4g dXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwIGFmdGVyIHBoYXNlIEkgaGVhcCB2YWN1dW1pbmcs IHdlIHRha2UgdGhlCisgKiBvcHBvcnR1bml0eSB0byBpZGVudGlmeSBhbmQgZml4IGFueSBWTSBj b3JydXB0aW9uLgorICoKKyAqIGhlYXBfYmxrX2tub3duX2F2IGlzIHRoZSB2aXNpYmlsaXR5IHN0 YXR1cyBvZiB0aGUgaGVhcCBwYWdlIGNvbGxlY3RlZAorICogd2hpbGUgZmluZGluZyB0aGUgbmV4 dCB1bnNraXBwYWJsZSBibG9jayBpbiBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKS4KKyAqLwor c3RhdGljIGJvb2wKK2lkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxh dGlvbiwKKwkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywKKwkJCQkJCQkgICBCdWZmZXIg aGVhcF9idWZmZXIsIFBhZ2UgaGVhcF9wYWdlLAorCQkJCQkJCSAgIGJvb2wgaGVhcF9ibGtfa25v d25fYXYsCisJCQkJCQkJICAgaW50NjQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkgICBCdWZmZXIg dm1idWZmZXIpCit7CisJLyoKKwkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxp dHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQorCSAqIHBhZ2UtbGV2ZWwgYml0 IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290CisJICog Y2xlYXJlZCBhZnRlciBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3 ZSBtdXN0IHJlY2hlY2sKKwkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRo YXQgdGhlIFZNIGlzIGNvcnJ1cHQuCisJICovCisJaWYgKGhlYXBfYmxrX2tub3duX2F2ICYmICFQ YWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYKKwkJdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVz KHJlbGF0aW9uLCBoZWFwX2JsaywgJnZtYnVmZmVyKSAhPSAwKQorCXsKKwkJZXJlcG9ydChXQVJO SU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBlcnJtc2co InBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlz IHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWxhdGlvbiksIGhlYXBfYmxrKSkpOworCisJCXZpc2liaWxpdHltYXBfY2xlYXIo cmVsYXRpb24sIGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElE X0JJVFMpOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkvKgorCSAqIEl0J3MgcG9zc2libGUgZm9y IHRoZSB2YWx1ZSByZXR1cm5lZCBieQorCSAqIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0 aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKKwkgKiB3cm9uZyBmb3IgdXMg dG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0byBldmVyeW9uZQor CSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQuIFRoZSByZWFsIHNh ZmUgeG1pbiB2YWx1ZQorCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0IEdldE9sZGVzdE5v blJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcworCSAqIGNvbnNlcnZhdGl2ZSBhbmQgc29tZXRp bWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFsbCwKKwkgKiBzbyBp ZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgdHVwbGVz IHRoYXQgd2UKKwkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlvbmUgeWV0IGFjdHVh bGx5IGFyZSwgYW5kIHRoZQorCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMgY29ycmVjdC4KKwkg KgorCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9uIGEgcGFnZSB3aXRo IFBEX0FMTF9WSVNJQkxFIHNldCwKKwkgKiBob3dldmVyLgorCSAqLworCWlmIChubHBkZWFkX2l0 ZW1zID4gMCAmJiBQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkpCisJeworCQllcmVwb3J0KFdB Uk5JTkcsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJIGVycm1z ZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12aXNpYmxl IGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspKSk7CisKKwkJUGFnZUNsZWFyQWxsVmlzaWJsZShoZWFw X3BhZ2UpOworCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIpOworCQl2aXNpYmlsaXR5bWFw X2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQor CisKIC8qIHFzb3J0IGNvbXBhcmF0b3IgZm9yIHNvcnRpbmcgT2Zmc2V0TnVtYmVycyAqLwogc3Rh dGljIGludAogY21wT2Zmc2V0TnVtYmVycyhjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQpA QCAtMjA4MCw5ICsyMTUyLDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAJLyoKIAkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5m b3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCiAJICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRf YmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2 YXJpYWJsZXMKKwkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcy4gU3RhcnQgYnkgbG9va2luZyBmb3Ig YW55IFZNIGNvcnJ1cHRpb24uCiAJICovCi0JaWYgKCFhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9f dm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJsZSkKKwlpZiAoaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3Jy dXB0aW9uKHZhY3JlbC0+cmVsLCBibGtubywgYnVmLCBwYWdlLAorCQkJCQkJCQkJICAgYWxsX3Zp c2libGVfYWNjb3JkaW5nX3RvX3ZtLCBwcmVzdWx0LmxwZGVhZF9pdGVtcywgdm1idWZmZXIpKQor CXsKKwkJLyogRG9uJ3QgdXBkYXRlIHRoZSBWTSBpZiB3ZSBqdXN0IGNsZWFyZWQgY29ycnVwdGlv biBpbiBpdCAqLworCX0KKwllbHNlIGlmICghYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYm IHByZXN1bHQuYWxsX3Zpc2libGUpCiAJewogCQl1aW50OAkJb2xkX3ZtYml0czsKIAkJdWludDgJ CWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKQEAgLTIxMzQsNTEgKzIyMTEsNiBA QCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQl9CiAJfQogCi0JLyoKLQkg KiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2 ZXIgYmUgc2V0IGlmIHRoZQotCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZlciwg aXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290Ci0JICogY2xlYXJlZCBhZnRlciBoZWFwX3Zh Y19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hlY2sKLQkgKiB3 aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNvcnJ1cHQu Ci0JICovCi0JZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmICFQYWdlSXNB bGxWaXNpYmxlKHBhZ2UpICYmCi0JCQkgdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHZhY3JlbC0+ cmVsLCBibGtubywgJnZtYnVmZmVyKSAhPSAwKQotCXsKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJ CShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAotCQkJCSBlcnJtc2coInBhZ2UgaXMg bm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCBpbiBy ZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkJCQl2YWNyZWwtPnJlbG5hbWUsIGJsa25vKSkp OwotCi0JCXZpc2liaWxpdHltYXBfY2xlYXIodmFjcmVsLT5yZWwsIGJsa25vLCB2bWJ1ZmZlciwK LQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwotCX0KLQotCS8qCi0JICogSXQncyBw b3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVybmVkIGJ5Ci0JICogR2V0T2xkZXN0Tm9uUmVtb3Zh YmxlVHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUgYmFja3dhcmRzLCBzbyBpdCdzIG5vdAotCSAqIHdy b25nIGZvciB1cyB0byBzZWUgdHVwbGVzIHRoYXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRv IGV2ZXJ5b25lCi0JICogeWV0LCB3aGlsZSBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4g VGhlIHJlYWwgc2FmZSB4bWluIHZhbHVlCi0JICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQg R2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlzCi0JICogY29uc2VydmF0aXZl IGFuZCBzb21ldGltZXMgcmV0dXJucyBhIHZhbHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxs LAotCSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNvbnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0 IHRoZSB0dXBsZXMgdGhhdCB3ZQotCSAqIHRoaW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9u ZSB5ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhlCi0JICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBj b3JyZWN0LgotCSAqCi0JICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24g YSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUgc2V0LAotCSAqIGhvd2V2ZXIuCi0JICovCi0JZWxz ZSBpZiAocHJlc3VsdC5scGRlYWRfaXRlbXMgPiAwICYmIFBhZ2VJc0FsbFZpc2libGUocGFnZSkp Ci0JewotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJV UFRFRCksCi0JCQkJIGVycm1zZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFy a2VkIGFzIGFsbC12aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKLQkJCQkJCXZh Y3JlbC0+cmVsbmFtZSwgYmxrbm8pKSk7Ci0KLQkJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdlKTsK LQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7Ci0JCXZpc2liaWxpdHltYXBfY2xlYXIodmFjcmVsLT5y ZWwsIGJsa25vLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwot CX0KLQogCS8qCiAJICogSWYgdGhlIGFsbC12aXNpYmxlIHBhZ2UgaXMgYWxsLWZyb3plbiBidXQg bm90IG1hcmtlZCBhcyBzdWNoIHlldCwgbWFyawogCSAqIGl0IGFzIGFsbC1mcm96ZW4uICBOb3Rl IHRoYXQgYWxsX2Zyb3plbiBpcyBvbmx5IHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzCi0tIAoyLjQz LjAKCg== --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0003-Eliminate-xl_heap_visible-from-vacuum-phase-III.patch" Content-Disposition: attachment; filename="v12-0003-Eliminate-xl_heap_visible-from-vacuum-phase-III.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcibt2 RnJvbSA2ODRlMmI2ODFhZGZlZTkzZDUxNTVjYjc3ZGYzMDYyMTg4YWUyZGJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQyOjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMDMvMjBdIEVsaW1pbmF0ZSB4bF9oZWFwX3Zpc2libGUgZnJvbSB2YWN1dW0gcGhh c2UgSUlJCgpJbnN0ZWFkIG9mIGVtaXR0aW5nIGEgc2VwYXJhdGUgeGxfaGVhcF92aXNpYmxlIHJl Y29yZCBmb3IgZWFjaCBwYWdlIHRoYXQKaXMgcmVuZGVyZWQgYWxsLXZpc2libGUgYnkgdmFjdXVt J3MgdGhpcmQgcGhhc2UsIGluY2x1ZGUgdGhlIHVwZGF0ZXMgdG8KdGhlIFZNIGluIHRoZSBhbHJl YWR5IGVtaXR0ZWQgeGxfaGVhcF9wcnVuZSByZWNvcmQuCgpUaGUgdmlzaWJpbGl0eW1hcCBiaXRz IGFyZSBzdG9yZWQgaW4gdGhlIGZsYWdzIG1lbWJlciBvZiB0aGUKeGxfaGVhcF9wcnVuZSByZWNv cmQuCgpUaGlzIGNhbiBkZWNyZWFzZSB0aGUgbnVtYmVyIG9mIG9mIFdBTCByZWNvcmRzIHZhY3V1 bSBwaGFzZSBJSUkgZW1pdHMgYnkKYXMgbXVjaCBhcyBoYWxmLgoKQXV0aG9yOiBNZWxhbmllIFBs YWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJl c2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJlcyBGcmV1bmQg PGFuZHJlc0BhbmFyYXplbC5kZT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9mbGF0 L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndRM2NNT014MURoM1ZNaHA4LVY3U09MeGRLOS1nJTQw bWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5j ICB8IDE1NiArKysrKysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgICAgfCAgNjYgKysrKysrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jICAgfCAxNjYgKysrKysrKysrKysrKysrKystLS0tLS0tLQogc3JjL2JhY2tl bmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaCAgICAgICAgICAgIHwgICA5ICsrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt X3hsb2cuaCAgICAgICB8ICAzNiArKysrLS0KIDYgZmlsZXMgY2hhbmdlZCwgMzQzIGluc2VydGlv bnMoKyksIDk2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5j CmluZGV4IDg2ZTVmNzZlNDlmLi41ODcyZjEzMzk3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jCkBAIC0zNSw3ICszNSw5IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExv Z1JlYWRlclN0YXRlICpyZWNvcmQpCiAJQnVmZmVyCQlidWZmZXI7CiAJUmVsRmlsZUxvY2F0b3Ig cmxvY2F0b3I7CiAJQmxvY2tOdW1iZXIgYmxrbm87Ci0JWExvZ1JlZG9BY3Rpb24gYWN0aW9uOwor CUJ1ZmZlcgkJdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOworCXVpbnQ4CQl2bWZsYWdzID0gMDsK KwlTaXplCQlmcmVlc3BhY2UgPSAwOwogCiAJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwg JnJsb2NhdG9yLCBOVUxMLCAmYmxrbm8pOwogCW1lbWNweSgmeGxyZWMsIG1haW5kYXRhcHRyLCBT aXplT2ZIZWFwUHJ1bmUpOwpAQCAtNTAsMTEgKzUyLDE3IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVl emUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJQXNzZXJ0KCh4bHJlYy5mbGFncyAmIFhMSFBf Q0xFQU5VUF9MT0NLKSAhPSAwIHx8CiAJCSAgICh4bHJlYy5mbGFncyAmIChYTEhQX0hBU19SRURJ UkVDVElPTlMgfCBYTEhQX0hBU19ERUFEX0lURU1TKSkgPT0gMCk7CiAKKwl2bWZsYWdzID0geGxy ZWMuZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7CisKIAkvKgotCSAqIFdlIGFyZSBh Ym91dCB0byByZW1vdmUgYW5kL29yIGZyZWV6ZSB0dXBsZXMuICBJbiBIb3QgU3RhbmRieSBtb2Rl LAotCSAqIGVuc3VyZSB0aGF0IHRoZXJlIGFyZSBubyBxdWVyaWVzIHJ1bm5pbmcgZm9yIHdoaWNo IHRoZSByZW1vdmVkIHR1cGxlcwotCSAqIGFyZSBzdGlsbCB2aXNpYmxlIG9yIHdoaWNoIHN0aWxs IGNvbnNpZGVyIHRoZSBmcm96ZW4geGlkcyBhcyBydW5uaW5nLgotCSAqIFRoZSBjb25mbGljdCBo b3Jpem9uIFhJRCBjb21lcyBhZnRlciB4bF9oZWFwX3BydW5lLgorCSAqIEFmdGVyIHhsX2hlYXBf cHJ1bmUgaXMgdGhlIG9wdGlvbmFsIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24uCisJICoKKwkg KiBJbiBIb3QgU3RhbmRieSBtb2RlLCB3ZSBtdXN0IGVuc3VyZSB0aGF0IHRoZXJlIGFyZSBubyBy dW5uaW5nIHF1ZXJpZXMKKwkgKiB3aGljaCB3b3VsZCBjb25mbGljdCB3aXRoIHRoZSBjaGFuZ2Vz IGluIHRoaXMgcmVjb3JkLiBUaGF0IG1lYW5zIHdlCisJICogY2FuJ3QgcmVwbGF5IHRoaXMgcmVj b3JkIGlmIGl0IHJlbW92ZXMgdHVwbGVzIHRoYXQgYXJlIHN0aWxsIHZpc2libGUgdG8KKwkgKiB0 cmFuc2FjdGlvbnMgb24gdGhlIHN0YW5kYnksIGZyZWV6ZSB0dXBsZXMgd2l0aCB4aWRzIHRoYXQg YXJlIHN0aWxsCisJICogY29uc2lkZXJlZCBydW5uaW5nIG9uIHRoZSBzdGFuZGJ5LCBvciBzZXQg YSBwYWdlIGFzIGFsbC12aXNpYmxlIGluIHRoZQorCSAqIFZNIGlmIGl0IGlzbid0IGFsbC12aXNp YmxlIHRvIGFsbCB0cmFuc2FjdGlvbnMgb24gdGhlIHN0YW5kYnkuCiAJICovCiAJaWYgKCh4bHJl Yy5mbGFncyAmIFhMSFBfSEFTX0NPTkZMSUNUX0hPUklaT04pICE9IDApCiAJewpAQCAtNzEsMTIg Kzc5LDEyIEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp CiAJfQogCiAJLyoKLQkgKiBJZiB3ZSBoYXZlIGEgZnVsbC1wYWdlIGltYWdlLCByZXN0b3JlIGl0 IGFuZCB3ZSdyZSBkb25lLgorCSAqIElmIHdlIGhhdmUgYSBmdWxsLXBhZ2UgaW1hZ2Ugb2YgdGhl IGhlYXAgYmxvY2ssIHJlc3RvcmUgaXQgYW5kIHdlJ3JlCisJICogZG9uZSB3aXRoIHRoZSBoZWFw IGJsb2NrLgogCSAqLwotCWFjdGlvbiA9IFhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJl Y29yZCwgMCwgUkJNX05PUk1BTCwKLQkJCQkJCQkJCQkgICAoeGxyZWMuZmxhZ3MgJiBYTEhQX0NM RUFOVVBfTE9DSykgIT0gMCwKLQkJCQkJCQkJCQkgICAmYnVmZmVyKTsKLQlpZiAoYWN0aW9uID09 IEJMS19ORUVEU19SRURPKQorCWlmIChYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNv cmQsIDAsIFJCTV9OT1JNQUwsCisJCQkJCQkJCQkgICh4bHJlYy5mbGFncyAmIFhMSFBfQ0xFQU5V UF9MT0NLKSAhPSAwLAorCQkJCQkJCQkJICAmYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKIAl7 CiAJCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJCU9mZnNldE51bWJlciAq cmVkaXJlY3RlZDsKQEAgLTg5LDYgKzk3LDkgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJU2l6ZQkJZGF0YWxlbjsKIAkJeGxocF9mcmVlemVfcGxh biAqcGxhbnM7CiAJCU9mZnNldE51bWJlciAqZnJ6X29mZnNldHM7CisJCWJvb2wJCWRvX3BydW5l OworCQlib29sCQltYXJrX2J1ZmZlcl9kaXJ0eTsKKwkJYm9vbAkJc2V0X2hlYXBfbHNuOwogCQlj aGFyCSAgICpkYXRhcHRyID0gWExvZ1JlY0dldEJsb2NrRGF0YShyZWNvcmQsIDAsICZkYXRhbGVu KTsKIAogCQloZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShkYXRhcHRyLCB4 bHJlYy5mbGFncywKQEAgLTk3LDExICsxMDgsMTggQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93ZGVhZCwK IAkJCQkJCQkJCQkJICAgJm51bnVzZWQsICZub3d1bnVzZWQpOwogCisJCWRvX3BydW5lID0gbnJl ZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMDsKKwkJc2V0X2hlYXBfbHNu ID0gbWFya19idWZmZXJfZGlydHkgPSBkb19wcnVuZSB8fCBucGxhbnMgPiAwOworCisJCS8qIEVu c3VyZSB0aGUgcmVjb3JkIGRvZXMgc29tZXRoaW5nICovCisJCUFzc2VydChkb19wcnVuZSB8fCBu cGxhbnMgPiAwIHx8CisJCQkgICB2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsK KwogCQkvKgogCQkgKiBVcGRhdGUgYWxsIGxpbmUgcG9pbnRlcnMgcGVyIHRoZSByZWNvcmQsIGFu ZCByZXBhaXIgZnJhZ21lbnRhdGlvbgogCQkgKiBpZiBuZWVkZWQuCiAJCSAqLwotCQlpZiAobnJl ZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCkKKwkJaWYgKGRvX3BydW5l KQogCQkJaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUoYnVmZmVyLAogCQkJCQkJCQkJKHhscmVjLmZs YWdzICYgWExIUF9DTEVBTlVQX0xPQ0spID09IDAsCiAJCQkJCQkJCQlyZWRpcmVjdGVkLCBucmVk aXJlY3RlZCwKQEAgLTEzOCwzNiArMTU2LDEyOCBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhM b2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkvKiBUaGVyZSBzaG91bGQgYmUgbm8gbW9yZSBkYXRh ICovCiAJCUFzc2VydCgoY2hhciAqKSBmcnpfb2Zmc2V0cyA9PSBkYXRhcHRyICsgZGF0YWxlbik7 CiAKKwkJLyoKKwkJICogTm93IHNldCBQRF9BTExfVklTSUJMRSwgaWYgcmVxdWlyZWQuIFdlJ2xs IG9ubHkgZG8gdGhpcyBpZiB3ZSBhcmUKKwkJICogYWxzbyBnb2luZyB0byBzZXQgYml0cyBpbiB0 aGUgVk0gbGF0ZXIuCisJCSAqCisJCSAqIFdlIG11c3QgbmV2ZXIgZW5kIHVwIHdpdGggdGhlIFZN IGJpdCBzZXQgYW5kIHRoZSBwYWdlLWxldmVsCisJCSAqIFBEX0FMTF9WSVNJQkxFIGJpdCBjbGVh ci4gSWYgdGhhdCB3ZXJlIHRvIG9jY3VyLCBhIHN1YnNlcXVlbnQgcGFnZQorCQkgKiBtb2RpZmlj YXRpb24gd291bGQgZmFpbCB0byBjbGVhciB0aGUgVk0gYml0LgorCQkgKi8KKwkJaWYgKCh2bWZs YWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSAmJiAhUGFnZUlzQWxsVmlzaWJsZShwYWdl KSkKKwkJeworCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisKKwkJCS8qCisJCQkgKiBJZiB0 aGUgb25seSBjaGFuZ2UgdG8gdGhlIGhlYXAgcGFnZSBpcyBzZXR0aW5nIFBEX0FMTF9WSVNJQkxF LAorCQkJICogd2UgY2FuIGF2b2lkIHNldHRpbmcgdGhlIHBhZ2UgTFNOIHVubGVzcyBjaGVja3N1 bXMgb3IKKwkJCSAqIHdhbF9sb2dfaGludHMgYXJlIGVuYWJsZWQuCisJCQkgKi8KKwkJCXNldF9o ZWFwX2xzbiA9IFhMb2dIaW50Qml0SXNOZWVkZWQoKSA/IHRydWUgOiBzZXRfaGVhcF9sc247CisJ CQltYXJrX2J1ZmZlcl9kaXJ0eSA9IHRydWU7CisJCX0KKwogCQkvKgogCQkgKiBOb3RlOiB3ZSBk b24ndCB3b3JyeSBhYm91dCB1cGRhdGluZyB0aGUgcGFnZSdzIHBydW5hYmlsaXR5IGhpbnRzLgog CQkgKiBBdCB3b3JzdCB0aGlzIHdpbGwgY2F1c2UgYW4gZXh0cmEgcHJ1bmUgY3ljbGUgdG8gb2Nj dXIgc29vbi4KIAkJICovCiAKLQkJUGFnZVNldExTTihwYWdlLCBsc24pOwotCQlNYXJrQnVmZmVy RGlydHkoYnVmZmVyKTsKKwkJaWYgKG1hcmtfYnVmZmVyX2RpcnR5KQorCQkJTWFya0J1ZmZlckRp cnR5KGJ1ZmZlcik7CisJCWlmIChzZXRfaGVhcF9sc24pCisJCQlQYWdlU2V0TFNOKHBhZ2UsIGxz bik7CiAJfQogCiAJLyoKLQkgKiBJZiB3ZSByZWxlYXNlZCBhbnkgc3BhY2Ugb3IgbGluZSBwb2lu dGVycywgdXBkYXRlIHRoZSBmcmVlIHNwYWNlIG1hcC4KKwkgKiBJZiB3ZSByZWxlYXNlZCBhbnkg c3BhY2Ugb3IgbGluZSBwb2ludGVycyBvciB3aWxsIGJlIHNldHRpbmcgYSBwYWdlIGluCisJICog dGhlIHZpc2liaWxpdHkgbWFwLCBtZWFzdXJlIHRoZSBwYWdlJ3MgZnJlZXNwYWNlIHRvIGxhdGVy IHVwZGF0ZSB0aGUKKwkgKiBmcmVlc3BhY2UgbWFwLgorCSAqCisJICogRXZlbiBpZiB3ZSBhcmUg anVzdCB1cGRhdGluZyB0aGUgVk0gKGFuZCB0aHVzIG5vdCBmcmVlaW5nIHVwIGFueQorCSAqIHNw YWNlKSwgd2UnbGwgc3RpbGwgdXBkYXRlIHRoZSBGU00gZm9yIHRoaXMgcGFnZS4gU2luY2UgRlNN IGlzIG5vdAorCSAqIFdBTC1sb2dnZWQgYW5kIG9ubHkgdXBkYXRlZCBoZXVyaXN0aWNhbGx5LCBp dCBlYXNpbHkgYmVjb21lcyBzdGFsZSBpbgorCSAqIHN0YW5kYnlzLiAgSWYgdGhlIHN0YW5kYnkg aXMgbGF0ZXIgcHJvbW90ZWQgYW5kIHJ1bnMgVkFDVVVNLCBpdCB3aWxsCisJICogc2tpcCB1cGRh dGluZyBpbmRpdmlkdWFsIGZyZWUgc3BhY2UgZmlndXJlcyBmb3IgcGFnZXMgdGhhdCBiZWNhbWUK KwkgKiBhbGwtdmlzaWJsZSAob3IgYWxsLWZyb3plbiwgZGVwZW5kaW5nIG9uIHRoZSB2YWN1dW0g bW9kZSwpIHdoaWNoIGlzCisJICogdHJvdWJsZXNvbWUgd2hlbiBGcmVlU3BhY2VNYXBWYWN1dW0g cHJvcGFnYXRlcyB0b28gb3B0aW1pc3RpYyBmcmVlCisJICogc3BhY2UgdmFsdWVzIHRvIHVwcGVy IEZTTSBsYXllcnM7IGxhdGVyIGluc2VydGVycyB0cnkgdG8gdXNlIHN1Y2ggcGFnZXMKKwkgKiBv bmx5IHRvIGZpbmQgb3V0IHRoYXQgdGhleSBhcmUgdW51c2FibGUuICBUaGlzIGNhbiBjYXVzZSBs b25nIHN0YWxscworCSAqIHdoZW4gdGhlcmUgYXJlIG1hbnkgc3VjaCBwYWdlcy4KKwkgKgorCSAq IEZvcmVzdGFsbCB0aG9zZSBwcm9ibGVtcyBieSB1cGRhdGluZyBGU00ncyBpZGVhIGFib3V0IGEg cGFnZSB0aGF0IGlzCisJICogYmVjb21pbmcgYWxsLXZpc2libGUgb3IgYWxsLWZyb3plbi4KIAkg KgogCSAqIERvIHRoaXMgcmVnYXJkbGVzcyBvZiBhIGZ1bGwtcGFnZSBpbWFnZSBiZWluZyBhcHBs aWVkLCBzaW5jZSB0aGUgRlNNCiAJICogZGF0YSBpcyBub3QgaW4gdGhlIHBhZ2UgYW55d2F5Lgor CSAqCisJICogV2Ugd2FudCB0byBhdm9pZCBob2xkaW5nIGFuIGV4Y2x1c2l2ZSBsb2NrIG9uIHRo ZSBoZWFwIGJ1ZmZlciB3aGlsZQorCSAqIGRvaW5nIElPIChlaXRoZXIgb2YgdGhlIEZTTSBvciB0 aGUgVk0pLCBzbyB3ZSdsbCByZWxlYXNlIHRoZSBsb2NrIG9uCisJICogdGhlIGhlYXAgYnVmZmVy IGJlZm9yZSBkb2luZyBlaXRoZXIuCiAJICovCiAJaWYgKEJ1ZmZlcklzVmFsaWQoYnVmZmVyKSkK IAl7Ci0JCWlmICh4bHJlYy5mbGFncyAmIChYTEhQX0hBU19SRURJUkVDVElPTlMgfAotCQkJCQkJ ICAgWExIUF9IQVNfREVBRF9JVEVNUyB8Ci0JCQkJCQkgICBYTEhQX0hBU19OT1dfVU5VU0VEX0lU RU1TKSkKLQkJewotCQkJU2l6ZQkJZnJlZXNwYWNlID0gUGFnZUdldEhlYXBGcmVlU3BhY2UoQnVm ZmVyR2V0UGFnZShidWZmZXIpKTsKKwkJaWYgKCh4bHJlYy5mbGFncyAmIChYTEhQX0hBU19SRURJ UkVDVElPTlMgfAorCQkJCQkJCVhMSFBfSEFTX0RFQURfSVRFTVMgfAorCQkJCQkJCVhMSFBfSEFT X05PV19VTlVTRURfSVRFTVMpKSB8fAorCQkJdm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURf QklUUykKKwkJCWZyZWVzcGFjZSA9IFBhZ2VHZXRIZWFwRnJlZVNwYWNlKEJ1ZmZlckdldFBhZ2Uo YnVmZmVyKSk7CisKKwkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCX0KKworCS8qCisJ ICogTm93IHJlYWQgYW5kIHVwZGF0ZSB0aGUgVk0gYmxvY2suCisJICoKKwkgKiBOb3RlIHRoYXQg dGhlIGhlYXAgcmVsYXRpb24gbWF5IGhhdmUgYmVlbiBkcm9wcGVkIG9yIHRydW5jYXRlZCwgbGVh ZGluZworCSAqIHVzIHRvIHNraXAgdXBkYXRpbmcgdGhlIGhlYXAgYmxvY2suCisJICoKKwkgKiBF dmVuIGlmIHdlIHNraXBwZWQgdGhlIGhlYXAgcGFnZSB1cGRhdGUgZHVlIHRvIHRoZSBMU04gaW50 ZXJsb2NrLCBpdCdzCisJICogc3RpbGwgc2FmZSB0byB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFw LiAgQW55IFdBTCByZWNvcmQgdGhhdCBjbGVhcnMKKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAgYml0 IGRvZXMgc28gYmVmb3JlIGNoZWNraW5nIHRoZSBwYWdlIExTTiwgc28gYW55CisJICogYml0cyB0 aGF0IG5lZWQgdG8gYmUgY2xlYXJlZCB3aWxsIHN0aWxsIGJlIGNsZWFyZWQuCisJICoKKwkgKiBO b3RlIHRoYXQgdGhlIGxvY2sgb24gdGhlIGhlYXAgcGFnZSB3YXMgZHJvcHBlZCBhYm92ZS4gSW4g bm9ybWFsCisJICogb3BlcmF0aW9uIHRoaXMgd291bGQgbmV2ZXIgYmUgc2FmZSBiZWNhdXNlIGEg Y29uY3VycmVudCBxdWVyeSBjb3VsZAorCSAqIG1vZGlmeSB0aGUgaGVhcCBwYWdlIGFuZCBjbGVh ciBQRF9BTExfVklTSUJMRSAtLSB2aW9sYXRpbmcgdGhlCisJICogaW52YXJpYW50IHRoYXQgUERf QUxMX1ZJU0lCTEUgbXVzdCBiZSBzZXQgaWYgdGhlIGNvcnJlc3BvbmRpbmcgYml0IGluCisJICog dGhlIFZNIGlzIHNldC4KKwkgKgorCSAqIEluIHJlY292ZXJ5LCB3ZSBleHBlY3Qgbm8gb3RoZXIg d3JpdGVycywgc28gd3JpdGluZyB0byB0aGUgVk0gcGFnZQorCSAqIHdpdGhvdXQgaG9sZGluZyBh IGxvY2sgb24gdGhlIGhlYXAgcGFnZSBpcyBjb25zaWRlcmVkIHNhZmUgZW5vdWdoLiBJdAorCSAq IGlzIGRvbmUgdGhpcyB3YXkgd2hlbiByZXBsYXlpbmcgeGxfaGVhcF92aXNpYmxlIHJlY29yZHMg KHNlZQorCSAqIGhlYXBfeGxvZ192aXNpYmxlKCkpLgorCSAqLworCWlmICh2bWZsYWdzICYgVklT SUJJTElUWU1BUF9WQUxJRF9CSVRTICYmCisJCVhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVk KHJlY29yZCwgMSwKKwkJCQkJCQkJCSAgUkJNX1pFUk9fT05fRVJST1IsCisJCQkJCQkJCQkgIGZh bHNlLAorCQkJCQkJCQkJICAmdm1idWZmZXIpID09IEJMS19ORUVEU19SRURPKQorCXsKKwkJUGFn ZQkJdm1wYWdlID0gQnVmZmVyR2V0UGFnZSh2bWJ1ZmZlcik7CisJCXVpbnQ4CQlvbGRfdm1iaXRz ID0gMDsKKwkJUmVsYXRpb24JcmVsbiA9IENyZWF0ZUZha2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9y KTsKIAotCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCQkvKiBpbml0aWFsaXplIHRo ZSBwYWdlIGlmIGl0IHdhcyByZWFkIGFzIHplcm9zICovCisJCWlmIChQYWdlSXNOZXcodm1wYWdl KSkKKwkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1NaLCAwKTsKIAotCQkJWExvZ1JlY29yZFBhZ2VX aXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtubywgZnJlZXNwYWNlKTsKKwkJb2xkX3ZtYml0cyA9 IHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhyZWxuLCBibGtubywgdm1idWZmZXIsIHZtZmxhZ3Mp OworCisJCS8qIE9ubHkgc2V0IFZNIHBhZ2UgTFNOIGlmIHdlIG1vZGlmaWVkIHRoZSBwYWdlICov CisJCWlmIChvbGRfdm1iaXRzICE9IHZtZmxhZ3MpCisJCXsKKwkJCUFzc2VydChCdWZmZXJJc0Rp cnR5KHZtYnVmZmVyKSk7CisJCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpLCBs c24pOwogCQl9Ci0JCWVsc2UKLQkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKworCQlG cmVlRmFrZVJlbGNhY2hlRW50cnkocmVsbik7CiAJfQorCisJaWYgKEJ1ZmZlcklzVmFsaWQodm1i dWZmZXIpKQorCQlVbmxvY2tSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKKworCWlmIChmcmVlc3Bh Y2UgPiAwKQorCQlYTG9nUmVjb3JkUGFnZVdpdGhGcmVlU3BhY2UocmxvY2F0b3IsIGJsa25vLCBm cmVlc3BhY2UpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA3 ZWJkMjJmMDBhMy4uZjBiMzNkMWI2OTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j CkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKICNpbmNsdWRl ICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCisjaW5jbHVk ZSAiYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVt LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgpAQCAtODM1LDYgKzgzNiw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCWNvbmZsaWN0X3hpZCA9IHByc3RhdGUu bGF0ZXN0X3hpZF9yZW1vdmVkOwogCiAJCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKHJlbGF0 aW9uLCBidWZmZXIsCisJCQkJCQkJCQkgIEludmFsaWRCdWZmZXIsIDAsIGZhbHNlLAogCQkJCQkJ CQkJICBjb25mbGljdF94aWQsCiAJCQkJCQkJCQkgIHRydWUsIHJlYXNvbiwKIAkJCQkJCQkJCSAg cHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUubmZyb3plbiwKQEAgLTIwMzAsMTQgKzIwMzIsMTggQEAg aGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJlZXplICp0dXBsZXMsIGludCBudHVwbGVz LAogICoKICAqIFRoaXMgaXMgdXNlZCBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQgcGFnZSBtYWludGVu YW5jZSBvcGVyYXRpb25zOgogICoKLSAqIC0gUGFnZSBwcnVuaW5nLCBpbiBWQUNVVU0ncyAxc3Qg cGFzcyBvciBvbiBhY2Nlc3M6IFNvbWUgaXRlbXMgYXJlCisgKiAtIFBhZ2UgcHJ1bmluZywgaW4g dmFjdXVtIHBoYXNlIEkgb3Igb24tYWNjZXNzOiBTb21lIGl0ZW1zIGFyZQogICogICByZWRpcmVj dGVkLCBzb21lIG1hcmtlZCBkZWFkLCBhbmQgc29tZSByZW1vdmVkIGFsdG9nZXRoZXIuCiAgKgot ICogLSBGcmVlemluZzogSXRlbXMgYXJlIG1hcmtlZCBhcyAnZnJvemVuJy4KKyAqIC0gRnJlZXpp bmc6IER1cmluZyB2YWN1dW0gcGhhc2UgSSwgaXRlbXMgYXJlIG1hcmtlZCBhcyAnZnJvemVuJwog ICoKLSAqIC0gVmFjdXVtLCAybmQgcGFzczogSXRlbXMgdGhhdCBhcmUgYWxyZWFkeSBMUF9ERUFE IGFyZSBtYXJrZWQgYXMgdW51c2VkLgorICogLSBSZWFwaW5nOiBEdXJpbmcgdmFjdXVtIHBoYXNl IElJSSwgaXRlbXMgdGhhdCBhcmUgYWxyZWFkeSBMUF9ERUFEIGFyZQorICogICBtYXJrZWQgYXMg dW51c2VkLgogICoKLSAqIFRoZXkgaGF2ZSBlbm91Z2ggY29tbW9uYWxpdGllcyB0aGF0IHdlIHVz ZSBhIHNpbmdsZSBXQUwgcmVjb3JkIGZvciB0aGVtCisgKiAtIFZNIHVwZGF0ZXM6IEFmdGVyIHZh Y3V1bSBwaGFzZSBJSUksIHRoZSBoZWFwIHBhZ2UgbWF5IGJlIG1hcmtlZAorICogICBhbGwtdmlz aWJsZSBhbmQgYWxsLWZyb3plbi4KKyAqCisgKiBUaGVzZSBjaGFuZ2VzIGFsbCBoYXBwZW4gdG9n ZXRoZXIsIHNvIHdlIHVzZSBhIHNpbmdlbCBXQUwgcmVjb3JkIGZvciB0aGVtCiAgKiBhbGwuCiAg KgogICogSWYgcmVwbGF5aW5nIHRoZSByZWNvcmQgcmVxdWlyZXMgYSBjbGVhbnVwIGxvY2ssIHBh c3MgY2xlYW51cF9sb2NrID0gdHJ1ZS4KQEAgLTIwNDUsMTIgKzIwNTEsMjMgQEAgaGVhcF9sb2df ZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJlZXplICp0dXBsZXMsIGludCBudHVwbGVzLAogICogcmVw bGF5aW5nICd1bnVzZWQnIGl0ZW1zIGRlcGVuZHMgb24gd2hldGhlciB0aGV5IHdlcmUgYWxsIHBy ZXZpb3VzbHkgbWFya2VkCiAgKiBhcyBkZWFkLgogICoKKyAqIElmIHRoZSBWTSBpcyBiZWluZyB1 cGRhdGVkLCB2bWZsYWdzIHdpbGwgY29udGFpbiB0aGUgYml0cyB0byBzZXQuIEluIHRoaXMKKyAq IGNhc2UsIHZtYnVmZmVyIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiB1cGRhdGVkIGFuZCBtYXJr ZWQgZGlydHkgYW5kIHNob3VsZAorICogc3RpbGwgYmUgcGlubmVkIGFuZCBsb2NrZWQuCisgKgor ICogc2V0X3BkX2FsbF92aXMgaW5kaWNhdGVzIHRoYXQgd2Ugc2V0IFBEX0FMTF9WSVNJQkxFIGFu ZCB0aHVzIHNob3VsZCB1cGRhdGUKKyAqIHRoZSBwYWdlIExTTiB3aGVuIGNoZWNrc3Vtcy93YWxf bG9nX2hpbnRzIGFyZSBlbmFibGVkIGV2ZW4gaWYgd2UgZGlkIG5vdAorICogcHJ1bmUgb3IgZnJl ZXplIHR1cGxlcyBvbiB0aGUgcGFnZS4KKyAqCiAgKiBOb3RlOiBUaGlzIGZ1bmN0aW9uIHNjcmli YmxlcyBvbiB0aGUgJ2Zyb3plbicgYXJyYXkuCiAgKgogICogTm90ZTogVGhpcyBpcyBjYWxsZWQg aW4gYSBjcml0aWNhbCBzZWN0aW9uLCBzbyBjYXJlZnVsIHdoYXQgeW91IGRvIGhlcmUuCiAgKi8K IHZvaWQKIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZl ciBidWZmZXIsCisJCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCSAgdWludDggdm1mbGFn cywKKwkJCQkJCSAgYm9vbCBzZXRfcGRfYWxsX3ZpcywKIAkJCQkJCSAgVHJhbnNhY3Rpb25JZCBj b25mbGljdF94aWQsCiAJCQkJCQkgIGJvb2wgY2xlYW51cF9sb2NrLAogCQkJCQkJICBQcnVuZVJl YXNvbiByZWFzb24sCkBAIC0yMDYyLDYgKzIwNzksNyBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJl ZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXhsX2hlYXBfcHJ1bmUgeGxy ZWM7CiAJWExvZ1JlY1B0cglyZWNwdHI7CiAJdWludDgJCWluZm87CisJdWludDgJCXJlZ2J1Zl9m bGFnczsKIAogCS8qIFRoZSBmb2xsb3dpbmcgbG9jYWwgdmFyaWFibGVzIGhvbGQgZGF0YSByZWdp c3RlcmVkIGluIHRoZSBXQUwgcmVjb3JkOiAqLwogCXhsaHBfZnJlZXplX3BsYW4gcGxhbnNbTWF4 SGVhcFR1cGxlc1BlclBhZ2VdOwpAQCAtMjA3MCw4ICsyMDg4LDIxIEBAIGxvZ19oZWFwX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJeGxocF9wcnVu ZV9pdGVtcyBkZWFkX2l0ZW1zOwogCXhsaHBfcHJ1bmVfaXRlbXMgdW51c2VkX2l0ZW1zOwogCU9m ZnNldE51bWJlciBmcnpfb2Zmc2V0c1tNYXhIZWFwVHVwbGVzUGVyUGFnZV07CisJYm9vbAkJZG9f cHJ1bmUgPSBucmVkaXJlY3RlZCA+IDAgfHwgbmRlYWQgPiAwIHx8IG51bnVzZWQgPiAwOworCisJ QXNzZXJ0KCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSA9PSB2bWZsYWdzKTsK Kwl4bHJlYy5mbGFncyA9IHZtZmxhZ3M7CiAKLQl4bHJlYy5mbGFncyA9IDA7CisJcmVnYnVmX2Zs YWdzID0gUkVHQlVGX1NUQU5EQVJEOworCisJLyoKKwkgKiBXZSBjYW4gYXZvaWQgYW4gRlBJIGlm IHRoZSBvbmx5IG1vZGlmaWNhdGlvbiB3ZSBhcmUgbWFraW5nIHRvIHRoZSBoZWFwCisJICogcGFn ZSBpcyB0byBzZXQgUERfQUxMX1ZJU0lCTEUgYW5kIGNoZWNrc3Vtcy93YWxfbG9nX2hpbnRzIGFy ZSBkaXNhYmxlZC4KKwkgKi8KKwlpZiAoIWRvX3BydW5lICYmCisJCW5mcm96ZW4gPT0gMCAmJgor CQkoIXNldF9wZF9hbGxfdmlzIHx8ICFYTG9nSGludEJpdElzTmVlZGVkKCkpKQorCQlyZWdidWZf ZmxhZ3MgfD0gUkVHQlVGX05PX0lNQUdFOwogCiAJLyoKIAkgKiBQcmVwYXJlIGRhdGEgZm9yIHRo ZSBidWZmZXIuICBUaGUgYXJyYXlzIGFyZSBub3QgYWN0dWFsbHkgaW4gdGhlCkBAIC0yMDc5LDcg KzIxMTAsMTEgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAkgKiBwYWdlIGltYWdlLCB0aGUgYXJyYXlzIGNhbiBiZSBvbWl0dGVk LgogCSAqLwogCVhMb2dCZWdpbkluc2VydCgpOwotCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCBidWZm ZXIsIFJFR0JVRl9TVEFOREFSRCk7CisJWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIGJ1ZmZlciwgcmVn YnVmX2ZsYWdzKTsKKworCWlmICh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKQor CQlYTG9nUmVnaXN0ZXJCdWZmZXIoMSwgdm1idWZmZXIsIDApOworCiAJaWYgKG5mcm96ZW4gPiAw KQogCXsKIAkJaW50CQkJbnBsYW5zOwpAQCAtMjE2OCw1ICsyMjAzLDIyIEBAIGxvZ19oZWFwX3By dW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJfQogCXJl Y3B0ciA9IFhMb2dJbnNlcnQoUk1fSEVBUDJfSUQsIGluZm8pOwogCi0JUGFnZVNldExTTihCdWZm ZXJHZXRQYWdlKGJ1ZmZlciksIHJlY3B0cik7CisJaWYgKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQ X1ZBTElEX0JJVFMpCisJeworCQlBc3NlcnQoQnVmZmVySXNEaXJ0eSh2bWJ1ZmZlcikpOworCQlQ YWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpLCByZWNwdHIpOworCX0KKworCS8qCisJ ICogSWYgcHJ1bmluZyBvciBmcmVlemluZyB0dXBsZXMgb3Igc2V0dGluZyB0aGUgcGFnZSBhbGwt dmlzaWJsZSB3aGVuCisJICogY2hlY2tzdW1zIG9yIHdhbF9oaW50X2JpdHMgYXJlIGVuYWJsZWQs IHdlIG11c3QgYnVtcCB0aGUgTFNOLiBUb3JuCisJICogcGFnZXMgYXJlIHBvc3NpYmxlIGlmIHdl IHVwZGF0ZSBQRF9BTExfVklTSUJMRSB3aXRob3V0IGJ1bXBpbmcgdGhlIExTTiwKKwkgKiBidXQg dGhpcyBpcyBkZWVtZWQgb2theSBmb3IgcGFnZSBoaW50IHVwZGF0ZXMuCisJICovCisJaWYgKGRv X3BydW5lIHx8IG5mcm96ZW4gPiAwIHx8CisJCShzZXRfcGRfYWxsX3ZpcyAmJiBYTG9nSGludEJp dElzTmVlZGVkKCkpKQorCXsKKwkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkoYnVmZmVyKSk7CisJCVBh Z2VTZXRMU04oQnVmZmVyR2V0UGFnZShidWZmZXIpLCByZWNwdHIpOworCX0KIH0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA4YTg0YmRmZTBhOS4uNTEwNjcyNjQwMDQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTQ2MywxMSArNDYzLDEzIEBAIHN0 YXRpYyB2b2lkIGRlYWRfaXRlbXNfYWRkKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIg Ymxrbm8sIE9mZnNldE51bWJlciAqCiAJCQkJCQkgICBpbnQgbnVtX29mZnNldHMpOwogc3RhdGlj IHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQg ZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7Ci1zdGF0aWMgYm9vbCBoZWFw X3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJ IFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKLQkJCQkJCQkJCSBib29sICphbGxfZnJvemVuLAot CQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCQkJ CSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKK3N0YXRpYyBib29sIGhlYXBfcGFnZV93 b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkJCQkJ ICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAq ZGVhZG9mZnNldHMsCisJCQkJCQkJCQkJICAgaW50IG5kZWFkb2Zmc2V0cywKKwkJCQkJCQkJCQkg ICBib29sICphbGxfZnJvemVuLAorCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxp dHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVt KTsKIHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWxzdGF0c19hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2 YWNyZWwpOwogc3RhdGljIHZvaWQgdmFjdXVtX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiBz dGF0aWMgdm9pZCB1cGRhdGVfdmFjdXVtX2Vycm9yX2luZm8oTFZSZWxTdGF0ZSAqdmFjcmVsLApA QCAtMjg1Miw4ICsyODU0LDExIEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2 YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCU9mZnNldE51bWJlciB1 bnVzZWRbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwogCWludAkJCW51bnVzZWQgPSAwOwogCVRyYW5z YWN0aW9uSWQgdmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCVRyYW5zYWN0aW9uSWQgY29uZmxpY3Rf eGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJYm9vbAkJYWxsX2Zyb3plbjsKIAlMVlNhdmVk RXJySW5mbyBzYXZlZF9lcnJfaW5mbzsKKwl1aW50OAkJdm1mbGFncyA9IDA7CisJYm9vbAkJc2V0 X3BkX2FsbF92aXMgPSBmYWxzZTsKIAogCUFzc2VydCh2YWNyZWwtPmRvX2luZGV4X3ZhY3V1bWlu Zyk7CiAKQEAgLTI4NjQsNiArMjg2OSwyMyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxT dGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkg VkFDVVVNX0VSUkNCX1BIQVNFX1ZBQ1VVTV9IRUFQLCBibGtubywKIAkJCQkJCQkgSW52YWxpZE9m ZnNldE51bWJlcik7CiAKKwlpZiAoaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHZhY3Jl bC0+cmVsLCBidWZmZXIsCisJCQkJCQkJCQkgICB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwK KwkJCQkJCQkJCSAgIGRlYWRvZmZzZXRzLCBudW1fb2Zmc2V0cywKKwkJCQkJCQkJCSAgICZhbGxf ZnJvemVuLCAmdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJCQkJICAgJnZhY3JlbC0+b2Zm bnVtKSkKKwl7CisJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKKwkJaWYg KGFsbF9mcm96ZW4pCisJCXsKKwkJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVO OworCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZCh2aXNpYmlsaXR5X2N1dG9mZl94aWQp KTsKKwkJfQorCisJCS8qIFRha2UgdGhlIGxvY2sgb24gdGhlIHZtYnVmZmVyIGJlZm9yZSBlbnRl cmluZyBhIGNyaXRpY2FsIHNlY3Rpb24gKi8KKwkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVS X0xPQ0tfRVhDTFVTSVZFKTsKKwl9CisKIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAogCWZvciAo aW50IGkgPSAwOyBpIDwgbnVtX29mZnNldHM7IGkrKykKQEAgLTI4ODMsNiArMjkwNSwxNyBAQCBs YXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtu bywgQnVmZmVyIGJ1ZmZlciwKIAkvKiBBdHRlbXB0IHRvIHRydW5jYXRlIGxpbmUgcG9pbnRlciBh cnJheSBub3cgKi8KIAlQYWdlVHJ1bmNhdGVMaW5lUG9pbnRlckFycmF5KHBhZ2UpOwogCisJaWYg KCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSAhPSAwKQorCXsKKwkJQXNzZXJ0 KCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKTsKKwkJc2V0X3BkX2FsbF92aXMgPSB0cnVlOworCQlQ YWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKHZhY3Jl bC0+cmVsLAorCQkJCQkJCQkgYmxrbm8sCisJCQkJCQkJCSB2bWJ1ZmZlciwgdm1mbGFncyk7CisJ CWNvbmZsaWN0X3hpZCA9IHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwl9CisKIAkvKgogCSAqIE1h cmsgYnVmZmVyIGRpcnR5IGJlZm9yZSB3ZSB3cml0ZSBXQUwuCiAJICovCkBAIC0yODkyLDcgKzI5 MjUsMTAgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tO dW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJaWYgKFJlbGF0aW9uTmVlZHNXQUwodmFjcmVs LT5yZWwpKQogCXsKIAkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZSh2YWNyZWwtPnJlbCwgYnVm ZmVyLAotCQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLAorCQkJCQkJCQkgIHZtYnVmZmVy LAorCQkJCQkJCQkgIHZtZmxhZ3MsCisJCQkJCQkJCSAgc2V0X3BkX2FsbF92aXMsCisJCQkJCQkJ CSAgY29uZmxpY3RfeGlkLAogCQkJCQkJCQkgIGZhbHNlLAkvKiBubyBjbGVhbnVwIGxvY2sgcmVx dWlyZWQgKi8KIAkJCQkJCQkJICBQUlVORV9WQUNVVU1fQ0xFQU5VUCwKIAkJCQkJCQkJICBOVUxM LCAwLAkvKiBmcm96ZW4gKi8KQEAgLTI5MDEsMzkgKzI5MzcsMTIgQEAgbGF6eV92YWN1dW1faGVh cF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZm ZXIsCiAJCQkJCQkJCSAgdW51c2VkLCBudW51c2VkKTsKIAl9CiAKLQkvKgotCSAqIEVuZCBjcml0 aWNhbCBzZWN0aW9uLCBzbyB3ZSBzYWZlbHkgY2FuIGRvIHZpc2liaWxpdHkgdGVzdHMgKHdoaWNo Ci0JICogcG9zc2libHkgbmVlZCB0byBwZXJmb3JtIElPIGFuZCBhbGxvY2F0ZSBtZW1vcnkhKS4g SWYgd2UgY3Jhc2ggbm93IHRoZQotCSAqIHBhZ2UgKGluY2x1ZGluZyB0aGUgY29ycmVzcG9uZGlu ZyB2bSBiaXQpIG1pZ2h0IG5vdCBiZSBtYXJrZWQgYWxsCi0JICogdmlzaWJsZSwgYnV0IHRoYXQn cyBmaW5lLiBBIGxhdGVyIHZhY3V1bSB3aWxsIGZpeCB0aGF0LgotCSAqLwogCUVORF9DUklUX1NF Q1RJT04oKTsKIAotCS8qCi0JICogTm93IHRoYXQgd2UgaGF2ZSByZW1vdmVkIHRoZSBMUF9ERUFE IGl0ZW1zIGZyb20gdGhlIHBhZ2UsIG9uY2UgYWdhaW4KLQkgKiBjaGVjayBpZiB0aGUgcGFnZSBo YXMgYmVjb21lIGFsbC12aXNpYmxlLiAgVGhlIHBhZ2UgaXMgYWxyZWFkeSBtYXJrZWQKLQkgKiBk aXJ0eSwgZXhjbHVzaXZlbHkgbG9ja2VkLCBhbmQsIGlmIG5lZWRlZCwgYSBmdWxsIHBhZ2UgaW1h Z2UgaGFzIGJlZW4KLQkgKiBlbWl0dGVkLgotCSAqLwotCUFzc2VydCghUGFnZUlzQWxsVmlzaWJs ZShwYWdlKSk7Ci0JaWYgKGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVm ZmVyLCB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwKLQkJCQkJCQkJICZhbGxfZnJvemVuLCAm dmlzaWJpbGl0eV9jdXRvZmZfeGlkLCAmdmFjcmVsLT5vZmZudW0pKQorCWlmICgodm1mbGFncyAm IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9IDApCiAJewotCQl1aW50OAkJZmxhZ3MgPSBW SVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOwotCi0JCWlmIChhbGxfZnJvemVuKQotCQl7Ci0JCQlB c3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHZpc2liaWxpdHlfY3V0b2ZmX3hpZCkpOwotCQkJ ZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOwotCQl9Ci0KLQkJUGFnZVNldEFsbFZp c2libGUocGFnZSk7Ci0JCXZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVm ZmVyLAotCQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCSAgdm1idWZmZXIsIHZpc2li aWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCSAgZmxhZ3MpOwotCiAJCS8qIENvdW50IHRoZSBuZXds eSBzZXQgVk0gcGFnZSBmb3IgbG9nZ2luZyAqLworCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZG RVJfTE9DS19VTkxPQ0spOwogCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7CiAJCWlm IChhbGxfZnJvemVuKQogCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsK QEAgLTM2MDAsNDAgKzM2MDksODUgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZh Y3JlbCkKIH0KIAogLyoKLSAqIENoZWNrIGlmIGV2ZXJ5IHR1cGxlIGluIHRoZSBnaXZlbiBwYWdl IGluIGJ1ZiBpcyB2aXNpYmxlIHRvIGFsbCBjdXJyZW50IGFuZAotICogZnV0dXJlIHRyYW5zYWN0 aW9ucy4KKyAqIFdyYXBwZXIgZm9yIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpIHdo aWNoIGNhbiBiZSB1c2VkIGZvcgorICogY2FsbGVycyB0aGF0IGV4cGVjdCBubyBMUF9ERUFEIG9u IHRoZSBwYWdlLgorICovCitib29sCitoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24g cmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJ CSBib29sICphbGxfZnJvemVuLAorCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0 b2ZmX3hpZCwKKwkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQoreworCisJcmV0 dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1ZiwgT2xkZXN0WG1pbiwK KwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJCQkJICBhbGxfZnJvemVuLAorCQkJCQkJCQkJ CSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJCQkJCSAgbG9nZ2luZ19vZmZudW0pOwor fQorCisvKgorICogRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgaGVhcCBwYWdlIGluIGJ1 ZiBpcyBhbGwtdmlzaWJsZSBvdGhlciB0aGFuCisgKiB0aGUgZGVhZCBsaW5lIHBvaW50ZXJzIHJl ZmVycmVkIHRvIGJ5IHRoZSBwcm92aWRlZCBkZWFkb2Zmc2V0cyBhcnJheS4KICAqCi0gKiBPbGRl c3RYbWluIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCisgKiBkZWFkb2Zmc2V0cyBh cmUgdGhlIG9mZnNldHMgdGhlIGNhbGxlciBrbm93cyBhYm91dCBhbmQgYWxyZWFkeSByZW1vdmVk CisgKiBhc3NvY2lhdGVkIGluZGV4IGVudHJpZXMuIFZhY3V1bSB3aWxsIGNhbGwgdGhpcyBiZWZv cmUgc2V0dGluZyB0aG9zZSBsaW5lCisgKiBwb2ludGVycyBMUF9VTlVTRUQuIFNvLCBpZiB0aGVy ZSBhcmUgbm8gbmV3IExQX0RFQUQgaXRlbXMsIHRoZW4gdGhlIHBhZ2UKKyAqIGNhbiBiZSBzZXQg YWxsLXZpc2libGUgaW4gdGhlIFZNIGJ5IHRoZSBjYWxsZXIuCisgKgorICogUmV0dXJucyB0cnVl IGlmIHRoZSBwYWdlIGlzIGFsbC12aXNpYmxlIG90aGVyIHRoYW4gdGhlIHByb3ZpZGVkCisgKiBk ZWFkb2Zmc2V0cyBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgogICoKLSAqIFNldHMgKmFsbF9mcm96ZW4g dG8gdHJ1ZSBpZiBldmVyeSB0dXBsZSBvbiB0aGlzIHBhZ2UgaXMgZnJvemVuLgorICogT2xkZXN0 WG1pbiBpcyB1c2VkIHRvIGRldGVybWluZSB2aXNpYmlsaXR5LgogICoKLSAqIFNldHMgKnZpc2li aWxpdHlfY3V0b2ZmX3hpZCB0byB0aGUgaGlnaGVzdCB4bWluIGFtb25nc3QgdGhlIHZpc2libGUg dHVwbGVzLgotICogSXQgaXMgb25seSB2YWxpZCBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4K KyAqICphbGxfZnJvemVuIGlzIGFuIG91dHB1dCBwYXJhbWV0ZXIgaW5kaWNhdGluZyB0byB0aGUg Y2FsbGVyIGlmIGV2ZXJ5IHR1cGxlCisgKiBvbiB0aGUgcGFnZSBpcyBmcm96ZW4uCiAgKgogICog KmxvZ2dpbmdfb2ZmbnVtIHdpbGwgaGF2ZSB0aGUgT2Zmc2V0TnVtYmVyIG9mIHRoZSBjdXJyZW50 IHR1cGxlIGJlaW5nCiAgKiBwcm9jZXNzZWQgZm9yIHZhY3V1bSdzIGVycm9yIGNhbGxiYWNrIHN5 c3RlbS4KICAqCi0gKiBUaGlzIGlzIGEgc3RyaXBwZWQgZG93biB2ZXJzaW9uIG9mIGxhenlfc2Nh bl9wcnVuZSgpLiAgSWYgeW91IGNoYW5nZQotICogYW55dGhpbmcgaGVyZSwgbWFrZSBzdXJlIHRo YXQgZXZlcnl0aGluZyBzdGF5cyBpbiBzeW5jLiAgTm90ZSB0aGF0IGFuCi0gKiBhc3NlcnRpb24g Y2FsbHMgdXMgdG8gdmVyaWZ5IHRoYXQgZXZlcnlib2R5IHN0aWxsIGFncmVlcy4gIEJlIHN1cmUg dG8gYXZvaWQKLSAqIGludHJvZHVjaW5nIG5ldyBzaWRlLWVmZmVjdHMgaGVyZS4KKyAqICp2aXNp YmlsaXR5X2N1dG9mZl94aWQgaXMgYW4gb3V0cHV0IHBhcmFtZXRlciB3aXRoIHRoZSBoaWdoZXN0 IHhtaW4gYW1vbmdzdCB0aGUKKyAqIHZpc2libGUgdHVwbGVzLiBJdCBpcyBvbmx5IHZhbGlkIGlm IHRoZSBwYWdlIGlzIGFsbC12aXNpYmxlLgorICoKKyAqIENhbGxlcnMgbG9va2luZyB0byB2ZXJp ZnkgdGhhdCB0aGUgcGFnZSBpcyBhbHJlYWR5IGFsbC12aXNpYmxlIGNhbiBjYWxsCisgKiBoZWFw X3BhZ2VfaXNfYWxsX3Zpc2libGUoKS4KKyAqCisgKiBUaGlzIGlzIHNpbWlsYXIgbG9naWMgdG8g dGhhdCBpbiBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkgSWYKKyAqIHlv dSBjaGFuZ2UgYW55dGhpbmcgaGVyZSwgbWFrZSBzdXJlIHRoYXQgZXZlcnl0aGluZyBzdGF5cyBp biBzeW5jLiAgTm90ZQorICogdGhhdCBhbiBhc3NlcnRpb24gY2FsbHMgdXMgdG8gdmVyaWZ5IHRo YXQgZXZlcnlib2R5IHN0aWxsIGFncmVlcy4gIEJlIHN1cmUKKyAqIHRvIGF2b2lkIGludHJvZHVj aW5nIG5ldyBzaWRlLWVmZmVjdHMgaGVyZS4KICAqLwogc3RhdGljIGJvb2wKLWhlYXBfcGFnZV9p c19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkgVHJhbnNhY3Rp b25JZCBPbGRlc3RYbWluLAotCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkgVHJhbnNh Y3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJIE9mZnNldE51bWJlciAqbG9n Z2luZ19vZmZudW0pCitoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVs LCBCdWZmZXIgYnVmLAorCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJ CQkgICBPZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLAorCQkJCQkJCSAgIGludCBuZGVhZG9mZnNl dHMsCisJCQkJCQkJICAgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCQkgICBUcmFuc2FjdGlvbklk ICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpsb2dnaW5n X29mZm51bSkKIHsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCUJsb2NrTnVt YmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWYpOwogCU9mZnNldE51bWJlciBv ZmZudW0sCiAJCQkJbWF4b2ZmOwogCWJvb2wJCWFsbF92aXNpYmxlID0gdHJ1ZTsKKwlpbnQJCQlt YXRjaGVkX2RlYWRfY291bnQgPSAwOwogCiAJKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IEludmFs aWRUcmFuc2FjdGlvbklkOwogCSphbGxfZnJvemVuID0gdHJ1ZTsKIAorCUFzc2VydChuZGVhZG9m ZnNldHMgPT0gMCB8fCBkZWFkb2Zmc2V0cyk7CisKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5H CisJLyogQ29uZmlybSBpbnB1dCBkZWFkb2Zmc2V0c1tdIGlzIHN0cmljdGx5IHNvcnRlZCAqLwor CWlmIChuZGVhZG9mZnNldHMgPiAxKQorCXsKKwkJZm9yIChpbnQgaSA9IDE7IGkgPCBuZGVhZG9m ZnNldHM7IGkrKykKKwkJCUFzc2VydChkZWFkb2Zmc2V0c1tpIC0gMV0gPCBkZWFkb2Zmc2V0c1tp XSk7CisJfQorI2VuZGlmCisKIAltYXhvZmYgPSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2Up OwogCWZvciAob2ZmbnVtID0gRmlyc3RPZmZzZXROdW1iZXI7CiAJCSBvZmZudW0gPD0gbWF4b2Zm ICYmIGFsbF92aXNpYmxlOwpAQCAtMzY2MSw5ICszNzE1LDE1IEBAIGhlYXBfcGFnZV9pc19hbGxf dmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCSAqLwogCQlpZiAoSXRlbUlkSXNE ZWFkKGl0ZW1pZCkpCiAJCXsKLQkJCWFsbF92aXNpYmxlID0gZmFsc2U7Ci0JCQkqYWxsX2Zyb3pl biA9IGZhbHNlOwotCQkJYnJlYWs7CisJCQlpZiAoIWRlYWRvZmZzZXRzIHx8CisJCQkJbWF0Y2hl ZF9kZWFkX2NvdW50ID49IG5kZWFkb2Zmc2V0cyB8fAorCQkJCWRlYWRvZmZzZXRzW21hdGNoZWRf ZGVhZF9jb3VudF0gIT0gb2ZmbnVtKQorCQkJeworCQkJCSphbGxfZnJvemVuID0gYWxsX3Zpc2li bGUgPSBmYWxzZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCW1hdGNoZWRfZGVhZF9jb3VudCsrOwor CQkJY29udGludWU7CiAJCX0KIAogCQlBc3NlcnQoSXRlbUlkSXNOb3JtYWwoaXRlbWlkKSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCmluZGV4IGI0OGQ3ZGMxZDI0Li40Mzlm MzNiODA2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNj LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKQEAgLTEwMyw3 ICsxMDMsNyBAQCBwbGFuX2VsZW1fZGVzYyhTdHJpbmdJbmZvIGJ1Ziwgdm9pZCAqcGxhbiwgdm9p ZCAqZGF0YSkKICAqIGNvZGUsIHRoZSBsYXR0ZXIgb2Ygd2hpY2ggaXMgdXNlZCBpbiBmcm9udGVu ZCAocGdfd2FsZHVtcCkgY29kZS4KICAqLwogdm9pZAotaGVhcF94bG9nX2Rlc2VyaWFsaXplX3By dW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1aW50OCBmbGFncywKK2hlYXBfeGxvZ19kZXNl cmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdzLAogCQkJ CQkJCQkJICAgaW50ICpucGxhbnMsIHhsaHBfZnJlZXplX3BsYW4gKipwbGFucywKIAkJCQkJCQkJ CSAgIE9mZnNldE51bWJlciAqKmZyel9vZmZzZXRzLAogCQkJCQkJCQkJICAgaW50ICpucmVkaXJl Y3RlZCwgT2Zmc2V0TnVtYmVyICoqcmVkaXJlY3RlZCwKQEAgLTI4Nyw2ICsyODcsMTAgQEAgaGVh cDJfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWFwcGVu ZFN0cmluZ0luZm8oYnVmLCAiLCBpc0NhdGFsb2dSZWw6ICVjIiwKIAkJCQkJCSB4bHJlYy0+Zmxh Z3MgJiBYTEhQX0lTX0NBVEFMT0dfUkVMID8gJ1QnIDogJ0YnKTsKIAorCQlpZiAoeGxyZWMtPmZs YWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKQorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYs ICIsIHZtX2ZsYWdzOiAweCUwMlgiLAorCQkJCQkJCSB4bHJlYy0+ZmxhZ3MgJiBWSVNJQklMSVRZ TUFQX1ZBTElEX0JJVFMpOworCiAJCWlmIChYTG9nUmVjSGFzQmxvY2tEYXRhKHJlY29yZCwgMCkp CiAJCXsKIAkJCVNpemUJCWRhdGFsZW47CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggYTJiZDVhODk3Zjgu LjhiNDcyOTVlZmEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0zNDQsNiArMzQ0LDEyIEBAIGV4dGVy biB2b2lkIGhlYXBfaW5wbGFjZV91cGRhdGVfYW5kX3VubG9jayhSZWxhdGlvbiByZWxhdGlvbiwK IAkJCQkJCQkJCQkgICBCdWZmZXIgYnVmZmVyKTsKIGV4dGVybiB2b2lkIGhlYXBfaW5wbGFjZV91 bmxvY2soUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCUhlYXBUdXBsZSBvbGR0dXAsIEJ1ZmZl ciBidWZmZXIpOworCitleHRlcm4gYm9vbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRp b24gcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwK KwkJCQkJCQkJCSBib29sICphbGxfZnJvemVuLAorCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZp c2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2Zm bnVtKTsKIGV4dGVybiBib29sIGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoSGVhcFR1cGxlSGVh ZGVyIHR1cGxlLAogCQkJCQkJCQkJICBjb25zdCBzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2Zm cywKIAkJCQkJCQkJCSAgSGVhcFBhZ2VGcmVlemUgKnBhZ2VmcnosCkBAIC0zODgsNiArMzk0LDkg QEAgZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUoQnVmZmVyIGJ1ZmZlciwgYm9v bCBscF90cnVuY2F0ZV9vbmx5LAogCQkJCQkJCQkJT2Zmc2V0TnVtYmVyICpub3d1bnVzZWQsIGlu dCBudW51c2VkKTsKIGV4dGVybiB2b2lkIGhlYXBfZ2V0X3Jvb3RfdHVwbGVzKFBhZ2UgcGFnZSwg T2Zmc2V0TnVtYmVyICpyb290X29mZnNldHMpOwogZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVf YW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCQkJCSAg QnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJCQkJICB1aW50OCB2bWZsYWdzLAorCQkJCQkJCQkJICBi b29sIHZtX21vZGlmaWVkX2hlYXBfcGFnZSwKIAkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBjb25m bGljdF94aWQsCiAJCQkJCQkJCQkgIGJvb2wgY2xlYW51cF9sb2NrLAogCQkJCQkJCQkJICBQcnVu ZVJlYXNvbiByZWFzb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hs b2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IGQ0YzA2MjViNjMy Li5kODUwODU5M2U3YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9n LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTI0OSw3ICsyNDks NyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3VwZGF0ZQogICogTWFpbiBkYXRhIHNlY3Rpb246 CiAgKgogICoJeGxfaGVhcF9wcnVuZQotICoJCXVpbnQ4CQkJCWZsYWdzCisgKgkJdWludDE2CQkJ CWZsYWdzCiAgKglUcmFuc2FjdGlvbklkCQkJc25hcHNob3RfY29uZmxpY3RfaG9yaXpvbgogICoK ICAqIEJsb2NrIDAgZGF0YSBzZWN0aW9uOgpAQCAtMjg0LDcgKzI4NCw3IEBAIHR5cGVkZWYgc3Ry dWN0IHhsX2hlYXBfdXBkYXRlCiAgKi8KIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfcHJ1bmUKIHsK LQl1aW50OAkJZmxhZ3M7CisJdWludDE2CQlmbGFnczsKIAogCS8qCiAJICogSWYgWExIUF9IQVNf Q09ORkxJQ1RfSE9SSVpPTiBpcyBzZXQsIHRoZSBjb25mbGljdCBob3Jpem9uIFhJRCBmb2xsb3dz LApAQCAtMjkyLDEwICsyOTIsMjIgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9wcnVuZQogCSAq LwogfSB4bF9oZWFwX3BydW5lOwogCi0jZGVmaW5lIFNpemVPZkhlYXBQcnVuZSAob2Zmc2V0b2Yo eGxfaGVhcF9wcnVuZSwgZmxhZ3MpICsgc2l6ZW9mKHVpbnQ4KSkKKyNkZWZpbmUgU2l6ZU9mSGVh cFBydW5lIChvZmZzZXRvZih4bF9oZWFwX3BydW5lLCBmbGFncykgKyBzaXplb2YodWludDE2KSkK KworLyoKKyAqIFRoZSB4bF9oZWFwX3BydW5lIHJlY29yZCdzIGZsYWdzIG1heSBhbHNvIGNvbnRh aW4gd2hpY2ggVk0gYml0cyB0byBzZXQuIEFzCisgKiBzdWNoLCAoMSA8PCAwKSBhbmQgKDEgPDwg MSkgYXJlIHJlc2VydmVkIGZvciBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIGFuZAorICogVklT SUJJTElUWU1BUF9BTExfRlJPWkVOLgorICovCiAKLS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25m bGljdCBkdXJpbmcgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCi0jZGVmaW5lCQlYTEhQ X0lTX0NBVEFMT0dfUkVMCQkJKDEgPDwgMSkKKy8qCisgKiBUbyBoYW5kbGUgcmVjb3ZlcnkgY29u ZmxpY3QgZHVyaW5nIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSwgd2UgbXVzdCBrbm93Cisg KiBpZiB0aGUgdGFibGUgaXMgYSBjYXRhbG9nIHRhYmxlLiBOb3RlIHRoYXQgaW4gdmlzaWJpbGl0 eW1hcGRlZnMuaAorICogVklTSUJMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUwgaXMgYWxzbyBkZWZp bmVkIGFzICgxIDw8IDIpLiB4bF9oZWFwX3BydW5lCisgKiByZWNvcmRzIHNob3VsZCB1c2UgWExI UF9JU19DQVRBTE9HX1JFTCwgbm90IFZJU0lCSUxJWVRNQVBfWExPR19DQVRBTE9HX1JFTCAtLQor ICogZXZlbiBpZiB0aGV5IG9ubHkgY29udGFpbiB1cGRhdGVzIHRvIHRoZSBWTS4KKyAqLworI2Rl ZmluZQkJWExIUF9JU19DQVRBTE9HX1JFTAkJCSgxIDw8IDIpCiAKIC8qCiAgKiBEb2VzIHJlcGxh eWluZyB0aGUgcmVjb3JkIHJlcXVpcmUgYSBjbGVhbnVwLWxvY2s/CkBAIC0zMDUsNyArMzE3LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9wcnVuZQogICogbWFya3MgTFBfREVBRCBsaW5lIHBv aW50ZXJzIGFzIHVudXNlZCB3aXRob3V0IG1vdmluZyBhbnkgdHVwbGUgZGF0YSwgYW4KICAqIG9y ZGluYXJ5IGV4Y2x1c2l2ZSBsb2NrIGlzIHN1ZmZpY2llbnQuCiAgKi8KLSNkZWZpbmUJCVhMSFBf Q0xFQU5VUF9MT0NLCSAgICAgICAoMSA8PCAyKQorI2RlZmluZQkJWExIUF9DTEVBTlVQX0xPQ0sJ ICAgICAgICgxIDw8IDMpCiAKIC8qCiAgKiBJZiB3ZSByZW1vdmUgb3IgZnJlZXplIGFueSBlbnRy aWVzIHRoYXQgY29udGFpbiB4aWRzLCB3ZSBuZWVkIHRvIGluY2x1ZGUgYQpAQCAtMzEzLDIyICsz MjUsMjIgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9wcnVuZQogICogdGhlcmUgYXJlIG5vIHF1 ZXJpZXMgcnVubmluZyBmb3Igd2hpY2ggdGhlIHJlbW92ZWQgdHVwbGVzIGFyZSBzdGlsbAogICog dmlzaWJsZSwgb3Igd2hpY2ggc3RpbGwgY29uc2lkZXIgdGhlIGZyb3plbiBYSURzIGFzIHJ1bm5p bmcuCiAgKi8KLSNkZWZpbmUJCVhMSFBfSEFTX0NPTkZMSUNUX0hPUklaT04gICAoMSA8PCAzKQor I2RlZmluZQkJWExIUF9IQVNfQ09ORkxJQ1RfSE9SSVpPTiAgICgxIDw8IDQpCiAKIC8qCiAgKiBJ bmRpY2F0ZXMgdGhhdCBhbiB4bGhwX2ZyZWV6ZV9wbGFucyBzdWItcmVjb3JkIGFuZCBvbmUgb3Ig bW9yZQogICogeGxocF9mcmVlemVfcGxhbiBzdWItcmVjb3JkcyBhcmUgcHJlc2VudC4KICAqLwot I2RlZmluZQkJWExIUF9IQVNfRlJFRVpFX1BMQU5TCQkoMSA8PCA0KQorI2RlZmluZQkJWExIUF9I QVNfRlJFRVpFX1BMQU5TCQkoMSA8PCA1KQogCiAvKgogICogWExIUF9IQVNfUkVESVJFQ1RJT05T LCBYTEhQX0hBU19ERUFEX0lURU1TLCBhbmQgWExIUF9IQVNfTk9XX1VOVVNFRF9JVEVNUwogICog aW5kaWNhdGUgdGhhdCB4bGhwX3BydW5lX2l0ZW1zIHN1Yi1yZWNvcmRzIHdpdGggcmVkaXJlY3Rl ZCwgZGVhZCwgYW5kCiAgKiB1bnVzZWQgaXRlbSBvZmZzZXRzIGFyZSBwcmVzZW50LgogICovCi0j ZGVmaW5lCQlYTEhQX0hBU19SRURJUkVDVElPTlMJCSgxIDw8IDUpCi0jZGVmaW5lCQlYTEhQX0hB U19ERUFEX0lURU1TCSAgICAgICAgKDEgPDwgNikKLSNkZWZpbmUJCVhMSFBfSEFTX05PV19VTlVT RURfSVRFTVMgICAoMSA8PCA3KQorI2RlZmluZQkJWExIUF9IQVNfUkVESVJFQ1RJT05TCQkoMSA8 PCA2KQorI2RlZmluZQkJWExIUF9IQVNfREVBRF9JVEVNUwkgICAgICAgICgxIDw8IDcpCisjZGVm aW5lCQlYTEhQX0hBU19OT1dfVU5VU0VEX0lURU1TICAgKDEgPDwgOCkKIAogLyoKICAqIHhsaHBf ZnJlZXplX3BsYW4gZGVzY3JpYmVzIGhvdyB0byBmcmVlemUgYSBncm91cCBvZiBvbmUgb3IgbW9y ZSBoZWFwIHR1cGxlcwpAQCAtNDk3LDcgKzUwOSw3IEBAIGV4dGVybiBYTG9nUmVjUHRyIGxvZ19o ZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCiAJCQkJCQkJCSAg IHVpbnQ4IHZtZmxhZ3MpOwogCiAvKiBpbiBoZWFwZGVzYy5jLCBzbyBpdCBjYW4gYmUgc2hhcmVk IGJldHdlZW4gZnJvbnRlbmQvYmFja2VuZCBjb2RlICovCi1leHRlcm4gdm9pZCBoZWFwX3hsb2df ZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQ4IGZsYWdzLAor ZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hhciAq Y3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAJCQkJCQkJCQkJCQkgICBpbnQgKm5wbGFucywgeGxocF9m cmVlemVfcGxhbiAqKnBsYW5zLAogCQkJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICoqZnJ6X29m ZnNldHMsCiAJCQkJCQkJCQkJCQkgICBpbnQgKm5yZWRpcmVjdGVkLCBPZmZzZXROdW1iZXIgKipy ZWRpcmVjdGVkLAotLSAKMi40My4wCgo= --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0004-Use-xl_heap_prune-record-for-setting-empty-pages.patch" Content-Disposition: attachment; filename="v12-0004-Use-xl_heap_prune-record-for-setting-empty-pages.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrciby3 RnJvbSAzZDk3OWFjNzI3YzIwZTk2NGE3NzU1MmM3YTVmMDZmNDVhN2FmZjdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQyOjE5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMDQvMjBdIFVzZSB4bF9oZWFwX3BydW5lIHJlY29yZCBmb3Igc2V0dGluZyBlbXB0 eSBwYWdlcwogYWxsLXZpc2libGUKCkFzIHBhcnQgb2YgYSBwcm9qZWN0IHRvIGVsaW1pbmF0ZSB4 bF9oZWFwX3Zpc2libGUgcmVjb3JkcywgZWxpbWluYXRlCnRoZWlyIHVzYWdlIGluIHBoYXNlIEkg dmFjdXVtIG9mIGVtcHR5IHBhZ2VzLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jICB8IDE0ICsrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YyB8IDU3ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaCAgICAgICAgICB8ICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygr KSwgMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBm MGIzM2QxYjY5Ni4uMzczOTg2YjIwNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j CkBAIC04MzYsNiArODM2LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5sYXRl c3RfeGlkX3JlbW92ZWQ7CiAKIAkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24s IGJ1ZmZlciwKKwkJCQkJCQkJCSAgZmFsc2UsCiAJCQkJCQkJCQkgIEludmFsaWRCdWZmZXIsIDAs IGZhbHNlLAogCQkJCQkJCQkJICBjb25mbGljdF94aWQsCiAJCQkJCQkJCQkgIHRydWUsIHJlYXNv biwKQEAgLTIwNTUsNiArMjA1Niw5IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZy ZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKICAqIGNhc2UsIHZtYnVmZmVyIHNob3VsZCBhbHJl YWR5IGhhdmUgYmVlbiB1cGRhdGVkIGFuZCBtYXJrZWQgZGlydHkgYW5kIHNob3VsZAogICogc3Rp bGwgYmUgcGlubmVkIGFuZCBsb2NrZWQuCiAgKgorICogZm9yY2VfaGVhcF9mcGkgaW5kaWNhdGVz IHRoYXQgYSBmdWxsIHBhZ2UgaW1hZ2Ugb2YgdGhlIGhlYXAgYmxvY2sgc2hvdWxkIGJlCisgKiBm b3JjZWQuCisgKgogICogc2V0X3BkX2FsbF92aXMgaW5kaWNhdGVzIHRoYXQgd2Ugc2V0IFBEX0FM TF9WSVNJQkxFIGFuZCB0aHVzIHNob3VsZCB1cGRhdGUKICAqIHRoZSBwYWdlIExTTiB3aGVuIGNo ZWNrc3Vtcy93YWxfbG9nX2hpbnRzIGFyZSBlbmFibGVkIGV2ZW4gaWYgd2UgZGlkIG5vdAogICog cHJ1bmUgb3IgZnJlZXplIHR1cGxlcyBvbiB0aGUgcGFnZS4KQEAgLTIwNjUsNiArMjA2OSw3IEBA IGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxl cywKICAqLwogdm9pZAogbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCSAgYm9vbCBmb3JjZV9oZWFwX2ZwaSwKIAkJCQkJCSAg QnVmZmVyIHZtYnVmZmVyLAogCQkJCQkJICB1aW50OCB2bWZsYWdzLAogCQkJCQkJICBib29sIHNl dF9wZF9hbGxfdmlzLApAQCAtMjA5NSwxMyArMjEwMCwxNiBAQCBsb2dfaGVhcF9wcnVuZV9hbmRf ZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCiAJcmVnYnVmX2ZsYWdz ID0gUkVHQlVGX1NUQU5EQVJEOwogCisJaWYgKGZvcmNlX2hlYXBfZnBpKQorCQlyZWdidWZfZmxh Z3MgfD0gUkVHQlVGX0ZPUkNFX0lNQUdFOworCiAJLyoKIAkgKiBXZSBjYW4gYXZvaWQgYW4gRlBJ IGlmIHRoZSBvbmx5IG1vZGlmaWNhdGlvbiB3ZSBhcmUgbWFraW5nIHRvIHRoZSBoZWFwCiAJICog cGFnZSBpcyB0byBzZXQgUERfQUxMX1ZJU0lCTEUgYW5kIGNoZWNrc3Vtcy93YWxfbG9nX2hpbnRz IGFyZSBkaXNhYmxlZC4KIAkgKi8KLQlpZiAoIWRvX3BydW5lICYmCi0JCW5mcm96ZW4gPT0gMCAm JgotCQkoIXNldF9wZF9hbGxfdmlzIHx8ICFYTG9nSGludEJpdElzTmVlZGVkKCkpKQorCWVsc2Ug aWYgKCFkb19wcnVuZSAmJgorCQkJIG5mcm96ZW4gPT0gMCAmJgorCQkJICghc2V0X3BkX2FsbF92 aXMgfHwgIVhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCiAJCXJlZ2J1Zl9mbGFncyB8PSBSRUdCVUZf Tk9fSU1BR0U7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDUx MDY3MjY0MDA0Li5hMWNkYWFlYmI1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YwpAQCAtMTg3NywzMyArMTg3Nyw0OSBAQCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3Rh dGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJCSAqLwogCQlpZiAo IVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCiAJCXsKKwkJCXVpbnQ4CQluZXdfdm1iaXRzID0gVklT SUJJTElUWU1BUF9BTExfVklTSUJMRSB8CisJCQkJVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOwor CisJCQkvKiBMb2NrIHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9uICov CisJCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCiAJCQlT VEFSVF9DUklUX1NFQ1RJT04oKTsKIAotCQkJLyogbWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdy aXRpbmcgYSBXQUwgcmVjb3JkICovCisJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKIAkJCU1h cmtCdWZmZXJEaXJ0eShidWYpOwogCi0JCQkvKgotCQkJICogSXQncyBwb3NzaWJsZSB0aGF0IGFu b3RoZXIgYmFja2VuZCBoYXMgZXh0ZW5kZWQgdGhlIGhlYXAsCi0JCQkgKiBpbml0aWFsaXplZCB0 aGUgcGFnZSwgYW5kIHRoZW4gZmFpbGVkIHRvIFdBTC1sb2cgdGhlIHBhZ2UgZHVlCi0JCQkgKiB0 byBhbiBFUlJPUi4gIFNpbmNlIGhlYXAgZXh0ZW5zaW9uIGlzIG5vdCBXQUwtbG9nZ2VkLCByZWNv dmVyeQotCQkJICogbWlnaHQgdHJ5IHRvIHJlcGxheSBvdXIgcmVjb3JkIHNldHRpbmcgdGhlIHBh Z2UgYWxsLXZpc2libGUgYW5kCi0JCQkgKiBmaW5kIHRoYXQgdGhlIHBhZ2UgaXNuJ3QgaW5pdGlh bGl6ZWQsIHdoaWNoIHdpbGwgY2F1c2UgYSBQQU5JQy4KLQkJCSAqIFRvIHByZXZlbnQgdGhhdCwg Y2hlY2sgd2hldGhlciB0aGUgcGFnZSBoYXMgYmVlbiBwcmV2aW91c2x5Ci0JCQkgKiBXQUwtbG9n Z2VkLCBhbmQgaWYgbm90LCBkbyB0aGF0IG5vdy4KLQkJCSAqLwotCQkJaWYgKFJlbGF0aW9uTmVl ZHNXQUwodmFjcmVsLT5yZWwpICYmCi0JCQkJUGFnZUdldExTTihwYWdlKSA9PSBJbnZhbGlkWExv Z1JlY1B0cikKLQkJCQlsb2dfbmV3cGFnZV9idWZmZXIoYnVmLCB0cnVlKTsKKwkJCXZpc2liaWxp dHltYXBfc2V0X3ZtYml0cyh2YWNyZWwtPnJlbCwgYmxrbm8sCisJCQkJCQkJCQkgdm1idWZmZXIs IG5ld192bWJpdHMpOworCisJCQlpZiAoUmVsYXRpb25OZWVkc1dBTCh2YWNyZWwtPnJlbCkpCisJ CQl7CisJCQkJLyoKKwkJCQkgKiBJdCdzIHBvc3NpYmxlIHRoYXQgYW5vdGhlciBiYWNrZW5kIGhh cyBleHRlbmRlZCB0aGUgaGVhcCwKKwkJCQkgKiBpbml0aWFsaXplZCB0aGUgcGFnZSwgYW5kIHRo ZW4gZmFpbGVkIHRvIFdBTC1sb2cgdGhlIHBhZ2UKKwkJCQkgKiBkdWUgdG8gYW4gRVJST1IuICBT aW5jZSBoZWFwIGV4dGVuc2lvbiBpcyBub3QgV0FMLWxvZ2dlZCwKKwkJCQkgKiByZWNvdmVyeSBt aWdodCB0cnkgdG8gcmVwbGF5IG91ciByZWNvcmQgc2V0dGluZyB0aGUgcGFnZQorCQkJCSAqIGFs bC12aXNpYmxlIGFuZCBmaW5kIHRoYXQgdGhlIHBhZ2UgaXNuJ3QgaW5pdGlhbGl6ZWQsIHdoaWNo CisJCQkJICogd2lsbCBjYXVzZSBhIFBBTklDLiBUbyBwcmV2ZW50IHRoYXQsIGlmIHRoZSBwYWdl IGhhc24ndAorCQkJCSAqIGJlZW4gcHJldmlvdXNseSBXQUwtbG9nZ2VkLCBmb3JjZSBhIGhlYXAg RlBJLgorCQkJCSAqLworCQkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUodmFjcmVsLT5yZWws IGJ1ZiwKKwkJCQkJCQkJCQkgIFBhZ2VHZXRMU04ocGFnZSkgPT0gSW52YWxpZFhMb2dSZWNQdHIs CisJCQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCQkgIG5ld192bWJpdHMsCisJCQkJCQkJ CQkJICB0cnVlLAorCQkJCQkJCQkJCSAgSW52YWxpZFRyYW5zYWN0aW9uSWQsCisJCQkJCQkJCQkJ ICBmYWxzZSwgUFJVTkVfVkFDVVVNX1NDQU4sCisJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJCQkJ CQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJCQkJICBOVUxMLCAw KTsKKwkJCX0KIAotCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNpYmlsaXR5bWFw X3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRy LAotCQkJCQkJCSAgdm1idWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJCQkJCSAgVklT SUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9GUk9a RU4pOwogCQkJRU5EX0NSSVRfU0VDVElPTigpOwogCi0JCQkvKiBDb3VudCB0aGUgbmV3bHkgYWxs LWZyb3plbiBwYWdlcyBmb3IgbG9nZ2luZyAqLworCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVG RkVSX0xPQ0tfVU5MT0NLKTsKKworCQkJLyogQ291bnQgdGhlIG5ld2x5IGFsbC1mcm96ZW4gcGFn ZXMgZm9yIGxvZ2dpbmcuICovCiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7CiAJ CQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwogCQl9CkBAIC0yOTI1LDYg KzI5NDEsNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9j a051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAlpZiAoUmVsYXRpb25OZWVkc1dBTCh2YWNy ZWwtPnJlbCkpCiAJewogCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKHZhY3JlbC0+cmVsLCBi dWZmZXIsCisJCQkJCQkJCSAgZmFsc2UsCiAJCQkJCQkJCSAgdm1idWZmZXIsCiAJCQkJCQkJCSAg dm1mbGFncywKIAkJCQkJCQkJICBzZXRfcGRfYWxsX3ZpcywKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCA4 YjQ3Mjk1ZWZhMi4uZTcxMjlhNjQ0YTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTM5NCw2ICszOTQs NyBAQCBleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBi b29sIGxwX3RydW5jYXRlX29ubHksCiAJCQkJCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNlZCwg aW50IG51bnVzZWQpOwogZXh0ZXJuIHZvaWQgaGVhcF9nZXRfcm9vdF90dXBsZXMoUGFnZSBwYWdl LCBPZmZzZXROdW1iZXIgKnJvb3Rfb2Zmc2V0cyk7CiBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVu ZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQkJ ICBib29sIGZvcmNlX2hlYXBfZnBpLAogCQkJCQkJCQkJICBCdWZmZXIgdm1idWZmZXIsCiAJCQkJ CQkJCQkgIHVpbnQ4IHZtZmxhZ3MsCiAJCQkJCQkJCQkgIGJvb2wgdm1fbW9kaWZpZWRfaGVhcF9w YWdlLAotLSAKMi40My4wCgo= --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0007-Find-and-fix-VM-corruption-in-heap_page_prune_an.patch" Content-Disposition: attachment; filename="v12-0007-Find-and-fix-VM-corruption-in-heap_page_prune_an.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcic96 RnJvbSAxMzNhODFjMzc5MjFmYzRhMTNlODU3OTVkYzNhNmYzOTcyNmIwMjU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjQ1OjU5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMDcvMjBdIEZpbmQgYW5kIGZpeCBWTSBjb3JydXB0aW9uIGluCiBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZQoKRnV0dXJlIGNvbW1pdHMgd2lsbCB1cGRhdGUgdGhlIFZNIGluIHRo ZSBzYW1lIGNyaXRpY2FsIHNlY3Rpb24gYW5kIFdBTApyZWNvcmQgYXMgcHJ1bmluZyBhbmQgZnJl ZXppbmcuIEZvciBlYXNlIG9mIHJldmlldywgdGhpcyBjb21taXQgbWFrZXMKb25lIHN0ZXAgdG93 YXJkIGRvaW5nIHRoaXMuIEl0IG1vdmVzIHRoZSBWTSBjb3JydXB0aW9uIGhhbmRsaW5nIGNhc2Ug dG8KaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKS4KClRoaXMgY29tbWl0IGlzIG9ubHkgcmVh bGx5IG1lYW50IGZvciByZXZpZXcsIGFzIGl0IGFkZHMgYSBtZW1iZXIgdG8KUHJ1bmVGcmVlemVS ZXN1bHQgKHZtX2NvcnJ1cHRpb24pIHRoYXQgaXMgcmVtb3ZlZCBpbiBsYXRlciBjb21taXRzLgot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICB8IDkzICsrKysrKysrKysr KysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8 IDg0ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aCAgICAgICAgICB8ICA0ICsrCiAzIGZpbGVzIGNoYW5nZWQsIDEwMiBpbnNlcnRpb25zKCspLCA3 OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDM3Mzk4 NmIyMDRhLi41NGFmMzI5NmI5MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAg LTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImFj Y2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKLSNpbmNsdWRlICJh Y2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1h cC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2lu c3RydW1lbnQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTE3Nyw2ICsxNzcsMTMgQEAg c3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGlyZWN0KFBydW5l U3RhdGUgKnByc3RhdGUsIE9mZnNldE4KIAogc3RhdGljIHZvaWQgcGFnZV92ZXJpZnlfcmVkaXJl Y3RzKFBhZ2UgcGFnZSk7CiAKK3N0YXRpYyBib29sIGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVw dGlvbihSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2Js aywKKwkJCQkJCQkJCQkgICBCdWZmZXIgaGVhcF9idWZmZXIsIFBhZ2UgaGVhcF9wYWdlLAorCQkJ CQkJCQkJCSAgIGJvb2wgaGVhcF9ibGtfa25vd25fYXYsCisJCQkJCQkJCQkJICAgaW50NjQgbmxw ZGVhZF9pdGVtcywKKwkJCQkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIpOworCiAKIC8qCiAgKiBP cHRpb25hbGx5IHBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBpbiB0aGUgc3BlY2lmaWVk IHBhZ2UuCkBAIC0yNjEsNyArMjY4LDkgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKIAkJCSAqIG5vdCB0aGUgcmVsYXRpb24gaGFzIGluZGV4 ZXMsIHNpbmNlIHdlIGNhbm5vdCBzYWZlbHkgZGV0ZXJtaW5lCiAJCQkgKiB0aGF0IGR1cmluZyBv bi1hY2Nlc3MgcHJ1bmluZyB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLgogCQkJICov Ci0JCQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLCB2aXN0ZXN0 LCAwLAorCQkJaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24sIGJ1ZmZlciwgZmFs c2UsCisJCQkJCQkJCQkgICBJbnZhbGlkQnVmZmVyLAorCQkJCQkJCQkJICAgdmlzdGVzdCwgMCwK IAkJCQkJCQkJCSAgIE5VTEwsICZwcmVzdWx0LCBQUlVORV9PTl9BQ0NFU1MsICZkdW1teV9vZmZf bG9jLCBOVUxMLCBOVUxMKTsKIAogCQkJLyoKQEAgLTI5NCw2ICszMDMsNzAgQEAgaGVhcF9wYWdl X3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKIAl9CiB9CiAKKy8q CisgKiBXaGVuIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCBhZnRlciBwaGFzZSBJIGhlYXAg dmFjdXVtaW5nLCB3ZSB0YWtlIHRoZQorICogb3Bwb3J0dW5pdHkgdG8gaWRlbnRpZnkgYW5kIGZp eCBhbnkgVk0gY29ycnVwdGlvbi4KKyAqCisgKiBoZWFwX2Jsa19rbm93bl9hdiBpcyB0aGUgdmlz aWJpbGl0eSBzdGF0dXMgb2YgdGhlIGhlYXAgcGFnZSBjb2xsZWN0ZWQKKyAqIHdoaWxlIGZpbmRp bmcgdGhlIG5leHQgdW5za2lwcGFibGUgYmxvY2sgaW4gaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2Nr KCkuCisgKi8KK3N0YXRpYyBib29sCitpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVs YXRpb24gcmVsYXRpb24sCisJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssCisJCQkJCQkJ ICAgQnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhlYXBfcGFnZSwKKwkJCQkJCQkgICBib29sIGhl YXBfYmxrX2tub3duX2F2LAorCQkJCQkJCSAgIGludDY0IG5scGRlYWRfaXRlbXMsCisJCQkJCQkJ ICAgQnVmZmVyIHZtYnVmZmVyKQoreworCS8qCisJICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRo ZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKKwkgKiBwYWdl LWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0 IGdvdAorCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNh bGxlZCwgc28gd2UgbXVzdCByZWNoZWNrCisJICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29u Y2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgorCSAqLworCWlmIChoZWFwX2Jsa19rbm93 bl9hdiAmJiAhUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpICYmCisJCXZpc2liaWxpdHltYXBf Z2V0X3N0YXR1cyhyZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikgIT0gMCkKKwl7CisJCWVy ZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKKwkJ CQkgZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkg bWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJCQkJUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pLCBoZWFwX2JsaykpKTsKKworCQl2aXNpYmlsaXR5 bWFwX2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoKKwkgKiBJdCdzIHBv c3NpYmxlIGZvciB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFi bGVUcmFuc2FjdGlvbklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3Jv bmcgZm9yIHVzIHRvIHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8g ZXZlcnlvbmUKKwkgKiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBU aGUgcmVhbCBzYWZlIHhtaW4gdmFsdWUKKwkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBH ZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUg YW5kIHNvbWV0aW1lcyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGws CisJICogc28gaWYgd2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQg dGhlIHR1cGxlcyB0aGF0IHdlCisJICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25l IHlldCBhY3R1YWxseSBhcmUsIGFuZCB0aGUKKwkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNv cnJlY3QuCisJICoKKwkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBh IHBhZ2Ugd2l0aCBQRF9BTExfVklTSUJMRSBzZXQsCisJICogaG93ZXZlci4KKwkgKi8KKwlpZiAo bmxwZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQorCXsKKwkJ ZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAor CQkJCSBlcnJtc2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBh bGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWxhdGlvbiksIGhlYXBfYmxrKSkpOworCisJCVBhZ2VDbGVhckFsbFZp c2libGUoaGVhcF9wYWdlKTsKKwkJTWFya0J1ZmZlckRpcnR5KGhlYXBfYnVmZmVyKTsKKwkJdmlz aWJpbGl0eW1hcF9jbGVhcihyZWxhdGlvbiwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBm YWxzZTsKK30KIAogLyoKICAqIFBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90 ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBvbiB0aGUKQEAgLTMxNCw2ICszODcsMTAgQEAgaGVhcF9w YWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKICAqIEhFQVBf UFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3Qgc2V0LCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25s eSBjYWxsZXJzCiAgKiB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KICAq CisgKiBibGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFwIGJs b2NrIGFzIG9mIHRoZSBsYXN0IGNhbGwKKyAqIHRvIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9j aygpLiB2bWJ1ZmZlciBpcyB0aGUgYnVmZmVyIHRoYXQgbWF5IGFscmVhZHkKKyAqIGNvbnRhaW4g dGhlIHJlcXVpcmVkIGJsb2NrIG9mIHRoZSB2aXNpYmlsaXR5IG1hcC4KKyAqCiAgKiB2aXN0ZXN0 IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggd2hldGhlciB0dXBsZXMgYXJlIERFQUQgb3IgUkVDRU5U TFlfREVBRAogICogKHNlZSBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0pLgogICoKQEAgLTM0 OSw2ICs0MjYsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyKQogICovCiB2b2lkCiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAor CQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAogCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rl c3QsCiAJCQkJCQkgICBpbnQgb3B0aW9ucywKIAkJCQkJCSAgIHN0cnVjdCBWYWN1dW1DdXRvZmZz ICpjdXRvZmZzLApAQCAtODk3LDYgKzk3NiwxNiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlwcmVzdWx0LT5scGRlYWRfaXRl bXMgPSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKIAkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMg YXJyYXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCiAKKwkvKgorCSAqIENsZWFyIGFueSBWTSBj b3JydXB0aW9uLiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgZG9uZSBpbiBhIGNyaXRpY2FsCisJ ICogc2VjdGlvbi4KKwkgKi8KKwlwcmVzdWx0LT52bV9jb3JydXB0aW9uID0gZmFsc2U7CisJaWYg KG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNKQorCQlwcmVzdWx0LT52bV9jb3Jy dXB0aW9uID0gaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHJlbGF0aW9uLAorCQkJCQkJ CQkJCQkJCQkJCWJsb2Nrbm8sIGJ1ZmZlciwgcGFnZSwKKwkJCQkJCQkJCQkJCQkJCQlibGtfa25v d25fYXYsCisJCQkJCQkJCQkJCQkJCQkJcHJzdGF0ZS5scGRlYWRfaXRlbXMsIHZtYnVmZmVyKTsK IAlpZiAocHJzdGF0ZS5mcmVlemUpCiAJewogCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMWZlYmI1MjRkNDEuLjU3NGU0MTVi MGUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00MzAsMTIgKzQzMCw2 IEBAIHN0YXRpYyB2b2lkIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9jayhMVlJlbFN0YXRlICp2 YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKTsKIHN0YXRpYyBib29sIGxhenlfc2Nhbl9uZXdfb3Jf ZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCQkgICBCbG9ja051 bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCQkgICBib29sIHNoYXJlbG9jaywgQnVmZmVy IHZtYnVmZmVyKTsKLXN0YXRpYyBib29sIGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihS ZWxhdGlvbiByZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywKLQkJ CQkJCQkJCQkgICBCdWZmZXIgaGVhcF9idWZmZXIsIFBhZ2UgaGVhcF9wYWdlLAotCQkJCQkJCQkJ CSAgIGJvb2wgaGVhcF9ibGtfa25vd25fYXYsCi0JCQkJCQkJCQkJICAgaW50NjQgbmxwZGVhZF9p dGVtcywKLQkJCQkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIpOwogc3RhdGljIGludAlsYXp5X3Nj YW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCUJsb2NrTnVt YmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJCQkJCQkJQnVmZmVyIHZtYnVmZmVyLCBib29sIGFsbF92 aXNpYmxlX2FjY29yZGluZ190b192bSwKQEAgLTE5NDAsNzIgKzE5MzQsNiBAQCBsYXp5X3NjYW5f bmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIg Ymxrbm8sCiAJcmV0dXJuIGZhbHNlOwogfQogCi0vKgotICogV2hlbiB1cGRhdGluZyB0aGUgdmlz aWJpbGl0eSBtYXAgYWZ0ZXIgcGhhc2UgSSBoZWFwIHZhY3V1bWluZywgd2UgdGFrZSB0aGUKLSAq IG9wcG9ydHVuaXR5IHRvIGlkZW50aWZ5IGFuZCBmaXggYW55IFZNIGNvcnJ1cHRpb24uCi0gKgot ICogaGVhcF9ibGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFw IHBhZ2UgY29sbGVjdGVkCi0gKiB3aGlsZSBmaW5kaW5nIHRoZSBuZXh0IHVuc2tpcHBhYmxlIGJs b2NrIGluIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpLgotICovCi1zdGF0aWMgYm9vbAotaWRl bnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJCSAg IEJsb2NrTnVtYmVyIGhlYXBfYmxrLAotCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFn ZSBoZWFwX3BhZ2UsCi0JCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19rbm93bl9hdiwKLQkJCQkJCQkg ICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlcikKLXsKLQkv KgotCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNob3Vs ZCBuZXZlciBiZSBzZXQgaWYgdGhlCi0JICogcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dl dmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBnb3QKLQkgKiBjbGVhcmVkIGFmdGVyIGhl YXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdlIG11c3QgcmVjaGVjawot CSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhhdCB0aGUgVk0gaXMgY29y cnVwdC4KLQkgKi8KLQlpZiAoaGVhcF9ibGtfa25vd25fYXYgJiYgIVBhZ2VJc0FsbFZpc2libGUo aGVhcF9wYWdlKSAmJgotCQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBf YmxrLCAmdm1idWZmZXIpICE9IDApCi0JewotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNv ZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJIGVycm1zZygicGFnZSBpcyBub3QgbWFy a2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0aW9u IFwiJXNcIiBwYWdlICV1IiwKLQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9u KSwgaGVhcF9ibGspKSk7Ci0KLQkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWxhdGlvbiwgaGVhcF9i bGssIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JCXJldHVy biB0cnVlOwotCX0KLQotCS8qCi0JICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVy bmVkIGJ5Ci0JICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUg YmFja3dhcmRzLCBzbyBpdCdzIG5vdAotCSAqIHdyb25nIGZvciB1cyB0byBzZWUgdHVwbGVzIHRo YXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCi0JICogeWV0LCB3aGlsZSBQ RF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4bWluIHZhbHVlCi0J ICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNh Y3Rpb25JZCgpIGlzCi0JICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMgcmV0dXJucyBhIHZh bHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAotCSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNv bnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhhdCB3ZQotCSAqIHRo aW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhl Ci0JICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgotCSAqCi0JICogVGhlcmUgc2hv dWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUg c2V0LAotCSAqIGhvd2V2ZXIuCi0JICovCi0JaWYgKG5scGRlYWRfaXRlbXMgPiAwICYmIFBhZ2VJ c0FsbFZpc2libGUoaGVhcF9wYWdlKSkKLQl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJy Y29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGNvbnRhaW5p bmcgTFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMgYWxsLXZpc2libGUgaW4gcmVsYXRpb24gXCIl c1wiIHBhZ2UgJXUiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pLCBo ZWFwX2JsaykpKTsKLQotCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBfcGFnZSk7Ci0JCU1hcmtC dWZmZXJEaXJ0eShoZWFwX2J1ZmZlcik7Ci0JCXZpc2liaWxpdHltYXBfY2xlYXIocmVsYXRpb24s IGhlYXBfYmxrLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwot CQlyZXR1cm4gdHJ1ZTsKLQl9Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KLQogLyogcXNvcnQgY29t cGFyYXRvciBmb3Igc29ydGluZyBPZmZzZXROdW1iZXJzICovCiBzdGF0aWMgaW50CiBjbXBPZmZz ZXROdW1iZXJzKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCkBAIC0yMDYzLDExICsxOTkx LDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJICogdHVwbGVzLiBQ cnVuaW5nIHdpbGwgaGF2ZSBkZXRlcm1pbmVkIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGlzCiAJ ICogYWxsLXZpc2libGUuCiAJICovCi0JcHJ1bmVfb3B0aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9G UkVFWkU7CisJcHJ1bmVfb3B0aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgfCBIRUFQX1BB R0VfUFJVTkVfVVBEQVRFX1ZNOwogCWlmICh2YWNyZWwtPm5pbmRleGVzID09IDApCiAJCXBydW5l X29wdGlvbnMgfD0gSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVzsKIAotCWhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKHJlbCwgYnVmLCB2YWNyZWwtPnZpc3Rlc3QsIHBydW5lX29wdGlv bnMsCisJaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUocmVsLCBidWYsCisJCQkJCQkJICAgYWxs X3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtLAorCQkJCQkJCSAgIHZtYnVmZmVyLAorCQkJCQkJCSAg IHZhY3JlbC0+dmlzdGVzdCwgcHJ1bmVfb3B0aW9ucywKIAkJCQkJCQkgICAmdmFjcmVsLT5jdXRv ZmZzLCAmcHJlc3VsdCwgUFJVTkVfVkFDVVVNX1NDQU4sCiAJCQkJCQkJICAgJnZhY3JlbC0+b2Zm bnVtLAogCQkJCQkJCSAgICZ2YWNyZWwtPk5ld1JlbGZyb3plblhpZCwgJnZhY3JlbC0+TmV3UmVs bWluTXhpZCk7CkBAIC0yMTUyLDEwICsyMDgzLDkgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3Rh dGUgKnZhY3JlbCwKIAkvKgogCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBi YXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAoYXMKIAkgKiBvZiBsYXN0IGhlYXBfdmFj X3NjYW5fbmV4dF9ibG9jaygpIGNhbGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBh bGxfZnJvemVuIHZhcmlhYmxlcy4gU3RhcnQgYnkgbG9va2luZyBmb3IgYW55IFZNIGNvcnJ1cHRp b24uCisJICogYWxsX2Zyb3plbiB2YXJpYWJsZXMuCiAJICovCi0JaWYgKGlkZW50aWZ5X2FuZF9m aXhfdm1fY29ycnVwdGlvbih2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwgcGFnZSwKLQkJCQkJCQkJ CSAgIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwgcHJlc3VsdC5scGRlYWRfaXRlbXMsIHZt YnVmZmVyKSkKKwlpZiAocHJlc3VsdC52bV9jb3JydXB0aW9uKQogCXsKIAkJLyogRG9uJ3QgdXBk YXRlIHRoZSBWTSBpZiB3ZSBqdXN0IGNsZWFyZWQgY29ycnVwdGlvbiBpbiBpdCAqLwogCX0KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaAppbmRleCBlNzEyOWE2NDRhMS4uMGM3ZWI1ZTQ2ZjQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt LmgKQEAgLTQyLDYgKzQyLDcgQEAKIC8qICJvcHRpb25zIiBmbGFnIGJpdHMgZm9yIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplICovCiAjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9NQVJLX1VOVVNF RF9OT1cJCSgxIDw8IDApCiAjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUJCQkJKDEgPDwg MSkKKyNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTQkJCSgxIDw8IDIpCiAKIHR5cGVk ZWYgc3RydWN0IEJ1bGtJbnNlcnRTdGF0ZURhdGEgKkJ1bGtJbnNlcnRTdGF0ZTsKIHN0cnVjdCBU dXBsZVRhYmxlU2xvdDsKQEAgLTI0Nyw2ICsyNDgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZy ZWV6ZVJlc3VsdAogCWJvb2wJCWFsbF92aXNpYmxlOwogCWJvb2wJCWFsbF9mcm96ZW47CiAJVHJh bnNhY3Rpb25JZCB2bV9jb25mbGljdF9ob3Jpem9uOworCWJvb2wJCXZtX2NvcnJ1cHRpb247CiAK IAkvKgogCSAqIFdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIG1ha2VzIHJlbCB0cnVuY2F0aW9uIHVu c2FmZS4gIFRoaXMgaXMgc2V0IHRvCkBAIC0zODAsNiArMzgyLDggQEAgZXh0ZXJuIFRyYW5zYWN0 aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9uIHJlbCwKIHN0cnVjdCBHbG9i YWxWaXNTdGF0ZTsKIGV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCisJCQkJCQkJCQkgICBib29s IGJsa19rbm93bl9hdiwKKwkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKIAkJCQkJCQkJCSAg IHN0cnVjdCBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkJCSAgIGludCBvcHRpb25z LAogCQkJCQkJCQkJICAgc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnMsCi0tIAoyLjQzLjAK Cg== --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0006-Combine-vacuum-phase-I-VM-update-cases.patch" Content-Disposition: attachment; filename="v12-0006-Combine-vacuum-phase-I-VM-update-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcic55 RnJvbSBmNzNiMTZjYmVhNmE1ODBlZDdjZjBjNzJjMzdjOWEzMjUxZmE0Y2Y0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjM1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMDYvMjBdIENvbWJpbmUgdmFjdXVtIHBoYXNlIEkgVk0gdXBkYXRlIGNhc2VzCgpX ZSB1cGRhdGUgdGhlIFZNIGFmdGVyIHBoYXNlIEkgb2YgdmFjdXVtIC0tIGVpdGhlciBzZXR0aW5n IGJvdGggdGhlIFZNCmJpdHMgd2hlbiBhbGwgYml0cyBhcmUgY3VycmVudGx5IHVuc2V0IG9yIHNl dHRpbmcganVzdCB0aGUgZnJvemVuIGJpdAp3aGVuIHRoZSBhbGwtdmlzaWJsZSBiaXQgaXMgYWxy ZWFkeSBzZXQuCgpUaG9zZSB0d28gY2FzZXMgc2hhcmVkIG11Y2ggb2YgdGhlIHNhbWUgY29kZSAt LSBsZWFkaW5nIHRvIHVubmVjZXNzYXJ5CmR1cGxpY2F0aW9uLiBUaGlzIGNvbW1pdCBjb21iaW5l cyB0aGVtLCB3aGljaCBpcyBzaW1wbGVyIGFuZCBlYXNpZXIgdG8KdW5kZXJzdGFuZC4KClRoZSBj b21iaW5lZCBjYXNlIGFsc28gaGFwcGVucyB0byBmaXggYSBsb25nc3RhbmRpbmcgYnVnIHdoZXJl IGlmIHdlIGFyZQpvbmx5IHNldHRpbmcgYW4gYWxsLXZpc2libGUgcGFnZSBhbGwtZnJvemVuIGFu ZCBjaGVja3N1bXMvd2FsX2xvZ19oaW50cwphcmUgZW5hYmxlZCwgd2Ugd291bGQgZmFpbCB0byBz ZXQgdGhlIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgc2V0dGluZyB0aGUKcGFnZSBMU04gaW4gdmlzaWJp bGl0eW1hcF9zZXQoKS4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMg fCAxMDEgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzIgaW5z ZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCmluZGV4IGU5YjRlOTI0ZDIyLi4xZmViYjUyNGQ0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYwpAQCAtMjE1OSwxMSArMjE1OSwyNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZS ZWxTdGF0ZSAqdmFjcmVsLAogCXsKIAkJLyogRG9uJ3QgdXBkYXRlIHRoZSBWTSBpZiB3ZSBqdXN0 IGNsZWFyZWQgY29ycnVwdGlvbiBpbiBpdCAqLwogCX0KLQllbHNlIGlmICghYWxsX3Zpc2libGVf YWNjb3JkaW5nX3RvX3ZtICYmIHByZXN1bHQuYWxsX3Zpc2libGUpCisKKwkvKgorCSAqIElmIHRo ZSBwYWdlIGlzbid0IHlldCBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIFZNIG9yIGl0IGlzIGFu ZCBuZWVkcworCSAqIHRvIG1lIG1hcmtlZCBhbGwtZnJvemVuLCB1cGRhdGUgdGhlIFZNLiBOb3Rl IHRoYXQgYWxsX2Zyb3plbiBpcyBvbmx5CisJICogdmFsaWQgaWYgYWxsX3Zpc2libGUgaXMgdHJ1 ZSwgc28gd2UgbXVzdCBjaGVjayBib3RoIGFsbF92aXNpYmxlIGFuZAorCSAqIGFsbF9mcm96ZW4u CisJICovCisJZWxzZSBpZiAocHJlc3VsdC5hbGxfdmlzaWJsZSAmJgorCQkJICghYWxsX3Zpc2li bGVfYWNjb3JkaW5nX3RvX3ZtIHx8CisJCQkgIChwcmVzdWx0LmFsbF9mcm96ZW4gJiYgIVZNX0FM TF9GUk9aRU4odmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpKSkpCiAJewogCQl1aW50OAkJ b2xkX3ZtYml0czsKIAkJdWludDgJCWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsK IAorCQkvKgorCQkgKiBJZiB0aGUgcGFnZSBpcyBhbGwtZnJvemVuLCB3ZSBjYW4gcGFzcyBJbnZh bGlkVHJhbnNhY3Rpb25JZCBhcyBvdXIKKwkJICogY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbiBzdWZmaWNpZW50IHRvIG1ha2UKKwkJICogZXZlcnl0aGluZyBzYWZl IGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxlcyB3ZXJlCisJCSAqIGZy b3plbi4KKwkJICovCiAJCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCiAJCXsKIAkJCUFzc2VydCgh VHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7CkBAIC0y MTc2LDIxICsyMTkxLDI5IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJ CSAqIGNoZWNrc3VtcyBhcmUgbm90IGVuYWJsZWQpLiAgUmVnYXJkbGVzcywgc2V0IGJvdGggYml0 cyBzbyB0aGF0IHdlCiAJCSAqIGdldCBiYWNrIGluIHN5bmMuCiAJCSAqCi0JCSAqIE5COiBJZiB0 aGUgaGVhcCBwYWdlIGlzIGFsbC12aXNpYmxlIGJ1dCB0aGUgVk0gYml0IGlzIG5vdCBzZXQsIHdl Ci0JCSAqIGRvbid0IG5lZWQgdG8gZGlydHkgdGhlIGhlYXAgcGFnZS4gIEhvd2V2ZXIsIGlmIGNo ZWNrc3VtcyBhcmUKLQkJICogZW5hYmxlZCwgd2UgZG8gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0 aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQKLQkJICogYmVmb3JlIHBhc3NpbmcgaXQgdG8gdmlzaWJp bGl0eW1hcF9zZXQoKSwgYmVjYXVzZSBpdCBtYXkgYmUgbG9nZ2VkLgotCQkgKiBHaXZlbiB0aGF0 IHRoaXMgc2l0dWF0aW9uIHNob3VsZCBvbmx5IGhhcHBlbiBpbiByYXJlIGNhc2VzIGFmdGVyIGEK LQkJICogY3Jhc2gsIGl0IGlzIG5vdCB3b3J0aCBvcHRpbWl6aW5nLgorCQkgKiBJZiB0aGUgaGVh cCBwYWdlIGlzIGFsbC12aXNpYmxlIGJ1dCB0aGUgVk0gYml0IGlzIG5vdCBzZXQsIHdlIGRvbid0 CisJCSAqIG5lZWQgdG8gZGlydHkgdGhlIGhlYXAgcGFnZS4gIEhvd2V2ZXIsIGlmIGNoZWNrc3Vt cyBhcmUgZW5hYmxlZCwgd2UKKwkJICogZG8gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGVh cCBwYWdlIGlzIGRpcnRpZWQgYmVmb3JlIHBhc3NpbmcKKwkJICogaXQgdG8gdmlzaWJpbGl0eW1h cF9zZXQoKSwgYmVjYXVzZSBpdCBtYXkgYmUgbG9nZ2VkLgogCQkgKi8KLQkJUGFnZVNldEFsbFZp c2libGUocGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWYpOworCQlpZiAoIVBhZ2VJc0FsbFZp c2libGUocGFnZSkgfHwgWExvZ0hpbnRCaXRJc05lZWRlZCgpKQorCQl7CisJCQlQYWdlU2V0QWxs VmlzaWJsZShwYWdlKTsKKwkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOworCQl9CisKIAkJb2xkX3Zt Yml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAogCQkJCQkJ CQkJICAgSW52YWxpZFhMb2dSZWNQdHIsCiAJCQkJCQkJCQkgICB2bWJ1ZmZlciwgcHJlc3VsdC52 bV9jb25mbGljdF9ob3Jpem9uLAogCQkJCQkJCQkJICAgZmxhZ3MpOwogCiAJCS8qCisJCSAqIEV2 ZW4gaWYgd2UgYXJlIG9ubHkgc2V0dGluZyB0aGUgYWxsLWZyb3plbiBiaXQsIHRoZXJlIGlzIGEg c21hbGwKKwkJICogY2hhbmNlIHRoYXQgdGhlIFZNIHdhcyBtb2RpZmllZCBzb21ldGltZSBiZXR3 ZWVuIHNldHRpbmcKKwkJICogYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFuZCBjaGVja2lu ZyB0aGUgdmlzaWJpbGl0eSBkdXJpbmcKKwkJICogcHJ1bmluZy4gQ2hlY2sgdGhlIHJldHVybiB2 YWx1ZSBvZiBvbGRfdm1iaXRzIHRvIGVuc3VyZSB0aGUKKwkJICogdmlzaWJpbGl0eSBtYXAgY291 bnRlcnMgdXNlZCBmb3IgbG9nZ2luZyBhcmUgYWNjdXJhdGUuCisJCSAqCiAJCSAqIElmIHRoZSBw YWdlIHdhc24ndCBhbHJlYWR5IHNldCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbiBpbiB0 aGUKIAkJICogVk0sIGNvdW50IGl0IGFzIG5ld2x5IHNldCBmb3IgbG9nZ2luZy4KIAkJICovCkBA IC0yMjExLDY2ICsyMjM0LDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwK IAkJfQogCX0KIAotCS8qCi0JICogSWYgdGhlIGFsbC12aXNpYmxlIHBhZ2UgaXMgYWxsLWZyb3pl biBidXQgbm90IG1hcmtlZCBhcyBzdWNoIHlldCwgbWFyawotCSAqIGl0IGFzIGFsbC1mcm96ZW4u ICBOb3RlIHRoYXQgYWxsX2Zyb3plbiBpcyBvbmx5IHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzCi0J ICogdHJ1ZSwgc28gd2UgbXVzdCBjaGVjayBib3RoIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVu LgotCSAqLwotCWVsc2UgaWYgKGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSAmJiBwcmVzdWx0 LmFsbF92aXNpYmxlICYmCi0JCQkgcHJlc3VsdC5hbGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVO KHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKSkKLQl7Ci0JCXVpbnQ4CQlvbGRfdm1iaXRz OwotCi0JCS8qCi0JCSAqIEF2b2lkIHJlbHlpbmcgb24gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3Rv X3ZtIGFzIGEgcHJveHkgZm9yIHRoZQotCQkgKiBwYWdlLWxldmVsIFBEX0FMTF9WSVNJQkxFIGJp dCBiZWluZyBzZXQsIHNpbmNlIGl0IG1pZ2h0IGhhdmUgYmVjb21lCi0JCSAqIHN0YWxlIC0tIGV2 ZW4gd2hlbiBhbGxfdmlzaWJsZSBpcyBzZXQKLQkJICovCi0JCWlmICghUGFnZUlzQWxsVmlzaWJs ZShwYWdlKSkKLQkJewotCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQlNYXJrQnVmZmVy RGlydHkoYnVmKTsKLQkJfQotCi0JCS8qCi0JCSAqIFNldCB0aGUgcGFnZSBhbGwtZnJvemVuIChh bmQgYWxsLXZpc2libGUpIGluIHRoZSBWTS4KLQkJICoKLQkJICogV2UgY2FuIHBhc3MgSW52YWxp ZFRyYW5zYWN0aW9uSWQgYXMgb3VyIGN1dG9mZl94aWQsIHNpbmNlIGEKLQkJICogc25hcHNob3RD b25mbGljdEhvcml6b24gc3VmZmljaWVudCB0byBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVE TwotCQkgKiB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZSBmcm96ZW4uCi0J CSAqLwotCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3Rf aG9yaXpvbikpOwotCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWws IGJsa25vLCBidWYsCi0JCQkJCQkJCQkgICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkJCSAg IHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJCQkJCQkJCSAgIFZJU0lCSUxJVFlN QVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJICAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsK LQotCQkvKgotCQkgKiBUaGUgcGFnZSB3YXMgbGlrZWx5IGFscmVhZHkgc2V0IGFsbC12aXNpYmxl IGluIHRoZSBWTS4gSG93ZXZlciwKLQkJICogdGhlcmUgaXMgYSBzbWFsbCBjaGFuY2UgdGhhdCBp dCB3YXMgbW9kaWZpZWQgc29tZXRpbWUgYmV0d2VlbgotCQkgKiBzZXR0aW5nIGFsbF92aXNpYmxl X2FjY29yZGluZ190b192bSBhbmQgY2hlY2tpbmcgdGhlIHZpc2liaWxpdHkKLQkJICogZHVyaW5n IHBydW5pbmcuIENoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2Ygb2xkX3ZtYml0cyBhbnl3YXkgdG8K LQkJICogZW5zdXJlIHRoZSB2aXNpYmlsaXR5IG1hcCBjb3VudGVycyB1c2VkIGZvciBsb2dnaW5n IGFyZSBhY2N1cmF0ZS4KLQkJICovCi0JCWlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUpID09IDApCi0JCXsKLQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMr KzsKLQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFn ZV9mcm96ZW4gPSB0cnVlOwotCQl9Ci0KLQkJLyoKLQkJICogV2UgYWxyZWFkeSBjaGVja2VkIHRo YXQgdGhlIHBhZ2Ugd2FzIG5vdCBzZXQgYWxsLWZyb3plbiBpbiB0aGUgVk0KLQkJICogYWJvdmUs IHNvIHdlIGRvbid0IG5lZWQgdG8gdGVzdCB0aGUgdmFsdWUgb2Ygb2xkX3ZtYml0cy4KLQkJICov Ci0JCWVsc2UKLQkJewotCQkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1f cGFnZV9mcm96ZW4gPSB0cnVlOwotCQl9Ci0JfQotCiAJcmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7 CiB9CiAKLS0gCjIuNDMuMAoK --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0010-Rename-PruneState.freeze-to-attempt_freeze.patch" Content-Disposition: attachment; filename="v12-0010-Rename-PruneState.freeze-to-attempt_freeze.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcicj9 RnJvbSA4Mjc3YmU3NTViMTg3ZTY2YTU3YmZmZjE1YTJkNDZmOTg2NTZmNGNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDMxIEp1bCAyMDI1IDE0OjA3OjUxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMTAvMjBdIFJlbmFtZSBQcnVuZVN0YXRlLmZyZWV6ZSB0byBhdHRlbXB0X2ZyZWV6 ZQoKVGhpcyBtYWtlcyBpdCBtb3JlIGNsZWFyIHRoYXQgdGhpcyBpcyB0byBpbmRpY2F0ZSB0aGUg Y2FsbGVyIHdvdWxkIGxpa2UKaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBjb25zaWRl ciBmcmVlemluZyB0dXBsZXMgLS0gbm90IHRoYXQgd2UKdWx0aW1hdGVseSB3aWxsIGVuZCB1cCBm cmVlemluZyB0aGVtLgoKQWxzbyByZW5hbWUgbG9jYWwgdmFyaWFibGUgaGludF9iaXRfZnBpIHRv IGRpZF90dXBsZV9oaW50X2ZwaS4gVGhpcwptYWtlcyBpdCBjbGVhciBpdCBpcyBhYm91dCB0dXBs ZSBoaW50cyBhbmQgbm90IHBhZ2UgaGludHMgYW5kIHRoYXQgaXQKaW5kaWNhdGVzIHNvbWV0aGlu ZyB0aGF0IGhhcHBlbmVkIGFuZCBub3Qgc29tZXRoaW5nIHRoYXQgY291bGQgaGFwcGVuLgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIHwgMjAgKysrKysrKysrKy0tLS0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDM5ODk2MmVkMWNiLi5kZjNlNjQz OTE3NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTQzLDcgKzQzLDcgQEAg dHlwZWRlZiBzdHJ1Y3QKIAkvKiB3aGV0aGVyIG9yIG5vdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQg TFBfVU5VU0VEIGR1cmluZyBwcnVuaW5nICovCiAJYm9vbAkJbWFya191bnVzZWRfbm93OwogCS8q IHdoZXRoZXIgdG8gYXR0ZW1wdCBmcmVlemluZyB0dXBsZXMgKi8KLQlib29sCQlmcmVlemU7CisJ Ym9vbAkJYXR0ZW1wdF9mcmVlemU7CiAJc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnM7CiAK IAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KQEAgLTQ0NSwxMyArNDQ1LDEzIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCWJvb2wJCWRvX2hpbnQ7CiAJdWludDgJCXZt ZmxhZ3MgPSAwOwogCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsKLQlib29sCQloaW50X2JpdF9mcGk7 CisJYm9vbAkJZGlkX3R1cGxlX2hpbnRfZnBpOwogCWludDY0CQlmcGlfYmVmb3JlID0gcGdXYWxV c2FnZS53YWxfZnBpOwogCiAJLyogQ29weSBwYXJhbWV0ZXJzIHRvIHByc3RhdGUgKi8KIAlwcnN0 YXRlLnZpc3Rlc3QgPSB2aXN0ZXN0OwogCXByc3RhdGUubWFya191bnVzZWRfbm93ID0gKG9wdGlv bnMgJiBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9XKSAhPSAwOwotCXByc3RhdGUuZnJl ZXplID0gKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFKSAhPSAwOworCXByc3RhdGUu YXR0ZW1wdF9mcmVlemUgPSAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUpICE9IDA7 CiAJcHJzdGF0ZS5jdXRvZmZzID0gY3V0b2ZmczsKIAogCS8qCkBAIC00NzMsNyArNDczLDcgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIsCiAKIAkvKiBpbml0aWFsaXplIHBhZ2UgZnJlZXppbmcgd29ya2luZyBzdGF0ZSAqLwogCXBy c3RhdGUucGFnZWZyei5mcmVlemVfcmVxdWlyZWQgPSBmYWxzZTsKLQlpZiAocHJzdGF0ZS5mcmVl emUpCisJaWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVlemUpCiAJewogCQlBc3NlcnQobmV3X3JlbGZy b3plbl94aWQgJiYgbmV3X3JlbG1pbl9teGlkKTsKIAkJcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBh Z2VSZWxmcm96ZW5YaWQgPSAqbmV3X3JlbGZyb3plbl94aWQ7CkBAIC01MjAsNyArNTIwLDcgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIsCiAJICogZnVuY3Rpb24sIHdoZW4gd2UgcmV0dXJuIHRoZSB2YWx1ZSB0byB0aGUgY2FsbGVy LCBzbyB0aGF0IHRoZSBjYWxsZXIKIAkgKiBkb2Vzbid0IHNldCB0aGUgVk0gYml0IGluY29ycmVj dGx5LgogCSAqLwotCWlmIChwcnN0YXRlLmZyZWV6ZSkKKwlpZiAocHJzdGF0ZS5hdHRlbXB0X2Zy ZWV6ZSkKIAl7CiAJCXByc3RhdGUuYWxsX3Zpc2libGUgPSB0cnVlOwogCQlwcnN0YXRlLmFsbF9m cm96ZW4gPSB0cnVlOwpAQCAtNjM0LDcgKzYzNCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIElmIGNoZWNrc3VtcyBh cmUgZW5hYmxlZCwgaGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKCkgbWF5IGhhdmUgY2F1c2Vk CiAJICogYW4gRlBJIHRvIGJlIGVtaXR0ZWQuCiAJICovCi0JaGludF9iaXRfZnBpID0gZnBpX2Jl Zm9yZSAhPSBwZ1dhbFVzYWdlLndhbF9mcGk7CisJZGlkX3R1cGxlX2hpbnRfZnBpID0gZnBpX2Jl Zm9yZSAhPSBwZ1dhbFVzYWdlLndhbF9mcGk7CiAKIAkvKgogCSAqIFByb2Nlc3MgSE9UIGNoYWlu cy4KQEAgLTc1MCw3ICs3NTAsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiBwbGFucyB3ZSBwcmVwYXJlZCwgb3Igbm90 LgogCSAqLwogCWRvX2ZyZWV6ZSA9IGZhbHNlOwotCWlmIChwcnN0YXRlLmZyZWV6ZSkKKwlpZiAo cHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJCWlmIChwcnN0YXRlLnBhZ2VmcnouZnJlZXpl X3JlcXVpcmVkKQogCQl7CkBAIC03ODMsNyArNzgzLDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJICovCiAJCQkJaWYg KFJlbGF0aW9uTmVlZHNXQUwocmVsYXRpb24pKQogCQkJCXsKLQkJCQkJaWYgKGhpbnRfYml0X2Zw aSkKKwkJCQkJaWYgKGRpZF90dXBsZV9oaW50X2ZwaSkKIAkJCQkJCWRvX2ZyZWV6ZSA9IHRydWU7 CiAJCQkJCWVsc2UgaWYgKGRvX3BydW5lKQogCQkJCQl7CkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZl ciwKIAlwcmVzdWx0LT5vbGRfdm1iaXRzID0gb2xkX3ZtYml0czsKIAlwcmVzdWx0LT5uZXdfdm1i aXRzID0gdm1mbGFnczsKIAotCWlmIChwcnN0YXRlLmZyZWV6ZSkKKwlpZiAocHJzdGF0ZS5hdHRl bXB0X2ZyZWV6ZSkKIAl7CiAJCWlmIChwcmVzdWx0LT5uZnJvemVuID4gMCkKIAkJewpAQCAtMTYy OCw3ICsxNjI4LDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdl IHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAl9CiAKIAkvKiBDb25zaWRl ciBmcmVlemluZyBhbnkgbm9ybWFsIHR1cGxlcyB3aGljaCB3aWxsIG5vdCBiZSByZW1vdmVkICov Ci0JaWYgKHByc3RhdGUtPmZyZWV6ZSkKKwlpZiAocHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCiAJ ewogCQlib29sCQl0b3RhbGx5X2Zyb3plbjsKIAotLSAKMi40My4wCgo= --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0008-Keep-all_frozen-updated-too-in-heap_page_prune_a.patch" Content-Disposition: attachment; filename="v12-0008-Keep-all_frozen-updated-too-in-heap_page_prune_a.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcicc7 RnJvbSA2ZWVjZjQ5YzYzMTM0YzU2MTA4MmRjNmE4NWZkYjM1ZDc1MmFlYTUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIzIEp1bCAyMDI1IDE2OjAxOjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMDgvMjBdIEtlZXAgYWxsX2Zyb3plbiB1cGRhdGVkIHRvbyBpbgogaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUKCldlIHByZXZpb3VzbHkgcmVsaWVkIG9uIG9ubHkgdXNpbmcgYWxs LXZpc2libGUgYW5kIGFsbC1mcm96ZW4gdG9nZXRoZXIKYnV0IGl0J3MgYmVzdCB0byBrZWVwIHRo ZW0gYm90aCB1cGRhdGVkLgoKRnV0dXJlIGNvbW1pdHMgd2lsbCBzZXBhcmF0ZSB1c2FnZSBvZiB0 aGVzZSBmaWVsZHMsIHNvIGl0IGlzIGJlc3Qgbm90IHRvCnJlbHkgb24gYWxsX3Zpc2libGUgZm9y IGFsbF9mcm96ZW4ncyB2YWxpZGl0eS4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYyB8IDE1ICsrKysrKy0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9u cygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4 IDU0YWYzMjk2YjkxLi5iYmQ4M2U0ZmNjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFw LmMKQEAgLTE0MywxMCArMTQzLDYgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkgKiB3aGV0aGVyIHRvIGZy ZWV6ZSB0aGUgcGFnZSBvciBub3QuICBUaGUgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4KIAkg KiB2YWx1ZXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciBhcmUgYWRqdXN0ZWQgdG8gaW5jbHVkZSBM UF9ERUFEIGl0ZW1zIGF0CiAJICogdGhlIGVuZC4KLQkgKgotCSAqIGFsbF9mcm96ZW4gc2hvdWxk IG9ubHkgYmUgY29uc2lkZXJlZCB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcyBhbHNvIHNldDsKLQkg KiB3ZSBkb24ndCBib3RoZXIgdG8gY2xlYXIgdGhlIGFsbF9mcm96ZW4gZmxhZyBldmVyeSB0aW1l IHdlIGNsZWFyIHRoZQotCSAqIGFsbF92aXNpYmxlIGZsYWcuCiAJICovCiAJYm9vbAkJYWxsX3Zp c2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKQEAgLTgzMCw2ICs4MjYsNyBAQCBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJICov CiAJfQogCisJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJzdGF0ZS5hbGxfdmlzaWJs ZSk7CiAJLyogQW55IGVycm9yIHdoaWxlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGlzIGNyaXRpY2Fs ICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAKQEAgLTE0NzQsNyArMTQ3MSw3IEBAIGhlYXBf cHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpw cnN0YXRlLCBPZmZzZXROdW1iCiAKIAkJCQlpZiAoIUhlYXBUdXBsZUhlYWRlclhtaW5Db21taXR0 ZWQoaHR1cCkpCiAJCQkJewotCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJ CQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAkJ CQkJYnJlYWs7CiAJCQkJfQogCkBAIC0xNDk2LDcgKzE0OTMsNyBAQCBoZWFwX3BydW5lX3JlY29y ZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zm c2V0TnVtYgogCQkJCUFzc2VydChwcnN0YXRlLT5jdXRvZmZzKTsKIAkJCQlpZiAoIVRyYW5zYWN0 aW9uSWRQcmVjZWRlcyh4bWluLCBwcnN0YXRlLT5jdXRvZmZzLT5PbGRlc3RYbWluKSkKIAkJCQl7 Ci0JCQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCQkJCXByc3RhdGUtPmFsbF92 aXNpYmxlID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwogCQkJCQlicmVhazsKIAkJCQl9 CiAKQEAgLTE1MDksNyArMTUwNiw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9u b3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAKIAkJY2Fz ZSBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRDoKIAkJCXByc3RhdGUtPnJlY2VudGx5X2RlYWRfdHVw bGVzKys7Ci0JCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJcHJzdGF0ZS0+YWxs X3Zpc2libGUgPSBwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAkJCS8qCiAJCQkgKiBU aGlzIHR1cGxlIHdpbGwgc29vbiBiZWNvbWUgREVBRC4gIFVwZGF0ZSB0aGUgaGludCBmaWVsZCBz bwpAQCAtMTUyOCw3ICsxNTI1LDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25v cm1hbChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCSAqIGFz c3VtcHRpb24gaXMgYSBiaXQgc2hha3ksIGJ1dCBpdCBpcyB3aGF0IGFjcXVpcmVfc2FtcGxlX3Jv d3MoKQogCQkJICogZG9lcywgc28gYmUgY29uc2lzdGVudC4KIAkJCSAqLwotCQkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS0+ YWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJCQkvKgogCQkJICogSWYgd2Ugd2FudGVkIHRvIG9wdGlt aXplIGZvciBhYm9ydHMsIHdlIG1pZ2h0IGNvbnNpZGVyIG1hcmtpbmcKQEAgLTE1NDYsNyArMTU0 Myw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQ cnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQkgKiB3aWxsIGNvbW1pdCBhbmQgdXBk YXRlIHRoZSBjb3VudGVycyBhZnRlciB3ZSByZXBvcnQuCiAJCQkgKi8KIAkJCXByc3RhdGUtPmxp dmVfdHVwbGVzKys7Ci0JCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJcHJzdGF0 ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAkJCS8qCiAJ CQkgKiBUaGlzIHR1cGxlIG1heSBzb29uIGJlY29tZSBERUFELiAgVXBkYXRlIHRoZSBoaW50IGZp ZWxkIHNvIHRoYXQKLS0gCjIuNDMuMAoK --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0009-Update-VM-in-pruneheap.c.patch" Content-Disposition: attachment; filename="v12-0009-Update-VM-in-pruneheap.c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcicg8 RnJvbSAyZTJmYzg0MGEzYWY2NWZlYzZlZWUyYThlYjJkZTMwODM5YThjYTUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDIgSnVuIDIwMjUgMTE6MDQ6MTQgLTA0MDAKU3ViamVjdDogW1BB VENIIHYxMiAwOS8yMF0gVXBkYXRlIFZNIGluIHBydW5laGVhcC5jCgpBcyBhIHN0ZXAgdG93YXJk IHVwZGF0aW5nIHRoZSBWTSBpbiB0aGUgc2FtZSBjcml0aWNhbCBzZWN0aW9uIGFuZCBXQUwKcmVj b3JkIGFzIHBydW5pbmcgYW5kIGZyZWV6aW5nIChkdXJpbmcgcGhhc2UgSSBvZiB2YWN1dW1pbmcp LCBmaXJzdCBtb3ZlCnRoZSBWTSB1cGRhdGUgKHN0aWxsIGluIGl0cyBvd24gY3JpdGljYWwgc2Vj dGlvbiBhbmQgV0FMIHJlY29yZCkgaW50bwpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLiBU aGlzIG1ha2VzIHJldmlldyBlYXNpZXIuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMgIHwgOTkgKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgOTggKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgfCAxNSArKystLQogMyBmaWxl cyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwgMTA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggYmJkODNlNGZjYzcuLjM5ODk2MmVkMWNiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMzY2LDcgKzM2Niw4IEBAIGlkZW50aWZ5 X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxhdGlvbiwKIAogLyoKICAqIFBydW5l IGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBv biB0aGUKLSAqIHNwZWNpZmllZCBwYWdlLgorICogc3BlY2lmaWVkIHBhZ2UuIElmIHRoZSBwYWdl J3MgdmlzaWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5nZWQsIHVwZGF0ZSBpdCBpbgorICogdGhlIFZN LgogICoKICAqIENhbGxlciBtdXN0IGhhdmUgcGluIGFuZCBidWZmZXIgY2xlYW51cCBsb2NrIG9u IHRoZSBwYWdlLiAgTm90ZSB0aGF0IHdlCiAgKiBkb24ndCB1cGRhdGUgdGhlIEZTTSBpbmZvcm1h dGlvbiBmb3IgcGFnZSBvbiBjYWxsZXIncyBiZWhhbGYuICBDYWxsZXIgbWlnaHQKQEAgLTQ0Miw2 ICs0NDMsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAlib29sCQlkb19mcmVlemU7CiAJYm9vbAkJZG9fcHJ1bmU7CiAJYm9v bAkJZG9faGludDsKKwl1aW50OAkJdm1mbGFncyA9IDA7CisJdWludDgJCW9sZF92bWJpdHMgPSAw OwogCWJvb2wJCWhpbnRfYml0X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uu d2FsX2ZwaTsKIApAQCAtOTQyLDcgKzk0NSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqCiAJICogTm93IHRoYXQgZnJl ZXppbmcgaGFzIGJlZW4gZmluYWxpemVkLCB1bnNldCBhbGxfdmlzaWJsZSBpZiB0aGVyZSBhcmUK IAkgKiBhbnkgTFBfREVBRCBpdGVtcyBvbiB0aGUgcGFnZS4gIEl0IG5lZWRzIHRvIHJlZmxlY3Qg dGhlIHByZXNlbnQgc3RhdGUKLQkgKiBvZiB0aGUgcGFnZSwgYXMgZXhwZWN0ZWQgYnkgb3VyIGNh bGxlci4KKwkgKiBvZiB0aGUgcGFnZSwgYXMgZXhwZWN0ZWQgZm9yIHVwZGF0aW5nIHRoZSB2aXNp YmlsaXR5IG1hcC4KIAkgKi8KIAlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmxw ZGVhZF9pdGVtcyA9PSAwKQogCXsKQEAgLTk1OCwzMSArOTYxLDkxIEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXByZXN1bHQt Pmhhc3R1cCA9IHByc3RhdGUuaGFzdHVwOwogCiAJLyoKLQkgKiBGb3IgY2FsbGVycyBwbGFubmlu ZyB0byB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpvbgotCSAq IGZvciB0aGF0IHJlY29yZCBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gIEhv d2V2ZXIsIGlmIHRoZQotCSAqIHBhZ2UgaXMgY29tcGxldGVseSBmcm96ZW4sIHRoZXJlIGNhbiBi ZSBubyBjb25mbGljdCBhbmQgdGhlCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBzaG91bGQgcmVt YWluIEludmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcwotCSAqIHRoZSBjYXNlIHRo YXQgd2UganVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSByZWNvcmQK LQkgKiBpbmNsdWRlZCB0aGUgY29uZmxpY3QgWElEIGFscmVhZHkgc28gdGhlIGNhbGxlciBkb2Vz bid0IG5lZWQgaXQuCisJICogSWYgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29u ZmxpY3QgaG9yaXpvbiBmb3IgdGhhdCByZWNvcmQKKwkgKiBtdXN0IGJlIHRoZSBuZXdlc3QgeG1p biBvbiB0aGUgcGFnZS4gIEhvd2V2ZXIsIGlmIHRoZSBwYWdlIGlzCisJICogY29tcGxldGVseSBm cm96ZW4sIHRoZXJlIGNhbiBiZSBubyBjb25mbGljdCBhbmQgdGhlIHZtX2NvbmZsaWN0X2hvcml6 b24KKwkgKiBzaG91bGQgcmVtYWluIEludmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRl cyB0aGUgY2FzZSB0aGF0IHdlCisJICoganVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBy dW5lLWZyZWV6ZSByZWNvcmQgaW5jbHVkZWQgdGhlCisJICogY29uZmxpY3QgWElEIGFscmVhZHkg c28gdGhlIFZNIHVwZGF0ZSByZWNvcmQgZG9lc24ndCBuZWVkIGl0LgogCSAqLwogCWlmIChwcmVz dWx0LT5hbGxfZnJvemVuKQogCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CiAJZWxzZQogCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0g cHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7CiAKLQlwcmVzdWx0LT5scGRlYWRfaXRlbXMg PSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKLQkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJy YXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCi0KIAkvKgotCSAqIENsZWFyIGFueSBWTSBjb3Jy dXB0aW9uLiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgZG9uZSBpbiBhIGNyaXRpY2FsCi0JICog c2VjdGlvbi4KKwkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24g aW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCisJICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25l eHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCisJICogYWxsX2Zyb3pl biB2YXJpYWJsZXMuCiAJICovCi0JcHJlc3VsdC0+dm1fY29ycnVwdGlvbiA9IGZhbHNlOwogCWlm IChvcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSkKLQkJcHJlc3VsdC0+dm1fY29y cnVwdGlvbiA9IGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwKLQkJCQkJ CQkJCQkJCQkJCQlibG9ja25vLCBidWZmZXIsIHBhZ2UsCi0JCQkJCQkJCQkJCQkJCQkJYmxrX2tu b3duX2F2LAotCQkJCQkJCQkJCQkJCQkJCXByc3RhdGUubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlcik7 CisJeworCQlpZiAoaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHJlbGF0aW9uLAorCQkJ CQkJCQkJCSAgIGJsb2Nrbm8sIGJ1ZmZlciwgcGFnZSwKKwkJCQkJCQkJCQkgICBibGtfa25vd25f YXYsCisJCQkJCQkJCQkJICAgcHJzdGF0ZS5scGRlYWRfaXRlbXMsIHZtYnVmZmVyKSkKKwkJewor CQkJLyogSWYgd2UgZml4IGNvcnJ1cHRpb24sIGRvbid0IHVwZGF0ZSB0aGUgVk0gZnVydGhlciAq LworCQl9CisKKwkJLyoKKwkJICogSWYgdGhlIHBhZ2UgaXNuJ3QgeWV0IG1hcmtlZCBhbGwtdmlz aWJsZSBpbiB0aGUgVk0gb3IgaXQgaXMgYW5kCisJCSAqIG5lZWRzIHRvIG1lIG1hcmtlZCBhbGwt ZnJvemVuLCB1cGRhdGUgdGhlIFZNLiBOb3RlIHRoYXQgYWxsX2Zyb3plbgorCQkgKiBpcyBvbmx5 IHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzIHRydWUsIHNvIHdlIG11c3QgY2hlY2sgYm90aAorCQkg KiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbi4KKwkJICovCisJCWVsc2UgaWYgKHByZXN1bHQt PmFsbF92aXNpYmxlICYmCisJCQkJICghYmxrX2tub3duX2F2IHx8CisJCQkJICAocHJlc3VsdC0+ YWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwgYmxvY2tubywgJnZtYnVmZmVy KSkpKQorCQl7CisJCQlBc3NlcnQocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7CisJCQl2bWZs YWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKKworCQkJLyoKKwkJCSAqIElmIHRoZSBw YWdlIGlzIGFsbC1mcm96ZW4sIHdlIGNhbiBwYXNzIEludmFsaWRUcmFuc2FjdGlvbklkIGFzCisJ CQkgKiBvdXIgY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBzdWZm aWNpZW50IHRvCisJCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2Vk IHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKKwkJCSAqIHdlcmUgZnJvemVuLgorCQkJICovCisJCQlp ZiAocHJlc3VsdC0+YWxsX2Zyb3plbikKKwkJCXsKKwkJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24pKTsKKwkJCQl2bWZsYWdzIHw9IFZJ U0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKwkJCX0KKworCQkJLyoKKwkJCSAqIEl0J3MgcG9zc2li bGUgZm9yIHRoZSBWTSBiaXQgdG8gYmUgY2xlYXIgYW5kIHRoZSBwYWdlLWxldmVsIGJpdAorCQkJ ICogdG8gYmUgc2V0IGlmIGNoZWNrc3VtcyBhcmUgbm90IGVuYWJsZWQuCisJCQkgKgorCQkJICog QW5kIGV2ZW4gaWYgd2UgYXJlIGp1c3QgcGxhbm5pbmcgdG8gdXBkYXRlIHRoZSBmcm96ZW4gYml0 IGluCisJCQkgKiB0aGUgVk0sIHdlIHNob3VsZG4ndCByZWx5IG9uIGFsbF92aXNpYmxlX2FjY29y ZGluZ190b192bSBhcyBhCisJCQkgKiBwcm94eSBmb3IgdGhlIHBhZ2UtbGV2ZWwgUERfQUxMX1ZJ U0lCTEUgYml0IGJlaW5nIHNldCwgc2luY2UgaXQKKwkJCSAqIG1pZ2h0IGhhdmUgYmVjb21lIHN0 YWxlLgorCQkJICoKKwkJCSAqIElmIHRoZSBoZWFwIHBhZ2UgaXMgYWxsLXZpc2libGUgYnV0IHRo ZSBWTSBiaXQgaXMgbm90IHNldCwgd2UKKwkJCSAqIGRvbid0IG5lZWQgdG8gZGlydHkgdGhlIGhl YXAgcGFnZS4gIEhvd2V2ZXIsIGlmIGNoZWNrc3VtcyBhcmUKKwkJCSAqIGVuYWJsZWQsIHdlIGRv IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGhlYXAgcGFnZSBpcyBkaXJ0aWVkCisJCQkgKiBi ZWZvcmUgcGFzc2luZyBpdCB0byB2aXNpYmlsaXR5bWFwX3NldCgpLCBiZWNhdXNlIGl0IG1heSBi ZQorCQkJICogbG9nZ2VkLgorCQkJICovCisJCQlpZiAoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkg fHwgWExvZ0hpbnRCaXRJc05lZWRlZCgpKQorCQkJeworCQkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBh Z2UpOworCQkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQkJfQorCisJCQlvbGRfdm1iaXRz ID0gdmlzaWJpbGl0eW1hcF9zZXQocmVsYXRpb24sIGJsb2Nrbm8sIGJ1ZmZlciwgSW52YWxpZFhM b2dSZWNQdHIsCisJCQkJCQkJCQkJICAgdm1idWZmZXIsIHByZXN1bHQtPnZtX2NvbmZsaWN0X2hv cml6b24sCisJCQkJCQkJCQkJICAgdm1mbGFncyk7CisJCX0KKwl9CisKKwlwcmVzdWx0LT5scGRl YWRfaXRlbXMgPSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKKwkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9m ZnNldHMgYXJyYXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCisKKwlwcmVzdWx0LT5vbGRfdm1i aXRzID0gb2xkX3ZtYml0czsKKwlwcmVzdWx0LT5uZXdfdm1iaXRzID0gdm1mbGFnczsKKwogCWlm IChwcnN0YXRlLmZyZWV6ZSkKIAl7CiAJCWlmIChwcmVzdWx0LT5uZnJvemVuID4gMCkKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA1NzRlNDE1YjBlMC4uOTQ5MjQyMzE0MWUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE5NDksNyArMTk0OSw4IEBA IGNtcE9mZnNldE51bWJlcnMoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKICAqIHZtYnVm ZmVyIGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgVk0gYmxvY2sgd2l0aCB2aXNpYmlsaXR5 IGluZm9ybWF0aW9uCiAgKiBmb3IgdGhlIGhlYXAgYmxvY2ssIGJsa25vLiBhbGxfdmlzaWJsZV9h Y2NvcmRpbmdfdG9fdm0gaXMgdGhlIHNhdmVkCiAgKiB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUg aGVhcCBibG9jayBsb29rZWQgdXAgZWFybGllciBieSB0aGUgY2FsbGVyLiBXZQotICogd29uJ3Qg cmVseSBlbnRpcmVseSBvbiB0aGlzIHN0YXR1cywgYXMgaXQgbWF5IGJlIG91dCBvZiBkYXRlLgor ICogd29uJ3QgcmVseSBlbnRpcmVseSBvbiB0aGlzIHN0YXR1cywgYXMgaXQgbWF5IGJlIG91dCBv ZiBkYXRlLiBUaGVzZSB3aWxsIGJlCisgKiBwYXNzZWQgb24gdG8gaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoKSB0byB1c2Ugd2hpbGUgc2V0dGluZyB0aGUgVk0uCiAgKgogICogKmhhc19scGRl YWRfaXRlbXMgaXMgc2V0IHRvIHRydWUgb3IgZmFsc2UgZGVwZW5kaW5nIG9uIHdoZXRoZXIsIHVw b24gcmV0dXJuCiAgKiBmcm9tIHRoaXMgZnVuY3Rpb24sIGFueSBMUF9ERUFEIGl0ZW1zIGFyZSBz dGlsbCBwcmVzZW50IG9uIHRoZSBwYWdlLgpAQCAtMTk3OCw2ICsxOTc5LDcgQEAgbGF6eV9zY2Fu X3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAogCS8qCiAJICogUHJ1bmUgYWxsIEhPVC11cGRh dGUgY2hhaW5zIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoaXMgcGFnZS4KKwkg KiBUaGVuLCBpZiB0aGUgcGFnZSdzIHZpc2liaWxpdHkgc3RhdHVzIGhhcyBjaGFuZ2VkLCB1cGRh dGUgdGhlIFZNLgogCSAqCiAJICogSWYgdGhlIHJlbGF0aW9uIGhhcyBubyBpbmRleGVzLCB3ZSBj YW4gaW1tZWRpYXRlbHkgbWFyayB3b3VsZC1iZSBkZWFkCiAJICogaXRlbXMgTFBfVU5VU0VELgpA QCAtMTk4NiwxMCArMTk4OCw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAJICogcHJlc3VsdC5uZGVsZXRlZC4gIEl0IHNob3VsZCBub3QgYmUgY29uZnVzZWQgd2l0aCBw cmVzdWx0LmxwZGVhZF9pdGVtczsKIAkgKiBwcmVzdWx0LmxwZGVhZF9pdGVtcydzIGZpbmFsIHZh bHVlIGNhbiBiZSB0aG91Z2h0IG9mIGFzIHRoZSBudW1iZXIgb2YKIAkgKiB0dXBsZXMgdGhhdCB3 ZXJlIGRlbGV0ZWQgZnJvbSBpbmRleGVzLgotCSAqCi0JICogV2Ugd2lsbCB1cGRhdGUgdGhlIFZN IGFmdGVyIGNvbGxlY3RpbmcgTFBfREVBRCBpdGVtcyBhbmQgZnJlZXppbmcKLQkgKiB0dXBsZXMu IFBydW5pbmcgd2lsbCBoYXZlIGRldGVybWluZWQgd2hldGhlciBvciBub3QgdGhlIHBhZ2UgaXMK LQkgKiBhbGwtdmlzaWJsZS4KIAkgKi8KIAlwcnVuZV9vcHRpb25zID0gSEVBUF9QQUdFX1BSVU5F X0ZSRUVaRSB8IEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk07CiAJaWYgKHZhY3JlbC0+bmluZGV4 ZXMgPT0gMCkKQEAgLTIwODEsODggKzIwNzksMjYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3Rh dGUgKnZhY3JlbCwKIAlBc3NlcnQoIXByZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVh ZF9pdGVtcykpOwogCiAJLyoKLQkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQg YmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCi0JICogb2YgbGFzdCBoZWFwX3Zh Y19zY2FuX25leHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICog YWxsX2Zyb3plbiB2YXJpYWJsZXMuCisJICogRm9yIHRoZSBwdXJwb3NlcyBvZiBsb2dnaW5nLCBj b3VudCB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSB3YXMgbmV3bHkKKwkgKiBzZXQgYWxsLXZpc2li bGUgYW5kLCBwb3RlbnRpYWxseSwgYWxsLWZyb3plbi4KIAkgKi8KLQlpZiAocHJlc3VsdC52bV9j b3JydXB0aW9uKQorCWlmICgocHJlc3VsdC5vbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRSkgPT0gMCAmJgorCQkocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9B TExfVklTSUJMRSkgIT0gMCkKIAl7Ci0JCS8qIERvbid0IHVwZGF0ZSB0aGUgVk0gaWYgd2UganVz dCBjbGVhcmVkIGNvcnJ1cHRpb24gaW4gaXQgKi8KLQl9Ci0KLQkvKgotCSAqIElmIHRoZSBwYWdl IGlzbid0IHlldCBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIFZNIG9yIGl0IGlzIGFuZCBuZWVk cwotCSAqIHRvIG1lIG1hcmtlZCBhbGwtZnJvemVuLCB1cGRhdGUgdGhlIFZNLiBOb3RlIHRoYXQg YWxsX2Zyb3plbiBpcyBvbmx5Ci0JICogdmFsaWQgaWYgYWxsX3Zpc2libGUgaXMgdHJ1ZSwgc28g d2UgbXVzdCBjaGVjayBib3RoIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4uCi0JICov Ci0JZWxzZSBpZiAocHJlc3VsdC5hbGxfdmlzaWJsZSAmJgotCQkJICghYWxsX3Zpc2libGVfYWNj b3JkaW5nX3RvX3ZtIHx8Ci0JCQkgIChwcmVzdWx0LmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9GUk9a RU4odmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpKSkpCi0JewotCQl1aW50OAkJb2xkX3Zt Yml0czsKLQkJdWludDgJCWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKLQotCQkv KgotCQkgKiBJZiB0aGUgcGFnZSBpcyBhbGwtZnJvemVuLCB3ZSBjYW4gcGFzcyBJbnZhbGlkVHJh bnNhY3Rpb25JZCBhcyBvdXIKLQkJICogY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hvdENvbmZs aWN0SG9yaXpvbiBzdWZmaWNpZW50IHRvIG1ha2UKLQkJICogZXZlcnl0aGluZyBzYWZlIGZvciBS RURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxlcyB3ZXJlCi0JCSAqIGZyb3plbi4K LQkJICovCi0JCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0JCXsKLQkJCUFzc2VydCghVHJhbnNh Y3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7Ci0JCQlmbGFncyB8 PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47Ci0JCX0KLQotCQkvKgotCQkgKiBJdCBzaG91bGQg bmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBpcyBzZXQKLQkJ ICogd2hpbGUgdGhlIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLCBidXQgdGhlIHJldmVyc2UgaXMg YWxsb3dlZCAoaWYKLQkJICogY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZCkuICBSZWdhcmRsZXNz LCBzZXQgYm90aCBiaXRzIHNvIHRoYXQgd2UKLQkJICogZ2V0IGJhY2sgaW4gc3luYy4KLQkJICoK LQkJICogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBu b3Qgc2V0LCB3ZSBkb24ndAotCQkgKiBuZWVkIHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dl dmVyLCBpZiBjaGVja3N1bXMgYXJlIGVuYWJsZWQsIHdlCi0JCSAqIGRvIG5lZWQgdG8gbWFrZSBz dXJlIHRoYXQgdGhlIGhlYXAgcGFnZSBpcyBkaXJ0aWVkIGJlZm9yZSBwYXNzaW5nCi0JCSAqIGl0 IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlIGxvZ2dlZC4KLQkJICov Ci0JCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSB8fCBYTG9nSGludEJpdElzTmVlZGVkKCkp Ci0JCXsKLQkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJTWFya0J1ZmZlckRpcnR5KGJ1 Zik7Ci0JCX0KLQotCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWws IGJsa25vLCBidWYsCi0JCQkJCQkJCQkgICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkJCSAg IHZtYnVmZmVyLCBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24sCi0JCQkJCQkJCQkgICBmbGFn cyk7Ci0KLQkJLyoKLQkJICogRXZlbiBpZiB3ZSBhcmUgb25seSBzZXR0aW5nIHRoZSBhbGwtZnJv emVuIGJpdCwgdGhlcmUgaXMgYSBzbWFsbAotCQkgKiBjaGFuY2UgdGhhdCB0aGUgVk0gd2FzIG1v ZGlmaWVkIHNvbWV0aW1lIGJldHdlZW4gc2V0dGluZwotCQkgKiBhbGxfdmlzaWJsZV9hY2NvcmRp bmdfdG9fdm0gYW5kIGNoZWNraW5nIHRoZSB2aXNpYmlsaXR5IGR1cmluZwotCQkgKiBwcnVuaW5n LiBDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIG9sZF92bWJpdHMgdG8gZW5zdXJlIHRoZQotCQkg KiB2aXNpYmlsaXR5IG1hcCBjb3VudGVycyB1c2VkIGZvciBsb2dnaW5nIGFyZSBhY2N1cmF0ZS4K LQkJICoKLQkJICogSWYgdGhlIHBhZ2Ugd2Fzbid0IGFscmVhZHkgc2V0IGFsbC12aXNpYmxlIGFu ZC9vciBhbGwtZnJvemVuIGluIHRoZQotCQkgKiBWTSwgY291bnQgaXQgYXMgbmV3bHkgc2V0IGZv ciBsb2dnaW5nLgotCQkgKi8KLQkJaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRSkgPT0gMCkKLQkJewotCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOwot CQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJCXsKLQkJCQl2YWNyZWwtPnZtX25ld192aXNp YmxlX2Zyb3plbl9wYWdlcysrOwotCQkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JCQl9Ci0J CX0KLQkJZWxzZSBpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pID09 IDAgJiYKLQkJCQkgcHJlc3VsdC5hbGxfZnJvemVuKQorCQl2YWNyZWwtPnZtX25ld192aXNpYmxl X3BhZ2VzKys7CisJCWlmICgocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOKSAhPSAwKQogCQl7Ci0JCQl2YWNyZWwtPnZtX25ld19mcm96ZW5fcGFnZXMrKzsKKwkJ CXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7CiAJCQkqdm1fcGFnZV9mcm96 ZW4gPSB0cnVlOwogCQl9CiAJfQorCWVsc2UgaWYgKChwcmVzdWx0Lm9sZF92bWJpdHMgJiBWSVNJ QklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYKKwkJCSAocHJlc3VsdC5uZXdfdm1iaXRzICYg VklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSAhPSAwKQorCXsKKwkJQXNzZXJ0KChwcmVzdWx0Lm5l d192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwKTsKKwkJdmFjcmVsLT52 bV9uZXdfZnJvemVuX3BhZ2VzKys7CisJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7CisJfQogCiAJ cmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMGM3ZWI1ZTQ2 ZjQuLmI4NTY0ODQ1NmU5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0yMzUsMjAgKzIzNSwyMSBAQCB0 eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWludAkJCXJlY2VudGx5X2RlYWRfdHVw bGVzOwogCiAJLyoKLQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBpbmRpY2F0ZSBpZiB0 aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KLQkgKiBiaXRzIGluIHRoZSB2aXNpYmlsaXR5 IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UsIGFmdGVyIHBydW5pbmcuCisJICogYWxsX3Zp c2libGUgYW5kIGFsbF9mcm96ZW4gaW5kaWNhdGUgdGhlIHN0YXR1cyBvZiB0aGUgcGFnZSBhcyBy ZWZsZWN0ZWQKKwkgKiBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0ZXIgcHJ1bmluZywgZnJlZXpp bmcsIGFuZCBzZXR0aW5nIGFueSBwYWdlcworCSAqIGFsbC12aXNpYmxlIGluIHRoZSB2aXNpYmls aXR5IG1hcC4KIAkgKgotCSAqIHZtX2NvbmZsaWN0X2hvcml6b24gaXMgdGhlIG5ld2VzdCB4bWlu IG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiAgVGhlCi0JICogY2FsbGVyIGNhbiB1c2UgaXQg YXMgdGhlIGNvbmZsaWN0IGhvcml6b24gd2hlbiBzZXR0aW5nIHRoZSBWTSBiaXRzLiAgSXQKLQkg KiBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzIChuZnJvemVuID4gMCksIGFu ZCBhbGxfZnJvemVuIGlzCi0JICogdHJ1ZS4KKwkgKiB2bV9jb25mbGljdF9ob3Jpem9uIGlzIHRo ZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZQorCSAqIChvbGRlciB0aGFu IE9sZGVzdFhtaW4pLiAgSXQgd2lsbCBvbmx5IGJlIHZhbGlkIGlmIHdlIGRpZCBub3Qgc2V0IHRo ZQorCSAqIHBhZ2UgYWxsLWZyb3plbiBpbiB0aGUgVk0uCiAJICoKIAkgKiBUaGVzZSBhcmUgb25s eSBzZXQgaWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuCiAJICovCiAJYm9v bAkJYWxsX3Zpc2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKIAlUcmFuc2FjdGlvbklkIHZtX2Nv bmZsaWN0X2hvcml6b247Ci0JYm9vbAkJdm1fY29ycnVwdGlvbjsKKwl1aW50OAkJb2xkX3ZtYml0 czsKKwl1aW50OAkJbmV3X3ZtYml0czsKIAogCS8qCiAJICogV2hldGhlciBvciBub3QgdGhlIHBh Z2UgbWFrZXMgcmVsIHRydW5jYXRpb24gdW5zYWZlLiAgVGhpcyBpcyBzZXQgdG8KLS0gCjIuNDMu MAoK --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0011-Eliminate-xl_heap_visible-from-vacuum-phase-I-pr.patch" Content-Disposition: attachment; filename="v12-0011-Eliminate-xl_heap_visible-from-vacuum-phase-I-pr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcicn10 RnJvbSA3MzQxODkwNmI1YWNhNTUzZGE1NDVkNzdjMWYwZDI5Y2QzZDJmMGI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQxOjAwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMTEvMjBdIEVsaW1pbmF0ZSB4bF9oZWFwX3Zpc2libGUgZnJvbSB2YWN1dW0gcGhh c2UgSQogcHJ1bmUvZnJlZXplCgpJbnN0ZWFkIG9mIGVtaXR0aW5nIGEgc2VwYXJhdGUgV0FMIHJl Y29yZCBmb3IgZXZlcnkgYmxvY2sgcmVuZGVyZWQKYWxsLXZpc2libGUvZnJvemVuIGJ5IHZhY3V1 bSdzIHBoYXNlIEksIGluY2x1ZGUgdGhlIGNoYW5nZXMgdG8gdGhlIFZNIGluCnRoZSB4bF9oZWFw X3BydW5lIHJlY29yZCBhbHJlYWR5IGVtaXR0ZWQuCgpUaGlzIGlzIG9ubHkgZW5hYmxlZCBmb3Ig dmFjdXVtJ3MgcHJ1bmUvZnJlZXplIHdvcmssIG5vdCBmb3Igb24tYWNjZXNzCnBydW5pbmcuCi0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwgNDU5ICsrKysrKysrKysr KysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwg IDMwIC0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgfCAgMTUgKy0KIDMg ZmlsZXMgY2hhbmdlZCwgMjgyIGluc2VydGlvbnMoKyksIDIyMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IGRmM2U2NDM5MTc2Li5kY2U5MDI1ZDI2OCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTQ0LDYgKzQ0LDEzIEBAIHR5cGVk ZWYgc3RydWN0CiAJYm9vbAkJbWFya191bnVzZWRfbm93OwogCS8qIHdoZXRoZXIgdG8gYXR0ZW1w dCBmcmVlemluZyB0dXBsZXMgKi8KIAlib29sCQlhdHRlbXB0X2ZyZWV6ZTsKKworCS8qCisJICog V2hldGhlciBvciBub3QgdG8gY29uc2lkZXIgdXBkYXRpbmcgdGhlIFZNLiBUaGVyZSBpcyBzb21l IGJvb2trZWVwaW5nCisJICogdGhhdCBtdXN0IGJlIG1haW50YWluZWQgaWYgd2Ugd291bGQgbGlr ZSB0byB1cGRhdGUgdGhlIFZNLgorCSAqLworCWJvb2wJCWNvbnNpZGVyX3VwZGF0ZV92bTsKKwog CXN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzOwogCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDgsOCArMTE1LDkgQEAg dHlwZWRlZiBzdHJ1Y3QKIAkgKgogCSAqIFRoZXNlIGZpZWxkcyBhcmUgbm90IHVzZWQgYnkgcHJ1 bmluZyBpdHNlbGYgZm9yIHRoZSBtb3N0IHBhcnQsIGJ1dCBhcmUKIAkgKiB1c2VkIHRvIGNvbGxl Y3QgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCB3YXMgcHJ1bmVkIGFuZCB3aGF0IHN0YXRlIHRoZQot CSAqIHBhZ2UgaXMgaW4gYWZ0ZXIgcHJ1bmluZywgZm9yIHRoZSBiZW5lZml0IG9mIHRoZSBjYWxs ZXIuICBUaGV5IGFyZQotCSAqIGNvcGllZCB0byB0aGUgY2FsbGVyJ3MgUHJ1bmVGcmVlemVSZXN1 bHQgYXQgdGhlIGVuZC4KKwkgKiBwYWdlIGlzIGluIGFmdGVyIHBydW5pbmcgdG8gdXNlIHdoZW4g dXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwIGFuZAorCSAqIGZvciB0aGUgYmVuZWZpdCBvZiB0 aGUgY2FsbGVyLiAgVGhleSBhcmUgY29waWVkIHRvIHRoZSBjYWxsZXIncworCSAqIFBydW5lRnJl ZXplUmVzdWx0IGF0IHRoZSBlbmQuCiAJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCSAqLwogCkBAIC0xMzgsMTEgKzE0NiwxMCBAQCB0 eXBlZGVmIHN0cnVjdAogCSAqIGJpdHMuICBJdCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNv bWUgdHVwbGVzLCBhbmQgYWxsX2Zyb3plbiBpcwogCSAqIHRydWUuCiAJICoKLQkgKiBOT1RFOiBh bGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBpbmNsdWRlIExQX0RFQUQgaXRlbXMuICBU aGF0J3MKLQkgKiBjb252ZW5pZW50IGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLCB0 byB1c2UgdGhlbSB0byBkZWNpZGUKLQkgKiB3aGV0aGVyIHRvIGZyZWV6ZSB0aGUgcGFnZSBvciBu b3QuICBUaGUgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4KLQkgKiB2YWx1ZXMgcmV0dXJuZWQg dG8gdGhlIGNhbGxlciBhcmUgYWRqdXN0ZWQgdG8gaW5jbHVkZSBMUF9ERUFEIGl0ZW1zIGF0Ci0J ICogdGhlIGVuZC4KKwkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBp bmNsdWRlIExQX0RFQUQgaXRlbXMgdW50aWwKKwkgKiBkaXJlY3RseSBiZWZvcmUgdXBkYXRpbmcg dGhlIFZNLiBXZSBpZ25vcmUgTFBfREVBRCBpdGVtcyB3aGVuIGRlY2lkaW5nCisJICogd2hldGhl ciBvciBub3QgdG8gb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplIGFuZCB3aGVuIGRldGVybWluaW5n IHRoZQorCSAqIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gcmVxdWlyZWQgd2hlbiBmcmVlemlu ZyB0dXBsZXMuCiAJICovCiAJYm9vbAkJYWxsX3Zpc2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsK QEAgLTM3NywxMiArMzg0LDE1IEBAIGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxh dGlvbiByZWxhdGlvbiwKICAqIElmIHRoZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0 LCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcyBpZiBpdCdzCiAgKiByZXF1aXJlZCBpbiBvcmRl ciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJlbG1pbm14aWQsIG9yIGlmIGl0J3MKICAqIGNv bnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBk byBzbyBub3cuICBUaGUKLSAqICdjdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94 aWQnIGFuZCAnbmV3X3JlbG1pbl9teGlkJyBhcmd1bWVudHMKLSAqIGFyZSByZXF1aXJlZCB3aGVu IGZyZWV6aW5nLiAgV2hlbiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LCB3ZSBhbHNv Ci0gKiBzZXQgcHJlc3VsdC0+YWxsX3Zpc2libGUgYW5kIHByZXN1bHQtPmFsbF9mcm96ZW4gb24g ZXhpdCwgdG8gaW5kaWNhdGUgaWYKLSAqIHRoZSBWTSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFy ZSBhbHdheXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlCi0gKiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRp b24gaXMgbm90IHNldCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkgY2FsbGVycwotICogdGhh dCBhbHNvIGZyZWV6ZSBuZWVkIHRoYXQgaW5mb3JtYXRpb24uCisgKiAnY3V0b2ZmcycsICduZXdf cmVsZnJvemVuX3hpZCcgYW5kICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cyBhcmUgcmVxdWly ZWQKKyAqIHdoZW4gZnJlZXppbmcuCisgKgorICogSWYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9W TSBpcyBzZXQgYW5kIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgcGFnZQorICogaGFzIGNo YW5nZWQsIHdlIHdpbGwgdXBkYXRlIHRoZSBWTSBhdCB0aGUgc2FtZSB0aW1lIGFzIHBydW5pbmcg YW5kIGZyZWV6aW5nCisgKiB0aGUgaGVhcCBwYWdlLiBXZSB3aWxsIGFsc28gdXBkYXRlIHByZXN1 bHQtPm9sZF92bWJpdHMgYW5kCisgKiBwcmVzdWx0LT5uZXdfdm1iaXRzIHdpdGggdGhlIHN0YXRl IG9mIHRoZSBWTSBiZWZvcmUgYW5kIGFmdGVyIHVwZGF0aW5nIGl0CisgKiBmb3IgdGhlIGNhbGxl ciB0byB1c2UgaW4gYm9va2tlZXBpbmcuIE5vdGUgdGhhdCBuZXcgYW5kIG9sZF92bWJpdHMgd2ls bCBiZQorICogMCBpZiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGlzIG5vdCBzZXQuCiAgKgog ICogYmxrX2tub3duX2F2IGlzIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVhcCBibG9j ayBhcyBvZiB0aGUgbGFzdCBjYWxsCiAgKiB0byBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2so KS4gdm1idWZmZXIgaXMgdGhlIGJ1ZmZlciB0aGF0IG1heSBhbHJlYWR5CkBAIC0zOTgsNiArNDA4 LDggQEAgaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAog ICogICBGUkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFu ZCB3aWxsIHJldHVybgogICogICAnYWxsX3Zpc2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3MgdG8g dGhlIGNhbGxlci4KICAqCisgKiAgIFVQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIHNl dCB0aGUgcGFnZSdzIHN0YXR1cyBpbiB0aGUgVk0uCisgKgogICogY3V0b2ZmcyBjb250YWlucyB0 aGUgZnJlZXplIGN1dG9mZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0aGUgYmVnaW5uaW5n CiAgKiBvZiB2YWN1dW1pbmcgdGhlIHJlbGF0aW9uLiAgUmVxdWlyZWQgaWYgSEVBUF9QUlVORV9G UkVFWkUgb3B0aW9uIGlzIHNldC4KICAqIGN1dG9mZnMtPk9sZGVzdFhtaW4gaXMgYWxzbyB1c2Vk IHRvIGRldGVybWluZSBpZiBkZWFkIHR1cGxlcyBhcmUKQEAgLTQ0MiwxOCArNDU0LDI0IEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LAogCUhlYXBUdXBsZURhdGEgdHVwOwogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlkb19wcnVu ZTsKLQlib29sCQlkb19oaW50OworCWJvb2wJCWRvX2hpbnRfZnVsbF9vcl9wcnVuYWJsZTsKKwli b29sCQlkb19zZXRfdm07CiAJdWludDgJCXZtZmxhZ3MgPSAwOwogCXVpbnQ4CQlvbGRfdm1iaXRz ID0gMDsKIAlib29sCQlkaWRfdHVwbGVfaGludF9mcGk7CiAJaW50NjQJCWZwaV9iZWZvcmUgPSBw Z1dhbFVzYWdlLndhbF9mcGk7CisJYm9vbAkJYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCA9IGZh bHNlOworCWJvb2wJCXNldF9wZF9hbGxfdmlzaWJsZSA9IGZhbHNlOwogCiAJLyogQ29weSBwYXJh bWV0ZXJzIHRvIHByc3RhdGUgKi8KIAlwcnN0YXRlLnZpc3Rlc3QgPSB2aXN0ZXN0OwogCXByc3Rh dGUubWFya191bnVzZWRfbm93ID0gKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVT RURfTk9XKSAhPSAwOwogCXByc3RhdGUuYXR0ZW1wdF9mcmVlemUgPSAob3B0aW9ucyAmIEhFQVBf UEFHRV9QUlVORV9GUkVFWkUpICE9IDA7CisJcHJzdGF0ZS5jb25zaWRlcl91cGRhdGVfdm0gPSAo b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0pICE9IDA7CiAJcHJzdGF0ZS5jdXRv ZmZzID0gY3V0b2ZmczsKIAorCUFzc2VydCghcHJzdGF0ZS5jb25zaWRlcl91cGRhdGVfdm0gfHwg dm1idWZmZXIpOworCiAJLyoKIAkgKiBPdXIgc3RyYXRlZ3kgaXMgdG8gc2NhbiB0aGUgcGFnZSBh bmQgbWFrZSBsaXN0cyBvZiBpdGVtcyB0byBjaGFuZ2UsCiAJICogdGhlbiBhcHBseSB0aGUgY2hh bmdlcyB3aXRoaW4gYSBjcml0aWNhbCBzZWN0aW9uLiAgVGhpcyBrZWVwcyBhcyBtdWNoCkBAIC00 OTgsNTAgKzUxNiw1NyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlwcnN0YXRlLmRlYWRvZmZzZXRzID0gcHJlc3VsdC0+ZGVh ZG9mZnNldHM7CiAKIAkvKgotCSAqIENhbGxlciBtYXkgdXBkYXRlIHRoZSBWTSBhZnRlciB3ZSdy ZSBkb25lLiAgV2UgY2FuIGtlZXAgdHJhY2sgb2YKLQkgKiB3aGV0aGVyIHRoZSBwYWdlIHdpbGwg YmUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYWZ0ZXIgcHJ1bmluZyBhbmQKLQkgKiBmcmVl emluZyB0byBoZWxwIHRoZSBjYWxsZXIgdG8gZG8gdGhhdC4KKwkgKiBLZWVwIHRyYWNrIG9mIHdo ZXRoZXIgb3Igbm90IHRoZSBwYWdlIHdpbGwgYmUgYWxsLXZpc2libGUgYW5kCisJICogYWxsLWZy b3plbiBmb3IgdXNlIGluIG9wcG9ydHVuaXN0aWMgZnJlZXppbmcgYW5kIHRvIHVwZGF0ZSB0aGUg Vk0gaWYKKwkgKiB0aGUgY2FsbGVyIHJlcXVlc3RzIGl0LgorCSAqCisJICogQ3VycmVudGx5LCBv bmx5IFZBQ1VVTSBhdHRlbXB0cyBmcmVlemluZyBhbmQgc2V0dGluZyB0aGUgVk0gYml0cy4gQnV0 CisJICogb3RoZXIgY2FsbGVycyBjb3VsZCBkbyBlaXRoZXIgb25lLiBUaGUgdmlzaWJpbGl0eSBi b29ra2VlcGluZyBpcworCSAqIHJlcXVpcmVkIGZvciBvcHBvcnR1bmlzdGljIGZyZWV6aW5nIChp biBhZGRpdGlvbiB0byBzZXR0aW5nIHRoZSBWTQorCSAqIGJpdHMpIGJlY2F1c2Ugd2Ugb25seSBj b25zaWRlciBvcHBvcnR1bmlzdGljYWxseSBmcmVlemluZyB0dXBsZXMgaWYgdGhlCisJICogd2hv bGUgcGFnZSB3b3VsZCBiZWNvbWUgYWxsLWZyb3plbiBvciBpZiB0aGUgd2hvbGUgcGFnZSB3aWxs IGJlIGZyb3plbgorCSAqIGV4Y2VwdCBmb3IgZGVhZCB0dXBsZXMgdGhhdCB3aWxsIGJlIHJlbW92 ZWQgYnkgdmFjdXVtLgogCSAqCi0JICogQ3VycmVudGx5LCBvbmx5IFZBQ1VVTSBzZXRzIHRoZSBW TSBiaXRzLiAgVG8gc2F2ZSB0aGUgZWZmb3J0LCBvbmx5IGRvCi0JICogdGhlIGJvb2trZWVwaW5n IGlmIHRoZSBjYWxsZXIgbmVlZHMgaXQuICBDdXJyZW50bHksIHRoYXQncyB0aWVkIHRvCi0JICog SEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwgYnV0IGl0IGNvdWxkIGJlIGEgc2VwYXJhdGUgZmxhZyBp ZiB5b3Ugd2FudGVkCi0JICogdG8gdXBkYXRlIHRoZSBWTSBiaXRzIHdpdGhvdXQgYWxzbyBmcmVl emluZyBvciBmcmVlemUgd2l0aG91dCBhbHNvCi0JICogc2V0dGluZyB0aGUgVk0gYml0cy4KKwkg KiBJZiBvbmx5IHVwZGF0aW5nIHRoZSBWTSwgd2UgbXVzdCBpbml0aWFsaXplIGFsbF9mcm96ZW4g dG8gZmFsc2UsIGFzCisJICogaGVhcF9wcmVwYXJlX2ZyZWV6ZV90dXBsZSgpIHdpbGwgbm90IGJl IGNhbGxlZCBmb3IgZWFjaCB0dXBsZSBvbiB0aGUKKwkgKiBwYWdlIGFuZCB3ZSB3aWxsIG5vdCBl bmQgdXAgY29ycmVjdGx5IHNldHRpbmcgaXQgdG8gZmFsc2UgbGF0ZXIuCiAJICoKLQkgKiBJbiBh ZGRpdGlvbiB0byB0ZWxsaW5nIHRoZSBjYWxsZXIgd2hldGhlciBpdCBjYW4gc2V0IHRoZSBWTSBi aXQsIHdlCi0JICogYWxzbyB1c2UgJ2FsbF92aXNpYmxlJyBhbmQgJ2FsbF9mcm96ZW4nIGZvciBv dXIgb3duIGRlY2lzaW9uLW1ha2luZy4gSWYKLQkgKiB0aGUgd2hvbGUgcGFnZSB3b3VsZCBiZWNv bWUgZnJvemVuLCB3ZSBjb25zaWRlciBvcHBvcnR1bmlzdGljYWxseQotCSAqIGZyZWV6aW5nIHR1 cGxlcy4gIFdlIHdpbGwgbm90IGJlIGFibGUgdG8gZnJlZXplIHRoZSB3aG9sZSBwYWdlIGlmIHRo ZXJlCi0JICogYXJlIHR1cGxlcyBwcmVzZW50IHRoYXQgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5 b25lIG9yIGlmIHRoZXJlIGFyZQotCSAqIGRlYWQgdHVwbGVzIHdoaWNoIGFyZSBub3QgeWV0IHJl bW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQgdHVwbGVzIHdoaWNoCi0JICogd2lsbCBiZSByZW1vdmVk IGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNob3VsZCBub3QgcHJlY2x1ZGUgdXMgZnJvbQotCSAq IG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBkbyBub3Qg Y2xlYXIKLQkgKiBhbGxfdmlzaWJsZSB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiAgV2UgZml4 IHRoYXQgYXQgdGhlIGVuZCBvZiB0aGUKLQkgKiBmdW5jdGlvbiwgd2hlbiB3ZSByZXR1cm4gdGhl IHZhbHVlIHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxlcgotCSAqIGRvZXNuJ3Qgc2V0 IHRoZSBWTSBiaXQgaW5jb3JyZWN0bHkuCisJICogRGVhZCB0dXBsZXMgd2hpY2ggd2lsbCBiZSBy ZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNob3VsZCBub3QKKwkgKiBwcmVjbHVkZSB1 cyBmcm9tIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLCBzbyB3ZSBkbyBub3QgY2xlYXIKKwkg KiBhbGxfdmlzaWJsZSB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiBXZSBmaXggdGhhdCBhZnRl ciBkZXRlcm1pbmluZworCSAqIHdoZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSBidXQgYmVmb3JlIGRl Y2lkaW5nIHdoZXRoZXIgb3Igbm90IHRvIHVwZGF0ZQorCSAqIHRoZSBWTSBzbyB0aGF0IHdlIGRv bid0IHNldCB0aGUgVk0gYml0IGluY29ycmVjdGx5LgorCSAqCisJICogSWYgbm90IGZyZWV6aW5n IG9yIHVwZGF0aW5nIHRoZSBWTSwgd2Ugb3RoZXJ3aXNlIGF2b2lkIHRoZSBleHRyYQorCSAqIGJv b2trZWVwaW5nLiBJbml0aWFsaXppbmcgYWxsX3Zpc2libGUgdG8gZmFsc2UgYWxsb3dzIHNraXBw aW5nIHRoZSB3b3JrCisJICogdG8gdXBkYXRlIHRoZW0gaW4gaGVhcF9wcnVuZV9yZWNvcmRfdW5j aGFuZ2VkX2xwX25vcm1hbCgpLgogCSAqLwogCWlmIChwcnN0YXRlLmF0dGVtcHRfZnJlZXplKQog CXsKIAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHRydWU7CiAJCXByc3RhdGUuYWxsX2Zyb3plbiA9 IHRydWU7CiAJfQorCWVsc2UgaWYgKHByc3RhdGUuY29uc2lkZXJfdXBkYXRlX3ZtKQorCXsKKwkJ cHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHRydWU7CisJCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNl OworCX0KIAllbHNlCiAJewotCQkvKgotCQkgKiBJbml0aWFsaXppbmcgdG8gZmFsc2UgYWxsb3dz IHNraXBwaW5nIHRoZSB3b3JrIHRvIHVwZGF0ZSB0aGVtIGluCi0JCSAqIGhlYXBfcHJ1bmVfcmVj b3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKS4KLQkJICovCiAJCXByc3RhdGUuYWxsX3Zpc2libGUg PSBmYWxzZTsKIAkJcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CiAJfQogCiAJLyoKLQkgKiBU aGUgdmlzaWJpbGl0eSBjdXRvZmYgeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxl cyBvbiB0aGUKLQkgKiBwYWdlLiAgSW4gdGhlIGNvbW1vbiBjYXNlLCB0aGlzIHdpbGwgYmUgc2V0 IGFzIHRoZSBjb25mbGljdCBob3Jpem9uIHRoZQotCSAqIGNhbGxlciBjYW4gdXNlIGZvciB1cGRh dGluZyB0aGUgVk0uICBJZiwgYXQgdGhlIGVuZCBvZiBmcmVlemluZyBhbmQKLQkgKiBwcnVuaW5n LCB0aGUgcGFnZSBpcyBhbGwtZnJvemVuLCB0aGVyZSBpcyBubyBwb3NzaWJpbGl0eSB0aGF0IGFu eQotCSAqIHJ1bm5pbmcgdHJhbnNhY3Rpb24gb24gdGhlIHN0YW5kYnkgZG9lcyBub3Qgc2VlIHR1 cGxlcyBvbiB0aGUgcGFnZSBhcwotCSAqIGFsbC12aXNpYmxlLCBzbyB0aGUgY29uZmxpY3QgaG9y aXpvbiByZW1haW5zIEludmFsaWRUcmFuc2FjdGlvbklkLgorCSAqIFRoZSB2aXNpYmlsaXR5IGN1 dG9mZiB4aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUsIGNvbW1pdHRlZCB0dXBsZXMKKwkg KiBvbGRlciB0aGFuIE9sZGVzdFhtaW4gb24gdGhlIHBhZ2UuIFRoaXMgZmllbGQgaXMgb25seSBr ZXB0IHVwLXRvLWRhdGUKKwkgKiBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4gQXMgc29vbiBh cyBhIHR1cGxlIGlzIGVuY291bnRlcmVkIHRoYXQgaXMKKwkgKiBub3QgdmlzaWJsZSB0byBhbGws IHRoaXMgZmllbGQgaXMgdW5tYWludGFpbmVkLiBBcyBsb25nIGFzIGl0IGlzCisJICogbWFpbnRh aW5lZCwgaXQgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25mbGljdCBo b3Jpem9uLgorCSAqIFRoaXMgaXMgbW9zdCBsaWtlbHkgdG8gaGFwcGVuIHdoZW4gdXBkYXRpbmcg dGhlIFZNIGFuZC9vciBmcmVlemluZyBhbGwKKwkgKiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZS4g SXQgaXMgdXBkYXRlZCBiZWZvcmUgcmV0dXJuaW5nIHRvIHRoZSBjYWxsZXIKKwkgKiBiZWNhdXNl IHZhY3V1bSBkb2VzIGFzc2VydC1idWlsZCBvbmx5IHZhbGlkYXRpb24gb24gdGhlIHBhZ2UgdXNp bmcgdGhpcworCSAqIGZpZWxkLgogCSAqLwogCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlk ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKQEAgLTczOSwxMCArNzY0LDExIEBAIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCiAJ LyoKIAkgKiBFdmVuIGlmIHdlIGRvbid0IHBydW5lIGFueXRoaW5nLCBpZiB3ZSBmb3VuZCBhIG5l dyB2YWx1ZSBmb3IgdGhlCi0JICogcGRfcHJ1bmVfeGlkIGZpZWxkIG9yIHRoZSBwYWdlIHdhcyBt YXJrZWQgZnVsbCwgd2Ugd2lsbCB1cGRhdGUgdGhlIGhpbnQKLQkgKiBiaXQuCisJICogcGRfcHJ1 bmVfeGlkIGZpZWxkIG9yIHRoZSBwYWdlIHdhcyBtYXJrZWQgZnVsbCwgd2Ugd2lsbCB1cGRhdGUg dGhvc2UKKwkgKiBoaW50IGJpdHMuCiAJICovCi0JZG9faGludCA9ICgoUGFnZUhlYWRlcikgcGFn ZSktPnBkX3BydW5lX3hpZCAhPSBwcnN0YXRlLm5ld19wcnVuZV94aWQgfHwKKwlkb19oaW50X2Z1 bGxfb3JfcHJ1bmFibGUgPQorCQkoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9wcnVuZV94aWQgIT0g cHJzdGF0ZS5uZXdfcHJ1bmVfeGlkIHx8CiAJCVBhZ2VJc0Z1bGwocGFnZSk7CiAKIAkvKgpAQCAt NzkwLDcgKzgxNiw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0 aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJaWYgKFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3Vw KGJ1ZmZlcikpCiAJCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKIAkJCQkJfQotCQkJCQllbHNlIGlm IChkb19oaW50KQorCQkJCQllbHNlIGlmIChkb19oaW50X2Z1bGxfb3JfcHJ1bmFibGUpCiAJCQkJ CXsKIAkJCQkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkgJiYgWExvZ0NoZWNrQnVmZmVyTmVl ZHNCYWNrdXAoYnVmZmVyKSkKIAkJCQkJCQlkb19mcmVlemUgPSB0cnVlOwpAQCAtODI5LDExICs4 NTUsODggQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIsCiAJCSAqLwogCX0KIAorCS8qCisJICogSXQgd2FzIGNvbnZlbmllbnQgdG8g aWdub3JlIExQX0RFQUQgaXRlbXMgaW4gYWxsX3Zpc2libGUgZWFybGllciBvbiB0bworCSAqIG1h a2UgdGhlIGNob2ljZSBvZiB3aGV0aGVyIG9yIG5vdCB0byBmcmVlemUgdGhlIHBhZ2UgdW5hZmZl Y3RlZCBieSB0aGUKKwkgKiBzaG9ydC10ZXJtIHByZXNlbmNlIG9mIExQX0RFQUQgaXRlbXMuICBU aGVzZSBMUF9ERUFEIGl0ZW1zIHdlcmUKKwkgKiBlZmZlY3RpdmVseSBhc3N1bWVkIHRvIGJlIExQ X1VOVVNFRCBpdGVtcyBpbiB0aGUgbWFraW5nLiAgSXQgZG9lc24ndAorCSAqIG1hdHRlciB3aGlj aCB2YWN1dW0gaGVhcCBwYXNzIChpbml0aWFsIHBhc3Mgb3IgZmluYWwgcGFzcykgZW5kcyB1cAor CSAqIHNldHRpbmcgdGhlIHBhZ2UgYWxsLWZyb3plbiwgYXMgbG9uZyBhcyB0aGUgb25nb2luZyBW QUNVVU0gZG9lcyBpdC4KKwkgKgorCSAqIE5vdyB0aGF0IGZyZWV6aW5nIGhhcyBiZWVuIGZpbmFs aXplZCwgdW5zZXQgYWxsX3Zpc2libGUgaWYgdGhlcmUgYXJlCisJICogYW55IExQX0RFQUQgaXRl bXMgb24gdGhlIHBhZ2UuIEl0IG5lZWRzIHRvIHJlZmxlY3QgdGhlIHByZXNlbnQgc3RhdGUgb2YK KwkgKiB0aGUgcGFnZSB3aGVuIHVzaW5nIGl0IHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0 byB1cGRhdGUgdGhlIFZNLgorCSAqCisJICogS2VlcCB0cmFjayBvZiB3aGV0aGVyIG9yIG5vdCB0 aGUgcGFnZSB3YXMgYWxsLWZyb3plbiBleGNlcHQgTFBfREVBRAorCSAqIGl0ZW1zIGZvciB0aGUg cHVycG9zZXMgb2YgY2FsY3VsYXRpbmcgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24sCisJ ICogdGhvdWdoLgorCSAqLworCWFsbF9mcm96ZW5fZXhjZXB0X2xwX2RlYWQgPSBwcnN0YXRlLmFs bF9mcm96ZW47CisJaWYgKHByc3RhdGUubHBkZWFkX2l0ZW1zID4gMCkKKwl7CisJCXByc3RhdGUu YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CisJfQor CiAJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJzdGF0ZS5hbGxfdmlzaWJsZSk7CisK KwkvKgorCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBpbmZv cm1hdGlvbiBmcm9tIHRoZSBWTSAoYXMKKwkgKiBvZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9i bG9jaygpIGNhbGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQKKwkgKiBhbGxfZnJvemVuIHZh cmlhYmxlcy4KKwkgKi8KKwlpZiAocHJzdGF0ZS5jb25zaWRlcl91cGRhdGVfdm0pCisJeworCQkv KgorCQkgKiBDbGVhciBhbnkgVk0gY29ycnVwdGlvbi4gVGhpcyBkb2VzIG5vdCBuZWVkIHRvIGJl IGluIGEgY3JpdGljYWwKKwkJICogc2VjdGlvbiwgc28gd2UgZG8gaXQgZmlyc3QuIElmIFBEX0FM TF9WSVNJQkxFIGlzIGluY29ycmVjdGx5IHNldCwKKwkJICogd2UgbWF5IG1hcmsgdGhlIGhlYXAg cGFnZSBidWZmZXIgZGlydHkgaGVyZSBhbmQgY291bGQgZW5kIHVwIGRvaW5nCisJCSAqIHNvIGFn YWluIGxhdGVyLiBUaGlzIGlzIG5vdCBhIGNvcnJlY3RuZXNzIGlzc3VlIGFuZCBpcyBpbiB0aGUg cGF0aAorCQkgKiBvZiBWTSBjb3JydXB0aW9uLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFi b3V0IHRoZSBleHRyYQorCQkgKiBwZXJmb3JtYW5jZSBvdmVyaGVhZC4KKwkJICovCisJCWlmIChp ZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24ocmVsYXRpb24sCisJCQkJCQkJCQkJICAgYmxv Y2tubywgYnVmZmVyLCBwYWdlLAorCQkJCQkJCQkJCSAgIGJsa19rbm93bl9hdiwgcHJzdGF0ZS5s cGRlYWRfaXRlbXMsIHZtYnVmZmVyKSkKKwkJeworCQkJLyogSWYgd2UgZml4IGNvcnJ1cHRpb24s IGRvbid0IHVwZGF0ZSB0aGUgVk0gZnVydGhlciAqLworCQl9CisKKwkJLyogRGV0ZXJtaW5lIGlm IHdlIGFjdHVhbGx5IG5lZWQgdG8gc2V0IHRoZSBWTSBhbmQgd2hpY2ggYml0cyB0byBzZXQuICov CisJCWVsc2UgaWYgKHByc3RhdGUuYWxsX3Zpc2libGUgJiYKKwkJCQkgKCFibGtfa25vd25fYXYg fHwKKwkJCQkgIChwcnN0YXRlLmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9GUk9aRU4ocmVsYXRpb24s IGJsb2Nrbm8sICZ2bWJ1ZmZlcikpKSkKKwkJeworCQkJdm1mbGFncyB8PSBWSVNJQklMSVRZTUFQ X0FMTF9WSVNJQkxFOworCQkJaWYgKHByc3RhdGUuYWxsX2Zyb3plbikKKwkJCQl2bWZsYWdzIHw9 IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKwkJfQorCX0KKworCWRvX3NldF92bSA9IHZtZmxh Z3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7CisKKwkvKiBMb2NrIHZtYnVmZmVyIGJlZm9y ZSBlbnRlcmluZyBhIGNyaXRpY2FsIHNlY3Rpb24gKi8KKwlpZiAoZG9fc2V0X3ZtKQorCQlMb2Nr QnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCisJLyoKKwkgKiBEb24n dCBzZXQgUERfQUxMX1ZJU0lCTEUgdW5sZXNzIHdlIGFsc28gcGxhbiB0byBzZXQgdGhlIFZNLiBX aGlsZSBpdCBpcworCSAqIGNvcnJlY3QgZm9yIGEgaGVhcCBwYWdlIHRvIGhhdmUgUERfQUxMX1ZJ U0lCTEUgZXZlbiBpZiB0aGUgVk0gaXMgbm90CisJICogc2V0LCB3ZSBzdHJvbmdseSBwcmVmZXIg dG8ga2VlcCB0aGVtIGluIHN5bmMuCisJICoKKwkgKiBQcmlvciB0byBQb3N0Z3JlcyAxOSwgaXQg d2FzIHBvc3NpYmxlIGZvciB0aGUgcGFnZS1sZXZlbCBiaXQgdG8gYmUgc2V0CisJICogYW5kIHRo ZSBWTSBiaXQgdG8gYmUgY2xlYXIuIFRoaXMgY291bGQgaGFwcGVuIGlmIHdlIGNyYXNoZWQgYWZ0 ZXIKKwkgKiBzZXR0aW5nIFBEX0FMTF9WSVNJQkxFIGJ1dCBiZWZvcmUgc2V0dGluZyBiaXRzIGlu IHRoZSBWTS4KKwkgKi8KKwlzZXRfcGRfYWxsX3Zpc2libGUgPSBkb19zZXRfdm0gJiYgIVBhZ2VJ c0FsbFZpc2libGUocGFnZSk7CisKKwkvKiBTYXZlIHRoZXNlIGZvciB0aGUgY2FsbGVyIGluIGNh c2Ugd2UgbGF0ZXIgemVybyBvdXQgdm1mbGFncyAqLworCXByZXN1bHQtPm5ld192bWJpdHMgPSB2 bWZsYWdzOworCiAJLyogQW55IGVycm9yIHdoaWxlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGlzIGNy aXRpY2FsICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAKLQlpZiAoZG9faGludCkKKwlpZiAo ZG9faGludF9mdWxsX29yX3BydW5hYmxlKQogCXsKIAkJLyoKIAkJICogVXBkYXRlIHRoZSBwYWdl J3MgcGRfcHJ1bmVfeGlkIGZpZWxkIHRvIGVpdGhlciB6ZXJvLCBvciB0aGUgbG93ZXN0CkBAIC04 NDksMTUgKzk1MiwxNiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJUGFnZUNsZWFyRnVsbChwYWdlKTsKIAogCQkvKgotCQkg KiBJZiB0aGF0J3MgYWxsIHdlIGhhZCB0byBkbyB0byB0aGUgcGFnZSwgdGhpcyBpcyBhIG5vbi1X QUwtbG9nZ2VkCi0JCSAqIGhpbnQuICBJZiB3ZSBhcmUgZ29pbmcgdG8gZnJlZXplIG9yIHBydW5l IHRoZSBwYWdlLCB3ZSB3aWxsIG1hcmsKLQkJICogdGhlIGJ1ZmZlciBkaXJ0eSBiZWxvdy4KKwkJ ICogSWYgd2UgYXJlIF9vbmx5XyBzZXR0aW5nIHRoZSBwcnVuZV94aWQgb3IgUERfUEFHRV9GVUxM IGhpbnQsIHRoZW4KKwkJICogdGhpcyBpcyBhIG5vbi1XQUwtbG9nZ2VkIGhpbnQuICBJZiB3ZSBh cmUgZ29pbmcgdG8gZnJlZXplIG9yIHBydW5lCisJCSAqIHR1cGxlcyBvbiB0aGUgcGFnZSBvciBz ZXQgUERfQUxMX1ZJU0lCTEUsIHdlIHdpbGwgbWFyayB0aGUgYnVmZmVyCisJCSAqIGRpcnR5IGFu ZCBlbWl0IFdBTCBiZWxvdy4KIAkJICovCi0JCWlmICghZG9fZnJlZXplICYmICFkb19wcnVuZSkK KwkJaWYgKCFkb19wcnVuZSAmJiAhZG9fZnJlZXplICYmICFzZXRfcGRfYWxsX3Zpc2libGUpCiAJ CQlNYXJrQnVmZmVyRGlydHlIaW50KGJ1ZmZlciwgdHJ1ZSk7CiAJfQogCi0JaWYgKGRvX3BydW5l IHx8IGRvX2ZyZWV6ZSkKKwlpZiAoZG9fcHJ1bmUgfHwgZG9fZnJlZXplIHx8IGRvX3NldF92bSkK IAl7CiAJCS8qIEFwcGx5IHRoZSBwbGFubmVkIGl0ZW0gY2hhbmdlcyBhbmQgcmVwYWlyIHBhZ2Ug ZnJhZ21lbnRhdGlvbi4gKi8KIAkJaWYgKGRvX3BydW5lKQpAQCAtODcxLDEyICs5NzUsNDcgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIsCiAJCWlmIChkb19mcmVlemUpCiAJCQloZWFwX2ZyZWV6ZV9wcmVwYXJlZF90dXBsZXMoYnVm ZmVyLCBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuKTsKIAotCQlNYXJrQnVmZmVyRGly dHkoYnVmZmVyKTsKKwkJaWYgKHNldF9wZF9hbGxfdmlzaWJsZSkKKwkJCVBhZ2VTZXRBbGxWaXNp YmxlKHBhZ2UpOwogCiAJCS8qCi0JCSAqIEVtaXQgYSBXQUwgWExPR19IRUFQMl9QUlVORV9GUkVF WkUgcmVjb3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQKKwkJICogV2Ugb25seSBzZXQgUERfQUxMX1ZJ U0lCTEUgaWYgd2UgYWxzbyBzZXQgdGhlIFZNLCBhbmQgc2luY2Ugc2V0dGluZworCQkgKiB0aGUg Vk0gcmVxdWlyZXMgZW1pdHRpbmcgV0FMLCBNYXJrQnVmZmVyRGlydHlIaW50KCkgaXNuJ3QKKwkJ ICogYXBwcm9wcmlhdGUgaGVyZS4KIAkJICovCi0JCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbGF0 aW9uKSkKKwkJaWYgKGRvX3BydW5lIHx8IGRvX2ZyZWV6ZSB8fCBzZXRfcGRfYWxsX3Zpc2libGUp CisJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKworCQlpZiAoZG9fc2V0X3ZtKQorCQl7CisJ CQlBc3NlcnQoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CisJCQlvbGRfdm1iaXRzID0gdmlzaWJp bGl0eW1hcF9zZXRfdm1iaXRzKHJlbGF0aW9uLCBibG9ja25vLAorCQkJCQkJCQkJCQkJICB2bWJ1 ZmZlciwgdm1mbGFncyk7CisKKwkJCWlmIChvbGRfdm1iaXRzID09IHZtZmxhZ3MpCisJCQl7CisJ CQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJCQlkb19zZXRf dm0gPSBmYWxzZTsKKwkJCQkvKiAwIG91dCB2bWZsYWdzIHNvIHdlIGRvbid0IGVtaXQgV0FMIHRv IHVwZGF0ZSB0aGUgVk0gKi8KKwkJCQl2bWZsYWdzID0gMDsKKwkJCX0KKwkJfQorCisJCS8qCisJ CSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0IFBEX0FMTF9WSVNJQkxFIGlzIG5v dCBzZXQgYW5kIHRoZQorCQkgKiBWTSBpcyBzZXQuIE9yLCBpZiBpdCB3ZXJlLCB3ZSBzaG91bGQg aGF2ZSBjYXVnaHQgaXQgZWFybGllciB3aGVuCisJCSAqIGZpbmRpbmcgYW5kIGZpeGluZyBWTSBj b3JydXB0aW9uLiBTbywgaWYgd2UgZm91bmQgb3V0IHRoZSBWTSB3YXMKKwkJICogYWxyZWFkeSBz ZXQgYWJvdmUsIHdlIHNob3VsZCBoYXZlIGZvdW5kIFBEX0FMTF9WSVNJQkxFIHNldCBlYXJsaWVy LgorCQkgKi8KKwkJQXNzZXJ0KCFzZXRfcGRfYWxsX3Zpc2libGUgfHwgZG9fc2V0X3ZtKTsKKwor CQkvKgorCQkgKiBFbWl0IGEgV0FMIFhMT0dfSEVBUDJfUFJVTkVfRlJFRVpFIHJlY29yZCBzaG93 aW5nIHdoYXQgd2UgZGlkLiBJZgorCQkgKiB3ZSB3ZXJlIG9ubHkgdXBkYXRpbmcgdGhlIFZNIGFu ZCBpdCB0dXJucyBvdXQgaXQgd2FzIGFscmVhZHkgc2V0LAorCQkgKiB3ZSB3aWxsIGhhdmUgdW5z ZXQgZG9fc2V0X3ZtIGVhcmxpZXIuIEFzIHN1Y2gsIGNoZWNrIGl0IGFnYWluCisJCSAqIGJlZm9y ZSBlbWl0dGluZyB0aGUgcmVjb3JkLgorCQkgKi8KKwkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVs YXRpb24pICYmIChkb19zZXRfdm0gfHwgZG9fcHJ1bmUgfHwgZG9fZnJlZXplKSkKIAkJewogCQkJ LyoKIAkJCSAqIFRoZSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBmb3IgdGhlIHdob2xlIHJlY29y ZCBzaG91bGQgYmUgdGhlCkBAIC04ODgsMzUgKzEwMjcsNTYgQEAgaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkgKiBvbiB0aGUg c3RhbmRieSB3aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgdHVwbGUgdGhpcwogCQkJ ICogcmVjb3JkIHdpbGwgZnJlZXplIHdpbGwgY29uZmxpY3QuCiAJCQkgKi8KLQkJCVRyYW5zYWN0 aW9uSWQgZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQkJCVRy YW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkOworCQkJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQg PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKworCQkJLyoKKwkJCSAqIElmIHdlIGFyZSB1cGRhdGlu ZyB0aGUgVk0sIHRoZSBjb25mbGljdCBob3Jpem9uIGlzIGFsbW9zdAorCQkJICogYWx3YXlzIHRo ZSB2aXNpYmlsaXR5IGN1dG9mZiBYSUQuCisJCQkgKgorCQkJICogU2VwYXJhdGVseSwgaWYgd2Ug YXJlIGZyZWV6aW5nIGFueSB0dXBsZXMsIGFzIGFuIG9wdGltaXphdGlvbiwKKwkJCSAqIHdlIGNh biB1c2UgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiBp ZgorCQkJICogdGhlIHBhZ2Ugd2lsbCBiZSBhbGwtZnJvemVuLiBUaGlzIGlzIHRydWUgZXZlbiBp ZiB0aGVyZSBhcmUKKwkJCSAqIExQX0RFQUQgbGluZSBwb2ludGVycyBiZWNhdXNlIHdlIGlnbm9y ZWQgdGhvc2Ugd2hlbiBtYWludGFpbmluZworCQkJICogdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hp ZC4KKwkJCSAqLworCQkJaWYgKGRvX3NldF92bSB8fCAoZG9fZnJlZXplICYmIGFsbF9mcm96ZW5f ZXhjZXB0X2xwX2RlYWQpKQorCQkJCWNvbmZsaWN0X3hpZCA9IHByc3RhdGUudmlzaWJpbGl0eV9j dXRvZmZfeGlkOwogCiAJCQkvKgotCQkJICogV2UgY2FuIHVzZSB0aGUgdmlzaWJpbGl0eV9jdXRv ZmZfeGlkIGFzIG91ciBjdXRvZmYgZm9yCi0JCQkgKiBjb25mbGljdHMgd2hlbiB0aGUgd2hvbGUg cGFnZSBpcyBlbGlnaWJsZSB0byBiZWNvbWUgYWxsLWZyb3plbgotCQkJICogaW4gdGhlIFZNIG9u Y2Ugd2UncmUgZG9uZSB3aXRoIGl0LiAgT3RoZXJ3aXNlIHdlIGdlbmVyYXRlIGEKLQkJCSAqIGNv bnNlcnZhdGl2ZSBjdXRvZmYgYnkgc3RlcHBpbmcgYmFjayBmcm9tIE9sZGVzdFhtaW4uCisJCQkg KiBPdGhlcndpc2UsIGlmIHdlIGFyZSBmcmVlemluZyBidXQgdGhlIHBhZ2Ugd291bGQgbm90IGJl CisJCQkgKiBhbGwtZnJvemVuLCB3ZSBoYXZlIHRvIHVzZSB0aGUgbW9yZSBwZXNzaW1pc3RpYyBo b3Jpem9uIG9mCisJCQkgKiBPbGRlc3RYbWluLCB3aGljaCBtYXkgYmUgbmV3ZXIgdGhhbiB0aGUg bmV3ZXN0IHR1cGxlIHdlIGZyb3plLgorCQkJICogV2UgY3VycmVudGx5IGRvbid0IHRyYWNrIHRo ZSBuZXdlc3QgdHVwbGUgd2UgZnJvemUuCiAJCQkgKi8KLQkJCWlmIChkb19mcmVlemUpCisJCQll bHNlIGlmIChkb19mcmVlemUpCiAJCQl7Ci0JCQkJaWYgKHByc3RhdGUuYWxsX3Zpc2libGUgJiYg cHJzdGF0ZS5hbGxfZnJvemVuKQotCQkJCQlmcnpfY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUu dmlzaWJpbGl0eV9jdXRvZmZfeGlkOwotCQkJCWVsc2UKLQkJCQl7Ci0JCQkJCS8qIEF2b2lkcyBm YWxzZSBjb25mbGljdHMgd2hlbiBob3Rfc3RhbmRieV9mZWVkYmFjayBpbiB1c2UgKi8KLQkJCQkJ ZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLmN1dG9mZnMtPk9sZGVzdFhtaW47Ci0JCQkJ CVRyYW5zYWN0aW9uSWRSZXRyZWF0KGZyel9jb25mbGljdF9ob3Jpem9uKTsKLQkJCQl9CisJCQkJ Y29uZmxpY3RfeGlkID0gcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluOworCQkJCVRyYW5zYWN0 aW9uSWRSZXRyZWF0KGNvbmZsaWN0X3hpZCk7CiAJCQl9CiAKLQkJCWlmIChUcmFuc2FjdGlvbklk Rm9sbG93cyhmcnpfY29uZmxpY3RfaG9yaXpvbiwgcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQp KQotCQkJCWNvbmZsaWN0X3hpZCA9IGZyel9jb25mbGljdF9ob3Jpem9uOwotCQkJZWxzZQorCQkJ LyoKKwkJCSAqIElmIHdlIGFyZSByZW1vdmluZyB0dXBsZXMgd2l0aCBhIHlvdW5nZXIgeG1heCB0 aGFuIG91ciBzbyBmYXIKKwkJCSAqIGNhbGN1bGF0ZWQgY29uZmxpY3RfeGlkLCB3ZSBtdXN0IHVz ZSB0aGlzIGFzIG91ciBob3Jpem9uLgorCQkJICovCisJCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxv d3MocHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQsIGNvbmZsaWN0X3hpZCkpCiAJCQkJY29uZmxp Y3RfeGlkID0gcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQ7CiAKKwkJCS8qCisJCQkgKiBXZSBj YW4gb21pdCB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBpZiB3ZSBhcmUgbm90IHBydW5p bmcKKwkJCSAqIG9yIGZyZWV6aW5nIGFueSB0dXBsZXMgYW5kIGFyZSBzZXR0aW5nIGFuIGFscmVh ZHkgYWxsLXZpc2libGUKKwkJCSAqIHBhZ2UgYWxsLWZyb3plbiBpbiB0aGUgVk0uIEluIHRoaXMg Y2FzZSwgYWxsIG9mIHRoZSB0dXBsZXMgb24KKwkJCSAqIHRoZSBwYWdlIG11c3QgYWxyZWFkeSBi ZSB2aXNpYmxlIHRvIGFsbCBNVkNDIHNuYXBzaG90cyBvbiB0aGUKKwkJCSAqIHN0YW5kYnkuCisJ CQkgKi8KKwkJCWlmICghZG9fcHJ1bmUgJiYgIWRvX2ZyZWV6ZSAmJiBkb19zZXRfdm0gJiYKKwkJ CQlibGtfa25vd25fYXYgJiYgKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pKQor CQkJCWNvbmZsaWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCiAJCQlsb2dfaGVhcF9w cnVuZV9hbmRfZnJlZXplKHJlbGF0aW9uLCBidWZmZXIsCiAJCQkJCQkJCQkgIGZhbHNlLAotCQkJ CQkJCQkJICBJbnZhbGlkQnVmZmVyLCAwLCBmYWxzZSwKKwkJCQkJCQkJCSAgdm1idWZmZXIsCisJ CQkJCQkJCQkgIHZtZmxhZ3MsCisJCQkJCQkJCQkgIHNldF9wZF9hbGxfdmlzaWJsZSwKIAkJCQkJ CQkJCSAgY29uZmxpY3RfeGlkLAogCQkJCQkJCQkJICB0cnVlLCByZWFzb24sCiAJCQkJCQkJCQkg IHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4sCkBAIC05MjgsMTI0ICsxMDg4LDU1IEBA IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVm ZmVyLAogCiAJRU5EX0NSSVRfU0VDVElPTigpOwogCi0JLyogQ29weSBpbmZvcm1hdGlvbiBiYWNr IGZvciBjYWxsZXIgKi8KLQlwcmVzdWx0LT5uZGVsZXRlZCA9IHByc3RhdGUubmRlbGV0ZWQ7Ci0J cHJlc3VsdC0+bm5ld2xwZGVhZCA9IHByc3RhdGUubmRlYWQ7Ci0JcHJlc3VsdC0+bmZyb3plbiA9 IHByc3RhdGUubmZyb3plbjsKLQlwcmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90 dXBsZXM7Ci0JcHJlc3VsdC0+cmVjZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5 X2RlYWRfdHVwbGVzOwotCi0JLyoKLQkgKiBJdCB3YXMgY29udmVuaWVudCB0byBpZ25vcmUgTFBf REVBRCBpdGVtcyBpbiBhbGxfdmlzaWJsZSBlYXJsaWVyIG9uIHRvCi0JICogbWFrZSB0aGUgY2hv aWNlIG9mIHdoZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSB0aGUgcGFnZSB1bmFmZmVjdGVkIGJ5IHRo ZQotCSAqIHNob3J0LXRlcm0gcHJlc2VuY2Ugb2YgTFBfREVBRCBpdGVtcy4gIFRoZXNlIExQX0RF QUQgaXRlbXMgd2VyZQotCSAqIGVmZmVjdGl2ZWx5IGFzc3VtZWQgdG8gYmUgTFBfVU5VU0VEIGl0 ZW1zIGluIHRoZSBtYWtpbmcuICBJdCBkb2Vzbid0Ci0JICogbWF0dGVyIHdoaWNoIHZhY3V1bSBo ZWFwIHBhc3MgKGluaXRpYWwgcGFzcyBvciBmaW5hbCBwYXNzKSBlbmRzIHVwCi0JICogc2V0dGlu ZyB0aGUgcGFnZSBhbGwtZnJvemVuLCBhcyBsb25nIGFzIHRoZSBvbmdvaW5nIFZBQ1VVTSBkb2Vz IGl0LgotCSAqCi0JICogTm93IHRoYXQgZnJlZXppbmcgaGFzIGJlZW4gZmluYWxpemVkLCB1bnNl dCBhbGxfdmlzaWJsZSBpZiB0aGVyZSBhcmUKLQkgKiBhbnkgTFBfREVBRCBpdGVtcyBvbiB0aGUg cGFnZS4gIEl0IG5lZWRzIHRvIHJlZmxlY3QgdGhlIHByZXNlbnQgc3RhdGUKLQkgKiBvZiB0aGUg cGFnZSwgYXMgZXhwZWN0ZWQgZm9yIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5IG1hcC4KLQkgKi8K LQlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKQot CXsKLQkJcHJlc3VsdC0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF92aXNpYmxlOwotCQlwcmVz dWx0LT5hbGxfZnJvemVuID0gcHJzdGF0ZS5hbGxfZnJvemVuOwotCX0KLQllbHNlCi0JewotCQlw cmVzdWx0LT5hbGxfdmlzaWJsZSA9IGZhbHNlOwotCQlwcmVzdWx0LT5hbGxfZnJvemVuID0gZmFs c2U7Ci0JfQotCi0JcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5oYXN0dXA7CisJaWYgKGRvX3Nl dF92bSkKKwkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIAotCS8q Ci0JICogSWYgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpv biBmb3IgdGhhdCByZWNvcmQKLQkgKiBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFn ZS4gIEhvd2V2ZXIsIGlmIHRoZSBwYWdlIGlzCi0JICogY29tcGxldGVseSBmcm96ZW4sIHRoZXJl IGNhbiBiZSBubyBjb25mbGljdCBhbmQgdGhlIHZtX2NvbmZsaWN0X2hvcml6b24KLQkgKiBzaG91 bGQgcmVtYWluIEludmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcyB0aGUgY2FzZSB0 aGF0IHdlCi0JICoganVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSBy ZWNvcmQgaW5jbHVkZWQgdGhlCi0JICogY29uZmxpY3QgWElEIGFscmVhZHkgc28gdGhlIFZNIHVw ZGF0ZSByZWNvcmQgZG9lc24ndCBuZWVkIGl0LgotCSAqLwotCWlmIChwcmVzdWx0LT5hbGxfZnJv emVuKQotCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7Ci0JZWxzZQotCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS52aXNp YmlsaXR5X2N1dG9mZl94aWQ7CisJQXNzZXJ0KCFwcnN0YXRlLmFsbF92aXNpYmxlIHx8IChwcnN0 YXRlLmxwZGVhZF9pdGVtcyA9PSAwKSk7CiAKIAkvKgotCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2li aWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAoYXMKLQkgKiBv ZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIGNhbGwpLCBhbmQgZnJvbSBhbGxfdmlz aWJsZSBhbmQKLQkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcy4KKwkgKiBWQUNVVU0gd2lsbCBjYWxs IGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIGR1cmluZyB0aGUgc2Vjb25kIHBhc3Mgb3Zlcgor CSAqIHRoZSBoZWFwIHRvIGRldGVybWluZSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBmb3Ig dGhlIHBhZ2UgLS0gdGhpcworCSAqIGlzIGEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgbG9n aWMgZnJvbSB0aGlzIGZ1bmN0aW9uLiAgTm93IHRoYXQKKwkgKiB3ZSd2ZSBmaW5pc2hlZCBwcnVu aW5nIGFuZCBmcmVlemluZywgbWFrZSBzdXJlIHRoYXQgd2UncmUgaW4gdG90YWwKKwkgKiBhZ3Jl ZW1lbnQgd2l0aCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSB1c2luZyBhbiBhc3NlcnRpb24u IFdlIHdpbGwKKwkgKiBoYXZlIGFscmVhZHkgc2V0IHRoZSBwYWdlIGluIHRoZSBWTSwgc28gdGhp cyBhc3NlcnRpb24gd2lsbCBvbmx5IGxldAorCSAqIHlvdSBrbm93IHRoYXQgeW91J3ZlIGFscmVh ZHkgZG9uZSBzb21ldGhpbmcgd3JvbmcuCiAJICovCi0JaWYgKG9wdGlvbnMgJiBIRUFQX1BBR0Vf UFJVTkVfVVBEQVRFX1ZNKQorI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlpZiAocHJzdGF0 ZS5hbGxfdmlzaWJsZSkKIAl7Ci0JCWlmIChpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24o cmVsYXRpb24sCi0JCQkJCQkJCQkJICAgYmxvY2tubywgYnVmZmVyLCBwYWdlLAotCQkJCQkJCQkJ CSAgIGJsa19rbm93bl9hdiwKLQkJCQkJCQkJCQkgICBwcnN0YXRlLmxwZGVhZF9pdGVtcywgdm1i dWZmZXIpKQotCQl7Ci0JCQkvKiBJZiB3ZSBmaXggY29ycnVwdGlvbiwgZG9uJ3QgdXBkYXRlIHRo ZSBWTSBmdXJ0aGVyICovCi0JCX0KKwkJVHJhbnNhY3Rpb25JZCBkZWJ1Z19jdXRvZmY7CisJCWJv b2wJCWRlYnVnX2FsbF9mcm96ZW47CiAKLQkJLyoKLQkJICogSWYgdGhlIHBhZ2UgaXNuJ3QgeWV0 IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUgVk0gb3IgaXQgaXMgYW5kCi0JCSAqIG5lZWRzIHRv IG1lIG1hcmtlZCBhbGwtZnJvemVuLCB1cGRhdGUgdGhlIFZNLiBOb3RlIHRoYXQgYWxsX2Zyb3pl bgotCQkgKiBpcyBvbmx5IHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzIHRydWUsIHNvIHdlIG11c3Qg Y2hlY2sgYm90aAotCQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbi4KLQkJICovCi0JCWVs c2UgaWYgKHByZXN1bHQtPmFsbF92aXNpYmxlICYmCi0JCQkJICghYmxrX2tub3duX2F2IHx8Ci0J CQkJICAocHJlc3VsdC0+YWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwgYmxv Y2tubywgJnZtYnVmZmVyKSkpKQotCQl7Ci0JCQlBc3NlcnQocHJzdGF0ZS5scGRlYWRfaXRlbXMg PT0gMCk7Ci0JCQl2bWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKKwkJQXNzZXJ0 KGN1dG9mZnMpOwogCi0JCQkvKgotCQkJICogSWYgdGhlIHBhZ2UgaXMgYWxsLWZyb3plbiwgd2Ug Y2FuIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMKLQkJCSAqIG91ciBjdXRvZmZfeGlkLCBz aW5jZSBhIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIHN1ZmZpY2llbnQgdG8KLQkJCSAqIG1ha2Ug ZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxl cwotCQkJICogd2VyZSBmcm96ZW4uCi0JCQkgKi8KLQkJCWlmIChwcmVzdWx0LT5hbGxfZnJvemVu KQotCQkJewotCQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC0+dm1fY29u ZmxpY3RfaG9yaXpvbikpOwotCQkJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVO OwotCQkJfQorCQlBc3NlcnQocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7CiAKLQkJCS8qCi0J CQkgKiBJdCdzIHBvc3NpYmxlIGZvciB0aGUgVk0gYml0IHRvIGJlIGNsZWFyIGFuZCB0aGUgcGFn ZS1sZXZlbCBiaXQKLQkJCSAqIHRvIGJlIHNldCBpZiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVk LgotCQkJICoKLQkJCSAqIEFuZCBldmVuIGlmIHdlIGFyZSBqdXN0IHBsYW5uaW5nIHRvIHVwZGF0 ZSB0aGUgZnJvemVuIGJpdCBpbgotCQkJICogdGhlIFZNLCB3ZSBzaG91bGRuJ3QgcmVseSBvbiBh bGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gYXMgYQotCQkJICogcHJveHkgZm9yIHRoZSBwYWdl LWxldmVsIFBEX0FMTF9WSVNJQkxFIGJpdCBiZWluZyBzZXQsIHNpbmNlIGl0Ci0JCQkgKiBtaWdo dCBoYXZlIGJlY29tZSBzdGFsZS4KLQkJCSAqCi0JCQkgKiBJZiB0aGUgaGVhcCBwYWdlIGlzIGFs bC12aXNpYmxlIGJ1dCB0aGUgVk0gYml0IGlzIG5vdCBzZXQsIHdlCi0JCQkgKiBkb24ndCBuZWVk IHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dldmVyLCBpZiBjaGVja3N1bXMgYXJlCi0JCQkg KiBlbmFibGVkLCB3ZSBkbyBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBoZWFwIHBhZ2UgaXMg ZGlydGllZAotCQkJICogYmVmb3JlIHBhc3NpbmcgaXQgdG8gdmlzaWJpbGl0eW1hcF9zZXQoKSwg YmVjYXVzZSBpdCBtYXkgYmUKLQkJCSAqIGxvZ2dlZC4KLQkJCSAqLwotCQkJaWYgKCFQYWdlSXNB bGxWaXNpYmxlKHBhZ2UpIHx8IFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKLQkJCXsKLQkJCQlQYWdl U2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKLQkJCX0K KwkJaWYgKCFoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUocmVsYXRpb24sIGJ1ZmZlciwKKwkJCQkJ CQkJCSAgY3V0b2Zmcy0+T2xkZXN0WG1pbiwKKwkJCQkJCQkJCSAgJmRlYnVnX2FsbF9mcm96ZW4s CisJCQkJCQkJCQkgICZkZWJ1Z19jdXRvZmYsIG9mZl9sb2MpKQorCQkJQXNzZXJ0KGZhbHNlKTsK IAotCQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHJlbGF0aW9uLCBibG9ja25vLCBi dWZmZXIsIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBwcmVzdWx0 LT52bV9jb25mbGljdF9ob3Jpem9uLAotCQkJCQkJCQkJCSAgIHZtZmxhZ3MpOwotCQl9CisJCUFz c2VydChwcnN0YXRlLmFsbF9mcm96ZW4gPT0gZGVidWdfYWxsX2Zyb3plbik7CisKKwkJQXNzZXJ0 KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWJ1Z19jdXRvZmYpIHx8CisJCQkgICBkZWJ1Z19jdXRv ZmYgPT0gcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpOwogCX0KKyNlbmRpZgogCisJLyog Q29weSBpbmZvcm1hdGlvbiBiYWNrIGZvciBjYWxsZXIgKi8KKwlwcmVzdWx0LT5uZGVsZXRlZCA9 IHByc3RhdGUubmRlbGV0ZWQ7CisJcHJlc3VsdC0+bm5ld2xwZGVhZCA9IHByc3RhdGUubmRlYWQ7 CisJcHJlc3VsdC0+bmZyb3plbiA9IHByc3RhdGUubmZyb3plbjsKKwlwcmVzdWx0LT5saXZlX3R1 cGxlcyA9IHByc3RhdGUubGl2ZV90dXBsZXM7CisJcHJlc3VsdC0+cmVjZW50bHlfZGVhZF90dXBs ZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVzOworCXByZXN1bHQtPm9sZF92bWJpdHMg PSBvbGRfdm1iaXRzOworCS8qIG5ld192bWJpdHMgd2FzIHNldCBhYm92ZSAqLworCXByZXN1bHQt Pmhhc3R1cCA9IHByc3RhdGUuaGFzdHVwOwogCXByZXN1bHQtPmxwZGVhZF9pdGVtcyA9IHByc3Rh dGUubHBkZWFkX2l0ZW1zOwogCS8qIHRoZSBwcmVzdWx0LT5kZWFkb2Zmc2V0cyBhcnJheSB3YXMg YWxyZWFkeSBmaWxsZWQgaW4gKi8KIAotCXByZXN1bHQtPm9sZF92bWJpdHMgPSBvbGRfdm1iaXRz OwotCXByZXN1bHQtPm5ld192bWJpdHMgPSB2bWZsYWdzOwotCiAJaWYgKHByc3RhdGUuYXR0ZW1w dF9mcmVlemUpCiAJewogCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCkBAIC0xNjI3LDcgKzE3 MTgsMTIgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2Us IFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCWJyZWFrOwogCX0KIAotCS8qIENv bnNpZGVyIGZyZWV6aW5nIGFueSBub3JtYWwgdHVwbGVzIHdoaWNoIHdpbGwgbm90IGJlIHJlbW92 ZWQgKi8KKwkvKgorCSAqIENvbnNpZGVyIGZyZWV6aW5nIGFueSBub3JtYWwgdHVwbGVzIHdoaWNo IHdpbGwgbm90IGJlIHJlbW92ZWQuCisJICogUmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB3 ZSB3YW50IHRvIGZyZWV6ZSB0aGUgdHVwbGVzLCBpZiB3ZSB3YW50CisJICogdG8gdXBkYXRlIHRo ZSBWTSwgd2UgaGF2ZSB0byBjYWxsIGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoKSBvbiBldmVy eQorCSAqIHR1cGxlIHRvIGtub3cgd2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2lsbCBiZSB0b3Rh bGx5IGZyb3plbi4KKwkgKi8KIAlpZiAocHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCiAJewogCQli b29sCQl0b3RhbGx5X2Zyb3plbjsKQEAgLTIxOTAsNyArMjI4Niw3IEBAIGhlYXBfbG9nX2ZyZWV6 ZV9wbGFuKEhlYXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKICAqIC0gUmVhcGlu ZzogRHVyaW5nIHZhY3V1bSBwaGFzZSBJSUksIGl0ZW1zIHRoYXQgYXJlIGFscmVhZHkgTFBfREVB RCBhcmUKICAqICAgbWFya2VkIGFzIHVudXNlZC4KICAqCi0gKiAtIFZNIHVwZGF0ZXM6IEFmdGVy IHZhY3V1bSBwaGFzZSBJSUksIHRoZSBoZWFwIHBhZ2UgbWF5IGJlIG1hcmtlZAorICogLSBWTSB1 cGRhdGVzOiBBZnRlciB2YWN1dW0gcGhhc2VzIEkgYW5kIElJSSwgdGhlIGhlYXAgcGFnZSBtYXkg YmUgbWFya2VkCiAgKiAgIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuLgogICoKICAqIFRoZXNl IGNoYW5nZXMgYWxsIGhhcHBlbiB0b2dldGhlciwgc28gd2UgdXNlIGEgc2luZ2VsIFdBTCByZWNv cmQgZm9yIHRoZW0KQEAgLTIyNDQsNiArMjM0MCw3IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVl emUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJT2Zmc2V0TnVtYmVyIGZyel9v ZmZzZXRzW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKIAlib29sCQlkb19wcnVuZSA9IG5yZWRpcmVj dGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7CiAKKwlBc3NlcnQoZG9fcHJ1bmUg fHwgbmZyb3plbiA+IDAgfHwgdm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CiAJ QXNzZXJ0KCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSA9PSB2bWZsYWdzKTsK IAl4bHJlYy5mbGFncyA9IHZtZmxhZ3M7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YwppbmRleCA5NDkyNDIzMTQxZS4uNzUyMDUxNzliODMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKQEAgLTIwMTUsMzQgKzIwMTUsNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxT dGF0ZSAqdmFjcmVsLAogCQl2YWNyZWwtPm5ld19mcm96ZW5fdHVwbGVfcGFnZXMrKzsKIAl9CiAK LQkvKgotCSAqIFZBQ1VVTSB3aWxsIGNhbGwgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKCkgZHVy aW5nIHRoZSBzZWNvbmQgcGFzcyBvdmVyCi0JICogdGhlIGhlYXAgdG8gZGV0ZXJtaW5lIGFsbF92 aXNpYmxlIGFuZCBhbGxfZnJvemVuIGZvciB0aGUgcGFnZSAtLSB0aGlzCi0JICogaXMgYSBzcGVj aWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBsb2dpYyBmcm9tIHRoaXMgZnVuY3Rpb24uICBOb3cgdGhh dAotCSAqIHdlJ3ZlIGZpbmlzaGVkIHBydW5pbmcgYW5kIGZyZWV6aW5nLCBtYWtlIHN1cmUgdGhh dCB3ZSdyZSBpbiB0b3RhbAotCSAqIGFncmVlbWVudCB3aXRoIGhlYXBfcGFnZV9pc19hbGxfdmlz aWJsZSgpIHVzaW5nIGFuIGFzc2VydGlvbi4KLQkgKi8KLSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNL SU5HCi0JLyogTm90ZSB0aGF0IGFsbF9mcm96ZW4gdmFsdWUgZG9lcyBub3QgbWF0dGVyIHdoZW4g IWFsbF92aXNpYmxlICovCi0JaWYgKHByZXN1bHQuYWxsX3Zpc2libGUpCi0JewotCQlUcmFuc2Fj dGlvbklkIGRlYnVnX2N1dG9mZjsKLQkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKLQotCQlBc3Nl cnQocHJlc3VsdC5scGRlYWRfaXRlbXMgPT0gMCk7Ci0KLQkJaWYgKCFoZWFwX3BhZ2VfaXNfYWxs X3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZiwKLQkJCQkJCQkJCSAgdmFjcmVsLT5jdXRvZmZzLk9s ZGVzdFhtaW4sICZkZWJ1Z19hbGxfZnJvemVuLAotCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCAm dmFjcmVsLT5vZmZudW0pKQotCQkJQXNzZXJ0KGZhbHNlKTsKLQotCQlBc3NlcnQocHJlc3VsdC5h bGxfZnJvemVuID09IGRlYnVnX2FsbF9mcm96ZW4pOwotCi0JCUFzc2VydCghVHJhbnNhY3Rpb25J ZElzVmFsaWQoZGVidWdfY3V0b2ZmKSB8fAotCQkJICAgZGVidWdfY3V0b2ZmID09IHByZXN1bHQu dm1fY29uZmxpY3RfaG9yaXpvbik7Ci0JfQotI2VuZGlmCi0KIAkvKgogCSAqIE5vdyBzYXZlIGRl dGFpbHMgb2YgdGhlIExQX0RFQUQgaXRlbXMgZnJvbSB0aGUgcGFnZSBpbiB2YWNyZWwKIAkgKi8K QEAgLTIwNzYsOCArMjA0OCw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAJLyogRGlkIHdlIGZpbmQgTFBfREVBRCBpdGVtcz8gKi8KIAkqaGFzX2xwZGVhZF9pdGVtcyA9 IChwcmVzdWx0LmxwZGVhZF9pdGVtcyA+IDApOwogCi0JQXNzZXJ0KCFwcmVzdWx0LmFsbF92aXNp YmxlIHx8ICEoKmhhc19scGRlYWRfaXRlbXMpKTsKLQogCS8qCiAJICogRm9yIHRoZSBwdXJwb3Nl cyBvZiBsb2dnaW5nLCBjb3VudCB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSB3YXMgbmV3bHkKIAkg KiBzZXQgYWxsLXZpc2libGUgYW5kLCBwb3RlbnRpYWxseSwgYWxsLWZyb3plbi4KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaAppbmRleCBiODU2NDg0NTZlOS4uMGI5YmIxYzliMTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAg LTIzNSwxOSArMjM1LDEyIEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUmVzdWx0CiAJaW50 CQkJcmVjZW50bHlfZGVhZF90dXBsZXM7CiAKIAkvKgotCSAqIGFsbF92aXNpYmxlIGFuZCBhbGxf ZnJvemVuIGluZGljYXRlIHRoZSBzdGF0dXMgb2YgdGhlIHBhZ2UgYXMgcmVmbGVjdGVkCi0JICog aW4gdGhlIHZpc2liaWxpdHkgbWFwIGFmdGVyIHBydW5pbmcsIGZyZWV6aW5nLCBhbmQgc2V0dGlu ZyBhbnkgcGFnZXMKLQkgKiBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCisJICog b2xkX3ZtYml0cyBhcmUgdGhlIHN0YXRlIG9mIHRoZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3pl biBiaXRzIGluIHRoZQorCSAqIHZpc2liaWxpdHkgbWFwIGJlZm9yZSB1cGRhdGluZyBpdCBkdXJp bmcgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCisJICogbmV3X3ZtYml0cyBhcmUgdGhlIHN0YXRlIG9m IHRob3NlIGJpdHMgYWZ0ZXIgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCiAJICoKLQkgKiB2bV9jb25m bGljdF9ob3Jpem9uIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFn ZQotCSAqIChvbGRlciB0aGFuIE9sZGVzdFhtaW4pLiAgSXQgd2lsbCBvbmx5IGJlIHZhbGlkIGlm IHdlIGRpZCBub3Qgc2V0IHRoZQotCSAqIHBhZ2UgYWxsLWZyb3plbiBpbiB0aGUgVk0uCi0JICoK LQkgKiBUaGVzZSBhcmUgb25seSBzZXQgaWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBp cyBzZXQuCisJICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBIRUFQX1BBR0VfUFJVTkVfVVBE QVRFX1ZNIG9wdGlvbiBpcyBzZXQuCiAJICovCi0JYm9vbAkJYWxsX3Zpc2libGU7Ci0JYm9vbAkJ YWxsX2Zyb3plbjsKLQlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0X2hvcml6b247CiAJdWludDgJ CW9sZF92bWJpdHM7CiAJdWludDgJCW5ld192bWJpdHM7CiAKLS0gCjIuNDMuMAoK --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0013-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Disposition: attachment; filename="v12-0013-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcict12 RnJvbSAxMzQ1YjA4MWVmZjhlYWJjODRlZTcwMjZhNmJlMWE0ZWU1YTQ1ZjQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDE4IEp1bCAyMDI1IDE2OjMwOjA0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMTMvMjBdIFJlbmFtZSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSB0bwog R2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkKCkN1cnJlbnRseSwgd2Ugb25seSB1c2UgR2xvYmFs VmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgdG8gY2hlY2sgaWYgYQp0dXBsZSdzIHhtYXggaXMgdmlz aWJsZSB0byBhbGwsIG1lYW5pbmcgd2UgY2FuIHJlbW92ZSBpdC4gQnV0IGZ1dHVyZQpjb21taXRz IHdpbGwgdXNlIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCgpIHRvIHRlc3QgaWYgYSB0dXBs ZSdzIHhtaW4KaXMgdmlzaWJsZSB0byBhbGwgZm9yIHRoZSBwdXJwb3NlcyBvZiBkZXRlcm1pbmlu ZyBpZiBzZXR0aW5nIHRoZSBwYWdlCmFsbC12aXNpYmxlIGluIHRoZSBWTS4gSW4gdGhhdCBjYXNl LCBpdCBtYWtlcyBtb3JlIHNlbnNlIHRvIGNhbGwgdGhlCmZ1bmN0aW9uIEdsb2JhbFZpc1hpZFZp c2libGVUb0FsbCgpLgoKUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBn bWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHku YyB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAg ICB8IDE0ICsrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1 bS5jICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jICAg ICAgICAgfCAxMyArKysrKystLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggICAg ICAgICAgICAgICAgIHwgIDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCsp LCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1fdmlzaWJpbGl0eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2li aWxpdHkuYwppbmRleCAwNWY2OTQ2ZmU2MC4uNGViYzhhYmRiZWIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwpAQCAtMTQ0Nyw3ICsxNDQ3LDcgQEAgSGVh cFR1cGxlU2F0aXNmaWVzTm9uVmFjdXVtYWJsZShIZWFwVHVwbGUgaHR1cCwgU25hcHNob3Qgc25h cHNob3QsCiAJewogCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikpOwog Ci0JCWlmIChHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc25hcHNob3QtPnZpc3Rlc3QsIGRl YWRfYWZ0ZXIpKQorCQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHNuYXBzaG90LT52aXN0 ZXN0LCBkZWFkX2FmdGVyKSkKIAkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOwogCX0KIAllbHNlCkBA IC0xNTEyLDggKzE1MTIsOCBAQCBIZWFwVHVwbGVJc1N1cmVseURlYWQoSGVhcFR1cGxlIGh0dXAs IEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0KQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBEZWxldGVy IGNvbW1pdHRlZCwgc28gdHVwbGUgaXMgZGVhZCBpZiB0aGUgWElEIGlzIG9sZCBlbm91Z2guICov Ci0JcmV0dXJuIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0LAotCQkJCQkJCQkJ ICAgSGVhcFR1cGxlSGVhZGVyR2V0UmF3WG1heCh0dXBsZSkpOworCXJldHVybiBHbG9iYWxWaXNY aWRWaXNpYmxlVG9BbGwodmlzdGVzdCwKKwkJCQkJCQkJCUhlYXBUdXBsZUhlYWRlckdldFJhd1ht YXgodHVwbGUpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXgg NjYzNzk2NmU5MjcuLjAyMTFlZmZlZWM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwpAQCAtMjMxLDcgKzIzMSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIpCiAJICovCiAJdmlzdGVzdCA9IEdsb2JhbFZpc1Rlc3RGb3IocmVs YXRpb24pOwogCi0JaWYgKCFHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQodmlzdGVzdCwgcHJ1 bmVfeGlkKSkKKwlpZiAoIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCBwcnVuZV94 aWQpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtNTgwLDkgKzU4MCw5IEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIERldGVy bWluaW5nIEhUU1Ygb25seSBvbmNlIGZvciBlYWNoIHR1cGxlIGlzIHJlcXVpcmVkIGZvciBjb3Jy ZWN0bmVzcywKIAkgKiB0byBkZWFsIHdpdGggY2FzZXMgd2hlcmUgcnVubmluZyBIVFNWIHR3aWNl IGNvdWxkIHJlc3VsdCBpbiBkaWZmZXJlbnQKIAkgKiByZXN1bHRzLiAgRm9yIGV4YW1wbGUsIFJF Q0VOVExZX0RFQUQgY2FuIHR1cm4gdG8gREVBRCBpZiBhbm90aGVyCi0JICogY2hlY2tlZCBpdGVt IGNhdXNlcyBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKCkgdG8gdXBkYXRlIHRoZQot CSAqIGhvcml6b24sIG9yIElOU0VSVF9JTl9QUk9HUkVTUyBjYW4gY2hhbmdlIHRvIERFQUQgaWYg dGhlIGluc2VydGluZwotCSAqIHRyYW5zYWN0aW9uIGFib3J0cy4KKwkgKiBjaGVja2VkIGl0ZW0g Y2F1c2VzIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCgpIHRvIHVwZGF0ZSB0aGUgaG9yaXpvbiwK KwkgKiBvciBJTlNFUlRfSU5fUFJPR1JFU1MgY2FuIGNoYW5nZSB0byBERUFEIGlmIHRoZSBpbnNl cnRpbmcgdHJhbnNhY3Rpb24KKwkgKiBhYm9ydHMuCiAJICoKIAkgKiBJdCdzIGFsc28gZ29vZCBm b3IgcGVyZm9ybWFuY2UuIE1vc3QgY29tbW9ubHkgdHVwbGVzIHdpdGhpbiBhIHBhZ2UgYXJlCiAJ ICogc3RvcmVkIGF0IGRlY3JlYXNpbmcgb2Zmc2V0cyAod2hpbGUgdGhlIGl0ZW1zIGFyZSBzdG9y ZWQgYXQgaW5jcmVhc2luZwpAQCAtMTE4MiwxMSArMTE4MiwxMSBAQCBoZWFwX3BydW5lX3NhdGlz Zmllc192YWN1dW0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgSGVhcFR1cGxlIHR1cCwgQnVmZmVyIGJ1 ZmZlcikKIAkgKiBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlIHR1cGxlIGlzIGNvbnNpZGVy ZWQgZGVhZCB3aGVuIGNvbXBhcmVkCiAJICogd2l0aCB0aGUgcHJvdmlkZWQgR2xvYmFsVmlzU3Rh dGUuIE9uLWFjY2VzcyBwcnVuaW5nIGRvZXMgbm90IHByb3ZpZGUKIAkgKiBWYWN1dW1DdXRvZmZz LiBBbmQgZm9yIHZhY3V1bSwgZXZlbiBpZiB0aGUgdHVwbGUncyB4bWF4IGlzIG5vdCBvbGRlcgot CSAqIHRoYW4gT2xkZXN0WG1pbiwgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgY291bGQg ZmluZCB0aGUgcm93IGRlYWQKLQkgKiBpZiB0aGUgR2xvYmFsVmlzU3RhdGUgaGFzIGJlZW4gdXBk YXRlZCBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZworCSAqIHRoYW4gT2xkZXN0WG1p biwgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkgY291bGQgZmluZCB0aGUgcm93IGRlYWQgaWYK KwkgKiB0aGUgR2xvYmFsVmlzU3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBzaW5jZSB0aGUgYmVnaW5u aW5nIG9mIHZhY3V1bWluZwogCSAqIHRoZSByZWxhdGlvbi4KIAkgKi8KLQlpZiAoR2xvYmFsVmlz VGVzdElzUmVtb3ZhYmxlWGlkKHByc3RhdGUtPnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCWlmIChH bG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwocHJzdGF0ZS0+dmlzdGVzdCwgZGVhZF9hZnRlcikpCiAJ CXJldHVybiBIRUFQVFVQTEVfREVBRDsKIAogCXJldHVybiByZXM7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGd2YWN1dW0uYwppbmRleCA4ZjhhMWFkNzc5Ni4uNDk2Y2NhNjk0MTAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpAQCAtNTM2LDcgKzUzNiw3IEBAIHZhY3V1bVJl ZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVsYXRpb24gaW5kZXgsIFJlbGF0aW9uIGhlYXByZWwsIEJ1 ZmZlciBidWZmZXIpCiAJCSAqLwogCQlpZiAoZHQtPnR1cHN0YXRlID09IFNQR0lTVF9SRURJUkVD VCAmJgogCQkJKCFUcmFuc2FjdGlvbklkSXNWYWxpZChkdC0+eGlkKSB8fAotCQkJIEdsb2JhbFZp c1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0LCBkdC0+eGlkKSkpCisJCQkgR2xvYmFsVmlzWGlk VmlzaWJsZVRvQWxsKHZpc3Rlc3QsIGR0LT54aWQpKSkKIAkJewogCQkJZHQtPnR1cHN0YXRlID0g U1BHSVNUX1BMQUNFSE9MREVSOwogCQkJQXNzZXJ0KG9wYXF1ZS0+blJlZGlyZWN0aW9uID4gMCk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCmluZGV4IDIwMGY3MmM2ZTI1Li5mNjdmMDFj MTdjMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKQEAgLTQxODEsOCArNDE4MSw3 IEBAIEdsb2JhbFZpc1VwZGF0ZSh2b2lkKQogICogU2VlIGNvbW1lbnQgZm9yIEdsb2JhbFZpc1N0 YXRlIGZvciBkZXRhaWxzLgogICovCiBib29sCi1HbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxs WGlkKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwKLQkJCQkJCQkJRnVsbFRyYW5zYWN0aW9uSWQgZnhp ZCkKK0dsb2JhbFZpc0Z1bGxYaWRWaXNpYmxlVG9BbGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBG dWxsVHJhbnNhY3Rpb25JZCBmeGlkKQogewogCS8qCiAJICogSWYgZnhpZCBpcyBvbGRlciB0aGFu IG1heWJlX25lZWRlZCBib3VuZCwgaXQgZGVmaW5pdGVseSBpcyB2aXNpYmxlIHRvCkBAIC00MjIz LDcgKzQyMjIsNyBAQCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKEdsb2JhbFZpc1N0 YXRlICpzdGF0ZSwKICAqIHJlbGZyb3plbnhpZCkuCiAgKi8KIGJvb2wKLUdsb2JhbFZpc1Rlc3RJ c1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKQor R2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rp b25JZCB4aWQpCiB7CiAJRnVsbFRyYW5zYWN0aW9uSWQgZnhpZDsKIApAQCAtNDIzNyw3ICs0MjM2 LDcgQEAgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwg VHJhbnNhY3Rpb25JZCB4aWQpCiAJICovCiAJZnhpZCA9IEZ1bGxYaWRSZWxhdGl2ZVRvKHN0YXRl LT5kZWZpbml0ZWx5X25lZWRlZCwgeGlkKTsKIAotCXJldHVybiBHbG9iYWxWaXNUZXN0SXNSZW1v dmFibGVGdWxsWGlkKHN0YXRlLCBmeGlkKTsKKwlyZXR1cm4gR2xvYmFsVmlzRnVsbFhpZFZpc2li bGVUb0FsbChzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCkBAIC00MjUxLDEyICs0MjUwLDEyIEBAIEds b2JhbFZpc0NoZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1bGxUcmFuc2FjdGlv bklkIGZ4aWQpCiAKIAlzdGF0ZSA9IEdsb2JhbFZpc1Rlc3RGb3IocmVsKTsKIAotCXJldHVybiBH bG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKHN0YXRlLCBmeGlkKTsKKwlyZXR1cm4gR2xv YmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbChzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCiAgKiBDb252 ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBHbG9iYWxWaXNUZXN0Rm9yKCkgYW5kCi0gKiBHbG9iYWxW aXNUZXN0SXNSZW1vdmFibGVYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgorICogR2xvYmFsVmlz VGVzdElzVmlzaWJsZVhpZCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAgKi8KIGJvb2wKIEdsb2Jh bFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpCkBA IC00MjY1LDcgKzQyNjQsNyBAQCBHbG9iYWxWaXNDaGVja1JlbW92YWJsZVhpZChSZWxhdGlvbiBy ZWwsIFRyYW5zYWN0aW9uSWQgeGlkKQogCiAJc3RhdGUgPSBHbG9iYWxWaXNUZXN0Rm9yKHJlbCk7 CiAKLQlyZXR1cm4gR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHN0YXRlLCB4aWQpOworCXJl dHVybiBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoc3RhdGUsIHhpZCk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggYi9zcmMvaW5jbHVkZS91dGlscy9z bmFwbWdyLmgKaW5kZXggNjA0YzFmOTAyMTYuLmEwZWEyY2ZjZWEyIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy9zbmFwbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcG1nci5o CkBAIC0xMDAsOCArMTAwLDggQEAgZXh0ZXJuIGNoYXIgKkV4cG9ydFNuYXBzaG90KFNuYXBzaG90 IHNuYXBzaG90KTsKICAqLwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlz U3RhdGU7CiBleHRlcm4gR2xvYmFsVmlzU3RhdGUgKkdsb2JhbFZpc1Rlc3RGb3IoUmVsYXRpb24g cmVsKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNT dGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rl c3RJc1JlbW92YWJsZUZ1bGxYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rp b25JZCBmeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChHbG9iYWxW aXNTdGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZp c0Z1bGxYaWRWaXNpYmxlVG9BbGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rp b25JZCBmeGlkKTsKIGV4dGVybiBib29sIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0 aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJuIGJvb2wgR2xvYmFsVmlzQ2hlY2tS ZW1vdmFibGVGdWxsWGlkKFJlbGF0aW9uIHJlbCwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCk7CiAK LS0gCjIuNDMuMAoK --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0012-Remove-xl_heap_visible-entirely.patch" Content-Disposition: attachment; filename="v12-0012-Remove-xl_heap_visible-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcicq11 RnJvbSAxOTgwZWY5MDZjYjEwNGRhM2E5N2E1OTdlZTY5ZGU3M2EyMWJkZjBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjMwOjQyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMTIvMjBdIFJlbW92ZSB4bF9oZWFwX3Zpc2libGUgZW50aXJlbHkKClRoZXJlIGFy ZSBub3cgbm8gdXNlcnMgb2YgdGhpcywgc28gZWxpbWluYXRlIGl0IGVudGlyZWx5LgotLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jICAgICAgfCAgIDMgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgfCAgNTQgKy0tLS0tLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgfCAxNjAgKystLS0tLS0tLS0tLS0tLS0t LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgfCAgIDQgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAgMTAgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyAgfCAxMDkgKy0tLS0tLS0tLS0tLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyAgIHwgIDEwIC0tCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIHwgICAxIC0KIHNyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAgICAgfCAgMTIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW1feGxvZy5oICAgICAgICAgfCAgMjAgLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvdmlz aWJpbGl0eW1hcC5oICAgICAgIHwgIDExICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0 eW1hcGRlZnMuaCAgIHwgICA5IC0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAg ICAgICAgIHwgICAxIC0KIDEzIGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDM3MCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1h c2suYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jCmluZGV4IGJiMjYwY2Zm YTY4Li4xZmZmMDEzODNiMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9i dWZtYXNrLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKQEAgLTU2 LDggKzU2LDcgQEAgbWFza19wYWdlX2hpbnRfYml0cyhQYWdlIHBhZ2UpCiAKIAkvKgogCSAqIER1 cmluZyByZXBsYXksIGlmIHRoZSBwYWdlIExTTiBoYXMgYWR2YW5jZWQgcGFzdCBvdXIgWExPRyBy ZWNvcmQncyBMU04sCi0JICogd2UgZG9uJ3QgbWFyayB0aGUgcGFnZSBhbGwtdmlzaWJsZS4gU2Vl IGhlYXBfeGxvZ192aXNpYmxlKCkgZm9yCi0JICogZGV0YWlscy4KKwkgKiB3ZSBkb24ndCBtYXJr IHRoZSBwYWdlIGFsbC12aXNpYmxlLgogCSAqLwogCVBhZ2VDbGVhckFsbFZpc2libGUocGFnZSk7 CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IGNmZjUzMWE0ODAxLi42ZjE2MWE2ZWFi MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl ICJhY2Nlc3MvdmFsaWQuaCIKICNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIgogI2lu Y2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2d1dGlscy5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X2RhdGFiYXNlX2QuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKQEAgLTI1MjYsMTEg KzI1MjcsMTEgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFi bGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQllbHNlIGlmIChhbGxfZnJvemVuX3NldCkK IAkJewogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNpYmlsaXR5bWFwX3NldF92 bWJpdHMocmVsYXRpb24sCi0JCQkJCQkJCQkgQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwK LQkJCQkJCQkJCSB2bWJ1ZmZlciwKLQkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxF IHwKLQkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOworCQkJdmlzaWJpbGl0eW1h cF9zZXQocmVsYXRpb24sCisJCQkJCQkJICBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAor CQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwK KwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7CiAJCX0KIAogCQkvKgpAQCAtODgw MSw0OSArODgwMiw2IEBAIGJvdHRvbXVwX3NvcnRfYW5kX3NocmluayhUTV9JbmRleERlbGV0ZU9w ICpkZWxzdGF0ZSkKIAlyZXR1cm4gbmJsb2Nrc2Zhdm9yYWJsZTsKIH0KIAotLyoKLSAqIFBlcmZv cm0gWExvZ0luc2VydCBmb3IgYSBoZWFwLXZpc2libGUgb3BlcmF0aW9uLiAgJ2Jsb2NrJyBpcyB0 aGUgYmxvY2sKLSAqIGJlaW5nIG1hcmtlZCBhbGwtdmlzaWJsZSwgYW5kIHZtX2J1ZmZlciBpcyB0 aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlCi0gKiBjb3JyZXNwb25kaW5nIHZpc2liaWxpdHkgbWFw IGJsb2NrLiAgQm90aCBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gbW9kaWZpZWQKLSAqIGFuZCBk aXJ0aWVkLgotICoKLSAqIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIGNvbWVzIGZyb20gdGhlIGxh cmdlc3QgeG1pbiBvbiB0aGUgcGFnZSBiZWluZwotICogbWFya2VkIGFsbC12aXNpYmxlLiAgUkVE TyByb3V0aW5lIHVzZXMgaXQgdG8gZ2VuZXJhdGUgcmVjb3ZlcnkgY29uZmxpY3RzLgotICoKLSAq IElmIGNoZWNrc3VtcyBvciB3YWxfbG9nX2hpbnRzIGFyZSBlbmFibGVkLCB3ZSBtYXkgYWxzbyBn ZW5lcmF0ZSBhIGZ1bGwtcGFnZQotICogaW1hZ2Ugb2YgaGVhcF9idWZmZXIuIE90aGVyd2lzZSwg d2Ugb3B0aW1pemUgYXdheSB0aGUgRlBJIChieSBzcGVjaWZ5aW5nCi0gKiBSRUdCVUZfTk9fSU1B R0UgZm9yIHRoZSBoZWFwIGJ1ZmZlciksIGluIHdoaWNoIGNhc2UgdGhlIGNhbGxlciBzaG91bGQg Km5vdCoKLSAqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLgotICovCi1YTG9nUmVjUHRyCi1s b2dfaGVhcF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVmZmVyLCBCdWZmZXIg dm1fYnVmZmVyLAotCQkJCSBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCB1 aW50OCB2bWZsYWdzKQotewotCXhsX2hlYXBfdmlzaWJsZSB4bHJlYzsKLQlYTG9nUmVjUHRyCXJl Y3B0cjsKLQl1aW50OAkJZmxhZ3M7Ci0KLQlBc3NlcnQoQnVmZmVySXNWYWxpZChoZWFwX2J1ZmZl cikpOwotCUFzc2VydChCdWZmZXJJc1ZhbGlkKHZtX2J1ZmZlcikpOwotCi0JeGxyZWMuc25hcHNo b3RDb25mbGljdEhvcml6b24gPSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKLQl4bHJlYy5mbGFn cyA9IHZtZmxhZ3M7Ci0JaWYgKFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rpbmco cmVsKSkKLQkJeGxyZWMuZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMOwot CVhMb2dCZWdpbkluc2VydCgpOwotCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZIZWFw VmlzaWJsZSk7Ci0KLQlYTG9nUmVnaXN0ZXJCdWZmZXIoMCwgdm1fYnVmZmVyLCAwKTsKLQotCWZs YWdzID0gUkVHQlVGX1NUQU5EQVJEOwotCWlmICghWExvZ0hpbnRCaXRJc05lZWRlZCgpKQotCQlm bGFncyB8PSBSRUdCVUZfTk9fSU1BR0U7Ci0JWExvZ1JlZ2lzdGVyQnVmZmVyKDEsIGhlYXBfYnVm ZmVyLCBmbGFncyk7Ci0KLQlyZWNwdHIgPSBYTG9nSW5zZXJ0KFJNX0hFQVAyX0lELCBYTE9HX0hF QVAyX1ZJU0lCTEUpOwotCi0JcmV0dXJuIHJlY3B0cjsKLX0KIAogLyoKICAqIFBlcmZvcm0gWExv Z0luc2VydCBmb3IgYSBoZWFwLXVwZGF0ZSBvcGVyYXRpb24uICBDYWxsZXIgbXVzdCBhbHJlYWR5 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCA1ODcyZjEzMzk3Zi4uOWYx NmJhNjhkMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9n LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtNTMsNiAr NTMsOCBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQog CQkgICAoeGxyZWMuZmxhZ3MgJiAoWExIUF9IQVNfUkVESVJFQ1RJT05TIHwgWExIUF9IQVNfREVB RF9JVEVNUykpID09IDApOwogCiAJdm1mbGFncyA9IHhscmVjLmZsYWdzICYgVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTOworCS8qIE11c3QgbmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdpdGhvdXQg YWxzbyBzZXR0aW5nIGFsbF92aXNpYmxlIGJpdCAqLworCUFzc2VydCh2bWZsYWdzICE9IFZJU0lC SUxJVFlNQVBfQUxMX0ZST1pFTik7CiAKIAkvKgogCSAqIEFmdGVyIHhsX2hlYXBfcHJ1bmUgaXMg dGhlIG9wdGlvbmFsIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24uCkBAIC0yNDMsOSArMjQ1LDcg QEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKiB0 aGUgVk0gaXMgc2V0LgogCSAqCiAJICogSW4gcmVjb3ZlcnksIHdlIGV4cGVjdCBubyBvdGhlciB3 cml0ZXJzLCBzbyB3cml0aW5nIHRvIHRoZSBWTSBwYWdlCi0JICogd2l0aG91dCBob2xkaW5nIGEg bG9jayBvbiB0aGUgaGVhcCBwYWdlIGlzIGNvbnNpZGVyZWQgc2FmZSBlbm91Z2guIEl0Ci0JICog aXMgZG9uZSB0aGlzIHdheSB3aGVuIHJlcGxheWluZyB4bF9oZWFwX3Zpc2libGUgcmVjb3JkcyAo c2VlCi0JICogaGVhcF94bG9nX3Zpc2libGUoKSkuCisJICogd2l0aG91dCBob2xkaW5nIGEgbG9j ayBvbiB0aGUgaGVhcCBwYWdlIGlzIGNvbnNpZGVyZWQgc2FmZSBlbm91Z2guCiAJICovCiAJaWYg KHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMgJiYKIAkJWExvZ1JlYWRCdWZmZXJG b3JSZWRvRXh0ZW5kZWQocmVjb3JkLCAxLApAQCAtMjYxLDcgKzI2MSw3IEBAIGhlYXBfeGxvZ19w cnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWlmIChQYWdlSXNOZXcodm1w YWdlKSkKIAkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1NaLCAwKTsKIAotCQlvbGRfdm1iaXRzID0g dmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKHJlbG4sIGJsa25vLCB2bWJ1ZmZlciwgdm1mbGFncyk7 CisJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldChyZWxuLCBibGtubywgdm1idWZmZXIs IHZtZmxhZ3MpOwogCiAJCS8qIE9ubHkgc2V0IFZNIHBhZ2UgTFNOIGlmIHdlIG1vZGlmaWVkIHRo ZSBwYWdlICovCiAJCWlmIChvbGRfdm1iaXRzICE9IHZtZmxhZ3MpCkBAIC0yODAsMTQyICsyODAs NiBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlY TG9nUmVjb3JkUGFnZVdpdGhGcmVlU3BhY2UocmxvY2F0b3IsIGJsa25vLCBmcmVlc3BhY2UpOwog fQogCi0vKgotICogUmVwbGF5IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgotICoKLSAqIFRo ZSBjcml0aWNhbCBpbnRlZ3JpdHkgcmVxdWlyZW1lbnQgaGVyZSBpcyB0aGF0IHdlIG11c3QgbmV2 ZXIgZW5kIHVwIHdpdGgKLSAqIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSB2aXNpYmlsaXR5IG1hcCBi aXQgaXMgc2V0LCBhbmQgdGhlIHBhZ2UtbGV2ZWwKLSAqIFBEX0FMTF9WSVNJQkxFIGJpdCBpcyBj bGVhci4gIElmIHRoYXQgd2VyZSB0byBvY2N1ciwgdGhlbiBhIHN1YnNlcXVlbnQKLSAqIHBhZ2Ug bW9kaWZpY2F0aW9uIHdvdWxkIGZhaWwgdG8gY2xlYXIgdGhlIHZpc2liaWxpdHkgbWFwIGJpdC4K LSAqLwotc3RhdGljIHZvaWQKLWhlYXBfeGxvZ192aXNpYmxlKFhMb2dSZWFkZXJTdGF0ZSAqcmVj b3JkKQotewotCVhMb2dSZWNQdHIJbHNuID0gcmVjb3JkLT5FbmRSZWNQdHI7Ci0JeGxfaGVhcF92 aXNpYmxlICp4bHJlYyA9ICh4bF9oZWFwX3Zpc2libGUgKikgWExvZ1JlY0dldERhdGEocmVjb3Jk KTsKLQlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKLQlCdWZmZXIJCWJ1ZmZlcjsK LQlQYWdlCQlwYWdlOwotCVJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yOwotCUJsb2NrTnVtYmVyIGJs a25vOwotCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKLQotCUFzc2VydCgoeGxyZWMtPmZsYWdzICYg VklTSUJJTElUWU1BUF9YTE9HX1ZBTElEX0JJVFMpID09IHhscmVjLT5mbGFncyk7Ci0KLQlYTG9n UmVjR2V0QmxvY2tUYWcocmVjb3JkLCAxLCAmcmxvY2F0b3IsIE5VTEwsICZibGtubyk7Ci0KLQkv KgotCSAqIElmIHRoZXJlIGFyZSBhbnkgSG90IFN0YW5kYnkgdHJhbnNhY3Rpb25zIHJ1bm5pbmcg dGhhdCBoYXZlIGFuIHhtaW4KLQkgKiBob3Jpem9uIG9sZCBlbm91Z2ggdGhhdCB0aGlzIHBhZ2Ug aXNuJ3QgYWxsLXZpc2libGUgZm9yIHRoZW0sIHRoZXkKLQkgKiBtaWdodCBpbmNvcnJlY3RseSBk ZWNpZGUgdGhhdCBhbiBpbmRleC1vbmx5IHNjYW4gY2FuIHNraXAgYSBoZWFwIGZldGNoLgotCSAq Ci0JICogTkI6IEl0IG1pZ2h0IGJlIGJldHRlciB0byB0aHJvdyBzb21lIGtpbmQgb2YgInNvZnQi IGNvbmZsaWN0IGhlcmUgdGhhdAotCSAqIGZvcmNlcyBhbnkgaW5kZXgtb25seSBzY2FuIHRoYXQg aXMgaW4gZmxpZ2h0IHRvIHBlcmZvcm0gaGVhcCBmZXRjaGVzLAotCSAqIHJhdGhlciB0aGFuIGtp bGxpbmcgdGhlIHRyYW5zYWN0aW9uIG91dHJpZ2h0LgotCSAqLwotCWlmIChJbkhvdFN0YW5kYnkp Ci0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5zbmFwc2hvdENv bmZsaWN0SG9yaXpvbiwKLQkJCQkJCQkJCQkJeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9Y TE9HX0NBVEFMT0dfUkVMLAotCQkJCQkJCQkJCQlybG9jYXRvcik7Ci0KLQkvKgotCSAqIFJlYWQg dGhlIGhlYXAgcGFnZSwgaWYgaXQgc3RpbGwgZXhpc3RzLiBJZiB0aGUgaGVhcCBmaWxlIGhhcyBk cm9wcGVkIG9yCi0JICogdHJ1bmNhdGVkIGxhdGVyIGluIHJlY292ZXJ5LCB3ZSBkb24ndCBuZWVk IHRvIHVwZGF0ZSB0aGUgcGFnZSwgYnV0IHdlJ2QKLQkgKiBiZXR0ZXIgc3RpbGwgdXBkYXRlIHRo ZSB2aXNpYmlsaXR5IG1hcC4KLQkgKi8KLQlhY3Rpb24gPSBYTG9nUmVhZEJ1ZmZlckZvclJlZG8o cmVjb3JkLCAxLCAmYnVmZmVyKTsKLQlpZiAoYWN0aW9uID09IEJMS19ORUVEU19SRURPKQotCXsK LQkJLyoKLQkJICogV2UgZG9uJ3QgYnVtcCB0aGUgTFNOIG9mIHRoZSBoZWFwIHBhZ2Ugd2hlbiBz ZXR0aW5nIHRoZSB2aXNpYmlsaXR5Ci0JCSAqIG1hcCBiaXQgKHVubGVzcyBjaGVja3N1bXMgb3Ig d2FsX2hpbnRfYml0cyBpcyBlbmFibGVkLCBpbiB3aGljaAotCQkgKiBjYXNlIHdlIG11c3QpLiBU aGlzIGV4cG9zZXMgdXMgdG8gdG9ybiBwYWdlIGhhemFyZHMsIGJ1dCBzaW5jZQotCQkgKiB3ZSdy ZSBub3QgaW5zcGVjdGluZyB0aGUgZXhpc3RpbmcgcGFnZSBjb250ZW50cyBpbiBhbnkgd2F5LCB3 ZQotCQkgKiBkb24ndCBjYXJlLgotCQkgKi8KLQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVy KTsKLQotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQotCQlpZiAoWExvZ0hpbnRCaXRJc05l ZWRlZCgpKQotCQkJUGFnZVNldExTTihwYWdlLCBsc24pOwotCi0JCU1hcmtCdWZmZXJEaXJ0eShi dWZmZXIpOwotCX0KLQllbHNlIGlmIChhY3Rpb24gPT0gQkxLX1JFU1RPUkVEKQotCXsKLQkJLyoK LQkJICogSWYgaGVhcCBibG9jayB3YXMgYmFja2VkIHVwLCB3ZSBhbHJlYWR5IHJlc3RvcmVkIGl0 IGFuZCB0aGVyZSdzCi0JCSAqIG5vdGhpbmcgbW9yZSB0byBkby4gKFRoaXMgY2FuIG9ubHkgaGFw cGVuIHdpdGggY2hlY2tzdW1zIG9yCi0JCSAqIHdhbF9sb2dfaGludHMgZW5hYmxlZC4pCi0JCSAq LwotCX0KLQotCWlmIChCdWZmZXJJc1ZhbGlkKGJ1ZmZlcikpCi0JewotCQlTaXplCQlzcGFjZSA9 IFBhZ2VHZXRGcmVlU3BhY2UoQnVmZmVyR2V0UGFnZShidWZmZXIpKTsKLQotCQlVbmxvY2tSZWxl YXNlQnVmZmVyKGJ1ZmZlcik7Ci0KLQkJLyoKLQkJICogU2luY2UgRlNNIGlzIG5vdCBXQUwtbG9n Z2VkIGFuZCBvbmx5IHVwZGF0ZWQgaGV1cmlzdGljYWxseSwgaXQKLQkJICogZWFzaWx5IGJlY29t ZXMgc3RhbGUgaW4gc3RhbmRieXMuICBJZiB0aGUgc3RhbmRieSBpcyBsYXRlciBwcm9tb3RlZAot CQkgKiBhbmQgcnVucyBWQUNVVU0sIGl0IHdpbGwgc2tpcCB1cGRhdGluZyBpbmRpdmlkdWFsIGZy ZWUgc3BhY2UKLQkJICogZmlndXJlcyBmb3IgcGFnZXMgdGhhdCBiZWNhbWUgYWxsLXZpc2libGUg KG9yIGFsbC1mcm96ZW4sIGRlcGVuZGluZwotCQkgKiBvbiB0aGUgdmFjdXVtIG1vZGUsKSB3aGlj aCBpcyB0cm91Ymxlc29tZSB3aGVuIEZyZWVTcGFjZU1hcFZhY3V1bQotCQkgKiBwcm9wYWdhdGVz IHRvbyBvcHRpbWlzdGljIGZyZWUgc3BhY2UgdmFsdWVzIHRvIHVwcGVyIEZTTSBsYXllcnM7Ci0J CSAqIGxhdGVyIGluc2VydGVycyB0cnkgdG8gdXNlIHN1Y2ggcGFnZXMgb25seSB0byBmaW5kIG91 dCB0aGF0IHRoZXkKLQkJICogYXJlIHVudXNhYmxlLiAgVGhpcyBjYW4gY2F1c2UgbG9uZyBzdGFs bHMgd2hlbiB0aGVyZSBhcmUgbWFueSBzdWNoCi0JCSAqIHBhZ2VzLgotCQkgKgotCQkgKiBGb3Jl c3RhbGwgdGhvc2UgcHJvYmxlbXMgYnkgdXBkYXRpbmcgRlNNJ3MgaWRlYSBhYm91dCBhIHBhZ2Ug dGhhdAotCQkgKiBpcyBiZWNvbWluZyBhbGwtdmlzaWJsZSBvciBhbGwtZnJvemVuLgotCQkgKgot CQkgKiBEbyB0aGlzIHJlZ2FyZGxlc3Mgb2YgYSBmdWxsLXBhZ2UgaW1hZ2UgYmVpbmcgYXBwbGll ZCwgc2luY2UgdGhlCi0JCSAqIEZTTSBkYXRhIGlzIG5vdCBpbiB0aGUgcGFnZSBhbnl3YXkuCi0J CSAqLwotCQlpZiAoeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKQotCQkJ WExvZ1JlY29yZFBhZ2VXaXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtubywgc3BhY2UpOwotCX0K LQotCS8qCi0JICogRXZlbiBpZiB3ZSBza2lwcGVkIHRoZSBoZWFwIHBhZ2UgdXBkYXRlIGR1ZSB0 byB0aGUgTFNOIGludGVybG9jaywgaXQncwotCSAqIHN0aWxsIHNhZmUgdG8gdXBkYXRlIHRoZSB2 aXNpYmlsaXR5IG1hcC4gIEFueSBXQUwgcmVjb3JkIHRoYXQgY2xlYXJzCi0JICogdGhlIHZpc2li aWxpdHkgbWFwIGJpdCBkb2VzIHNvIGJlZm9yZSBjaGVja2luZyB0aGUgcGFnZSBMU04sIHNvIGFu eQotCSAqIGJpdHMgdGhhdCBuZWVkIHRvIGJlIGNsZWFyZWQgd2lsbCBzdGlsbCBiZSBjbGVhcmVk LgotCSAqLwotCWlmIChYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDAsIFJC TV9aRVJPX09OX0VSUk9SLCBmYWxzZSwKLQkJCQkJCQkJCSAgJnZtYnVmZmVyKSA9PSBCTEtfTkVF RFNfUkVETykKLQl7Ci0JCVBhZ2UJCXZtcGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpOwot CQlSZWxhdGlvbglyZWxuOwotCQl1aW50OAkJdm1iaXRzOwotCi0JCS8qIGluaXRpYWxpemUgdGhl IHBhZ2UgaWYgaXQgd2FzIHJlYWQgYXMgemVyb3MgKi8KLQkJaWYgKFBhZ2VJc05ldyh2bXBhZ2Up KQotCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1osIDApOwotCi0JCS8qIHJlbW92ZSBWSVNJQklM SVRZTUFQX1hMT0dfKiAqLwotCQl2bWJpdHMgPSB4bHJlYy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQ X1ZBTElEX0JJVFM7Ci0KLQkJLyoKLQkJICogWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQg bG9ja2VkIHRoZSBidWZmZXIuIEJ1dAotCQkgKiB2aXNpYmlsaXR5bWFwX3NldCB3aWxsIGhhbmRs ZSBsb2NraW5nIGl0c2VsZi4KLQkJICovCi0JCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9M T0NLX1VOTE9DSyk7Ci0KLQkJcmVsbiA9IENyZWF0ZUZha2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9y KTsKLQotCQl2aXNpYmlsaXR5bWFwX3NldChyZWxuLCBibGtubywgSW52YWxpZEJ1ZmZlciwgbHNu LCB2bWJ1ZmZlciwKLQkJCQkJCSAgeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCB2bWJp dHMpOwotCi0JCVJlbGVhc2VCdWZmZXIodm1idWZmZXIpOwotCQlGcmVlRmFrZVJlbGNhY2hlRW50 cnkocmVsbik7Ci0JfQotCWVsc2UgaWYgKEJ1ZmZlcklzVmFsaWQodm1idWZmZXIpKQotCQlVbmxv Y2tSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKLX0KLQogLyoKICAqIEdpdmVuIGFuICJpbmZvYml0 cyIgZmllbGQgZnJvbSBhbiBYTG9nIHJlY29yZCwgc2V0IHRoZSBjb3JyZWN0IGJpdHMgaW4gdGhl CiAgKiBnaXZlbiBpbmZvbWFzayBhbmQgaW5mb21hc2syIGZvciB0aGUgdHVwbGUgdG91Y2hlZCBi eSB0aGUgcmVjb3JkLgpAQCAtNzkzLDkgKzY1Nyw3IEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQo WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICogdGhlIFZNIGlzIHNldC4KIAkgKgogCSAqIElu IHJlY292ZXJ5LCB3ZSBleHBlY3Qgbm8gb3RoZXIgd3JpdGVycywgc28gd3JpdGluZyB0byB0aGUg Vk0gcGFnZQotCSAqIHdpdGhvdXQgaG9sZGluZyBhIGxvY2sgb24gdGhlIGhlYXAgcGFnZSBpcyBj b25zaWRlcmVkIHNhZmUgZW5vdWdoLiBJdAotCSAqIGlzIGRvbmUgdGhpcyB3YXkgd2hlbiByZXBs YXlpbmcgeGxfaGVhcF92aXNpYmxlIHJlY29yZHMgKHNlZQotCSAqIGhlYXBfeGxvZ192aXNpYmxl KCkpLgorCSAqIHdpdGhvdXQgaG9sZGluZyBhIGxvY2sgb24gdGhlIGhlYXAgcGFnZSBpcyBjb25z aWRlcmVkIHNhZmUgZW5vdWdoLgogCSAqLwogCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJU X0FMTF9GUk9aRU5fU0VUICYmCiAJCVhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29y ZCwgMSwgUkJNX1pFUk9fT05fRVJST1IsIGZhbHNlLApAQCAtODA4LDE1ICs2NzAsMTQgQEAgaGVh cF94bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJaWYgKFBhZ2VJ c05ldyh2bXBhZ2UpKQogCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1osIDApOwogCi0JCXZpc2li aWxpdHltYXBfc2V0X3ZtYml0cyhyZWxuLCBibGtubywKLQkJCQkJCQkJIHZtYnVmZmVyLAotCQkJ CQkJCQkgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCSBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4pOwotCiAJCS8qCiAJCSAqIEl0IGlzIG5vdCBwb3NzaWJsZSB0aGF0IHRoZSBW TSB3YXMgYWxyZWFkeSBzZXQgZm9yIHRoaXMgaGVhcCBwYWdlLAogCQkgKiBzbyB0aGUgdm1idWZm ZXIgbXVzdCBoYXZlIGJlZW4gbW9kaWZpZWQgYW5kIG1hcmtlZCBkaXJ0eS4KIAkJICovCisJCXZp c2liaWxpdHltYXBfc2V0KHJlbG4sIGJsa25vLAorCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCSAg VklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8CisJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZS T1pFTik7CiAJCUFzc2VydChCdWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CiAJCVBhZ2VTZXRMU04o QnVmZmVyR2V0UGFnZSh2bWJ1ZmZlciksIGxzbik7CiAJCUZyZWVGYWtlUmVsY2FjaGVFbnRyeShy ZWxuKTsKQEAgLTEzOTcsOSArMTI1OCw2IEBAIGhlYXAyX3JlZG8oWExvZ1JlYWRlclN0YXRlICpy ZWNvcmQpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKIAkJCWhlYXBf eGxvZ19wcnVuZV9mcmVlemUocmVjb3JkKTsKIAkJCWJyZWFrOwotCQljYXNlIFhMT0dfSEVBUDJf VklTSUJMRToKLQkJCWhlYXBfeGxvZ192aXNpYmxlKHJlY29yZCk7Ci0JCQlicmVhazsKIAkJY2Fz ZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWhlYXBfeGxvZ19tdWx0aV9pbnNlcnQocmVj b3JkKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBkY2U5 MDI1ZDI2OC4uNjYzNzk2NmU5MjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBA IC05ODksOCArOTg5LDggQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCWlmIChkb19zZXRfdm0pCiAJCXsKIAkJCUFzc2VydChQ YWdlSXNBbGxWaXNpYmxlKHBhZ2UpKTsKLQkJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3Nl dF92bWJpdHMocmVsYXRpb24sIGJsb2Nrbm8sCi0JCQkJCQkJCQkJCQkgIHZtYnVmZmVyLCB2bWZs YWdzKTsKKwkJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldChyZWxhdGlvbiwgYmxvY2tu bywKKwkJCQkJCQkJCQkgICB2bWJ1ZmZlciwgdm1mbGFncyk7CiAKIAkJCWlmIChvbGRfdm1iaXRz ID09IHZtZmxhZ3MpCiAJCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXgg NzUyMDUxNzliODMuLjJkY2NhMDcxYTQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCkBAIC0xODg4LDggKzE4ODgsOCBAQCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3Rh dGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJCQlQYWdlU2V0QWxs VmlzaWJsZShwYWdlKTsKIAkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwogCi0JCQl2aXNpYmlsaXR5 bWFwX3NldF92bWJpdHModmFjcmVsLT5yZWwsIGJsa25vLAotCQkJCQkJCQkJIHZtYnVmZmVyLCBu ZXdfdm1iaXRzKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywKKwkJ CQkJCQkgIHZtYnVmZmVyLCBuZXdfdm1iaXRzKTsKIAogCQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwo dmFjcmVsLT5yZWwpKQogCQkJewpAQCAtMjc1Nyw5ICsyNzU3LDkgQEAgbGF6eV92YWN1dW1faGVh cF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZm ZXIsCiAJCUFzc2VydCghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CiAJCXNldF9wZF9hbGxfdmlz ID0gdHJ1ZTsKIAkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCXZpc2liaWxpdHltYXBfc2V0 X3ZtYml0cyh2YWNyZWwtPnJlbCwKLQkJCQkJCQkJIGJsa25vLAotCQkJCQkJCQkgdm1idWZmZXIs IHZtZmxhZ3MpOworCQl2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwKKwkJCQkJCSAgYmxr bm8sCisJCQkJCQkgIHZtYnVmZmVyLCB2bWZsYWdzKTsKIAkJY29uZmxpY3RfeGlkID0gdmlzaWJp bGl0eV9jdXRvZmZfeGlkOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1h cC5jCmluZGV4IGFhNDhhNDM2MTA4Li5mN2JhZDY4ZmZjNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3Zpc2liaWxpdHltYXAuYwpAQCAtMTQsOCArMTQsNyBAQAogICoJCXZpc2liaWxpdHltYXBf Y2xlYXIgIC0gY2xlYXIgYml0cyBmb3Igb25lIHBhZ2UgaW4gdGhlIHZpc2liaWxpdHkgbWFwCiAg KgkJdmlzaWJpbGl0eW1hcF9waW4JIC0gcGluIGEgbWFwIHBhZ2UgZm9yIHNldHRpbmcgYSBiaXQK ICAqCQl2aXNpYmlsaXR5bWFwX3Bpbl9vayAtIGNoZWNrIHdoZXRoZXIgY29ycmVjdCBtYXAgcGFn ZSBpcyBhbHJlYWR5IHBpbm5lZAotICoJCXZpc2liaWxpdHltYXBfc2V0CSAtIHNldCBiaXQocykg aW4gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlIGFuZCBsb2cKLSAqCQl2aXNpYmlsaXR5bWFwX3Nl dF92bWJpdHMgLSBzZXQgYml0KHMpIGluIGEgcGlubmVkIHBhZ2UKKyAqCQl2aXNpYmlsaXR5bWFw X3NldAkgLSBzZXQgYml0KHMpIGluIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQogICoJCXZpc2li aWxpdHltYXBfZ2V0X3N0YXR1cyAtIGdldCBzdGF0dXMgb2YgYml0cwogICoJCXZpc2liaWxpdHlt YXBfY291bnQgIC0gY291bnQgbnVtYmVyIG9mIGJpdHMgc2V0IGluIHZpc2liaWxpdHkgbWFwCiAg KgkJdmlzaWJpbGl0eW1hcF9wcmVwYXJlX3RydW5jYXRlIC0KQEAgLTIyMCwxMDggKzIxOSw2IEBA IHZpc2liaWxpdHltYXBfcGluX29rKEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciB2bWJ1ZikK IAlyZXR1cm4gQnVmZmVySXNWYWxpZCh2bWJ1ZikgJiYgQnVmZmVyR2V0QmxvY2tOdW1iZXIodm1i dWYpID09IG1hcEJsb2NrOwogfQogCi0vKgotICoJdmlzaWJpbGl0eW1hcF9zZXQgLSBzZXQgYml0 KHMpIG9uIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQotICoKLSAqIHJlY3B0ciBpcyB0aGUgTFNO IG9mIHRoZSBYTE9HIHJlY29yZCB3ZSdyZSByZXBsYXlpbmcsIGlmIHdlJ3JlIGluIHJlY292ZXJ5 LAotICogb3IgSW52YWxpZFhMb2dSZWNQdHIgaW4gbm9ybWFsIHJ1bm5pbmcuICBUaGUgVk0gcGFn ZSBMU04gaXMgYWR2YW5jZWQgdG8gdGhlCi0gKiBvbmUgcHJvdmlkZWQ7IGluIG5vcm1hbCBydW5u aW5nLCB3ZSBnZW5lcmF0ZSBhIG5ldyBYTE9HIHJlY29yZCBhbmQgc2V0IHRoZQotICogcGFnZSBM U04gdG8gdGhhdCB2YWx1ZSAodGhvdWdoIHRoZSBoZWFwIHBhZ2UncyBMU04gbWF5ICpub3QqIGJl IHVwZGF0ZWQ7Ci0gKiBzZWUgYmVsb3cpLiAgY3V0b2ZmX3hpZCBpcyB0aGUgbGFyZ2VzdCB4bWlu IG9uIHRoZSBwYWdlIGJlaW5nIG1hcmtlZAotICogYWxsLXZpc2libGU7IGl0IGlzIG5lZWRlZCBm b3IgSG90IFN0YW5kYnksIGFuZCBjYW4gYmUgSW52YWxpZFRyYW5zYWN0aW9uSWQKLSAqIGlmIHRo ZSBwYWdlIGNvbnRhaW5zIG5vIHR1cGxlcy4gIEl0IGNhbiBhbHNvIGJlIHNldCB0byBJbnZhbGlk VHJhbnNhY3Rpb25JZAotICogd2hlbiBhIHBhZ2UgdGhhdCBpcyBhbHJlYWR5IGFsbC12aXNpYmxl IGlzIGJlaW5nIG1hcmtlZCBhbGwtZnJvemVuLgotICoKLSAqIENhbGxlciBpcyBleHBlY3RlZCB0 byBzZXQgdGhlIGhlYXAgcGFnZSdzIFBEX0FMTF9WSVNJQkxFIGJpdCBiZWZvcmUgY2FsbGluZwot ICogdGhpcyBmdW5jdGlvbi4gRXhjZXB0IGluIHJlY292ZXJ5LCBjYWxsZXIgc2hvdWxkIGFsc28g cGFzcyB0aGUgaGVhcAotICogYnVmZmVyLiBXaGVuIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCBhbmQg d2UncmUgbm90IGluIHJlY292ZXJ5LCB3ZSBtdXN0IGFkZAotICogdGhlIGhlYXAgYnVmZmVyIHRv IHRoZSBXQUwgY2hhaW4gdG8gcHJvdGVjdCBpdCBmcm9tIGJlaW5nIHRvcm4uCi0gKgotICogWW91 IG11c3QgcGFzcyBhIGJ1ZmZlciBjb250YWluaW5nIHRoZSBjb3JyZWN0IG1hcCBwYWdlIHRvIHRo aXMgZnVuY3Rpb24uCi0gKiBDYWxsIHZpc2liaWxpdHltYXBfcGluIGZpcnN0IHRvIHBpbiB0aGUg cmlnaHQgb25lLiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgZG8KLSAqIGFueSBJL08uCi0gKgotICog UmV0dXJucyB0aGUgc3RhdGUgb2YgdGhlIHBhZ2UncyBWTSBiaXRzIGJlZm9yZSBzZXR0aW5nIGZs YWdzLgotICovCi11aW50OAotdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051 bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKLQkJCQkgIFhMb2dSZWNQdHIgcmVjcHRyLCBC dWZmZXIgdm1CdWYsIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkgIHVpbnQ4IGZsYWdz KQotewotCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9DSyhoZWFwQmxr KTsKLQl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJsayk7Ci0JdWlu dDgJCW1hcE9mZnNldCA9IEhFQVBCTEtfVE9fT0ZGU0VUKGhlYXBCbGspOwotCVBhZ2UJCXBhZ2U7 Ci0JdWludDgJICAgKm1hcDsKLQl1aW50OAkJc3RhdHVzOwotCi0jaWZkZWYgVFJBQ0VfVklTSUJJ TElUWU1BUAotCWVsb2coREVCVUcxLCAidm1fc2V0IGZsYWdzIDB4JTAyWCBmb3IgJXMgJWQiLAot CQkgZmxhZ3MsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIGhlYXBCbGspOwotI2VuZGlm Ci0KLQlBc3NlcnQoSW5SZWNvdmVyeSB8fCBYTG9nUmVjUHRySXNJbnZhbGlkKHJlY3B0cikpOwot CUFzc2VydChJblJlY292ZXJ5IHx8IFBhZ2VJc0FsbFZpc2libGUoQnVmZmVyR2V0UGFnZShoZWFw QnVmKSkpOwotCUFzc2VydCgoZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpID09IGZs YWdzKTsKLQotCS8qIE11c3QgbmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdpdGhvdXQgYWxzbyBz ZXR0aW5nIGFsbF92aXNpYmxlIGJpdCAqLwotCUFzc2VydChmbGFncyAhPSBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4pOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBoZWFwIHBh Z2UgcGlubmVkLCBpZiBwcmVzZW50ICovCi0JaWYgKEJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgJiYg QnVmZmVyR2V0QmxvY2tOdW1iZXIoaGVhcEJ1ZikgIT0gaGVhcEJsaykKLQkJZWxvZyhFUlJPUiwg Indyb25nIGhlYXAgYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwotCi0JQXNz ZXJ0KCFCdWZmZXJJc1ZhbGlkKGhlYXBCdWYpIHx8IEJ1ZmZlcklzRXhjbHVzaXZlTG9ja2VkKGhl YXBCdWYpKTsKLQotCS8qIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgcmlnaHQgVk0gcGFnZSBwaW5u ZWQgKi8KLQlpZiAoIUJ1ZmZlcklzVmFsaWQodm1CdWYpIHx8IEJ1ZmZlckdldEJsb2NrTnVtYmVy KHZtQnVmKSAhPSBtYXBCbG9jaykKLQkJZWxvZyhFUlJPUiwgIndyb25nIFZNIGJ1ZmZlciBwYXNz ZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQiKTsKLQotCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtQnVm KTsKLQltYXAgPSAodWludDggKikgUGFnZUdldENvbnRlbnRzKHBhZ2UpOwotCUxvY2tCdWZmZXIo dm1CdWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7Ci0KLQlzdGF0dXMgPSAobWFwW21hcEJ5dGVd ID4+IG1hcE9mZnNldCkgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7Ci0JaWYgKGZsYWdzICE9 IHN0YXR1cykKLQl7Ci0JCVNUQVJUX0NSSVRfU0VDVElPTigpOwotCi0JCW1hcFttYXBCeXRlXSB8 PSAoZmxhZ3MgPDwgbWFwT2Zmc2V0KTsKLQkJTWFya0J1ZmZlckRpcnR5KHZtQnVmKTsKLQotCQlp ZiAoUmVsYXRpb25OZWVkc1dBTChyZWwpKQotCQl7Ci0JCQlpZiAoWExvZ1JlY1B0cklzSW52YWxp ZChyZWNwdHIpKQotCQkJewotCQkJCUFzc2VydCghSW5SZWNvdmVyeSk7Ci0JCQkJcmVjcHRyID0g bG9nX2hlYXBfdmlzaWJsZShyZWwsIGhlYXBCdWYsIHZtQnVmLCBjdXRvZmZfeGlkLCBmbGFncyk7 Ci0KLQkJCQkvKgotCQkJCSAqIElmIGRhdGEgY2hlY2tzdW1zIGFyZSBlbmFibGVkIChvciB3YWxf bG9nX2hpbnRzPW9uKSwgd2UKLQkJCQkgKiBuZWVkIHRvIHByb3RlY3QgdGhlIGhlYXAgcGFnZSBm cm9tIGJlaW5nIHRvcm4uCi0JCQkJICoKLQkJCQkgKiBJZiBub3QsIHRoZW4gd2UgbXVzdCAqbm90 KiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4gSW4KLQkJCQkgKiB0aGlzIGNhc2UsIHRoZSBG UEkgZm9yIHRoZSBoZWFwIHBhZ2Ugd2FzIG9taXR0ZWQgZnJvbSB0aGUKLQkJCQkgKiBXQUwgcmVj b3JkIGluc2VydGVkIGFib3ZlLCBzbyBpdCB3b3VsZCBiZSBpbmNvcnJlY3QgdG8KLQkJCQkgKiB1 cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4KLQkJCQkgKi8KLQkJCQlpZiAoWExvZ0hpbnRCaXRJ c05lZWRlZCgpKQotCQkJCXsKLQkJCQkJUGFnZQkJaGVhcFBhZ2UgPSBCdWZmZXJHZXRQYWdlKGhl YXBCdWYpOwotCi0JCQkJCVBhZ2VTZXRMU04oaGVhcFBhZ2UsIHJlY3B0cik7Ci0JCQkJfQotCQkJ fQotCQkJUGFnZVNldExTTihwYWdlLCByZWNwdHIpOwotCQl9Ci0KLQkJRU5EX0NSSVRfU0VDVElP TigpOwotCX0KLQotCUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0JcmV0 dXJuIHN0YXR1czsKLX0KLQogLyoKICAqIFNldCBmbGFncyBpbiB0aGUgVk0gYmxvY2sgY29udGFp bmVkIGluIHRoZSBwYXNzZWQgaW4gdm1CdWYuCiAgKgpAQCAtMzQzLDggKzI0MCw4IEBAIHZpc2li aWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhl YXBCdWYsCiAgKiBpcyBwaW5uZWQgYW5kIGV4Y2x1c2l2ZSBsb2NrZWQuCiAgKi8KIHVpbnQ4Ci12 aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxr LAotCQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MpCit2aXNpYmlsaXR5bWFwX3NldChS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJICBCdWZmZXIgdm1CdWYsIHVp bnQ4IGZsYWdzKQogewogCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9D SyhoZWFwQmxrKTsKIAl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJs ayk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCmluZGV4IDQzOWYzM2I4MDYx Li4zMzQyYWYwMmM3NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hl YXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKQEAg LTM0NCwxMyArMzQ0LDYgQEAgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQpCiAJCQl9CiAJCX0KIAl9Ci0JZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0hFQVAy X1ZJU0lCTEUpCi0JewotCQl4bF9oZWFwX3Zpc2libGUgKnhscmVjID0gKHhsX2hlYXBfdmlzaWJs ZSAqKSByZWM7Ci0KLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJzbmFwc2hvdENvbmZsaWN0SG9y aXpvbjogJXUsIGZsYWdzOiAweCUwMlgiLAotCQkJCQkJIHhscmVjLT5zbmFwc2hvdENvbmZsaWN0 SG9yaXpvbiwgeGxyZWMtPmZsYWdzKTsKLQl9CiAJZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0hFQVAy X01VTFRJX0lOU0VSVCkKIAl7CiAJCXhsX2hlYXBfbXVsdGlfaW5zZXJ0ICp4bHJlYyA9ICh4bF9o ZWFwX211bHRpX2luc2VydCAqKSByZWM7CkBAIC00NTUsOSArNDQ4LDYgQEAgaGVhcDJfaWRlbnRp ZnkodWludDggaW5mbykKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQOgog CQkJaWQgPSAiUFJVTkVfVkFDVVVNX0NMRUFOVVAiOwogCQkJYnJlYWs7Ci0JCWNhc2UgWExPR19I RUFQMl9WSVNJQkxFOgotCQkJaWQgPSAiVklTSUJMRSI7Ci0JCQlicmVhazsKIAkJY2FzZSBYTE9H X0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWlkID0gIk1VTFRJX0lOU0VSVCI7CiAJCQlicmVhazsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IGNjMDNmMDcwNmU5 Li4yZmRkNGFmOTBhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5j CkBAIC00NTQsNyArNDU0LDYgQEAgaGVhcDJfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfT05f QUNDRVNTOgogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX1NDQU46CiAJCWNhc2UgWExP R19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKLQkJY2FzZSBYTE9HX0hFQVAyX1ZJU0lCTEU6 CiAJCWNhc2UgWExPR19IRUFQMl9MT0NLX1VQREFURUQ6CiAJCQlicmVhazsKIAkJZGVmYXVsdDoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCA0MjIyYmRhYjA3OC4uYzYxOTY0M2UxMjEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTQ3NSwxMiArNDc1LDEyIEBAIFJlc29s dmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25m bGljdEhvcml6b24sCiAJICogSWYgd2UgZ2V0IHBhc3NlZCBJbnZhbGlkVHJhbnNhY3Rpb25JZCB0 aGVuIHdlIGRvIG5vdGhpbmcgKG5vIGNvbmZsaWN0KS4KIAkgKgogCSAqIFRoaXMgY2FuIGhhcHBl biB3aGVuIHJlcGxheWluZyBhbHJlYWR5LWFwcGxpZWQgV0FMIHJlY29yZHMgYWZ0ZXIgYQotCSAq IHN0YW5kYnkgY3Jhc2ggb3IgcmVzdGFydCwgb3Igd2hlbiByZXBsYXlpbmcgYW4gWExPR19IRUFQ Ml9WSVNJQkxFCi0JICogcmVjb3JkIHRoYXQgbWFya3MgYXMgZnJvemVuIGEgcGFnZSB3aGljaCB3 YXMgYWxyZWFkeSBhbGwtdmlzaWJsZS4gIEl0J3MKLQkgKiBhbHNvIHF1aXRlIGNvbW1vbiB3aXRo IHJlY29yZHMgZ2VuZXJhdGVkIGR1cmluZyBpbmRleCBkZWxldGlvbgotCSAqIChvcmlnaW5hbCBl eGVjdXRpb24gb2YgdGhlIGRlbGV0aW9uIGNhbiByZWFzb24gdGhhdCBhIHJlY292ZXJ5IGNvbmZs aWN0Ci0JICogd2hpY2ggaXMgc3VmZmljaWVudCBmb3IgdGhlIGRlbGV0aW9uIG9wZXJhdGlvbiBt dXN0IHRha2UgcGxhY2UgYmVmb3JlCi0JICogcmVwbGF5IG9mIHRoZSBkZWxldGlvbiByZWNvcmQg aXRzZWxmKS4KKwkgKiBzdGFuZGJ5IGNyYXNoIG9yIHJlc3RhcnQsIG9yIHdoZW4gcmVwbGF5aW5n IGEgcmVjb3JkIHRoYXQgbWFya3MgYXMKKwkgKiBmcm96ZW4gYSBwYWdlIHdoaWNoIHdhcyBhbHJl YWR5IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eQorCSAqIG1hcC4gIEl0J3Mg YWxzbyBxdWl0ZSBjb21tb24gd2l0aCByZWNvcmRzIGdlbmVyYXRlZCBkdXJpbmcgaW5kZXgKKwkg KiBkZWxldGlvbiAob3JpZ2luYWwgZXhlY3V0aW9uIG9mIHRoZSBkZWxldGlvbiBjYW4gcmVhc29u IHRoYXQgYSByZWNvdmVyeQorCSAqIGNvbmZsaWN0IHdoaWNoIGlzIHN1ZmZpY2llbnQgZm9yIHRo ZSBkZWxldGlvbiBvcGVyYXRpb24gbXVzdCB0YWtlIHBsYWNlCisJICogYmVmb3JlIHJlcGxheSBv ZiB0aGUgZGVsZXRpb24gcmVjb3JkIGl0c2VsZikuCiAJICovCiAJaWYgKCFUcmFuc2FjdGlvbklk SXNWYWxpZChzbmFwc2hvdENvbmZsaWN0SG9yaXpvbikpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmgKaW5kZXggZDg1MDg1OTNlN2MuLjM2NzJmMzcyYWE4IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtX3hsb2cuaApAQCAtNjAsNyArNjAsNiBAQAogI2RlZmluZSBYTE9HX0hFQVAyX1BSVU5F X09OX0FDQ0VTUwkJMHgxMAogI2RlZmluZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9TQ0FOCTB4 MjAKICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUAkweDMwCi0jZGVmaW5l IFhMT0dfSEVBUDJfVklTSUJMRQkJMHg0MAogI2RlZmluZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VS VCAweDUwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTE9DS19VUERBVEVEIDB4NjAKICNkZWZpbmUgWExP R19IRUFQMl9ORVdfQ0lECQkweDcwCkBAIC00NDYsMjAgKzQ0NSw2IEBAIHR5cGVkZWYgc3RydWN0 IHhsX2hlYXBfaW5wbGFjZQogCiAjZGVmaW5lIE1pblNpemVPZkhlYXBJbnBsYWNlCShvZmZzZXRv Zih4bF9oZWFwX2lucGxhY2UsIG5tc2dzKSArIHNpemVvZihpbnQpKQogCi0vKgotICogVGhpcyBp cyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBzZXR0aW5nIGEgdmlzaWJpbGl0eSBtYXAgYml0 Ci0gKgotICogQmFja3VwIGJsayAwOiB2aXNpYmlsaXR5IG1hcCBidWZmZXIKLSAqIEJhY2t1cCBi bGsgMTogaGVhcCBidWZmZXIKLSAqLwotdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF92aXNpYmxlCi17 Ci0JVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKLQl1aW50OAkJZmxhZ3M7 Ci19IHhsX2hlYXBfdmlzaWJsZTsKLQotI2RlZmluZSBTaXplT2ZIZWFwVmlzaWJsZSAob2Zmc2V0 b2YoeGxfaGVhcF92aXNpYmxlLCBmbGFncykgKyBzaXplb2YodWludDgpKQotCiB0eXBlZGVmIHN0 cnVjdCB4bF9oZWFwX25ld19jaWQKIHsKIAkvKgpAQCAtNTAzLDExICs0ODgsNiBAQCBleHRlcm4g dm9pZCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7 CiBleHRlcm4gY29uc3QgY2hhciAqaGVhcDJfaWRlbnRpZnkodWludDggaW5mbyk7CiBleHRlcm4g dm9pZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0ZSAqcik7CiAKLWV4 dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVh cF9idWZmZXIsCi0JCQkJCQkJCSAgIEJ1ZmZlciB2bV9idWZmZXIsCi0JCQkJCQkJCSAgIFRyYW5z YWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJCSAgIHVpbnQ4IHZtZmxh Z3MpOwotCiAvKiBpbiBoZWFwZGVzYy5jLCBzbyBpdCBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZnJv bnRlbmQvYmFja2VuZCBjb2RlICovCiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfZGVzZXJpYWxpemVf cHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywKIAkJCQkJCQkJCQkJ CSAgIGludCAqbnBsYW5zLCB4bGhwX2ZyZWV6ZV9wbGFuICoqcGxhbnMsCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zp c2liaWxpdHltYXAuaAppbmRleCBmYzcwNTZhOTFlYS4uYzViMWUxZjdhZGIgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3Zpc2liaWxpdHltYXAuaApAQCAtMTUsNyArMTUsNiBAQAogI2RlZmluZSBWSVNJQklMSVRZ TUFQX0gKIAogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIgotI2luY2x1ZGUg ImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYmxvY2suaCIKICNpbmNsdWRl ICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCkBAIC0zMSwxNCAr MzAsOCBAQCBleHRlcm4gYm9vbCB2aXNpYmlsaXR5bWFwX2NsZWFyKFJlbGF0aW9uIHJlbCwgQmxv Y2tOdW1iZXIgaGVhcEJsaywKIGV4dGVybiB2b2lkIHZpc2liaWxpdHltYXBfcGluKFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKIAkJCQkJCQkgIEJ1ZmZlciAqdm1idWYpOwogZXh0 ZXJuIGJvb2wgdmlzaWJpbGl0eW1hcF9waW5fb2soQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVy IHZtYnVmKTsKLWV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsCi0J CQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCi0JCQkJCQkJICAg WExvZ1JlY1B0ciByZWNwdHIsCi0JCQkJCQkJICAgQnVmZmVyIHZtQnVmLAotCQkJCQkJCSAgIFRy YW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkJCQkgICB1aW50OCBmbGFncyk7Ci1leHRlcm4g dWludDggdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIg aGVhcEJsaywKLQkJCQkJCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncyk7CitleHRlcm4g dWludDggdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxr LAorCQkJCQkJCSAgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MpOwogZXh0ZXJuIHVpbnQ4IHZp c2liaWxpdHltYXBfZ2V0X3N0YXR1cyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGss IEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1hcF9jb3VudChSZWxhdGlv biByZWwsIEJsb2NrTnVtYmVyICphbGxfdmlzaWJsZSwgQmxvY2tOdW1iZXIgKmFsbF9mcm96ZW4p OwogZXh0ZXJuIEJsb2NrTnVtYmVyIHZpc2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZShSZWxh dGlvbiByZWwsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRl ZnMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCmluZGV4IDVhZDVj MDIwODc3Li5lMDFiY2U0Yzk5ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2li aWxpdHltYXBkZWZzLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZz LmgKQEAgLTIxLDE0ICsyMSw1IEBACiAjZGVmaW5lIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkw eDAyCiAjZGVmaW5lIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUwkweDAzCS8qIE9SIG9mIGFsbCB2 YWxpZCB2aXNpYmlsaXR5bWFwCiAJCQkJCQkJCQkJCSAqIGZsYWdzIGJpdHMgKi8KLS8qCi0gKiBU byBkZXRlY3QgcmVjb3ZlcnkgY29uZmxpY3RzIGR1cmluZyBsb2dpY2FsIGRlY29kaW5nIG9uIGEg c3RhbmRieSwgd2UgbmVlZAotICogdG8ga25vdyBpZiBhIHRhYmxlIGlzIGEgdXNlciBjYXRhbG9n IHRhYmxlLiBGb3IgdGhhdCB3ZSBhZGQgYW4gYWRkaXRpb25hbAotICogYml0IGludG8geGxfaGVh cF92aXNpYmxlLmZsYWdzLCBpbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUuCi0gKgotICogTkI6IFZJ U0lCSUxJVFlNQVBfWExPR18qIG1heSBub3QgYmUgcGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0 KCkuCi0gKi8KLSNkZWZpbmUgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMCTB4MDQKLSNk ZWZpbmUgVklTSUJJTElUWU1BUF9YTE9HX1ZBTElEX0JJVFMJKFZJU0lCSUxJVFlNQVBfVkFMSURf QklUUyB8IFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JFTCkKIAogI2VuZGlmCQkJCQkJCS8q IFZJU0lCSUxJVFlNQVBERUZTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggYTEz ZTgxNjI4OTAuLmI0Yzg4MGMwODNmIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNDI3 Myw3ICs0MjczLDYgQEAgeGxfaGVhcF9wcnVuZQogeGxfaGVhcF9yZXdyaXRlX21hcHBpbmcKIHhs X2hlYXBfdHJ1bmNhdGUKIHhsX2hlYXBfdXBkYXRlCi14bF9oZWFwX3Zpc2libGUKIHhsX2ludmFs aWRfcGFnZQogeGxfaW52YWxpZF9wYWdlX2tleQogeGxfaW52YWxpZGF0aW9ucwotLSAKMi40My4w Cgo= --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0015-Inline-TransactionIdFollows-Precedes.patch" Content-Disposition: attachment; filename="v12-0015-Inline-TransactionIdFollows-Precedes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcicz14 RnJvbSBiYTc0NDJiN2I1NTBlMTUxMGQ0OWM5ZGY3ZWIyM2RkYWY4NTMzNjQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDA5OjU3OjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMTUvMjBdIElubGluZSBUcmFuc2FjdGlvbklkRm9sbG93cy9QcmVjZWRlcygpCgpD YWxsaW5nIHRoZXNlIGZyb20gb24tYWNjZXNzIHBydW5pbmcgY29kZSBoYWQgbm90aWNlYWJsZSBv dmVyaGVhZCBpbiBhCnByb2ZpbGUuIFRoZXJlIGRvZXMgbm90IHNlZW0gdG8gYmUgYSByZWFzb24g bm90IHRvIGlubGluZSB0aGVtLgoKUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtp cmlsbEBnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHJhbnNhbS5j IHwgNjQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5z YW0uaCAgICAgICAgIHwgNzAgKysrKysrKysrKysrKysrKysrKysrKysrKystLQogMiBmaWxlcyBj aGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90cmFuc2FtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS90cmFuc2FtLmMKaW5kZXggOWEzOTQ1MWEyOWEuLjU1M2Q2NzU2Y2IzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90cmFuc2FtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vdHJhbnNhbS5jCkBAIC0yNzMsNzAgKzI3Myw2IEBAIFRyYW5zYWN0 aW9uSWRBYm9ydFRyZWUoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBueGlkcywgVHJhbnNhY3Rpb25J ZCAqeGlkcykKIAkJCQkJCQkgICBUUkFOU0FDVElPTl9TVEFUVVNfQUJPUlRFRCwgSW52YWxpZFhM b2dSZWNQdHIpOwogfQogCi0vKgotICogVHJhbnNhY3Rpb25JZFByZWNlZGVzIC0tLSBpcyBpZDEg bG9naWNhbGx5IDwgaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlvbklkUHJlY2VkZXMoVHJhbnNh Y3Rpb25JZCBpZDEsIFRyYW5zYWN0aW9uSWQgaWQyKQotewotCS8qCi0JICogSWYgZWl0aGVyIElE IGlzIGEgcGVybWFuZW50IFhJRCB0aGVuIHdlIGNhbiBqdXN0IGRvIHVuc2lnbmVkCi0JICogY29t cGFyaXNvbi4gIElmIGJvdGggYXJlIG5vcm1hbCwgZG8gYSBtb2R1bG8tMl4zMiBjb21wYXJpc29u LgotCSAqLwotCWludDMyCQlkaWZmOwotCi0JaWYgKCFUcmFuc2FjdGlvbklkSXNOb3JtYWwoaWQx KSB8fCAhVHJhbnNhY3Rpb25JZElzTm9ybWFsKGlkMikpCi0JCXJldHVybiAoaWQxIDwgaWQyKTsK LQotCWRpZmYgPSAoaW50MzIpIChpZDEgLSBpZDIpOwotCXJldHVybiAoZGlmZiA8IDApOwotfQot Ci0vKgotICogVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMgLS0tIGlzIGlkMSBsb2dpY2Fs bHkgPD0gaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhUcmFu c2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50MzIJCWRpZmY7Ci0KLQlp ZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3JtYWwo aWQyKSkKLQkJcmV0dXJuIChpZDEgPD0gaWQyKTsKLQotCWRpZmYgPSAoaW50MzIpIChpZDEgLSBp ZDIpOwotCXJldHVybiAoZGlmZiA8PSAwKTsKLX0KLQotLyoKLSAqIFRyYW5zYWN0aW9uSWRGb2xs b3dzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID4gaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlvbklk Rm9sbG93cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50MzIJ CWRpZmY7Ci0KLQlpZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlv bklkSXNOb3JtYWwoaWQyKSkKLQkJcmV0dXJuIChpZDEgPiBpZDIpOwotCi0JZGlmZiA9IChpbnQz MikgKGlkMSAtIGlkMik7Ci0JcmV0dXJuIChkaWZmID4gMCk7Ci19Ci0KLS8qCi0gKiBUcmFuc2Fj dGlvbklkRm9sbG93c09yRXF1YWxzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID49IGlkMj8KLSAqLwot Ym9vbAotVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhUcmFuc2FjdGlvbklkIGlkMSwgVHJh bnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50MzIJCWRpZmY7Ci0KLQlpZiAoIVRyYW5zYWN0aW9uSWRJ c05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3JtYWwoaWQyKSkKLQkJcmV0dXJuIChp ZDEgPj0gaWQyKTsKLQotCWRpZmYgPSAoaW50MzIpIChpZDEgLSBpZDIpOwotCXJldHVybiAoZGlm ZiA+PSAwKTsKLX0KLQogCiAvKgogICogVHJhbnNhY3Rpb25JZExhdGVzdCAtLS0gZ2V0IGxhdGVz dCBYSUQgYW1vbmcgYSBtYWluIHhhY3QgYW5kIGl0cyBjaGlsZHJlbgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgK aW5kZXggN2Q4MmNkMmViNTYuLmM5ZTIwNDE4Mjc1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvdHJhbnNhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKQEAgLTI1 NSw2ICsyNTUsNzIgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJhbnNhbVZhcmlhYmxlc0RhdGEKIH0gVHJh bnNhbVZhcmlhYmxlc0RhdGE7CiAKIAorCisvKgorICogVHJhbnNhY3Rpb25JZFByZWNlZGVzIC0t LSBpcyBpZDEgbG9naWNhbGx5IDwgaWQyPworICovCitzdGF0aWMgaW5saW5lIGJvb2wKK1RyYW5z YWN0aW9uSWRQcmVjZWRlcyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCit7 CisJLyoKKwkgKiBJZiBlaXRoZXIgSUQgaXMgYSBwZXJtYW5lbnQgWElEIHRoZW4gd2UgY2FuIGp1 c3QgZG8gdW5zaWduZWQKKwkgKiBjb21wYXJpc29uLiAgSWYgYm90aCBhcmUgbm9ybWFsLCBkbyBh IG1vZHVsby0yXjMyIGNvbXBhcmlzb24uCisJICovCisJaW50MzIJCWRpZmY7CisKKwlpZiAoIVRy YW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3JtYWwoaWQyKSkK KwkJcmV0dXJuIChpZDEgPCBpZDIpOworCisJZGlmZiA9IChpbnQzMikgKGlkMSAtIGlkMik7CisJ cmV0dXJuIChkaWZmIDwgMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVx dWFscyAtLS0gaXMgaWQxIGxvZ2ljYWxseSA8PSBpZDI/CisgKi8KK3N0YXRpYyBpbmxpbmUgYm9v bAorVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoVHJhbnNhY3Rpb25JZCBpZDEsIFRyYW5z YWN0aW9uSWQgaWQyKQoreworCWludDMyCQlkaWZmOworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNO b3JtYWwoaWQxKSB8fCAhVHJhbnNhY3Rpb25JZElzTm9ybWFsKGlkMikpCisJCXJldHVybiAoaWQx IDw9IGlkMik7CisKKwlkaWZmID0gKGludDMyKSAoaWQxIC0gaWQyKTsKKwlyZXR1cm4gKGRpZmYg PD0gMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlvbklkRm9sbG93cyAtLS0gaXMgaWQxIGxvZ2lj YWxseSA+IGlkMj8KKyAqLworc3RhdGljIGlubGluZSBib29sCitUcmFuc2FjdGlvbklkRm9sbG93 cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCit7CisJaW50MzIJCWRpZmY7 CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNO b3JtYWwoaWQyKSkKKwkJcmV0dXJuIChpZDEgPiBpZDIpOworCisJZGlmZiA9IChpbnQzMikgKGlk MSAtIGlkMik7CisJcmV0dXJuIChkaWZmID4gMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlvbklk Rm9sbG93c09yRXF1YWxzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID49IGlkMj8KKyAqLworc3RhdGlj IGlubGluZSBib29sCitUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKFRyYW5zYWN0aW9uSWQg aWQxLCBUcmFuc2FjdGlvbklkIGlkMikKK3sKKwlpbnQzMgkJZGlmZjsKKworCWlmICghVHJhbnNh Y3Rpb25JZElzTm9ybWFsKGlkMSkgfHwgIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDIpKQorCQly ZXR1cm4gKGlkMSA+PSBpZDIpOworCisJZGlmZiA9IChpbnQzMikgKGlkMSAtIGlkMik7CisJcmV0 dXJuIChkaWZmID49IDApOworfQorCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlleHRlcm4g ZGVjbGFyYXRpb25zCiAgKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0yNzQsMTAgKzM0MCw2IEBAIGV4 dGVybiBib29sIFRyYW5zYWN0aW9uSWREaWRBYm9ydChUcmFuc2FjdGlvbklkIHRyYW5zYWN0aW9u SWQpOwogZXh0ZXJuIHZvaWQgVHJhbnNhY3Rpb25JZENvbW1pdFRyZWUoVHJhbnNhY3Rpb25JZCB4 aWQsIGludCBueGlkcywgVHJhbnNhY3Rpb25JZCAqeGlkcyk7CiBleHRlcm4gdm9pZCBUcmFuc2Fj dGlvbklkQXN5bmNDb21taXRUcmVlKFRyYW5zYWN0aW9uSWQgeGlkLCBpbnQgbnhpZHMsIFRyYW5z YWN0aW9uSWQgKnhpZHMsIFhMb2dSZWNQdHIgbHNuKTsKIGV4dGVybiB2b2lkIFRyYW5zYWN0aW9u SWRBYm9ydFRyZWUoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBueGlkcywgVHJhbnNhY3Rpb25JZCAq eGlkcyk7Ci1leHRlcm4gYm9vbCBUcmFuc2FjdGlvbklkUHJlY2VkZXMoVHJhbnNhY3Rpb25JZCBp ZDEsIFRyYW5zYWN0aW9uSWQgaWQyKTsKLWV4dGVybiBib29sIFRyYW5zYWN0aW9uSWRQcmVjZWRl c09yRXF1YWxzKFRyYW5zYWN0aW9uSWQgaWQxLCBUcmFuc2FjdGlvbklkIGlkMik7Ci1leHRlcm4g Ym9vbCBUcmFuc2FjdGlvbklkRm9sbG93cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25J ZCBpZDIpOwotZXh0ZXJuIGJvb2wgVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhUcmFuc2Fj dGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpOwogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgVHJh bnNhY3Rpb25JZExhdGVzdChUcmFuc2FjdGlvbklkIG1haW54aWQsCiAJCQkJCQkJCQkJIGludCBu eGlkcywgY29uc3QgVHJhbnNhY3Rpb25JZCAqeGlkcyk7CiBleHRlcm4gWExvZ1JlY1B0ciBUcmFu c2FjdGlvbklkR2V0Q29tbWl0TFNOKFRyYW5zYWN0aW9uSWQgeGlkKTsKLS0gCjIuNDMuMAoK --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0016-Unset-all-visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v12-0016-Unset-all-visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcid115 RnJvbSBiM2Y2MDcyNjFhMjJiYWQzN2EzYWJhOTA5MWRiZWUwNDlkNDI0ZWRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM1OjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMTYvMjBdIFVuc2V0IGFsbC12aXNpYmxlIHNvb25lciBpZiBub3QgZnJlZXppbmcK CkluIHBydW5lL2ZyZWV6ZSBjb2RlLCB3ZSBkZWxheSB1bnNldHRpbmcgYWxsLXZpc2libGUvYWxs LWZyb3plbiBpbiB0aGUKcHJlc2VuY2Ugb2YgZGVhZCBpdGVtcyB0byBhbGxvdyBvcHBvcnR1bmlz dGljYWxseSBmcmVlemluZyB0dXBsZXMgaWYgdGhlCndob2xlIHBhZ2Ugd291bGQgYmUgZnJvemVu IGV4Y2VwdCBmb3IgdGhvc2UgZGVhZCBpdGVtcyAtLSB3aGljaCBhcmUKcmVtb3ZlZCBsYXRlciBp biB2YWN1dW0ncyB0aGlyZCBwaGFzZS4KCkZ1dHVyZSBjb21taXRzIHdpbGwgYWxsb3cgb24tYWNj ZXNzIHBydW5pbmcgdG8gc2V0IHRoZSBWTSwgd2hpY2ggbWVhbnMKYWxsLXZpc2libGUgd2lsbCBi ZSBpbml0aWFsaXplZCB0byB0cnVlIGluc3RlYWQgb2YgZmFsc2UgYW5kIHdlIHdpbGwgZG8KZXh0 cmEgYm9va2tlZXBpbmcgaW4gaGVhcF9wcnVuZV91bmNoYW5nZWRfbHBfbm9ybWFsKCkgdG8ga2Vl cCB0cmFjayBvZgp3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4KCkJlY2F1 c2Ugb24tYWNjZXNzIHBydW5pbmcgd2lsbCBub3QgZnJlZXplIHR1cGxlcywgaXQgbWFrZXMgc2Vu c2UgdG8KdW5zZXQgYWxsLXZpc2libGUgYXMgc29vbiBhcyB3ZSBlbmNvdW50ZXIgYW4gTFBfREVB RCBpdGVtIGFuZAphdm9pZCBjb250aW51ZWQgYm9va2tlZXBpbmcgc2luY2Ugd2Uga25vdyB0aGUg cGFnZSBpcyBub3QgYWxsLXZpc2libGUKYW5kIHdlIHdvbid0IGJlIGFibGUgdG8gcmVtb3ZlIHRo b3NlIGRlYWQgaXRlbXMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg fCAxMCArKysrKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggYzY5MzVlNDVjZWMu LmJhOGRkYzdmYTM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTUwMyw4 ICsxNTAzLDExIEBAIGhlYXBfcHJ1bmVfcmVjb3JkX2RlYWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwg T2Zmc2V0TnVtYmVyIG9mZm51bSwKIAogCS8qCiAJICogRGVsaWJlcmF0ZWx5IGRlbGF5IHVuc2V0 dGluZyBhbGxfdmlzaWJsZSB1bnRpbCBsYXRlciBkdXJpbmcgcHJ1bmluZy4KLQkgKiBSZW1vdmFi bGUgZGVhZCB0dXBsZXMgc2hvdWxkbid0IHByZWNsdWRlIGZyZWV6aW5nIHRoZSBwYWdlLgorCSAq IFJlbW92YWJsZSBkZWFkIHR1cGxlcyBzaG91bGRuJ3QgcHJlY2x1ZGUgZnJlZXppbmcgdGhlIHBh Z2UuIElmIHdlIHdvbid0CisJICogYXR0ZW1wdCBmcmVlemluZywganVzdCB1bnNldCBhbGwtdmlz aWJsZSBub3csIHRob3VnaC4KIAkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQor CQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAog CS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRlYWRv ZmZzZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51bTsKQEAgLTE3NjIsOCArMTc2 NSwxMSBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChQYWdlIHBhZ2UsIFBy dW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlcgogCSAqIFNpbWlsYXJseSwgZG9uJ3QgdW5z ZXQgYWxsX3Zpc2libGUgdW50aWwgbGF0ZXIsIGF0IHRoZSBlbmQgb2YKIAkgKiBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZSgpLiAgVGhpcyB3aWxsIGFsbG93IHVzIHRvIGF0dGVtcHQgdG8gZnJl ZXplCiAJICogdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFzIGxvbmcgYXMgd2UgdW5zZXQgaXQg YmVmb3JlIHVwZGF0aW5nIHRoZQotCSAqIHZpc2liaWxpdHkgbWFwLCB0aGlzIHdpbGwgYmUgY29y cmVjdC4KKwkgKiB2aXNpYmlsaXR5IG1hcCwgdGhpcyB3aWxsIGJlIGNvcnJlY3QuIElmIHdlIHdv bid0IGF0dGVtcHQgZnJlZXppbmcsCisJICogdGhvdWdoLCBqdXN0IHVuc2V0IGFsbC12aXNpYmxl IG5vdy4KIAkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCQlwcnN0YXRlLT5h bGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCS8qIFJlY29yZCB0 aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRlYWRvZmZzZXRzW3Byc3Rh dGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51bTsKLS0gCjIuNDMuMAoK --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0014-Use-GlobalVisState-to-determine-page-level-visib.patch" Content-Disposition: attachment; filename="v12-0014-Use-GlobalVisState-to-determine-page-level-visib.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcicv13 RnJvbSBlOTkzMjQ5YWI5ZDJlYzM1MjAyY2JhNDhjY2U0YTg5MjhkZDAzYWI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM4OjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMTQvMjBdIFVzZSBHbG9iYWxWaXNTdGF0ZSB0byBkZXRlcm1pbmUgcGFnZSBsZXZl bAogdmlzaWJpbGl0eQoKRHVyaW5nIHBydW5pbmcgYW5kIGR1cmluZyB2YWN1dW0ncyB0aGlyZCBw aGFzZSwgd2UgdHJ5IHRvIGRldGVybWluZSBpZgp0aGUgd2hvbGUgcGFnZSBjYW4gYmUgc2V0IGFs bC12aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5IG1hcC4gSW5zdGVhZCBvZgp1c2luZyBPbGRlc3RY bWluIHRvIGRldGVybWluZSBpZiBhbGwgdGhlIHR1cGxlcyBvbiBhIHBhZ2UgYXJlIHZpc2libGUg dG8KZXZlcnlvbmUsIHVzZSB0aGUgR2xvYmFsVmlzU3RhdGUuIFRoaXMgYWxsb3dzIHVzIHRvIHN0 YXJ0IHNldHRpbmcgdGhlIFZNCmR1cmluZyBvbi1hY2Nlc3MgcHJ1bmluZyBpbiBhIGZ1dHVyZSBj b21taXQuCgpJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIEdsb2JhbFZpc1N0YXRlIHRvIGNoYW5nZSBk dXJpbmcgdGhlIGNvdXJzZSBvZiBhCnZhY3V1bS4gSW4gYWxsIGJ1dCBleHRyYW9yZGluYXJ5IGNh c2VzLCBpdCBtb3ZlcyBmb3J3YXJkLCBtZWFuaW5nIG1vcmUKcGFnZXMgY291bGQgcG90ZW50aWFs bHkgYmUgc2V0IGluIHRoZSBWTS4KCkJlY2F1c2UgY29tcGFyaW5nIGEgdHJhbnNhY3Rpb24gSUQg dG8gdGhlIEdsb2JhbFZpc1N0YXRlIHJlcXVpcmVzIG1vcmUKb3BlcmF0aW9ucyB0aGFuIGNvbXBh cmluZyBpdCB0byBhbm90aGVyIHNpbmdsZSB0cmFuc2FjdGlvbiBJRCwgd2Ugbm93CndhaXQgdW50 aWwgYWZ0ZXIgZXhhbWluaW5nIGFsbCB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlIGFuZCBpZiB3ZSBo YXZlCm1haW50YWluZWQgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgd2UgY29tcGFyZSB0aGF0 IHRvIHRoZQpHbG9iYWxWaXNTdGF0ZSBqdXN0IG9uY2UgcGVyIHBhZ2UuIFRoaXMgd29ya3MgYmVj YXVzZSBpZiB0aGUgcGFnZSBpcwphbGwtdmlzaWJsZSBhbmQgaGFzIGxpdmUsIGNvbW1pdHRlZCB0 dXBsZXMgb24gaXQsIHRoZQp2aXNpYmlsaXR5X2N1dG9mZl94aWQgd2lsbCBjb250YWluIHRoZSBu ZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gSWYKZXZlcnlvbmUgY2FuIHNlZSBpdCwgdGhlIHBhZ2Ug aXMgdHJ1bHkgYWxsLXZpc2libGUuCgpEb2luZyB0aGlzIG1heSBtZWFuIHdlIGV4YW1pbmUgbW9y ZSB0dXBsZXMnIHhtaW5zIHRoYW4gYmVmb3JlLCBhcyB3ZSBtYXkKaGF2ZSBzZXQgYWxsX3Zpc2li bGUgdG8gZmFsc2Ugc29vbmVyIHdoZW4gZW5jb3VudGVyaW5nIGEgbGl2ZSB0dXBsZQpuZXdlciB0 aGFuIE9sZGVzdFhtaW4uIEhvd2V2ZXIsIHRoZXNlIGV4dHJhIGNvbXBhcmlzb25zIHdlcmUgZm91 bmQgbm90CnRvIGJlIHNpZ25pZmljYW50IGluIGEgcHJvZmlsZS4KLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jIHwgMjggKysrKysrKysrKysrCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICAgICAgIHwgNDggKysrKysrKysrLS0tLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgIHwgMTkg KysrKy0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICAgICAgfCAg NCArLQogNCBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwppbmRleCA0ZWJj OGFiZGJlYi4uZWRkNTI5ZGMzYzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X3Zpc2liaWxpdHkuYwpAQCAtMTE4OSw2ICsxMTg5LDM0IEBAIEhlYXBUdXBsZVNhdGlzZmllc1Zh Y3V1bShIZWFwVHVwbGUgaHR1cCwgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAogCXJldHVybiBy ZXM7CiB9CiAKKy8qCisgKiBOZWFybHkgdGhlIHNhbWUgYXMgSGVhcFR1cGxlU2F0aXNmaWVzVmFj dXVtLCBidXQgdXNlcyBhIEdsb2JhbFZpc1N0YXRlIHRvCisgKiBkZXRlcm1pbmUgd2hldGhlciBv ciBub3QgYSB0dXBsZSBpcyBIRUFQVFVQTEVfREVBRCBPcgorICogSEVBUFRVUExFX1JFQ0VOVExZ X0RFQUQuIEl0IHNlcnZlcyB0aGUgc2FtZSBwdXJwb3NlIGJ1dCBjYW4gYmUgdXNlZCBieQorICog Y2FsbGVycyB0aGF0IGhhdmUgbm90IGNhbGN1bGF0ZWQgYSBzaW5nbGUgT2xkZXN0WG1pbiB2YWx1 ZS4KKyAqLworSFRTVl9SZXN1bHQKK0hlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUdsb2JhbFZpcyhI ZWFwVHVwbGUgaHR1cCwgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCisJCQkJCQkJCSAgQnVmZmVy IGJ1ZmZlcikKK3sKKwlUcmFuc2FjdGlvbklkIGRlYWRfYWZ0ZXIgPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKKwlIVFNWX1Jlc3VsdCByZXM7CisKKwlyZXMgPSBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1 dW1Ib3Jpem9uKGh0dXAsIGJ1ZmZlciwgJmRlYWRfYWZ0ZXIpOworCisJaWYgKHJlcyA9PSBIRUFQ VFVQTEVfUkVDRU5UTFlfREVBRCkKKwl7CisJCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChk ZWFkX2FmdGVyKSk7CisKKwkJaWYgKEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCBk ZWFkX2FmdGVyKSkKKwkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOworCX0KKwllbHNlCisJCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikpOworCisJcmV0dXJuIHJlczsKK30K KwogLyoKICAqIFdvcmsgaG9yc2UgZm9yIEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSBhbmQgc2lt aWxhciByb3V0aW5lcy4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDAy MTFlZmZlZWM3Li5jNjkzNWU0NWNlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMK QEAgLTE0MSwxMCArMTQxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkgKiBhbGxfdmlzaWJsZSBhbmQg YWxsX2Zyb3plbiBpbmRpY2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KIAkg KiBiaXRzIGluIHRoZSB2aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UgYWZ0 ZXIgcHJ1bmluZy4KIAkgKgotCSAqIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBpcyB0aGUgbmV3ZXN0 IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCi0JICogVGhlIGNhbGxlciBjYW4gdXNl IGl0IGFzIHRoZSBjb25mbGljdCBob3Jpem9uLCB3aGVuIHNldHRpbmcgdGhlIFZNCi0JICogYml0 cy4gIEl0IGlzIG9ubHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMsIGFuZCBhbGxfZnJv emVuIGlzCi0JICogdHJ1ZS4KKwkgKiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhlIG5ld2Vz dCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiBJdAorCSAqIGNhbiBiZSB1c2VkIGFz IHRoZSBjb25mbGljdCBob3Jpem9uLCB3aGVuIHNldHRpbmcgdGhlIFZNIG9yIHdoZW4KKwkgKiBm cmVlemluZyBhbGwgdGhlIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLgogCSAqCiAJICogTk9URTog YWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gZG9uJ3QgaW5jbHVkZSBMUF9ERUFEIGl0ZW1zIHVu dGlsCiAJICogZGlyZWN0bHkgYmVmb3JlIHVwZGF0aW5nIHRoZSBWTS4gV2UgaWdub3JlIExQX0RF QUQgaXRlbXMgd2hlbiBkZWNpZGluZwpAQCAtNTU5LDE0ICs1NTgsMTIgQEAgaGVhcF9wYWdlX3By dW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAKIAkvKgog CSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUs IGNvbW1pdHRlZCB0dXBsZXMKLQkgKiBvbGRlciB0aGFuIE9sZGVzdFhtaW4gb24gdGhlIHBhZ2Uu IFRoaXMgZmllbGQgaXMgb25seSBrZXB0IHVwLXRvLWRhdGUKLQkgKiBpZiB0aGUgcGFnZSBpcyBh bGwtdmlzaWJsZS4gQXMgc29vbiBhcyBhIHR1cGxlIGlzIGVuY291bnRlcmVkIHRoYXQgaXMKLQkg KiBub3QgdmlzaWJsZSB0byBhbGwsIHRoaXMgZmllbGQgaXMgdW5tYWludGFpbmVkLiBBcyBsb25n IGFzIGl0IGlzCi0JICogbWFpbnRhaW5lZCwgaXQgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIHRo ZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uLgotCSAqIFRoaXMgaXMgbW9zdCBsaWtlbHkgdG8g aGFwcGVuIHdoZW4gdXBkYXRpbmcgdGhlIFZNIGFuZC9vciBmcmVlemluZyBhbGwKLQkgKiBsaXZl IHR1cGxlcyBvbiB0aGUgcGFnZS4gSXQgaXMgdXBkYXRlZCBiZWZvcmUgcmV0dXJuaW5nIHRvIHRo ZSBjYWxsZXIKLQkgKiBiZWNhdXNlIHZhY3V1bSBkb2VzIGFzc2VydC1idWlsZCBvbmx5IHZhbGlk YXRpb24gb24gdGhlIHBhZ2UgdXNpbmcgdGhpcwotCSAqIGZpZWxkLgorCSAqIG9uIHRoZSBwYWdl IG9sZGVyIHRoYW4gdGhlIHZpc2liaWxpdHkgaG9yaXpvbiByZXByZXNlbnRlZCBpbiB0aGUKKwkg KiBHbG9iYWxWaXNTdGF0ZS4KKwkgKgorCSAqIElmIHdlIGVuY291bnRlciBhbiB1bmNvbW1pdHRl ZCB0dXBsZSwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIElmCisJICogdGhlIHBhZ2UgaXMg YmVpbmcgc2V0IGFsbC12aXNpYmxlIG9yIHdoZW4gZnJlZXppbmcgYWxsIGxpdmUgdHVwbGVzIG9u CisJICogdGhlIHBhZ2UsIGl0IGlzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25m bGljdCBob3Jpem9uLgogCSAqLwogCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52 YWxpZFRyYW5zYWN0aW9uSWQ7CiAKQEAgLTc2Miw2ICs3NTksMTYgQEAgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCXByc3RhdGUu bmRlYWQgPiAwIHx8CiAJCXByc3RhdGUubnVudXNlZCA+IDA7CiAKKwkvKgorCSAqIEFmdGVyIHBy b2Nlc3NpbmcgYWxsIHRoZSBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4 bWluCisJICogYW1vbmdzdCB0aGVtIGlzIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFn ZSBjYW5ub3QgYmUKKwkgKiBhbGwtdmlzaWJsZS4KKwkgKi8KKwlpZiAocHJzdGF0ZS5hbGxfdmlz aWJsZSAmJgorCQlUcmFuc2FjdGlvbklkSXNOb3JtYWwocHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9m Zl94aWQpICYmCisJCSFHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwocHJzdGF0ZS52aXN0ZXN0LCBw cnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkpCisJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBw cnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxzZTsKKwogCS8qCiAJICogRXZlbiBpZiB3ZSBkb24ndCBw cnVuZSBhbnl0aGluZywgaWYgd2UgZm91bmQgYSBuZXcgdmFsdWUgZm9yIHRoZQogCSAqIHBkX3By dW5lX3hpZCBmaWVsZCBvciB0aGUgcGFnZSB3YXMgbWFya2VkIGZ1bGwsIHdlIHdpbGwgdXBkYXRl IHRob3NlCkBAIC0xMTA4LDEyICsxMTE1LDEwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlUcmFuc2FjdGlvbklkIGRlYnVn X2N1dG9mZjsKIAkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKIAotCQlBc3NlcnQoY3V0b2Zmcyk7 Ci0KIAkJQXNzZXJ0KHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApOwogCiAJCWlmICghaGVhcF9w YWdlX2lzX2FsbF92aXNpYmxlKHJlbGF0aW9uLCBidWZmZXIsCi0JCQkJCQkJCQkgIGN1dG9mZnMt Pk9sZGVzdFhtaW4sCisJCQkJCQkJCQkgIHByc3RhdGUudmlzdGVzdCwKIAkJCQkJCQkJCSAgJmRl YnVnX2FsbF9mcm96ZW4sCiAJCQkJCQkJCQkgICZkZWJ1Z19jdXRvZmYsIG9mZl9sb2MpKQogCQkJ QXNzZXJ0KGZhbHNlKTsKQEAgLTE2MzgsMTkgKzE2NDMsNiBAQCBoZWFwX3BydW5lX3JlY29yZF91 bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0 TnVtYgogCQkJCSAqLwogCQkJCXhtaW4gPSBIZWFwVHVwbGVIZWFkZXJHZXRYbWluKGh0dXApOwog Ci0JCQkJLyoKLQkJCQkgKiBGb3Igbm93IGFsd2F5cyB1c2UgcHJzdGF0ZS0+Y3V0b2ZmcyBmb3Ig dGhpcyB0ZXN0LCBiZWNhdXNlCi0JCQkJICogd2Ugb25seSB1cGRhdGUgJ2FsbF92aXNpYmxlJyB3 aGVuIGZyZWV6aW5nIGlzIHJlcXVlc3RlZC4gV2UKLQkJCQkgKiBjb3VsZCB1c2UgR2xvYmFsVmlz VGVzdElzUmVtb3ZhYmxlWGlkIGluc3RlYWQsIGlmIGEKLQkJCQkgKiBub24tZnJlZXppbmcgY2Fs bGVyIHdhbnRlZCB0byBzZXQgdGhlIFZNIGJpdC4KLQkJCQkgKi8KLQkJCQlBc3NlcnQocHJzdGF0 ZS0+Y3V0b2Zmcyk7Ci0JCQkJaWYgKCFUcmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwgcHJzdGF0 ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1pbikpCi0JCQkJewotCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJs ZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCiAJ CQkJLyogVHJhY2sgbmV3ZXN0IHhtaW4gb24gcGFnZS4gKi8KIAkJCQlpZiAoVHJhbnNhY3Rpb25J ZEZvbGxvd3MoeG1pbiwgcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgogCQkJCQlU cmFuc2FjdGlvbklkSXNOb3JtYWwoeG1pbikpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKaW5kZXggMmRjY2EwNzFhNDUuLjRhZDA1YmE0ZGI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQgZGVhZF9pdGVtc19h ZGQoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgT2Zmc2V0TnVtYmVyICoK IHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfcmVzZXQoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRp YyB2b2lkIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIGJv b2wgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1 ZiwKLQkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkJICAg R2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFk b2Zmc2V0cywKIAkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJCQkJCSAgIGJv b2wgKmFsbF9mcm96ZW4sCkBAIC0yNzE3LDcgKzI3MTcsNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3Bh Z2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwK IAkJCQkJCQkgSW52YWxpZE9mZnNldE51bWJlcik7CiAKIAlpZiAoaGVhcF9wYWdlX3dvdWxkX2Jl X2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWZmZXIsCi0JCQkJCQkJCQkgICB2YWNyZWwtPmN1 dG9mZnMuT2xkZXN0WG1pbiwKKwkJCQkJCQkJCSAgIHZhY3JlbC0+dmlzdGVzdCwKIAkJCQkJCQkJ CSAgIGRlYWRvZmZzZXRzLCBudW1fb2Zmc2V0cywKIAkJCQkJCQkJCSAgICZhbGxfZnJvemVuLCAm dmlzaWJpbGl0eV9jdXRvZmZfeGlkLAogCQkJCQkJCQkJICAgJnZhY3JlbC0+b2ZmbnVtKSkKQEAg LTM0NjIsMTMgKzM0NjIsMTMgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3Jl bCkKICAqLwogYm9vbAogaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIGJ1ZiwKLQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkgR2xvYmFs VmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKIAkJCQkJCSBUcmFu c2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJCQkgT2Zmc2V0TnVtYmVyICps b2dnaW5nX29mZm51bSkKIHsKIAotCXJldHVybiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2li bGUocmVsLCBidWYsIE9sZGVzdFhtaW4sCisJcmV0dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxf dmlzaWJsZShyZWwsIGJ1ZiwgdmlzdGVzdCwKIAkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJ CQkJICBhbGxfZnJvemVuLAogCQkJCQkJCQkJCSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLApAQCAt MzQ4Nyw3ICszNDg3LDcgQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGJ1ZiwKICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZSBv dGhlciB0aGFuIHRoZSBwcm92aWRlZAogICogZGVhZG9mZnNldHMgYW5kIGZhbHNlIG90aGVyd2lz ZS4KICAqCi0gKiBPbGRlc3RYbWluIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCisg KiB2aXN0ZXN0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCiAgKgogICogKmFsbF9m cm96ZW4gaXMgYW4gb3V0cHV0IHBhcmFtZXRlciBpbmRpY2F0aW5nIHRvIHRoZSBjYWxsZXIgaWYg ZXZlcnkgdHVwbGUKICAqIG9uIHRoZSBwYWdlIGlzIGZyb3plbi4KQEAgLTM1MDgsNyArMzUwOCw3 IEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAg Ki8KIHN0YXRpYyBib29sCiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24g cmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJ CQkJCQkgICBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkgICBPZmZzZXROdW1iZXIg KmRlYWRvZmZzZXRzLAogCQkJCQkJCSAgIGludCBuZGVhZG9mZnNldHMsCiAJCQkJCQkJICAgYm9v bCAqYWxsX2Zyb3plbiwKQEAgLTM1ODAsOCArMzU4MCw4IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9h bGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCXR1cGxlLnRfbGVuID0gSXRl bUlkR2V0TGVuZ3RoKGl0ZW1pZCk7CiAJCXR1cGxlLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJl bGlkKHJlbCk7CiAKLQkJc3dpdGNoIChIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oJnR1cGxlLCBP bGRlc3RYbWluLAotCQkJCQkJCQkJCSBidWYpKQorCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmll c1ZhY3V1bUdsb2JhbFZpcygmdHVwbGUsIHZpc3Rlc3QsCisJCQkJCQkJCQkJCQkgIGJ1ZikpCiAJ CXsKIAkJCWNhc2UgSEVBUFRVUExFX0xJVkU6CiAJCQkJewpAQCAtMzYwMCw4ICszNjAwLDcgQEAg aGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwK IAkJCQkJICogdGhhdCBldmVyeW9uZSBzZWVzIGl0IGFzIGNvbW1pdHRlZD8KIAkJCQkJICovCiAJ CQkJCXhtaW4gPSBIZWFwVHVwbGVIZWFkZXJHZXRYbWluKHR1cGxlLnRfZGF0YSk7Ci0JCQkJCWlm ICghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHhtaW4sCi0JCQkJCQkJCQkJCSAgIE9sZGVzdFhtaW4p KQorCQkJCQlpZiAoIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCB4bWluKSkKIAkJ CQkJewogCQkJCQkJYWxsX3Zpc2libGUgPSBmYWxzZTsKIAkJCQkJCSphbGxfZnJvemVuID0gZmFs c2U7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMGI5YmIxYzliMTMuLjQyNzhmMzUxYmRmIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oCkBAIC0zNDIsNyArMzQyLDcgQEAgZXh0ZXJuIHZvaWQgaGVhcF9pbnBsYWNlX3Vu bG9jayhSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJSGVhcFR1cGxlIG9sZHR1cCwgQnVmZmVy IGJ1ZmZlcik7CiAKIGV4dGVybiBib29sIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlv biByZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAor CQkJCQkJCQkJIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAogCQkJCQkJCQkJIGJvb2wgKmFsbF9m cm96ZW4sCiAJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAog CQkJCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOwpAQCAtNDE1LDYgKzQxNSw4 IEBAIGV4dGVybiBUTV9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVXBkYXRlKEhlYXBUdXBsZSBo dHVwLCBDb21tYW5kSWQgY3VyY2lkLAogCQkJCQkJCQkJCSAgQnVmZmVyIGJ1ZmZlcik7CiBleHRl cm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKEhlYXBUdXBsZSBodHVwLCBU cmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJCQkJCQkJCQkJCUJ1ZmZlciBidWZmZXIpOworZXh0 ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUdsb2JhbFZpcyhIZWFwVHVw bGUgaHR1cCwKKwkJCQkJCQkJCQkJCQkgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsIEJ1ZmZlciBi dWZmZXIpOwogZXh0ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUhvcml6 b24oSGVhcFR1cGxlIGh0dXAsIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkJCQkgICBUcmFuc2Fj dGlvbklkICpkZWFkX2FmdGVyKTsKIGV4dGVybiB2b2lkIEhlYXBUdXBsZVNldEhpbnRCaXRzKEhl YXBUdXBsZUhlYWRlciB0dXBsZSwgQnVmZmVyIGJ1ZmZlciwKLS0gCjIuNDMuMAoK --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0017-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v12-0017-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcid416 RnJvbSAxYmM1NGQ2M2E5NDZjNzk5OTQyNzcxNmE3MTFiYjZiZTlkYjc0ODYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM0OjMwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMTcvMjBdIEFsbG93IG9uLWFjY2VzcyBwcnVuaW5nIHRvIHNldCBwYWdlcyBhbGwt dmlzaWJsZQoKTWFueSBxdWVyaWVzIGRvIG5vdCBtb2RpZnkgdGhlIHVuZGVybHlpbmcgcmVsYXRp b24uIEZvciBzdWNoIHF1ZXJpZXMsIGlmCm9uLWFjY2VzcyBwcnVuaW5nIG9jY3VycyBkdXJpbmcg dGhlIHNjYW4sIHdlIGNhbiBjaGVjayB3aGV0aGVyIHRoZSBwYWdlCmhhcyBiZWNvbWUgYWxsLXZp c2libGUgYW5kIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYWNjb3JkaW5nbHkuClByZXZpb3Vz bHksIG9ubHkgdmFjdXVtIG1hcmtlZCBwYWdlcyBhcyBhbGwtdmlzaWJsZSBvciBhbGwtZnJvemVu LgoKU3VwcG9ydGluZyB0aGlzIHJlcXVpcmVzIHBhc3NpbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hl dGhlciB0aGUgcmVsYXRpb24KaXMgbW9kaWZpZWQgZnJvbSB0aGUgZXhlY3V0b3IgZG93biB0byB0 aGUgc2NhbiBkZXNjcmlwdG9yLgoKVGhpcyBjb21taXQgaW1wbGVtZW50cyBvbi1hY2Nlc3MgVk0g c2V0dGluZyBmb3Igc2VxdWVudGlhbCBzY2FucyBhcyB3ZWxsCmFzIGZvciB0aGUgdW5kZXJseWlu ZyBoZWFwIHJlbGF0aW9uIGluIGluZGV4IHNjYW5zIGFuZCBiaXRtYXAgaGVhcApzY2Fucy4KLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAgfCAxNSArKysr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgMTUgKysr Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICAgICB8IDY3ICsr KysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgICAg ICAgICAgICB8IDQ2ICsrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJs ZWFtLmMgICAgICAgICAgICB8IDM5ICsrKysrKysrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgNCArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1V0aWxzLmMgICAgICAgICAgICAgIHwgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcEhlYXBzY2FuLmMgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRl eHNjYW4uYyAgICAgICAgICB8IDE4ICsrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vx c2Nhbi5jICAgICAgICAgICAgfCAyNCArKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0u aCAgICAgICAgICAgICAgICAgICAgfCAxMSArKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aCAgICAgICAgICAgICAgICAgICB8IDI0ICsrKysrKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9yZWxz Y2FuLmggICAgICAgICAgICAgICAgICB8ICA2ICsrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oICAgICAgICAgICAgICAgICAgfCAzMCArKysrKysrKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgICAgICAgICAgICAgICB8ICA2ICsrCiAuLi4vdC8wMzVfc3RhbmRieV9sb2dp Y2FsX2RlY29kaW5nLnBsICAgICAgICAgfCAgMyArLQogMTYgZmlsZXMgY2hhbmdlZCwgMjc3IGlu c2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5k ZXggNmYxNjFhNmVhYjIuLmY5ZTUwZDQ3YWVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpA QCAtNTU2LDYgKzU1Niw3IEBAIGhlYXBfcHJlcGFyZV9wYWdlc2NhbihUYWJsZVNjYW5EZXNjIHNz Y2FuKQogCUJ1ZmZlcgkJYnVmZmVyID0gc2Nhbi0+cnNfY2J1ZjsKIAlCbG9ja051bWJlciBibG9j ayA9IHNjYW4tPnJzX2NibG9jazsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKKwlCdWZmZXIJICAgKnZt YnVmZmVyID0gTlVMTDsKIAlQYWdlCQlwYWdlOwogCWludAkJCWxpbmVzOwogCWJvb2wJCWFsbF92 aXNpYmxlOwpAQCAtNTcwLDcgKzU3MSw5IEBAIGhlYXBfcHJlcGFyZV9wYWdlc2NhbihUYWJsZVNj YW5EZXNjIHNzY2FuKQogCS8qCiAJICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGZv ciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICovCi0JaGVhcF9wYWdlX3BydW5lX29w dChzY2FuLT5yc19iYXNlLnJzX3JkLCBidWZmZXIpOworCWlmIChzc2Nhbi0+cnNfZmxhZ3MgJiBT T19BTExPV19WTV9TRVQpCisJCXZtYnVmZmVyID0gJnNjYW4tPnJzX3ZtYnVmZmVyOworCWhlYXBf cGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfYmFzZS5yc19yZCwgYnVmZmVyLCB2bWJ1ZmZlcik7CiAK IAkvKgogCSAqIFdlIG11c3QgaG9sZCBzaGFyZSBsb2NrIG9uIHRoZSBidWZmZXIgY29udGVudCB3 aGlsZSBleGFtaW5pbmcgdHVwbGUKQEAgLTEyNDcsNiArMTI1MCw3IEBAIGhlYXBfYmVnaW5zY2Fu KFJlbGF0aW9uIHJlbGF0aW9uLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJCQkJICBz aXplb2YoVEJNSXRlcmF0ZVJlc3VsdCkpOwogCX0KIAorCXNjYW4tPnJzX3ZtYnVmZmVyID0gSW52 YWxpZEJ1ZmZlcjsKIAogCXJldHVybiAoVGFibGVTY2FuRGVzYykgc2NhbjsKIH0KQEAgLTEyODUs NiArMTI4OSwxMiBAQCBoZWFwX3Jlc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuLCBTY2FuS2V5IGtl eSwgYm9vbCBzZXRfcGFyYW1zLAogCQlzY2FuLT5yc19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAl9 CiAKKwlpZiAoQnVmZmVySXNWYWxpZChzY2FuLT5yc192bWJ1ZmZlcikpCisJeworCQlSZWxlYXNl QnVmZmVyKHNjYW4tPnJzX3ZtYnVmZmVyKTsKKwkJc2Nhbi0+cnNfdm1idWZmZXIgPSBJbnZhbGlk QnVmZmVyOworCX0KKwogCS8qCiAJICogU09fVFlQRV9CSVRNQVBTQ0FOIHdvdWxkIGJlIGNsZWFu ZWQgdXAgaGVyZSwgYnV0IGl0IGRvZXMgbm90IGhvbGQgYW55CiAJICogYWRkaXRpb25hbCBkYXRh IHZzIGEgbm9ybWFsIEhlYXBTY2FuCkBAIC0xMzE3LDYgKzEzMjcsOSBAQCBoZWFwX2VuZHNjYW4o VGFibGVTY2FuRGVzYyBzc2NhbikKIAlpZiAoQnVmZmVySXNWYWxpZChzY2FuLT5yc19jYnVmKSkK IAkJUmVsZWFzZUJ1ZmZlcihzY2FuLT5yc19jYnVmKTsKIAorCWlmIChCdWZmZXJJc1ZhbGlkKHNj YW4tPnJzX3ZtYnVmZmVyKSkKKwkJUmVsZWFzZUJ1ZmZlcihzY2FuLT5yc192bWJ1ZmZlcik7CisK IAkvKgogCSAqIE11c3QgZnJlZSB0aGUgcmVhZCBzdHJlYW0gYmVmb3JlIGZyZWVpbmcgdGhlIEJ1 ZmZlckFjY2Vzc1N0cmF0ZWd5LgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKaW5kZXggYmNiYWM4NDRiYjYuLmYwNWI5ZTQ5NjhkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTg1LDYgKzg1LDcgQEAgaGVhcGFtX2luZGV4 X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkKIAogCWhzY2FuLT54c19iYXNlLnJlbCA9IHJlbDsK IAloc2Nhbi0+eHNfY2J1ZiA9IEludmFsaWRCdWZmZXI7CisJaHNjYW4tPnhzX3ZtYnVmZmVyID0g SW52YWxpZEJ1ZmZlcjsKIAogCXJldHVybiAmaHNjYW4tPnhzX2Jhc2U7CiB9CkBAIC05OSw2ICsx MDAsMTIgQEAgaGVhcGFtX2luZGV4X2ZldGNoX3Jlc2V0KEluZGV4RmV0Y2hUYWJsZURhdGEgKnNj YW4pCiAJCVJlbGVhc2VCdWZmZXIoaHNjYW4tPnhzX2NidWYpOwogCQloc2Nhbi0+eHNfY2J1ZiA9 IEludmFsaWRCdWZmZXI7CiAJfQorCisJaWYgKEJ1ZmZlcklzVmFsaWQoaHNjYW4tPnhzX3ZtYnVm ZmVyKSkKKwl7CisJCVJlbGVhc2VCdWZmZXIoaHNjYW4tPnhzX3ZtYnVmZmVyKTsKKwkJaHNjYW4t PnhzX3ZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0x MzgsNyArMTQ1LDggQEAgaGVhcGFtX2luZGV4X2ZldGNoX3R1cGxlKHN0cnVjdCBJbmRleEZldGNo VGFibGVEYXRhICpzY2FuLAogCQkgKiBQcnVuZSBwYWdlLCBidXQgb25seSBpZiB3ZSB3ZXJlbid0 IGFscmVhZHkgb24gdGhpcyBwYWdlCiAJCSAqLwogCQlpZiAocHJldl9idWYgIT0gaHNjYW4tPnhz X2NidWYpCi0JCQloZWFwX3BhZ2VfcHJ1bmVfb3B0KGhzY2FuLT54c19iYXNlLnJlbCwgaHNjYW4t PnhzX2NidWYpOworCQkJaGVhcF9wYWdlX3BydW5lX29wdChoc2Nhbi0+eHNfYmFzZS5yZWwsIGhz Y2FuLT54c19jYnVmLAorCQkJCQkJCQlzY2FuLT5tb2RpZmllc19iYXNlX3JlbCA/IE5VTEwgOiAm aHNjYW4tPnhzX3ZtYnVmZmVyKTsKIAl9CiAKIAkvKiBPYnRhaW4gc2hhcmUtbG9jayBvbiB0aGUg YnVmZmVyIHNvIHdlIGNhbiBleGFtaW5lIHZpc2liaWxpdHkgKi8KQEAgLTI0NzEsNiArMjQ3OSw3 IEBAIEJpdG1hcEhlYXBTY2FuTmV4dEJsb2NrKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAlUQk1JdGVy YXRlUmVzdWx0ICp0Ym1yZXM7CiAJT2Zmc2V0TnVtYmVyIG9mZnNldHNbVEJNX01BWF9UVVBMRVNf UEVSX1BBR0VdOwogCWludAkJCW5vZmZzZXRzID0gLTE7CisJQnVmZmVyCSAgICp2bWJ1ZmZlciA9 IE5VTEw7CiAKIAlBc3NlcnQoc2Nhbi0+cnNfZmxhZ3MgJiBTT19UWVBFX0JJVE1BUFNDQU4pOwog CUFzc2VydChoc2Nhbi0+cnNfcmVhZF9zdHJlYW0pOwpAQCAtMjUxNyw3ICsyNTI2LDkgQEAgQml0 bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAogCS8qCiAJICogUHJ1bmUg YW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUu CiAJICovCi0JaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19yZCwgYnVmZmVyKTsKKwlpZiAo c2Nhbi0+cnNfZmxhZ3MgJiBTT19BTExPV19WTV9TRVQpCisJCXZtYnVmZmVyID0gJmhzY2FuLT5y c192bWJ1ZmZlcjsKKwloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZmZXIsIHZt YnVmZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZl ciBjb250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYwppbmRleCBiYThkZGM3ZmEzNS4uNjlkOGU0MmJkYzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jCkBAIC0xOTgsOSArMTk4LDEzIEBAIHN0YXRpYyBib29sIGlkZW50aWZ5X2Fu ZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxhdGlvbiwKICAqIGlmIHRoZXJlJ3Mgbm90 IGFueSB1c2UgaW4gcHJ1bmluZy4KICAqCiAgKiBDYWxsZXIgbXVzdCBoYXZlIHBpbiBvbiB0aGUg YnVmZmVyLCBhbmQgbXVzdCAqbm90KiBoYXZlIGEgbG9jayBvbiBpdC4KKyAqCisgKiBJZiB2bWJ1 ZmZlciBpcyBub3QgTlVMTCwgaXQgaXMgb2theSBmb3IgcHJ1bmluZyB0byBzZXQgdGhlIHZpc2li aWxpdHkgbWFwIGlmCisgKiB0aGUgcGFnZSBpcyBhbGwgdmlzaWJsZS4gV2Ugd2lsbCB0YWtlIGNh cmUgb2YgcGlubmluZyBhbmQsIGlmIG5lZWRlZCwKKyAqIHJlYWRpbmcgaW4gdGhlIHBhZ2Ugb2Yg dGhlIHZpc2liaWxpdHkgbWFwLgogICovCiB2b2lkCi1oZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQoraGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwgQnVmZmVyICp2bWJ1ZmZlcikKIHsKIAlQYWdlCQlw YWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCVRyYW5zYWN0aW9uSWQgcHJ1bmVfeGlkOwpA QCAtMjY0LDYgKzI2OCwxMyBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9u LCBCdWZmZXIgYnVmZmVyKQogCQl7CiAJCQlPZmZzZXROdW1iZXIgZHVtbXlfb2ZmX2xvYzsKIAkJ CVBydW5lRnJlZXplUmVzdWx0IHByZXN1bHQ7CisJCQlpbnQJCQlvcHRpb25zID0gMDsKKworCQkJ aWYgKHZtYnVmZmVyKQorCQkJeworCQkJCXZpc2liaWxpdHltYXBfcGluKHJlbGF0aW9uLCBCdWZm ZXJHZXRCbG9ja051bWJlcihidWZmZXIpLCB2bWJ1ZmZlcik7CisJCQkJb3B0aW9ucyA9IEhFQVBf UEFHRV9QUlVORV9VUERBVEVfVk07CisJCQl9CiAKIAkJCS8qCiAJCQkgKiBGb3Igbm93LCBwYXNz IG1hcmtfdW51c2VkX25vdyBhcyBmYWxzZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3IKQEAgLTI3 MSw5ICsyODIsMTAgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVm ZmVyIGJ1ZmZlcikKIAkJCSAqIHRoYXQgZHVyaW5nIG9uLWFjY2VzcyBwcnVuaW5nIHdpdGggdGhl IGN1cnJlbnQgaW1wbGVtZW50YXRpb24uCiAJCQkgKi8KIAkJCWhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKHJlbGF0aW9uLCBidWZmZXIsIGZhbHNlLAotCQkJCQkJCQkJICAgSW52YWxpZEJ1ZmZl ciwKLQkJCQkJCQkJCSAgIHZpc3Rlc3QsIDAsCi0JCQkJCQkJCQkgICBOVUxMLCAmcHJlc3VsdCwg UFJVTkVfT05fQUNDRVNTLCAmZHVtbXlfb2ZmX2xvYywgTlVMTCwgTlVMTCk7CisJCQkJCQkJCQkg ICB2bWJ1ZmZlciA/ICp2bWJ1ZmZlciA6IEludmFsaWRCdWZmZXIsCisJCQkJCQkJCQkgICB2aXN0 ZXN0LCBvcHRpb25zLAorCQkJCQkJCQkJICAgTlVMTCwgJnByZXN1bHQsIFBSVU5FX09OX0FDQ0VT UywKKwkJCQkJCQkJCSAgICZkdW1teV9vZmZfbG9jLCBOVUxMLCBOVUxMKTsKIAogCQkJLyoKIAkJ CSAqIFJlcG9ydCB0aGUgbnVtYmVyIG9mIHR1cGxlcyByZWNsYWltZWQgdG8gcGdzdGF0cy4gIFRo aXMgaXMKQEAgLTUxOSwxMiArNTMxLDE3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIGFsbC1mcm96ZW4gZm9yIHVzZSBp biBvcHBvcnR1bmlzdGljIGZyZWV6aW5nIGFuZCB0byB1cGRhdGUgdGhlIFZNIGlmCiAJICogdGhl IGNhbGxlciByZXF1ZXN0cyBpdC4KIAkgKgotCSAqIEN1cnJlbnRseSwgb25seSBWQUNVVU0gYXR0 ZW1wdHMgZnJlZXppbmcgYW5kIHNldHRpbmcgdGhlIFZNIGJpdHMuIEJ1dAotCSAqIG90aGVyIGNh bGxlcnMgY291bGQgZG8gZWl0aGVyIG9uZS4gVGhlIHZpc2liaWxpdHkgYm9va2tlZXBpbmcgaXMK LQkgKiByZXF1aXJlZCBmb3Igb3Bwb3J0dW5pc3RpYyBmcmVlemluZyAoaW4gYWRkaXRpb24gdG8g c2V0dGluZyB0aGUgVk0KLQkgKiBiaXRzKSBiZWNhdXNlIHdlIG9ubHkgY29uc2lkZXIgb3Bwb3J0 dW5pc3RpY2FsbHkgZnJlZXppbmcgdHVwbGVzIGlmIHRoZQotCSAqIHdob2xlIHBhZ2Ugd291bGQg YmVjb21lIGFsbC1mcm96ZW4gb3IgaWYgdGhlIHdob2xlIHBhZ2Ugd2lsbCBiZSBmcm96ZW4KLQkg KiBleGNlcHQgZm9yIGRlYWQgdHVwbGVzIHRoYXQgd2lsbCBiZSByZW1vdmVkIGJ5IHZhY3V1bS4K KwkgKiBDdXJyZW50bHksIG9ubHkgVkFDVVVNIGF0dGVtcHRzIGZyZWV6aW5nLiBCdXQgb3RoZXIg Y2FsbGVycyBjb3VsZC4gVGhlCisJICogdmlzaWJpbGl0eSBib29ra2VlcGluZyBpcyByZXF1aXJl ZCBmb3Igb3Bwb3J0dW5pc3RpYyBmcmVlemluZyAoaW4KKwkgKiBhZGRpdGlvbiB0byBzZXR0aW5n IHRoZSBWTSBiaXRzKSBiZWNhdXNlIHdlIG9ubHkgY29uc2lkZXIKKwkgKiBvcHBvcnR1bmlzdGlj YWxseSBmcmVlemluZyB0dXBsZXMgaWYgdGhlIHdob2xlIHBhZ2Ugd291bGQgYmVjb21lCisJICog YWxsLWZyb3plbiBvciBpZiB0aGUgd2hvbGUgcGFnZSB3aWxsIGJlIGZyb3plbiBleGNlcHQgZm9y IGRlYWQgdHVwbGVzCisJICogdGhhdCB3aWxsIGJlIHJlbW92ZWQgYnkgdmFjdXVtLiBCdXQgaWYg Y29uc2lkZXJfdXBkYXRlX3ZtIGlzIGZhbHNlLAorCSAqIHdlJ2xsIG5vdCBzZXQgdGhlIFZNIGV2 ZW4gaWYgdGhlIHBhZ2UgaXMgZGlzY292ZXJlZCB0byBiZSBhbGwtdmlzaWJsZS4KKwkgKgorCSAq IElmIG9ubHkgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSBpcyBwYXNzZWQgYW5kIG5vdAorCSAq IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsIHByc3RhdGUuYWxsX2Zyb3plbiBtdXN0IGJlIGluaXRp YWxpemVkIHRvIGZhbHNlCisJICogYmVjYXVzZSB3ZSB3aWxsIG5vdCBjYWxsIGhlYXBfcHJlcGFy ZV9mcmVlemVfdHVwbGUoKSBvbiBlYWNoIHR1cGxlLgogCSAqCiAJICogSWYgb25seSB1cGRhdGlu ZyB0aGUgVk0sIHdlIG11c3QgaW5pdGlhbGl6ZSBhbGxfZnJvemVuIHRvIGZhbHNlLCBhcwogCSAq IGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoKSB3aWxsIG5vdCBiZSBjYWxsZWQgZm9yIGVhY2gg dHVwbGUgb24gdGhlCkBAIC01MzYsNyArNTUzLDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJICogd2hldGhlciBvciBub3Qg dG8gZnJlZXplIGJ1dCBiZWZvcmUgZGVjaWRpbmcgd2hldGhlciBvciBub3QgdG8gdXBkYXRlCiAJ ICogdGhlIFZNIHNvIHRoYXQgd2UgZG9uJ3Qgc2V0IHRoZSBWTSBiaXQgaW5jb3JyZWN0bHkuCiAJ ICoKLQkgKiBJZiBub3QgZnJlZXppbmcgb3IgdXBkYXRpbmcgdGhlIFZNLCB3ZSBvdGhlcndpc2Ug YXZvaWQgdGhlIGV4dHJhCisJICogSWYgbm90IGZyZWV6aW5nIGFuZCBub3QgdXBkYXRpbmcgdGhl IFZNLCB3ZSBhdm9pZCB0aGUgZXh0cmEKIAkgKiBib29ra2VlcGluZy4gSW5pdGlhbGl6aW5nIGFs bF92aXNpYmxlIHRvIGZhbHNlIGFsbG93cyBza2lwcGluZyB0aGUgd29yawogCSAqIHRvIHVwZGF0 ZSB0aGVtIGluIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKS4KIAkgKi8K QEAgLTg4NSwxMiArOTAyLDMwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxzZTsK IAl9CiAKKwkvKgorCSAqIElmIHRoaXMgaXMgYW4gb24tYWNjZXNzIGNhbGwgYW5kIHdlJ3JlIG5v dCBhY3R1YWxseSBwcnVuaW5nLCBhdm9pZAorCSAqIHNldHRpbmcgdGhlIHZpc2liaWxpdHkgbWFw IGlmIGl0IHdvdWxkIG5ld2x5IGRpcnR5IHRoZSBoZWFwIHBhZ2Ugb3IsIGlmCisJICogdGhlIHBh Z2UgaXMgYWxyZWFkeSBkaXJ0eSwgaWYgZG9pbmcgc28gd291bGQgcmVxdWlyZSBpbmNsdWRpbmcg YQorCSAqIGZ1bGwtcGFnZSBpbWFnZSAoRlBJKSBvZiB0aGUgaGVhcCBwYWdlIGluIHRoZSBXQUwu IFRoaXMgc2l0dWF0aW9uCisJICogc2hvdWxkIGJlIHJhcmUsIGFzIG9uLWFjY2VzcyBwcnVuaW5n IGlzIG9ubHkgYXR0ZW1wdGVkIHdoZW4KKwkgKiBwZF9wcnVuZV94aWQgaXMgdmFsaWQuCisJICov CisJaWYgKHJlYXNvbiA9PSBQUlVORV9PTl9BQ0NFU1MgJiYKKwkJcHJzdGF0ZS5jb25zaWRlcl91 cGRhdGVfdm0gJiYKKwkJcHJzdGF0ZS5hbGxfdmlzaWJsZSAmJgorCQkhZG9fcHJ1bmUgJiYgIWRv X2ZyZWV6ZSAmJgorCQkoIUJ1ZmZlcklzRGlydHkoYnVmZmVyKSB8fCBYTG9nQ2hlY2tCdWZmZXJO ZWVkc0JhY2t1cChidWZmZXIpKSkKKwl7CisJCXByc3RhdGUuY29uc2lkZXJfdXBkYXRlX3ZtID0g ZmFsc2U7CisJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxz ZTsKKwl9CisKIAlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fCBwcnN0YXRlLmFsbF92aXNp YmxlKTsKIAogCS8qCi0JICogSGFuZGxlIHNldHRpbmcgdmlzaWJpbGl0eSBtYXAgYml0IGJhc2Vk IG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChhcwotCSAqIG9mIGxhc3QgaGVhcF92YWNfc2Nh bl9uZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9tIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9m cm96ZW4gdmFyaWFibGVzLgorCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBi YXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAoaWYKKwkgKiBwcm92aWRlZCwgZS5nLiBi eSB2YWN1dW0gZnJvbSB0aGUgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKQorCSAqIGNh bGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB2YXJpYWJsZXMuCiAJICov CiAJaWYgKHByc3RhdGUuY29uc2lkZXJfdXBkYXRlX3ZtKQogCXsKQEAgLTIyODQsOCArMjMxOSw4 IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1 cGxlcywKICAqIC0gUmVhcGluZzogRHVyaW5nIHZhY3V1bSBwaGFzZSBJSUksIGl0ZW1zIHRoYXQg YXJlIGFscmVhZHkgTFBfREVBRCBhcmUKICAqICAgbWFya2VkIGFzIHVudXNlZC4KICAqCi0gKiAt IFZNIHVwZGF0ZXM6IEFmdGVyIHZhY3V1bSBwaGFzZXMgSSBhbmQgSUlJLCB0aGUgaGVhcCBwYWdl IG1heSBiZSBtYXJrZWQKLSAqICAgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4uCisgKiAtIFZN IHVwZGF0ZXM6IEFmdGVyIHZhY3V1bSBwaGFzZXMgSSBhbmQgSUlJIGFuZCBvbi1hY2Nlc3MsIHRo ZSBoZWFwIHBhZ2UKKyAqICAgbWF5IGJlIG1hcmtlZCBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3pl bi4KICAqCiAgKiBUaGVzZSBjaGFuZ2VzIGFsbCBoYXBwZW4gdG9nZXRoZXIsIHNvIHdlIHVzZSBh IHNpbmdlbCBXQUwgcmVjb3JkIGZvciB0aGVtCiAgKiBhbGwuCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2lu ZGV4YW0uYwppbmRleCA4NmQxMWY0ZWM3OS4uNDYwM2VjZTA5YmQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2luZGV4YW0uYwpAQCAtMjg5LDYgKzI4OSwzMiBAQCBpbmRleF9iZWdpbnNjYW4oUmVsYXRp b24gaGVhcFJlbGF0aW9uLAogCXJldHVybiBzY2FuOwogfQogCisvKgorICogU2ltaWxhciB0byBp bmRleF9iZWdpbnNjYW4oKSwgYnV0IGFsbG93cyB0aGUgY2FsbGVyIHRvIGluZGljYXRlIHdoZXRo ZXIgdGhlCisgKiBxdWVyeSBtb2RpZmllcyB0aGUgdW5kZXJseWluZyBiYXNlIHJlbGF0aW9uLiBU aGlzIGlzIHVzZWQgd2hlbiB0aGUgY2FsbGVyCisgKiB3YW50cyB0byBhdHRlbXB0IG1hcmtpbmcg cGFnZXMgaW4gdGhlIGJhc2UgcmVsYXRpb24gYXMgYWxsLXZpc2libGUgaW4gdGhlCisgKiB2aXNp YmlsaXR5IG1hcCBkdXJpbmcgb24tYWNjZXNzIHBydW5pbmcuCisgKi8KK0luZGV4U2NhbkRlc2MK K2luZGV4X2JlZ2luc2Nhbl92bXNldChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCisJCQkJCSAgUmVs YXRpb24gaW5kZXhSZWxhdGlvbiwKKwkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJICBJ bmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCisJCQkJCSAgaW50IG5rZXlzLCBp bnQgbm9yZGVyYnlzLCBib29sIG1vZGlmaWVzX2Jhc2VfcmVsKQoreworCUluZGV4U2NhbkRlc2Mg c2NhbjsKKworCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbGF0aW9uLAorCQkJCQkJICAg aW5kZXhSZWxhdGlvbiwKKwkJCQkJCSAgIHNuYXBzaG90LAorCQkJCQkJICAgaW5zdHJ1bWVudCwK KwkJCQkJCSAgIG5rZXlzLCBub3JkZXJieXMpOworCisJc2Nhbi0+eHNfaGVhcGZldGNoLT5tb2Rp Zmllc19iYXNlX3JlbCA9IG1vZGlmaWVzX2Jhc2VfcmVsOworCisJcmV0dXJuIHNjYW47Cit9CisK IC8qCiAgKiBpbmRleF9iZWdpbnNjYW5fYml0bWFwIC0gc3RhcnQgYSBzY2FuIG9mIGFuIGluZGV4 IHdpdGggYW1nZXRiaXRtYXAKICAqCkBAIC02MjAsNiArNjQ2LDI2IEBAIGluZGV4X2JlZ2luc2Nh bl9wYXJhbGxlbChSZWxhdGlvbiBoZWFwcmVsLCBSZWxhdGlvbiBpbmRleHJlbCwKIAlyZXR1cm4g c2NhbjsKIH0KIAorLyoKKyAqIFBhcmFsbGVsIHZlcnNpb24gb2YgaW5kZXhfYmVnaW5zY2FuX3Zt c2V0KCkKKyAqLworSW5kZXhTY2FuRGVzYworaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsX3Ztc2V0 KFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9uIGluZGV4cmVsLAorCQkJCQkJCSAgIEluZGV4U2Nh bkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKKwkJCQkJCQkgICBpbnQgbmtleXMsIGludCBu b3JkZXJieXMsCisJCQkJCQkJICAgUGFyYWxsZWxJbmRleFNjYW5EZXNjIHBzY2FuLAorCQkJCQkJ CSAgIGJvb2wgbW9kaWZpZXNfYmFzZV9yZWwpCit7CisJSW5kZXhTY2FuRGVzYyBzY2FuOworCisJ c2NhbiA9IGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbChoZWFwcmVsLCBpbmRleHJlbCwKKwkJCQkJ CQkJCWluc3RydW1lbnQsCisJCQkJCQkJCQlua2V5cywgbm9yZGVyYnlzLAorCQkJCQkJCQkJcHNj YW4pOworCXNjYW4tPnhzX2hlYXBmZXRjaC0+bW9kaWZpZXNfYmFzZV9yZWwgPSBtb2RpZmllc19i YXNlX3JlbDsKKwlyZXR1cm4gc2NhbjsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLQogICogaW5k ZXhfZ2V0bmV4dF90aWQgLSBnZXQgdGhlIG5leHQgVElEIGZyb20gYSBzY2FuCiAgKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90YWJsZS90YWJsZWFtLmMKaW5kZXggYTU2YzVlY2ViMTQuLjY3ZGJmOTlmNWI1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKQEAgLTQ5LDYgKzQ5LDEwIEBACiBjaGFyCSAgICpk ZWZhdWx0X3RhYmxlX2FjY2Vzc19tZXRob2QgPSBERUZBVUxUX1RBQkxFX0FDQ0VTU19NRVRIT0Q7 CiBib29sCQlzeW5jaHJvbml6ZV9zZXFzY2FucyA9IHRydWU7CiAKKy8qIEhlbHBlciBmb3IgdGFi bGVfYmVnaW5zY2FuX3BhcmFsbGVsKCkgYW5kIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNl dCgpICovCitzdGF0aWMgVGFibGVTY2FuRGVzYyB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWxfY29t bW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCisJCQkJ CQkJCQkJCQkJIHVpbnQzMiBmbGFncyk7CisKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICog U2xvdCBmdW5jdGlvbnMuCkBAIC0xNjIsMTIgKzE2NiwxNCBAQCB0YWJsZV9wYXJhbGxlbHNjYW5f aW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKIAl9 CiB9CiAKLVRhYmxlU2NhbkRlc2MKLXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBy ZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQorLyoKKyAqIENvbW1vbiBoZWxw ZXIgZm9yIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbCgpIGFuZCB0YWJsZV9iZWdpbnNjYW5fcGFy YWxsZWxfdm1zZXQoKQorICovCitzdGF0aWMgVGFibGVTY2FuRGVzYwordGFibGVfYmVnaW5zY2Fu X3BhcmFsbGVsX2NvbW1vbihSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNj IHBzY2FuLAorCQkJCQkJCQl1aW50MzIgZmxhZ3MpCiB7CiAJU25hcHNob3QJc25hcHNob3Q7Ci0J dWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8Ci0JCVNPX0FMTE9XX1NUUkFUIHwgU09f QUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOwogCiAJQXNzZXJ0KFJlbEZpbGVMb2NhdG9y RXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nhbi0+cGhzX2xvY2F0b3IpKTsKIApAQCAt MTg4LDYgKzE5NCwzMSBAQCB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRp b24sIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbikKIAkJCQkJCQkJCQkJcHNjYW4sIGZsYWdz KTsKIH0KIAorVGFibGVTY2FuRGVzYwordGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9u IHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pCit7CisJdWludDMyCQlmbGFn cyA9IFNPX1RZUEVfU0VRU0NBTiB8CisJCVNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8 IFNPX0FMTE9XX1BBR0VNT0RFOworCisJcmV0dXJuIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF9j b21tb24ocmVsYXRpb24sIHBzY2FuLCBmbGFncyk7Cit9CisKKy8qCisgKiBQYXJhbGxlbCB2ZXJz aW9uIG9mIHRhYmxlX2JlZ2luc2Nhbl92bXNldCgpCisgKi8KK1RhYmxlU2NhbkRlc2MKK3RhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJs ZVNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCSAgIGJvb2wgbW9kaWZpZXNfcmVsKQoreworCXVpbnQz MgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfAorCQlTT19BTExPV19TVFJBVCB8IFNPX0FMTE9X X1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKKworCWlmICghbW9kaWZpZXNfcmVsKQorCQlmbGFn cyB8PSBTT19BTExPV19WTV9TRVQ7CisKKwlyZXR1cm4gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVs X2NvbW1vbihyZWxhdGlvbiwgcHNjYW4sIGZsYWdzKTsKK30KKwogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKiBJbmRleCBzY2FuIHJlbGF0ZWQgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKaW5kZXggZmYxMmUyZTEzNjQuLjJlMDQ3NGM5NDhhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKQEAgLTkxNiw2ICs5MTYsMTAgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2Ms IGludCBlZmxhZ3MpCiAJCQkJCWJyZWFrOwogCQkJfQogCisJCQkvKiBJZiBpdCBoYXMgYSByb3dt YXJrLCB0aGUgcmVsYXRpb24gaXMgbW9kaWZpZWQgKi8KKwkJCWVzdGF0ZS0+ZXNfbW9kaWZpZWRf cmVsaWRzID0gYm1zX2FkZF9tZW1iZXIoZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMsCisJCQkJ CQkJCQkJCQkJCXJjLT5ydGkpOworCiAJCQkvKiBDaGVjayB0aGF0IHJlbGF0aW9uIGlzIGEgbGVn YWwgdGFyZ2V0IGZvciBtYXJraW5nICovCiAJCQlpZiAocmVsYXRpb24pCiAJCQkJQ2hlY2tWYWxp ZFJvd01hcmtSZWwocmVsYXRpb24sIHJjLT5tYXJrVHlwZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCmluZGV4IGZkYzY1YzJiNDJiLi4yOGEwNmRjZDI0NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMKQEAgLTg5Myw2ICs4OTMsOCBAQCBFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKEVTdGF0ZSAq ZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQllc3RhdGUtPmVzX3Jlc3Vs dF9yZWxhdGlvbnMgPSAoUmVzdWx0UmVsSW5mbyAqKikKIAkJCXBhbGxvYzAoZXN0YXRlLT5lc19y YW5nZV90YWJsZV9zaXplICogc2l6ZW9mKFJlc3VsdFJlbEluZm8gKikpOwogCWVzdGF0ZS0+ZXNf cmVzdWx0X3JlbGF0aW9uc1tydGkgLSAxXSA9IHJlc3VsdFJlbEluZm87CisJZXN0YXRlLT5lc19t b2RpZmllZF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcihlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlk cywKKwkJCQkJCQkJCQkJCXJ0aSk7CiAKIAkvKgogCSAqIFNhdmluZyBpbiB0aGUgbGlzdCBhbGxv d3MgdG8gYXZvaWQgbmVlZGxlc3NseSB0cmF2ZXJzaW5nIHRoZSB3aG9sZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCBiZjI0ZjNkN2ZlMC4uYWY2ZGI5Zjc5 MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCkBAIC0xMDUs MTEgKzEwNSwxNiBAQCBCaXRtYXBUYWJsZVNjYW5TZXR1cChCaXRtYXBIZWFwU2NhblN0YXRlICpu b2RlKQogCSAqLwogCWlmICghbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKQogCXsKKwkJYm9v bAkJbW9kaWZpZXNfcmVsID0KKwkJCWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBz LnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCQkgIG5vZGUtPnNzLnBzLnN0YXRlLT5lc19tb2RpZmll ZF9yZWxpZHMpOworCiAJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9CiAJCQl0YWJsZV9i ZWdpbnNjYW5fYm0obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCSAgIG5vZGUt PnNzLnBzLnN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkgICAwLAotCQkJCQkJCSAgIE5VTEwp OworCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJICAgbW9kaWZpZXNfcmVsKTsKIAl9CiAKIAlub2Rl LT5zcy5zc19jdXJyZW50U2NhbkRlc2MtPnN0LnJzX3RibWl0ZXJhdG9yID0gdGJtaXRlcmF0b3I7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXggN2ZjYWEzN2ZlNjIuLmMyZmZi ZDNiMDhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC0xMDIsMTYgKzEw MiwyMiBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRlc2Mg PT0gTlVMTCkKIAl7CisKKwkJYm9vbAkJbW9kaWZpZXNfYmFzZV9yZWwgPQorCQkJYm1zX2lzX21l bWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCSAgZXN0 YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYg dGhlIGluZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJpYWxs eSBleGVjdXRpbmcgYW4gaW5kZXggc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVs LgogCQkgKi8KLQkJc2NhbmRlc2MgPSBpbmRleF9iZWdpbnNjYW4obm9kZS0+c3Muc3NfY3VycmVu dFJlbGF0aW9uLAotCQkJCQkJCQkgICBub2RlLT5pc3NfUmVsYXRpb25EZXNjLAotCQkJCQkJCQkg ICBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICAmbm9kZS0+aXNzX0luc3RydW1lbnQs Ci0JCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+aXNz X051bU9yZGVyQnlLZXlzKTsKKwkJc2NhbmRlc2MgPSBpbmRleF9iZWdpbnNjYW5fdm1zZXQobm9k ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJCQkJCSBub2RlLT5pc3NfUmVsYXRpb25E ZXNjLAorCQkJCQkJCQkJCSBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCQkJCSAmbm9kZS0+ aXNzX0luc3RydW1lbnQsCisJCQkJCQkJCQkJIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKKwkJCQkJ CQkJCQkgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzLAorCQkJCQkJCQkJCSBtb2RpZmllc19iYXNl X3JlbCk7CiAKIAkJbm9kZS0+aXNzX1NjYW5EZXNjID0gc2NhbmRlc2M7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDk0MDQ3ZDI5NDMwLi5mZDY5Mjc1YzE4MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC02NSwxMyArNjUsMTggQEAgU2VxTmV4dChTZXFTY2Fu U3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCWJvb2wJCW1vZGlm aWVzX3JlbCA9CisJCQlibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+ c2NhbnJlbGlkLAorCQkJCQkJICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyk7CisKIAkJLyoK IAkJICogV2UgcmVhY2ggaGVyZSBpZiB0aGUgc2NhbiBpcyBub3QgcGFyYWxsZWwsIG9yIGlmIHdl J3JlIHNlcmlhbGx5CiAJCSAqIGV4ZWN1dGluZyBhIHNjYW4gdGhhdCB3YXMgcGxhbm5lZCB0byBi ZSBwYXJhbGxlbC4KIAkJICovCi0JCXNjYW5kZXNjID0gdGFibGVfYmVnaW5zY2FuKG5vZGUtPnNz LnNzX2N1cnJlbnRSZWxhdGlvbiwKLQkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKLQkJ CQkJCQkJICAgMCwgTlVMTCk7CisJCXNjYW5kZXNjID0gdGFibGVfYmVnaW5zY2FuX3Ztc2V0KG5v ZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJCQkgZXN0YXRlLT5lc19zbmFwc2hv dCwKKwkJCQkJCQkJCQkgMCwgTlVMTCwgbW9kaWZpZXNfcmVsKTsKKwogCQlub2RlLT5zcy5zc19j dXJyZW50U2NhbkRlc2MgPSBzY2FuZGVzYzsKIAl9CiAKQEAgLTM2Niw2ICszNzEsNyBAQCBFeGVj U2VxU2NhbkluaXRpYWxpemVEU00oU2VxU2NhblN0YXRlICpub2RlLAogCQkJCQkJIFBhcmFsbGVs Q29udGV4dCAqcGN4dCkKIHsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRl OworCWJvb2wJCW1vZGlmaWVzX3JlbDsKIAlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CiAK IAlwc2NhbiA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4pOwpA QCAtMzczLDggKzM3OSwxMSBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVEU00oU2VxU2NhblN0YXRl ICpub2RlLAogCQkJCQkJCQkgIHBzY2FuLAogCQkJCQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3Qp OwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2Rl X2lkLCBwc2Nhbik7CisJbW9kaWZpZXNfcmVsID0gYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9k ZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCQkJIGVzdGF0ZS0+ZXNfbW9kaWZpZWRf cmVsaWRzKTsKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPQotCQl0YWJsZV9iZWdpbnNj YW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLCBwc2Nhbik7CisJCXRhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBz Y2FuLAorCQkJCQkJCQkJICAgbW9kaWZpZXNfcmVsKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDA0 LDggKzQxMywxMyBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVXb3JrZXIoU2VxU2NhblN0YXRlICpu b2RlLAogCQkJCQkJCVBhcmFsbGVsV29ya2VyQ29udGV4dCAqcHdjeHQpCiB7CiAJUGFyYWxsZWxU YWJsZVNjYW5EZXNjIHBzY2FuOworCWJvb2wJCW1vZGlmaWVzX3JlbCA9CisJCWJtc19pc19tZW1i ZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCSAgbm9kZS0+ c3MucHMuc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyk7CiAKIAlwc2NhbiA9IHNobV90b2NfbG9v a3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFsc2UpOwog CW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9Ci0JCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxl bChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsKKwkJdGFibGVfYmVnaW5zY2Fu X3BhcmFsbGVsX3Ztc2V0KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJCSAg IHBzY2FuLAorCQkJCQkJCQkJICAgbW9kaWZpZXNfcmVsKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKaW5kZXgg NWIyYWIxODFiNWYuLmJmMjcyYzJjMzdmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv Z2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAtMTgwLDYgKzE4MCwx MSBAQCBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJl bGF0aW9uLAogCQkJCQkJCQkJIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJIEluZGV4U2Nh bkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKIAkJCQkJCQkJCSBpbnQgbmtleXMsIGludCBu b3JkZXJieXMpOworZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5zY2FuX3Ztc2V0KFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbGF0aW9u LAorCQkJCQkJCQkJCSAgIFNuYXBzaG90IHNuYXBzaG90LAorCQkJCQkJCQkJCSAgIEluZGV4U2Nh bkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKKwkJCQkJCQkJCQkgICBpbnQgbmtleXMsIGlu dCBub3JkZXJieXMsIGJvb2wgbW9kaWZpZXNfaGVhcF9yZWwpOwogZXh0ZXJuIEluZGV4U2NhbkRl c2MgaW5kZXhfYmVnaW5zY2FuX2JpdG1hcChSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQkJCQkJ CQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJSW5kZXhTY2FuSW5zdHJ1bWVudGF0 aW9uICppbnN0cnVtZW50LApAQCAtMjA2LDYgKzIxMSwxMiBAQCBleHRlcm4gSW5kZXhTY2FuRGVz YyBpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gaGVhcHJlbCwKIAkJCQkJCQkJCQkJ ICBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCiAJCQkJCQkJCQkJCSAgaW50 IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAogCQkJCQkJCQkJCQkgIFBhcmFsbGVsSW5kZXhTY2FuRGVz YyBwc2Nhbik7CisKK2V4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxl bF92bXNldChSZWxhdGlvbiBoZWFwcmVsLCBSZWxhdGlvbiBpbmRleHJlbCwKKwkJCQkJCQkJCQkJ CQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCisJCQkJCQkJCQkJCQkJaW50 IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAorCQkJCQkJCQkJCQkJCVBhcmFsbGVsSW5kZXhTY2FuRGVz YyBwc2NhbiwKKwkJCQkJCQkJCQkJCQlib29sIG1vZGlmaWVzX3JlbCk7CiBleHRlcm4gSXRlbVBv aW50ZXIgaW5kZXhfZ2V0bmV4dF90aWQoSW5kZXhTY2FuRGVzYyBzY2FuLAogCQkJCQkJCQkJIFNj YW5EaXJlY3Rpb24gZGlyZWN0aW9uKTsKIHN0cnVjdCBUdXBsZVRhYmxlU2xvdDsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaAppbmRleCA0Mjc4ZjM1MWJkZi4uMTZmNzkwNGEyMWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAg LTk0LDYgKzk0LDEzIEBAIHR5cGVkZWYgc3RydWN0IEhlYXBTY2FuRGVzY0RhdGEKIAkgKi8KIAlQ YXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAqcnNfcGFyYWxsZWx3b3JrZXJkYXRhOwog CisJLyoKKwkgKiBGb3Igc2VxdWVudGlhbCBzY2FucyBhbmQgYml0bWFwIGhlYXAgc2NhbnMuIElm IHRoZSByZWxhdGlvbiBpcyBub3QKKwkgKiBiZWluZyBtb2RpZmllZCwgb24tYWNjZXNzIHBydW5p bmcgbWF5IHJlYWQgaW4gdGhlIGN1cnJlbnQgaGVhcCBwYWdlJ3MKKwkgKiBjb3JyZXNwb25kaW5n IFZNIGJsb2NrIHRvIHRoaXMgYnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJcnNfdm1idWZmZXI7CisK IAkvKiB0aGVzZSBmaWVsZHMgb25seSB1c2VkIGluIHBhZ2UtYXQtYS10aW1lIG1vZGUgYW5kIGZv ciBiaXRtYXAgc2NhbnMgKi8KIAl1aW50MzIJCXJzX2NpbmRleDsJCS8qIGN1cnJlbnQgdHVwbGUn cyBpbmRleCBpbiB2aXN0dXBsZXMgKi8KIAl1aW50MzIJCXJzX250dXBsZXM7CQkvKiBudW1iZXIg b2YgdmlzaWJsZSB0dXBsZXMgb24gcGFnZSAqLwpAQCAtMTE2LDggKzEyMywxOCBAQCB0eXBlZGVm IHN0cnVjdCBJbmRleEZldGNoSGVhcERhdGEKIHsKIAlJbmRleEZldGNoVGFibGVEYXRhIHhzX2Jh c2U7CS8qIEFNIGluZGVwZW5kZW50IHBhcnQgb2YgdGhlIGRlc2NyaXB0b3IgKi8KIAotCUJ1ZmZl cgkJeHNfY2J1ZjsJCS8qIGN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55ICovCi0J LyogTkI6IGlmIHhzX2NidWYgaXMgbm90IEludmFsaWRCdWZmZXIsIHdlIGhvbGQgYSBwaW4gb24g dGhhdCBidWZmZXIgKi8KKwkvKgorCSAqIEN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYg YW55LiBOQjogaWYgeHNfY2J1ZiBpcyBub3QKKwkgKiBJbnZhbGlkQnVmZmVyLCB3ZSBob2xkIGEg cGluIG9uIHRoYXQgYnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJeHNfY2J1ZjsKKworCS8qCisJICog Rm9yIGluZGV4IHNjYW5zIHRoYXQgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyBoZWFwIHRh YmxlLCBvbi1hY2Nlc3MKKwkgKiBwcnVuaW5nIG1heSByZWFkIGluIHRoZSBjdXJyZW50IGhlYXAg cGFnZSdzIGNvcnJlc3BvbmRpbmcgVk0gYmxvY2sgdG8KKwkgKiB0aGlzIGJ1ZmZlci4KKwkgKi8K KwlCdWZmZXIJCXhzX3ZtYnVmZmVyOwogfSBJbmRleEZldGNoSGVhcERhdGE7CiAKIC8qIFJlc3Vs dCBjb2RlcyBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtICovCkBAIC0zNzQsNyArMzkxLDgg QEAgZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9u IHJlbCwKIAogLyogaW4gaGVhcC9wcnVuZWhlYXAuYyAqLwogc3RydWN0IEdsb2JhbFZpc1N0YXRl OwotZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVm ZmVyIGJ1ZmZlcik7CitleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQlCdWZmZXIgKnZtYnVmZmVyKTsKIGV4dGVy biB2b2lkIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLAogCQkJCQkJCQkJICAgYm9vbCBibGtfa25vd25fYXYsCiAJCQkJCQkJCQkgICBC dWZmZXIgdm1idWZmZXIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAppbmRleCBiNWUwZmIzODZjMC4uZjQ5NmUw YjQ5MzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtMTIxLDYgKzEyMSwxMiBAQCB0eXBlZGVmIHN0 cnVjdCBQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAqUGFyYWxsZWxCbG9ja1RhYmxl U2NhbldvcmtlcjsKIHR5cGVkZWYgc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEKIHsKIAlSZWxh dGlvbglyZWw7CisKKwkvKgorCSAqIFNvbWUgb3B0aW1pemF0aW9ucyBjYW4gb25seSBiZSBwZXJm b3JtZWQgaWYgdGhlIHF1ZXJ5IGRvZXMgbm90IG1vZGlmeQorCSAqIHRoZSB1bmRlcmx5aW5nIHJl bGF0aW9uLiBUcmFjayB0aGF0IGhlcmUuCisJICovCisJYm9vbAkJbW9kaWZpZXNfYmFzZV9yZWw7 CiB9IEluZGV4RmV0Y2hUYWJsZURhdGE7CiAKIHN0cnVjdCBJbmRleFNjYW5JbnN0cnVtZW50YXRp b247CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBiMmNlMzVlMmEzNC4uZTMxYzIxY2Y4ZWIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3RhYmxlYW0uaApAQCAtNjIsNiArNjIsOCBAQCB0eXBlZGVmIGVudW0gU2Nhbk9wdGlvbnMK IAogCS8qIHVucmVnaXN0ZXIgc25hcHNob3QgYXQgc2NhbiBlbmQ/ICovCiAJU09fVEVNUF9TTkFQ U0hPVCA9IDEgPDwgOSwKKwkvKiB3aGV0aGVyIG9yIG5vdCBzY2FuIHNob3VsZCBhdHRlbXB0IHRv IHNldCB0aGUgVk0gKi8KKwlTT19BTExPV19WTV9TRVQgPSAxIDw8IDEwLAogfQkJCVNjYW5PcHRp b25zOwogCiAvKgpAQCAtODgxLDYgKzg4MywyNSBAQCB0YWJsZV9iZWdpbnNjYW4oUmVsYXRpb24g cmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2Jl Z2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksIE5VTEwsIGZsYWdzKTsKIH0KIAorLyoKKyAq IFNpbWlsYXIgdG8gdGFibGVfYmVnaW5zY2FuKCksIGJ1dCBhbGxvd3MgdGhlIGNhbGxlciB0byBp bmRpY2F0ZSB3aGV0aGVyIHRoZQorICogcXVlcnkgbW9kaWZpZXMgdGhlIHJlbGF0aW9uLiBUaGlz IGlzIHVzZWQgd2hlbiB0aGUgY2FsbGVyIHdhbnRzIHRvIGF0dGVtcHQKKyAqIG1hcmtpbmcgcGFn ZXMgaW4gdGhlIHJlbGF0aW9uIGFzIGFsbC12aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5IG1hcCBk dXJpbmcKKyAqIG9uLWFjY2VzcyBwcnVuaW5nLgorICovCitzdGF0aWMgaW5saW5lIFRhYmxlU2Nh bkRlc2MKK3RhYmxlX2JlZ2luc2Nhbl92bXNldChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBz aG90LAorCQkJCQkgIGludCBua2V5cywgc3RydWN0IFNjYW5LZXlEYXRhICprZXksIGJvb2wgbW9k aWZpZXNfcmVsKQoreworCXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfAorCQlTT19B TExPV19TVFJBVCB8IFNPX0FMTE9XX1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKKworCWlmICgh bW9kaWZpZXNfcmVsKQorCQlmbGFncyB8PSBTT19BTExPV19WTV9TRVQ7CisKKwlyZXR1cm4gcmVs LT5yZF90YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksIE5VTEws IGZsYWdzKTsKK30KKwogLyoKICAqIExpa2UgdGFibGVfYmVnaW5zY2FuKCksIGJ1dCBmb3Igc2Nh bm5pbmcgY2F0YWxvZy4gSXQnbGwgYXV0b21hdGljYWxseSB1c2UgYQogICogc25hcHNob3QgYXBw cm9wcmlhdGUgZm9yIHNjYW5uaW5nIGNhdGFsb2cgcmVsYXRpb25zLgpAQCAtOTE4LDEwICs5Mzks MTMgQEAgdGFibGVfYmVnaW5zY2FuX3N0cmF0KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNo b3QsCiAgKi8KIHN0YXRpYyBpbmxpbmUgVGFibGVTY2FuRGVzYwogdGFibGVfYmVnaW5zY2FuX2Jt KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJICAgaW50IG5rZXlzLCBzdHJ1 Y3QgU2NhbktleURhdGEgKmtleSkKKwkJCQkgICBpbnQgbmtleXMsIHN0cnVjdCBTY2FuS2V5RGF0 YSAqa2V5LCBib29sIG1vZGlmaWVzX3JlbCkKIHsKIAl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9C SVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CiAKKwlpZiAoIW1vZGlmaWVzX3JlbCkKKwkJ ZmxhZ3MgfD0gU09fQUxMT1dfVk1fU0VUOworCiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+c2Nh bl9iZWdpbihyZWwsIHNuYXBzaG90LCBua2V5cywga2V5LAogCQkJCQkJCQkJICAgTlVMTCwgZmxh Z3MpOwogfQpAQCAtMTEzMCw2ICsxMTU0LDEwIEBAIGV4dGVybiB2b2lkIHRhYmxlX3BhcmFsbGVs c2Nhbl9pbml0aWFsaXplKFJlbGF0aW9uIHJlbCwKIGV4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJCQkJICBQYXJh bGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pOwogCitleHRlcm4gVGFibGVTY2FuRGVzYyB0YWJsZV9i ZWdpbnNjYW5fcGFyYWxsZWxfdm1zZXQoUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJCQkJCQkJ UGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCQkJCQkJCWJvb2wgbW9kaWZpZXNf cmVsKTsKKwogLyoKICAqIFJlc3RhcnQgYSBwYXJhbGxlbCBzY2FuLiAgQ2FsbCB0aGlzIGluIHRo ZSBsZWFkZXIgcHJvY2Vzcy4gIENhbGxlciBpcwogICogcmVzcG9uc2libGUgZm9yIG1ha2luZyBz dXJlIHRoYXQgYWxsIHdvcmtlcnMgaGF2ZSBmaW5pc2hlZCB0aGUgc2NhbgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaAppbmRleCBkZTc4MjAxNGIyZC4uODM5YzFiZTFkN2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o CkBAIC02NzgsNiArNjc4LDEyIEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJICog RXhlY0RvSW5pdGlhbFBydW5pbmcoKSAqLwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRleHQ7CS8q IFNvdXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKKwkvKgorCSAqIFJUIGluZGV4ZXMgb2Yg cmVsYXRpb25zIG1vZGlmaWVkIGJ5IHRoZSBxdWVyeSBlaXRoZXIgdGhyb3VnaAorCSAqIFVQREFU RS9ERUxFVEUvSU5TRVJUL01FUkdFIG9yIFNFTEVDVCBGT1IgVVBEQVRFCisJICovCisJQml0bWFw c2V0ICAqZXNfbW9kaWZpZWRfcmVsaWRzOworCiAJSnVua0ZpbHRlciAqZXNfanVua0ZpbHRlcjsJ LyogdG9wLWxldmVsIGp1bmsgZmlsdGVyLCBpZiBhbnkgKi8KIAogCS8qIElmIHF1ZXJ5IGNhbiBp bnNlcnQvZGVsZXRlIHR1cGxlcywgdGhlIGNvbW1hbmQgSUQgdG8gbWFyayB0aGVtIHdpdGggKi8K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNv ZGluZy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGlu Zy5wbAppbmRleCBjOWMxODI4OTJjZi4uZjVjMGM2NWIyNjAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbAorKysgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKQEAgLTI5Niw2ICsy OTYsNyBAQCB3YWxfbGV2ZWwgPSAnbG9naWNhbCcKIG1heF9yZXBsaWNhdGlvbl9zbG90cyA9IDQK IG1heF93YWxfc2VuZGVycyA9IDQKIGF1dG92YWN1dW0gPSBvZmYKK2hvdF9zdGFuZGJ5X2ZlZWRi YWNrID0gb24KIH0pOwogJG5vZGVfcHJpbWFyeS0+ZHVtcF9pbmZvOwogJG5vZGVfcHJpbWFyeS0+ c3RhcnQ7CkBAIC03NDUsNyArNzQ2LDcgQEAgY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRo YW5kbGUsCiAkbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOwogCiByZWFjdGl2 ZV9zbG90c19jaGFuZ2VfaGZzX2FuZF93YWl0X2Zvcl94bWlucygnc2hhcmVkX3Jvd19yZW1vdmFs XycsCi0JJ25vX2NvbmZsaWN0XycsIDAsIDEpOworCSdub19jb25mbGljdF8nLCAxLCAwKTsKIAog IyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIGNvbmZsaWN0CiB3YWl0X3VudGlsX3ZhY3V1bV9j YW5fcmVtb3ZlKAotLSAKMi40My4wCgo= --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0018-Add-helper-functions-to-heap_page_prune_and_free.patch" Content-Disposition: attachment; filename="v12-0018-Add-helper-functions-to-heap_page_prune_and_free.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcid717 RnJvbSA2YzMyNThhZjVkNzk1OWEyNzU4NzZjNWNlNjk0ZmU2OTIzYmU4MjFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMwIEp1bCAyMDI1IDE4OjUxOjQzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMTgvMjBdIEFkZCBoZWxwZXIgZnVuY3Rpb25zIHRvIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplCgpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIGhhcyBnb3R0ZW4gcmF0aGVy IGxvbmcuIEl0IGhhcyBzZXZlcmFsCnN0YWdlczoKCjEpIHNldHVwIC0gd2hlcmUgdGhlIFBydW5l U3RhdGUgaXMgc2V0IHVwCjIpIHR1cGxlIGV4YW1pbmF0aW9uIC0tIHdoZXJlIHR1cGxlcyBhbmQg bGluZSBwb2ludGVycyBhcmUgZXhhbWluZWQgdG8KICAgZGV0ZXJtaW5lIHdoYXQgbmVlZHMgdG8g YmUgcHJ1bmVkIGFuZCB3aGF0IGNvdWxkIGJlIGZyb3plbgozKSBldmFsdWF0aW9uIC0tIHdoZXJl IHdlIGRldGVybWluZSBiYXNlZCBvbiBjYWxsZXIgcHJvdmlkZWQgb3B0aW9ucywKICAgaGV1cmlz dGljcywgYW5kIHN0YXRlIGdhdGhlcmVkIGR1cmluZyBzdGFnZSAyIHdoZXRoZXIgb3Igbm90IHRv CiAgIGZyZWV6ZSB0dXBsZXMgYW5kIHNldCB0aGUgcGFnZSBpbiB0aGUgVk0KNCkgZXhlY3V0aW9u IC0gd2hlcmUgdGhlIHBhZ2UgY2hhbmdlcyBhcmUgYWN0dWFsbHkgbWFkZSBhbmQgbG9nZ2VkCgpU aGlzIGNvbW1pdCByZWZhY3RvcnMgdGhlIGV2YWx1YXRpb24gc3RhZ2UgaW50byBoZWxwZXJzIHdo aWNoIHJldHVybgp3aGV0aGVyIG9yIG5vdCB0byBmcmVlemUgYW5kIHNldCB0aGUgVk0uCgpYWFg6 IEZvciB0aGUgcHVycG9zZXMgb2YgY29tbWl0dGluZywgdGhpcyBsaWtlbHkgc2hvdWxkbid0IGJl IGEgc2VwYXJhdGUKY29tbWl0LiBCdXQgSSdtIG5vdCBzdXJlIHlldCB3aGV0aGVyIGl0IG1ha2Vz IG1vcmUgc2Vuc2UgdG8gZG8gdGhpcwpyZWZhY3RvcmluZyBlYXJsaWVyIGluIHRoZSBzZXQgZm9y IGNsYXJpdHkgZm9yIHRoZSByZXZpZXdlci4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyB8IDQ3MyArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgMjk2IGluc2VydGlvbnMoKyksIDE3NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCmluZGV4IDY5ZDhlNDJiZGM4Li42N2I1NmU0NWFkNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTE3OSw2ICsxNzksMjIgQEAgc3RhdGljIHZvaWQg aGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGlyZWN0KFBydW5lU3RhdGUgKnByc3Rh dGUsIE9mZnNldE4KIAogc3RhdGljIHZvaWQgcGFnZV92ZXJpZnlfcmVkaXJlY3RzKFBhZ2UgcGFn ZSk7CiAKK3N0YXRpYyBib29sIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCQkJICBib29sIGRvX3BydW5lLAorCQkJCQkJCQkgIGJv b2wgZG9faGludF9mdWxsX29yX3BydW5hYmxlLAorCQkJCQkJCQkgIGJvb2wgZGlkX3R1cGxlX2hp bnRfZnBpLAorCQkJCQkJCQkgIFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJCQkJCSAgYm9vbCAq YWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCk7CisKK3N0YXRpYyBib29sIGhlYXBfcGFnZV93aWxs X3VwZGF0ZV92bShSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCSBCdWZmZXIgYnVmZmVyLCBC bG9ja051bWJlciBibG9ja25vLCBQYWdlIHBhZ2UsCisJCQkJCQkJCQkgUHJ1bmVSZWFzb24gcmVh c29uLAorCQkJCQkJCQkJIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAorCQkJCQkJCQkJ IGJvb2wgYmxrX2tub3duX2F2LAorCQkJCQkJCQkJIFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJ CQkJCQkgQnVmZmVyICp2bWJ1ZmZlciwgdWludDggKnZtZmxhZ3MsCisJCQkJCQkJCQkgYm9vbCAq c2V0X3BkX2FsbF92aXNpYmxlKTsKKwogc3RhdGljIGJvb2wgaWRlbnRpZnlfYW5kX2ZpeF92bV9j b3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhl YXBfYmxrLAogCQkJCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3BhZ2Us CkBAIC0zODIsNiArMzk4LDI0OSBAQCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVs YXRpb24gcmVsYXRpb24sCiAJcmV0dXJuIGZhbHNlOwogfQogCisKKy8qCisgKiBEZXRlcm1pbmUg d2hldGhlciB0byBzZXQgdGhlIHZpc2liaWxpdHkgbWFwIGJpdHMgYmFzZWQgb24gaW5mb3JtYXRp b24gZnJvbQorICogdGhlIFBydW5lU3RhdGUgYW5kIGJsa19rbm93bl9hdiwgd2hpY2ggc29tZSBj YWxsZXJzIHdpbGwgcHJvdmlkZSBhZnRlcgorICogcHJldmlvdXNseSBleGFtaW5pbmcgdGhpcyBo ZWFwIHBhZ2UncyBWTSBiaXRzIChlLmcuIHZhY3V1bSBmcm9tIHRoZSBsYXN0CisgKiBoZWFwX3Zh Y19zY2FuX25leHRfYmxvY2soKSBjYWxsKS4KKyAqCisgKiBXZSBwYXNzIGluIGJsb2Nrbm8gYW5k IHBhZ2UgZXZlbiB0aG9zZSBjYW4gYmUgZGVyaXZlZCBmcm9tIGJ1ZmZlciB0byBhdm9pZAorICog ZXh0cmEgQnVmZmVyR2V0QmxvY2soKSBhbmQgQnVmZmVyR2V0QmxvY2tOdW1iZXIoKSBjYWxscy4K KyAqCisgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25seSBhZnRlciBkb19mcmVlemUgaGFzIGJl ZW4gZGVjaWRlZCAoYW5kIGRvX3BydW5lCisgKiBoYXMgYmVlbiBzZXQpLCBhcyB0aGVzZSBmYWN0 b3IgaW50byBvdXIgaGV1cmlzdGljLWJhc2VkIGRlY2lzaW9uLgorICoKKyAqIHByc3RhdGUgYW5k IHZtYnVmZmVyIGFyZSBpbnB1dC9vdXRwdXQgZmllbGRzLiB2bWZsYWdzIGFuZCBhbmQKKyAqIHNl dF9wZF9hbGxfdmlzaWJsZSBhcmUgb3V0cHV0IGZpZWxkcy4KKyAqCisgKiBSZXR1cm5zIHRydWUg aWYgdGhlIGNhbGxlciBzaG91bGQgc2V0IG9uZSBvciBib3RoIG9mIHRoZSBWTSBiaXRzIGFuZCBm YWxzZQorICogb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAoraGVhcF9wYWdlX3dpbGxfdXBk YXRlX3ZtKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJIEJ1ZmZlciBidWZmZXIsIEJsb2NrTnVt YmVyIGJsb2Nrbm8sIFBhZ2UgcGFnZSwKKwkJCQkJCSBQcnVuZVJlYXNvbiByZWFzb24sCisJCQkJ CQkgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsCisJCQkJCQkgYm9vbCBibGtfa25vd25f YXYsCisJCQkJCQkgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCSBCdWZmZXIgKnZtYnVmZmVy LCB1aW50OCAqdm1mbGFncywKKwkJCQkJCSBib29sICpzZXRfcGRfYWxsX3Zpc2libGUpCit7CisJ Ym9vbAkJZG9fc2V0X3ZtID0gZmFsc2U7CisKKwkvKgorCSAqIElmIHRoZSBjYWxsZXIgc3BlY2lm aWVkIG5vdCB0byB1cGRhdGUgdGhlIFZNLCB2YWxpZGF0ZSBldmVyeXRoaW5nIGlzIGluCisJICog dGhlIHJpZ2h0IHN0YXRlIGFuZCBleGl0LgorCSAqLworCWlmICghcHJzdGF0ZS0+Y29uc2lkZXJf dXBkYXRlX3ZtKQorCXsKKwkJQXNzZXJ0KCFwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJiAhcHJzdGF0 ZS0+YWxsX2Zyb3plbik7CisJCS8qIFdlIGRvbid0IHNldCBvbmx5IHRoZSBwYWdlIGxldmVsIHZp c2liaWxpdHkgaGludCAqLworCQlBc3NlcnQoISgqc2V0X3BkX2FsbF92aXNpYmxlKSk7CisJCUFz c2VydCgqdm1mbGFncyA9PSAwKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qCisJICogSWYg dGhpcyBpcyBhbiBvbi1hY2Nlc3MgY2FsbCBhbmQgd2UncmUgbm90IGFjdHVhbGx5IHBydW5pbmcs IGF2b2lkCisJICogc2V0dGluZyB0aGUgdmlzaWJpbGl0eSBtYXAgaWYgaXQgd291bGQgbmV3bHkg ZGlydHkgdGhlIGhlYXAgcGFnZSBvciwgaWYKKwkgKiB0aGUgcGFnZSBpcyBhbHJlYWR5IGRpcnR5 LCBpZiBkb2luZyBzbyB3b3VsZCByZXF1aXJlIGluY2x1ZGluZyBhCisJICogZnVsbC1wYWdlIGlt YWdlIChGUEkpIG9mIHRoZSBoZWFwIHBhZ2UgaW4gdGhlIFdBTC4gVGhpcyBzaXR1YXRpb24KKwkg KiBzaG91bGQgYmUgcmFyZSwgYXMgb24tYWNjZXNzIHBydW5pbmcgaXMgb25seSBhdHRlbXB0ZWQg d2hlbgorCSAqIHBkX3BydW5lX3hpZCBpcyB2YWxpZC4KKwkgKi8KKwlpZiAocmVhc29uID09IFBS VU5FX09OX0FDQ0VTUyAmJgorCQlwcnN0YXRlLT5jb25zaWRlcl91cGRhdGVfdm0gJiYKKwkJcHJz dGF0ZS0+YWxsX3Zpc2libGUgJiYKKwkJIWRvX3BydW5lICYmICFkb19mcmVlemUgJiYKKwkJKCFC dWZmZXJJc0RpcnR5KGJ1ZmZlcikgfHwgWExvZ0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVy KSkpCisJeworCQlwcnN0YXRlLT5jb25zaWRlcl91cGRhdGVfdm0gPSBmYWxzZTsKKwkJcHJzdGF0 ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CisJfQorCisJQXNz ZXJ0KCFwcnN0YXRlLT5hbGxfZnJvemVuIHx8IHByc3RhdGUtPmFsbF92aXNpYmxlKTsKKworCS8q CisJICogQ2xlYXIgYW55IFZNIGNvcnJ1cHRpb24uIFRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBp biBhIGNyaXRpY2FsCisJICogc2VjdGlvbiwgc28gd2UgZG8gaXQgZmlyc3QuIElmIFBEX0FMTF9W SVNJQkxFIGlzIGluY29ycmVjdGx5IHNldCwgd2UKKwkgKiBtYXkgbWFyayB0aGUgaGVhcCBwYWdl IGJ1ZmZlciBkaXJ0eSBoZXJlIGFuZCBjb3VsZCBlbmQgdXAgZG9pbmcgc28KKwkgKiBhZ2FpbiBs YXRlci4gVGhpcyBpcyBub3QgYSBjb3JyZWN0bmVzcyBpc3N1ZSBhbmQgaXMgaW4gdGhlIHBhdGgg b2YgVk0KKwkgKiBjb3JydXB0aW9uLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRo ZSBleHRyYSBwZXJmb3JtYW5jZQorCSAqIG92ZXJoZWFkLgorCSAqLworCWlmIChpZGVudGlmeV9h bmRfZml4X3ZtX2NvcnJ1cHRpb24ocmVsYXRpb24sCisJCQkJCQkJCQkgICBibG9ja25vLCBidWZm ZXIsIHBhZ2UsCisJCQkJCQkJCQkgICBibGtfa25vd25fYXYsIHByc3RhdGUtPmxwZGVhZF9pdGVt cywKKwkJCQkJCQkJCSAgICp2bWJ1ZmZlcikpCisJeworCQkvKiBJZiB3ZSBmaXggY29ycnVwdGlv biwgZG9uJ3QgdXBkYXRlIHRoZSBWTSBmdXJ0aGVyICovCisJfQorCisJLyogRGV0ZXJtaW5lIGlm IHdlIGFjdHVhbGx5IG5lZWQgdG8gc2V0IHRoZSBWTSBhbmQgd2hpY2ggYml0cyB0byBzZXQuICov CisJZWxzZSBpZiAocHJzdGF0ZS0+YWxsX3Zpc2libGUgJiYKKwkJCSAoIWJsa19rbm93bl9hdiB8 fAorCQkJICAocHJzdGF0ZS0+YWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwg YmxvY2tubywgdm1idWZmZXIpKSkpCisJeworCQkqdm1mbGFncyB8PSBWSVNJQklMSVRZTUFQX0FM TF9WSVNJQkxFOworCQlpZiAocHJzdGF0ZS0+YWxsX2Zyb3plbikKKwkJCSp2bWZsYWdzIHw9IFZJ U0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKwl9CisKKwlkb19zZXRfdm0gPSAqdm1mbGFncyAmIFZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUzsKKworCS8qCisJICogRG9uJ3Qgc2V0IFBEX0FMTF9WSVNJ QkxFIHVubGVzcyB3ZSBhbHNvIHBsYW4gdG8gc2V0IHRoZSBWTS4gV2hpbGUgaXQgaXMKKwkgKiBj b3JyZWN0IGZvciBhIGhlYXAgcGFnZSB0byBoYXZlIFBEX0FMTF9WSVNJQkxFIGV2ZW4gaWYgdGhl IFZNIGlzIG5vdAorCSAqIHNldCwgd2Ugc3Ryb25nbHkgcHJlZmVyIHRvIGtlZXAgdGhlbSBpbiBz eW5jLgorCSAqCisJICogUHJpb3IgdG8gUG9zdGdyZXMgMTksIGl0IHdhcyBwb3NzaWJsZSBmb3Ig dGhlIHBhZ2UtbGV2ZWwgYml0IHRvIGJlIHNldAorCSAqIGFuZCB0aGUgVk0gYml0IHRvIGJlIGNs ZWFyLiBUaGlzIGNvdWxkIGhhcHBlbiBpZiB3ZSBjcmFzaGVkIGFmdGVyCisJICogc2V0dGluZyBQ RF9BTExfVklTSUJMRSBidXQgYmVmb3JlIHNldHRpbmcgYml0cyBpbiB0aGUgVk0uCisJICovCisJ KnNldF9wZF9hbGxfdmlzaWJsZSA9IGRvX3NldF92bSAmJiAhUGFnZUlzQWxsVmlzaWJsZShwYWdl KTsKKwlyZXR1cm4gZG9fc2V0X3ZtOworfQorCisvKgorICogRGVjaWRlIGlmIHdlIHdhbnQgdG8g Z28gYWhlYWQgd2l0aCBmcmVlemluZyBhY2NvcmRpbmcgdG8gdGhlIGZyZWV6ZSBwbGFucyB3ZQor ICogcHJlcGFyZWQgZm9yIHRoZSBnaXZlbiBidWZmZXIgb3Igbm90LiBJZiB0aGUgY2FsbGVyIHNw ZWNpZmllZCB3ZSBzaG91bGQgbm90CisgKiBmcmVlemUgdHVwbGVzLCBpdCBleGl0cyBlYXJseS4K KyAqCisgKiBkb19wcnVuZSwgZG9faGludF9mdWxsX29yX3BydW5hYmxlLCBhbmQgZGlkX3R1cGxl X2hpbnRfZnBpIG11c3QgYWxsIGhhdmUKKyAqIGJlZW4gZGVjaWRlZCBiZWZvcmUgY2FsbGluZyB0 aGlzIGZ1bmN0aW9uLgorICoKKyAqIHByc3RhdGUgaXMgYW4gaW5wdXQvb3V0cHV0IHBhcmFtZXRl ci4gYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCBpcyBzZXQgYW5kCisgKiB1c2VkIGxhdGVyIHRv IGRldGVybWluZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBmb3IgdGhlIHJlY29yZC4K KyAqCisgKiBSZXR1cm5zIHRydWUgaWYgd2Ugc2hvdWxkIHVzZSBvdXIgZnJlZXplIHBsYW5zIGFu ZCBmcmVlemUgdHVwbGVzIG9uIHRoZSBwYWdlCisgKiBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgorICov CitzdGF0aWMgYm9vbAoraGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBC dWZmZXIgYnVmZmVyLAorCQkJCQkgIGJvb2wgZG9fcHJ1bmUsCisJCQkJCSAgYm9vbCBkb19oaW50 X2Z1bGxfb3JfcHJ1bmFibGUsCisJCQkJCSAgYm9vbCBkaWRfdHVwbGVfaGludF9mcGksCisJCQkJ CSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJICBib29sICphbGxfZnJvemVuX2V4Y2VwdF9s cF9kZWFkKQoreworCWJvb2wJCWRvX2ZyZWV6ZSA9IGZhbHNlOworCisJLyoKKwkgKiBJZiB0aGUg Y2FsbGVyIHNwZWNpZmllZCB3ZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZnJlZXplIGFueSB0dXBs ZXMsCisJICogdmFsaWRhdGUgdGhhdCBldmVyeXRoaW5nIGlzIGluIHRoZSByaWdodCBzdGF0ZSBh bmQgZXhpdC4KKwkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCXsKKwkJQXNz ZXJ0KCFwcnN0YXRlLT5hbGxfZnJvemVuICYmIHByc3RhdGUtPm5mcm96ZW4gPT0gMCk7CisJCUFz c2VydChwcnN0YXRlLT5scGRlYWRfaXRlbXMgPT0gMCB8fCAhcHJzdGF0ZS0+YWxsX3Zpc2libGUp OworCQlBc3NlcnQoISgqYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCkpOworCQlyZXR1cm4gZmFs c2U7CisJfQorCisJaWYgKHByc3RhdGUtPnBhZ2VmcnouZnJlZXplX3JlcXVpcmVkKQorCXsKKwkJ LyoKKwkJICogaGVhcF9wcmVwYXJlX2ZyZWV6ZV90dXBsZSBpbmRpY2F0ZWQgdGhhdCBhdCBsZWFz dCBvbmUgWElEL01YSUQgZnJvbQorCQkgKiBiZWZvcmUgRnJlZXplTGltaXQvTXVsdGlYYWN0Q3V0 b2ZmIGlzIHByZXNlbnQuICBNdXN0IGZyZWV6ZSB0bworCQkgKiBhZHZhbmNlIHJlbGZyb3plbnhp ZC9yZWxtaW5teGlkLgorCQkgKi8KKwkJZG9fZnJlZXplID0gdHJ1ZTsKKwl9CisJZWxzZQorCXsK KwkJLyoKKwkJICogT3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplIHRoZSBwYWdlIGlmIHdlIGFyZSBn ZW5lcmF0aW5nIGFuIEZQSQorCQkgKiBhbnl3YXkgYW5kIGlmIGRvaW5nIHNvIG1lYW5zIHRoYXQg d2UgY2FuIHNldCB0aGUgcGFnZSBhbGwtZnJvemVuCisJCSAqIGFmdGVyd2FyZHMgKG1pZ2h0IG5v dCBoYXBwZW4gdW50aWwgVkFDVVVNJ3MgZmluYWwgaGVhcCBwYXNzKS4KKwkJICoKKwkJICogWFhY OiBQcmV2aW91c2x5LCB3ZSBrbmV3IGlmIHBydW5pbmcgZW1pdHRlZCBhbiBGUEkgYnkgY2hlY2tp bmcKKwkJICogcGdXYWxVc2FnZS53YWxfZnBpIGJlZm9yZSBhbmQgYWZ0ZXIgcHJ1bmluZy4gIE9u Y2UgdGhlIGZyZWV6ZSBhbmQKKwkJICogcHJ1bmUgcmVjb3JkcyB3ZXJlIGNvbWJpbmVkLCB0aGlz IGhldXJpc3RpYyBjb3VsZG4ndCBiZSB1c2VkCisJCSAqIGFueW1vcmUuICBUaGUgb3Bwb3J0dW5p c3RpYyBmcmVlemUgaGV1cmlzdGljIG11c3QgYmUgaW1wcm92ZWQ7CisJCSAqIGhvd2V2ZXIsIGZv ciBub3csIHRyeSB0byBhcHByb3hpbWF0ZSB0aGUgb2xkIGxvZ2ljLgorCQkgKi8KKwkJaWYgKHBy c3RhdGUtPmFsbF92aXNpYmxlICYmIHByc3RhdGUtPmFsbF9mcm96ZW4gJiYgcHJzdGF0ZS0+bmZy b3plbiA+IDApCisJCXsKKwkJCS8qCisJCQkgKiBGcmVlemluZyB3b3VsZCBtYWtlIHRoZSBwYWdl IGFsbC1mcm96ZW4uICBIYXZlIGFscmVhZHkgZW1pdHRlZAorCQkJICogYW4gRlBJIG9yIHdpbGwg ZG8gc28gYW55d2F5PworCQkJICovCisJCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWxhdGlvbikp CisJCQl7CisJCQkJaWYgKGRpZF90dXBsZV9oaW50X2ZwaSkKKwkJCQkJZG9fZnJlZXplID0gdHJ1 ZTsKKwkJCQllbHNlIGlmIChkb19wcnVuZSkKKwkJCQl7CisJCQkJCWlmIChYTG9nQ2hlY2tCdWZm ZXJOZWVkc0JhY2t1cChidWZmZXIpKQorCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKKwkJCQl9CisJ CQkJZWxzZSBpZiAoZG9faGludF9mdWxsX29yX3BydW5hYmxlKQorCQkJCXsKKwkJCQkJaWYgKFhM b2dIaW50Qml0SXNOZWVkZWQoKSAmJiBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChidWZmZXIp KQorCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwlpZiAo ZG9fZnJlZXplKQorCXsKKwkJLyoKKwkJICogVmFsaWRhdGUgdGhlIHR1cGxlcyB3ZSB3aWxsIGJl IGZyZWV6aW5nIGJlZm9yZSBlbnRlcmluZyB0aGUKKwkJICogY3JpdGljYWwgc2VjdGlvbi4KKwkJ ICovCisJCWhlYXBfcHJlX2ZyZWV6ZV9jaGVja3MoYnVmZmVyLCBwcnN0YXRlLT5mcm96ZW4sIHBy c3RhdGUtPm5mcm96ZW4pOworCX0KKwllbHNlIGlmIChwcnN0YXRlLT5uZnJvemVuID4gMCkKKwl7 CisJCS8qCisJCSAqIFRoZSBwYWdlIGNvbnRhaW5lZCBzb21lIHR1cGxlcyB0aGF0IHdlcmUgbm90 IGFscmVhZHkgZnJvemVuLCBhbmQgd2UKKwkJICogY2hvc2Ugbm90IHRvIGZyZWV6ZSB0aGVtIG5v dy4gIFRoZSBwYWdlIHdvbid0IGJlIGFsbC1mcm96ZW4gdGhlbi4KKwkJICovCisJCUFzc2VydCgh cHJzdGF0ZS0+cGFnZWZyei5mcmVlemVfcmVxdWlyZWQpOworCisJCXByc3RhdGUtPmFsbF9mcm96 ZW4gPSBmYWxzZTsKKwkJcHJzdGF0ZS0+bmZyb3plbiA9IDA7CS8qIGF2b2lkIG1pc2NvdW50cyBp biBpbnN0cnVtZW50YXRpb24gKi8KKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogV2UgaGF2ZSBu byBmcmVlemUgcGxhbnMgdG8gZXhlY3V0ZS4gIFRoZSBwYWdlIG1pZ2h0IGFscmVhZHkgYmUKKwkJ ICogYWxsLWZyb3plbiAocGVyaGFwcyBvbmx5IGZvbGxvd2luZyBwcnVuaW5nKSwgdGhvdWdoLiAg U3VjaCBwYWdlcworCQkgKiBjYW4gYmUgbWFya2VkIGFsbC1mcm96ZW4gaW4gdGhlIFZNIGJ5IG91 ciBjYWxsZXIsIGV2ZW4gdGhvdWdoIG5vbmUKKwkJICogb2YgaXRzIHR1cGxlcyB3ZXJlIG5ld2x5 IGZyb3plbiBoZXJlLgorCQkgKi8KKwl9CisKKwkvKgorCSAqIEl0IHdhcyBjb252ZW5pZW50IHRv IGlnbm9yZSBMUF9ERUFEIGl0ZW1zIGluIGFsbF92aXNpYmxlIGVhcmxpZXIgb24gdG8KKwkgKiBt YWtlIHRoZSBjaG9pY2Ugb2Ygd2hldGhlciBvciBub3QgdG8gZnJlZXplIHRoZSBwYWdlIHVuYWZm ZWN0ZWQgYnkgdGhlCisJICogc2hvcnQtdGVybSBwcmVzZW5jZSBvZiBMUF9ERUFEIGl0ZW1zLiAg VGhlc2UgTFBfREVBRCBpdGVtcyB3ZXJlCisJICogZWZmZWN0aXZlbHkgYXNzdW1lZCB0byBiZSBM UF9VTlVTRUQgaXRlbXMgaW4gdGhlIG1ha2luZy4gIEl0IGRvZXNuJ3QKKwkgKiBtYXR0ZXIgd2hp Y2ggdmFjdXVtIGhlYXAgcGFzcyAoaW5pdGlhbCBwYXNzIG9yIGZpbmFsIHBhc3MpIGVuZHMgdXAK KwkgKiBzZXR0aW5nIHRoZSBwYWdlIGFsbC1mcm96ZW4sIGFzIGxvbmcgYXMgdGhlIG9uZ29pbmcg VkFDVVVNIGRvZXMgaXQuCisJICoKKwkgKiBOb3cgdGhhdCBmcmVlemluZyBoYXMgYmVlbiBmaW5h bGl6ZWQsIHVuc2V0IGFsbF92aXNpYmxlIGlmIHRoZXJlIGFyZQorCSAqIGFueSBMUF9ERUFEIGl0 ZW1zIG9uIHRoZSBwYWdlLiBJdCBuZWVkcyB0byByZWZsZWN0IHRoZSBwcmVzZW50IHN0YXRlIG9m CisJICogdGhlIHBhZ2Ugd2hlbiB1c2luZyBpdCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3Qg dG8gdXBkYXRlIHRoZSBWTS4KKwkgKgorCSAqIEtlZXAgdHJhY2sgb2Ygd2hldGhlciBvciBub3Qg dGhlIHBhZ2Ugd2FzIGFsbC1mcm96ZW4gZXhjZXB0IExQX0RFQUQKKwkgKiBpdGVtcyBmb3IgdGhl IHB1cnBvc2VzIG9mIGNhbGN1bGF0aW5nIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uLAor CSAqIHRob3VnaC4KKwkgKi8KKwkqYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCA9IHByc3RhdGUt PmFsbF9mcm96ZW47CisJaWYgKHByc3RhdGUtPmxwZGVhZF9pdGVtcyA+IDApCisJeworCQlwcnN0 YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQlwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7 CisJfQorCisJcmV0dXJuIGRvX2ZyZWV6ZTsKK30KKworCiAvKgogICogUHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoZQogICog c3BlY2lmaWVkIHBhZ2UuIElmIHRoZSBwYWdlJ3MgdmlzaWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5n ZWQsIHVwZGF0ZSBpdCBpbgpAQCAtNzcyLDIwICsxMDMxLDMwIEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCS8qIENsZWFyIHRo ZSBvZmZzZXQgaW5mb3JtYXRpb24gb25jZSB3ZSBoYXZlIHByb2Nlc3NlZCB0aGUgZ2l2ZW4gcGFn ZS4gKi8KIAkqb2ZmX2xvYyA9IEludmFsaWRPZmZzZXROdW1iZXI7CiAKLQlkb19wcnVuZSA9IHBy c3RhdGUubnJlZGlyZWN0ZWQgPiAwIHx8Ci0JCXByc3RhdGUubmRlYWQgPiAwIHx8Ci0JCXByc3Rh dGUubnVudXNlZCA+IDA7Ci0KIAkvKgogCSAqIEFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBsaXZl IHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4bWluCiAJICogYW1vbmdzdCB0aGVt IGlzIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFnZSBjYW5ub3QgYmUKLQkgKiBhbGwt dmlzaWJsZS4KKwkgKiBhbGwtdmlzaWJsZS4gVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIHdlIGRl Y2lkZSB3aGV0aGVyIG9yIG5vdCB0bworCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6ZSBiZWxv dyBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvCisJICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXpl IHRoZSBwYWdlIGlmIHRoZXJlIGFyZSBsaXZlIHR1cGxlcyBub3QgdmlzaWJsZQorCSAqIHRvIGV2 ZXJ5b25lLCB3aGljaCB3b3VsZCBwcmV2ZW50IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuIGluIHRo ZSBWTS4KIAkgKi8KIAlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJgogCQlUcmFuc2FjdGlvbklk SXNOb3JtYWwocHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpICYmCiAJCSFHbG9iYWxWaXNY aWRWaXNpYmxlVG9BbGwocHJzdGF0ZS52aXN0ZXN0LCBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2Zm X3hpZCkpCiAJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxz ZTsKIAorCS8qCisJICogTm93IGRlY2lkZSBiYXNlZCBvbiBpbmZvcm1hdGlvbiBjb2xsZWN0ZWQg d2hpbGUgZXhhbWluaW5nIGV2ZXJ5IHR1cGxlCisJICogd2hpY2ggYWN0aW9ucyB0byB0YWtlLiBJ ZiB0aGVyZSBhcmUgYW55IHBydW5hYmxlIHR1cGxlcywgd2UnbGwgcHJ1bmUKKwkgKiB0aGVtLiBI b3dldmVyLCB3ZSB3aWxsIGRlY2lkZSBiYXNlZCBvbiBvcHRpb25zIHNwZWNpZmllZCBieSB0aGUg Y2FsbGVyCisJICogYW5kIHZhcmlvdXMgaGV1cmlzdGljcyB3aGV0aGVyIG9yIG5vdCB0byBmcmVl emUgYW55IHR1cGxlcyBhbmQgd2hldGhlcgorCSAqIG9yIG5vdCB0aGUgcGFnZSBzaG91bGQgYmUg c2V0IGFsbC12aXNpYmxlL2FsbC1mcm96ZW4gaW4gdGhlIFZNLgorCSAqLworCWRvX3BydW5lID0g cHJzdGF0ZS5ucmVkaXJlY3RlZCA+IDAgfHwKKwkJcHJzdGF0ZS5uZGVhZCA+IDAgfHwKKwkJcHJz dGF0ZS5udW51c2VkID4gMDsKKwogCS8qCiAJICogRXZlbiBpZiB3ZSBkb24ndCBwcnVuZSBhbnl0 aGluZywgaWYgd2UgZm91bmQgYSBuZXcgdmFsdWUgZm9yIHRoZQogCSAqIHBkX3BydW5lX3hpZCBm aWVsZCBvciB0aGUgcGFnZSB3YXMgbWFya2VkIGZ1bGwsIHdlIHdpbGwgdXBkYXRlIHRob3NlCkBA IC03OTYsMTg2ICsxMDY1LDM2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlQYWdlSXNGdWxsKHBhZ2UpOwogCiAJLyoKLQkg KiBEZWNpZGUgaWYgd2Ugd2FudCB0byBnbyBhaGVhZCB3aXRoIGZyZWV6aW5nIGFjY29yZGluZyB0 byB0aGUgZnJlZXplCi0JICogcGxhbnMgd2UgcHJlcGFyZWQsIG9yIG5vdC4KLQkgKi8KLQlkb19m cmVlemUgPSBmYWxzZTsKLQlpZiAocHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkKLQl7Ci0JCWlmIChw cnN0YXRlLnBhZ2VmcnouZnJlZXplX3JlcXVpcmVkKQotCQl7Ci0JCQkvKgotCQkJICogaGVhcF9w cmVwYXJlX2ZyZWV6ZV90dXBsZSBpbmRpY2F0ZWQgdGhhdCBhdCBsZWFzdCBvbmUgWElEL01YSUQK LQkJCSAqIGZyb20gYmVmb3JlIEZyZWV6ZUxpbWl0L011bHRpWGFjdEN1dG9mZiBpcyBwcmVzZW50 LiAgTXVzdAotCQkJICogZnJlZXplIHRvIGFkdmFuY2UgcmVsZnJvemVueGlkL3JlbG1pbm14aWQu Ci0JCQkgKi8KLQkJCWRvX2ZyZWV6ZSA9IHRydWU7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvKgot CQkJICogT3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplIHRoZSBwYWdlIGlmIHdlIGFyZSBnZW5lcmF0 aW5nIGFuIEZQSQotCQkJICogYW55d2F5IGFuZCBpZiBkb2luZyBzbyBtZWFucyB0aGF0IHdlIGNh biBzZXQgdGhlIHBhZ2UKLQkJCSAqIGFsbC1mcm96ZW4gYWZ0ZXJ3YXJkcyAobWlnaHQgbm90IGhh cHBlbiB1bnRpbCBWQUNVVU0ncyBmaW5hbAotCQkJICogaGVhcCBwYXNzKS4KLQkJCSAqCi0JCQkg KiBYWFg6IFByZXZpb3VzbHksIHdlIGtuZXcgaWYgcHJ1bmluZyBlbWl0dGVkIGFuIEZQSSBieSBj aGVja2luZwotCQkJICogcGdXYWxVc2FnZS53YWxfZnBpIGJlZm9yZSBhbmQgYWZ0ZXIgcHJ1bmlu Zy4gIE9uY2UgdGhlIGZyZWV6ZQotCQkJICogYW5kIHBydW5lIHJlY29yZHMgd2VyZSBjb21iaW5l ZCwgdGhpcyBoZXVyaXN0aWMgY291bGRuJ3QgYmUKLQkJCSAqIHVzZWQgYW55bW9yZS4gIFRoZSBv cHBvcnR1bmlzdGljIGZyZWV6ZSBoZXVyaXN0aWMgbXVzdCBiZQotCQkJICogaW1wcm92ZWQ7IGhv d2V2ZXIsIGZvciBub3csIHRyeSB0byBhcHByb3hpbWF0ZSB0aGUgb2xkIGxvZ2ljLgotCQkJICov Ci0JCQlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmFsbF9mcm96ZW4gJiYgcHJz dGF0ZS5uZnJvemVuID4gMCkKLQkJCXsKLQkJCQkvKgotCQkJCSAqIEZyZWV6aW5nIHdvdWxkIG1h a2UgdGhlIHBhZ2UgYWxsLWZyb3plbi4gIEhhdmUgYWxyZWFkeQotCQkJCSAqIGVtaXR0ZWQgYW4g RlBJIG9yIHdpbGwgZG8gc28gYW55d2F5PwotCQkJCSAqLwotCQkJCWlmIChSZWxhdGlvbk5lZWRz V0FMKHJlbGF0aW9uKSkKLQkJCQl7Ci0JCQkJCWlmIChkaWRfdHVwbGVfaGludF9mcGkpCi0JCQkJ CQlkb19mcmVlemUgPSB0cnVlOwotCQkJCQllbHNlIGlmIChkb19wcnVuZSkKLQkJCQkJewotCQkJ CQkJaWYgKFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3VwKGJ1ZmZlcikpCi0JCQkJCQkJZG9fZnJl ZXplID0gdHJ1ZTsKLQkJCQkJfQotCQkJCQllbHNlIGlmIChkb19oaW50X2Z1bGxfb3JfcHJ1bmFi bGUpCi0JCQkJCXsKLQkJCQkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkgJiYgWExvZ0NoZWNr QnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVyKSkKLQkJCQkJCQlkb19mcmVlemUgPSB0cnVlOwotCQkJ CQl9Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCi0JaWYgKGRvX2ZyZWV6ZSkKLQl7Ci0JCS8qCi0J CSAqIFZhbGlkYXRlIHRoZSB0dXBsZXMgd2Ugd2lsbCBiZSBmcmVlemluZyBiZWZvcmUgZW50ZXJp bmcgdGhlCi0JCSAqIGNyaXRpY2FsIHNlY3Rpb24uCi0JCSAqLwotCQloZWFwX3ByZV9mcmVlemVf Y2hlY2tzKGJ1ZmZlciwgcHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUubmZyb3plbik7Ci0JfQotCWVs c2UgaWYgKHByc3RhdGUubmZyb3plbiA+IDApCi0JewotCQkvKgotCQkgKiBUaGUgcGFnZSBjb250 YWluZWQgc29tZSB0dXBsZXMgdGhhdCB3ZXJlIG5vdCBhbHJlYWR5IGZyb3plbiwgYW5kIHdlCi0J CSAqIGNob3NlIG5vdCB0byBmcmVlemUgdGhlbSBub3cuICBUaGUgcGFnZSB3b24ndCBiZSBhbGwt ZnJvemVuIHRoZW4uCi0JCSAqLwotCQlBc3NlcnQoIXByc3RhdGUucGFnZWZyei5mcmVlemVfcmVx dWlyZWQpOwotCi0JCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOwotCQlwcnN0YXRlLm5mcm96 ZW4gPSAwOwkvKiBhdm9pZCBtaXNjb3VudHMgaW4gaW5zdHJ1bWVudGF0aW9uICovCi0JfQotCWVs c2UKLQl7Ci0JCS8qCi0JCSAqIFdlIGhhdmUgbm8gZnJlZXplIHBsYW5zIHRvIGV4ZWN1dGUuICBU aGUgcGFnZSBtaWdodCBhbHJlYWR5IGJlCi0JCSAqIGFsbC1mcm96ZW4gKHBlcmhhcHMgb25seSBm b2xsb3dpbmcgcHJ1bmluZyksIHRob3VnaC4gIFN1Y2ggcGFnZXMKLQkJICogY2FuIGJlIG1hcmtl ZCBhbGwtZnJvemVuIGluIHRoZSBWTSBieSBvdXIgY2FsbGVyLCBldmVuIHRob3VnaCBub25lCi0J CSAqIG9mIGl0cyB0dXBsZXMgd2VyZSBuZXdseSBmcm96ZW4gaGVyZS4KLQkJICovCi0JfQotCi0J LyoKLQkgKiBJdCB3YXMgY29udmVuaWVudCB0byBpZ25vcmUgTFBfREVBRCBpdGVtcyBpbiBhbGxf dmlzaWJsZSBlYXJsaWVyIG9uIHRvCi0JICogbWFrZSB0aGUgY2hvaWNlIG9mIHdoZXRoZXIgb3Ig bm90IHRvIGZyZWV6ZSB0aGUgcGFnZSB1bmFmZmVjdGVkIGJ5IHRoZQotCSAqIHNob3J0LXRlcm0g cHJlc2VuY2Ugb2YgTFBfREVBRCBpdGVtcy4gIFRoZXNlIExQX0RFQUQgaXRlbXMgd2VyZQotCSAq IGVmZmVjdGl2ZWx5IGFzc3VtZWQgdG8gYmUgTFBfVU5VU0VEIGl0ZW1zIGluIHRoZSBtYWtpbmcu ICBJdCBkb2Vzbid0Ci0JICogbWF0dGVyIHdoaWNoIHZhY3V1bSBoZWFwIHBhc3MgKGluaXRpYWwg cGFzcyBvciBmaW5hbCBwYXNzKSBlbmRzIHVwCi0JICogc2V0dGluZyB0aGUgcGFnZSBhbGwtZnJv emVuLCBhcyBsb25nIGFzIHRoZSBvbmdvaW5nIFZBQ1VVTSBkb2VzIGl0LgotCSAqCi0JICogTm93 IHRoYXQgZnJlZXppbmcgaGFzIGJlZW4gZmluYWxpemVkLCB1bnNldCBhbGxfdmlzaWJsZSBpZiB0 aGVyZSBhcmUKLQkgKiBhbnkgTFBfREVBRCBpdGVtcyBvbiB0aGUgcGFnZS4gSXQgbmVlZHMgdG8g cmVmbGVjdCB0aGUgcHJlc2VudCBzdGF0ZSBvZgotCSAqIHRoZSBwYWdlIHdoZW4gdXNpbmcgaXQg dG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRvIHVwZGF0ZSB0aGUgVk0uCi0JICoKLQkgKiBL ZWVwIHRyYWNrIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIHdhcyBhbGwtZnJvemVuIGV4Y2Vw dCBMUF9ERUFECi0JICogaXRlbXMgZm9yIHRoZSBwdXJwb3NlcyBvZiBjYWxjdWxhdGluZyB0aGUg c25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiwKLQkgKiB0aG91Z2guCisJICogV2UgbXVzdCBkZWNp ZGUgd2hldGhlciBvciBub3QgdG8gZnJlZXplIGJlZm9yZSBkZWNpZGluZyBpZiBhbmQgd2hhdCB0 bworCSAqIHNldCBpbiB0aGUgVk0uCiAJICovCi0JYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCA9 IHByc3RhdGUuYWxsX2Zyb3plbjsKLQlpZiAocHJzdGF0ZS5scGRlYWRfaXRlbXMgPiAwKQotCXsK LQkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IGZhbHNlOwotCQlwcnN0YXRlLmFsbF9mcm96ZW4gPSBm YWxzZTsKLQl9CisJZG9fZnJlZXplID0gaGVhcF9wYWdlX3dpbGxfZnJlZXplKHJlbGF0aW9uLCBi dWZmZXIsCisJCQkJCQkJCQkgIGRvX3BydW5lLAorCQkJCQkJCQkJICBkb19oaW50X2Z1bGxfb3Jf cHJ1bmFibGUsCisJCQkJCQkJCQkgIGRpZF90dXBsZV9oaW50X2ZwaSwKKwkJCQkJCQkJCSAgJnBy c3RhdGUsCisJCQkJCQkJCQkgICZhbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkKTsKKworCWRvX3Nl dF92bSA9IGhlYXBfcGFnZV93aWxsX3VwZGF0ZV92bShyZWxhdGlvbiwKKwkJCQkJCQkJCQkgYnVm ZmVyLCBibG9ja25vLCBwYWdlLAorCQkJCQkJCQkJCSByZWFzb24sCisJCQkJCQkJCQkJIGRvX3By dW5lLCBkb19mcmVlemUsCisJCQkJCQkJCQkJIGJsa19rbm93bl9hdiwKKwkJCQkJCQkJCQkgJnBy c3RhdGUsCisJCQkJCQkJCQkJICZ2bWJ1ZmZlciwKKwkJCQkJCQkJCQkgJnZtZmxhZ3MsICZzZXRf cGRfYWxsX3Zpc2libGUpOwogCi0JLyoKLQkgKiBJZiB0aGlzIGlzIGFuIG9uLWFjY2VzcyBjYWxs IGFuZCB3ZSdyZSBub3QgYWN0dWFsbHkgcHJ1bmluZywgYXZvaWQKLQkgKiBzZXR0aW5nIHRoZSB2 aXNpYmlsaXR5IG1hcCBpZiBpdCB3b3VsZCBuZXdseSBkaXJ0eSB0aGUgaGVhcCBwYWdlIG9yLCBp ZgotCSAqIHRoZSBwYWdlIGlzIGFscmVhZHkgZGlydHksIGlmIGRvaW5nIHNvIHdvdWxkIHJlcXVp cmUgaW5jbHVkaW5nIGEKLQkgKiBmdWxsLXBhZ2UgaW1hZ2UgKEZQSSkgb2YgdGhlIGhlYXAgcGFn ZSBpbiB0aGUgV0FMLiBUaGlzIHNpdHVhdGlvbgotCSAqIHNob3VsZCBiZSByYXJlLCBhcyBvbi1h Y2Nlc3MgcHJ1bmluZyBpcyBvbmx5IGF0dGVtcHRlZCB3aGVuCi0JICogcGRfcHJ1bmVfeGlkIGlz IHZhbGlkLgotCSAqLwotCWlmIChyZWFzb24gPT0gUFJVTkVfT05fQUNDRVNTICYmCi0JCXByc3Rh dGUuY29uc2lkZXJfdXBkYXRlX3ZtICYmCi0JCXByc3RhdGUuYWxsX3Zpc2libGUgJiYKLQkJIWRv X3BydW5lICYmICFkb19mcmVlemUgJiYKLQkJKCFCdWZmZXJJc0RpcnR5KGJ1ZmZlcikgfHwgWExv Z0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVyKSkpCi0JewotCQlwcnN0YXRlLmNvbnNpZGVy X3VwZGF0ZV92bSA9IGZhbHNlOwotCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxf ZnJvemVuID0gZmFsc2U7Ci0JfQotCi0JQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJz dGF0ZS5hbGxfdmlzaWJsZSk7Ci0KLQkvKgotCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkg bWFwIGJpdCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAoaWYKLQkgKiBwcm92aWRl ZCwgZS5nLiBieSB2YWN1dW0gZnJvbSB0aGUgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2so KQotCSAqIGNhbGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB2YXJpYWJs ZXMuCi0JICovCi0JaWYgKHByc3RhdGUuY29uc2lkZXJfdXBkYXRlX3ZtKQotCXsKLQkJLyoKLQkJ ICogQ2xlYXIgYW55IFZNIGNvcnJ1cHRpb24uIFRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBpbiBh IGNyaXRpY2FsCi0JCSAqIHNlY3Rpb24sIHNvIHdlIGRvIGl0IGZpcnN0LiBJZiBQRF9BTExfVklT SUJMRSBpcyBpbmNvcnJlY3RseSBzZXQsCi0JCSAqIHdlIG1heSBtYXJrIHRoZSBoZWFwIHBhZ2Ug YnVmZmVyIGRpcnR5IGhlcmUgYW5kIGNvdWxkIGVuZCB1cCBkb2luZwotCQkgKiBzbyBhZ2FpbiBs YXRlci4gVGhpcyBpcyBub3QgYSBjb3JyZWN0bmVzcyBpc3N1ZSBhbmQgaXMgaW4gdGhlIHBhdGgK LQkJICogb2YgVk0gY29ycnVwdGlvbiwgc28gd2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0 aGUgZXh0cmEKLQkJICogcGVyZm9ybWFuY2Ugb3ZlcmhlYWQuCi0JCSAqLwotCQlpZiAoaWRlbnRp ZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIGJsb2Nrbm8s IGJ1ZmZlciwgcGFnZSwKLQkJCQkJCQkJCQkgICBibGtfa25vd25fYXYsIHByc3RhdGUubHBkZWFk X2l0ZW1zLCB2bWJ1ZmZlcikpCi0JCXsKLQkJCS8qIElmIHdlIGZpeCBjb3JydXB0aW9uLCBkb24n dCB1cGRhdGUgdGhlIFZNIGZ1cnRoZXIgKi8KLQkJfQotCi0JCS8qIERldGVybWluZSBpZiB3ZSBh Y3R1YWxseSBuZWVkIHRvIHNldCB0aGUgVk0gYW5kIHdoaWNoIGJpdHMgdG8gc2V0LiAqLwotCQll bHNlIGlmIChwcnN0YXRlLmFsbF92aXNpYmxlICYmCi0JCQkJICghYmxrX2tub3duX2F2IHx8Ci0J CQkJICAocHJzdGF0ZS5hbGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVOKHJlbGF0aW9uLCBibG9j a25vLCAmdm1idWZmZXIpKSkpCi0JCXsKLQkJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExf VklTSUJMRTsKLQkJCWlmIChwcnN0YXRlLmFsbF9mcm96ZW4pCi0JCQkJdm1mbGFncyB8PSBWSVNJ QklMSVRZTUFQX0FMTF9GUk9aRU47Ci0JCX0KLQl9Ci0KLQlkb19zZXRfdm0gPSB2bWZsYWdzICYg VklTSUJJTElUWU1BUF9WQUxJRF9CSVRTOworCS8qIFNhdmUgdGhlc2UgZm9yIHRoZSBjYWxsZXIg aW4gY2FzZSB3ZSBsYXRlciB6ZXJvIG91dCB2bWZsYWdzICovCisJcHJlc3VsdC0+bmV3X3ZtYml0 cyA9IHZtZmxhZ3M7CiAKLQkvKiBMb2NrIHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyBhIGNyaXRp Y2FsIHNlY3Rpb24gKi8KKwkvKiBMb2NrIHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyBjcml0aWNh bCBzZWN0aW9uICovCiAJaWYgKGRvX3NldF92bSkKIAkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVG RkVSX0xPQ0tfRVhDTFVTSVZFKTsKIAogCS8qCi0JICogRG9uJ3Qgc2V0IFBEX0FMTF9WSVNJQkxF IHVubGVzcyB3ZSBhbHNvIHBsYW4gdG8gc2V0IHRoZSBWTS4gV2hpbGUgaXQgaXMKLQkgKiBjb3Jy ZWN0IGZvciBhIGhlYXAgcGFnZSB0byBoYXZlIFBEX0FMTF9WSVNJQkxFIGV2ZW4gaWYgdGhlIFZN IGlzIG5vdAotCSAqIHNldCwgd2Ugc3Ryb25nbHkgcHJlZmVyIHRvIGtlZXAgdGhlbSBpbiBzeW5j LgotCSAqCi0JICogUHJpb3IgdG8gUG9zdGdyZXMgMTksIGl0IHdhcyBwb3NzaWJsZSBmb3IgdGhl IHBhZ2UtbGV2ZWwgYml0IHRvIGJlIHNldAotCSAqIGFuZCB0aGUgVk0gYml0IHRvIGJlIGNsZWFy LiBUaGlzIGNvdWxkIGhhcHBlbiBpZiB3ZSBjcmFzaGVkIGFmdGVyCi0JICogc2V0dGluZyBQRF9B TExfVklTSUJMRSBidXQgYmVmb3JlIHNldHRpbmcgYml0cyBpbiB0aGUgVk0uCisJICogVGltZSB0 byBhY3R1YWxseSBtYWtlIHRoZSBjaGFuZ2VzIHRvIHRoZSBwYWdlIGFuZCBsb2cgdGhlbS4gQW55 IGVycm9yCisJICogd2hpbGUgYXBwbHlpbmcgdGhlIGNoYW5nZXMgaXMgY3JpdGljYWwuCiAJICov Ci0Jc2V0X3BkX2FsbF92aXNpYmxlID0gZG9fc2V0X3ZtICYmICFQYWdlSXNBbGxWaXNpYmxlKHBh Z2UpOwotCi0JLyogU2F2ZSB0aGVzZSBmb3IgdGhlIGNhbGxlciBpbiBjYXNlIHdlIGxhdGVyIHpl cm8gb3V0IHZtZmxhZ3MgKi8KLQlwcmVzdWx0LT5uZXdfdm1iaXRzID0gdm1mbGFnczsKLQotCS8q IEFueSBlcnJvciB3aGlsZSBhcHBseWluZyB0aGUgY2hhbmdlcyBpcyBjcml0aWNhbCAqLwogCVNU QVJUX0NSSVRfU0VDVElPTigpOwogCiAJaWYgKGRvX2hpbnRfZnVsbF9vcl9wcnVuYWJsZSkKLS0g CjIuNDMuMAoK --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0019-Reorder-heap_page_prune_and_freeze-parameters.patch" Content-Disposition: attachment; filename="v12-0019-Reorder-heap_page_prune_and_freeze-parameters.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcida18 RnJvbSBmOTc4MDE5MGRkYTMwOTk3OWVkNTJhODIwZTYyM2NlY2RiYWMzYWQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDMxIEp1bCAyMDI1IDEyOjA4OjE4IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMTkvMjBdIFJlb3JkZXIgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUgcGFyYW1l dGVycwoKUmVvcmRlciBwYXJhbWV0ZXJzIHNvIHRoYXQgYWxsIG9mIHRoZSBvdXRwdXQgcGFyYW1l dGVycyBhcmUgdG9nZXRoZXIgYXQKdGhlIGVuZCBvZiB0aGUgcGFyYW1ldGVyIGxpc3QuCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwgMzggKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgIDYg KystLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICB8ICA0ICstLQogMyBm aWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDY3YjU2ZTQ1YWQ3Li4zZTU1YzQzZjE3YiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTI5NywxMCArMjk3LDEwIEBAIGhlYXBf cGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsIEJ1ZmZlciAq dm1idWZmZXIpCiAJCQkgKiBub3QgdGhlIHJlbGF0aW9uIGhhcyBpbmRleGVzLCBzaW5jZSB3ZSBj YW5ub3Qgc2FmZWx5IGRldGVybWluZQogCQkJICogdGhhdCBkdXJpbmcgb24tYWNjZXNzIHBydW5p bmcgd2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbi4KIAkJCSAqLwotCQkJaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24sIGJ1ZmZlciwgZmFsc2UsCisJCQloZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLCBvcHRpb25zLCBmYWxzZSwKIAkJCQkJ CQkJCSAgIHZtYnVmZmVyID8gKnZtYnVmZmVyIDogSW52YWxpZEJ1ZmZlciwKLQkJCQkJCQkJCSAg IHZpc3Rlc3QsIG9wdGlvbnMsCi0JCQkJCQkJCQkgICBOVUxMLCAmcHJlc3VsdCwgUFJVTkVfT05f QUNDRVNTLAorCQkJCQkJCQkJICAgdmlzdGVzdCwKKwkJCQkJCQkJCSAgIE5VTEwsIFBSVU5FX09O X0FDQ0VTUywgJnByZXN1bHQsCiAJCQkJCQkJCQkgICAmZHVtbXlfb2ZmX2xvYywgTlVMTCwgTlVM TCk7CiAKIAkJCS8qCkBAIC02NTEsNiArNjUxLDE1IEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShS ZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAqIGFsc28gbmVlZCB0byBhY2NvdW50 IGZvciBhIHJlZHVjdGlvbiBpbiB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lIHBvaW50ZXIKICAqIGFy cmF5IGZvbGxvd2luZyBhcnJheSB0cnVuY2F0aW9uIGJ5IHVzLgogICoKKyAqIG9wdGlvbnM6Cisg KiAgIE1BUktfVU5VU0VEX05PVyBpbmRpY2F0ZXMgdGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQg TFBfVU5VU0VEIGR1cmluZworICogICBwcnVuaW5nLgorICoKKyAqICAgRlJFRVpFIGluZGljYXRl cyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzLCBhbmQgd2lsbCByZXR1cm4KKyAqICAg J2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxsZXIuCisgKgorICog ICBVUERBVEVfVk0gaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBzZXQgdGhlIHBhZ2UncyBzdGF0dXMg aW4gdGhlIFZNLgorICoKICAqIElmIHRoZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0 LCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcyBpZiBpdCdzCiAgKiByZXF1aXJlZCBpbiBvcmRl ciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJlbG1pbm14aWQsIG9yIGlmIGl0J3MKICAqIGNv bnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBk byBzbyBub3cuICBUaGUKQEAgLTY2OSwzMCArNjc4LDIxIEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6 ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAqIGNvbnRhaW4gdGhlIHJlcXVp cmVkIGJsb2NrIG9mIHRoZSB2aXNpYmlsaXR5IG1hcC4KICAqCiAgKiB2aXN0ZXN0IGlzIHVzZWQg dG8gZGlzdGluZ3Vpc2ggd2hldGhlciB0dXBsZXMgYXJlIERFQUQgb3IgUkVDRU5UTFlfREVBRAot ICogKHNlZSBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0pLgotICoKLSAqIG9wdGlvbnM6Ci0g KiAgIE1BUktfVU5VU0VEX05PVyBpbmRpY2F0ZXMgdGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQg TFBfVU5VU0VEIGR1cmluZwotICogICBwcnVuaW5nLgotICoKLSAqICAgRlJFRVpFIGluZGljYXRl cyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzLCBhbmQgd2lsbCByZXR1cm4KLSAqICAg J2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxsZXIuCi0gKgotICog ICBVUERBVEVfVk0gaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBzZXQgdGhlIHBhZ2UncyBzdGF0dXMg aW4gdGhlIFZNLgorICogKHNlZSBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0pLiBJdCBpcyBh biBpbnB1dCBwYXJhbWV0ZXIuCiAgKgogICogY3V0b2ZmcyBjb250YWlucyB0aGUgZnJlZXplIGN1 dG9mZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0aGUgYmVnaW5uaW5nCiAgKiBvZiB2YWN1 dW1pbmcgdGhlIHJlbGF0aW9uLiAgUmVxdWlyZWQgaWYgSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9u IGlzIHNldC4KICAqIGN1dG9mZnMtPk9sZGVzdFhtaW4gaXMgYWxzbyB1c2VkIHRvIGRldGVybWlu ZSBpZiBkZWFkIHR1cGxlcyBhcmUKLSAqIEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFEIG9yIEhFQVBU VVBMRV9ERUFELgorICogSEVBUFRVUExFX1JFQ0VOVExZX0RFQUQgb3IgSEVBUFRVUExFX0RFQUQu IEl0IGlzIGFuIGlucHV0IHBhcmFtZXRlci4KKyAqCisgKiByZWFzb24gaW5kaWNhdGVzIHdoeSB0 aGUgcHJ1bmluZyBpcyBwZXJmb3JtZWQuICBJdCBpcyBpbmNsdWRlZCBpbiB0aGUgV0FMCisgKiBy ZWNvcmQgZm9yIGRlYnVnZ2luZyBhbmQgYW5hbHlzaXMgcHVycG9zZXMsIGJ1dCBvdGhlcndpc2Ug aGFzIG5vIGVmZmVjdC4KICAqCiAgKiBwcmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0ZXJz IG5lZWRlZCBieSBjYWxsZXJzLCBzdWNoIGFzIHRoZSBudW1iZXIgb2YKICAqIHR1cGxlcyByZW1v dmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBkZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5p bmcuCiAgKiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIGlzIHJlc3BvbnNpYmxlIGZvciBp bml0aWFsaXppbmcgaXQuICBSZXF1aXJlZAogICogYnkgYWxsIGNhbGxlcnMuCiAgKgotICogcmVh c29uIGluZGljYXRlcyB3aHkgdGhlIHBydW5pbmcgaXMgcGVyZm9ybWVkLiAgSXQgaXMgaW5jbHVk ZWQgaW4gdGhlIFdBTAotICogcmVjb3JkIGZvciBkZWJ1Z2dpbmcgYW5kIGFuYWx5c2lzIHB1cnBv c2VzLCBidXQgb3RoZXJ3aXNlIGhhcyBubyBlZmZlY3QuCi0gKgogICogb2ZmX2xvYyBpcyB0aGUg b2Zmc2V0IGxvY2F0aW9uIHJlcXVpcmVkIGJ5IHRoZSBjYWxsZXIgdG8gdXNlIGluIGVycm9yCiAg KiBjYWxsYmFjay4KICAqCkBAIC03MDUsMTMgKzcwNSwxMyBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVl emUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAgKi8KIHZvaWQKIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJ CQkJICAgaW50IG9wdGlvbnMsCiAJCQkJCQkgICBib29sIGJsa19rbm93bl9hdiwKIAkJCQkJCSAg IEJ1ZmZlciB2bWJ1ZmZlciwKIAkJCQkJCSAgIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAotCQkJ CQkJICAgaW50IG9wdGlvbnMsCiAJCQkJCQkgICBzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2Zm cywKLQkJCQkJCSAgIFBydW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0LAogCQkJCQkJICAgUHJ1bmVS ZWFzb24gcmVhc29uLAorCQkJCQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCiAJCQkJ CQkgICBPZmZzZXROdW1iZXIgKm9mZl9sb2MsCiAJCQkJCQkgICBUcmFuc2FjdGlvbklkICpuZXdf cmVsZnJvemVuX3hpZCwKIAkJCQkJCSAgIE11bHRpWGFjdElkICpuZXdfcmVsbWluX214aWQpCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggNGFkMDViYTRkYjYuLjRmYjkxNWUx ZDk0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xOTkzLDExICsxOTkz LDExIEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJaWYgKHZhY3JlbC0+ bmluZGV4ZXMgPT0gMCkKIAkJcHJ1bmVfb3B0aW9ucyB8PSBIRUFQX1BBR0VfUFJVTkVfTUFSS19V TlVTRURfTk9XOwogCi0JaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUocmVsLCBidWYsCisJaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUocmVsLCBidWYsIHBydW5lX29wdGlvbnMsCiAJCQkJCQkJ ICAgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtLAogCQkJCQkJCSAgIHZtYnVmZmVyLAotCQkJ CQkJCSAgIHZhY3JlbC0+dmlzdGVzdCwgcHJ1bmVfb3B0aW9ucywKLQkJCQkJCQkgICAmdmFjcmVs LT5jdXRvZmZzLCAmcHJlc3VsdCwgUFJVTkVfVkFDVVVNX1NDQU4sCisJCQkJCQkJICAgdmFjcmVs LT52aXN0ZXN0LAorCQkJCQkJCSAgICZ2YWNyZWwtPmN1dG9mZnMsIFBSVU5FX1ZBQ1VVTV9TQ0FO LCAmcHJlc3VsdCwKIAkJCQkJCQkgICAmdmFjcmVsLT5vZmZudW0sCiAJCQkJCQkJICAgJnZhY3Jl bC0+TmV3UmVsZnJvemVuWGlkLCAmdmFjcmVsLT5OZXdSZWxtaW5NeGlkKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBh bS5oCmluZGV4IDE2Zjc5MDRhMjFlLi4wYzRlNTYwNzYyNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAt Mzk0LDEzICszOTQsMTMgQEAgc3RydWN0IEdsb2JhbFZpc1N0YXRlOwogZXh0ZXJuIHZvaWQgaGVh cF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJ CQkJQnVmZmVyICp2bWJ1ZmZlcik7CiBleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCQkJCSAgIGludCBv cHRpb25zLAogCQkJCQkJCQkJICAgYm9vbCBibGtfa25vd25fYXYsCiAJCQkJCQkJCQkgICBCdWZm ZXIgdm1idWZmZXIsCiAJCQkJCQkJCQkgICBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3Qs Ci0JCQkJCQkJCQkgICBpbnQgb3B0aW9ucywKIAkJCQkJCQkJCSAgIHN0cnVjdCBWYWN1dW1DdXRv ZmZzICpjdXRvZmZzLAotCQkJCQkJCQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCiAJ CQkJCQkJCQkgICBQcnVuZVJlYXNvbiByZWFzb24sCisJCQkJCQkJCQkgICBQcnVuZUZyZWV6ZVJl c3VsdCAqcHJlc3VsdCwKIAkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqb2ZmX2xvYywKIAkJCQkJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgKm5ld19yZWxmcm96ZW5feGlkLAogCQkJCQkJCQkJICAgTXVs dGlYYWN0SWQgKm5ld19yZWxtaW5fbXhpZCk7Ci0tIAoyLjQzLjAKCg== --00000000000051af7f063e60bd82 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0020-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v12-0020-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfcrcidc19 RnJvbSA5NWM0ZWJjY2M4Zjc4YjEwNmY0M2Y3MDlhN2E2NTdjNTEwMmNkMmE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTIgMjAvMjBdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0CgpOb3cgdGhhdCB3ZSBj YW4gc2V0IHRoZSBWTSBkdXJpbmcgcmVhZC1vbmx5IHF1ZXJpZXMsIGl0IG1ha2VzIHNlbnNlIHRv CnN0YXJ0IHNldHRpbmcgdGhlIHBhZ2UgcHJ1bmFibGUgaGludCBvbiBpbnNlcnQuIFRoaXMgd2ls bCBhbGxvdwpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvIGJlIGNhbGxlZCB3aGVuIHRo ZSBwYWdlIGlzIGZ1bGwgb3IKbW9zdGx5IGZ1bGwuCgpGb3IgeWVhcnMgdGhlcmUgaGFzIGJlZW4g YSBub3RlIGluIGhlYXBfaW5zZXJ0KCkgYW5kIGhlYXBfbXVsdGlfaW5zZXJ0KCkKcG9pbnRpbmcg b3V0IHRoYXQgc2V0dGluZyBwZF9wcnVuZV94aWQgd291bGQgaGVscCBjbGVhbiB1cCBhYm9ydGVk Cmluc2VydGVkIHR1cGxlcyB0aGF0IHdvdWxkIG90aGVyd2lzZSBub3QgYmUgY2xlYW5lZCB1cCB1 bnRpbCB2YWN1dW0uClNvLCB0aGF0J3MgYW5vdGhlciBiZW5lZml0IG9mIHNldHRpbmcgaXQuCgpT ZXR0aW5nIHBkX3BydW5lX3hpZCBvbiBpbnNlcnQgY2F1c2VzIGEgcGFnZSB0byBiZSBwcnVuZWQg YW5kIHRoZW4Kd3JpdHRlbiBvdXQgd2hpY2ggdGhlbiBhZmZlY3RzIHRoZSByZXBvcnRlZCBudW1i ZXIgb2YgaGl0cyBpbiB0aGUKaW5kZXgta2lsbHR1cGxlcyBpc29sYXRpb24gdGVzdC4gVGhpcyBp cyBhIHF1aXJrIG9mIGhvdyBoaXRzIGFyZSB0cmFja2VkCndoaWNoIHNvbWV0aW1lcyBsZWFkcyB0 aGVtIHRvIGJlIGRvdWJsZSBjb3VudGVkLiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZQpmaXhlZCBv ciBjaGFuZ2VkIGluZGVwZW5kZW50bHkuCgpjaS1vcy1vbmx5OgotLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8IDI1ICsrKysrKysrKysrKystLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgICAgICB8IDE1ICsrKysr KysrKystCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0dXBsZXMub3V0ICAgfCAg NiArKy0tLQogMyBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IGY5ZTUwZDQ3YWVlLi4wOWQ5Nzg5NmM2 NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTIxMDUsNiArMjEwNSw3IEBAIGhlYXBf aW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAog CVRyYW5zYWN0aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKIAlIZWFwVHVw bGUJaGVhcHR1cDsKIAlCdWZmZXIJCWJ1ZmZlcjsKKwlQYWdlCQlwYWdlOwogCUJ1ZmZlcgkJdm1i dWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCWJvb2wJCWFsbF92aXNpYmxlX2NsZWFyZWQgPSBmYWxz ZTsKIApAQCAtMjE2NCwxNSArMjE2NSwxOSBAQCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlv biwgSGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAl9CiAKIAkvKgotCSAqIFhYWCBTaG91 bGQgd2Ugc2V0IFBhZ2VTZXRQcnVuYWJsZSBvbiB0aGlzIHBhZ2UgPworCSAqIFNldCBwZF9wcnVu ZV94aWQgdG8gdHJpZ2dlciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIG9uY2UgdGhlIHBh Z2UKKwkgKiBpcyBmdWxsIHNvIHRoYXQgd2UgY2FuIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBp biB0aGUgVk0uCiAJICoKLQkgKiBUaGUgaW5zZXJ0aW5nIHRyYW5zYWN0aW9uIG1heSBldmVudHVh bGx5IGFib3J0IHRodXMgbWFraW5nIHRoaXMgdHVwbGUKLQkgKiBERUFEIGFuZCBoZW5jZSBhdmFp bGFibGUgZm9yIHBydW5pbmcuIFRob3VnaCB3ZSBkb24ndCB3YW50IHRvIG9wdGltaXplCi0JICog Zm9yIGFib3J0cywgaWYgbm8gb3RoZXIgdHVwbGUgaW4gdGhpcyBwYWdlIGlzIFVQREFURWQvREVM RVRFZCwgdGhlCi0JICogYWJvcnRlZCB0dXBsZSB3aWxsIG5ldmVyIGJlIHBydW5lZCB1bnRpbCBu ZXh0IHZhY3V1bSBpcyB0cmlnZ2VyZWQuCisJICogU2V0dGluZyBwZF9wcnVuZV94aWQgaXMgYWxz byBoYW5keSBpZiB0aGUgaW5zZXJ0aW5nIHRyYW5zYWN0aW9uCisJICogZXZlbnR1YWxseSBhYm9y dHMgbWFraW5nIHRoaXMgdHVwbGUgREVBRCBhbmQgaGVuY2UgYXZhaWxhYmxlIGZvcgorCSAqIHBy dW5pbmcuIElmIG5vIG90aGVyIHR1cGxlIGluIHRoaXMgcGFnZSBpcyBVUERBVEVkL0RFTEVURWQs IHRoZSBhYm9ydGVkCisJICogdHVwbGUgd291bGQgbmV2ZXIgb3RoZXJ3aXNlIGJlIHBydW5lZCB1 bnRpbCBuZXh0IHZhY3V1bSBpcyB0cmlnZ2VyZWQuCiAJICoKLQkgKiBJZiB5b3UgZG8gYWRkIFBh Z2VTZXRQcnVuYWJsZSBoZXJlLCBhZGQgaXQgaW4gaGVhcF94bG9nX2luc2VydCB0b28uCisJICog RG9uJ3Qgc2V0IGl0IGlmIHdlIGFyZSBpbiBib290c3RyYXAgbW9kZSwgdGhvdWdoLgogCSAqLwor CXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CisJaWYgKFRyYW5zYWN0aW9uSWRJc05vcm1h bCh4aWQpKQorCQlQYWdlU2V0UHJ1bmFibGUocGFnZSwgeGlkKTsKIAogCU1hcmtCdWZmZXJEaXJ0 eShidWZmZXIpOwogCkBAIC0yMTgyLDcgKzIxODcsNiBAQCBoZWFwX2luc2VydChSZWxhdGlvbiBy ZWxhdGlvbiwgSGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAkJeGxfaGVhcF9pbnNlcnQg eGxyZWM7CiAJCXhsX2hlYXBfaGVhZGVyIHhsaGRyOwogCQlYTG9nUmVjUHRyCXJlY3B0cjsKLQkJ UGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAkJdWludDgJCWluZm8gPSBYTE9H X0hFQVBfSU5TRVJUOwogCQlpbnQJCQlidWZmbGFncyA9IDA7CiAKQEAgLTI1NDgsOCArMjU1Miwx MyBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3Qg KipzbG90cywgaW50IG50dXBsZXMsCiAJCX0KIAogCQkvKgotCQkgKiBYWFggU2hvdWxkIHdlIHNl dCBQYWdlU2V0UHJ1bmFibGUgb24gdGhpcyBwYWdlID8gU2VlIGhlYXBfaW5zZXJ0KCkKKwkJICog U2V0IHBkX3BydW5lX3hpZC4gU2VlIGhlYXBfaW5zZXJ0KCkgZm9yIG1vcmUgb24gd2h5IHdlIGRv IHRoaXMgd2hlbgorCQkgKiBpbnNlcnRpbmcgdHVwbGVzLiBUaGlzIG9ubHkgbWFrZXMgc2Vuc2Ug aWYgd2UgYXJlbid0IGFscmVhZHkKKwkJICogc2V0dGluZyB0aGUgcGFnZSBmcm96ZW4gaW4gdGhl IFZNLiBXZSBhbHNvIGRvbid0IHNldCBpdCBpbgorCQkgKiBib290c3RyYXAgbW9kZS4KIAkJICov CisJCWlmICghYWxsX2Zyb3plbl9zZXQgJiYgVHJhbnNhY3Rpb25JZElzTm9ybWFsKHhpZCkpCisJ CQlQYWdlU2V0UHJ1bmFibGUocGFnZSwgeGlkKTsKIAogCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVy KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKaW5kZXggOWYxNmJhNjhkMTYu LjMyMWQ2YTBkOTYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f eGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKQEAgLTQ3 OSw2ICs0NzksMTIgQEAgaGVhcF94bG9nX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAogCQlmcmVlc3BhY2UgPSBQYWdlR2V0SGVhcEZyZWVTcGFjZShwYWdlKTsgLyogbmVlZGVkIHRv IHVwZGF0ZSBGU00gYmVsb3cgKi8KIAorCQkvKgorCQkgKiBTZXQgdGhlIHBhZ2UgcHJ1bmFibGUg dG8gdHJpZ2dlciBvbi1hY2Nlc3MgcHJ1bmluZyBsYXRlciB3aGljaCBtYXkKKwkJICogc2V0IHRo ZSBwYWdlIGFsbC12aXNpYmxlIGluIHRoZSBWTS4KKwkJICovCisJCVBhZ2VTZXRQcnVuYWJsZShw YWdlLCBYTG9nUmVjR2V0WGlkKHJlY29yZCkpOworCiAJCVBhZ2VTZXRMU04ocGFnZSwgbHNuKTsK IAogCQlpZiAoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VSVF9BTExfVklTSUJMRV9DTEVBUkVEKQpA QCAtNjI4LDkgKzYzNCwxNiBAQCBoZWFwX3hsb2dfbXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCQlpZiAoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VSVF9BTExfVklTSUJMRV9D TEVBUkVEKQogCQkJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdlKTsKIAotCQkvKiBYTEhfSU5TRVJU X0FMTF9GUk9aRU5fU0VUIGltcGxpZXMgdGhhdCBhbGwgdHVwbGVzIGFyZSB2aXNpYmxlICovCisJ CS8qCisJCSAqIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQgaW1wbGllcyB0aGF0IGFsbCB0dXBs ZXMgYXJlIHZpc2libGUuIElmCisJCSAqIHdlIGFyZSBub3Qgc2V0dGluZyB0aGUgcGFnZSBmcm96 ZW4sIHRoZW4gc2V0IHRoZSBwYWdlJ3MgcHJ1bmFibGUKKwkJICogaGludCBzbyB0aGF0IHdlIHRy aWdnZXIgb24tYWNjZXNzIHBydW5pbmcgbGF0ZXIgd2hpY2ggbWF5IHNldCB0aGUKKwkJICogcGFn ZSBhbGwtdmlzaWJsZSBpbiB0aGUgVk0uCisJCSAqLwogCQlpZiAoeGxyZWMtPmZsYWdzICYgWExI X0lOU0VSVF9BTExfRlJPWkVOX1NFVCkKIAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCQll bHNlCisJCQlQYWdlU2V0UHJ1bmFibGUocGFnZSwgWExvZ1JlY0dldFhpZChyZWNvcmQpKTsKIAog CQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29s YXRpb24vZXhwZWN0ZWQvaW5kZXgta2lsbHR1cGxlcy5vdXQgYi9zcmMvdGVzdC9pc29sYXRpb24v ZXhwZWN0ZWQvaW5kZXgta2lsbHR1cGxlcy5vdXQKaW5kZXggYmU3ZGRkNzU2ZWYuLmIyOWYyNDM0 YjAwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaW5kZXgta2lsbHR1 cGxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0dXBs ZXMub3V0CkBAIC01NCw3ICs1NCw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBGUk9NIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCAr IGhlYXBfYmxrc19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3X2hlYXBfYWNjZXNz ZXMgRlJPTSBjb3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tp bGxfcHJpb3JfdHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0tLS0tLS0tLS0tCi0g ICAgICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJvdykKIAogc3RlcCBtZWFz dXJlOiBVUERBVEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxFQ1QgaGVhcF9ibGtz X3JlYWQgKyBoZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVs bmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJyk7CkBAIC0xMzAsNyArMTMwLDcgQEAgc3RlcCBmbHVz aDogU0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJlc3VsdDog U0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVhcF9hY2Nl c3NlcyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19hbGxfdGFi bGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9hY2Nlc3Nl cwogLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAg MgogKDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFwX2FjY2Vz c2VzID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBwZ19zdGF0 aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsKQEAgLTI4 Myw3ICsyODMsNyBAQCBzdGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKTsKIHN0ZXAgcmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3Nf aGl0IC0gY291bnRlci5oZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291 bnRlciwgcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1 cGxlJzsKIG5ld19oZWFwX2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAg ICAgIDEKKyAgICAgICAgICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRF IGNvdW50ZXIgU0VUIGhlYXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVh cF9ibGtzX2hpdCBGUk9NIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2ls bF9wcmlvcl90dXBsZScpOwotLSAKMi40My4wCgo= --00000000000051af7f063e60bd82--