Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uTnjb-00A77K-7H for pgsql-hackers@arkaria.postgresql.org; Mon, 23 Jun 2025 20:25:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uTnjY-006MPA-UZ for pgsql-hackers@arkaria.postgresql.org; Mon, 23 Jun 2025 20:25:41 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uTnjX-006MOC-QA for pgsql-hackers@lists.postgresql.org; Mon, 23 Jun 2025 20:25:41 +0000 Received: from mail-ed1-x529.google.com ([2a00:1450:4864:20::529]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uTnjQ-003bfp-22 for pgsql-hackers@lists.postgresql.org; Mon, 23 Jun 2025 20:25:39 +0000 Received: by mail-ed1-x529.google.com with SMTP id 4fb4d7f45d1cf-60bfcada295so926570a12.1 for ; Mon, 23 Jun 2025 13:25:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750710329; x=1751315129; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=jtfKwPQDcipt7wGMLFF9QrMYNyAx3ACGzI+I25wxAec=; b=DAYbaiGdqFqTSVtBlktwy0YzxLRf4oIYx5ErKfT8xg0AOXe+0KW/nXYLee0n0hPTKk RUxD7j9ngTM6FYrvYEUoXBAHNv06RyNBg4JPnO3LXn5s810NbRO7fDcqOYoFtFryHc2H SlCls4vxpbcBKI2XXgguAuef4c5JqOgx3qnRh3RvGXl1BPa74ZTaprRugFABs4t9VVnE 6JaLpbwEoe+puYpZsjBYiRP8xKQrWXXrJaC9i5X90Q7qGVe8KbEzfqS147aBWQToYaRc 03bdJE6mM+d241BHyEl1UAufSGiqQwb9DDiKw5i1KvTcS41IiTe6tFU4zd/XTWT3itCO AdoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750710329; x=1751315129; h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=jtfKwPQDcipt7wGMLFF9QrMYNyAx3ACGzI+I25wxAec=; b=ee0U8kCC4agnDb34NSwj5295Uv9U54O/Bt7Xp1/9GVG3ZG+JpgVN0SEpOjWLkAOF38 Pm3iCyqEyhC8FovGnlhBNQDc34VY/eMToWEv0UFLqTIj4TFiRICXgnpyJL6I+zEogBE8 3c63Yqb7Z1j/LQNoS+sgrvZzrdM+Z/Bpql+pij7biyGTxRyq9ZRVgF6kOOZXjnqkQkhq oxsG5yyrNiaoOXaIINfJK7ZUPb1fCVltBM/HreAERkiCu3S8Scr7Lb5C0Qub68m+IT99 SipQVgFap6jk3KFO9huz/wHAkSytp3Ahjx5mp3OsOU0w/vJZ3n8Hv9Bicx/8TjbAmPsK 1wwQ== X-Gm-Message-State: AOJu0Yz6xwkQEv6kD/daW2J177ycV+XtrLwluQkDi9sHrLsC52UDLokt KQsKfF9v4dWV/ql8khJEvkX+d8grEeDf2OXtK3BrQaqZ0+n93cI9QCQiuosegqrN6V52uKLurl7 k2PaZgZIaVRAUJcygnQgsISirKfDu1XkUZX4G X-Gm-Gg: ASbGncuACx2sUfUTXCDJGJkIa4VCmobA+mWiz/qH6bUHBoAdfkLpH2zLnN3UwUJV0R7 mkQXSmaC7HDd1Ww3sR7P/WVyOiugCeaL2reB0xZyXMloC7zwJ3QB8wYBiL5k0wRCbSDOb8Cx9Hu 3BzKMi5v8qLNBeMgBOV9GbX/6AKSJoXLzsJ9sUb1oPEZw= X-Google-Smtp-Source: AGHT+IE89ZC53iNbFA19F4P+39BeCq5FH6rNrwizEVFBgHpY6lIO+4nE71BvPONq+YH+DyGY8w7A6fUlPmFIU+KD7YE= X-Received: by 2002:a05:6402:90e:b0:5f3:26bb:8858 with SMTP id 4fb4d7f45d1cf-60a1d1a33femr11163714a12.34.1750710329100; Mon, 23 Jun 2025 13:25:29 -0700 (PDT) MIME-Version: 1.0 From: Melanie Plageman Date: Mon, 23 Jun 2025 16:25:16 -0400 X-Gm-Features: AX0GCFvgXa5kTvNMhzaoPwQxAvrOlDwCpw3tQ0c1sT_NtiNL6SCVLBFUaHCoabU Message-ID: Subject: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: PostgreSQL Hackers Cc: Andres Freund , Robert Haas Content-Type: multipart/mixed; boundary="000000000000459e560638430326" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000459e560638430326 Content-Type: text/plain; charset="UTF-8" Hi, The attached patch set eliminates xl_heap_visible, the WAL record emitted when a block of the heap is set all-visible/frozen in the visibility map. Instead, it includes the information needed to update the VM in the WAL record already emitted by the operation modifying the heap page. Currently COPY FREEZE and vacuum are the only operations that set the VM. So, this patch modifies the xl_heap_multi_insert and xl_heap_prune records. The result is a dramatic reduction in WAL volume for these operations. I've included numbers below. I also think that it makes more sense to include changes to the VM in the same WAL record as the changes that rendered the page all-visible. In some cases, we will only set the page all-visible, but that is in the context of the operation on the heap page which discovered that it was all-visible. Therefore, I find this to be a clarity as well as a performance improvement. This project is also the first step toward setting the VM on-access for queries which do not modify the page. There are a few design issues that must be sorted out for that project which I will detail separately. Note that this patch set currently does not implement setting the VM on-access. The attached patch set isn't 100% polished. I think some of the variable names and comments could use work, but I'd like to validate the idea of doing this before doing a full polish. This is a summary of what is in the set: Patches: 0001 - 0002: cleanup 0003 - 0004: refactoring 0005: COPY FREEZE changes 0006: refactoring 0007: vacuum phase III changes 0008: vacuum phase I empty page changes 0009 - 0012: refactoring 0013: vacuum phase I normal page changes 0014: cleanup Performance benefits of eliminating xl_heap_visible: vacuum of table with index (DDL at bottom of email) -- master -> patch WAL bytes: 405346 -> 303088 = 25% reduction WAL records: 6682 -> 4459 = 33% reduction vacuum of table without index -- master -> patch WAL records: 4452 -> 2231 = 50% reduction WAL bytes: 289016 -> 177978 = 38% reduction COPY FREEZE of table without index -- master -> patch WAL records: 3672777 -> 1854589 = 50% reduction WAL bytes: 841340339 -> 748545732 = 11% reduction (new pages need a copy of the whole page) table for vacuum example: -- create table foo(a int, b numeric, c numeric) with (autovacuum_enabled= false); insert into foo select i % 18, repeat('1', 400)::numeric, repeat('2', 400)::numeric from generate_series(1,40000)i; -- don't make index for no-index case create index on foo(a); delete from foo where a = 1; vacuum (verbose, process_toast false) foo; copy freeze example: -- -- create a data file create table large(a int, b int) with (autovacuum_enabled = false, fillfactor = 10); insert into large SELECT generate_series(1,40000000)i, 1; copy large to 'large.data'; -- example BEGIN; create table large(a int, b int) with (autovacuum_enabled = false, fillfactor = 10); COPY large FROM 'large.data' WITH (FREEZE); COMMIT; - Melanie --000000000000459e560638430326 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0002-Simplify-vacuum-VM-update-logging-counters.patch" Content-Disposition: attachment; filename="v1-0002-Simplify-vacuum-VM-update-logging-counters.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc9jjx6r1 RnJvbSA2Y2JiZGQzNTlhZTRkZTgzNWJiZDc3MzY5YjU5ODg4NWU4YTI3OWIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDE2OjEyOjE1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MSAwMi8xNF0gU2ltcGxpZnkgdmFjdXVtIFZNIHVwZGF0ZSBsb2dnaW5nIGNvdW50ZXJz CgpXZSBjYW4gc2ltcGxpZnkgdGhlIFZNIGNvdW50ZXJzIGFkZGVkIGluIGRjNmFjZmQ5MTBiOCB0 bwpsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoKSBhbmQgbGF6eV9zY2FuX25ld19vcl9lbXB0eSgpLgoK V2Ugd29uJ3QgaW52b2tlIGxhenlfdmFjdXVtX2hlYXBfcGFnZSgpIHVubGVzcyB0aGVyZSBhcmUg ZGVhZCBsaW5lCnBvaW50ZXJzLCBzbyB3ZSBrbm93IHRoZSBwYWdlIGNhbid0IGJlIGFsbC12aXNp YmxlLgoKSW4gbGF6eV9zY2FuX25ld19vcl9lbXB0eSgpLCB3ZSBvbmx5IHVwZGF0ZSB0aGUgVk0g aWYgdGhlIHBhZ2UtbGV2ZWwKaGludCBQRF9BTExfVklTSUJMRSBpcyBjbGVhciwgYW5kIHRoZSBW TSBiaXQgY2Fubm90IGJlIHNldCBpZiB0aGUgcGFnZQpsZXZlbCBiaXQgaXMgY2xlYXIgYmVjYXVz ZSBhIHN1YnNlcXVlbnQgcGFnZSB1cGRhdGUgd291bGQgZmFpbCB0byBjbGVhcgp0aGUgdmlzaWJp bGl0eSBtYXAgYml0LgoKU2ltcGxpZnkgdGhlIGxvZ2ljIGZvciBkZXRlcm1pbmluZyB3aGljaCBs b2cgY291bnRlcnMgdG8gaW5jcmVtZW50IGJhc2VkCm9uIHRoaXMga25vd2xlZGdlLgotLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDMyICsrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMDk0MTY0NTBhZjku LmM4ZGEyZjgzNWM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xOTAw LDE3ICsxOTAwLDEyIEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVs LCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAkJCQkJCQkJCQkgICBWSVNJQklMSVRZ TUFQX0FMTF9GUk9aRU4pOwogCQkJRU5EX0NSSVRfU0VDVElPTigpOwogCi0JCQkvKgotCQkJICog SWYgdGhlIHBhZ2Ugd2Fzbid0IGFscmVhZHkgc2V0IGFsbC12aXNpYmxlIGFuZC9vciBhbGwtZnJv emVuIGluCi0JCQkgKiB0aGUgVk0sIGNvdW50IGl0IGFzIG5ld2x5IHNldCBmb3IgbG9nZ2luZy4K LQkJCSAqLwotCQkJaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkg PT0gMCkKLQkJCXsKLQkJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7Ci0JCQkJdmFj cmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKLQkJCX0KLQkJCWVsc2UgaWYgKChv bGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSA9PSAwKQotCQkJCXZhY3JlbC0+ dm1fbmV3X2Zyb3plbl9wYWdlcysrOworCQkJLyogVk0gYml0cyBjYW5ub3QgaGF2ZSBiZWVuIHNl dCBpZiBQRF9BTExfVklTSUJMRSB3YXMgY2xlYXIgKi8KKwkJCUFzc2VydCgob2xkX3ZtYml0cyAm IFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgPT0gMCk7CisJCQkodm9pZCkgb2xkX3ZtYml0czsg LyogU2lsZW5jZSBjb21waWxlciAqLworCQkJLyogQ291bnQgdGhlIG5ld2x5IGFsbC1mcm96ZW4g cGFnZXMgZm9yIGxvZ2dpbmcuICovCisJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7 CisJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwogCQl9CiAKIAkJZnJl ZXNwYWNlID0gUGFnZUdldEhlYXBGcmVlU3BhY2UocGFnZSk7CkBAIC0yOTMwLDIwICsyOTI1LDE3 IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVy IGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJICAgdm1idWZmZXIsIHZpc2liaWxpdHlf Y3V0b2ZmX3hpZCwKIAkJCQkJCQkJCSAgIGZsYWdzKTsKIAotCQkvKgotCQkgKiBJZiB0aGUgcGFn ZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgYW5kL29yIGFsbC1mcm96ZW4gaW4gdGhl Ci0JCSAqIFZNLCBjb3VudCBpdCBhcyBuZXdseSBzZXQgZm9yIGxvZ2dpbmcuCi0JCSAqLwotCQlp ZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSA9PSAwKQorCQkvKiBX ZSBrbm93IHRoZSBwYWdlIHNob3VsZCBub3QgaGF2ZSBiZWVuIGFsbC12aXNpYmxlICovCisJCUFz c2VydCgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgPT0gMCk7CisJCSh2 b2lkKSBvbGRfdm1iaXRzOyAvKiBTaWxlbmNlIGNvbXBpbGVyICovCisKKwkJLyogQ291bnQgdGhl IG5ld2x5IHNldCBWTSBwYWdlIGZvciBsb2dnaW5nICovCisJCWlmICgoZmxhZ3MgJiBWSVNJQklM SVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwKQogCQl7CiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxl X3BhZ2VzKys7CiAJCQlpZiAoYWxsX2Zyb3plbikKIAkJCQl2YWNyZWwtPnZtX25ld192aXNpYmxl X2Zyb3plbl9wYWdlcysrOwogCQl9Ci0KLQkJZWxzZSBpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklM SVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYKLQkJCQkgYWxsX2Zyb3plbikKLQkJCXZhY3JlbC0+ dm1fbmV3X2Zyb3plbl9wYWdlcysrOwogCX0KIAogCS8qIFJldmVydCB0byB0aGUgcHJldmlvdXMg cGhhc2UgaW5mb3JtYXRpb24gZm9yIGVycm9yIHRyYWNlYmFjayAqLwotLSAKMi4zNC4xCgo= --000000000000459e560638430326 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0004-Introduce-unlogged-versions-of-VM-functions.patch" Content-Disposition: attachment; filename="v1-0004-Introduce-unlogged-versions-of-VM-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc9jjx723 RnJvbSA5NzUwMzU0ZjJiN2Q3YmQzYWZkMzhmY2E1ZTBjYTJkZDgxNGExOWEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE3IEp1biAyMDI1IDE3OjIyOjEwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MSAwNC8xNF0gSW50cm9kdWNlIHVubG9nZ2VkIHZlcnNpb25zIG9mIFZNIGZ1bmN0aW9u cwoKRnV0dXJlIGNvbW1pdHMgd2lsbCBlbGltaW5hdGUgdXNhZ2VzIG9mIHhsX2hlYXBfdmlzaWJs ZSBhbmQgaW5jb3Jwb3JhdGUKc2V0dGluZyB0aGUgVk0gaW50byB0aGUgV0FMIHJlY29yZHMgbWFr aW5nIG90aGVyIGNoYW5nZXMgdG8gdGhlIGhlYXAKcGFnZS4gQXMgYSBzdGVwIHRvd2FyZCB0aGlz IG1ha2UgdmVyc2lvbnMgb2YgdGhlIGZ1bmN0aW9ucyB3aGljaCB1cGRhdGUKdGhlIFZNIGFuZCBp dHMgaGVhcC1zcGVjaWZpYyB3cmFwcGVyIHdoaWNoIGRvIG5vdCBlbWl0IHRoZWlyIG93biBXQUwu CgpUaGVzZSB3aWxsIGJlIHVzZWQgaW4gZm9sbG93LW9uIGNvbW1pdHMuCi0tLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgIHwgNDQgKysrKysrKysrKysrKysrKysrKysr KysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgfCA0NSArKysrKysr KysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAg ICAgfCAgMyArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaCAgICAgIHwgIDIg KysKIDQgZmlsZXMgY2hhbmdlZCwgOTQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMKaW5kZXggZGM0MDlmZDNhNjAuLjE1ZGMzZDg4ODQzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwpAQCAtNzg2OCw2ICs3ODY4LDUwIEBAIGhlYXBfcGFnZV9zZXRfdm1fYW5kX2xvZyhS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBCdWZmZXIgaGVhcF9idWYsCiAJCQkJ CQkJIEludmFsaWRYTG9nUmVjUHRyLCB2bWJ1ZiwgY3V0b2ZmX3hpZCwgdm1mbGFncywgc2V0X2hl YXBfbHNuKTsKIH0KIAorLyoKKyAqIEVuc3VyZSB0aGUgcHJvdmlkZWQgaGVhcCBwYWdlIGlzIG1h cmtlZCBQRF9BTExfVklTSUJMRSBhbmQgdGhlbiBzZXQgdGhlCisgKiBwcm92aWRlZCB2bWZsYWdz IGluIHRoZSBwcm92aWRlZCB2bWJ1Zi4KKyAqCisgKiBCb3RoIHRoZSBoZWFwIHBhZ2UgYW5kIFZN IHBhZ2Ugc2hvdWxkIGJlIHBpbm5lZCBhbmQgZXhjbHVzaXZlIGxvY2tlZC4KKyAqIFlvdSBtdXN0 IHBhc3MgYSBWTSBidWZmZXIgY29udGFpbmluZyB0aGUgY29ycmVjdCBwYWdlIG9mIHRoZSBtYXAK KyAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHBhc3NlZCBpbiBoZWFwIGJsb2NrLgorICoKKyAqIFRo aXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIGEgY3JpdGljYWwgc2VjdGlvbiB0aGF0IGFsc28g ZW1pdHMgV0FMIChhcworICogbmVlZGVkKSBmb3IgYm90aCBoZWFwIHBhZ2UgY2hhbmdlcyBhbmQg Vk0gcGFnZSBjaGFuZ2VzLgorICovCit1aW50OAoraGVhcF9wYWdlX3NldF92bShSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBCdWZmZXIgaGVhcF9idWYsCisJCQkJIEJ1ZmZlciB2 bWJ1ZiwgdWludDggdm1mbGFncykKK3sKKwlQYWdlCQloZWFwX3BhZ2UgPSBCdWZmZXJHZXRQYWdl KGhlYXBfYnVmKTsKKworCUFzc2VydChCdWZmZXJJc1ZhbGlkKGhlYXBfYnVmKSk7CisJQXNzZXJ0 KENyaXRTZWN0aW9uQ291bnQgPiAwKTsKKworCS8qIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgcmln aHQgaGVhcCBwYWdlIHBpbm5lZCAqLworCWlmIChCdWZmZXJHZXRCbG9ja051bWJlcihoZWFwX2J1 ZikgIT0gaGVhcF9ibGspCisJCWVsb2coRVJST1IsICJ3cm9uZyBoZWFwIGJ1ZmZlciBwYXNzZWQg dG8gaGVhcF9wYWdlX3NldF92bSIpOworCisJLyoKKwkgKiBXZSBtdXN0IG5ldmVyIGVuZCB1cCB3 aXRoIHRoZSBWTSBiaXQgc2V0IGFuZCB0aGUgcGFnZS1sZXZlbAorCSAqIFBEX0FMTF9WSVNJQkxF IGJpdCBjbGVhci4gSWYgdGhhdCB3ZXJlIHRvIG9jY3VyLCBhIHN1YnNlcXVlbnQgcGFnZQorCSAq IG1vZGlmaWNhdGlvbiB3b3VsZCBmYWlsIHRvIGNsZWFyIHRoZSBWTSBiaXQuCisJICoKKwkgKiBQ cmlvciB0byBQb3N0Z3JlcyAxOSwgaXQgd2FzIHBvc3NpYmxlIGZvciB0aGUgcGFnZS1sZXZlbCBi aXQgdG8gYmUgc2V0CisJICogYW5kIHRoZSBWTSBiaXQgdG8gYmUgY2xlYXIuIFRoaXMgY291bGQg aGFwcGVuIGlmIHdlIGNyYXNoZWQgYWZ0ZXIKKwkgKiBzZXR0aW5nIFBEX0FMTF9WSVNJQkxFIGJ1 dCBiZWZvcmUgc2V0dGluZyBiaXRzIGluIHRoZSBWTS4gU2luY2UKKwkgKiBQb3N0Z3JlcyAxOSwg c2luY2UgaGVhcCBwYWdlIG1vZGlmaWNhdGlvbnMgYXJlIGRvbmUgaW4gdGhlIHNhbWUKKwkgKiBj cml0aWNhbCBzZWN0aW9uIGFzIHNldHRpbmcgdGhlIFZNIGJpdHMsIHRoYXQgc2hvdWxkIG5vdCBs b25nZXIgaGFwcGVuLgorCSAqLworCWlmICghUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQor CXsKKwkJUGFnZVNldEFsbFZpc2libGUoaGVhcF9wYWdlKTsKKwkJTWFya0J1ZmZlckRpcnR5KGhl YXBfYnVmKTsKKwl9CisKKwlyZXR1cm4gdmlzaWJpbGl0eW1hcF9zZXRfdm1ieXRlKHJlbCwgaGVh cF9ibGssIHZtYnVmLCB2bWZsYWdzKTsKK30KKwogLyoKICAqIGhlYXBfdHVwbGVfc2hvdWxkX2Zy ZWV6ZQogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHlt YXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwppbmRleCA0NTcy MTM5OTEyMi4uOWYyN2FjZTBlMWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3Zpc2liaWxpdHltYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5 bWFwLmMKQEAgLTMxNyw2ICszMTcsNTEgQEAgdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVs LCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKIAlyZXR1cm4gc3RhdHVzOwog fQogCisvKgorICogU2V0IGZsYWdzIGluIHRoZSBWTSBibG9jayBjb250YWluZWQgaW4gdGhlIHBh c3NlZCBpbiB2bUJ1Zi4KKyAqIENhbGxlciBtdXN0IGhhdmUgcGlubmVkIGFuZCBleGNsdXNpdmUg bG9ja2VkIHRoZSBjb3JyZWN0IGJsb2NrIG9mIHRoZSBWTSBpbgorICogdm1CdWYuCisgKiBDYWxs ZXIgaXMgcmVzcG9uc2libGUgZm9yIFdBTCBsb2dnaW5nIHRoZSBjaGFuZ2VzIHRvIHRoZSBWTSBi dWZmZXIgYW5kIGZvcgorICogbWFraW5nIGFueSBjaGFuZ2VzIG5lZWRlZCB0byB0aGUgYXNzb2Np YXRlZCBoZWFwIHBhZ2UuCisgKi8KK3VpbnQ4Cit2aXNpYmlsaXR5bWFwX3NldF92bWJ5dGUoUmVs YXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAorCQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWlu dDggZmxhZ3MpCit7CisJQmxvY2tOdW1iZXIgbWFwQmxvY2sgPSBIRUFQQkxLX1RPX01BUEJMT0NL KGhlYXBCbGspOworCXVpbnQzMgkJbWFwQnl0ZSA9IEhFQVBCTEtfVE9fTUFQQllURShoZWFwQmxr KTsKKwl1aW50OAkJbWFwT2Zmc2V0ID0gSEVBUEJMS19UT19PRkZTRVQoaGVhcEJsayk7CisJUGFn ZQkJcGFnZTsKKwl1aW50OAkgICAqbWFwOworCXVpbnQ4CQlzdGF0dXM7CisKKyNpZmRlZiBUUkFD RV9WSVNJQklMSVRZTUFQCisJZWxvZyhERUJVRzEsICJ2bV9zZXQgJXMgJWQiLCBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwQmxrKTsKKyNlbmRpZgorCisJLyogRmxhZ3Mgc2hvdWxk IGJlIHZhbGlkLiBBbHNvIG5ldmVyIGNsZWFyIGJpdHMgd2l0aCB0aGlzIGZ1bmN0aW9uICovCisJ QXNzZXJ0KChmbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgPT0gZmxhZ3MpOworCisJ LyogTXVzdCBuZXZlciBzZXQgYWxsX2Zyb3plbiBiaXQgd2l0aG91dCBhbHNvIHNldHRpbmcgYWxs X3Zpc2libGUgYml0ICovCisJQXNzZXJ0KGZsYWdzICE9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF Tik7CisKKwkvKiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IFZNIHBhZ2UgcGlubmVkICov CisJaWYgKCFCdWZmZXJJc1ZhbGlkKHZtQnVmKSB8fCBCdWZmZXJHZXRCbG9ja051bWJlcih2bUJ1 ZikgIT0gbWFwQmxvY2spCisJCWVsb2coRVJST1IsICJ3cm9uZyBWTSBidWZmZXIgcGFzc2VkIHRv IHZpc2liaWxpdHltYXBfc2V0Iik7CisKKwlwYWdlID0gQnVmZmVyR2V0UGFnZSh2bUJ1Zik7CisJ bWFwID0gKHVpbnQ4ICopIFBhZ2VHZXRDb250ZW50cyhwYWdlKTsKKworCXN0YXR1cyA9IChtYXBb bWFwQnl0ZV0gPj4gbWFwT2Zmc2V0KSAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUzsKKwlpZiAo ZmxhZ3MgIT0gc3RhdHVzKQorCXsKKwkJbWFwW21hcEJ5dGVdIHw9IChmbGFncyA8PCBtYXBPZmZz ZXQpOworCQlNYXJrQnVmZmVyRGlydHkodm1CdWYpOworCX0KKworCXJldHVybiBzdGF0dXM7Cit9 CisKIC8qCiAgKgl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMgLSBnZXQgc3RhdHVzIG9mIGJpdHMK ICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggOTM3NTI5NjA2MmYuLjUxMjdmZGI5Yzc3IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oCkBAIC0zNjAsNiArMzYwLDkgQEAgZXh0ZXJuIGJvb2wgaGVhcF90dXBsZV9zaG91 bGRfZnJlZXplKEhlYXBUdXBsZUhlYWRlciB0dXBsZSwKIAkJCQkJCQkJCSBUcmFuc2FjdGlvbklk ICpOb0ZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQsCiAJCQkJCQkJCQkgTXVsdGlYYWN0SWQgKk5vRnJl ZXplUGFnZVJlbG1pbk14aWQpOwogZXh0ZXJuIGJvb2wgaGVhcF90dXBsZV9uZWVkc19ldmVudHVh bF9mcmVlemUoSGVhcFR1cGxlSGVhZGVyIHR1cGxlKTsKKworZXh0ZXJuIHVpbnQ4IGhlYXBfcGFn ZV9zZXRfdm0oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwX2JsaywgQnVmZmVyIGhlYXBf YnVmLAorCQkJCQkJCSAgQnVmZmVyIHZtYnVmLCB1aW50OCB2bWZsYWdzKTsKIGV4dGVybiB1aW50 OCBoZWFwX3BhZ2Vfc2V0X3ZtX2FuZF9sb2coUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFw X2JsaywgQnVmZmVyIGhlYXBfYnVmLAogCQkJCQkJCQkJICBCdWZmZXIgdm1idWYsIFRyYW5zYWN0 aW9uSWQgY3V0b2ZmX3hpZCwKIAkJCQkJCQkJCSAgdWludDggdm1mbGFncyk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3Zpc2liaWxpdHltYXAuaAppbmRleCA0ZmE0ZjgzNzUzNS4uNWQwYTk0MTdjMjUgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3Zpc2liaWxpdHltYXAuaApAQCAtMzcsNiArMzcsOCBAQCBleHRlcm4gdWludDggdmlz aWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLAogCQkJCQkJCSAgIEJ1ZmZlciB2bUJ1ZiwKIAkJ CQkJCQkgICBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCiAJCQkJCQkJICAgdWludDggZmxhZ3Ms IGJvb2wgc2V0X2hlYXBfbHNuKTsKK2V4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX3NldF92bWJ5 dGUoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAorCQkJCQkJCQkJICBCdWZmZXIg dm1CdWYsIHVpbnQ4IGZsYWdzKTsKIGV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX2dldF9zdGF0 dXMoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgKnZtYnVmKTsKIGV4 dGVybiB2b2lkIHZpc2liaWxpdHltYXBfY291bnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciAq YWxsX3Zpc2libGUsIEJsb2NrTnVtYmVyICphbGxfZnJvemVuKTsKIGV4dGVybiBCbG9ja051bWJl ciB2aXNpYmlsaXR5bWFwX3ByZXBhcmVfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLAotLSAKMi4zNC4x Cgo= --000000000000459e560638430326 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0001-Remove-unused-check-in-heap_xlog_insert.patch" Content-Disposition: attachment; filename="v1-0001-Remove-unused-check-in-heap_xlog_insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc9jjx6j0 RnJvbSA1OTNkMzM4OTZkY2I2MThmODA2YjkxMWU4MGZkNDQ4ZmRhY2JiYTBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDEyIEp1biAyMDI1IDE1OjM4OjM3IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MSAwMS8xNF0gUmVtb3ZlIHVudXNlZCBjaGVjayBpbiBoZWFwX3hsb2dfaW5zZXJ0KCkK CjhlMDNlYjkyZTlhZDU0ZTIgcmV2ZXJ0ZWQgdGhlIGNvbW1pdCAzOWI2NmE5MWJkIHdoaWNoIGFs bG93ZWQgZnJlZXppbmcKaW4gdGhlIGhlYXBfaW5zZXJ0KCkgY29kZSBwYXRoIGJ1dCBkaWQgbm90 IHJlbW92ZSB0aGUgY29ycmVzcG9uZGluZwpjaGVjayBpbiBoZWFwX3hsb2dfaW5zZXJ0KCkuIFRo aXMgY29kZSBpcyBleHRyYW5lb3VzIGJ1dCBub3QgaGFybWZ1bC4KSG93ZXZlciwgY2xlYW5pbmcg aXQgdXAgbWFrZXMgaXQgdmVyeSBjbGVhciB0aGF0LCBhcyBvZiBub3csIHdlIGRvIG5vdApzdXBw b3J0IGFueSBmcmVlemluZyBvZiBwYWdlcyBpbiB0aGUgaGVhcF9pbnNlcnQoKSBwYXRoLgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgfCA1ICsrLS0tCiAxIGZpbGUg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IDMwZjRjMmQzYzY3Li5mYTk0ZTEwNGYxYyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC01MDgsOSArNTA4LDggQEAgaGVhcF94 bG9nX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJaWYgKHhscmVjLT5mbGFncyAm IFhMSF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKIAkJCVBhZ2VDbGVhckFsbFZpc2libGUo cGFnZSk7CiAKLQkJLyogWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCBpbXBsaWVzIHRoYXQgYWxs IHR1cGxlcyBhcmUgdmlzaWJsZSAqLwotCQlpZiAoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VSVF9B TExfRlJPWkVOX1NFVCkKLQkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCQkvKiBUaGlzIHNo b3VsZCBub3QgaGFwcGVuIGluIHRoZSBoZWFwX2luc2VydCgpIGNvZGUgcGF0aCAqLworCQlBc3Nl cnQoISh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9GUk9aRU5fU0VUKSk7CiAKIAkJTWFy a0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAJfQotLSAKMi4zNC4xCgo= --000000000000459e560638430326 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0003-Introduce-heap-specific-wrapper-for-visibilitymap.patch" Content-Disposition: attachment; filename="v1-0003-Introduce-heap-specific-wrapper-for-visibilitymap.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc9jjx6v2 RnJvbSA5MDRhMzFiYjhmNTE5ZjVhOWU0YjMwZDkwMTBlZGY1MDZjZGRhZDFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE3IEp1biAyMDI1IDE3OjA2OjQ1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MSAwMy8xNF0gSW50cm9kdWNlIGhlYXAtc3BlY2lmaWMgd3JhcHBlciBmb3IKIHZpc2li aWxpdHltYXBfc2V0KCkKCnZpc2liaWxpdHltYXBfc2V0KCksIHdoaWNoIHNldHMgYml0cyBpbiB0 aGUgdmlzaWJpbGl0eSBtYXAgY29ycmVzcG9uZGluZwp0byB0aGUgaGVhcCBibG9jayBvZiB0aGUg dGFibGUgcGFzc2VkIGluLCBhcmd1YWJseSBjb250YWlucyBzb21lCmxheWVyaW5nIHZpb2xhdGlv bnMuCgpGb3IgZXhhbXBsZSwgaXQgc2V0cyB0aGUgaGVhcCBwYWdlJ3MgTFNOIHdoZW4gY2hlY2tz dW1zL3dhbF9sb2dfaGludHMKYXJlIGVuYWJsZWQuIEhvd2V2ZXIsIHRoZSBjYWxsZXIgbWF5IG5v dCBuZWVkIHRvIHNldCBQRF9BTExfVklTSUJMRQood2hlbiBpdCBpcyBhbHJlYWR5IHNldCkgYW5k IHRodXMgbWF5IG5vdCBoYXZlIG1hcmtlZCB0aGUgYnVmZmVyIGRpcnR5Lgp2aXNpYmlsaXR5bWFw X3NldCgpIHdpbGwgc3RpbGwgc2V0IHRoZSBwYWdlIExTTiBpbiB0aGlzIGNhc2UsIGV2ZW4gd2hl bgppdCB3b3VsZCBoYXZlIGJlZW4gY29ycmVjdCBmb3IgdGhlIGNhbGxlciB0byAqbm90KiBtYXJr IHRoZSBidWZmZXIKZGlydHkuCgpBbHNvLCBldmVyeSBjYWxsZXIgdGhhdCBuZWVkcyB0byBoYXMg dG8gcmVtZW1iZXIgdG8gc2V0IFBEX0FMTF9WSVNJQkxFCmFuZCBtYXJrIHRoZSBidWZmZXIgZGly dHkuIFRoaXMgY29tbWl0IGludHJvZHVjZXMgYSB3cmFwcGVyIHRoYXQgZG9lcwp0aGlzIGFuZCBh IGZsYWcgdG8gdmlzaWJpbGl0eW1hcF9zZXQoKSBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRo ZQpoZWFwIHBhZ2UgTFNOIHNob3VsZCBiZSBzZXQuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtLmMgICAgICAgIHwgNjIgKysrKysrKysrKysrKysrKysrLS0tLS0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICB8IDYwICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIHwgMTkgKysrKy0tLS0KIHNy Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICB8ICAzICsrCiBzcmMvaW5jbHVk ZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oICAgICAgfCAgMiArLQogNiBmaWxlcyBjaGFuZ2VkLCA3 MyBpbnNlcnRpb25zKCspLCA3NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5j CmluZGV4IDBkY2Q2ZWU4MTdlLi5kYzQwOWZkM2E2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMKQEAgLTI1MDUsOCArMjUwNSw2IEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0 aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1cGxlcywKIAkJCQkJCQkJQnVmZmVy R2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwKIAkJCQkJCQkJdm1idWZmZXIsIFZJU0lCSUxJVFlNQVBf VkFMSURfQklUUyk7CiAJCX0KLQkJZWxzZSBpZiAoYWxsX2Zyb3plbl9zZXQpCi0JCQlQYWdlU2V0 QWxsVmlzaWJsZShwYWdlKTsKIAogCQkvKgogCQkgKiBYWFggU2hvdWxkIHdlIHNldCBQYWdlU2V0 UHJ1bmFibGUgb24gdGhpcyBwYWdlID8gU2VlIGhlYXBfaW5zZXJ0KCkKQEAgLTI2MzIsMjMgKzI2 MzAsMTYgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVT bG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCiAJCS8qCiAJCSAqIElmIHdlJ3ZlIGZyb3plbiBl dmVyeXRoaW5nIG9uIHRoZSBwYWdlLCB1cGRhdGUgdGhlIHZpc2liaWxpdHltYXAuCi0JCSAqIFdl J3JlIGFscmVhZHkgaG9sZGluZyBwaW4gb24gdGhlIHZtYnVmZmVyLgorCQkgKiBXZSdyZSBhbHJl YWR5IGhvbGRpbmcgcGluIG9uIHRoZSB2bWJ1ZmZlci4gSXQncyBmaW5lIHRvIHVzZQorCQkgKiBJ bnZhbGlkVHJhbnNhY3Rpb25JZCBoZXJlIC0gdGhpcyBpcyBvbmx5IHVzZWQgd2hlbgorCQkgKiBI RUFQX0lOU0VSVF9GUk9aRU4gaXMgc3BlY2lmaWVkLCB3aGljaCBpbnRlbnRpb25hbGx5IHZpb2xh dGVzCisJCSAqIHZpc2liaWxpdHkgcnVsZXMuCiAJCSAqLwogCQlpZiAoYWxsX2Zyb3plbl9zZXQp Ci0JCXsKLQkJCUFzc2VydChQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKTsKLQkJCUFzc2VydCh2aXNp YmlsaXR5bWFwX3Bpbl9vayhCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLCB2bWJ1ZmZlcikp OwotCi0JCQkvKgotCQkJICogSXQncyBmaW5lIHRvIHVzZSBJbnZhbGlkVHJhbnNhY3Rpb25JZCBo ZXJlIC0gdGhpcyBpcyBvbmx5IHVzZWQKLQkJCSAqIHdoZW4gSEVBUF9JTlNFUlRfRlJPWkVOIGlz IHNwZWNpZmllZCwgd2hpY2ggaW50ZW50aW9uYWxseQotCQkJICogdmlvbGF0ZXMgdmlzaWJpbGl0 eSBydWxlcy4KLQkJCSAqLwotCQkJdmlzaWJpbGl0eW1hcF9zZXQocmVsYXRpb24sIEJ1ZmZlckdl dEJsb2NrTnVtYmVyKGJ1ZmZlciksIGJ1ZmZlciwKLQkJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRy LCB2bWJ1ZmZlciwKLQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJCQkJCSAgVklT SUJJTElUWU1BUF9BTExfVklTSUJMRSB8IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7Ci0JCX0K KwkJCWhlYXBfcGFnZV9zZXRfdm1fYW5kX2xvZyhyZWxhdGlvbiwgQnVmZmVyR2V0QmxvY2tOdW1i ZXIoYnVmZmVyKSwgYnVmZmVyLAorCQkJCQkJCQkJIHZtYnVmZmVyLAorCQkJCQkJCQkJIEludmFs aWRUcmFuc2FjdGlvbklkLAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfCBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwogCiAJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVy KTsKIAkJbmRvbmUgKz0gbnRoaXNwYWdlOwpAQCAtNzg0MCw2ICs3ODMxLDQzIEBAIGhlYXBfdHVw bGVfbmVlZHNfZXZlbnR1YWxfZnJlZXplKEhlYXBUdXBsZUhlYWRlciB0dXBsZSkKIAlyZXR1cm4g ZmFsc2U7CiB9CiAKKy8qCisgKiBNYWtlIHRoZSBoZWFwIGFuZCBWTSBwYWdlIGNoYW5nZXMgbmVl ZGVkIHRvIHNldCBhIHBhZ2UgYWxsLXZpc2libGUuCisgKiBEbyBub3QgY2FsbCBpbiByZWNvdmVy eS4KKyAqLwordWludDgKK2hlYXBfcGFnZV9zZXRfdm1fYW5kX2xvZyhSZWxhdGlvbiByZWwsIEJs b2NrTnVtYmVyIGhlYXBfYmxrLCBCdWZmZXIgaGVhcF9idWYsCisJCQkJCQkgQnVmZmVyIHZtYnVm LCBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCisJCQkJCQkgdWludDggdm1mbGFncykKK3sKKwlQ YWdlCQloZWFwX3BhZ2UgPSBCdWZmZXJHZXRQYWdlKGhlYXBfYnVmKTsKKwlib29sCQlzZXRfaGVh cF9sc24gPSBmYWxzZTsKKworCUFzc2VydChCdWZmZXJJc1ZhbGlkKGhlYXBfYnVmKSk7CisKKwkv KiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IGhlYXAgcGFnZSBwaW5uZWQsIGlmIHByZXNl bnQgKi8KKwlpZiAoQnVmZmVyR2V0QmxvY2tOdW1iZXIoaGVhcF9idWYpICE9IGhlYXBfYmxrKQor CQllbG9nKEVSUk9SLCAid3JvbmcgaGVhcCBidWZmZXIgcGFzc2VkIHRvIGhlYXBfcGFnZV9zZXRf dm1fYW5kX2xvZyIpOworCisJLyoKKwkgKiBXZSBtdXN0IG5ldmVyIGVuZCB1cCB3aXRoIHRoZSBW TSBiaXQgc2V0IGFuZCB0aGUgcGFnZS1sZXZlbAorCSAqIFBEX0FMTF9WSVNJQkxFIGJpdCBjbGVh ci4gSWYgdGhhdCB3ZXJlIHRvIG9jY3VyLCBhIHN1YnNlcXVlbnQgcGFnZQorCSAqIG1vZGlmaWNh dGlvbiB3b3VsZCBmYWlsIHRvIGNsZWFyIHRoZSBWTSBiaXQuIFRob3VnaCBpdCBpcyBwb3NzaWJs ZSBmb3IKKwkgKiB0aGUgcGFnZS1sZXZlbCBiaXQgdG8gYmUgc2V0IGFuZCB0aGUgVk0gYml0IHRv IGJlIGNsZWFyIGlmIGNoZWNrc3VtcworCSAqIGFuZCB3YWxfbG9nX2hpbnRzIGFyZSBub3QgZW5h YmxlZC4KKwkgKi8KKwlpZiAoIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSkKKwl7CisJCVBh Z2VTZXRBbGxWaXNpYmxlKGhlYXBfcGFnZSk7CisJCU1hcmtCdWZmZXJEaXJ0eShoZWFwX2J1Zik7 CisJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCisJCQlzZXRfaGVhcF9sc24gPSB0cnVlOwor CX0KKworCXJldHVybiB2aXNpYmlsaXR5bWFwX3NldChyZWwsIGhlYXBfYmxrLCBoZWFwX2J1ZiwK KwkJCQkJCQkgSW52YWxpZFhMb2dSZWNQdHIsIHZtYnVmLCBjdXRvZmZfeGlkLCB2bWZsYWdzLCBz ZXRfaGVhcF9sc24pOworfQorCiAvKgogICogaGVhcF90dXBsZV9zaG91bGRfZnJlZXplCiAgKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKaW5kZXggZmE5NGUxMDRmMWMuLmNmZDRm YzMzMjdkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKQEAgLTI5OCw3ICsy OTgsNyBAQCBoZWFwX3hsb2dfdmlzaWJsZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJdmlz aWJpbGl0eW1hcF9waW4ocmVsbiwgYmxrbm8sICZ2bWJ1ZmZlcik7CiAKIAkJdmlzaWJpbGl0eW1h cF9zZXQocmVsbiwgYmxrbm8sIEludmFsaWRCdWZmZXIsIGxzbiwgdm1idWZmZXIsCi0JCQkJCQkg IHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgdm1iaXRzKTsKKwkJCQkJCSAgeGxyZWMt PnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLCB2bWJpdHMsIGZhbHNlKTsKIAogCQlSZWxlYXNlQnVm ZmVyKHZtYnVmZmVyKTsKIAkJRnJlZUZha2VSZWxjYWNoZUVudHJ5KHJlbG4pOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGM4ZGEyZjgzNWM0Li41ZTY2MjkzNmRkNyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTg5MiwxMiArMTg5MiwxMCBAQCBs YXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxv Y2tOdW1iZXIgYmxrbm8sCiAJCQkJUGFnZUdldExTTihwYWdlKSA9PSBJbnZhbGlkWExvZ1JlY1B0 cikKIAkJCQlsb2dfbmV3cGFnZV9idWZmZXIoYnVmLCB0cnVlKTsKIAotCQkJUGFnZVNldEFsbFZp c2libGUocGFnZSk7Ci0JCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5y ZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkJ CQkJICAgdm1idWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJCQkJCQkJCSAgIFZJU0lC SUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJCSAgIFZJU0lCSUxJVFlNQVBfQUxMX0ZS T1pFTik7CisJCQlvbGRfdm1iaXRzID0gaGVhcF9wYWdlX3NldF92bV9hbmRfbG9nKHZhY3JlbC0+ cmVsLCBibGtubywgYnVmLAorCQkJCQkJCQkJCQkJICB2bWJ1ZmZlciwgSW52YWxpZFRyYW5zYWN0 aW9uSWQsCisJCQkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJ CQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwogCQkJRU5EX0NSSVRfU0VDVElPTigp OwogCiAJCQkvKiBWTSBiaXRzIGNhbm5vdCBoYXZlIGJlZW4gc2V0IGlmIFBEX0FMTF9WSVNJQkxF IHdhcyBjbGVhciAqLwpAQCAtMjA3NCwyNSArMjA3Miw5IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJl bFN0YXRlICp2YWNyZWwsCiAJCQlmbGFncyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47CiAJ CX0KIAotCQkvKgotCQkgKiBJdCBzaG91bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlz aWJpbGl0eSBtYXAgcGFnZSBpcyBzZXQKLQkJICogd2hpbGUgdGhlIHBhZ2UtbGV2ZWwgYml0IGlz IGNsZWFyLCBidXQgdGhlIHJldmVyc2UgaXMgYWxsb3dlZCAoaWYKLQkJICogY2hlY2tzdW1zIGFy ZSBub3QgZW5hYmxlZCkuICBSZWdhcmRsZXNzLCBzZXQgYm90aCBiaXRzIHNvIHRoYXQgd2UKLQkJ ICogZ2V0IGJhY2sgaW4gc3luYy4KLQkJICoKLQkJICogTkI6IElmIHRoZSBoZWFwIHBhZ2UgaXMg YWxsLXZpc2libGUgYnV0IHRoZSBWTSBiaXQgaXMgbm90IHNldCwgd2UKLQkJICogZG9uJ3QgbmVl ZCB0byBkaXJ0eSB0aGUgaGVhcCBwYWdlLiAgSG93ZXZlciwgaWYgY2hlY2tzdW1zIGFyZQotCQkg KiBlbmFibGVkLCB3ZSBkbyBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBoZWFwIHBhZ2UgaXMg ZGlydGllZAotCQkgKiBiZWZvcmUgcGFzc2luZyBpdCB0byB2aXNpYmlsaXR5bWFwX3NldCgpLCBi ZWNhdXNlIGl0IG1heSBiZSBsb2dnZWQuCi0JCSAqIEdpdmVuIHRoYXQgdGhpcyBzaXR1YXRpb24g c2hvdWxkIG9ubHkgaGFwcGVuIGluIHJhcmUgY2FzZXMgYWZ0ZXIgYQotCQkgKiBjcmFzaCwgaXQg aXMgbm90IHdvcnRoIG9wdGltaXppbmcuCi0JCSAqLwotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdl KTsKLQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7Ci0JCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFw X3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkJCSAgIEludmFsaWRYTG9nUmVj UHRyLAotCQkJCQkJCQkJICAgdm1idWZmZXIsIHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbiwK LQkJCQkJCQkJCSAgIGZsYWdzKTsKKwkJb2xkX3ZtYml0cyA9IGhlYXBfcGFnZV9zZXRfdm1fYW5k X2xvZyh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKKwkJCQkJCQkJCQkJICB2bWJ1ZmZlciwgcHJl c3VsdC52bV9jb25mbGljdF9ob3Jpem9uLAorCQkJCQkJCQkJCQkgIGZsYWdzKTsKIAogCQkvKgog CQkgKiBJZiB0aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgYW5kL29yIGFs bC1mcm96ZW4gaW4gdGhlCkBAIC0yMTY0LDE3ICsyMTQ2LDYgQEAgbGF6eV9zY2FuX3BydW5lKExW UmVsU3RhdGUgKnZhY3JlbCwKIAl7CiAJCXVpbnQ4CQlvbGRfdm1iaXRzOwogCi0JCS8qCi0JCSAq IEF2b2lkIHJlbHlpbmcgb24gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFzIGEgcHJveHkg Zm9yIHRoZQotCQkgKiBwYWdlLWxldmVsIFBEX0FMTF9WSVNJQkxFIGJpdCBiZWluZyBzZXQsIHNp bmNlIGl0IG1pZ2h0IGhhdmUgYmVjb21lCi0JCSAqIHN0YWxlIC0tIGV2ZW4gd2hlbiBhbGxfdmlz aWJsZSBpcyBzZXQKLQkJICovCi0JCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKLQkJewot CQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKLQkJ fQotCiAJCS8qCiAJCSAqIFNldCB0aGUgcGFnZSBhbGwtZnJvemVuIChhbmQgYWxsLXZpc2libGUp IGluIHRoZSBWTS4KIAkJICoKQEAgLTIxODMsMTEgKzIxNTQsMTAgQEAgbGF6eV9zY2FuX3BydW5l KExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJICogd2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVw bGVzIHdlcmUgZnJvemVuLgogCQkgKi8KIAkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChw cmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pKTsKLQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHlt YXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAotCQkJCQkJCQkJICAgSW52YWxpZFhMb2dS ZWNQdHIsCi0JCQkJCQkJCQkgICB2bWJ1ZmZlciwgSW52YWxpZFRyYW5zYWN0aW9uSWQsCi0JCQkJ CQkJCQkgICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJCSAgIFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTik7CisJCW9sZF92bWJpdHMgPSBoZWFwX3BhZ2Vfc2V0X3ZtX2FuZF9s b2codmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCisJCQkJCQkJCQkJCSAgdm1idWZmZXIsIEludmFs aWRUcmFuc2FjdGlvbklkLAorCQkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUg fAorCQkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7CiAKIAkJLyoKIAkJICog VGhlIHBhZ2Ugd2FzIGxpa2VseSBhbHJlYWR5IHNldCBhbGwtdmlzaWJsZSBpbiB0aGUgVk0uIEhv d2V2ZXIsCkBAIC0yOTE5LDExICsyODg5LDkgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVs U3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJCQlmbGFn cyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47CiAJCX0KIAotCQlQYWdlU2V0QWxsVmlzaWJs ZShwYWdlKTsKLQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBi bGtubywgYnVmZmVyLAotCQkJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkJCQkg ICB2bWJ1ZmZlciwgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJCQkJICAgZmxhZ3MpOwor CQlvbGRfdm1iaXRzID0gaGVhcF9wYWdlX3NldF92bV9hbmRfbG9nKHZhY3JlbC0+cmVsLCBibGtu bywgYnVmZmVyLAorCQkJCQkJCQkJCQkgIHZtYnVmZmVyLCB2aXNpYmlsaXR5X2N1dG9mZl94aWQs CisJCQkJCQkJCQkJCSAgZmxhZ3MpOwogCiAJCS8qIFdlIGtub3cgdGhlIHBhZ2Ugc2hvdWxkIG5v dCBoYXZlIGJlZW4gYWxsLXZpc2libGUgKi8KIAkJQXNzZXJ0KChvbGRfdm1iaXRzICYgVklTSUJJ TElUWU1BUF9WQUxJRF9CSVRTKSA9PSAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxp dHltYXAuYwppbmRleCA3NDVhMDRlZjI2ZS4uNDU3MjEzOTkxMjIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKQEAgLTIzMiw5ICsyMzIsMTAgQEAgdmlzaWJpbGl0eW1h cF9waW5fb2soQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIHZtYnVmKQogICogd2hlbiBhIHBh Z2UgdGhhdCBpcyBhbHJlYWR5IGFsbC12aXNpYmxlIGlzIGJlaW5nIG1hcmtlZCBhbGwtZnJvemVu LgogICoKICAqIENhbGxlciBpcyBleHBlY3RlZCB0byBzZXQgdGhlIGhlYXAgcGFnZSdzIFBEX0FM TF9WSVNJQkxFIGJpdCBiZWZvcmUgY2FsbGluZwotICogdGhpcyBmdW5jdGlvbi4gRXhjZXB0IGlu IHJlY292ZXJ5LCBjYWxsZXIgc2hvdWxkIGFsc28gcGFzcyB0aGUgaGVhcAotICogYnVmZmVyLiBX aGVuIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCBhbmQgd2UncmUgbm90IGluIHJlY292ZXJ5LCB3ZSBt dXN0IGFkZAotICogdGhlIGhlYXAgYnVmZmVyIHRvIHRoZSBXQUwgY2hhaW4gdG8gcHJvdGVjdCBp dCBmcm9tIGJlaW5nIHRvcm4uCisgKiB0aGlzIGZ1bmN0aW9uLiBFeGNlcHQgaW4gcmVjb3Zlcnks IGNhbGxlciBzaG91bGQgYWxzbyBwYXNzIHRoZSBoZWFwIGJ1ZmZlci4KKyAqIFdoZW4gY2hlY2tz dW1zIGFyZSBlbmFibGVkIGFuZCB3ZSdyZSBub3QgaW4gcmVjb3ZlcnksIGlmIHRoZSBoZWFwIHBh Z2Ugd2FzCisgKiBtb2RpZmllZCwgd2UgbXVzdCBhZGQgdGhlIGhlYXAgYnVmZmVyIHRvIHRoZSBX QUwgY2hhaW4gdG8gcHJvdGVjdCBpdCBmcm9tCisgKiBiZWluZyB0b3JuLgogICoKICAqIFlvdSBt dXN0IHBhc3MgYSBidWZmZXIgY29udGFpbmluZyB0aGUgY29ycmVjdCBtYXAgcGFnZSB0byB0aGlz IGZ1bmN0aW9uLgogICogQ2FsbCB2aXNpYmlsaXR5bWFwX3BpbiBmaXJzdCB0byBwaW4gdGhlIHJp Z2h0IG9uZS4gVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGRvCkBAIC0yNDUsNyArMjQ2LDcgQEAgdmlz aWJpbGl0eW1hcF9waW5fb2soQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIHZtYnVmKQogdWlu dDgKIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywg QnVmZmVyIGhlYXBCdWYsCiAJCQkJICBYTG9nUmVjUHRyIHJlY3B0ciwgQnVmZmVyIHZtQnVmLCBU cmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCi0JCQkJICB1aW50OCBmbGFncykKKwkJCQkgIHVpbnQ4 IGZsYWdzLCBib29sIHNldF9oZWFwX2xzbikKIHsKIAlCbG9ja051bWJlciBtYXBCbG9jayA9IEhF QVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJsayk7CiAJdWludDMyCQltYXBCeXRlID0gSEVBUEJMS19U T19NQVBCWVRFKGhlYXBCbGspOwpAQCAtMjU5LDE2ICsyNjAsMTIgQEAgdmlzaWJpbGl0eW1hcF9z ZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKICNl bmRpZgogCiAJQXNzZXJ0KEluUmVjb3ZlcnkgfHwgWExvZ1JlY1B0cklzSW52YWxpZChyZWNwdHIp KTsKLQlBc3NlcnQoSW5SZWNvdmVyeSB8fCBQYWdlSXNBbGxWaXNpYmxlKChQYWdlKSBCdWZmZXJH ZXRQYWdlKGhlYXBCdWYpKSk7CisJQXNzZXJ0KCEoSW5SZWNvdmVyeSAmJiBzZXRfaGVhcF9sc24p KTsKIAlBc3NlcnQoKGZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSA9PSBmbGFncyk7 CiAKIAkvKiBNdXN0IG5ldmVyIHNldCBhbGxfZnJvemVuIGJpdCB3aXRob3V0IGFsc28gc2V0dGlu ZyBhbGxfdmlzaWJsZSBiaXQgKi8KIAlBc3NlcnQoZmxhZ3MgIT0gVklTSUJJTElUWU1BUF9BTExf RlJPWkVOKTsKIAotCS8qIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgcmlnaHQgaGVhcCBwYWdlIHBp bm5lZCwgaWYgcHJlc2VudCAqLwotCWlmIChCdWZmZXJJc1ZhbGlkKGhlYXBCdWYpICYmIEJ1ZmZl ckdldEJsb2NrTnVtYmVyKGhlYXBCdWYpICE9IGhlYXBCbGspCi0JCWVsb2coRVJST1IsICJ3cm9u ZyBoZWFwIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQiKTsKLQogCS8qIENoZWNr IHRoYXQgd2UgaGF2ZSB0aGUgcmlnaHQgVk0gcGFnZSBwaW5uZWQgKi8KIAlpZiAoIUJ1ZmZlcklz VmFsaWQodm1CdWYpIHx8IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtQnVmKSAhPSBtYXBCbG9jaykK IAkJZWxvZyhFUlJPUiwgIndyb25nIFZNIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9z ZXQiKTsKQEAgLTMwMSwxMCArMjk4LDEyIEBAIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJl bCwgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCiAJCQkJICogV0FMIHJlY29y ZCBpbnNlcnRlZCBhYm92ZSwgc28gaXQgd291bGQgYmUgaW5jb3JyZWN0IHRvCiAJCQkJICogdXBk YXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCiAJCQkJICovCi0JCQkJaWYgKFhMb2dIaW50Qml0SXNO ZWVkZWQoKSkKKwkJCQlpZiAoc2V0X2hlYXBfbHNuKQogCQkJCXsKIAkJCQkJUGFnZQkJaGVhcFBh Z2UgPSBCdWZmZXJHZXRQYWdlKGhlYXBCdWYpOwogCisJCQkJCUFzc2VydChYTG9nSGludEJpdElz TmVlZGVkKCkpOworCiAJCQkJCVBhZ2VTZXRMU04oaGVhcFBhZ2UsIHJlY3B0cik7CiAJCQkJfQog CQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDNhOTQyNGMxOWM5Li45Mzc1Mjk2MDYyZiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaApAQCAtMzYwLDYgKzM2MCw5IEBAIGV4dGVybiBib29sIGhlYXBfdHVwbGVfc2hv dWxkX2ZyZWV6ZShIZWFwVHVwbGVIZWFkZXIgdHVwbGUsCiAJCQkJCQkJCQkgVHJhbnNhY3Rpb25J ZCAqTm9GcmVlemVQYWdlUmVsZnJvemVuWGlkLAogCQkJCQkJCQkJIE11bHRpWGFjdElkICpOb0Zy ZWV6ZVBhZ2VSZWxtaW5NeGlkKTsKIGV4dGVybiBib29sIGhlYXBfdHVwbGVfbmVlZHNfZXZlbnR1 YWxfZnJlZXplKEhlYXBUdXBsZUhlYWRlciB0dXBsZSk7CitleHRlcm4gdWludDggaGVhcF9wYWdl X3NldF92bV9hbmRfbG9nKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcF9ibGssIEJ1ZmZl ciBoZWFwX2J1ZiwKKwkJCQkJCQkJCSAgQnVmZmVyIHZtYnVmLCBUcmFuc2FjdGlvbklkIGN1dG9m Zl94aWQsCisJCQkJCQkJCQkgIHVpbnQ4IHZtZmxhZ3MpOwogCiBleHRlcm4gdm9pZCBzaW1wbGVf aGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXApOwogZXh0ZXJuIHZv aWQgc2ltcGxlX2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciB0aWQp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKaW5kZXggYmUyMWM2ZGQxYTMuLjRmYTRmODM3 NTM1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKQEAgLTM2LDcgKzM2LDcgQEAgZXh0 ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkgICBYTG9n UmVjUHRyIHJlY3B0ciwKIAkJCQkJCQkgICBCdWZmZXIgdm1CdWYsCiAJCQkJCQkJICAgVHJhbnNh Y3Rpb25JZCBjdXRvZmZfeGlkLAotCQkJCQkJCSAgIHVpbnQ4IGZsYWdzKTsKKwkJCQkJCQkgICB1 aW50OCBmbGFncywgYm9vbCBzZXRfaGVhcF9sc24pOwogZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHlt YXBfZ2V0X3N0YXR1cyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciAq dm1idWYpOwogZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1hcF9jb3VudChSZWxhdGlvbiByZWwsIEJs b2NrTnVtYmVyICphbGxfdmlzaWJsZSwgQmxvY2tOdW1iZXIgKmFsbF9mcm96ZW4pOwogZXh0ZXJu IEJsb2NrTnVtYmVyIHZpc2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZShSZWxhdGlvbiByZWws Ci0tIAoyLjM0LjEKCg== --000000000000459e560638430326 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0005-Eliminate-xl_heap_visible-in-COPY-FREEZE.patch" Content-Disposition: attachment; filename="v1-0005-Eliminate-xl_heap_visible-in-COPY-FREEZE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc9jjx774 RnJvbSBiOGRhY2Y4ZmVkMDBiM2QxZmNmNTllNjFhZGIxNTQxYmE2ODc0NmEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE3IEp1biAyMDI1IDE3OjQwOjI4IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MSAwNS8xNF0gRWxpbWluYXRlIHhsX2hlYXBfdmlzaWJsZSBpbiBDT1BZIEZSRUVaRQoK SW5zdGVhZCBvZiBlbWl0dGluZyBhIHNlcGFyYXRlIFdBTCByZWNvcmQgZm9yIHNldHRpbmcgdGhl IFZNIGJpdHMgaW4KeGxfaGVhcF92aXNpYmxlLCBpbmNsdWRlIHRoZSByZXF1aXJlZCB1cGRhdGUg aW4gdGhlIHhsX2hlYXBfbXVsdGlfaW5zZXJ0CnJlY29yZCBpbnN0ZWFkLgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgIHwgNDIgKysrKysrKysrKysrKysrKystLS0t LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgIHwgMzcgKysrKysr KysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5j IHwgIDUgKysrCiAzIGZpbGVzIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggMTVkYzNkODg4NDMuLjNkOWIxMTRi NGU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMjQ5Myw5ICsyNDkzLDYgQEAgaGVh cF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMs IGludCBudHVwbGVzLAogCQkvKgogCQkgKiBJZiB0aGUgcGFnZSBpcyBhbGwgdmlzaWJsZSwgbmVl ZCB0byBjbGVhciB0aGF0LCB1bmxlc3Mgd2UncmUgb25seQogCQkgKiBnb2luZyB0byBhZGQgZnVy dGhlciBmcm96ZW4gcm93cyB0byBpdC4KLQkJICoKLQkJICogSWYgd2UncmUgb25seSBhZGRpbmcg YWxyZWFkeSBmcm96ZW4gcm93cyB0byBhIHByZXZpb3VzbHkgZW1wdHkKLQkJICogcGFnZSwgbWFy ayBpdCBhcyBhbGwtdmlzaWJsZS4KIAkJICovCiAJCWlmIChQYWdlSXNBbGxWaXNpYmxlKHBhZ2Up ICYmICEob3B0aW9ucyAmIEhFQVBfSU5TRVJUX0ZST1pFTikpCiAJCXsKQEAgLTI1MDYsNiArMjUw MywyMiBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNs b3QgKipzbG90cywgaW50IG50dXBsZXMsCiAJCQkJCQkJCXZtYnVmZmVyLCBWSVNJQklMSVRZTUFQ X1ZBTElEX0JJVFMpOwogCQl9CiAKKwkJLyoKKwkJICogSWYgd2UncmUgb25seSBhZGRpbmcgYWxy ZWFkeSBmcm96ZW4gcm93cyB0byBhIHByZXZpb3VzbHkgZW1wdHkKKwkJICogcGFnZSwgbWFyayBp dCBhcyBhbGwtdmlzaWJsZS4gQW5kIGlmIHdlJ3ZlIGZyb3plbiBldmVyeXRoaW5nIG9uIHRoZQor CQkgKiBwYWdlLCB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLiBXZSdyZSBhbHJlYWR5IGhvbGRp bmcgYSBwaW4gb24gdGhlCisJCSAqIHZtYnVmZmVyLgorCQkgKi8KKwkJZWxzZSBpZiAoYWxsX2Zy b3plbl9zZXQpCisJCXsKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xV U0lWRSk7CisJCQloZWFwX3BhZ2Vfc2V0X3ZtKHJlbGF0aW9uLAorCQkJCQkJCSBCdWZmZXJHZXRC bG9ja051bWJlcihidWZmZXIpLCBidWZmZXIsCisJCQkJCQkJIHZtYnVmZmVyLAorCQkJCQkJCSBW SVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJP WkVOKTsKKwkJfQorCiAJCS8qCiAJCSAqIFhYWCBTaG91bGQgd2Ugc2V0IFBhZ2VTZXRQcnVuYWJs ZSBvbiB0aGlzIHBhZ2UgPyBTZWUgaGVhcF9pbnNlcnQoKQogCQkgKi8KQEAgLTI1NTIsNiArMjU2 NSwxMiBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNs b3QgKipzbG90cywgaW50IG50dXBsZXMsCiAJCQl4bHJlYy0+ZmxhZ3MgPSAwOwogCQkJaWYgKGFs bF92aXNpYmxlX2NsZWFyZWQpCiAJCQkJeGxyZWMtPmZsYWdzID0gWExIX0lOU0VSVF9BTExfVklT SUJMRV9DTEVBUkVEOworCisJCQkvKgorCQkJICogV2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91 dCBpbmNsdWRpbmcgYSBjb25mbGljdCB4aWQgaW4gdGhlCisJCQkgKiBXQUwgcmVjb3JkIGFzIEhF QVBfSU5TRVJUX0ZST1pFTiBpbnRlbnRpb25hbGx5IHZpb2xhdGVzCisJCQkgKiB2aXNpYmlsaXR5 IHJ1bGVzLgorCQkJICovCiAJCQlpZiAoYWxsX2Zyb3plbl9zZXQpCiAJCQkJeGxyZWMtPmZsYWdz ID0gWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVDsKIApAQCAtMjYxNCw3ICsyNjMzLDEwIEBAIGhl YXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3Rz LCBpbnQgbnR1cGxlcywKIAogCQkJWExvZ0JlZ2luSW5zZXJ0KCk7CiAJCQlYTG9nUmVnaXN0ZXJE YXRhKHhscmVjLCB0dXBsZWRhdGEgLSBzY3JhdGNoLmRhdGEpOworCiAJCQlYTG9nUmVnaXN0ZXJC dWZmZXIoMCwgYnVmZmVyLCBSRUdCVUZfU1RBTkRBUkQgfCBidWZmbGFncyk7CisJCQlpZiAoYWxs X2Zyb3plbl9zZXQpCisJCQkJWExvZ1JlZ2lzdGVyQnVmZmVyKDEsIHZtYnVmZmVyLCAwKTsKIAog CQkJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCB0dXBsZWRhdGEsIHRvdGFsZGF0YWxlbik7CiAKQEAg LTI2MjQsMjIgKzI2NDYsMTQgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24s IFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQkJcmVjcHRyID0gWExvZ0lu c2VydChSTV9IRUFQMl9JRCwgaW5mbyk7CiAKIAkJCVBhZ2VTZXRMU04ocGFnZSwgcmVjcHRyKTsK KwkJCWlmIChhbGxfZnJvemVuX3NldCkKKwkJCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uodm1i dWZmZXIpLCByZWNwdHIpOwogCQl9CiAKIAkJRU5EX0NSSVRfU0VDVElPTigpOwogCi0JCS8qCi0J CSAqIElmIHdlJ3ZlIGZyb3plbiBldmVyeXRoaW5nIG9uIHRoZSBwYWdlLCB1cGRhdGUgdGhlIHZp c2liaWxpdHltYXAuCi0JCSAqIFdlJ3JlIGFscmVhZHkgaG9sZGluZyBwaW4gb24gdGhlIHZtYnVm ZmVyLiBJdCdzIGZpbmUgdG8gdXNlCi0JCSAqIEludmFsaWRUcmFuc2FjdGlvbklkIGhlcmUgLSB0 aGlzIGlzIG9ubHkgdXNlZCB3aGVuCi0JCSAqIEhFQVBfSU5TRVJUX0ZST1pFTiBpcyBzcGVjaWZp ZWQsIHdoaWNoIGludGVudGlvbmFsbHkgdmlvbGF0ZXMKLQkJICogdmlzaWJpbGl0eSBydWxlcy4K LQkJICovCiAJCWlmIChhbGxfZnJvemVuX3NldCkKLQkJCWhlYXBfcGFnZV9zZXRfdm1fYW5kX2xv ZyhyZWxhdGlvbiwgQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwgYnVmZmVyLAotCQkJCQkJ CQkJIHZtYnVmZmVyLAotCQkJCQkJCQkJIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJCQkJCQkJ IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfCBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwor CQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIAogCQlVbmxvY2tS ZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CiAJCW5kb25lICs9IG50aGlzcGFnZTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IGNmZDRmYzMzMjdkLi5hMGYzNjczNjIxYSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC01NTIsNiArNTUyLDcgQEAgaGVh cF94bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAlpbnQJCQlpOwog CWJvb2wJCWlzaW5pdCA9IChYTG9nUmVjR2V0SW5mbyhyZWNvcmQpICYgWExPR19IRUFQX0lOSVRf UEFHRSkgIT0gMDsKIAlYTG9nUmVkb0FjdGlvbiBhY3Rpb247CisJQnVmZmVyCQl2bWJ1ZmZlciA9 IEludmFsaWRCdWZmZXI7CiAKIAkvKgogCSAqIEluc2VydGlvbiBkb2Vzbid0IG92ZXJ3cml0ZSBN VkNDIGRhdGEsIHNvIG5vIGNvbmZsaWN0IHByb2Nlc3NpbmcgaXMKQEAgLTU3MiwxMSArNTczLDEx IEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJaWYg KHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKIAl7CiAJCVJl bGF0aW9uCXJlbG4gPSBDcmVhdGVGYWtlUmVsY2FjaGVFbnRyeShybG9jYXRvcik7Ci0JCUJ1ZmZl cgkJdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJCXZpc2liaWxpdHltYXBfcGluKHJlbG4s IGJsa25vLCAmdm1idWZmZXIpOwogCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbG4sIGJsa25vLCB2 bWJ1ZmZlciwgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKIAkJUmVsZWFzZUJ1ZmZlcih2bWJ1 ZmZlcik7CisJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAkJRnJlZUZha2VSZWxjYWNoZUVu dHJ5KHJlbG4pOwogCX0KIApAQCAtNjYzLDYgKzY2NCw0MCBAQCBoZWFwX3hsb2dfbXVsdGlfaW5z ZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCWlmIChCdWZmZXJJc1ZhbGlkKGJ1ZmZlcikp CiAJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKIAorCWJ1ZmZlciA9IEludmFsaWRCdWZm ZXI7CisKKwkvKgorCSAqIE5vdyByZWFkIGFuZCB1cGRhdGUgdGhlIFZNIGJsb2NrLiBFdmVuIGlm IHdlIHNraXBwZWQgdXBkYXRpbmcgdGhlIGhlYXAKKwkgKiBwYWdlIGR1ZSB0byB0aGUgZmlsZSBi ZWluZyBkcm9wcGVkIG9yIHRydW5jYXRlZCBsYXRlciBpbiByZWNvdmVyeSwgaXQncworCSAqIHN0 aWxsIHNhZmUgdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4gIEFueSBXQUwgcmVjb3JkIHRo YXQgY2xlYXJzCisJICogdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBkb2VzIHNvIGJlZm9yZSBjaGVj a2luZyB0aGUgcGFnZSBMU04sIHNvIGFueQorCSAqIGJpdHMgdGhhdCBuZWVkIHRvIGJlIGNsZWFy ZWQgd2lsbCBzdGlsbCBiZSBjbGVhcmVkLgorCSAqCisJICogSXQgaXMgb25seSBva2F5IHRvIHNl dCB0aGUgVk0gYml0cyB3aXRob3V0IGhvbGRpbmcgdGhlIGhlYXAgcGFnZSBsb2NrCisJICogYmVj YXVzZSB3ZSBjYW4gZXhwZWN0IG5vIG90aGVyIHdyaXRlcnMgb2YgdGhpcyBwYWdlLgorCSAqLwor CWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9GUk9aRU5fU0VUICYmCisJCVhMb2dS ZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMSwgUkJNX1pFUk9fT05fRVJST1IsIGZh bHNlLAorCQkJCQkJCQkJICAmdm1idWZmZXIpID09IEJMS19ORUVEU19SRURPKQorCXsKKworCQl1 aW50OAkJb2xkX3ZtYml0cyA9IDA7CisJCVJlbGF0aW9uCXJlbG4gPSBDcmVhdGVGYWtlUmVsY2Fj aGVFbnRyeShybG9jYXRvcik7CisKKwkJdmlzaWJpbGl0eW1hcF9waW4ocmVsbiwgYmxrbm8sICZ2 bWJ1ZmZlcik7CisJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldF92bWJ5dGUocmVsbiwg Ymxrbm8sCisJCQkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkJCSAgVklTSUJJTElUWU1B UF9BTExfVklTSUJMRSB8CisJCQkJCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsK KwkJQXNzZXJ0KChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSA9PSAwKTsK KwkJKHZvaWQpIG9sZF92bWJpdHM7IC8qIFNpbGVuY2UgY29tcGlsZXIgKi8KKwkJUGFnZVNldExT TihCdWZmZXJHZXRQYWdlKHZtYnVmZmVyKSwgbHNuKTsKKwkJRnJlZUZha2VSZWxjYWNoZUVudHJ5 KHJlbG4pOworCX0KKworCWlmIChCdWZmZXJJc1ZhbGlkKHZtYnVmZmVyKSkKKwkJVW5sb2NrUmVs ZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7CisKIAkvKgogCSAqIElmIHRoZSBwYWdlIGlzIHJ1bm5pbmcg bG93IG9uIGZyZWUgc3BhY2UsIHVwZGF0ZSB0aGUgRlNNIGFzIHdlbGwuCiAJICogQXJiaXRyYXJp bHksIG91ciBkZWZpbml0aW9uIG9mICJsb3ciIGlzIGxlc3MgdGhhbiAyMCUuIFdlIGNhbid0IGRv IG11Y2gKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKaW5kZXggODJiNjJjOTVk ZTUuLmI0OGQ3ZGMxZDI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv aGVhcGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwpA QCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9nLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3JtZ3JkZXNjX3V0aWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxp dHltYXBkZWZzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5ZGVmcy5oIgogCiAvKgpAQCAt MzU0LDYgKzM1NSwxMCBAQCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCkKIAkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJudHVwbGVzOiAlZCwgZmxhZ3M6 IDB4JTAyWCIsIHhscmVjLT5udHVwbGVzLAogCQkJCQkJIHhscmVjLT5mbGFncyk7CiAKKwkJaWYg KHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQpCisJCQlhcHBlbmRTdHJp bmdJbmZvKGJ1ZiwgIiwgdm1fZmxhZ3M6IDB4JTAyWCIsCisJCQkJCQkJIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUgfCBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOworCiAJCWlmIChYTG9nUmVj SGFzQmxvY2tEYXRhKHJlY29yZCwgMCkgJiYgIWlzaW5pdCkKIAkJewogCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhidWYsICIsIG9mZnNldHM6Iik7Ci0tIAoyLjM0LjEKCg== --000000000000459e560638430326 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0009-Combine-lazy_scan_prune-VM-corruption-cases.patch" Content-Disposition: attachment; filename="v1-0009-Combine-lazy_scan_prune-VM-corruption-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc9jjx7s8 RnJvbSA0MDMwODgwMDk4OWVkZjE4MjE2MzljZDE4ZTBjMjYzMGY0NDE3YzIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjA0OjAzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MSAwOS8xNF0gQ29tYmluZSBsYXp5X3NjYW5fcHJ1bmUgVk0gY29ycnVwdGlvbiBjYXNl cwoKbGF6eV9zY2FuX3BydW5lKCkgdXBkYXRlcyB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0ZXIgcGhh c2UgSSBvZiBoZWFwCnZhY3V1bWluZy4gSXQgYWxzbyBjaGVja3MgYW5kIGZpeGVzIGNvcnJ1cHRp b24gaW4gdGhlIFZNLiBUaGUgY29ycnVwdGlvbgpjYXNlcyB3aGVyZSBtaXhlZCBpbiB3aXRoIHRo ZSBub3JtYWwgdmlzaWJpbGl0eSBtYXAgdXBkYXRlIGNhc2VzLgoKQ2FyZWZ1bCBzdHVkeSBvZiB0 aGUgb3JkZXJpbmcgb2YgdGhlIGN1cnJlbnQgbG9naWMgcmV2ZWFscyB0aGF0IHRoZQpjb3JydXB0 aW9uIGNhc2VzIGNhbiBiZSByZW9yZGVyZWQgYW5kIGV4dHJhY3RlZCBpbnRvIGEgc2VwYXJhdGUK ZnVuY3Rpb24uIFRoaXMgc2hvdWxkIHJlc3VsdCBpbiBubyBhZGRpdGlvbmFsIG92ZXJoZWFkIHdo ZW4gY29tcGFyZWQgdG8KcHJldmlvdXMgZXhlY3V0aW9uLgoKVGhpcyByZW9yZGVyaW5nIG1ha2Vz IGl0IGNsZWFyIHdoaWNoIGNhc2VzIGFyZSBhYm91dCBjb3JydXB0aW9uIGFuZAp3aGljaCBjYXNl cyBhcmUgbm9ybWFsIFZNIHVwZGF0ZXMuIFNlcGFyYXRpbmcgdGhlbSBhbHNvIG1ha2VzIGl0CnBv c3NpYmxlIHRvIGNvbWJpbmUgdGhlIG5vcm1hbCBjYXNlcyBpbiBhIGZ1dHVyZSBjb21taXQuIFRo aXMgd2lsbCBtYWtlCnRoZSBsb2dpYyBlYXNpZXIgdG8gdW5kZXJzdGFuZCBhbmQgYWxsb3cgZm9y IGZ1cnRoZXIgc2VwYXJhdGlvbiBvZiB0aGUKbG9naWMgdG8gYWxsb3cgdXBkYXRpbmcgdGhlIFZN IGluIHRoZSBzYW1lIHJlY29yZCBhcyBwcnVuaW5nIGFuZApmcmVlemluZyBpbiBwaGFzZSBJLgot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDExNSArKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCA0MSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggYjFmZjQ5 YmVlNmIuLjgzMjhjYWIwOTU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBA IC00MzEsNiArNDMxLDEzIEBAIHN0YXRpYyB2b2lkIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9j ayhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKTsKIHN0YXRpYyBib29sIGxh enlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJ CQkJCQkgICBCbG9ja051bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCQkgICBib29sIHNo YXJlbG9jaywgQnVmZmVyIHZtYnVmZmVyKTsKKworc3RhdGljIGJvb2wgaWRlbnRpZnlfYW5kX2Zp eF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkJCSAgIEJsb2NrTnVt YmVyIGhlYXBfYmxrLAorCQkJCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFnZSBoZWFw X3BhZ2UsCisJCQkJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19rbm93bl9hdiwKKwkJCQkJCQkJCQkg ICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlcik7CiBz dGF0aWMgdm9pZCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVm LAogCQkJCQkJCUJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJCQkJCQkJQnVmZmVyIHZt YnVmZmVyLCBib29sIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwKQEAgLTE5NDAsNiArMTk0 Nyw2NiBAQCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVy IGJ1ZiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogV2hl biB1cGRhdGluZyB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0ZXIgcGhhc2UgSSBoZWFwIHZhY3V1bWlu Zywgd2UgdGFrZSB0aGUKKyAqIG9wcG9ydHVuaXR5IHRvIGlkZW50aWZ5IGFuZCBmaXggYW55IFZN IGNvcnJ1cHRpb24uCisgKgorICogaGVhcF9ibGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxpdHkg c3RhdHVzIG9mIHRoZSBoZWFwIHBhZ2UgY29sbGVjdGVkCisgKiB3aGlsZSBmaW5kaW5nIHRoZSBu ZXh0IHVuc2tpcHBhYmxlIGJsb2NrIGluIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpLgorICov CitzdGF0aWMgYm9vbAoraWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJl bGF0aW9uLAorCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLAorCQkJCQkJCSAgIEJ1ZmZl ciBoZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3BhZ2UsCisJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19r bm93bl9hdiwKKwkJCQkJCQkgICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCSAgIEJ1ZmZl ciB2bWJ1ZmZlcikKK3sKKwkvKgorCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJp bGl0eSBtYXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCisJICogcGFnZS1sZXZlbCBi aXQgaXMgY2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBnb3QKKwkg KiBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNv IHdlIG11c3QgcmVjaGVjaworCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcg dGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KKwkgKi8KKwlpZiAoaGVhcF9ibGtfa25vd25fYXYgJiYg IVBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJgorCQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0 dXMocmVsYXRpb24sIGhlYXBfYmxrLCAmdm1idWZmZXIpICE9IDApCisJeworCQllbG9nKFdBUk5J TkcsICJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFwIGJp dCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspOworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJl bGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9C SVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoKKwkgKiBJdCdzIHBvc3NpYmxlIGZvciB0 aGUgdmFsdWUgcmV0dXJuZWQgYnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlv bklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3JvbmcgZm9yIHVzIHRv IHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKKwkg KiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZl IHhtaW4gdmFsdWUKKwkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25S ZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1l cyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCisJICogc28gaWYg d2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0 aGF0IHdlCisJICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxs eSBhcmUsIGFuZCB0aGUKKwkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCisJICoK KwkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQ RF9BTExfVklTSUJMRSBzZXQsCisJICogaG93ZXZlci4KKwkgKi8KKwlpZiAobmxwZGVhZF9pdGVt cyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQorCXsKKwkJZWxvZyhXQVJOSU5H LCAicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12aXNpYmxl IGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWxhdGlvbiksIGhlYXBfYmxrKTsKKwkJUGFnZUNsZWFyQWxsVmlzaWJsZShoZWFwX3BhZ2Up OworCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIpOworCQl2aXNpYmlsaXR5bWFwX2NsZWFy KHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJ RF9CSVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCisKIC8q IHFzb3J0IGNvbXBhcmF0b3IgZm9yIHNvcnRpbmcgT2Zmc2V0TnVtYmVycyAqLwogc3RhdGljIGlu dAogY21wT2Zmc2V0TnVtYmVycyhjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQpAQCAtMjA4 NCw5ICsyMTUxLDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJLyoK IAkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3JtYXRp b24gZnJvbSB0aGUgVk0gKGFzCiAJICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2so KSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2YXJpYWJs ZXMKKwkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcy4gU3RhcnQgYnkgbG9va2luZyBmb3IgYW55IFZN IGNvcnJ1cHRpb24uCiAJICovCi0JaWYgKCFhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYg cHJlc3VsdC5hbGxfdmlzaWJsZSkKKwlpZiAoaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9u KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLCBwYWdlLAorCQkJCQkJCQkJICAgYWxsX3Zpc2libGVf YWNjb3JkaW5nX3RvX3ZtLCBwcmVzdWx0LmxwZGVhZF9pdGVtcywgdm1idWZmZXIpKQorCXsKKwkJ LyogRG9uJ3QgdXBkYXRlIHRoZSBWTSBpZiB3ZSBqdXN0IGNsZWFyZWQgY29ycnVwdGlvbiBpbiBp dCAqLworCX0KKwllbHNlIGlmICghYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmIHByZXN1 bHQuYWxsX3Zpc2libGUpCiAJewogCQl1aW50OAkJb2xkX3ZtYml0czsKIAkJdWludDgJCWZsYWdz ID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKQEAgLTIxMjIsNDUgKzIxOTQsNiBAQCBsYXp5 X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQl9CiAJfQogCi0JLyoKLQkgKiBBcyBv ZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUg c2V0IGlmIHRoZQotCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQncyBw b3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290Ci0JICogY2xlYXJlZCBhZnRlciBoZWFwX3ZhY19zY2Fu X25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hlY2sKLQkgKiB3aXRoIGJ1 ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNvcnJ1cHQuCi0JICov Ci0JZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmICFQYWdlSXNBbGxWaXNp YmxlKHBhZ2UpICYmCi0JCQkgdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHZhY3JlbC0+cmVsLCBi bGtubywgJnZtYnVmZmVyKSAhPSAwKQotCXsKLQkJZWxvZyhXQVJOSU5HLCAicGFnZSBpcyBub3Qg bWFya2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0 aW9uIFwiJXNcIiBwYWdlICV1IiwKLQkJCSB2YWNyZWwtPnJlbG5hbWUsIGJsa25vKTsKLQkJdmlz aWJpbGl0eW1hcF9jbGVhcih2YWNyZWwtPnJlbCwgYmxrbm8sIHZtYnVmZmVyLAotCQkJCQkJCVZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JfQotCi0JLyoKLQkgKiBJdCdzIHBvc3NpYmxlIGZv ciB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKLQkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2Fj dGlvbklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90Ci0JICogd3JvbmcgZm9yIHVz IHRvIHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUK LQkgKiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBz YWZlIHhtaW4gdmFsdWUKLQkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3RO b25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKLQkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0 aW1lcyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCi0JICogc28g aWYgd2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxl cyB0aGF0IHdlCi0JICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1 YWxseSBhcmUsIGFuZCB0aGUKLQkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCi0J ICoKLQkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0 aCBQRF9BTExfVklTSUJMRSBzZXQsCi0JICogaG93ZXZlci4KLQkgKi8KLQllbHNlIGlmIChwcmVz dWx0LmxwZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKLQl7Ci0JCWVs b2coV0FSTklORywgInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBh bGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkgdmFjcmVsLT5yZWxu YW1lLCBibGtubyk7Ci0JCVBhZ2VDbGVhckFsbFZpc2libGUocGFnZSk7Ci0JCU1hcmtCdWZmZXJE aXJ0eShidWYpOwotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHZhY3JlbC0+cmVsLCBibGtubywgdm1i dWZmZXIsCi0JCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKLQl9Ci0KIAkvKgogCSAq IElmIHRoZSBhbGwtdmlzaWJsZSBwYWdlIGlzIGFsbC1mcm96ZW4gYnV0IG5vdCBtYXJrZWQgYXMg c3VjaCB5ZXQsIG1hcmsKIAkgKiBpdCBhcyBhbGwtZnJvemVuLiAgTm90ZSB0aGF0IGFsbF9mcm96 ZW4gaXMgb25seSB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcwotLSAKMi4zNC4xCgo= --000000000000459e560638430326 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0006-Make-heap_page_is_all_visible-independent-of-LVRe.patch" Content-Disposition: attachment; filename="v1-0006-Make-heap_page_is_all_visible-independent-of-LVRe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc9jjx7d5 RnJvbSA3OTdmNmYwOWNmNzI4N2FmNGI0ZTkyOWU5MDNlMTE1YTc2N2RmMTQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDE1OjQ4OjUxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MSAwNi8xNF0gTWFrZSBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUgaW5kZXBlbmRlbnQg b2YKIExWUmVsU3RhdGUKCkZ1dHVyZSBjb21taXRzIHdpbGwgdXNlIHRoaXMgZnVuY3Rpb24gaW5z aWRlIG9mIHBydW5laGVhcC5jIHdoZXJlIHdlIGRvCm5vdCBoYXZlIGFjY2VzcyB0byB0aGUgTFZS ZWxTdGF0ZS4gV2Ugb25seSBuZWVkIHR3byBwYXJhbWV0ZXJzIGZyb20gdGhlCkxWUmVsU3RhdGUs IHNvIGp1c3QgcGFzcyB0aG9zZSBpbiBleHBsaWNpdGx5LgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYyB8IDQ1ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggNWU2NjI5MzZkZDcuLjBjZjRhNjljNDMxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00NjQsOCArNDY0LDExIEBAIHN0 YXRpYyB2b2lkIGRlYWRfaXRlbXNfYWRkKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIg Ymxrbm8sIE9mZnNldE51bWJlciAqCiAJCQkJCQkgICBpbnQgbnVtX29mZnNldHMpOwogc3RhdGlj IHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQg ZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7Ci1zdGF0aWMgYm9vbCBoZWFw X3BhZ2VfaXNfYWxsX3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAotCQkJ CQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgYm9vbCAqYWxsX2Zy b3plbik7CitzdGF0aWMgYm9vbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVs LCBCdWZmZXIgYnVmLAorCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJ CQkJCSBib29sICphbGxfZnJvemVuLAorCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxp dHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsK IHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWxzdGF0c19hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNy ZWwpOwogc3RhdGljIHZvaWQgdmFjdXVtX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiBzdGF0 aWMgdm9pZCB1cGRhdGVfdmFjdXVtX2Vycm9yX2luZm8oTFZSZWxTdGF0ZSAqdmFjcmVsLApAQCAt MjAxMCw4ICsyMDEzLDkgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAog CQlBc3NlcnQocHJlc3VsdC5scGRlYWRfaXRlbXMgPT0gMCk7CiAKLQkJaWYgKCFoZWFwX3BhZ2Vf aXNfYWxsX3Zpc2libGUodmFjcmVsLCBidWYsCi0JCQkJCQkJCQkgICZkZWJ1Z19jdXRvZmYsICZk ZWJ1Z19hbGxfZnJvemVuKSkKKwkJaWYgKCFoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFjcmVs LT5yZWwsIGJ1ZiwKKwkJCQkJCQkJCSAgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sICZkZWJ1 Z19hbGxfZnJvemVuLAorCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCAmdmFjcmVsLT5vZmZudW0p KQogCQkJQXNzZXJ0KGZhbHNlKTsKIAogCQlBc3NlcnQocHJlc3VsdC5hbGxfZnJvemVuID09IGRl YnVnX2FsbF9mcm96ZW4pOwpAQCAtMjg3Nyw4ICsyODgxLDggQEAgbGF6eV92YWN1dW1faGVhcF9w YWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIs CiAJICogZW1pdHRlZC4KIAkgKi8KIAlBc3NlcnQoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpOwot CWlmIChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFjcmVsLCBidWZmZXIsICZ2aXNpYmlsaXR5 X2N1dG9mZl94aWQsCi0JCQkJCQkJCSAmYWxsX2Zyb3plbikpCisJaWYgKGhlYXBfcGFnZV9pc19h bGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmZmVyLCB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1p biwKKwkJCQkJCQkJICZhbGxfZnJvemVuLCAmdmlzaWJpbGl0eV9jdXRvZmZfeGlkLCAmdmFjcmVs LT5vZmZudW0pKQogCXsKIAkJdWludDgJCW9sZF92bWJpdHM7CiAJCXVpbnQ4CQlmbGFncyA9IFZJ U0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CkBAIC0zNTY4LDkgKzM1NzIsMTYgQEAgZGVhZF9pdGVt c19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAogLyoKICAqIENoZWNrIGlmIGV2ZXJ5IHR1 cGxlIGluIHRoZSBnaXZlbiBwYWdlIGlzIHZpc2libGUgdG8gYWxsIGN1cnJlbnQgYW5kIGZ1dHVy ZQotICogdHJhbnNhY3Rpb25zLiBBbHNvIHJldHVybiB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlk IHdoaWNoIGlzIHRoZSBoaWdoZXN0Ci0gKiB4bWluIGFtb25nc3QgdGhlIHZpc2libGUgdHVwbGVz LiAgU2V0ICphbGxfZnJvemVuIHRvIHRydWUgaWYgZXZlcnkgdHVwbGUKLSAqIG9uIHRoaXMgcGFn ZSBpcyBmcm96ZW4uCisgKiB0cmFuc2FjdGlvbnMuCisgKgorICogT2xkZXN0WG1pbiBpcyB1c2Vk IHRvIGRldGVybWluZSB2aXNpYmlsaXR5LgorICoKKyAqICpsb2dnaW5nX29mZm51bSB3aWxsIGhh dmUgdGhlIE9mZnNldE51bWJlciBvZiB0aGUgY3VycmVudCB0dXBsZSBiZWluZworICogcHJvY2Vz c2VkIGZvciB2YWN1dW0ncyBlcnJvciBjYWxsYmFjayBzeXN0ZW0uCisgKgorICogUmV0dXJuIHRo ZSB2aXNpYmlsaXR5X2N1dG9mZl94aWQgd2hpY2ggaXMgdGhlIGhpZ2hlc3QgeG1pbiBhbW9uZ3N0 IHRoZQorICogdmlzaWJsZSB0dXBsZXMuIFNldHMgKmFsbF9mcm96ZW4gdG8gdHJ1ZSBpZiBldmVy eSB0dXBsZSBvbiB0aGlzIHBhZ2UgaXMKKyAqIGZyb3plbi4KICAqCiAgKiBUaGlzIGlzIGEgc3Ry aXBwZWQgZG93biB2ZXJzaW9uIG9mIGxhenlfc2Nhbl9wcnVuZSgpLiAgSWYgeW91IGNoYW5nZQog ICogYW55dGhpbmcgaGVyZSwgbWFrZSBzdXJlIHRoYXQgZXZlcnl0aGluZyBzdGF5cyBpbiBzeW5j LiAgTm90ZSB0aGF0IGFuCkBAIC0zNTc4LDkgKzM1ODksMTEgQEAgZGVhZF9pdGVtc19jbGVhbnVw KExWUmVsU3RhdGUgKnZhY3JlbCkKICAqIGludHJvZHVjaW5nIG5ldyBzaWRlLWVmZmVjdHMgaGVy ZS4KICAqLwogc3RhdGljIGJvb2wKLWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShMVlJlbFN0YXRl ICp2YWNyZWwsIEJ1ZmZlciBidWYsCitoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24g cmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJ CSBib29sICphbGxfZnJvemVuLAogCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0 b2ZmX3hpZCwKLQkJCQkJCSBib29sICphbGxfZnJvemVuKQorCQkJCQkJIE9mZnNldE51bWJlciAq bG9nZ2luZ19vZmZudW0pCiB7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAlC bG9ja051bWJlciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmKTsKQEAgLTM2MDMs NyArMzYxNiw3IEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShMVlJlbFN0YXRlICp2YWNyZWws IEJ1ZmZlciBidWYsCiAJCSAqIFNldCB0aGUgb2Zmc2V0IG51bWJlciBzbyB0aGF0IHdlIGNhbiBk aXNwbGF5IGl0IGFsb25nIHdpdGggYW55CiAJCSAqIGVycm9yIHRoYXQgb2NjdXJyZWQgd2hpbGUg cHJvY2Vzc2luZyB0aGlzIHR1cGxlLgogCQkgKi8KLQkJdmFjcmVsLT5vZmZudW0gPSBvZmZudW07 CisJCSpsb2dnaW5nX29mZm51bSA9IG9mZm51bTsKIAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChw YWdlLCBvZmZudW0pOwogCiAJCS8qIFVudXNlZCBvciByZWRpcmVjdCBsaW5lIHBvaW50ZXJzIGFy ZSBvZiBubyBpbnRlcmVzdCAqLwpAQCAtMzYyNyw5ICszNjQwLDkgQEAgaGVhcF9wYWdlX2lzX2Fs bF92aXNpYmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAogCQl0dXBsZS50X2Rh dGEgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwogCQl0dXBs ZS50X2xlbiA9IEl0ZW1JZEdldExlbmd0aChpdGVtaWQpOwotCQl0dXBsZS50X3RhYmxlT2lkID0g UmVsYXRpb25HZXRSZWxpZCh2YWNyZWwtPnJlbCk7CisJCXR1cGxlLnRfdGFibGVPaWQgPSBSZWxh dGlvbkdldFJlbGlkKHJlbCk7CiAKLQkJc3dpdGNoIChIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0o JnR1cGxlLCB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwKKwkJc3dpdGNoIChIZWFwVHVwbGVT YXRpc2ZpZXNWYWN1dW0oJnR1cGxlLCBPbGRlc3RYbWluLAogCQkJCQkJCQkJCSBidWYpKQogCQl7 CiAJCQljYXNlIEhFQVBUVVBMRV9MSVZFOgpAQCAtMzY1MCw3ICszNjYzLDcgQEAgaGVhcF9wYWdl X2lzX2FsbF92aXNpYmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJICov CiAJCQkJCXhtaW4gPSBIZWFwVHVwbGVIZWFkZXJHZXRYbWluKHR1cGxlLnRfZGF0YSk7CiAJCQkJ CWlmICghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHhtaW4sCi0JCQkJCQkJCQkJCSAgIHZhY3JlbC0+ Y3V0b2Zmcy5PbGRlc3RYbWluKSkKKwkJCQkJCQkJCQkJICAgT2xkZXN0WG1pbikpCiAJCQkJCXsK IAkJCQkJCWFsbF92aXNpYmxlID0gZmFsc2U7CiAJCQkJCQkqYWxsX2Zyb3plbiA9IGZhbHNlOwpA QCAtMzY4NSw3ICszNjk4LDcgQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKExWUmVsU3RhdGUg KnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAl9CQkJCQkJCS8qIHNjYW4gYWxvbmcgcGFnZSAqLwogCiAJ LyogQ2xlYXIgdGhlIG9mZnNldCBpbmZvcm1hdGlvbiBvbmNlIHdlIGhhdmUgcHJvY2Vzc2VkIHRo ZSBnaXZlbiBwYWdlLiAqLwotCXZhY3JlbC0+b2ZmbnVtID0gSW52YWxpZE9mZnNldE51bWJlcjsK KwkqbG9nZ2luZ19vZmZudW0gPSBJbnZhbGlkT2Zmc2V0TnVtYmVyOwogCiAJcmV0dXJuIGFsbF92 aXNpYmxlOwogfQotLSAKMi4zNC4xCgo= --000000000000459e560638430326 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0007-Eliminate-xl_heap_visible-from-vacuum-phase-III.patch" Content-Disposition: attachment; filename="v1-0007-Eliminate-xl_heap_visible-from-vacuum-phase-III.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc9jjx7j6 RnJvbSAwODc1NjZlMjE0YjY3NzEzMzkwZjc0MmRmZDgyNWQzMzBkM2Y4MzYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQyOjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MSAwNy8xNF0gRWxpbWluYXRlIHhsX2hlYXBfdmlzaWJsZSBmcm9tIHZhY3V1bSBwaGFz ZSBJSUkKCkluc3RlYWQgb2YgZW1pdHRpbmcgYSBzZXBhcmF0ZSB4bF9oZWFwX3Zpc2libGUgcmVj b3JkIGZvciBlYWNoIHBhZ2UgdGhhdAppcyBhbGwtdmlzaWJsZSBhZnRlciB2YWN1dW0ncyB0aGly ZCBwaGFzZSwgdXNlIHRoZSBWTS1yZWxhdGVkIG9wdGlvbnMKd2hlbiBlbWl0dGluZyB0aGUgeGxf aGVhcF9wcnVuZSByZWNvcmQgd2l0aCB0aGUgY2hhbmdlcyB2YWN1dW0gbWFrZXMgaW4KcGhhc2Ug SUlJLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgIHwgMTQ4ICsr KysrKysrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j ICAgIHwgIDQ4ICsrKysrKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMg ICB8IDE2NCArKysrKysrKysrKysrKysrLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1n cmRlc2MvaGVhcGRlc2MuYyB8ICAxMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAg ICAgICAgICAgfCAgIDkgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAgICAg IHwgICAzICsKIDYgZmlsZXMgY2hhbmdlZCwgMzA4IGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IGEwZjM2NzM2MjFh Li5iYjY2ODBjMDQ2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC0z NSw3ICszNSw4IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJQnVmZmVyCQlidWZmZXI7CiAJUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3I7CiAJQmxvY2tO dW1iZXIgYmxrbm87Ci0JWExvZ1JlZG9BY3Rpb24gYWN0aW9uOworCUJ1ZmZlcgkJdm1idWZmZXIg PSBJbnZhbGlkQnVmZmVyOworCXVpbnQ4CQl2bWZsYWdzID0gMDsKIAogCVhMb2dSZWNHZXRCbG9j a1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgJmJsa25vKTsKIAltZW1jcHkoJnhscmVj LCBtYWluZGF0YXB0ciwgU2l6ZU9mSGVhcFBydW5lKTsKQEAgLTUxLDEwICs1MiwxNSBAQCBoZWFw X3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkgICAoeGxyZWMu ZmxhZ3MgJiAoWExIUF9IQVNfUkVESVJFQ1RJT05TIHwgWExIUF9IQVNfREVBRF9JVEVNUykpID09 IDApOwogCiAJLyoKLQkgKiBXZSBhcmUgYWJvdXQgdG8gcmVtb3ZlIGFuZC9vciBmcmVlemUgdHVw bGVzLiAgSW4gSG90IFN0YW5kYnkgbW9kZSwKLQkgKiBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgbm8g cXVlcmllcyBydW5uaW5nIGZvciB3aGljaCB0aGUgcmVtb3ZlZCB0dXBsZXMKLQkgKiBhcmUgc3Rp bGwgdmlzaWJsZSBvciB3aGljaCBzdGlsbCBjb25zaWRlciB0aGUgZnJvemVuIHhpZHMgYXMgcnVu bmluZy4KLQkgKiBUaGUgY29uZmxpY3QgaG9yaXpvbiBYSUQgY29tZXMgYWZ0ZXIgeGxfaGVhcF9w cnVuZS4KKwkgKiBBZnRlciB4bF9oZWFwX3BydW5lIGlzIHRoZSBvcHRpb25hbCBzbmFwc2hvdCBj b25mbGljdCBob3Jpem9uLgorCSAqCisJICogSW4gSG90IFN0YW5kYnkgbW9kZSwgd2UgbXVzdCBl bnN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gcnVubmluZyBxdWVyaWVzCisJICogd2hpY2ggd291bGQg Y29uZmxpY3Qgd2l0aCB0aGUgY2hhbmdlcyBpbiB0aGlzIHJlY29yZC4gSWYgcHJ1bmluZywgdGhh dAorCSAqIG1lYW5zIHdlIGNhbm5vdCByZW1vdmUgdHVwbGVzIHN0aWxsIHZpc2libGUgdG8gdHJh bnNhY3Rpb25zIG9uIHRoZQorCSAqIHN0YW5kYnkuIElmIGZyZWV6aW5nLCB0aGF0IG1lYW5zIHdl IGNhbm5vdCBmcmVlemUgdHVwbGVzIHdpdGggeGlkcyB0aGF0CisJICogYXJlIHN0aWxsIGNvbnNp ZGVyZWQgcnVubmluZyBvbiB0aGUgc3RhbmRieS4gQW5kIGZvciBzZXR0aW5nIHRoZSBWTSwgd2UK KwkgKiBjYW5ub3QgZG8gc28gaWYgdGhlIHBhZ2UgaXNuJ3QgYWxsLXZpc2libGUgdG8gYWxsIHRy YW5zYWN0aW9ucyBvbiB0aGUKKwkgKiBzdGFuZGJ5LgogCSAqLwogCWlmICgoeGxyZWMuZmxhZ3Mg JiBYTEhQX0hBU19DT05GTElDVF9IT1JJWk9OKSAhPSAwKQogCXsKQEAgLTcwLDEzICs3NiwyOCBA QCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJ CQkJCQkJcmxvY2F0b3IpOwogCX0KIAorCS8qIE5leHQgYXJlIHRoZSBvcHRpb25hbGx5IGluY2x1 ZGVkIHZtZmxhZ3MuIENvcHkgdGhlbSBvdXQgZm9yIGxhdGVyIHVzZS4gKi8KKwlpZiAoKHhscmVj LmZsYWdzICYgWExIUF9IQVNfVk1GTEFHUykgIT0gMCkKKwl7CisJCW1lbWNweSgmdm1mbGFncywg bWFpbmRhdGFwdHIsIHNpemVvZih1aW50OCkpOworCQltYWluZGF0YXB0ciArPSBzaXplb2YodWlu dDgpOworCisJCS8qCisJCSAqIFdlIGRvbid0IHNldCBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxP R19SRUwgaW4gdGhlIGNvbWJpbmVkIHJlY29yZAorCQkgKiBiZWNhdXNlIHdlIGFscmVhZHkgaGF2 ZSBYTEhQX0lTX0NBVEFMT0dfUkVMLgorCQkgKi8KKwkJQXNzZXJ0KCh2bWZsYWdzICYgVklTSUJJ TElUWU1BUF9WQUxJRF9CSVRTKSA9PSB2bWZsYWdzKTsKKwkJLyogTXVzdCBuZXZlciBzZXQgYWxs X2Zyb3plbiBiaXQgd2l0aG91dCBhbHNvIHNldHRpbmcgYWxsX3Zpc2libGUgYml0ICovCisJCUFz c2VydCh2bWZsYWdzICE9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7CisJfQorCiAJLyoKLQkg KiBJZiB3ZSBoYXZlIGEgZnVsbC1wYWdlIGltYWdlLCByZXN0b3JlIGl0IGFuZCB3ZSdyZSBkb25l LgorCSAqIElmIHdlIGhhdmUgYSBmdWxsLXBhZ2UgaW1hZ2Ugb2YgdGhlIGhlYXAgYmxvY2ssIHJl c3RvcmUgaXQgYW5kIHdlJ3JlCisJICogZG9uZSB3aXRoIHRoZSBoZWFwIGJsb2NrLgogCSAqLwot CWFjdGlvbiA9IFhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMCwgUkJNX05P Uk1BTCwKLQkJCQkJCQkJCQkgICAoeGxyZWMuZmxhZ3MgJiBYTEhQX0NMRUFOVVBfTE9DSykgIT0g MCwKLQkJCQkJCQkJCQkgICAmYnVmZmVyKTsKLQlpZiAoYWN0aW9uID09IEJMS19ORUVEU19SRURP KQorCWlmIChYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDAsIFJCTV9OT1JN QUwsCisJCQkJCQkJCQkgICh4bHJlYy5mbGFncyAmIFhMSFBfQ0xFQU5VUF9MT0NLKSAhPSAwLAor CQkJCQkJCQkJICAmYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKIAl7CiAJCVBhZ2UJCXBhZ2Ug PSAoUGFnZSkgQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCQlPZmZzZXROdW1iZXIgKnJlZGlyZWN0 ZWQ7CkBAIC04OSw2ICsxMTAsOSBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKQogCQlTaXplCQlkYXRhbGVuOwogCQl4bGhwX2ZyZWV6ZV9wbGFuICpwbGFu czsKIAkJT2Zmc2V0TnVtYmVyICpmcnpfb2Zmc2V0czsKKwkJYm9vbAkJZG9fcHJ1bmU7CisJCWJv b2wJCW1hcmtfYnVmZmVyX2RpcnR5OworCQlib29sCQlzZXRfaGVhcF9sc247CiAJCWNoYXIJICAg KmRhdGFwdHIgPSBYTG9nUmVjR2V0QmxvY2tEYXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwogCiAJ CWhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGRhdGFwdHIsIHhscmVjLmZs YWdzLApAQCAtOTcsMTEgKzEyMSwxOCBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJCQkgICAmbmRlYWQsICZub3dkZWFkLAogCQkJCQkJ CQkJCQkgICAmbnVudXNlZCwgJm5vd3VudXNlZCk7CiAKKwkJZG9fcHJ1bmUgPSBucmVkaXJlY3Rl ZCA+IDAgfHwgbmRlYWQgPiAwIHx8IG51bnVzZWQgPiAwOworCQlzZXRfaGVhcF9sc24gPSBtYXJr X2J1ZmZlcl9kaXJ0eSA9IGRvX3BydW5lIHx8IG5wbGFucyA+IDA7CisKKwkJLyogRW5zdXJlIHRo ZSByZWNvcmQgZG9lcyBzb21ldGhpbmcgKi8KKwkJQXNzZXJ0KGRvX3BydW5lIHx8IG5wbGFucyA+ IDAgfHwKKwkJCSAgIHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOworCiAJCS8q CiAJCSAqIFVwZGF0ZSBhbGwgbGluZSBwb2ludGVycyBwZXIgdGhlIHJlY29yZCwgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uCiAJCSAqIGlmIG5lZWRlZC4KIAkJICovCi0JCWlmIChucmVkaXJlY3Rl ZCA+IDAgfHwgbmRlYWQgPiAwIHx8IG51bnVzZWQgPiAwKQorCQlpZiAoZG9fcHJ1bmUpCiAJCQlo ZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShidWZmZXIsCiAJCQkJCQkJCQkoeGxyZWMuZmxhZ3MgJiBY TEhQX0NMRUFOVVBfTE9DSykgPT0gMCwKIAkJCQkJCQkJCXJlZGlyZWN0ZWQsIG5yZWRpcmVjdGVk LApAQCAtMTM4LDI2ICsxNjksNzggQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVy U3RhdGUgKnJlY29yZCkKIAkJLyogVGhlcmUgc2hvdWxkIGJlIG5vIG1vcmUgZGF0YSAqLwogCQlB c3NlcnQoKGNoYXIgKikgZnJ6X29mZnNldHMgPT0gZGF0YXB0ciArIGRhdGFsZW4pOwogCisJCUFz c2VydChCdWZmZXJJc1ZhbGlkKGJ1ZmZlcikgJiYKKwkJCSAgIEJ1ZmZlckdldEJsb2NrTnVtYmVy KGJ1ZmZlcikgPT0gYmxrbm8pOworCisJCS8qCisJCSAqIE5vdyBzZXQgUERfQUxMX1ZJU0lCTEUs IGlmIHJlcXVpcmVkLiBXZSdsbCBvbmx5IGRvIHRoaXMgaWYgd2UgYXJlCisJCSAqIGFsc28gZ29p bmcgdG8gc2V0IGJpdHMgaW4gdGhlIFZNIGxhdGVyLgorCQkgKgorCQkgKiBXZSBtdXN0IG5ldmVy IGVuZCB1cCB3aXRoIHRoZSBWTSBiaXQgc2V0IGFuZCB0aGUgcGFnZS1sZXZlbAorCQkgKiBQRF9B TExfVklTSUJMRSBiaXQgY2xlYXIuIElmIHRoYXQgd2VyZSB0byBvY2N1ciwgYSBzdWJzZXF1ZW50 IHBhZ2UKKwkJICogbW9kaWZpY2F0aW9uIHdvdWxkIGZhaWwgdG8gY2xlYXIgdGhlIFZNIGJpdC4K KwkJICoKKwkJICogUHJpb3IgdG8gUG9zdGdyZXMgMTksIGl0IHdhcyBwb3NzaWJsZSBmb3IgdGhl IHBhZ2UtbGV2ZWwgYml0IHRvIGJlCisJCSAqIHNldCBhbmQgdGhlIFZNIGJpdCB0byBiZSBjbGVh ci4gVGhpcyBjb3VsZCBoYXBwZW4gaWYgd2UgY3Jhc2hlZAorCQkgKiBhZnRlciBzZXR0aW5nIFBE X0FMTF9WSVNJQkxFIGJ1dCBiZWZvcmUgc2V0dGluZyBiaXRzIGluIHRoZSBWTS4KKwkJICovCisJ CWlmICgodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgJiYgIVBhZ2VJc0FsbFZp c2libGUocGFnZSkpCisJCXsKKwkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCisJCQkvKgor CQkJICogU2V0dGluZyBQRF9BTExfVklTSUJMRSBvbmx5IGZvcmNlcyB1cyB0byB1cGRhdGUgdGhl IGhlYXAgcGFnZQorCQkJICogTFNOIGlmIGNoZWNrc3VtcyBvciB3YWxfbG9nX2hpbnRzIGFyZSBl bmFibGVkIChpbiB3aGljaCBjYXNlIHdlCisJCQkgKiBtdXN0KS4gVGhpcyBleHBvc2VzIHVzIHRv IHRvcm4gcGFnZSBoYXphcmRzLCBidXQgc2luY2Ugd2UncmUKKwkJCSAqIG5vdCBpbnNwZWN0aW5n IHRoZSBleGlzdGluZyBwYWdlIGNvbnRlbnRzIGluIGFueSB3YXksIHdlIGRvbid0CisJCQkgKiBj YXJlLgorCQkJICovCisJCQlzZXRfaGVhcF9sc24gPSBYTG9nSGludEJpdElzTmVlZGVkKCkgPyB0 cnVlIDogc2V0X2hlYXBfbHNuOworCQkJbWFya19idWZmZXJfZGlydHkgPSB0cnVlOworCQl9CisK IAkJLyoKIAkJICogTm90ZTogd2UgZG9uJ3Qgd29ycnkgYWJvdXQgdXBkYXRpbmcgdGhlIHBhZ2Un cyBwcnVuYWJpbGl0eSBoaW50cy4KIAkJICogQXQgd29yc3QgdGhpcyB3aWxsIGNhdXNlIGFuIGV4 dHJhIHBydW5lIGN5Y2xlIHRvIG9jY3VyIHNvb24uCiAJCSAqLwogCi0JCVBhZ2VTZXRMU04ocGFn ZSwgbHNuKTsKLQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisJCWlmIChtYXJrX2J1ZmZlcl9k aXJ0eSkKKwkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQlpZiAoc2V0X2hlYXBfbHNuKQor CQkJUGFnZVNldExTTihwYWdlLCBsc24pOwogCX0KIAogCS8qCi0JICogSWYgd2UgcmVsZWFzZWQg YW55IHNwYWNlIG9yIGxpbmUgcG9pbnRlcnMsIHVwZGF0ZSB0aGUgZnJlZSBzcGFjZSBtYXAuCisJ ICogSWYgd2UgcmVsZWFzZWQgYW55IHNwYWNlIG9yIGxpbmUgcG9pbnRlcnMgb3Igd2lsbCBiZSBz ZXR0aW5nIGEgcGFnZSBpbgorCSAqIHRoZSB2aXNpYmlsaXR5IG1hcCwgdXBkYXRlIHRoZSBmcmVl IHNwYWNlIG1hcC4KKwkgKgorCSAqIEV2ZW4gaWYgd2UgYXJlIGp1c3QgdXBkYXRpbmcgdGhlIFZN IChhbmQgdGh1cyBub3QgZnJlZWluZyB1cCBhbnkKKwkgKiBzcGFjZSksIHdlJ2xsIHN0aWxsIHVw ZGF0ZSB0aGUgRlNNIGZvciB0aGlzIHBhZ2UuIFNpbmNlIEZTTSBpcyBub3QKKwkgKiBXQUwtbG9n Z2VkIGFuZCBvbmx5IHVwZGF0ZWQgaGV1cmlzdGljYWxseSwgaXQgZWFzaWx5IGJlY29tZXMgc3Rh bGUgaW4KKwkgKiBzdGFuZGJ5cy4gIElmIHRoZSBzdGFuZGJ5IGlzIGxhdGVyIHByb21vdGVkIGFu ZCBydW5zIFZBQ1VVTSwgaXQgd2lsbAorCSAqIHNraXAgdXBkYXRpbmcgaW5kaXZpZHVhbCBmcmVl IHNwYWNlIGZpZ3VyZXMgZm9yIHBhZ2VzIHRoYXQgYmVjYW1lCisJICogYWxsLXZpc2libGUgKG9y IGFsbC1mcm96ZW4sIGRlcGVuZGluZyBvbiB0aGUgdmFjdXVtIG1vZGUsKSB3aGljaCBpcworCSAq IHRyb3VibGVzb21lIHdoZW4gRnJlZVNwYWNlTWFwVmFjdXVtIHByb3BhZ2F0ZXMgdG9vIG9wdGlt aXN0aWMgZnJlZQorCSAqIHNwYWNlIHZhbHVlcyB0byB1cHBlciBGU00gbGF5ZXJzOyBsYXRlciBp bnNlcnRlcnMgdHJ5IHRvIHVzZSBzdWNoIHBhZ2VzCisJICogb25seSB0byBmaW5kIG91dCB0aGF0 IHRoZXkgYXJlIHVudXNhYmxlLiAgVGhpcyBjYW4gY2F1c2UgbG9uZyBzdGFsbHMKKwkgKiB3aGVu IHRoZXJlIGFyZSBtYW55IHN1Y2ggcGFnZXMuCisJICoKKwkgKiBGb3Jlc3RhbGwgdGhvc2UgcHJv YmxlbXMgYnkgdXBkYXRpbmcgRlNNJ3MgaWRlYSBhYm91dCBhIHBhZ2UgdGhhdCBpcworCSAqIGJl Y29taW5nIGFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4uCiAJICoKIAkgKiBEbyB0aGlzIHJlZ2Fy ZGxlc3Mgb2YgYSBmdWxsLXBhZ2UgaW1hZ2UgYmVpbmcgYXBwbGllZCwgc2luY2UgdGhlIEZTTQog CSAqIGRhdGEgaXMgbm90IGluIHRoZSBwYWdlIGFueXdheS4KKwkgKgorCSAqIFdlIHdhbnQgdG8g YXZvaWQgaG9sZGluZyBhbiBleGNsdXNpdmUgbG9jayBvbiB0aGUgaGVhcCBidWZmZXIgd2hpbGUK KwkgKiBkb2luZyBJTyAoZWl0aGVyIG9mIHRoZSBGU00gb3IgdGhlIFZNKSwgc28gd2UnbGwgcmVs ZWFzZSB0aGUgbG9jayBvbgorCSAqIHRoZSBoZWFwIGJ1ZmZlciBiZWZvcmUgZG9pbmcgZWl0aGVy LgogCSAqLwogCWlmIChCdWZmZXJJc1ZhbGlkKGJ1ZmZlcikpCiAJewotCQlpZiAoeGxyZWMuZmxh Z3MgJiAoWExIUF9IQVNfUkVESVJFQ1RJT05TIHwKLQkJCQkJCSAgIFhMSFBfSEFTX0RFQURfSVRF TVMgfAotCQkJCQkJICAgWExIUF9IQVNfTk9XX1VOVVNFRF9JVEVNUykpCisJCWlmICgoeGxyZWMu ZmxhZ3MgJiAoWExIUF9IQVNfUkVESVJFQ1RJT05TIHwKKwkJCQkJCQlYTEhQX0hBU19ERUFEX0lU RU1TIHwKKwkJCQkJCQlYTEhQX0hBU19OT1dfVU5VU0VEX0lURU1TKSkgfHwKKwkJCXZtZmxhZ3Mg JiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpCiAJCXsKIAkJCVNpemUJCWZyZWVzcGFjZSA9IFBh Z2VHZXRIZWFwRnJlZVNwYWNlKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSk7CiAKQEAgLTE2OCw2ICsy NTEsMzcgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAkJZWxzZQogCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCX0KKworCS8qCisJICog UmVhZCBhbmQgdXBkYXRlIHRoZSBWTSBibG9jay4gRXZlbiBpZiB3ZSBza2lwcGVkIHVwZGF0aW5n IHRoZSBoZWFwIHBhZ2UKKwkgKiBkdWUgdG8gdGhlIGZpbGUgYmVpbmcgZHJvcHBlZCBvciB0cnVu Y2F0ZWQgbGF0ZXIgaW4gcmVjb3ZlcnksIGl0J3MKKwkgKiBzdGlsbCBzYWZlIHRvIHVwZGF0ZSB0 aGUgdmlzaWJpbGl0eSBtYXAuICBBbnkgV0FMIHJlY29yZCB0aGF0IGNsZWFycworCSAqIHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXQgZG9lcyBzbyBiZWZvcmUgY2hlY2tpbmcgdGhlIHBhZ2UgTFNOLCBz byBhbnkKKwkgKiBiaXRzIHRoYXQgbmVlZCB0byBiZSBjbGVhcmVkIHdpbGwgc3RpbGwgYmUgY2xl YXJlZC4KKwkgKgorCSAqIE5vdGUgdGhhdCBpdCBpcyAqb25seSogb2theSB0aGF0IHdlIGRvIG5v dCBob2xkIGEgbG9jayBvbiB0aGUgaGVhcCBwYWdlCisJICogYmVjYXVzZSB3ZSBhcmUgaW4gcmVj b3ZlcnkgYW5kIGNhbiBleHBlY3Qgbm8gb3RoZXIgd3JpdGVycyB0byBjbGVhcgorCSAqIFBEX0FM TF9WSVNJQkxFIGJlZm9yZSB3ZSBhcmUgYWJsZSB0byB1cGRhdGUgdGhlIFZNLgorCSAqLworCWlm ICh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTICYmCisJCVhMb2dSZWFkQnVmZmVy Rm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMSwKKwkJCQkJCQkJCSAgUkJNX1pFUk9fT05fRVJST1Is CisJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJICAmdm1idWZmZXIpID09IEJMS19ORUVEU19S RURPKQorCXsKKwkJdWludDgJCW9sZF92bWJpdHMgPSAwOworCQlSZWxhdGlvbglyZWxuID0gQ3Jl YXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0b3IpOworCisJCXZpc2liaWxpdHltYXBfcGluKHJl bG4sIGJsa25vLCAmdm1idWZmZXIpOworCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXRf dm1ieXRlKHJlbG4sIGJsa25vLCB2bWJ1ZmZlciwgdm1mbGFncyk7CisJCS8qIE9ubHkgc2V0IFZN IHBhZ2UgTFNOIGlmIHdlIG1vZGlmaWVkIHRoZSBwYWdlICovCisJCWlmIChvbGRfdm1iaXRzICE9 IHZtZmxhZ3MpCisJCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpLCBsc24pOwor CQlGcmVlRmFrZVJlbGNhY2hlRW50cnkocmVsbik7CisJfQorCisJaWYgKEJ1ZmZlcklzVmFsaWQo dm1idWZmZXIpKQorCQlVbmxvY2tSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggYTgwMjU4ODliZTAuLmQ5YmEwZjk2ZTM0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMjEsNiArMjEsNyBAQAogI2lu Y2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNs dWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgorI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFw ZGVmcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImV4ZWN1dG9y L2luc3RydW1lbnQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTgzNSw2ICs4MzYsNyBA QCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1 ZmZlciwKIAkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsKIAog CQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLAorCQkJCQkJCQkJ ICBJbnZhbGlkQnVmZmVyLCAwLCBmYWxzZSwKIAkJCQkJCQkJCSAgY29uZmxpY3RfeGlkLAogCQkJ CQkJCQkJICB0cnVlLCByZWFzb24sCiAJCQkJCQkJCQkgIHByc3RhdGUuZnJvemVuLCBwcnN0YXRl Lm5mcm96ZW4sCkBAIC0yMDQ1LDEyICsyMDQ3LDIzIEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhl YXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKICAqIHJlcGxheWluZyAndW51c2Vk JyBpdGVtcyBkZXBlbmRzIG9uIHdoZXRoZXIgdGhleSB3ZXJlIGFsbCBwcmV2aW91c2x5IG1hcmtl ZAogICogYXMgZGVhZC4KICAqCisgKiBJZiB0aGUgVk0gaXMgYmVpbmcgdXBkYXRlZCwgdm1mbGFn cyB3aWxsIGNvbnRhaW4gdGhlIGJpdHMgdG8gc2V0LiBJbiB0aGlzCisgKiBjYXNlLCB2bWJ1ZmZl ciBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gdXBkYXRlZCBhbmQgbWFya2VkIGRpcnR5IGFuZCBz aG91bGQKKyAqIHN0aWxsIGJlIHBpbm5lZCBhbmQgbG9ja2VkLgorICoKKyAqIHNldF9wZF9hbGxf dmlzIGluZGljYXRlcyB0aGF0IHdlIHNldCBQRF9BTExfVklTSUJMRSBhbmQgdGh1cyBzaG91bGQg dXBkYXRlCisgKiB0aGUgcGFnZSBMU04gd2hlbiBjaGVja3N1bXMvd2FsX2xvZ19oaW50cyBhcmUg ZW5hYmxlZCBldmVuIGlmIHdlIGRpZCBub3QKKyAqIHBydW5lIG9yIGZyZWV6ZSB0dXBsZXMgb24g dGhlIHBhZ2UuCisgKgogICogTm90ZTogVGhpcyBmdW5jdGlvbiBzY3JpYmJsZXMgb24gdGhlICdm cm96ZW4nIGFycmF5LgogICoKICAqIE5vdGU6IFRoaXMgaXMgY2FsbGVkIGluIGEgY3JpdGljYWwg c2VjdGlvbiwgc28gY2FyZWZ1bCB3aGF0IHlvdSBkbyBoZXJlLgogICovCiB2b2lkCiBsb2dfaGVh cF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJ CQkJICBCdWZmZXIgdm1idWZmZXIsCisJCQkJCQkgIHVpbnQ4IHZtZmxhZ3MsCisJCQkJCQkgIGJv b2wgc2V0X3BkX2FsbF92aXMsCiAJCQkJCQkgIFRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkLAog CQkJCQkJICBib29sIGNsZWFudXBfbG9jaywKIAkJCQkJCSAgUHJ1bmVSZWFzb24gcmVhc29uLApA QCAtMjA2Miw2ICsyMDc1LDcgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAl4bF9oZWFwX3BydW5lIHhscmVjOwogCVhMb2dSZWNQ dHIJcmVjcHRyOwogCXVpbnQ4CQlpbmZvOworCXVpbnQ4CQlyZWdidWZfZmxhZ3M7CiAKIAkvKiBU aGUgZm9sbG93aW5nIGxvY2FsIHZhcmlhYmxlcyBob2xkIGRhdGEgcmVnaXN0ZXJlZCBpbiB0aGUg V0FMIHJlY29yZDogKi8KIAl4bGhwX2ZyZWV6ZV9wbGFuIHBsYW5zW01heEhlYXBUdXBsZXNQZXJQ YWdlXTsKQEAgLTIwNzAsOCArMjA4NCwxOSBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXhsaHBfcHJ1bmVfaXRlbXMgZGVhZF9p dGVtczsKIAl4bGhwX3BydW5lX2l0ZW1zIHVudXNlZF9pdGVtczsKIAlPZmZzZXROdW1iZXIgZnJ6 X29mZnNldHNbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOworCWJvb2wJCWRvX3BydW5lID0gbnJlZGly ZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMDsKIAogCXhscmVjLmZsYWdzID0g MDsKKwlyZWdidWZfZmxhZ3MgPSBSRUdCVUZfU1RBTkRBUkQ7CisKKwkvKgorCSAqIFdlIGNhbiBh dm9pZCBhbiBGUEkgaWYgdGhlIG9ubHkgbW9kaWZpY2F0aW9uIHdlIGFyZSBtYWtpbmcgdG8gdGhl IGhlYXAKKwkgKiBwYWdlIGlzIHRvIHNldCBQRF9BTExfVklTSUJMRSBhbmQgY2hlY2tzdW1zL3dh bF9sb2dfaGludHMgYXJlIGRpc2FibGVkLgorCSAqLworCWlmICghZG9fcHJ1bmUgJiYKKwkJbmZy b3plbiA9PSAwICYmCisJCSghc2V0X3BkX2FsbF92aXMgfHwgIVhMb2dIaW50Qml0SXNOZWVkZWQo KSkpCisJCXJlZ2J1Zl9mbGFncyB8PSBSRUdCVUZfTk9fSU1BR0U7CiAKIAkvKgogCSAqIFByZXBh cmUgZGF0YSBmb3IgdGhlIGJ1ZmZlci4gIFRoZSBhcnJheXMgYXJlIG5vdCBhY3R1YWxseSBpbiB0 aGUKQEAgLTIwNzksNyArMjEwNCwxMSBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIHBhZ2UgaW1hZ2UsIHRoZSBhcnJheXMg Y2FuIGJlIG9taXR0ZWQuCiAJICovCiAJWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lzdGVy QnVmZmVyKDAsIGJ1ZmZlciwgUkVHQlVGX1NUQU5EQVJEKTsKKwlYTG9nUmVnaXN0ZXJCdWZmZXIo MCwgYnVmZmVyLCByZWdidWZfZmxhZ3MpOworCisJaWYgKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQ X1ZBTElEX0JJVFMpCisJCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCB2bWJ1ZmZlciwgMCk7CisKIAlp ZiAobmZyb3plbiA+IDApCiAJewogCQlpbnQJCQlucGxhbnM7CkBAIC0yMTM2LDYgKzIxNjUsOCBA QCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVm ZmVyLAogCSAqIFByZXBhcmUgdGhlIG1haW4geGxfaGVhcF9wcnVuZSByZWNvcmQuICBXZSBhbHJl YWR5IHNldCB0aGUgWExIUF9IQVNfKgogCSAqIGZsYWcgYWJvdmUuCiAJICovCisJaWYgKHZtZmxh Z3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpCisJCXhscmVjLmZsYWdzIHw9IFhMSFBfSEFT X1ZNRkxBR1M7CiAJaWYgKFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVs YXRpb24pKQogCQl4bHJlYy5mbGFncyB8PSBYTEhQX0lTX0NBVEFMT0dfUkVMOwogCWlmIChUcmFu c2FjdGlvbklkSXNWYWxpZChjb25mbGljdF94aWQpKQpAQCAtMjE1MCw2ICsyMTgxLDggQEAgbG9n X2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwK IAlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgU2l6ZU9mSGVhcFBydW5lKTsKIAlpZiAoVHJhbnNh Y3Rpb25JZElzVmFsaWQoY29uZmxpY3RfeGlkKSkKIAkJWExvZ1JlZ2lzdGVyRGF0YSgmY29uZmxp Y3RfeGlkLCBzaXplb2YoVHJhbnNhY3Rpb25JZCkpOworCWlmICh2bWZsYWdzICYgVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTKQorCQlYTG9nUmVnaXN0ZXJEYXRhKCZ2bWZsYWdzLCBzaXplb2YodWlu dDgpKTsKIAogCXN3aXRjaCAocmVhc29uKQogCXsKQEAgLTIxNjgsNSArMjIwMSwxNiBAQCBsb2df aGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAog CX0KIAlyZWNwdHIgPSBYTG9nSW5zZXJ0KFJNX0hFQVAyX0lELCBpbmZvKTsKIAotCVBhZ2VTZXRM U04oQnVmZmVyR2V0UGFnZShidWZmZXIpLCByZWNwdHIpOworCWlmICh2bWZsYWdzICYgVklTSUJJ TElUWU1BUF9WQUxJRF9CSVRTKQorCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIp LCByZWNwdHIpOworCisJLyoKKwkgKiBJZiBwcnVuaW5nIG9yIGZyZWV6aW5nIHR1cGxlcyBvciBz ZXR0aW5nIHRoZSBwYWdlIGFsbC12aXNpYmxlIHdoZW4KKwkgKiBjaGVja3N1bXMgb3Igd2FsX2hp bnRfYml0cyBhcmUgZW5hYmxlZCwgd2UgbXVzdCBidW1wIHRoZSBMU04uIFRvcm4KKwkgKiBwYWdl cyBhcmUgcG9zc2libGUgaWYgd2UgdXBkYXRlIFBEX0FMTF9WSVNJQkxFIHdpdGhvdXQgYnVtcGlu ZyB0aGUgTFNOLAorCSAqIGJ1dCB0aGlzIGlzIGRlZW1lZCBva2F5IGZvciBwYWdlIGhpbnQgdXBk YXRlcy4KKwkgKi8KKwlpZiAoZG9fcHJ1bmUgfHwgbmZyb3plbiA+IDAgfHwKKwkJKHNldF9wZF9h bGxfdmlzICYmIFhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCisJCVBhZ2VTZXRMU04oQnVmZmVyR2V0 UGFnZShidWZmZXIpLCByZWNwdHIpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CmluZGV4IDBjZjRhNjljNDMxLi4zMmYyMWQyMDE5NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYwpAQCAtNDY0LDExICs0NjQsMTMgQEAgc3RhdGljIHZvaWQgZGVhZF9pdGVtc19h ZGQoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgT2Zmc2V0TnVtYmVyICoK IAkJCQkJCSAgIGludCBudW1fb2Zmc2V0cyk7CiBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX3Jlc2V0 KExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZS ZWxTdGF0ZSAqdmFjcmVsKTsKLXN0YXRpYyBib29sIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShS ZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RY bWluLAotCQkJCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkJCQkgVHJhbnNhY3Rpb25J ZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2lu Z19vZmZudW0pOworc3RhdGljIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlX2V4Y2VwdF9s cGRlYWQoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJCQkJCQkJICAgVHJhbnNhY3Rp b25JZCBPbGRlc3RYbWluLAorCQkJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0 cywKKwkJCQkJCQkJCQkJCSAgIGludCBhbGxvd2VkX251bV9vZmZzZXRzLAorCQkJCQkJCQkJCQkJ ICAgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnZpc2li aWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqbG9nZ2luZ19v ZmZudW0pOwogc3RhdGljIHZvaWQgdXBkYXRlX3JlbHN0YXRzX2FsbF9pbmRleGVzKExWUmVsU3Rh dGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCB2YWN1dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJn KTsKIHN0YXRpYyB2b2lkIHVwZGF0ZV92YWN1dW1fZXJyb3JfaW5mbyhMVlJlbFN0YXRlICp2YWNy ZWwsCkBAIC0yODE3LDggKzI4MTksMTIgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3Rh dGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJT2Zmc2V0TnVt YmVyIHVudXNlZFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07CiAJaW50CQkJbnVudXNlZCA9IDA7CiAJ VHJhbnNhY3Rpb25JZCB2aXNpYmlsaXR5X2N1dG9mZl94aWQ7CisJVHJhbnNhY3Rpb25JZCBjb25m bGljdF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAlib29sCQlhbGxfZnJvemVuOwogCUxW U2F2ZWRFcnJJbmZvIHNhdmVkX2Vycl9pbmZvOworCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsKKwl1 aW50OAkJdm1mbGFncyA9IDA7CisJYm9vbAkJc2V0X3BkX2FsbF92aXMgPSBmYWxzZTsKIAogCUFz c2VydCh2YWNyZWwtPmRvX2luZGV4X3ZhY3V1bWluZyk7CiAKQEAgLTI4MjksNiArMjgzNSwyMCBA QCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBi bGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkgVkFDVVVNX0VSUkNCX1BIQVNFX1ZBQ1VVTV9I RUFQLCBibGtubywKIAkJCQkJCQkgSW52YWxpZE9mZnNldE51bWJlcik7CiAKKwlpZiAoaGVhcF9w YWdlX2lzX2FsbF92aXNpYmxlX2V4Y2VwdF9scGRlYWQodmFjcmVsLT5yZWwsIGJ1ZmZlciwKKwkJ CQkJCQkJCQkJICAgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sCisJCQkJCQkJCQkJCSAgIGRl YWRvZmZzZXRzLCBudW1fb2Zmc2V0cywKKwkJCQkJCQkJCQkJICAgJmFsbF9mcm96ZW4sICZ2aXNp YmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkJCSAgICZ2YWNyZWwtPm9mZm51bSkpCisJewor CQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisJCWlmIChhbGxfZnJvemVu KQorCQl7CisJCQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKwkJCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQodmlzaWJpbGl0eV9jdXRvZmZfeGlkKSk7CisJCX0KKwl9 CisKIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAogCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX29m ZnNldHM7IGkrKykKQEAgLTI4NDgsNiArMjg2OCwyMSBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2Uo TFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkv KiBBdHRlbXB0IHRvIHRydW5jYXRlIGxpbmUgcG9pbnRlciBhcnJheSBub3cgKi8KIAlQYWdlVHJ1 bmNhdGVMaW5lUG9pbnRlckFycmF5KHBhZ2UpOwogCisJaWYgKCh2bWZsYWdzICYgVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTKSAhPSAwKQorCXsKKwkJQXNzZXJ0KCFQYWdlSXNBbGxWaXNpYmxlKHBh Z2UpKTsKKwkJc2V0X3BkX2FsbF92aXMgPSB0cnVlOworCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBC VUZGRVJfTE9DS19FWENMVVNJVkUpOworCQlvbGRfdm1iaXRzID0gaGVhcF9wYWdlX3NldF92bSh2 YWNyZWwtPnJlbCwKKwkJCQkJCQkJCSAgYmxrbm8sIGJ1ZmZlciwKKwkJCQkJCQkJCSAgdm1idWZm ZXIsIHZtZmxhZ3MpOworCisJCS8qIFdlIGtub3cgdGhlIHBhZ2Ugc2hvdWxkIG5vdCBoYXZlIGJl ZW4gYWxsLXZpc2libGUgKi8KKwkJQXNzZXJ0KChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9W QUxJRF9CSVRTKSA9PSAwKTsKKwkJKHZvaWQpIG9sZF92bWJpdHM7IC8qIFNpbGVuY2UgY29tcGls ZXIgKi8KKwkJY29uZmxpY3RfeGlkID0gdmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCX0KKwogCS8q CiAJICogTWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdlIHdyaXRlIFdBTC4KIAkgKi8KQEAgLTI4 NTcsNyArMjg5MiwxMCBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVs LCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAlpZiAoUmVsYXRpb25OZWVkc1dB TCh2YWNyZWwtPnJlbCkpCiAJewogCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKHZhY3JlbC0+ cmVsLCBidWZmZXIsCi0JCQkJCQkJCSAgSW52YWxpZFRyYW5zYWN0aW9uSWQsCisJCQkJCQkJCSAg dm1idWZmZXIsCisJCQkJCQkJCSAgdm1mbGFncywKKwkJCQkJCQkJICBzZXRfcGRfYWxsX3ZpcywK KwkJCQkJCQkJICBjb25mbGljdF94aWQsCiAJCQkJCQkJCSAgZmFsc2UsCS8qIG5vIGNsZWFudXAg bG9jayByZXF1aXJlZCAqLwogCQkJCQkJCQkgIFBSVU5FX1ZBQ1VVTV9DTEVBTlVQLAogCQkJCQkJ CQkgIE5VTEwsIDAsCS8qIGZyb3plbiAqLwpAQCAtMjg2Niw0OCArMjkwNCwxNCBAQCBsYXp5X3Zh Y3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVm ZmVyIGJ1ZmZlciwKIAkJCQkJCQkJICB1bnVzZWQsIG51bnVzZWQpOwogCX0KIAotCS8qCi0JICog RW5kIGNyaXRpY2FsIHNlY3Rpb24sIHNvIHdlIHNhZmVseSBjYW4gZG8gdmlzaWJpbGl0eSB0ZXN0 cyAod2hpY2gKLQkgKiBwb3NzaWJseSBuZWVkIHRvIHBlcmZvcm0gSU8gYW5kIGFsbG9jYXRlIG1l bW9yeSEpLiBJZiB3ZSBjcmFzaCBub3cgdGhlCi0JICogcGFnZSAoaW5jbHVkaW5nIHRoZSBjb3Jy ZXNwb25kaW5nIHZtIGJpdCkgbWlnaHQgbm90IGJlIG1hcmtlZCBhbGwKLQkgKiB2aXNpYmxlLCBi dXQgdGhhdCdzIGZpbmUuIEEgbGF0ZXIgdmFjdXVtIHdpbGwgZml4IHRoYXQuCi0JICovCiAJRU5E X0NSSVRfU0VDVElPTigpOwogCi0JLyoKLQkgKiBOb3cgdGhhdCB3ZSBoYXZlIHJlbW92ZWQgdGhl IExQX0RFQUQgaXRlbXMgZnJvbSB0aGUgcGFnZSwgb25jZSBhZ2FpbgotCSAqIGNoZWNrIGlmIHRo ZSBwYWdlIGhhcyBiZWNvbWUgYWxsLXZpc2libGUuICBUaGUgcGFnZSBpcyBhbHJlYWR5IG1hcmtl ZAotCSAqIGRpcnR5LCBleGNsdXNpdmVseSBsb2NrZWQsIGFuZCwgaWYgbmVlZGVkLCBhIGZ1bGwg cGFnZSBpbWFnZSBoYXMgYmVlbgotCSAqIGVtaXR0ZWQuCi0JICovCi0JQXNzZXJ0KCFQYWdlSXNB bGxWaXNpYmxlKHBhZ2UpKTsKLQlpZiAoaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKHZhY3JlbC0+ cmVsLCBidWZmZXIsIHZhY3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWluLAotCQkJCQkJCQkgJmFsbF9m cm96ZW4sICZ2aXNpYmlsaXR5X2N1dG9mZl94aWQsICZ2YWNyZWwtPm9mZm51bSkpCisJaWYgKCh2 bWZsYWdzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgIT0gMCkKIAl7Ci0JCXVpbnQ4CQlv bGRfdm1iaXRzOwotCQl1aW50OAkJZmxhZ3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOwot CisJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisJCXZhY3JlbC0+ dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKIAkJaWYgKGFsbF9mcm96ZW4pCi0JCXsKLQkJCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQodmlzaWJpbGl0eV9jdXRvZmZfeGlkKSk7Ci0JCQlmbGFn cyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47Ci0JCX0KLQotCQlvbGRfdm1iaXRzID0gaGVh cF9wYWdlX3NldF92bV9hbmRfbG9nKHZhY3JlbC0+cmVsLCBibGtubywgYnVmZmVyLAotCQkJCQkJ CQkJCQkgIHZtYnVmZmVyLCB2aXNpYmlsaXR5X2N1dG9mZl94aWQsCi0JCQkJCQkJCQkJCSAgZmxh Z3MpOwotCi0JCS8qIFdlIGtub3cgdGhlIHBhZ2Ugc2hvdWxkIG5vdCBoYXZlIGJlZW4gYWxsLXZp c2libGUgKi8KLQkJQXNzZXJ0KChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRT KSA9PSAwKTsKLQkJKHZvaWQpIG9sZF92bWJpdHM7IC8qIFNpbGVuY2UgY29tcGlsZXIgKi8KLQot CQkvKiBDb3VudCB0aGUgbmV3bHkgc2V0IFZNIHBhZ2UgZm9yIGxvZ2dpbmcgKi8KLQkJaWYgKChm bGFncyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9IDApCi0JCXsKLQkJCXZhY3JlbC0+ dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJCWlmIChhbGxfZnJvemVuKQotCQkJCXZhY3JlbC0+ dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7Ci0JCX0KKwkJCXZhY3JlbC0+dm1fbmV3X3Zp c2libGVfZnJvemVuX3BhZ2VzKys7CiAJfQogCiAJLyogUmV2ZXJ0IHRvIHRoZSBwcmV2aW91cyBw aGFzZSBpbmZvcm1hdGlvbiBmb3IgZXJyb3IgdHJhY2ViYWNrICovCkBAIC0zNTcwLDYgKzM1NzQs MjUgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAl2YWNyZWwtPnB2 cyA9IE5VTEw7CiB9CiAKKy8qCisgKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2li bGVfZXhjZXB0X2xwZGVhZCgpIHdoaWNoIGNhbiBiZSB1c2VkIGZvcgorICogY2FsbGVycyB0aGF0 IGV4cGVjdCBubyBMUF9ERUFEIG9uIHRoZSBwYWdlLgorICovCitib29sCitoZWFwX3BhZ2VfaXNf YWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJIFRyYW5zYWN0aW9u SWQgT2xkZXN0WG1pbiwKKwkJCQkJCSBib29sICphbGxfZnJvemVuLAorCQkJCQkJIFRyYW5zYWN0 aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dp bmdfb2ZmbnVtKQoreworCisJcmV0dXJuIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZV9leGNlcHRf bHBkZWFkKHJlbCwgYnVmLCBPbGRlc3RYbWluLAorCQkJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJ CQkJCQkJCQkJICBhbGxfZnJvemVuLAorCQkJCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94 aWQsCisJCQkJCQkJCQkJCQkgIGxvZ2dpbmdfb2ZmbnVtKTsKK30KKwogLyoKICAqIENoZWNrIGlm IGV2ZXJ5IHR1cGxlIGluIHRoZSBnaXZlbiBwYWdlIGlzIHZpc2libGUgdG8gYWxsIGN1cnJlbnQg YW5kIGZ1dHVyZQogICogdHJhbnNhY3Rpb25zLgpAQCAtMzU4MywyMyArMzYwNiwzNSBAQCBkZWFk X2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogICogdmlzaWJsZSB0dXBsZXMuIFNl dHMgKmFsbF9mcm96ZW4gdG8gdHJ1ZSBpZiBldmVyeSB0dXBsZSBvbiB0aGlzIHBhZ2UgaXMKICAq IGZyb3plbi4KICAqCi0gKiBUaGlzIGlzIGEgc3RyaXBwZWQgZG93biB2ZXJzaW9uIG9mIGxhenlf c2Nhbl9wcnVuZSgpLiAgSWYgeW91IGNoYW5nZQotICogYW55dGhpbmcgaGVyZSwgbWFrZSBzdXJl IHRoYXQgZXZlcnl0aGluZyBzdGF5cyBpbiBzeW5jLiAgTm90ZSB0aGF0IGFuCi0gKiBhc3NlcnRp b24gY2FsbHMgdXMgdG8gdmVyaWZ5IHRoYXQgZXZlcnlib2R5IHN0aWxsIGFncmVlcy4gIEJlIHN1 cmUgdG8gYXZvaWQKLSAqIGludHJvZHVjaW5nIG5ldyBzaWRlLWVmZmVjdHMgaGVyZS4KKyAqIGRl YWRvZmZzZXRzIGFyZSB0aGUgb2Zmc2V0cyB3ZSBrbm93IGFib3V0IGFuZCBhcmUgYWJvdXQgdG8g c2V0IExQX1VOVVNFRC4KKyAqIGFsbG93ZWRfbnVtX29mZnNldHMgaXMgdGhlIG51bWJlciBvZiB0 aG9zZS4gQXMgbG9uZyBhcyB0aGUgTFBfREVBRCBpdGVtcyB3ZQorICogZW5jb3VudGVyIG9uIHRo ZSBwYWdlIG1hdGNoIHRob3NlIGV4YWN0bHksIHdlIGNhbiBzZXQgdGhlIHBhZ2UgYWxsLXZpc2li bGUKKyAqIGluIHRoZSBWTS4KKyAqCisgKiBDYWxsZXJzIGxvb2tpbmcgdG8gdmVyaWZ5IHRoYXQg dGhlIHBhZ2UgaXMgYWxsLXZpc2libGUgY2FuIGNhbGwKKyAqIGhlYXBfcGFnZV9pc19hbGxfdmlz aWJsZSgpLgorICoKKyAqIFRoaXMgaXMgc2ltaWxhciBsb2dpYyB0byB0aGF0IGluIGhlYXBfcHJ1 bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKSBJZgorICogeW91IGNoYW5nZSBhbnl0aGlu ZyBoZXJlLCBtYWtlIHN1cmUgdGhhdCBldmVyeXRoaW5nIHN0YXlzIGluIHN5bmMuICBOb3RlCisg KiB0aGF0IGFuIGFzc2VydGlvbiBjYWxscyB1cyB0byB2ZXJpZnkgdGhhdCBldmVyeWJvZHkgc3Rp bGwgYWdyZWVzLiAgQmUgc3VyZQorICogdG8gYXZvaWQgaW50cm9kdWNpbmcgbmV3IHNpZGUtZWZm ZWN0cyBoZXJlLgogICovCiBzdGF0aWMgYm9vbAotaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4s Ci0JCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKLQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmls aXR5X2N1dG9mZl94aWQsCi0JCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkKK2hl YXBfcGFnZV9pc19hbGxfdmlzaWJsZV9leGNlcHRfbHBkZWFkKFJlbGF0aW9uIHJlbCwgQnVmZmVy IGJ1ZiwKKwkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCSAg IE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCisJCQkJCQkJCQkgICBpbnQgYWxsb3dlZF9udW1f b2Zmc2V0cywKKwkJCQkJCQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4sCisJCQkJCQkJCQkgICBUcmFu c2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkgICBPZmZzZXROdW1i ZXIgKmxvZ2dpbmdfb2ZmbnVtKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7 CiAJQmxvY2tOdW1iZXIgYmxvY2tubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1Zik7CiAJT2Zm c2V0TnVtYmVyIG9mZm51bSwKIAkJCQltYXhvZmY7CiAJYm9vbAkJYWxsX3Zpc2libGUgPSB0cnVl OworCU9mZnNldE51bWJlciBjdXJyZW50X2RlYWRfb2Zmc2V0c1tNYXhIZWFwVHVwbGVzUGVyUGFn ZV07CisJc2l6ZV90CQljdXJyZW50X251bV9vZmZzZXRzID0gMDsKIAogCSp2aXNpYmlsaXR5X2N1 dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAkqYWxsX2Zyb3plbiA9IHRydWU7CkBA IC0zNjMxLDkgKzM2NjYsOCBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVs LCBCdWZmZXIgYnVmLAogCQkgKi8KIAkJaWYgKEl0ZW1JZElzRGVhZChpdGVtaWQpKQogCQl7Ci0J CQlhbGxfdmlzaWJsZSA9IGZhbHNlOwotCQkJKmFsbF9mcm96ZW4gPSBmYWxzZTsKLQkJCWJyZWFr OworCQkJY3VycmVudF9kZWFkX29mZnNldHNbY3VycmVudF9udW1fb2Zmc2V0cysrXSA9IG9mZm51 bTsKKwkJCWNvbnRpbnVlOwogCQl9CiAKIAkJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKGl0ZW1pZCkp OwpAQCAtMzcwMCw3ICszNzM0LDIzIEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlv biByZWwsIEJ1ZmZlciBidWYsCiAJLyogQ2xlYXIgdGhlIG9mZnNldCBpbmZvcm1hdGlvbiBvbmNl IHdlIGhhdmUgcHJvY2Vzc2VkIHRoZSBnaXZlbiBwYWdlLiAqLwogCSpsb2dnaW5nX29mZm51bSA9 IEludmFsaWRPZmZzZXROdW1iZXI7CiAKLQlyZXR1cm4gYWxsX3Zpc2libGU7CisJLyogSWYgd2Ug YWxyZWFkeSBrbm93IGl0J3Mgbm90IGFsbC12aXNpYmxlLCByZXR1cm4gZmFsc2UgKi8KKwlpZiAo IWFsbF92aXNpYmxlKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBJZiB3ZSB3ZXJlbid0IGFsbG93 ZWQgYW55IGRlYWQgb2Zmc2V0cywgd2UncmUgZG9uZSAqLworCWlmIChhbGxvd2VkX251bV9vZmZz ZXRzID09IDApCisJCXJldHVybiBjdXJyZW50X251bV9vZmZzZXRzID09IDA7CisKKwkvKiBJZiB0 aGUgbnVtYmVyIG9mIGRlYWQgb2Zmc2V0cyBoYXMgY2hhbmdlZCwgdGhhdCdzIHdyb25nICovCisJ aWYgKGN1cnJlbnRfbnVtX29mZnNldHMgIT0gYWxsb3dlZF9udW1fb2Zmc2V0cykKKwkJcmV0dXJu IGZhbHNlOworCisJQXNzZXJ0KGRlYWRvZmZzZXRzKTsKKworCS8qIFRoZSBkZWFkIG9mZnNldHMg bXVzdCBiZSB0aGUgc2FtZSBkZWFkIG9mZnNldHMgKi8KKwlyZXR1cm4gbWVtY21wKGN1cnJlbnRf ZGVhZF9vZmZzZXRzLCBkZWFkb2Zmc2V0cywKKwkJCQkgIGFsbG93ZWRfbnVtX29mZnNldHMgKiBz aXplb2YoT2Zmc2V0TnVtYmVyKSkgPT0gMDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3Jk ZXNjL2hlYXBkZXNjLmMKaW5kZXggYjQ4ZDdkYzFkMjQuLmQ2Yzg2Y2NhYzIwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwpAQCAtMjY2LDYgKzI2Niw3IEBAIGhlYXAyX2Rl c2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogewogCWNoYXIJICAg KnJlYyA9IFhMb2dSZWNHZXREYXRhKHJlY29yZCk7CiAJdWludDgJCWluZm8gPSBYTG9nUmVjR2V0 SW5mbyhyZWNvcmQpICYgflhMUl9JTkZPX01BU0s7CisJY2hhcgkgICAqbWFpbmRhdGFwdHIgPSBy ZWMgKyBTaXplT2ZIZWFwUHJ1bmU7CiAKIAlpbmZvICY9IFhMT0dfSEVBUF9PUE1BU0s7CiAJaWYg KGluZm8gPT0gWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1MgfHwKQEAgLTI3OCw3ICsyNzksOCBA QCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJ ewogCQkJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQ7CiAKLQkJCW1lbWNweSgmY29uZmxpY3Rf eGlkLCByZWMgKyBTaXplT2ZIZWFwUHJ1bmUsIHNpemVvZihUcmFuc2FjdGlvbklkKSk7CisJCQlt ZW1jcHkoJmNvbmZsaWN0X3hpZCwgbWFpbmRhdGFwdHIsIHNpemVvZihUcmFuc2FjdGlvbklkKSk7 CisJCQltYWluZGF0YXB0ciArPSBzaXplb2YoVHJhbnNhY3Rpb25JZCk7CiAKIAkJCWFwcGVuZFN0 cmluZ0luZm8oYnVmLCAic25hcHNob3RDb25mbGljdEhvcml6b246ICV1IiwKIAkJCQkJCQkgY29u ZmxpY3RfeGlkKTsKQEAgLTI4Nyw2ICsyODksMTUgQEAgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1 ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCBp c0NhdGFsb2dSZWw6ICVjIiwKIAkJCQkJCSB4bHJlYy0+ZmxhZ3MgJiBYTEhQX0lTX0NBVEFMT0df UkVMID8gJ1QnIDogJ0YnKTsKIAorCQlpZiAoeGxyZWMtPmZsYWdzICYgWExIUF9IQVNfVk1GTEFH UykKKwkJeworCQkJdWludDgJCXZtZmxhZ3M7CisKKwkJCW1lbWNweSgmdm1mbGFncywgbWFpbmRh dGFwdHIsIHNpemVvZih1aW50OCkpOworCQkJbWFpbmRhdGFwdHIgKz0gc2l6ZW9mKHVpbnQ4KTsK KwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCB2bV9mbGFnczogMHglMDJYIiwgdm1mbGFncyk7 CisJCX0KKwogCQlpZiAoWExvZ1JlY0hhc0Jsb2NrRGF0YShyZWNvcmQsIDApKQogCQl7CiAJCQlT aXplCQlkYXRhbGVuOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDUxMjdmZGI5Yzc3Li5kMmFjMzgwYmI2 NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMzQzLDYgKzM0MywxMiBAQCBleHRlcm4gdm9pZCBoZWFw X2lucGxhY2VfdXBkYXRlX2FuZF91bmxvY2soUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJ ICAgQnVmZmVyIGJ1ZmZlcik7CiBleHRlcm4gdm9pZCBoZWFwX2lucGxhY2VfdW5sb2NrKFJlbGF0 aW9uIHJlbGF0aW9uLAogCQkJCQkJCQlIZWFwVHVwbGUgb2xkdHVwLCBCdWZmZXIgYnVmZmVyKTsK KworZXh0ZXJuIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIGJ1ZiwKKwkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkg Ym9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1 dG9mZl94aWQsCisJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CiBleHRl cm4gYm9vbCBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlKEhlYXBUdXBsZUhlYWRlciB0dXBsZSwK IAkJCQkJCQkJCSAgY29uc3Qgc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnMsCiAJCQkJCQkJ CQkgIEhlYXBQYWdlRnJlZXplICpwYWdlZnJ6LApAQCAtMzkzLDYgKzM5OSw5IEBAIGV4dGVybiB2 b2lkIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1ZmZlciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNh dGVfb25seSwKIAkJCQkJCQkJCU9mZnNldE51bWJlciAqbm93dW51c2VkLCBpbnQgbnVudXNlZCk7 CiBleHRlcm4gdm9pZCBoZWFwX2dldF9yb290X3R1cGxlcyhQYWdlIHBhZ2UsIE9mZnNldE51bWJl ciAqcm9vdF9vZmZzZXRzKTsKIGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCisJCQkJCQkJCQkgIEJ1ZmZlciB2bWJ1 ZmZlciwKKwkJCQkJCQkJCSAgdWludDggdm1mbGFncywKKwkJCQkJCQkJCSAgYm9vbCB2bV9tb2Rp ZmllZF9oZWFwX3BhZ2UsCiAJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkLAog CQkJCQkJCQkJICBib29sIGNsZWFudXBfbG9jaywKIAkJCQkJCQkJCSAgUHJ1bmVSZWFzb24gcmVh c29uLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAppbmRleCAyNzdkZjZiM2NmMC4uY2VhZTljMDgz ZmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCkBAIC0yOTUsNiArMjk1LDkgQEAgdHlwZWRl ZiBzdHJ1Y3QgeGxfaGVhcF9wcnVuZQogCiAjZGVmaW5lIFNpemVPZkhlYXBQcnVuZSAob2Zmc2V0 b2YoeGxfaGVhcF9wcnVuZSwgZmxhZ3MpICsgc2l6ZW9mKHVpbnQ4KSkKIAorLyogSWYgdGhlIHJl Y29yZCBzaG91bGQgdXBkYXRlIHRoZSBWTSwgdGhpcyBpcyB0aGUgbmV3IHZhbHVlICovCisjZGVm aW5lCQlYTEhQX0hBU19WTUZMQUdTCQkJKDEgPDwgMCkKKwogLyogdG8gaGFuZGxlIHJlY292ZXJ5 IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KICNkZWZpbmUJ CVhMSFBfSVNfQ0FUQUxPR19SRUwJCQkoMSA8PCAxKQogCi0tIAoyLjM0LjEKCg== --000000000000459e560638430326 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0008-Use-xl_heap_prune-record-for-setting-empty-pages-.patch" Content-Disposition: attachment; filename="v1-0008-Use-xl_heap_prune-record-for-setting-empty-pages-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc9jjx7n7 RnJvbSA1MmRhZGE4MGRiMmI1ZjVmNmU1ODEwYzYzM2Q5NTNkMDNhZDEwYzA1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQyOjE5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MSAwOC8xNF0gVXNlIHhsX2hlYXBfcHJ1bmUgcmVjb3JkIGZvciBzZXR0aW5nIGVtcHR5 IHBhZ2VzCiBhbGwtdmlzaWJsZQoKQXMgcGFydCBvZiBhIHByb2plY3QgdG8gZWxpbWluYXRlIHhs X2hlYXBfdmlzaWJsZSByZWNvcmRzLCBlbGltaW5hdGUKdGhlaXIgdXNhZ2UgaW4gcGhhc2UgSSB2 YWN1dW0gb2YgZW1wdHkgcGFnZXMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgIHwgMTQgKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMg fCA2NCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVh cGFtLmggICAgICAgICAgfCAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyks IDI1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggZDli YTBmOTZlMzQuLjk3ZTUxZjc4ODU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpA QCAtODM2LDYgKzgzNiw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCWNvbmZsaWN0X3hpZCA9IHByc3RhdGUubGF0ZXN0 X3hpZF9yZW1vdmVkOwogCiAJCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKHJlbGF0aW9uLCBi dWZmZXIsCisJCQkJCQkJCQkgIGZhbHNlLAogCQkJCQkJCQkJICBJbnZhbGlkQnVmZmVyLCAwLCBm YWxzZSwKIAkJCQkJCQkJCSAgY29uZmxpY3RfeGlkLAogCQkJCQkJCQkJICB0cnVlLCByZWFzb24s CkBAIC0yMDUxLDYgKzIwNTIsOSBAQCBoZWFwX2xvZ19mcmVlemVfcGxhbihIZWFwVHVwbGVGcmVl emUgKnR1cGxlcywgaW50IG50dXBsZXMsCiAgKiBjYXNlLCB2bWJ1ZmZlciBzaG91bGQgYWxyZWFk eSBoYXZlIGJlZW4gdXBkYXRlZCBhbmQgbWFya2VkIGRpcnR5IGFuZCBzaG91bGQKICAqIHN0aWxs IGJlIHBpbm5lZCBhbmQgbG9ja2VkLgogICoKKyAqIGZvcmNlX2hlYXBfZnBpIGluZGljYXRlcyB0 aGF0IGEgZnVsbCBwYWdlIGltYWdlIG9mIHRoZSBoZWFwIGJsb2NrIHNob3VsZCBiZQorICogZm9y Y2VkLgorICoKICAqIHNldF9wZF9hbGxfdmlzIGluZGljYXRlcyB0aGF0IHdlIHNldCBQRF9BTExf VklTSUJMRSBhbmQgdGh1cyBzaG91bGQgdXBkYXRlCiAgKiB0aGUgcGFnZSBMU04gd2hlbiBjaGVj a3N1bXMvd2FsX2xvZ19oaW50cyBhcmUgZW5hYmxlZCBldmVuIGlmIHdlIGRpZCBub3QKICAqIHBy dW5lIG9yIGZyZWV6ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCkBAIC0yMDYxLDYgKzIwNjUsNyBAQCBo ZWFwX2xvZ19mcmVlemVfcGxhbihIZWFwVHVwbGVGcmVlemUgKnR1cGxlcywgaW50IG50dXBsZXMs CiAgKi8KIHZvaWQKIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24s IEJ1ZmZlciBidWZmZXIsCisJCQkJCQkgIGJvb2wgZm9yY2VfaGVhcF9mcGksCiAJCQkJCQkgIEJ1 ZmZlciB2bWJ1ZmZlciwKIAkJCQkJCSAgdWludDggdm1mbGFncywKIAkJCQkJCSAgYm9vbCBzZXRf cGRfYWxsX3ZpcywKQEAgLTIwODksMTMgKzIwOTQsMTYgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAl4bHJlYy5mbGFncyA9IDA7 CiAJcmVnYnVmX2ZsYWdzID0gUkVHQlVGX1NUQU5EQVJEOwogCisJaWYgKGZvcmNlX2hlYXBfZnBp KQorCQlyZWdidWZfZmxhZ3MgfD0gUkVHQlVGX0ZPUkNFX0lNQUdFOworCiAJLyoKIAkgKiBXZSBj YW4gYXZvaWQgYW4gRlBJIGlmIHRoZSBvbmx5IG1vZGlmaWNhdGlvbiB3ZSBhcmUgbWFraW5nIHRv IHRoZSBoZWFwCiAJICogcGFnZSBpcyB0byBzZXQgUERfQUxMX1ZJU0lCTEUgYW5kIGNoZWNrc3Vt cy93YWxfbG9nX2hpbnRzIGFyZSBkaXNhYmxlZC4KIAkgKi8KLQlpZiAoIWRvX3BydW5lICYmCi0J CW5mcm96ZW4gPT0gMCAmJgotCQkoIXNldF9wZF9hbGxfdmlzIHx8ICFYTG9nSGludEJpdElzTmVl ZGVkKCkpKQorCWVsc2UgaWYgKCFkb19wcnVuZSAmJgorCQkJIG5mcm96ZW4gPT0gMCAmJgorCQkJ ICghc2V0X3BkX2FsbF92aXMgfHwgIVhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCiAJCXJlZ2J1Zl9m bGFncyB8PSBSRUdCVUZfTk9fSU1BR0U7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCmluZGV4IDMyZjIxZDIwMTk0Li5iMWZmNDliZWU2YiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTg1MCw2ICsxODUwLDcgQEAgbGF6eV9zY2FuX25ld19vcl9l bXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAog CiAJaWYgKFBhZ2VJc0VtcHR5KHBhZ2UpKQogCXsKKwogCQkvKgogCQkgKiBJdCBzZWVtcyBsaWtl bHkgdGhhdCBjYWxsZXIgd2lsbCBhbHdheXMgYmUgYWJsZSB0byBnZXQgYSBjbGVhbnVwCiAJCSAq IGxvY2sgb24gYW4gZW1wdHkgcGFnZS4gIEJ1dCBkb24ndCB0YWtlIGFueSBjaGFuY2VzIC0tIGVz Y2FsYXRlIHRvCkBAIC0xODc3LDM1ICsxODc4LDUzIEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHko TFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAkJICov CiAJCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKIAkJewotCQkJdWludDgJCW9sZF92bWJp dHM7CisJCQl1aW50OAkJb2xkX3ZtYml0cyA9IDA7CisJCQl1aW50OAkJbmV3X3ZtYml0cyA9IDA7 CiAKLQkJCVNUQVJUX0NSSVRfU0VDVElPTigpOworCQkJbmV3X3ZtYml0cyA9IFZJU0lCSUxJVFlN QVBfQUxMX1ZJU0lCTEUgfAorCQkJCVZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKIAotCQkJLyog bWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdyaXRpbmcgYSBXQUwgcmVjb3JkICovCi0JCQlNYXJr QnVmZmVyRGlydHkoYnVmKTsKKwkJCVNUQVJUX0NSSVRfU0VDVElPTigpOwogCi0JCQkvKgotCQkJ ICogSXQncyBwb3NzaWJsZSB0aGF0IGFub3RoZXIgYmFja2VuZCBoYXMgZXh0ZW5kZWQgdGhlIGhl YXAsCi0JCQkgKiBpbml0aWFsaXplZCB0aGUgcGFnZSwgYW5kIHRoZW4gZmFpbGVkIHRvIFdBTC1s b2cgdGhlIHBhZ2UgZHVlCi0JCQkgKiB0byBhbiBFUlJPUi4gIFNpbmNlIGhlYXAgZXh0ZW5zaW9u IGlzIG5vdCBXQUwtbG9nZ2VkLCByZWNvdmVyeQotCQkJICogbWlnaHQgdHJ5IHRvIHJlcGxheSBv dXIgcmVjb3JkIHNldHRpbmcgdGhlIHBhZ2UgYWxsLXZpc2libGUgYW5kCi0JCQkgKiBmaW5kIHRo YXQgdGhlIHBhZ2UgaXNuJ3QgaW5pdGlhbGl6ZWQsIHdoaWNoIHdpbGwgY2F1c2UgYSBQQU5JQy4K LQkJCSAqIFRvIHByZXZlbnQgdGhhdCwgY2hlY2sgd2hldGhlciB0aGUgcGFnZSBoYXMgYmVlbiBw cmV2aW91c2x5Ci0JCQkgKiBXQUwtbG9nZ2VkLCBhbmQgaWYgbm90LCBkbyB0aGF0IG5vdy4KLQkJ CSAqLwotCQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwodmFjcmVsLT5yZWwpICYmCi0JCQkJUGFnZUdl dExTTihwYWdlKSA9PSBJbnZhbGlkWExvZ1JlY1B0cikKLQkJCQlsb2dfbmV3cGFnZV9idWZmZXIo YnVmLCB0cnVlKTsKLQotCQkJb2xkX3ZtYml0cyA9IGhlYXBfcGFnZV9zZXRfdm1fYW5kX2xvZyh2 YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkJCQkJCSAgdm1idWZmZXIsIEludmFsaWRU cmFuc2FjdGlvbklkLAotCQkJCQkJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwK LQkJCQkJCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKLQkJCUVORF9DUklUX1NF Q1RJT04oKTsKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7 CisJCQlvbGRfdm1iaXRzID0gaGVhcF9wYWdlX3NldF92bSh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1 ZiwKKwkJCQkJCQkJCQkgIHZtYnVmZmVyLCBuZXdfdm1iaXRzKTsKIAogCQkJLyogVk0gYml0cyBj YW5ub3QgaGF2ZSBiZWVuIHNldCBpZiBQRF9BTExfVklTSUJMRSB3YXMgY2xlYXIgKi8KIAkJCUFz c2VydCgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgPT0gMCk7CiAJCQko dm9pZCkgb2xkX3ZtYml0czsgLyogU2lsZW5jZSBjb21waWxlciAqLworCisJCQkvKiBTaG91bGQg aGF2ZSBzZXQgUERfQUxMX1ZJU0lCTEUgYW5kIG1hcmtlZCBidWYgZGlydHkgKi8KKwkJCUFzc2Vy dChCdWZmZXJJc0RpcnR5KGJ1ZikpOworCisJCQlpZiAoUmVsYXRpb25OZWVkc1dBTCh2YWNyZWwt PnJlbCkpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBJdCdzIHBvc3NpYmxlIHRoYXQgYW5vdGhlciBi YWNrZW5kIGhhcyBleHRlbmRlZCB0aGUgaGVhcCwKKwkJCQkgKiBpbml0aWFsaXplZCB0aGUgcGFn ZSwgYW5kIHRoZW4gZmFpbGVkIHRvIFdBTC1sb2cgdGhlIHBhZ2UKKwkJCQkgKiBkdWUgdG8gYW4g RVJST1IuICBTaW5jZSBoZWFwIGV4dGVuc2lvbiBpcyBub3QgV0FMLWxvZ2dlZCwKKwkJCQkgKiBy ZWNvdmVyeSBtaWdodCB0cnkgdG8gcmVwbGF5IG91ciByZWNvcmQgc2V0dGluZyB0aGUgcGFnZQor CQkJCSAqIGFsbC12aXNpYmxlIGFuZCBmaW5kIHRoYXQgdGhlIHBhZ2UgaXNuJ3QgaW5pdGlhbGl6 ZWQsIHdoaWNoCisJCQkJICogd2lsbCBjYXVzZSBhIFBBTklDLiBUbyBwcmV2ZW50IHRoYXQsIGlm IHRoZSBwYWdlIGhhc24ndAorCQkJCSAqIGJlZW4gcHJldmlvdXNseSBXQUwtbG9nZ2VkLCBmb3Jj ZSBhIGhlYXAgRlBJLgorCQkJCSAqLworCQkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUodmFj cmVsLT5yZWwsIGJ1ZiwKKwkJCQkJCQkJCQkgIFBhZ2VHZXRMU04ocGFnZSkgPT0gSW52YWxpZFhM b2dSZWNQdHIsCisJCQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCQkgIG5ld192bWJpdHMs CisJCQkJCQkJCQkJICB0cnVlLAorCQkJCQkJCQkJCSAgSW52YWxpZFRyYW5zYWN0aW9uSWQsCisJ CQkJCQkJCQkJICBmYWxzZSwgUFJVTkVfVkFDVVVNX1NDQU4sCisJCQkJCQkJCQkJICBOVUxMLCAw LAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJCQkJ ICBOVUxMLCAwKTsKKwkJCX0KKworCQkJRU5EX0NSSVRfU0VDVElPTigpOworCisJCQlMb2NrQnVm ZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCiAJCQkvKiBDb3VudCB0aGUgbmV3 bHkgYWxsLWZyb3plbiBwYWdlcyBmb3IgbG9nZ2luZy4gKi8KIAkJCXZhY3JlbC0+dm1fbmV3X3Zp c2libGVfcGFnZXMrKzsKIAkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7 CkBAIC0yODkyLDYgKzI5MTEsNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAq dmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAlpZiAoUmVsYXRpb25O ZWVkc1dBTCh2YWNyZWwtPnJlbCkpCiAJewogCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKHZh Y3JlbC0+cmVsLCBidWZmZXIsCisJCQkJCQkJCSAgZmFsc2UsCiAJCQkJCQkJCSAgdm1idWZmZXIs CiAJCQkJCQkJCSAgdm1mbGFncywKIAkJCQkJCQkJICBzZXRfcGRfYWxsX3ZpcywKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaAppbmRleCBkMmFjMzgwYmI2NC4uMWZhNmViMDQ3ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAg LTM5OSw2ICszOTksNyBAQCBleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZm ZXIgYnVmZmVyLCBib29sIGxwX3RydW5jYXRlX29ubHksCiAJCQkJCQkJCQlPZmZzZXROdW1iZXIg Km5vd3VudXNlZCwgaW50IG51bnVzZWQpOwogZXh0ZXJuIHZvaWQgaGVhcF9nZXRfcm9vdF90dXBs ZXMoUGFnZSBwYWdlLCBPZmZzZXROdW1iZXIgKnJvb3Rfb2Zmc2V0cyk7CiBleHRlcm4gdm9pZCBs b2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LAorCQkJCQkJCQkJICBib29sIGZvcmNlX2hlYXBfZnBpLAogCQkJCQkJCQkJICBCdWZmZXIgdm1i dWZmZXIsCiAJCQkJCQkJCQkgIHVpbnQ4IHZtZmxhZ3MsCiAJCQkJCQkJCQkgIGJvb2wgdm1fbW9k aWZpZWRfaGVhcF9wYWdlLAotLSAKMi4zNC4xCgo= --000000000000459e560638430326 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0010-Combine-vacuum-phase-I-VM-update-cases.patch" Content-Disposition: attachment; filename="v1-0010-Combine-vacuum-phase-I-VM-update-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc9jjx7y9 RnJvbSAwMGQ2YTY0ZjNjNWZhNGQ4N2U1OTk2OGI2MzY5NDE4NDZlNmM1NDJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjM1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MSAxMC8xNF0gQ29tYmluZSB2YWN1dW0gcGhhc2UgSSBWTSB1cGRhdGUgY2FzZXMKCkFm dGVyIHBoYXNlIEkgb2YgdmFjdXVtIHdlIHVwZGF0ZSB0aGUgVk0sIGVpdGhlciBzZXR0aW5nIHRo ZSBWTSBiaXRzCndoZW4gYWxsIGJpdHMgYXJlIGN1cnJlbnRseSB1bnNldCBvciBzZXR0aW5nIGp1 c3QgdGhlIGZyb3plbiBiaXQgd2hlbgp0aGUgYWxsLXZpc2libGUgYml0IGlzIGFscmVhZHkgc2V0 LiBUaG9zZSBjYXNlcyBoYWQgYSBsb3Qgb2YgZHVwbGljYXRlZApjb2RlLiBDb21iaW5lIHRoZW0u IFRoaXMgaXMgc2ltcGxlciB0byB1bmRlcnN0YW5kIGFuZCBhbHNvIGFsbG93cyBtYWtlcwp0aGUg Y29kZSBjb21wYWN0IGVub3VnaCB0byBzdGFydCB1c2luZyB0byB1cGRhdGUgdGhlIFZNIHdoaWxl IHBydW5pbmcKYW5kIGZyZWV6aW5nLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYyB8IDcxICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyMiBpbnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKaW5kZXggODMyOGNhYjA5NTUuLmZkYWMzNmYwODM1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yMTU4LDExICsyMTU4LDI2IEBAIGxhenlfc2Nhbl9w cnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJewogCQkvKiBEb24ndCB1cGRhdGUgdGhlIFZNIGlm IHdlIGp1c3QgY2xlYXJlZCBjb3JydXB0aW9uIGluIGl0ICovCiAJfQotCWVsc2UgaWYgKCFhbGxf dmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJsZSkKKworCS8qCisJ ICogSWYgdGhlIHBhZ2UgaXNuJ3QgeWV0IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUgVk0gb3Ig aXQgaXMgYW5kIG5lZWRzCisJICogdG8gbWUgbWFya2VkIGFsbC1mcm96ZW4sIHVwZGF0ZSB0aGUg Vk0gTm90ZSB0aGF0IGFsbF9mcm96ZW4gaXMgb25seQorCSAqIHZhbGlkIGlmIGFsbF92aXNpYmxl IGlzIHRydWUsIHNvIHdlIG11c3QgY2hlY2sgYm90aCBhbGxfdmlzaWJsZSBhbmQKKwkgKiBhbGxf ZnJvemVuLgorCSAqLworCWVsc2UgaWYgKHByZXN1bHQuYWxsX3Zpc2libGUgJiYKKwkJCSAoIWFs bF92aXNpYmxlX2FjY29yZGluZ190b192bSB8fAorCQkJICAocHJlc3VsdC5hbGxfZnJvemVuICYm ICFWTV9BTExfRlJPWkVOKHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKSkpKQogCXsKIAkJ dWludDgJCW9sZF92bWJpdHM7CiAJCXVpbnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJ U0lCTEU7CiAKKwkJLyoKKwkJICogSWYgdGhlIHBhZ2UgaXMgYWxsLWZyb3plbiwgd2UgY2FuIHBh c3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMgb3VyCisJCSAqIGN1dG9mZl94aWQsIHNpbmNlIGEg c25hcHNob3RDb25mbGljdEhvcml6b24gc3VmZmljaWVudCB0byBtYWtlCisJCSAqIGV2ZXJ5dGhp bmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZQor CQkgKiBmcm96ZW4uCisJCSAqLwogCQlpZiAocHJlc3VsdC5hbGxfZnJvemVuKQogCQl7CiAJCQlB c3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikp OwpAQCAtMjE3NCw2ICsyMTg5LDEyIEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNy ZWwsCiAJCQkJCQkJCQkJCSAgZmxhZ3MpOwogCiAJCS8qCisJCSAqIEV2ZW4gaWYgd2UgYXJlIG9u bHkgc2V0dGluZyB0aGUgYWxsLWZyb3plbiBiaXQsIHRoZXJlIGlzIGEgc21hbGwKKwkJICogY2hh bmNlIHRoYXQgdGhlIFZNIHdhcyBtb2RpZmllZCBzb21ldGltZSBiZXR3ZWVuIHNldHRpbmcKKwkJ ICogYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFuZCBjaGVja2luZyB0aGUgdmlzaWJpbGl0 eSBkdXJpbmcKKwkJICogcHJ1bmluZy4gQ2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBvbGRfdm1i aXRzIHRvIGVuc3VyZSB0aGUKKwkJICogdmlzaWJpbGl0eSBtYXAgY291bnRlcnMgdXNlZCBmb3Ig bG9nZ2luZyBhcmUgYWNjdXJhdGUuCisJCSAqCiAJCSAqIElmIHRoZSBwYWdlIHdhc24ndCBhbHJl YWR5IHNldCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbiBpbiB0aGUKIAkJICogVk0sIGNv dW50IGl0IGFzIG5ld2x5IHNldCBmb3IgbG9nZ2luZy4KIAkJICovCkBAIC0yMTkzLDU0ICsyMjE0 LDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJCSp2bV9wYWdlX2Zy b3plbiA9IHRydWU7CiAJCX0KIAl9Ci0KLQkvKgotCSAqIElmIHRoZSBhbGwtdmlzaWJsZSBwYWdl IGlzIGFsbC1mcm96ZW4gYnV0IG5vdCBtYXJrZWQgYXMgc3VjaCB5ZXQsIG1hcmsKLQkgKiBpdCBh cyBhbGwtZnJvemVuLiAgTm90ZSB0aGF0IGFsbF9mcm96ZW4gaXMgb25seSB2YWxpZCBpZiBhbGxf dmlzaWJsZSBpcwotCSAqIHRydWUsIHNvIHdlIG11c3QgY2hlY2sgYm90aCBhbGxfdmlzaWJsZSBh bmQgYWxsX2Zyb3plbi4KLQkgKi8KLQllbHNlIGlmIChhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9f dm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJsZSAmJgotCQkJIHByZXN1bHQuYWxsX2Zyb3plbiAmJiAh Vk1fQUxMX0ZST1pFTih2YWNyZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZlcikpCi0JewotCQl1aW50 OAkJb2xkX3ZtYml0czsKLQotCQkvKgotCQkgKiBTZXQgdGhlIHBhZ2UgYWxsLWZyb3plbiAoYW5k IGFsbC12aXNpYmxlKSBpbiB0aGUgVk0uCi0JCSAqCi0JCSAqIFdlIGNhbiBwYXNzIEludmFsaWRU cmFuc2FjdGlvbklkIGFzIG91ciBjdXRvZmZfeGlkLCBzaW5jZSBhCi0JCSAqIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uIHN1ZmZpY2llbnQgdG8gbWFrZSBldmVyeXRoaW5nIHNhZmUgZm9yIFJFRE8K LQkJICogd2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzIHdlcmUgZnJvemVuLgotCQkg Ki8KLQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hv cml6b24pKTsKLQkJb2xkX3ZtYml0cyA9IGhlYXBfcGFnZV9zZXRfdm1fYW5kX2xvZyh2YWNyZWwt PnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkJCQkJICB2bWJ1ZmZlciwgSW52YWxpZFRyYW5zYWN0 aW9uSWQsCi0JCQkJCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJ CQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKLQotCQkvKgotCQkgKiBUaGUgcGFnZSB3 YXMgbGlrZWx5IGFscmVhZHkgc2V0IGFsbC12aXNpYmxlIGluIHRoZSBWTS4gSG93ZXZlciwKLQkJ ICogdGhlcmUgaXMgYSBzbWFsbCBjaGFuY2UgdGhhdCBpdCB3YXMgbW9kaWZpZWQgc29tZXRpbWUg YmV0d2VlbgotCQkgKiBzZXR0aW5nIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBhbmQgY2hl Y2tpbmcgdGhlIHZpc2liaWxpdHkKLQkJICogZHVyaW5nIHBydW5pbmcuIENoZWNrIHRoZSByZXR1 cm4gdmFsdWUgb2Ygb2xkX3ZtYml0cyBhbnl3YXkgdG8KLQkJICogZW5zdXJlIHRoZSB2aXNpYmls aXR5IG1hcCBjb3VudGVycyB1c2VkIGZvciBsb2dnaW5nIGFyZSBhY2N1cmF0ZS4KLQkJICovCi0J CWlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCi0JCXsK LQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJCXZhY3JlbC0+dm1fbmV3X3Zp c2libGVfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwotCQl9Ci0K LQkJLyoKLQkJICogV2UgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIHBhZ2Ugd2FzIG5vdCBzZXQg YWxsLWZyb3plbiBpbiB0aGUgVk0KLQkJICogYWJvdmUsIHNvIHdlIGRvbid0IG5lZWQgdG8gdGVz dCB0aGUgdmFsdWUgb2Ygb2xkX3ZtYml0cy4KLQkJICovCi0JCWVsc2UKLQkJewotCQkJdmFjcmVs LT52bV9uZXdfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwotCQl9 Ci0JfQogfQogCiAvKgotLSAKMi4zNC4xCgo= --000000000000459e560638430326 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0012-Update-VM-in-pruneheap.c.patch" Content-Disposition: attachment; filename="v1-0012-Update-VM-in-pruneheap.c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc9jjx8811 RnJvbSA1MzM1N2E3ZTBmNjFlMWVjMDAzMjNjMGNkMTRjOGFmYjNmNjU1YjgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDIgSnVuIDIwMjUgMTE6MDQ6MTQgLTA0MDAKU3ViamVjdDogW1BB VENIIHYxIDEyLzE0XSBVcGRhdGUgVk0gaW4gcHJ1bmVoZWFwLmMKCkFzIGEgc3RlcCB0b3dhcmQg dXBkYXRpbmcgdGhlIFZNIGluIHRoZSBzYW1lIGNyaXRpY2FsIHNlY3Rpb24gYW5kIFdBTApyZWNv cmQgYXMgcHJ1bmluZyBhbmQgZnJlZXppbmcgKGR1cmluZyBwaGFzZSBJIG9mIHZhY3V1bWluZyks IGZpcnN0IG1vdmUKdGhlIFZNIHVwZGF0ZSAoc3RpbGwgaW4gaXRzIG93biBjcml0aWNhbCBzZWN0 aW9uIGFuZCBXQUwgcmVjb3JkKSBpbnRvCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkuIFRo aXMgbWFrZXMgcmV2aWV3IGVhc2llci4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYyAgfCA5OSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCA4MSArKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgIHwgMTUgKysrLS0KIDMgZmlsZXMgY2hh bmdlZCwgMTA2IGluc2VydGlvbnMoKyksIDg5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKaW5kZXggNDk2YjcwZTMxOGYuLjQyNWRjYzc3NTM0IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMzY0LDcgKzM2NCw4IEBAIGlkZW50aWZ5X2FuZF9m aXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxhdGlvbiwKIAogLyoKICAqIFBydW5lIGFuZCBy ZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBvbiB0aGUK LSAqIHNwZWNpZmllZCBwYWdlLgorICogc3BlY2lmaWVkIHBhZ2UuIElmIHRoZSBwYWdlJ3Mgdmlz aWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5nZWQsIHVwZGF0ZSBpdCBpbgorICogdGhlIFZNLgogICoK ICAqIENhbGxlciBtdXN0IGhhdmUgcGluIGFuZCBidWZmZXIgY2xlYW51cCBsb2NrIG9uIHRoZSBw YWdlLiAgTm90ZSB0aGF0IHdlCiAgKiBkb24ndCB1cGRhdGUgdGhlIEZTTSBpbmZvcm1hdGlvbiBm b3IgcGFnZSBvbiBjYWxsZXIncyBiZWhhbGYuICBDYWxsZXIgbWlnaHQKQEAgLTQ0MCw2ICs0NDEs OCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVy IGJ1ZmZlciwKIAlib29sCQlkb19mcmVlemU7CiAJYm9vbAkJZG9fcHJ1bmU7CiAJYm9vbAkJZG9f aGludDsKKwl1aW50OAkJdm1mbGFncyA9IDA7CisJdWludDgJCW9sZF92bWJpdHMgPSAwOwogCWJv b2wJCWhpbnRfYml0X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uud2FsX2Zw aTsKIApAQCAtOTM5LDcgKzk0Miw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqCiAJICogTm93IHRoYXQgZnJlZXppbmcg aGFzIGJlZW4gZmluYWxpemVkLCB1bnNldCBhbGxfdmlzaWJsZSBpZiB0aGVyZSBhcmUKIAkgKiBh bnkgTFBfREVBRCBpdGVtcyBvbiB0aGUgcGFnZS4gIEl0IG5lZWRzIHRvIHJlZmxlY3QgdGhlIHBy ZXNlbnQgc3RhdGUKLQkgKiBvZiB0aGUgcGFnZSwgYXMgZXhwZWN0ZWQgYnkgb3VyIGNhbGxlci4K KwkgKiBvZiB0aGUgcGFnZSwgYXMgZXhwZWN0ZWQgZm9yIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5 IG1hcC4KIAkgKi8KIAlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmxwZGVhZF9p dGVtcyA9PSAwKQogCXsKQEAgLTk1NSwzMSArOTU4LDkxIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXByZXN1bHQtPmhhc3R1 cCA9IHByc3RhdGUuaGFzdHVwOwogCiAJLyoKLQkgKiBGb3IgY2FsbGVycyBwbGFubmluZyB0byB1 cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpvbgotCSAqIGZvciB0 aGF0IHJlY29yZCBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gIEhvd2V2ZXIs IGlmIHRoZQotCSAqIHBhZ2UgaXMgY29tcGxldGVseSBmcm96ZW4sIHRoZXJlIGNhbiBiZSBubyBj b25mbGljdCBhbmQgdGhlCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBzaG91bGQgcmVtYWluIElu dmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcwotCSAqIHRoZSBjYXNlIHRoYXQgd2Ug anVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSByZWNvcmQKLQkgKiBp bmNsdWRlZCB0aGUgY29uZmxpY3QgWElEIGFscmVhZHkgc28gdGhlIGNhbGxlciBkb2Vzbid0IG5l ZWQgaXQuCisJICogSWYgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3Qg aG9yaXpvbiBmb3IgdGhhdCByZWNvcmQKKwkgKiBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0 aGUgcGFnZS4gIEhvd2V2ZXIsIGlmIHRoZSBwYWdlIGlzCisJICogY29tcGxldGVseSBmcm96ZW4s IHRoZXJlIGNhbiBiZSBubyBjb25mbGljdCBhbmQgdGhlIHZtX2NvbmZsaWN0X2hvcml6b24KKwkg KiBzaG91bGQgcmVtYWluIEludmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcyB0aGUg Y2FzZSB0aGF0IHdlCisJICoganVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZy ZWV6ZSByZWNvcmQgaW5jbHVkZWQgdGhlCisJICogY29uZmxpY3QgWElEIGFscmVhZHkgc28gdGhl IFZNIHVwZGF0ZSByZWNvcmQgZG9lc24ndCBuZWVkIGl0LgogCSAqLwogCWlmIChwcmVzdWx0LT5h bGxfZnJvemVuKQogCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7CiAJZWxzZQogCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0 ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7CiAKLQlwcmVzdWx0LT5scGRlYWRfaXRlbXMgPSBwcnN0 YXRlLmxwZGVhZF9pdGVtczsKLQkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJyYXkgd2Fz IGFscmVhZHkgZmlsbGVkIGluICovCi0KIAkvKgotCSAqIENsZWFyIGFueSBWTSBjb3JydXB0aW9u LiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgZG9uZSBpbiBhIGNyaXRpY2FsCi0JICogc2VjdGlv bi4KKwkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3Jt YXRpb24gZnJvbSB0aGUgVk0gKGFzCisJICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxv Y2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCisJICogYWxsX2Zyb3plbiB2YXJp YWJsZXMuCiAJICovCi0JcHJlc3VsdC0+dm1fY29ycnVwdGlvbiA9IGZhbHNlOwogCWlmIChvcHRp b25zICYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSkKLQkJcHJlc3VsdC0+dm1fY29ycnVwdGlv biA9IGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwKLQkJCQkJCQkJCQkJ CQkJCQlibG9ja25vLCBidWZmZXIsIHBhZ2UsCi0JCQkJCQkJCQkJCQkJCQkJYmxrX2tub3duX2F2 LAotCQkJCQkJCQkJCQkJCQkJCXByc3RhdGUubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlcik7CisJewor CQlpZiAoaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHJlbGF0aW9uLAorCQkJCQkJCQkJ CSAgIGJsb2Nrbm8sIGJ1ZmZlciwgcGFnZSwKKwkJCQkJCQkJCQkgICBibGtfa25vd25fYXYsCisJ CQkJCQkJCQkJICAgcHJzdGF0ZS5scGRlYWRfaXRlbXMsIHZtYnVmZmVyKSkKKwkJeworCQkJLyog SWYgd2UgZml4IGNvcnJ1cHRpb24sIGRvbid0IHVwZGF0ZSB0aGUgVk0gZnVydGhlciAqLworCQl9 CisKKwkJLyoKKwkJICogSWYgdGhlIHBhZ2UgaXNuJ3QgeWV0IG1hcmtlZCBhbGwtdmlzaWJsZSBp biB0aGUgVk0gb3IgaXQgaXMgYW5kCisJCSAqIG5lZWRzIHRvIG1lIG1hcmtlZCBhbGwtZnJvemVu LCB1cGRhdGUgdGhlIFZNIE5vdGUgdGhhdCBhbGxfZnJvemVuCisJCSAqIGlzIG9ubHkgdmFsaWQg aWYgYWxsX3Zpc2libGUgaXMgdHJ1ZSwgc28gd2UgbXVzdCBjaGVjayBib3RoCisJCSAqIGFsbF92 aXNpYmxlIGFuZCBhbGxfZnJvemVuLgorCQkgKi8KKwkJZWxzZSBpZiAocHJlc3VsdC0+YWxsX3Zp c2libGUgJiYKKwkJCQkgKCFibGtfa25vd25fYXYgfHwKKwkJCQkgIChwcmVzdWx0LT5hbGxfZnJv emVuICYmICFWTV9BTExfRlJPWkVOKHJlbGF0aW9uLCBibG9ja25vLCAmdm1idWZmZXIpKSkpCisJ CXsKKwkJCUFzc2VydChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKTsKKwkJCXZtZmxhZ3MgPSBW SVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCisJCQkvKgorCQkJICogSWYgdGhlIHBhZ2UgaXMg YWxsLWZyb3plbiwgd2UgY2FuIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMKKwkJCSAqIG91 ciBjdXRvZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIHN1ZmZpY2llbnQg dG8KKwkJCSAqIG1ha2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0 aGUgcGFnZSdzIHR1cGxlcworCQkJICogd2VyZSBmcm96ZW4uCisJCQkgKi8KKwkJCWlmIChwcmVz dWx0LT5hbGxfZnJvemVuKQorCQkJeworCQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQo cHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbikpOworCQkJCXZtZmxhZ3MgfD0gVklTSUJJTElU WU1BUF9BTExfRlJPWkVOOworCQkJfQorCisJCQkvKgorCQkJICogSXQncyBwb3NzaWJsZSBmb3Ig dGhlIFZNIGJpdCB0byBiZSBjbGVhciBhbmQgdGhlIHBhZ2UtbGV2ZWwgYml0CisJCQkgKiB0byBi ZSBzZXQgaWYgY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZC4KKwkJCSAqCisJCQkgKiBBbmQgZXZl biBpZiB3ZSBhcmUganVzdCBwbGFubmluZyB0byB1cGRhdGUgdGhlIGZyb3plbiBiaXQgaW4KKwkJ CSAqIHRoZSBWTSwgd2Ugc2hvdWxkbid0IHJlbHkgb24gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3Rv X3ZtIGFzIGEKKwkJCSAqIHByb3h5IGZvciB0aGUgcGFnZS1sZXZlbCBQRF9BTExfVklTSUJMRSBi aXQgYmVpbmcgc2V0LCBzaW5jZSBpdAorCQkJICogbWlnaHQgaGF2ZSBiZWNvbWUgc3RhbGUuCisJ CQkgKgorCQkJICogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJp dCBpcyBub3Qgc2V0LCB3ZQorCQkJICogZG9uJ3QgbmVlZCB0byBkaXJ0eSB0aGUgaGVhcCBwYWdl LiAgSG93ZXZlciwgaWYgY2hlY2tzdW1zIGFyZQorCQkJICogZW5hYmxlZCwgd2UgZG8gbmVlZCB0 byBtYWtlIHN1cmUgdGhhdCB0aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQKKwkJCSAqIGJlZm9yZSBw YXNzaW5nIGl0IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlCisJCQkg KiBsb2dnZWQuCisJCQkgKi8KKwkJCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSB8fCBYTG9n SGludEJpdElzTmVlZGVkKCkpCisJCQl7CisJCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJ CQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisJCQl9CisKKwkJCW9sZF92bWJpdHMgPSBoZWFw X3BhZ2Vfc2V0X3ZtX2FuZF9sb2cocmVsYXRpb24sIGJsb2Nrbm8sIGJ1ZmZlciwKKwkJCQkJCQkJ CQkJCSAgdm1idWZmZXIsIHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24sCisJCQkJCQkJCQkJ CQkgIHZtZmxhZ3MpOworCQl9CisJfQorCisJcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0gcHJzdGF0 ZS5scGRlYWRfaXRlbXM7CisJLyogdGhlIHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5IHdhcyBh bHJlYWR5IGZpbGxlZCBpbiAqLworCisJcHJlc3VsdC0+b2xkX3ZtYml0cyA9IG9sZF92bWJpdHM7 CisJcHJlc3VsdC0+bmV3X3ZtYml0cyA9IHZtZmxhZ3M7CisKIAlpZiAocHJzdGF0ZS5mcmVlemUp CiAJewogCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMKaW5kZXggNTkyY2Q0NTVjZjQuLjU4MDYyMDdhNjc0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xOTQwLDcgKzE5NDAsNiBAQCBsYXp5X3NjYW5fbmV3X29y X2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIgYmxrbm8s CiAJcmV0dXJuIGZhbHNlOwogfQogCi0KIC8qIHFzb3J0IGNvbXBhcmF0b3IgZm9yIHNvcnRpbmcg T2Zmc2V0TnVtYmVycyAqLwogc3RhdGljIGludAogY21wT2Zmc2V0TnVtYmVycyhjb25zdCB2b2lk ICphLCBjb25zdCB2b2lkICpiKQpAQCAtMTk1Niw3ICsxOTU1LDggQEAgY21wT2Zmc2V0TnVtYmVy cyhjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogICogdm1idWZmZXIgaXMgdGhlIGJ1ZmZl ciBjb250YWluaW5nIHRoZSBWTSBibG9jayB3aXRoIHZpc2liaWxpdHkgaW5mb3JtYXRpb24KICAq IGZvciB0aGUgaGVhcCBibG9jaywgYmxrbm8uIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBp cyB0aGUgc2F2ZWQKICAqIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFwIGJsb2NrIGxvb2tl ZCB1cCBlYXJsaWVyIGJ5IHRoZSBjYWxsZXIuIFdlCi0gKiB3b24ndCByZWx5IGVudGlyZWx5IG9u IHRoaXMgc3RhdHVzLCBhcyBpdCBtYXkgYmUgb3V0IG9mIGRhdGUuCisgKiB3b24ndCByZWx5IGVu dGlyZWx5IG9uIHRoaXMgc3RhdHVzLCBhcyBpdCBtYXkgYmUgb3V0IG9mIGRhdGUuIFRoZXNlIHdp bGwgYmUKKyAqIHBhc3NlZCBvbiB0byBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvIHVz ZSB3aGlsZSBzZXR0aW5nIHRoZSBWTS4KICAqCiAgKiAqaGFzX2xwZGVhZF9pdGVtcyBpcyBzZXQg dG8gdHJ1ZSBvciBmYWxzZSBkZXBlbmRpbmcgb24gd2hldGhlciwgdXBvbiByZXR1cm4KICAqIGZy b20gdGhpcyBmdW5jdGlvbiwgYW55IExQX0RFQUQgaXRlbXMgYXJlIHN0aWxsIHByZXNlbnQgb24g dGhlIHBhZ2UuCkBAIC0xOTgzLDYgKzE5ODMsNyBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0 ZSAqdmFjcmVsLAogCiAJLyoKIAkgKiBQcnVuZSBhbGwgSE9ULXVwZGF0ZSBjaGFpbnMgYW5kIHBv dGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24gdGhpcyBwYWdlLgorCSAqIFRoZW4sIGlmIHRoZSBw YWdlJ3MgdmlzaWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5nZWQsIHVwZGF0ZSB0aGUgVk0uCiAJICoK IAkgKiBJZiB0aGUgcmVsYXRpb24gaGFzIG5vIGluZGV4ZXMsIHdlIGNhbiBpbW1lZGlhdGVseSBt YXJrIHdvdWxkLWJlIGRlYWQKIAkgKiBpdGVtcyBMUF9VTlVTRUQuCkBAIC0xOTkxLDEwICsxOTky LDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkgKiBwcmVzdWx0Lm5k ZWxldGVkLiAgSXQgc2hvdWxkIG5vdCBiZSBjb25mdXNlZCB3aXRoIHByZXN1bHQubHBkZWFkX2l0 ZW1zOwogCSAqIHByZXN1bHQubHBkZWFkX2l0ZW1zJ3MgZmluYWwgdmFsdWUgY2FuIGJlIHRob3Vn aHQgb2YgYXMgdGhlIG51bWJlciBvZgogCSAqIHR1cGxlcyB0aGF0IHdlcmUgZGVsZXRlZCBmcm9t IGluZGV4ZXMuCi0JICoKLQkgKiBXZSB3aWxsIHVwZGF0ZSB0aGUgVk0gYWZ0ZXIgY29sbGVjdGlu ZyBMUF9ERUFEIGl0ZW1zIGFuZCBmcmVlemluZwotCSAqIHR1cGxlcy4gUHJ1bmluZyB3aWxsIGhh dmUgZGV0ZXJtaW5lZCB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcwotCSAqIGFsbC12aXNpYmxl LgogCSAqLwogCXBydW5lX29wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIHwgSEVBUF9Q QUdFX1BSVU5FX1VQREFURV9WTTsKIAlpZiAodmFjcmVsLT5uaW5kZXhlcyA9PSAwKQpAQCAtMjA4 Niw3MCArMjA4MywyNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCUFz c2VydCghcHJlc3VsdC5hbGxfdmlzaWJsZSB8fCAhKCpoYXNfbHBkZWFkX2l0ZW1zKSk7CiAKIAkv KgotCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBpbmZvcm1h dGlvbiBmcm9tIHRoZSBWTSAoYXMKLQkgKiBvZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9j aygpIGNhbGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBhbGxfZnJvemVuIHZhcmlh Ymxlcy4KLQkgKi8KLQlpZiAocHJlc3VsdC52bV9jb3JydXB0aW9uKQotCXsKLQkJLyogRG9uJ3Qg dXBkYXRlIHRoZSBWTSBpZiB3ZSBqdXN0IGNsZWFyZWQgY29ycnVwdGlvbiBpbiBpdCAqLwotCX0K LQotCS8qCi0JICogSWYgdGhlIHBhZ2UgaXNuJ3QgeWV0IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0 aGUgVk0gb3IgaXQgaXMgYW5kIG5lZWRzCi0JICogdG8gbWUgbWFya2VkIGFsbC1mcm96ZW4sIHVw ZGF0ZSB0aGUgVk0gTm90ZSB0aGF0IGFsbF9mcm96ZW4gaXMgb25seQotCSAqIHZhbGlkIGlmIGFs bF92aXNpYmxlIGlzIHRydWUsIHNvIHdlIG11c3QgY2hlY2sgYm90aCBhbGxfdmlzaWJsZSBhbmQK LQkgKiBhbGxfZnJvemVuLgorCSAqIEZvciB0aGUgcHVycG9zZXMgb2YgbG9nZ2luZywgY291bnQg d2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2FzIG5ld2x5CisJICogc2V0IGFsbC12aXNpYmxlIGFu ZCwgcG90ZW50aWFsbHksIGFsbC1mcm96ZW4uCiAJICovCi0JZWxzZSBpZiAocHJlc3VsdC5hbGxf dmlzaWJsZSAmJgotCQkJICghYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIHx8Ci0JCQkgIChw cmVzdWx0LmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9GUk9aRU4odmFjcmVsLT5yZWwsIGJsa25vLCAm dm1idWZmZXIpKSkpCisJaWYgKChwcmVzdWx0Lm9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FM TF9WSVNJQkxFKSA9PSAwICYmCisJCShwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQ X0FMTF9WSVNJQkxFKSAhPSAwKQogCXsKLQkJdWludDgJCW9sZF92bWJpdHM7Ci0JCXVpbnQ4CQlm bGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7Ci0KLQkJLyoKLQkJICogSWYgdGhlIHBh Z2UgaXMgYWxsLWZyb3plbiwgd2UgY2FuIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMgb3Vy Ci0JCSAqIGN1dG9mZl94aWQsIHNpbmNlIGEgc25hcHNob3RDb25mbGljdEhvcml6b24gc3VmZmlj aWVudCB0byBtYWtlCi0JCSAqIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdo ZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZQotCQkgKiBmcm96ZW4uCi0JCSAqLwotCQlpZiAocHJl c3VsdC5hbGxfZnJvemVuKQotCQl7Ci0JCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHBy ZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOwotCQkJZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9B TExfRlJPWkVOOwotCQl9Ci0KLQkJb2xkX3ZtYml0cyA9IGhlYXBfcGFnZV9zZXRfdm1fYW5kX2xv Zyh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkJCQkJICB2bWJ1ZmZlciwgcHJlc3Vs dC52bV9jb25mbGljdF9ob3Jpem9uLAotCQkJCQkJCQkJCQkgIGZsYWdzKTsKLQotCQkvKgotCQkg KiBFdmVuIGlmIHdlIGFyZSBvbmx5IHNldHRpbmcgdGhlIGFsbC1mcm96ZW4gYml0LCB0aGVyZSBp cyBhIHNtYWxsCi0JCSAqIGNoYW5jZSB0aGF0IHRoZSBWTSB3YXMgbW9kaWZpZWQgc29tZXRpbWUg YmV0d2VlbiBzZXR0aW5nCi0JCSAqIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBhbmQgY2hl Y2tpbmcgdGhlIHZpc2liaWxpdHkgZHVyaW5nCi0JCSAqIHBydW5pbmcuIENoZWNrIHRoZSByZXR1 cm4gdmFsdWUgb2Ygb2xkX3ZtYml0cyB0byBlbnN1cmUgdGhlCi0JCSAqIHZpc2liaWxpdHkgbWFw IGNvdW50ZXJzIHVzZWQgZm9yIGxvZ2dpbmcgYXJlIGFjY3VyYXRlLgotCQkgKgotCQkgKiBJZiB0 aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgYW5kL29yIGFsbC1mcm96ZW4g aW4gdGhlCi0JCSAqIFZNLCBjb3VudCBpdCBhcyBuZXdseSBzZXQgZm9yIGxvZ2dpbmcuCi0JCSAq LwotCQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSA9PSAwKQot CQl7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7Ci0JCQlpZiAocHJlc3VsdC5h bGxfZnJvemVuKQotCQkJewotCQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2Vz Kys7Ci0JCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKLQkJCX0KLQkJfQotCQllbHNlIGlmICgo b2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgPT0gMCAmJgotCQkJCSBwcmVz dWx0LmFsbF9mcm96ZW4pCisJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKKwkJaWYg KChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9IDApCiAJ CXsKLQkJCXZhY3JlbC0+dm1fbmV3X2Zyb3plbl9wYWdlcysrOworCQkJdmFjcmVsLT52bV9uZXdf dmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKIAkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7CiAJCX0K IAl9CisJZWxzZSBpZiAoKHByZXN1bHQub2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZS T1pFTikgPT0gMCAmJgorCQkJIChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU4pICE9IDApCisJeworCQlBc3NlcnQoKHByZXN1bHQubmV3X3ZtYml0cyAmIFZJU0lC SUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9IDApOworCQl2YWNyZWwtPnZtX25ld19mcm96ZW5fcGFn ZXMrKzsKKwkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt LmgKaW5kZXggMDg4Njg2N2ExNjEuLjUzNGE2M2FhYjMxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0y MzQsMjAgKzIzNCwyMSBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWludAkJ CXJlY2VudGx5X2RlYWRfdHVwbGVzOwogCiAJLyoKLQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zy b3plbiBpbmRpY2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KLQkgKiBiaXRz IGluIHRoZSB2aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UsIGFmdGVyIHBy dW5pbmcuCisJICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gaW5kaWNhdGUgdGhlIHN0YXR1 cyBvZiB0aGUgcGFnZSBhcyByZWZsZWN0ZWQKKwkgKiBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0 ZXIgcHJ1bmluZywgZnJlZXppbmcsIGFuZCBzZXR0aW5nIGFueSBwYWdlcworCSAqIGFsbC12aXNp YmxlIGluIHRoZSB2aXNpYmlsaXR5IG1hcC4KIAkgKgotCSAqIHZtX2NvbmZsaWN0X2hvcml6b24g aXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiAgVGhlCi0JICog Y2FsbGVyIGNhbiB1c2UgaXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24gd2hlbiBzZXR0aW5nIHRo ZSBWTSBiaXRzLiAgSXQKLQkgKiBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVz IChuZnJvemVuID4gMCksIGFuZCBhbGxfZnJvemVuIGlzCi0JICogdHJ1ZS4KKwkgKiB2bV9jb25m bGljdF9ob3Jpem9uIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFn ZQorCSAqIChvbGRlciB0aGFuIE9sZGVzdFhtaW4pLiAgSXQgd2lsbCBvbmx5IGJlIHZhbGlkIGlm IHdlIGRpZCBub3Qgc2V0IHRoZQorCSAqIHBhZ2UgYWxsLWZyb3plbiBpbiB0aGUgVk0uCiAJICoK IAkgKiBUaGVzZSBhcmUgb25seSBzZXQgaWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBp cyBzZXQuCiAJICovCiAJYm9vbAkJYWxsX3Zpc2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKIAlU cmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0X2hvcml6b247Ci0JYm9vbAkJdm1fY29ycnVwdGlvbjsK Kwl1aW50OAkJb2xkX3ZtYml0czsKKwl1aW50OAkJbmV3X3ZtYml0czsKIAogCS8qCiAJICogV2hl dGhlciBvciBub3QgdGhlIHBhZ2UgbWFrZXMgcmVsIHRydW5jYXRpb24gdW5zYWZlLiAgVGhpcyBp cyBzZXQgdG8KLS0gCjIuMzQuMQoK --000000000000459e560638430326 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0014-Remove-xl_heap_visible-entirely.patch" Content-Disposition: attachment; filename="v1-0014-Remove-xl_heap_visible-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc9jjx8i13 RnJvbSA1MWNlMGM3MTcxNTJjMzE2YTI5Y2U5N2VkZjZkZmQ4ZjcyMGMzY2JhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjMwOjQyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MSAxNC8xNF0gUmVtb3ZlIHhsX2hlYXBfdmlzaWJsZSBlbnRpcmVseQoKVGhlcmUgYXJl IG5vdyBubyB1c2VycyBvZiB0aGlzLCBzbyBlbGltaW5hdGUgaXQgZW50aXJlbHkuCgpjaS1vcy1v bmx5OgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jICAgICAgfCAgIDMg Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgfCAgODMgKy0tLS0t LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICB8IDE0OSAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0 eW1hcC5jICB8IDEwMSArLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy9oZWFwZGVzYy5jICAgfCAgMTAgLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv ZGVjb2RlLmMgfCAgIDEgLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAg ICB8ICAgMyAtCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCAgICAgICAgIHwgICA2 IC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmggICAgICAgfCAgMTAgKy0KIDkg ZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMzU0IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKaW5kZXggYmIyNjBjZmZhNjguLjFmZmYwMTM4M2IzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2suYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2suYwpAQCAtNTYsOCArNTYsNyBAQCBtYXNrX3Bh Z2VfaGludF9iaXRzKFBhZ2UgcGFnZSkKIAogCS8qCiAJICogRHVyaW5nIHJlcGxheSwgaWYgdGhl IHBhZ2UgTFNOIGhhcyBhZHZhbmNlZCBwYXN0IG91ciBYTE9HIHJlY29yZCdzIExTTiwKLQkgKiB3 ZSBkb24ndCBtYXJrIHRoZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUgaGVhcF94bG9nX3Zpc2libGUo KSBmb3IKLQkgKiBkZXRhaWxzLgorCSAqIHdlIGRvbid0IG1hcmsgdGhlIHBhZ2UgYWxsLXZpc2li bGUuCiAJICovCiAJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdlKTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMKaW5kZXggM2Q5YjExNGI0ZTguLjZmMTM0ZGZkNTM1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy92YWxpZC5oIgog I2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dp bnNlcnQuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19kYXRhYmFzZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2VfZC5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgpAQCAtNzg0NSw0MyArNzg0Niw2IEBAIGhlYXBfdHVw bGVfbmVlZHNfZXZlbnR1YWxfZnJlZXplKEhlYXBUdXBsZUhlYWRlciB0dXBsZSkKIAlyZXR1cm4g ZmFsc2U7CiB9CiAKLS8qCi0gKiBNYWtlIHRoZSBoZWFwIGFuZCBWTSBwYWdlIGNoYW5nZXMgbmVl ZGVkIHRvIHNldCBhIHBhZ2UgYWxsLXZpc2libGUuCi0gKiBEbyBub3QgY2FsbCBpbiByZWNvdmVy eS4KLSAqLwotdWludDgKLWhlYXBfcGFnZV9zZXRfdm1fYW5kX2xvZyhSZWxhdGlvbiByZWwsIEJs b2NrTnVtYmVyIGhlYXBfYmxrLCBCdWZmZXIgaGVhcF9idWYsCi0JCQkJCQkgQnVmZmVyIHZtYnVm LCBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCi0JCQkJCQkgdWludDggdm1mbGFncykKLXsKLQlQ YWdlCQloZWFwX3BhZ2UgPSBCdWZmZXJHZXRQYWdlKGhlYXBfYnVmKTsKLQlib29sCQlzZXRfaGVh cF9sc24gPSBmYWxzZTsKLQotCUFzc2VydChCdWZmZXJJc1ZhbGlkKGhlYXBfYnVmKSk7Ci0KLQkv KiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IGhlYXAgcGFnZSBwaW5uZWQsIGlmIHByZXNl bnQgKi8KLQlpZiAoQnVmZmVyR2V0QmxvY2tOdW1iZXIoaGVhcF9idWYpICE9IGhlYXBfYmxrKQot CQllbG9nKEVSUk9SLCAid3JvbmcgaGVhcCBidWZmZXIgcGFzc2VkIHRvIGhlYXBfcGFnZV9zZXRf dm1fYW5kX2xvZyIpOwotCi0JLyoKLQkgKiBXZSBtdXN0IG5ldmVyIGVuZCB1cCB3aXRoIHRoZSBW TSBiaXQgc2V0IGFuZCB0aGUgcGFnZS1sZXZlbAotCSAqIFBEX0FMTF9WSVNJQkxFIGJpdCBjbGVh ci4gSWYgdGhhdCB3ZXJlIHRvIG9jY3VyLCBhIHN1YnNlcXVlbnQgcGFnZQotCSAqIG1vZGlmaWNh dGlvbiB3b3VsZCBmYWlsIHRvIGNsZWFyIHRoZSBWTSBiaXQuIFRob3VnaCBpdCBpcyBwb3NzaWJs ZSBmb3IKLQkgKiB0aGUgcGFnZS1sZXZlbCBiaXQgdG8gYmUgc2V0IGFuZCB0aGUgVk0gYml0IHRv IGJlIGNsZWFyIGlmIGNoZWNrc3VtcwotCSAqIGFuZCB3YWxfbG9nX2hpbnRzIGFyZSBub3QgZW5h YmxlZC4KLQkgKi8KLQlpZiAoIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSkKLQl7Ci0JCVBh Z2VTZXRBbGxWaXNpYmxlKGhlYXBfcGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShoZWFwX2J1Zik7 Ci0JCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCQlzZXRfaGVhcF9sc24gPSB0cnVlOwot CX0KLQotCXJldHVybiB2aXNpYmlsaXR5bWFwX3NldChyZWwsIGhlYXBfYmxrLCBoZWFwX2J1ZiwK LQkJCQkJCQkgSW52YWxpZFhMb2dSZWNQdHIsIHZtYnVmLCBjdXRvZmZfeGlkLCB2bWZsYWdzLCBz ZXRfaGVhcF9sc24pOwotfQotCiAvKgogICogRW5zdXJlIHRoZSBwcm92aWRlZCBoZWFwIHBhZ2Ug aXMgbWFya2VkIFBEX0FMTF9WSVNJQkxFIGFuZCB0aGVuIHNldCB0aGUKICAqIHByb3ZpZGVkIHZt ZmxhZ3MgaW4gdGhlIHByb3ZpZGVkIHZtYnVmLgpAQCAtNzkyMyw3ICs3ODg3LDcgQEAgaGVhcF9w YWdlX3NldF92bShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBfYmxrLCBCdWZmZXIgaGVh cF9idWYsCiAJCU1hcmtCdWZmZXJEaXJ0eShoZWFwX2J1Zik7CiAJfQogCi0JcmV0dXJuIHZpc2li aWxpdHltYXBfc2V0X3ZtYnl0ZShyZWwsIGhlYXBfYmxrLCB2bWJ1Ziwgdm1mbGFncyk7CisJcmV0 dXJuIHZpc2liaWxpdHltYXBfc2V0KHJlbCwgaGVhcF9ibGssIHZtYnVmLCB2bWZsYWdzKTsKIH0K IAogLyoKQEAgLTg4NjUsNDkgKzg4MjksNiBAQCBib3R0b211cF9zb3J0X2FuZF9zaHJpbmsoVE1f SW5kZXhEZWxldGVPcCAqZGVsc3RhdGUpCiAJcmV0dXJuIG5ibG9ja3NmYXZvcmFibGU7CiB9CiAK LS8qCi0gKiBQZXJmb3JtIFhMb2dJbnNlcnQgZm9yIGEgaGVhcC12aXNpYmxlIG9wZXJhdGlvbi4g ICdibG9jaycgaXMgdGhlIGJsb2NrCi0gKiBiZWluZyBtYXJrZWQgYWxsLXZpc2libGUsIGFuZCB2 bV9idWZmZXIgaXMgdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZQotICogY29ycmVzcG9uZGluZyB2 aXNpYmlsaXR5IG1hcCBibG9jay4gIEJvdGggc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIG1vZGlm aWVkCi0gKiBhbmQgZGlydGllZC4KLSAqCi0gKiBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBjb21l cyBmcm9tIHRoZSBsYXJnZXN0IHhtaW4gb24gdGhlIHBhZ2UgYmVpbmcKLSAqIG1hcmtlZCBhbGwt dmlzaWJsZS4gIFJFRE8gcm91dGluZSB1c2VzIGl0IHRvIGdlbmVyYXRlIHJlY292ZXJ5IGNvbmZs aWN0cy4KLSAqCi0gKiBJZiBjaGVja3N1bXMgb3Igd2FsX2xvZ19oaW50cyBhcmUgZW5hYmxlZCwg d2UgbWF5IGFsc28gZ2VuZXJhdGUgYSBmdWxsLXBhZ2UKLSAqIGltYWdlIG9mIGhlYXBfYnVmZmVy LiBPdGhlcndpc2UsIHdlIG9wdGltaXplIGF3YXkgdGhlIEZQSSAoYnkgc3BlY2lmeWluZwotICog UkVHQlVGX05PX0lNQUdFIGZvciB0aGUgaGVhcCBidWZmZXIpLCBpbiB3aGljaCBjYXNlIHRoZSBj YWxsZXIgc2hvdWxkICpub3QqCi0gKiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4KLSAqLwot WExvZ1JlY1B0cgotbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1 ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwKLQkJCQkgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZs aWN0SG9yaXpvbiwgdWludDggdm1mbGFncykKLXsKLQl4bF9oZWFwX3Zpc2libGUgeGxyZWM7Ci0J WExvZ1JlY1B0cglyZWNwdHI7Ci0JdWludDgJCWZsYWdzOwotCi0JQXNzZXJ0KEJ1ZmZlcklzVmFs aWQoaGVhcF9idWZmZXIpKTsKLQlBc3NlcnQoQnVmZmVySXNWYWxpZCh2bV9idWZmZXIpKTsKLQot CXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247 Ci0JeGxyZWMuZmxhZ3MgPSB2bWZsYWdzOwotCWlmIChSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9n aWNhbERlY29kaW5nKHJlbCkpCi0JCXhscmVjLmZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfWExPR19D QVRBTE9HX1JFTDsKLQlYTG9nQmVnaW5JbnNlcnQoKTsKLQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJl YywgU2l6ZU9mSGVhcFZpc2libGUpOwotCi0JWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIHZtX2J1ZmZl ciwgMCk7Ci0KLQlmbGFncyA9IFJFR0JVRl9TVEFOREFSRDsKLQlpZiAoIVhMb2dIaW50Qml0SXNO ZWVkZWQoKSkKLQkJZmxhZ3MgfD0gUkVHQlVGX05PX0lNQUdFOwotCVhMb2dSZWdpc3RlckJ1ZmZl cigxLCBoZWFwX2J1ZmZlciwgZmxhZ3MpOwotCi0JcmVjcHRyID0gWExvZ0luc2VydChSTV9IRUFQ Ml9JRCwgWExPR19IRUFQMl9WSVNJQkxFKTsKLQotCXJldHVybiByZWNwdHI7Ci19CiAKIC8qCiAg KiBQZXJmb3JtIFhMb2dJbnNlcnQgZm9yIGEgaGVhcC11cGRhdGUgb3BlcmF0aW9uLiAgQ2FsbGVy IG11c3QgYWxyZWFkeQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKaW5kZXggYmI2 NjgwYzA0NjcuLmM2NGZjMzliYzAxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1feGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9n LmMKQEAgLTI3Myw3ICsyNzMsNyBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKQogCQlSZWxhdGlvbglyZWxuID0gQ3JlYXRlRmFrZVJlbGNhY2hlRW50cnko cmxvY2F0b3IpOwogCiAJCXZpc2liaWxpdHltYXBfcGluKHJlbG4sIGJsa25vLCAmdm1idWZmZXIp OwotCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXRfdm1ieXRlKHJlbG4sIGJsa25vLCB2 bWJ1ZmZlciwgdm1mbGFncyk7CisJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldChyZWxu LCBibGtubywgdm1idWZmZXIsIHZtZmxhZ3MpOwogCQkvKiBPbmx5IHNldCBWTSBwYWdlIExTTiBp ZiB3ZSBtb2RpZmllZCB0aGUgcGFnZSAqLwogCQlpZiAob2xkX3ZtYml0cyAhPSB2bWZsYWdzKQog CQkJUGFnZVNldExTTihCdWZmZXJHZXRQYWdlKHZtYnVmZmVyKSwgbHNuKTsKQEAgLTI4NCwxNDIg KzI4NCw2IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp CiAJCVVubG9ja1JlbGVhc2VCdWZmZXIodm1idWZmZXIpOwogfQogCi0vKgotICogUmVwbGF5IFhM T0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgotICoKLSAqIFRoZSBjcml0aWNhbCBpbnRlZ3JpdHkg cmVxdWlyZW1lbnQgaGVyZSBpcyB0aGF0IHdlIG11c3QgbmV2ZXIgZW5kIHVwIHdpdGgKLSAqIGEg c2l0dWF0aW9uIHdoZXJlIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0LCBhbmQgdGhlIHBh Z2UtbGV2ZWwKLSAqIFBEX0FMTF9WSVNJQkxFIGJpdCBpcyBjbGVhci4gIElmIHRoYXQgd2VyZSB0 byBvY2N1ciwgdGhlbiBhIHN1YnNlcXVlbnQKLSAqIHBhZ2UgbW9kaWZpY2F0aW9uIHdvdWxkIGZh aWwgdG8gY2xlYXIgdGhlIHZpc2liaWxpdHkgbWFwIGJpdC4KLSAqLwotc3RhdGljIHZvaWQKLWhl YXBfeGxvZ192aXNpYmxlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQotewotCVhMb2dSZWNQdHIJ bHNuID0gcmVjb3JkLT5FbmRSZWNQdHI7Ci0JeGxfaGVhcF92aXNpYmxlICp4bHJlYyA9ICh4bF9o ZWFwX3Zpc2libGUgKikgWExvZ1JlY0dldERhdGEocmVjb3JkKTsKLQlCdWZmZXIJCXZtYnVmZmVy ID0gSW52YWxpZEJ1ZmZlcjsKLQlCdWZmZXIJCWJ1ZmZlcjsKLQlQYWdlCQlwYWdlOwotCVJlbEZp bGVMb2NhdG9yIHJsb2NhdG9yOwotCUJsb2NrTnVtYmVyIGJsa25vOwotCVhMb2dSZWRvQWN0aW9u IGFjdGlvbjsKLQotCUFzc2VydCgoeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9YTE9HX1ZB TElEX0JJVFMpID09IHhscmVjLT5mbGFncyk7Ci0KLQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3Jk LCAxLCAmcmxvY2F0b3IsIE5VTEwsICZibGtubyk7Ci0KLQkvKgotCSAqIElmIHRoZXJlIGFyZSBh bnkgSG90IFN0YW5kYnkgdHJhbnNhY3Rpb25zIHJ1bm5pbmcgdGhhdCBoYXZlIGFuIHhtaW4KLQkg KiBob3Jpem9uIG9sZCBlbm91Z2ggdGhhdCB0aGlzIHBhZ2UgaXNuJ3QgYWxsLXZpc2libGUgZm9y IHRoZW0sIHRoZXkKLQkgKiBtaWdodCBpbmNvcnJlY3RseSBkZWNpZGUgdGhhdCBhbiBpbmRleC1v bmx5IHNjYW4gY2FuIHNraXAgYSBoZWFwIGZldGNoLgotCSAqCi0JICogTkI6IEl0IG1pZ2h0IGJl IGJldHRlciB0byB0aHJvdyBzb21lIGtpbmQgb2YgInNvZnQiIGNvbmZsaWN0IGhlcmUgdGhhdAot CSAqIGZvcmNlcyBhbnkgaW5kZXgtb25seSBzY2FuIHRoYXQgaXMgaW4gZmxpZ2h0IHRvIHBlcmZv cm0gaGVhcCBmZXRjaGVzLAotCSAqIHJhdGhlciB0aGFuIGtpbGxpbmcgdGhlIHRyYW5zYWN0aW9u IG91dHJpZ2h0LgotCSAqLwotCWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJ CQkJCQkJeGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMLAotCQkJ CQkJCQkJCQlybG9jYXRvcik7Ci0KLQkvKgotCSAqIFJlYWQgdGhlIGhlYXAgcGFnZSwgaWYgaXQg c3RpbGwgZXhpc3RzLiBJZiB0aGUgaGVhcCBmaWxlIGhhcyBkcm9wcGVkIG9yCi0JICogdHJ1bmNh dGVkIGxhdGVyIGluIHJlY292ZXJ5LCB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSB0aGUgcGFnZSwg YnV0IHdlJ2QKLQkgKiBiZXR0ZXIgc3RpbGwgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4KLQkg Ki8KLQlhY3Rpb24gPSBYTG9nUmVhZEJ1ZmZlckZvclJlZG8ocmVjb3JkLCAxLCAmYnVmZmVyKTsK LQlpZiAoYWN0aW9uID09IEJMS19ORUVEU19SRURPKQotCXsKLQkJLyoKLQkJICogV2UgZG9uJ3Qg YnVtcCB0aGUgTFNOIG9mIHRoZSBoZWFwIHBhZ2Ugd2hlbiBzZXR0aW5nIHRoZSB2aXNpYmlsaXR5 Ci0JCSAqIG1hcCBiaXQgKHVubGVzcyBjaGVja3N1bXMgb3Igd2FsX2hpbnRfYml0cyBpcyBlbmFi bGVkLCBpbiB3aGljaAotCQkgKiBjYXNlIHdlIG11c3QpLiBUaGlzIGV4cG9zZXMgdXMgdG8gdG9y biBwYWdlIGhhemFyZHMsIGJ1dCBzaW5jZQotCQkgKiB3ZSdyZSBub3QgaW5zcGVjdGluZyB0aGUg ZXhpc3RpbmcgcGFnZSBjb250ZW50cyBpbiBhbnkgd2F5LCB3ZQotCQkgKiBkb24ndCBjYXJlLgot CQkgKi8KLQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKLQotCQlQYWdlU2V0QWxsVmlz aWJsZShwYWdlKTsKLQotCQlpZiAoWExvZ0hpbnRCaXRJc05lZWRlZCgpKQotCQkJUGFnZVNldExT TihwYWdlLCBsc24pOwotCi0JCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwotCX0KLQllbHNlIGlm IChhY3Rpb24gPT0gQkxLX1JFU1RPUkVEKQotCXsKLQkJLyoKLQkJICogSWYgaGVhcCBibG9jayB3 YXMgYmFja2VkIHVwLCB3ZSBhbHJlYWR5IHJlc3RvcmVkIGl0IGFuZCB0aGVyZSdzCi0JCSAqIG5v dGhpbmcgbW9yZSB0byBkby4gKFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdpdGggY2hlY2tzdW1zIG9y Ci0JCSAqIHdhbF9sb2dfaGludHMgZW5hYmxlZC4pCi0JCSAqLwotCX0KLQotCWlmIChCdWZmZXJJ c1ZhbGlkKGJ1ZmZlcikpCi0JewotCQlTaXplCQlzcGFjZSA9IFBhZ2VHZXRGcmVlU3BhY2UoQnVm ZmVyR2V0UGFnZShidWZmZXIpKTsKLQotCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7Ci0K LQkJLyoKLQkJICogU2luY2UgRlNNIGlzIG5vdCBXQUwtbG9nZ2VkIGFuZCBvbmx5IHVwZGF0ZWQg aGV1cmlzdGljYWxseSwgaXQKLQkJICogZWFzaWx5IGJlY29tZXMgc3RhbGUgaW4gc3RhbmRieXMu ICBJZiB0aGUgc3RhbmRieSBpcyBsYXRlciBwcm9tb3RlZAotCQkgKiBhbmQgcnVucyBWQUNVVU0s IGl0IHdpbGwgc2tpcCB1cGRhdGluZyBpbmRpdmlkdWFsIGZyZWUgc3BhY2UKLQkJICogZmlndXJl cyBmb3IgcGFnZXMgdGhhdCBiZWNhbWUgYWxsLXZpc2libGUgKG9yIGFsbC1mcm96ZW4sIGRlcGVu ZGluZwotCQkgKiBvbiB0aGUgdmFjdXVtIG1vZGUsKSB3aGljaCBpcyB0cm91Ymxlc29tZSB3aGVu IEZyZWVTcGFjZU1hcFZhY3V1bQotCQkgKiBwcm9wYWdhdGVzIHRvbyBvcHRpbWlzdGljIGZyZWUg c3BhY2UgdmFsdWVzIHRvIHVwcGVyIEZTTSBsYXllcnM7Ci0JCSAqIGxhdGVyIGluc2VydGVycyB0 cnkgdG8gdXNlIHN1Y2ggcGFnZXMgb25seSB0byBmaW5kIG91dCB0aGF0IHRoZXkKLQkJICogYXJl IHVudXNhYmxlLiAgVGhpcyBjYW4gY2F1c2UgbG9uZyBzdGFsbHMgd2hlbiB0aGVyZSBhcmUgbWFu eSBzdWNoCi0JCSAqIHBhZ2VzLgotCQkgKgotCQkgKiBGb3Jlc3RhbGwgdGhvc2UgcHJvYmxlbXMg YnkgdXBkYXRpbmcgRlNNJ3MgaWRlYSBhYm91dCBhIHBhZ2UgdGhhdAotCQkgKiBpcyBiZWNvbWlu ZyBhbGwtdmlzaWJsZSBvciBhbGwtZnJvemVuLgotCQkgKgotCQkgKiBEbyB0aGlzIHJlZ2FyZGxl c3Mgb2YgYSBmdWxsLXBhZ2UgaW1hZ2UgYmVpbmcgYXBwbGllZCwgc2luY2UgdGhlCi0JCSAqIEZT TSBkYXRhIGlzIG5vdCBpbiB0aGUgcGFnZSBhbnl3YXkuCi0JCSAqLwotCQlpZiAoeGxyZWMtPmZs YWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKQotCQkJWExvZ1JlY29yZFBhZ2VXaXRoRnJl ZVNwYWNlKHJsb2NhdG9yLCBibGtubywgc3BhY2UpOwotCX0KLQotCS8qCi0JICogRXZlbiBpZiB3 ZSBza2lwcGVkIHRoZSBoZWFwIHBhZ2UgdXBkYXRlIGR1ZSB0byB0aGUgTFNOIGludGVybG9jaywg aXQncwotCSAqIHN0aWxsIHNhZmUgdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4gIEFueSBX QUwgcmVjb3JkIHRoYXQgY2xlYXJzCi0JICogdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBkb2VzIHNv IGJlZm9yZSBjaGVja2luZyB0aGUgcGFnZSBMU04sIHNvIGFueQotCSAqIGJpdHMgdGhhdCBuZWVk IHRvIGJlIGNsZWFyZWQgd2lsbCBzdGlsbCBiZSBjbGVhcmVkLgotCSAqLwotCWlmIChYTG9nUmVh ZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDAsIFJCTV9aRVJPX09OX0VSUk9SLCBmYWxz ZSwKLQkJCQkJCQkJCSAgJnZtYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKLQl7Ci0JCVBhZ2UJ CXZtcGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpOwotCQlSZWxhdGlvbglyZWxuOwotCQl1 aW50OAkJdm1iaXRzOwotCi0JCS8qIGluaXRpYWxpemUgdGhlIHBhZ2UgaWYgaXQgd2FzIHJlYWQg YXMgemVyb3MgKi8KLQkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQotCQkJUGFnZUluaXQodm1wYWdl LCBCTENLU1osIDApOwotCi0JCS8qIHJlbW92ZSBWSVNJQklMSVRZTUFQX1hMT0dfKiAqLwotCQl2 bWJpdHMgPSB4bHJlYy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7Ci0KLQkJLyoK LQkJICogWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQgbG9ja2VkIHRoZSBidWZmZXIuIEJ1 dAotCQkgKiB2aXNpYmlsaXR5bWFwX3NldCB3aWxsIGhhbmRsZSBsb2NraW5nIGl0c2VsZi4KLQkJ ICovCi0JCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0KLQkJcmVs biA9IENyZWF0ZUZha2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9yKTsKLQkJdmlzaWJpbGl0eW1hcF9w aW4ocmVsbiwgYmxrbm8sICZ2bWJ1ZmZlcik7Ci0KLQkJdmlzaWJpbGl0eW1hcF9zZXQocmVsbiwg Ymxrbm8sIEludmFsaWRCdWZmZXIsIGxzbiwgdm1idWZmZXIsCi0JCQkJCQkgIHhscmVjLT5zbmFw c2hvdENvbmZsaWN0SG9yaXpvbiwgdm1iaXRzLCBmYWxzZSk7Ci0KLQkJUmVsZWFzZUJ1ZmZlcih2 bWJ1ZmZlcik7Ci0JCUZyZWVGYWtlUmVsY2FjaGVFbnRyeShyZWxuKTsKLQl9Ci0JZWxzZSBpZiAo QnVmZmVySXNWYWxpZCh2bWJ1ZmZlcikpCi0JCVVubG9ja1JlbGVhc2VCdWZmZXIodm1idWZmZXIp OwotfQogCiAvKgogICogR2l2ZW4gYW4gImluZm9iaXRzIiBmaWVsZCBmcm9tIGFuIFhMb2cgcmVj b3JkLCBzZXQgdGhlIGNvcnJlY3QgYml0cyBpbiB0aGUKQEAgLTc5OSwxMCArNjYzLDEwIEBAIGhl YXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCVJlbGF0aW9u CXJlbG4gPSBDcmVhdGVGYWtlUmVsY2FjaGVFbnRyeShybG9jYXRvcik7CiAKIAkJdmlzaWJpbGl0 eW1hcF9waW4ocmVsbiwgYmxrbm8sICZ2bWJ1ZmZlcik7Ci0JCW9sZF92bWJpdHMgPSB2aXNpYmls aXR5bWFwX3NldF92bWJ5dGUocmVsbiwgYmxrbm8sCi0JCQkJCQkJCQkJCSAgdm1idWZmZXIsCi0J CQkJCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJCQkJCSAgVklT SUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKwkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0 KHJlbG4sIGJsa25vLAorCQkJCQkJCQkJICAgdm1idWZmZXIsCisJCQkJCQkJCQkgICBWSVNJQklM SVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCSAgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF Tik7CiAJCUFzc2VydCgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgPT0g MCk7CiAJCSh2b2lkKSBvbGRfdm1iaXRzOyAvKiBTaWxlbmNlIGNvbXBpbGVyICovCiAJCVBhZ2VT ZXRMU04oQnVmZmVyR2V0UGFnZSh2bWJ1ZmZlciksIGxzbik7CkBAIC0xMzg0LDkgKzEyNDgsNiBA QCBoZWFwMl9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQljYXNlIFhMT0dfSEVBUDJf UFJVTkVfVkFDVVVNX0NMRUFOVVA6CiAJCQloZWFwX3hsb2dfcHJ1bmVfZnJlZXplKHJlY29yZCk7 CiAJCQlicmVhazsKLQkJY2FzZSBYTE9HX0hFQVAyX1ZJU0lCTEU6Ci0JCQloZWFwX3hsb2dfdmlz aWJsZShyZWNvcmQpOwotCQkJYnJlYWs7CiAJCWNhc2UgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQ6 CiAJCQloZWFwX3hsb2dfbXVsdGlfaW5zZXJ0KHJlY29yZCk7CiAJCQlicmVhazsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwppbmRleCA5ZjI3YWNlMGUxYy4uYTI0NTU0ZmUx OTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKQEAgLTIxOSwxMDMg KzIxOSw2IEBAIHZpc2liaWxpdHltYXBfcGluX29rKEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZl ciB2bWJ1ZikKIAlyZXR1cm4gQnVmZmVySXNWYWxpZCh2bWJ1ZikgJiYgQnVmZmVyR2V0QmxvY2tO dW1iZXIodm1idWYpID09IG1hcEJsb2NrOwogfQogCi0vKgotICoJdmlzaWJpbGl0eW1hcF9zZXQg LSBzZXQgYml0KHMpIG9uIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQotICoKLSAqIHJlY3B0ciBp cyB0aGUgTFNOIG9mIHRoZSBYTE9HIHJlY29yZCB3ZSdyZSByZXBsYXlpbmcsIGlmIHdlJ3JlIGlu IHJlY292ZXJ5LAotICogb3IgSW52YWxpZFhMb2dSZWNQdHIgaW4gbm9ybWFsIHJ1bm5pbmcuICBU aGUgVk0gcGFnZSBMU04gaXMgYWR2YW5jZWQgdG8gdGhlCi0gKiBvbmUgcHJvdmlkZWQ7IGluIG5v cm1hbCBydW5uaW5nLCB3ZSBnZW5lcmF0ZSBhIG5ldyBYTE9HIHJlY29yZCBhbmQgc2V0IHRoZQot ICogcGFnZSBMU04gdG8gdGhhdCB2YWx1ZSAodGhvdWdoIHRoZSBoZWFwIHBhZ2UncyBMU04gbWF5 ICpub3QqIGJlIHVwZGF0ZWQ7Ci0gKiBzZWUgYmVsb3cpLiAgY3V0b2ZmX3hpZCBpcyB0aGUgbGFy Z2VzdCB4bWluIG9uIHRoZSBwYWdlIGJlaW5nIG1hcmtlZAotICogYWxsLXZpc2libGU7IGl0IGlz IG5lZWRlZCBmb3IgSG90IFN0YW5kYnksIGFuZCBjYW4gYmUgSW52YWxpZFRyYW5zYWN0aW9uSWQK LSAqIGlmIHRoZSBwYWdlIGNvbnRhaW5zIG5vIHR1cGxlcy4gIEl0IGNhbiBhbHNvIGJlIHNldCB0 byBJbnZhbGlkVHJhbnNhY3Rpb25JZAotICogd2hlbiBhIHBhZ2UgdGhhdCBpcyBhbHJlYWR5IGFs bC12aXNpYmxlIGlzIGJlaW5nIG1hcmtlZCBhbGwtZnJvemVuLgotICoKLSAqIENhbGxlciBpcyBl eHBlY3RlZCB0byBzZXQgdGhlIGhlYXAgcGFnZSdzIFBEX0FMTF9WSVNJQkxFIGJpdCBiZWZvcmUg Y2FsbGluZwotICogdGhpcyBmdW5jdGlvbi4gRXhjZXB0IGluIHJlY292ZXJ5LCBjYWxsZXIgc2hv dWxkIGFsc28gcGFzcyB0aGUgaGVhcCBidWZmZXIuCi0gKiBXaGVuIGNoZWNrc3VtcyBhcmUgZW5h YmxlZCBhbmQgd2UncmUgbm90IGluIHJlY292ZXJ5LCBpZiB0aGUgaGVhcCBwYWdlIHdhcwotICog bW9kaWZpZWQsIHdlIG11c3QgYWRkIHRoZSBoZWFwIGJ1ZmZlciB0byB0aGUgV0FMIGNoYWluIHRv IHByb3RlY3QgaXQgZnJvbQotICogYmVpbmcgdG9ybi4KLSAqCi0gKiBZb3UgbXVzdCBwYXNzIGEg YnVmZmVyIGNvbnRhaW5pbmcgdGhlIGNvcnJlY3QgbWFwIHBhZ2UgdG8gdGhpcyBmdW5jdGlvbi4K LSAqIENhbGwgdmlzaWJpbGl0eW1hcF9waW4gZmlyc3QgdG8gcGluIHRoZSByaWdodCBvbmUuIFRo aXMgZnVuY3Rpb24gZG9lc24ndCBkbwotICogYW55IEkvTy4KLSAqCi0gKiBSZXR1cm5zIHRoZSBz dGF0ZSBvZiB0aGUgcGFnZSdzIFZNIGJpdHMgYmVmb3JlIHNldHRpbmcgZmxhZ3MuCi0gKi8KLXVp bnQ4Ci12aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGss IEJ1ZmZlciBoZWFwQnVmLAotCQkJCSAgWExvZ1JlY1B0ciByZWNwdHIsIEJ1ZmZlciB2bUJ1Ziwg VHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAotCQkJCSAgdWludDggZmxhZ3MsIGJvb2wgc2V0X2hl YXBfbHNuKQotewotCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9DSyho ZWFwQmxrKTsKLQl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJsayk7 Ci0JdWludDgJCW1hcE9mZnNldCA9IEhFQVBCTEtfVE9fT0ZGU0VUKGhlYXBCbGspOwotCVBhZ2UJ CXBhZ2U7Ci0JdWludDgJICAgKm1hcDsKLQl1aW50OAkJc3RhdHVzOwotCi0jaWZkZWYgVFJBQ0Vf VklTSUJJTElUWU1BUAotCWVsb2coREVCVUcxLCAidm1fc2V0ICVzICVkIiwgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsKSwgaGVhcEJsayk7Ci0jZW5kaWYKLQotCUFzc2VydChJblJlY292ZXJ5 IHx8IFhMb2dSZWNQdHJJc0ludmFsaWQocmVjcHRyKSk7Ci0JQXNzZXJ0KCEoSW5SZWNvdmVyeSAm JiBzZXRfaGVhcF9sc24pKTsKLQlBc3NlcnQoKGZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9C SVRTKSA9PSBmbGFncyk7Ci0KLQkvKiBNdXN0IG5ldmVyIHNldCBhbGxfZnJvemVuIGJpdCB3aXRo b3V0IGFsc28gc2V0dGluZyBhbGxfdmlzaWJsZSBiaXQgKi8KLQlBc3NlcnQoZmxhZ3MgIT0gVklT SUJJTElUWU1BUF9BTExfRlJPWkVOKTsKLQotCS8qIENoZWNrIHRoYXQgd2UgaGF2ZSB0aGUgcmln aHQgVk0gcGFnZSBwaW5uZWQgKi8KLQlpZiAoIUJ1ZmZlcklzVmFsaWQodm1CdWYpIHx8IEJ1ZmZl ckdldEJsb2NrTnVtYmVyKHZtQnVmKSAhPSBtYXBCbG9jaykKLQkJZWxvZyhFUlJPUiwgIndyb25n IFZNIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQiKTsKLQotCXBhZ2UgPSBCdWZm ZXJHZXRQYWdlKHZtQnVmKTsKLQltYXAgPSAodWludDggKikgUGFnZUdldENvbnRlbnRzKHBhZ2Up OwotCUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7Ci0KLQlzdGF0dXMg PSAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCkgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7 Ci0JaWYgKGZsYWdzICE9IHN0YXR1cykKLQl7Ci0JCVNUQVJUX0NSSVRfU0VDVElPTigpOwotCi0J CW1hcFttYXBCeXRlXSB8PSAoZmxhZ3MgPDwgbWFwT2Zmc2V0KTsKLQkJTWFya0J1ZmZlckRpcnR5 KHZtQnVmKTsKLQotCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWwpKQotCQl7Ci0JCQlpZiAoWExv Z1JlY1B0cklzSW52YWxpZChyZWNwdHIpKQotCQkJewotCQkJCUFzc2VydCghSW5SZWNvdmVyeSk7 Ci0JCQkJcmVjcHRyID0gbG9nX2hlYXBfdmlzaWJsZShyZWwsIGhlYXBCdWYsIHZtQnVmLCBjdXRv ZmZfeGlkLCBmbGFncyk7Ci0KLQkJCQkvKgotCQkJCSAqIElmIGRhdGEgY2hlY2tzdW1zIGFyZSBl bmFibGVkIChvciB3YWxfbG9nX2hpbnRzPW9uKSwgd2UKLQkJCQkgKiBuZWVkIHRvIHByb3RlY3Qg dGhlIGhlYXAgcGFnZSBmcm9tIGJlaW5nIHRvcm4uCi0JCQkJICoKLQkJCQkgKiBJZiBub3QsIHRo ZW4gd2UgbXVzdCAqbm90KiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4gSW4KLQkJCQkgKiB0 aGlzIGNhc2UsIHRoZSBGUEkgZm9yIHRoZSBoZWFwIHBhZ2Ugd2FzIG9taXR0ZWQgZnJvbSB0aGUK LQkJCQkgKiBXQUwgcmVjb3JkIGluc2VydGVkIGFib3ZlLCBzbyBpdCB3b3VsZCBiZSBpbmNvcnJl Y3QgdG8KLQkJCQkgKiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4KLQkJCQkgKi8KLQkJCQlp ZiAoc2V0X2hlYXBfbHNuKQotCQkJCXsKLQkJCQkJUGFnZQkJaGVhcFBhZ2UgPSBCdWZmZXJHZXRQ YWdlKGhlYXBCdWYpOwotCi0JCQkJCUFzc2VydChYTG9nSGludEJpdElzTmVlZGVkKCkpOwotCi0J CQkJCVBhZ2VTZXRMU04oaGVhcFBhZ2UsIHJlY3B0cik7Ci0JCQkJfQotCQkJfQotCQkJUGFnZVNl dExTTihwYWdlLCByZWNwdHIpOwotCQl9Ci0KLQkJRU5EX0NSSVRfU0VDVElPTigpOwotCX0KLQot CUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0JcmV0dXJuIHN0YXR1czsK LX0KIAogLyoKICAqIFNldCBmbGFncyBpbiB0aGUgVk0gYmxvY2sgY29udGFpbmVkIGluIHRoZSBw YXNzZWQgaW4gdm1CdWYuCkBAIC0zMjUsOCArMjI4LDggQEAgdmlzaWJpbGl0eW1hcF9zZXQoUmVs YXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKICAqIG1ha2lu ZyBhbnkgY2hhbmdlcyBuZWVkZWQgdG8gdGhlIGFzc29jaWF0ZWQgaGVhcCBwYWdlLgogICovCiB1 aW50OAotdmlzaWJpbGl0eW1hcF9zZXRfdm1ieXRlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIg aGVhcEJsaywKLQkJCQkJCSBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzKQordmlzaWJpbGl0eW1h cF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAorCQkJCSAgQnVmZmVyIHZt QnVmLCB1aW50OCBmbGFncykKIHsKIAlCbG9ja051bWJlciBtYXBCbG9jayA9IEhFQVBCTEtfVE9f TUFQQkxPQ0soaGVhcEJsayk7CiAJdWludDMyCQltYXBCeXRlID0gSEVBUEJMS19UT19NQVBCWVRF KGhlYXBCbGspOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBk ZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwppbmRleCBkNmM4 NmNjYWMyMC4uZjc4ODBhNGVkODEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdy ZGVzYy9oZWFwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVz Yy5jCkBAIC0zNTEsMTMgKzM1MSw2IEBAIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJfQogCQl9CiAJfQotCWVsc2UgaWYgKGluZm8gPT0gWExP R19IRUFQMl9WSVNJQkxFKQotCXsKLQkJeGxfaGVhcF92aXNpYmxlICp4bHJlYyA9ICh4bF9oZWFw X3Zpc2libGUgKikgcmVjOwotCi0JCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAic25hcHNob3RDb25m bGljdEhvcml6b246ICV1LCBmbGFnczogMHglMDJYIiwKLQkJCQkJCSB4bHJlYy0+c25hcHNob3RD b25mbGljdEhvcml6b24sIHhscmVjLT5mbGFncyk7Ci0JfQogCWVsc2UgaWYgKGluZm8gPT0gWExP R19IRUFQMl9NVUxUSV9JTlNFUlQpCiAJewogCQl4bF9oZWFwX211bHRpX2luc2VydCAqeGxyZWMg PSAoeGxfaGVhcF9tdWx0aV9pbnNlcnQgKikgcmVjOwpAQCAtNDYyLDkgKzQ1NSw2IEBAIGhlYXAy X2lkZW50aWZ5KHVpbnQ4IGluZm8pCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xF QU5VUDoKIAkJCWlkID0gIlBSVU5FX1ZBQ1VVTV9DTEVBTlVQIjsKIAkJCWJyZWFrOwotCQljYXNl IFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWlkID0gIlZJU0lCTEUiOwotCQkJYnJlYWs7CiAJCWNh c2UgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQ6CiAJCQlpZCA9ICJNVUxUSV9JTlNFUlQiOwogCQkJ YnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29k ZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRleCBjYzAz ZjA3MDZlOS4uMmZkZDRhZjkwYTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYwpAQCAtNDU0LDcgKzQ1NCw2IEBAIGhlYXAyX2RlY29kZShMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKIAkJY2FzZSBYTE9HX0hFQVAyX1BS VU5FX09OX0FDQ0VTUzoKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9TQ0FOOgogCQlj YXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX0NMRUFOVVA6Ci0JCWNhc2UgWExPR19IRUFQMl9W SVNJQkxFOgogCQljYXNlIFhMT0dfSEVBUDJfTE9DS19VUERBVEVEOgogCQkJYnJlYWs7CiAJCWRl ZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggZTM1YjRhZGYzOGQuLmM0MDRiNzk0ZmRhIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbS5oCkBAIC0zNjUsOSArMzY1LDYgQEAgZXh0ZXJuIGJvb2wgaGVhcF90dXBsZV9u ZWVkc19ldmVudHVhbF9mcmVlemUoSGVhcFR1cGxlSGVhZGVyIHR1cGxlKTsKIAogZXh0ZXJuIHVp bnQ4IGhlYXBfcGFnZV9zZXRfdm0oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwX2Jsaywg QnVmZmVyIGhlYXBfYnVmLAogCQkJCQkJCSAgQnVmZmVyIHZtYnVmLCB1aW50OCB2bWZsYWdzKTsK LWV4dGVybiB1aW50OCBoZWFwX3BhZ2Vfc2V0X3ZtX2FuZF9sb2coUmVsYXRpb24gcmVsLCBCbG9j a051bWJlciBoZWFwX2JsaywgQnVmZmVyIGhlYXBfYnVmLAotCQkJCQkJCQkJICBCdWZmZXIgdm1i dWYsIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkJCQkJCSAgdWludDggdm1mbGFncyk7 CiAKIGV4dGVybiB2b2lkIHNpbXBsZV9oZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgSGVh cFR1cGxlIHR1cCk7CiBleHRlcm4gdm9pZCBzaW1wbGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVs YXRpb24sIEl0ZW1Qb2ludGVyIHRpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtX3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IGNl YWU5YzA4M2ZmLi45YTYxNDM0Yjg4MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTYw LDcgKzYwLDYgQEAKICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1MJCTB4MTAKICNk ZWZpbmUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTgkweDIwCiAjZGVmaW5lIFhMT0dfSEVB UDJfUFJVTkVfVkFDVVVNX0NMRUFOVVAJMHgzMAotI2RlZmluZSBYTE9HX0hFQVAyX1ZJU0lCTEUJ CTB4NDAKICNkZWZpbmUgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQgMHg1MAogI2RlZmluZSBYTE9H X0hFQVAyX0xPQ0tfVVBEQVRFRCAweDYwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTkVXX0NJRAkJMHg3 MApAQCAtNDk1LDExICs0OTQsNiBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZXNjKFN0cmluZ0luZm8g YnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gY29uc3QgY2hhciAqaGVhcDJf aWRlbnRpZnkodWludDggaW5mbyk7CiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdy aXRlKFhMb2dSZWFkZXJTdGF0ZSAqcik7CiAKLWV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zp c2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJCSAgIEJ1ZmZl ciB2bV9idWZmZXIsCi0JCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhv cml6b24sCi0JCQkJCQkJCSAgIHVpbnQ4IHZtZmxhZ3MpOwotCiAvKiBpbiBoZWFwZGVzYy5jLCBz byBpdCBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZnJvbnRlbmQvYmFja2VuZCBjb2RlICovCiBleHRl cm4gdm9pZCBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJz b3IsIHVpbnQ4IGZsYWdzLAogCQkJCQkJCQkJCQkJICAgaW50ICpucGxhbnMsIHhsaHBfZnJlZXpl X3BsYW4gKipwbGFucywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5 bWFwLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCmluZGV4IDVkMGE5NDE3 YzI1Li4yMDE0MWUzZTgwNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxp dHltYXAuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCkBAIC0zMSwx NCArMzEsOCBAQCBleHRlcm4gYm9vbCB2aXNpYmlsaXR5bWFwX2NsZWFyKFJlbGF0aW9uIHJlbCwg QmxvY2tOdW1iZXIgaGVhcEJsaywKIGV4dGVybiB2b2lkIHZpc2liaWxpdHltYXBfcGluKFJlbGF0 aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKIAkJCQkJCQkgIEJ1ZmZlciAqdm1idWYpOwog ZXh0ZXJuIGJvb2wgdmlzaWJpbGl0eW1hcF9waW5fb2soQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVm ZmVyIHZtYnVmKTsKLWV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWws Ci0JCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCi0JCQkJCQkJ ICAgWExvZ1JlY1B0ciByZWNwdHIsCi0JCQkJCQkJICAgQnVmZmVyIHZtQnVmLAotCQkJCQkJCSAg IFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkJCQkgICB1aW50OCBmbGFncywgYm9vbCBz ZXRfaGVhcF9sc24pOwotZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfc2V0X3ZtYnl0ZShSZWxh dGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssCi0JCQkJCQkJCQkgIEJ1ZmZlciB2bUJ1Ziwg dWludDggZmxhZ3MpOworZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJl bCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJCQkgICBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZs YWdzKTsKIGV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMoUmVsYXRpb24gcmVs LCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgKnZtYnVmKTsKIGV4dGVybiB2b2lkIHZpc2li aWxpdHltYXBfY291bnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciAqYWxsX3Zpc2libGUsIEJs b2NrTnVtYmVyICphbGxfZnJvemVuKTsKIGV4dGVybiBCbG9ja051bWJlciB2aXNpYmlsaXR5bWFw X3ByZXBhcmVfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLAotLSAKMi4zNC4xCgo= --000000000000459e560638430326 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0011-Find-and-fix-VM-corruption-in-heap_page_prune_and.patch" Content-Disposition: attachment; filename="v1-0011-Find-and-fix-VM-corruption-in-heap_page_prune_and.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc9jjx8210 RnJvbSA1MjY2OTc0YmY1YTE2YjA1YjhjOGJhYzMzZjQ2MzBlZDFmMTU1MmUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjQ1OjU5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MSAxMS8xNF0gRmluZCBhbmQgZml4IFZNIGNvcnJ1cHRpb24gaW4KIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplCgpGdXR1cmUgY29tbWl0cyB3aWxsIHVwZGF0ZSB0aGUgVk0gaW4gdGhl IHNhbWUgY3JpdGljYWwgc2VjdGlvbiBhbmQgV0FMCnJlY29yZCBhcyBwcnVuaW5nIGFuZCBmcmVl emluZy4gRm9yIGVhc2Ugb2YgcmV2aWV3LCB0aGlzIGNvbW1pdCBtYWtlcwpvbmUgc3RlcCB0b3dh cmQgZG9pbmcgdGhpcy4gSXQgbW92ZXMgdGhlIFZNIGNvcnJ1cHRpb24gaGFuZGxpbmcgY2FzZSB0 bwpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jICB8IDg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDc4ICsrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICB8ICA0ICsrCiAzIGZp bGVzIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKyksIDczIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggOTdlNTFmNzg4NTQuLjQ5NmI3MGUzMThmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUg ImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJh Y2Nlc3MveGxvZ2luc2VydC5oIgotI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5o IgorI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv dmFjdXVtLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5oIgogI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgpAQCAtMTc3LDYgKzE3NywxMyBAQCBzdGF0aWMgdm9pZCBoZWFwX3BydW5lX3Jl Y29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0Tgog CiBzdGF0aWMgdm9pZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKTsKIAorc3RhdGlj IGJvb2wgaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAor CQkJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLAorCQkJCQkJCQkJCSAgIEJ1ZmZlciBo ZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3BhZ2UsCisJCQkJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19r bm93bl9hdiwKKwkJCQkJCQkJCQkgICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCQkJCSAg IEJ1ZmZlciB2bWJ1ZmZlcik7CisKIAogLyoKICAqIE9wdGlvbmFsbHkgcHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGluIHRoZSBzcGVjaWZpZWQgcGFnZS4KQEAgLTI2MSw3ICsyNjgsOSBA QCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQog CQkJICogbm90IHRoZSByZWxhdGlvbiBoYXMgaW5kZXhlcywgc2luY2Ugd2UgY2Fubm90IHNhZmVs eSBkZXRlcm1pbmUKIAkJCSAqIHRoYXQgZHVyaW5nIG9uLWFjY2VzcyBwcnVuaW5nIHdpdGggdGhl IGN1cnJlbnQgaW1wbGVtZW50YXRpb24uCiAJCQkgKi8KLQkJCWhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKHJlbGF0aW9uLCBidWZmZXIsIHZpc3Rlc3QsIDAsCisJCQloZWFwX3BhZ2VfcHJ1bmVf YW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLCBmYWxzZSwKKwkJCQkJCQkJCSAgIEludmFsaWRC dWZmZXIsCisJCQkJCQkJCQkgICB2aXN0ZXN0LCAwLAogCQkJCQkJCQkJICAgTlVMTCwgJnByZXN1 bHQsIFBSVU5FX09OX0FDQ0VTUywgJmR1bW15X29mZl9sb2MsIE5VTEwsIE5VTEwpOwogCiAJCQkv KgpAQCAtMjk0LDYgKzMwMyw2NCBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0 aW9uLCBCdWZmZXIgYnVmZmVyKQogCX0KIH0KIAorLyoKKyAqIFdoZW4gdXBkYXRpbmcgdGhlIHZp c2liaWxpdHkgbWFwIGFmdGVyIHBoYXNlIEkgaGVhcCB2YWN1dW1pbmcsIHdlIHRha2UgdGhlCisg KiBvcHBvcnR1bml0eSB0byBpZGVudGlmeSBhbmQgZml4IGFueSBWTSBjb3JydXB0aW9uLgorICoK KyAqIGhlYXBfYmxrX2tub3duX2F2IGlzIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVh cCBwYWdlIGNvbGxlY3RlZAorICogd2hpbGUgZmluZGluZyB0aGUgbmV4dCB1bnNraXBwYWJsZSBi bG9jayBpbiBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKS4KKyAqLworc3RhdGljIGJvb2wKK2lk ZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkg ICBCbG9ja051bWJlciBoZWFwX2JsaywKKwkJCQkJCQkgICBCdWZmZXIgaGVhcF9idWZmZXIsIFBh Z2UgaGVhcF9wYWdlLAorCQkJCQkJCSAgIGJvb2wgaGVhcF9ibGtfa25vd25fYXYsCisJCQkJCQkJ ICAgaW50NjQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIpCit7CisJ LyoKKwkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91 bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQorCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93 ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290CisJICogY2xlYXJlZCBhZnRlciBo ZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hlY2sK KwkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNv cnJ1cHQuCisJICovCisJaWYgKGhlYXBfYmxrX2tub3duX2F2ICYmICFQYWdlSXNBbGxWaXNpYmxl KGhlYXBfcGFnZSkgJiYKKwkJdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHJlbGF0aW9uLCBoZWFw X2JsaywgJnZtYnVmZmVyKSAhPSAwKQorCXsKKwkJZWxvZyhXQVJOSU5HLCAicGFnZSBpcyBub3Qg bWFya2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0 aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlv biksIGhlYXBfYmxrKTsKKwkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWxhdGlvbiwgaGVhcF9ibGss IHZtYnVmZmVyLAorCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJCXJldHVybiB0 cnVlOworCX0KKworCS8qCisJICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVybmVk IGJ5CisJICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUgYmFj a3dhcmRzLCBzbyBpdCdzIG5vdAorCSAqIHdyb25nIGZvciB1cyB0byBzZWUgdHVwbGVzIHRoYXQg YXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCisJICogeWV0LCB3aGlsZSBQRF9B TExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4bWluIHZhbHVlCisJICog bmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rp b25JZCgpIGlzCisJICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMgcmV0dXJucyBhIHZhbHVl IHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAorCSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNvbnRy YWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhhdCB3ZQorCSAqIHRoaW5r IGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhlCisJ ICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgorCSAqCisJICogVGhlcmUgc2hvdWxk IG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUgc2V0 LAorCSAqIGhvd2V2ZXIuCisJICovCisJaWYgKG5scGRlYWRfaXRlbXMgPiAwICYmIFBhZ2VJc0Fs bFZpc2libGUoaGVhcF9wYWdlKSkKKwl7CisJCWVsb2coV0FSTklORywgInBhZ2UgY29udGFpbmlu ZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVz XCIgcGFnZSAldSIsCisJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pLCBoZWFw X2Jsayk7CisJCVBhZ2VDbGVhckFsbFZpc2libGUoaGVhcF9wYWdlKTsKKwkJTWFya0J1ZmZlckRp cnR5KGhlYXBfYnVmZmVyKTsKKwkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWxhdGlvbiwgaGVhcF9i bGssIHZtYnVmZmVyLAorCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJCXJldHVy biB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KIAogLyoKICAqIFBydW5lIGFuZCByZXBh aXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBvbiB0aGUKQEAg LTMxNCw2ICszODEsMTAgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlcikKICAqIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3Qgc2V0LCBi ZWNhdXNlIGF0IHRoZSBtb21lbnQgb25seSBjYWxsZXJzCiAgKiB0aGF0IGFsc28gZnJlZXplIG5l ZWQgdGhhdCBpbmZvcm1hdGlvbi4KICAqCisgKiBibGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxp dHkgc3RhdHVzIG9mIHRoZSBoZWFwIGJsb2NrIGFzIG9mIHRoZSBsYXN0IGNhbGwKKyAqIHRvIGZp bmRfbmV4dF91bnNraXBwYWJsZV9ibG9jaygpLiB2bWJ1ZmZlciBpcyB0aGUgYnVmZmVyIHRoYXQg bWF5IGFscmVhZHkKKyAqIGNvbnRhaW4gdGhlIHJlcXVpcmVkIGJsb2NrIG9mIHRoZSB2aXNpYmls aXR5IG1hcC4KKyAqCiAgKiB2aXN0ZXN0IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggd2hldGhlciB0 dXBsZXMgYXJlIERFQUQgb3IgUkVDRU5UTFlfREVBRAogICogKHNlZSBoZWFwX3BydW5lX3NhdGlz Zmllc192YWN1dW0pLgogICoKQEAgLTM0OSw2ICs0MjAsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0 KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogICovCiB2b2lkCiBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJ CSAgIGJvb2wgYmxrX2tub3duX2F2LAorCQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAogCQkJCQkJ ICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkgICBpbnQgb3B0aW9ucywKIAkJCQkJ CSAgIHN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzLApAQCAtODk3LDYgKzk3MCwxNiBAQCBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZl ciwKIAlwcmVzdWx0LT5scGRlYWRfaXRlbXMgPSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKIAkvKiB0 aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJyYXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCiAK KwkvKgorCSAqIENsZWFyIGFueSBWTSBjb3JydXB0aW9uLiBUaGlzIGRvZXMgbm90IG5lZWQgdG8g YmUgZG9uZSBpbiBhIGNyaXRpY2FsCisJICogc2VjdGlvbi4KKwkgKi8KKwlwcmVzdWx0LT52bV9j b3JydXB0aW9uID0gZmFsc2U7CisJaWYgKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRF X1ZNKQorCQlwcmVzdWx0LT52bV9jb3JydXB0aW9uID0gaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3Jy dXB0aW9uKHJlbGF0aW9uLAorCQkJCQkJCQkJCQkJCQkJCWJsb2Nrbm8sIGJ1ZmZlciwgcGFnZSwK KwkJCQkJCQkJCQkJCQkJCQlibGtfa25vd25fYXYsCisJCQkJCQkJCQkJCQkJCQkJcHJzdGF0ZS5s cGRlYWRfaXRlbXMsIHZtYnVmZmVyKTsKIAlpZiAocHJzdGF0ZS5mcmVlemUpCiAJewogCQlpZiAo cHJlc3VsdC0+bmZyb3plbiA+IDApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggZmRhYzM2ZjA4MzUuLjU5MmNkNDU1Y2Y0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC00MzEsMTMgKzQzMSw2IEBAIHN0YXRpYyB2b2lkIGZpbmRfbmV4dF91bnNraXBw YWJsZV9ibG9jayhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKTsKIHN0YXRp YyBib29sIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIg YnVmLAogCQkJCQkJCQkgICBCbG9ja051bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCQkg ICBib29sIHNoYXJlbG9jaywgQnVmZmVyIHZtYnVmZmVyKTsKLQotc3RhdGljIGJvb2wgaWRlbnRp ZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJCQkJCSAg IEJsb2NrTnVtYmVyIGhlYXBfYmxrLAotCQkJCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwg UGFnZSBoZWFwX3BhZ2UsCi0JCQkJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19rbm93bl9hdiwKLQkJ CQkJCQkJCQkgICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1 ZmZlcik7CiBzdGF0aWMgdm9pZCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBC dWZmZXIgYnVmLAogCQkJCQkJCUJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJCQkJCQkJ QnVmZmVyIHZtYnVmZmVyLCBib29sIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwKQEAgLTE5 NDcsNjUgKzE5NDAsNiBAQCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3Jl bCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJcmV0dXJuIGZhbHNlOwogfQogCi0v KgotICogV2hlbiB1cGRhdGluZyB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0ZXIgcGhhc2UgSSBoZWFw IHZhY3V1bWluZywgd2UgdGFrZSB0aGUKLSAqIG9wcG9ydHVuaXR5IHRvIGlkZW50aWZ5IGFuZCBm aXggYW55IFZNIGNvcnJ1cHRpb24uCi0gKgotICogaGVhcF9ibGtfa25vd25fYXYgaXMgdGhlIHZp c2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFwIHBhZ2UgY29sbGVjdGVkCi0gKiB3aGlsZSBmaW5k aW5nIHRoZSBuZXh0IHVuc2tpcHBhYmxlIGJsb2NrIGluIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9j aygpLgotICovCi1zdGF0aWMgYm9vbAotaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJl bGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLAotCQkJCQkJ CSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3BhZ2UsCi0JCQkJCQkJICAgYm9vbCBo ZWFwX2Jsa19rbm93bl9hdiwKLQkJCQkJCQkgICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJ CSAgIEJ1ZmZlciB2bWJ1ZmZlcikKLXsKLQkvKgotCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0 aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCi0JICogcGFn ZS1sZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJp dCBnb3QKLQkgKiBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBj YWxsZWQsIHNvIHdlIG11c3QgcmVjaGVjawotCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNv bmNsdWRpbmcgdGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KLQkgKi8KLQlpZiAoaGVhcF9ibGtfa25v d25fYXYgJiYgIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJgotCQl2aXNpYmlsaXR5bWFw X2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxrLCAmdm1idWZmZXIpICE9IDApCi0JewotCQll bG9nKFdBUk5JTkcsICJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxp dHkgbWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJIFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspOwotCQl2aXNpYmlsaXR5bWFw X2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTKTsKLQkJcmV0dXJuIHRydWU7Ci0JfQotCi0JLyoKLQkgKiBJdCdzIHBvc3Np YmxlIGZvciB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKLQkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVU cmFuc2FjdGlvbklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90Ci0JICogd3Jvbmcg Zm9yIHVzIHRvIHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZl cnlvbmUKLQkgKiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUg cmVhbCBzYWZlIHhtaW4gdmFsdWUKLQkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRP bGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKLQkgKiBjb25zZXJ2YXRpdmUgYW5k IHNvbWV0aW1lcyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCi0J ICogc28gaWYgd2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhl IHR1cGxlcyB0aGF0IHdlCi0JICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHll dCBhY3R1YWxseSBhcmUsIGFuZCB0aGUKLQkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJl Y3QuCi0JICoKLQkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBh Z2Ugd2l0aCBQRF9BTExfVklTSUJMRSBzZXQsCi0JICogaG93ZXZlci4KLQkgKi8KLQlpZiAobmxw ZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQotCXsKLQkJZWxv ZyhXQVJOSU5HLCAicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFs bC12aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKLQkJCSBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWxhdGlvbiksIGhlYXBfYmxrKTsKLQkJUGFnZUNsZWFyQWxsVmlzaWJsZSho ZWFwX3BhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIpOwotCQl2aXNpYmlsaXR5 bWFwX2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTKTsKLQkJcmV0dXJuIHRydWU7Ci0JfQotCi0JcmV0dXJuIGZhbHNlOwot fQotCiAKIC8qIHFzb3J0IGNvbXBhcmF0b3IgZm9yIHNvcnRpbmcgT2Zmc2V0TnVtYmVycyAqLwog c3RhdGljIGludApAQCAtMjA2MiwxMSArMTk5NiwxNCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxT dGF0ZSAqdmFjcmVsLAogCSAqIHR1cGxlcy4gUHJ1bmluZyB3aWxsIGhhdmUgZGV0ZXJtaW5lZCB3 aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcwogCSAqIGFsbC12aXNpYmxlLgogCSAqLwotCXBydW5l X29wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFOworCXBydW5lX29wdGlvbnMgPSBIRUFQ X1BBR0VfUFJVTkVfRlJFRVpFIHwgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTTsKIAlpZiAodmFj cmVsLT5uaW5kZXhlcyA9PSAwKQogCQlwcnVuZV9vcHRpb25zIHw9IEhFQVBfUEFHRV9QUlVORV9N QVJLX1VOVVNFRF9OT1c7CiAKLQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShyZWwsIGJ1Ziwg dmFjcmVsLT52aXN0ZXN0LCBwcnVuZV9vcHRpb25zLAorCWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKHJlbCwgYnVmLAorCQkJCQkJCSAgIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwKKwkJ CQkJCQkgICB2bWJ1ZmZlciwKKwkJCQkJCQkgICB2YWNyZWwtPnZpc3Rlc3QsIHBydW5lX29wdGlv bnMsCiAJCQkJCQkJICAgJnZhY3JlbC0+Y3V0b2ZmcywgJnByZXN1bHQsIFBSVU5FX1ZBQ1VVTV9T Q0FOLAogCQkJCQkJCSAgICZ2YWNyZWwtPm9mZm51bSwKIAkJCQkJCQkgICAmdmFjcmVsLT5OZXdS ZWxmcm96ZW5YaWQsICZ2YWNyZWwtPk5ld1JlbG1pbk14aWQpOwpAQCAtMjE1MSwxMCArMjA4OCw5 IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJLyoKIAkgKiBIYW5kbGUg c2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSB0aGUg Vk0gKGFzCiAJICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBjYWxsKSwgYW5k IGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2YXJpYWJsZXMuIFN0YXJ0IGJ5 IGxvb2tpbmcgZm9yIGFueSBWTSBjb3JydXB0aW9uLgorCSAqIGFsbF9mcm96ZW4gdmFyaWFibGVz LgogCSAqLwotCWlmIChpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24odmFjcmVsLT5yZWws IGJsa25vLCBidWYsIHBhZ2UsCi0JCQkJCQkJCQkgICBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9f dm0sIHByZXN1bHQubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlcikpCisJaWYgKHByZXN1bHQudm1fY29y cnVwdGlvbikKIAl7CiAJCS8qIERvbid0IHVwZGF0ZSB0aGUgVk0gaWYgd2UganVzdCBjbGVhcmVk IGNvcnJ1cHRpb24gaW4gaXQgKi8KIAl9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMWZhNmViMDQ3ZmQu LjA4ODY4NjdhMTYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC00MSw2ICs0MSw3IEBACiAvKiAib3B0 aW9ucyIgZmxhZyBiaXRzIGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSAqLwogI2RlZmlu ZSBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9XCQkoMSA8PCAwKQogI2RlZmluZSBIRUFQ X1BBR0VfUFJVTkVfRlJFRVpFCQkJCSgxIDw8IDEpCisjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9V UERBVEVfVk0JCQkoMSA8PCAyKQogCiB0eXBlZGVmIHN0cnVjdCBCdWxrSW5zZXJ0U3RhdGVEYXRh ICpCdWxrSW5zZXJ0U3RhdGU7CiBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3Q7CkBAIC0yNDYsNiArMjQ3 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQKIAlib29sCQlhbGxfdmlzaWJs ZTsKIAlib29sCQlhbGxfZnJvemVuOwogCVRyYW5zYWN0aW9uSWQgdm1fY29uZmxpY3RfaG9yaXpv bjsKKwlib29sCQl2bV9jb3JydXB0aW9uOwogCiAJLyoKIAkgKiBXaGV0aGVyIG9yIG5vdCB0aGUg cGFnZSBtYWtlcyByZWwgdHJ1bmNhdGlvbiB1bnNhZmUuICBUaGlzIGlzIHNldCB0bwpAQCAtMzg1 LDYgKzM4Nyw4IEBAIGV4dGVybiBUcmFuc2FjdGlvbklkIGhlYXBfaW5kZXhfZGVsZXRlX3R1cGxl cyhSZWxhdGlvbiByZWwsCiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGU7CiBleHRlcm4gdm9pZCBoZWFw X3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKTsKIGV4dGVy biB2b2lkIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLAorCQkJCQkJCQkJICAgYm9vbCBibGtfa25vd25fYXYsCisJCQkJCQkJCQkgICBC dWZmZXIgdm1idWZmZXIsCiAJCQkJCQkJCQkgICBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgKnZpc3Rl c3QsCiAJCQkJCQkJCQkgICBpbnQgb3B0aW9ucywKIAkJCQkJCQkJCSAgIHN0cnVjdCBWYWN1dW1D dXRvZmZzICpjdXRvZmZzLAotLSAKMi4zNC4xCgo= --000000000000459e560638430326 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0013-Eliminate-xl_heap_visible-from-vacuum-phase-I-pru.patch" Content-Disposition: attachment; filename="v1-0013-Eliminate-xl_heap_visible-from-vacuum-phase-I-pru.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mc9jjx8d12 RnJvbSBmMTA2NDYyZmVmZGUzYzE4YWU1NzY3Yzg3OWYyY2M2MDI2NzQ4OTM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQxOjAwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MSAxMy8xNF0gRWxpbWluYXRlIHhsX2hlYXBfdmlzaWJsZSBmcm9tIHZhY3V1bSBwaGFz ZSBJCiBwcnVuZS9mcmVlemUKCkluc3RlYWQgb2YgZW1pdHRpbmcgYSBzZXBhcmF0ZSBXQUwgcmVj b3JkIGZvciBldmVyeSBibG9jayByZW5kZXJlZAphbGwtdmlzaWJsZS9mcm96ZW4gYnkgdmFjdXVt J3MgcGhhc2UgSSwgaW5jbHVkZSB0aGUgY2hhbmdlcyB0byB0aGUgVk0gaW4KdGhlIHhsX2hlYXBf cHJ1bmUgcmVjb3JkIGFscmVhZHkgZW1pdHRlZC4KClRoaXMgaXMgb25seSBlbmFibGVkIGZvciB2 YWN1dW0ncyBwcnVuZS9mcmVlemUgd29yaywgbm90IGZvciBvbi1hY2Nlc3MKcHJ1bmluZy4KLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgfCAzODQgKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAg MzAgLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgfCAgMTUgKy0KIDMg ZmlsZXMgY2hhbmdlZCwgMjIzIGluc2VydGlvbnMoKyksIDIwNiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDQyNWRjYzc3NTM0Li4yZDk2MjRhMjQ2ZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTQ0LDYgKzQ0LDEzIEBAIHR5cGVk ZWYgc3RydWN0CiAJYm9vbAkJbWFya191bnVzZWRfbm93OwogCS8qIHdoZXRoZXIgdG8gYXR0ZW1w dCBmcmVlemluZyB0dXBsZXMgKi8KIAlib29sCQlmcmVlemU7CisKKwkvKgorCSAqIFdoZXRoZXIg b3Igbm90IHRvIGNvbnNpZGVyIHVwZGF0aW5nIHRoZSBWTS4gVGhlcmUgaXMgc29tZSBib29ra2Vl cGluZworCSAqIHRoYXQgbXVzdCBiZSBtYWludGFpbmVkIGlmIHdlIHdvdWxkIGxpa2UgdG8gdXBk YXRlIHRoZSBWTS4KKwkgKi8KKwlib29sCQl1cGRhdGVfdm07CisKIAlzdHJ1Y3QgVmFjdXVtQ3V0 b2ZmcyAqY3V0b2ZmczsKIAogCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTA4LDggKzExNSw5IEBAIHR5cGVkZWYgc3RydWN0CiAJ ICoKIAkgKiBUaGVzZSBmaWVsZHMgYXJlIG5vdCB1c2VkIGJ5IHBydW5pbmcgaXRzZWxmIGZvciB0 aGUgbW9zdCBwYXJ0LCBidXQgYXJlCiAJICogdXNlZCB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFi b3V0IHdoYXQgd2FzIHBydW5lZCBhbmQgd2hhdCBzdGF0ZSB0aGUKLQkgKiBwYWdlIGlzIGluIGFm dGVyIHBydW5pbmcsIGZvciB0aGUgYmVuZWZpdCBvZiB0aGUgY2FsbGVyLiAgVGhleSBhcmUKLQkg KiBjb3BpZWQgdG8gdGhlIGNhbGxlcidzIFBydW5lRnJlZXplUmVzdWx0IGF0IHRoZSBlbmQuCisJ ICogcGFnZSBpcyBpbiBhZnRlciBwcnVuaW5nIHRvIHVzZSB3aGVuIHVwZGF0aW5nIHRoZSB2aXNp YmlsaXR5IG1hcCBhbmQKKwkgKiBmb3IgdGhlIGJlbmVmaXQgb2YgdGhlIGNhbGxlci4gIFRoZXkg YXJlIGNvcGllZCB0byB0aGUgY2FsbGVyJ3MKKwkgKiBQcnVuZUZyZWV6ZVJlc3VsdCBhdCB0aGUg ZW5kLgogCSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIAkgKi8KIApAQCAtMTM4LDExICsxNDYsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkg KiBiaXRzLiAgSXQgaXMgb25seSB2YWxpZCBpZiB3ZSBmcm96ZSBzb21lIHR1cGxlcywgYW5kIGFs bF9mcm96ZW4gaXMKIAkgKiB0cnVlLgogCSAqCi0JICogTk9URTogYWxsX3Zpc2libGUgYW5kIGFs bF9mcm96ZW4gZG9uJ3QgaW5jbHVkZSBMUF9ERUFEIGl0ZW1zLiAgVGhhdCdzCi0JICogY29udmVu aWVudCBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSwgdG8gdXNlIHRoZW0gdG8gZGVj aWRlCi0JICogd2hldGhlciB0byBmcmVlemUgdGhlIHBhZ2Ugb3Igbm90LiAgVGhlIGFsbF92aXNp YmxlIGFuZCBhbGxfZnJvemVuCi0JICogdmFsdWVzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgYXJl IGFkanVzdGVkIHRvIGluY2x1ZGUgTFBfREVBRCBpdGVtcyBhdAotCSAqIHRoZSBlbmQuCisJICog Tk9URTogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gZG9uJ3QgaW5jbHVkZSBMUF9ERUFEIGl0 ZW1zIHVudGlsCisJICogZGlyZWN0bHkgYmVmb3JlIHVwZGF0aW5nIHRoZSBWTS4gV2UgaWdub3Jl IExQX0RFQUQgaXRlbXMgd2hlbiBkZWNpZGluZworCSAqIHdoZXRoZXIgb3Igbm90IHRvIG9wcG9y dHVuaXN0aWNhbGx5IGZyZWV6ZSBhbmQgd2hlbiBkZXRlcm1pbmluZyB0aGUKKwkgKiBzbmFwc2hv dCBjb25mbGljdCBob3Jpem9uIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcgdHVwbGVzLgogCSAqCiAJ ICogYWxsX2Zyb3plbiBzaG91bGQgb25seSBiZSBjb25zaWRlcmVkIHZhbGlkIGlmIGFsbF92aXNp YmxlIGlzIGFsc28gc2V0OwogCSAqIHdlIGRvbid0IGJvdGhlciB0byBjbGVhciB0aGUgYWxsX2Zy b3plbiBmbGFnIGV2ZXJ5IHRpbWUgd2UgY2xlYXIgdGhlCkBAIC0zNzcsMTEgKzM4NCwxNSBAQCBp ZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsYXRpb24sCiAgKiBjb25z aWRlcmVkIGFkdmFudGFnZW91cyBmb3Igb3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2UgdG8gZG8g c28gbm93LiAgVGhlCiAgKiAnY3V0b2ZmcycsICdwcmVzdWx0JywgJ25ld19yZWxmcm96ZW5feGlk JyBhbmQgJ25ld19yZWxtaW5fbXhpZCcgYXJndW1lbnRzCiAgKiBhcmUgcmVxdWlyZWQgd2hlbiBm cmVlemluZy4gIFdoZW4gSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNldCwgd2UgYWxzbwot ICogc2V0IHByZXN1bHQtPmFsbF92aXNpYmxlIGFuZCBwcmVzdWx0LT5hbGxfZnJvemVuIG9uIGV4 aXQsIHRvIGluZGljYXRlIGlmCi0gKiB0aGUgVk0gYml0cyBjYW4gYmUgc2V0LiAgVGhleSBhcmUg YWx3YXlzIHNldCB0byBmYWxzZSB3aGVuIHRoZQotICogSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9u IGlzIG5vdCBzZXQsIGJlY2F1c2UgYXQgdGhlIG1vbWVudCBvbmx5IGNhbGxlcnMKKyAqIHNldCBw cmVzdWx0LT5hbGxfdmlzaWJsZSBhbmQgcHJlc3VsdC0+YWxsX2Zyb3plbiBvbiBleGl0LCBmb3Ig dXNlIHdoZW4KKyAqIHZhbGlkYXRpbmcgdGhlIGNoYW5nZXMgbWFkZSB0byB0aGUgVk0uIFRoZXkg YXJlIGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbgorICogdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9w dGlvbiBpcyBub3Qgc2V0LCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25seSBjYWxsZXJzCiAgKiB0 aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KICAqCisgKiBJZiBIRUFQX1BB R0VfUFJVTkVfVVBEQVRFX1ZNIGlzIHNldCBhbmQgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRo ZSBwYWdlCisgKiBoYXMgY2hhbmdlZCwgd2Ugd2lsbCB1cGRhdGUgdGhlIFZNIGF0IHRoZSBzYW1l IHRpbWUgYXMgcHJ1bmluZyBhbmQgZnJlZXppbmcKKyAqIHRoZSBoZWFwIHBhZ2UuCisgKgogICog YmxrX2tub3duX2F2IGlzIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVhcCBibG9jayBh cyBvZiB0aGUgbGFzdCBjYWxsCiAgKiB0byBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2soKS4g dm1idWZmZXIgaXMgdGhlIGJ1ZmZlciB0aGF0IG1heSBhbHJlYWR5CiAgKiBjb250YWluIHRoZSBy ZXF1aXJlZCBibG9jayBvZiB0aGUgdmlzaWJpbGl0eSBtYXAuCkBAIC0zOTYsNiArNDA3LDggQEAg aWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAogICogICBG UkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZCB3aWxs IHJldHVybgogICogICAnYWxsX3Zpc2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3MgdG8gdGhlIGNh bGxlci4KICAqCisgKiAgIFVQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIHNldCB0aGUg cGFnZSdzIHN0YXR1cyBpbiB0aGUgVk0uCisgKgogICogY3V0b2ZmcyBjb250YWlucyB0aGUgZnJl ZXplIGN1dG9mZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0aGUgYmVnaW5uaW5nCiAgKiBv ZiB2YWN1dW1pbmcgdGhlIHJlbGF0aW9uLiAgUmVxdWlyZWQgaWYgSEVBUF9QUlVORV9GUkVFWkUg b3B0aW9uIGlzIHNldC4KICAqIGN1dG9mZnMtPk9sZGVzdFhtaW4gaXMgYWxzbyB1c2VkIHRvIGRl dGVybWluZSBpZiBkZWFkIHR1cGxlcyBhcmUKQEAgLTQ0MSwxNSArNDU0LDE5IEBAIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCWJv b2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlkb19wcnVuZTsKIAlib29sCQlkb19oaW50OworCWJvb2wJ CWRvX3NldF92bTsKIAl1aW50OAkJdm1mbGFncyA9IDA7CiAJdWludDgJCW9sZF92bWJpdHMgPSAw OwogCWJvb2wJCWhpbnRfYml0X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uu d2FsX2ZwaTsKKwlib29sCQlhbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkID0gZmFsc2U7CisJYm9v bAkJc2V0X3BkX2FsbF92aXNpYmxlID0gZmFsc2U7CiAKIAkvKiBDb3B5IHBhcmFtZXRlcnMgdG8g cHJzdGF0ZSAqLwogCXByc3RhdGUudmlzdGVzdCA9IHZpc3Rlc3Q7CiAJcHJzdGF0ZS5tYXJrX3Vu dXNlZF9ub3cgPSAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cpICE9 IDA7CiAJcHJzdGF0ZS5mcmVlemUgPSAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUp ICE9IDA7CisJcHJzdGF0ZS51cGRhdGVfdm0gPSAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9V UERBVEVfVk0pICE9IDA7CiAJcHJzdGF0ZS5jdXRvZmZzID0gY3V0b2ZmczsKIAogCS8qCkBAIC00 OTYsMjkgKzUxMywyNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlwcnN0YXRlLmRlYWRvZmZzZXRzID0gcHJlc3VsdC0+ZGVh ZG9mZnNldHM7CiAKIAkvKgotCSAqIENhbGxlciBtYXkgdXBkYXRlIHRoZSBWTSBhZnRlciB3ZSdy ZSBkb25lLiAgV2UgY2FuIGtlZXAgdHJhY2sgb2YKLQkgKiB3aGV0aGVyIHRoZSBwYWdlIHdpbGwg YmUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYWZ0ZXIgcHJ1bmluZyBhbmQKLQkgKiBmcmVl emluZyB0byBoZWxwIHRoZSBjYWxsZXIgdG8gZG8gdGhhdC4KKwkgKiBLZWVwIHRyYWNrIG9mIHdo ZXRoZXIgb3Igbm90IHRoZSBwYWdlIHdpbGwgYmUgYWxsLXZpc2libGUgYW5kCisJICogYWxsLWZy b3plbiBmb3IgdXNlIGluIG9wcG9ydHVuaXN0aWMgZnJlZXppbmcgYW5kIHRvIHVwZGF0ZSB0aGUg Vk0gaWYKKwkgKiB0aGUgY2FsbGVyIHJlcXVlc3RzIGl0LgorCSAqCisJICogQ3VycmVudGx5LCBv bmx5IFZBQ1VVTSBhdHRlbXB0cyBmcmVlemluZyBhbmQgc2V0dGluZyB0aGUgVk0gYml0cy4gQnV0 CisJICogb3RoZXIgY2FsbGVycyBjb3VsZCBkbyBlaXRoZXIgb25lLiBUaGUgdmlzaWJpbGl0eSBi b29ra2VlcGluZyBpcworCSAqIHJlcXVpcmVkIGZvciBvcHBvcnR1bmlzdGljIGZyZWV6aW5nIChp biBhZGRpdGlvbiB0byBzZXR0aW5nIHRoZSBWTQorCSAqIGJpdHMpIGJlY2F1c2Ugd2Ugb25seSBj b25zaWRlciBvcHBvcnR1bmlzdGljYWxseSBmcmVlemluZyB0dXBsZXMgaWYgdGhlCisJICogd2hv bGUgcGFnZSB3b3VsZCBiZWNvbWUgYWxsLWZyb3plbiBvciBpZiB0aGUgd2hvbGUgcGFnZSB3aWxs IGJlIGZyb3plbgorCSAqIGV4Y2VwdCBmb3IgZGVhZCB0dXBsZXMgdGhhdCB3aWxsIGJlIHJlbW92 ZWQgYnkgdmFjdXVtLgogCSAqCi0JICogQ3VycmVudGx5LCBvbmx5IFZBQ1VVTSBzZXRzIHRoZSBW TSBiaXRzLiAgVG8gc2F2ZSB0aGUgZWZmb3J0LCBvbmx5IGRvCi0JICogdGhlIGJvb2trZWVwaW5n IGlmIHRoZSBjYWxsZXIgbmVlZHMgaXQuICBDdXJyZW50bHksIHRoYXQncyB0aWVkIHRvCi0JICog SEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwgYnV0IGl0IGNvdWxkIGJlIGEgc2VwYXJhdGUgZmxhZyBp ZiB5b3Ugd2FudGVkCi0JICogdG8gdXBkYXRlIHRoZSBWTSBiaXRzIHdpdGhvdXQgYWxzbyBmcmVl emluZyBvciBmcmVlemUgd2l0aG91dCBhbHNvCi0JICogc2V0dGluZyB0aGUgVk0gYml0cy4KKwkg KiBEZWFkIHR1cGxlcyB3aGljaCB3aWxsIGJlIHJlbW92ZWQgYnkgdGhlIGVuZCBvZiB2YWN1dW1p bmcgc2hvdWxkIG5vdAorCSAqIHByZWNsdWRlIHVzIGZyb20gb3Bwb3J0dW5pc3RpY2FsbHkgZnJl ZXppbmcsIHNvIHdlIGRvIG5vdCBjbGVhcgorCSAqIGFsbF92aXNpYmxlIHdoZW4gd2Ugc2VlIExQ X0RFQUQgaXRlbXMuIFdlIGZpeCB0aGF0IGFmdGVyIGRldGVybWluaW5nCisJICogd2hldGhlciBv ciBub3QgdG8gZnJlZXplIGJ1dCBiZWZvcmUgZGVjaWRpbmcgd2hldGhlciBvciBub3QgdG8gdXBk YXRlCisJICogdGhlIFZNIHNvIHRoYXQgd2UgZG9uJ3Qgc2V0IHRoZSBWTSBiaXQgaW5jb3JyZWN0 bHkuCiAJICoKLQkgKiBJbiBhZGRpdGlvbiB0byB0ZWxsaW5nIHRoZSBjYWxsZXIgd2hldGhlciBp dCBjYW4gc2V0IHRoZSBWTSBiaXQsIHdlCi0JICogYWxzbyB1c2UgJ2FsbF92aXNpYmxlJyBhbmQg J2FsbF9mcm96ZW4nIGZvciBvdXIgb3duIGRlY2lzaW9uLW1ha2luZy4gSWYKLQkgKiB0aGUgd2hv bGUgcGFnZSB3b3VsZCBiZWNvbWUgZnJvemVuLCB3ZSBjb25zaWRlciBvcHBvcnR1bmlzdGljYWxs eQotCSAqIGZyZWV6aW5nIHR1cGxlcy4gIFdlIHdpbGwgbm90IGJlIGFibGUgdG8gZnJlZXplIHRo ZSB3aG9sZSBwYWdlIGlmIHRoZXJlCi0JICogYXJlIHR1cGxlcyBwcmVzZW50IHRoYXQgYXJlIG5v dCB2aXNpYmxlIHRvIGV2ZXJ5b25lIG9yIGlmIHRoZXJlIGFyZQotCSAqIGRlYWQgdHVwbGVzIHdo aWNoIGFyZSBub3QgeWV0IHJlbW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQgdHVwbGVzIHdoaWNoCi0J ICogd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNob3VsZCBub3QgcHJl Y2x1ZGUgdXMgZnJvbQotCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLiAgQmVjYXVzZSBv ZiB0aGF0LCB3ZSBkbyBub3QgY2xlYXIKLQkgKiBhbGxfdmlzaWJsZSB3aGVuIHdlIHNlZSBMUF9E RUFEIGl0ZW1zLiAgV2UgZml4IHRoYXQgYXQgdGhlIGVuZCBvZiB0aGUKLQkgKiBmdW5jdGlvbiwg d2hlbiB3ZSByZXR1cm4gdGhlIHZhbHVlIHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxl cgotCSAqIGRvZXNuJ3Qgc2V0IHRoZSBWTSBiaXQgaW5jb3JyZWN0bHkuCisJICogSWYgbm90IGZy ZWV6aW5nIG9yIHVwZGF0aW5nIHRoZSBWTSwgd2Ugb3RoZXJ3aXNlIGF2b2lkIHRoZSBleHRyYQor CSAqIGJvb2trZWVwaW5nLgogCSAqLwotCWlmIChwcnN0YXRlLmZyZWV6ZSkKKwlpZiAocHJzdGF0 ZS5mcmVlemUgfHwgcHJzdGF0ZS51cGRhdGVfdm0pCiAJewogCQlwcnN0YXRlLmFsbF92aXNpYmxl ID0gdHJ1ZTsKIAkJcHJzdGF0ZS5hbGxfZnJvemVuID0gdHJ1ZTsKQEAgLTUzNCwxMiArNTQ5LDE1 IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIg YnVmZmVyLAogCX0KIAogCS8qCi0JICogVGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUg bmV3ZXN0IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlCi0JICogcGFnZS4gIEluIHRoZSBjb21t b24gY2FzZSwgdGhpcyB3aWxsIGJlIHNldCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiB0aGUKLQkg KiBjYWxsZXIgY2FuIHVzZSBmb3IgdXBkYXRpbmcgdGhlIFZNLiAgSWYsIGF0IHRoZSBlbmQgb2Yg ZnJlZXppbmcgYW5kCi0JICogcHJ1bmluZywgdGhlIHBhZ2UgaXMgYWxsLWZyb3plbiwgdGhlcmUg aXMgbm8gcG9zc2liaWxpdHkgdGhhdCBhbnkKLQkgKiBydW5uaW5nIHRyYW5zYWN0aW9uIG9uIHRo ZSBzdGFuZGJ5IGRvZXMgbm90IHNlZSB0dXBsZXMgb24gdGhlIHBhZ2UgYXMKLQkgKiBhbGwtdmlz aWJsZSwgc28gdGhlIGNvbmZsaWN0IGhvcml6b24gcmVtYWlucyBJbnZhbGlkVHJhbnNhY3Rpb25J ZC4KKwkgKiBUaGUgdmlzaWJpbGl0eSBjdXRvZmYgeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBs aXZlLCBjb21taXR0ZWQgdHVwbGVzCisJICogb2xkZXIgdGhhbiBPbGRlc3RYbWluIG9uIHRoZSBw YWdlLiBUaGlzIGZpZWxkIGlzIG9ubHkga2VwdCB1cC10by1kYXRlCisJICogaWYgdGhlIHBhZ2Ug aXMgYWxsLXZpc2libGUuIEFzIHNvb24gYXMgYSB0dXBsZSBpcyBlbmNvdW50ZXJlZCB0aGF0IGlz CisJICogbm90IHZpc2libGUgdG8gYWxsLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRhaW5lZC4gQXMg bG9uZyBhcyBpdCBpcworCSAqIG1haW50YWluZWQsIGl0IGNhbiBiZSB1c2VkIHRvIGNhbGN1bGF0 ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbi4KKwkgKiBUaGlzIGlzIG1vc3QgbGlrZWx5 IHRvIGhhcHBlbiB3aGVuIHVwZGF0aW5nIHRoZSBWTSBhbmQvb3IgZnJlZXppbmcgYWxsCisJICog bGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuIEl0IGlzIHVwZGF0ZWQgYmVmb3JlIHJldHVybmluZyB0 byB0aGUgY2FsbGVyCisJICogYmVjYXVzZSB2YWN1dW0gZG9lcyBhc3NlcnQtYnVpbGQgb25seSB2 YWxpZGF0aW9uIG9uIHRoZSBwYWdlIHVzaW5nIHRoaXMKKwkgKiBmaWVsZC4KIAkgKi8KIAlwcnN0 YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCkBAIC04 MjcsNiArODQ1LDY4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0 aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkgKi8KIAl9CiAKKwkvKgorCSAqIEl0IHdhcyBjb252ZW5p ZW50IHRvIGlnbm9yZSBMUF9ERUFEIGl0ZW1zIGluIGFsbF92aXNpYmxlIGVhcmxpZXIgb24gdG8K KwkgKiBtYWtlIHRoZSBjaG9pY2Ugb2Ygd2hldGhlciBvciBub3QgdG8gZnJlZXplIHRoZSBwYWdl IHVuYWZmZWN0ZWQgYnkgdGhlCisJICogc2hvcnQtdGVybSBwcmVzZW5jZSBvZiBMUF9ERUFEIGl0 ZW1zLiAgVGhlc2UgTFBfREVBRCBpdGVtcyB3ZXJlCisJICogZWZmZWN0aXZlbHkgYXNzdW1lZCB0 byBiZSBMUF9VTlVTRUQgaXRlbXMgaW4gdGhlIG1ha2luZy4gIEl0IGRvZXNuJ3QKKwkgKiBtYXR0 ZXIgd2hpY2ggdmFjdXVtIGhlYXAgcGFzcyAoaW5pdGlhbCBwYXNzIG9yIGZpbmFsIHBhc3MpIGVu ZHMgdXAKKwkgKiBzZXR0aW5nIHRoZSBwYWdlIGFsbC1mcm96ZW4sIGFzIGxvbmcgYXMgdGhlIG9u Z29pbmcgVkFDVVVNIGRvZXMgaXQuCisJICoKKwkgKiBOb3cgdGhhdCBmcmVlemluZyBoYXMgYmVl biBmaW5hbGl6ZWQsIHVuc2V0IGFsbF92aXNpYmxlIGlmIHRoZXJlIGFyZQorCSAqIGFueSBMUF9E RUFEIGl0ZW1zIG9uIHRoZSBwYWdlLiBJdCBuZWVkcyB0byByZWZsZWN0IHRoZSBwcmVzZW50IHN0 YXRlIG9mCisJICogdGhlIHBhZ2Ugd2hlbiB1c2luZyBpdCB0byBkZXRlcm1pbmUgd2hldGhlciBv ciBub3QgdG8gdXBkYXRlIHRoZSBWTS4KKwkgKgorCSAqIEtlZXAgdHJhY2sgb2Ygd2hldGhlciBv ciBub3QgdGhlIHBhZ2Ugd2FzIGFsbC1mcm96ZW4gZXhjZXB0IExQX0RFQUQKKwkgKiBpdGVtcyBm b3IgdGhlIHB1cnBvc2VzIG9mIGNhbGN1bGF0aW5nIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jp em9uLAorCSAqIHRob3VnaC4KKwkgKi8KKwlhbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkID0gcHJz dGF0ZS5hbGxfZnJvemVuOworCWlmIChwcnN0YXRlLmxwZGVhZF9pdGVtcyA+IDApCisJeworCQlw cnN0YXRlLmFsbF92aXNpYmxlID0gZmFsc2U7CisJCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNl OworCX0KKworCS8qCisJICogSGFuZGxlIHNldHRpbmcgdmlzaWJpbGl0eSBtYXAgYml0IGJhc2Vk IG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChhcworCSAqIG9mIGxhc3QgaGVhcF92YWNfc2Nh bl9uZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9tIGFsbF92aXNpYmxlIGFuZAorCSAqIGFsbF9m cm96ZW4gdmFyaWFibGVzLgorCSAqLworCWlmIChwcnN0YXRlLnVwZGF0ZV92bSkKKwl7CisJCS8q CisJCSAqIENsZWFyIGFueSBWTSBjb3JydXB0aW9uLiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUg aW4gYSBjcml0aWNhbAorCQkgKiBzZWN0aW9uLCBzbyB3ZSBkbyBpdCBmaXJzdC4gSWYgUERfQUxM X1ZJU0lCTEUgaXMgaW5jb3JyZWN0bHkgc2V0LAorCQkgKiB3ZSBtYXkgbWFyayB0aGUgaGVhcCBw YWdlIGJ1ZmZlciBkaXJ0eSBoZXJlIGFuZCBjb3VsZCBlbmQgdXAgZG9pbmcKKwkJICogc28gYWdh aW4gbGF0ZXIuIFRoaXMgaXMgbm90IGEgY29ycmVjdG5lc3MgaXNzdWUgYW5kIGlzIGluIHRoZSBw YXRoCisJCSAqIG9mIFZNIGNvcnJ1cHRpb24sIHNvIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJv dXQgdGhlIGV4dHJhCisJCSAqIHBlcmZvcm1hbmNlIG92ZXJoZWFkLgorCQkgKi8KKwkJaWYgKGlk ZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBibG9j a25vLCBidWZmZXIsIHBhZ2UsCisJCQkJCQkJCQkJICAgYmxrX2tub3duX2F2LCBwcnN0YXRlLmxw ZGVhZF9pdGVtcywgdm1idWZmZXIpKQorCQl7CisJCQkvKiBJZiB3ZSBmaXggY29ycnVwdGlvbiwg ZG9uJ3QgdXBkYXRlIHRoZSBWTSBmdXJ0aGVyICovCisJCX0KKworCQkvKiBEZXRlcm1pbmUgaWYg d2UgYWN0dWFsbHkgbmVlZCB0byBzZXQgdGhlIFZNIGFuZCB3aGljaCBiaXRzIHRvIHNldC4gKi8K KwkJZWxzZSBpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJgorCQkJCSAoIWJsa19rbm93bl9hdiB8 fAorCQkJCSAgKHByc3RhdGUuYWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwg YmxvY2tubywgJnZtYnVmZmVyKSkpKQorCQl7CisJCQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEU7CisJCQlpZiAocHJzdGF0ZS5hbGxfZnJvemVuKQorCQkJCXZtZmxhZ3MgfD0g VklTSUJJTElUWU1BUF9BTExfRlJPWkVOOworCQl9CisJfQorCisJZG9fc2V0X3ZtID0gdm1mbGFn cyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUzsKKwlzZXRfcGRfYWxsX3Zpc2libGUgPSBkb19z ZXRfdm0gJiYgIVBhZ2VJc0FsbFZpc2libGUocGFnZSk7CisKKwkvKiBTYXZlIHRoZXNlIGZvciB0 aGUgY2FsbGVyIGluIGNhc2Ugd2UgbGF0ZXIgemVybyBvdXQgdm1mbGFncyAqLworCXByZXN1bHQt Pm5ld192bWJpdHMgPSB2bWZsYWdzOworCiAJLyogQW55IGVycm9yIHdoaWxlIGFwcGx5aW5nIHRo ZSBjaGFuZ2VzIGlzIGNyaXRpY2FsICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAKQEAgLTg0 OCwxMyArOTI4LDEzIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0 aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkvKgogCQkgKiBJZiB0aGF0J3MgYWxsIHdlIGhhZCB0byBk byB0byB0aGUgcGFnZSwgdGhpcyBpcyBhIG5vbi1XQUwtbG9nZ2VkCiAJCSAqIGhpbnQuICBJZiB3 ZSBhcmUgZ29pbmcgdG8gZnJlZXplIG9yIHBydW5lIHRoZSBwYWdlLCB3ZSB3aWxsIG1hcmsKLQkJ ICogdGhlIGJ1ZmZlciBkaXJ0eSBiZWxvdy4KKwkJICogdGhlIGJ1ZmZlciBkaXJ0eSBhbmQgZW1p dCBXQUwgYmVsb3cuCiAJCSAqLwotCQlpZiAoIWRvX2ZyZWV6ZSAmJiAhZG9fcHJ1bmUpCisJCWlm ICghZG9fcHJ1bmUgJiYgIWRvX2ZyZWV6ZSAmJiAhZG9fc2V0X3ZtKQogCQkJTWFya0J1ZmZlckRp cnR5SGludChidWZmZXIsIHRydWUpOwogCX0KIAotCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUp CisJaWYgKGRvX3BydW5lIHx8IGRvX2ZyZWV6ZSB8fCBkb19zZXRfdm0pCiAJewogCQkvKiBBcHBs eSB0aGUgcGxhbm5lZCBpdGVtIGNoYW5nZXMgYW5kIHJlcGFpciBwYWdlIGZyYWdtZW50YXRpb24u ICovCiAJCWlmIChkb19wcnVuZSkKQEAgLTg2OCw3ICs5NDgsMjMgQEAgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCWlmIChkb19m cmVlemUpCiAJCQloZWFwX2ZyZWV6ZV9wcmVwYXJlZF90dXBsZXMoYnVmZmVyLCBwcnN0YXRlLmZy b3plbiwgcHJzdGF0ZS5uZnJvemVuKTsKIAotCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKwkJ aWYgKGRvX3BydW5lIHx8IGRvX2ZyZWV6ZSkKKwkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwor CisJCWlmIChkb19zZXRfdm0pCisJCXsKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9M T0NLX0VYQ0xVU0lWRSk7CisJCQlvbGRfdm1iaXRzID0gaGVhcF9wYWdlX3NldF92bShyZWxhdGlv biwgYmxvY2tubywgYnVmZmVyLAorCQkJCQkJCQkJCSAgdm1idWZmZXIsIHZtZmxhZ3MpOworCisJ CQlpZiAob2xkX3ZtYml0cyA9PSB2bWZsYWdzKQorCQkJeworCQkJCUxvY2tCdWZmZXIodm1idWZm ZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisJCQkJZG9fc2V0X3ZtID0gZmFsc2U7CisJCQkJLyog MCBvdXQgdm1mbGFncyBzbyB3ZSBkb24ndCBlbWl0IFZNIHVwZGF0ZSBXQUwgKi8KKwkJCQl2bWZs YWdzID0gMDsKKwkJCX0KKwkJfQogCiAJCS8qCiAJCSAqIEVtaXQgYSBXQUwgWExPR19IRUFQMl9Q UlVORV9GUkVFWkUgcmVjb3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQKQEAgLTg4NSwzNSArOTgxLDU3 IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIg YnVmZmVyLAogCQkJICogb24gdGhlIHN0YW5kYnkgd2l0aCB4aWRzIG9sZGVyIHRoYW4gdGhlIHlv dW5nZXN0IHR1cGxlIHRoaXMKIAkJCSAqIHJlY29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0 LgogCQkJICovCi0JCQlUcmFuc2FjdGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9uID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7Ci0JCQlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZDsKKwkJCVRyYW5z YWN0aW9uSWQgY29uZmxpY3RfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisKKwkJCS8qCisJ CQkgKiBJZiB3ZSBhcmUgdXBkYXRpbmcgdGhlIFZNLCB0aGUgY29uZmxpY3QgaG9yaXpvbiBpcyBh bG1vc3QKKwkJCSAqIGFsd2F5cyB0aGUgdmlzaWJpbGl0eSBjdXRvZmYgWElELgorCQkJICoKKwkJ CSAqIFNlcGFyYXRlbHksIGlmIHdlIGFyZSBmcmVlemluZyBhbnkgdHVwbGVzLCBhcyBhbiBvcHRp bWl6YXRpb24sCisJCQkgKiB3ZSBjYW4gdXNlIHRoZSB2aXNpYmlsaXR5X2N1dG9mZl94aWQgYXMg dGhlIGNvbmZsaWN0IGhvcml6b24gaWYKKwkJCSAqIHRoZSBwYWdlIHdpbGwgYmUgYWxsLWZyb3pl bi4gVGhpcyBpcyB0cnVlIGV2ZW4gaWYgdGhlcmUgYXJlCisJCQkgKiBMUF9ERUFEIGxpbmUgcG9p bnRlcnMgYmVjYXVzZSB3ZSBpZ25vcmVkIHRob3NlIHdoZW4gbWFpbnRhaW5pbmcKKwkJCSAqIHRo ZSB2aXNpYmlsaXR5X2N1dG9mZl94aWQuCisJCQkgKi8KKwkJCWlmIChkb19zZXRfdm0gfHwgKGRv X2ZyZWV6ZSAmJiBhbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkKSkKKwkJCQljb25mbGljdF94aWQg PSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKIAogCQkJLyoKLQkJCSAqIFdlIGNhbiB1 c2UgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBhcyBvdXIgY3V0b2ZmIGZvcgotCQkJICogY29u ZmxpY3RzIHdoZW4gdGhlIHdob2xlIHBhZ2UgaXMgZWxpZ2libGUgdG8gYmVjb21lIGFsbC1mcm96 ZW4KLQkJCSAqIGluIHRoZSBWTSBvbmNlIHdlJ3JlIGRvbmUgd2l0aCBpdC4gIE90aGVyd2lzZSB3 ZSBnZW5lcmF0ZSBhCi0JCQkgKiBjb25zZXJ2YXRpdmUgY3V0b2ZmIGJ5IHN0ZXBwaW5nIGJhY2sg ZnJvbSBPbGRlc3RYbWluLgorCQkJICogT3RoZXJ3aXNlLCBpZiB3ZSBhcmUgZnJlZXppbmcgYnV0 IHRoZSBwYWdlIHdvdWxkIG5vdCBiZQorCQkJICogYWxsLWZyb3plbiwgd2UgaGF2ZSB0byB1c2Ug dGhlIG1vcmUgcGVzc2ltaXN0aWMgaG9yaXpvbiBvZgorCQkJICogT2xkZXN0WG1pbiwgd2hpY2gg bWF5IGJlIG5ld2VyIHRoYW4gdGhlIG5ld2VzdCB0dXBsZSB3ZSBmcm96ZS4KKwkJCSAqIFRoYXQn cyBiZWNhdXNlIHdlIHdvbid0IGhhdmUgbWFpbnRhaW5lZCB0aGUKKwkJCSAqIHZpc2liaWxpdHlf Y3V0b2ZmX3hpZC4KIAkJCSAqLwotCQkJaWYgKGRvX2ZyZWV6ZSkKKwkJCWVsc2UgaWYgKGRvX2Zy ZWV6ZSkKIAkJCXsKLQkJCQlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmFsbF9m cm96ZW4pCi0JCQkJCWZyel9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS52aXNpYmlsaXR5X2N1 dG9mZl94aWQ7Ci0JCQkJZWxzZQotCQkJCXsKLQkJCQkJLyogQXZvaWRzIGZhbHNlIGNvbmZsaWN0 cyB3aGVuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGluIHVzZSAqLwotCQkJCQlmcnpfY29uZmxpY3Rf aG9yaXpvbiA9IHByc3RhdGUuY3V0b2Zmcy0+T2xkZXN0WG1pbjsKLQkJCQkJVHJhbnNhY3Rpb25J ZFJldHJlYXQoZnJ6X2NvbmZsaWN0X2hvcml6b24pOwotCQkJCX0KKwkJCQljb25mbGljdF94aWQg PSBwcnN0YXRlLmN1dG9mZnMtPk9sZGVzdFhtaW47CisJCQkJVHJhbnNhY3Rpb25JZFJldHJlYXQo Y29uZmxpY3RfeGlkKTsKIAkJCX0KIAotCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGZyel9j b25mbGljdF9ob3Jpem9uLCBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCkpCi0JCQkJY29uZmxp Y3RfeGlkID0gZnJ6X2NvbmZsaWN0X2hvcml6b247Ci0JCQllbHNlCisJCQkvKgorCQkJICogSWYg d2UgYXJlIHJlbW92aW5nIHR1cGxlcyB3aXRoIGEgeW91bmdlciB4bWF4IHRoYW4gb3VyIHNvIGZh cgorCQkJICogY2FsY3VsYXRlZCBjb25mbGljdF94aWQsIHdlIG11c3QgdXNlIHRoaXMgYXMgb3Vy IGhvcml6b24uCisJCQkgKi8KKwkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93cyhwcnN0YXRlLmxh dGVzdF94aWRfcmVtb3ZlZCwgY29uZmxpY3RfeGlkKSkKIAkJCQljb25mbGljdF94aWQgPSBwcnN0 YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsKIAorCQkJLyoKKwkJCSAqIFdlIGNhbiBvbWl0IHRoZSBz bmFwc2hvdCBjb25mbGljdCBob3Jpem9uIGlmIHdlIGFyZSBub3QgcHJ1bmluZworCQkJICogb3Ig ZnJlZXppbmcgYW55IHR1cGxlcyBhbmQgYXJlIHNldHRpbmcgYW4gYWxyZWFkeSBhbGwtdmlzaWJs ZQorCQkJICogcGFnZSBhbGwtZnJvemVuIGluIHRoZSBWTS4gSW4gdGhpcyBjYXNlLCBhbGwgb2Yg dGhlIHR1cGxlcyBvbgorCQkJICogdGhlIHBhZ2UgbXVzdCBhbHJlYWR5IGJlIHZpc2libGUgdG8g YWxsIE1WQ0Mgc25hcHNob3RzIG9uIHRoZQorCQkJICogc3RhbmRieS4KKwkJCSAqLworCQkJaWYg KCFkb19wcnVuZSAmJiAhZG9fZnJlZXplICYmIGRvX3NldF92bSAmJgorCQkJCWJsa19rbm93bl9h diAmJiAodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikpCisJCQkJY29uZmxpY3Rf eGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisKIAkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVl emUocmVsYXRpb24sIGJ1ZmZlciwKIAkJCQkJCQkJCSAgZmFsc2UsCi0JCQkJCQkJCQkgIEludmFs aWRCdWZmZXIsIDAsIGZhbHNlLAorCQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCSAgdm1m bGFncywKKwkJCQkJCQkJCSAgc2V0X3BkX2FsbF92aXNpYmxlLAogCQkJCQkJCQkJICBjb25mbGlj dF94aWQsCiAJCQkJCQkJCQkgIHRydWUsIHJlYXNvbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5mcm96 ZW4sIHByc3RhdGUubmZyb3plbiwKQEAgLTkyNSwxMjQgKzEwNDMsNTUgQEAgaGVhcF9wYWdlX3By dW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAKIAlFTkRf Q1JJVF9TRUNUSU9OKCk7CiAKLQkvKiBDb3B5IGluZm9ybWF0aW9uIGJhY2sgZm9yIGNhbGxlciAq LwotCXByZXN1bHQtPm5kZWxldGVkID0gcHJzdGF0ZS5uZGVsZXRlZDsKLQlwcmVzdWx0LT5ubmV3 bHBkZWFkID0gcHJzdGF0ZS5uZGVhZDsKLQlwcmVzdWx0LT5uZnJvemVuID0gcHJzdGF0ZS5uZnJv emVuOwotCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5saXZlX3R1cGxlczsKLQlwcmVz dWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50bHlfZGVhZF90dXBsZXM7 Ci0KLQkvKgotCSAqIEl0IHdhcyBjb252ZW5pZW50IHRvIGlnbm9yZSBMUF9ERUFEIGl0ZW1zIGlu IGFsbF92aXNpYmxlIGVhcmxpZXIgb24gdG8KLQkgKiBtYWtlIHRoZSBjaG9pY2Ugb2Ygd2hldGhl ciBvciBub3QgdG8gZnJlZXplIHRoZSBwYWdlIHVuYWZmZWN0ZWQgYnkgdGhlCi0JICogc2hvcnQt dGVybSBwcmVzZW5jZSBvZiBMUF9ERUFEIGl0ZW1zLiAgVGhlc2UgTFBfREVBRCBpdGVtcyB3ZXJl Ci0JICogZWZmZWN0aXZlbHkgYXNzdW1lZCB0byBiZSBMUF9VTlVTRUQgaXRlbXMgaW4gdGhlIG1h a2luZy4gIEl0IGRvZXNuJ3QKLQkgKiBtYXR0ZXIgd2hpY2ggdmFjdXVtIGhlYXAgcGFzcyAoaW5p dGlhbCBwYXNzIG9yIGZpbmFsIHBhc3MpIGVuZHMgdXAKLQkgKiBzZXR0aW5nIHRoZSBwYWdlIGFs bC1mcm96ZW4sIGFzIGxvbmcgYXMgdGhlIG9uZ29pbmcgVkFDVVVNIGRvZXMgaXQuCi0JICoKLQkg KiBOb3cgdGhhdCBmcmVlemluZyBoYXMgYmVlbiBmaW5hbGl6ZWQsIHVuc2V0IGFsbF92aXNpYmxl IGlmIHRoZXJlIGFyZQotCSAqIGFueSBMUF9ERUFEIGl0ZW1zIG9uIHRoZSBwYWdlLiAgSXQgbmVl ZHMgdG8gcmVmbGVjdCB0aGUgcHJlc2VudCBzdGF0ZQotCSAqIG9mIHRoZSBwYWdlLCBhcyBleHBl Y3RlZCBmb3IgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLgotCSAqLwotCWlmIChwcnN0YXRl LmFsbF92aXNpYmxlICYmIHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApCi0JewotCQlwcmVzdWx0 LT5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX3Zpc2libGU7Ci0JCXByZXN1bHQtPmFsbF9mcm96 ZW4gPSBwcnN0YXRlLmFsbF9mcm96ZW47Ci0JfQotCWVsc2UKLQl7Ci0JCXByZXN1bHQtPmFsbF92 aXNpYmxlID0gZmFsc2U7Ci0JCXByZXN1bHQtPmFsbF9mcm96ZW4gPSBmYWxzZTsKLQl9CisJaWYg KGRvX3NldF92bSkKKwkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsK IAotCXByZXN1bHQtPmhhc3R1cCA9IHByc3RhdGUuaGFzdHVwOwotCi0JLyoKLQkgKiBJZiB1cGRh dGluZyB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoZSBjb25mbGljdCBob3Jpem9uIGZvciB0aGF0IHJl Y29yZAotCSAqIG11c3QgYmUgdGhlIG5ld2VzdCB4bWluIG9uIHRoZSBwYWdlLiAgSG93ZXZlciwg aWYgdGhlIHBhZ2UgaXMKLQkgKiBjb21wbGV0ZWx5IGZyb3plbiwgdGhlcmUgY2FuIGJlIG5vIGNv bmZsaWN0IGFuZCB0aGUgdm1fY29uZmxpY3RfaG9yaXpvbgotCSAqIHNob3VsZCByZW1haW4gSW52 YWxpZFRyYW5zYWN0aW9uSWQuICBUaGlzIGluY2x1ZGVzIHRoZSBjYXNlIHRoYXQgd2UKLQkgKiBq dXN0IGZyb3plIGFsbCB0aGUgdHVwbGVzOyB0aGUgcHJ1bmUtZnJlZXplIHJlY29yZCBpbmNsdWRl ZCB0aGUKLQkgKiBjb25mbGljdCBYSUQgYWxyZWFkeSBzbyB0aGUgVk0gdXBkYXRlIHJlY29yZCBk b2Vzbid0IG5lZWQgaXQuCi0JICovCi0JaWYgKHByZXN1bHQtPmFsbF9mcm96ZW4pCi0JCXByZXN1 bHQtPnZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQllbHNlCi0J CXByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2Zm X3hpZDsKKwlBc3NlcnQoIXByc3RhdGUuYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0 ZW1zID09IDApKTsKIAogCS8qCi0JICogSGFuZGxlIHNldHRpbmcgdmlzaWJpbGl0eSBtYXAgYml0 IGJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChhcwotCSAqIG9mIGxhc3QgaGVhcF92 YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9tIGFsbF92aXNpYmxlIGFuZAotCSAq IGFsbF9mcm96ZW4gdmFyaWFibGVzLgorCSAqIFZBQ1VVTSB3aWxsIGNhbGwgaGVhcF9wYWdlX2lz X2FsbF92aXNpYmxlKCkgZHVyaW5nIHRoZSBzZWNvbmQgcGFzcyBvdmVyCisJICogdGhlIGhlYXAg dG8gZGV0ZXJtaW5lIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGZvciB0aGUgcGFnZSAtLSB0 aGlzCisJICogaXMgYSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBsb2dpYyBmcm9tIHRoaXMg ZnVuY3Rpb24uICBOb3cgdGhhdAorCSAqIHdlJ3ZlIGZpbmlzaGVkIHBydW5pbmcgYW5kIGZyZWV6 aW5nLCBtYWtlIHN1cmUgdGhhdCB3ZSdyZSBpbiB0b3RhbAorCSAqIGFncmVlbWVudCB3aXRoIGhl YXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIHVzaW5nIGFuIGFzc2VydGlvbi4gV2Ugd2lsbAorCSAq IGhhdmUgYWxyZWFkeSBzZXQgdGhlIHBhZ2UgaW4gdGhlIFZNLCBzbyB0aGlzIGFzc2VydGlvbiB3 aWxsIG9ubHkgbGV0CisJICogeW91IGtub3cgdGhhdCB5b3UndmUgYWxyZWFkeSBkb25lIHNvbWV0 aGluZyB3cm9uZy4KIAkgKi8KLQlpZiAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVf Vk0pCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCWlmIChwcnN0YXRlLmFsbF92aXNpYmxl KQogCXsKLQkJaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwKLQkJ CQkJCQkJCQkgICBibG9ja25vLCBidWZmZXIsIHBhZ2UsCi0JCQkJCQkJCQkJICAgYmxrX2tub3du X2F2LAotCQkJCQkJCQkJCSAgIHByc3RhdGUubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlcikpCi0JCXsK LQkJCS8qIElmIHdlIGZpeCBjb3JydXB0aW9uLCBkb24ndCB1cGRhdGUgdGhlIFZNIGZ1cnRoZXIg Ki8KLQkJfQorCQlUcmFuc2FjdGlvbklkIGRlYnVnX2N1dG9mZjsKKwkJYm9vbAkJZGVidWdfYWxs X2Zyb3plbjsKIAotCQkvKgotCQkgKiBJZiB0aGUgcGFnZSBpc24ndCB5ZXQgbWFya2VkIGFsbC12 aXNpYmxlIGluIHRoZSBWTSBvciBpdCBpcyBhbmQKLQkJICogbmVlZHMgdG8gbWUgbWFya2VkIGFs bC1mcm96ZW4sIHVwZGF0ZSB0aGUgVk0gTm90ZSB0aGF0IGFsbF9mcm96ZW4KLQkJICogaXMgb25s eSB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcyB0cnVlLCBzbyB3ZSBtdXN0IGNoZWNrIGJvdGgKLQkJ ICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4uCi0JCSAqLwotCQllbHNlIGlmIChwcmVzdWx0 LT5hbGxfdmlzaWJsZSAmJgotCQkJCSAoIWJsa19rbm93bl9hdiB8fAotCQkJCSAgKHByZXN1bHQt PmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9GUk9aRU4ocmVsYXRpb24sIGJsb2Nrbm8sICZ2bWJ1ZmZl cikpKSkKLQkJewotCQkJQXNzZXJ0KHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApOwotCQkJdm1m bGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisJCUFzc2VydChjdXRvZmZzKTsKIAot CQkJLyoKLQkJCSAqIElmIHRoZSBwYWdlIGlzIGFsbC1mcm96ZW4sIHdlIGNhbiBwYXNzIEludmFs aWRUcmFuc2FjdGlvbklkIGFzCi0JCQkgKiBvdXIgY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbiBzdWZmaWNpZW50IHRvCi0JCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2Fm ZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKLQkJCSAqIHdlcmUg ZnJvemVuLgotCQkJICovCi0JCQlpZiAocHJlc3VsdC0+YWxsX2Zyb3plbikKLQkJCXsKLQkJCQlB c3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24p KTsKLQkJCQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJCX0KKwkJQXNz ZXJ0KHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApOwogCi0JCQkvKgotCQkJICogSXQncyBwb3Nz aWJsZSBmb3IgdGhlIFZNIGJpdCB0byBiZSBjbGVhciBhbmQgdGhlIHBhZ2UtbGV2ZWwgYml0Ci0J CQkgKiB0byBiZSBzZXQgaWYgY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZC4KLQkJCSAqCi0JCQkg KiBBbmQgZXZlbiBpZiB3ZSBhcmUganVzdCBwbGFubmluZyB0byB1cGRhdGUgdGhlIGZyb3plbiBi aXQgaW4KLQkJCSAqIHRoZSBWTSwgd2Ugc2hvdWxkbid0IHJlbHkgb24gYWxsX3Zpc2libGVfYWNj b3JkaW5nX3RvX3ZtIGFzIGEKLQkJCSAqIHByb3h5IGZvciB0aGUgcGFnZS1sZXZlbCBQRF9BTExf VklTSUJMRSBiaXQgYmVpbmcgc2V0LCBzaW5jZSBpdAotCQkJICogbWlnaHQgaGF2ZSBiZWNvbWUg c3RhbGUuCi0JCQkgKgotCQkJICogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQg dGhlIFZNIGJpdCBpcyBub3Qgc2V0LCB3ZQotCQkJICogZG9uJ3QgbmVlZCB0byBkaXJ0eSB0aGUg aGVhcCBwYWdlLiAgSG93ZXZlciwgaWYgY2hlY2tzdW1zIGFyZQotCQkJICogZW5hYmxlZCwgd2Ug ZG8gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQKLQkJCSAq IGJlZm9yZSBwYXNzaW5nIGl0IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5 IGJlCi0JCQkgKiBsb2dnZWQuCi0JCQkgKi8KLQkJCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdl KSB8fCBYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCQl7Ci0JCQkJUGFnZVNldEFsbFZpc2libGUo cGFnZSk7Ci0JCQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7Ci0JCQl9CisJCWlmICghaGVhcF9w YWdlX2lzX2FsbF92aXNpYmxlKHJlbGF0aW9uLCBidWZmZXIsCisJCQkJCQkJCQkgIGN1dG9mZnMt Pk9sZGVzdFhtaW4sCisJCQkJCQkJCQkgICZkZWJ1Z19hbGxfZnJvemVuLAorCQkJCQkJCQkJICAm ZGVidWdfY3V0b2ZmLCBvZmZfbG9jKSkKKwkJCUFzc2VydChmYWxzZSk7CiAKLQkJCW9sZF92bWJp dHMgPSBoZWFwX3BhZ2Vfc2V0X3ZtX2FuZF9sb2cocmVsYXRpb24sIGJsb2Nrbm8sIGJ1ZmZlciwK LQkJCQkJCQkJCQkJCSAgdm1idWZmZXIsIHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24sCi0J CQkJCQkJCQkJCQkgIHZtZmxhZ3MpOwotCQl9CisJCUFzc2VydChwcnN0YXRlLmFsbF9mcm96ZW4g PT0gZGVidWdfYWxsX2Zyb3plbik7CisKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChk ZWJ1Z19jdXRvZmYpIHx8CisJCQkgICBkZWJ1Z19jdXRvZmYgPT0gcHJzdGF0ZS52aXNpYmlsaXR5 X2N1dG9mZl94aWQpOwogCX0KKyNlbmRpZgogCisJLyogQ29weSBpbmZvcm1hdGlvbiBiYWNrIGZv ciBjYWxsZXIgKi8KKwlwcmVzdWx0LT5uZGVsZXRlZCA9IHByc3RhdGUubmRlbGV0ZWQ7CisJcHJl c3VsdC0+bm5ld2xwZGVhZCA9IHByc3RhdGUubmRlYWQ7CisJcHJlc3VsdC0+bmZyb3plbiA9IHBy c3RhdGUubmZyb3plbjsKKwlwcmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90dXBs ZXM7CisJcHJlc3VsdC0+cmVjZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5X2Rl YWRfdHVwbGVzOworCXByZXN1bHQtPm9sZF92bWJpdHMgPSBvbGRfdm1iaXRzOworCS8qIG5ld192 bWJpdHMgd2FzIHNldCBhYm92ZSAqLworCXByZXN1bHQtPmhhc3R1cCA9IHByc3RhdGUuaGFzdHVw OwogCXByZXN1bHQtPmxwZGVhZF9pdGVtcyA9IHByc3RhdGUubHBkZWFkX2l0ZW1zOwogCS8qIHRo ZSBwcmVzdWx0LT5kZWFkb2Zmc2V0cyBhcnJheSB3YXMgYWxyZWFkeSBmaWxsZWQgaW4gKi8KIAot CXByZXN1bHQtPm9sZF92bWJpdHMgPSBvbGRfdm1iaXRzOwotCXByZXN1bHQtPm5ld192bWJpdHMg PSB2bWZsYWdzOwotCiAJaWYgKHByc3RhdGUuZnJlZXplKQogCXsKIAkJaWYgKHByZXN1bHQtPm5m cm96ZW4gPiAwKQpAQCAtMTYyNCw4ICsxNjczLDEzIEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hh bmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1i CiAJCQlicmVhazsKIAl9CiAKLQkvKiBDb25zaWRlciBmcmVlemluZyBhbnkgbm9ybWFsIHR1cGxl cyB3aGljaCB3aWxsIG5vdCBiZSByZW1vdmVkICovCi0JaWYgKHByc3RhdGUtPmZyZWV6ZSkKKwkv KgorCSAqIENvbnNpZGVyIGZyZWV6aW5nIGFueSBub3JtYWwgdHVwbGVzIHdoaWNoIHdpbGwgbm90 IGJlIHJlbW92ZWQuCisJICogUmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB3ZSB3YW50IHRv IGZyZWV6ZSB0aGUgdHVwbGVzLCBpZiB3ZSB3YW50CisJICogdG8gdXBkYXRlIHRoZSBWTSwgd2Ug aGF2ZSB0byBjYWxsIGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoKSBvbiBldmVyeQorCSAqIHR1 cGxlIHRvIGtub3cgd2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2lsbCBiZSB0b3RhbGx5IGZyb3pl bi4KKwkgKi8KKwlpZiAocHJzdGF0ZS0+ZnJlZXplIHx8IHByc3RhdGUtPnVwZGF0ZV92bSkKIAl7 CiAJCWJvb2wJCXRvdGFsbHlfZnJvemVuOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKaW5kZXggNTgwNjIwN2E2NzQuLjdkNzRmOGZjMGYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCkBAIC0yMDE5LDM0ICsyMDE5LDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVs U3RhdGUgKnZhY3JlbCwKIAkJdmFjcmVsLT5uZXdfZnJvemVuX3R1cGxlX3BhZ2VzKys7CiAJfQog Ci0JLyoKLQkgKiBWQUNVVU0gd2lsbCBjYWxsIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIGR1 cmluZyB0aGUgc2Vjb25kIHBhc3Mgb3ZlcgotCSAqIHRoZSBoZWFwIHRvIGRldGVybWluZSBhbGxf dmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBmb3IgdGhlIHBhZ2UgLS0gdGhpcwotCSAqIGlzIGEgc3Bl Y2lhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgbG9naWMgZnJvbSB0aGlzIGZ1bmN0aW9uLiAgTm93IHRo YXQKLQkgKiB3ZSd2ZSBmaW5pc2hlZCBwcnVuaW5nIGFuZCBmcmVlemluZywgbWFrZSBzdXJlIHRo YXQgd2UncmUgaW4gdG90YWwKLQkgKiBhZ3JlZW1lbnQgd2l0aCBoZWFwX3BhZ2VfaXNfYWxsX3Zp c2libGUoKSB1c2luZyBhbiBhc3NlcnRpb24uCi0JICovCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVD S0lORwotCS8qIE5vdGUgdGhhdCBhbGxfZnJvemVuIHZhbHVlIGRvZXMgbm90IG1hdHRlciB3aGVu ICFhbGxfdmlzaWJsZSAqLwotCWlmIChwcmVzdWx0LmFsbF92aXNpYmxlKQotCXsKLQkJVHJhbnNh Y3Rpb25JZCBkZWJ1Z19jdXRvZmY7Ci0JCWJvb2wJCWRlYnVnX2FsbF9mcm96ZW47Ci0KLQkJQXNz ZXJ0KHByZXN1bHQubHBkZWFkX2l0ZW1zID09IDApOwotCi0JCWlmICghaGVhcF9wYWdlX2lzX2Fs bF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWYsCi0JCQkJCQkJCQkgIHZhY3JlbC0+Y3V0b2Zmcy5P bGRlc3RYbWluLCAmZGVidWdfYWxsX2Zyb3plbiwKLQkJCQkJCQkJCSAgJmRlYnVnX2N1dG9mZiwg JnZhY3JlbC0+b2ZmbnVtKSkKLQkJCUFzc2VydChmYWxzZSk7Ci0KLQkJQXNzZXJ0KHByZXN1bHQu YWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKLQotCQlBc3NlcnQoIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJCSAgIGRlYnVnX2N1dG9mZiA9PSBwcmVzdWx0 LnZtX2NvbmZsaWN0X2hvcml6b24pOwotCX0KLSNlbmRpZgotCiAJLyoKIAkgKiBOb3cgc2F2ZSBk ZXRhaWxzIG9mIHRoZSBMUF9ERUFEIGl0ZW1zIGZyb20gdGhlIHBhZ2UgaW4gdmFjcmVsCiAJICov CkBAIC0yMDgwLDggKzIwNTIsNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVs LAogCS8qIERpZCB3ZSBmaW5kIExQX0RFQUQgaXRlbXM/ICovCiAJKmhhc19scGRlYWRfaXRlbXMg PSAocHJlc3VsdC5scGRlYWRfaXRlbXMgPiAwKTsKIAotCUFzc2VydCghcHJlc3VsdC5hbGxfdmlz aWJsZSB8fCAhKCpoYXNfbHBkZWFkX2l0ZW1zKSk7Ci0KIAkvKgogCSAqIEZvciB0aGUgcHVycG9z ZXMgb2YgbG9nZ2luZywgY291bnQgd2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2FzIG5ld2x5CiAJ ICogc2V0IGFsbC12aXNpYmxlIGFuZCwgcG90ZW50aWFsbHksIGFsbC1mcm96ZW4uCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVh cGFtLmgKaW5kZXggNTM0YTYzYWFiMzEuLmUzNWI0YWRmMzhkIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBA IC0yMzQsMTkgKzIzNCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWlu dAkJCXJlY2VudGx5X2RlYWRfdHVwbGVzOwogCiAJLyoKLQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxs X2Zyb3plbiBpbmRpY2F0ZSB0aGUgc3RhdHVzIG9mIHRoZSBwYWdlIGFzIHJlZmxlY3RlZAotCSAq IGluIHRoZSB2aXNpYmlsaXR5IG1hcCBhZnRlciBwcnVuaW5nLCBmcmVlemluZywgYW5kIHNldHRp bmcgYW55IHBhZ2VzCi0JICogYWxsLXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwLgorCSAq IG9sZF92bWJpdHMgYXJlIHRoZSBzdGF0ZSBvZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96 ZW4gYml0cyBpbiB0aGUKKwkgKiB2aXNpYmlsaXR5IG1hcCBiZWZvcmUgdXBkYXRpbmcgaXQgZHVy aW5nIHBoYXNlIEkgb2YgdmFjdXVtaW5nLgorCSAqIG5ld192bWJpdHMgYXJlIHRoZSBzdGF0ZSBv ZiB0aG9zZSBiaXRzIGFmdGVyIHBoYXNlIEkgb2YgdmFjdXVtaW5nLgogCSAqCi0JICogdm1fY29u ZmxpY3RfaG9yaXpvbiBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBh Z2UKLQkgKiAob2xkZXIgdGhhbiBPbGRlc3RYbWluKS4gIEl0IHdpbGwgb25seSBiZSB2YWxpZCBp ZiB3ZSBkaWQgbm90IHNldCB0aGUKLQkgKiBwYWdlIGFsbC1mcm96ZW4gaW4gdGhlIFZNLgotCSAq Ci0JICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24g aXMgc2V0LgorCSAqIFRoZXNlIGFyZSBvbmx5IHNldCBpZiB0aGUgSEVBUF9QQUdFX1BSVU5FX1VQ REFURV9WTSBvcHRpb24gaXMgc2V0LgogCSAqLwotCWJvb2wJCWFsbF92aXNpYmxlOwotCWJvb2wJ CWFsbF9mcm96ZW47Ci0JVHJhbnNhY3Rpb25JZCB2bV9jb25mbGljdF9ob3Jpem9uOwogCXVpbnQ4 CQlvbGRfdm1iaXRzOwogCXVpbnQ4CQluZXdfdm1iaXRzOwogCi0tIAoyLjM0LjEKCg== --000000000000459e560638430326--