Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vW1ud-00B59M-1Q for pgsql-hackers@arkaria.postgresql.org; Thu, 18 Dec 2025 00:30:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vW1uc-00HFuw-1V for pgsql-hackers@arkaria.postgresql.org; Thu, 18 Dec 2025 00:30:35 +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.96) (envelope-from ) id 1vW1ub-00HFuZ-1U for pgsql-hackers@lists.postgresql.org; Thu, 18 Dec 2025 00:30:34 +0000 Received: from mail-ed1-x52b.google.com ([2a00:1450:4864:20::52b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vW1uM-001Evt-29 for pgsql-hackers@lists.postgresql.org; Thu, 18 Dec 2025 00:30:33 +0000 Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-6498a6f8ab4so58992a12.3 for ; Wed, 17 Dec 2025 16:30:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766017815; x=1766622615; 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=k8ppi7n6hqwPSCg5/nRCkzyCE7ET/CO7NU09FG++oeg=; b=TyGz0HLJfvzVQKSSuCl3tQrZ57UH8S2iIpAZ6pYaSrJmgJaR+7EVGedWws0DbUpk2s xzvAltMqB/79Vg4UVj7/4ESGtGVFMVkeImkI6zuHntO5lqr5WVJ61YGdU5bBhKX2tZcJ yCpMPs/7GDCVCbHQMzz0gIIgog87Jhrl6uSd0dAjVB+M7jcEd995tZ5WhVT6jmW0F1MK 3E7pt6r/gH9HLSaKVtzKqxG10xuzL3j//kvjAXAR2Gq7lpkkcoxCxN74HRgJ+MOyZNLt WXuTuZ4hnmj8fRmEdaeM3CiDebCPx4TM0RwigG9KkEEuVZ0wY5+JIRZHlhL9jPTO58L4 pvrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766017815; x=1766622615; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=k8ppi7n6hqwPSCg5/nRCkzyCE7ET/CO7NU09FG++oeg=; b=JBQw/6I7DiyrSnIUuSd4HB/eU8cUZ3HV/KSKBlHcPHVHHLFV9RwOvD9Vxt3QeiSzJ2 Gk4xFFOgSYYRNAhk6pgfdH0vRJP/QbHikE85NdzphQgy2PGm11fjp0T9qHBUKcZ3563E yih94qnC5bgLOpPQYNxFcg6r8YZ4MdixX7Ea8TqyZA4+QJ07KKJ8yomB7xrjhb0sjP1H nBcMzj36n8Sxqej2qdfXj1+9tkzyilYOSljG/MYXmmyyrEPZZVD+02Mpzqf3tl0cAD1+ ZUq+XvOgr01H2PNFGUErFxvbcEvNCGGQE+jUHOcX1aG5/8KJGt9mkskyDkk70o/W80YU tt1g== X-Forwarded-Encrypted: i=1; AJvYcCXGYrnjgwBotVpEscSRnvmdqaRkcoAecmnqhpZM2XSjmILNsECD0Pl3k6l6HJ45EEyL+k3kcuHYo2E6l2bO@lists.postgresql.org X-Gm-Message-State: AOJu0YxuJW+1PJncFp2NKU/PnFUbisvIJ5sHqgJcD550GYa5DO4EytAb xJ/bv01DvBJrUbIU3jZ7IYsze5NY1jTLXeZqn+ABtn5EcsOyKD3wWvR3Ts3d7muYQv3JhwE0BVJ ZXKe3hQGYFhTz1xbP4EMoJKT4lLC6Erw= X-Gm-Gg: AY/fxX7kKEds1ZUUFS7Qn9XwtuY/HBQKL/wanEFc0pLFA3Vvzx2i32W5rkq81SJmmRB UXQbmyW4LHfvuM2viNFiBl09bgszWywvj2O0J3NtGHO/8I+hvgz+QRWpwRDn2/x3MZvTllWFnj1 wbP76IUKL1F4dHZqhoWps607Q6N7U65f9Fhl1FLXmY2b5eUng6KcKgrmjPU2wU3qqylwhl+0WZO qYXyr7knIQ1ZYAYlJJ6ectOD/v3bQWh6uQ3QgEZd7ufEK8Ybj2Uxh+ZcLdpC5E/rJu3cDsT X-Google-Smtp-Source: AGHT+IHRjbwOeAP9rd2HblevVsKJ8Ak1LEnRZjYJEjsC3yot8bWuFw77PKga4S17CbvHmhItikc/3dLHS8dbntZsr9s= X-Received: by 2002:a05:6402:2807:b0:64b:4651:bae5 with SMTP id 4fb4d7f45d1cf-64b4651bec2mr3196187a12.12.1766017814813; Wed, 17 Dec 2025 16:30:14 -0800 (PST) MIME-Version: 1.0 References: <2wk7jo4m4qwh5sn33pfgerdjfujebbccsmmlownybddbh6nawl@mdyyqpqzxjek> In-Reply-To: From: Melanie Plageman Date: Wed, 17 Dec 2025 19:30:01 -0500 X-Gm-Features: AQt7F2oBRCYPHxHzWZoQs1mw4vsZr-gYF9WeY9ApW_CTN3hhLxL3Gej5X7omBbU Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Kirill Reshke Cc: Andres Freund , Robert Haas , Andrey Borodin , PostgreSQL Hackers , Heikki Linnakangas , Chao Li Content-Type: multipart/mixed; boundary="000000000000857fc406462f10e4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000857fc406462f10e4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for the review! In addition to addressing your feedback, attached v28 includes a number of small fixes to comments, commit messages, and other things. Notably, I've added one new refactoring patch 0009, which reduces the diff of 0010 -- using the GlobalVisState instead of OldestXmin for page visibility -- even further. On Wed, Dec 17, 2025 at 1:27=E2=80=AFPM Kirill Reshke wrote: > > > I've done this. I've actually added three such verifications -- one > > after each step where the VM is expected to change. It shouldn't be > > very expensive, so I think it is okay. The way the test would fail if > > the buffer wasn't correctly dirtied is that it would assert out -- so > > the visibility map test wouldn't even have a chance to fail. But, I > > think it is also okay to confirm that the expected things are > > happening with the VM -- it just gives us extra coverage. > > +1 on extra coverage. Should we also do sql-level check that the VM > indeed does not need to set PD_ALL_VISIBLE (check header bytes using > pageinspect?). That's an interesting idea. I checked and, AFAICT, there are no tests currently directly comparing the flags column returned by the pageinspect page_header() function to one of the flag values. I've added the following to attached v28. SELECT (flags & x'0004'::int) <> 0 FROM page_header(get_raw_page('test_vac_unmodified_heap', 0)); But I'm not sure if it is weird/confusing to be comparing the flag directly to the number 4 like this. I don't really want to bother with adding another function to pageinspect returning the status of PD_ALL_VISIBLE (like page_visible() or something). > v27-0003 & v27-0004: I did not get the exact reason we introduced > `identify_and_fix_vm_corruption` in 0003 and moved code in 0004 to > another place. I can see we have this starting v25 of patch set. Well, > maybe this is not an issue at all... It's mostly for ease of review. This is a pretty sensitive area of code, so I thought it would be easier for the reviewer to confirm correctness if I split it up. Andres had mentioned that the commit was hard to review because so many different things were happening. In v27, 0003 moves the VM clear code into a helper. 0004 and 0005 moves all the VM setting/clearing code to heap_page_prune_and_freeze(). And 0006 actually sets the VM in the same critical section as pruning/freezing and emits a single WAL record. I'm not really sure which commits should stay independent in the final version I push to master. > in v27-0005. This patch changes code which is not exercised in > tests[0]. I spent some time understanding the conditions when we > entered this. There is a comment about non-finished relation > extension, but I got no success trying to reproduce this. I ended up > modifying code to lose PageSetAllVisible in proper places and running > vacuum. Looks like everything works as expected. I will spend some > more time on this, maybe I will be successful in writing an > injection-point-based TAP test which hits this... Based on the coverage report link you provided, that code is changed by v27 0007, not 0005. 0005 is about moving an assertion out of lazy_scan_prune(). 0007 changes lazy_scan_new_or_empty() (the code in question). Regarding 0007, it looks like what is uncovered (the orange bits in the coverage report are uncovered, I assume) is empty pages _without_ PD_ALL_VISIBLE set. I don't see anywhere where PageSetAllVisible() is called except vacuum and COPY FREEZE. If I was trying to guess how empty pages with PD_ALL_VISIBLE set are getting vacuumed, I would think it is due to SKIP_PAGES_THRESHOLD causing us to vacuum an all-frozen empty page. Then the question is, why wouldn't we have coverage of the empty page first being set all-visible/all-frozen? It can't be COPY FREEZE because the page is empty. And it can't be vacuum, because then we would have coverage. It's very mysterious. It would be good to have coverage for this case. I don't think you'll need an injection point for the main case of "empty page not yet set all-visible is vacuumed for the first time" (unless I'm misunderstanding something). I'm not sure how you'll test the "vacuuming an empty, previously uninitialized page" case described in this comment, though. * It's possible that another backend has extended the heap, * initialized the page, and then failed to WAL-log the page du= e * to an ERROR. Since heap extension is not WAL-logged, recove= ry * might try to replay our record setting the page all-visible = and * find that the page isn't initialized, which will cause a PAN= IC. * To prevent that, check whether the page has been previously * WAL-logged, and if not, do that now. You'd want to force an error during relation extension and then vacuum the page. I don't know if you need an injection point to force the error -- depends on what kind of error, I think. So that I know for attribution, did you review 0003-0005? - Melanie --000000000000857fc406462f10e4 Content-Type: text/x-patch; charset="UTF-8"; name="v28-0001-Combine-visibilitymap_set-cases-in-lazy_scan_pru.patch" Content-Disposition: attachment; filename="v28-0001-Combine-visibilitymap_set-cases-in-lazy_scan_pru.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjapcf550 RnJvbSBlZTdjNWY4NjA3OTlmMTk1NjQ0ZTJmZWRmMmI2M2I2Nzg5MDQ1Y2JjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDggRGVjIDIwMjUgMTU6NDk6NTQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyOCAwMS8xNV0gQ29tYmluZSB2aXNpYmlsaXR5bWFwX3NldCgpIGNhc2VzIGluCiBsYXp5 X3NjYW5fcHJ1bmUoKQpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47 IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKbGF6eV9zY2Fu X3BydW5lKCkgcHJldmlvdXNseSBoYWQgdHdvIHNlcGFyYXRlIGNhc2VzIHRoYXQgY2FsbGVkCnZp c2liaWxpdHltYXBfc2V0KCkgYWZ0ZXIgcHJ1bmluZyBhbmQgZnJlZXppbmcuIFRoZXNlIGJyYW5j aGVzIHdlcmUKbmVhcmx5IGlkZW50aWNhbCBleGNlcHQgdGhhdCBvbmUgYXR0ZW1wdGVkIHRvIGF2 b2lkIGRpcnR5aW5nIHRoZSBoZWFwCmJ1ZmZlci4gSG93ZXZlciwgdGhhdCBzaXR1YXRpb24gY2Fu IG5ldmVyIG9jY3VyIOKAlCB0aGUgaGVhcCBidWZmZXIgY2Fubm90CmJlIGNsZWFuIGF0IHRoYXQg cG9pbnQgKGFuZCB3ZSB3b3VsZCBoaXQgYW4gYXNzZXJ0aW9uIGlmIGl0IHdlcmUpLgoKSW4gbGF6 eV9zY2FuX3BydW5lKCksIHdoZW4gd2UgY2hhbmdlIGEgcHJldmlvdXNseSBhbGwtdmlzaWJsZSBw YWdlIHRvCmFsbC1mcm96ZW4gYW5kIHRoZSBwYWdlIHdhcyByZWNvcmRlZCBhcyBhbGwtdmlzaWJs ZSBpbiB0aGUgdmlzaWJpbGl0eQptYXAgYnkgZmluZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKCks IHRoZSBoZWFwIGJ1ZmZlciB3aWxsIGFsd2F5cyBiZQpkaXJ0eS4gRWl0aGVyIHdlIGhhdmUganVz dCBmcm96ZW4gYSB0dXBsZSBhbmQgYWxyZWFkeSBkaXJ0aWVkIHRoZQpidWZmZXIsIG9yIHRoZSBi dWZmZXIgd2FzIG1vZGlmaWVkIGJldHdlZW4gZmluZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKCkK YW5kIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgYW5kIHRoZW4gcHJ1bmVkIGluCmhlYXBf cGFnZV9wcnVuZV9hbmRfZnJlZXplKCkuCgpBZGRpdGlvbmFsbHksIFhMb2dSZWdpc3RlckJ1ZmZl cigpIGFzc2VydHMgdGhhdCB0aGUgYnVmZmVyIGlzIGRpcnR5LCBzbwphdHRlbXB0aW5nIHRvIGFk ZCBhIGNsZWFuIGhlYXAgYnVmZmVyIHRvIHRoZSBXQUwgY2hhaW4gd291bGQgYXNzZXJ0IG91dAph bnl3YXkuCgpTaW5jZSB0aGUg4oCcY2xlYW4gaGVhcCBidWZmZXIgd2l0aCBhbHJlYWR5IHNldCBW TeKAnSBjYXNlIGlzIGltcG9zc2libGUsCnRoZSB0d28gdmlzaWJpbGl0eW1hcF9zZXQoKSBicmFu Y2hlcyBpbiBsYXp5X3NjYW5fcHJ1bmUoKSBjYW4gYmUgbWVyZ2VkLgpEb2luZyBzbyBtYWtlcyB0 aGUgaW50ZW50IGNsZWFyZXIgYW5kIGVtcGhhc2l6ZXMgdGhhdCB0aGUgaGVhcCBidWZmZXIKbXVz dCBhbHdheXMgYmUgbWFya2VkIGRpcnR5IGJlZm9yZSBiZWluZyBhZGRlZCB0byB0aGUgV0FMIGNo YWluLgoKVGhpcyBjb21taXQgYWxzbyBhZGRzIGEgdGVzdCBjYXNlIGZvciB2YWN1dW1pbmcgd2hl biBubyBoZWFwCm1vZGlmaWNhdGlvbnMgYXJlIHJlcXVpcmVkLiBDdXJyZW50bHkgdGhpcyBlbnN1 cmVzIHRoYXQgdGhlIGhlYXAgYnVmZmVyCmlzIG1hcmtlZCBkaXJ0eSBiZWZvcmUgaXQgaXMgYWRk ZWQgdG8gdGhlIFdBTCBjaGFpbiwgYnV0IGlmIHdlIGxhdGVyCnJlbW92ZSB0aGUgaGVhcCBidWZm ZXIgZnJvbSB0aGUgVk0tc2V0IFdBTCBjaGFpbiBvciBwYXNzIGl0IHdpdGggdGhlClJFR0JVRl9O T19DSEFOR0VTIGZsYWcsIHRoaXMgdGVzdCB3b3VsZCBndWFyZCB0aGF0IGJlaGF2aW9yLgoKQXV0 aG9yOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdl ZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFNyaW5h dGggUmVkZHkgU2FkaXBpcmFsbGEgPHNyaW5hdGgyMTMzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBz Oi8vcG9zdGdyLmVzL20vNUNFQUExNjItNjdCMS00NERBLUI2MEQtOEI2NTcxN0U4QjA1JTQwZ21h aWwuY29tCi0tLQogLi4uL3BnX3Zpc2liaWxpdHkvZXhwZWN0ZWQvcGdfdmlzaWJpbGl0eS5vdXQg IHwgNDQgKysrKysrKysrKwogY29udHJpYi9wZ192aXNpYmlsaXR5L3NxbC9wZ192aXNpYmlsaXR5 LnNxbCAgIHwgMjAgKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAg ICAgICAgICB8IDg3ICsrKystLS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgODIgaW5z ZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ192aXNp YmlsaXR5L2V4cGVjdGVkL3BnX3Zpc2liaWxpdHkub3V0IGIvY29udHJpYi9wZ192aXNpYmlsaXR5 L2V4cGVjdGVkL3BnX3Zpc2liaWxpdHkub3V0CmluZGV4IDA5ZmE1OTMzYTM1Li5lMTBmMTcwNjAx NSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ192aXNpYmlsaXR5L2V4cGVjdGVkL3BnX3Zpc2liaWxp dHkub3V0CisrKyBiL2NvbnRyaWIvcGdfdmlzaWJpbGl0eS9leHBlY3RlZC9wZ192aXNpYmlsaXR5 Lm91dApAQCAtMSw0ICsxLDUgQEAKIENSRUFURSBFWFRFTlNJT04gcGdfdmlzaWJpbGl0eTsKK0NS RUFURSBFWFRFTlNJT04gcGFnZWluc3BlY3Q7CiAtLQogLS0gcmVjZW50bHktZHJvcHBlZCB0YWJs ZQogLS0KQEAgLTIwNCw2ICsyMDUsNDkgQEAgc2VsZWN0IHBnX3RydW5jYXRlX3Zpc2liaWxpdHlf bWFwKCd0ZXN0X3BhcnRpdGlvbicpOwogIAogKDEgcm93KQogCistLSB0ZXN0IHRoZSBjYXNlIHdo ZXJlIHZhY3V1bSBwaGFzZSBJIGRvZXMgbm90IG5lZWQgdG8gbW9kaWZ5IHRoZSBoZWFwIGJ1ZmZl cgorLS0gYW5kIG9ubHkgbmVlZHMgdG8gc2V0IHRoZSBWTQorY3JlYXRlIHRhYmxlIHRlc3RfdmFj X3VubW9kaWZpZWRfaGVhcChhIGludCk7CitpbnNlcnQgaW50byB0ZXN0X3ZhY191bm1vZGlmaWVk X2hlYXAgdmFsdWVzICgxKTsKK3ZhY3V1bSAoZnJlZXplKSB0ZXN0X3ZhY191bm1vZGlmaWVkX2hl YXA7CitzZWxlY3QgcGdfdmlzaWJpbGl0eV9tYXBfc3VtbWFyeSgndGVzdF92YWNfdW5tb2RpZmll ZF9oZWFwJyk7CisgcGdfdmlzaWJpbGl0eV9tYXBfc3VtbWFyeSAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICgxLDEpCisoMSByb3cpCisKKy0tIHRoZSBjaGVja3BvaW50IGNsZWFucyB0 aGUgYnVmZmVyIGRpcnRpZWQgYnkgZnJlZXppbmcgdGhlIHNvbGUgdHVwbGUKK2NoZWNrcG9pbnQ7 CistLSB0cnVuY2F0aW5nIHRoZSBWTSBlbnN1cmVzIHRoYXQgdGhlIG5leHQgdmFjdXVtIHdpbGwg bmVlZCB0byBzZXQgaXQKK3NlbGVjdCBwZ190cnVuY2F0ZV92aXNpYmlsaXR5X21hcCgndGVzdF92 YWNfdW5tb2RpZmllZF9oZWFwJyk7CisgcGdfdHJ1bmNhdGVfdmlzaWJpbGl0eV9tYXAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBwZ192aXNpYmls aXR5X21hcF9zdW1tYXJ5KCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnKTsKKyBwZ192aXNpYmls aXR5X21hcF9zdW1tYXJ5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDAsMCkKKygx IHJvdykKKworLS0gdGhvdWdoIHRoZSBWTSBpcyB0cnVuY2F0ZWQsIHRoZSBoZWFwIHBhZ2UtbGV2 ZWwgdmlzaWJpbGl0eSBoaW50LAorLS0gUERfQUxMX1ZJU0lCTEUgc2hvdWxkIHN0aWxsIGJlIHNl dAorU0VMRUNUIChmbGFncyAmIHgnMDAwNCc6OmludCkgPD4gMAorICAgICAgICBGUk9NIHBhZ2Vf aGVhZGVyKGdldF9yYXdfcGFnZSgndGVzdF92YWNfdW5tb2RpZmllZF9oZWFwJywgMCkpOworID9j b2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gdmFjdXVtIHNldHMgdGhlIFZN Cit2YWN1dW0gdGVzdF92YWNfdW5tb2RpZmllZF9oZWFwOworc2VsZWN0IHBnX3Zpc2liaWxpdHlf bWFwX3N1bW1hcnkoJ3Rlc3RfdmFjX3VubW9kaWZpZWRfaGVhcCcpOworIHBnX3Zpc2liaWxpdHlf bWFwX3N1bW1hcnkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoMSwxKQorKDEgcm93 KQorCiAtLSB0ZXN0IGNvcHkgZnJlZXplCiBjcmVhdGUgdGFibGUgY29weWZyZWV6ZSAoYSBpbnQs IGIgY2hhcigxNTAwKSk7CiAtLSBsb2FkIGFsbCByb3dzIHZpYSBDT1BZIEZSRUVaRSBhbmQgZW5z dXJlIHRoYXQgYWxsIHBhZ2VzIGFyZSBzZXQgYWxsLXZpc2libGUKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcGdfdmlzaWJpbGl0eS9zcWwvcGdfdmlzaWJpbGl0eS5zcWwgYi9jb250cmliL3BnX3Zpc2li aWxpdHkvc3FsL3BnX3Zpc2liaWxpdHkuc3FsCmluZGV4IDVhZjA2ZWM1Yjc2Li41N2FmOGEwYzVi NiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ192aXNpYmlsaXR5L3NxbC9wZ192aXNpYmlsaXR5LnNx bAorKysgYi9jb250cmliL3BnX3Zpc2liaWxpdHkvc3FsL3BnX3Zpc2liaWxpdHkuc3FsCkBAIC0x LDQgKzEsNSBAQAogQ1JFQVRFIEVYVEVOU0lPTiBwZ192aXNpYmlsaXR5OworQ1JFQVRFIEVYVEVO U0lPTiBwYWdlaW5zcGVjdDsKIAogLS0KIC0tIHJlY2VudGx5LWRyb3BwZWQgdGFibGUKQEAgLTk0 LDYgKzk1LDI1IEBAIHNlbGVjdCBjb3VudCgqKSA+IDAgZnJvbSBwZ192aXNpYmlsaXR5X21hcF9z dW1tYXJ5KCd0ZXN0X3BhcnRpdGlvbicpOwogc2VsZWN0ICogZnJvbSBwZ19jaGVja19mcm96ZW4o J3Rlc3RfcGFydGl0aW9uJyk7IC0tIGhvcGVmdWxseSBub25lCiBzZWxlY3QgcGdfdHJ1bmNhdGVf dmlzaWJpbGl0eV9tYXAoJ3Rlc3RfcGFydGl0aW9uJyk7CiAKKy0tIHRlc3QgdGhlIGNhc2Ugd2hl cmUgdmFjdXVtIHBoYXNlIEkgZG9lcyBub3QgbmVlZCB0byBtb2RpZnkgdGhlIGhlYXAgYnVmZmVy CistLSBhbmQgb25seSBuZWVkcyB0byBzZXQgdGhlIFZNCitjcmVhdGUgdGFibGUgdGVzdF92YWNf dW5tb2RpZmllZF9oZWFwKGEgaW50KTsKK2luc2VydCBpbnRvIHRlc3RfdmFjX3VubW9kaWZpZWRf aGVhcCB2YWx1ZXMgKDEpOwordmFjdXVtIChmcmVlemUpIHRlc3RfdmFjX3VubW9kaWZpZWRfaGVh cDsKK3NlbGVjdCBwZ192aXNpYmlsaXR5X21hcF9zdW1tYXJ5KCd0ZXN0X3ZhY191bm1vZGlmaWVk X2hlYXAnKTsKKy0tIHRoZSBjaGVja3BvaW50IGNsZWFucyB0aGUgYnVmZmVyIGRpcnRpZWQgYnkg ZnJlZXppbmcgdGhlIHNvbGUgdHVwbGUKK2NoZWNrcG9pbnQ7CistLSB0cnVuY2F0aW5nIHRoZSBW TSBlbnN1cmVzIHRoYXQgdGhlIG5leHQgdmFjdXVtIHdpbGwgbmVlZCB0byBzZXQgaXQKK3NlbGVj dCBwZ190cnVuY2F0ZV92aXNpYmlsaXR5X21hcCgndGVzdF92YWNfdW5tb2RpZmllZF9oZWFwJyk7 CitzZWxlY3QgcGdfdmlzaWJpbGl0eV9tYXBfc3VtbWFyeSgndGVzdF92YWNfdW5tb2RpZmllZF9o ZWFwJyk7CistLSB0aG91Z2ggdGhlIFZNIGlzIHRydW5jYXRlZCwgdGhlIGhlYXAgcGFnZS1sZXZl bCB2aXNpYmlsaXR5IGhpbnQsCistLSBQRF9BTExfVklTSUJMRSBzaG91bGQgc3RpbGwgYmUgc2V0 CitTRUxFQ1QgKGZsYWdzICYgeCcwMDA0Jzo6aW50KSA8PiAwCisgICAgICAgIEZST00gcGFnZV9o ZWFkZXIoZ2V0X3Jhd19wYWdlKCd0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXAnLCAwKSk7CistLSB2 YWN1dW0gc2V0cyB0aGUgVk0KK3ZhY3V1bSB0ZXN0X3ZhY191bm1vZGlmaWVkX2hlYXA7CitzZWxl Y3QgcGdfdmlzaWJpbGl0eV9tYXBfc3VtbWFyeSgndGVzdF92YWNfdW5tb2RpZmllZF9oZWFwJyk7 CisKIC0tIHRlc3QgY29weSBmcmVlemUKIGNyZWF0ZSB0YWJsZSBjb3B5ZnJlZXplIChhIGludCwg YiBjaGFyKDE1MDApKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDMw Nzc4YTE1NjM5Li5jZWNiYTIxNDZlYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YwpAQCAtMjA5MywxNiArMjA5MywxNCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFj cmVsLAogCSAqIG9mIGxhc3QgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBm cm9tIGFsbF92aXNpYmxlIGFuZAogCSAqIGFsbF9mcm96ZW4gdmFyaWFibGVzCiAJICovCi0JaWYg KCFhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJsZSkKKwlp ZiAoKHByZXN1bHQuYWxsX3Zpc2libGUgJiYgIWFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSkg fHwKKwkJKHByZXN1bHQuYWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWwsIGJsa25vLCAm dm1idWZmZXIpKSkKIAl7CiAJCXVpbnQ4CQlvbGRfdm1iaXRzOwogCQl1aW50OAkJZmxhZ3MgPSBW SVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOwogCiAJCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0J CXsKLQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9o b3Jpem9uKSk7CiAJCQlmbGFncyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47Ci0JCX0KIAog CQkvKgogCQkgKiBJdCBzaG91bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0 eSBtYXAgcGFnZSBpcyBzZXQKQEAgLTIxMTAsMTUgKzIxMDgsMjUgQEAgbGF6eV9zY2FuX3BydW5l KExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJICogY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZCkuICBS ZWdhcmRsZXNzLCBzZXQgYm90aCBiaXRzIHNvIHRoYXQgd2UKIAkJICogZ2V0IGJhY2sgaW4gc3lu Yy4KIAkJICoKLQkJICogTkI6IElmIHRoZSBoZWFwIHBhZ2UgaXMgYWxsLXZpc2libGUgYnV0IHRo ZSBWTSBiaXQgaXMgbm90IHNldCwgd2UKLQkJICogZG9uJ3QgbmVlZCB0byBkaXJ0eSB0aGUgaGVh cCBwYWdlLiAgSG93ZXZlciwgaWYgY2hlY2tzdW1zIGFyZQotCQkgKiBlbmFibGVkLCB3ZSBkbyBu ZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBoZWFwIHBhZ2UgaXMgZGlydGllZAotCQkgKiBiZWZv cmUgcGFzc2luZyBpdCB0byB2aXNpYmlsaXR5bWFwX3NldCgpLCBiZWNhdXNlIGl0IG1heSBiZSBs b2dnZWQuCi0JCSAqIEdpdmVuIHRoYXQgdGhpcyBzaXR1YXRpb24gc2hvdWxkIG9ubHkgaGFwcGVu IGluIHJhcmUgY2FzZXMgYWZ0ZXIgYQotCQkgKiBjcmFzaCwgaXQgaXMgbm90IHdvcnRoIG9wdGlt aXppbmcuCisJCSAqIEV2ZW4gaWYgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQsIHdlIGRv bid0IG5lZWQgdG8gd29ycnkgYWJvdXQKKwkJICogdW5uZWNlc3NhcmlseSBkaXJ0eWluZyB0aGUg aGVhcCBidWZmZXIuIE5lYXJseSB0aGUgb25seSBzY2VuYXJpbworCQkgKiB3aGVyZSBQRF9BTExf VklTSUJMRSBpcyBzZXQgYnV0IHRoZSBWTSBpcyBub3QgaXMgaWYgdGhlIFZNIHdhcworCQkgKiBy ZW1vdmVkIC0tIGFuZCB0aGF0IGlzbid0IHdvcnRoIG9wdGltaXppbmcgZm9yLiBBbmQgaWYgd2Ug YWRkIHRoZQorCQkgKiBoZWFwIGJ1ZmZlciB0byB0aGUgV0FMIGNoYWluICh3aXRob3V0IHBhc3Np bmcgUkVHQlVGX05PX0NIQU5HRVMpLAorCQkgKiBpdCBtdXN0IGJlIG1hcmtlZCBkaXJ0eS4KIAkJ ICovCiAJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwogCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsK KworCQkvKgorCQkgKiBJZiB0aGUgcGFnZSBpcyBiZWluZyBzZXQgYWxsLWZyb3plbiwgd2UgcGFz cyBJbnZhbGlkVHJhbnNhY3Rpb25JZAorCQkgKiBhcyB0aGUgY3V0b2ZmX3hpZCwgc2luY2UgYSBz bmFwc2hvdCBjb25mbGljdCBob3Jpem9uIHN1ZmZpY2llbnQgdG8KKwkJICogbWFrZSBldmVyeXRo aW5nIHNhZmUgZm9yIFJFRE8gd2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzCisJCSAq IHdlcmUgZnJvemVuLgorCQkgKi8KKwkJQXNzZXJ0KCFwcmVzdWx0LmFsbF9mcm96ZW4gfHwKKwkJ CSAgICFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pKTsK KwogCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBi dWYsCiAJCQkJCQkJCQkgICBJbnZhbGlkWExvZ1JlY1B0ciwKIAkJCQkJCQkJCSAgIHZtYnVmZmVy LCBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24sCkBAIC0yMTkwLDY1ICsyMTk4LDYgQEAgbGF6 eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJCQkJCQlWSVNJQklMSVRZTUFQX1ZB TElEX0JJVFMpOwogCX0KIAotCS8qCi0JICogSWYgdGhlIGFsbC12aXNpYmxlIHBhZ2UgaXMgYWxs LWZyb3plbiBidXQgbm90IG1hcmtlZCBhcyBzdWNoIHlldCwgbWFyawotCSAqIGl0IGFzIGFsbC1m cm96ZW4uCi0JICovCi0JZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmIHBy ZXN1bHQuYWxsX2Zyb3plbiAmJgotCQkJICFWTV9BTExfRlJPWkVOKHZhY3JlbC0+cmVsLCBibGtu bywgJnZtYnVmZmVyKSkKLQl7Ci0JCXVpbnQ4CQlvbGRfdm1iaXRzOwotCi0JCS8qCi0JCSAqIEF2 b2lkIHJlbHlpbmcgb24gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFzIGEgcHJveHkgZm9y IHRoZQotCQkgKiBwYWdlLWxldmVsIFBEX0FMTF9WSVNJQkxFIGJpdCBiZWluZyBzZXQsIHNpbmNl IGl0IG1pZ2h0IGhhdmUgYmVjb21lCi0JCSAqIHN0YWxlIC0tIGV2ZW4gd2hlbiBhbGxfdmlzaWJs ZSBpcyBzZXQKLQkJICovCi0JCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKLQkJewotCQkJ UGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKLQkJfQot Ci0JCS8qCi0JCSAqIFNldCB0aGUgcGFnZSBhbGwtZnJvemVuIChhbmQgYWxsLXZpc2libGUpIGlu IHRoZSBWTS4KLQkJICoKLQkJICogV2UgY2FuIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMg b3VyIGN1dG9mZl94aWQsIHNpbmNlIGEKLQkJICogc25hcHNob3RDb25mbGljdEhvcml6b24gc3Vm ZmljaWVudCB0byBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETwotCQkgKiB3YXMgbG9nZ2Vk IHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZSBmcm96ZW4uCi0JCSAqLwotCQlBc3NlcnQoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOwotCQlvbGRf dm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCi0JCQkJ CQkJCQkgICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBJbnZhbGlk VHJhbnNhY3Rpb25JZCwKLQkJCQkJCQkJCSAgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAot CQkJCQkJCQkJICAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKLQotCQkvKgotCQkgKiBUaGUg cGFnZSB3YXMgbGlrZWx5IGFscmVhZHkgc2V0IGFsbC12aXNpYmxlIGluIHRoZSBWTS4gSG93ZXZl ciwKLQkJICogdGhlcmUgaXMgYSBzbWFsbCBjaGFuY2UgdGhhdCBpdCB3YXMgbW9kaWZpZWQgc29t ZXRpbWUgYmV0d2VlbgotCQkgKiBzZXR0aW5nIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBh bmQgY2hlY2tpbmcgdGhlIHZpc2liaWxpdHkKLQkJICogZHVyaW5nIHBydW5pbmcuIENoZWNrIHRo ZSByZXR1cm4gdmFsdWUgb2Ygb2xkX3ZtYml0cyBhbnl3YXkgdG8KLQkJICogZW5zdXJlIHRoZSB2 aXNpYmlsaXR5IG1hcCBjb3VudGVycyB1c2VkIGZvciBsb2dnaW5nIGFyZSBhY2N1cmF0ZS4KLQkJ ICovCi0JCWlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDAp Ci0JCXsKLQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJCXZhY3JlbC0+dm1f bmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwot CQl9Ci0KLQkJLyoKLQkJICogV2UgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIHBhZ2Ugd2FzIG5v dCBzZXQgYWxsLWZyb3plbiBpbiB0aGUgVk0KLQkJICogYWJvdmUsIHNvIHdlIGRvbid0IG5lZWQg dG8gdGVzdCB0aGUgdmFsdWUgb2Ygb2xkX3ZtYml0cy4KLQkJICovCi0JCWVsc2UKLQkJewotCQkJ dmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVl OwotCQl9Ci0JfQotCiAJcmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7CiB9CiAKLS0gCjIuNDMuMAoK --000000000000857fc406462f10e4 Content-Type: text/x-patch; charset="US-ASCII"; name="v28-0002-Eliminate-use-of-cached-VM-value-in-lazy_scan_pr.patch" Content-Disposition: attachment; filename="v28-0002-Eliminate-use-of-cached-VM-value-in-lazy_scan_pr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjapcn2a1 RnJvbSAwZGFjNzA2MGFlMGVkZGMyNjE3YTE5MTkxNTA3NTdhN2U2MzkyNGYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDExIERlYyAyMDI1IDEwOjQ4OjEzIC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MjggMDIvMTVdIEVsaW1pbmF0ZSB1c2Ugb2YgY2FjaGVkIFZNIHZhbHVlIGluCiBsYXp5 X3NjYW5fcHJ1bmUoKQoKbGF6eV9zY2FuX3BydW5lKCkgdGFrZXMgYSBwYXJhbWV0ZXIgZnJvbSBs YXp5X3NjYW5faGVhcCgpIGluZGljYXRpbmcKd2hldGhlciB0aGUgcGFnZSB3YXMgbWFya2VkIGFs bC12aXNpYmxlIGluIHRoZSBWTSBhdCB0aGUgdGltZSBpdCB3YXMKbGFzdCBjaGVja2VkIGluIGZp bmRfbmV4dF91bnNraXBwYWJsZV9ibG9jaygpLiBUaGlzIGJlaGF2aW9yIGlzCmhpc3RvcmljYWws IGRhdGluZyBiYWNrIHRvIGNvbW1pdCA2MDgxOTVhM2EzNjUsIHdoZW4gd2UgZGlkIG5vdCBwaW4g dGhlClZNIHBhZ2UgdW50aWwgY29uZmlybWluZyBpdCB3YXMgbm90IGFsbC12aXNpYmxlLiBOb3cg dGhhdCB0aGUgVk0gcGFnZSBpcwphbHJlYWR5IHBpbm5lZCwgdGhlcmUgaXMgbm8gbWVhbmluZ2Z1 bCBiZW5lZml0IHRvIHJlbHlpbmcgb24gYSBjYWNoZWQgVk0Kc3RhdHVzLgoKUmVtb3ZpbmcgdGhp cyBjYWNoZWQgdmFsdWUgc2ltcGxpZmllcyB0aGUgbG9naWMgaW4gYm90aCBsYXp5X3NjYW5faGVh cCgpCmFuZCBsYXp5X3NjYW5fcHJ1bmUoKS4gSXQgYWxzbyBjbGFyaWZpZXMgZnV0dXJlIHdvcmsg dGhhdCB3aWxsIHNldCB0aGUKdmlzaWJpbGl0eSBtYXAgb24tYWNjZXNzOiBzdWNoIHBhdGhzIHdp bGwgbm90IGhhdmUgYSBjYWNoZWQgdmFsdWUKYXZhaWxhYmxlIHdoaWNoIHdvdWxkIG1ha2UgdGhl IGxvZ2ljIGhhcmRlciB0byByZWFzb24gYWJvdXQuIEVsaW1pbmF0aW5nCml0IGFsc28gZW5hYmxl cyB1cyB0byBkZXRlY3QgYW5kIHJlcGFpciBWTSBjb3JydXB0aW9uIG9uLWFjY2Vzcy4KCkFsb25n IHdpdGggcmVtb3ZpbmcgdGhlIGNhY2hlZCB2YWx1ZSBhbmQgdW5jb25kaXRpb25hbGx5IGNoZWNr aW5nIHRoZQp2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVhcCBwYWdlLCB0aGlzIGNvbW1pdCBh bHNvIG1vdmVzIHRoZSBWTQpjb3JydXB0aW9uIGhhbmRsaW5nIHRvIG9jY3VyIGZpcnN0LiBUaGlz IHJlb3JkZXJpbmcgc2hvdWxkIGhhdmUgbm8KcGVyZm9ybWFuY2UgaW1wYWN0LCBzaW5jZSB0aGUg Y2hlY2tzIGFyZSBpbmV4cGVuc2l2ZSBhbmQgcGVyZm9ybWVkIG9ubHkKb25jZSBwZXIgcGFnZS4g SXQgZG9lcywgaG93ZXZlciwgbWFrZSB0aGUgY29udHJvbCBmbG93IGVhc2llciB0bwp1bmRlcnN0 YW5kLiBUaGUgbmV3IHJlc3RydWN0dXJpbmcgYWxzbyBtYWtlcyBpdCBwb3NzaWJsZSB0aGF0IGFm dGVyCmZpeGluZyBjb3JydXB0aW9uLCB0aGUgVk0gY291bGQgYmUgbmV3bHkgc2V0LCBpZiBwcnVu aW5nIGZvdW5kIHRoZSBwYWdlCmFsbC12aXNpYmxlLgoKQXV0aG9yOiBNZWxhbmllIFBsYWdlbWFu IDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tLzVDRUFBMTYyLTY3QjEtNDREQS1CNjBELThCNjU3MTdFOEIwNSU0MGdtYWlsLmNvbQotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDE3OCArKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspLCA5OSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggY2VjYmEyMTQ2 ZWEuLjlkMjUyM2E1NWIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0y NDgsMTMgKzI0OCw2IEBAIHR5cGVkZWYgZW51bQogICovCiAjZGVmaW5lIEVBR0VSX1NDQU5fUkVH SU9OX1NJWkUgNDA5NgogCi0vKgotICogaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgc2V0cyB0 aGVzZSBmbGFncyB0byBjb21tdW5pY2F0ZSBpbmZvcm1hdGlvbgotICogYWJvdXQgdGhlIGJsb2Nr IGl0IHJlYWQgdG8gdGhlIGNhbGxlci4KLSAqLwotI2RlZmluZSBWQUNfQkxLX1dBU19FQUdFUl9T Q0FOTkVEICgxIDw8IDApCi0jZGVmaW5lIFZBQ19CTEtfQUxMX1ZJU0lCTEVfQUNDT1JESU5HX1RP X1ZNICgxIDw8IDEpCi0KIHR5cGVkZWYgc3RydWN0IExWUmVsU3RhdGUKIHsKIAkvKiBUYXJnZXQg aGVhcCByZWxhdGlvbiBhbmQgaXRzIGluZGV4ZXMgKi8KQEAgLTM1OCw3ICszNTEsNiBAQCB0eXBl ZGVmIHN0cnVjdCBMVlJlbFN0YXRlCiAJLyogU3RhdGUgbWFpbnRhaW5lZCBieSBoZWFwX3ZhY19z Y2FuX25leHRfYmxvY2soKSAqLwogCUJsb2NrTnVtYmVyIGN1cnJlbnRfYmxvY2s7CS8qIGxhc3Qg YmxvY2sgcmV0dXJuZWQgKi8KIAlCbG9ja051bWJlciBuZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrOyAv KiBuZXh0IHVuc2tpcHBhYmxlIGJsb2NrICovCi0JYm9vbAkJbmV4dF91bnNraXBwYWJsZV9hbGx2 aXM7CS8qIGl0cyB2aXNpYmlsaXR5IHN0YXR1cyAqLwogCWJvb2wJCW5leHRfdW5za2lwcGFibGVf ZWFnZXJfc2Nhbm5lZDsgLyogaWYgaXQgd2FzIGVhZ2VybHkgc2Nhbm5lZCAqLwogCUJ1ZmZlcgkJ bmV4dF91bnNraXBwYWJsZV92bWJ1ZmZlcjsJLyogYnVmZmVyIGNvbnRhaW5pbmcgaXRzIFZNIGJp dCAqLwogCkBAIC00MzIsNyArNDI0LDcgQEAgc3RhdGljIGJvb2wgbGF6eV9zY2FuX25ld19vcl9l bXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJCSAgIGJvb2wgc2hh cmVsb2NrLCBCdWZmZXIgdm1idWZmZXIpOwogc3RhdGljIGludAlsYXp5X3NjYW5fcHJ1bmUoTFZS ZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCUJsb2NrTnVtYmVyIGJsa25vLCBQ YWdlIHBhZ2UsCi0JCQkJCQkJQnVmZmVyIHZtYnVmZmVyLCBib29sIGFsbF92aXNpYmxlX2FjY29y ZGluZ190b192bSwKKwkJCQkJCQlCdWZmZXIgdm1idWZmZXIsCiAJCQkJCQkJYm9vbCAqaGFzX2xw ZGVhZF9pdGVtcywgYm9vbCAqdm1fcGFnZV9mcm96ZW4pOwogc3RhdGljIGJvb2wgbGF6eV9zY2Fu X25vcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCSAgQmxvY2tO dW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKQEAgLTEyNDgsNyArMTI0MCw2IEBAIGxhenlfc2Nhbl9o ZWFwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkvKiBJbml0aWFsaXplIGZvciB0aGUgZmlyc3QgaGVh cF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCAqLwogCXZhY3JlbC0+Y3VycmVudF9ibG9jayA9 IEludmFsaWRCbG9ja051bWJlcjsKIAl2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfYmxvY2sgPSBJ bnZhbGlkQmxvY2tOdW1iZXI7Ci0JdmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX2FsbHZpcyA9IGZh bHNlOwogCXZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV9lYWdlcl9zY2FubmVkID0gZmFsc2U7CiAJ dmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX3ZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIApAQCAt MTI2NCwxMyArMTI1NSwxMyBAQCBsYXp5X3NjYW5faGVhcChMVlJlbFN0YXRlICp2YWNyZWwpCiAJ CQkJCQkJCQkJTUFJTl9GT1JLTlVNLAogCQkJCQkJCQkJCWhlYXBfdmFjX3NjYW5fbmV4dF9ibG9j aywKIAkJCQkJCQkJCQl2YWNyZWwsCi0JCQkJCQkJCQkJc2l6ZW9mKHVpbnQ4KSk7CisJCQkJCQkJ CQkJc2l6ZW9mKGJvb2wpKTsKIAogCXdoaWxlICh0cnVlKQogCXsKIAkJQnVmZmVyCQlidWY7CiAJ CVBhZ2UJCXBhZ2U7Ci0JCXVpbnQ4CQlibGtfaW5mbyA9IDA7CisJCWJvb2wJCXdhc19lYWdlcl9z Y2FubmVkID0gZmFsc2U7CiAJCWludAkJCW5kZWxldGVkID0gMDsKIAkJYm9vbAkJaGFzX2xwZGVh ZF9pdGVtczsKIAkJdm9pZAkgICAqcGVyX2J1ZmZlcl9kYXRhID0gTlVMTDsKQEAgLTEzMzksMTMg KzEzMzAsMTMgQEAgbGF6eV9zY2FuX2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQlpZiAoIUJ1 ZmZlcklzVmFsaWQoYnVmKSkKIAkJCWJyZWFrOwogCi0JCWJsa19pbmZvID0gKigodWludDggKikg cGVyX2J1ZmZlcl9kYXRhKTsKKwkJd2FzX2VhZ2VyX3NjYW5uZWQgPSAqKChib29sICopIHBlcl9i dWZmZXJfZGF0YSk7CiAJCUNoZWNrQnVmZmVySXNQaW5uZWRPbmNlKGJ1Zik7CiAJCXBhZ2UgPSBC dWZmZXJHZXRQYWdlKGJ1Zik7CiAJCWJsa25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmKTsK IAogCQl2YWNyZWwtPnNjYW5uZWRfcGFnZXMrKzsKLQkJaWYgKGJsa19pbmZvICYgVkFDX0JMS19X QVNfRUFHRVJfU0NBTk5FRCkKKwkJaWYgKHdhc19lYWdlcl9zY2FubmVkKQogCQkJdmFjcmVsLT5l YWdlcl9zY2FubmVkX3BhZ2VzKys7CiAKIAkJLyogUmVwb3J0IGFzIGJsb2NrIHNjYW5uZWQsIHVw ZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24gKi8KQEAgLTE0MTYsNyArMTQwNyw2IEBA IGxhenlfc2Nhbl9oZWFwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJaWYgKGdvdF9jbGVhbnVwX2xv Y2spCiAJCQluZGVsZXRlZCA9IGxhenlfc2Nhbl9wcnVuZSh2YWNyZWwsIGJ1ZiwgYmxrbm8sIHBh Z2UsCiAJCQkJCQkJCQkgICB2bWJ1ZmZlciwKLQkJCQkJCQkJCSAgIGJsa19pbmZvICYgVkFDX0JM S19BTExfVklTSUJMRV9BQ0NPUkRJTkdfVE9fVk0sCiAJCQkJCQkJCQkgICAmaGFzX2xwZGVhZF9p dGVtcywgJnZtX3BhZ2VfZnJvemVuKTsKIAogCQkvKgpAQCAtMTQzMyw4ICsxNDIzLDcgQEAgbGF6 eV9zY2FuX2hlYXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQkgKiBleGNsdWRlIHBhZ2VzIHNraXBw ZWQgZHVlIHRvIGNsZWFudXAgbG9jayBjb250ZW50aW9uIGZyb20gZWFnZXIKIAkJICogZnJlZXpl IGFsZ29yaXRobSBjYXBzLgogCQkgKi8KLQkJaWYgKGdvdF9jbGVhbnVwX2xvY2sgJiYKLQkJCShi bGtfaW5mbyAmIFZBQ19CTEtfV0FTX0VBR0VSX1NDQU5ORUQpKQorCQlpZiAoZ290X2NsZWFudXBf bG9jayAmJiB3YXNfZWFnZXJfc2Nhbm5lZCkKIAkJewogCQkJLyogQWdncmVzc2l2ZSB2YWN1dW1z IGRvIG5vdCBlYWdlciBzY2FuLiAqLwogCQkJQXNzZXJ0KCF2YWNyZWwtPmFnZ3Jlc3NpdmUpOwpA QCAtMTYwMSw3ICsxNTkwLDYgQEAgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKFJlYWRTdHJlYW0g KnN0cmVhbSwKIHsKIAlCbG9ja051bWJlciBuZXh0X2Jsb2NrOwogCUxWUmVsU3RhdGUgKnZhY3Jl bCA9IGNhbGxiYWNrX3ByaXZhdGVfZGF0YTsKLQl1aW50OAkJYmxrX2luZm8gPSAwOwogCiAJLyog cmVsaWVzIG9uIEludmFsaWRCbG9ja051bWJlciArIDEgb3ZlcmZsb3dpbmcgdG8gMCBvbiBmaXJz dCBjYWxsICovCiAJbmV4dF9ibG9jayA9IHZhY3JlbC0+Y3VycmVudF9ibG9jayArIDE7CkBAIC0x NjY0LDggKzE2NTIsOCBAQCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soUmVhZFN0cmVhbSAqc3Ry ZWFtLAogCQkgKiBvdGhlcndpc2UgdGhleSB3b3VsZCd2ZSBiZWVuIHVuc2tpcHBhYmxlLgogCQkg Ki8KIAkJdmFjcmVsLT5jdXJyZW50X2Jsb2NrID0gbmV4dF9ibG9jazsKLQkJYmxrX2luZm8gfD0g VkFDX0JMS19BTExfVklTSUJMRV9BQ0NPUkRJTkdfVE9fVk07Ci0JCSooKHVpbnQ4ICopIHBlcl9i dWZmZXJfZGF0YSkgPSBibGtfaW5mbzsKKwkJLyogQmxvY2sgd2FzIG5vdCBlYWdlciBzY2FubmVk ICovCisJCSooKGJvb2wgKikgcGVyX2J1ZmZlcl9kYXRhKSA9IGZhbHNlOwogCQlyZXR1cm4gdmFj cmVsLT5jdXJyZW50X2Jsb2NrOwogCX0KIAllbHNlCkBAIC0xNjc3LDExICsxNjY1LDcgQEAgaGVh cF92YWNfc2Nhbl9uZXh0X2Jsb2NrKFJlYWRTdHJlYW0gKnN0cmVhbSwKIAkJQXNzZXJ0KG5leHRf YmxvY2sgPT0gdmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKTsKIAogCQl2YWNyZWwtPmN1 cnJlbnRfYmxvY2sgPSBuZXh0X2Jsb2NrOwotCQlpZiAodmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxl X2FsbHZpcykKLQkJCWJsa19pbmZvIHw9IFZBQ19CTEtfQUxMX1ZJU0lCTEVfQUNDT1JESU5HX1RP X1ZNOwotCQlpZiAodmFjcmVsLT5uZXh0X3Vuc2tpcHBhYmxlX2VhZ2VyX3NjYW5uZWQpCi0JCQli bGtfaW5mbyB8PSBWQUNfQkxLX1dBU19FQUdFUl9TQ0FOTkVEOwotCQkqKCh1aW50OCAqKSBwZXJf YnVmZmVyX2RhdGEpID0gYmxrX2luZm87CisJCSooKGJvb2wgKikgcGVyX2J1ZmZlcl9kYXRhKSA9 IHZhY3JlbC0+bmV4dF91bnNraXBwYWJsZV9lYWdlcl9zY2FubmVkOwogCQlyZXR1cm4gdmFjcmVs LT5jdXJyZW50X2Jsb2NrOwogCX0KIH0KQEAgLTE3MDYsNyArMTY5MCw2IEBAIGZpbmRfbmV4dF91 bnNraXBwYWJsZV9ibG9jayhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKQog CUJsb2NrTnVtYmVyIG5leHRfdW5za2lwcGFibGVfYmxvY2sgPSB2YWNyZWwtPm5leHRfdW5za2lw cGFibGVfYmxvY2sgKyAxOwogCUJ1ZmZlcgkJbmV4dF91bnNraXBwYWJsZV92bWJ1ZmZlciA9IHZh Y3JlbC0+bmV4dF91bnNraXBwYWJsZV92bWJ1ZmZlcjsKIAlib29sCQluZXh0X3Vuc2tpcHBhYmxl X2VhZ2VyX3NjYW5uZWQgPSBmYWxzZTsKLQlib29sCQluZXh0X3Vuc2tpcHBhYmxlX2FsbHZpczsK IAogCSpza2lwc2FsbHZpcyA9IGZhbHNlOwogCkBAIC0xNzE2LDcgKzE2OTksNiBAQCBmaW5kX25l eHRfdW5za2lwcGFibGVfYmxvY2soTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29sICpza2lwc2FsbHZp cykKIAkJCQkJCQkJCQkJCQkgICBuZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrLAogCQkJCQkJCQkJCQkJ CSAgICZuZXh0X3Vuc2tpcHBhYmxlX3ZtYnVmZmVyKTsKIAotCQluZXh0X3Vuc2tpcHBhYmxlX2Fs bHZpcyA9IChtYXBiaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgIT0gMDsKIAogCQkv KgogCQkgKiBBdCB0aGUgc3RhcnQgb2YgZWFjaCBlYWdlciBzY2FuIHJlZ2lvbiwgbm9ybWFsIHZh Y3V1bXMgd2l0aCBlYWdlcgpAQCAtMTczNSw3ICsxNzE3LDcgQEAgZmluZF9uZXh0X3Vuc2tpcHBh YmxlX2Jsb2NrKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2aXMpCiAJCSAqIEEg YmxvY2sgaXMgdW5za2lwcGFibGUgaWYgaXQgaXMgbm90IGFsbCB2aXNpYmxlIGFjY29yZGluZyB0 byB0aGUKIAkJICogdmlzaWJpbGl0eSBtYXAuCiAJCSAqLwotCQlpZiAoIW5leHRfdW5za2lwcGFi bGVfYWxsdmlzKQorCQlpZiAoKG1hcGJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSA9 PSAwKQogCQl7CiAJCQlBc3NlcnQoKG1hcGJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4p ID09IDApOwogCQkJYnJlYWs7CkBAIC0xNzkyLDcgKzE3NzQsNiBAQCBmaW5kX25leHRfdW5za2lw cGFibGVfYmxvY2soTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29sICpza2lwc2FsbHZpcykKIAogCS8q IHdyaXRlIHRoZSBsb2NhbCB2YXJpYWJsZXMgYmFjayB0byB2YWNyZWwgKi8KIAl2YWNyZWwtPm5l eHRfdW5za2lwcGFibGVfYmxvY2sgPSBuZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrOwotCXZhY3JlbC0+ bmV4dF91bnNraXBwYWJsZV9hbGx2aXMgPSBuZXh0X3Vuc2tpcHBhYmxlX2FsbHZpczsKIAl2YWNy ZWwtPm5leHRfdW5za2lwcGFibGVfZWFnZXJfc2Nhbm5lZCA9IG5leHRfdW5za2lwcGFibGVfZWFn ZXJfc2Nhbm5lZDsKIAl2YWNyZWwtPm5leHRfdW5za2lwcGFibGVfdm1idWZmZXIgPSBuZXh0X3Vu c2tpcHBhYmxlX3ZtYnVmZmVyOwogfQpAQCAtMTk1Myw5ICsxOTM0LDcgQEAgY21wT2Zmc2V0TnVt YmVycyhjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogICogQ2FsbGVyIG11c3QgaG9sZCBw aW4gYW5kIGJ1ZmZlciBjbGVhbnVwIGxvY2sgb24gdGhlIGJ1ZmZlci4KICAqCiAgKiB2bWJ1ZmZl ciBpcyB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIFZNIGJsb2NrIHdpdGggdmlzaWJpbGl0eSBp bmZvcm1hdGlvbgotICogZm9yIHRoZSBoZWFwIGJsb2NrLCBibGtuby4gYWxsX3Zpc2libGVfYWNj b3JkaW5nX3RvX3ZtIGlzIHRoZSBzYXZlZAotICogdmlzaWJpbGl0eSBzdGF0dXMgb2YgdGhlIGhl YXAgYmxvY2sgbG9va2VkIHVwIGVhcmxpZXIgYnkgdGhlIGNhbGxlci4gV2UKLSAqIHdvbid0IHJl bHkgZW50aXJlbHkgb24gdGhpcyBzdGF0dXMsIGFzIGl0IG1heSBiZSBvdXQgb2YgZGF0ZS4KKyAq IGZvciB0aGUgaGVhcCBibG9jaywgYmxrbm8uCiAgKgogICogKmhhc19scGRlYWRfaXRlbXMgaXMg c2V0IHRvIHRydWUgb3IgZmFsc2UgZGVwZW5kaW5nIG9uIHdoZXRoZXIsIHVwb24gcmV0dXJuCiAg KiBmcm9tIHRoaXMgZnVuY3Rpb24sIGFueSBMUF9ERUFEIGl0ZW1zIGFyZSBzdGlsbCBwcmVzZW50 IG9uIHRoZSBwYWdlLgpAQCAtMTk3Miw3ICsxOTUxLDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVs U3RhdGUgKnZhY3JlbCwKIAkJCQlCbG9ja051bWJlciBibGtubywKIAkJCQlQYWdlIHBhZ2UsCiAJ CQkJQnVmZmVyIHZtYnVmZmVyLAotCQkJCWJvb2wgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3Zt LAogCQkJCWJvb2wgKmhhc19scGRlYWRfaXRlbXMsCiAJCQkJYm9vbCAqdm1fcGFnZV9mcm96ZW4p CiB7CkBAIC0xOTg2LDYgKzE5NjQsOCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFj cmVsLAogCQkudmlzdGVzdCA9IHZhY3JlbC0+dmlzdGVzdCwKIAkJLmN1dG9mZnMgPSAmdmFjcmVs LT5jdXRvZmZzLAogCX07CisJdWludDgJCW9sZF92bWJpdHMgPSAwOworCXVpbnQ4CQluZXdfdm1i aXRzID0gMDsKIAogCUFzc2VydChCdWZmZXJHZXRCbG9ja051bWJlcihidWYpID09IGJsa25vKTsK IApAQCAtMjA4OCw3MCArMjA2OCw3IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNy ZWwsCiAJQXNzZXJ0KCFwcmVzdWx0LmFsbF92aXNpYmxlIHx8ICEoKmhhc19scGRlYWRfaXRlbXMp KTsKIAlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fCBwcmVzdWx0LmFsbF92aXNpYmxlKTsK IAotCS8qCi0JICogSGFuZGxlIHNldHRpbmcgdmlzaWJpbGl0eSBtYXAgYml0IGJhc2VkIG9uIGlu Zm9ybWF0aW9uIGZyb20gdGhlIFZNIChhcwotCSAqIG9mIGxhc3QgaGVhcF92YWNfc2Nhbl9uZXh0 X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9tIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4g dmFyaWFibGVzCi0JICovCi0JaWYgKChwcmVzdWx0LmFsbF92aXNpYmxlICYmICFhbGxfdmlzaWJs ZV9hY2NvcmRpbmdfdG9fdm0pIHx8Ci0JCShwcmVzdWx0LmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9G Uk9aRU4ocmVsLCBibGtubywgJnZtYnVmZmVyKSkpCi0JewotCQl1aW50OAkJb2xkX3ZtYml0czsK LQkJdWludDgJCWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKLQotCQlpZiAocHJl c3VsdC5hbGxfZnJvemVuKQotCQkJZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOwot Ci0JCS8qCi0JCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0IHRoZSB2aXNpYmls aXR5IG1hcCBwYWdlIGlzIHNldAotCQkgKiB3aGlsZSB0aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xl YXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZgotCQkgKiBjaGVja3N1bXMgYXJlIG5v dCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMgc28gdGhhdCB3ZQotCQkgKiBn ZXQgYmFjayBpbiBzeW5jLgotCQkgKgotCQkgKiBFdmVuIGlmIFBEX0FMTF9WSVNJQkxFIGlzIGFs cmVhZHkgc2V0LCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0Ci0JCSAqIHVubmVjZXNzYXJp bHkgZGlydHlpbmcgdGhlIGhlYXAgYnVmZmVyLiBOZWFybHkgdGhlIG9ubHkgc2NlbmFyaW8KLQkJ ICogd2hlcmUgUERfQUxMX1ZJU0lCTEUgaXMgc2V0IGJ1dCB0aGUgVk0gaXMgbm90IGlzIGlmIHRo ZSBWTSB3YXMKLQkJICogcmVtb3ZlZCAtLSBhbmQgdGhhdCBpc24ndCB3b3J0aCBvcHRpbWl6aW5n IGZvci4gQW5kIGlmIHdlIGFkZCB0aGUKLQkJICogaGVhcCBidWZmZXIgdG8gdGhlIFdBTCBjaGFp biAod2l0aG91dCBwYXNzaW5nIFJFR0JVRl9OT19DSEFOR0VTKSwKLQkJICogaXQgbXVzdCBiZSBt YXJrZWQgZGlydHkuCi0JCSAqLwotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJTWFya0J1 ZmZlckRpcnR5KGJ1Zik7Ci0KLQkJLyoKLQkJICogSWYgdGhlIHBhZ2UgaXMgYmVpbmcgc2V0IGFs bC1mcm96ZW4sIHdlIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQKLQkJICogYXMgdGhlIGN1dG9m Zl94aWQsIHNpbmNlIGEgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBzdWZmaWNpZW50IHRvCi0J CSAqIG1ha2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFn ZSdzIHR1cGxlcwotCQkgKiB3ZXJlIGZyb3plbi4KLQkJICovCi0JCUFzc2VydCghcHJlc3VsdC5h bGxfZnJvemVuIHx8Ci0JCQkgICAhVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9jb25m bGljdF9ob3Jpem9uKSk7Ci0KLQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHZhY3Jl bC0+cmVsLCBibGtubywgYnVmLAotCQkJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJ CQkJCQkgICB2bWJ1ZmZlciwgcHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uLAotCQkJCQkJCQkJ ICAgZmxhZ3MpOwotCi0JCS8qCi0JCSAqIElmIHRoZSBwYWdlIHdhc24ndCBhbHJlYWR5IHNldCBh bGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbiBpbiB0aGUKLQkJICogVk0sIGNvdW50IGl0IGFz IG5ld2x5IHNldCBmb3IgbG9nZ2luZy4KLQkJICovCi0JCWlmICgob2xkX3ZtYml0cyAmIFZJU0lC SUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCi0JCXsKLQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2li bGVfcGFnZXMrKzsKLQkJCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0JCQl7Ci0JCQkJdmFjcmVs LT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKLQkJCQkqdm1fcGFnZV9mcm96ZW4gPSB0 cnVlOwotCQkJfQotCQl9Ci0JCWVsc2UgaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9B TExfRlJPWkVOKSA9PSAwICYmCi0JCQkJIHByZXN1bHQuYWxsX2Zyb3plbikKLQkJewotCQkJdmFj cmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwot CQl9Ci0JfQorCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXModmFjcmVsLT5y ZWwsIGJsa25vLCAmdm1idWZmZXIpOwogCiAJLyoKIAkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwg dGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQpAQCAtMjE1 OSw4ICsyMDc2LDggQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkgKiBj bGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdl IG11c3QgcmVjaGVjawogCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhh dCB0aGUgVk0gaXMgY29ycnVwdC4KIAkgKi8KLQllbHNlIGlmIChhbGxfdmlzaWJsZV9hY2NvcmRp bmdfdG9fdm0gJiYgIVBhZ2VJc0FsbFZpc2libGUocGFnZSkgJiYKLQkJCSB2aXNpYmlsaXR5bWFw X2dldF9zdGF0dXModmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpICE9IDApCisJaWYgKCFQ YWdlSXNBbGxWaXNpYmxlKHBhZ2UpICYmCisJCShvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9B TExfVklTSUJMRSkgIT0gMCkKIAl7CiAJCWVyZXBvcnQoV0FSTklORywKIAkJCQkoZXJyY29kZShF UlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKQEAgLTIxOTgsNiArMjExNSw2OSBAQCBsYXp5X3NjYW5f cHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklU Uyk7CiAJfQogCisJaWYgKCFwcmVzdWx0LmFsbF92aXNpYmxlKQorCQlyZXR1cm4gcHJlc3VsdC5u ZGVsZXRlZDsKKworCS8qIFNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIHBhZ2UgdmlzaWJpbGl0 eSBoaW50ICovCisJbmV3X3ZtYml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisKKwlp ZiAocHJlc3VsdC5hbGxfZnJvemVuKQorCQluZXdfdm1iaXRzIHw9IFZJU0lCSUxJVFlNQVBfQUxM X0ZST1pFTjsKKworCS8qIE5vdGhpbmcgdG8gZG8gKi8KKwlpZiAob2xkX3ZtYml0cyA9PSBuZXdf dm1iaXRzKQorCQlyZXR1cm4gcHJlc3VsdC5uZGVsZXRlZDsKKworCUFzc2VydChwcmVzdWx0LmFs bF92aXNpYmxlKTsKKworCS8qCisJICogSXQgc2hvdWxkIG5ldmVyIGJlIHRoZSBjYXNlIHRoYXQg dGhlIHZpc2liaWxpdHkgbWFwIHBhZ2UgaXMgc2V0IHdoaWxlCisJICogdGhlIHBhZ2UtbGV2ZWwg Yml0IGlzIGNsZWFyLCBidXQgdGhlIHJldmVyc2UgaXMgYWxsb3dlZCAoaWYgY2hlY2tzdW1zCisJ ICogYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMgc28gdGhhdCB3 ZSBnZXQgYmFjayBpbgorCSAqIHN5bmMuCisJICoKKwkgKiBFdmVuIGlmIFBEX0FMTF9WSVNJQkxF IGlzIGFscmVhZHkgc2V0LCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0CisJICogdW5uZWNl c3NhcmlseSBkaXJ0eWluZyB0aGUgaGVhcCBidWZmZXIuIE5lYXJseSB0aGUgb25seSBzY2VuYXJp byB3aGVyZQorCSAqIFBEX0FMTF9WSVNJQkxFIGlzIHNldCBidXQgdGhlIFZNIGlzIG5vdCBpcyBp ZiB0aGUgVk0gd2FzIHJlbW92ZWQgLS0gYW5kCisJICogdGhhdCBpc24ndCB3b3J0aCBvcHRpbWl6 aW5nIGZvci4gQW5kIGlmIHdlIGFkZCB0aGUgaGVhcCBidWZmZXIgdG8gdGhlCisJICogV0FMIGNo YWluICh3aXRob3V0IHBhc3NpbmcgUkVHQlVGX05PX0NIQU5HRVMpLCBpdCBtdXN0IGJlIG1hcmtl ZCBkaXJ0eS4KKwkgKi8KKwlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwlNYXJrQnVmZmVyRGly dHkoYnVmKTsKKworCS8qCisJICogSWYgdGhlIHBhZ2UgaXMgYmVpbmcgc2V0IGFsbC1mcm96ZW4s IHdlIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMKKwkgKiB0aGUgY3V0b2ZmX3hpZCwgc2lu Y2UgYSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIHN1ZmZpY2llbnQgdG8gbWFrZQorCSAqIGV2 ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMg d2VyZSBmcm96ZW4uCisJICovCisJQXNzZXJ0KCFwcmVzdWx0LmFsbF9mcm96ZW4gfHwKKwkJICAg IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOworCisJ dmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCisJCQkJCSAgSW52YWxp ZFhMb2dSZWNQdHIsCisJCQkJCSAgdm1idWZmZXIsIHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpv biwKKwkJCQkJICBuZXdfdm1iaXRzKTsKKworCS8qCisJICogSWYgdGhlIHBhZ2Ugd2Fzbid0IGFs cmVhZHkgc2V0IGFsbC12aXNpYmxlIGFuZC9vciBhbGwtZnJvemVuIGluIHRoZSBWTSwKKwkgKiBj b3VudCBpdCBhcyBuZXdseSBzZXQgZm9yIGxvZ2dpbmcuCisJICovCisJaWYgKChvbGRfdm1iaXRz ICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCkKKwl7CisJCXZhY3JlbC0+dm1fbmV3 X3Zpc2libGVfcGFnZXMrKzsKKwkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKKwkJeworCQkJdmFj cmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKKwkJCSp2bV9wYWdlX2Zyb3plbiA9 IHRydWU7CisJCX0KKwl9CisJZWxzZSBpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU4pID09IDAgJiYKKwkJCSBwcmVzdWx0LmFsbF9mcm96ZW4pCisJeworCQl2YWNyZWwt PnZtX25ld19mcm96ZW5fcGFnZXMrKzsKKwkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKKwl9CisK IAlyZXR1cm4gcHJlc3VsdC5uZGVsZXRlZDsKIH0KIAotLSAKMi40My4wCgo= --000000000000857fc406462f10e4 Content-Type: text/x-patch; charset="US-ASCII"; name="v28-0003-Refactor-lazy_scan_prune-VM-clear-logic-into-hel.patch" Content-Disposition: attachment; filename="v28-0003-Refactor-lazy_scan_prune-VM-clear-logic-into-hel.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjapcryx2 RnJvbSBjMjM4NDBhMTJmZjE0ZWVmZmI1MTE2YzJjZmQzNGUzNGUzOTg3YjAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTM6MzY6MzkgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyOCAwMy8xNV0gUmVmYWN0b3IgbGF6eV9zY2FuX3BydW5lKCkgVk0gY2xlYXIgbG9naWMg aW50bwogaGVscGVyCgpFbmNhcHN1bGF0aW5nIHRoZW0gaW4gYSBoZWxwZXIgbWFrZXMgdGhlIHdo b2xlIGZ1bmN0aW9uIGNsZWFyZXIuIFRoZXJlCmlzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlIG90aGVy IHRoYW4gbW92aW5nIGl0IGludG8gYSBoZWxwZXIuCgpSZXZpZXdlZC1ieTogS2lyaWxsIFJlc2hr ZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMgfCAxMjIgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCmluZGV4IDlkMjUyM2E1NWIyLi5mZjM0YTk5ZWRiZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDIyLDYgKzQyMiwxMSBAQCBzdGF0aWMgdm9p ZCBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2soTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29sICpz a2lwc2FsbHZpcyk7CiBzdGF0aWMgYm9vbCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3Rh dGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkJICAgQmxvY2tOdW1iZXIgYmxrbm8sIFBh Z2UgcGFnZSwKIAkJCQkJCQkJICAgYm9vbCBzaGFyZWxvY2ssIEJ1ZmZlciB2bWJ1ZmZlcik7Citz dGF0aWMgdm9pZCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsLCBC dWZmZXIgaGVhcF9idWZmZXIsCisJCQkJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIFBh Z2UgaGVhcF9wYWdlLAorCQkJCQkJCQkJCSAgIGludCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCQkJ CSAgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCQkJCQkgICB1aW50OCB2bWJpdHMpOwogc3RhdGlj IGludAlsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJ CQkJCUJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJCQkJCQkJQnVmZmVyIHZtYnVmZmVy LApAQCAtMTkyOCw2ICsxOTMzLDc3IEBAIGNtcE9mZnNldE51bWJlcnMoY29uc3Qgdm9pZCAqYSwg Y29uc3Qgdm9pZCAqYikKIAlyZXR1cm4gcGdfY21wX3UxNigqKGNvbnN0IE9mZnNldE51bWJlciAq KSBhLCAqKGNvbnN0IE9mZnNldE51bWJlciAqKSBiKTsKIH0KIAorLyoKKyAqIEhlbHBlciB0byBj b3JyZWN0IGFueSBjb3JydXB0aW9uIGRldGVjdGVkIG9uIGFuIGhlYXAgcGFnZSBhbmQgaXRzCisg KiBjb3JyZXNwb25kaW5nIHZpc2liaWxpdHkgbWFwIHBhZ2UgYWZ0ZXIgcHJ1bmluZyBidXQgYmVm b3JlIHNldHRpbmcgdGhlCisgKiB2aXNpYmlsaXR5IG1hcC4gSXQgZXhhbWluZXMgdGhlIGhlYXAg cGFnZSwgdGhlIGFzc29jaWF0ZWQgVk0gcGFnZSwgYW5kIHRoZQorICogbnVtYmVyIG9mIGRlYWQg aXRlbXMgcHJldmlvdXNseSBpZGVudGlmaWVkLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gbXVzdCBi ZSBjYWxsZWQgd2hpbGUgaG9sZGluZyBhbiBleGNsdXNpdmUgbG9jayBvbiB0aGUgaGVhcAorICog YnVmZmVyLCBhbmQgdGhlIGRlYWQgaXRlbXMgbXVzdCBoYXZlIGJlZW4gZGlzY292ZXJlZCB1bmRl ciB0aGF0IHNhbWUgbG9jay4KKworICogVGhlIHByb3ZpZGVkIHZtYml0cyBtdXN0IHJlZmxlY3Qg dGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIFZNIGJsb2NrCisgKiByZWZlcmVuY2VkIGJ5IHZtYnVm ZmVyLiBBbHRob3VnaCB3ZSBkbyBub3QgaG9sZCBhIGxvY2sgb24gdGhlIFZNIGJ1ZmZlciwgaXQK KyAqIGlzIHBpbm5lZCwgYW5kIHRoZSBoZWFwIGJ1ZmZlciBpcyBleGNsdXNpdmVseSBsb2NrZWQs IGVuc3VyaW5nIHRoYXQgbm8KKyAqIG90aGVyIGJhY2tlbmQgY2FuIHVwZGF0ZSB0aGUgVk0gYml0 cyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgaGVhcCBwYWdlLgorICovCitzdGF0aWMgdm9pZAoraWRl bnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVm ZmVyLAorCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBQYWdlIGhlYXBfcGFnZSwKKwkJ CQkJCQkgICBpbnQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIsCisJ CQkJCQkJICAgdWludDggdm1iaXRzKQoreworCUFzc2VydCh2aXNpYmlsaXR5bWFwX2dldF9zdGF0 dXMocmVsLCBoZWFwX2JsaywgJnZtYnVmZmVyKSA9PSB2bWJpdHMpOworCisJQXNzZXJ0KEJ1ZmZl cklzTG9ja2VkQnlNZUluTW9kZShoZWFwX2J1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKSk7 CisKKwkvKgorCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0 IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCisJICogcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIu ICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBnb3QKKwkgKiBjbGVhcmVkIGFm dGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdlIG11c3QgcmVj aGVjaworCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhhdCB0aGUgVk0g aXMgY29ycnVwdC4KKwkgKi8KKwlpZiAoIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJgor CQkoKHZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9IDApKQorCXsKKwkJZXJl cG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJ CSBlcnJtc2coInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBt YXAgYml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwX2JsaykpKTsKKworCQl2aXNpYmlsaXR5bWFwX2Ns ZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURf QklUUyk7CisJfQorCisJLyoKKwkgKiBJdCdzIHBvc3NpYmxlIGZvciB0aGUgdmFsdWUgcmV0dXJu ZWQgYnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgdG8gbW92ZSBi YWNrd2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3JvbmcgZm9yIHVzIHRvIHNlZSB0dXBsZXMgdGhh dCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKKwkgKiB5ZXQsIHdoaWxlIFBE X0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZlIHhtaW4gdmFsdWUKKwkg KiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2Fj dGlvbklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1lcyByZXR1cm5zIGEgdmFs dWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCisJICogc28gaWYgd2Ugc2VlIHRoYXQgY29u dHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0aGF0IHdlCisJICogdGhp bmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxseSBhcmUsIGFuZCB0aGUK KwkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCisJICoKKwkgKiBUaGVyZSBzaG91 bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQRF9BTExfVklTSUJMRSBz ZXQsCisJICogaG93ZXZlci4KKwkgKi8KKwllbHNlIGlmIChQYWdlSXNBbGxWaXNpYmxlKGhlYXBf cGFnZSkgJiYgbmxwZGVhZF9pdGVtcyA+IDApCisJeworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJIGVycm1zZygicGFnZSBjb250 YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12aXNpYmxlIGluIHJlbGF0aW9u IFwiJXNcIiBwYWdlICV1IiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIGhl YXBfYmxrKSkpOworCisJCVBhZ2VDbGVhckFsbFZpc2libGUoaGVhcF9wYWdlKTsKKwkJTWFya0J1 ZmZlckRpcnR5KGhlYXBfYnVmZmVyKTsKKwkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWwsIGhlYXBf YmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOworCX0KK30K KwogLyoKICAqCWxhenlfc2Nhbl9wcnVuZSgpIC0tIGxhenlfc2Nhbl9oZWFwKCkgcHJ1bmluZyBh bmQgZnJlZXppbmcuCiAgKgpAQCAtMjA3MCw1MCArMjE0Niw4IEBAIGxhenlfc2Nhbl9wcnVuZShM VlJlbFN0YXRlICp2YWNyZWwsCiAKIAlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9nZXRfc3Rh dHVzKHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKTsKIAotCS8qCi0JICogQXMgb2YgUG9z dGdyZVNRTCA5LjIsIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBp ZiB0aGUKLQkgKiBwYWdlLWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2li bGUgdGhhdCB0aGUgYml0IGdvdAotCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0 X2Jsb2NrKCkgd2FzIGNhbGxlZCwgc28gd2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIg bG9jayBiZWZvcmUgY29uY2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgotCSAqLwotCWlm ICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSAmJgotCQkob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlN QVBfQUxMX1ZJU0lCTEUpICE9IDApCi0JewotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNv ZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJIGVycm1zZygicGFnZSBpcyBub3QgbWFy a2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0aW9u IFwiJXNcIiBwYWdlICV1IiwKLQkJCQkJCXZhY3JlbC0+cmVsbmFtZSwgYmxrbm8pKSk7Ci0KLQkJ dmlzaWJpbGl0eW1hcF9jbGVhcih2YWNyZWwtPnJlbCwgYmxrbm8sIHZtYnVmZmVyLAotCQkJCQkJ CVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JfQotCi0JLyoKLQkgKiBJdCdzIHBvc3NpYmxl IGZvciB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKLQkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFu c2FjdGlvbklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90Ci0JICogd3JvbmcgZm9y IHVzIHRvIHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlv bmUKLQkgKiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVh bCBzYWZlIHhtaW4gdmFsdWUKLQkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRl c3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKLQkgKiBjb25zZXJ2YXRpdmUgYW5kIHNv bWV0aW1lcyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCi0JICog c28gaWYgd2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1 cGxlcyB0aGF0IHdlCi0JICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBh Y3R1YWxseSBhcmUsIGFuZCB0aGUKLQkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3Qu Ci0JICoKLQkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ug d2l0aCBQRF9BTExfVklTSUJMRSBzZXQsCi0JICogaG93ZXZlci4KLQkgKi8KLQllbHNlIGlmIChw cmVzdWx0LmxwZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKLQl7Ci0J CWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwK LQkJCQkgZXJybXNnKCJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMg YWxsLXZpc2libGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJCQkJdmFjcmVsLT5y ZWxuYW1lLCBibGtubykpKTsKLQotCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwotCQlNYXJr QnVmZmVyRGlydHkoYnVmKTsKLQkJdmlzaWJpbGl0eW1hcF9jbGVhcih2YWNyZWwtPnJlbCwgYmxr bm8sIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JfQorCWlk ZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbih2YWNyZWwtPnJlbCwgYnVmLCBibGtubywgcGFn ZSwKKwkJCQkJCQkJICAgcHJlc3VsdC5scGRlYWRfaXRlbXMsIHZtYnVmZmVyLCBvbGRfdm1iaXRz KTsKIAogCWlmICghcHJlc3VsdC5hbGxfdmlzaWJsZSkKIAkJcmV0dXJuIHByZXN1bHQubmRlbGV0 ZWQ7Ci0tIAoyLjQzLjAKCg== --000000000000857fc406462f10e4 Content-Type: text/x-patch; charset="US-ASCII"; name="v28-0004-Set-the-VM-in-heap_page_prune_and_freeze.patch" Content-Disposition: attachment; filename="v28-0004-Set-the-VM-in-heap_page_prune_and_freeze.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjapcwtb3 RnJvbSAwMTRhYmI4MzQzOGNmM2EzNjAwZjM0YjEwNjBiY2E0MzBmNTcyMjc1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6MDc6NDIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyOCAwNC8xNV0gU2V0IHRoZSBWTSBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgp CgpUaGlzIGhhcyBubyBpbmRlcGVuZGVudCBiZW5lZml0LiBJdCBpcyBtZWFudCBmb3IgZWFzZSBv ZiByZXZpZXcuIEFzIG9mCnRoaXMgY29tbWl0LCB0aGVyZSBpcyBzdGlsbCBhIHNlcGFyYXRlIFdB TCByZWNvcmQgZW1pdHRlZCBmb3Igc2V0dGluZwp0aGUgVk0gYWZ0ZXIgcHJ1bmluZyBhbmQgZnJl ZXppbmcuIEJ1dCBpdCBpcyBlYXNpZXIgdG8gcmV2aWV3IGlmIG1vdmluZwp0aGUgbG9naWMgaW50 byBwcnVuZWhlYXAuYyBpcyBzZXBhcmF0ZSBmcm9tIHNldHRpbmcgdGhlIFZNIGluIHRoZSBzYW1l CldBTCByZWNvcmQuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwg MzAyICsrKysrKysrKysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jIHwgMTQyICstLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaCAgICAgICAgICB8ICAyMSArKwogMyBmaWxlcyBjaGFuZ2VkLCAyODYgaW5zZXJ0aW9ucygr KSwgMTc5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXgg MDdhYTA4Y2ZlMTQuLjE0ZDQwNDc2YmU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwpAQCAtMTksNyArMTksNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNp bmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIK LSNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCIKKyNpbmNsdWRlICJhY2Nlc3Mv dmlzaWJpbGl0eW1hcC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKQEAgLTQ0LDYg KzQ0LDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAlib29sCQltYXJrX3VudXNlZF9ub3c7CiAJLyogd2hl dGhlciB0byBhdHRlbXB0IGZyZWV6aW5nIHR1cGxlcyAqLwogCWJvb2wJCWF0dGVtcHRfZnJlZXpl OworCS8qIHdoZXRoZXIgb3Igbm90IHRvIGF0dGVtcHQgdXBkYXRpbmcgdGhlIFZNICovCisJYm9v bAkJYXR0ZW1wdF91cGRhdGVfdm07CiAJc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnM7CiAK IAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KQEAgLTE0MCwxNiArMTQyLDE3IEBAIHR5cGVkZWYgc3RydWN0CiAJICogYWxsX3Zpc2libGUg YW5kIGFsbF9mcm96ZW4gaW5kaWNhdGUgaWYgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVu CiAJICogYml0cyBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgY2FuIGJlIHNldCBmb3IgdGhpcyBwYWdl IGFmdGVyIHBydW5pbmcuCiAJICoKLQkgKiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhlIG5l d2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLgotCSAqIFRoZSBjYWxsZXIgY2Fu IHVzZSBpdCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiwgd2hlbiBzZXR0aW5nIHRoZSBWTQotCSAq IGJpdHMuICBJdCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzLCBhbmQgYWxs X2Zyb3plbiBpcwotCSAqIHRydWUuCisJICogdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGlzIHRoZSBu ZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZS4gSXQKKwkgKiBjYW4gYmUgdXNl ZCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIG9yIHdoZW4KKwkg KiBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4gSXQgaXMgb25seSB2YWxpZCB3 aGVuIGFsbCB0aGUgbGl2ZQorCSAqIHR1cGxlcyBvbiB0aGUgcGFnZSBhcmUgYWxsLXZpc2libGUu CiAJICoKIAkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBpbml0aWFsbHkgZG9u J3QgaW5jbHVkZSBMUF9ERUFEIGl0ZW1zLgogCSAqIFRoYXQncyBjb252ZW5pZW50IGZvciBoZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvIHVzZSB0aGVtIHRvCi0JICogZGVjaWRlIHdoZXRo ZXIgdG8gZnJlZXplIHRoZSBwYWdlIG9yIG5vdC4gIFRoZSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBh bGxfZnJvemVuIHZhbHVlcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyIGFyZSBhZGp1c3RlZCB0byBp bmNsdWRlCi0JICogTFBfREVBRCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hldGhlciB0byBv cHBvcnR1bmlzdGljYWxseSBmcmVlemUuCisJICogZGVjaWRlIHdoZXRoZXIgdG8gb3Bwb3J0dW5p c3RpY2FsbHkgZnJlZXplIHRoZSBwYWdlIG9yIG5vdC4gIFRoZQorCSAqIGFsbF92aXNpYmxlIGFu ZCBhbGxfZnJvemVuIHZhbHVlcyB1bHRpbWF0ZWx5IHVzZWQgdG8gc2V0IHRoZSBWTSBhcmUKKwkg KiBhZGp1c3RlZCB0byBpbmNsdWRlIExQX0RFQUQgaXRlbXMgYWZ0ZXIgd2UgZGV0ZXJtaW5lIHdo ZXRoZXIgb3Igbm90IHRvCisJICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplLgogCSAqLwogCWJv b2wJCWFsbF92aXNpYmxlOwogCWJvb2wJCWFsbF9mcm96ZW47CkBAIC0xOTEsNiArMTk0LDE3IEBA IHN0YXRpYyB2b2lkIHBhZ2VfdmVyaWZ5X3JlZGlyZWN0cyhQYWdlIHBhZ2UpOwogc3RhdGljIGJv b2wgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LAogCQkJCQkJCQkgIGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLCBib29sIGRvX3BydW5lLCBib29s IGRvX2hpbnRfcHJ1bmUsCiAJCQkJCQkJCSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSk7CitzdGF0aWMg dm9pZCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsLCBCdWZmZXIg aGVhcF9idWZmZXIsCisJCQkJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIFBhZ2UgaGVh cF9wYWdlLCBpbnQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIs CisJCQkJCQkJCQkJICAgdWludDggdm1iaXRzKTsKK3N0YXRpYyBib29sIGhlYXBfcGFnZV93aWxs X3NldF92bShQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkJCQkgIFJlbGF0aW9uIHJlbGF0aW9u LAorCQkJCQkJCQkgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBCdWZmZXIgaGVhcF9idWZmZXIsIFBh Z2UgaGVhcF9wYWdlLAorCQkJCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCQkJICBpbnQg bmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJICB1aW50OCAqb2xkX3ZtYml0cywKKwkJCQkJCQkJICB1 aW50OCAqbmV3X3ZtYml0cyk7CiAKIAogLyoKQEAgLTI4MCw2ICsyOTQsNyBAQCBoZWFwX3BhZ2Vf cHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogCQkJUHJ1bmVGcmVl emVQYXJhbXMgcGFyYW1zID0gewogCQkJCS5yZWxhdGlvbiA9IHJlbGF0aW9uLAogCQkJCS5idWZm ZXIgPSBidWZmZXIsCisJCQkJLnZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlciwKIAkJCQkucmVhc29u ID0gUFJVTkVfT05fQUNDRVNTLAogCQkJCS5vcHRpb25zID0gMCwKIAkJCQkudmlzdGVzdCA9IHZp c3Rlc3QsCkBAIC0zNDEsNiArMzU2LDggQEAgcHJ1bmVfZnJlZXplX3NldHVwKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJLyogY3V0b2ZmcyBtdXN0IGJlIHByb3ZpZGVkIGlmIHdlIHdpbGwg YXR0ZW1wdCBmcmVlemluZyAqLwogCUFzc2VydCghKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFH RV9QUlVORV9GUkVFWkUpIHx8IHBhcmFtcy0+Y3V0b2Zmcyk7CiAJcHJzdGF0ZS0+YXR0ZW1wdF9m cmVlemUgPSAocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsK KwlwcnN0YXRlLT5hdHRlbXB0X3VwZGF0ZV92bSA9CisJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQ X1BBR0VfUFJVTkVfVVBEQVRFX1ZNKSAhPSAwOwogCXByc3RhdGUtPmN1dG9mZnMgPSBwYXJhbXMt PmN1dG9mZnM7CiAKIAkvKgpAQCAtMzk2LDUxICs0MTMsNTQgQEAgcHJ1bmVfZnJlZXplX3NldHVw KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJcHJzdGF0ZS0+ZnJ6X2NvbmZsaWN0X2hvcml6 b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAogCS8qCi0JICogVmFjdXVtIG1heSB1cGRhdGUg dGhlIFZNIGFmdGVyIHdlJ3JlIGRvbmUuICBXZSBjYW4ga2VlcCB0cmFjayBvZgotCSAqIHdoZXRo ZXIgdGhlIHBhZ2Ugd2lsbCBiZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbiBhZnRlciBwcnVu aW5nIGFuZAotCSAqIGZyZWV6aW5nIHRvIGhlbHAgdGhlIGNhbGxlciB0byBkbyB0aGF0LgorCSAq IFRyYWNrIHdoZXRoZXIgdGhlIHBhZ2UgY291bGQgYmUgbWFya2VkIGFsbC12aXNpYmxlIGFuZC9v ciBhbGwtZnJvemVuLgorCSAqIFRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZCBmb3Igb3Bwb3J0dW5p c3RpYyBmcmVlemluZyBhbmQgZm9yIHVwZGF0aW5nCisJICogdGhlIHZpc2liaWxpdHkgbWFwIChW TSkgaWYgcmVxdWVzdGVkIGJ5IHRoZSBjYWxsZXIuCiAJICoKLQkgKiBDdXJyZW50bHksIG9ubHkg VkFDVVVNIHNldHMgdGhlIFZNIGJpdHMuICBUbyBzYXZlIHRoZSBlZmZvcnQsIG9ubHkgZG8KLQkg KiB0aGUgYm9va2tlZXBpbmcgaWYgdGhlIGNhbGxlciBuZWVkcyBpdC4gIEN1cnJlbnRseSwgdGhh dCdzIHRpZWQgdG8KLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFLCBidXQgaXQgY291bGQgYmUg YSBzZXBhcmF0ZSBmbGFnIGlmIHlvdSB3YW50ZWQKLQkgKiB0byB1cGRhdGUgdGhlIFZNIGJpdHMg d2l0aG91dCBhbHNvIGZyZWV6aW5nIG9yIGZyZWV6ZSB3aXRob3V0IGFsc28KLQkgKiBzZXR0aW5n IHRoZSBWTSBiaXRzLgorCSAqIEN1cnJlbnRseSwgb25seSBWQUNVVU0gcGVyZm9ybXMgZnJlZXpp bmcsIGJ1dCBvdGhlciBjYWxsZXJzIG1heSBpbiB0aGUKKwkgKiBmdXR1cmUuIFZpc2liaWxpdHkg Ym9va2tlZXBpbmcgaXMgcmVxdWlyZWQgbm90IGp1c3QgZm9yIHNldHRpbmcgdGhlIFZNCisJICog Yml0cywgYnV0IGFsc28gZm9yIG9wcG9ydHVuaXN0aWMgZnJlZXppbmc6IHdlIG9ubHkgY29uc2lk ZXIgZnJlZXppbmcgaWYKKwkgKiB0aGUgcGFnZSB3b3VsZCBiZWNvbWUgYWxsLWZyb3plbiwgb3Ig aWYgaXQgd291bGQgYmUgYWxsLWZyb3plbiBleGNlcHQKKwkgKiBmb3IgZGVhZCB0dXBsZXMgdGhh dCBWQUNVVU0gd2lsbCByZW1vdmUuIElmIGF0dGVtcHRfdXBkYXRlX3ZtIGlzIGZhbHNlLAorCSAq IHdlIHdpbGwgbm90IHNldCB0aGUgVk0gYml0IGV2ZW4gaWYgdGhlIHBhZ2UgaXMgZm91bmQgdG8g YmUgYWxsLXZpc2libGUuCiAJICoKLQkgKiBJbiBhZGRpdGlvbiB0byB0ZWxsaW5nIHRoZSBjYWxs ZXIgd2hldGhlciBpdCBjYW4gc2V0IHRoZSBWTSBiaXQsIHdlCi0JICogYWxzbyB1c2UgJ2FsbF92 aXNpYmxlJyBhbmQgJ2FsbF9mcm96ZW4nIGZvciBvdXIgb3duIGRlY2lzaW9uLW1ha2luZy4gSWYK LQkgKiB0aGUgd2hvbGUgcGFnZSB3b3VsZCBiZWNvbWUgZnJvemVuLCB3ZSBjb25zaWRlciBvcHBv cnR1bmlzdGljYWxseQotCSAqIGZyZWV6aW5nIHR1cGxlcy4gIFdlIHdpbGwgbm90IGJlIGFibGUg dG8gZnJlZXplIHRoZSB3aG9sZSBwYWdlIGlmIHRoZXJlCi0JICogYXJlIHR1cGxlcyBwcmVzZW50 IHRoYXQgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIG9yIGlmIHRoZXJlIGFyZQotCSAqIGRl YWQgdHVwbGVzIHdoaWNoIGFyZSBub3QgeWV0IHJlbW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQgdHVw bGVzIHdoaWNoCi0JICogd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNo b3VsZCBub3QgcHJlY2x1ZGUgdXMgZnJvbQotCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5n LiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBkbyBub3QgaW1tZWRpYXRlbHkKLQkgKiBjbGVhciBhbGxf dmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiAgV2UgZml4 Ci0JICogdGhhdCBhZnRlciBzY2FubmluZyB0aGUgbGluZSBwb2ludGVycy4gV2UgbXVzdCBjb3Jy ZWN0IGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4gYmVmb3JlIHdlIHJldHVybiB0aGVt IHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxlcgotCSAqIGRvZXNuJ3Qgc2V0IHRoZSBW TSBiaXRzIGluY29ycmVjdGx5LgorCSAqIElmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0gaXMg cGFzc2VkIHdpdGhvdXQgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwKKwkgKiBwcnN0YXRlLmFsbF9m cm96ZW4gbXVzdCBiZSBpbml0aWFsaXplZCB0byBmYWxzZSwgc2luY2Ugd2Ugd2lsbCBub3QgY2Fs bAorCSAqIGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoKSBmb3IgZWFjaCB0dXBsZS4KKwkgKgor CSAqIERlYWQgdHVwbGVzIHRoYXQgd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVt IHNob3VsZCBub3QKKwkgKiBwcmV2ZW50IG9wcG9ydHVuaXN0aWMgZnJlZXppbmcuIFRoZXJlZm9y ZSwgd2UgZG8gbm90IGNsZWFyIGFsbF92aXNpYmxlCisJICogYW5kIGFsbF9mcm96ZW4gd2hlbiB3 ZSBlbmNvdW50ZXIgTFBfREVBRCBpdGVtcy4gSW5zdGVhZCwgd2UgY29ycmVjdAorCSAqIHRoZW0g YWZ0ZXIgZGVjaWRpbmcgd2hldGhlciB0byBmcmVlemUsIGJ1dCBiZWZvcmUgdXBkYXRpbmcgdGhl IFZNLCB0bworCSAqIGF2b2lkIHNldHRpbmcgdGhlIFZNIGJpdHMgaW5jb3JyZWN0bHkuCisJICoK KwkgKiBJZiBuZWl0aGVyIGZyZWV6aW5nIG5vciBWTSB1cGRhdGVzIGFyZSByZXF1ZXN0ZWQsIHdl IHNraXAgdGhlIGV4dHJhCisJICogYm9va2tlZXBpbmcuIEluIHRoaXMgY2FzZSwgaW5pdGlhbGl6 aW5nIGFsbF92aXNpYmxlIHRvIGZhbHNlIGFsbG93cworCSAqIGhlYXBfcHJ1bmVfcmVjb3JkX3Vu Y2hhbmdlZF9scF9ub3JtYWwoKSB0byBieXBhc3MgdW5uZWNlc3Nhcnkgd29yay4KIAkgKi8KIAlp ZiAocHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCiAJewogCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9 IHRydWU7CiAJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSB0cnVlOwogCX0KKwllbHNlIGlmIChwcnN0 YXRlLT5hdHRlbXB0X3VwZGF0ZV92bSkKKwl7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gdHJ1 ZTsKKwkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOworCX0KIAllbHNlCiAJewotCQkvKgot CQkgKiBJbml0aWFsaXppbmcgdG8gZmFsc2UgYWxsb3dzIHNraXBwaW5nIHRoZSB3b3JrIHRvIHVw ZGF0ZSB0aGVtIGluCi0JCSAqIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwo KS4KLQkJICovCiAJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CiAJCXByc3RhdGUtPmFs bF9mcm96ZW4gPSBmYWxzZTsKIAl9CiAKIAkvKgotCSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4 aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZQotCSAqIHBhZ2UuICBJ biB0aGUgY29tbW9uIGNhc2UsIHRoaXMgd2lsbCBiZSBzZXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6 b24gdGhlCi0JICogY2FsbGVyIGNhbiB1c2UgZm9yIHVwZGF0aW5nIHRoZSBWTS4gIElmLCBhdCB0 aGUgZW5kIG9mIGZyZWV6aW5nIGFuZAotCSAqIHBydW5pbmcsIHRoZSBwYWdlIGlzIGFsbC1mcm96 ZW4sIHRoZXJlIGlzIG5vIHBvc3NpYmlsaXR5IHRoYXQgYW55Ci0JICogcnVubmluZyB0cmFuc2Fj dGlvbiBvbiB0aGUgc3RhbmRieSBkb2VzIG5vdCBzZWUgdHVwbGVzIG9uIHRoZSBwYWdlIGFzCi0J ICogYWxsLXZpc2libGUsIHNvIHRoZSBjb25mbGljdCBob3Jpem9uIHJlbWFpbnMgSW52YWxpZFRy YW5zYWN0aW9uSWQuCisJICogVGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0 IHhtaW4gb2YgbGl2ZSwgY29tbWl0dGVkIHR1cGxlcworCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1p biBvbiB0aGUgcGFnZS4gVGhpcyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQorCSAqIGlm IHRoZSBwYWdlIGlzIGFsbC12aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVy ZWQgdGhhdCBpcworCSAqIG5vdCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50 YWluZWQuIEFzIGxvbmcgYXMgaXQgaXMKKwkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0 byBjYWxjdWxhdGUgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24KKwkgKiB3aGVuIHVwZGF0 aW5nIHRoZSBWTSBhbmQvb3IgZnJlZXppbmcgYWxsIHRoZSB0dXBsZXMgb24gdGhlIHBhZ2UuCiAJ ICovCiAJcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CiB9CkBAIC03NzUsMTAgKzc5NSwxMzQgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXJldHVybiBkb19mcmVlemU7CiB9CiAKKy8q CisgKiBIZWxwZXIgdG8gY29ycmVjdCBhbnkgY29ycnVwdGlvbiBkZXRlY3RlZCBvbiBhbiBoZWFw IHBhZ2UgYW5kIGl0cworICogY29ycmVzcG9uZGluZyB2aXNpYmlsaXR5IG1hcCBwYWdlIGFmdGVy IHBydW5pbmcgYnV0IGJlZm9yZSBzZXR0aW5nIHRoZQorICogdmlzaWJpbGl0eSBtYXAuIEl0IGV4 YW1pbmVzIHRoZSBoZWFwIHBhZ2UsIHRoZSBhc3NvY2lhdGVkIFZNIHBhZ2UsIGFuZCB0aGUKKyAq IG51bWJlciBvZiBkZWFkIGl0ZW1zIHByZXZpb3VzbHkgaWRlbnRpZmllZC4KKyAqCisgKiBUaGlz IGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYW4gZXhjbHVzaXZlIGxvY2sg b24gdGhlIGhlYXAKKyAqIGJ1ZmZlciwgYW5kIHRoZSBkZWFkIGl0ZW1zIG11c3QgaGF2ZSBiZWVu IGRpc2NvdmVyZWQgdW5kZXIgdGhhdCBzYW1lIGxvY2suCisgKgorICogVGhlIHByb3ZpZGVkIHZt Yml0cyBtdXN0IHJlZmxlY3QgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIFZNIGJsb2NrCisgKiBy ZWZlcmVuY2VkIGJ5IHZtYnVmZmVyLiBBbHRob3VnaCB3ZSBkbyBub3QgaG9sZCBhIGxvY2sgb24g dGhlIFZNIGJ1ZmZlciwgaXQKKyAqIGlzIHBpbm5lZCwgYW5kIHRoZSBoZWFwIGJ1ZmZlciBpcyBl eGNsdXNpdmVseSBsb2NrZWQsIGVuc3VyaW5nIHRoYXQgbm8KKyAqIG90aGVyIGJhY2tlbmQgY2Fu IHVwZGF0ZSB0aGUgVk0gYml0cyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgaGVhcCBwYWdlLgorICov CitzdGF0aWMgdm9pZAoraWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGhlYXBfYnVmZmVyLAorCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBQ YWdlIGhlYXBfcGFnZSwKKwkJCQkJCQkgICBpbnQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkgICBC dWZmZXIgdm1idWZmZXIsCisJCQkJCQkJICAgdWludDggdm1iaXRzKQoreworCUFzc2VydCh2aXNp YmlsaXR5bWFwX2dldF9zdGF0dXMocmVsLCBoZWFwX2JsaywgJnZtYnVmZmVyKSA9PSB2bWJpdHMp OworCisJQXNzZXJ0KEJ1ZmZlcklzTG9ja2VkQnlNZUluTW9kZShoZWFwX2J1ZmZlciwgQlVGRkVS X0xPQ0tfRVhDTFVTSVZFKSk7CisKKwkvKgorCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUg dmlzaWJpbGl0eSBtYXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCisJICogcGFnZS1s ZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBn b3QKKwkgKiBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxs ZWQsIHNvIHdlIG11c3QgcmVjaGVjaworCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNs dWRpbmcgdGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KKwkgKi8KKwlpZiAoIVBhZ2VJc0FsbFZpc2li bGUoaGVhcF9wYWdlKSAmJgorCQkoKHZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUp ICE9IDApKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFU QV9DT1JSVVBURUQpLAorCQkJCSBlcnJtc2coInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJs ZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAl dSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwX2JsaykpKTsKKwor CQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJfQorCisJLyoKKwkgKiBJdCdzIHBvc3NpYmxlIGZv ciB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2Fj dGlvbklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3JvbmcgZm9yIHVz IHRvIHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUK KwkgKiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBz YWZlIHhtaW4gdmFsdWUKKwkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3RO b25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0 aW1lcyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCisJICogc28g aWYgd2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxl cyB0aGF0IHdlCisJICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1 YWxseSBhcmUsIGFuZCB0aGUKKwkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCisJ ICoKKwkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0 aCBQRF9BTExfVklTSUJMRSBzZXQsCisJICogaG93ZXZlci4KKwkgKi8KKwllbHNlIGlmIChQYWdl SXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYgbmxwZGVhZF9pdGVtcyA+IDApCisJeworCQllcmVw b3J0KFdBUk5JTkcsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJ IGVycm1zZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12 aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCksIGhlYXBfYmxrKSkpOworCisJCVBhZ2VDbGVhckFsbFZpc2libGUoaGVh cF9wYWdlKTsKKwkJTWFya0J1ZmZlckRpcnR5KGhlYXBfYnVmZmVyKTsKKwkJdmlzaWJpbGl0eW1h cF9jbGVhcihyZWwsIGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJQklMSVRZTUFQX1ZB TElEX0JJVFMpOworCX0KK30KKworLyoKKyAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgdmlz aWJpbGl0eSBtYXAgYml0cyAoYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4pCisgKiBmb3IgaGVh cF9ibGsgdXNpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgUHJ1bmVTdGF0ZSBhbmQgVk0uCisgKgor ICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBhY3R1YWxseSBzZXQgdGhlIFZNIGJpdHMgb3IgcGFn ZS1sZXZlbCB2aXNpYmlsaXR5CisgKiBoaW50LCBQRF9BTExfVklTSUJMRS4KKyAqCisgKiBIb3dl dmVyLCBpZiBpdCBmaW5kcyB0aGF0IHRoZSBwYWdlLWxldmVsIHZpc2liaWxpdHkgaGludCBvciBW TSBpcworICogY29ycnVwdGVkLCBpdCB3aWxsIGZpeCB0aGVtIGJ5IGNsZWFyaW5nIHRoZSBWTSBi aXRzIGFuZCB2aXNpYmlsaXR5IGhpbnQuCisgKiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgZG9u ZSBpbiBhIGNyaXRpY2FsIHNlY3Rpb24uCisgKgorICogUmV0dXJucyB0cnVlIGlmIG9uZSBvciBi b3RoIFZNIGJpdHMgc2hvdWxkIGJlIHNldCwgYWxvbmcgd2l0aCByZXR1cm5pbmcgdGhlCisgKiBj dXJyZW50IHZhbHVlIG9mIHRoZSBWTSBiaXRzIGluICpvbGRfdm1iaXRzIGFuZCB0aGUgZGVzaXJl ZCBuZXcgdmFsdWUgb2YKKyAqIHRoZSBWTSBiaXRzIGluICpuZXdfdm1iaXRzLgorICovCitzdGF0 aWMgYm9vbAoraGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJ CSAgUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCSAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIEJ1ZmZl ciBoZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3BhZ2UsCisJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLAor CQkJCQkgIGludCBubHBkZWFkX2l0ZW1zLAorCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAorCQkJ CQkgIHVpbnQ4ICpuZXdfdm1iaXRzKQoreworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF91cGRhdGVf dm0pCisJCXJldHVybiBmYWxzZTsKKworCSpvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9nZXRf c3RhdHVzKHJlbGF0aW9uLCBoZWFwX2JsaywKKwkJCQkJCQkJCQkgICAmdm1idWZmZXIpOworCisJ LyogV2UgZG8gdGhpcyBldmVuIGlmIG5vdCBhbGwtdmlzaWJsZSAqLworCWlkZW50aWZ5X2FuZF9m aXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwgaGVhcF9idWZmZXIsIGhlYXBfYmxrLCBoZWFwX3Bh Z2UsCisJCQkJCQkJCSAgIG5scGRlYWRfaXRlbXMsIHZtYnVmZmVyLAorCQkJCQkJCQkgICAqb2xk X3ZtYml0cyk7CisKKwlpZiAoIXByc3RhdGUtPmFsbF92aXNpYmxlKQorCQlyZXR1cm4gZmFsc2U7 CisKKwkqbmV3X3ZtYml0cyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisKKwlpZiAocHJz dGF0ZS0+YWxsX2Zyb3plbikKKwkJKm5ld192bWJpdHMgfD0gVklTSUJJTElUWU1BUF9BTExfRlJP WkVOOworCisJaWYgKCpuZXdfdm1iaXRzID09ICpvbGRfdm1iaXRzKQorCXsKKwkJKm5ld192bWJp dHMgPSAwOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKIAogLyoK ICAqIFBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJlZXpl IHR1cGxlcyBvbiB0aGUKLSAqIHNwZWNpZmllZCBwYWdlLgorICogc3BlY2lmaWVkIHBhZ2UuIElm IHRoZSBwYWdlJ3MgdmlzaWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5nZWQsIHVwZGF0ZSBpdCBpbgor ICogdGhlIFZNLgogICoKICAqIENhbGxlciBtdXN0IGhhdmUgcGluIGFuZCBidWZmZXIgY2xlYW51 cCBsb2NrIG9uIHRoZSBwYWdlLiAgTm90ZSB0aGF0IHdlCiAgKiBkb24ndCB1cGRhdGUgdGhlIEZT TSBpbmZvcm1hdGlvbiBmb3IgcGFnZSBvbiBjYWxsZXIncyBiZWhhbGYuICBDYWxsZXIgbWlnaHQK QEAgLTc5MywxMiArOTM3LDEzIEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAqIHR1cGxlcyBpZiBpdCdzIHJlcXVpcmVkIGluIG9yZGVy IHRvIGFkdmFuY2UgcmVsZnJvemVueGlkIC8gcmVsbWlubXhpZCwgb3IKICAqIGlmIGl0J3MgY29u c2lkZXJlZCBhZHZhbnRhZ2VvdXMgZm9yIG92ZXJhbGwgc3lzdGVtIHBlcmZvcm1hbmNlIHRvIGRv IHNvCiAgKiBub3cuICBUaGUgJ3BhcmFtcy5jdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZy b3plbl94aWQnIGFuZAotICogJ25ld19yZWxtaW5fbXhpZCcgYXJndW1lbnRzIGFyZSByZXF1aXJl ZCB3aGVuIGZyZWV6aW5nLiAgV2hlbgotICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24g aXMgcGFzc2VkLCB3ZSBhbHNvIHNldCBwcmVzdWx0LT5hbGxfdmlzaWJsZQotICogYW5kIHByZXN1 bHQtPmFsbF9mcm96ZW4gYWZ0ZXIgZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3QgdG8KLSAqIG9w cG9ydHVuaXN0aWNhbGx5IGZyZWV6ZSwgdG8gaW5kaWNhdGUgaWYgdGhlIFZNIGJpdHMgY2FuIGJl IHNldC4gIFRoZXkgYXJlCi0gKiBhbHdheXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlIEhFQVBfUEFH RV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIG5vdCBwYXNzZWQsCi0gKiBiZWNhdXNlIGF0IHRoZSBt b21lbnQgb25seSBjYWxsZXJzIHRoYXQgYWxzbyBmcmVlemUgbmVlZCB0aGF0IGluZm9ybWF0aW9u LgorICogJ25ld19yZWxtaW5fbXhpZCcgYXJndW1lbnRzIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6 aW5nLgorICoKKyAqIElmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0gaXMgc2V0IGluIHBhcmFt cyBhbmQgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mCisgKiB0aGUgcGFnZSBoYXMgY2hhbmdlZCwg d2Ugd2lsbCB1cGRhdGUgdGhlIFZNIGF0IHRoZSBzYW1lIHRpbWUgYXMgcHJ1bmluZyBhbmQKKyAq IGZyZWV6aW5nIHRoZSBoZWFwIHBhZ2UuIFdlIHdpbGwgYWxzbyB1cGRhdGUgcHJlc3VsdC0+b2xk X3ZtYml0cyBhbmQKKyAqIHByZXN1bHQtPm5ld192bWJpdHMgd2l0aCB0aGUgc3RhdGUgb2YgdGhl IFZNIGJlZm9yZSBhbmQgYWZ0ZXIgdXBkYXRpbmcgaXQKKyAqIGZvciB0aGUgY2FsbGVyIHRvIHVz ZSBpbiBib29ra2VlcGluZy4KICAqCiAgKiBwcmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0 ZXJzIG5lZWRlZCBieSBjYWxsZXJzLCBzdWNoIGFzIHRoZSBudW1iZXIgb2YKICAqIHR1cGxlcyBy ZW1vdmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBkZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBy dW5pbmcuCkBAIC04MjMsMTMgKzk2OCwxOSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQ cnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJICAgTXVsdGlYYWN0SWQgKm5ld19yZWxt aW5fbXhpZCkKIHsKIAlCdWZmZXIJCWJ1ZmZlciA9IHBhcmFtcy0+YnVmZmVyOworCUJ1ZmZlcgkJ dm1idWZmZXIgPSBwYXJhbXMtPnZtYnVmZmVyOwogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1ZmZlcik7CisJQmxvY2tOdW1iZXIgYmxvY2tubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1 ZmZlcik7CiAJUHJ1bmVTdGF0ZQlwcnN0YXRlOwogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlk b19wcnVuZTsKIAlib29sCQlkb19oaW50X3BydW5lOworCWJvb2wJCWRvX3NldF92bTsKIAlib29s CQlkaWRfdHVwbGVfaGludF9mcGk7CiAJaW50NjQJCWZwaV9iZWZvcmUgPSBwZ1dhbFVzYWdlLndh bF9mcGk7CisJdWludDgJCW5ld192bWJpdHMgPSAwOworCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsK KwogCiAJLyogSW5pdGlhbGl6ZSBwcnN0YXRlICovCiAJcHJ1bmVfZnJlZXplX3NldHVwKHBhcmFt cywKQEAgLTEwMTEsNiArMTE2Miw2NSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVu ZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJKm5ld19yZWxtaW5fbXhpZCA9IHByc3RhdGUucGFn ZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxtaW5NeGlkOwogCQl9CiAJfQorCisJLyogTm93IHVwZGF0ZSB0 aGUgdmlzaWJpbGl0eSBtYXAgYW5kIFBEX0FMTF9WSVNJQkxFIGhpbnQgKi8KKwlBc3NlcnQoIXBy c3RhdGUuYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsKKworCWRv X3NldF92bSA9IGhlYXBfcGFnZV93aWxsX3NldF92bSgmcHJzdGF0ZSwKKwkJCQkJCQkJCSAgcGFy YW1zLT5yZWxhdGlvbiwKKwkJCQkJCQkJCSAgYmxvY2tubywKKwkJCQkJCQkJCSAgYnVmZmVyLAor CQkJCQkJCQkJICBwYWdlLAorCQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCSAgcHJzdGF0 ZS5scGRlYWRfaXRlbXMsCisJCQkJCQkJCQkgICZvbGRfdm1iaXRzLAorCQkJCQkJCQkJICAmbmV3 X3ZtYml0cyk7CisKKwkvKgorCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAgcmVnYXJkbGVzcyBv ZiB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGlmIHdlIGRvIG5v dCBpbnRlbmQgdG8gc2V0IHRoZSBWTS4KKwkgKi8KKwlBc3NlcnQoZG9fc2V0X3ZtIHx8IG5ld192 bWJpdHMgPT0gMCk7CisKKwkvKiBTZXQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBwYWdlIHZpc2li aWxpdHkgaGludCwgaWYgcmVsZXZhbnQgKi8KKwlpZiAoZG9fc2V0X3ZtKQorCXsKKwkJQXNzZXJ0 KHByc3RhdGUuYWxsX3Zpc2libGUpOworCisJCS8qCisJCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0 aGUgY2FzZSB0aGF0IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldAorCQkgKiB3aGlsZSB0 aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChp ZgorCQkgKiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3Ro IGJpdHMgc28gdGhhdCB3ZQorCQkgKiBnZXQgYmFjayBpbiBzeW5jLgorCQkgKgorCQkgKiBFdmVu IGlmIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LCB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5 IGFib3V0CisJCSAqIHVubmVjZXNzYXJpbHkgZGlydHlpbmcgdGhlIGhlYXAgYnVmZmVyLiBOZWFy bHkgdGhlIG9ubHkgc2NlbmFyaW8KKwkJICogd2hlcmUgUERfQUxMX1ZJU0lCTEUgaXMgc2V0IGJ1 dCB0aGUgVk0gaXMgbm90IGlzIGlmIHRoZSBWTSB3YXMKKwkJICogcmVtb3ZlZCAtLSBhbmQgdGhh dCBpc24ndCB3b3J0aCBvcHRpbWl6aW5nIGZvci4gQW5kIGlmIHdlIGFkZCB0aGUKKwkJICogaGVh cCBidWZmZXIgdG8gdGhlIFdBTCBjaGFpbiAod2l0aG91dCBwYXNzaW5nIFJFR0JVRl9OT19DSEFO R0VTKSwKKwkJICogaXQgbXVzdCBiZSBtYXJrZWQgZGlydHkuCisJCSAqLworCQlQYWdlU2V0QWxs VmlzaWJsZShwYWdlKTsKKwkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisKKwkJLyoKKwkJICog SWYgdGhlIHBhZ2UgaXMgYmVpbmcgc2V0IGFsbC1mcm96ZW4sIHdlIHBhc3MgSW52YWxpZFRyYW5z YWN0aW9uSWQKKwkJICogYXMgdGhlIGN1dG9mZl94aWQsIHNpbmNlIGEgc25hcHNob3QgY29uZmxp Y3QgaG9yaXpvbiBzdWZmaWNpZW50IHRvCisJCSAqIG1ha2UgZXZlcnl0aGluZyBzYWZlIGZvciBS RURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxlcworCQkgKiB3ZXJlIGZyb3plbi4K KwkJICovCisJCUFzc2VydCghcHJzdGF0ZS5hbGxfZnJvemVuIHx8CisJCQkgICAhVHJhbnNhY3Rp b25JZElzVmFsaWQocHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbikpOworCisJCXZpc2liaWxp dHltYXBfc2V0KHBhcmFtcy0+cmVsYXRpb24sIGJsb2Nrbm8sIGJ1ZmZlciwKKwkJCQkJCSAgSW52 YWxpZFhMb2dSZWNQdHIsCisJCQkJCQkgIHZtYnVmZmVyLCBwcmVzdWx0LT52bV9jb25mbGljdF9o b3Jpem9uLAorCQkJCQkJICBuZXdfdm1iaXRzKTsKKwl9CisKKwkvKiBTYXZlIHRoZSB2bWJpdHMg Zm9yIGNhbGxlciAqLworCXByZXN1bHQtPm9sZF92bWJpdHMgPSBvbGRfdm1iaXRzOworCXByZXN1 bHQtPm5ld192bWJpdHMgPSBuZXdfdm1iaXRzOwogfQogCiAKQEAgLTE0ODUsNiArMTY5NSw4IEBA IGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0 YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQl7CiAJCQkJVHJhbnNhY3Rpb25JZCB4bWluOwog CisJCQkJQXNzZXJ0KHByc3RhdGUtPmF0dGVtcHRfdXBkYXRlX3ZtKTsKKwogCQkJCWlmICghSGVh cFR1cGxlSGVhZGVyWG1pbkNvbW1pdHRlZChodHVwKSkKIAkJCQl7CiAJCQkJCXByc3RhdGUtPmFs bF92aXNpYmxlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXgg ZmYzNGE5OWVkYmQuLmQ1YzU3NTE2Nzg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCkBAIC00MjIsMTEgKzQyMiw2IEBAIHN0YXRpYyB2b2lkIGZpbmRfbmV4dF91bnNraXBwYWJs ZV9ibG9jayhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKTsKIHN0YXRpYyBi b29sIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVm LAogCQkJCQkJCQkgICBCbG9ja051bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCQkgICBi b29sIHNoYXJlbG9jaywgQnVmZmVyIHZtYnVmZmVyKTsKLXN0YXRpYyB2b2lkIGlkZW50aWZ5X2Fu ZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKLQkJ CQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywgUGFnZSBoZWFwX3BhZ2UsCi0JCQkJCQkJ CQkJICAgaW50IG5scGRlYWRfaXRlbXMsCi0JCQkJCQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAot CQkJCQkJCQkJCSAgIHVpbnQ4IHZtYml0cyk7CiBzdGF0aWMgaW50CWxhenlfc2Nhbl9wcnVuZShM VlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJQmxvY2tOdW1iZXIgYmxrbm8s IFBhZ2UgcGFnZSwKIAkJCQkJCQlCdWZmZXIgdm1idWZmZXIsCkBAIC0xOTMzLDc3ICsxOTI4LDYg QEAgY21wT2Zmc2V0TnVtYmVycyhjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogCXJldHVy biBwZ19jbXBfdTE2KCooY29uc3QgT2Zmc2V0TnVtYmVyICopIGEsICooY29uc3QgT2Zmc2V0TnVt YmVyICopIGIpOwogfQogCi0vKgotICogSGVscGVyIHRvIGNvcnJlY3QgYW55IGNvcnJ1cHRpb24g ZGV0ZWN0ZWQgb24gYW4gaGVhcCBwYWdlIGFuZCBpdHMKLSAqIGNvcnJlc3BvbmRpbmcgdmlzaWJp bGl0eSBtYXAgcGFnZSBhZnRlciBwcnVuaW5nIGJ1dCBiZWZvcmUgc2V0dGluZyB0aGUKLSAqIHZp c2liaWxpdHkgbWFwLiBJdCBleGFtaW5lcyB0aGUgaGVhcCBwYWdlLCB0aGUgYXNzb2NpYXRlZCBW TSBwYWdlLCBhbmQgdGhlCi0gKiBudW1iZXIgb2YgZGVhZCBpdGVtcyBwcmV2aW91c2x5IGlkZW50 aWZpZWQuCi0gKgotICogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCB3aGlsZSBob2xkaW5n IGFuIGV4Y2x1c2l2ZSBsb2NrIG9uIHRoZSBoZWFwCi0gKiBidWZmZXIsIGFuZCB0aGUgZGVhZCBp dGVtcyBtdXN0IGhhdmUgYmVlbiBkaXNjb3ZlcmVkIHVuZGVyIHRoYXQgc2FtZSBsb2NrLgotCi0g KiBUaGUgcHJvdmlkZWQgdm1iaXRzIG11c3QgcmVmbGVjdCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0 aGUgVk0gYmxvY2sKLSAqIHJlZmVyZW5jZWQgYnkgdm1idWZmZXIuIEFsdGhvdWdoIHdlIGRvIG5v dCBob2xkIGEgbG9jayBvbiB0aGUgVk0gYnVmZmVyLCBpdAotICogaXMgcGlubmVkLCBhbmQgdGhl IGhlYXAgYnVmZmVyIGlzIGV4Y2x1c2l2ZWx5IGxvY2tlZCwgZW5zdXJpbmcgdGhhdCBubwotICog b3RoZXIgYmFja2VuZCBjYW4gdXBkYXRlIHRoZSBWTSBiaXRzIGNvcnJlc3BvbmRpbmcgdG8gdGhp cyBoZWFwIHBhZ2UuCi0gKi8KLXN0YXRpYyB2b2lkCi1pZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1 cHRpb24oUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJICAgQmxvY2tO dW1iZXIgaGVhcF9ibGssIFBhZ2UgaGVhcF9wYWdlLAotCQkJCQkJCSAgIGludCBubHBkZWFkX2l0 ZW1zLAotCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKLQkJCQkJCQkgICB1aW50OCB2bWJpdHMp Ci17Ci0JQXNzZXJ0KHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhyZWwsIGhlYXBfYmxrLCAmdm1i dWZmZXIpID09IHZtYml0cyk7Ci0KLQlBc3NlcnQoQnVmZmVySXNMb2NrZWRCeU1lSW5Nb2RlKGhl YXBfYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpKTsKLQotCS8qCi0JICogQXMgb2YgUG9z dGdyZVNRTCA5LjIsIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBp ZiB0aGUKLQkgKiBwYWdlLWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2li bGUgdGhhdCB0aGUgYml0IGdvdAotCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0 X2Jsb2NrKCkgd2FzIGNhbGxlZCwgc28gd2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIg bG9jayBiZWZvcmUgY29uY2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgotCSAqLwotCWlm ICghUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpICYmCi0JCSgodm1iaXRzICYgVklTSUJJTElU WU1BUF9BTExfVklTSUJMRSkgIT0gMCkpCi0JewotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVy cmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJIGVycm1zZygicGFnZSBpcyBub3Qg bWFya2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0 aW9uIFwiJXNcIiBwYWdlICV1IiwKLQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCks IGhlYXBfYmxrKSkpOwotCi0JCXZpc2liaWxpdHltYXBfY2xlYXIocmVsLCBoZWFwX2Jsaywgdm1i dWZmZXIsCi0JCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKLQl9Ci0KLQkvKgotCSAq IEl0J3MgcG9zc2libGUgZm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdldE9sZGVzdE5v blJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QK LQkgKiB3cm9uZyBmb3IgdXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlz aWJsZSB0byBldmVyeW9uZQotCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFk eSBzZXQuIFRoZSByZWFsIHNhZmUgeG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJk cywgYnV0IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAqIGNvbnNl cnZhdGl2ZSBhbmQgc29tZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3Nhcmls eSBzbWFsbCwKLQkgKiBzbyBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVh bnMgdGhhdCB0aGUgdHVwbGVzIHRoYXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8g ZXZlcnlvbmUgeWV0IGFjdHVhbGx5IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJQkxFIGZs YWcgaXMgY29ycmVjdC4KLQkgKgotCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0 ZW1zIG9uIGEgcGFnZSB3aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dldmVyLgotCSAq LwotCWVsc2UgaWYgKFBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJiBubHBkZWFkX2l0ZW1z ID4gMCkKLQl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFf Q09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBp cyBtYXJrZWQgYXMgYWxsLXZpc2libGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJ CQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcF9ibGspKSk7Ci0KLQkJUGFnZUNs ZWFyQWxsVmlzaWJsZShoZWFwX3BhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIp OwotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbCwgaGVhcF9ibGssIHZtYnVmZmVyLAotCQkJCQkJ CVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JfQotfQotCiAvKgogICoJbGF6eV9zY2FuX3By dW5lKCkgLS0gbGF6eV9zY2FuX2hlYXAoKSBwcnVuaW5nIGFuZCBmcmVlemluZy4KICAqCkBAIC0y MDM1LDEzICsxOTU5LDEyIEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJ UHJ1bmVGcmVlemVQYXJhbXMgcGFyYW1zID0gewogCQkucmVsYXRpb24gPSByZWwsCiAJCS5idWZm ZXIgPSBidWYsCisJCS52bWJ1ZmZlciA9IHZtYnVmZmVyLAogCQkucmVhc29uID0gUFJVTkVfVkFD VVVNX1NDQU4sCi0JCS5vcHRpb25zID0gSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwKKwkJLm9wdGlv bnMgPSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIHwgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSwK IAkJLnZpc3Rlc3QgPSB2YWNyZWwtPnZpc3Rlc3QsCiAJCS5jdXRvZmZzID0gJnZhY3JlbC0+Y3V0 b2ZmcywKIAl9OwotCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsKLQl1aW50OAkJbmV3X3ZtYml0cyA9 IDA7CiAKIAlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmKSA9PSBibGtubyk7CiAKQEAg LTIxNDEsNzMgKzIwNjQsMjQgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwK IAkvKiBEaWQgd2UgZmluZCBMUF9ERUFEIGl0ZW1zPyAqLwogCSpoYXNfbHBkZWFkX2l0ZW1zID0g KHByZXN1bHQubHBkZWFkX2l0ZW1zID4gMCk7CiAKLQlBc3NlcnQoIXByZXN1bHQuYWxsX3Zpc2li bGUgfHwgISgqaGFzX2xwZGVhZF9pdGVtcykpOwotCUFzc2VydCghcHJlc3VsdC5hbGxfZnJvemVu IHx8IHByZXN1bHQuYWxsX3Zpc2libGUpOwotCi0Jb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBf Z2V0X3N0YXR1cyh2YWNyZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZlcik7Ci0KLQlpZGVudGlmeV9h bmRfZml4X3ZtX2NvcnJ1cHRpb24odmFjcmVsLT5yZWwsIGJ1ZiwgYmxrbm8sIHBhZ2UsCi0JCQkJ CQkJCSAgIHByZXN1bHQubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlciwgb2xkX3ZtYml0cyk7Ci0KLQlp ZiAoIXByZXN1bHQuYWxsX3Zpc2libGUpCi0JCXJldHVybiBwcmVzdWx0Lm5kZWxldGVkOwotCi0J LyogU2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBhbmQgcGFnZSB2aXNpYmlsaXR5IGhpbnQgKi8KLQlu ZXdfdm1iaXRzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKLQotCWlmIChwcmVzdWx0LmFs bF9mcm96ZW4pCi0JCW5ld192bWJpdHMgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOwotCi0J LyogTm90aGluZyB0byBkbyAqLwotCWlmIChvbGRfdm1iaXRzID09IG5ld192bWJpdHMpCi0JCXJl dHVybiBwcmVzdWx0Lm5kZWxldGVkOwotCi0JQXNzZXJ0KHByZXN1bHQuYWxsX3Zpc2libGUpOwot Ci0JLyoKLQkgKiBJdCBzaG91bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0 eSBtYXAgcGFnZSBpcyBzZXQgd2hpbGUKLQkgKiB0aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIs IGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZiBjaGVja3N1bXMKLQkgKiBhcmUgbm90IGVu YWJsZWQpLiAgUmVnYXJkbGVzcywgc2V0IGJvdGggYml0cyBzbyB0aGF0IHdlIGdldCBiYWNrIGlu Ci0JICogc3luYy4KLQkgKgotCSAqIEV2ZW4gaWYgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBz ZXQsIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQKLQkgKiB1bm5lY2Vzc2FyaWx5IGRpcnR5 aW5nIHRoZSBoZWFwIGJ1ZmZlci4gTmVhcmx5IHRoZSBvbmx5IHNjZW5hcmlvIHdoZXJlCi0JICog UERfQUxMX1ZJU0lCTEUgaXMgc2V0IGJ1dCB0aGUgVk0gaXMgbm90IGlzIGlmIHRoZSBWTSB3YXMg cmVtb3ZlZCAtLSBhbmQKLQkgKiB0aGF0IGlzbid0IHdvcnRoIG9wdGltaXppbmcgZm9yLiBBbmQg aWYgd2UgYWRkIHRoZSBoZWFwIGJ1ZmZlciB0byB0aGUKLQkgKiBXQUwgY2hhaW4gKHdpdGhvdXQg cGFzc2luZyBSRUdCVUZfTk9fQ0hBTkdFUyksIGl0IG11c3QgYmUgbWFya2VkIGRpcnR5LgotCSAq LwotCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCi0J LyoKLQkgKiBJZiB0aGUgcGFnZSBpcyBiZWluZyBzZXQgYWxsLWZyb3plbiwgd2UgcGFzcyBJbnZh bGlkVHJhbnNhY3Rpb25JZCBhcwotCSAqIHRoZSBjdXRvZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90 IGNvbmZsaWN0IGhvcml6b24gc3VmZmljaWVudCB0byBtYWtlCi0JICogZXZlcnl0aGluZyBzYWZl IGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxlcyB3ZXJlIGZyb3plbi4K LQkgKi8KLQlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3plbiB8fAotCQkgICAhVHJhbnNhY3Rpb25J ZElzVmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7Ci0KLQl2aXNpYmlsaXR5bWFw X3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwK LQkJCQkJICB2bWJ1ZmZlciwgcHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uLAotCQkJCQkgIG5l d192bWJpdHMpOwotCiAJLyoKIAkgKiBJZiB0aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxs LXZpc2libGUgYW5kL29yIGFsbC1mcm96ZW4gaW4gdGhlIFZNLAogCSAqIGNvdW50IGl0IGFzIG5l d2x5IHNldCBmb3IgbG9nZ2luZy4KIAkgKi8KLQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZ TUFQX0FMTF9WSVNJQkxFKSA9PSAwKQorCWlmICgocHJlc3VsdC5vbGRfdm1iaXRzICYgVklTSUJJ TElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCAmJgorCQkocHJlc3VsdC5uZXdfdm1iaXRzICYgVklT SUJJTElUWU1BUF9BTExfVklTSUJMRSkgIT0gMCkKIAl7CiAJCXZhY3JlbC0+dm1fbmV3X3Zpc2li bGVfcGFnZXMrKzsKLQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKKwkJaWYgKChwcmVzdWx0Lm5l d192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9IDApCiAJCXsKIAkJCXZhY3Jl bC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7CiAJCQkqdm1fcGFnZV9mcm96ZW4gPSB0 cnVlOwogCQl9CiAJfQotCWVsc2UgaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOKSA9PSAwICYmCi0JCQkgcHJlc3VsdC5hbGxfZnJvemVuKQorCWVsc2UgaWYgKChwcmVz dWx0Lm9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYKKwkJCSAo cHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSAhPSAwKQogCXsK KwkJQXNzZXJ0KChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxF KSAhPSAwKTsKIAkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7CiAJCSp2bV9wYWdlX2Zy b3plbiA9IHRydWU7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IGY3ZTRhZTM4NDNjLi5hZDJhZjEz ZWMzOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtNDIsNiArNDIsNyBAQAogLyogIm9wdGlvbnMiIGZs YWcgYml0cyBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUgKi8KICNkZWZpbmUgSEVBUF9Q QUdFX1BSVU5FX01BUktfVU5VU0VEX05PVwkJKDEgPDwgMCkKICNkZWZpbmUgSEVBUF9QQUdFX1BS VU5FX0ZSRUVaRQkJCQkoMSA8PCAxKQorI2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZN CQkJKDEgPDwgMikKIAogdHlwZWRlZiBzdHJ1Y3QgQnVsa0luc2VydFN0YXRlRGF0YSAqQnVsa0lu c2VydFN0YXRlOwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlzU3RhdGU7 CkBAIC0yMzgsNiArMjM5LDEyIEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1zCiAJ UmVsYXRpb24JcmVsYXRpb247CQkvKiByZWxhdGlvbiBjb250YWluaW5nIGJ1ZmZlciB0byBiZSBw cnVuZWQgKi8KIAlCdWZmZXIJCWJ1ZmZlcjsJCQkvKiBidWZmZXIgdG8gYmUgcHJ1bmVkICovCiAK KwkvKgorCSAqIElmIHdlIHdpbGwgY29uc2lkZXIgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFw LCB2bWJ1ZmZlciBzaG91bGQKKwkgKiBjb250YWluIHRoZSBjb3JyZWN0IGJsb2NrIG9mIHRoZSB2 aXNpYmlsaXR5IG1hcCBhbmQgYmUgcGlubmVkLgorCSAqLworCUJ1ZmZlcgkJdm1idWZmZXI7CisK IAkvKgogCSAqIFRoZSByZWFzb24gcHJ1bmluZyB3YXMgcGVyZm9ybWVkLiAgSXQgaXMgdXNlZCB0 byBzZXQgdGhlIFdBTCByZWNvcmQKIAkgKiBvcGNvZGUgd2hpY2ggaXMgdXNlZCBmb3IgZGVidWdn aW5nIGFuZCBhbmFseXNpcyBwdXJwb3Nlcy4KQEAgLTI1Miw2ICsyNTksOSBAQCB0eXBlZGVmIHN0 cnVjdCBQcnVuZUZyZWV6ZVBhcmFtcwogCSAqCiAJICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBp bmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcywgYW5kCiAJICogd2lsbCBy ZXR1cm4gJ2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxsZXIuCisJ ICoKKwkgKiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGluZGljYXRlcyB0aGF0IHdlIHdpbGwg c2V0IHRoZSBwYWdlJ3Mgc3RhdHVzCisJICogaW4gdGhlIFZNLgogCSAqLwogCWludAkJCW9wdGlv bnM7CiAKQEAgLTI5OSw2ICszMDksMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1 bHQKIAlib29sCQlhbGxfZnJvemVuOwogCVRyYW5zYWN0aW9uSWQgdm1fY29uZmxpY3RfaG9yaXpv bjsKIAorCS8qCisJICogb2xkX3ZtYml0cyBhcmUgdGhlIHN0YXRlIG9mIHRoZSBhbGwtdmlzaWJs ZSBhbmQgYWxsLWZyb3plbiBiaXRzIGluIHRoZQorCSAqIHZpc2liaWxpdHkgbWFwIGJlZm9yZSB1 cGRhdGluZyBpdCBkdXJpbmcgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCisJICogbmV3X3ZtYml0cyBh cmUgdGhlIHN0YXRlIG9mIHRob3NlIGJpdHMgYWZ0ZXIgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCisJ ICoKKwkgKiBUaGVzZSBhcmUgb25seSBzZXQgaWYgdGhlIEhFQVBfUEFHRV9QUlVORV9VUERBVEVf Vk0gb3B0aW9uIGlzIHNldCBhbmQKKwkgKiB3ZSBoYXZlIGF0dGVtcHRlZCB0byB1cGRhdGUgdGhl IFZNLgorCSAqLworCXVpbnQ4CQluZXdfdm1iaXRzOworCXVpbnQ4CQlvbGRfdm1iaXRzOworCiAJ LyoKIAkgKiBXaGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBtYWtlcyByZWwgdHJ1bmNhdGlvbiB1bnNh ZmUuICBUaGlzIGlzIHNldCB0bwogCSAqICd0cnVlJywgZXZlbiBpZiB0aGUgcGFnZSBjb250YWlu cyBMUF9ERUFEIGl0ZW1zLiAgVkFDVVVNIHdpbGwgcmVtb3ZlCi0tIAoyLjQzLjAKCg== --000000000000857fc406462f10e4 Content-Type: text/x-patch; charset="US-ASCII"; name="v28-0005-Move-VM-assert-into-prune-freeze-code.patch" Content-Disposition: attachment; filename="v28-0005-Move-VM-assert-into-prune-freeze-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjapd0b74 RnJvbSAyMThiY2Q0ZGZmZTAxNDY0NzQ5NWE5YmJhMTFkOGJlYWViMTQ2NWNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6NTc6MzQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyOCAwNS8xNV0gTW92ZSBWTSBhc3NlcnQgaW50byBwcnVuZS9mcmVlemUgY29kZQoKVGhp cyBpcyBhIHN0ZXAgdG93YXJkIHNldHRpbmcgdGhlIFZNIGluIHRoZSBzYW1lIFdBTCByZWNvcmQg YXMgcHJ1bmluZwphbmQgZnJlZXppbmcuIEl0IG1vdmVzIHRoZSBjaGVjayBvZiB0aGUgaGVhcCBw YWdlIGludG8gcHJ1bmUvZnJlZXplIGNvZGUKYmVmb3JlIHNldHRpbmcgdGhlIFZNLiBUaGlzIGFs bG93cyB1cyB0byByZW1vdmUgc29tZSBmaWVsZHMgb2YgdGhlClBydW5lRnJlZXplUmVzdWx0Lgot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICB8IDg2ICsrKysrKysrKysr KysrKysrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8 IDY4ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAg ICAgICAgICB8IDI1ICsrKy0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDc3IGluc2VydGlvbnMoKyks IDEwMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDE0 ZDQwNDc2YmU5Li4zOTE0OWZiYmE3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMK QEAgLTkxOCw2ICs5MTgsMzEgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKFBydW5lU3RhdGUgKnBy c3RhdGUsCiAJcmV0dXJuIHRydWU7CiB9CiAKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisK Ky8qCisgKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoKSB3aGlj aCBjYW4gYmUgdXNlZCBmb3IgY2FsbGVycworICogdGhhdCBleHBlY3Qgbm8gTFBfREVBRCBvbiB0 aGUgcGFnZS4gQ3VycmVudGx5IGFzc2VydC1vbmx5LCBidXQgdGhlcmUgaXMgbm8KKyAqIHJlYXNv biBub3QgdG8gdXNlIGl0IG91dHNpZGUgb2YgYXNzZXJ0cy4KKyAqLworc3RhdGljIGJvb2wKK2hl YXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkg VHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCisJCQkJ CQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJIE9mZnNldE51 bWJlciAqbG9nZ2luZ19vZmZudW0pCit7CisKKwlyZXR1cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2Fs bF92aXNpYmxlKHJlbCwgYnVmLAorCQkJCQkJCQkJCSAgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkg IE5VTEwsIDAsCisJCQkJCQkJCQkJICBhbGxfZnJvemVuLAorCQkJCQkJCQkJCSAgdmlzaWJpbGl0 eV9jdXRvZmZfeGlkLAorCQkJCQkJCQkJCSAgbG9nZ2luZ19vZmZudW0pOworfQorI2VuZGlmCisK KwogCiAvKgogICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxs eSBmcmVlemUgdHVwbGVzIG9uIHRoZQpAQCAtOTcxLDYgKzk5Niw3IEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJQnVmZmVyCQl2bWJ1ZmZl ciA9IHBhcmFtcy0+dm1idWZmZXI7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVy KTsKIAlCbG9ja051bWJlciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsK KwlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAlQcnVuZVN0YXRlCXByc3RhdGU7CiAJYm9vbAkJZG9fZnJlZXplOwogCWJvb2wJCWRvX3By dW5lOwpAQCAtMTEyOSwyMyArMTE1NSw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBy dW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJcHJlc3VsdC0+bmZyb3plbiA9IHByc3RhdGUubmZy b3plbjsKIAlwcmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90dXBsZXM7CiAJcHJl c3VsdC0+cmVjZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVz OwotCXByZXN1bHQtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxfdmlzaWJsZTsKLQlwcmVzdWx0 LT5hbGxfZnJvemVuID0gcHJzdGF0ZS5hbGxfZnJvemVuOwogCXByZXN1bHQtPmhhc3R1cCA9IHBy c3RhdGUuaGFzdHVwOwogCi0JLyoKLQkgKiBGb3IgY2FsbGVycyBwbGFubmluZyB0byB1cGRhdGUg dGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpvbgotCSAqIGZvciB0aGF0IHJl Y29yZCBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gIEhvd2V2ZXIsIGlmIHRo ZQotCSAqIHBhZ2UgaXMgY29tcGxldGVseSBmcm96ZW4sIHRoZXJlIGNhbiBiZSBubyBjb25mbGlj dCBhbmQgdGhlCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBzaG91bGQgcmVtYWluIEludmFsaWRU cmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcwotCSAqIHRoZSBjYXNlIHRoYXQgd2UganVzdCBm cm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSByZWNvcmQKLQkgKiBpbmNsdWRl ZCB0aGUgY29uZmxpY3QgWElEIGFscmVhZHkgc28gdGhlIGNhbGxlciBkb2Vzbid0IG5lZWQgaXQu Ci0JICovCi0JaWYgKHByZXN1bHQtPmFsbF9mcm96ZW4pCi0JCXByZXN1bHQtPnZtX2NvbmZsaWN0 X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQllbHNlCi0JCXByZXN1bHQtPnZtX2Nv bmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKLQogCXByZXN1 bHQtPmxwZGVhZF9pdGVtcyA9IHByc3RhdGUubHBkZWFkX2l0ZW1zOwogCS8qIHRoZSBwcmVzdWx0 LT5kZWFkb2Zmc2V0cyBhcnJheSB3YXMgYWxyZWFkeSBmaWxsZWQgaW4gKi8KIApAQCAtMTE2Myw2 ICsxMTc0LDQ2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1z ICpwYXJhbXMsCiAJCX0KIAl9CiAKKwkvKgorCSAqIElmIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5 IG1hcCwgdGhlIGNvbmZsaWN0IGhvcml6b24gZm9yIHRoYXQgcmVjb3JkCisJICogbXVzdCBiZSB0 aGUgbmV3ZXN0IHhtaW4gb24gdGhlIHBhZ2UuICBIb3dldmVyLCBpZiB0aGUgcGFnZSBpcworCSAq IGNvbXBsZXRlbHkgZnJvemVuLCB0aGVyZSBjYW4gYmUgbm8gY29uZmxpY3QgYW5kIHRoZSB2bV9j b25mbGljdF9ob3Jpem9uCisJICogc2hvdWxkIHJlbWFpbiBJbnZhbGlkVHJhbnNhY3Rpb25JZC4g IFRoaXMgaW5jbHVkZXMgdGhlIGNhc2UgdGhhdCB3ZQorCSAqIGp1c3QgZnJvemUgYWxsIHRoZSB0 dXBsZXM7IHRoZSBwcnVuZS1mcmVlemUgcmVjb3JkIGluY2x1ZGVkIHRoZQorCSAqIGNvbmZsaWN0 IFhJRCBhbHJlYWR5IHNvIHdlIGRvbid0IG5lZWQgdG8gYWdhaW4uCisJICovCisJaWYgKHByc3Rh dGUuYWxsX2Zyb3plbikKKwkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlv bklkOworCWVsc2UKKwkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUudmlzaWJpbGl0eV9j dXRvZmZfeGlkOworCisJLyoKKwkgKiBEdXJpbmcgaXRzIHNlY29uZCBwYXNzIG92ZXIgdGhlIGhl YXAsIFZBQ1VVTSBjYWxscworCSAqIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpIHRv IGRldGVybWluZSB3aGV0aGVyIGEgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJv emVuLiBUaGUgbG9naWMgaGVyZSBpcyBzaW1pbGFyLiBBZnRlciBjb21wbGV0aW5nCisJICogcHJ1 bmluZyBhbmQgZnJlZXppbmcsIHVzZSBhbiBhc3NlcnRpb24gdG8gdmVyaWZ5IHRoYXQgb3VyIHJl c3VsdHMKKwkgKiByZW1haW4gY29uc2lzdGVudCB3aXRoIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxf dmlzaWJsZSgpLgorCSAqLworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlpZiAocHJzdGF0 ZS5hbGxfdmlzaWJsZSkKKwl7CisJCVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOworCQlib29s CQlkZWJ1Z19hbGxfZnJvemVuOworCisJCUFzc2VydChwcmVzdWx0LT5scGRlYWRfaXRlbXMgPT0g MCk7CisKKwkJQXNzZXJ0KGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShwYXJhbXMtPnJlbGF0aW9u LCBidWZmZXIsCisJCQkJCQkJCQkJcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluLAorCQkJCQkJ CQkJCSZkZWJ1Z19hbGxfZnJvemVuLAorCQkJCQkJCQkJCSZkZWJ1Z19jdXRvZmYsIG9mZl9sb2Mp KTsKKworCQlBc3NlcnQocHJzdGF0ZS5hbGxfZnJvemVuID09IGRlYnVnX2FsbF9mcm96ZW4pOwor CisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVidWdfY3V0b2ZmKSB8fAorCQkJICAg ZGVidWdfY3V0b2ZmID09IHZtX2NvbmZsaWN0X2hvcml6b24pOworCX0KKyNlbmRpZgorCiAJLyog Tm93IHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIFBEX0FMTF9WSVNJQkxFIGhpbnQgKi8K IAlBc3NlcnQoIXByc3RhdGUuYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09 IDApKTsKIApAQCAtMTIwOSwxMiArMTI2MCwxMSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBm b3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKIAkJICogd2VyZSBmcm96 ZW4uCiAJCSAqLwotCQlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fAotCQkJICAgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24pKTsKKwkJQXNzZXJ0 KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHZtX2NvbmZsaWN0 X2hvcml6b24pKTsKIAogCQl2aXNpYmlsaXR5bWFwX3NldChwYXJhbXMtPnJlbGF0aW9uLCBibG9j a25vLCBidWZmZXIsCiAJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJICB2bWJ1ZmZl ciwgcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJCSAgdm1idWZmZXIsIHZtX2Nv bmZsaWN0X2hvcml6b24sCiAJCQkJCQkgIG5ld192bWJpdHMpOwogCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGQ1YzU3NTE2Nzg1Li42MTU2NGFlYTVmZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtNDU2LDIwICs0NTYsNiBAQCBzdGF0aWMg dm9pZCBkZWFkX2l0ZW1zX2FkZChMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25v LCBPZmZzZXROdW1iZXIgKgogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRl ICp2YWNyZWwpOwogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZh Y3JlbCk7CiAKLSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi1zdGF0aWMgYm9vbCBoZWFwX3Bh Z2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJIFRy YW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKLQkJCQkJCQkJCSBib29sICphbGxfZnJvemVuLAotCQkJ CQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCQkJCSBP ZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKLSNlbmRpZgotc3RhdGljIGJvb2wgaGVhcF9w YWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJ CQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCi0JCQkJCQkJCQkJICAgT2Zmc2V0TnVt YmVyICpkZWFkb2Zmc2V0cywKLQkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAotCQkJCQkJ CQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqdmlz aWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqbG9nZ2luZ19v ZmZudW0pOwogc3RhdGljIHZvaWQgdXBkYXRlX3JlbHN0YXRzX2FsbF9pbmRleGVzKExWUmVsU3Rh dGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCB2YWN1dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJn KTsKIHN0YXRpYyB2b2lkIHVwZGF0ZV92YWN1dW1fZXJyb3JfaW5mbyhMVlJlbFN0YXRlICp2YWNy ZWwsCkBAIC0yMDA1LDMyICsxOTkxLDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZh Y3JlbCwKIAkJdmFjcmVsLT5uZXdfZnJvemVuX3R1cGxlX3BhZ2VzKys7CiAJfQogCi0JLyoKLQkg KiBWQUNVVU0gd2lsbCBjYWxsIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIGR1cmluZyB0aGUg c2Vjb25kIHBhc3Mgb3ZlcgotCSAqIHRoZSBoZWFwIHRvIGRldGVybWluZSBhbGxfdmlzaWJsZSBh bmQgYWxsX2Zyb3plbiBmb3IgdGhlIHBhZ2UgLS0gdGhpcwotCSAqIGlzIGEgc3BlY2lhbGl6ZWQg dmVyc2lvbiBvZiB0aGUgbG9naWMgZnJvbSB0aGlzIGZ1bmN0aW9uLiAgTm93IHRoYXQKLQkgKiB3 ZSd2ZSBmaW5pc2hlZCBwcnVuaW5nIGFuZCBmcmVlemluZywgbWFrZSBzdXJlIHRoYXQgd2UncmUg aW4gdG90YWwKLQkgKiBhZ3JlZW1lbnQgd2l0aCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSB1 c2luZyBhbiBhc3NlcnRpb24uCi0JICovCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCWlm IChwcmVzdWx0LmFsbF92aXNpYmxlKQotCXsKLQkJVHJhbnNhY3Rpb25JZCBkZWJ1Z19jdXRvZmY7 Ci0JCWJvb2wJCWRlYnVnX2FsbF9mcm96ZW47Ci0KLQkJQXNzZXJ0KHByZXN1bHQubHBkZWFkX2l0 ZW1zID09IDApOwotCi0JCUFzc2VydChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFjcmVsLT5y ZWwsIGJ1ZiwKLQkJCQkJCQkJCQl2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwgJmRlYnVnX2Fs bF9mcm96ZW4sCi0JCQkJCQkJCQkJJmRlYnVnX2N1dG9mZiwgJnZhY3JlbC0+b2ZmbnVtKSk7Ci0K LQkJQXNzZXJ0KHByZXN1bHQuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKLQotCQlB c3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJCSAgIGRlYnVn X2N1dG9mZiA9PSBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pOwotCX0KLSNlbmRpZgotCiAJ LyoKIAkgKiBOb3cgc2F2ZSBkZXRhaWxzIG9mIHRoZSBMUF9ERUFEIGl0ZW1zIGZyb20gdGhlIHBh Z2UgaW4gdmFjcmVsCiAJICovCkBAIC0zNDg3LDI5ICszNDQ3LDYgQEAgZGVhZF9pdGVtc19jbGVh bnVwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAl2YWNyZWwtPnB2cyA9IE5VTEw7CiB9CiAKLSNpZmRl ZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi0KLS8qCi0gKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2Vfd291 bGRfYmVfYWxsX3Zpc2libGUoKSB3aGljaCBjYW4gYmUgdXNlZCBmb3IgY2FsbGVycwotICogdGhh dCBleHBlY3Qgbm8gTFBfREVBRCBvbiB0aGUgcGFnZS4gQ3VycmVudGx5IGFzc2VydC1vbmx5LCBi dXQgdGhlcmUgaXMgbm8KLSAqIHJlYXNvbiBub3QgdG8gdXNlIGl0IG91dHNpZGUgb2YgYXNzZXJ0 cy4KLSAqLwotc3RhdGljIGJvb2wKLWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAotCQkJCQkJ IGJvb2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRv ZmZfeGlkLAotCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pCi17Ci0KLQlyZXR1 cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHJlbCwgYnVmLAotCQkJCQkJCQkJCSAg T2xkZXN0WG1pbiwKLQkJCQkJCQkJCQkgIE5VTEwsIDAsCi0JCQkJCQkJCQkJICBhbGxfZnJvemVu LAotCQkJCQkJCQkJCSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJCQkJCSAgbG9nZ2lu Z19vZmZudW0pOwotfQotI2VuZGlmCiAKIC8qCiAgKiBDaGVjayB3aGV0aGVyIHRoZSBoZWFwIHBh Z2UgaW4gYnVmIGlzIGFsbC12aXNpYmxlIGV4Y2VwdCBmb3IgdGhlIGRlYWQKQEAgLTM1MzMsMTUg KzM0NzAsMTIgQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVy IGJ1ZiwKICAqICAtICpsb2dnaW5nX29mZm51bTogT2Zmc2V0TnVtYmVyIG9mIGN1cnJlbnQgdHVw bGUgYmVpbmcgcHJvY2Vzc2VkOwogICogICAgIHVzZWQgYnkgdmFjdXVtJ3MgZXJyb3IgY2FsbGJh Y2sgc3lzdGVtLgogICoKLSAqIENhbGxlcnMgbG9va2luZyB0byB2ZXJpZnkgdGhhdCB0aGUgcGFn ZSBpcyBhbHJlYWR5IGFsbC12aXNpYmxlIGNhbiBjYWxsCi0gKiBoZWFwX3BhZ2VfaXNfYWxsX3Zp c2libGUoKS4KLSAqCiAgKiBUaGlzIGxvZ2ljIGlzIGNsb3NlbHkgcmVsYXRlZCB0byBoZWFwX3By dW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkuCiAgKiBJZiB5b3UgbW9kaWZ5IHRoaXMg ZnVuY3Rpb24sIGVuc3VyZSBjb25zaXN0ZW5jeSB3aXRoIHRoYXQgY29kZS4gQW4KICAqIGFzc2Vy dGlvbiBjcm9zcy1jaGVja3MgdGhhdCBib3RoIHJlbWFpbiBpbiBhZ3JlZW1lbnQuIERvIG5vdCBp bnRyb2R1Y2UgbmV3CiAgKiBzaWRlLWVmZmVjdHMuCiAgKi8KLXN0YXRpYyBib29sCitib29sCiBo ZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAog CQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJCQkgICBPZmZzZXROdW1i ZXIgKmRlYWRvZmZzZXRzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IGFkMmFmMTNlYzM5Li5iZWMyZjg0 MDEwMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMjU3LDggKzI1Nyw3IEBAIHR5cGVkZWYgc3RydWN0 IFBydW5lRnJlZXplUGFyYW1zCiAJICogSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVyBp bmRpY2F0ZXMgdGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQKIAkgKiBMUF9VTlVTRUQgZHVyaW5n IHBydW5pbmcuCiAJICoKLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIGluZGljYXRlcyB0aGF0 IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzLCBhbmQKLQkgKiB3aWxsIHJldHVybiAnYWxsX3Zp c2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3MgdG8gdGhlIGNhbGxlci4KKwkgKiBIRUFQX1BBR0Vf UFJVTkVfRlJFRVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzCiAJ ICoKIAkgKiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGluZGljYXRlcyB0aGF0IHdlIHdpbGwg c2V0IHRoZSBwYWdlJ3Mgc3RhdHVzCiAJICogaW4gdGhlIFZNLgpAQCAtMjk0LDIxICsyOTMsNiBA QCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWludAkJCWxpdmVfdHVwbGVzOwog CWludAkJCXJlY2VudGx5X2RlYWRfdHVwbGVzOwogCi0JLyoKLQkgKiBhbGxfdmlzaWJsZSBhbmQg YWxsX2Zyb3plbiBpbmRpY2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KLQkg KiBiaXRzIGluIHRoZSB2aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UsIGFm dGVyIHBydW5pbmcuCi0JICoKLQkgKiB2bV9jb25mbGljdF9ob3Jpem9uIGlzIHRoZSBuZXdlc3Qg eG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZS4gIFRoZQotCSAqIGNhbGxlciBjYW4gdXNl IGl0IGFzIHRoZSBjb25mbGljdCBob3Jpem9uIHdoZW4gc2V0dGluZyB0aGUgVk0gYml0cy4gIEl0 Ci0JICogaXMgb25seSB2YWxpZCBpZiB3ZSBmcm96ZSBzb21lIHR1cGxlcyAobmZyb3plbiA+IDAp LCBhbmQgYWxsX2Zyb3plbiBpcwotCSAqIHRydWUuCi0JICoKLQkgKiBUaGVzZSBhcmUgb25seSBz ZXQgaWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuCi0JICovCi0JYm9vbAkJ YWxsX3Zpc2libGU7Ci0JYm9vbAkJYWxsX2Zyb3plbjsKLQlUcmFuc2FjdGlvbklkIHZtX2NvbmZs aWN0X2hvcml6b247Ci0KIAkvKgogCSAqIG9sZF92bWJpdHMgYXJlIHRoZSBzdGF0ZSBvZiB0aGUg YWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYml0cyBpbiB0aGUKIAkgKiB2aXNpYmlsaXR5IG1h cCBiZWZvcmUgdXBkYXRpbmcgaXQgZHVyaW5nIHBoYXNlIEkgb2YgdmFjdXVtaW5nLgpAQCAtNDU0 LDYgKzQzOCwxMyBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogLyogaW4gaGVhcC92YWN1dW1sYXp5LmMgKi8K IGV4dGVybiB2b2lkIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsCiAJCQkJCQkJY29uc3Qg VmFjdXVtUGFyYW1zIHBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKK2V4 dGVybiBib29sIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1 ZmZlciBidWYsCisJCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJ CQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCisJCQkJCQkJCQkJICAgaW50IG5kZWFk b2Zmc2V0cywKKwkJCQkJCQkJCQkgICBib29sICphbGxfZnJvemVuLAorCQkJCQkJCQkJCSAgIFRy YW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkgICBPZmZzZXRO dW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKIAogLyogaW4gaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5j ICovCiBleHRlcm4gYm9vbCBIZWFwVHVwbGVTYXRpc2ZpZXNWaXNpYmlsaXR5KEhlYXBUdXBsZSBo dHVwLCBTbmFwc2hvdCBzbmFwc2hvdCwKLS0gCjIuNDMuMAoK --000000000000857fc406462f10e4 Content-Type: text/x-patch; charset="US-ASCII"; name="v28-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v28-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjapd4225 RnJvbSBiZWIxYWUzNTU3OTA0OTYyZGNlYzYyNjZiODgyY2RjNzVhMGM3MDUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTY6MTY6MjIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyOCAwNi8xNV0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bSBw aGFzZSBJCiBwcnVuZS9mcmVlemUKClZhY3V1bSBubyBsb25nZXIgZW1pdHMgYSBzZXBhcmF0ZSBX QUwgcmVjb3JkIGZvciBlYWNoIHBhZ2Ugc2V0CmFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4gZHVy aW5nIHBoYXNlIEkuIEluc3RlYWQsIHZpc2liaWxpdHkgbWFwCnVwZGF0ZXMgYXJlIG5vdyBpbmNs dWRlZCBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQgdGhhdAppcyBh bHJlYWR5IGVtaXR0ZWQgZm9yIHBydW5pbmcgYW5kIGZyZWV6aW5nLgoKUHJldmlvdXNseSwgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBkZXRlcm1pbmVkIHdoZXRoZXIgYSBwYWdlIHdhcwph bGwtdmlzaWJsZSwgYnV0IHRoZSBjb3JyZXNwb25kaW5nIFZNIGJpdHMgd2VyZSBvbmx5IHNldCBs YXRlciBpbgpsYXp5X3NjYW5fcHJ1bmUoKS4gTm93IHRoZSBWTSBpcyB1cGRhdGVkIGltbWVkaWF0 ZWx5IGluCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCksIGF0IHRoZSBzYW1lIHRpbWUgYXMg dGhlIGhlYXAKbW9kaWZpY2F0aW9ucy4KClRoaXMgY2hhbmdlIGFwcGxpZXMgb25seSB0byB2YWN1 dW0gcGhhc2UgSSwgbm90IHRvIHBydW5pbmcgcGVyZm9ybWVkCmR1cmluZyBub3JtYWwgcGFnZSBh Y2Nlc3MuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmll d2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog S2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8g TGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1WN1NPTHhk SzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgfCAyNzcgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQs IDE1OCBpbnNlcnRpb25zKCspLCAxMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYwppbmRleCAzOTE0OWZiYmE3Yy4uMzUyMWU3MGI4ZDAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jCkBAIC0yMDUsNiArMjA1LDExIEBAIHN0YXRpYyBib29sIGhlYXBf cGFnZV93aWxsX3NldF92bShQcnVuZVN0YXRlICpwcnN0YXRlLAogCQkJCQkJCQkgIGludCBubHBk ZWFkX2l0ZW1zLAogCQkJCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAogCQkJCQkJCQkgIHVpbnQ4 ICpuZXdfdm1iaXRzKTsKK3N0YXRpYyBUcmFuc2FjdGlvbklkIGdldF9jb25mbGljdF94aWQoYm9v bCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsIGJvb2wgZG9fc2V0X3ZtLAorCQkJCQkJCQkJICB1 aW50OCBvbGRfdm1iaXRzLCB1aW50OCBuZXdfdm1iaXRzLAorCQkJCQkJCQkJICBUcmFuc2FjdGlv bklkIGxhdGVzdF94aWRfcmVtb3ZlZCwKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBmcnpfY29u ZmxpY3RfaG9yaXpvbiwKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCB2aXNpYmlsaXR5X2N1dG9m Zl94aWQpOwogCiAKIC8qCkBAIC03OTUsNiArODAwLDY4IEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6 ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlyZXR1cm4gZG9fZnJlZXplOwog fQogCisvKgorICogQ2FsY3VsYXRlIHRoZSBjb25mbGljdCBob3Jpem9uIGZvciB0aGUgd2hvbGUg WExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTgorICogb3IgWExPR19IRUFQMl9QUlVORV9PTl9B Q0NFU1MgcmVjb3JkLgorICovCitzdGF0aWMgVHJhbnNhY3Rpb25JZAorZ2V0X2NvbmZsaWN0X3hp ZChib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwgYm9vbCBkb19zZXRfdm0sCisJCQkJIHVp bnQ4IG9sZF92bWJpdHMsIHVpbnQ4IG5ld192bWJpdHMsCisJCQkJIFRyYW5zYWN0aW9uSWQgbGF0 ZXN0X3hpZF9yZW1vdmVkLCBUcmFuc2FjdGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9uLAorCQkJ CSBUcmFuc2FjdGlvbklkIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCkKK3sKKwlUcmFuc2FjdGlvbklk IGNvbmZsaWN0X3hpZDsKKworCS8qCisJICogV2UgY2FuIG9taXQgdGhlIHNuYXBzaG90IGNvbmZs aWN0IGhvcml6b24gaWYgd2UgYXJlIG5vdCBwcnVuaW5nIG9yCisJICogZnJlZXppbmcgYW55IHR1 cGxlcyBhbmQgYXJlIHNldHRpbmcgYW4gYWxyZWFkeSBhbGwtdmlzaWJsZSBwYWdlCisJICogYWxs LWZyb3plbiBpbiB0aGUgVk0uIEluIHRoaXMgY2FzZSwgYWxsIG9mIHRoZSB0dXBsZXMgb24gdGhl IHBhZ2UgbXVzdAorCSAqIGFscmVhZHkgYmUgdmlzaWJsZSB0byBhbGwgTVZDQyBzbmFwc2hvdHMg b24gdGhlIHN0YW5kYnkuCisJICovCisJaWYgKCFkb19wcnVuZSAmJgorCQkhZG9fZnJlZXplICYm CisJCWRvX3NldF92bSAmJgorCQkob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lC TEUpICE9IDAgJiYKKwkJKG5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9 IDApCisJCXJldHVybiBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKworCS8qCisJICogVGhlIHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hvbGUgcmVjb3JkIHNob3VsZCBiZSB0aGUgbW9z dAorCSAqIGNvbnNlcnZhdGl2ZSBvZiBhbGwgdGhlIGhvcml6b25zIGNhbGN1bGF0ZWQgZm9yIGFu eSBvZiB0aGUgcG9zc2libGUKKwkgKiBtb2RpZmljYXRpb25zLiAgSWYgdGhpcyByZWNvcmQgd2ls bCBwcnVuZSB0dXBsZXMsIGFueSB0cmFuc2FjdGlvbnMgb24KKwkgKiB0aGUgc3RhbmRieSBvbGRl ciB0aGFuIHRoZSB5b3VuZ2VzdCB4bWF4IG9mIHRoZSBtb3N0IHJlY2VudGx5IHJlbW92ZWQKKwkg KiB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHdpbGwgY29uZmxpY3QuICBJZiB0aGlzIHJl Y29yZCB3aWxsIGZyZWV6ZQorCSAqIHR1cGxlcywgYW55IHRyYW5zYWN0aW9ucyBvbiB0aGUgc3Rh bmRieSB3aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUKKwkgKiB5b3VuZ2VzdCB0dXBsZSB0aGlzIHJl Y29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0LgorCSAqLworCWNvbmZsaWN0X3hpZCA9IElu dmFsaWRUcmFuc2FjdGlvbklkOworCisJLyoKKwkgKiBJZiB3ZSBhcmUgdXBkYXRpbmcgdGhlIFZN LCB0aGUgY29uZmxpY3QgaG9yaXpvbiBpcyBhbG1vc3QgYWx3YXlzIHRoZQorCSAqIHZpc2liaWxp dHkgY3V0b2ZmIFhJRC4KKwkgKgorCSAqIFNlcGFyYXRlbHksIGlmIHdlIGFyZSBmcmVlemluZyBh bnkgdHVwbGVzLCBhcyBhbiBvcHRpbWl6YXRpb24sIHdlIGNhbgorCSAqIHVzZSB0aGUgdmlzaWJp bGl0eV9jdXRvZmZfeGlkIGFzIHRoZSBjb25mbGljdCBob3Jpem9uIGlmIHRoZSBwYWdlIHdpbGwK KwkgKiBiZSBhbGwtZnJvemVuLiBUaGlzIGlzIHRydWUgZXZlbiBpZiB0aGVyZSBhcmUgTFBfREVB RCBsaW5lIHBvaW50ZXJzCisJICogYmVjYXVzZSB3ZSBpZ25vcmVkIHRob3NlIHdoZW4gbWFpbnRh aW5pbmcgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZC4KKwkgKiBUaGlzIHdpbGwgaGF2ZSBiZWVu IGNhbGN1bGF0ZWQgZWFybGllciBhcyB0aGUgZnJ6X2NvbmZsaWN0X2hvcml6b24gd2hlbgorCSAq IHdlIGRldGVybWluZWQgd2Ugd291bGQgZnJlZXplLgorCSAqLworCWlmIChkb19zZXRfdm0pCisJ CWNvbmZsaWN0X3hpZCA9IHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwllbHNlIGlmIChkb19mcmVl emUpCisJCWNvbmZsaWN0X3hpZCA9IGZyel9jb25mbGljdF9ob3Jpem9uOworCisJLyoKKwkgKiBJ ZiB3ZSBhcmUgcmVtb3ZpbmcgdHVwbGVzIHdpdGggYSB5b3VuZ2VyIHhtYXggdGhhbiBvdXIgc28g ZmFyCisJICogY2FsY3VsYXRlZCBjb25mbGljdF94aWQsIHdlIG11c3QgdXNlIHRoaXMgYXMgb3Vy IGhvcml6b24uCisJICovCisJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGxhdGVzdF94aWRfcmVt b3ZlZCwgY29uZmxpY3RfeGlkKSkKKwkJY29uZmxpY3RfeGlkID0gbGF0ZXN0X3hpZF9yZW1vdmVk OworCisJcmV0dXJuIGNvbmZsaWN0X3hpZDsKK30KKwogLyoKICAqIEhlbHBlciB0byBjb3JyZWN0 IGFueSBjb3JydXB0aW9uIGRldGVjdGVkIG9uIGFuIGhlYXAgcGFnZSBhbmQgaXRzCiAgKiBjb3Jy ZXNwb25kaW5nIHZpc2liaWxpdHkgbWFwIHBhZ2UgYWZ0ZXIgcHJ1bmluZyBidXQgYmVmb3JlIHNl dHRpbmcgdGhlCkBAIC05OTYsNyArMTA2Myw2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJQnVmZmVyCQl2bWJ1ZmZlciA9IHBhcmFtcy0+ dm1idWZmZXI7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlCbG9ja051 bWJlciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKLQlUcmFuc2FjdGlv bklkIHZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlQcnVuZVN0 YXRlCXByc3RhdGU7CiAJYm9vbAkJZG9fZnJlZXplOwogCWJvb2wJCWRvX3BydW5lOwpAQCAtMTAw NCwxMCArMTA3MCwxMCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBh cmFtcyAqcGFyYW1zLAogCWJvb2wJCWRvX3NldF92bTsKIAlib29sCQlkaWRfdHVwbGVfaGludF9m cGk7CiAJaW50NjQJCWZwaV9iZWZvcmUgPSBwZ1dhbFVzYWdlLndhbF9mcGk7CisJVHJhbnNhY3Rp b25JZCBjb25mbGljdF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAl1aW50OAkJbmV3X3Zt Yml0cyA9IDA7CiAJdWludDgJCW9sZF92bWJpdHMgPSAwOwogCi0KIAkvKiBJbml0aWFsaXplIHBy c3RhdGUgKi8KIAlwcnVuZV9mcmVlemVfc2V0dXAocGFyYW1zLAogCQkJCQkgICBuZXdfcmVsZnJv emVuX3hpZCwgbmV3X3JlbG1pbl9teGlkLApAQCAtMTA2OCw2ICsxMTM0LDM3IEBAIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCXByc3RhdGUu YWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCUFzc2VydCghcHJz dGF0ZS5hbGxfZnJvemVuIHx8IHByc3RhdGUuYWxsX3Zpc2libGUpOworCUFzc2VydCghcHJzdGF0 ZS5hbGxfdmlzaWJsZSB8fCAocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCkpOworCisJLyoKKwkg KiBEZWNpZGUgd2hldGhlciB0byBzZXQgdGhlIFZNIGJpdHMgYmFzZWQgb24gaW5mb3JtYXRpb24g ZnJvbSB0aGUgVk0gYW5kCisJICogdGhlIGFsbF92aXNpYmxlL2FsbF9mcm96ZW4gZmxhZ3MuCisJ ICovCisJZG9fc2V0X3ZtID0gaGVhcF9wYWdlX3dpbGxfc2V0X3ZtKCZwcnN0YXRlLAorCQkJCQkJ CQkJICBwYXJhbXMtPnJlbGF0aW9uLAorCQkJCQkJCQkJICBibG9ja25vLAorCQkJCQkJCQkJICBi dWZmZXIsCisJCQkJCQkJCQkgIHBhZ2UsCisJCQkJCQkJCQkgIHZtYnVmZmVyLAorCQkJCQkJCQkJ ICBwcnN0YXRlLmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJCSAgJm9sZF92bWJpdHMsCisJCQkJCQkJ CQkgICZuZXdfdm1iaXRzKTsKKworCS8qCisJICogbmV3X3ZtYml0cyBzaG91bGQgYmUgMCByZWdh cmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGlzCisJICogYWxsLXZpc2libGUgaWYg d2UgZG8gbm90IGludGVuZCB0byBzZXQgdGhlIFZNLgorCSAqLworCUFzc2VydChkb19zZXRfdm0g fHwgbmV3X3ZtYml0cyA9PSAwKTsKKworCWNvbmZsaWN0X3hpZCA9IGdldF9jb25mbGljdF94aWQo ZG9fcHJ1bmUsIGRvX2ZyZWV6ZSwgZG9fc2V0X3ZtLAorCQkJCQkJCQkJb2xkX3ZtYml0cywgbmV3 X3ZtYml0cywKKwkJCQkJCQkJCXByc3RhdGUubGF0ZXN0X3hpZF9yZW1vdmVkLAorCQkJCQkJCQkJ cHJzdGF0ZS5mcnpfY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJCQkJCXByc3RhdGUudmlzaWJpbGl0 eV9jdXRvZmZfeGlkKTsKKworCS8qIExvY2sgdm1idWZmZXIgYmVmb3JlIGVudGVyaW5nIGEgY3Jp dGljYWwgc2VjdGlvbiAqLworCWlmIChkb19zZXRfdm0pCisJCUxvY2tCdWZmZXIodm1idWZmZXIs IEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CiAKIAkvKiBBbnkgZXJyb3Igd2hpbGUgYXBwbHlpbmcg dGhlIGNoYW5nZXMgaXMgY3JpdGljYWwgKi8KIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKQEAgLTEw ODksMTQgKzExODYsMTcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQ YXJhbXMgKnBhcmFtcywKIAogCQkvKgogCQkgKiBJZiB0aGF0J3MgYWxsIHdlIGhhZCB0byBkbyB0 byB0aGUgcGFnZSwgdGhpcyBpcyBhIG5vbi1XQUwtbG9nZ2VkCi0JCSAqIGhpbnQuICBJZiB3ZSBh cmUgZ29pbmcgdG8gZnJlZXplIG9yIHBydW5lIHRoZSBwYWdlLCB3ZSB3aWxsIG1hcmsKLQkJICog dGhlIGJ1ZmZlciBkaXJ0eSBiZWxvdy4KKwkJICogaGludC4gIElmIHdlIGFyZSBnb2luZyB0byBm cmVlemUgb3IgcHJ1bmUgdGhlIHBhZ2Ugb3Igc2V0CisJCSAqIFBEX0FMTF9WSVNJQkxFLCB3ZSB3 aWxsIG1hcmsgdGhlIGJ1ZmZlciBkaXJ0eSBiZWxvdy4KKwkJICoKKwkJICogU2V0dGluZyBQRF9B TExfVklTSUJMRSBpcyBmdWxseSBXQUwtbG9nZ2VkIGJlY2F1c2UgaXQgaXMgZm9yYmlkZGVuCisJ CSAqIGZvciB0aGUgVk0gdG8gYmUgc2V0IGFuZCBQRF9BTExfVklTSUJMRSB0byBiZSBjbGVhci4K IAkJICovCi0JCWlmICghZG9fZnJlZXplICYmICFkb19wcnVuZSkKKwkJaWYgKCFkb19mcmVlemUg JiYgIWRvX3BydW5lICYmICFkb19zZXRfdm0pCiAJCQlNYXJrQnVmZmVyRGlydHlIaW50KGJ1ZmZl ciwgdHJ1ZSk7CiAJfQogCi0JaWYgKGRvX3BydW5lIHx8IGRvX2ZyZWV6ZSkKKwlpZiAoZG9fcHJ1 bmUgfHwgZG9fZnJlZXplIHx8IGRvX3NldF92bSkKIAl7CiAJCS8qIEFwcGx5IHRoZSBwbGFubmVk IGl0ZW0gY2hhbmdlcyBhbmQgcmVwYWlyIHBhZ2UgZnJhZ21lbnRhdGlvbi4gKi8KIAkJaWYgKGRv X3BydW5lKQpAQCAtMTExMCw2ICsxMjEwLDI3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCWlmIChkb19mcmVlemUpCiAJCQloZWFwX2Zy ZWV6ZV9wcmVwYXJlZF90dXBsZXMoYnVmZmVyLCBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJv emVuKTsKIAorCQkvKiBTZXQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBwYWdlIHZpc2liaWxpdHkg aGludCAqLworCQlpZiAoZG9fc2V0X3ZtKQorCQl7CisJCQkvKgorCQkJICogV2hpbGUgaXQgaXMg dmFsaWQgZm9yIFBEX0FMTF9WSVNJQkxFIHRvIGJlIHNldCB3aGVuIHRoZQorCQkJICogY29ycmVz cG9uZGluZyBWTSBiaXQgaXMgY2xlYXIsIHdlIHN0cm9uZ2x5IHByZWZlciB0byBrZWVwIHRoZW0K KwkJCSAqIGluIHN5bmMuCisJCQkgKgorCQkJICogRXZlbiBpZiB3ZSBhcmUgb25seSBzZXR0aW5n IHRoZSBWTSBhbmQgUERfQUxMX1ZJU0lCTEUgaXMKKwkJCSAqIGFscmVhZHkgc2V0LCB3ZSBkb24n dCBuZWVkIHRvIHdvcnJ5IGFib3V0IHVubmVjZXNzYXJpbHkKKwkJCSAqIGRpcnR5aW5nIHRoZSBo ZWFwIGJ1ZmZlciBiZWxvdy4gTmVhcmx5IHRoZSBvbmx5IHNjZW5hcmlvIHdoZXJlCisJCQkgKiBQ RF9BTExfVklTSUJMRSBpcyBzZXQgYnV0IHRoZSBWTSBpcyBub3QgaXMgaWYgdGhlIFZNIHdhcwor CQkJICogcmVtb3ZlZCwgYW5kIHRoYXQgaXNuJ3Qgd29ydGggb3B0aW1pemluZyBmb3IuIEFuZCwg aWYgd2UgYWRkCisJCQkgKiB0aGUgaGVhcCBidWZmZXIgdG8gdGhlIFdBTCBjaGFpbiAod2l0aG91 dCBwYXNzaW5nCisJCQkgKiBSRUdCVUZfTk9fQ0hBTkdFUyksIGl0IG11c3QgYmUgbWFya2VkIGRp cnR5LgorCQkJICovCisJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJCXZpc2liaWxpdHlt YXBfc2V0X3ZtYml0cyhibG9ja25vLCB2bWJ1ZmZlciwgbmV3X3ZtYml0cywKKwkJCQkJCQkJCSBw YXJhbXMtPnJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJfQorCiAJCU1hcmtCdWZmZXJEaXJ0eShi dWZmZXIpOwogCiAJCS8qCkBAIC0xMTE3LDI5ICsxMjM4LDEyIEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCSAqLwogCQlpZiAoUmVsYXRp b25OZWVkc1dBTChwYXJhbXMtPnJlbGF0aW9uKSkKIAkJewotCQkJLyoKLQkJCSAqIFRoZSBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbiBmb3IgdGhlIHdob2xlIHJlY29yZCBzaG91bGQgYmUgdGhlCi0J CQkgKiBtb3N0IGNvbnNlcnZhdGl2ZSBvZiBhbGwgdGhlIGhvcml6b25zIGNhbGN1bGF0ZWQgZm9y IGFueSBvZiB0aGUKLQkJCSAqIHBvc3NpYmxlIG1vZGlmaWNhdGlvbnMuICBJZiB0aGlzIHJlY29y ZCB3aWxsIHBydW5lIHR1cGxlcywgYW55Ci0JCQkgKiB0cmFuc2FjdGlvbnMgb24gdGhlIHN0YW5k Ynkgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgeG1heCBvZiB0aGUKLQkJCSAqIG1vc3QgcmVjZW50 bHkgcmVtb3ZlZCB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHdpbGwKLQkJCSAqIGNvbmZs aWN0LiAgSWYgdGhpcyByZWNvcmQgd2lsbCBmcmVlemUgdHVwbGVzLCBhbnkgdHJhbnNhY3Rpb25z Ci0JCQkgKiBvbiB0aGUgc3RhbmRieSB3aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3Qg dHVwbGUgdGhpcwotCQkJICogcmVjb3JkIHdpbGwgZnJlZXplIHdpbGwgY29uZmxpY3QuCi0JCQkg Ki8KLQkJCVRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkOwotCi0JCQlpZiAoVHJhbnNhY3Rpb25J ZEZvbGxvd3MocHJzdGF0ZS5mcnpfY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJCQkJCSBwcnN0YXRl LmxhdGVzdF94aWRfcmVtb3ZlZCkpCi0JCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5mcnpfY29u ZmxpY3RfaG9yaXpvbjsKLQkJCWVsc2UKLQkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmxhdGVz dF94aWRfcmVtb3ZlZDsKLQogCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShwYXJhbXMtPnJl bGF0aW9uLCBidWZmZXIsCi0JCQkJCQkJCQkgIEludmFsaWRCdWZmZXIsCS8qIHZtYnVmZmVyICov Ci0JCQkJCQkJCQkgIDAsCS8qIHZtZmxhZ3MgKi8KKwkJCQkJCQkJCSAgZG9fc2V0X3ZtID8gdm1i dWZmZXIgOiBJbnZhbGlkQnVmZmVyLAorCQkJCQkJCQkJICBkb19zZXRfdm0gPyBuZXdfdm1iaXRz IDogMCwKIAkJCQkJCQkJCSAgY29uZmxpY3RfeGlkLAotCQkJCQkJCQkJICB0cnVlLCBwYXJhbXMt PnJlYXNvbiwKKwkJCQkJCQkJCSAgdHJ1ZSwgLyogY2xlYW51cCBsb2NrICovCisJCQkJCQkJCQkg IHBhcmFtcy0+cmVhc29uLAogCQkJCQkJCQkJICBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJv emVuLAogCQkJCQkJCQkJICBwcnN0YXRlLnJlZGlyZWN0ZWQsIHByc3RhdGUubnJlZGlyZWN0ZWQs CiAJCQkJCQkJCQkgIHByc3RhdGUubm93ZGVhZCwgcHJzdGF0ZS5uZGVhZCwKQEAgLTExNDksNDMg KzEyNTMsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAq cGFyYW1zLAogCiAJRU5EX0NSSVRfU0VDVElPTigpOwogCi0JLyogQ29weSBpbmZvcm1hdGlvbiBi YWNrIGZvciBjYWxsZXIgKi8KLQlwcmVzdWx0LT5uZGVsZXRlZCA9IHByc3RhdGUubmRlbGV0ZWQ7 Ci0JcHJlc3VsdC0+bm5ld2xwZGVhZCA9IHByc3RhdGUubmRlYWQ7Ci0JcHJlc3VsdC0+bmZyb3pl biA9IHByc3RhdGUubmZyb3plbjsKLQlwcmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2 ZV90dXBsZXM7Ci0JcHJlc3VsdC0+cmVjZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2Vu dGx5X2RlYWRfdHVwbGVzOwotCXByZXN1bHQtPmhhc3R1cCA9IHByc3RhdGUuaGFzdHVwOwotCi0J cHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0gcHJzdGF0ZS5scGRlYWRfaXRlbXM7Ci0JLyogdGhlIHBy ZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5IHdhcyBhbHJlYWR5IGZpbGxlZCBpbiAqLwotCi0JaWYg KHByc3RhdGUuYXR0ZW1wdF9mcmVlemUpCi0JewotCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDAp Ci0JCXsKLQkJCSpuZXdfcmVsZnJvemVuX3hpZCA9IHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdl UmVsZnJvemVuWGlkOwotCQkJKm5ld19yZWxtaW5fbXhpZCA9IHByc3RhdGUucGFnZWZyei5GcmVl emVQYWdlUmVsbWluTXhpZDsKLQkJfQotCQllbHNlCi0JCXsKLQkJCSpuZXdfcmVsZnJvemVuX3hp ZCA9IHByc3RhdGUucGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQ7Ci0JCQkqbmV3X3Jl bG1pbl9teGlkID0gcHJzdGF0ZS5wYWdlZnJ6Lk5vRnJlZXplUGFnZVJlbG1pbk14aWQ7Ci0JCX0K LQl9Ci0KLQkvKgotCSAqIElmIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCwgdGhlIGNvbmZs aWN0IGhvcml6b24gZm9yIHRoYXQgcmVjb3JkCi0JICogbXVzdCBiZSB0aGUgbmV3ZXN0IHhtaW4g b24gdGhlIHBhZ2UuICBIb3dldmVyLCBpZiB0aGUgcGFnZSBpcwotCSAqIGNvbXBsZXRlbHkgZnJv emVuLCB0aGVyZSBjYW4gYmUgbm8gY29uZmxpY3QgYW5kIHRoZSB2bV9jb25mbGljdF9ob3Jpem9u Ci0JICogc2hvdWxkIHJlbWFpbiBJbnZhbGlkVHJhbnNhY3Rpb25JZC4gIFRoaXMgaW5jbHVkZXMg dGhlIGNhc2UgdGhhdCB3ZQotCSAqIGp1c3QgZnJvemUgYWxsIHRoZSB0dXBsZXM7IHRoZSBwcnVu ZS1mcmVlemUgcmVjb3JkIGluY2x1ZGVkIHRoZQotCSAqIGNvbmZsaWN0IFhJRCBhbHJlYWR5IHNv IHdlIGRvbid0IG5lZWQgdG8gYWdhaW4uCi0JICovCi0JaWYgKHByc3RhdGUuYWxsX2Zyb3plbikK LQkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCWVsc2UKLQkJ dm1fY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCWlm IChkb19zZXRfdm0pCisJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7 CiAKIAkvKgogCSAqIER1cmluZyBpdHMgc2Vjb25kIHBhc3Mgb3ZlciB0aGUgaGVhcCwgVkFDVVVN IGNhbGxzCkBAIC0xMjAwLDcgKzEyNjksOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQ cnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQlUcmFuc2FjdGlvbklkIGRlYnVnX2N1dG9mZjsK IAkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKIAotCQlBc3NlcnQocHJlc3VsdC0+bHBkZWFkX2l0 ZW1zID09IDApOworCQlBc3NlcnQocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7CisJCUFzc2Vy dChwcnN0YXRlLmN1dG9mZnMpOwogCiAJCUFzc2VydChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUo cGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVyLAogCQkJCQkJCQkJCXByc3RhdGUuY3V0b2Zmcy0+T2xk ZXN0WG1pbiwKQEAgLTEyMTAsNjcgKzEyODAsMzYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJQXNzZXJ0KHByc3RhdGUuYWxsX2Zyb3pl biA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKIAogCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KGRlYnVnX2N1dG9mZikgfHwKLQkJCSAgIGRlYnVnX2N1dG9mZiA9PSB2bV9jb25mbGljdF9ob3Jp em9uKTsKKwkJCSAgIGRlYnVnX2N1dG9mZiA9PSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hp ZCk7CiAJfQogI2VuZGlmCiAKLQkvKiBOb3cgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhbmQg UERfQUxMX1ZJU0lCTEUgaGludCAqLwotCUFzc2VydCghcHJzdGF0ZS5hbGxfdmlzaWJsZSB8fCAo cHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCkpOwotCi0JZG9fc2V0X3ZtID0gaGVhcF9wYWdlX3dp bGxfc2V0X3ZtKCZwcnN0YXRlLAotCQkJCQkJCQkJICBwYXJhbXMtPnJlbGF0aW9uLAotCQkJCQkJ CQkJICBibG9ja25vLAotCQkJCQkJCQkJICBidWZmZXIsCi0JCQkJCQkJCQkgIHBhZ2UsCi0JCQkJ CQkJCQkgIHZtYnVmZmVyLAotCQkJCQkJCQkJICBwcnN0YXRlLmxwZGVhZF9pdGVtcywKLQkJCQkJ CQkJCSAgJm9sZF92bWJpdHMsCi0JCQkJCQkJCQkgICZuZXdfdm1iaXRzKTsKKwkvKiBDb3B5IGlu Zm9ybWF0aW9uIGJhY2sgZm9yIGNhbGxlciAqLworCXByZXN1bHQtPm5kZWxldGVkID0gcHJzdGF0 ZS5uZGVsZXRlZDsKKwlwcmVzdWx0LT5ubmV3bHBkZWFkID0gcHJzdGF0ZS5uZGVhZDsKKwlwcmVz dWx0LT5uZnJvemVuID0gcHJzdGF0ZS5uZnJvemVuOworCXByZXN1bHQtPmxpdmVfdHVwbGVzID0g cHJzdGF0ZS5saXZlX3R1cGxlczsKKwlwcmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHBy c3RhdGUucmVjZW50bHlfZGVhZF90dXBsZXM7CisJcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5o YXN0dXA7CisJcHJlc3VsdC0+bmV3X3ZtYml0cyA9IG5ld192bWJpdHM7CisJcHJlc3VsdC0+b2xk X3ZtYml0cyA9IG9sZF92bWJpdHM7CiAKLQkvKgotCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAg cmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcwotCSAqIGFsbC12aXNpYmxl IGlmIHdlIGRvIG5vdCBpbnRlbmQgdG8gc2V0IHRoZSBWTS4KLQkgKi8KLQlBc3NlcnQoZG9fc2V0 X3ZtIHx8IG5ld192bWJpdHMgPT0gMCk7CisJcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0gcHJzdGF0 ZS5scGRlYWRfaXRlbXM7CisJLyogdGhlIHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5IHdhcyBh bHJlYWR5IGZpbGxlZCBpbiAqLwogCi0JLyogU2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBhbmQgcGFn ZSB2aXNpYmlsaXR5IGhpbnQsIGlmIHJlbGV2YW50ICovCi0JaWYgKGRvX3NldF92bSkKKwlpZiAo cHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkKIAl7Ci0JCUFzc2VydChwcnN0YXRlLmFsbF92aXNpYmxl KTsKLQotCQkvKgotCQkgKiBJdCBzaG91bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlz aWJpbGl0eSBtYXAgcGFnZSBpcyBzZXQKLQkJICogd2hpbGUgdGhlIHBhZ2UtbGV2ZWwgYml0IGlz IGNsZWFyLCBidXQgdGhlIHJldmVyc2UgaXMgYWxsb3dlZCAoaWYKLQkJICogY2hlY2tzdW1zIGFy ZSBub3QgZW5hYmxlZCkuICBSZWdhcmRsZXNzLCBzZXQgYm90aCBiaXRzIHNvIHRoYXQgd2UKLQkJ ICogZ2V0IGJhY2sgaW4gc3luYy4KLQkJICoKLQkJICogRXZlbiBpZiBQRF9BTExfVklTSUJMRSBp cyBhbHJlYWR5IHNldCwgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dAotCQkgKiB1bm5lY2Vz c2FyaWx5IGRpcnR5aW5nIHRoZSBoZWFwIGJ1ZmZlci4gTmVhcmx5IHRoZSBvbmx5IHNjZW5hcmlv Ci0JCSAqIHdoZXJlIFBEX0FMTF9WSVNJQkxFIGlzIHNldCBidXQgdGhlIFZNIGlzIG5vdCBpcyBp ZiB0aGUgVk0gd2FzCi0JCSAqIHJlbW92ZWQgLS0gYW5kIHRoYXQgaXNuJ3Qgd29ydGggb3B0aW1p emluZyBmb3IuIEFuZCBpZiB3ZSBhZGQgdGhlCi0JCSAqIGhlYXAgYnVmZmVyIHRvIHRoZSBXQUwg Y2hhaW4gKHdpdGhvdXQgcGFzc2luZyBSRUdCVUZfTk9fQ0hBTkdFUyksCi0JCSAqIGl0IG11c3Qg YmUgbWFya2VkIGRpcnR5LgotCQkgKi8KLQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCU1h cmtCdWZmZXJEaXJ0eShidWZmZXIpOwotCi0JCS8qCi0JCSAqIElmIHRoZSBwYWdlIGlzIGJlaW5n IHNldCBhbGwtZnJvemVuLCB3ZSBwYXNzIEludmFsaWRUcmFuc2FjdGlvbklkCi0JCSAqIGFzIHRo ZSBjdXRvZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gc3VmZmljaWVu dCB0bwotCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4g dGhlIHBhZ2UncyB0dXBsZXMKLQkJICogd2VyZSBmcm96ZW4uCi0JCSAqLwotCQlBc3NlcnQoIXBy c3RhdGUuYWxsX2Zyb3plbiB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQodm1fY29uZmxpY3RfaG9y aXpvbikpOwotCi0JCXZpc2liaWxpdHltYXBfc2V0KHBhcmFtcy0+cmVsYXRpb24sIGJsb2Nrbm8s IGJ1ZmZlciwKLQkJCQkJCSAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkgIHZtYnVmZmVyLCB2 bV9jb25mbGljdF9ob3Jpem9uLAotCQkJCQkJICBuZXdfdm1iaXRzKTsKKwkJaWYgKHByZXN1bHQt Pm5mcm96ZW4gPiAwKQorCQl7CisJCQkqbmV3X3JlbGZyb3plbl94aWQgPSBwcnN0YXRlLnBhZ2Vm cnouRnJlZXplUGFnZVJlbGZyb3plblhpZDsKKwkJCSpuZXdfcmVsbWluX214aWQgPSBwcnN0YXRl LnBhZ2VmcnouRnJlZXplUGFnZVJlbG1pbk14aWQ7CisJCX0KKwkJZWxzZQorCQl7CisJCQkqbmV3 X3JlbGZyb3plbl94aWQgPSBwcnN0YXRlLnBhZ2VmcnouTm9GcmVlemVQYWdlUmVsZnJvemVuWGlk OworCQkJKm5ld19yZWxtaW5fbXhpZCA9IHByc3RhdGUucGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxt aW5NeGlkOworCQl9CiAJfQotCi0JLyogU2F2ZSB0aGUgdm1iaXRzIGZvciBjYWxsZXIgKi8KLQlw cmVzdWx0LT5vbGRfdm1iaXRzID0gb2xkX3ZtYml0czsKLQlwcmVzdWx0LT5uZXdfdm1iaXRzID0g bmV3X3ZtYml0czsKIH0KIAogCi0tIAoyLjQzLjAKCg== --000000000000857fc406462f10e4 Content-Type: text/x-patch; charset="US-ASCII"; name="v28-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v28-0007-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjapd9m56 RnJvbSAzZDg0NDQ0NDc2NTdhMDQ1MTNlMDQ0YjQyNjFiNWQ2MzM0ZjFiZWY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjggMDcvMTVdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8 YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdt YWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAzNSAr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggNjE1NjRhZWE1ZmQuLmUzMTFlN2Q2NjA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC0xODY2LDkgKzE4NjYsMTIgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJl bFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkgKi8KIAkJ aWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQogCQl7CisJCQkvKiBMb2NrIHZtYnVmZmVyIGJl Zm9yZSBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9uICovCisJCQlMb2NrQnVmZmVyKHZtYnVmZmVy LCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCiAJCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAot CQkJLyogbWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdyaXRpbmcgYSBXQUwgcmVjb3JkICovCisJ CQkvKiBNYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGluZyBhbnkgV0FMIHJlY29yZHMgKi8K IAkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwogCiAJCQkvKgpAQCAtMTg4NSwxMyArMTg4OCwzMyBA QCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1Ziwg QmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1ZiwgdHJ1ZSk7CiAK IAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVs LT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkg IHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUgfAotCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKwkJCXZp c2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKKwkJCQkJCQkJCSB2bWJ1ZmZlciwKKwkJCQkJ CQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCSBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4sCisJCQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCisJCQkv KgorCQkJICogRW1pdCBXQUwgZm9yIHNldHRpbmcgUERfQUxMX1ZJU0lCTEUgb24gdGhlIGhlYXAg cGFnZSBhbmQKKwkJCSAqIHNldHRpbmcgdGhlIFZNLgorCQkJICovCisJCQlpZiAoUmVsYXRpb25O ZWVkc1dBTCh2YWNyZWwtPnJlbCkpCisJCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZSh2YWNy ZWwtPnJlbCwgYnVmLAorCQkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkJICBWSVNJQklM SVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF TiwKKwkJCQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLCAvKiBjb25mbGljdCB4aWQgKi8K KwkJCQkJCQkJCQkgIGZhbHNlLAkvKiBjbGVhbnVwIGxvY2sgKi8KKwkJCQkJCQkJCQkgIFBSVU5F X1ZBQ1VVTV9TQ0FOLAkvKiByZWFzb24gKi8KKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJ CQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAp OworCiAJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJV RkZFUl9MT0NLX1VOTE9DSyk7CisKIAkJCS8qIENvdW50IHRoZSBuZXdseSBhbGwtZnJvemVuIHBh Z2VzIGZvciBsb2dnaW5nICovCiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7CiAJ CQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotLSAKMi40My4wCgo= --000000000000857fc406462f10e4 Content-Type: text/x-patch; charset="US-ASCII"; name="v28-0008-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v28-0008-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjapdggt7 RnJvbSAxYWNiOThmODU1YzFjMjg5OTNiYmQ5Y2NiOTBhMjI1MGU0ZDY0OTgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjggMDgvMTVdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKCkFzIG5v IHJlbWFpbmluZyB1c2VycyBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgpUaGlzIGlu Y2x1ZGVzIGRlbGV0aW5nIHRoZSB4bF9oZWFwX3Zpc2libGUgc3RydWN0IGFuZCBhbGwgZnVuY3Rp b25zCnJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBvciByZXBsYXlpbmcgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZHMuCgpUaGlzIGNoYW5nZXMgdGhlIHZpc2liaWxpdHkgbWFwIEFQSSwgc28gYW55 IGV4dGVybmFsIHVzZXJzL2NvbnN1bWVycyBvZgp0aGUgVk0tb25seSBXQUwgcmVjb3JkIHdpbGwg bmVlZCB0byBjaGFuZ2UuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1h bkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRl YW0ucnU+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJl dmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgfCAgNTQgKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgfCAxNTUgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgfCAgIDQgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAgMTYgKy0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgIHwgMTEyICstLS0tLS0tLS0tLS0tLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAgfCAgMTAgLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEgLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc3RhbmRieS5jICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmggICAgICAgICB8ICAyMCAtLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmls aXR5bWFwLmggICAgICAgfCAgMTMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFw ZGVmcy5oICAgfCAgIDkgLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAg ICAgfCAgIDEgLQogMTMgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMzczIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKaW5kZXggYmIyNjBjZmZhNjgu LjVmMDdmMTc5NDE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1h c2suYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2suYwpAQCAtNTYsOCAr NTYsOCBAQCBtYXNrX3BhZ2VfaGludF9iaXRzKFBhZ2UgcGFnZSkKIAogCS8qCiAJICogRHVyaW5n IHJlcGxheSwgaWYgdGhlIHBhZ2UgTFNOIGhhcyBhZHZhbmNlZCBwYXN0IG91ciBYTE9HIHJlY29y ZCdzIExTTiwKLQkgKiB3ZSBkb24ndCBtYXJrIHRoZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUgaGVh cF94bG9nX3Zpc2libGUoKSBmb3IKLQkgKiBkZXRhaWxzLgorCSAqIHdlIGRvbid0IG1hcmsgdGhl IHBhZ2UgYWxsLXZpc2libGUuIFNlZSBoZWFwX3hsb2dfcHJ1bmVfYW5kX2ZyZWV6ZSgpCisJICog Zm9yIG1vcmUgZGV0YWlscy4KIAkgKi8KIAlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwogfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCA2ZGFmNGE4N2RlYy4uZmI3YTc1NDhhYTAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0yNTM5LDExICsyNTM5LDExIEBAIGhlYXBfbXVs dGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQg bnR1cGxlcywKIAkJZWxzZSBpZiAoYWxsX2Zyb3plbl9zZXQpCiAJCXsKIAkJCVBhZ2VTZXRBbGxW aXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKEJ1ZmZlckdldEJsb2Nr TnVtYmVyKGJ1ZmZlciksCi0JCQkJCQkJCQkgdm1idWZmZXIsCi0JCQkJCQkJCQkgVklTSUJJTElU WU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAot CQkJCQkJCQkJIHJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KEJ1 ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlciksCisJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkg IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOLAorCQkJCQkJCSAgcmVsYXRpb24tPnJkX2xvY2F0b3IpOwogCQl9CiAKIAkJLyoKQEAg LTg4MTMsNTAgKzg4MTMsNiBAQCBib3R0b211cF9zb3J0X2FuZF9zaHJpbmsoVE1fSW5kZXhEZWxl dGVPcCAqZGVsc3RhdGUpCiAJcmV0dXJuIG5ibG9ja3NmYXZvcmFibGU7CiB9CiAKLS8qCi0gKiBQ ZXJmb3JtIFhMb2dJbnNlcnQgZm9yIGEgaGVhcC12aXNpYmxlIG9wZXJhdGlvbi4gICdibG9jaycg aXMgdGhlIGJsb2NrCi0gKiBiZWluZyBtYXJrZWQgYWxsLXZpc2libGUsIGFuZCB2bV9idWZmZXIg aXMgdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZQotICogY29ycmVzcG9uZGluZyB2aXNpYmlsaXR5 IG1hcCBibG9jay4gIEJvdGggc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIG1vZGlmaWVkCi0gKiBh bmQgZGlydGllZC4KLSAqCi0gKiBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBjb21lcyBmcm9tIHRo ZSBsYXJnZXN0IHhtaW4gb24gdGhlIHBhZ2UgYmVpbmcKLSAqIG1hcmtlZCBhbGwtdmlzaWJsZS4g IFJFRE8gcm91dGluZSB1c2VzIGl0IHRvIGdlbmVyYXRlIHJlY292ZXJ5IGNvbmZsaWN0cy4KLSAq Ci0gKiBJZiBjaGVja3N1bXMgb3Igd2FsX2xvZ19oaW50cyBhcmUgZW5hYmxlZCwgd2UgbWF5IGFs c28gZ2VuZXJhdGUgYSBmdWxsLXBhZ2UKLSAqIGltYWdlIG9mIGhlYXBfYnVmZmVyLiBPdGhlcndp c2UsIHdlIG9wdGltaXplIGF3YXkgdGhlIEZQSSAoYnkgc3BlY2lmeWluZwotICogUkVHQlVGX05P X0lNQUdFIGZvciB0aGUgaGVhcCBidWZmZXIpLCBpbiB3aGljaCBjYXNlIHRoZSBjYWxsZXIgc2hv dWxkICpub3QqCi0gKiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4KLSAqLwotWExvZ1JlY1B0 cgotbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVm ZmVyIHZtX2J1ZmZlciwKLQkJCQkgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpv biwgdWludDggdm1mbGFncykKLXsKLQl4bF9oZWFwX3Zpc2libGUgeGxyZWM7Ci0JWExvZ1JlY1B0 cglyZWNwdHI7Ci0JdWludDgJCWZsYWdzOwotCi0JQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoaGVhcF9i dWZmZXIpKTsKLQlBc3NlcnQoQnVmZmVySXNWYWxpZCh2bV9idWZmZXIpKTsKLQotCXhscmVjLnNu YXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247Ci0JeGxyZWMu ZmxhZ3MgPSB2bWZsYWdzOwotCWlmIChSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29k aW5nKHJlbCkpCi0JCXhscmVjLmZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JF TDsKLQlYTG9nQmVnaW5JbnNlcnQoKTsKLQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgU2l6ZU9m SGVhcFZpc2libGUpOwotCi0JWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIHZtX2J1ZmZlciwgMCk7Ci0K LQlmbGFncyA9IFJFR0JVRl9TVEFOREFSRDsKLQlpZiAoIVhMb2dIaW50Qml0SXNOZWVkZWQoKSkK LQkJZmxhZ3MgfD0gUkVHQlVGX05PX0lNQUdFOwotCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCBoZWFw X2J1ZmZlciwgZmxhZ3MpOwotCi0JcmVjcHRyID0gWExvZ0luc2VydChSTV9IRUFQMl9JRCwgWExP R19IRUFQMl9WSVNJQkxFKTsKLQotCXJldHVybiByZWNwdHI7Ci19Ci0KIC8qCiAgKiBQZXJmb3Jt IFhMb2dJbnNlcnQgZm9yIGEgaGVhcC11cGRhdGUgb3BlcmF0aW9uLiAgQ2FsbGVyIG11c3QgYWxy ZWFkeQogICogaGF2ZSBtb2RpZmllZCB0aGUgYnVmZmVyKHMpIGFuZCBtYXJrZWQgdGhlbSBkaXJ0 eS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IDE4MjNmZWZmMjk4Li40 N2QyNDc5NDE1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hs b2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC0yMzYs NyArMjM2LDcgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29y ZCkKIAkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQogCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1os IDApOwogCi0JCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywgdm1idWZmZXIsIHZtZmxh Z3MsIHJsb2NhdG9yKTsKKwkJdmlzaWJpbGl0eW1hcF9zZXQoYmxrbm8sIHZtYnVmZmVyLCB2bWZs YWdzLCBybG9jYXRvcik7CiAKIAkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkodm1idWZmZXIpKTsKIAkJ UGFnZVNldExTTih2bXBhZ2UsIGxzbik7CkBAIC0yNDksMTQyICsyNDksNiBAQCBoZWFwX3hsb2df cHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlYTG9nUmVjb3JkUGFnZVdp dGhGcmVlU3BhY2UocmxvY2F0b3IsIGJsa25vLCBmcmVlc3BhY2UpOwogfQogCi0vKgotICogUmVw bGF5IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgotICoKLSAqIFRoZSBjcml0aWNhbCBpbnRl Z3JpdHkgcmVxdWlyZW1lbnQgaGVyZSBpcyB0aGF0IHdlIG11c3QgbmV2ZXIgZW5kIHVwIHdpdGgK LSAqIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0LCBhbmQg dGhlIHBhZ2UtbGV2ZWwKLSAqIFBEX0FMTF9WSVNJQkxFIGJpdCBpcyBjbGVhci4gIElmIHRoYXQg d2VyZSB0byBvY2N1ciwgdGhlbiBhIHN1YnNlcXVlbnQKLSAqIHBhZ2UgbW9kaWZpY2F0aW9uIHdv dWxkIGZhaWwgdG8gY2xlYXIgdGhlIHZpc2liaWxpdHkgbWFwIGJpdC4KLSAqLwotc3RhdGljIHZv aWQKLWhlYXBfeGxvZ192aXNpYmxlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQotewotCVhMb2dS ZWNQdHIJbHNuID0gcmVjb3JkLT5FbmRSZWNQdHI7Ci0JeGxfaGVhcF92aXNpYmxlICp4bHJlYyA9 ICh4bF9oZWFwX3Zpc2libGUgKikgWExvZ1JlY0dldERhdGEocmVjb3JkKTsKLQlCdWZmZXIJCXZt YnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKLQlCdWZmZXIJCWJ1ZmZlcjsKLQlQYWdlCQlwYWdlOwot CVJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yOwotCUJsb2NrTnVtYmVyIGJsa25vOwotCVhMb2dSZWRv QWN0aW9uIGFjdGlvbjsKLQotCUFzc2VydCgoeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9Y TE9HX1ZBTElEX0JJVFMpID09IHhscmVjLT5mbGFncyk7Ci0KLQlYTG9nUmVjR2V0QmxvY2tUYWco cmVjb3JkLCAxLCAmcmxvY2F0b3IsIE5VTEwsICZibGtubyk7Ci0KLQkvKgotCSAqIElmIHRoZXJl IGFyZSBhbnkgSG90IFN0YW5kYnkgdHJhbnNhY3Rpb25zIHJ1bm5pbmcgdGhhdCBoYXZlIGFuIHht aW4KLQkgKiBob3Jpem9uIG9sZCBlbm91Z2ggdGhhdCB0aGlzIHBhZ2UgaXNuJ3QgYWxsLXZpc2li bGUgZm9yIHRoZW0sIHRoZXkKLQkgKiBtaWdodCBpbmNvcnJlY3RseSBkZWNpZGUgdGhhdCBhbiBp bmRleC1vbmx5IHNjYW4gY2FuIHNraXAgYSBoZWFwIGZldGNoLgotCSAqCi0JICogTkI6IEl0IG1p Z2h0IGJlIGJldHRlciB0byB0aHJvdyBzb21lIGtpbmQgb2YgInNvZnQiIGNvbmZsaWN0IGhlcmUg dGhhdAotCSAqIGZvcmNlcyBhbnkgaW5kZXgtb25seSBzY2FuIHRoYXQgaXMgaW4gZmxpZ2h0IHRv IHBlcmZvcm0gaGVhcCBmZXRjaGVzLAotCSAqIHJhdGhlciB0aGFuIGtpbGxpbmcgdGhlIHRyYW5z YWN0aW9uIG91dHJpZ2h0LgotCSAqLwotCWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNv dmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwK LQkJCQkJCQkJCQkJeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVM LAotCQkJCQkJCQkJCQlybG9jYXRvcik7Ci0KLQkvKgotCSAqIFJlYWQgdGhlIGhlYXAgcGFnZSwg aWYgaXQgc3RpbGwgZXhpc3RzLiBJZiB0aGUgaGVhcCBmaWxlIGhhcyBkcm9wcGVkIG9yCi0JICog dHJ1bmNhdGVkIGxhdGVyIGluIHJlY292ZXJ5LCB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSB0aGUg cGFnZSwgYnV0IHdlJ2QKLQkgKiBiZXR0ZXIgc3RpbGwgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1h cC4KLQkgKi8KLQlhY3Rpb24gPSBYTG9nUmVhZEJ1ZmZlckZvclJlZG8ocmVjb3JkLCAxLCAmYnVm ZmVyKTsKLQlpZiAoYWN0aW9uID09IEJMS19ORUVEU19SRURPKQotCXsKLQkJLyoKLQkJICogV2Ug ZG9uJ3QgYnVtcCB0aGUgTFNOIG9mIHRoZSBoZWFwIHBhZ2Ugd2hlbiBzZXR0aW5nIHRoZSB2aXNp YmlsaXR5Ci0JCSAqIG1hcCBiaXQgKHVubGVzcyBjaGVja3N1bXMgb3Igd2FsX2hpbnRfYml0cyBp cyBlbmFibGVkLCBpbiB3aGljaAotCQkgKiBjYXNlIHdlIG11c3QpLiBUaGlzIGV4cG9zZXMgdXMg dG8gdG9ybiBwYWdlIGhhemFyZHMsIGJ1dCBzaW5jZQotCQkgKiB3ZSdyZSBub3QgaW5zcGVjdGlu ZyB0aGUgZXhpc3RpbmcgcGFnZSBjb250ZW50cyBpbiBhbnkgd2F5LCB3ZQotCQkgKiBkb24ndCBj YXJlLgotCQkgKi8KLQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKLQotCQlQYWdlU2V0 QWxsVmlzaWJsZShwYWdlKTsKLQotCQlpZiAoWExvZ0hpbnRCaXRJc05lZWRlZCgpKQotCQkJUGFn ZVNldExTTihwYWdlLCBsc24pOwotCi0JCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwotCX0KLQll bHNlIGlmIChhY3Rpb24gPT0gQkxLX1JFU1RPUkVEKQotCXsKLQkJLyoKLQkJICogSWYgaGVhcCBi bG9jayB3YXMgYmFja2VkIHVwLCB3ZSBhbHJlYWR5IHJlc3RvcmVkIGl0IGFuZCB0aGVyZSdzCi0J CSAqIG5vdGhpbmcgbW9yZSB0byBkby4gKFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdpdGggY2hlY2tz dW1zIG9yCi0JCSAqIHdhbF9sb2dfaGludHMgZW5hYmxlZC4pCi0JCSAqLwotCX0KLQotCWlmIChC dWZmZXJJc1ZhbGlkKGJ1ZmZlcikpCi0JewotCQlTaXplCQlzcGFjZSA9IFBhZ2VHZXRGcmVlU3Bh Y2UoQnVmZmVyR2V0UGFnZShidWZmZXIpKTsKLQotCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZl cik7Ci0KLQkJLyoKLQkJICogU2luY2UgRlNNIGlzIG5vdCBXQUwtbG9nZ2VkIGFuZCBvbmx5IHVw ZGF0ZWQgaGV1cmlzdGljYWxseSwgaXQKLQkJICogZWFzaWx5IGJlY29tZXMgc3RhbGUgaW4gc3Rh bmRieXMuICBJZiB0aGUgc3RhbmRieSBpcyBsYXRlciBwcm9tb3RlZAotCQkgKiBhbmQgcnVucyBW QUNVVU0sIGl0IHdpbGwgc2tpcCB1cGRhdGluZyBpbmRpdmlkdWFsIGZyZWUgc3BhY2UKLQkJICog ZmlndXJlcyBmb3IgcGFnZXMgdGhhdCBiZWNhbWUgYWxsLXZpc2libGUgKG9yIGFsbC1mcm96ZW4s IGRlcGVuZGluZwotCQkgKiBvbiB0aGUgdmFjdXVtIG1vZGUsKSB3aGljaCBpcyB0cm91Ymxlc29t ZSB3aGVuIEZyZWVTcGFjZU1hcFZhY3V1bQotCQkgKiBwcm9wYWdhdGVzIHRvbyBvcHRpbWlzdGlj IGZyZWUgc3BhY2UgdmFsdWVzIHRvIHVwcGVyIEZTTSBsYXllcnM7Ci0JCSAqIGxhdGVyIGluc2Vy dGVycyB0cnkgdG8gdXNlIHN1Y2ggcGFnZXMgb25seSB0byBmaW5kIG91dCB0aGF0IHRoZXkKLQkJ ICogYXJlIHVudXNhYmxlLiAgVGhpcyBjYW4gY2F1c2UgbG9uZyBzdGFsbHMgd2hlbiB0aGVyZSBh cmUgbWFueSBzdWNoCi0JCSAqIHBhZ2VzLgotCQkgKgotCQkgKiBGb3Jlc3RhbGwgdGhvc2UgcHJv YmxlbXMgYnkgdXBkYXRpbmcgRlNNJ3MgaWRlYSBhYm91dCBhIHBhZ2UgdGhhdAotCQkgKiBpcyBi ZWNvbWluZyBhbGwtdmlzaWJsZSBvciBhbGwtZnJvemVuLgotCQkgKgotCQkgKiBEbyB0aGlzIHJl Z2FyZGxlc3Mgb2YgYSBmdWxsLXBhZ2UgaW1hZ2UgYmVpbmcgYXBwbGllZCwgc2luY2UgdGhlCi0J CSAqIEZTTSBkYXRhIGlzIG5vdCBpbiB0aGUgcGFnZSBhbnl3YXkuCi0JCSAqLwotCQlpZiAoeGxy ZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKQotCQkJWExvZ1JlY29yZFBhZ2VX aXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtubywgc3BhY2UpOwotCX0KLQotCS8qCi0JICogRXZl biBpZiB3ZSBza2lwcGVkIHRoZSBoZWFwIHBhZ2UgdXBkYXRlIGR1ZSB0byB0aGUgTFNOIGludGVy bG9jaywgaXQncwotCSAqIHN0aWxsIHNhZmUgdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4g IEFueSBXQUwgcmVjb3JkIHRoYXQgY2xlYXJzCi0JICogdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBk b2VzIHNvIGJlZm9yZSBjaGVja2luZyB0aGUgcGFnZSBMU04sIHNvIGFueQotCSAqIGJpdHMgdGhh dCBuZWVkIHRvIGJlIGNsZWFyZWQgd2lsbCBzdGlsbCBiZSBjbGVhcmVkLgotCSAqLwotCWlmIChY TG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDAsIFJCTV9aRVJPX09OX0VSUk9S LCBmYWxzZSwKLQkJCQkJCQkJCSAgJnZtYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKLQl7Ci0J CVBhZ2UJCXZtcGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpOwotCQlSZWxhdGlvbglyZWxu OwotCQl1aW50OAkJdm1iaXRzOwotCi0JCS8qIGluaXRpYWxpemUgdGhlIHBhZ2UgaWYgaXQgd2Fz IHJlYWQgYXMgemVyb3MgKi8KLQkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQotCQkJUGFnZUluaXQo dm1wYWdlLCBCTENLU1osIDApOwotCi0JCS8qIHJlbW92ZSBWSVNJQklMSVRZTUFQX1hMT0dfKiAq LwotCQl2bWJpdHMgPSB4bHJlYy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7Ci0K LQkJLyoKLQkJICogWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQgbG9ja2VkIHRoZSBidWZm ZXIuIEJ1dAotCQkgKiB2aXNpYmlsaXR5bWFwX3NldCB3aWxsIGhhbmRsZSBsb2NraW5nIGl0c2Vs Zi4KLQkJICovCi0JCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0K LQkJcmVsbiA9IENyZWF0ZUZha2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9yKTsKLQotCQl2aXNpYmls aXR5bWFwX3NldChyZWxuLCBibGtubywgSW52YWxpZEJ1ZmZlciwgbHNuLCB2bWJ1ZmZlciwKLQkJ CQkJCSAgeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCB2bWJpdHMpOwotCi0JCVJlbGVh c2VCdWZmZXIodm1idWZmZXIpOwotCQlGcmVlRmFrZVJlbGNhY2hlRW50cnkocmVsbik7Ci0JfQot CWVsc2UgaWYgKEJ1ZmZlcklzVmFsaWQodm1idWZmZXIpKQotCQlVbmxvY2tSZWxlYXNlQnVmZmVy KHZtYnVmZmVyKTsKLX0KLQogLyoKICAqIEdpdmVuIGFuICJpbmZvYml0cyIgZmllbGQgZnJvbSBh biBYTG9nIHJlY29yZCwgc2V0IHRoZSBjb3JyZWN0IGJpdHMgaW4gdGhlCiAgKiBnaXZlbiBpbmZv bWFzayBhbmQgaW5mb21hc2syIGZvciB0aGUgdHVwbGUgdG91Y2hlZCBieSB0aGUgcmVjb3JkLgpA QCAtNzYyLDggKzYyNiw4IEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJICoKIAkgKiBEdXJpbmcgcmVjb3ZlcnksIGhvd2V2ZXIsIG5vIGNvbmN1cnJl bnQgd3JpdGVycyBleGlzdC4gVGhlcmVmb3JlLAogCSAqIHVwZGF0aW5nIHRoZSBWTSB3aXRob3V0 IGhvbGRpbmcgdGhlIGhlYXAgcGFnZSBsb2NrIGlzIHNhZmUgZW5vdWdoLiBUaGlzCi0JICogc2Ft ZSBhcHByb2FjaCBpcyB0YWtlbiB3aGVuIHJlcGxheWluZyB4bF9oZWFwX3Zpc2libGUgcmVjb3Jk cyAoc2VlCi0JICogaGVhcF94bG9nX3Zpc2libGUoKSkuCisJICogc2FtZSBhcHByb2FjaCBpcyB0 YWtlbiB3aGVuIHJlcGxheWluZyBYTE9HX0hFQVAyX1BSVU5FKiByZWNvcmRzIChzZWUKKwkgKiBo ZWFwX3hsb2dfcHJ1bmVfYW5kX2ZyZWV6ZSgpKS4KIAkgKi8KIAlpZiAoKHhscmVjLT5mbGFncyAm IFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQpICYmCiAJCVhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4 dGVuZGVkKHJlY29yZCwgMSwgUkJNX1pFUk9fT05fRVJST1IsIGZhbHNlLApAQCAtNzc1LDExICs2 MzksMTEgQEAgaGVhcF94bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQogCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1osIDAp OwogCi0JCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKLQkJCQkJCQkJIHZtYnVmZmVy LAotCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCSBWSVNJQklM SVRZTUFQX0FMTF9GUk9aRU4sCi0JCQkJCQkJCSBybG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBf c2V0KGJsa25vLAorCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRSB8CisJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCSAgcmxv Y2F0b3IpOwogCiAJCUFzc2VydChCdWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CiAJCVBhZ2VTZXRM U04odm1wYWdlLCBsc24pOwpAQCAtMTM2MCw5ICsxMjI0LDYgQEAgaGVhcDJfcmVkbyhYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCkKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQ OgogCQkJaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShyZWNvcmQpOwogCQkJYnJlYWs7Ci0JCWNhc2Ug WExPR19IRUFQMl9WSVNJQkxFOgotCQkJaGVhcF94bG9nX3Zpc2libGUocmVjb3JkKTsKLQkJCWJy ZWFrOwogCQljYXNlIFhMT0dfSEVBUDJfTVVMVElfSU5TRVJUOgogCQkJaGVhcF94bG9nX211bHRp X2luc2VydChyZWNvcmQpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j CmluZGV4IDM1MjFlNzBiOGQwLi44NmRlMzYxM2Y1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKQEAgLTEyMjcsOCArMTIyNyw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkgKiBSRUdCVUZfTk9fQ0hBTkdFUyksIGl0 IG11c3QgYmUgbWFya2VkIGRpcnR5LgogCQkJICovCiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdl KTsKLQkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibG9ja25vLCB2bWJ1ZmZlciwgbmV3X3Zt Yml0cywKLQkJCQkJCQkJCSBwYXJhbXMtPnJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJCXZpc2li aWxpdHltYXBfc2V0KGJsb2Nrbm8sIHZtYnVmZmVyLCBuZXdfdm1iaXRzLAorCQkJCQkJCSAgcGFy YW1zLT5yZWxhdGlvbi0+cmRfbG9jYXRvcik7CiAJCX0KIAogCQlNYXJrQnVmZmVyRGlydHkoYnVm ZmVyKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCBlMzExZTdkNjYwNC4u OWRlYzQ4NzVlM2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE4ODgs MTEgKzE4ODgsMTEgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWws IEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkJCWxvZ19uZXdwYWdlX2J1ZmZlcihi dWYsIHRydWUpOwogCiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHlt YXBfc2V0X3ZtYml0cyhibGtubywKLQkJCQkJCQkJCSB2bWJ1ZmZlciwKLQkJCQkJCQkJCSBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9GUk9a RU4sCi0JCQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCQkJdmlzaWJpbGl0eW1h cF9zZXQoYmxrbm8sCisJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUgfAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAorCQkJCQkJ CSAgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOwogCiAJCQkvKgogCQkJICogRW1pdCBXQUwgZm9y IHNldHRpbmcgUERfQUxMX1ZJU0lCTEUgb24gdGhlIGhlYXAgcGFnZSBhbmQKQEAgLTI3NjksOSAr Mjc2OSw5IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2Nr TnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCQkgKiBzZXQgUERfQUxMX1ZJU0lCTEUuCiAJ CSAqLwogCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1i aXRzKGJsa25vLAotCQkJCQkJCQkgdm1idWZmZXIsIHZtZmxhZ3MsCi0JCQkJCQkJCSB2YWNyZWwt PnJlbC0+cmRfbG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBfc2V0KGJsa25vLAorCQkJCQkJICB2 bWJ1ZmZlciwgdm1mbGFncywKKwkJCQkJCSAgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOwogCQlj b25mbGljdF94aWQgPSB2aXNpYmlsaXR5X2N1dG9mZl94aWQ7CiAJfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKaW5kZXggZDE0NTg4ZTkyYWUuLjc5OTdlOTI2ODcyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0xNCw4ICsxNCw3IEBA CiAgKgkJdmlzaWJpbGl0eW1hcF9jbGVhciAgLSBjbGVhciBiaXRzIGZvciBvbmUgcGFnZSBpbiB0 aGUgdmlzaWJpbGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3BpbgkgLSBwaW4gYSBtYXAgcGFn ZSBmb3Igc2V0dGluZyBhIGJpdAogICoJCXZpc2liaWxpdHltYXBfcGluX29rIC0gY2hlY2sgd2hl dGhlciBjb3JyZWN0IG1hcCBwYWdlIGlzIGFscmVhZHkgcGlubmVkCi0gKgkJdmlzaWJpbGl0eW1h cF9zZXQJIC0gc2V0IGJpdChzKSBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UgYW5kIGxvZwot ICoJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyAtIHNldCBiaXQocykgaW4gYSBwaW5uZWQgcGFn ZQorICoJCXZpc2liaWxpdHltYXBfc2V0CSAtIHNldCBiaXQocykgaW4gYSBwcmV2aW91c2x5IHBp bm5lZCBwYWdlCiAgKgkJdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzIC0gZ2V0IHN0YXR1cyBvZiBi aXRzCiAgKgkJdmlzaWJpbGl0eW1hcF9jb3VudCAgLSBjb3VudCBudW1iZXIgb2YgYml0cyBzZXQg aW4gdmlzaWJpbGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3ByZXBhcmVfdHJ1bmNhdGUgLQpA QCAtMjIwLDEwOSArMjE5LDYgQEAgdmlzaWJpbGl0eW1hcF9waW5fb2soQmxvY2tOdW1iZXIgaGVh cEJsaywgQnVmZmVyIHZtYnVmKQogCXJldHVybiBCdWZmZXJJc1ZhbGlkKHZtYnVmKSAmJiBCdWZm ZXJHZXRCbG9ja051bWJlcih2bWJ1ZikgPT0gbWFwQmxvY2s7CiB9CiAKLS8qCi0gKgl2aXNpYmls aXR5bWFwX3NldCAtIHNldCBiaXQocykgb24gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlCi0gKgot ICogcmVjcHRyIGlzIHRoZSBMU04gb2YgdGhlIFhMT0cgcmVjb3JkIHdlJ3JlIHJlcGxheWluZywg aWYgd2UncmUgaW4gcmVjb3ZlcnksCi0gKiBvciBJbnZhbGlkWExvZ1JlY1B0ciBpbiBub3JtYWwg cnVubmluZy4gIFRoZSBWTSBwYWdlIExTTiBpcyBhZHZhbmNlZCB0byB0aGUKLSAqIG9uZSBwcm92 aWRlZDsgaW4gbm9ybWFsIHJ1bm5pbmcsIHdlIGdlbmVyYXRlIGEgbmV3IFhMT0cgcmVjb3JkIGFu ZCBzZXQgdGhlCi0gKiBwYWdlIExTTiB0byB0aGF0IHZhbHVlICh0aG91Z2ggdGhlIGhlYXAgcGFn ZSdzIExTTiBtYXkgKm5vdCogYmUgdXBkYXRlZDsKLSAqIHNlZSBiZWxvdykuICBjdXRvZmZfeGlk IGlzIHRoZSBsYXJnZXN0IHhtaW4gb24gdGhlIHBhZ2UgYmVpbmcgbWFya2VkCi0gKiBhbGwtdmlz aWJsZTsgaXQgaXMgbmVlZGVkIGZvciBIb3QgU3RhbmRieSwgYW5kIGNhbiBiZSBJbnZhbGlkVHJh bnNhY3Rpb25JZAotICogaWYgdGhlIHBhZ2UgY29udGFpbnMgbm8gdHVwbGVzLiAgSXQgY2FuIGFs c28gYmUgc2V0IHRvIEludmFsaWRUcmFuc2FjdGlvbklkCi0gKiB3aGVuIGEgcGFnZSB0aGF0IGlz IGFscmVhZHkgYWxsLXZpc2libGUgaXMgYmVpbmcgbWFya2VkIGFsbC1mcm96ZW4uCi0gKgotICog Q2FsbGVyIGlzIGV4cGVjdGVkIHRvIHNldCB0aGUgaGVhcCBwYWdlJ3MgUERfQUxMX1ZJU0lCTEUg Yml0IGJlZm9yZSBjYWxsaW5nCi0gKiB0aGlzIGZ1bmN0aW9uLiBFeGNlcHQgaW4gcmVjb3Zlcnks IGNhbGxlciBzaG91bGQgYWxzbyBwYXNzIHRoZSBoZWFwCi0gKiBidWZmZXIuIFdoZW4gY2hlY2tz dW1zIGFyZSBlbmFibGVkIGFuZCB3ZSdyZSBub3QgaW4gcmVjb3ZlcnksIHdlIG11c3QgYWRkCi0g KiB0aGUgaGVhcCBidWZmZXIgdG8gdGhlIFdBTCBjaGFpbiB0byBwcm90ZWN0IGl0IGZyb20gYmVp bmcgdG9ybi4KLSAqCi0gKiBZb3UgbXVzdCBwYXNzIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGNv cnJlY3QgbWFwIHBhZ2UgdG8gdGhpcyBmdW5jdGlvbi4KLSAqIENhbGwgdmlzaWJpbGl0eW1hcF9w aW4gZmlyc3QgdG8gcGluIHRoZSByaWdodCBvbmUuIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBkbwot ICogYW55IEkvTy4KLSAqCi0gKiBSZXR1cm5zIHRoZSBzdGF0ZSBvZiB0aGUgcGFnZSdzIFZNIGJp dHMgYmVmb3JlIHNldHRpbmcgZmxhZ3MuCi0gKi8KLXVpbnQ4Ci12aXNpYmlsaXR5bWFwX3NldChS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAotCQkJCSAg WExvZ1JlY1B0ciByZWNwdHIsIEJ1ZmZlciB2bUJ1ZiwgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlk LAotCQkJCSAgdWludDggZmxhZ3MpCi17Ci0JQmxvY2tOdW1iZXIgbWFwQmxvY2sgPSBIRUFQQkxL X1RPX01BUEJMT0NLKGhlYXBCbGspOwotCXVpbnQzMgkJbWFwQnl0ZSA9IEhFQVBCTEtfVE9fTUFQ QllURShoZWFwQmxrKTsKLQl1aW50OAkJbWFwT2Zmc2V0ID0gSEVBUEJMS19UT19PRkZTRVQoaGVh cEJsayk7Ci0JUGFnZQkJcGFnZTsKLQl1aW50OAkgICAqbWFwOwotCXVpbnQ4CQlzdGF0dXM7Ci0K LSNpZmRlZiBUUkFDRV9WSVNJQklMSVRZTUFQCi0JZWxvZyhERUJVRzEsICJ2bV9zZXQgZmxhZ3Mg MHglMDJYIGZvciAlcyAlZCIsCi0JCSBmbGFncywgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs KSwgaGVhcEJsayk7Ci0jZW5kaWYKLQotCUFzc2VydChJblJlY292ZXJ5IHx8ICFYTG9nUmVjUHRy SXNWYWxpZChyZWNwdHIpKTsKLQlBc3NlcnQoSW5SZWNvdmVyeSB8fCBQYWdlSXNBbGxWaXNpYmxl KEJ1ZmZlckdldFBhZ2UoaGVhcEJ1ZikpKTsKLQlBc3NlcnQoKGZsYWdzICYgVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTKSA9PSBmbGFncyk7Ci0KLQkvKiBNdXN0IG5ldmVyIHNldCBhbGxfZnJvemVu IGJpdCB3aXRob3V0IGFsc28gc2V0dGluZyBhbGxfdmlzaWJsZSBiaXQgKi8KLQlBc3NlcnQoZmxh Z3MgIT0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKLQotCS8qIENoZWNrIHRoYXQgd2UgaGF2 ZSB0aGUgcmlnaHQgaGVhcCBwYWdlIHBpbm5lZCwgaWYgcHJlc2VudCAqLwotCWlmIChCdWZmZXJJ c1ZhbGlkKGhlYXBCdWYpICYmIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGhlYXBCdWYpICE9IGhlYXBC bGspCi0JCWVsb2coRVJST1IsICJ3cm9uZyBoZWFwIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0 eW1hcF9zZXQiKTsKLQotCUFzc2VydCghQnVmZmVySXNWYWxpZChoZWFwQnVmKSB8fAotCQkgICBC dWZmZXJJc0xvY2tlZEJ5TWVJbk1vZGUoaGVhcEJ1ZiwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKSk7 Ci0KLQkvKiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IFZNIHBhZ2UgcGlubmVkICovCi0J aWYgKCFCdWZmZXJJc1ZhbGlkKHZtQnVmKSB8fCBCdWZmZXJHZXRCbG9ja051bWJlcih2bUJ1Zikg IT0gbWFwQmxvY2spCi0JCWVsb2coRVJST1IsICJ3cm9uZyBWTSBidWZmZXIgcGFzc2VkIHRvIHZp c2liaWxpdHltYXBfc2V0Iik7Ci0KLQlwYWdlID0gQnVmZmVyR2V0UGFnZSh2bUJ1Zik7Ci0JbWFw ID0gKHVpbnQ4ICopIFBhZ2VHZXRDb250ZW50cyhwYWdlKTsKLQlMb2NrQnVmZmVyKHZtQnVmLCBC VUZGRVJfTE9DS19FWENMVVNJVkUpOwotCi0Jc3RhdHVzID0gKG1hcFttYXBCeXRlXSA+PiBtYXBP ZmZzZXQpICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTOwotCWlmIChmbGFncyAhPSBzdGF0dXMp Ci0JewotCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKLQotCQltYXBbbWFwQnl0ZV0gfD0gKGZsYWdz IDw8IG1hcE9mZnNldCk7Ci0JCU1hcmtCdWZmZXJEaXJ0eSh2bUJ1Zik7Ci0KLQkJaWYgKFJlbGF0 aW9uTmVlZHNXQUwocmVsKSkKLQkJewotCQkJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChyZWNwdHIp KQotCQkJewotCQkJCUFzc2VydCghSW5SZWNvdmVyeSk7Ci0JCQkJcmVjcHRyID0gbG9nX2hlYXBf dmlzaWJsZShyZWwsIGhlYXBCdWYsIHZtQnVmLCBjdXRvZmZfeGlkLCBmbGFncyk7Ci0KLQkJCQkv KgotCQkJCSAqIElmIGRhdGEgY2hlY2tzdW1zIGFyZSBlbmFibGVkIChvciB3YWxfbG9nX2hpbnRz PW9uKSwgd2UKLQkJCQkgKiBuZWVkIHRvIHByb3RlY3QgdGhlIGhlYXAgcGFnZSBmcm9tIGJlaW5n IHRvcm4uCi0JCQkJICoKLQkJCQkgKiBJZiBub3QsIHRoZW4gd2UgbXVzdCAqbm90KiB1cGRhdGUg dGhlIGhlYXAgcGFnZSdzIExTTi4gSW4KLQkJCQkgKiB0aGlzIGNhc2UsIHRoZSBGUEkgZm9yIHRo ZSBoZWFwIHBhZ2Ugd2FzIG9taXR0ZWQgZnJvbSB0aGUKLQkJCQkgKiBXQUwgcmVjb3JkIGluc2Vy dGVkIGFib3ZlLCBzbyBpdCB3b3VsZCBiZSBpbmNvcnJlY3QgdG8KLQkJCQkgKiB1cGRhdGUgdGhl IGhlYXAgcGFnZSdzIExTTi4KLQkJCQkgKi8KLQkJCQlpZiAoWExvZ0hpbnRCaXRJc05lZWRlZCgp KQotCQkJCXsKLQkJCQkJUGFnZQkJaGVhcFBhZ2UgPSBCdWZmZXJHZXRQYWdlKGhlYXBCdWYpOwot Ci0JCQkJCVBhZ2VTZXRMU04oaGVhcFBhZ2UsIHJlY3B0cik7Ci0JCQkJfQotCQkJfQotCQkJUGFn ZVNldExTTihwYWdlLCByZWNwdHIpOwotCQl9Ci0KLQkJRU5EX0NSSVRfU0VDVElPTigpOwotCX0K LQotCUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0JcmV0dXJuIHN0YXR1 czsKLX0KLQogLyoKICAqIFNldCBWTSAodmlzaWJpbGl0eSBtYXApIGZsYWdzIGluIHRoZSBWTSBi bG9jayBpbiB2bUJ1Zi4KICAqCkBAIC0zNDQsOSArMjQwLDkgQEAgdmlzaWJpbGl0eW1hcF9zZXQo UmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKICAqIHJs b2NhdG9yIGlzIHVzZWQgb25seSBmb3IgZGVidWdnaW5nIG1lc3NhZ2VzLgogICovCiB1aW50OAot dmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKEJsb2NrTnVtYmVyIGhlYXBCbGssCi0JCQkJCQkgQnVm ZmVyIHZtQnVmLCB1aW50OCBmbGFncywKLQkJCQkJCSBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9j YXRvcikKK3Zpc2liaWxpdHltYXBfc2V0KEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJICBCdWZm ZXIgdm1CdWYsIHVpbnQ4IGZsYWdzLAorCQkJCSAgY29uc3QgUmVsRmlsZUxvY2F0b3IgcmxvY2F0 b3IpCiB7CiAJQmxvY2tOdW1iZXIgbWFwQmxvY2sgPSBIRUFQQkxLX1RPX01BUEJMT0NLKGhlYXBC bGspOwogCXVpbnQzMgkJbWFwQnl0ZSA9IEhFQVBCTEtfVE9fTUFQQllURShoZWFwQmxrKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKaW5kZXggY2EyNmQxZjBlZDEuLjA4NDYx ZmRmNTkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2Mu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwpAQCAtMzQ5LDEz ICszNDksNiBAQCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCkKIAkJCX0KIAkJfQogCX0KLQllbHNlIGlmIChpbmZvID09IFhMT0dfSEVBUDJfVklTSUJM RSkKLQl7Ci0JCXhsX2hlYXBfdmlzaWJsZSAqeGxyZWMgPSAoeGxfaGVhcF92aXNpYmxlICopIHJl YzsKLQotCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgInNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOiAl dSwgZmxhZ3M6IDB4JTAyWCIsCi0JCQkJCQkgeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9u LCB4bHJlYy0+ZmxhZ3MpOwotCX0KIAllbHNlIGlmIChpbmZvID09IFhMT0dfSEVBUDJfTVVMVElf SU5TRVJUKQogCXsKIAkJeGxfaGVhcF9tdWx0aV9pbnNlcnQgKnhscmVjID0gKHhsX2hlYXBfbXVs dGlfaW5zZXJ0ICopIHJlYzsKQEAgLTQ2MSw5ICs0NTQsNiBAQCBoZWFwMl9pZGVudGlmeSh1aW50 OCBpbmZvKQogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX0NMRUFOVVA6CiAJCQlpZCA9 ICJQUlVORV9WQUNVVU1fQ0xFQU5VUCI7CiAJCQlicmVhazsKLQkJY2FzZSBYTE9HX0hFQVAyX1ZJ U0lCTEU6Ci0JCQlpZCA9ICJWSVNJQkxFIjsKLQkJCWJyZWFrOwogCQljYXNlIFhMT0dfSEVBUDJf TVVMVElfSU5TRVJUOgogCQkJaWQgPSAiTVVMVElfSU5TRVJUIjsKIAkJCWJyZWFrOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXggNWUxNWNiMTgyNWUuLmMwY2Fj N2VhMWMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29k ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTQ1 NCw3ICs0NTQsNiBAQCBoZWFwMl9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBY TG9nUmVjb3JkQnVmZmVyICpidWYpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1M6 CiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTjoKIAkJY2FzZSBYTE9HX0hFQVAy X1BSVU5FX1ZBQ1VVTV9DTEVBTlVQOgotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKIAkJY2Fz ZSBYTE9HX0hFQVAyX0xPQ0tfVVBEQVRFRDoKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IGZjNDVkNzJjNzliLi4zNjU1MzU4ZWQ2YiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAtNDc1LDEyICs0NzUsMTIgQEAgUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9y aXpvbiwKIAkgKiBJZiB3ZSBnZXQgcGFzc2VkIEludmFsaWRUcmFuc2FjdGlvbklkIHRoZW4gd2Ug ZG8gbm90aGluZyAobm8gY29uZmxpY3QpLgogCSAqCiAJICogVGhpcyBjYW4gaGFwcGVuIHdoZW4g cmVwbGF5aW5nIGFscmVhZHktYXBwbGllZCBXQUwgcmVjb3JkcyBhZnRlciBhCi0JICogc3RhbmRi eSBjcmFzaCBvciByZXN0YXJ0LCBvciB3aGVuIHJlcGxheWluZyBhbiBYTE9HX0hFQVAyX1ZJU0lC TEUKLQkgKiByZWNvcmQgdGhhdCBtYXJrcyBhcyBmcm96ZW4gYSBwYWdlIHdoaWNoIHdhcyBhbHJl YWR5IGFsbC12aXNpYmxlLiAgSXQncwotCSAqIGFsc28gcXVpdGUgY29tbW9uIHdpdGggcmVjb3Jk cyBnZW5lcmF0ZWQgZHVyaW5nIGluZGV4IGRlbGV0aW9uCi0JICogKG9yaWdpbmFsIGV4ZWN1dGlv biBvZiB0aGUgZGVsZXRpb24gY2FuIHJlYXNvbiB0aGF0IGEgcmVjb3ZlcnkgY29uZmxpY3QKLQkg KiB3aGljaCBpcyBzdWZmaWNpZW50IGZvciB0aGUgZGVsZXRpb24gb3BlcmF0aW9uIG11c3QgdGFr ZSBwbGFjZSBiZWZvcmUKLQkgKiByZXBsYXkgb2YgdGhlIGRlbGV0aW9uIHJlY29yZCBpdHNlbGYp LgorCSAqIHN0YW5kYnkgY3Jhc2ggb3IgcmVzdGFydCwgb3Igd2hlbiByZXBsYXlpbmcgYSByZWNv cmQgdGhhdCBtYXJrcyBhcworCSAqIGZyb3plbiBhIHBhZ2Ugd2hpY2ggd2FzIGFscmVhZHkgbWFy a2VkIGFsbC12aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5CisJICogbWFwLiAgSXQncyBhbHNvIHF1 aXRlIGNvbW1vbiB3aXRoIHJlY29yZHMgZ2VuZXJhdGVkIGR1cmluZyBpbmRleAorCSAqIGRlbGV0 aW9uIChvcmlnaW5hbCBleGVjdXRpb24gb2YgdGhlIGRlbGV0aW9uIGNhbiByZWFzb24gdGhhdCBh IHJlY292ZXJ5CisJICogY29uZmxpY3Qgd2hpY2ggaXMgc3VmZmljaWVudCBmb3IgdGhlIGRlbGV0 aW9uIG9wZXJhdGlvbiBtdXN0IHRha2UgcGxhY2UKKwkgKiBiZWZvcmUgcmVwbGF5IG9mIHRoZSBk ZWxldGlvbiByZWNvcmQgaXRzZWxmKS4KIAkgKi8KIAlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKSkKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hs b2cuaAppbmRleCAxNmMyYjJlM2M5Yy4uYjI3ZmNkZmIzNDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1f eGxvZy5oCkBAIC02MCw3ICs2MCw2IEBACiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVfT05fQUND RVNTCQkweDEwCiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX1NDQU4JMHgyMAogI2Rl ZmluZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQCTB4MzAKLSNkZWZpbmUgWExPR19I RUFQMl9WSVNJQkxFCQkweDQwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTVVMVElfSU5TRVJUIDB4NTAK ICNkZWZpbmUgWExPR19IRUFQMl9MT0NLX1VQREFURUQgMHg2MAogI2RlZmluZSBYTE9HX0hFQVAy X05FV19DSUQJCTB4NzAKQEAgLTQ0MywyMCArNDQyLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVh cF9pbnBsYWNlCiAKICNkZWZpbmUgTWluU2l6ZU9mSGVhcElucGxhY2UJKG9mZnNldG9mKHhsX2hl YXBfaW5wbGFjZSwgbm1zZ3MpICsgc2l6ZW9mKGludCkpCiAKLS8qCi0gKiBUaGlzIGlzIHdoYXQg d2UgbmVlZCB0byBrbm93IGFib3V0IHNldHRpbmcgYSB2aXNpYmlsaXR5IG1hcCBiaXQKLSAqCi0g KiBCYWNrdXAgYmxrIDA6IHZpc2liaWxpdHkgbWFwIGJ1ZmZlcgotICogQmFja3VwIGJsayAxOiBo ZWFwIGJ1ZmZlcgotICovCi10eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3Zpc2libGUKLXsKLQlUcmFu c2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwotCXVpbnQ4CQlmbGFnczsKLX0geGxf aGVhcF92aXNpYmxlOwotCi0jZGVmaW5lIFNpemVPZkhlYXBWaXNpYmxlIChvZmZzZXRvZih4bF9o ZWFwX3Zpc2libGUsIGZsYWdzKSArIHNpemVvZih1aW50OCkpCi0KIHR5cGVkZWYgc3RydWN0IHhs X2hlYXBfbmV3X2NpZAogewogCS8qCkBAIC01MDAsMTEgKzQ4NSw2IEBAIGV4dGVybiB2b2lkIGhl YXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVy biBjb25zdCBjaGFyICpoZWFwMl9pZGVudGlmeSh1aW50OCBpbmZvKTsKIGV4dGVybiB2b2lkIGhl YXBfeGxvZ19sb2dpY2FsX3Jld3JpdGUoWExvZ1JlYWRlclN0YXRlICpyKTsKIAotZXh0ZXJuIFhM b2dSZWNQdHIgbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZl ciwKLQkJCQkJCQkJICAgQnVmZmVyIHZtX2J1ZmZlciwKLQkJCQkJCQkJICAgVHJhbnNhY3Rpb25J ZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCQkJICAgdWludDggdm1mbGFncyk7Ci0K IC8qIGluIGhlYXBkZXNjLmMsIHNvIGl0IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBmcm9udGVuZC9i YWNrZW5kIGNvZGUgKi8KIGV4dGVybiB2b2lkIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9h bmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdzLAogCQkJCQkJCQkJCQkJICAgaW50 ICpucGxhbnMsIHhsaHBfZnJlZXplX3BsYW4gKipwbGFucywKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0 eW1hcC5oCmluZGV4IGM2ZmEzN2JlOTY4Li4wNWJhNjc4NmI0NyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvdmlz aWJpbGl0eW1hcC5oCkBAIC0xNSw3ICsxNSw2IEBACiAjZGVmaW5lIFZJU0lCSUxJVFlNQVBfSAog CiAjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgiCi0jaW5jbHVkZSAiYWNjZXNz L3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9ibG9jay5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9yZWxmaWxlbG9jYXRvci5oIgpAQCAtMzIsMTUg KzMxLDkgQEAgZXh0ZXJuIGJvb2wgdmlzaWJpbGl0eW1hcF9jbGVhcihSZWxhdGlvbiByZWwsIEJs b2NrTnVtYmVyIGhlYXBCbGssCiBleHRlcm4gdm9pZCB2aXNpYmlsaXR5bWFwX3BpbihSZWxhdGlv biByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssCiAJCQkJCQkJICBCdWZmZXIgKnZtYnVmKTsKIGV4 dGVybiBib29sIHZpc2liaWxpdHltYXBfcGluX29rKEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZl ciB2bWJ1Zik7Ci1leHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLAot CQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAotCQkJCQkJCSAg IFhMb2dSZWNQdHIgcmVjcHRyLAotCQkJCQkJCSAgIEJ1ZmZlciB2bUJ1ZiwKLQkJCQkJCQkgICBU cmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCi0JCQkJCQkJICAgdWludDggZmxhZ3MpOwotZXh0ZXJu IHVpbnQ4IHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCbG9ja051bWJlciBoZWFwQmxrLAotCQkJ CQkJCQkJICBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzLAotCQkJCQkJCQkJICBjb25zdCBSZWxG aWxlTG9jYXRvciBybG9jYXRvcik7CitleHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXQoQmxv Y2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJCQkgICBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzLAor CQkJCQkJCSAgIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKTsKIGV4dGVybiB1aW50OCB2 aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxr LCBCdWZmZXIgKnZtYnVmKTsKIGV4dGVybiB2b2lkIHZpc2liaWxpdHltYXBfY291bnQoUmVsYXRp b24gcmVsLCBCbG9ja051bWJlciAqYWxsX3Zpc2libGUsIEJsb2NrTnVtYmVyICphbGxfZnJvemVu KTsKIGV4dGVybiBCbG9ja051bWJlciB2aXNpYmlsaXR5bWFwX3ByZXBhcmVfdHJ1bmNhdGUoUmVs YXRpb24gcmVsLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBk ZWZzLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaAppbmRleCA1YWQ1 YzAyMDg3Ny4uZTAxYmNlNGM5OWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNp YmlsaXR5bWFwZGVmcy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVm cy5oCkBAIC0yMSwxNCArMjEsNSBAQAogI2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4J MHgwMgogI2RlZmluZSBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMJMHgwMwkvKiBPUiBvZiBhbGwg dmFsaWQgdmlzaWJpbGl0eW1hcAogCQkJCQkJCQkJCQkgKiBmbGFncyBiaXRzICovCi0vKgotICog VG8gZGV0ZWN0IHJlY292ZXJ5IGNvbmZsaWN0cyBkdXJpbmcgbG9naWNhbCBkZWNvZGluZyBvbiBh IHN0YW5kYnksIHdlIG5lZWQKLSAqIHRvIGtub3cgaWYgYSB0YWJsZSBpcyBhIHVzZXIgY2F0YWxv ZyB0YWJsZS4gRm9yIHRoYXQgd2UgYWRkIGFuIGFkZGl0aW9uYWwKLSAqIGJpdCBpbnRvIHhsX2hl YXBfdmlzaWJsZS5mbGFncywgaW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlLgotICoKLSAqIE5COiBW SVNJQklMSVRZTUFQX1hMT0dfKiBtYXkgbm90IGJlIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3Nl dCgpLgotICovCi0jZGVmaW5lIFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JFTAkweDA0Ci0j ZGVmaW5lIFZJU0lCSUxJVFlNQVBfWExPR19WQUxJRF9CSVRTCShWSVNJQklMSVRZTUFQX1ZBTElE X0JJVFMgfCBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUwpCiAKICNlbmRpZgkJCQkJCQkv KiBWSVNJQklMSVRZTUFQREVGU19IICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDA0 ODQ1ZDVlNjgwLi42NTA1NjI4MTIwYyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTQz MzEsNyArNDMzMSw2IEBAIHhsX2hlYXBfcHJ1bmUKIHhsX2hlYXBfcmV3cml0ZV9tYXBwaW5nCiB4 bF9oZWFwX3RydW5jYXRlCiB4bF9oZWFwX3VwZGF0ZQoteGxfaGVhcF92aXNpYmxlCiB4bF9pbnZh bGlkX3BhZ2UKIHhsX2ludmFsaWRfcGFnZV9rZXkKIHhsX2ludmFsaWRhdGlvbnMKLS0gCjIuNDMu MAoK --000000000000857fc406462f10e4 Content-Type: text/x-patch; charset="US-ASCII"; name="v28-0009-Simplify-heap_page_would_be_all_visible-visibili.patch" Content-Disposition: attachment; filename="v28-0009-Simplify-heap_page_would_be_all_visible-visibili.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjapdkf48 RnJvbSA4YmE0MjBmMmFjNzc2NTBkMjI5MDViYTdiNDY2MGRjNzBkYWQ5MzgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE3IERlYyAyMDI1IDEzOjU3OjE2IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MjggMDkvMTVdIFNpbXBsaWZ5IGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSB2 aXNpYmlsaXR5CiBjaGVjawoKaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKCkgZG9lc24n dCBjYXJlIGFib3V0IHRoZSBkaXN0aW5jdGlvbgpiZXR3ZWVuIEhFQVBUVVBMRV9SRUNFTlRMWV9E RUFEIGFuZCBIRUFQVFVQTEVfREVBRCB0dXBsZXMgLS0gYW55IHR1cGxlCnRoYXQgaXMgbm90IEhF QVBUVVBMRV9MSVZFIG1lYW5zIHRoZSBwYWdlIGlzIG5vdCBhbGwtdmlzaWJsZSBhbmQgY2F1c2Vz CnVzIHRvIHJldHVybiBmYWxzZS4KClRoZXJlZm9yZSwgd2UgZG9uJ3QgbmVlZCB0byBjYWxsIEhl YXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgpLCB3aGljaAppbmNsdWRlcyBhbiBleHRyYSBzdGVwIHRv IGRpc3Rpbmd1aXNoIGJldHdlZW4gZGVhZCBhbmQgcmVjZW50bHkgZGVhZAp0dXBsZXMgdXNpbmcg T2xkZXN0WG1pbi4gUmVwbGFjZSBpdCB3aXRoIHRoZSBtb3JlIG1pbmltYWwKSGVhcFR1cGxlU2F0 aXNmaWVzVmFjdXVtSG9yaXpvbigpLgoKVGhpcyBoYXMgdGhlIGFkZGVkIGJlbmVmaXQgb2YgbWFr aW5nIGl0IGVhc2llciB0byByZXBsYWNlIHVzZXMgb2YKT2xkZXN0WG1pbiBpbiBoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUoKSBpbiB0aGUgZnV0dXJlLgotLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDggKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA3IGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKaW5kZXggOWRlYzQ4NzVlM2EuLjQ0MWI0ODgzZDg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCkBAIC0zNTM1LDYgKzM1MzUsNyBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxs X3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCXsKIAkJSXRlbUlkCQlpdGVtaWQ7 CiAJCUhlYXBUdXBsZURhdGEgdHVwbGU7CisJCVRyYW5zYWN0aW9uSWQgZGVhZF9hZnRlciA9IElu dmFsaWRUcmFuc2FjdGlvbklkOwogCiAJCS8qCiAJCSAqIFNldCB0aGUgb2Zmc2V0IG51bWJlciBz byB0aGF0IHdlIGNhbiBkaXNwbGF5IGl0IGFsb25nIHdpdGggYW55CkBAIC0zNTc0LDEyICszNTc1 LDE0IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWYsCiAKIAkJLyogVmlzaWJpbGl0eSBjaGVja3MgbWF5IGRvIElPIG9yIGFsbG9jYXRlIG1l bW9yeSAqLwogCQlBc3NlcnQoQ3JpdFNlY3Rpb25Db3VudCA9PSAwKTsKLQkJc3dpdGNoIChIZWFw VHVwbGVTYXRpc2ZpZXNWYWN1dW0oJnR1cGxlLCBPbGRlc3RYbWluLCBidWYpKQorCQlzd2l0Y2gg KEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUhvcml6b24oJnR1cGxlLCBidWYsICZkZWFkX2FmdGVy KSkKIAkJewogCQkJY2FzZSBIRUFQVFVQTEVfTElWRToKIAkJCQl7CiAJCQkJCVRyYW5zYWN0aW9u SWQgeG1pbjsKIAorCQkJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYWRfYWZ0ZXIp KTsKKwogCQkJCQkvKiBDaGVjayBjb21tZW50cyBpbiBsYXp5X3NjYW5fcHJ1bmUuICovCiAJCQkJ CWlmICghSGVhcFR1cGxlSGVhZGVyWG1pbkNvbW1pdHRlZCh0dXBsZS50X2RhdGEpKQogCQkJCQl7 CkBAIC0zNjE0LDYgKzM2MTcsOSBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVs YXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCiAJCQljYXNlIEhFQVBUVVBMRV9ERUFEOgogCQkJY2Fz ZSBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRDoKKwkJCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFs aWQoZGVhZF9hZnRlcikpOworCQkJCS8qIEZBTExUSFJPVUdIICovCisKIAkJCWNhc2UgSEVBUFRV UExFX0lOU0VSVF9JTl9QUk9HUkVTUzoKIAkJCWNhc2UgSEVBUFRVUExFX0RFTEVURV9JTl9QUk9H UkVTUzoKIAkJCQl7Ci0tIAoyLjQzLjAKCg== --000000000000857fc406462f10e4 Content-Type: text/x-patch; charset="UTF-8"; name="v28-0010-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v28-0010-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjapdn1t9 RnJvbSA3YWYzYjZmNjcwZmQ4ZTRkMGJjMjE0MWQ4ZDExZDU0Njk2YmM0NTljIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE3IERlYyAyMDI1IDE2OjUxOjA1IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MjggMTAvMTVdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l IHBhZ2UKIGxldmVsIHZpc2liaWxpdHkKCkR1cmluZyB2YWN1dW0ncyBmaXJzdCBhbmQgdGhpcmQg cGhhc2VzLCB3ZSBleGFtaW5lIHR1cGxlcycgdmlzaWJpbGl0eQp0byBkZXRlcm1pbmUgaWYgd2Ug Y2FuIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCgpQcmV2 aW91c2x5LCB0aGlzIGNoZWNrIGNvbXBhcmVkIHR1cGxlIHhtaW5zIGFnYWluc3QgYSBzaW5nbGUg WElEIGNob3NlbiBhdAp0aGUgc3RhcnQgb2YgdmFjdXVtIChPbGRlc3RYbWluKS4gV2Ugbm93IHVz ZSBHbG9iYWxWaXNTdGF0ZSwgd2hpY2ggYWxzbwplbmFibGVzIGZ1dHVyZSB3b3JrIHRvIHNldCB0 aGUgVk0gZHVyaW5nIG9uLWFjY2VzcyBwcnVuaW5nLCBzaW5jZSBvcmRpbmFyeQpxdWVyaWVzIGhh dmUgYWNjZXNzIHRvIEdsb2JhbFZpc1N0YXRlIGJ1dCBub3QgT2xkZXN0WG1pbi4KClRoaXMgYWxz byBiZW5lZml0cyB2YWN1dW06IGluIHNvbWUgY2FzZXMsIEdsb2JhbFZpc1N0YXRlIG1heSBhZHZh bmNlCmR1cmluZyBhIHZhY3V1bSwgYWxsb3dpbmcgbW9yZSBwYWdlcyB0byBiZWNvbWUgY29uc2lk ZXJlZCBhbGwtdmlzaWJsZS4KQW5kLCBpbiB0aGUgZnV0dXJlLCB3ZSBjb3VsZCBlYXNpbHkgYWRk IGEgaGV1cmlzdGljIHRvIHVwZGF0ZQpHbG9iYWxWaXNTdGF0ZSBtb3JlIGZyZXF1ZW50bHkgZHVy aW5nIHZhY3V1bXMgb2YgbGFyZ2UgdGFibGVzLgoKT2xkZXN0WG1pbiBpcyBzdGlsbCB1c2VkIGZv ciBmcmVlemluZyBhbmQgYXMgYSBiYWNrc3RvcCB0byBlbnN1cmUgd2UKZG9uJ3QgZnJlZXplIGEg ZGVhZCB0dXBsZSB0aGF0IHdhc24ndCB5ZXQgcHJ1bmFibGUgYWNjb3JkaW5nIHRvCkdsb2JhbFZp c1N0YXRlIGluIHRoZSByYXJlIG9jY3VycmVuY2VzIHdoZXJlIEdsb2JhbFZpc1N0YXRlIG1vdmVz CmJhY2t3YXJkcy4KCkJlY2F1c2UgY29tcGFyaW5nIGEgdHJhbnNhY3Rpb24gSUQgYWdhaW5zdCBH bG9iYWxWaXNTdGF0ZSBpcyBtb3JlCmV4cGVuc2l2ZSB0aGFuIGNvbXBhcmluZyBhZ2FpbnN0IGEg c2luZ2xlIFhJRCwgd2UgZGVmZXIgdGhpcyBjaGVjayB1bnRpbAphZnRlciBzY2FubmluZyBhbGwg dHVwbGVzIG9uIHRoZSBwYWdlLiBJZiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgd2FzCm1haW50YWlu ZWQsIHdlIHBlcmZvcm0gdGhlIEdsb2JhbFZpc1N0YXRlIGNoZWNrIG9ubHkgb25jZSBwZXIgcGFn ZS4KVGhpcyBpcyBzYWZlIGJlY2F1c2UgdmlzaWJpbGl0eV9jdXRvZmZfeGlkIHJlY29yZHMgdGhl IG5ld2VzdCB4bWluIG9uCnRoZSBwYWdlOyBpZiBpdCBpcyBnbG9iYWxseSB2aXNpYmxlLCB0aGVu IHRoZSBlbnRpcmUgcGFnZSBpcyBhbGwtdmlzaWJsZS4KClRoaXMgYXBwcm9hY2ggbWF5IHJlc3Vs dCBpbiBleGFtaW5pbmcgbW9yZSB0dXBsZSB4bWlucyB0aGFuIGJlZm9yZSwKc2luY2Ugd2l0aCBP bGRlc3RYbWluIHdlIGNvdWxkIHNvbWV0aW1lcyBydWxlIG91dCB0aGUgcGFnZSBiZWluZwphbGwt dmlzaWJsZSBlYXJsaWVyLiBIb3dldmVyLCBwcm9maWxpbmcgc2hvd3MgdGhlIGFkZGl0aW9uYWwg Y29zdCBpcyBub3QKc2lnbmlmaWNhbnQuCgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5k cmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWls LmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jIHwg MjIgKysrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICAgICAg IHwgNTMgKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgICAgICAgIHwgMzggKysrKysrKysrKy0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmggICAgICAgICAgICAgICAgIHwgIDQgKy0KIDQgZmlsZXMgY2hhbmdlZCwgNzYgaW5z ZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV92aXNpYmlsaXR5LmMKaW5kZXggMDVmNjk0NmZlNjAuLmY0YWIxYzEzMTY5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKQEAgLTExODksNiArMTE4 OSwyOCBAQCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oSGVhcFR1cGxlIGh0dXAsIFRyYW5zYWN0 aW9uSWQgT2xkZXN0WG1pbiwKIAlyZXR1cm4gcmVzOwogfQogCisvKgorICogV3JhcHBlciBhcm91 bmQgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgZm9yIHVzZSB3aGVuIGV4YW1pbmluZyBs aXZlCisgKiB0dXBsZXMuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gWElEIG1heSBiZSBjb25z aWRlcmVkIHJ1bm5pbmcgYnkgYXQgbGVhc3QKKyAqIG9uZSBzbmFwc2hvdC4KKyAqCisgKiBUaGlz IGZ1bmN0aW9uIGFsb25lIGlzIGluc3VmZmljaWVudCB0byBkZXRlcm1pbmUgdHVwbGUgdmlzaWJp bGl0eTsgY2FsbGVycworICogbXVzdCBhbHNvIGNvbnNpZGVyIHRoZSBYSUQncyBjb21taXQgc3Rh dHVzLiBJdHMgcHVycG9zZSBpcyBwdXJlbHkgc2VtYW50aWM6CisgKiB3aGVuIGFwcGxpZWQgdG8g bGl2ZSB0dXBsZXMsIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCgpIGlzIGNoZWNraW5nCisg KiB3aGV0aGVyIHRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24gaXMgc3RpbGwgY29uc2lkZXJlZCBy dW5uaW5nLCBub3Qgd2hldGhlcgorICogdGhlIHR1cGxlIGlzIHJlbW92YWJsZS4gTGl2ZSB0dXBs ZXMgYXJlLCBieSBkZWZpbml0aW9uLCBub3QgcmVtb3ZhYmxlLCBidXQKKyAqIHRoZSBzbmFwc2hv dCBjcml0ZXJpYSBmb3Ig4oCcdHJhbnNhY3Rpb24gc3RpbGwgcnVubmluZ+KAnSBhcmUgaWRlbnRp Y2FsIHRvCisgKiB0aG9zZSB1c2VkIGZvciByZW1vdmFsIFhJRHMuCisgKgorICogU2VlIHRoZSBj b21tZW50IGFib3ZlIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVtGdWxsXVhpZCgpIGZvciBkZXRh aWxzIG9uIHRoZQorICogcmVxdWlyZWQgcHJlY29uZGl0aW9ucyBmb3IgY2FsbGluZyB0aGlzIGZ1 bmN0aW9uLgorICovCitib29sCitHbG9iYWxWaXNUZXN0WGlkTWF5YmVSdW5uaW5nKEdsb2JhbFZp c1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJcmV0dXJuICFHbG9iYWxWaXNU ZXN0SXNSZW1vdmFibGVYaWQoc3RhdGUsIHhpZCk7Cit9CisKIC8qCiAgKiBXb3JrIGhvcnNlIGZv ciBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0gYW5kIHNpbWlsYXIgcm91dGluZXMuCiAgKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA4NmRlMzYxM2Y1ZS4uZTBiMTliM2U2Njkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC00NjEsMTEgKzQ2MSwxMiBAQCBw cnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAogCS8qCiAJICog VGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSwgY29t bWl0dGVkIHR1cGxlcwotCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1pbiBvbiB0aGUgcGFnZS4gVGhp cyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQotCSAqIGlmIHRoZSBwYWdlIGlzIGFsbC12 aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhhdCBpcwotCSAqIG5v dCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIEFzIGxvbmcgYXMg aXQgaXMKLQkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNu YXBzaG90IGNvbmZsaWN0IGhvcml6b24KLQkgKiB3aGVuIHVwZGF0aW5nIHRoZSBWTSBhbmQvb3Ig ZnJlZXppbmcgYWxsIHRoZSB0dXBsZXMgb24gdGhlIHBhZ2UuCisJICogb24gdGhlIHBhZ2Ugb2xk ZXIgdGhhbiB0aGUgdmlzaWJpbGl0eSBob3Jpem9uIHJlcHJlc2VudGVkIGluIHRoZQorCSAqIEds b2JhbFZpc1N0YXRlLiBUaGlzIGZpZWxkIGlzIG9ubHkga2VwdCB1cC10by1kYXRlIGlmIHRoZSBw YWdlIGlzCisJICogYWxsLXZpc2libGUuIEFzIHNvb24gYXMgYSB0dXBsZSBpcyBlbmNvdW50ZXJl ZCB0aGF0IGlzIG5vdCB2aXNpYmxlIHRvCisJICogYWxsLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRh aW5lZC4gQXMgbG9uZyBhcyBpdCBpcyBtYWludGFpbmVkLCBpdCBjYW4gYmUKKwkgKiB1c2VkIHRv IGNhbGN1bGF0ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHVwZGF0aW5nIHRo ZSBWTQorCSAqIGFuZC9vciBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4KIAkg Ki8KIAlwcnN0YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIH0KQEAgLTk5NCwxNCArOTk1LDE0IEBAIGhlYXBfcGFnZV93aWxsX3NldF92bShQcnVuZVN0 YXRlICpwcnN0YXRlLAogICovCiBzdGF0aWMgYm9vbAogaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxl KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFht aW4sCisJCQkJCQkgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkgYm9vbCAqYWxsX2Zy b3plbiwKIAkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJ CQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkKIHsKIAogCXJldHVybiBoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUocmVsLCBidWYsCi0JCQkJCQkJCQkJICBPbGRlc3RYbWluLAor CQkJCQkJCQkJCSAgdmlzdGVzdCwKIAkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBh bGxfZnJvemVuLAogCQkJCQkJCQkJCSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLApAQCAtMTA4OCw2 ICsxMDg5LDE2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1z ICpwYXJhbXMsCiAJcHJ1bmVfZnJlZXplX3BsYW4oUmVsYXRpb25HZXRSZWxpZChwYXJhbXMtPnJl bGF0aW9uKSwKIAkJCQkJICBidWZmZXIsICZwcnN0YXRlLCBvZmZfbG9jKTsKIAorCS8qCisJICog QWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLCBpZiB0aGUg bmV3ZXN0IHhtaW4KKwkgKiBhbW9uZ3N0IHRoZW0gbWF5IGJlIGNvbnNpZGVyZWQgcnVubmluZyBi eSBhbnkgc25hcHNob3QsIHRoZSBwYWdlIGNhbm5vdAorCSAqIGJlIGFsbC12aXNpYmxlLgorCSAq LworCWlmIChwcnN0YXRlLmFsbF92aXNpYmxlICYmCisJCVRyYW5zYWN0aW9uSWRJc05vcm1hbChw cnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYKKwkJR2xvYmFsVmlzVGVzdFhpZE1heWJl UnVubmluZyhwcnN0YXRlLnZpc3Rlc3QsIHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkK KwkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOworCiAJ LyoKIAkgKiBJZiBjaGVja3N1bXMgYXJlIGVuYWJsZWQsIGNhbGxpbmcgaGVhcF9wcnVuZV9zYXRp c2ZpZXNfdmFjdXVtKCkgd2hpbGUKIAkgKiBjaGVja2luZyB0dXBsZSB2aXNpYmlsaXR5IGluZm9y bWF0aW9uIGluIHBydW5lX2ZyZWV6ZV9wbGFuKCkgbWF5IGhhdmUKQEAgLTEyNzAsMTAgKzEyODEs OSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1z LAogCQlib29sCQlkZWJ1Z19hbGxfZnJvemVuOwogCiAJCUFzc2VydChwcnN0YXRlLmxwZGVhZF9p dGVtcyA9PSAwKTsKLQkJQXNzZXJ0KHByc3RhdGUuY3V0b2Zmcyk7CiAKIAkJQXNzZXJ0KGhlYXBf cGFnZV9pc19hbGxfdmlzaWJsZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCi0JCQkJCQkJCQkJ cHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluLAorCQkJCQkJCQkJCXByc3RhdGUudmlzdGVzdCwK IAkJCQkJCQkJCQkmZGVidWdfYWxsX2Zyb3plbiwKIAkJCQkJCQkJCQkmZGVidWdfY3V0b2ZmLCBv ZmZfbG9jKSk7CiAKQEAgLTE3OTQsMjggKzE4MDQsMTUgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5j aGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51 bWIKIAkJCQl9CiAKIAkJCQkvKgotCQkJCSAqIFRoZSBpbnNlcnRlciBkZWZpbml0ZWx5IGNvbW1p dHRlZC4gIEJ1dCBpcyBpdCBvbGQgZW5vdWdoCi0JCQkJICogdGhhdCBldmVyeW9uZSBzZWVzIGl0 IGFzIGNvbW1pdHRlZD8gIEEgRnJvemVuVHJhbnNhY3Rpb25JZAotCQkJCSAqIGlzIHNlZW4gYXMg Y29tbWl0dGVkIHRvIGV2ZXJ5b25lLiAgT3RoZXJ3aXNlLCB3ZSBjaGVjayBpZgotCQkJCSAqIHRo ZXJlIGlzIGEgc25hcHNob3QgdGhhdCBjb25zaWRlcnMgdGhpcyB4aWQgdG8gc3RpbGwgYmUKLQkJ CQkgKiBydW5uaW5nLCBhbmQgaWYgc28sIHdlIGRvbid0IGNvbnNpZGVyIHRoZSBwYWdlIGFsbC12 aXNpYmxlLgorCQkJCSAqIFRoZSBpbnNlcnRlciBkZWZpbml0ZWx5IGNvbW1pdHRlZC4gQnV0IHdl IGRvbid0IGtub3cgaWYgaXQKKwkJCQkgKiBpcyBvbGQgZW5vdWdoIHRoYXQgZXZlcnlvbmUgc2Vl cyBpdCBhcyBjb21taXR0ZWQuIExhdGVyLAorCQkJCSAqIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRo ZSB0dXBsZXMgb24gdGhlIHBhZ2UsIHdlJ2xsIGNoZWNrIGlmCisJCQkJICogdGhlcmUgaXMgYW55 IHNuYXBzaG90IHRoYXQgc3RpbGwgY29uc2lkZXIgdGhlIG5ld2VzdCB4aWQgb24KKwkJCQkgKiB0 aGUgcGFnZSB0byBiZSBydW5uaW5nLiBJZiBzbywgd2UgZG9uJ3QgY29uc2lkZXIgdGhlIHBhZ2UK KwkJCQkgKiBhbGwtdmlzaWJsZS4KIAkJCQkgKi8KIAkJCQl4bWluID0gSGVhcFR1cGxlSGVhZGVy R2V0WG1pbihodHVwKTsKIAotCQkJCS8qCi0JCQkJICogRm9yIG5vdyBhbHdheXMgdXNlIHByc3Rh dGUtPmN1dG9mZnMgZm9yIHRoaXMgdGVzdCwgYmVjYXVzZQotCQkJCSAqIHdlIG9ubHkgdXBkYXRl ICdhbGxfdmlzaWJsZScgYW5kICdhbGxfZnJvemVuJyB3aGVuIGZyZWV6aW5nCi0JCQkJICogaXMg cmVxdWVzdGVkLiBXZSBjb3VsZCB1c2UgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkCi0JCQkJ ICogaW5zdGVhZCwgaWYgYSBub24tZnJlZXppbmcgY2FsbGVyIHdhbnRlZCB0byBzZXQgdGhlIFZN IGJpdC4KLQkJCQkgKi8KLQkJCQlBc3NlcnQocHJzdGF0ZS0+Y3V0b2Zmcyk7Ci0JCQkJaWYgKCFU cmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwgcHJzdGF0ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1pbikp Ci0JCQkJewotCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOwotCQkJCQlwcnN0YXRl LT5hbGxfZnJvemVuID0gZmFsc2U7Ci0JCQkJCWJyZWFrOwotCQkJCX0KLQogCQkJCS8qIFRyYWNr IG5ld2VzdCB4bWluIG9uIHBhZ2UuICovCiAJCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKHht aW4sIHByc3RhdGUtPnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYKIAkJCQkJVHJhbnNhY3Rpb25J ZElzTm9ybWFsKHhtaW4pKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDQ0 MWI0ODgzZDg5Li4wODJjZGJjNWRlOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YwpAQCAtMjcyMyw3ICsyNzIzLDcgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUg KnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJICogZG9uZSBvdXRz aWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLgogCSAqLwogCWlmIChoZWFwX3BhZ2Vfd291bGRfYmVf YWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZmZlciwKLQkJCQkJCQkJCSAgIHZhY3JlbC0+Y3V0 b2Zmcy5PbGRlc3RYbWluLAorCQkJCQkJCQkJICAgdmFjcmVsLT52aXN0ZXN0LAogCQkJCQkJCQkJ ICAgZGVhZG9mZnNldHMsIG51bV9vZmZzZXRzLAogCQkJCQkJCQkJICAgJmFsbF9mcm96ZW4sICZ2 aXNpYmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJCQkJCQkgICAmdmFjcmVsLT5vZmZudW0pKQpAQCAt MzQ4NCw3ICszNDg0LDcgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCkK ICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZSBvdGhlciB0aGFuIHRo ZSBwcm92aWRlZAogICogZGVhZG9mZnNldHMgYW5kIGZhbHNlIG90aGVyd2lzZS4KICAqCi0gKiBP bGRlc3RYbWluIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCisgKiB2aXN0ZXN0IGlz IHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCiAgKgogICogT3V0cHV0IHBhcmFtZXRlcnM6 CiAgKgpAQCAtMzUwMCw3ICszNTAwLDcgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUg KnZhY3JlbCkKICAqLwogYm9vbAogaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4s CisJCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJICAgT2Zmc2V0TnVt YmVyICpkZWFkb2Zmc2V0cywKIAkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJCSAg IGJvb2wgKmFsbF9mcm96ZW4sCkBAIC0zNTgzLDcgKzM1ODMsNyBAQCBoZWFwX3BhZ2Vfd291bGRf YmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCiAJCQkJCUFzc2VydCgh VHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikpOwogCi0JCQkJCS8qIENoZWNrIGNvbW1l bnRzIGluIGxhenlfc2Nhbl9wcnVuZS4gKi8KKwkJCQkJLyogQ2hlY2sgaGVhcF9wcnVuZV9yZWNv cmRfdW5jaGFuZ2VkX2xwX25vcm1hbCBjb21tZW50cyAqLwogCQkJCQlpZiAoIUhlYXBUdXBsZUhl YWRlclhtaW5Db21taXR0ZWQodHVwbGUudF9kYXRhKSkKIAkJCQkJewogCQkJCQkJYWxsX3Zpc2li bGUgPSBmYWxzZTsKQEAgLTM1OTIsMTYgKzM1OTIsMTcgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2Fs bF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJfQogCiAJCQkJCS8qCi0J CQkJCSAqIFRoZSBpbnNlcnRlciBkZWZpbml0ZWx5IGNvbW1pdHRlZC4gQnV0IGlzIGl0IG9sZCBl bm91Z2gKLQkJCQkJICogdGhhdCBldmVyeW9uZSBzZWVzIGl0IGFzIGNvbW1pdHRlZD8KKwkJCQkJ ICogVGhlIGluc2VydGVyIGRlZmluaXRlbHkgY29tbWl0dGVkLiBCdXQgd2UgZG9uJ3Qga25vdyBp ZgorCQkJCQkgKiBpdCBpcyBvbGQgZW5vdWdoIHRoYXQgZXZlcnlvbmUgc2VlcyBpdCBhcyBjb21t aXR0ZWQuCisJCQkJCSAqIERvbid0IGNoZWNrIHRoYXQgbm93LgorCQkJCQkgKgorCQkJCQkgKiBJ ZiB3ZSBzY2FuIGFsbCB0dXBsZXMgd2l0aG91dCBmaW5kaW5nIG9uZSB0aGF0IHByZXZlbnRzCisJ CQkJCSAqIHRoZSBwYWdlIGZyb20gYmVpbmcgYWxsLXZpc2libGUsIHdlIHRoZW4gY2hlY2sgd2hl dGhlcgorCQkJCQkgKiBhbnkgc25hcHNob3Qgc3RpbGwgY29uc2lkZXJzIHRoZSBuZXdlc3QgWElE IG9uIHRoZSBwYWdlCisJCQkJCSAqIHRvIGJlIHJ1bm5pbmcuIEluIHRoYXQgY2FzZSwgdGhlIHBh Z2UgaXMgbm90IGNvbnNpZGVyZWQKKwkJCQkJICogYWxsLXZpc2libGUuCiAJCQkJCSAqLwogCQkJ CQl4bWluID0gSGVhcFR1cGxlSGVhZGVyR2V0WG1pbih0dXBsZS50X2RhdGEpOwotCQkJCQlpZiAo IVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLCBPbGRlc3RYbWluKSkKLQkJCQkJewotCQkJCQkJ YWxsX3Zpc2libGUgPSBmYWxzZTsKLQkJCQkJCSphbGxfZnJvemVuID0gZmFsc2U7Ci0JCQkJCQli cmVhazsKLQkJCQkJfQogCiAJCQkJCS8qIFRyYWNrIG5ld2VzdCB4bWluIG9uIHBhZ2UuICovCiAJ CQkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93cyh4bWluLCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlk KSAmJgpAQCAtMzYzMyw2ICszNjM0LDE5IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJs ZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCX0KIAl9CQkJCQkJCS8qIHNjYW4gYWxvbmcg cGFnZSAqLwogCisJLyoKKwkgKiBBZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUgbGl2ZSB0dXBsZXMg b24gdGhlIHBhZ2UsIGlmIHRoZSBuZXdlc3QgeG1pbgorCSAqIGFtb25nIHRoZW0gbWF5IHN0aWxs IGJlIGNvbnNpZGVyZWQgcnVubmluZyBieSBhbnkgc25hcHNob3QsIHRoZSBwYWdlCisJICogY2Fu bm90IGJlIGFsbC12aXNpYmxlLgorCSAqLworCWlmIChhbGxfdmlzaWJsZSAmJgorCQlUcmFuc2Fj dGlvbklkSXNOb3JtYWwoKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYKKwkJR2xvYmFsVmlzVGVz dFhpZE1heWJlUnVubmluZyh2aXN0ZXN0LCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkKKwl7CisJ CWFsbF92aXNpYmxlID0gZmFsc2U7CisJCSphbGxfZnJvemVuID0gZmFsc2U7CisJfQorCiAJLyog Q2xlYXIgdGhlIG9mZnNldCBpbmZvcm1hdGlvbiBvbmNlIHdlIGhhdmUgcHJvY2Vzc2VkIHRoZSBn aXZlbiBwYWdlLiAqLwogCSpsb2dnaW5nX29mZm51bSA9IEludmFsaWRPZmZzZXROdW1iZXI7CiAK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaAppbmRleCBiZWMyZjg0MDEwMi4uMTYyNWIxMDc1NzUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVh cGFtLmgKQEAgLTQzOSw3ICs0MzksNyBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9hbmRf ZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogZXh0ZXJuIHZvaWQgaGVh cF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQljb25zdCBWYWN1dW1QYXJhbXMgcGFy YW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpOwogZXh0ZXJuIGJvb2wgaGVhcF9w YWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJ CQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkJICAgR2xvYmFsVmlz U3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywK IAkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJCQkJCSAgIGJvb2wgKmFsbF9m cm96ZW4sCkBAIC00NTMsNiArNDUzLDggQEAgZXh0ZXJuIFRNX1Jlc3VsdCBIZWFwVHVwbGVTYXRp c2ZpZXNVcGRhdGUoSGVhcFR1cGxlIGh0dXAsIENvbW1hbmRJZCBjdXJjaWQsCiAJCQkJCQkJCQkJ ICBCdWZmZXIgYnVmZmVyKTsKIGV4dGVybiBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2ZpZXNW YWN1dW0oSGVhcFR1cGxlIGh0dXAsIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJCQkJ CQkJQnVmZmVyIGJ1ZmZlcik7CisKK2V4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RYaWRNYXliZVJ1 bm5pbmcoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRlcm4g SFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtSG9yaXpvbihIZWFwVHVwbGUgaHR1 cCwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKmRlYWRfYWZ0 ZXIpOwogZXh0ZXJuIHZvaWQgSGVhcFR1cGxlU2V0SGludEJpdHMoSGVhcFR1cGxlSGVhZGVyIHR1 cGxlLCBCdWZmZXIgYnVmZmVyLAotLSAKMi40My4wCgo= --000000000000857fc406462f10e4 Content-Type: text/x-patch; charset="UTF-8"; name="v28-0011-Unset-all_visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v28-0011-Unset-all_visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjapdrq910 RnJvbSAxMWQ0MzlmY2M0YWUzNWEzMWJlMjA0YzJlYjhhMzZkNTJjMTYyZDA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIyOjM1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjggMTEvMTVdIFVuc2V0IGFsbF92aXNpYmxlIHNvb25lciBpZiBub3QgZnJlZXppbmcK TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRoZSBwcnVuZS9mcmVlemUgcGF0 aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNpYmxlIGFuZAphbGxfZnJvemVu IGluIHRoZSBwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMKZnJl ZXppbmcuCgpIb3dldmVyLCBpZiBubyBmcmVlemluZyB3aWxsIGJlIGF0dGVtcHRlZCwgdGhlcmXi gJlzIG5vIG5lZWQgdG8gZGVsYXkuCkNsZWFyaW5nIHRoZSBmbGFncyBlYXJsaWVyIGF2b2lkcyBl eHRyYSBib29ra2VlcGluZyBpbgpoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFs KCkuIFRoaXMgY3VycmVudGx5IGhhcyBubyBydW50aW1lCmVmZmVjdCBiZWNhdXNlIGFsbCBjYWxs ZXJzIHRoYXQgY29uc2lkZXIgc2V0dGluZyB0aGUgVk0gYWxzbyBwcmVwYXJlCmZyZWV6ZSBwbGFu cywgYnV0IHVwY29taW5nIGNoYW5nZXMgd2lsbCBhbGxvdyBvbi1hY2Nlc3MgcHJ1bmluZyB0byBz ZXQKdGhlIFZNIHdpdGhvdXQgZnJlZXppbmcuIFRoZSBleHRyYSBib29ra2VlcGluZyB3YXMgbm90 aWNlYWJsZSBpbiBhCnByb2ZpbGUgb2Ygb24tYWNjZXNzIFZNIHNldHRpbmcuCgpSZXZpZXdlZC1i eTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyB8IDE1ICsrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQs IDEzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYwppbmRleCBlMGIxOWIzZTY2OS4uMWZhNzJlMTlmMGQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCkBAIC0xNjY5LDggKzE2NjksMTMgQEAgaGVhcF9wcnVuZV9yZWNvcmRf ZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtLAogCS8qCiAJICog RGVsaWJlcmF0ZWx5IGRlbGF5IHVuc2V0dGluZyBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB1 bnRpbCBsYXRlcgogCSAqIGR1cmluZyBwcnVuaW5nLiBSZW1vdmFibGUgZGVhZCB0dXBsZXMgc2hv dWxkbid0IHByZWNsdWRlIGZyZWV6aW5nIHRoZQotCSAqIHBhZ2UuCisJICogcGFnZS4gSWYgd2Ug d29uJ3QgYXR0ZW1wdCBmcmVlemluZywganVzdCB1bnNldCBhbGwtdmlzaWJsZSBub3csIHRob3Vn aC4KIAkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCXsKKwkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOworCX0K IAogCS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRl YWRvZmZzZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51bTsKQEAgLTE5MzAsOCAr MTkzNSwxNCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChQYWdlIHBhZ2Us IFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlcgogCSAqIFNpbWlsYXJseSwgZG9uJ3Qg dW5zZXQgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gdW50aWwgbGF0ZXIsIGF0IHRoZQogCSAq IGVuZCBvZiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLiAgVGhpcyB3aWxsIGFsbG93IHVz IHRvIGF0dGVtcHQgdG8KIAkgKiBmcmVlemUgdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFzIGxv bmcgYXMgd2UgdW5zZXQgaXQgYmVmb3JlIHVwZGF0aW5nCi0JICogdGhlIHZpc2liaWxpdHkgbWFw LCB0aGlzIHdpbGwgYmUgY29ycmVjdC4KKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoaXMgd2ls bCBiZSBjb3JyZWN0LiBJZiB3ZSB3b24ndCBhdHRlbXB0IGZyZWV6aW5nLAorCSAqIHRob3VnaCwg anVzdCB1bnNldCBhbGwtdmlzaWJsZSBub3cuCiAJICovCisJaWYgKCFwcnN0YXRlLT5hdHRlbXB0 X2ZyZWV6ZSkKKwl7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCXByc3RhdGUt PmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CiAKIAkvKiBSZWNvcmQgdGhlIGRlYWQgb2Zmc2V0IGZv ciB2YWN1dW0gKi8KIAlwcnN0YXRlLT5kZWFkb2Zmc2V0c1twcnN0YXRlLT5scGRlYWRfaXRlbXMr K10gPSBvZmZudW07Ci0tIAoyLjQzLjAKCg== --000000000000857fc406462f10e4 Content-Type: text/x-patch; charset="US-ASCII"; name="v28-0012-Track-which-relations-are-modified-by-a-query.patch" Content-Disposition: attachment; filename="v28-0012-Track-which-relations-are-modified-by-a-query.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjapduei11 RnJvbSBhZmM5MThjNjBmZDIxYmU2MzM5ZDg4YWE0MDI0ZjkwOGRhZWFiOGQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MDc6MjQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyOCAxMi8xNV0gVHJhY2sgd2hpY2ggcmVsYXRpb25zIGFyZSBtb2RpZmllZCBieSBhIHF1 ZXJ5CgpTYXZlIHRoZSByZWxpZHMgaW4gYSBiaXRtYXAgaW4gdGhlIGVzdGF0ZS4gQSBsYXRlciBj b21taXQgd2lsbCBwYXNzIHRoaXMKaW5mb3JtYXRpb24gZG93biB0byBzY2FuIG5vZGVzIHRvIGNv bnRyb2wgd2hldGhlciBvciBub3QgdGhlIHNjYW4gYWxsb3dzCnNldHRpbmcgdGhlIHZpc2liaWxp dHkgbWFwIHdoaWxlIG9uLWFjY2VzcyBwcnVuaW5nLiBXZSBkb24ndCB3YW50IHRvIHNldAp0aGUg dmlzaWJpbGl0eSBtYXAgaWYgdGhlIHF1ZXJ5IGlzIGp1c3QgZ29pbmcgdG8gbW9kaWZ5IHRoZSBw YWdlCmltbWVkaWF0ZWx5IGFmdGVyLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMgIHwgNCArKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyB8IDIgKysKIHNy Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgIHwgNiArKysrKysKIDMgZmlsZXMgY2hhbmdl ZCwgMTIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDc5N2Q4YjFj YTFjLi41YjI5OWVmODFhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC05MTYsNiArOTE2 LDEwIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJCQli cmVhazsKIAkJCX0KIAorCQkJLyogSWYgaXQgaGFzIGEgcm93bWFyaywgdGhlIHJlbGF0aW9uIGlz IG1vZGlmaWVkICovCisJCQllc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyA9IGJtc19hZGRfbWVt YmVyKGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJCQlyYy0+cnRpKTsK KwogCQkJLyogQ2hlY2sgdGhhdCByZWxhdGlvbiBpcyBhIGxlZ2FsIHRhcmdldCBmb3IgbWFya2lu ZyAqLwogCQkJaWYgKHJlbGF0aW9uKQogCQkJCUNoZWNrVmFsaWRSb3dNYXJrUmVsKHJlbGF0aW9u LCByYy0+bWFya1R5cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCBmZGM2NWMyYjQy Yi4uMjhhMDZkY2QyNDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC04OTMsNiArODkz LDggQEAgRXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywKIAkJZXN0YXRlLT5lc19yZXN1bHRfcmVsYXRpb25zID0gKFJlc3Vs dFJlbEluZm8gKiopCiAJCQlwYWxsb2MwKGVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGVfc2l6ZSAqIHNp emVvZihSZXN1bHRSZWxJbmZvICopKTsKIAllc3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbnNbcnRp IC0gMV0gPSByZXN1bHRSZWxJbmZvOworCWVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzID0gYm1z X2FkZF9tZW1iZXIoZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMsCisJCQkJCQkJCQkJCQlydGkp OwogCiAJLyoKIAkgKiBTYXZpbmcgaW4gdGhlIGxpc3QgYWxsb3dzIHRvIGF2b2lkIG5lZWRsZXNz bHkgdHJhdmVyc2luZyB0aGUgd2hvbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggMzk2ODQyOWY5 OTEuLmQ4YzM4NTIxNmUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjc2LDYgKzY3NiwxMiBA QCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5n KCkgKi8KIAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1 ZXJ5RGVzYyAqLwogCisJLyoKKwkgKiBSVCBpbmRleGVzIG9mIHJlbGF0aW9ucyBtb2RpZmllZCBi eSB0aGUgcXVlcnkgZWl0aGVyIHRocm91Z2gKKwkgKiBVUERBVEUvREVMRVRFL0lOU0VSVC9NRVJH RSBvciBTRUxFQ1QgRk9SIFVQREFURQorCSAqLworCUJpdG1hcHNldCAgKmVzX21vZGlmaWVkX3Jl bGlkczsKKwogCUp1bmtGaWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZlbCBqdW5rIGZp bHRlciwgaWYgYW55ICovCiAKIAkvKiBJZiBxdWVyeSBjYW4gaW5zZXJ0L2RlbGV0ZSB0dXBsZXMs IHRoZSBjb21tYW5kIElEIHRvIG1hcmsgdGhlbSB3aXRoICovCi0tIAoyLjQzLjAKCg== --000000000000857fc406462f10e4 Content-Type: text/x-patch; charset="US-ASCII"; name="v28-0013-Pass-down-information-on-table-modification-to-s.patch" Content-Disposition: attachment; filename="v28-0013-Pass-down-information-on-table-modification-to-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjapdwto12 RnJvbSBhNjQ5OTU4NTJlODJkODEzMmYyM2MxYmIzNjFlMGYzYzgwODAzODlhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MTI6MTggLTA1MDAKU3ViamVjdDogW1BB VENIIHYyOCAxMy8xNV0gUGFzcyBkb3duIGluZm9ybWF0aW9uIG9uIHRhYmxlIG1vZGlmaWNhdGlv biB0byBzY2FuCiBub2RlCgpQYXNzIGRvd24gaW5mb3JtYXRpb24gdG8gc2VxdWVudGlhbCBzY2Fu LCBpbmRleCBzY2FuLCBhbmQgYml0bWFwIHRhYmxlCnNjYW4gbm9kZXMgb24gd2hldGhlciBvciBu b3QgdGhlIHF1ZXJ5IG1vZGlmaWVzIHRoZSByZWxhdGlvbiBiZWluZwpzY2FubmVkLiBBIGxhdGVy IGNvbW1pdCB3aWxsIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIHVwZGF0ZSB0aGUgVk0KZHVyaW5n IG9uLWFjY2VzcyBwcnVuaW5nIG9ubHkgaWYgdGhlIHJlbGF0aW9uIGlzIG5vdCBtb2RpZmllZCBi eSB0aGUKcXVlcnkuCi0tLQogY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9ja3MuYyAgICAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgfCAg MyArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgICAgICAgIHwgIDMgKyst CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICB8ICA3ICsrKy0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAgfCAgNCArKy0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jICAgICAgICB8ICA2ICsrKy0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAgICAgICAgfCAgNyArKystLS0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvbnN0cmFpbnQuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHl0by5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jICAgICAgICAgIHwgIDggKysrLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNt ZHMuYyAgICAgICAgICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhp bmcuYyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24u YyAgICB8ICA4ICsrKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nh bi5jIHwgIDkgKysrKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2Fu LmMgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyAgICAgIHwg MTEgKysrKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAg fCAyNiArKysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuYyAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMg ICAgICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAgICAgICAg ICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgfCAg NiArKysrKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgIHwgMTkg KysrKysrKysrKy0tLS0tLS0KIDIzIGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDQ2 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdyb3dsb2Nrcy9wZ3Jvd2xvY2tz LmMgYi9jb250cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jCmluZGV4IGY4ODI2OTMzMmI2Li4y N2YwMWQ4MDU1ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9ja3MuYwor KysgYi9jb250cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jCkBAIC0xMTQsNyArMTE0LDcgQEAg cGdyb3dsb2NrcyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpKTsKIAogCS8qIFNjYW4gdGhlIHJlbGF0aW9uICovCi0Jc2NhbiA9IHRhYmxlX2Jl Z2luc2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwpOworCXNjYW4gPSB0YWJs ZV9iZWdpbnNjYW4ocmVsLCBHZXRBY3RpdmVTbmFwc2hvdCgpLCAwLCBOVUxMLCAwKTsKIAloc2Nh biA9IChIZWFwU2NhbkRlc2MpIHNjYW47CiAKIAlhdHRpbm1ldGEgPSBUdXBsZURlc2NHZXRBdHRJ bk1ldGFkYXRhKHJzaW5mby0+c2V0RGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggMjZj Yjc1MDU4ZDEuLjRhZDg5NDFjNjBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJp bi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0yODQyLDcg KzI4NDIsOCBAQCBfYnJpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChCcmluQnVpbGRTdGF0ZSAq c3RhdGUsCiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gYnJpbnNoYXJlZC0+aXNjb25jdXJy ZW50OwogCiAJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChoZWFwLAotCQkJCQkJCQkJ UGFyYWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSk7CisJCQkJCQkJCQlQ YXJhbGxlbFRhYmxlU2NhbkZyb21CcmluU2hhcmVkKGJyaW5zaGFyZWQpLAorCQkJCQkJCQkJMCk7 CiAKIAlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRl eEluZm8sIHRydWUsIHRydWUsCiAJCQkJCQkJCQkgICBicmluYnVpbGRDYWxsYmFja1BhcmFsbGVs LCBzdGF0ZSwgc2Nhbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmlu c2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCBkZjMwZGNj MDIyOC4uYWFhNTQwMWI3MzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2lu aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtMjA1 OCw3ICsyMDU4LDggQEAgX2dpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChHaW5CdWlsZFN0YXRl ICpzdGF0ZSwKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBnaW5zaGFyZWQtPmlzY29uY3Vy cmVudDsKIAogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoaGVhcCwKLQkJCQkJCQkJ CVBhcmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCkpOworCQkJCQkJ CQkJUGFyYWxsZWxUYWJsZVNjYW5Gcm9tR2luQnVpbGRTaGFyZWQoZ2luc2hhcmVkKSwKKwkJCQkJ CQkJCTApOwogCiAJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihoZWFwLCBpbmRl eCwgaW5kZXhJbmZvLCB0cnVlLCBwcm9ncmVzcywKIAkJCQkJCQkJCSAgIGdpbkJ1aWxkQ2FsbGJh Y2tQYXJhbGxlbCwgc3RhdGUsIHNjYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKaW5kZXggZGQ0ZmU2YmY2MmYuLjZjMmU0ZTA4YjE2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTc5LDEyICs3OSwxMyBAQCBoZWFwYW1fc2xv dF9jYWxsYmFja3MoUmVsYXRpb24gcmVsYXRpb24pCiAgKi8KIAogc3RhdGljIEluZGV4RmV0Y2hU YWJsZURhdGEgKgotaGVhcGFtX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkKK2hlYXBh bV9pbmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwsIHVpbnQzMiBmbGFncykKIHsKIAlJbmRl eEZldGNoSGVhcERhdGEgKmhzY2FuID0gcGFsbG9jMF9vYmplY3QoSW5kZXhGZXRjaEhlYXBEYXRh KTsKIAogCWhzY2FuLT54c19iYXNlLnJlbCA9IHJlbDsKIAloc2Nhbi0+eHNfY2J1ZiA9IEludmFs aWRCdWZmZXI7CisJaHNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVsID0gIShmbGFncyAmIFNPX0hJTlRf UkVMX1JFQURfT05MWSk7CiAKIAlyZXR1cm4gJmhzY2FuLT54c19iYXNlOwogfQpAQCAtNzUzLDcg Kzc1NCw3IEBAIGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhl YXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAKIAkJdGFibGVTY2FuID0gTlVMTDsKIAkJaGVhcFNjYW4g PSBOVUxMOwotCQlpbmRleFNjYW4gPSBpbmRleF9iZWdpbnNjYW4oT2xkSGVhcCwgT2xkSW5kZXgs IFNuYXBzaG90QW55LCBOVUxMLCAwLCAwKTsKKwkJaW5kZXhTY2FuID0gaW5kZXhfYmVnaW5zY2Fu KE9sZEhlYXAsIE9sZEluZGV4LCBTbmFwc2hvdEFueSwgTlVMTCwgMCwgMCwgMCk7CiAJCWluZGV4 X3Jlc2NhbihpbmRleFNjYW4sIE5VTEwsIDAsIE5VTEwsIDApOwogCX0KIAllbHNlCkBAIC03NjIs NyArNzYzLDcgQEAgaGVhcGFtX3JlbGF0aW9uX2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24gT2xk SGVhcCwgUmVsYXRpb24gTmV3SGVhcCwKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DTFVTVEVSX1BIQVNFLAogCQkJCQkJCQkJIFBST0dSRVNTX0NMVVNURVJfUEhBU0Vf U0VRX1NDQU5fSEVBUCk7CiAKLQkJdGFibGVTY2FuID0gdGFibGVfYmVnaW5zY2FuKE9sZEhlYXAs IFNuYXBzaG90QW55LCAwLCAoU2NhbktleSkgTlVMTCk7CisJCXRhYmxlU2NhbiA9IHRhYmxlX2Jl Z2luc2NhbihPbGRIZWFwLCBTbmFwc2hvdEFueSwgMCwgKFNjYW5LZXkpIE5VTEwsIDApOwogCQlo ZWFwU2NhbiA9IChIZWFwU2NhbkRlc2MpIHRhYmxlU2NhbjsKIAkJaW5kZXhTY2FuID0gTlVMTDsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRleCBiN2YxMGExYWVkMC4uMTVmOWNjMTE1ODIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jCkBAIC00NDcsNyArNDQ3LDcgQEAgc3lzdGFibGVf YmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJfQogCiAJCXN5c3NjYW4tPmlzY2Fu ID0gaW5kZXhfYmVnaW5zY2FuKGhlYXBSZWxhdGlvbiwgaXJlbCwKLQkJCQkJCQkJCQkgc25hcHNo b3QsIE5VTEwsIG5rZXlzLCAwKTsKKwkJCQkJCQkJCQkgc25hcHNob3QsIE5VTEwsIG5rZXlzLCAw LCAwKTsKIAkJaW5kZXhfcmVzY2FuKHN5c3NjYW4tPmlzY2FuLCBpZHhrZXksIG5rZXlzLCBOVUxM LCAwKTsKIAkJc3lzc2Nhbi0+c2NhbiA9IE5VTEw7CiAKQEAgLTcwOCw3ICs3MDgsNyBAQCBzeXN0 YWJsZV9iZWdpbnNjYW5fb3JkZXJlZChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJfQogCiAJc3lz c2Nhbi0+aXNjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbGF0aW9uLCBpbmRleFJlbGF0aW9u LAotCQkJCQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5cywgMCk7CisJCQkJCQkJCQkgc25hcHNo b3QsIE5VTEwsIG5rZXlzLCAwLCAwKTsKIAlpbmRleF9yZXNjYW4oc3lzc2Nhbi0+aXNjYW4sIGlk eGtleSwgbmtleXMsIE5VTEwsIDApOwogCXN5c3NjYW4tPnNjYW4gPSBOVUxMOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2luZGV4L2luZGV4YW0uYwppbmRleCAwNDkyZDkyZDIzYi4uYjU1MjNjZjJhYjEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtMjU3LDcgKzI1Nyw3IEBAIGluZGV4X2JlZ2lu c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwK IAkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmlu c3RydW1lbnQsCi0JCQkJaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKQorCQkJCWludCBua2V5cywg aW50IG5vcmRlcmJ5cywgdWludDMyIGZsYWdzKQogewogCUluZGV4U2NhbkRlc2Mgc2NhbjsKIApA QCAtMjg0LDcgKzI4NCw3IEBAIGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAJc2Nhbi0+aW5zdHJ1bWVudCA9IGluc3RydW1lbnQ7CiAKIAkvKiBwcmVwYXJlIHRvIGZldGNo IGluZGV4IG1hdGNoZXMgZnJvbSB0YWJsZSAqLwotCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxl X2luZGV4X2ZldGNoX2JlZ2luKGhlYXBSZWxhdGlvbik7CisJc2Nhbi0+eHNfaGVhcGZldGNoID0g dGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4oaGVhcFJlbGF0aW9uLCBmbGFncyk7CiAKIAlyZXR1cm4g c2NhbjsKIH0KQEAgLTYxNSw3ICs2MTUsNyBAQCBpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwoUmVs YXRpb24gaGVhcHJlbCwgUmVsYXRpb24gaW5kZXhyZWwsCiAJc2Nhbi0+aW5zdHJ1bWVudCA9IGlu c3RydW1lbnQ7CiAKIAkvKiBwcmVwYXJlIHRvIGZldGNoIGluZGV4IG1hdGNoZXMgZnJvbSB0YWJs ZSAqLwotCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGhlYXBy ZWwpOworCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGhlYXBy ZWwsIDApOwogCiAJcmV0dXJuIHNjYW47CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5j CmluZGV4IGQ3Njk1ZGMxMTA4Li43YmRiYzdlNWZhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKQEAgLTE5MjUsNyArMTkyNSw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0 KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCWluZGV4SW5mbyA9IEJ1aWxk SW5kZXhJbmZvKGJ0c3Bvb2wtPmluZGV4KTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBi dHNoYXJlZC0+aXNjb25jdXJyZW50OwogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwo YnRzcG9vbC0+aGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0 c2hhcmVkKSk7CisJCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJl ZCksIDApOwogCXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oYnRzcG9vbC0+aGVh cCwgYnRzcG9vbC0+aW5kZXgsIGluZGV4SW5mbywKIAkJCQkJCQkJCSAgIHRydWUsIHByb2dyZXNz LCBfYnRfYnVpbGRfY2FsbGJhY2ssCiAJCQkJCQkJCQkgICAmYnVpbGRzdGF0ZSwgc2Nhbik7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwppbmRleCA3M2ViYzAxYTA4Zi4uYTAwYmRmZGY4MjIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMTYzLDEwICsxNjMsMTEgQEAgdGFi bGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxlU2Nh bkRlc2MgcHNjYW4sCiB9CiAKIFRhYmxlU2NhbkRlc2MKLXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxl bChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQordGFibGVf YmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRl c2MgcHNjYW4sIHVpbnQzMiBmbGFncykKIHsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKLQl1aW50MzIJ CWZsYWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKworCWZsYWdzIHw9IFNPX1RZUEVfU0VRU0NBTiB8 CiAJCVNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOwog CiAJQXNzZXJ0KFJlbEZpbGVMb2NhdG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nh bi0+cGhzX2xvY2F0b3IpKTsKQEAgLTI0OCw3ICsyNDksNyBAQCB0YWJsZV9pbmRleF9mZXRjaF90 dXBsZV9jaGVjayhSZWxhdGlvbiByZWwsCiAJYm9vbAkJZm91bmQ7CiAKIAlzbG90ID0gdGFibGVf c2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKLQlzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4o cmVsKTsKKwlzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCAwKTsKIAlmb3VuZCA9 IHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKHNjYW4sIHRpZCwgc25hcHNob3QsIHNsb3QsICZjYWxs X2FnYWluLAogCQkJCQkJCQkJYWxsX2RlYWQpOwogCXRhYmxlX2luZGV4X2ZldGNoX2VuZChzY2Fu KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYwppbmRleCAzNDk3YTgyMjFmMi4uOTdjODI3OGUz NmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMKQEAgLTEwNiw3ICsxMDYsNyBAQCB1bmlx dWVfa2V5X3JlY2hlY2soUEdfRlVOQ1RJT05fQVJHUykKIAkgKi8KIAl0bXB0aWQgPSBjaGVja3Rp ZDsKIAl7Ci0JCUluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4gPSB0YWJsZV9pbmRleF9mZXRjaF9i ZWdpbih0cmlnZGF0YS0+dGdfcmVsYXRpb24pOworCQlJbmRleEZldGNoVGFibGVEYXRhICpzY2Fu ID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4odHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCAwKTsKIAkJ Ym9vbAkJY2FsbF9hZ2FpbiA9IGZhbHNlOwogCiAJCWlmICghdGFibGVfaW5kZXhfZmV0Y2hfdHVw bGUoc2NhbiwgJnRtcHRpZCwgU25hcHNob3RTZWxmLCBzbG90LApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpp bmRleCBkYWU5MTYzMGFjMy4uMTk1N2JiMGYxYTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC0x MTU2LDcgKzExNTYsNyBAQCBDb3B5UmVsYXRpb25UbyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gcm9vdF9yZWwsIHVpbnQ2NCAqcHJvYwogCUF0dHJNYXAgICAgKm1h cCA9IE5VTEw7CiAJVHVwbGVUYWJsZVNsb3QgKnJvb3Rfc2xvdCA9IE5VTEw7CiAKLQlzY2FuZGVz YyA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwpOwor CXNjYW5kZXNjID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgR2V0QWN0aXZlU25hcHNob3QoKSwgMCwg TlVMTCwgMCk7CiAJc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CiAKIAkvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA2YjFhMDBlZDQ3Ny4uMTMwYTY3MGQyNjYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC02Mzc3LDcgKzYzNzcsNyBAQCBBVFJld3JpdGVU YWJsZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIE9pZCBPSUROZXdIZWFwKQogCQkgKiBjaGVja2lu ZyBhbGwgdGhlIGNvbnN0cmFpbnRzLgogCQkgKi8KIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG9sZHJl bCwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKG9sZHJlbCwg c25hcHNob3QsIDAsIE5VTEwsIDApOwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUg bWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCkBAIC0xMzc2Niw3ICsx Mzc2Niw3IEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkg Ki8KIAlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CiAJ c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7Ci0Jc2NhbiA9IHRhYmxlX2JlZ2lu c2NhbihyZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJl bCwgc25hcHNob3QsIDAsIE5VTEwsIDApOwogCiAJcGVyVHVwQ3h0ID0gQWxsb2NTZXRDb250ZXh0 Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAogCQkJCQkJCQkJICAidmFsaWRhdGVGb3JlaWdu S2V5Q29uc3RyYWludCIsCkBAIC0yMjYyMyw3ICsyMjYyMyw3IEBAIE1lcmdlUGFydGl0aW9uc01v dmVSb3dzKExpc3QgKip3cXVldWUsIExpc3QgKm1lcmdpbmdQYXJ0aXRpb25zLCBSZWxhdGlvbiBu ZXdQYXJ0CiAKIAkJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLwogCQlzbmFwc2hvdCA9IFJl Z2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdp bnNjYW4obWVyZ2luZ1BhcnRpdGlvbiwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFi bGVfYmVnaW5zY2FuKG1lcmdpbmdQYXJ0aXRpb24sIHNuYXBzaG90LCAwLCBOVUxMLCAwKTsKIAog CQkvKgogCQkgKiBTd2l0Y2ggdG8gcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGFuZCByZXNldCBp dCBmb3IgZWFjaCB0dXBsZQpAQCAtMjMwODcsNyArMjMwODcsNyBAQCBTcGxpdFBhcnRpdGlvbk1v dmVSb3dzKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gc3BsaXRSZWwsCiAK IAkvKiBTY2FuIHRocm91Z2ggdGhlIHJvd3MuICovCiAJc25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4oc3BsaXRS ZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHNwbGl0UmVs LCBzbmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAKIAkvKgogCSAqIFN3aXRjaCB0byBwZXItdHVwbGUg bWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0IGZvciBlYWNoIHR1cGxlCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlw ZWNtZHMuYwppbmRleCBiZTZmZmQ2ZGRiMC4uMjkyMWY2OGMxYzMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlw ZWNtZHMuYwpAQCAtMzE1Nyw3ICszMTU3LDcgQEAgdmFsaWRhdGVEb21haW5Ob3ROdWxsQ29uc3Ry YWludChPaWQgZG9tYWlub2lkKQogCiAJCS8qIFNjYW4gYWxsIHR1cGxlcyBpbiB0aGlzIHJlbGF0 aW9uICovCiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgp KTsKLQkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbih0ZXN0cmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7 CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEwsIDAp OwogCQlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUodGVzdHJlbCwgTlVMTCk7CiAJCXdoaWxlICh0 YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkK IAkJewpAQCAtMzIzOCw3ICszMjM4LDcgQEAgdmFsaWRhdGVEb21haW5DaGVja0NvbnN0cmFpbnQo T2lkIGRvbWFpbm9pZCwgY29uc3QgY2hhciAqY2NiaW4sIExPQ0tNT0RFIGxvY2ttb2QKIAogCQkv KiBTY2FuIGFsbCB0dXBsZXMgaW4gdGhpcyByZWxhdGlvbiAqLwogCQlzbmFwc2hvdCA9IFJlZ2lz dGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNj YW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2Fu KHRlc3RyZWwsIHNuYXBzaG90LCAwLCBOVUxMLCAwKTsKIAkJc2xvdCA9IHRhYmxlX3Nsb3RfY3Jl YXRlKHRlc3RyZWwsIE5VTEwpOwogCQl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2Fu LCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0lu ZGV4aW5nLmMKaW5kZXggMGIzYTMxZjE3MDMuLjc0MjYyYTM0ODE5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjSW5kZXhpbmcuYwpAQCAtODE2LDcgKzgxNiw3IEBAIGNoZWNrX2V4Y2x1c2lvbl9vcl91 bmlxdWVfY29uc3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHJldHJ5Ogog CWNvbmZsaWN0ID0gZmFsc2U7CiAJZm91bmRfc2VsZiA9IGZhbHNlOwotCWluZGV4X3NjYW4gPSBp bmRleF9iZWdpbnNjYW4oaGVhcCwgaW5kZXgsICZEaXJ0eVNuYXBzaG90LCBOVUxMLCBpbmRua2V5 YXR0cywgMCk7CisJaW5kZXhfc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwLCBpbmRleCwgJkRp cnR5U25hcHNob3QsIE5VTEwsIGluZG5rZXlhdHRzLCAwLCAwKTsKIAlpbmRleF9yZXNjYW4oaW5k ZXhfc2Nhbiwgc2NhbmtleXMsIGluZG5rZXlhdHRzLCBOVUxMLCAwKTsKIAogCXdoaWxlIChpbmRl eF9nZXRuZXh0X3Nsb3QoaW5kZXhfc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIGV4aXN0aW5n X3Nsb3QpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9u LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwppbmRleCA4NjBmNzlm OWNjMS4uNmU0OWVhNWM1ZDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS ZXBsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5j CkBAIC0yMDQsNyArMjA0LDcgQEAgUmVsYXRpb25GaW5kUmVwbFR1cGxlQnlJbmRleChSZWxhdGlv biByZWwsIE9pZCBpZHhvaWQsCiAJc2tleV9hdHRvZmYgPSBidWlsZF9yZXBsaW5kZXhfc2Nhbl9r ZXkoc2tleSwgcmVsLCBpZHhyZWwsIHNlYXJjaHNsb3QpOwogCiAJLyogU3RhcnQgYW4gaW5kZXgg c2Nhbi4gKi8KLQlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKHJlbCwgaWR4cmVsLCAmc25hcCwgTlVM TCwgc2tleV9hdHRvZmYsIDApOworCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4ocmVsLCBpZHhyZWws ICZzbmFwLCBOVUxMLCBza2V5X2F0dG9mZiwgMCwgMCk7CiAKIHJldHJ5OgogCWZvdW5kID0gZmFs c2U7CkBAIC0zODIsNyArMzgyLDcgQEAgUmVsYXRpb25GaW5kUmVwbFR1cGxlU2VxKFJlbGF0aW9u IHJlbCwgTG9ja1R1cGxlTW9kZSBsb2NrbW9kZSwKIAogCS8qIFN0YXJ0IGEgaGVhcCBzY2FuLiAq LwogCUluaXREaXJ0eVNuYXBzaG90KHNuYXApOwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVs LCAmc25hcCwgMCwgTlVMTCk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihyZWwsICZzbmFwLCAw LCBOVUxMLCAwKTsKIAlzY2Fuc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CiAK IHJldHJ5OgpAQCAtNjAxLDcgKzYwMSw3IEBAIFJlbGF0aW9uRmluZERlbGV0ZWRUdXBsZUluZm9T ZXEoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqc2VhcmNoc2xvdCwKIAkgKiBub3QgeWV0 IGNvbW1pdHRlZCBvciB0aG9zZSBqdXN0IGNvbW1pdHRlZCBwcmlvciB0byB0aGUgc2NhbiBhcmUK IAkgKiBleGNsdWRlZCBpbiB1cGRhdGVfbW9zdF9yZWNlbnRfZGVsZXRpb25faW5mbygpLgogCSAq LwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBTbmFwc2hvdEFueSwgMCwgTlVMTCk7CisJ c2NhbiA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIFNuYXBzaG90QW55LCAwLCBOVUxMLCAwKTsKIAlz Y2Fuc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CiAKIAl0YWJsZV9yZXNjYW4o c2NhbiwgTlVMTCk7CkBAIC02NjUsNyArNjY1LDcgQEAgUmVsYXRpb25GaW5kRGVsZXRlZFR1cGxl SW5mb0J5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4b2lkLAogCSAqIG5vdCB5ZXQgY29tbWl0 dGVkIG9yIHRob3NlIGp1c3QgY29tbWl0dGVkIHByaW9yIHRvIHRoZSBzY2FuIGFyZQogCSAqIGV4 Y2x1ZGVkIGluIHVwZGF0ZV9tb3N0X3JlY2VudF9kZWxldGlvbl9pbmZvKCkuCiAJICovCi0Jc2Nh biA9IGluZGV4X2JlZ2luc2NhbihyZWwsIGlkeHJlbCwgU25hcHNob3RBbnksIE5VTEwsIHNrZXlf YXR0b2ZmLCAwKTsKKwlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKHJlbCwgaWR4cmVsLCBTbmFwc2hv dEFueSwgTlVMTCwgc2tleV9hdHRvZmYsIDAsIDApOwogCiAJaW5kZXhfcmVzY2FuKHNjYW4sIHNr ZXksIHNrZXlfYXR0b2ZmLCBOVUxMLCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwSGVhcHNjYW4uYwppbmRleCBiZjI0ZjNkN2ZlMC4uMGQ4NTRkYjUxYTEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCkBAIC0xMDUsMTEgKzEwNSwxOCBAQCBC aXRtYXBUYWJsZVNjYW5TZXR1cChCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogCSAqLwogCWlm ICghbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKQogCXsKKwkJdWludDMyCQlmbGFncyA9IDA7 CisKKwkJaWYgKCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2Nh bnJlbGlkLAorCQkJCQkJICAgbm9kZS0+c3MucHMuc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykp CisJCQlmbGFncyA9IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKKwogCQlub2RlLT5zcy5zc19jdXJy ZW50U2NhbkRlc2MgPQogCQkJdGFibGVfYmVnaW5zY2FuX2JtKG5vZGUtPnNzLnNzX2N1cnJlbnRS ZWxhdGlvbiwKIAkJCQkJCQkgICBub2RlLT5zcy5wcy5zdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJ CQkJICAgMCwKLQkJCQkJCQkgICBOVUxMKTsKKwkJCQkJCQkgICBOVUxMLAorCQkJCQkJCSAgIGZs YWdzKTsKIAl9CiAKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MtPnN0LnJzX3RibWl0ZXJh dG9yID0gdGJtaXRlcmF0b3I7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4u YwppbmRleCA2YmVhNDJmMTI4Zi4uMmM4N2JhNWY3NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4b25seXNjYW4uYwpAQCAtOTQsNyArOTQsNyBAQCBJbmRleE9ubHlOZXh0KEluZGV4 T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJ CQkJCQkJICAgJm5vZGUtPmlvc3NfSW5zdHJ1bWVudCwKIAkJCQkJCQkJICAgbm9kZS0+aW9zc19O dW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+aW9zc19OdW1PcmRlckJ5S2V5cyk7CisJCQkJ CQkJCSAgIG5vZGUtPmlvc3NfTnVtT3JkZXJCeUtleXMsIDApOwogCiAJCW5vZGUtPmlvc3NfU2Nh bkRlc2MgPSBzY2FuZGVzYzsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUluZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCmluZGV4 IDcyYjEzNWU1ZGNmLi45MjY3NDQ0MWM2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNj YW4uYwpAQCAtMTAyLDYgKzEwMiwxMiBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUp CiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJ CWlmICghYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxp ZCwKKwkJCQkJCSAgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJCWZsYWdzID0gU09f SElOVF9SRUxfUkVBRF9PTkxZOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIGlu ZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJpYWxseSBleGVj dXRpbmcgYW4gaW5kZXggc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVsLgpAQCAt MTExLDcgKzExNyw4IEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJ ICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAgJm5vZGUtPmlzc19JbnN0cnVtZW50 LAogCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtU2NhbktleXMsCi0JCQkJCQkJCSAgIG5vZGUtPmlz c19OdW1PcmRlckJ5S2V5cyk7CisJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cywK KwkJCQkJCQkJICAgZmxhZ3MpOwogCiAJCW5vZGUtPmlzc19TY2FuRGVzYyA9IHNjYW5kZXNjOwog CkBAIC0yMDcsNyArMjE0LDcgQEAgSW5kZXhOZXh0V2l0aFJlb3JkZXIoSW5kZXhTY2FuU3RhdGUg Km5vZGUpCiAJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJCQkJCSAgICZub2Rl LT5pc3NfSW5zdHJ1bWVudCwKIAkJCQkJCQkJICAgbm9kZS0+aXNzX051bVNjYW5LZXlzLAotCQkJ CQkJCQkgICBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMpOworCQkJCQkJCQkgICBub2RlLT5pc3Nf TnVtT3JkZXJCeUtleXMsIDApOwogCiAJCW5vZGUtPmlzc19TY2FuRGVzYyA9IHNjYW5kZXNjOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRleCA5NDA0N2QyOTQzMC4uNGQwY2JiOWRl ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpAQCAtNjUsMTMgKzY1LDIwIEBAIFNl cU5leHQoU2VxU2NhblN0YXRlICpub2RlKQogCiAJaWYgKHNjYW5kZXNjID09IE5VTEwpCiAJewor CQl1aW50MzIJCWZsYWdzID0gMDsKKworCQlpZiAoIWJtc19pc19tZW1iZXIoKChTY2FuICopIG5v ZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCQkgICBlc3RhdGUtPmVzX21vZGlmaWVk X3JlbGlkcykpCisJCQlmbGFncyA9IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKKwogCQkvKgogCQkg KiBXZSByZWFjaCBoZXJlIGlmIHRoZSBzY2FuIGlzIG5vdCBwYXJhbGxlbCwgb3IgaWYgd2UncmUg c2VyaWFsbHkKIAkJICogZXhlY3V0aW5nIGEgc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBh cmFsbGVsLgogCQkgKi8KIAkJc2NhbmRlc2MgPSB0YWJsZV9iZWdpbnNjYW4obm9kZS0+c3Muc3Nf Y3VycmVudFJlbGF0aW9uLAogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJ CQkgICAwLCBOVUxMKTsKKwkJCQkJCQkJICAgMCwgTlVMTCwgZmxhZ3MpOworCiAJCW5vZGUtPnNz LnNzX2N1cnJlbnRTY2FuRGVzYyA9IHNjYW5kZXNjOwogCX0KIApAQCAtMzY3LDE0ICszNzQsMjAg QEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplRFNNKFNlcVNjYW5TdGF0ZSAqbm9kZSwKIHsKIAlFU3Rh dGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOwogCVBhcmFsbGVsVGFibGVTY2FuRGVz YyBwc2NhbjsKKwl1aW50MzIJCWZsYWdzID0gMDsKIAogCXBzY2FuID0gc2htX3RvY19hbGxvY2F0 ZShwY3h0LT50b2MsIG5vZGUtPnBzY2FuX2xlbik7CiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCQkgIHBzY2FuLAogCQkJ CQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3QpOwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywg bm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBwc2Nhbik7CisJaWYgKCFibXNfaXNfbWVt YmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkgICBlc3Rh dGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCWZsYWdzID0gU09fSElOVF9SRUxfUkVBRF9PTkxZ OworCiAJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0KLQkJdGFibGVfYmVnaW5zY2FuX3Bh cmFsbGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwgcHNjYW4pOworCQl0YWJsZV9iZWdp bnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLCBwc2NhbiwKKwkJCQkJ CQkJIGZsYWdzKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDA0LDggKzQxNywxNSBAQCBFeGVjU2Vx U2NhbkluaXRpYWxpemVXb3JrZXIoU2VxU2NhblN0YXRlICpub2RlLAogCQkJCQkJCVBhcmFsbGVs V29ya2VyQ29udGV4dCAqcHdjeHQpCiB7CiAJUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuOwor CXVpbnQzMgkJZmxhZ3MgPSAwOworCisJaWYgKCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2Rl LT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkgICBub2RlLT5zcy5wcy5zdGF0ZS0+ZXNf bW9kaWZpZWRfcmVsaWRzKSkKKwkJZmxhZ3MgPSBTT19ISU5UX1JFTF9SRUFEX09OTFk7CiAKIAlw c2NhbiA9IHNobV90b2NfbG9va3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5f bm9kZV9pZCwgZmFsc2UpOwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9Ci0JCXRhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsK KwkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwK KwkJCQkJCQkJIHBzY2FuLAorCQkJCQkJCQkgZmxhZ3MpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0Ym91bmRzLmMKaW5kZXggMTZiMGFkYzE3MmMuLjkxYWNmMWVlMmQ3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCisrKyBiL3NyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMKQEAgLTMzNjIsNyArMzM2Miw3IEBAIGNoZWNrX2Rl ZmF1bHRfcGFydGl0aW9uX2NvbnRlbnRzKFJlbGF0aW9uIHBhcmVudCwgUmVsYXRpb24gZGVmYXVs dF9yZWwsCiAJCWVjb250ZXh0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpOwogCQlz bmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CiAJCXR1cHNs b3QgPSB0YWJsZV9zbG90X2NyZWF0ZShwYXJ0X3JlbCwgJmVzdGF0ZS0+ZXNfdHVwbGVUYWJsZSk7 Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocGFydF9yZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsK KwkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihwYXJ0X3JlbCwgc25hcHNob3QsIDAsIE5VTEwsIDAp OwogCiAJCS8qCiAJCSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJl c2V0IGl0IGZvciBlYWNoIHR1cGxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv c2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCmluZGV4IGM3NjBi MTlkYjU1Li5lYzBkZWYwZDFlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Nl bGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKQEAgLTcxMDAs NyArNzEwMCw3IEBAIGdldF9hY3R1YWxfdmFyaWFibGVfZW5kcG9pbnQoUmVsYXRpb24gaGVhcFJl bCwKIAogCWluZGV4X3NjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbCwgaW5kZXhSZWwsCiAJ CQkJCQkJCSAmU25hcHNob3ROb25WYWN1dW1hYmxlLCBOVUxMLAotCQkJCQkJCQkgMSwgMCk7CisJ CQkJCQkJCSAxLCAwLCAwKTsKIAkvKiBTZXQgaXQgdXAgZm9yIGluZGV4LW9ubHkgc2NhbiAqLwog CWluZGV4X3NjYW4tPnhzX3dhbnRfaXR1cCA9IHRydWU7CiAJaW5kZXhfcmVzY2FuKGluZGV4X3Nj YW4sIHNjYW5rZXlzLCAxLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKaW5kZXggOTIwMGEyMmJkOWYu LmQyOWQ5ZTkwNWZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAtMTc3LDcgKzE3Nyw3IEBAIGV4dGVybiBJ bmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJ CQkJCQkgUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJCQkJCQkJCSBTbmFwc2hvdCBzbmFwc2hv dCwKIAkJCQkJCQkJCSBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCi0JCQkJ CQkJCQkgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKTsKKwkJCQkJCQkJCSBpbnQgbmtleXMsIGlu dCBub3JkZXJieXMsIHVpbnQzMiBmbGFncyk7CiBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9i ZWdpbnNjYW5fYml0bWFwKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJCQkJCQkJCVNuYXBz aG90IHNuYXBzaG90LAogCQkJCQkJCQkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3Ry dW1lbnQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMTYyNWIxMDc1NzUuLjBiZmUyMzY2ZTFhIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbS5oCkBAIC0xMTksNiArMTE5LDEyIEBAIHR5cGVkZWYgc3RydWN0IEluZGV4RmV0 Y2hIZWFwRGF0YQogCiAJQnVmZmVyCQl4c19jYnVmOwkJLyogY3VycmVudCBoZWFwIGJ1ZmZlciBp biBzY2FuLCBpZiBhbnkgKi8KIAkvKiBOQjogaWYgeHNfY2J1ZiBpcyBub3QgSW52YWxpZEJ1ZmZl ciwgd2UgaG9sZCBhIHBpbiBvbiB0aGF0IGJ1ZmZlciAqLworCisJLyoKKwkgKiBTb21lIG9wdGlt aXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGlmIHRoZSBxdWVyeSBkb2VzIG5vdCBtb2Rp ZnkKKwkgKiB0aGUgdW5kZXJseWluZyByZWxhdGlvbi4gVHJhY2sgdGhhdCBoZXJlLgorCSAqLwor CWJvb2wJCW1vZGlmaWVzX2Jhc2VfcmVsOwogfSBJbmRleEZldGNoSGVhcERhdGE7CiAKIC8qIFJl c3VsdCBjb2RlcyBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aAppbmRleCAyZmE3OTBiNmJmNS4uZDEwYjFiMDNjZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAt NjMsNiArNjMsOCBAQCB0eXBlZGVmIGVudW0gU2Nhbk9wdGlvbnMKIAogCS8qIHVucmVnaXN0ZXIg c25hcHNob3QgYXQgc2NhbiBlbmQ/ICovCiAJU09fVEVNUF9TTkFQU0hPVCA9IDEgPDwgOSwKKwkv KiBzZXQgaWYgdGhlIHF1ZXJ5IGRvZXNuJ3QgbW9kaWZ5IHRoZSByZWwgKi8KKwlTT19ISU5UX1JF TF9SRUFEX09OTFkgPSAxIDw8IDEwLAogfQkJCVNjYW5PcHRpb25zOwogCiAvKgpAQCAtNDIwLDcg KzQyMiw3IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1Sb3V0aW5lCiAJICoKIAkgKiBUdXBsZXMg Zm9yIGFuIGluZGV4IHNjYW4gY2FuIHRoZW4gYmUgZmV0Y2hlZCB2aWEgaW5kZXhfZmV0Y2hfdHVw bGUuCiAJICovCi0Jc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEgKigqaW5kZXhfZmV0Y2hfYmVn aW4pIChSZWxhdGlvbiByZWwpOworCXN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICooKmluZGV4 X2ZldGNoX2JlZ2luKSAoUmVsYXRpb24gcmVsLCB1aW50MzIgZmxhZ3MpOwogCiAJLyoKIAkgKiBS ZXNldCBpbmRleCBmZXRjaC4gVHlwaWNhbGx5IHRoaXMgd2lsbCByZWxlYXNlIGNyb3NzIGluZGV4 IGZldGNoCkBAIC04NzQsOSArODc2LDkgQEAgZXh0ZXJuIFR1cGxlVGFibGVTbG90ICp0YWJsZV9z bG90X2NyZWF0ZShSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqKnJlZ2xpc3QpOwogICovCiBzdGF0 aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2NhbihSZWxhdGlvbiByZWwsIFNu YXBzaG90IHNuYXBzaG90LAotCQkJCWludCBua2V5cywgU2NhbktleURhdGEgKmtleSkKKwkJCQlp bnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVpbnQzMiBmbGFncykKIHsKLQl1aW50MzIJCWZs YWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKwlmbGFncyB8PSBTT19UWVBFX1NFUVNDQU4gfAogCQlT T19BTExPV19TVFJBVCB8IFNPX0FMTE9XX1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKIAogCXJl dHVybiByZWwtPnJkX3RhYmxlYW0tPnNjYW5fYmVnaW4ocmVsLCBzbmFwc2hvdCwgbmtleXMsIGtl eSwgTlVMTCwgZmxhZ3MpOwpAQCAtOTE5LDkgKzkyMSw5IEBAIHRhYmxlX2JlZ2luc2Nhbl9zdHJh dChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAogICovCiBzdGF0aWMgaW5saW5lIFRh YmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nhbl9ibShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNu YXBzaG90LAotCQkJCSAgIGludCBua2V5cywgU2NhbktleURhdGEgKmtleSkKKwkJCQkgICBpbnQg bmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVpbnQzMiBmbGFncykKIHsKLQl1aW50MzIJCWZsYWdz ID0gU09fVFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CisJZmxhZ3MgfD0gU09f VFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CiAKIAlyZXR1cm4gcmVsLT5yZF90 YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksCiAJCQkJCQkJCQkg ICBOVUxMLCBmbGFncyk7CkBAIC0xMTI4LDcgKzExMzAsOCBAQCBleHRlcm4gdm9pZCB0YWJsZV9w YXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiAgKiBDYWxsZXIgbXVzdCBob2xk IGEgc3VpdGFibGUgbG9jayBvbiB0aGUgcmVsYXRpb24uCiAgKi8KIGV4dGVybiBUYWJsZVNjYW5E ZXNjIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxhdGlvbiwKLQkJCQkJCQkJ CQkJICBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pOworCQkJCQkJCQkJCQkgIFBhcmFsbGVs VGFibGVTY2FuRGVzYyBwc2NhbiwKKwkJCQkJCQkJCQkJICB1aW50MzIgZmxhZ3MpOwogCiAvKgog ICogQmVnaW4gYSBwYXJhbGxlbCB0aWQgcmFuZ2Ugc2Nhbi4gYHBzY2FuYCBuZWVkcyB0byBoYXZl IGJlZW4gaW5pdGlhbGl6ZWQKQEAgLTExNjQsOSArMTE2Nyw5IEBAIHRhYmxlX3BhcmFsbGVsc2Nh bl9yZWluaXRpYWxpemUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4p CiAgKiBUdXBsZXMgZm9yIGFuIGluZGV4IHNjYW4gY2FuIHRoZW4gYmUgZmV0Y2hlZCB2aWEgdGFi bGVfaW5kZXhfZmV0Y2hfdHVwbGUoKS4KICAqLwogc3RhdGljIGlubGluZSBJbmRleEZldGNoVGFi bGVEYXRhICoKLXRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkKK3RhYmxlX2lu ZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCwgdWludDMyIGZsYWdzKQogewotCXJldHVybiBy ZWwtPnJkX3RhYmxlYW0tPmluZGV4X2ZldGNoX2JlZ2luKHJlbCk7CisJcmV0dXJuIHJlbC0+cmRf dGFibGVhbS0+aW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCBmbGFncyk7CiB9CiAKIC8qCi0tIAoyLjQz LjAKCg== --000000000000857fc406462f10e4 Content-Type: text/x-patch; charset="US-ASCII"; name="v28-0014-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v28-0014-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjape03t13 RnJvbSAyOGNjYzk1ZmY3NjIwZWYwN2FhM2YyMjVkM2E3YzA1YWE4YzA1OTA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MjQ6MDggLTA1MDAKU3ViamVjdDogW1BB VENIIHYyOCAxNC8xNV0gQWxsb3cgb24tYWNjZXNzIHBydW5pbmcgdG8gc2V0IHBhZ2VzIGFsbC12 aXNpYmxlCgpNYW55IHF1ZXJpZXMgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyByZWxhdGlv bi4gRm9yIHN1Y2ggcXVlcmllcywgaWYKb24tYWNjZXNzIHBydW5pbmcgb2NjdXJzIGR1cmluZyB0 aGUgc2Nhbiwgd2UgY2FuIGNoZWNrIHdoZXRoZXIgdGhlIHBhZ2UKaGFzIGJlY29tZSBhbGwtdmlz aWJsZSBhbmQgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhY2NvcmRpbmdseS4KUHJldmlvdXNs eSwgb25seSB2YWN1dW0gYW5kIENPUFkgRlJFRVpFIG1hcmtlZCBwYWdlcyBhcyBhbGwtdmlzaWJs ZSBvcgphbGwtZnJvemVuLgoKVGhpcyBjb21taXQgaW1wbGVtZW50cyBvbi1hY2Nlc3MgVk0gc2V0 dGluZyBmb3Igc2VxdWVudGlhbCBzY2FucyBhcyB3ZWxsCmFzIGZvciB0aGUgdW5kZXJseWluZyBo ZWFwIHJlbGF0aW9uIGluIGluZGV4IHNjYW5zIGFuZCBiaXRtYXAgaGVhcApzY2Fucy4KCkF1dGhv cjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXplbC5kZT4KUmV2aWV3ZWQtYnk6IEtpcmls bCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1W N1NPTHhkSzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMgICAgICAgICAgICAgIHwgMTUgKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgMTUgKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgICAgIHwgNDAgKysrKysrKysrKysrKysrKysrLQogc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICAgIHwgMjQgKysrKysrKysr LS0KIC4uLi90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAgICB8ICAzICst CiA1IGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBmYjdhNzU0OGFhMC4uZDlkYzc5ZjRhOTYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC01NzAsNiArNTcwLDcgQEAgaGVhcF9wcmVwYXJlX3Bh Z2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJQnVmZmVyCQlidWZmZXIgPSBzY2FuLT5yc19j YnVmOwogCUJsb2NrTnVtYmVyIGJsb2NrID0gc2Nhbi0+cnNfY2Jsb2NrOwogCVNuYXBzaG90CXNu YXBzaG90OworCUJ1ZmZlcgkgICAqdm1idWZmZXIgPSBOVUxMOwogCVBhZ2UJCXBhZ2U7CiAJaW50 CQkJbGluZXM7CiAJYm9vbAkJYWxsX3Zpc2libGU7CkBAIC01ODQsNyArNTg1LDkgQEAgaGVhcF9w cmVwYXJlX3BhZ2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJLyoKIAkgKiBQcnVuZSBhbmQg cmVwYWlyIGZyYWdtZW50YXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLCBpZiBwb3NzaWJsZS4KIAkg Ki8KLQloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX2Jhc2UucnNfcmQsIGJ1ZmZlcik7CisJ aWYgKHNzY2FuLT5yc19mbGFncyAmIFNPX0hJTlRfUkVMX1JFQURfT05MWSkKKwkJdm1idWZmZXIg PSAmc2Nhbi0+cnNfdm1idWZmZXI7CisJaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19iYXNl LnJzX3JkLCBidWZmZXIsIHZtYnVmZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJl IGxvY2sgb24gdGhlIGJ1ZmZlciBjb250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpAQCAtMTI2 MSw2ICsxMjY0LDcgQEAgaGVhcF9iZWdpbnNjYW4oUmVsYXRpb24gcmVsYXRpb24sIFNuYXBzaG90 IHNuYXBzaG90LAogCQkJCQkJCQkJCQkJCQkgIHNpemVvZihUQk1JdGVyYXRlUmVzdWx0KSk7CiAJ fQogCisJc2Nhbi0+cnNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJcmV0dXJuIChUYWJs ZVNjYW5EZXNjKSBzY2FuOwogfQpAQCAtMTI5OSw2ICsxMzAzLDEyIEBAIGhlYXBfcmVzY2FuKFRh YmxlU2NhbkRlc2Mgc3NjYW4sIFNjYW5LZXkga2V5LCBib29sIHNldF9wYXJhbXMsCiAJCXNjYW4t PnJzX2NidWYgPSBJbnZhbGlkQnVmZmVyOwogCX0KIAorCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4t PnJzX3ZtYnVmZmVyKSkKKwl7CisJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfdm1idWZmZXIpOwor CQlzY2FuLT5yc192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJfQorCiAJLyoKIAkgKiBTT19U WVBFX0JJVE1BUFNDQU4gd291bGQgYmUgY2xlYW5lZCB1cCBoZXJlLCBidXQgaXQgZG9lcyBub3Qg aG9sZCBhbnkKIAkgKiBhZGRpdGlvbmFsIGRhdGEgdnMgYSBub3JtYWwgSGVhcFNjYW4KQEAgLTEz MzEsNiArMTM0MSw5IEBAIGhlYXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCWlmIChC dWZmZXJJc1ZhbGlkKHNjYW4tPnJzX2NidWYpKQogCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX2Ni dWYpOwogCisJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfdm1idWZmZXIpKQorCQlSZWxlYXNl QnVmZmVyKHNjYW4tPnJzX3ZtYnVmZmVyKTsKKwogCS8qCiAJICogTXVzdCBmcmVlIHRoZSByZWFk IHN0cmVhbSBiZWZvcmUgZnJlZWluZyB0aGUgQnVmZmVyQWNjZXNzU3RyYXRlZ3kuCiAJICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCA2YzJlNGUwOGIxNi4u MmNiOThlNTg5NTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpA QCAtODUsNiArODUsNyBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24gcmVsLCB1 aW50MzIgZmxhZ3MpCiAKIAloc2Nhbi0+eHNfYmFzZS5yZWwgPSByZWw7CiAJaHNjYW4tPnhzX2Ni dWYgPSBJbnZhbGlkQnVmZmVyOworCWhzY2FuLT54c192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7 CiAJaHNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVsID0gIShmbGFncyAmIFNPX0hJTlRfUkVMX1JFQURf T05MWSk7CiAKIAlyZXR1cm4gJmhzY2FuLT54c19iYXNlOwpAQCAtMTAwLDYgKzEwMSwxMiBAQCBo ZWFwYW1faW5kZXhfZmV0Y2hfcmVzZXQoSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbikKIAkJUmVs ZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfY2J1Zik7CiAJCWhzY2FuLT54c19jYnVmID0gSW52YWxpZEJ1 ZmZlcjsKIAl9CisKKwlpZiAoQnVmZmVySXNWYWxpZChoc2Nhbi0+eHNfdm1idWZmZXIpKQorCXsK KwkJUmVsZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfdm1idWZmZXIpOworCQloc2Nhbi0+eHNfdm1idWZm ZXIgPSBJbnZhbGlkQnVmZmVyOworCX0KIH0KIAogc3RhdGljIHZvaWQKQEAgLTEzOSw3ICsxNDYs OCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfdHVwbGUoc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEg KnNjYW4sCiAJCSAqIFBydW5lIHBhZ2UsIGJ1dCBvbmx5IGlmIHdlIHdlcmVuJ3QgYWxyZWFkeSBv biB0aGlzIHBhZ2UKIAkJICovCiAJCWlmIChwcmV2X2J1ZiAhPSBoc2Nhbi0+eHNfY2J1ZikKLQkJ CWhlYXBfcGFnZV9wcnVuZV9vcHQoaHNjYW4tPnhzX2Jhc2UucmVsLCBoc2Nhbi0+eHNfY2J1Zik7 CisJCQloZWFwX3BhZ2VfcHJ1bmVfb3B0KGhzY2FuLT54c19iYXNlLnJlbCwgaHNjYW4tPnhzX2Ni dWYsCisJCQkJCQkJCWhzY2FuLT5tb2RpZmllc19iYXNlX3JlbCA/IE5VTEwgOiAmaHNjYW4tPnhz X3ZtYnVmZmVyKTsKIAl9CiAKIAkvKiBPYnRhaW4gc2hhcmUtbG9jayBvbiB0aGUgYnVmZmVyIHNv IHdlIGNhbiBleGFtaW5lIHZpc2liaWxpdHkgKi8KQEAgLTI0NzIsNiArMjQ4MCw3IEBAIEJpdG1h cEhlYXBTY2FuTmV4dEJsb2NrKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAlUQk1JdGVyYXRlUmVzdWx0 ICp0Ym1yZXM7CiAJT2Zmc2V0TnVtYmVyIG9mZnNldHNbVEJNX01BWF9UVVBMRVNfUEVSX1BBR0Vd OwogCWludAkJCW5vZmZzZXRzID0gLTE7CisJQnVmZmVyCSAgICp2bWJ1ZmZlciA9IE5VTEw7CiAK IAlBc3NlcnQoc2Nhbi0+cnNfZmxhZ3MgJiBTT19UWVBFX0JJVE1BUFNDQU4pOwogCUFzc2VydCho c2Nhbi0+cnNfcmVhZF9zdHJlYW0pOwpAQCAtMjUxOCw3ICsyNTI3LDkgQEAgQml0bWFwSGVhcFNj YW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAogCS8qCiAJICogUHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICovCi0J aGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19yZCwgYnVmZmVyKTsKKwlpZiAoc2Nhbi0+cnNf ZmxhZ3MgJiBTT19ISU5UX1JFTF9SRUFEX09OTFkpCisJCXZtYnVmZmVyID0gJmhzY2FuLT5yc192 bWJ1ZmZlcjsKKwloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZmZXIsIHZtYnVm ZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZlciBj b250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCAxZmE3MmUxOWYwZC4uYzk4MjFhNTgzMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCkBAIC0yMDIsNiArMjAyLDggQEAgc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxf c2V0X3ZtKFBydW5lU3RhdGUgKnByc3RhdGUsCiAJCQkJCQkJCSAgUmVsYXRpb24gcmVsYXRpb24s CiAJCQkJCQkJCSAgQmxvY2tOdW1iZXIgaGVhcF9ibGssIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFn ZSBoZWFwX3BhZ2UsCiAJCQkJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJCQkgIFBydW5l UmVhc29uIHJlYXNvbiwKKwkJCQkJCQkJICBib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwK IAkJCQkJCQkJICBpbnQgbmxwZGVhZF9pdGVtcywKIAkJCQkJCQkJICB1aW50OCAqb2xkX3ZtYml0 cywKIAkJCQkJCQkJICB1aW50OCAqbmV3X3ZtYml0cyk7CkBAIC0yMjMsOSArMjI1LDEzIEBAIHN0 YXRpYyBUcmFuc2FjdGlvbklkIGdldF9jb25mbGljdF94aWQoYm9vbCBkb19wcnVuZSwgYm9vbCBk b19mcmVlemUsIGJvb2wgZG9fc2V0CiAgKiBpZiB0aGVyZSdzIG5vdCBhbnkgdXNlIGluIHBydW5p bmcuCiAgKgogICogQ2FsbGVyIG11c3QgaGF2ZSBwaW4gb24gdGhlIGJ1ZmZlciwgYW5kIG11c3Qg Km5vdCogaGF2ZSBhIGxvY2sgb24gaXQuCisgKgorICogSWYgdm1idWZmZXIgaXMgbm90IE5VTEws IGl0IGlzIG9rYXkgZm9yIHBydW5pbmcgdG8gc2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBpZgorICog dGhlIHBhZ2UgaXMgYWxsLXZpc2libGUuIFdlIHdpbGwgdGFrZSBjYXJlIG9mIHBpbm5pbmcgYW5k LCBpZiBuZWVkZWQsCisgKiByZWFkaW5nIGluIHRoZSBwYWdlIG9mIHRoZSB2aXNpYmlsaXR5IG1h cC4KICAqLwogdm9pZAotaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVm ZmVyIGJ1ZmZlcikKK2hlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZl ciBidWZmZXIsIEJ1ZmZlciAqdm1idWZmZXIpCiB7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBh Z2UoYnVmZmVyKTsKIAlUcmFuc2FjdGlvbklkIHBydW5lX3hpZDsKQEAgLTMwNiw2ICszMTIsMTMg QEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikK IAkJCQkuY3V0b2ZmcyA9IE5VTEwsCiAJCQl9OwogCisJCQlpZiAodm1idWZmZXIpCisJCQl7CisJ CQkJdmlzaWJpbGl0eW1hcF9waW4ocmVsYXRpb24sIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZl ciksIHZtYnVmZmVyKTsKKwkJCQlwYXJhbXMub3B0aW9ucyB8PSBIRUFQX1BBR0VfUFJVTkVfVVBE QVRFX1ZNOworCQkJCXBhcmFtcy52bWJ1ZmZlciA9ICp2bWJ1ZmZlcjsKKwkJCX0KKwogCQkJaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoJnBhcmFtcywgJnByZXN1bHQsICZkdW1teV9vZmZfbG9j LAogCQkJCQkJCQkJICAgTlVMTCwgTlVMTCk7CiAKQEAgLTk0NSw2ICs5NTgsOSBAQCBpZGVudGlm eV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIs CiAgKiBjb3JydXB0ZWQsIGl0IHdpbGwgZml4IHRoZW0gYnkgY2xlYXJpbmcgdGhlIFZNIGJpdHMg YW5kIHZpc2liaWxpdHkgaGludC4KICAqIFRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBkb25lIGlu IGEgY3JpdGljYWwgc2VjdGlvbi4KICAqCisgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25seSBh ZnRlciBkb19mcmVlemUgaGFzIGJlZW4gZGVjaWRlZCAoYW5kIGRvX3BydW5lCisgKiBoYXMgYmVl biBzZXQpLCBhcyB0aGVzZSBmYWN0b3IgaW50byBvdXIgaGV1cmlzdGljLWJhc2VkIGRlY2lzaW9u LgorICoKICAqIFJldHVybnMgdHJ1ZSBpZiBvbmUgb3IgYm90aCBWTSBiaXRzIHNob3VsZCBiZSBz ZXQsIGFsb25nIHdpdGggcmV0dXJuaW5nIHRoZQogICogY3VycmVudCB2YWx1ZSBvZiB0aGUgVk0g Yml0cyBpbiAqb2xkX3ZtYml0cyBhbmQgdGhlIGRlc2lyZWQgbmV3IHZhbHVlIG9mCiAgKiB0aGUg Vk0gYml0cyBpbiAqbmV3X3ZtYml0cy4KQEAgLTk1NCw2ICs5NzAsOCBAQCBoZWFwX3BhZ2Vfd2ls bF9zZXRfdm0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAkJCQkJICBSZWxhdGlvbiByZWxhdGlvbiwK IAkJCQkJICBCbG9ja051bWJlciBoZWFwX2JsaywgQnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhl YXBfcGFnZSwKIAkJCQkJICBCdWZmZXIgdm1idWZmZXIsCisJCQkJCSAgUHJ1bmVSZWFzb24gcmVh c29uLAorCQkJCQkgIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAogCQkJCQkgIGludCBu bHBkZWFkX2l0ZW1zLAogCQkJCQkgIHVpbnQ4ICpvbGRfdm1iaXRzLAogCQkJCQkgIHVpbnQ4ICpu ZXdfdm1iaXRzKQpAQCAtOTYxLDYgKzk3OSwyNCBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdm0oUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwKIAlpZiAoIXByc3RhdGUtPmF0dGVtcHRfdXBkYXRlX3ZtKQogCQly ZXR1cm4gZmFsc2U7CiAKKwkvKgorCSAqIElmIHRoaXMgaXMgYW4gb24tYWNjZXNzIGNhbGwgYW5k IHdlJ3JlIG5vdCBhY3R1YWxseSBwcnVuaW5nLCBhdm9pZAorCSAqIHNldHRpbmcgdGhlIHZpc2li aWxpdHkgbWFwIGlmIGl0IHdvdWxkIG5ld2x5IGRpcnR5IHRoZSBoZWFwIHBhZ2Ugb3IsIGlmCisJ ICogdGhlIHBhZ2UgaXMgYWxyZWFkeSBkaXJ0eSwgaWYgZG9pbmcgc28gd291bGQgcmVxdWlyZSBp bmNsdWRpbmcgYQorCSAqIGZ1bGwtcGFnZSBpbWFnZSAoRlBJKSBvZiB0aGUgaGVhcCBwYWdlIGlu IHRoZSBXQUwuIFRoaXMgc2l0dWF0aW9uCisJICogc2hvdWxkIGJlIHJhcmUsIGFzIG9uLWFjY2Vz cyBwcnVuaW5nIGlzIG9ubHkgYXR0ZW1wdGVkIHdoZW4KKwkgKiBwZF9wcnVuZV94aWQgaXMgdmFs aWQuCisJICovCisJaWYgKHJlYXNvbiA9PSBQUlVORV9PTl9BQ0NFU1MgJiYKKwkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgJiYKKwkJIWRvX3BydW5lICYmICFkb19mcmVlemUgJiYKKwkJKCFCdWZmZXJJ c0RpcnR5KGhlYXBfYnVmZmVyKSB8fCBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChoZWFwX2J1 ZmZlcikpKQorCXsKKwkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+ YWxsX2Zyb3plbiA9IGZhbHNlOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJKm9sZF92bWJpdHMg PSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxrLAogCQkJCQkJCQkJ CSAgICZ2bWJ1ZmZlcik7CiAKQEAgLTExNTcsNiArMTE5Myw4IEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkgIGJ1ZmZlciwK IAkJCQkJCQkJCSAgcGFnZSwKIAkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkgIHBhcmFt cy0+cmVhc29uLAorCQkJCQkJCQkJICBkb19wcnVuZSwgZG9fZnJlZXplLAogCQkJCQkJCQkJICBw cnN0YXRlLmxwZGVhZF9pdGVtcywKIAkJCQkJCQkJCSAgJm9sZF92bWJpdHMsCiAJCQkJCQkJCQkg ICZuZXdfdm1iaXRzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCAwYmZlMjM2NmUxYS4uMzMyOGY1NmMx MDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTk1LDYgKzk1LDEzIEBAIHR5cGVkZWYgc3RydWN0IEhl YXBTY2FuRGVzY0RhdGEKIAkgKi8KIAlQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAq cnNfcGFyYWxsZWx3b3JrZXJkYXRhOwogCisJLyoKKwkgKiBGb3Igc2VxdWVudGlhbCBzY2FucyBh bmQgYml0bWFwIGhlYXAgc2NhbnMuIElmIHRoZSByZWxhdGlvbiBpcyBub3QKKwkgKiBiZWluZyBt b2RpZmllZCwgb24tYWNjZXNzIHBydW5pbmcgbWF5IHJlYWQgaW4gdGhlIGN1cnJlbnQgaGVhcCBw YWdlJ3MKKwkgKiBjb3JyZXNwb25kaW5nIFZNIGJsb2NrIHRvIHRoaXMgYnVmZmVyLgorCSAqLwor CUJ1ZmZlcgkJcnNfdm1idWZmZXI7CisKIAkvKiB0aGVzZSBmaWVsZHMgb25seSB1c2VkIGluIHBh Z2UtYXQtYS10aW1lIG1vZGUgYW5kIGZvciBiaXRtYXAgc2NhbnMgKi8KIAl1aW50MzIJCXJzX2Np bmRleDsJCS8qIGN1cnJlbnQgdHVwbGUncyBpbmRleCBpbiB2aXN0dXBsZXMgKi8KIAl1aW50MzIJ CXJzX250dXBsZXM7CQkvKiBudW1iZXIgb2YgdmlzaWJsZSB0dXBsZXMgb24gcGFnZSAqLwpAQCAt MTE3LDggKzEyNCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEZldGNoSGVhcERhdGEKIHsKIAlJ bmRleEZldGNoVGFibGVEYXRhIHhzX2Jhc2U7CS8qIEFNIGluZGVwZW5kZW50IHBhcnQgb2YgdGhl IGRlc2NyaXB0b3IgKi8KIAotCUJ1ZmZlcgkJeHNfY2J1ZjsJCS8qIGN1cnJlbnQgaGVhcCBidWZm ZXIgaW4gc2NhbiwgaWYgYW55ICovCi0JLyogTkI6IGlmIHhzX2NidWYgaXMgbm90IEludmFsaWRC dWZmZXIsIHdlIGhvbGQgYSBwaW4gb24gdGhhdCBidWZmZXIgKi8KKwkvKgorCSAqIEN1cnJlbnQg aGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55LiBOQjogaWYgeHNfY2J1ZiBpcyBub3QKKwkgKiBJ bnZhbGlkQnVmZmVyLCB3ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVmZmVyLgorCSAqLworCUJ1ZmZl cgkJeHNfY2J1ZjsKKworCS8qCisJICogRm9yIGluZGV4IHNjYW5zIHRoYXQgZG8gbm90IG1vZGlm eSB0aGUgdW5kZXJseWluZyBoZWFwIHRhYmxlLCBvbi1hY2Nlc3MKKwkgKiBwcnVuaW5nIG1heSBy ZWFkIGluIHRoZSBjdXJyZW50IGhlYXAgcGFnZSdzIGNvcnJlc3BvbmRpbmcgVk0gYmxvY2sgdG8K KwkgKiB0aGlzIGJ1ZmZlci4KKwkgKi8KKwlCdWZmZXIJCXhzX3ZtYnVmZmVyOwogCiAJLyoKIAkg KiBTb21lIG9wdGltaXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGlmIHRoZSBxdWVyeSBk b2VzIG5vdCBtb2RpZnkKQEAgLTQyMCw3ICs0MzcsOCBAQCBleHRlcm4gVHJhbnNhY3Rpb25JZCBo ZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCQkgIFRNX0lu ZGV4RGVsZXRlT3AgKmRlbHN0YXRlKTsKIAogLyogaW4gaGVhcC9wcnVuZWhlYXAuYyAqLwotZXh0 ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1 ZmZlcik7CitleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9u LCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQlCdWZmZXIgKnZtYnVmZmVyKTsKIGV4dGVybiB2b2lk IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJ CQkJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKIAkJCQkJCQkJCSAgIE9mZnNl dE51bWJlciAqb2ZmX2xvYywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0 YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5k YnlfbG9naWNhbF9kZWNvZGluZy5wbAppbmRleCBlYmUyZmFlMTc4OS4uYmRkOWYwYTYyY2QgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGlu Zy5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2Rp bmcucGwKQEAgLTI5Niw2ICsyOTYsNyBAQCB3YWxfbGV2ZWwgPSAnbG9naWNhbCcKIG1heF9yZXBs aWNhdGlvbl9zbG90cyA9IDQKIG1heF93YWxfc2VuZGVycyA9IDQKIGF1dG92YWN1dW0gPSBvZmYK K2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KIH0pOwogJG5vZGVfcHJpbWFyeS0+ZHVtcF9pbmZv OwogJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CkBAIC03NDgsNyArNzQ5LDcgQEAgY2hlY2tfcGdfcmVj dmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsCiAkbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5s b2dmaWxlOwogCiByZWFjdGl2ZV9zbG90c19jaGFuZ2VfaGZzX2FuZF93YWl0X2Zvcl94bWlucygn c2hhcmVkX3Jvd19yZW1vdmFsXycsCi0JJ25vX2NvbmZsaWN0XycsIDAsIDEpOworCSdub19jb25m bGljdF8nLCAxLCAwKTsKIAogIyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIGNvbmZsaWN0CiB3 YWl0X3VudGlsX3ZhY3V1bV9jYW5fcmVtb3ZlKAotLSAKMi40My4wCgo= --000000000000857fc406462f10e4 Content-Type: text/x-patch; charset="UTF-8"; name="v28-0015-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v28-0015-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjape3f614 RnJvbSAxZGY5OGEzMmM5YjMyNDU4NjIxYzAwM2Y4OTVhNzFjMDA4YzA4NWQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjggMTUvMTVdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog MS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgdGhhdCB2aXNpYmlsaXR5IG1hcCAoVk0pIHVwZGF0ZXMg Y2FuIG9jY3VyIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywKaXQgbWFrZXMgc2Vuc2UgdG8gYWxz byBzZXQgdGhlIHBhZ2XigJlzIHBkX3BydW5lX3hpZCBoaW50IGR1cmluZyBpbnNlcnRzLgpUaGlz IGVuYWJsZXMgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBydW4gYWZ0ZXIgYSBwYWdl IGlzCmZpbGxlZCB3aXRoIG5ld2x5IGluc2VydGVkIHR1cGxlcyB0aGUgZmlyc3QgdGltZSBpdCBp cyByZWFkLgoKVGhpcyBjaGFuZ2UgYWxzbyBhZGRyZXNzZXMgYSBsb25nLXN0YW5kaW5nIG5vdGUg aW4gaGVhcF9pbnNlcnQoKSBhbmQKaGVhcF9tdWx0aV9pbnNlcnQoKSwgd2hpY2ggb2JzZXJ2ZWQg dGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZApoZWxwIGNsZWFuIHVwIGFib3J0ZWQgaW5z ZXJ0aW9ucyBzb29uZXIuIFdpdGhvdXQgaXQsIHN1Y2ggdHVwbGVzIG1pZ2h0CmxpbmdlciB1bnRp bCBWQUNVVU0sIHdoZXJlYXMgbm93IHRoZXkgY2FuIGJlIHBydW5lZCBlYXJsaWVyLgoKU2V0dGlu ZyBwZF9wcnVuZV94aWQgb24gaW5zZXJ0IGNhbiBjYXVzZSBhIHBhZ2UgdG8gYmUgZGlydGllZCBh bmQKd3JpdHRlbiBvdXQgd2hlbiBpdCBwcmV2aW91c2x5IHdvdWxkIG5vdCBoYXZlIGJlZW4sIGFm ZmV0Y3RpbmcgdGhlCnJlcG9ydGVkIG51bWJlciBvZiBoaXRzIGluIHRoZSBpbmRleC1raWxsdHVw bGVzIGlzb2xhdGlvbiB0ZXN0LiBJdCBpcwp1bmNsZWFyIGlmIHRoaXMgaXMgYSBidWcgaW4gdGhl IHdheSBoaXRzIGFyZSB0cmFja2VkLCBhIGZhdWx0eSB0ZXN0CmV4cGVjdGF0aW9uLCBvciBpZiBz aW1wbHkgdXBkYXRpbmcgdGhlIHRlc3QncyBleHBlY3RlZCBvdXRwdXQgaXMKc3VmZmljaWVudCBy ZW1lZGlhdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAg ICAgICAgfCAyNSArKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jICAgICAgICAgfCAxNSArKysrKysrKysrLQogLi4uL21vZHVsZXMvaW5kZXgv ZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQgICAgIHwgIDYgKystLS0KIDMgZmlsZXMgY2hhbmdlZCwg MzQgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YwppbmRleCBkOWRjNzlmNGE5Ni4uY2NlYmMxZjI0NGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bS5jCkBAIC0yMTE5LDYgKzIxMTksNyBAQCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwg SGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAlUcmFuc2FjdGlvbklkIHhpZCA9IEdldEN1 cnJlbnRUcmFuc2FjdGlvbklkKCk7CiAJSGVhcFR1cGxlCWhlYXB0dXA7CiAJQnVmZmVyCQlidWZm ZXI7CisJUGFnZQkJcGFnZTsKIAlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAli b29sCQlhbGxfdmlzaWJsZV9jbGVhcmVkID0gZmFsc2U7CiAKQEAgLTIxNzgsMTUgKzIxNzksMTkg QEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJ ZCBjaWQsCiAJfQogCiAJLyoKLQkgKiBYWFggU2hvdWxkIHdlIHNldCBQYWdlU2V0UHJ1bmFibGUg b24gdGhpcyBwYWdlID8KKwkgKiBTZXQgcGRfcHJ1bmVfeGlkIHRvIHRyaWdnZXIgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoKSBvbmNlIHRoZSBwYWdlCisJICogaXMgZnVsbCBzbyB0aGF0IHdl IGNhbiBzZXQgdGhlIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgogCSAqCi0JICogVGhlIGlu c2VydGluZyB0cmFuc2FjdGlvbiBtYXkgZXZlbnR1YWxseSBhYm9ydCB0aHVzIG1ha2luZyB0aGlz IHR1cGxlCi0JICogREVBRCBhbmQgaGVuY2UgYXZhaWxhYmxlIGZvciBwcnVuaW5nLiBUaG91Z2gg d2UgZG9uJ3Qgd2FudCB0byBvcHRpbWl6ZQotCSAqIGZvciBhYm9ydHMsIGlmIG5vIG90aGVyIHR1 cGxlIGluIHRoaXMgcGFnZSBpcyBVUERBVEVkL0RFTEVURWQsIHRoZQotCSAqIGFib3J0ZWQgdHVw bGUgd2lsbCBuZXZlciBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMgdHJpZ2dlcmVkLgor CSAqIFNldHRpbmcgcGRfcHJ1bmVfeGlkIGlzIGFsc28gaGFuZHkgaWYgdGhlIGluc2VydGluZyB0 cmFuc2FjdGlvbgorCSAqIGV2ZW50dWFsbHkgYWJvcnRzIG1ha2luZyB0aGlzIHR1cGxlIERFQUQg YW5kIGhlbmNlIGF2YWlsYWJsZSBmb3IKKwkgKiBwcnVuaW5nLiBJZiBubyBvdGhlciB0dXBsZSBp biB0aGlzIHBhZ2UgaXMgVVBEQVRFZC9ERUxFVEVkLCB0aGUgYWJvcnRlZAorCSAqIHR1cGxlIHdv dWxkIG5ldmVyIG90aGVyd2lzZSBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMgdHJpZ2dl cmVkLgogCSAqCi0JICogSWYgeW91IGRvIGFkZCBQYWdlU2V0UHJ1bmFibGUgaGVyZSwgYWRkIGl0 IGluIGhlYXBfeGxvZ19pbnNlcnQgdG9vLgorCSAqIERvbid0IHNldCBpdCBpZiB3ZSBhcmUgaW4g Ym9vdHN0cmFwIG1vZGUsIHRob3VnaC4KIAkgKi8KKwlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZm ZXIpOworCWlmIChUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJUGFnZVNldFBydW5hYmxl KHBhZ2UsIHhpZCk7CiAKIAlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKIApAQCAtMjE5Niw3ICsy MjAxLDYgQEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENv bW1hbmRJZCBjaWQsCiAJCXhsX2hlYXBfaW5zZXJ0IHhscmVjOwogCQl4bF9oZWFwX2hlYWRlciB4 bGhkcjsKIAkJWExvZ1JlY1B0cglyZWNwdHI7Ci0JCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1ZmZlcik7CiAJCXVpbnQ4CQlpbmZvID0gWExPR19IRUFQX0lOU0VSVDsKIAkJaW50CQkJYnVm ZmxhZ3MgPSAwOwogCkBAIC0yNTYwLDggKzI1NjQsMTMgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVs YXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQl9 CiAKIAkJLyoKLQkJICogWFhYIFNob3VsZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxlIG9uIHRoaXMg cGFnZSA/IFNlZSBoZWFwX2luc2VydCgpCisJCSAqIFNldCBwZF9wcnVuZV94aWQuIFNlZSBoZWFw X2luc2VydCgpIGZvciBtb3JlIG9uIHdoeSB3ZSBkbyB0aGlzIHdoZW4KKwkJICogaW5zZXJ0aW5n IHR1cGxlcy4gVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGlmIHdlIGFyZW4ndCBhbHJlYWR5CisJCSAq IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuIGluIHRoZSBWTS4gV2UgYWxzbyBkb24ndCBzZXQgaXQg aW4KKwkJICogYm9vdHN0cmFwIG1vZGUuCiAJCSAqLworCQlpZiAoIWFsbF9mcm96ZW5fc2V0ICYm IFRyYW5zYWN0aW9uSWRJc05vcm1hbCh4aWQpKQorCQkJUGFnZVNldFBydW5hYmxlKHBhZ2UsIHhp ZCk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jCmluZGV4IDQ3ZDI0Nzk0MTVlLi5hYjJkYjkzMWFhYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC00NDcsNiArNDQ3LDEyIEBAIGhlYXBfeGxvZ19p bnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJZnJlZXNwYWNlID0gUGFnZUdldEhl YXBGcmVlU3BhY2UocGFnZSk7IC8qIG5lZWRlZCB0byB1cGRhdGUgRlNNIGJlbG93ICovCiAKKwkJ LyoKKwkJICogU2V0IHRoZSBwYWdlIHBydW5hYmxlIHRvIHRyaWdnZXIgb24tYWNjZXNzIHBydW5p bmcgbGF0ZXIgd2hpY2ggbWF5CisJCSAqIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBpbiB0aGUg Vk0uCisJCSAqLworCQlQYWdlU2V0UHJ1bmFibGUocGFnZSwgWExvZ1JlY0dldFhpZChyZWNvcmQp KTsKKwogCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7CiAKIAkJaWYgKHhscmVjLT5mbGFncyAmIFhM SF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKQEAgLTU5Niw5ICs2MDIsMTYgQEAgaGVhcF94 bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJaWYgKHhscmVjLT5m bGFncyAmIFhMSF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKIAkJCVBhZ2VDbGVhckFsbFZp c2libGUocGFnZSk7CiAKLQkJLyogWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCBpbXBsaWVzIHRo YXQgYWxsIHR1cGxlcyBhcmUgdmlzaWJsZSAqLworCQkvKgorCQkgKiBYTEhfSU5TRVJUX0FMTF9G Uk9aRU5fU0VUIGltcGxpZXMgdGhhdCBhbGwgdHVwbGVzIGFyZSB2aXNpYmxlLiBJZgorCQkgKiB3 ZSBhcmUgbm90IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuLCB0aGVuIHNldCB0aGUgcGFnZSdzIHBy dW5hYmxlCisJCSAqIGhpbnQgc28gdGhhdCB3ZSB0cmlnZ2VyIG9uLWFjY2VzcyBwcnVuaW5nIGxh dGVyIHdoaWNoIG1heSBzZXQgdGhlCisJCSAqIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgor CQkgKi8KIAkJaWYgKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQpCiAJ CQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJZWxzZQorCQkJUGFnZVNldFBydW5hYmxlKHBh Z2UsIFhMb2dSZWNHZXRYaWQocmVjb3JkKSk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7 CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmRleC9leHBlY3RlZC9raWxsdHVw bGVzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5kZXgvZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQK aW5kZXggYmU3ZGRkNzU2ZWYuLmIyOWYyNDM0YjAwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL2luZGV4L2V4cGVjdGVkL2tpbGx0dXBsZXMub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMv aW5kZXgvZXhwZWN0ZWQva2lsbHR1cGxlcy5vdXQKQEAgLTU0LDcgKzU0LDcgQEAgc3RlcCBmbHVz aDogU0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJlc3VsdDog U0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVhcF9hY2Nl c3NlcyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19hbGxfdGFi bGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9hY2Nlc3Nl cwogLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAg MgogKDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFwX2FjY2Vz c2VzID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBwZ19zdGF0 aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsKQEAgLTEz MCw3ICsxMzAsNyBAQCBzdGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKTsKIHN0ZXAgcmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3Nf aGl0IC0gY291bnRlci5oZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291 bnRlciwgcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1 cGxlJzsKIG5ld19oZWFwX2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAg ICAgIDEKKyAgICAgICAgICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRF IGNvdW50ZXIgU0VUIGhlYXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVh cF9ibGtzX2hpdCBGUk9NIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2ls bF9wcmlvcl90dXBsZScpOwpAQCAtMjgzLDcgKzI4Myw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBG Uk9NIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFw X2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3 X2hlYXBfYWNjZXNzZXMgRlJPTSBjb3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSBy ZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0t LS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJvdykK IAogc3RlcCBtZWFzdXJlOiBVUERBVEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxF Q1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90YWJs ZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJyk7Ci0tIAoyLjQzLjAKCg== --000000000000857fc406462f10e4--