Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1x6a24-000Jnr-30 for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Sep 2026 20:45:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1x6a24-003Rf3-0w for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Sep 2026 20:45:36 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1x6a23-003Reh-14 for pgsql-hackers@lists.postgresql.org; Tue, 15 Sep 2026 20:45:35 +0000 Received: from fhigh-a4-smtp.messagingengine.com ([103.168.172.155]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1x6a1t-00000000FWi-0V6K for pgsql-hackers@lists.postgresql.org; Tue, 15 Sep 2026 20:45:34 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfhigh.phl.internal (Postfix) with ESMTP id 8D1301400ADA; Tue, 15 Sep 2026 16:45:24 -0400 (EDT) Received: from phl-imap-02 ([10.202.2.81]) by phl-compute-02.internal (MEProxy); Tue, 15 Sep 2026 16:45:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc:cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1789505124; x=1789591524; bh=jMU+M6z/CQ RERTTuhwum12WcpAnGLdmxPMk5RuO2MvQ=; b=Gbc0Lc9T5R9jPruDri29wOxbKG a5Z+78fuic+hWp2OG5TW0KLBRjZFrrjNkAtlBYNXkM5lZ8/i1TedCwN8hFDeanTI 6iJ4LLRCB8m0ezZEHQ8xK5NI/zfXZzWoxOnHYJstsdTwbj1rkGkp2+SUoIeTNP0r 4TSImWDOP28gaWsucjyFdFIPAigqtpGjabRw8DhytiOHcl0R79CCj7YyoXgZN/9m DEvBUgfl3GZs4mdJeMHKXtgiWCN3GpLy5tdvBwoNwRz5tFDOEHCjHArbhIGu4wA4 g2VYLKWoeXP6pshVjKVF4J4PhZ/mBTAI69gDbnA3HngE3ofRRM6H+94nFS7Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1789505124; x=1789591524; bh=jMU+M6z/CQRERTTuhwum12WcpAnGLdmxPMk 5RuO2MvQ=; b=kP3TJtrOjPnP0l454+HQi2BYRVoaIf1p/0zw++lGMukJy6F6bZh zOCRUXf3zq+TQyen1tOP5Ixjc0XbR50OmmYVE5u2paKyACwJb6J7cdC+d4AQ4vlM Gegwq6+2kAiABZrGs9qQIUtnvIiLnKK/tyhthEczwLhw1A+kQqGfve9BmfTDVCej 2vKRUVj7zdZ69RPc3OF/ZiwmSp5hvz/l07V/2pTzdqoS+Sw97/iXIJ5Y2FBThCdj CjUorD61caHpX6I8NdQ/AOrt1dVPHgJ/zSRQsSMUIL7V0nQNgKU+J/5bD7jEs0fJ XGVL9qZpQiiwu2fVsMNGyafWvWRnc6Kdcrg== X-ME-Sender: X-ME-Proxy-Cause: dmFkZTGWqjyNJgjSGm5f/p8D9hUjKnOUhNajjI7tyzHtYl3m9GL9p0EKdnA6J/t/hmExNZ H0/T3WzjgMskvAhGjdAChOZVFMYD/CGKQX4q1wsoxPFvblLWHuzWeIB/bcD5yRIaS9Aid5 l6N5UaA2Atj7uXV7J4jvAkl+DwOSk8JR8tGR9BCYPi3PIwRgM2mTVIyfgt7O+UTQwssQ77 mXKvI9qFL82vxBBxSP/INyszyRfGwmur6mRzT4BD/rIAh/ehk5tPM5YxRXSF/7HOQ+LWbg tZPTXdK5zGgGrSRW64gNK+IEISoiF7CFZ7mxJqb+2WCDp2y9D1wtMTxOK2NM4PsvjIX9ni LBCyyP+AE1T2r0PK/JljxkLUHK4LTGwCMhKiFxyn0BeV0EN5kdLy4PkawRE/4oov9uhqjB RLR074COiAubWY/hJgtQRHGC+0nzZxCzaUjQx1y7fXOp7d2dX1bmdQQ4Vwysh2X1M7qDoU EiE0DhwHaYaeA5jGfWWLgsLkJI7mdGAgNXjOsAVHK/dkKbTKyTmqKCEBb5hZfA7m1BiFlw zl28MZYo+hI/yvKfQXa/f9h9HEVxfb1LdNFtHEpEjYHdFTv92z0ZSbR7h8EgnYf70DgH63 jgA13dnzbkYSAZotvUuWB5U/1RmvtZjaRhfuIsal202RXXDM+8uDGbsB2Gfw X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 354E6700065; Tue, 15 Sep 2026 16:45:24 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: AzZjflurSG6s Date: Tue, 15 Sep 2026 16:45:03 -0400 From: "Greg Burd" To: "PostgreSQL Hackers" Cc: "Andres Freund" , "Alexey Makhmutov" , "Tomas Vondra" , "Jakub Wartak" Message-Id: In-Reply-To: References: <5bc6d309-61fe-4d8b-9e1f-a2961564a559@vondra.me> <05df16f8-025a-43cd-9636-3194464012ed@vondra.me> <403c813e-7d63-4ee8-a95f-4e5c1e310f4d@vondra.me> <0e1b997d-99c8-40f4-bc32-6c044bc7ed9a@vondra.me> <2db78610-b480-4aa0-a1b6-57f1c2dcb708@vondra.me> <2e1be441-5608-4bc8-9ac4-6fad9a060db4@vondra.me> <334f7644-6716-4e63-a7c4-13c5cbcdd210@vondra.me> <86e7e218-9013-4cdb-9ed2-dfda49640b4d@vondra.me> <2b6abd8f-3659-4be1-9499-b4f00f973f22@vondra.me> Subject: Re: Adding basic NUMA awareness Content-Type: multipart/mixed; boundary=317345122ad1692da28ddb245f423447087961c8 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --317345122ad1692da28ddb245f423447087961c8 Content-Type: text/plain Content-Transfer-Encoding: 7bit I withdrew my batched clock sweep on its own thread. The piece worth keeping belongs here: replacing the 0..5 usage_count with a 1-bit HOT/COOL cooling state, on top of your partitioning. I built your v20260605 0001-0006 plus Wartak's 0008 and added the evictor, then measured it against the same tree with the stock evictor. Where it mattered I ran each test with and without partitioning to separate an evictor effect from a NUMA effect. r8i.metal-96xl, 6 nodes, your harness. One result holds up. Under memory pressure HOT/COOL keeps more of the frequently-used index pages resident than the 0..5 clock, and it does so by the same margin with or without partitioning: stock 0..5 HOT/COOL delta unpartitioned: index buffers resident 107,941 111,623 +3.4% index share of evictions 36.89% 36.07% -0.83pt 6-NUMA partitioned: index buffers resident 108,029 111,556 +3.3% index share of evictions 36.88% 36.08% -0.80pt Workload: 8GB cold heap, three 850MB secondary indexes, s_b=2GB, zipfian index probes at 192 clients, 5 runs alternated. The per-run numbers don't overlap (stock 36.87-36.90, HOT/COOL 36.06-36.14). Under 0..5 the cold-heap fetches inflate usage counts and heap pages outlast index pages by a sweep or two; the 1-bit state demotes them on the next pass, so reused index pages win a little more often. Because the margin is identical partitioned and not, it's a property of the evictor, not of NUMA. So it's a small win on its own on single-socket boxes, and it doesn't overlap with what partitioning buys you. Throughput on top of partitioning is a wash on seqconcurrscans and pgbenchS, and I'm not claiming otherwise. One thing unrelated to the evictor that's useful to you: the c=1 seqconcurrscans regression gets worse with more nodes, -12% at 2 and -49% at 6. Each partition is s_b/nodes, so at 6 nodes a single-client scan no longer fits where it did unpartitioned. It looks like it wants a floor on partition size rather than one partition per node. Happy to test a floor if you want to try one. Two build nits, both one-liners: pg_buffercache--1.7--1.8.sql updates the Makefile but not meson.build, so CREATE EXTENSION fails under meson; and 0008 needs a rebase (applies to master only with fuzz, leaves a stray token in the ClockSweep struct). Only 0009 is the change to the hot/cool algorithm, the other 8 patches are what was on this list before. best. -greg --317345122ad1692da28ddb245f423447087961c8 Content-Disposition: attachment; filename*0="v20260915a-0001-Add-shmem_populate-and-shmem_interleave-G.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v20260915a-0001-Add-shmem=5Fpopulate-and-shmem=5Finterleave-G.?= =?UTF-8?Q?patch?=" Content-Transfer-Encoding: base64 RnJvbSA3ZDE4NzhmMWY4Yjg0ZTllMWUyZTA2ZWM2NWRkMTc0ZGU1M2YyYTI2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogV2VkLCAzIEp1biAyMDI2IDE2OjMwOjI4ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 MjAyNjA5MTVhIDEvOV0gQWRkIHNobWVtX3BvcHVsYXRlIGFuZCBzaG1lbV9pbnRlcmxlYXZl IEdVQ3MKCi0gc2htZW1fcG9wdWxhdGUgLSBGb3JjZXMgbW1hcCgpIHdpdGggTUFQX1BPUFVM QVRFLCB3aGljaCBmYXVsdHMgYWxsCiAgbWVtb3J5IHBhZ2VzIGJhY2tpbmcgdGhlIHNoYXJl ZCBtZW1vcnkgc2VnbWVudC4KCi0gc2htZW1faW50ZXJsZWF2ZSAtIEFwcGxpZXMgTlVNQSBp bnRlcmxlYXZpbmcgb24gdGhlIHdob2xlIHNoYXJlZAogIG1lbW9yeSBzZWdtZW50LCB0byBi YWxhbmNlIGFsbG9jYXRpb25zIGJldHdlZW4gbm9kZXMuCi0tLQogc3JjL2JhY2tlbmQvcG9y dC9zeXN2X3NobWVtLmMgICAgICAgICAgICAgfCA0NyArKysrKysrKysrKysrKysrKysrKysr Kwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgfCAxNCArKysr KysrCiBzcmMvaW5jbHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICB8ICA0ICsr CiAzIGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wb3J0L3N5c3Zfc2htZW0uYyBiL3NyYy9iYWNrZW5kL3BvcnQvc3lzdl9zaG1l bS5jCmluZGV4IDJlMzg4NmNmLi45ZWFmZjgzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cG9ydC9zeXN2X3NobWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9ydC9zeXN2X3NobWVtLmMK QEAgLTI3LDYgKzI3LDEwIEBACiAjaW5jbHVkZSA8c3lzL3NobS5oPgogI2luY2x1ZGUgPHN5 cy9zdGF0Lmg+CiAKKyNpZmRlZiBVU0VfTElCTlVNQQorI2luY2x1ZGUgPG51bWEuaD4KKyNl bmRpZgorCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1 dGlscy5oIgogI2luY2x1ZGUgInBvcnRhYmlsaXR5L21lbS5oIgpAQCAtOTgsNiArMTAyLDEw IEBAIHZvaWQJICAgKlVzZWRTaG1lbVNlZ0FkZHIgPSBOVUxMOwogc3RhdGljIFNpemUgQW5v bnltb3VzU2htZW1TaXplOwogc3RhdGljIHZvaWQgKkFub255bW91c1NobWVtID0gTlVMTDsK IAorLyogR1VDcyAqLworYm9vbCBzaG1lbV9wb3B1bGF0ZSA9IGZhbHNlOwkvKiBNQVBfUE9Q VUxBVEUgKi8KK2Jvb2wgc2htZW1faW50ZXJsZWF2ZSA9IGZhbHNlOwkvKiBOVU1BIGludGVy bGVhdmluZyAqLworCiBzdGF0aWMgdm9pZCAqSW50ZXJuYWxJcGNNZW1vcnlDcmVhdGUoSXBj TWVtb3J5S2V5IG1lbUtleSwgU2l6ZSBzaXplKTsKIHN0YXRpYyB2b2lkIElwY01lbW9yeURl dGFjaChpbnQgc3RhdHVzLCBEYXR1bSBzaG1hZGRyKTsKIHN0YXRpYyB2b2lkIElwY01lbW9y eURlbGV0ZShpbnQgc3RhdHVzLCBEYXR1bSBzaG1JZCk7CkBAIC02MDQsNiArNjEyLDIxIEBA IENyZWF0ZUFub255bW91c1NlZ21lbnQoU2l6ZSAqc2l6ZSkKIAlpbnQJCQltbWFwX2Vycm5v ID0gMDsKIAlpbnQJCQltbWFwX2ZsYWdzID0gTUFQX1NIQVJFRCB8IE1BUF9BTk9OWU1PVVMg fCBNQVBfSEFTU0VNQVBIT1JFOwogCisJLyogSWYgcmVxdWVzdGVkLCBwb3B1bGF0ZSB0aGUg c2hhcmVkIG1lbW9yeSBieSBNQVBfUE9QVUxBVEUuICovCisJaWYgKHNobWVtX3BvcHVsYXRl KQorCQltbWFwX2ZsYWdzIHw9IE1BUF9QT1BVTEFURTsKKworI2lmZGVmIFVTRV9MSUJOVU1B CisJLyoKKwkgKiBJZiByZXF1ZXN0ZWQsIGludGVybGVhdmUgdGhlIHNoYXJlZCBtZW1vcnkg Ynkgc2V0dGluZyBhIG1lbW9yeSBwb2xpY3kKKwkgKiBiZWZvcmUgdGhlIG1tYXAoKSBjYWxs LiBUaGlzIHJlYWxseSBtYXR0ZXJzIG9ubHkgd2l0aCBNQVBfUE9QVUxBVEUsCisJICogYmVj YXVzZSB3aXRob3V0IHBhZ2UgZmF1bHRzIHRoZSBtZW1vcnkgZG9lcyBub3QgYWN0dWFsbHkg Z2V0IHBsYWNlZAorCSAqIHRvIHRoZSBub2Rlcy4gQnV0IHdpdGhvdXQgTUFQX1BPUFVMQVRF IGl0J3MgdmlydHVhbGx5IGZyZWUuCisJICovCisJaWYgKHNobWVtX2ludGVybGVhdmUpCisJ CW51bWFfc2V0X2ludGVybGVhdmVfbWFzayhudW1hX2FsbF9ub2Rlc19wdHIpOworI2VuZGlm CisKICNpZm5kZWYgTUFQX0hVR0VUTEIKIAkvKiBQR1NoYXJlZE1lbW9yeUNyZWF0ZSBzaG91 bGQgaGF2ZSBkZWFsdCB3aXRoIHRoaXMgY2FzZSAqLwogCUFzc2VydChodWdlX3BhZ2VzICE9 IEhVR0VfUEFHRVNfT04pOwpAQCAtNjY1LDYgKzY4OCwzMCBAQCBDcmVhdGVBbm9ueW1vdXNT ZWdtZW50KFNpemUgKnNpemUpCiAJCQkJCQkgYWxsb2NzaXplKSA6IDApKTsKIAl9CiAKKyNp ZmRlZiBVU0VfTElCTlVNQQorCS8qCisJICogSWYgc2V0IHRoZSBwb2xpY3kgdG8gaW50ZXJs ZWF2aW5nIGJ5IG51bWFfc2V0X21lbWJpbmQoKSwgdW5kbyBpdCBub3cgYnkKKwkgKiBzZXR0 aW5nIHRoZSBwb2xpY3kgdG8gbG9jYWxhbGxvYy4gV2l0aCBNQVBfUE9QVUxBVEUsIGFsbCB0 aGUgcGFnZXMgd2VyZQorCSAqIGZhdWx0ZWQgYW5kIGFyZSBub3cgaW50ZXJsZWF2ZWQgb24g dGhlIGF2YWlsYWJsZSBub2Rlcy4KKwkgKgorCSAqIFRvIGhhbmRsZSB0aGUgY2FzZSB3aXRo b3V0IE1BUF9QT1BVTEFURSwgYXBwbHkgdGhlIGludGVybGVhdmluZyBwb2xpY3kgdG8KKwkg KiB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGFsbG9jYXRlZCBieSBtbWFwKCkgYmVmb3Jl IHRvdWNoaW5nIGl0IGluIGFueQorCSAqIHdheSwgc28gdGhhdCBpdCBnZXRzIHBsYWNlZCBv biB0aGUgY29ycmVjdCBub2RlIG9uIGZpcnN0IGFjY2Vzcy4KKwkgKgorCSAqIFRoaXMgbWF0 dGVycyBlc3BlY2lhbGx5IHdpdGggaHVnZSBwYWdlcywgd2hlcmUgaXQncyBwb3NzaWJsZSB0 byBydW4gb3V0CisJICogb2YgaHVnZSBwYWdlcyBvbiBzb21lIG5vZGVzIGFuZCB0aGVuIGNy YXNoLiBCeSBleHBsaWNpdGx5IGludGVybGVhdmluZworCSAqIHRoZSB3aG9sZSBzZWdtZW50 LCB0aGF0J3MgbXVjaCBsZXNzIGxpa2VseS4KKwkgKi8KKwlpZiAoc2htZW1faW50ZXJsZWF2 ZSkKKwl7CisJCS8qIHVuZG8gdGhlIHBvbGljeSBzZXQgYnkgbnVtYV9zZXRfbWVtYmluZCgp IGVhcmxpZXIgKi8KKwkJbnVtYV9zZXRfbG9jYWxhbGxvYygpOworCisJCS8qIHNldCBpbnRl cmxlYXZpbmcgcG9saWN5IGZvciBub3QgeWV0IGZhdWx0ZWQgbWVtb3J5ICovCisJCW51bWFf aW50ZXJsZWF2ZV9tZW1vcnkocHRyLCBhbGxvY3NpemUsIG51bWFfYWxsX25vZGVzX3B0cik7 CisJfQorI2VuZGlmCisKIAkqc2l6ZSA9IGFsbG9jc2l6ZTsKIAlyZXR1cm4gcHRyOwogfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAppbmRleCBjNTc0 NDFmNy4uNjkzYmFkOTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3BhcmFtZXRlcnMuZGF0CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFt ZXRlcnMuZGF0CkBAIC03MzgsNiArNzM4LDIwIEBACiAgIGlmZGVmID0+ICdERUJVR19OT0RF X1RFU1RTX0VOQUJMRUQnLAogfSwKIAoreyBuYW1lID0+ICdkZWJ1Z19zaG1lbV9pbnRlcmxl YXZlJywgdHlwZSA9PiAnYm9vbCcsIGNvbnRleHQgPT4gJ1BHQ19TVVNFVCcsIGdyb3VwID0+ ICdERVZFTE9QRVJfT1BUSU9OUycsCisgIHNob3J0X2Rlc2MgPT4gJ0ZvcmNlcyBpbnRlcmxl YXZpbmcgZm9yIHRoZSB3aG9sZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuJywKKyAgZmxhZ3Mg PT4gJ0dVQ19OT1RfSU5fU0FNUExFJywKKyAgdmFyaWFibGUgPT4gJ3NobWVtX2ludGVybGVh dmUnLAorICBib290X3ZhbCA9PiAnZmFsc2UnCit9LAorCit7IG5hbWUgPT4gJ2RlYnVnX3No bWVtX3BvcHVsYXRlJywgdHlwZSA9PiAnYm9vbCcsIGNvbnRleHQgPT4gJ1BHQ19TVVNFVCcs IGdyb3VwID0+ICdERVZFTE9QRVJfT1BUSU9OUycsCisgIHNob3J0X2Rlc2MgPT4gJ1BvcHVs YXRlcyAoZmF1bHRzKSB0aGUgd2hvbGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IHVzaW5nIE1B UF9QT1BVTEFURS4nLAorICBmbGFncyA9PiAnR1VDX05PVF9JTl9TQU1QTEUnLAorICB2YXJp YWJsZSA9PiAnc2htZW1fcG9wdWxhdGUnLAorICBib290X3ZhbCA9PiAnZmFsc2UnCit9LAor CiB7IG5hbWUgPT4gJ2RlYnVnX3dyaXRlX3JlYWRfcGFyc2VfcGxhbl90cmVlcycsIHR5cGUg PT4gJ2Jvb2wnLCBjb250ZXh0ID0+ICdQR0NfU1VTRVQnLCBncm91cCA9PiAnREVWRUxPUEVS X09QVElPTlMnLAogICBzaG9ydF9kZXNjID0+ICdTZXQgdGhpcyB0byBmb3JjZSBhbGwgcGFy c2UgYW5kIHBsYW4gdHJlZXMgdG8gYmUgcGFzc2VkIHRocm91Z2ggb3V0ZnVuY3MuYy9yZWFk ZnVuY3MuYywgdG8gZmFjaWxpdGF0ZSBjYXRjaGluZyBlcnJvcnMgYW5kIG9taXNzaW9ucyBp biB0aG9zZSBtb2R1bGVzLicsCiAgIGZsYWdzID0+ICdHVUNfTk9UX0lOX1NBTVBMRScsCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2Nh ZG1pbi5oCmluZGV4IDBmYzU5YWYwLi45ZDAxZjQwYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTIxMyw2 ICsyMTMsMTAgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIE9pZCBNeURhdGFiYXNlVGFibGVTcGFj ZTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgTXlEYXRhYmFzZUhhc0xvZ2luRXZlbnRU cmlnZ2VyczsKIAorZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgc2htZW1fcG9wdWxhdGU7Citl eHRlcm4gUEdETExJTVBPUlQgYm9vbCBzaG1lbV9pbnRlcmxlYXZlOworCisKIC8qCiAgKiBE YXRlL1RpbWUgQ29uZmlndXJhdGlvbgogICoKLS0gCjIuNTAuMQoK --317345122ad1692da28ddb245f423447087961c8 Content-Disposition: attachment; filename*0="v20260915a-0002-Infrastructure-for-partitioning-of-shared.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v20260915a-0002-Infrastructure-for-partitioning-of-shared.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBiMzZmNzAwMTQxYmRiYzY0MTc3MjNmMWZlNTQ1OTBmMDkxMTllYmQxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogVHVlLCAyIEp1biAyMDI2IDIyOjA5OjMzICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 MjAyNjA5MTVhIDIvOV0gSW5mcmFzdHJ1Y3R1cmUgZm9yIHBhcnRpdGlvbmluZyBvZiBzaGFy ZWQKIGJ1ZmZlcnMKClRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc2ltcGxlICJyZWdpc3RyeSIg b2YgYnVmZmVyIHBhcnRpdGlvbnMsIGtlZXBpbmcKdHJhY2sgb2YgdGhlIGZpcnN0L2xhc3Qg YnVmZmVyLCBldGMuIFRoaXMgc2VydmVzIGFzIGEgc291cmNlIG9mIHRydXRoCmZvciBsYXRl ciBwYXRjaGVzIChlLmcuIHRvIHBhcnRpdGlvbiBjbG9jay1zd2VlcCBvciB0byBtYWtlIHRo ZQpwYXJ0aXRpb25pbmcgTlVNQS1hd2FyZSkuCgpUaGUgcmVnaXN0cnkgaXMgYSBzbWFsbCBh cnJheSBvZiBCdWZmZXJQYXJ0aXRpb24gZW50cmllcyBpbiBzaGFyZWQKbWVtb3J5LCB3aXRo IHBhcnRpdGlvbnMgc2l6ZWQgdG8gYmUgYSBmYWlyIHNoYXJlIG9mIHNoYXJlZCBidWZmZXJz LgoKTm90ZXM6CgoqIE1heWJlIHRoZSBudW1iZXIgb2YgcGFydGl0aW9ucyBzaG91bGQgYmUg Y29uZmlndXJhYmxlPyBSaWdodCBub3cgaXQncwogIGhhcmQtY29kZWQgYXMgNCwgYnV0IHRl c3Rpbmcgc2hvd3MgaW5jcmVhc2luZyB0byBlLmcuIDE2KSBjYW4gYmUKICBiZW5lZmljaWFs LgoKKiBUaGlzIHBhcnRpdGlvbmluZyBpcyBpbmRlcGVuZGVudCBvZiB0aGUgcGFydGl0aW9u cyBkZWZpbmVkIGluCiAgbHdsb2NrLmgsIHdoaWNoIGRlZmluZXMgMTI4IHBhcnRpdGlvbnMg dG8gcmVkdWNlIGxvY2sgY29uZmxpY3Qgb24gdGhlCiAgYnVmZmVyIG1hcHBpbmcgaGFzaHRh YmxlLiBUaGUgbnVtYmVyIG9mIHBhcnRpdGlvbnMgaW50cm9kdWNlZCBieSB0aGlzCiAgcGF0 Y2ggaXMgZXhwZWN0ZWQgdG8gYmUgbXVjaCBsb3dlciAoYSBkb3plbiBvciBzbykuCgoqIFRo ZSBidWZmZXJzIGFyZSBkaXZpZGVkIGFzIGV2ZW5seSBhcyBwb3NzaWJsZSwgd2l0aCB0aGUg Zmlyc3QgY291cGxlCiAgcGFydGl0aW9ucyBwb3NzaWJseSBnZXR0aW5nIGFuIGV4dHJhIGJ1 ZmZlci4KLS0tCiBjb250cmliL3BnX2J1ZmZlcmNhY2hlL01ha2VmaWxlICAgICAgICAgICAg ICAgfCAgIDMgKy0KIC4uLi9wZ19idWZmZXJjYWNoZS0tMS43LS0xLjguc3FsICAgICAgICAg ICAgICB8ICAyMyArKysKIGNvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGUu Y29udHJvbCB8ICAgMiArLQogY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNo ZV9wYWdlcy5jIHwgIDg2ICsrKysrKysrKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZl ci9idWZfaW5pdC5jICAgICAgICAgfCAxNDIgKysrKysrKysrKysrKysrKysrCiBzcmMvaW5j bHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCAgICAgICAgICAgfCAgIDUgKwogc3JjL2lu Y2x1ZGUvc3RvcmFnZS9idWZtZ3IuaCAgICAgICAgICAgICAgICAgIHwgIDE5ICsrKwogc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAyICsKIDgg ZmlsZXMgY2hhbmdlZCwgMjgwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZS0t MS43LS0xLjguc3FsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19idWZmZXJjYWNoZS9NYWtl ZmlsZSBiL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvTWFrZWZpbGUKaW5kZXggMGU2MThmNjYu LjdmZDVjZGZjIDEwMDY0NAotLS0gYS9jb250cmliL3BnX2J1ZmZlcmNhY2hlL01ha2VmaWxl CisrKyBiL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvTWFrZWZpbGUKQEAgLTksNyArOSw4IEBA IEVYVEVOU0lPTiA9IHBnX2J1ZmZlcmNhY2hlCiBEQVRBID0gcGdfYnVmZmVyY2FjaGUtLTEu Mi5zcWwgcGdfYnVmZmVyY2FjaGUtLTEuMi0tMS4zLnNxbCBcCiAJcGdfYnVmZmVyY2FjaGUt LTEuMS0tMS4yLnNxbCBwZ19idWZmZXJjYWNoZS0tMS4wLS0xLjEuc3FsIFwKIAlwZ19idWZm ZXJjYWNoZS0tMS4zLS0xLjQuc3FsIHBnX2J1ZmZlcmNhY2hlLS0xLjQtLTEuNS5zcWwgXAot CXBnX2J1ZmZlcmNhY2hlLS0xLjUtLTEuNi5zcWwgcGdfYnVmZmVyY2FjaGUtLTEuNi0tMS43 LnNxbAorCXBnX2J1ZmZlcmNhY2hlLS0xLjUtLTEuNi5zcWwgcGdfYnVmZmVyY2FjaGUtLTEu Ni0tMS43LnNxbCBcCisJcGdfYnVmZmVyY2FjaGUtLTEuNy0tMS44LnNxbAogUEdGSUxFREVT QyA9ICJwZ19idWZmZXJjYWNoZSAtIG1vbml0b3Jpbmcgb2Ygc2hhcmVkIGJ1ZmZlciBjYWNo ZSBpbiByZWFsLXRpbWUiCiAKIFJFR1JFU1MgPSBwZ19idWZmZXJjYWNoZSBwZ19idWZmZXJj YWNoZV9udW1hCmRpZmYgLS1naXQgYS9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZl cmNhY2hlLS0xLjctLTEuOC5zcWwgYi9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZl cmNhY2hlLS0xLjctLTEuOC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAuLmQ2MmI4MzM5Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9wZ19idWZmZXJjYWNo ZS9wZ19idWZmZXJjYWNoZS0tMS43LS0xLjguc3FsCkBAIC0wLDAgKzEsMjMgQEAKKy0tIGNv bXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFuIHZpYSBD UkVBVEUgRVhURU5TSU9OCitcZWNobyBVc2UgIkFMVEVSIEVYVEVOU0lPTiBwZ19idWZmZXJj YWNoZSBVUERBVEUgVE8gJzEuOCciIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCistLSBS ZWdpc3RlciB0aGUgbmV3IGZ1bmN0aW9ucy4KK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IHBnX2J1ZmZlcmNhY2hlX3BhcnRpdGlvbnMoKQorUkVUVVJOUyBTRVRPRiBSRUNPUkQKK0FT ICdNT0RVTEVfUEFUSE5BTUUnLCAncGdfYnVmZmVyY2FjaGVfcGFydGl0aW9ucycKK0xBTkdV QUdFIEMgUEFSQUxMRUwgU0FGRTsKKworLS0gQ3JlYXRlIGEgdmlldyBmb3IgY29udmVuaWVu dCBhY2Nlc3MuCitDUkVBVEUgVklFVyBwZ19idWZmZXJjYWNoZV9wYXJ0aXRpb25zIEFTCisJ U0VMRUNUIFAuKiBGUk9NIHBnX2J1ZmZlcmNhY2hlX3BhcnRpdGlvbnMoKSBBUyBQCisJKHBh cnRpdGlvbiBpbnRlZ2VyLAkJCS0tIHBhcnRpdGlvbiBpbmRleAorCSBudW1fYnVmZmVycyBp bnRlZ2VyLAkJLS0gbnVtYmVyIG9mIGJ1ZmZlcnMgaW4gdGhlIHBhcnRpdGlvbgorCSBmaXJz dF9idWZmZXIgaW50ZWdlciwJCS0tIGZpcnN0IGJ1ZmZlciBvZiBwYXJ0aXRpb24KKwkgbGFz dF9idWZmZXIgaW50ZWdlcik7CQktLSBsYXN0IGJ1ZmZlciBvZiBwYXJ0aXRpb24KKworLS0g RG9uJ3Qgd2FudCB0aGVzZSB0byBiZSBhdmFpbGFibGUgdG8gcHVibGljLgorUkVWT0tFIEFM TCBPTiBGVU5DVElPTiBwZ19idWZmZXJjYWNoZV9wYXJ0aXRpb25zKCkgRlJPTSBQVUJMSUM7 CitSRVZPS0UgQUxMIE9OIHBnX2J1ZmZlcmNhY2hlX3BhcnRpdGlvbnMgRlJPTSBQVUJMSUM7 CisKK0dSQU5UIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfYnVmZmVyY2FjaGVfcGFydGl0aW9u cygpIFRPIHBnX21vbml0b3I7CitHUkFOVCBTRUxFQ1QgT04gcGdfYnVmZmVyY2FjaGVfcGFy dGl0aW9ucyBUTyBwZ19tb25pdG9yOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19idWZmZXJj YWNoZS9wZ19idWZmZXJjYWNoZS5jb250cm9sIGIvY29udHJpYi9wZ19idWZmZXJjYWNoZS9w Z19idWZmZXJjYWNoZS5jb250cm9sCmluZGV4IDExNDk5NTUwLi5kMmZhOGJhNSAxMDA2NDQK LS0tIGEvY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZS5jb250cm9sCisr KyBiL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGUuY29udHJvbApAQCAt MSw1ICsxLDUgQEAKICMgcGdfYnVmZmVyY2FjaGUgZXh0ZW5zaW9uCiBjb21tZW50ID0gJ2V4 YW1pbmUgdGhlIHNoYXJlZCBidWZmZXIgY2FjaGUnCi1kZWZhdWx0X3ZlcnNpb24gPSAnMS43 JworZGVmYXVsdF92ZXJzaW9uID0gJzEuOCcKIG1vZHVsZV9wYXRobmFtZSA9ICckbGliZGly L3BnX2J1ZmZlcmNhY2hlJwogcmVsb2NhdGFibGUgPSB0cnVlCmRpZmYgLS1naXQgYS9jb250 cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlX3BhZ2VzLmMgYi9jb250cmliL3Bn X2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlX3BhZ2VzLmMKaW5kZXggNTEwNDU1OTkuLjZj OTgzOGI0IDEwMDY0NAotLS0gYS9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNh Y2hlX3BhZ2VzLmMKKysrIGIvY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNo ZV9wYWdlcy5jCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5lIE5VTV9CVUZGRVJDQUNIRV9N QVJLX0RJUlRZX0FMTF9FTEVNIDMKIAogI2RlZmluZSBOVU1fQlVGRkVSQ0FDSEVfT1NfUEFH RVNfRUxFTQkzCisjZGVmaW5lIE5VTV9CVUZGRVJDQUNIRV9QQVJUSVRJT05TX0VMRU0JNAog CiBQR19NT0RVTEVfTUFHSUNfRVhUKAogCQkJCQkubmFtZSA9ICJwZ19idWZmZXJjYWNoZSIs CkBAIC03Nyw2ICs3OCw3IEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEocGdfYnVmZmVyY2FjaGVf ZXZpY3RfYWxsKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEocGdfYnVmZmVyY2FjaGVfbWFya19k aXJ0eSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBnX2J1ZmZlcmNhY2hlX21hcmtfZGlydHlf cmVsYXRpb24pOwogUEdfRlVOQ1RJT05fSU5GT19WMShwZ19idWZmZXJjYWNoZV9tYXJrX2Rp cnR5X2FsbCk7CitQR19GVU5DVElPTl9JTkZPX1YxKHBnX2J1ZmZlcmNhY2hlX3BhcnRpdGlv bnMpOwogCiAKIC8qIE9ubHkgbmVlZCB0byB0b3VjaCBtZW1vcnkgb25jZSBwZXIgYmFja2Vu ZCBwcm9jZXNzIGxpZmV0aW1lICovCkBAIC05MjIsMyArOTI0LDg3IEBAIHBnX2J1ZmZlcmNh Y2hlX21hcmtfZGlydHlfYWxsKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19SRVRVUk5fREFU VU0ocmVzdWx0KTsKIH0KKworLyoKKyAqIElucXVpcmUgYWJvdXQgcGFydGl0aW9uaW5nIG9m IHNoYXJlZCBidWZmZXJzLgorICovCitEYXR1bQorcGdfYnVmZmVyY2FjaGVfcGFydGl0aW9u cyhQR19GVU5DVElPTl9BUkdTKQoreworCUZ1bmNDYWxsQ29udGV4dCAqZnVuY2N0eDsKKwlN ZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJVHVwbGVEZXNjCXR1cGxlZGVzYzsKKwlUdXBs ZURlc2MJZXhwZWN0ZWRfdHVwbGVkZXNjOworCUhlYXBUdXBsZQl0dXBsZTsKKwlEYXR1bQkJ cmVzdWx0OworCisJaWYgKFNSRl9JU19GSVJTVENBTEwoKSkKKwl7CisJCWZ1bmNjdHggPSBT UkZfRklSU1RDQUxMX0lOSVQoKTsKKworCQkvKiBTd2l0Y2ggY29udGV4dCB3aGVuIGFsbG9j YXRpbmcgc3R1ZmYgdG8gYmUgdXNlZCBpbiBsYXRlciBjYWxscyAqLworCQlvbGRjb250ZXh0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgtPm11bHRpX2NhbGxfbWVtb3J5X2N0 eCk7CisKKwkJaWYgKGdldF9jYWxsX3Jlc3VsdF90eXBlKGZjaW5mbywgTlVMTCwgJmV4cGVj dGVkX3R1cGxlZGVzYykgIT0gVFlQRUZVTkNfQ09NUE9TSVRFKQorCQkJZWxvZyhFUlJPUiwg InJldHVybiB0eXBlIG11c3QgYmUgYSByb3cgdHlwZSIpOworCisJCWlmIChleHBlY3RlZF90 dXBsZWRlc2MtPm5hdHRzICE9IE5VTV9CVUZGRVJDQUNIRV9QQVJUSVRJT05TX0VMRU0pCisJ CQllbG9nKEVSUk9SLCAiaW5jb3JyZWN0IG51bWJlciBvZiBvdXRwdXQgYXJndW1lbnRzIik7 CisKKwkJLyogQ29uc3RydWN0IGEgdHVwbGUgZGVzY3JpcHRvciBmb3IgdGhlIHJlc3VsdCBy b3dzLiAqLworCQl0dXBsZWRlc2MgPSBDcmVhdGVUZW1wbGF0ZVR1cGxlRGVzYyhleHBlY3Rl ZF90dXBsZWRlc2MtPm5hdHRzKTsKKwkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGxlZGVzYywg KEF0dHJOdW1iZXIpIDEsICJwYXJ0aXRpb24iLAorCQkJCQkJICAgSU5UNE9JRCwgLTEsIDAp OworCQlUdXBsZURlc2NJbml0RW50cnkodHVwbGVkZXNjLCAoQXR0ck51bWJlcikgMiwgIm51 bV9idWZmZXJzIiwKKwkJCQkJCSAgIElOVDRPSUQsIC0xLCAwKTsKKwkJVHVwbGVEZXNjSW5p dEVudHJ5KHR1cGxlZGVzYywgKEF0dHJOdW1iZXIpIDMsICJmaXJzdF9idWZmZXIiLAorCQkJ CQkJICAgSU5UNE9JRCwgLTEsIDApOworCQlUdXBsZURlc2NJbml0RW50cnkodHVwbGVkZXNj LCAoQXR0ck51bWJlcikgNCwgImxhc3RfYnVmZmVyIiwKKwkJCQkJCSAgIElOVDRPSUQsIC0x LCAwKTsKKworCQlmdW5jY3R4LT51c2VyX2ZjdHggPSBCbGVzc1R1cGxlRGVzYyh0dXBsZWRl c2MpOworCisJCS8qIFJldHVybiB0byBvcmlnaW5hbCBjb250ZXh0IHdoZW4gYWxsb2NhdGlu ZyB0cmFuc2llbnQgbWVtb3J5ICovCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250 ZXh0KTsKKworCQkvKiBTZXQgbWF4IGNhbGxzIGFuZCByZW1lbWJlciB0aGUgdXNlciBmdW5j dGlvbiBjb250ZXh0LiAqLworCQlmdW5jY3R4LT5tYXhfY2FsbHMgPSBCdWZmZXJQYXJ0aXRp b25Db3VudCgpOworCX0KKworCWZ1bmNjdHggPSBTUkZfUEVSQ0FMTF9TRVRVUCgpOworCisJ aWYgKGZ1bmNjdHgtPmNhbGxfY250ciA8IGZ1bmNjdHgtPm1heF9jYWxscykKKwl7CisJCXVp bnQzMgkJaSA9IGZ1bmNjdHgtPmNhbGxfY250cjsKKworCQlpbnQJCQludW1fYnVmZmVycywK KwkJCQkJZmlyc3RfYnVmZmVyLAorCQkJCQlsYXN0X2J1ZmZlcjsKKworCQlEYXR1bQkJdmFs dWVzW05VTV9CVUZGRVJDQUNIRV9QQVJUSVRJT05TX0VMRU1dOworCQlib29sCQludWxsc1tO VU1fQlVGRkVSQ0FDSEVfUEFSVElUSU9OU19FTEVNXTsKKworCQlCdWZmZXJQYXJ0aXRpb25H ZXQoaSwgJm51bV9idWZmZXJzLAorCQkJCQkJICAgJmZpcnN0X2J1ZmZlciwgJmxhc3RfYnVm ZmVyKTsKKworCQl2YWx1ZXNbMF0gPSBJbnQzMkdldERhdHVtKGkpOworCQludWxsc1swXSA9 IGZhbHNlOworCisJCXZhbHVlc1sxXSA9IEludDMyR2V0RGF0dW0obnVtX2J1ZmZlcnMpOwor CQludWxsc1sxXSA9IGZhbHNlOworCisJCXZhbHVlc1syXSA9IEludDMyR2V0RGF0dW0oZmly c3RfYnVmZmVyKTsKKwkJbnVsbHNbMl0gPSBmYWxzZTsKKworCQl2YWx1ZXNbM10gPSBJbnQz MkdldERhdHVtKGxhc3RfYnVmZmVyKTsKKwkJbnVsbHNbM10gPSBmYWxzZTsKKworCQkvKiBC dWlsZCBhbmQgcmV0dXJuIHRoZSB0dXBsZS4gKi8KKwkJdHVwbGUgPSBoZWFwX2Zvcm1fdHVw bGUoKFR1cGxlRGVzYykgZnVuY2N0eC0+dXNlcl9mY3R4LCB2YWx1ZXMsIG51bGxzKTsKKwkJ cmVzdWx0ID0gSGVhcFR1cGxlR2V0RGF0dW0odHVwbGUpOworCisJCVNSRl9SRVRVUk5fTkVY VChmdW5jY3R4LCByZXN1bHQpOworCX0KKwllbHNlCisJCVNSRl9SRVRVUk5fRE9ORShmdW5j Y3R4KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl9p bml0LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfaW5pdC5jCmluZGV4IDE0 MDdjOTMwLi5lNTkzYjAyZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZm ZXIvYnVmX2luaXQuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfaW5p dC5jCkBAIC0yNiwxMCArMjYsMTIgQEAgY2hhcgkgICAqQnVmZmVyQmxvY2tzOwogQ29uZGl0 aW9uVmFyaWFibGVNaW5pbWFsbHlQYWRkZWQgKkJ1ZmZlcklPQ1ZBcnJheTsKIFdyaXRlYmFj a0NvbnRleHQgQmFja2VuZFdyaXRlYmFja0NvbnRleHQ7CiBDa3B0U29ydEl0ZW0gKkNrcHRC dWZmZXJJZHM7CitCdWZmZXJQYXJ0aXRpb25zICpCdWZmZXJQYXJ0aXRpb25zUmVnaXN0cnk7 CiAKIHN0YXRpYyB2b2lkIEJ1ZmZlck1hbmFnZXJTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsK IHN0YXRpYyB2b2lkIEJ1ZmZlck1hbmFnZXJTaG1lbUluaXQodm9pZCAqYXJnKTsKIHN0YXRp YyB2b2lkIEJ1ZmZlck1hbmFnZXJTaG1lbUF0dGFjaCh2b2lkICphcmcpOworc3RhdGljIHZv aWQgQnVmZmVyUGFydGl0aW9uc0luaXQodm9pZCk7CiAKIGNvbnN0IFNobWVtQ2FsbGJhY2tz IEJ1ZmZlck1hbmFnZXJTaG1lbUNhbGxiYWNrcyA9IHsKIAkucmVxdWVzdF9mbiA9IEJ1ZmZl ck1hbmFnZXJTaG1lbVJlcXVlc3QsCkBAIC02OSw2ICs3MSw5IEBAIGNvbnN0IFNobWVtQ2Fs bGJhY2tzIEJ1ZmZlck1hbmFnZXJTaG1lbUNhbGxiYWNrcyA9IHsKICAqCQltdWx0aXBsZSB0 aW1lcy4gQ2hlY2sgdGhlIFByaXZhdGVSZWZDb3VudCBpbmZyYXN0cnVjdHVyZSBpbiBidWZt Z3IuYy4KICAqLwogCisvKiBudW1iZXIgb2YgYnVmZmVyIHBhcnRpdGlvbnMgKi8KKyNkZWZp bmUgTlVNX0NMT0NLX1NXRUVQX1BBUlRJVElPTlMJNAorCiAKIC8qCiAgKiBSZWdpc3RlciBz aGFyZWQgbWVtb3J5IGFyZWEgZm9yIHRoZSBidWZmZXIgcG9vbC4KQEAgLTk3LDYgKzEwMiwx MyBAQCBCdWZmZXJNYW5hZ2VyU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIAkJCQkJICAgLnB0 ciA9ICh2b2lkICoqKSAmQnVmZmVySU9DVkFycmF5LAogCQkpOwogCisJU2htZW1SZXF1ZXN0 U3RydWN0KC5uYW1lID0gIkJ1ZmZlciBQYXJ0aXRpb24gUmVnaXN0cnkiLAorCQkJCQkgICAu c2l6ZSA9IE5VTV9DTE9DS19TV0VFUF9QQVJUSVRJT05TICogc2l6ZW9mKEJ1ZmZlclBhcnRp dGlvbiksCisJLyogQWxpZ24gZGVzY3JpcHRvcnMgdG8gYSBjYWNoZWxpbmUgYm91bmRhcnku ICovCisJCQkJCSAgIC5hbGlnbm1lbnQgPSBQR19DQUNIRV9MSU5FX1NJWkUsCisJCQkJCSAg IC5wdHIgPSAodm9pZCAqKikgJkJ1ZmZlclBhcnRpdGlvbnNSZWdpc3RyeSwKKwkJKTsKKwog CS8qCiAJICogVGhlIGFycmF5IHVzZWQgdG8gc29ydCB0by1iZS1jaGVja3BvaW50ZWQgYnVm ZmVyIGlkcyBpcyBsb2NhdGVkIGluCiAJICogc2hhcmVkIG1lbW9yeSwgdG8gYXZvaWQgaGF2 aW5nIHRvIGFsbG9jYXRlIHNpZ25pZmljYW50IGFtb3VudHMgb2YKQEAgLTExOSw2ICsxMzEs MTIgQEAgQnVmZmVyTWFuYWdlclNobWVtUmVxdWVzdCh2b2lkICphcmcpCiBzdGF0aWMgdm9p ZAogQnVmZmVyTWFuYWdlclNobWVtSW5pdCh2b2lkICphcmcpCiB7CisJLyoKKwkgKiBJbml0 aWFsaXplIHRoZSBidWZmZXIgcGFydGl0aW9uIHJlZ2lzdHJ5IGZpcnN0LCBiZWZvcmUgb3Ro ZXIgcGFydHMKKwkgKiBoYXZlIGEgY2hhbmNlIHRvIHRvdWNoIHRoZSBtZW1vcnkuCisJICov CisJQnVmZmVyUGFydGl0aW9uc0luaXQoKTsKKwogCS8qCiAJICogSW5pdGlhbGl6ZSBhbGwg dGhlIGJ1ZmZlciBoZWFkZXJzLgogCSAqLwpAQCAtMTUxLDMgKzE2OSwxMjcgQEAgQnVmZmVy TWFuYWdlclNobWVtQXR0YWNoKHZvaWQgKmFyZykKIAlXcml0ZWJhY2tDb250ZXh0SW5pdCgm QmFja2VuZFdyaXRlYmFja0NvbnRleHQsCiAJCQkJCQkgJmJhY2tlbmRfZmx1c2hfYWZ0ZXIp OwogfQorCisvKgorICogU2FuaXR5IGNoZWNrcyBvZiBidWZmZXJzIHBhcnRpdGlvbnMgLSB0 aGVyZSBtdXN0IGJlIG5vIGdhcHMsIGl0IG11c3QgY292ZXIKKyAqIHRoZSB3aG9sZSByYW5n ZSBvZiBidWZmZXJzLCBldGMuCisgKi8KK3N0YXRpYyB2b2lkCitBc3NlcnRDaGVja0J1ZmZl clBhcnRpdGlvbnModm9pZCkKK3sKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJaW50 CQkJbnVtX2J1ZmZlcnMgPSAwOworCisJQXNzZXJ0KEJ1ZmZlclBhcnRpdGlvbnNSZWdpc3Ry eS0+bnBhcnRpdGlvbnMgPiAwKTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgQnVmZmVyUGFy dGl0aW9uc1JlZ2lzdHJ5LT5ucGFydGl0aW9uczsgaSsrKQorCXsKKwkJQnVmZmVyUGFydGl0 aW9uICpwYXJ0ID0gJkJ1ZmZlclBhcnRpdGlvbnNSZWdpc3RyeS0+cGFydGl0aW9uc1tpXTsK KworCQkvKgorCQkgKiBXZSBjYW4gZ2V0IGEgc2luZ2xlLWJ1ZmZlciBwYXJ0aXRpb24sIGlm IHRoZSBzaXppbmcgZm9yY2VzIHRoZSBsYXN0CisJCSAqIHBhcnRpdGlvbiB0byBiZSBqdXN0 IG9uZSBidWZmZXIuIEJ1dCBpdCdzIHVubGlrZWx5IChhbmQKKwkJICogdW5kZXNpcmFibGUp LgorCQkgKi8KKwkJQXNzZXJ0KHBhcnQtPmZpcnN0X2J1ZmZlciA8PSBwYXJ0LT5sYXN0X2J1 ZmZlcik7CisJCUFzc2VydCgocGFydC0+bGFzdF9idWZmZXIgLSBwYXJ0LT5maXJzdF9idWZm ZXIgKyAxKSA9PSBwYXJ0LT5udW1fYnVmZmVycyk7CisKKwkJbnVtX2J1ZmZlcnMgKz0gcGFy dC0+bnVtX2J1ZmZlcnM7CisKKwkJLyoKKwkJICogVGhlIGZpcnN0IHBhcnRpdGlvbiBuZWVk cyB0byBzdGFydCBvbiBidWZmZXIgMC4gTGF0ZXIgcGFydGl0aW9ucworCQkgKiBuZWVkIHRv IGJlIGNvbnRpZ3VvdXMsIHdpdGhvdXQgc2tpcHBpbmcgYW55IGJ1ZmZlcnMuCisJCSAqLwor CQlpZiAoaSA9PSAwKQorCQl7CisJCQlBc3NlcnQocGFydC0+Zmlyc3RfYnVmZmVyID09IDAp OworCQl9CisJCWVsc2UKKwkJeworCQkJQnVmZmVyUGFydGl0aW9uICpwcmV2ID0gJkJ1ZmZl clBhcnRpdGlvbnNSZWdpc3RyeS0+cGFydGl0aW9uc1tpIC0gMV07CisKKwkJCUFzc2VydCgo cGFydC0+Zmlyc3RfYnVmZmVyIC0gMSkgPT0gcHJldi0+bGFzdF9idWZmZXIpOworCQl9CisK KwkJLyogdGhlIGxhc3QgcGFydGl0aW9uIG5lZWRzIHRvIGVuZCBvbiBidWZmZXIgKE5CdWZm ZXJzIC0gMSkgKi8KKwkJaWYgKGkgPT0gKEJ1ZmZlclBhcnRpdGlvbnNSZWdpc3RyeS0+bnBh cnRpdGlvbnMgLSAxKSkKKwkJeworCQkJQXNzZXJ0KHBhcnQtPmxhc3RfYnVmZmVyID09IChO QnVmZmVycyAtIDEpKTsKKwkJfQorCX0KKworCUFzc2VydChudW1fYnVmZmVycyA9PSBOQnVm ZmVycyk7CisjZW5kaWYKK30KKworLyoKKyAqIEJ1ZmZlclBhcnRpdGlvbnNJbml0CisgKgkJ SW5pdGlhbGl6ZSByZWdpc3RyeSBvZiBidWZmZXIgcGFydGl0aW9ucy4KKyAqLworc3RhdGlj IHZvaWQKK0J1ZmZlclBhcnRpdGlvbnNJbml0KHZvaWQpCit7CisJaW50CQkJYnVmZmVyID0g MDsKKworCS8qIG51bWJlciBvZiBidWZmZXJzIHBlciBwYXJ0aXRpb24gKG1ha2Ugc3VyZSB0 byBub3Qgb3ZlcmZsb3cpICovCisJaW50CQkJcGFydF9idWZmZXJzID0gTkJ1ZmZlcnMgLyBO VU1fQ0xPQ0tfU1dFRVBfUEFSVElUSU9OUzsKKwlpbnQJCQlyZW1haW5pbmdfYnVmZmVycyA9 IE5CdWZmZXJzICUgTlVNX0NMT0NLX1NXRUVQX1BBUlRJVElPTlM7CisKKwlCdWZmZXJQYXJ0 aXRpb25zUmVnaXN0cnktPm5wYXJ0aXRpb25zID0gTlVNX0NMT0NLX1NXRUVQX1BBUlRJVElP TlM7CisKKwlmb3IgKGludCBuID0gMDsgbiA8IEJ1ZmZlclBhcnRpdGlvbnNSZWdpc3RyeS0+ bnBhcnRpdGlvbnM7IG4rKykKKwl7CisJCUJ1ZmZlclBhcnRpdGlvbiAqcGFydCA9ICZCdWZm ZXJQYXJ0aXRpb25zUmVnaXN0cnktPnBhcnRpdGlvbnNbbl07CisKKwkJaW50CQkJbnVtX2J1 ZmZlcnMgPSBwYXJ0X2J1ZmZlcnM7CisJCWlmIChuIDwgcmVtYWluaW5nX2J1ZmZlcnMpCisJ CQludW1fYnVmZmVycyArPSAxOworCisJCXJlbWFpbmluZ19idWZmZXJzIC09IG51bV9idWZm ZXJzOworCisJCUFzc2VydCgobnVtX2J1ZmZlcnMgPiAwKSAmJiAobnVtX2J1ZmZlcnMgPD0g cGFydF9idWZmZXJzKSk7CisJCUFzc2VydCgoYnVmZmVyID49IDApICYmIChidWZmZXIgPCBO QnVmZmVycykpOworCisJCXBhcnQtPm51bV9idWZmZXJzID0gbnVtX2J1ZmZlcnM7CisJCXBh cnQtPmZpcnN0X2J1ZmZlciA9IGJ1ZmZlcjsKKwkJcGFydC0+bGFzdF9idWZmZXIgPSBidWZm ZXIgKyAobnVtX2J1ZmZlcnMgLSAxKTsKKworCQlidWZmZXIgKz0gbnVtX2J1ZmZlcnM7CisJ fQorCisJQXNzZXJ0Q2hlY2tCdWZmZXJQYXJ0aXRpb25zKCk7Cit9CisKKy8qCisgKiBCdWZm ZXJQYXJ0aXRpb25Db3VudAorICoJCVJldHVybnMgdGhlIG51bWJlciBvZiBwYXJ0aXRpb25z IGNyZWF0ZWQuCisgKi8KK2ludAorQnVmZmVyUGFydGl0aW9uQ291bnQodm9pZCkKK3sKKwly ZXR1cm4gQnVmZmVyUGFydGl0aW9uc1JlZ2lzdHJ5LT5ucGFydGl0aW9uczsKK30KKworLyoK KyAqIEJ1ZmZlclBhcnRpdGlvbkdldAorICoJCVJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQg YSBwYXJ0aXRpb24gYXQgdGhlIHByb3ZpZGVkIGluZGV4LgorICoKKyAqIFRoZSByZXR1cm5l ZCBpbmZvcm1hdGlvbiBpcyBmaXJzdC9sYXN0IGJ1ZmZlciwgbnVtYmVyIG9mIGJ1ZmZlcnMu CisgKi8KK3ZvaWQKK0J1ZmZlclBhcnRpdGlvbkdldChpbnQgaWR4LCBpbnQgKm51bV9idWZm ZXJzLAorCQkJCSAgIGludCAqZmlyc3RfYnVmZmVyLCBpbnQgKmxhc3RfYnVmZmVyKQorewor CWlmICgoaWR4ID49IDApICYmIChpZHggPCBCdWZmZXJQYXJ0aXRpb25zUmVnaXN0cnktPm5w YXJ0aXRpb25zKSkKKwl7CisJCUJ1ZmZlclBhcnRpdGlvbiAqcGFydCA9ICZCdWZmZXJQYXJ0 aXRpb25zUmVnaXN0cnktPnBhcnRpdGlvbnNbaWR4XTsKKworCQkqbnVtX2J1ZmZlcnMgPSBw YXJ0LT5udW1fYnVmZmVyczsKKwkJKmZpcnN0X2J1ZmZlciA9IHBhcnQtPmZpcnN0X2J1ZmZl cjsKKwkJKmxhc3RfYnVmZmVyID0gcGFydC0+bGFzdF9idWZmZXI7CisKKwkJcmV0dXJuOwor CX0KKworCWVsb2coRVJST1IsICJpbnZhbGlkIHBhcnRpdGlvbiBpbmRleCIpOworfQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmggYi9zcmMvaW5j bHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaAppbmRleCBlNGZmNTYxOS4uZDY4NDZiMWYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5oCisrKyBi L3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5oCkBAIC00MTEsOSArNDExLDE0 IEBAIHR5cGVkZWYgc3RydWN0IFdyaXRlYmFja0NvbnRleHQKIAogLyogaW4gYnVmX2luaXQu YyAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIEJ1ZmZlckRlc2NQYWRkZWQgKkJ1ZmZlckRlc2Ny aXB0b3JzOworZXh0ZXJuIFBHRExMSU1QT1JUIEJ1ZmZlclBhcnRpdGlvbnMgKkJ1ZmZlclBh cnRpdGlvbnNSZWdpc3RyeTsKIGV4dGVybiBQR0RMTElNUE9SVCBDb25kaXRpb25WYXJpYWJs ZU1pbmltYWxseVBhZGRlZCAqQnVmZmVySU9DVkFycmF5OwogZXh0ZXJuIFBHRExMSU1QT1JU IFdyaXRlYmFja0NvbnRleHQgQmFja2VuZFdyaXRlYmFja0NvbnRleHQ7CiAKK2V4dGVybiBp bnQJQnVmZmVyUGFydGl0aW9uQ291bnQodm9pZCk7CitleHRlcm4gdm9pZCBCdWZmZXJQYXJ0 aXRpb25HZXQoaW50IGlkeCwgaW50ICpudW1fYnVmZmVycywKKwkJCQkJCQkgICBpbnQgKmZp cnN0X2J1ZmZlciwgaW50ICpsYXN0X2J1ZmZlcik7CisKIC8qIGluIGxvY2FsYnVmLmMgKi8K IGV4dGVybiBQR0RMTElNUE9SVCBCdWZmZXJEZXNjICpMb2NhbEJ1ZmZlckRlc2NyaXB0b3Jz OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9idWZtZ3IuaAppbmRleCA2ODM3YjM1Zi4uNzlhM2Y0NDcgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9idWZtZ3IuaApAQCAtMTU1LDYgKzE1NSwyNSBAQCBzdHJ1Y3QgUmVhZEJ1ZmZl cnNPcGVyYXRpb24KIAogdHlwZWRlZiBzdHJ1Y3QgUmVhZEJ1ZmZlcnNPcGVyYXRpb24gUmVh ZEJ1ZmZlcnNPcGVyYXRpb247CiAKKy8qCisgKiBpbmZvcm1hdGlvbiBhYm91dCBvbmUgcGFy dGl0aW9uIG9mIHNoYXJlZCBidWZmZXJzCisgKgorICogZmlyc3QvbGFzdCBidWZmZXIgLSB0 aGUgdmFsdWVzIGFyZSBpbmNsdXNpdmUKKyAqLwordHlwZWRlZiBzdHJ1Y3QgQnVmZmVyUGFy dGl0aW9uCit7CisJaW50CQkJbnVtX2J1ZmZlcnM7CS8qIG51bWJlciBvZiBidWZmZXJzICov CisJaW50CQkJZmlyc3RfYnVmZmVyOwkvKiBmaXJzdCBidWZmZXIgb2YgcGFydGl0aW9uICov CisJaW50CQkJbGFzdF9idWZmZXI7CS8qIGxhc3QgYnVmZmVyIG9mIHBhcnRpdGlvbiAqLwor fSBCdWZmZXJQYXJ0aXRpb247CisKKy8qIGFuIGFycmF5IG9mIGluZm9ybWF0aW9uIGFib3V0 IGFsbCBwYXJ0aXRpb25zICovCit0eXBlZGVmIHN0cnVjdCBCdWZmZXJQYXJ0aXRpb25zCit7 CisJaW50CQkJbnBhcnRpdGlvbnM7CS8qIG51bWJlciBvZiBwYXJ0aXRpb25zICovCisJQnVm ZmVyUGFydGl0aW9uIHBhcnRpdGlvbnNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKK30gQnVm ZmVyUGFydGl0aW9uczsKKwogLyogdG8gYXZvaWQgaGF2aW5nIHRvIGV4cG9zZSBidWZfaW50 ZXJuYWxzLmggaGVyZSAqLwogdHlwZWRlZiBzdHJ1Y3QgV3JpdGViYWNrQ29udGV4dCBXcml0 ZWJhY2tDb250ZXh0OwogCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDE2ZDE3 ZDhmLi42NjgwOWFmOSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTM2Myw2 ICszNjMsOCBAQCBCdWZmZXJIZWFwVHVwbGVUYWJsZVNsb3QKIEJ1ZmZlckxvY2tNb2RlCiBC dWZmZXJMb29rdXBFbnQKIEJ1ZmZlck1hbmFnZXJSZWxhdGlvbgorQnVmZmVyUGFydGl0aW9u CitCdWZmZXJQYXJ0aXRpb25zCiBCdWZmZXJTdHJhdGVneUNvbnRyb2wKIEJ1ZmZlclRhZwog QnVmZmVyVXNhZ2UKLS0gCjIuNTAuMQoK --317345122ad1692da28ddb245f423447087961c8 Content-Disposition: attachment; filename*0="v20260915a-0003-NUMA-shared-buffers-partitioning.patch" Content-Type: text/x-patch; name="=?UTF-8?Q?v20260915a-0003-NUMA-shared-buffers-partitioning.patch?=" Content-Transfer-Encoding: base64 RnJvbSBlMTE5NGUxMzIxMzA1Njk0NmEwYWQyYWJiYTlhZjRjNzYwMjkyODFhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogVHVlLCAyIEp1biAyMDI2IDIzOjI3OjEzICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 MjAyNjA5MTVhIDMvOV0gTlVNQTogc2hhcmVkIGJ1ZmZlcnMgcGFydGl0aW9uaW5nCgpFbnN1 cmUgc2hhcmVkIGJ1ZmZlcnMgYXJlIGFsbG9jYXRlZCBmcm9tIGFsbCBOVU1BIG5vZGVzLCBp biBhIGJhbGFuY2VkCndheSwgaW5zdGVhZCBvZiBqdXN0IHVzaW5nIHRoZSBub2RlIHdoZXJl IFBvc3RncmVzIGluaXRpYWxseSBzdGFydHMsIG9yCndoZXJlIHRoZSBrZXJuZWwgZGVjaWRl cyB0byBtaWdyYXRlIHRoZSBwYWdlLCBldGMuCgpJbiBjYXNlcyBsaWtlIHByZS13YXJtaW5n IGEgZGF0YWJhc2UgZnJvbSBhIHNpbmdsZSB3b3JrZXIgKGUuZy4gdXNpbmcKcGdfcHJld2Fy bSksIHdlIG1heSBlbmQgdXAgd2l0aCBzZXZlcmVseSB1bmJhbGFuY2VkIG1lbW9yeSBkaXN0 cmlidXRpb24KKHdpdGggbW9zdCBtZW1vcnkgbG9jYXRlZCBvbiBhIHNpbmdsZSBOVU1BIG5v ZGUpLiBVbmJhbGFuY2VkIGFsbG9jYXRpb24KbWF5IHB1dCBhIGxvdCBvZiBwcmVzc3VyZSBv biB0aGUgbWVtb3J5IHN5c3RlbSBvbiBhIHNtYWxsIG51bWJlciBvZiBOVU1BCm5vZGVzLCBs aW1pdGluZyB0aGUgYmFuZHdpZHRoIGV0Yy4KCldpdGggem9uZV9yZWNsYWltLCB0aGUga2Vy bmVsIHdvdWxkIGV2ZW50dWFsbHkgbW92ZSBzb21lIG9mIHRoZSBtZW1vcnkKdG8gb3RoZXIg bm9kZXMsIGJ1dCB0aGF0IHRlbmRzIHRvIHRha2UgYSBsb25nIHRpbWUgYW5kIGlzIHVucHJl ZGljdGFibGUuCgpUaGlzIGNoYW5nZSBmb3JjZXMgZXZlbiBkaXN0cmlidXRpb24gb2Ygc2hh cmVkIGJ1ZmZlcnMgb24gYWxsIE5VTUEKbm9kZXMsIGltcHJvdmluZyBwcmVkaWN0YWJpbGl0 eSwgcmVkdWNpbmcgdGhlIHRpbWUgbmVlZGVkIGZvciB3YXJtdXAKZHVyaW5nIGJlbmNobWFy a2luZywgZXRjLiBJdCdzIGFsc28gbGVzcyBkZXBlbmRlbnQgb24gd2hhdCB0aGUgQ1BVCnNj aGVkdWxlciBkZWNpZGVzIHRvIGRvICh3aGljaCBjb3JlcyBnZXQgdXNlZCBmb3IgdGhlIHdh cm11cC4pCgpUaGUgZWZmZWN0IGlzIHNpbWlsYXIgdG8KCiAgICAgbnVtYWN0bCAtLWludGVy bGVhdmU9YWxsCgppbiB0aGF0IHRoZSBidWZmZXJzIGFyZSBkaXN0cmlidXRlZCBvbiB0aGUg TlVNQSBub2RlcyBldmVubHksIGJ1dAp0aGVyZSdzIGFsc28gYSBudW1iZXIgb2YgaW1wb3J0 YW50IGRpZmZlcmVuY2VzLgoKRmlyc3RseSwgaXQncyBhcHBsaWVkIG9ubHkgdG8gc2hhcmVk IGJ1ZmZlcnMgKGFuZCBidWZmZXIgZGVzY3JpcHRvcnMpLApub3QgdG8gdGhlIHdob2xlIHNo YXJlZCBtZW1vcnkgc2VnbWVudC4gSXQncyBwb3NzaWJsZSB0byBlbmFibGUgbWVtb3J5Cmlu dGVybGVhdmluZyB1c2luZyB0aGUgc2htZW1faW50ZXJsZWF2ZSBHVUMsIGludHJvZHVjZWQg aW4gYW4gZWFybGllcgpwYXRjaCBpbiB0aGlzIHNlcmllcy4KCk5VTUEgd29ya3MgYXQgdGhl IGdyYW51bGFyaXR5IG9mIGEgbWVtb3J5IHBhZ2UsIHdoaWNoIGlzIHR5cGljYWxseQplaXRo ZXIgNEsgb3IgMk1CIChodWdlcGFnZSksIGJ1dCBvdGhlciBzaXplcyBhcmUgcG9zc2libGUu IEZvciBzeXN0ZW1zCndoZXJlIE5VTUEgbWF0dGVycywgd2UgZXhwZWN0IGxhcmdlIGFtb3Vu dHMgb2YgbWVtb3J5IChodW5kcmVkcyBvZgpnaWdhYnl0ZXMpIGFuZCBodWdlcGFnZXMgZW5h YmxlZC4gQnV0IG5vdCBuZWNlc3NhcmlseS4KClRoZSBwYXJ0aXRpb25pbmcgc2NoZW1lIGlz IGJlc3QtZWZmb3J0IHdpdGggcmVzcGVjdCB0byBtZW1vcnkgcGFnZSBzaXplLgpUaGUgc2hh cmVkIGJ1ZmZlcnMgZG8gbm90ICJhbGlnbiIgd2l0aCBtZW1vcnkgcGFnZXMgKGkuZS4gYSBw YXJ0aXRpb24KbWF5IG5vdCBlbmQgYXQgdGhlIG1lbW9yeSBwYWdlIGJvdW5kYXJ5KSwgaW4g d2hpY2ggY2FzZSB3ZSBzaW1wbHkgbG9jYXRlCmp1c3QgdGhlIHNlY3Rpb24gb2YgdGhlIHBh cnRpdGlvbiB3aXRoIGNvbXBsZXRlIG1lbW9yeSBwYWdlcy4gVGhpcyBtZWFucwp0aGVyZSBt YXkgYmUgfm9uZSB1bm1hcHBlZCBtZW1vcnkgcGFnZSBiZXR3ZWVuIHBhcnRpdGlvbnMuIENv bnNpZGVyaW5nCnRoZSBleHBlY3RlZCBhbW91bnRzIG9mIG1lbW9yeSwgdGhpcyBpcyBuZWds aWdpYmxlLCBhbmQgdGhlIGFsdGVybmF0aXZlCndvdWxkIGJlIGEgc2lnbmlmaWNhbnQgYW1v dW50IG9mIGNvbXBsZXhpdHkgdG8gYWxpZ24gdGhlIHBhZ2VzIGFuZAplbmZvcmNlICJhbGxv d2VkIiBwYXJ0aXRpb24gc2l6ZXMuCgpCdWZmZXIgZGVzY3JpcHRvcnMgYXJlIGFmZmVjdGVk IGJ5IHRoaXMgdG9vLCBhbmQgdGhlIGVmZmVjdCBtYXkgYmUgbW9yZQpzaWduaWZpY2FudCwg c2ltcGx5IGJlY2F1c2UgdGhlIGRlc2NyaXB0b3JzIGFyZSBtdWNoIHNtYWxsZXIgKH42NEIp LiBTbwp0aGUgYXJyYXkgaXMgc21hbGxlciwgYW5kIGEgc2luZ2xlIDJNQiBtZW1vcnkgcGFn ZSBpcyB3b3J0aCB+MzJLIGJ1ZmZlcgpkZXNjcmlwdG9ycy4gQnV0IHdpdGggbGFyZ2Ugc3lz dGVtcyBpdCdzIHN0aWxsIG5lZ2xpZ2libGUuCgpUaGUgImJ1ZmZlciBwYXJ0aXRpb25zIiBt YXkgbm90IGJlIDE6MSB3aXRoIE5VTUEgbm9kZXMuIFdlIHdhbnQgdG8gYWxsb3cKY2xvY2st c3dlZXAgcGFydGl0aW9uaW5nIGV2ZW4gb24gbm9uLU5VTUEgc3lzdGVtcywgb3Igd2hlbiBy dW5uaW5nIG9ubHkKb24gYSBzbWFsbCBudW1iZXIgb2YgTlVNQSBub2Rlcy4gVGhlcmUncyBh IG1pbmltYWwgbnVtYmVyIG9mIHBhcnRpdGlvbnMKKGRlZmF1bHQ6IDQpLCBhbmQgYSBub2Rl IG1heSBnZXQgbXVsdGlwbGUgcGFydGl0aW9ucy4gTm9kZXMgYWx3YXlzIGdldAp0aGUgc2Ft ZSBudW1iZXIgb2YgcGFydGl0aW9ucyAoZS5nLiB3aXRoIDMgTlVNQSBub2RlcyB0aGVyZSB3 aWxsIGJlIDYKcGFydGl0aW9ucyBpbiB0b3RhbCwgYXMgZWFjaCBub2RlIGdldHMgMiBwYXJ0 aXRpb25zKS4KClRoZSBmZWF0dXJlIGlzIGVuYWJsZWQgYnkgZHNoYXJlZF9idWZmZXJzX251 bWEgR1VDIChkZWZhdWx0OiBmYWxzZSkuCi0tLQogLi4uL3BnX2J1ZmZlcmNhY2hlLS0xLjct LTEuOC5zcWwgICAgICAgICAgICAgIHwgICAxICsKIGNvbnRyaWIvcGdfYnVmZmVyY2FjaGUv cGdfYnVmZmVyY2FjaGVfcGFnZXMuYyB8ICAyNCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9i dWZmZXIvYnVmX2luaXQuYyAgICAgICAgIHwgMjQ0ICsrKysrKysrKysrKysrKystLQogc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYyAgICAgICAgIHwgICA5ICsKIHNy Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0ICAgICB8ICAgNiArCiBz cmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDEgKwog c3JjL2luY2x1ZGUvcG9ydC9wZ19udW1hLmggICAgICAgICAgICAgICAgICAgIHwgICA3ICsK IHNyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5oICAgICAgICAgICB8ICAxNiAr LQogc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZtZ3IuaCAgICAgICAgICAgICAgICAgIHwgICA4 ICsKIHNyYy9wb3J0L3BnX251bWEuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEx MiArKysrKysrKwogMTAgZmlsZXMgY2hhbmdlZCwgMzkyIGluc2VydGlvbnMoKyksIDM2IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVm ZmVyY2FjaGUtLTEuNy0tMS44LnNxbCBiL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVm ZmVyY2FjaGUtLTEuNy0tMS44LnNxbAppbmRleCBkNjJiODMzOS4uYTZlNDlmZDEgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGUtLTEuNy0tMS44 LnNxbAorKysgYi9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlLS0xLjct LTEuOC5zcWwKQEAgLTExLDYgKzExLDcgQEAgTEFOR1VBR0UgQyBQQVJBTExFTCBTQUZFOwog Q1JFQVRFIFZJRVcgcGdfYnVmZmVyY2FjaGVfcGFydGl0aW9ucyBBUwogCVNFTEVDVCBQLiog RlJPTSBwZ19idWZmZXJjYWNoZV9wYXJ0aXRpb25zKCkgQVMgUAogCShwYXJ0aXRpb24gaW50 ZWdlciwJCQktLSBwYXJ0aXRpb24gaW5kZXgKKwkgbnVtYV9ub2RlIGludGVnZXIsCQkJLS0g TlVNQSBub2RlIG9mIHRoZSBwYXJ0aXRpb29uCiAJIG51bV9idWZmZXJzIGludGVnZXIsCQkt LSBudW1iZXIgb2YgYnVmZmVycyBpbiB0aGUgcGFydGl0aW9uCiAJIGZpcnN0X2J1ZmZlciBp bnRlZ2VyLAkJLS0gZmlyc3QgYnVmZmVyIG9mIHBhcnRpdGlvbgogCSBsYXN0X2J1ZmZlciBp bnRlZ2VyKTsJCS0tIGxhc3QgYnVmZmVyIG9mIHBhcnRpdGlvbgpkaWZmIC0tZ2l0IGEvY29u dHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZV9wYWdlcy5jIGIvY29udHJpYi9w Z19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZV9wYWdlcy5jCmluZGV4IDZjOTgzOGI0Li40 NmI2Yjg1YSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJj YWNoZV9wYWdlcy5jCisrKyBiL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2Fj aGVfcGFnZXMuYwpAQCAtMzEsNyArMzEsNyBAQAogI2RlZmluZSBOVU1fQlVGRkVSQ0FDSEVf TUFSS19ESVJUWV9BTExfRUxFTSAzCiAKICNkZWZpbmUgTlVNX0JVRkZFUkNBQ0hFX09TX1BB R0VTX0VMRU0JMwotI2RlZmluZSBOVU1fQlVGRkVSQ0FDSEVfUEFSVElUSU9OU19FTEVNCTQK KyNkZWZpbmUgTlVNX0JVRkZFUkNBQ0hFX1BBUlRJVElPTlNfRUxFTQk1CiAKIFBHX01PRFVM RV9NQUdJQ19FWFQoCiAJCQkJCS5uYW1lID0gInBnX2J1ZmZlcmNhY2hlIiwKQEAgLTk1NSwx MSArOTU1LDEzIEBAIHBnX2J1ZmZlcmNhY2hlX3BhcnRpdGlvbnMoUEdfRlVOQ1RJT05fQVJH UykKIAkJdHVwbGVkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoZXhwZWN0ZWRfdHVw bGVkZXNjLT5uYXR0cyk7CiAJCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBsZWRlc2MsIChBdHRy TnVtYmVyKSAxLCAicGFydGl0aW9uIiwKIAkJCQkJCSAgIElOVDRPSUQsIC0xLCAwKTsKLQkJ VHVwbGVEZXNjSW5pdEVudHJ5KHR1cGxlZGVzYywgKEF0dHJOdW1iZXIpIDIsICJudW1fYnVm ZmVycyIsCisJCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBsZWRlc2MsIChBdHRyTnVtYmVyKSAy LCAibnVtYV9ub2RlIiwKIAkJCQkJCSAgIElOVDRPSUQsIC0xLCAwKTsKLQkJVHVwbGVEZXNj SW5pdEVudHJ5KHR1cGxlZGVzYywgKEF0dHJOdW1iZXIpIDMsICJmaXJzdF9idWZmZXIiLAor CQlUdXBsZURlc2NJbml0RW50cnkodHVwbGVkZXNjLCAoQXR0ck51bWJlcikgMywgIm51bV9i dWZmZXJzIiwKIAkJCQkJCSAgIElOVDRPSUQsIC0xLCAwKTsKLQkJVHVwbGVEZXNjSW5pdEVu dHJ5KHR1cGxlZGVzYywgKEF0dHJOdW1iZXIpIDQsICJsYXN0X2J1ZmZlciIsCisJCVR1cGxl RGVzY0luaXRFbnRyeSh0dXBsZWRlc2MsIChBdHRyTnVtYmVyKSA0LCAiZmlyc3RfYnVmZmVy IiwKKwkJCQkJCSAgIElOVDRPSUQsIC0xLCAwKTsKKwkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1 cGxlZGVzYywgKEF0dHJOdW1iZXIpIDUsICJsYXN0X2J1ZmZlciIsCiAJCQkJCQkgICBJTlQ0 T0lELCAtMSwgMCk7CiAKIAkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gQmxlc3NUdXBsZURlc2Mo dHVwbGVkZXNjKTsKQEAgLTk3NywyOCArOTc5LDMyIEBAIHBnX2J1ZmZlcmNhY2hlX3BhcnRp dGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAl7CiAJCXVpbnQzMgkJaSA9IGZ1bmNjdHgtPmNh bGxfY250cjsKIAotCQlpbnQJCQludW1fYnVmZmVycywKKwkJaW50CQkJbnVtYV9ub2RlLAor CQkJCQludW1fYnVmZmVycywKIAkJCQkJZmlyc3RfYnVmZmVyLAogCQkJCQlsYXN0X2J1ZmZl cjsKIAogCQlEYXR1bQkJdmFsdWVzW05VTV9CVUZGRVJDQUNIRV9QQVJUSVRJT05TX0VMRU1d OwogCQlib29sCQludWxsc1tOVU1fQlVGRkVSQ0FDSEVfUEFSVElUSU9OU19FTEVNXTsKIAot CQlCdWZmZXJQYXJ0aXRpb25HZXQoaSwgJm51bV9idWZmZXJzLAorCQlCdWZmZXJQYXJ0aXRp b25HZXQoaSwgJm51bWFfbm9kZSwgJm51bV9idWZmZXJzLAogCQkJCQkJICAgJmZpcnN0X2J1 ZmZlciwgJmxhc3RfYnVmZmVyKTsKIAogCQl2YWx1ZXNbMF0gPSBJbnQzMkdldERhdHVtKGkp OwogCQludWxsc1swXSA9IGZhbHNlOwogCi0JCXZhbHVlc1sxXSA9IEludDMyR2V0RGF0dW0o bnVtX2J1ZmZlcnMpOworCQl2YWx1ZXNbMV0gPSBJbnQzMkdldERhdHVtKG51bWFfbm9kZSk7 CiAJCW51bGxzWzFdID0gZmFsc2U7CiAKLQkJdmFsdWVzWzJdID0gSW50MzJHZXREYXR1bShm aXJzdF9idWZmZXIpOworCQl2YWx1ZXNbMl0gPSBJbnQzMkdldERhdHVtKG51bV9idWZmZXJz KTsKIAkJbnVsbHNbMl0gPSBmYWxzZTsKIAotCQl2YWx1ZXNbM10gPSBJbnQzMkdldERhdHVt KGxhc3RfYnVmZmVyKTsKKwkJdmFsdWVzWzNdID0gSW50MzJHZXREYXR1bShmaXJzdF9idWZm ZXIpOwogCQludWxsc1szXSA9IGZhbHNlOwogCisJCXZhbHVlc1s0XSA9IEludDMyR2V0RGF0 dW0obGFzdF9idWZmZXIpOworCQludWxsc1s0XSA9IGZhbHNlOworCiAJCS8qIEJ1aWxkIGFu ZCByZXR1cm4gdGhlIHR1cGxlLiAqLwogCQl0dXBsZSA9IGhlYXBfZm9ybV90dXBsZSgoVHVw bGVEZXNjKSBmdW5jY3R4LT51c2VyX2ZjdHgsIHZhbHVlcywgbnVsbHMpOwogCQlyZXN1bHQg PSBIZWFwVHVwbGVHZXREYXR1bSh0dXBsZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2J1ZmZlci9idWZfaW5pdC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIv YnVmX2luaXQuYwppbmRleCBlNTkzYjAyZS4uMWY5M2EzMWQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl9pbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9idWZmZXIvYnVmX2luaXQuYwpAQCAtMTQsMTIgKzE0LDIwIEBACiAgKi8KICNpbmNs dWRlICJwb3N0Z3Jlcy5oIgogCisjaWZkZWYgVVNFX0xJQk5VTUEKKyNpbmNsdWRlIDxudW1h Lmg+CisjaW5jbHVkZSA8bnVtYWlmLmg+CisjZW5kaWYKKworI2luY2x1ZGUgInBvcnQvcGdf bnVtYS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYWlvLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9i dWZfaW50ZXJuYWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3Byb2NsaXN0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgogI2lu Y2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgorI2luY2x1ZGUgInV0aWxzL2d1Y19ob29r cy5oIgorI2luY2x1ZGUgInV0aWxzL3ZhcmxlbmEuaCIKIAogQnVmZmVyRGVzY1BhZGRlZCAq QnVmZmVyRGVzY3JpcHRvcnM7CiBjaGFyCSAgICpCdWZmZXJCbG9ja3M7CkBAIC03MSw5ICs3 OSwxMiBAQCBjb25zdCBTaG1lbUNhbGxiYWNrcyBCdWZmZXJNYW5hZ2VyU2htZW1DYWxsYmFj a3MgPSB7CiAgKgkJbXVsdGlwbGUgdGltZXMuIENoZWNrIHRoZSBQcml2YXRlUmVmQ291bnQg aW5mcmFzdHJ1Y3R1cmUgaW4gYnVmbWdyLmMuCiAgKi8KIAotLyogbnVtYmVyIG9mIGJ1ZmZl ciBwYXJ0aXRpb25zICovCi0jZGVmaW5lIE5VTV9DTE9DS19TV0VFUF9QQVJUSVRJT05TCTQK Ky8qCisgKiBNaW5pbXVtIG51bWJlciBvZiBidWZmZXIgcGFydGl0aW9ucywgbm8gbWF0dGVy IHRoZSBudW1iZXIgb2YgTlVNQSBub2Rlcy4KKyAqLworI2RlZmluZSBNSU5fQlVGRkVSX1BB UlRJVElPTlMJNAogCitib29sCXNoYXJlZF9idWZmZXJzX251bWEgPSBmYWxzZTsKIAogLyoK ICAqIFJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkgYXJlYSBmb3IgdGhlIGJ1ZmZlciBwb29sLgpA QCAtODEsNiArOTIsMTAgQEAgY29uc3QgU2htZW1DYWxsYmFja3MgQnVmZmVyTWFuYWdlclNo bWVtQ2FsbGJhY2tzID0gewogc3RhdGljIHZvaWQKIEJ1ZmZlck1hbmFnZXJTaG1lbVJlcXVl c3Qodm9pZCAqYXJnKQogeworCWludAkJbnBhcnRzOworCisJQnVmZmVyUGFydGl0aW9uc0Nh bGN1bGF0ZShOVUxMLCAmbnBhcnRzLCBOVUxMKTsKKwogCVNobWVtUmVxdWVzdFN0cnVjdCgu bmFtZSA9ICJCdWZmZXIgRGVzY3JpcHRvcnMiLAogCQkJCQkgICAuc2l6ZSA9IE5CdWZmZXJz ICogc2l6ZW9mKEJ1ZmZlckRlc2NQYWRkZWQpLAogCS8qIEFsaWduIGRlc2NyaXB0b3JzIHRv IGEgY2FjaGVsaW5lIGJvdW5kYXJ5LiAqLwpAQCAtMTAzLDcgKzExOCw3IEBAIEJ1ZmZlck1h bmFnZXJTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogCQkpOwogCiAJU2htZW1SZXF1ZXN0U3Ry dWN0KC5uYW1lID0gIkJ1ZmZlciBQYXJ0aXRpb24gUmVnaXN0cnkiLAotCQkJCQkgICAuc2l6 ZSA9IE5VTV9DTE9DS19TV0VFUF9QQVJUSVRJT05TICogc2l6ZW9mKEJ1ZmZlclBhcnRpdGlv biksCisJCQkJCSAgIC5zaXplID0gbnBhcnRzICogc2l6ZW9mKEJ1ZmZlclBhcnRpdGlvbiks CiAJLyogQWxpZ24gZGVzY3JpcHRvcnMgdG8gYSBjYWNoZWxpbmUgYm91bmRhcnkuICovCiAJ CQkJCSAgIC5hbGlnbm1lbnQgPSBQR19DQUNIRV9MSU5FX1NJWkUsCiAJCQkJCSAgIC5wdHIg PSAodm9pZCAqKikgJkJ1ZmZlclBhcnRpdGlvbnNSZWdpc3RyeSwKQEAgLTEzNCw2ICsxNDks MTAgQEAgQnVmZmVyTWFuYWdlclNobWVtSW5pdCh2b2lkICphcmcpCiAJLyoKIAkgKiBJbml0 aWFsaXplIHRoZSBidWZmZXIgcGFydGl0aW9uIHJlZ2lzdHJ5IGZpcnN0LCBiZWZvcmUgb3Ro ZXIgcGFydHMKIAkgKiBoYXZlIGEgY2hhbmNlIHRvIHRvdWNoIHRoZSBtZW1vcnkuCisJICoK KwkgKiBBbHNvIG1vdmVzIG1lbW9yeSB0byBkaWZmZXJlbnQgTlVNQSBub2RlcyAoaWYgZW5h YmxlZCBieSBhIEdVQykuCisJICogRG8gdGhpcyBiZWZvcmUgdGhlIGxvb3AgdGhhdCBpbml0 aWFsaXplcyBidWZmZXIgaGVhZGVycyBldGMuIHdoaWNoCisJICogbWF5IGZhdWx0IHNvbWUg b2YgdGhlIG1lbW9yeSBwYWdlcyBldGMuCiAJICovCiAJQnVmZmVyUGFydGl0aW9uc0luaXQo KTsKIApAQCAtMjMxLDM1ICsyNTAsMjAzIEBAIEJ1ZmZlclBhcnRpdGlvbnNJbml0KHZvaWQp CiB7CiAJaW50CQkJYnVmZmVyID0gMDsKIAotCS8qIG51bWJlciBvZiBidWZmZXJzIHBlciBw YXJ0aXRpb24gKG1ha2Ugc3VyZSB0byBub3Qgb3ZlcmZsb3cpICovCi0JaW50CQkJcGFydF9i dWZmZXJzID0gTkJ1ZmZlcnMgLyBOVU1fQ0xPQ0tfU1dFRVBfUEFSVElUSU9OUzsKLQlpbnQJ CQlyZW1haW5pbmdfYnVmZmVycyA9IE5CdWZmZXJzICUgTlVNX0NMT0NLX1NXRUVQX1BBUlRJ VElPTlM7CisJaW50CQkJbm5vZGVzLAorCQkJCW5wYXJ0aXRpb25zLAorCQkJCW5wYXJ0aXRp b25zX3Blcl9ub2RlOwogCi0JQnVmZmVyUGFydGl0aW9uc1JlZ2lzdHJ5LT5ucGFydGl0aW9u cyA9IE5VTV9DTE9DS19TV0VFUF9QQVJUSVRJT05TOworCWludAkJCWJ1ZmZlcnNfcGVyX3Bh cnRpdGlvbiwKKwkJCQlidWZmZXJzX3JlbWFpbmluZzsKIAotCWZvciAoaW50IG4gPSAwOyBu IDwgQnVmZmVyUGFydGl0aW9uc1JlZ2lzdHJ5LT5ucGFydGl0aW9uczsgbisrKQotCXsKLQkJ QnVmZmVyUGFydGl0aW9uICpwYXJ0ID0gJkJ1ZmZlclBhcnRpdGlvbnNSZWdpc3RyeS0+cGFy dGl0aW9uc1tuXTsKKwkvKiBjYWxjdWxhdGUgcGFydGl0aW9uaW5nIHBhcmFtZXRlcnMgKi8K KwlCdWZmZXJQYXJ0aXRpb25zQ2FsY3VsYXRlKCZubm9kZXMsICZucGFydGl0aW9ucywgJm5w YXJ0aXRpb25zX3Blcl9ub2RlKTsKKworCS8qIHBhcmFub2lhICovCisJQXNzZXJ0KG5ub2Rl cyA+IDApOworCUFzc2VydChucGFydGl0aW9ucyA+PSBNSU5fQlVGRkVSX1BBUlRJVElPTlMp OworCUFzc2VydCgobnBhcnRpdGlvbnMgJSBubm9kZXMpID09IDApOworCUFzc2VydCgobnBh cnRpdGlvbnNfcGVyX25vZGUgKiBubm9kZXMpID09IG5wYXJ0aXRpb25zKTsKIAotCQlpbnQJ CQludW1fYnVmZmVycyA9IHBhcnRfYnVmZmVyczsKLQkJaWYgKG4gPCByZW1haW5pbmdfYnVm ZmVycykKLQkJCW51bV9idWZmZXJzICs9IDE7CisJQnVmZmVyUGFydGl0aW9uc1JlZ2lzdHJ5 LT5ubm9kZXMgPSBubm9kZXM7CisJQnVmZmVyUGFydGl0aW9uc1JlZ2lzdHJ5LT5ucGFydGl0 aW9ucyA9IG5wYXJ0aXRpb25zOworCUJ1ZmZlclBhcnRpdGlvbnNSZWdpc3RyeS0+bnBhcnRp dGlvbnNfcGVyX25vZGUgPSBucGFydGl0aW9uc19wZXJfbm9kZTsKIAotCQlyZW1haW5pbmdf YnVmZmVycyAtPSBudW1fYnVmZmVyczsKKwkvKiByZWd1bGFyIHBhcnRpdGlvbiBzaXplLCB0 aGUgZmlyc3QgY291cGxlIGdldCBhbiBleHRyYSBidWZmZXIgKi8KKwlidWZmZXJzX3Blcl9w YXJ0aXRpb24gPSAoTkJ1ZmZlcnMgLyBucGFydGl0aW9ucyk7CisJYnVmZmVyc19yZW1haW5p bmcgPSAoTkJ1ZmZlcnMgJSBidWZmZXJzX3Blcl9wYXJ0aXRpb24pOwogCi0JCUFzc2VydCgo bnVtX2J1ZmZlcnMgPiAwKSAmJiAobnVtX2J1ZmZlcnMgPD0gcGFydF9idWZmZXJzKSk7Ci0J CUFzc2VydCgoYnVmZmVyID49IDApICYmIChidWZmZXIgPCBOQnVmZmVycykpOworCS8qIHNo b3VsZCBoYXZlIGFsbCB0aGUgYnVmZmVycyAqLworCUFzc2VydCgoYnVmZmVyc19wZXJfcGFy dGl0aW9uICogbnBhcnRpdGlvbnMgKyBidWZmZXJzX3JlbWFpbmluZykgPT0gTkJ1ZmZlcnMp OwogCi0JCXBhcnQtPm51bV9idWZmZXJzID0gbnVtX2J1ZmZlcnM7Ci0JCXBhcnQtPmZpcnN0 X2J1ZmZlciA9IGJ1ZmZlcjsKLQkJcGFydC0+bGFzdF9idWZmZXIgPSBidWZmZXIgKyAobnVt X2J1ZmZlcnMgLSAxKTsKKwkvKgorCSAqIE5vdyB3YWxrIHRoZSBwYXJ0aXRpb25zLCBhbmQg c2V0IHRoZSBidWZmZXIgcmFuZ2UuIE9wdGlvbmFsbHksIHBsYWNlCisJICogdGhlIHBhcnRp dGlvbnMgb24gYSBnaXZlbiBub2RlIChmb3IgYWxsIHBhcnRpdGlvbnMgYXQgb25jZSkuCisJ ICovCisJZm9yIChpbnQgbiA9IDA7IG4gPCBubm9kZXM7IG4rKykKKwl7CisJCWZvciAoaW50 IHAgPSAwOyBwIDwgbnBhcnRpdGlvbnNfcGVyX25vZGU7IHArKykKKwkJeworCQkJaW50CQkJ aWR4ID0gKG4gKiBucGFydGl0aW9uc19wZXJfbm9kZSkgKyBwOworCQkJQnVmZmVyUGFydGl0 aW9uICpwYXJ0ID0gJkJ1ZmZlclBhcnRpdGlvbnNSZWdpc3RyeS0+cGFydGl0aW9uc1tpZHhd OworCisJCQkvKgorCQkJICogQXNzaWduIHRvIHRoZSBOVU1BIG5vZGUsIGJ1dCBvbmx5IHdp dGggc2hhcmVkX2J1ZmZlcnNfbnVtYT1vbi4KKwkJCSAqCisJCQkgKiBYWFggd2Ugc2hvdWxk IGdldCBhbiBhY3R1YWwgbm9kZSBJRCBmcm9tIHRoZSBtYXNrLCBpbiBjYXNlIHRoZQorCQkJ ICogdGFzayBpcyByZXN0cmljdGVkIHRvIG9ubHkgc29tZSBub2Rlcy4KKwkJCSAqLworCQkJ cGFydC0+bnVtYV9ub2RlID0gKHNoYXJlZF9idWZmZXJzX251bWEpID8gbiA6IC0xOworCisJ CQkvKiBUaGUgZmlyc3QgY291cGxlIHBhcnRpdGlvbnMgbWF5IGdldCBhbiBleHRyYSBidWZm ZXIuICovCisJCQlwYXJ0LT5udW1fYnVmZmVycyA9IGJ1ZmZlcnNfcGVyX3BhcnRpdGlvbjsK KwkJCWlmIChpZHggPCBidWZmZXJzX3JlbWFpbmluZykKKwkJCQlwYXJ0LT5udW1fYnVmZmVy cyArPSAxOworCisJCQkvKiByZW1lbWJlciB0aGUgYnVmZmVyIHJhbmdlICovCisJCQlwYXJ0 LT5maXJzdF9idWZmZXIgPSBidWZmZXI7CisJCQlwYXJ0LT5sYXN0X2J1ZmZlciA9IGJ1ZmZl ciArIChwYXJ0LT5udW1fYnVmZmVycyAtIDEpOworCisJCQkvKiByZW1lbWJlciBzdGFydCBv ZiB0aGUgbmV4dCBwYXJ0aXRpb24gKi8KKwkJCWJ1ZmZlciArPSBwYXJ0LT5udW1fYnVmZmVy czsKKwkJfQogCi0JCWJ1ZmZlciArPSBudW1fYnVmZmVyczsKKyNpZmRlZiBVU0VfTElCTlVN QQorCQkvKgorCQkgKiBOb3cgdHJ5IHRvIGxvY2F0ZSBidWZmZXJzIGFuZCBidWZmZXIgZGVz Y3JpcHRvcnMgdG8gdGhlIG5vZGUgKGFsbAorCQkgKiBwYXJ0aXRpb25zIGZvciB0aGUgbm9k ZSBhdCBvbmNlKS4KKwkJICovCisJCWlmIChzaGFyZWRfYnVmZmVyc19udW1hKQorCQl7CisJ CQlTaXplCW51bWFfcGFnZV9zaXplID0gcGdfbnVtYV9wYWdlX3NpemUoKTsKKworCQkJaW50 CQlwYXJ0X2ZpcnN0LAorCQkJCQlwYXJ0X2xhc3QsCisJCQkJCWJ1ZmZfZmlyc3QsCisJCQkJ CWJ1ZmZfbGFzdDsKKworCQkJY2hhciAgICpzdGFydHB0ciwKKwkJCQkgICAqZW5kcHRyOwor CisJCQkvKiBmaXJzdC9sYXN0IHBhcnRpdGlvbiBmb3IgdGhpcyBub2RlICovCisJCQlwYXJ0 X2ZpcnN0ID0gKG4gKiBucGFydGl0aW9uc19wZXJfbm9kZSk7CisJCQlwYXJ0X2xhc3QgPSBw YXJ0X2ZpcnN0ICsgKG5wYXJ0aXRpb25zX3Blcl9ub2RlIC0gMSk7CisKKwkJCS8qIGJ1ZmZl cnMgKGJsb2NrcykgKi8KKworCQkJLyogZmlyc3QvbGFzdCBidWZmZXIgKi8KKwkJCWJ1ZmZf Zmlyc3QgPSBCdWZmZXJQYXJ0aXRpb25zUmVnaXN0cnktPnBhcnRpdGlvbnNbcGFydF9maXJz dF0uZmlyc3RfYnVmZmVyOworCQkJYnVmZl9sYXN0ID0gQnVmZmVyUGFydGl0aW9uc1JlZ2lz dHJ5LT5wYXJ0aXRpb25zW3BhcnRfbGFzdF0ubGFzdF9idWZmZXI7CisKKwkJCS8qIGJlZ2lu bmluZyBvZiB0aGUgZmlyc3QgYmxvY2ssIGVuZCBvZiBsYXN0IGJsb2NrICovCisJCQlzdGFy dHB0ciA9IEJ1ZmZlckJsb2NrcyArICgoU2l6ZSkgYnVmZl9maXJzdCAqIEJMQ0tTWik7CisJ CQllbmRwdHIgPSBCdWZmZXJCbG9ja3MgKyAoKFNpemUpIChidWZmX2xhc3QgKyAxKSAqIEJM Q0tTWik7CisKKwkJCS8qIHByaW50IHNvbWUgd2FybmluZ3Mgd2hlbiB0aGUgcGFydGl0aW9u cyBhcmUgbm90IGFsaWduZWQgKi8KKwkJCWlmICgoc3RhcnRwdHIgIT0gKGNoYXIgKikgVFlQ RUFMSUdOKG51bWFfcGFnZV9zaXplLCBzdGFydHB0cikpIHx8CisJCQkJKGVuZHB0ciAhPSAo Y2hhciAqKSBUWVBFQUxJR05fRE9XTihudW1hX3BhZ2Vfc2l6ZSwgZW5kcHRyKSkpCisJCQl7 CisJCQkJZWxvZyhXQVJOSU5HLCAiYnVmZmVycyBmb3Igbm9kZSAlZCBub3Qgd2VsbCBhbGln bmVkIFslcCwlcF0gYWxpZ25lZCBbJXAsJXBdIiwKKwkJCQkJIG4sIHN0YXJ0cHRyLCBlbmRw dHIsCisJCQkJCSAoY2hhciAqKSBUWVBFQUxJR04obnVtYV9wYWdlX3NpemUsIHN0YXJ0cHRy KSwKKwkJCQkJIChjaGFyICopIFRZUEVBTElHTl9ET1dOKG51bWFfcGFnZV9zaXplLCBlbmRw dHIpKTsKKwkJCX0KKworCQkJLyogYmVzdCBlZmZvcnQ6IGFsaWduIHRoZSBwb2ludGVycywg c28gdGhhdCB0aGUgbWJpbmQoKSB3b3JrcyAqLworCQkJc3RhcnRwdHIgPSAoY2hhciAqKSBU WVBFQUxJR04obnVtYV9wYWdlX3NpemUsIHN0YXJ0cHRyKTsKKwkJCWVuZHB0ciA9IChjaGFy ICopIFRZUEVBTElHTl9ET1dOKG51bWFfcGFnZV9zaXplLCBlbmRwdHIpOworCisJCQkvKiBY WFggb3Igc2hvdWxkIHdlIHVzZSBwZ19udW1hX21vdmVfdG9fbm9kZT8gKi8KKwkJCXBnX251 bWFfYmluZF90b19ub2RlKHN0YXJ0cHRyLCBlbmRwdHIsIG4pOworCisJCQkvKiBidWZmZXIg ZGVzY3JpcHRvcnMgKi8KKworCQkJLyogYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBkZXNjcmlw dG9yLCBlbmQgb2YgbGFzdCBkZXNjcmlwdG9yICovCisJCQlzdGFydHB0ciA9IChjaGFyICop ICZCdWZmZXJEZXNjcmlwdG9yc1tidWZmX2ZpcnN0XTsKKwkJCWVuZHB0ciA9IChjaGFyICop ICZCdWZmZXJEZXNjcmlwdG9yc1tidWZmX2xhc3RdICsgMTsKKworCQkJLyogcHJpbnQgc29t ZSB3YXJuaW5ncyB3aGVuIHRoZSBwYXJ0aXRpb25zIGFyZSBub3QgYWxpZ25lZCAqLworCQkJ aWYgKChzdGFydHB0ciAhPSAoY2hhciAqKSBUWVBFQUxJR04obnVtYV9wYWdlX3NpemUsIHN0 YXJ0cHRyKSkgfHwKKwkJCQkoZW5kcHRyICE9IChjaGFyICopIFRZUEVBTElHTl9ET1dOKG51 bWFfcGFnZV9zaXplLCBlbmRwdHIpKSkKKwkJCXsKKwkJCQllbG9nKFdBUk5JTkcsICJidWZm ZXJzIGRlc2NyaXB0b3JzIGZvciBub2RlICVkIG5vdCB3ZWxsIGFsaWduZWQgWyVwLCVwXSBh bGlnbmVkIFslcCwlcF0iLAorCQkJCQkgbiwgc3RhcnRwdHIsIGVuZHB0ciwKKwkJCQkJIChj aGFyICopIFRZUEVBTElHTihudW1hX3BhZ2Vfc2l6ZSwgc3RhcnRwdHIpLAorCQkJCQkgKGNo YXIgKikgVFlQRUFMSUdOX0RPV04obnVtYV9wYWdlX3NpemUsIGVuZHB0cikpOworCQkJfQor CisJCQkvKiBiZXN0IGVmZm9ydDogYWxpZ24gdGhlIHBvaW50ZXJzLCBzbyB0aGF0IHRoZSBt YmluZCgpIHdvcmtzICovCisJCQlzdGFydHB0ciA9IChjaGFyICopIFRZUEVBTElHTihudW1h X3BhZ2Vfc2l6ZSwgc3RhcnRwdHIpOworCQkJZW5kcHRyID0gKGNoYXIgKikgVFlQRUFMSUdO X0RPV04obnVtYV9wYWdlX3NpemUsIGVuZHB0cik7CisKKwkJCS8qIFhYWCBvciBzaG91bGQg d2UgdXNlIHBnX251bWFfbW92ZV90b19ub2RlPyAqLworCQkJcGdfbnVtYV9iaW5kX3RvX25v ZGUoc3RhcnRwdHIsIGVuZHB0ciwgbik7CisJCX0KKyNlbmRpZgogCX0KIAogCUFzc2VydENo ZWNrQnVmZmVyUGFydGl0aW9ucygpOwogfQogCisvKgorICogQnVmZmVyUGFydGl0aW9uc0Nh bGN1bGF0ZQorICoJCVBpY2sgbnVtYmVyIG9mIGJ1ZmZlciBwYXJ0aXRpb25zIGZvciB0aGUg bnVtYmVyIG9mIG5vZGVzIGFuZAorICoJCU1JTl9CVUZGRVJfUEFSVElUSU9OUy4KKyAqCisg KiBQaWNrcyB0aGUgc21hbGxlc3QgbnVtYmVyIG9mIHBhcnRpdGlvbnMgaGlnaGVyIHRoYWgg TUlOX0JVRkZFUl9QQVJUSVRJT05TLAorICogc3VjaCB0aGF0IGFsbCBub2RlcyBoYXZlIHRo ZSBzYW1lIG51bWJlciBvZiBwYXJ0aXRpb25zLgorICoKKyAqIFRoaXMgaXMgYmVzdC1lZmZv cnQgd2l0aCByZXNwZWN0IHRvIHNpemUgb2YgdGhlIHBhcnRpdGlvbnMuIEl0J3MgcG9zc2li bGUKKyAqIHRoZSBwYXJ0aXRpb25zIGFyZSBub3QgYSBwZXJmZWN0IG11bHRpcGxlIG9mIHBh Z2Ugc2l6ZSwgaW4gd2hpY2ggY2FzZQorICogd2Ugc2V0IGxvY2F0aW9uIG9ubHkgZm9yIHRo ZSBwYXJ0IHdoZXJlIHRoYXQgaXMgcG9zc2libGUuIFRoZSBidWZmZXJzIG9uCisgKiB0aGUg ImJvdW5kYXJ5IiBtYXkgZ2V0IGxvY2F0ZWQgdXAgb24gYXJiaXRyYXJ5IG5vZGVzLgorICoK KyAqIFRoZSBleHRyYSBjb21wbGV4aXR5IG9mIGZpZ3VyaW5nIG91dCB0aGUgcmlnaHQgInBh cnRpdGlvbiBzaXplIiBpcyBub3QKKyAqIHdvcnRoIGl0LCBhbmQgaXQgY2FuIGxlYWQgdG8g c29tZSBwYXJ0aXRpb25zIGJlaW5nIG11Y2ggc21hbGxlci4gVGhpcyB3YXkKKyAqIHdlIGVu ZCB1cCB3aXRoIHBhcnRpdGlvbnMgb2YgYWxtb3N0IGV4YWN0bHkgdGhlIHNhbWUgc2l6ZSAo b25lIEJMQ0tTWiBpcworICogdGhlIGxhcmdlc3QgZGlmZmVyZW5jZSkuCisgKgorICogV2Ug ZXhwZWN0IHNoYXJlZCBidWZmZXJzIHRvIGJlIG11Y2ggbGFyZ2VyIHRoYW4gcGFnZSBzaXpl IChhdCBsZWFzdCBvbgorICogc3lzdGVtIHdoZXJlIE5VTUEgaXMgYSByZWxldmFudCBmZWF0 dXJlKSwgc28gdGhlIG51bWJlciBvZiAibm90IGxvY2F0ZWQiCisgKiBidWZmZXJzIHNob3Vs ZCBiZSBhIG5lZ2xpZ2libGUgZnJhY3Rpb24uIFRoaXMgb25seSBhZmZlY3RzIHBhZ2VzIGJl dHdlZW4KKyAqIHBhcnRpdGlvbnMgZm9yIGRpZmZlcmVudCBub2Rlcywgc28gKG5vZGVzLTEp IHBhZ2VzLiBUaGlzIGlzIGNlcnRhaW5seQorICogZmluZSB3aXRoIDJNQiBodWdlIHBhZ2Vz LCBidXQgZXZlbiB3aXRoIDFHQiBwYWdlcyBpdCBzaG91bGQgYmUgT0sgKGFzCisgKiBzdWNo IHN5c3RlbXMgc2hvdWxkIGhhdmUgaHVtb25nb3VzIGFtb3VudHMgb2YgbWVtb3J5KS4KKyAq CisgKiBJdCBhbHNvIG1lYW5zIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgbWVtb3J5 IHBhZ2Ugc2l6ZSBiZWZvcmUga25vd2luZworICogaWYgaHVnZSBwYWdlcyBnb3QgdXNlZCAo d2hpY2ggd2Ugb25seSBsZWFybiBkdXJpbmcgYWxsb2NhdGlvbikuCisgKi8KK3ZvaWQKK0J1 ZmZlclBhcnRpdGlvbnNDYWxjdWxhdGUoaW50ICpudW1fbm9kZXMsIGludCAqbnVtX3BhcnRp dGlvbnMsCisJCQkJCQkgIGludCAqbnVtX3BhcnRpdGlvbnNfcGVyX25vZGUpCit7CisJaW50 CQlubm9kZXMsCisJCQlucGFydHMsCisJCQlucGFydHNfcGVyX25vZGU7CisKKyNpZiBVU0Vf TElCTlVNQQorCW5ub2RlcyA9IG51bWFfbnVtX2NvbmZpZ3VyZWRfbm9kZXMoKTsKKwlucGFy dHNfcGVyX25vZGUgPSAxOwkvKiBhdCBsZWFzdCBvbmUgcGFydGl0aW9uIHBlciBub2RlICov CisKKwl3aGlsZSAoKG5wYXJ0c19wZXJfbm9kZSAqIG5ub2RlcykgPCBNSU5fQlVGRkVSX1BB UlRJVElPTlMpCisJCW5wYXJ0c19wZXJfbm9kZSsrOworCisJbnBhcnRzID0gKG5ub2RlcyAq IG5wYXJ0c19wZXJfbm9kZSk7CisjZWxzZQorCS8qIHdpdGhvdXQgTlVNQSwgYXNzdW1lIHRo ZXJlJ3MganVzdCBvbmUgbm9kZSAqLworCW5ub2RlcyA9IDE7CisJbnBhcnRzID0gTUlOX0JV RkZFUl9QQVJUSVRJT05TOworCW5wYXJ0c19wZXJfbm9kZSA9IE1JTl9CVUZGRVJfUEFSVElU SU9OUzsKKyNlbmRpZgorCisJaWYgKG51bV9ub2RlcykKKwkJKm51bV9ub2RlcyA9IG5ub2Rl czsKKworCWlmIChudW1fcGFydGl0aW9ucykKKwkJKm51bV9wYXJ0aXRpb25zID0gbnBhcnRz OworCisJaWYgKG51bV9wYXJ0aXRpb25zX3Blcl9ub2RlKQorCQkqbnVtX3BhcnRpdGlvbnNf cGVyX25vZGUgPSBucGFydHNfcGVyX25vZGU7Cit9CisKIC8qCiAgKiBCdWZmZXJQYXJ0aXRp b25Db3VudAogICoJCVJldHVybnMgdGhlIG51bWJlciBvZiBwYXJ0aXRpb25zIGNyZWF0ZWQu CkBAIC0yNzcsMTMgKzQ2NCwxNCBAQCBCdWZmZXJQYXJ0aXRpb25Db3VudCh2b2lkKQogICog VGhlIHJldHVybmVkIGluZm9ybWF0aW9uIGlzIGZpcnN0L2xhc3QgYnVmZmVyLCBudW1iZXIg b2YgYnVmZmVycy4KICAqLwogdm9pZAotQnVmZmVyUGFydGl0aW9uR2V0KGludCBpZHgsIGlu dCAqbnVtX2J1ZmZlcnMsCitCdWZmZXJQYXJ0aXRpb25HZXQoaW50IGlkeCwgaW50ICpub2Rl LCBpbnQgKm51bV9idWZmZXJzLAogCQkJCSAgIGludCAqZmlyc3RfYnVmZmVyLCBpbnQgKmxh c3RfYnVmZmVyKQogewogCWlmICgoaWR4ID49IDApICYmIChpZHggPCBCdWZmZXJQYXJ0aXRp b25zUmVnaXN0cnktPm5wYXJ0aXRpb25zKSkKIAl7CiAJCUJ1ZmZlclBhcnRpdGlvbiAqcGFy dCA9ICZCdWZmZXJQYXJ0aXRpb25zUmVnaXN0cnktPnBhcnRpdGlvbnNbaWR4XTsKIAorCQkq bm9kZSA9IHBhcnQtPm51bWFfbm9kZTsKIAkJKm51bV9idWZmZXJzID0gcGFydC0+bnVtX2J1 ZmZlcnM7CiAJCSpmaXJzdF9idWZmZXIgPSBwYXJ0LT5maXJzdF9idWZmZXI7CiAJCSpsYXN0 X2J1ZmZlciA9IHBhcnQtPmxhc3RfYnVmZmVyOwpAQCAtMjkzLDMgKzQ4MSwxNyBAQCBCdWZm ZXJQYXJ0aXRpb25HZXQoaW50IGlkeCwgaW50ICpudW1fYnVmZmVycywKIAogCWVsb2coRVJS T1IsICJpbnZhbGlkIHBhcnRpdGlvbiBpbmRleCIpOwogfQorCit2b2lkCitCdWZmZXJQYXJ0 aXRpb25zUGFyYW1zKGludCAqbnVtX25vZGVzLCBpbnQgKm51bV9wYXJ0aXRpb25zLAorCQkJ CQkgICBpbnQgKm51bV9wYXJ0aXRpb25zX3Blcl9ub2RlKQoreworCWlmIChudW1fbm9kZXMp CisJCSpudW1fbm9kZXMgPSBCdWZmZXJQYXJ0aXRpb25zUmVnaXN0cnktPm5ub2RlczsKKwor CWlmIChudW1fcGFydGl0aW9ucykKKwkJKm51bV9wYXJ0aXRpb25zID0gQnVmZmVyUGFydGl0 aW9uc1JlZ2lzdHJ5LT5ucGFydGl0aW9uczsKKworCWlmIChudW1fcGFydGl0aW9uc19wZXJf bm9kZSkKKwkJKm51bV9wYXJ0aXRpb25zX3Blcl9ub2RlID0gQnVmZmVyUGFydGl0aW9uc1Jl Z2lzdHJ5LT5ucGFydGl0aW9uc19wZXJfbm9kZTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9mcmVlbGlzdC5jCmluZGV4IGZkYjViYWQ3Li41M2VmNTIzOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCkBAIC0xNSw2ICsxNSwxNSBAQAogICovCiAj aW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2lmZGVmIFVTRV9MSUJOVU1BCisjaW5jbHVkZSA8 c2NoZWQuaD4KKyNlbmRpZgorCisjaWZkZWYgVVNFX0xJQk5VTUEKKyNpbmNsdWRlIDxudW1h Lmg+CisjaW5jbHVkZSA8bnVtYWlmLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgInBnc3RhdC5o IgogI2luY2x1ZGUgInBvcnQvYXRvbWljcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmX2lu dGVybmFscy5oIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFy YW1ldGVycy5kYXQgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRh dAppbmRleCA2OTNiYWQ5NC4uOTU5MTBiY2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3BhcmFtZXRlcnMuZGF0CkBAIC0yNzQ2LDYgKzI3NDYsMTIgQEAKICAgbWF4ID0+ ICdJTlRfTUFYIC8gMicsCiB9LAogCit7IG5hbWUgPT4gJ3NoYXJlZF9idWZmZXJzX251bWEn LCB0eXBlID0+ICdib29sJywgY29udGV4dCA9PiAnUEdDX1BPU1RNQVNURVInLCBncm91cCA9 PiAnUkVTT1VSQ0VTX01FTScsCisgIHNob3J0X2Rlc2MgPT4gJ0xvY2F0ZSBwYXJ0aXRpb25z IG9mIHNoYXJlZCBidWZmZXJzIChhbmQgZGVzY3JpcHRvcnMpIHRvIE5VTUEgbm9kZXMuJywK KyAgdmFyaWFibGUgPT4gJ3NoYXJlZF9idWZmZXJzX251bWEnLAorICBib290X3ZhbCA9PiAn ZmFsc2UnLAorfSwKKwogeyBuYW1lID0+ICdzaGFyZWRfbWVtb3J5X3NpemUnLCB0eXBlID0+ ICdpbnQnLCBjb250ZXh0ID0+ICdQR0NfSU5URVJOQUwnLCBncm91cCA9PiAnUFJFU0VUX09Q VElPTlMnLAogICBzaG9ydF9kZXNjID0+ICdTaG93cyB0aGUgc2l6ZSBvZiB0aGUgc2VydmVy XCdzIG1haW4gc2hhcmVkIG1lbW9yeSBhcmVhIChyb3VuZGVkIHVwIHRvIHRoZSBuZWFyZXN0 IE1CKS4nLAogICBmbGFncyA9PiAnR1VDX05PVF9JTl9TQU1QTEUgfCBHVUNfRElTQUxMT1df SU5fRklMRSB8IEdVQ19VTklUX01CIHwgR1VDX1JVTlRJTUVfQ09NUFVURUQnLApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IGU3 NTlmMDZiLi5jMzQwNmI1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMTQyLDYgKzE0Miw3IEBACiAjdGVtcF9idWZmZXJz ID0gOE1CICAgICAgICAgICAgICAgICAgICAgIyBtaW4gODAwa0IKICNtYXhfcHJlcGFyZWRf dHJhbnNhY3Rpb25zID0gMCAgICAgICAgICAjIHplcm8gZGlzYWJsZXMgdGhlIGZlYXR1cmUK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChjaGFuZ2UgcmVx dWlyZXMgcmVzdGFydCkKKyNzaGFyZWRfYnVmZmVyc19udW1hID0gb2ZmICAgICAgICAgICAg ICAjIE5VTUEtYXdhcmUgcGFydGl0aW9uaW5nCiAjIENhdXRpb246IGl0IGlzIG5vdCBhZHZp c2FibGUgdG8gc2V0IG1heF9wcmVwYXJlZF90cmFuc2FjdGlvbnMgbm9uemVybyB1bmxlc3MK ICMgeW91IGFjdGl2ZWx5IGludGVuZCB0byB1c2UgcHJlcGFyZWQgdHJhbnNhY3Rpb25zLgog I3dvcmtfbWVtID0gNE1CICAgICAgICAgICAgICAgICAgICAgICAgICMgbWluIDY0a0IKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BvcnQvcGdfbnVtYS5oIGIvc3JjL2luY2x1ZGUvcG9y dC9wZ19udW1hLmgKaW5kZXggMWI2NjhmZTEuLjhmZTRkNGFiIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9wb3J0L3BnX251bWEuaAorKysgYi9zcmMvaW5jbHVkZS9wb3J0L3BnX251bWEu aApAQCAtMTcsNiArMTcsMTMgQEAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgcGdfbnVtYV9p bml0KHZvaWQpOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBwZ19udW1hX3F1ZXJ5X3BhZ2Vz KGludCBwaWQsIHVuc2lnbmVkIGxvbmcgY291bnQsIHZvaWQgKipwYWdlcywgaW50ICpzdGF0 dXMpOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBwZ19udW1hX2dldF9tYXhfbm9kZSh2b2lk KTsKK2V4dGVybiBQR0RMTElNUE9SVCBTaXplIHBnX251bWFfcGFnZV9zaXplKHZvaWQpOwor ZXh0ZXJuIFBHRExMSU1QT1JUIHZvaWQgcGdfbnVtYV9tb3ZlX3RvX25vZGUoY2hhciAqc3Rh cnRwdHIsIGNoYXIgKmVuZHB0ciwgaW50IG5vZGUpOworZXh0ZXJuIFBHRExMSU1QT1JUIGlu dCBwZ19udW1hX2JpbmRfdG9fbm9kZShjaGFyICpzdGFydHB0ciwgY2hhciAqZW5kcHRyLCBp bnQgbm9kZSk7CisKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgbnVtYV9mbGFnczsKKworI2Rl ZmluZQkJTlVNQV9CVUZGRVJTCQkweDAxCiAKICNpZmRlZiBVU0VfTElCTlVNQQogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5oCmluZGV4IGQ2ODQ2YjFmLi5iMDgyZTM2YSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmgKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmgKQEAgLTM2NSwxMCArMzY1LDEw IEBAIHR5cGVkZWYgc3RydWN0IEJ1ZmZlckRlc2MKICAqIGxpbmUgc2l6ZWQuCiAgKgogICog WFhYOiBBcyB0aGlzIGlzIHByaW1hcmlseSBtYXR0ZXJzIGluIGhpZ2hseSBjb25jdXJyZW50 IHdvcmtsb2FkcyB3aGljaAotICogcHJvYmFibHkgYWxsIGFyZSA2NGJpdCB0aGVzZSBkYXlz LCBhbmQgdGhlIHNwYWNlIHdhc3RhZ2Ugd291bGQgYmUgYSBiaXQKLSAqIG1vcmUgbm90aWNl YWJsZSBvbiAzMmJpdCBzeXN0ZW1zLCB3ZSBkb24ndCBmb3JjZSB0aGUgc3RyaWRlIHRvIGJl IGNhY2hlCi0gKiBsaW5lIHNpemVkIG9uIHRob3NlLiBJZiBzb21lYm9keSBkb2VzIGFjdHVh bCBwZXJmb3JtYW5jZSB0ZXN0aW5nLCB3ZSBjYW4KLSAqIHJlZXZhbHVhdGUuCisgKiBwcm9i YWJseSBhbGwgYXJlIDY0Yml0IHRoZXNlIGRheXMuIFdlIGZvcmNlIHRoZSBzdHJpZGUgdG8g YmUgY2FjaGUgbGluZQorICogc2l6ZWQgZXZlbiBvbiAzMmJpdCBzeXN0ZW1zLCB3aGVyZSB0 aGUgc3BhY2Ugd2FzdGFnZSBpcyBiZSBhIGJpdCBtb3JlCisgKiBub3RpY2VhYmxlLCB0byBh bGxvdyBwYXJ0aXRpb25pbmcgb2Ygc2hhcmVkIGJ1ZmZlcnMgKHdoaWNoIHJlcXVpcmVzIHRo ZQorICogbWVtb3J5IHBhZ2UgYmUgYSBtdWx0aXBsZSBvZiBidWZmZXIgZGVzY3JpcHRvciku CiAgKgogICogTm90ZSB0aGF0IGxvY2FsIGJ1ZmZlciBkZXNjcmlwdG9ycyBhcmVuJ3QgZm9y Y2VkIHRvIGJlIGFsaWduZWQgLSBhcyB0aGVyZSdzCiAgKiBubyBjb25jdXJyZW50IGFjY2Vz cyB0byB0aG9zZSBpdCdzIHVubGlrZWx5IHRvIGJlIGJlbmVmaWNpYWwuCkBAIC0zNzgsNyAr Mzc4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQnVmZmVyRGVzYwogICogcGxhdGZvcm0gd2l0aCBl aXRoZXIgMzIgb3IgMTI4IGJ5dGUgbGluZSBzaXplcywgaXQncyBnb29kIHRvIGFsaWduIHRv CiAgKiBib3VuZGFyaWVzIGFuZCBhdm9pZCBmYWxzZSBzaGFyaW5nLgogICovCi0jZGVmaW5l IEJVRkZFUkRFU0NfUEFEX1RPX1NJWkUJKFNJWkVPRl9WT0lEX1AgPT0gOCA/IDY0IDogMSkK KyNkZWZpbmUgQlVGRkVSREVTQ19QQURfVE9fU0laRQk2NAogCiB0eXBlZGVmIHVuaW9uIEJ1 ZmZlckRlc2NQYWRkZWQKIHsKQEAgLTQxNiw4ICs0MTYsMTIgQEAgZXh0ZXJuIFBHRExMSU1Q T1JUIENvbmRpdGlvblZhcmlhYmxlTWluaW1hbGx5UGFkZGVkICpCdWZmZXJJT0NWQXJyYXk7 CiBleHRlcm4gUEdETExJTVBPUlQgV3JpdGViYWNrQ29udGV4dCBCYWNrZW5kV3JpdGViYWNr Q29udGV4dDsKIAogZXh0ZXJuIGludAlCdWZmZXJQYXJ0aXRpb25Db3VudCh2b2lkKTsKLWV4 dGVybiB2b2lkIEJ1ZmZlclBhcnRpdGlvbkdldChpbnQgaWR4LCBpbnQgKm51bV9idWZmZXJz LAorZXh0ZXJuIHZvaWQgQnVmZmVyUGFydGl0aW9uR2V0KGludCBpZHgsIGludCAqbm9kZSwg aW50ICpudW1fYnVmZmVycywKIAkJCQkJCQkgICBpbnQgKmZpcnN0X2J1ZmZlciwgaW50ICps YXN0X2J1ZmZlcik7CitleHRlcm4gdm9pZCBCdWZmZXJQYXJ0aXRpb25zQ2FsY3VsYXRlKGlu dCAqbnVtX25vZGVzLCBpbnQgKm51bV9wYXJ0aXRpb25zLAorCQkJCQkJCQkJICBpbnQgKm51 bV9wYXJ0aXRpb25zX3Blcl9ub2RlKTsKK2V4dGVybiB2b2lkIEJ1ZmZlclBhcnRpdGlvbnNQ YXJhbXMoaW50ICpudW1fbm9kZXMsIGludCAqbnVtX3BhcnRpdGlvbnMsCisJCQkJCQkJCSAg IGludCAqbnVtX3BhcnRpdGlvbnNfcGVyX25vZGUpOwogCiAvKiBpbiBsb2NhbGJ1Zi5jICov CiBleHRlcm4gUEdETExJTVBPUlQgQnVmZmVyRGVzYyAqTG9jYWxCdWZmZXJEZXNjcmlwdG9y czsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmggYi9zcmMvaW5j bHVkZS9zdG9yYWdlL2J1Zm1nci5oCmluZGV4IDc5YTNmNDQ3Li4xY2YwOWU4ZiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZtZ3IuaAorKysgYi9zcmMvaW5jbHVkZS9z dG9yYWdlL2J1Zm1nci5oCkBAIC0xNTgsMTAgKzE1OCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBS ZWFkQnVmZmVyc09wZXJhdGlvbiBSZWFkQnVmZmVyc09wZXJhdGlvbjsKIC8qCiAgKiBpbmZv cm1hdGlvbiBhYm91dCBvbmUgcGFydGl0aW9uIG9mIHNoYXJlZCBidWZmZXJzCiAgKgorICog bnVtYV9ub2Qgc3BlY2lmaWVzIG5vZGUgZm9yIHRoaXMgcGFydGl0aW9uICgtMSBtZWFucyBh bGxvY2F0ZWQgb24gYW55IG5vZGUpCiAgKiBmaXJzdC9sYXN0IGJ1ZmZlciAtIHRoZSB2YWx1 ZXMgYXJlIGluY2x1c2l2ZQogICovCiB0eXBlZGVmIHN0cnVjdCBCdWZmZXJQYXJ0aXRpb24K IHsKKwlpbnQJCQludW1hX25vZGU7CQkvKiBOVU1BIG5vZGUgKC0xIG5vIG5vZGUpICovCiAJ aW50CQkJbnVtX2J1ZmZlcnM7CS8qIG51bWJlciBvZiBidWZmZXJzICovCiAJaW50CQkJZmly c3RfYnVmZmVyOwkvKiBmaXJzdCBidWZmZXIgb2YgcGFydGl0aW9uICovCiAJaW50CQkJbGFz dF9idWZmZXI7CS8qIGxhc3QgYnVmZmVyIG9mIHBhcnRpdGlvbiAqLwpAQCAtMTcwLDcgKzE3 Miw5IEBAIHR5cGVkZWYgc3RydWN0IEJ1ZmZlclBhcnRpdGlvbgogLyogYW4gYXJyYXkgb2Yg aW5mb3JtYXRpb24gYWJvdXQgYWxsIHBhcnRpdGlvbnMgKi8KIHR5cGVkZWYgc3RydWN0IEJ1 ZmZlclBhcnRpdGlvbnMKIHsKKwlpbnQJCQlubm9kZXM7CQkJLyogbnVtYmVyIG9mIE5VTUEg bm9kZXMgKi8KIAlpbnQJCQlucGFydGl0aW9uczsJLyogbnVtYmVyIG9mIHBhcnRpdGlvbnMg Ki8KKwlpbnQJCQlucGFydGl0aW9uc19wZXJfbm9kZTsJLyogZm9yIGNvbnZlbmllbmNlICov CiAJQnVmZmVyUGFydGl0aW9uIHBhcnRpdGlvbnNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsK IH0gQnVmZmVyUGFydGl0aW9uczsKIApAQCAtMjA2LDYgKzIxMCw3IEBAIGV4dGVybiBQR0RM TElNUE9SVCBjb25zdCBQZ0Fpb0hhbmRsZUNhbGxiYWNrcyBhaW9fbG9jYWxfYnVmZmVyX3Jl YWR2X2NiOwogCiAvKiBpbiBidWZfaW5pdC5jICovCiBleHRlcm4gUEdETExJTVBPUlQgY2hh ciAqQnVmZmVyQmxvY2tzOworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgc2hhcmVkX2J1ZmZl cnNfbnVtYTsKIAogLyogaW4gbG9jYWxidWYuYyAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIGlu dCBOTG9jQnVmZmVyOwpAQCAtMzkwLDYgKzM5NSw5IEBAIGV4dGVybiB2b2lkIE1hcmtEaXJ0 eUFsbFVucGlubmVkQnVmZmVycyhpbnQzMiAqYnVmZmVyc19kaXJ0aWVkLAogCQkJCQkJCQkJ CWludDMyICpidWZmZXJzX2FscmVhZHlfZGlydHksCiAJCQkJCQkJCQkJaW50MzIgKmJ1ZmZl cnNfc2tpcHBlZCk7CiAKKy8qIGluIGJ1Zl9pbml0LmMgKi8KK2V4dGVybiBpbnQJQnVmZmVy R2V0Tm9kZShCdWZmZXIgYnVmZmVyKTsKKwogLyogaW4gbG9jYWxidWYuYyAqLwogZXh0ZXJu IHZvaWQgQXRQcm9jRXhpdF9Mb2NhbEJ1ZmZlcnModm9pZCk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9wb3J0L3BnX251bWEuYyBiL3NyYy9wb3J0L3BnX251bWEuYwppbmRleCA4OTU0NjY5Mi4u MTFjOGE0NTAgMTAwNjQ0Ci0tLSBhL3NyYy9wb3J0L3BnX251bWEuYworKysgYi9zcmMvcG9y dC9wZ19udW1hLmMKQEAgLTE4LDYgKzE4LDkgQEAKIAogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgInBvcnQvcGdfbnVtYS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2ht ZW0uaCIKKworaW50CW51bWFfZmxhZ3M7CiAKIC8qCiAgKiBBdCB0aGlzIHBvaW50IHdlIHBy b3ZpZGUgc3VwcG9ydCBvbmx5IGZvciBMaW51eCB0aGFua3MgdG8gbGlibnVtYSwgYnV0IGlu CkBAIC0xMTgsNiArMTIxLDk0IEBAIHBnX251bWFfZ2V0X21heF9ub2RlKHZvaWQpCiAJcmV0 dXJuIG51bWFfbWF4X25vZGUoKTsKIH0KIAorLyoKKyAqIHBnX251bWFfbW92ZV90b19ub2Rl CisgKgkJbW92ZSBtZW1vcnkgdG8gZGlmZmVyZW50IE5VTUEgbm9kZXMgaW4gbGFyZ2VyIGNo dW5rcworICoKKyAqIHN0YXJ0cHRyIC0gc3RhcnQgb2YgdGhlIHJlZ2lvbiAoc2hvdWxkIGJl IGFsaWduZWQgdG8gcGFnZSBzaXplKQorICogZW5kcHRyIC0gZW5kIG9mIHRoZSByZWdpb24g KGRvZXNuJ3QgbmVlZCB0byBiZSBhbGlnbmVkKQorICogbm9kZSAtIG5vZGUgdG8gbW92ZSB0 aGUgbWVtb3J5IHRvCisgKgorICogVGhlICJzdGFydHB0ciIgaXMgZXhwZWN0ZWQgdG8gYmUg YSBtdWx0aXBsZSBvZiBzeXN0ZW0gbWVtb3J5IHBhZ2Ugc2l6ZSwgYXMKKyAqIGRldGVybWlu ZWQgYnkgcGdfbnVtYV9wYWdlX3NpemUuCisgKgorICogWFhYIFdlIG9ubHkgZXhwZWN0IHRv IGRvIHRoaXMgZHVyaW5nIHN0YXJ0dXAsIHdoZW4gdGhlIHNoYXJlZCBtZW1vcnkgaXMKKyAq IHN0aWxsIGJlaW5nIHNldHVwLgorICovCit2b2lkCitwZ19udW1hX21vdmVfdG9fbm9kZShj aGFyICpzdGFydHB0ciwgY2hhciAqZW5kcHRyLCBpbnQgbm9kZSkKK3sKKwlTaXplCQlzeiA9 IChlbmRwdHIgLSBzdGFydHB0cik7CisKKwlBc3NlcnQoKGludDY0KSBzdGFydHB0ciAlIHBn X251bWFfcGFnZV9zaXplKCkgPT0gMCk7CisKKwkvKgorCSAqIG51bWFfdG9ub2RlX21lbW9y eSBkb2VzIG5vdCBhY3R1YWxseSBjYXVzZSBhIHBhZ2UgZmF1bHQsIGFuZCB0aHVzIGRvZXMK KwkgKiBub3QgbG9jYXRlIHRoZSBtZW1vcnkgb24gdGhlIG5vZGUuIFNvIGl0J3MgZmFzdCwg YXQgbGVhc3QgY29tcGFyZWQgdG8KKwkgKiBwZ19udW1hX3F1ZXJ5X3BhZ2VzLCBhbmQgZG9l cyBub3QgbWFrZSBzdGFydHVwIGxvbmdlci4gQnV0IGl0IGFsc28KKwkgKiBtZWFucyB0aGUg ZXhwZW5zaXZlIHBhcnQgaGFwcGVuIGxhdGVyLCBvbiB0aGUgZmlyc3QgYWNjZXNzLgorCSAq LworCW51bWFfdG9ub2RlX21lbW9yeShzdGFydHB0ciwgc3osIG5vZGUpOworfQorCitpbnQK K3BnX251bWFfYmluZF90b19ub2RlKGNoYXIgKnN0YXJ0cHRyLCBjaGFyICplbmRwdHIsIGlu dCBub2RlKQoreworCWludAkJCQlyZXQ7CisJc3RydWN0IGJpdG1hc2sgKm5vZGVtYXNrOwor CisJaWYgKG5vZGUgPCAwKQorCXsKKwkJZXJybm8gPSBFSU5WQUw7CisJCXJldHVybiAtMTsK Kwl9CisKKwlub2RlbWFzayA9IG51bWFfYWxsb2NhdGVfbm9kZW1hc2soKTsKKwlpZiAobm9k ZW1hc2sgPT0gTlVMTCkKKwl7CisJCWVycm5vID0gRU5PTUVNOworCQlyZXR1cm4gLTE7CisJ fQorCisJbnVtYV9iaXRtYXNrX3NldGJpdChub2RlbWFzaywgbm9kZSk7CisKKwkvKgorCSAq IE1QT0xfQklORCBwbGFjZXMgdGhlIHBhZ2VzIHN0cmljdGx5IG9uIHRoZSBub2RlLCBhbmQg TVBPTF9NRl9NT1ZFIG1pZ3JhdGVzCisJICogcGFnZXMgYWxyZWFkeSBmYXVsdGVkIGluIHRv IHRoYXQgbm9kZS4gSWYgbWJpbmQoKSBmYWlscywgbGVhdmUgdGhlIGRlZmF1bHQKKwkgKiBw bGFjZW1lbnQgaW4gZWZmZWN0LCBhbmQgcmVwb3J0IHRoZSBmYWlsdXJlLgorCSAqLworCXJl dCA9IG1iaW5kKHN0YXJ0cHRyLCAoZW5kcHRyIC0gc3RhcnRwdHIpLAorCQkJCU1QT0xfQklO RCwgbm9kZW1hc2stPm1hc2twLCBub2RlLCBNUE9MX01GX01PVkUpOworCisJbnVtYV9mcmVl X25vZGVtYXNrKG5vZGVtYXNrKTsKKworCXJldHVybiByZXQ7Cit9CisKK1NpemUKK3BnX251 bWFfcGFnZV9zaXplKHZvaWQpCit7CisJU2l6ZQkJb3NfcGFnZV9zaXplOworCVNpemUJCWh1 Z2VfcGFnZV9zaXplOworCisjaWZkZWYgV0lOMzIKKwlTWVNURU1fSU5GTyBzeXNpbmZvOwor CisJR2V0U3lzdGVtSW5mbygmc3lzaW5mbyk7CisJb3NfcGFnZV9zaXplID0gc3lzaW5mby5k d1BhZ2VTaXplOworI2Vsc2UKKwlvc19wYWdlX3NpemUgPSBzeXNjb25mKF9TQ19QQUdFU0la RSk7CisjZW5kaWYKKworCS8qIGFzc3VtZSBodWdlIHBhZ2VzIGdldCB1c2VkLCB1bmxlc3Mg SFVHRV9QQUdFU19PRkYgKi8KKwlpZiAoaHVnZV9wYWdlc19zdGF0dXMgIT0gSFVHRV9QQUdF U19PRkYpCisJCUdldEh1Z2VQYWdlU2l6ZSgmaHVnZV9wYWdlX3NpemUsIE5VTEwpOworCWVs c2UKKwkJaHVnZV9wYWdlX3NpemUgPSAwOworCisJcmV0dXJuIE1heChvc19wYWdlX3NpemUs IGh1Z2VfcGFnZV9zaXplKTsKK30KKwogI2Vsc2UKIAogLyogRW1wdHkgd3JhcHBlcnMgKi8K QEAgLTE0MCw0ICsyMzEsMjUgQEAgcGdfbnVtYV9nZXRfbWF4X25vZGUodm9pZCkKIAlyZXR1 cm4gMDsKIH0KIAordm9pZAorcGdfbnVtYV9tb3ZlX3RvX25vZGUoY2hhciAqc3RhcnRwdHIs IGNoYXIgKmVuZHB0ciwgaW50IG5vZGUpCit7CisJLyogd2UgZG9uJ3QgZXhwZWN0IHRvIGV2 ZXIgZ2V0IGhlcmUgaW4gYnVpbGRzIHdpdGhvdXQgbGlibnVtYSAqLworCUFzc2VydChmYWxz ZSk7Cit9CisKK2ludAorcGdfbnVtYV9iaW5kX3RvX25vZGUoY2hhciAqc3RhcnRwdHIsIGNo YXIgKmVuZHB0ciwgaW50IG5vZGUpCit7CisJLyogd2UgZG9uJ3QgZXhwZWN0IHRvIGV2ZXIg Z2V0IGhlcmUgaW4gYnVpbGRzIHdpdGhvdXQgbGlibnVtYSAqLworCUFzc2VydChmYWxzZSk7 Cit9CisKK1NpemUKK3BnX251bWFfcGFnZV9zaXplKHZvaWQpCit7CisJLyogd2UgZG9uJ3Qg ZXhwZWN0IHRvIGV2ZXIgZ2V0IGhlcmUgaW4gYnVpbGRzIHdpdGhvdXQgbGlibnVtYSAqLwor CUFzc2VydChmYWxzZSk7Cit9CisKICNlbmRpZgotLSAKMi41MC4xCgo= --317345122ad1692da28ddb245f423447087961c8 Content-Disposition: attachment; filename*0="v20260915a-0004-clock-sweep-basic-partitioning.patch" Content-Type: text/x-patch; name="=?UTF-8?Q?v20260915a-0004-clock-sweep-basic-partitioning.patch?=" Content-Transfer-Encoding: base64 RnJvbSBhYjI1ZDBjODMxNDM1Zjk2ZDhjYmQxMTBmZTViNWJjMWUxODE5OTE1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogVHVlLCAyIEp1biAyMDI2IDIyOjE2OjU1ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 MjAyNjA5MTVhIDQvOV0gY2xvY2stc3dlZXA6IGJhc2ljIHBhcnRpdGlvbmluZwoKUGFydGl0 aW9ucyB0aGUgImNsb2NrLXN3ZWVwIiBhbGdvcml0aG0gdG8gd29yayBvbiBpbmRpdmlkdWFs IHBhcnRpdGlvbnMsCm9uZSBieSBvbmUuIEVhY2ggYmFja2VuZCBwcm9jZXNzIGlzIG1hcHBl ZCB0byBvbmUgImhvbWUiIHBhcnRpdGlvbiwgd2l0aAphbiBpbmRlcGVuZGVudCBjbG9jayBo YW5kLiBUaGlzIHJlZHVjZXMgY29udGVudGlvbiBmb3Igd29ya2xvYWRzIHdpdGgKc2lnbmlm aWNhbnQgYnVmZmVyIHByZXNzdXJlLgoKVGhlIHBhdGNoIGV4dGVuZHMgdGhlICJwZ19idWZm ZXJjYWNoZV9wYXJ0aXRpb25zIiB2aWV3IHRvIGluY2x1ZGUKaW5mb3JtYXRpb24gYWJvdXQg dGhlIGNsb2NrLXN3ZWVwIGFjdGl2aXR5LgoKTm90ZTogVGhpcyBuZWVkcyBzb21lIHNvcnQg b2YgImJhbGFuY2luZyIgd2hlbiBvbmUgb2YgdGhlIHBhcnRpdGlvbnMgaXMKbXVjaCBidXNp ZXIgdGhhbiB0aGUgcmVzdCAoZS5nLiBiZWNhdXNlIHRoZXJlJ3MgYSBzaW5nbGUgYmFja2Vu ZCBjb25zdW1pbmcKYSBsb3Qgb2YgYnVmZmVycyBmcm9tIGl0KS4KCk5vdGU6IFRoZXJlJ3Mg YSBwcm9ibGVtIHdpdGggc29tZSB0ZXN0cyBydW5uaW5nIG91dCBvZiB1bnBpbm5lZCBidWZm ZXJzLApkdWUgdG8gKGludGVudGlvbmFsbHkpIHNldHRpbmcgc2hhcmVkIGJ1ZmZlcnMgdmVy eSBsb3cuIFRoYXQgaGFwcGVucwpiZWNhdXNlIFN0cmF0ZWd5R2V0QnVmZmVyKCkgb25seSBz ZWFyY2hlcyBhIHNpbmdsZSBwYXJ0aXRpb24sIGFuZCBpdApoYXMgYSBjb3VwbGUgbW9yZSBp c3N1ZXMuCi0tLQogLi4uL3BnX2J1ZmZlcmNhY2hlLS0xLjctLTEuOC5zcWwgICAgICAgICAg ICAgIHwgICA4ICstCiBjb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlX3Bh Z2VzLmMgfCAgMzIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jICAg ICAgICAgICB8IDIwMiArKysrKysrLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIv ZnJlZWxpc3QuYyAgICAgICAgIHwgMzMzICsrKysrKysrKysrKysrKystLQogc3JjL2luY2x1 ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmggICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5j bHVkZS9zdG9yYWdlL2J1Zm1nci5oICAgICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL3Rl c3QvcmVjb3ZlcnkvdC8wMjdfc3RyZWFtX3JlZ3Jlc3MucGwgICAgIHwgICA1ICsKIHNyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSArCiA4IGZp bGVzIGNoYW5nZWQsIDQ4NiBpbnNlcnRpb25zKCspLCAxMDQgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZS0tMS43LS0x Ljguc3FsIGIvY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZS0tMS43LS0x Ljguc3FsCmluZGV4IGE2ZTQ5ZmQxLi45MjE3NmZlZCAxMDA2NDQKLS0tIGEvY29udHJpYi9w Z19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZS0tMS43LS0xLjguc3FsCisrKyBiL2NvbnRy aWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGUtLTEuNy0tMS44LnNxbApAQCAtMTQs NyArMTQsMTMgQEAgQ1JFQVRFIFZJRVcgcGdfYnVmZmVyY2FjaGVfcGFydGl0aW9ucyBBUwog CSBudW1hX25vZGUgaW50ZWdlciwJCQktLSBOVU1BIG5vZGUgb2YgdGhlIHBhcnRpdGlvb24K IAkgbnVtX2J1ZmZlcnMgaW50ZWdlciwJCS0tIG51bWJlciBvZiBidWZmZXJzIGluIHRoZSBw YXJ0aXRpb24KIAkgZmlyc3RfYnVmZmVyIGludGVnZXIsCQktLSBmaXJzdCBidWZmZXIgb2Yg cGFydGl0aW9uCi0JIGxhc3RfYnVmZmVyIGludGVnZXIpOwkJLS0gbGFzdCBidWZmZXIgb2Yg cGFydGl0aW9uCisJIGxhc3RfYnVmZmVyIGludGVnZXIsCQktLSBsYXN0IGJ1ZmZlciBvZiBw YXJ0aXRpb24KKworCSAtLSBjbG9ja3N3ZWVwIGNvdW50ZXJzCisJIG51bV9wYXNzZXMgYmln aW50LAkJCS0tIGNsb2Nrc3dlZXAgcGFzc2VzCisJIG5leHRfYnVmZmVyIGludGVnZXIsCQkt LSBuZXh0IHZpY3RpbSBidWZmZXIgZm9yIGNsb2Nrc3dlZXAKKwkgdG90YWxfYWxsb2NzIGJp Z2ludCwJCS0tIGhhbmRsZWQgYWxsb2NzIChydW5uaW5nIHRvdGFsKQorCSBudW1fYWxsb2Nz IGJpZ2ludCk7CQktLSBoYW5kbGVkIGFsbG9jcyAoY3VycmVudCBjeWNsZSkKIAogLS0gRG9u J3Qgd2FudCB0aGVzZSB0byBiZSBhdmFpbGFibGUgdG8gcHVibGljLgogUkVWT0tFIEFMTCBP TiBGVU5DVElPTiBwZ19idWZmZXJjYWNoZV9wYXJ0aXRpb25zKCkgRlJPTSBQVUJMSUM7CmRp ZmYgLS1naXQgYS9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlX3BhZ2Vz LmMgYi9jb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlX3BhZ2VzLmMKaW5k ZXggNDZiNmI4NWEuLmIwN2ZhZmRhIDEwMDY0NAotLS0gYS9jb250cmliL3BnX2J1ZmZlcmNh Y2hlL3BnX2J1ZmZlcmNhY2hlX3BhZ2VzLmMKKysrIGIvY29udHJpYi9wZ19idWZmZXJjYWNo ZS9wZ19idWZmZXJjYWNoZV9wYWdlcy5jCkBAIC0zMSw3ICszMSw3IEBACiAjZGVmaW5lIE5V TV9CVUZGRVJDQUNIRV9NQVJLX0RJUlRZX0FMTF9FTEVNIDMKIAogI2RlZmluZSBOVU1fQlVG RkVSQ0FDSEVfT1NfUEFHRVNfRUxFTQkzCi0jZGVmaW5lIE5VTV9CVUZGRVJDQUNIRV9QQVJU SVRJT05TX0VMRU0JNQorI2RlZmluZSBOVU1fQlVGRkVSQ0FDSEVfUEFSVElUSU9OU19FTEVN CTkKIAogUEdfTU9EVUxFX01BR0lDX0VYVCgKIAkJCQkJLm5hbWUgPSAicGdfYnVmZmVyY2Fj aGUiLApAQCAtOTYzLDYgKzk2MywxNCBAQCBwZ19idWZmZXJjYWNoZV9wYXJ0aXRpb25zKFBH X0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQkgICBJTlQ0T0lELCAtMSwgMCk7CiAJCVR1cGxlRGVz Y0luaXRFbnRyeSh0dXBsZWRlc2MsIChBdHRyTnVtYmVyKSA1LCAibGFzdF9idWZmZXIiLAog CQkJCQkJICAgSU5UNE9JRCwgLTEsIDApOworCQlUdXBsZURlc2NJbml0RW50cnkodHVwbGVk ZXNjLCAoQXR0ck51bWJlcikgNiwgIm51bV9wYXNzZXMiLAorCQkJCQkJICAgSU5UOE9JRCwg LTEsIDApOworCQlUdXBsZURlc2NJbml0RW50cnkodHVwbGVkZXNjLCAoQXR0ck51bWJlcikg NywgIm5leHRfYnVmZmVyIiwKKwkJCQkJCSAgIElOVDRPSUQsIC0xLCAwKTsKKwkJVHVwbGVE ZXNjSW5pdEVudHJ5KHR1cGxlZGVzYywgKEF0dHJOdW1iZXIpIDgsICJ0b3RhbF9hbGxvY3Mi LAorCQkJCQkJICAgSU5UOE9JRCwgLTEsIDApOworCQlUdXBsZURlc2NJbml0RW50cnkodHVw bGVkZXNjLCAoQXR0ck51bWJlcikgOSwgIm51bV9hbGxvY3MiLAorCQkJCQkJICAgSU5UOE9J RCwgLTEsIDApOwogCiAJCWZ1bmNjdHgtPnVzZXJfZmN0eCA9IEJsZXNzVHVwbGVEZXNjKHR1 cGxlZGVzYyk7CiAKQEAgLTk4NCwxMiArOTkyLDIyIEBAIHBnX2J1ZmZlcmNhY2hlX3BhcnRp dGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJZmlyc3RfYnVmZmVyLAogCQkJCQlsYXN0 X2J1ZmZlcjsKIAorCQl1aW50NjQJCWJ1ZmZlcl90b3RhbF9hbGxvY3M7CisKKwkJdWludDMy CQljb21wbGV0ZV9wYXNzZXMsCisJCQkJCW5leHRfdmljdGltX2J1ZmZlciwKKwkJCQkJYnVm ZmVyX2FsbG9jczsKKwogCQlEYXR1bQkJdmFsdWVzW05VTV9CVUZGRVJDQUNIRV9QQVJUSVRJ T05TX0VMRU1dOwogCQlib29sCQludWxsc1tOVU1fQlVGRkVSQ0FDSEVfUEFSVElUSU9OU19F TEVNXTsKIAogCQlCdWZmZXJQYXJ0aXRpb25HZXQoaSwgJm51bWFfbm9kZSwgJm51bV9idWZm ZXJzLAogCQkJCQkJICAgJmZpcnN0X2J1ZmZlciwgJmxhc3RfYnVmZmVyKTsKIAorCQlDbG9j a1N3ZWVwUGFydGl0aW9uR2V0SW5mbyhpLAorCQkJCQkJCQkgICAmY29tcGxldGVfcGFzc2Vz LCAmbmV4dF92aWN0aW1fYnVmZmVyLAorCQkJCQkJCQkgICAmYnVmZmVyX3RvdGFsX2FsbG9j cywgJmJ1ZmZlcl9hbGxvY3MpOworCiAJCXZhbHVlc1swXSA9IEludDMyR2V0RGF0dW0oaSk7 CiAJCW51bGxzWzBdID0gZmFsc2U7CiAKQEAgLTEwMDUsNiArMTAyMywxOCBAQCBwZ19idWZm ZXJjYWNoZV9wYXJ0aXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXZhbHVlc1s0XSA9IElu dDMyR2V0RGF0dW0obGFzdF9idWZmZXIpOwogCQludWxsc1s0XSA9IGZhbHNlOwogCisJCXZh bHVlc1s1XSA9IEludDY0R2V0RGF0dW0oY29tcGxldGVfcGFzc2VzKTsKKwkJbnVsbHNbNV0g PSBmYWxzZTsKKworCQl2YWx1ZXNbNl0gPSBJbnQzMkdldERhdHVtKG5leHRfdmljdGltX2J1 ZmZlcik7CisJCW51bGxzWzZdID0gZmFsc2U7CisKKwkJdmFsdWVzWzddID0gSW50NjRHZXRE YXR1bShidWZmZXJfdG90YWxfYWxsb2NzKTsKKwkJbnVsbHNbN10gPSBmYWxzZTsKKworCQl2 YWx1ZXNbOF0gPSBJbnQ2NEdldERhdHVtKGJ1ZmZlcl9hbGxvY3MpOworCQludWxsc1s4XSA9 IGZhbHNlOworCiAJCS8qIEJ1aWxkIGFuZCByZXR1cm4gdGhlIHR1cGxlLiAqLwogCQl0dXBs ZSA9IGhlYXBfZm9ybV90dXBsZSgoVHVwbGVEZXNjKSBmdW5jY3R4LT51c2VyX2ZjdHgsIHZh bHVlcywgbnVsbHMpOwogCQlyZXN1bHQgPSBIZWFwVHVwbGVHZXREYXR1bSh0dXBsZSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IDVjODI4NjVhLi5iNThmNTlk NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKQEAgLTM4NDAsMzMgKzM4 NDAsMzQgQEAgQnVmZmVyU3luYyhpbnQgZmxhZ3MpCiB9CiAKIC8qCi0gKiBCZ0J1ZmZlclN5 bmMgLS0gV3JpdGUgb3V0IHNvbWUgZGlydHkgYnVmZmVycyBpbiB0aGUgcG9vbC4KLSAqCi0g KiBUaGlzIGlzIGNhbGxlZCBwZXJpb2RpY2FsbHkgYnkgdGhlIGJhY2tncm91bmQgd3JpdGVy IHByb2Nlc3MuCisgKiBJbmZvcm1hdGlvbiBzYXZlZCBiZXR3ZWVuIGNhbGxzIHNvIHdlIGNh biBkZXRlcm1pbmUgdGhlIHN0cmF0ZWd5IHBvaW50J3MKKyAqIGFkdmFuY2UgcmF0ZSBhbmQg YXZvaWQgc2Nhbm5pbmcgYWxyZWFkeS1jbGVhbmVkIGJ1ZmZlcnMuCiAgKgotICogUmV0dXJu cyB0cnVlIGlmIGl0J3MgYXBwcm9wcmlhdGUgZm9yIHRoZSBiZ3dyaXRlciBwcm9jZXNzIHRv IGdvIGludG8KLSAqIGxvdy1wb3dlciBoaWJlcm5hdGlvbiBtb2RlLiAgKFRoaXMgaGFwcGVu cyBpZiB0aGUgc3RyYXRlZ3kgY2xvY2stc3dlZXAKLSAqIGhhcyBiZWVuICJsYXBwZWQiIGFu ZCBubyBidWZmZXIgYWxsb2NhdGlvbnMgaGF2ZSBvY2N1cnJlZCByZWNlbnRseSwKLSAqIG9y IGlmIHRoZSBiZ3dyaXRlciBoYXMgYmVlbiBlZmZlY3RpdmVseSBkaXNhYmxlZCBieSBzZXR0 aW5nCi0gKiBiZ3dyaXRlcl9scnVfbWF4cGFnZXMgdG8gMC4pCisgKiBYWFggRG9lcyBpdCBh Y3R1YWxseSBtYWtlIHNlbnNlIHRvIHNwbGl0IGFsbCBvZiB0aGlzIGluZm9ybWF0aW9uIHBl cgorICogcGFydGl0aW9uPyBGb3IgZXhhbXBsZSwgZG9lcyBwZXItcGFydGl0aW9uIGFkdmFu Y2UgcmF0ZSBtZWFuIGFueXRoaW5nPworICogTWF5YmUgd2Ugc2hvdWxkIGhhdmUgYSBnbG9i YWwgYWR2YW5jZSByYXRlPyBBbHRob3VnaCwgaWYgd2Ugd2FudCB0bworICoga2VlcCBlbm91 Z2ggY2xlYW4gYnVmZmVycyBpbiBlYWNoIHBhcnRpdGlvbiwgbWF5YmUgaGF2aW5nIHBlci1w YXJ0aXRpb24KKyAqIHJhdGVzIG1ha2VzIHNlbnNlLgogICovCi1ib29sCi1CZ0J1ZmZlclN5 bmMoV3JpdGViYWNrQ29udGV4dCAqd2JfY29udGV4dCkKK3R5cGVkZWYgc3RydWN0IEJ1ZmZl clN5bmNQYXJ0aXRpb24KK3sKKwlpbnQJcHJldl9zdHJhdGVneV9idWZfaWQ7CisJdWludDMy IHByZXZfc3RyYXRlZ3lfcGFzc2VzOworCWludAluZXh0X3RvX2NsZWFuOworCXVpbnQzMiBu ZXh0X3Bhc3NlczsKK30gQnVmZmVyU3luY1BhcnRpdGlvbjsKKworc3RhdGljIEJ1ZmZlclN5 bmNQYXJ0aXRpb24gKnNhdmVkX2luZm8gPSBOVUxMOworc3RhdGljIGJvb2wgc2F2ZWRfaW5m b192YWxpZCA9IGZhbHNlOworCitzdGF0aWMgYm9vbAorQmdCdWZmZXJTeW5jUGFydGl0aW9u KFdyaXRlYmFja0NvbnRleHQgKndiX2NvbnRleHQsIGludCBudW1fcGFydGl0aW9ucywKKwkJ CQkJICBpbnQgcGFydGl0aW9uLCBpbnQgcmVjZW50X2FsbG9jX3BhcnRpdGlvbiwKKwkJCQkJ ICBCdWZmZXJTeW5jUGFydGl0aW9uICpzYXZlZCkKIHsKIAkvKiBpbmZvIG9idGFpbmVkIGZy b20gZnJlZWxpc3QuYyAqLwogCWludAkJCXN0cmF0ZWd5X2J1Zl9pZDsKIAl1aW50MzIJCXN0 cmF0ZWd5X3Bhc3NlczsKLQl1aW50MzIJCXJlY2VudF9hbGxvYzsKLQotCS8qCi0JICogSW5m b3JtYXRpb24gc2F2ZWQgYmV0d2VlbiBjYWxscyBzbyB3ZSBjYW4gZGV0ZXJtaW5lIHRoZSBz dHJhdGVneQotCSAqIHBvaW50J3MgYWR2YW5jZSByYXRlIGFuZCBhdm9pZCBzY2FubmluZyBh bHJlYWR5LWNsZWFuZWQgYnVmZmVycy4KLQkgKi8KLQlzdGF0aWMgYm9vbCBzYXZlZF9pbmZv X3ZhbGlkID0gZmFsc2U7Ci0Jc3RhdGljIGludAlwcmV2X3N0cmF0ZWd5X2J1Zl9pZDsKLQlz dGF0aWMgdWludDMyIHByZXZfc3RyYXRlZ3lfcGFzc2VzOwotCXN0YXRpYyBpbnQJbmV4dF90 b19jbGVhbjsKLQlzdGF0aWMgdWludDMyIG5leHRfcGFzc2VzOwogCiAJLyogTW92aW5nIGF2 ZXJhZ2VzIG9mIGFsbG9jYXRpb24gcmF0ZSBhbmQgY2xlYW4tYnVmZmVyIGRlbnNpdHkgKi8K IAlzdGF0aWMgZmxvYXQgc21vb3RoZWRfYWxsb2MgPSAwOwpAQCAtMzg5NCwyNSArMzg5NSwx NiBAQCBCZ0J1ZmZlclN5bmMoV3JpdGViYWNrQ29udGV4dCAqd2JfY29udGV4dCkKIAlsb25n CQluZXdfc3RyYXRlZ3lfZGVsdGE7CiAJdWludDMyCQluZXdfcmVjZW50X2FsbG9jOwogCisJ LyogYnVmZmVyIHJhbmdlIGZvciB0aGUgY2xvY2tzd2VlcCBwYXJ0aXRpb24gKi8KKwlpbnQJ CQlmaXJzdF9idWZmZXI7CisJaW50CQkJbnVtX2J1ZmZlcnM7CisKIAkvKgogCSAqIEZpbmQg b3V0IHdoZXJlIHRoZSBjbG9jay1zd2VlcCBjdXJyZW50bHkgaXMsIGFuZCBob3cgbWFueSBi dWZmZXIKIAkgKiBhbGxvY2F0aW9ucyBoYXZlIGhhcHBlbmVkIHNpbmNlIG91ciBsYXN0IGNh bGwuCiAJICovCi0Jc3RyYXRlZ3lfYnVmX2lkID0gU3RyYXRlZ3lTeW5jU3RhcnQoJnN0cmF0 ZWd5X3Bhc3NlcywgJnJlY2VudF9hbGxvYyk7Ci0KLQkvKiBSZXBvcnQgYnVmZmVyIGFsbG9j IGNvdW50cyB0byBwZ3N0YXQgKi8KLQlQZW5kaW5nQmdXcml0ZXJTdGF0cy5idWZfYWxsb2Mg Kz0gcmVjZW50X2FsbG9jOwotCi0JLyoKLQkgKiBJZiB3ZSdyZSBub3QgcnVubmluZyB0aGUg TFJVIHNjYW4sIGp1c3Qgc3RvcCBhZnRlciBkb2luZyB0aGUgc3RhdHMKLQkgKiBzdHVmZi4g IFdlIG1hcmsgdGhlIHNhdmVkIHN0YXRlIGludmFsaWQgc28gdGhhdCB3ZSBjYW4gcmVjb3Zl ciBzYW5lbHkKLQkgKiBpZiBMUlUgc2NhbiBpcyB0dXJuZWQgYmFjayBvbiBsYXRlci4KLQkg Ki8KLQlpZiAoYmd3cml0ZXJfbHJ1X21heHBhZ2VzIDw9IDApCi0JewotCQlzYXZlZF9pbmZv X3ZhbGlkID0gZmFsc2U7Ci0JCXJldHVybiB0cnVlOwotCX0KKwlzdHJhdGVneV9idWZfaWQg PSBTdHJhdGVneVN5bmNTdGFydChwYXJ0aXRpb24sICZzdHJhdGVneV9wYXNzZXMsCisJCQkJ CQkJCQkJJmZpcnN0X2J1ZmZlciwgJm51bV9idWZmZXJzKTsKIAogCS8qCiAJICogQ29tcHV0 ZSBzdHJhdGVneV9kZWx0YSA9IGhvdyBtYW55IGJ1ZmZlcnMgaGF2ZSBiZWVuIHNjYW5uZWQg YnkgdGhlCkBAIC0zOTI0LDE3ICszOTE2LDE3IEBAIEJnQnVmZmVyU3luYyhXcml0ZWJhY2tD b250ZXh0ICp3Yl9jb250ZXh0KQogCSAqLwogCWlmIChzYXZlZF9pbmZvX3ZhbGlkKQogCXsK LQkJaW50MzIJCXBhc3Nlc19kZWx0YSA9IHN0cmF0ZWd5X3Bhc3NlcyAtIHByZXZfc3RyYXRl Z3lfcGFzc2VzOworCQlpbnQzMgkJcGFzc2VzX2RlbHRhID0gc3RyYXRlZ3lfcGFzc2VzIC0g c2F2ZWQtPnByZXZfc3RyYXRlZ3lfcGFzc2VzOwogCi0JCXN0cmF0ZWd5X2RlbHRhID0gc3Ry YXRlZ3lfYnVmX2lkIC0gcHJldl9zdHJhdGVneV9idWZfaWQ7Ci0JCXN0cmF0ZWd5X2RlbHRh ICs9IChsb25nKSBwYXNzZXNfZGVsdGEgKiBOQnVmZmVyczsKKwkJc3RyYXRlZ3lfZGVsdGEg PSBzdHJhdGVneV9idWZfaWQgLSBzYXZlZC0+cHJldl9zdHJhdGVneV9idWZfaWQ7CisJCXN0 cmF0ZWd5X2RlbHRhICs9IChsb25nKSBwYXNzZXNfZGVsdGEgKiBudW1fYnVmZmVyczsKIAog CQlBc3NlcnQoc3RyYXRlZ3lfZGVsdGEgPj0gMCk7CiAKLQkJaWYgKChpbnQzMikgKG5leHRf cGFzc2VzIC0gc3RyYXRlZ3lfcGFzc2VzKSA+IDApCisJCWlmICgoaW50MzIpIChzYXZlZC0+ bmV4dF9wYXNzZXMgLSBzdHJhdGVneV9wYXNzZXMpID4gMCkKIAkJewogCQkJLyogd2UncmUg b25lIHBhc3MgYWhlYWQgb2YgdGhlIHN0cmF0ZWd5IHBvaW50ICovCi0JCQlidWZzX3RvX2xh cCA9IHN0cmF0ZWd5X2J1Zl9pZCAtIG5leHRfdG9fY2xlYW47CisJCQlidWZzX3RvX2xhcCA9 IHN0cmF0ZWd5X2J1Zl9pZCAtIHNhdmVkLT5uZXh0X3RvX2NsZWFuOwogI2lmZGVmIEJHV19E RUJVRwogCQkJZWxvZyhERUJVRzIsICJiZ3dyaXRlciBhaGVhZDogYmd3ICV1LSV1IHN0cmF0 ZWd5ICV1LSV1IGRlbHRhPSVsZCBsYXA9JWQiLAogCQkJCSBuZXh0X3Bhc3NlcywgbmV4dF90 b19jbGVhbiwKQEAgLTM5NDIsMTEgKzM5MzQsMTEgQEAgQmdCdWZmZXJTeW5jKFdyaXRlYmFj a0NvbnRleHQgKndiX2NvbnRleHQpCiAJCQkJIHN0cmF0ZWd5X2RlbHRhLCBidWZzX3RvX2xh cCk7CiAjZW5kaWYKIAkJfQotCQllbHNlIGlmIChuZXh0X3Bhc3NlcyA9PSBzdHJhdGVneV9w YXNzZXMgJiYKLQkJCQkgbmV4dF90b19jbGVhbiA+PSBzdHJhdGVneV9idWZfaWQpCisJCWVs c2UgaWYgKHNhdmVkLT5uZXh0X3Bhc3NlcyA9PSBzdHJhdGVneV9wYXNzZXMgJiYKKwkJCQkg c2F2ZWQtPm5leHRfdG9fY2xlYW4gPj0gc3RyYXRlZ3lfYnVmX2lkKQogCQl7CiAJCQkvKiBv biBzYW1lIHBhc3MsIGJ1dCBhaGVhZCBvciBhdCBsZWFzdCBub3QgYmVoaW5kICovCi0JCQli dWZzX3RvX2xhcCA9IE5CdWZmZXJzIC0gKG5leHRfdG9fY2xlYW4gLSBzdHJhdGVneV9idWZf aWQpOworCQkJYnVmc190b19sYXAgPSBudW1fYnVmZmVycyAtIChzYXZlZC0+bmV4dF90b19j bGVhbiAtIHN0cmF0ZWd5X2J1Zl9pZCk7CiAjaWZkZWYgQkdXX0RFQlVHCiAJCQllbG9nKERF QlVHMiwgImJnd3JpdGVyIGFoZWFkOiBiZ3cgJXUtJXUgc3RyYXRlZ3kgJXUtJXUgZGVsdGE9 JWxkIGxhcD0lZCIsCiAJCQkJIG5leHRfcGFzc2VzLCBuZXh0X3RvX2NsZWFuLApAQCAtMzk2 Niw5ICszOTU4LDkgQEAgQmdCdWZmZXJTeW5jKFdyaXRlYmFja0NvbnRleHQgKndiX2NvbnRl eHQpCiAJCQkJIHN0cmF0ZWd5X3Bhc3Nlcywgc3RyYXRlZ3lfYnVmX2lkLAogCQkJCSBzdHJh dGVneV9kZWx0YSk7CiAjZW5kaWYKLQkJCW5leHRfdG9fY2xlYW4gPSBzdHJhdGVneV9idWZf aWQ7Ci0JCQluZXh0X3Bhc3NlcyA9IHN0cmF0ZWd5X3Bhc3NlczsKLQkJCWJ1ZnNfdG9fbGFw ID0gTkJ1ZmZlcnM7CisJCQlzYXZlZC0+bmV4dF90b19jbGVhbiA9IHN0cmF0ZWd5X2J1Zl9p ZDsKKwkJCXNhdmVkLT5uZXh0X3Bhc3NlcyA9IHN0cmF0ZWd5X3Bhc3NlczsKKwkJCWJ1ZnNf dG9fbGFwID0gbnVtX2J1ZmZlcnM7CiAJCX0KIAl9CiAJZWxzZQpAQCAtMzk4MiwxNSArMzk3 NCwxNiBAQCBCZ0J1ZmZlclN5bmMoV3JpdGViYWNrQ29udGV4dCAqd2JfY29udGV4dCkKIAkJ CSBzdHJhdGVneV9wYXNzZXMsIHN0cmF0ZWd5X2J1Zl9pZCk7CiAjZW5kaWYKIAkJc3RyYXRl Z3lfZGVsdGEgPSAwOwotCQluZXh0X3RvX2NsZWFuID0gc3RyYXRlZ3lfYnVmX2lkOwotCQlu ZXh0X3Bhc3NlcyA9IHN0cmF0ZWd5X3Bhc3NlczsKLQkJYnVmc190b19sYXAgPSBOQnVmZmVy czsKKwkJc2F2ZWQtPm5leHRfdG9fY2xlYW4gPSBzdHJhdGVneV9idWZfaWQ7CisJCXNhdmVk LT5uZXh0X3Bhc3NlcyA9IHN0cmF0ZWd5X3Bhc3NlczsKKwkJYnVmc190b19sYXAgPSBudW1f YnVmZmVyczsKIAl9CiAKIAkvKiBVcGRhdGUgc2F2ZWQgaW5mbyBmb3IgbmV4dCB0aW1lICov Ci0JcHJldl9zdHJhdGVneV9idWZfaWQgPSBzdHJhdGVneV9idWZfaWQ7Ci0JcHJldl9zdHJh dGVneV9wYXNzZXMgPSBzdHJhdGVneV9wYXNzZXM7Ci0Jc2F2ZWRfaW5mb192YWxpZCA9IHRy dWU7CisJc2F2ZWQtPnByZXZfc3RyYXRlZ3lfYnVmX2lkID0gc3RyYXRlZ3lfYnVmX2lkOwor CXNhdmVkLT5wcmV2X3N0cmF0ZWd5X3Bhc3NlcyA9IHN0cmF0ZWd5X3Bhc3NlczsKKwkvKiBY WFggdGhpcyBuZWVkcyB0byBoYXBwZW4gb25seSBhZnRlciBhbGwgcGFydGl0aW9ucyAqLwor CS8qIHNhdmVkX2luZm9fdmFsaWQgPSB0cnVlOyAqLwogCiAJLyoKIAkgKiBDb21wdXRlIGhv dyBtYW55IGJ1ZmZlcnMgaGFkIHRvIGJlIHNjYW5uZWQgZm9yIGVhY2ggbmV3IGFsbG9jYXRp b24sIGllLApAQCAtMzk5OCw5ICszOTkxLDkgQEAgQmdCdWZmZXJTeW5jKFdyaXRlYmFja0Nv bnRleHQgKndiX2NvbnRleHQpCiAJICoKIAkgKiBJZiB0aGUgc3RyYXRlZ3kgcG9pbnQgZGlk bid0IG1vdmUsIHdlIGRvbid0IHVwZGF0ZSB0aGUgZGVuc2l0eSBlc3RpbWF0ZQogCSAqLwot CWlmIChzdHJhdGVneV9kZWx0YSA+IDAgJiYgcmVjZW50X2FsbG9jID4gMCkKKwlpZiAoc3Ry YXRlZ3lfZGVsdGEgPiAwICYmIHJlY2VudF9hbGxvY19wYXJ0aXRpb24gPiAwKQogCXsKLQkJ c2NhbnNfcGVyX2FsbG9jID0gKGZsb2F0KSBzdHJhdGVneV9kZWx0YSAvIChmbG9hdCkgcmVj ZW50X2FsbG9jOworCQlzY2Fuc19wZXJfYWxsb2MgPSAoZmxvYXQpIHN0cmF0ZWd5X2RlbHRh IC8gKGZsb2F0KSByZWNlbnRfYWxsb2NfcGFydGl0aW9uOwogCQlzbW9vdGhlZF9kZW5zaXR5 ICs9IChzY2Fuc19wZXJfYWxsb2MgLSBzbW9vdGhlZF9kZW5zaXR5KSAvCiAJCQlzbW9vdGhp bmdfc2FtcGxlczsKIAl9CkBAIC00MDEwLDcgKzQwMDMsNyBAQCBCZ0J1ZmZlclN5bmMoV3Jp dGViYWNrQ29udGV4dCAqd2JfY29udGV4dCkKIAkgKiBzdHJhdGVneSBwb2ludCBhbmQgd2hl cmUgd2UndmUgc2Nhbm5lZCBhaGVhZCB0bywgYmFzZWQgb24gdGhlIHNtb290aGVkCiAJICog ZGVuc2l0eSBlc3RpbWF0ZS4KIAkgKi8KLQlidWZzX2FoZWFkID0gTkJ1ZmZlcnMgLSBidWZz X3RvX2xhcDsKKwlidWZzX2FoZWFkID0gbnVtX2J1ZmZlcnMgLSBidWZzX3RvX2xhcDsKIAly ZXVzYWJsZV9idWZmZXJzX2VzdCA9IChmbG9hdCkgYnVmc19haGVhZCAvIHNtb290aGVkX2Rl bnNpdHk7CiAKIAkvKgpAQCAtNDAxOCwxMCArNDAxMSwxMCBAQCBCZ0J1ZmZlclN5bmMoV3Jp dGViYWNrQ29udGV4dCAqd2JfY29udGV4dCkKIAkgKiBhIHRydWUgYXZlcmFnZSB3ZSB3YW50 IGEgZmFzdC1hdHRhY2ssIHNsb3ctZGVjbGluZSBiZWhhdmlvcjogd2UKIAkgKiBpbW1lZGlh dGVseSBmb2xsb3cgYW55IGluY3JlYXNlLgogCSAqLwotCWlmIChzbW9vdGhlZF9hbGxvYyA8 PSAoZmxvYXQpIHJlY2VudF9hbGxvYykKLQkJc21vb3RoZWRfYWxsb2MgPSByZWNlbnRfYWxs b2M7CisJaWYgKHNtb290aGVkX2FsbG9jIDw9IChmbG9hdCkgcmVjZW50X2FsbG9jX3BhcnRp dGlvbikKKwkJc21vb3RoZWRfYWxsb2MgPSByZWNlbnRfYWxsb2NfcGFydGl0aW9uOwogCWVs c2UKLQkJc21vb3RoZWRfYWxsb2MgKz0gKChmbG9hdCkgcmVjZW50X2FsbG9jIC0gc21vb3Ro ZWRfYWxsb2MpIC8KKwkJc21vb3RoZWRfYWxsb2MgKz0gKChmbG9hdCkgcmVjZW50X2FsbG9j X3BhcnRpdGlvbiAtIHNtb290aGVkX2FsbG9jKSAvCiAJCQlzbW9vdGhpbmdfc2FtcGxlczsK IAogCS8qIFNjYWxlIHRoZSBlc3RpbWF0ZSBieSBhIEdVQyB0byBhbGxvdyBtb3JlIGFnZ3Jl c3NpdmUgdHVuaW5nLiAqLwpAQCAtNDA0OCw3ICs0MDQxLDcgQEAgQmdCdWZmZXJTeW5jKFdy aXRlYmFja0NvbnRleHQgKndiX2NvbnRleHQpCiAJICogdGhlIEJHVyB3aWxsIGJlIGNhbGxl ZCBkdXJpbmcgdGhlIHNjYW5fd2hvbGVfcG9vbCB0aW1lOyBzbGljZSB0aGUKIAkgKiBidWZm ZXIgcG9vbCBpbnRvIHRoYXQgbWFueSBzZWN0aW9ucy4KIAkgKi8KLQltaW5fc2Nhbl9idWZm ZXJzID0gKGludCkgKE5CdWZmZXJzIC8gKHNjYW5fd2hvbGVfcG9vbF9taWxsaXNlY29uZHMg LyBCZ1dyaXRlckRlbGF5KSk7CisJbWluX3NjYW5fYnVmZmVycyA9IChpbnQpIChudW1fYnVm ZmVycyAvIChzY2FuX3dob2xlX3Bvb2xfbWlsbGlzZWNvbmRzIC8gQmdXcml0ZXJEZWxheSkp OwogCiAJaWYgKHVwY29taW5nX2FsbG9jX2VzdCA8IChtaW5fc2Nhbl9idWZmZXJzICsgcmV1 c2FibGVfYnVmZmVyc19lc3QpKQogCXsKQEAgLTQwNzMsMjAgKzQwNjYsMjAgQEAgQmdCdWZm ZXJTeW5jKFdyaXRlYmFja0NvbnRleHQgKndiX2NvbnRleHQpCiAJLyogRXhlY3V0ZSB0aGUg TFJVIHNjYW4gKi8KIAl3aGlsZSAobnVtX3RvX3NjYW4gPiAwICYmIHJldXNhYmxlX2J1ZmZl cnMgPCB1cGNvbWluZ19hbGxvY19lc3QpCiAJewotCQlpbnQJCQlzeW5jX3N0YXRlID0gU3lu Y09uZUJ1ZmZlcihuZXh0X3RvX2NsZWFuLCB0cnVlLAorCQlpbnQJCQlzeW5jX3N0YXRlID0g U3luY09uZUJ1ZmZlcihzYXZlZC0+bmV4dF90b19jbGVhbiwgdHJ1ZSwKIAkJCQkJCQkJCQkJ ICAgd2JfY29udGV4dCk7CiAKLQkJaWYgKCsrbmV4dF90b19jbGVhbiA+PSBOQnVmZmVycykK KwkJaWYgKCsrc2F2ZWQtPm5leHRfdG9fY2xlYW4gPj0gKGZpcnN0X2J1ZmZlciArIG51bV9i dWZmZXJzKSkKIAkJewotCQkJbmV4dF90b19jbGVhbiA9IDA7Ci0JCQluZXh0X3Bhc3Nlcysr OworCQkJc2F2ZWQtPm5leHRfdG9fY2xlYW4gPSBmaXJzdF9idWZmZXI7CisJCQlzYXZlZC0+ bmV4dF9wYXNzZXMrKzsKIAkJfQogCQludW1fdG9fc2Nhbi0tOwogCiAJCWlmIChzeW5jX3N0 YXRlICYgQlVGX1dSSVRURU4pCiAJCXsKIAkJCXJldXNhYmxlX2J1ZmZlcnMrKzsKLQkJCWlm ICgrK251bV93cml0dGVuID49IGJnd3JpdGVyX2xydV9tYXhwYWdlcykKKwkJCWlmICgrK251 bV93cml0dGVuID49IChiZ3dyaXRlcl9scnVfbWF4cGFnZXMgLyBudW1fcGFydGl0aW9ucykp CiAJCQl7CiAJCQkJUGVuZGluZ0JnV3JpdGVyU3RhdHMubWF4d3JpdHRlbl9jbGVhbisrOwog CQkJCWJyZWFrOwpAQCAtNDEwMCw3ICs0MDkzLDcgQEAgQmdCdWZmZXJTeW5jKFdyaXRlYmFj a0NvbnRleHQgKndiX2NvbnRleHQpCiAKICNpZmRlZiBCR1dfREVCVUcKIAllbG9nKERFQlVH MSwgImJnd3JpdGVyOiByZWNlbnRfYWxsb2M9JXUgc21vb3RoZWQ9JS4yZiBkZWx0YT0lbGQg YWhlYWQ9JWQgZGVuc2l0eT0lLjJmIHJldXNhYmxlX2VzdD0lZCB1cGNvbWluZ19lc3Q9JWQg c2Nhbm5lZD0lZCB3cm90ZT0lZCByZXVzYWJsZT0lZCIsCi0JCSByZWNlbnRfYWxsb2MsIHNt b290aGVkX2FsbG9jLCBzdHJhdGVneV9kZWx0YSwgYnVmc19haGVhZCwKKwkJIHJlY2VudF9h bGxvY19wYXJ0aXRpb24sIHNtb290aGVkX2FsbG9jLCBzdHJhdGVneV9kZWx0YSwgYnVmc19h aGVhZCwKIAkJIHNtb290aGVkX2RlbnNpdHksIHJldXNhYmxlX2J1ZmZlcnNfZXN0LCB1cGNv bWluZ19hbGxvY19lc3QsCiAJCSBidWZzX3RvX2xhcCAtIG51bV90b19zY2FuLAogCQkgbnVt X3dyaXR0ZW4sCkBAIC00MTMwLDggKzQxMjMsODMgQEAgQmdCdWZmZXJTeW5jKFdyaXRlYmFj a0NvbnRleHQgKndiX2NvbnRleHQpCiAjZW5kaWYKIAl9CiAKKwkvKiBjYW4gdGhpcyBwYXJ0 aXRpb24gaGliZXJuYXRlICovCisJcmV0dXJuIChidWZzX3RvX2xhcCA9PSAwICYmIHJlY2Vu dF9hbGxvY19wYXJ0aXRpb24gPT0gMCk7Cit9CisKKy8qCisgKiBCZ0J1ZmZlclN5bmMgLS0g V3JpdGUgb3V0IHNvbWUgZGlydHkgYnVmZmVycyBpbiB0aGUgcG9vbC4KKyAqCisgKiBUaGlz IGlzIGNhbGxlZCBwZXJpb2RpY2FsbHkgYnkgdGhlIGJhY2tncm91bmQgd3JpdGVyIHByb2Nl c3MuCisgKgorICogUmV0dXJucyB0cnVlIGlmIGl0J3MgYXBwcm9wcmlhdGUgZm9yIHRoZSBi Z3dyaXRlciBwcm9jZXNzIHRvIGdvIGludG8KKyAqIGxvdy1wb3dlciBoaWJlcm5hdGlvbiBt b2RlLiAgKFRoaXMgaGFwcGVucyBpZiB0aGUgc3RyYXRlZ3kgY2xvY2stc3dlZXAKKyAqIGhh cyBiZWVuICJsYXBwZWQiIGFuZCBubyBidWZmZXIgYWxsb2NhdGlvbnMgaGF2ZSBvY2N1cnJl ZCByZWNlbnRseSwKKyAqIG9yIGlmIHRoZSBiZ3dyaXRlciBoYXMgYmVlbiBlZmZlY3RpdmVs eSBkaXNhYmxlZCBieSBzZXR0aW5nCisgKiBiZ3dyaXRlcl9scnVfbWF4cGFnZXMgdG8gMC4p CisgKi8KK2Jvb2wKK0JnQnVmZmVyU3luYyhXcml0ZWJhY2tDb250ZXh0ICp3Yl9jb250ZXh0 KQoreworCS8qIGluZm8gb2J0YWluZWQgZnJvbSBmcmVlbGlzdC5jICovCisJdWludDMyCQly ZWNlbnRfYWxsb2M7CisJdWludDMyCQlyZWNlbnRfYWxsb2NfcGFydGl0aW9uOworCWludAkJ CW51bV9wYXJ0aXRpb25zOworCisJLyogYXNzdW1lIHdlIGNhbiBoaWJlcm5hdGUsIGFueSBw YXJ0aXRpb24gY2FuIHNldCB0byBmYWxzZSAqLworCWJvb2wJCWhpYmVybmF0ZSA9IHRydWU7 CisKKwkvKiBnZXQgdGhlIG51bWJlciBvZiBjbG9ja3N3ZWVwIHBhcnRpdGlvbnMsIGFuZCB0 b3RhbCBhbGxvYyBjb3VudCAqLworCVN0cmF0ZWd5U3luY1ByZXBhcmUoJm51bV9wYXJ0aXRp b25zLCAmcmVjZW50X2FsbG9jKTsKKworCS8qIGFsbG9jYXRlIHNwYWNlIGZvciBwZXItcGFy dGl0aW9uIGluZm9ybWF0aW9uIGJldHdlZW4gY2FsbHMgKi8KKwlpZiAoc2F2ZWRfaW5mbyA9 PSBOVUxMKQorCXsKKwkJLyoKKwkJICogWFhYIE5vdCBncmVhdCBpdCdzIHVzaW5nIG1hbGxv YygpLCBidXQgaG93IGVsc2UgdG8gYWxsb2NhdGUgYQorCQkgKiB2YXJpYWJsZS1sZW5ndGgg YXJyYXk/CisJCSAqLworCQlzYXZlZF9pbmZvID0gbWFsbG9jKHNpemVvZihCdWZmZXJTeW5j UGFydGl0aW9uKSAqIG51bV9wYXJ0aXRpb25zKTsKKwl9CisKKwkvKiBSZXBvcnQgYnVmZmVy IGFsbG9jIGNvdW50cyB0byBwZ3N0YXQgKi8KKwlQZW5kaW5nQmdXcml0ZXJTdGF0cy5idWZf YWxsb2MgKz0gcmVjZW50X2FsbG9jOworCisJLyogYXZlcmFnZSBhbGxvYyBidWZmZXJzIHBl ciBwYXJ0aXRpb24gKi8KKwlyZWNlbnRfYWxsb2NfcGFydGl0aW9uID0gKHJlY2VudF9hbGxv YyAvIG51bV9wYXJ0aXRpb25zKTsKKworCS8qCisJICogSWYgd2UncmUgbm90IHJ1bm5pbmcg dGhlIExSVSBzY2FuLCBqdXN0IHN0b3AgYWZ0ZXIgZG9pbmcgdGhlIHN0YXRzCisJICogc3R1 ZmYuICBXZSBtYXJrIHRoZSBzYXZlZCBzdGF0ZSBpbnZhbGlkIHNvIHRoYXQgd2UgY2FuIHJl Y292ZXIgc2FuZWx5CisJICogaWYgTFJVIHNjYW4gaXMgdHVybmVkIGJhY2sgb24gbGF0ZXIu CisJICovCisJaWYgKGJnd3JpdGVyX2xydV9tYXhwYWdlcyA8PSAwKQorCXsKKwkJc2F2ZWRf aW5mb192YWxpZCA9IGZhbHNlOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkvKgorCSAqIG5v dyBwcm9jZXNzIHRoZSBjbG9ja3N3ZWVwIHBhcnRpdGlvbnMsIG9uZSBieSBvbmUsIHVzaW5n IHRoZSBzYW1lCisJICogY2xlYW51cCB0aGF0IHdlIHVzZWQgZm9yIGFsbCBidWZmZXJzCisJ ICoKKwkgKiBYWFggTWF5YmUgd2Ugc2hvdWxkIHJhbmRvbWl6ZSB0aGUgb3JkZXIgb2YgcGFy dGl0aW9ucyBhIGJpdCwgc28gdGhhdCB3ZQorCSAqIGRvbid0IHN0YXJ0IGZyb20gcGFydGl0 aW9uIDAgYWxsIHRoZSB0aW1lPyBQZXJoYXBzIG5vdCBlbnRpcmVseSwgYnV0IGF0CisJICog bGVhc3QgcGljayBhIHJhbmRvbSBzdGFydGluZyBwb2ludD8KKwkgKi8KKwlmb3IgKGludCBw YXJ0aXRpb24gPSAwOyBwYXJ0aXRpb24gPCBudW1fcGFydGl0aW9uczsgcGFydGl0aW9uKysp CisJeworCQkvKiBoaWJlcm5hdGUgaWYgYWxsIHBhcnRpdGlvbnMgY2FuIGhpYmVybmF0ZSAq LworCQloaWJlcm5hdGUgJj0gQmdCdWZmZXJTeW5jUGFydGl0aW9uKHdiX2NvbnRleHQsIG51 bV9wYXJ0aXRpb25zLAorCQkJCQkJCQkJCSAgIHBhcnRpdGlvbiwgcmVjZW50X2FsbG9jX3Bh cnRpdGlvbiwKKwkJCQkJCQkJCQkgICAmc2F2ZWRfaW5mb1twYXJ0aXRpb25dKTsKKwl9CisK KwkvKiBub3cgdGhhdCB3ZSd2ZSBzY2FubmVkIGFsbCBwYXJ0aXRpb25zLCBtYXJrIHRoZSBj YWNoZWQgaW5mbyBhcyB2YWxpZCAqLworCXNhdmVkX2luZm9fdmFsaWQgPSB0cnVlOworCiAJ LyogUmV0dXJuIHRydWUgaWYgT0sgdG8gaGliZXJuYXRlICovCi0JcmV0dXJuIChidWZzX3Rv X2xhcCA9PSAwICYmIHJlY2VudF9hbGxvYyA9PSAwKTsKKwlyZXR1cm4gaGliZXJuYXRlOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxp c3QuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKaW5kZXggNTNl ZjUyMzkuLjJkNTY1Nzk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZl ci9mcmVlbGlzdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0 LmMKQEAgLTM2LDE3ICszNiwyOCBAQAogCiAKIC8qCi0gKiBUaGUgc2hhcmVkIGZyZWVsaXN0 IGNvbnRyb2wgaW5mb3JtYXRpb24uCisgKiBJbmZvcm1hdGlvbiBhYm91dCBvbmUgcGFydGl0 aW9uIG9mIHRoZSBDbG9ja1N3ZWVwIChvbiBhIHN1YnNldCBvZiBidWZmZXJzKS4KKyAqCisg KiBYWFggU2hvdWxkIGJlIGNhcmVmdWwgdG8gYWxpZ24gdGhpcyB0byBjYWNoZWxpbmVzLCBl dGMuCiAgKi8KIHR5cGVkZWYgc3RydWN0CiB7CiAJLyogU3BpbmxvY2s6IHByb3RlY3RzIHRo ZSB2YWx1ZXMgYmVsb3cgKi8KLQlzbG9ja190CQlidWZmZXJfc3RyYXRlZ3lfbG9jazsKKwlz bG9ja190CQljbG9ja19zd2VlcF9sb2NrOworCisJLyogcmFuZ2UgZm9yIHRoaXMgY2xvY2sg c3dlZXAgcGFydGl0aW9uICovCisJaW50MzIJCW5vZGU7CisJaW50MzIJCWZpcnN0QnVmZmVy OworCWludDMyCQludW1CdWZmZXJzOwogCiAJLyoKIAkgKiBjbG9jay1zd2VlcCBoYW5kOiBp bmRleCBvZiBuZXh0IGJ1ZmZlciB0byBjb25zaWRlciBncmFiYmluZy4gTm90ZSB0aGF0CiAJ ICogdGhpcyBpc24ndCBhIGNvbmNyZXRlIGJ1ZmZlciAtIHdlIG9ubHkgZXZlciBpbmNyZWFz ZSB0aGUgdmFsdWUuIFNvLCB0bwogCSAqIGdldCBhbiBhY3R1YWwgYnVmZmVyLCBpdCBuZWVk cyB0byBiZSB1c2VkIG1vZHVsbyBOQnVmZmVycy4KKwkgKgorCSAqIFhYWCBUaGlzIGlzIHJl bGF0aXZlIHRvIGZpcnN0QnVmZmVyLCBzbyBuZWVkcyB0byBiZSBvZmZzZXQgcHJvcGVybHku CisJICoKKwkgKiBYWFggZmlyc3RCdWZmZXIgKyAobmV4dFZpY3RpbUJ1ZmZlciAlIG51bUJ1 ZmZlcnMpCiAJICovCiAJcGdfYXRvbWljX3VpbnQzMiBuZXh0VmljdGltQnVmZmVyOwogCkBA IC01NywxMSArNjgsMzIgQEAgdHlwZWRlZiBzdHJ1Y3QKIAl1aW50MzIJCWNvbXBsZXRlUGFz c2VzOyAvKiBDb21wbGV0ZSBjeWNsZXMgb2YgdGhlIGNsb2NrLXN3ZWVwICovCiAJcGdfYXRv bWljX3VpbnQzMiBudW1CdWZmZXJBbGxvY3M7CS8qIEJ1ZmZlcnMgYWxsb2NhdGVkIHNpbmNl IGxhc3QgcmVzZXQgKi8KIAorCS8qIHJ1bm5pbmcgdG90YWwgb2YgYWxsb2NzICovCisJcGdf YXRvbWljX3VpbnQ2NCBudW1Ub3RhbEFsbG9jczsKKworfSBDbG9ja1N3ZWVwOworCisvKgor ICogVGhlIHNoYXJlZCBmcmVlbGlzdCBjb250cm9sIGluZm9ybWF0aW9uLgorICovCit0eXBl ZGVmIHN0cnVjdAoreworCS8qIFNwaW5sb2NrOiBwcm90ZWN0cyB0aGUgdmFsdWVzIGJlbG93 ICovCisJc2xvY2tfdAkJYnVmZmVyX3N0cmF0ZWd5X2xvY2s7CisKIAkvKgogCSAqIEJnd29y a2VyIHByb2Nlc3MgdG8gYmUgbm90aWZpZWQgdXBvbiBhY3Rpdml0eSBvciAtMSBpZiBub25l LiBTZWUKIAkgKiBTdHJhdGVneU5vdGlmeUJnV3JpdGVyLgogCSAqLwogCWludAkJCWJnd3By b2NubzsKKworCS8qIGNhY2hlZCBpbmZvIGFib3V0IGZyZWVsaXN0IHBhcnRpdGlvbmluZyAq LworCWludAkJCW51bV9ub2RlczsKKwlpbnQJCQludW1fcGFydGl0aW9uczsKKwlpbnQJCQlu dW1fcGFydGl0aW9uc19wZXJfbm9kZTsKKworCS8qIGNsb2Nrc3dlZXAgcGFydGl0aW9ucyAq LworCUNsb2NrU3dlZXAJc3dlZXBzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CiB9IEJ1ZmZl clN0cmF0ZWd5Q29udHJvbDsKIAogLyogUG9pbnRlcnMgdG8gc2hhcmVkIHN0YXRlICovCkBA IC0xMDgsNiArMTQwLDcgQEAgc3RhdGljIEJ1ZmZlckRlc2MgKkdldEJ1ZmZlckZyb21SaW5n KEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LAogCQkJCQkJCQkJIHVpbnQ2NCAqYnVm X3N0YXRlKTsKIHN0YXRpYyB2b2lkIEFkZEJ1ZmZlclRvUmluZyhCdWZmZXJBY2Nlc3NTdHJh dGVneSBzdHJhdGVneSwKIAkJCQkJCQlCdWZmZXJEZXNjICpidWYpOworc3RhdGljIENsb2Nr U3dlZXAgKkNob29zZUNsb2NrU3dlZXAodm9pZCk7CiAKIC8qCiAgKiBDbG9ja1N3ZWVwVGlj ayAtIEhlbHBlciByb3V0aW5lIGZvciBTdHJhdGVneUdldEJ1ZmZlcigpCkBAIC0xMTksNiAr MTUyLDcgQEAgc3RhdGljIGlubGluZSB1aW50MzIKIENsb2NrU3dlZXBUaWNrKHZvaWQpCiB7 CiAJdWludDMyCQl2aWN0aW07CisJQ2xvY2tTd2VlcCAqc3dlZXAgPSBDaG9vc2VDbG9ja1N3 ZWVwKCk7CiAKIAkvKgogCSAqIEF0b21pY2FsbHkgbW92ZSBoYW5kIGFoZWFkIG9uZSBidWZm ZXIgLSBpZiB0aGVyZSdzIHNldmVyYWwgcHJvY2Vzc2VzCkBAIC0xMjYsMTQgKzE2MCwxNCBA QCBDbG9ja1N3ZWVwVGljayh2b2lkKQogCSAqIGFwcGFyZW50IG9yZGVyLgogCSAqLwogCXZp Y3RpbSA9Ci0JCXBnX2F0b21pY19mZXRjaF9hZGRfdTMyKCZTdHJhdGVneUNvbnRyb2wtPm5l eHRWaWN0aW1CdWZmZXIsIDEpOworCQlwZ19hdG9taWNfZmV0Y2hfYWRkX3UzMigmc3dlZXAt Pm5leHRWaWN0aW1CdWZmZXIsIDEpOwogCi0JaWYgKHZpY3RpbSA+PSBOQnVmZmVycykKKwlp ZiAodmljdGltID49IHN3ZWVwLT5udW1CdWZmZXJzKQogCXsKIAkJdWludDMyCQlvcmlnaW5h bFZpY3RpbSA9IHZpY3RpbTsKIAogCQkvKiBhbHdheXMgd3JhcCB3aGF0IHdlIGxvb2sgdXAg aW4gQnVmZmVyRGVzY3JpcHRvcnMgKi8KLQkJdmljdGltID0gdmljdGltICUgTkJ1ZmZlcnM7 CisJCXZpY3RpbSA9IHZpY3RpbSAlIHN3ZWVwLT5udW1CdWZmZXJzOwogCiAJCS8qCiAJCSAq IElmIHdlJ3JlIHRoZSBvbmUgdGhhdCBqdXN0IGNhdXNlZCBhIHdyYXBhcm91bmQsIGZvcmNl CkBAIC0xNTksMTkgKzE5MywxMTggQEAgQ2xvY2tTd2VlcFRpY2sodm9pZCkKIAkJCQkgKiBj b3VsZCBsZWFkIHRvIGFuIG92ZXJmbG93IG9mIG5leHRWaWN0aW1CdWZmZXJzLCBidXQgdGhh dCdzCiAJCQkJICogaGlnaGx5IHVubGlrZWx5IGFuZCB3b3VsZG4ndCBiZSBwYXJ0aWN1bGFy bHkgaGFybWZ1bC4KIAkJCQkgKi8KLQkJCQlTcGluTG9ja0FjcXVpcmUoJlN0cmF0ZWd5Q29u dHJvbC0+YnVmZmVyX3N0cmF0ZWd5X2xvY2spOworCQkJCVNwaW5Mb2NrQWNxdWlyZSgmc3dl ZXAtPmNsb2NrX3N3ZWVwX2xvY2spOwogCi0JCQkJd3JhcHBlZCA9IGV4cGVjdGVkICUgTkJ1 ZmZlcnM7CisJCQkJd3JhcHBlZCA9IGV4cGVjdGVkICUgc3dlZXAtPm51bUJ1ZmZlcnM7CiAK LQkJCQlzdWNjZXNzID0gcGdfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfdTMyKCZTdHJhdGVn eUNvbnRyb2wtPm5leHRWaWN0aW1CdWZmZXIsCisJCQkJc3VjY2VzcyA9IHBnX2F0b21pY19j b21wYXJlX2V4Y2hhbmdlX3UzMigmc3dlZXAtPm5leHRWaWN0aW1CdWZmZXIsCiAJCQkJCQkJ CQkJCQkJCSAmZXhwZWN0ZWQsIHdyYXBwZWQpOwogCQkJCWlmIChzdWNjZXNzKQotCQkJCQlT dHJhdGVneUNvbnRyb2wtPmNvbXBsZXRlUGFzc2VzKys7Ci0JCQkJU3BpbkxvY2tSZWxlYXNl KCZTdHJhdGVneUNvbnRyb2wtPmJ1ZmZlcl9zdHJhdGVneV9sb2NrKTsKKwkJCQkJc3dlZXAt PmNvbXBsZXRlUGFzc2VzKys7CisJCQkJU3BpbkxvY2tSZWxlYXNlKCZzd2VlcC0+Y2xvY2tf c3dlZXBfbG9jayk7CiAJCQl9CiAJCX0KIAl9Ci0JcmV0dXJuIHZpY3RpbTsKKworCS8qCisJ ICogTWFrZSBzdXJlIHdlJ3ZlIGNhbGN1bGF0ZWQgYSBidWZmZXIgaW4gdGhlIHJhbmdlIG9m IHRoZSBwYXJ0aXRpb24uIEJ1ZmZlcgorCSAqIElEcyBhcmUgMS1iYXNlZCwgd2UncmUgY2Fs Y3VsYXRpbmcgMC1iYXNlZCBpbmRleGVzLgorCSAqLworCUFzc2VydCgodmljdGltID49IDAp ICYmICh2aWN0aW0gPCBzd2VlcC0+bnVtQnVmZmVycykpOworCUFzc2VydChCdWZmZXJJc1Zh bGlkKDEgKyBzd2VlcC0+Zmlyc3RCdWZmZXIgKyB2aWN0aW0pKTsKKworCXJldHVybiBzd2Vl cC0+Zmlyc3RCdWZmZXIgKyB2aWN0aW07Cit9CisKKy8qCisgKiBDbG9ja1N3ZWVwUGFydGl0 aW9uSW5kZXgKKyAqCQlwaWNrIHRoZSBjbG9jay1zd2VlcCBwYXJ0aXRpb24gdG8gdXNlIGJh c2VkIG9uIFBJRCBhbmQgTlVNQSBub2RlCisgKgorICogV2l0aCBsaWJudW1hLCB1c2UgdGhl IE5VTUEgbm9kZSBhbmQgUElEIHRvIHBpY2sgdGhlIHBhcnRpdGlvbi4gT3RoZXJ3aXNlCisg KiB1c2UganVzdCBQSUQgKGFzIGlmIHRoZXJlJ3MgYSBzaW5nbGUgTlVNQSBub2RlKS4KKyAq CisgKiBYWFggVGhpcyBzaG91bGQgYWxzbyBjaGVjayBpZiBidWZmZXJzIGFyZSBOVU1BLXBh cnRpdGlvbmVkLCBub3QganVzdCBpZgorICogY29tcGlsZWQgd2l0aCBsaWJudW1hLgorICov CitzdGF0aWMgaW50CitDbG9ja1N3ZWVwUGFydGl0aW9uSW5kZXgodm9pZCkKK3sKKwlpbnQJ CW5vZGUgPSAwLAorCQkJaW5kZXg7CisJcGlkX3QJcGlkID0gTXlQcm9jUGlkOzsKKworCUFz c2VydChTdHJhdGVneUNvbnRyb2wtPm51bV9wYXJ0aXRpb25zID09CisJCSAgIChTdHJhdGVn eUNvbnRyb2wtPm51bV9ub2RlcyAqIFN0cmF0ZWd5Q29udHJvbC0+bnVtX3BhcnRpdGlvbnNf cGVyX25vZGUpKTsKKworCS8qCisJICogSWYgYnVmZmVycyBhcmUgTlVNQS1wYXJ0aXRpb25l ZCwgZGV0ZXJtaW5lIHRoZSBwYXJ0aXRpb24gdXNpbmcgdGhlIE5VTUEKKwkgKiBub2RlIGFu ZCBQSUQuIFdpdGhvdXQgTlVNQSBhc3N1bWUgZXZlcnl0aGluZyBpcyBhIHNpbmdsZSBOVU1B IG5vZGUgMCwgYW5kCisJICogd2UgcGljayB0aGUgcGFydGl0aW9uIGJhc2VkIG9uIFBJRC4K KwkgKi8KKyNpZmRlZiBVU0VfTElCTlVNQQorCWlmIChzaGFyZWRfYnVmZmVyc19udW1hKQor CXsKKwkJaW50CQljcHU7CisKKwkJLyogWFhYIGRvIHdlIG5lZWQgdG8gY2hlY2sgc2NoZWRf Z2V0Y3B1IGlzIGF2YWlsYWJsZSwgc29tZWhvdz8gKi8KKwkJaWYgKChjcHUgPSBzY2hlZF9n ZXRjcHUoKSkgPCAwKQorCQkJZWxvZyhFUlJPUiwgInNjaGVkX2dldGNwdSBmYWlsZWQ6ICVt Iik7CisKKwkJbm9kZSA9IG51bWFfbm9kZV9vZl9jcHUoY3B1KTsKKwl9CisjZW5kaWYKKwor CS8qCisJICogV2Ugc2hvdWxkJ3QgZ2V0IHVuZXhwZWN0ZWQgTlVNQSBub2Rlcywgbm90IGNv bnNpZGVyZWQgd2hlbiBzZXR0aW5nIHVwIHRoZQorCSAqIGJ1ZmZlciBwYXJ0aXRpb25zLiBJ dCBjb3VsZCBoYXBwZW4gaWYgdGhlIGFsbG93ZWQgTlVNQSBub2RlcyBnZXQgYWRqdXN0ZWQK KwkgKiBhdCBydW50aW1lLCBidXQgYXQgdGhpcyBwb2ludCB3ZSBqdXN0IGNyZWF0ZSBwYXJ0 aXRpb25zIGZvciBhbGwgZXhpc3RpbmcKKwkgKiBub2Rlcy4gV2UgY291bGQgcGxhbiBmb3Ig YWxsb3dlZCBwYXJ0aXRpb25zLCBidXQgdGhlbiB3aGF0IGlmIHRob3NlIGdldAorCSAqIGRp c2FibGVkLCBhbmQgdGhlIHVzZXIgYWxsb3dzIHNvbWUgb3RoZXIgcGFydGl0aW9ucz8KKwkg Ki8KKwlpZiAoKG5vZGUgPCAwKSB8fCAobm9kZSA+IFN0cmF0ZWd5Q29udHJvbC0+bnVtX25v ZGVzKSkKKwkJZWxvZyhFUlJPUiwgIm5vZGUgb3V0IG9mIHJhbmdlOiAlZCA+ICV1Iiwgbm9k ZSwgU3RyYXRlZ3lDb250cm9sLT5udW1fbm9kZXMpOworCisJLyoKKwkgKiBDYWxjdWxhdGUg dGhlIHBhcnRpdGlvbiBpbmRleC4gTm9kZXMgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgcGFy dGl0aW9ucywKKwkgKiBhbmQgd2UgdXNlIHRoZSBQSUQgdG8gcGljayBvbmUgb2YgdGhvc2Ug KGZvciBhIGdpdmVuIG5vZGUpLiBJZiB0aGVyZSdzCisJICogb25seSBhIHNpbmdsZSBwYXJ0 aXRpb24gcGVyIG5vZGUsIHdlIGNhbiBpZ25vcmUgUElEIGFuZCB1c2Ugbm9kZSBkaXJlY3Rs eS4KKwkgKi8KKwlpZiAoU3RyYXRlZ3lDb250cm9sLT5udW1fcGFydGl0aW9uc19wZXJfbm9k ZSA9PSAxKQorCXsKKwkJLyogZmFzdC1wYXRoICovCisJCWluZGV4ID0gbm9kZTsKKwl9CisJ ZWxzZQorCXsKKwkJLyogdXNlIFBJRCB0byBwaWNrIG9uZSBvZiBub2RlJ3MgcGFydGl0aW9u cyAqLworCQlpbmRleCA9IChub2RlICogU3RyYXRlZ3lDb250cm9sLT5udW1fcGFydGl0aW9u c19wZXJfbm9kZSkKKwkJCSsgKHBpZCAlIFN0cmF0ZWd5Q29udHJvbC0+bnVtX3BhcnRpdGlv bnNfcGVyX25vZGUpOworCX0KKworCS8qIHNob3VsZCBoYXZlIGEgdmFsaWQgcGFydGl0aW9u IGluZGV4ICovCisJQXNzZXJ0KChpbmRleCA+PSAwKSAmJiAoaW5kZXggPCBTdHJhdGVneUNv bnRyb2wtPm51bV9wYXJ0aXRpb25zKSk7CisKKwlyZXR1cm4gaW5kZXg7Cit9CisKKy8qCisg KiBDaG9vc2VDbG9ja1N3ZWVwCisgKgkJcGljayBhIGNsb2Nrc3dlZXAgcGFydGl0aW9uIGJh c2VkIG9uIE5VTUEgbm9kZSBhbmQgUElECisgKgorICogUGljayBhIHBhcnRpdGlvbiBtYXBw ZWQgdG8gdGhlIE5VTUEgbm9kZSB0aGUgYmFja2VuZCBpcyBjdXJyZW50bHkgcnVubmluZwor ICogb24sIGFuZCB1c2UgUElEIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBwYXJ0aXRpb25zIHBl ciBub2RlLiBXaXRob3V0IE5VTUEKKyAqIHN1cHBvcnRlZC9lbmFibGVkLCB1c2UganVzdCBQ SUQuCisgKgorICogWFhYIE1heWJlIHdlIHNob3VsZCBkbyBib3RoIHRoZSB0b3RhbCBhbmQg InBlciBncm91cCIgY291bnRzIGEgcG93ZXIgb2YKKyAqIHR3bz8gVGhhdCdkIGFsbG93IHVz aW5nIHNoaWZ0cyBpbnN0ZWFkIG9mIGRpdmlzaW9ucyBpbiB0aGUgY2FsY3VsYXRpb24sCisg KiBhbmQgdGhhdCdzIGNoZWFwZXIuIEJ1dCBob3cgd291bGQgdGhhdCBkZWFsIHdpdGggb2Rk IG51bWJlciBvZiBub2Rlcz8KKyAqLworc3RhdGljIENsb2NrU3dlZXAgKgorQ2hvb3NlQ2xv Y2tTd2VlcCh2b2lkKQoreworCWludAkJCWluZGV4ID0gQ2xvY2tTd2VlcFBhcnRpdGlvbklu ZGV4KCk7CisKKwlyZXR1cm4gJlN0cmF0ZWd5Q29udHJvbC0+c3dlZXBzW2luZGV4XTsKIH0K IAogLyoKQEAgLTI0MiwxMCArMzc1LDM3IEBAIFN0cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZlckFj Y2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCB1aW50NjQgKmJ1Zl9zdGF0ZSwgYm9vbCAqZnJvbV9y CiAJICogV2UgY291bnQgYnVmZmVyIGFsbG9jYXRpb24gcmVxdWVzdHMgc28gdGhhdCB0aGUg Ymd3cml0ZXIgY2FuIGVzdGltYXRlCiAJICogdGhlIHJhdGUgb2YgYnVmZmVyIGNvbnN1bXB0 aW9uLiAgTm90ZSB0aGF0IGJ1ZmZlcnMgcmVjeWNsZWQgYnkgYQogCSAqIHN0cmF0ZWd5IG9i amVjdCBhcmUgaW50ZW50aW9uYWxseSBub3QgY291bnRlZCBoZXJlLgorCSAqCisJICogWFhY IEl0J3Mgbm90IHF1aXRlIHJpZ2h0IHdlIGNhbGwgQ2hvb3NlQ2xvY2tTd2VlcCB0d2ljZSAt IG5vdywgYW5kIHRoZW4KKwkgKiBhIGNvdXBsZSBsaW5lcyBsYXRlciAodGhyb3VnaCBDbG9j a1N3ZWVwVGljaykuIElmIHRoZSBwcm9jZXNzIG1vdmVzCisJICogYmV0d2VlbiBDUFVzIC8g TlVNQSBub2RlcyBpbiBiZXR3ZWVuLCB0aGVzZSBjYWxsIG1heSBwaWNrIGRpZmZlcmVudAor CSAqIHBhcnRpdGlvbnMsIGNvbmZ1c2luZyB0aGUgbG9naWMgYSBiaXQuCiAJICovCi0JcGdf YXRvbWljX2ZldGNoX2FkZF91MzIoJlN0cmF0ZWd5Q29udHJvbC0+bnVtQnVmZmVyQWxsb2Nz LCAxKTsKKwlwZ19hdG9taWNfZmV0Y2hfYWRkX3UzMigmQ2hvb3NlQ2xvY2tTd2VlcCgpLT5u dW1CdWZmZXJBbGxvY3MsIDEpOwogCi0JLyogVXNlIHRoZSAiY2xvY2sgc3dlZXAiIGFsZ29y aXRobSB0byBmaW5kIGEgZnJlZSBidWZmZXIgKi8KKwkvKgorCSAqIFVzZSB0aGUgImNsb2Nr IHN3ZWVwIiBhbGdvcml0aG0gdG8gZmluZCBhIGZyZWUgYnVmZmVyCisJICoKKwkgKiBYWFgg Tm90ZSB0aGF0IENsb2NrU3dlZXBUaWNrKCkgaXMgTlVNQS1hd2FyZSwgaS5lLiBpdCBvbmx5 IGxvb2tzIGF0CisJICogYnVmZmVycyBmcm9tIGEgc2luZ2xlIHBhcnRpdGlvbiwgYWxpZ25l ZCB3aXRoIHRoZSBOVU1BIG5vZGUuIFRoYXQgbWVhbnMKKwkgKiBhIHByb2Nlc3MgInN3ZWVw cyIgb25seSBhIGZyYWN0aW9uIG9mIGJ1ZmZlcnMsIGV2ZW4gaWYgdGhlIG90aGVyIGJ1ZmZl cnMKKwkgKiBhcmUgYmV0dGVyIGNhbmRpZGF0ZXMgZm9yIGV2aWN0aW9uLiBNYXliZSB0aGVy ZSBzaG91bGQgYmUgc29tZSBsb2dpYyB0bworCSAqICJzdGVhbCIgYnVmZmVycyBmcm9tIG90 aGVyIHBhcnRpdGlvbnMgb3Igb3RoZXIgbm9kZXM/CisJICoKKwkgKiBYWFggVGhpcyBvbmx5 IHNlYXJjaGVzIGEgc2luZ2xlIHBhcnRpdGlvbiwgd2hpY2ggY2FuIHJlc3VsdCBpbiAibm8K KwkgKiB1bnBpbm5lZCBidWZmZXJzIGF2YWlsYWJsZSIgZXZlbiBpZiB0aGVyZSBhcmUgYnVm ZmVycyBpbiBvdGhlcgorCSAqIHBhcnRpdGlvbnMuIE5lZWRzIHRvIHNjYW4gcGFydGl0aW9u cyBpZiBuZWVkZWQsIGFzIGEgZmFsbGJhY2suCisJICoKKwkgKiBYWFggV291bGQgdGhhdCBh bHNvIG1lYW4gd2Ugc2hvdWxkIGhhdmUgbXVsdGlwbGUgYmd3cml0ZXJzLCBvbmUgZm9yIGVh Y2gKKwkgKiBub2RlLCBvciB3b3VsZCBvbmUgYmd3cml0ZXIgc3RpbGwgaGFuZGxlIGFsbCBu b2Rlcz8KKwkgKgorCSAqIFhYWCBBbHNvLCB0aGUgdHJ5Y291bnRlciBzaG91bGQgbm90IGJl IHNldCB0byBOQnVmZmVycywgYnV0IHRvIGJ1ZmZlcgorCSAqIGNvdW50IGZvciB0aGF0IG9u ZSBwYXJ0aXRpb24uIEluIGZhY3QsIHRoaXMgc2hvdWxkIG5vdCBjYWxsIENsb2NrU3dlZXBU aWNrCisJICogZm9yIGV2ZXJ5IGl0ZXJhdGlvbi4gVGhlIGNhbGwgaXMgbGlrZWx5IHF1aXRl IGV4cGVuc2l2ZSAoZG9lcyBhIGxvdAorCSAqIG9mIHN0dWZmKSwgYW5kIGFsc28gbWF5IHJl dHVybiBhIGRpZmZlcmVudCBwYXJ0aXRpb24gb24gZWFjaCBjYWxsLgorCSAqIFdlIHNob3Vs ZCBqdXN0IGRvIGl0IG9uY2UsIGFuZCB0aGVuIGRvIHRoZSBmb3IoOzspIGxvb3AuIEFuZCB0 aGVuCisJICogbWF5YmUgYWR2YW5jZSB0byB0aGUgbmV4dCBwYXJ0aXRpb24sIHVudGlsIHdl IHNjYW4gdGhyb3VnaCBhbGwgb2YgdGhlbS4KKwkgKi8KIAl0cnljb3VudGVyID0gTkJ1ZmZl cnM7CiAJZm9yICg7OykKIAl7CkBAIC0zMjUsNiArNDg1LDQ4IEBAIFN0cmF0ZWd5R2V0QnVm ZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCB1aW50NjQgKmJ1Zl9zdGF0ZSwg Ym9vbCAqZnJvbV9yCiAJfQogfQogCisvKgorICogU3RyYXRlZ3lTeW5jUHJlcGFyZSAtLSBw cmVwYXJlIGZvciBzeW5jIG9mIGFsbCBwYXJ0aXRpb25zCisgKgorICogRGV0ZXJtaW5lIHRo ZSBudW1iZXIgb2YgY2xvY2tzd2VlcCBwYXJ0aXRpb25zLCBhbmQgY2FsY3VsYXRlIHRoZSBy ZWNlbnQKKyAqIGJ1ZmZlcnMgYWxsb2NzIChhcyBhIHN1bSBvZiBhbGwgdGhlIHBhcnRpdGlv bnMpLiBUaGlzIGFsbG93cyBCZ0J1ZmZlclN5bmMKKyAqIHRvIGNhbGN1bGF0ZSBhdmVyYWdl IG51bWJlciBvZiBhbGxvY2F0aW9ucyBwZXIgcGFydGl0aW9uIGZvciB0aGUgbmV4dAorICog c3luYyBjeWNsZS4KKyAqCisgKiBJbiBhZGRpdGlvbiBpdCByZXR1cm5zIHRoZSBjb3VudCBv ZiByZWNlbnQgYnVmZmVyIGFsbG9jcywgd2hpY2ggaXMgYSB0b3RhbAorICogc3VtbWVkIGZy b20gYWxsIHBhcnRpdGlvbnMuIFRoZSBhbGxvYyBjb3VudHMgYXJlIHJlc2V0IGFmdGVyIGJl aW5nIHJlYWQsCisgKiBhcyB0aGUgcGFydGl0aW9ucyBhcmUgd2Fsa2VkLgorICovCit2b2lk CitTdHJhdGVneVN5bmNQcmVwYXJlKGludCAqbnVtX3BhcnRzLCB1aW50MzIgKm51bV9idWZf YWxsb2MpCit7CisJKm51bV9idWZfYWxsb2MgPSAwOworCSpudW1fcGFydHMgPSBTdHJhdGVn eUNvbnRyb2wtPm51bV9wYXJ0aXRpb25zOworCisJLyoKKwkgKiBXZSBsb2NrIHRoZSBwYXJ0 aXRpb25zIG9uZSBieSBvbmUsIHNvIG5vdCBleGFjbHkgaW4gc3luYywgYnV0IHRoYXQKKwkg KiBzaG91bGQgYmUgZmluZS4gV2UncmUgb25seSBsb29raW5nIGZvciBoZXVyaXN0aWNzIGFu eXdheS4KKwkgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IFN0cmF0ZWd5Q29udHJvbC0+bnVt X3BhcnRpdGlvbnM7IGkrKykKKwl7CisJCUNsb2NrU3dlZXAgKnN3ZWVwID0gJlN0cmF0ZWd5 Q29udHJvbC0+c3dlZXBzW2ldOworCisJCS8qIFhYWCBEbyB3ZSBuZWVkIHRoZSBsb2NrLCBp ZiB3ZSdyZSBvbmx5IGFjY2Vzc2luZyBhdG9taWNzPyBTdXJlbHkgbm90LiAqLworCQkvKiBY WFggQXJlIHdlIGV2ZXIgY2FsbGluZyB0aGlzIHdpdGhvdXQgbnVtX2J1Zl9hbGxvYz8gKi8K KwkJU3BpbkxvY2tBY3F1aXJlKCZzd2VlcC0+Y2xvY2tfc3dlZXBfbG9jayk7CisJCWlmIChu dW1fYnVmX2FsbG9jKQorCQl7CisJCQl1aW50MzIJYWxsb2NzID0gcGdfYXRvbWljX2V4Y2hh bmdlX3UzMigmc3dlZXAtPm51bUJ1ZmZlckFsbG9jcywgMCk7CisKKwkJCS8qIGluY2x1ZGUg dGhlIGNvdW50IGluIHRoZSBydW5uaW5nIHRvdGFsICovCisJCQlwZ19hdG9taWNfZmV0Y2hf YWRkX3U2NCgmc3dlZXAtPm51bVRvdGFsQWxsb2NzLCBhbGxvY3MpOworCisJCQkqbnVtX2J1 Zl9hbGxvYyArPSBhbGxvY3M7CisJCX0KKwkJU3BpbkxvY2tSZWxlYXNlKCZzd2VlcC0+Y2xv Y2tfc3dlZXBfbG9jayk7CisJfQorfQorCiAvKgogICogU3RyYXRlZ3lTeW5jU3RhcnQgLS0g dGVsbCBCZ0J1ZmZlclN5bmMgd2hlcmUgdG8gc3RhcnQgc3luY2luZwogICoKQEAgLTMzMiwz NyArNTM0LDQ0IEBAIFN0cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0 cmF0ZWd5LCB1aW50NjQgKmJ1Zl9zdGF0ZSwgYm9vbCAqZnJvbV9yCiAgKiBCZ0J1ZmZlclN5 bmMoKSB3aWxsIHByb2NlZWQgY2lyY3VsYXJseSBhcm91bmQgdGhlIGJ1ZmZlciBhcnJheSBm cm9tIHRoZXJlLgogICoKICAqIEluIGFkZGl0aW9uLCB3ZSByZXR1cm4gdGhlIGNvbXBsZXRl ZC1wYXNzIGNvdW50ICh3aGljaCBpcyBlZmZlY3RpdmVseQotICogdGhlIGhpZ2hlci1vcmRl ciBiaXRzIG9mIG5leHRWaWN0aW1CdWZmZXIpIGFuZCB0aGUgY291bnQgb2YgcmVjZW50IGJ1 ZmZlcgotICogYWxsb2NzIGlmIG5vbi1OVUxMIHBvaW50ZXJzIGFyZSBwYXNzZWQuICBUaGUg YWxsb2MgY291bnQgaXMgcmVzZXQgYWZ0ZXIKLSAqIGJlaW5nIHJlYWQuCisgKiB0aGUgaGln aGVyLW9yZGVyIGJpdHMgb2YgbmV4dFZpY3RpbUJ1ZmZlcikuCisgKgorICogVGhpcyBvbmx5 IGNvbnNpZGVycyBhIHNpbmdsZSBjbG9ja3N3ZWVwIHBhcnRpdGlvbiwgYXMgQmdCdWZmZXJT eW5jIGxvb2tzCisgKiBhdCB0aGVtIG9uZSBieSBvbmUuCiAgKi8KIGludAotU3RyYXRlZ3lT eW5jU3RhcnQodWludDMyICpjb21wbGV0ZV9wYXNzZXMsIHVpbnQzMiAqbnVtX2J1Zl9hbGxv YykKK1N0cmF0ZWd5U3luY1N0YXJ0KGludCBwYXJ0aXRpb24sIHVpbnQzMiAqY29tcGxldGVf cGFzc2VzLAorCQkJCSAgaW50ICpmaXJzdF9idWZmZXIsIGludCAqbnVtX2J1ZmZlcnMpCiB7 CiAJdWludDMyCQluZXh0VmljdGltQnVmZmVyOwogCWludAkJCXJlc3VsdDsKKwlDbG9ja1N3 ZWVwICpzd2VlcCA9ICZTdHJhdGVneUNvbnRyb2wtPnN3ZWVwc1twYXJ0aXRpb25dOwogCi0J U3BpbkxvY2tBY3F1aXJlKCZTdHJhdGVneUNvbnRyb2wtPmJ1ZmZlcl9zdHJhdGVneV9sb2Nr KTsKLQluZXh0VmljdGltQnVmZmVyID0gcGdfYXRvbWljX3JlYWRfdTMyKCZTdHJhdGVneUNv bnRyb2wtPm5leHRWaWN0aW1CdWZmZXIpOwotCXJlc3VsdCA9IG5leHRWaWN0aW1CdWZmZXIg JSBOQnVmZmVyczsKKwlBc3NlcnQoKHBhcnRpdGlvbiA+PSAwKSAmJiAocGFydGl0aW9uIDwg U3RyYXRlZ3lDb250cm9sLT5udW1fcGFydGl0aW9ucykpOworCisJU3BpbkxvY2tBY3F1aXJl KCZzd2VlcC0+Y2xvY2tfc3dlZXBfbG9jayk7CisJbmV4dFZpY3RpbUJ1ZmZlciA9IHBnX2F0 b21pY19yZWFkX3UzMigmc3dlZXAtPm5leHRWaWN0aW1CdWZmZXIpOworCXJlc3VsdCA9IG5l eHRWaWN0aW1CdWZmZXIgJSBzd2VlcC0+bnVtQnVmZmVyczsKKworCSpmaXJzdF9idWZmZXIg PSBzd2VlcC0+Zmlyc3RCdWZmZXI7CisJKm51bV9idWZmZXJzID0gc3dlZXAtPm51bUJ1ZmZl cnM7CiAKIAlpZiAoY29tcGxldGVfcGFzc2VzKQogCXsKLQkJKmNvbXBsZXRlX3Bhc3NlcyA9 IFN0cmF0ZWd5Q29udHJvbC0+Y29tcGxldGVQYXNzZXM7CisJCSpjb21wbGV0ZV9wYXNzZXMg PSBzd2VlcC0+Y29tcGxldGVQYXNzZXM7CiAKIAkJLyoKIAkJICogQWRkaXRpb25hbGx5IGFk ZCB0aGUgbnVtYmVyIG9mIHdyYXBhcm91bmRzIHRoYXQgaGFwcGVuZWQgYmVmb3JlCiAJCSAq IGNvbXBsZXRlUGFzc2VzIGNvdWxkIGJlIGluY3JlbWVudGVkLiBDLmYuIENsb2NrU3dlZXBU aWNrKCkuCiAJCSAqLwotCQkqY29tcGxldGVfcGFzc2VzICs9IG5leHRWaWN0aW1CdWZmZXIg LyBOQnVmZmVyczsKKwkJKmNvbXBsZXRlX3Bhc3NlcyArPSBuZXh0VmljdGltQnVmZmVyIC8g c3dlZXAtPm51bUJ1ZmZlcnM7CiAJfQorCVNwaW5Mb2NrUmVsZWFzZSgmc3dlZXAtPmNsb2Nr X3N3ZWVwX2xvY2spOwogCi0JaWYgKG51bV9idWZfYWxsb2MpCi0JewotCQkqbnVtX2J1Zl9h bGxvYyA9IHBnX2F0b21pY19leGNoYW5nZV91MzIoJlN0cmF0ZWd5Q29udHJvbC0+bnVtQnVm ZmVyQWxsb2NzLCAwKTsKLQl9Ci0JU3BpbkxvY2tSZWxlYXNlKCZTdHJhdGVneUNvbnRyb2wt PmJ1ZmZlcl9zdHJhdGVneV9sb2NrKTsKLQlyZXR1cm4gcmVzdWx0OworCS8qIFhYWCBidWZm ZXIgSURzIHN0YXJ0IGF0IDEsIHdlJ3JlIGNhbGN1bGF0aW5nIDAtYmFzZWQgaW5kZXhlcyAq LworCUFzc2VydChCdWZmZXJJc1ZhbGlkKDEgKyBzd2VlcC0+Zmlyc3RCdWZmZXIgKyByZXN1 bHQpKTsKKworCXJldHVybiBzd2VlcC0+Zmlyc3RCdWZmZXIgKyByZXN1bHQ7CiB9CiAKIC8q CkBAIC0zOTQsOCArNjAzLDE0IEBAIFN0cmF0ZWd5Tm90aWZ5QmdXcml0ZXIoaW50IGJnd3By b2NubykKIHN0YXRpYyB2b2lkCiBTdHJhdGVneUN0bFNobWVtUmVxdWVzdCh2b2lkICphcmcp CiB7CisJaW50CQkJbnVtX3BhcnRpdGlvbnM7CisKKwkvKiBnZXQgdGhlIG51bWJlciBvZiBi dWZmZXIgcGFydGl0aW9ucyAqLworCUJ1ZmZlclBhcnRpdGlvbnNDYWxjdWxhdGUoTlVMTCwg Jm51bV9wYXJ0aXRpb25zLCBOVUxMKTsKKwogCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9 ICJCdWZmZXIgU3RyYXRlZ3kgU3RhdHVzIiwKLQkJCQkJICAgLnNpemUgPSBzaXplb2YoQnVm ZmVyU3RyYXRlZ3lDb250cm9sKSwKKwkJCQkJICAgLnNpemUgPSBvZmZzZXRvZihCdWZmZXJT dHJhdGVneUNvbnRyb2wsIHN3ZWVwcykgKworCQkJCQkJCW11bF9zaXplKG51bV9wYXJ0aXRp b25zLCBzaXplb2YoQ2xvY2tTd2VlcCkpLAogCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZT dHJhdGVneUNvbnRyb2wKIAkJKTsKIH0KQEAgLTQwOCwxMiArNjIzLDQyIEBAIFN0cmF0ZWd5 Q3RsU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKIAlTcGluTG9ja0luaXQoJlN0cmF0ZWd5Q29u dHJvbC0+YnVmZmVyX3N0cmF0ZWd5X2xvY2spOwogCi0JLyogSW5pdGlhbGl6ZSB0aGUgY2xv Y2stc3dlZXAgcG9pbnRlciAqLwotCXBnX2F0b21pY19pbml0X3UzMigmU3RyYXRlZ3lDb250 cm9sLT5uZXh0VmljdGltQnVmZmVyLCAwKTsKKwkvKiBSZW1lbWJlciB0aGUgbnVtYmVyIG9m IHBhcnRpdGlvbnMgKi8KKwlCdWZmZXJQYXJ0aXRpb25zUGFyYW1zKCZTdHJhdGVneUNvbnRy b2wtPm51bV9ub2RlcywKKwkJCQkJCSAgICZTdHJhdGVneUNvbnRyb2wtPm51bV9wYXJ0aXRp b25zLAorCQkJCQkJICAgJlN0cmF0ZWd5Q29udHJvbC0+bnVtX3BhcnRpdGlvbnNfcGVyX25v ZGUpOworCisJLyogSW5pdGlhbGl6ZSB0aGUgY2xvY2sgc3dlZXAgcG9pbnRlcnMgKGZvciBh bGwgcGFydGl0aW9ucykgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IFN0cmF0ZWd5Q29udHJv bC0+bnVtX3BhcnRpdGlvbnM7IGkrKykKKwl7CisJCWludAkJCW5vZGUsCisJCQkJCW51bV9i dWZmZXJzLAorCQkJCQlmaXJzdF9idWZmZXIsCisJCQkJCWxhc3RfYnVmZmVyOworCisJCVNw aW5Mb2NrSW5pdCgmU3RyYXRlZ3lDb250cm9sLT5zd2VlcHNbaV0uY2xvY2tfc3dlZXBfbG9j ayk7CiAKLQkvKiBDbGVhciBzdGF0aXN0aWNzICovCi0JU3RyYXRlZ3lDb250cm9sLT5jb21w bGV0ZVBhc3NlcyA9IDA7Ci0JcGdfYXRvbWljX2luaXRfdTMyKCZTdHJhdGVneUNvbnRyb2wt Pm51bUJ1ZmZlckFsbG9jcywgMCk7CisJCXBnX2F0b21pY19pbml0X3UzMigmU3RyYXRlZ3lD b250cm9sLT5zd2VlcHNbaV0ubmV4dFZpY3RpbUJ1ZmZlciwgMCk7CisKKwkJLyogZ2V0IGlu Zm8gYWJvdXQgdGhlIGJ1ZmZlciBwYXJ0aXRpb24gKi8KKwkJQnVmZmVyUGFydGl0aW9uR2V0 KGksICZub2RlLCAmbnVtX2J1ZmZlcnMsCisJCQkJCQkgICAmZmlyc3RfYnVmZmVyLCAmbGFz dF9idWZmZXIpOworCisJCS8qCisJCSAqIEZJWE1FIFRoaXMgbWF5IG5vdCBxdWl0ZSByaWdo dCwgYmVjYXVzZSBpZiBOQnVmZmVycyBpcyBub3QgYQorCQkgKiBwZXJmZWN0IG11bHRpcGxl IG9mIG51bUJ1ZmZlcnMsIHRoZSBsYXN0IHBhcnRpdGlvbiB3aWxsIGhhdmUKKwkJICogbnVt QnVmZmVycyBzZXQgdG9vIGhpZ2guIGJ1Zl9pbml0IGhhbmRsZXMgdGhpcyBieSB0cmFja2lu ZyB0aGUKKwkJICogcmVtYWluaW5nIG51bWJlciBvZiBidWZmZXJzLCBhbmQgbm90IG92ZXJm bG93aW5nLgorCQkgKi8KKwkJU3RyYXRlZ3lDb250cm9sLT5zd2VlcHNbaV0ubm9kZSA9IG5v ZGU7CisJCVN0cmF0ZWd5Q29udHJvbC0+c3dlZXBzW2ldLm51bUJ1ZmZlcnMgPSBudW1fYnVm ZmVyczsKKwkJU3RyYXRlZ3lDb250cm9sLT5zd2VlcHNbaV0uZmlyc3RCdWZmZXIgPSBmaXJz dF9idWZmZXI7CisKKwkJLyogQ2xlYXIgc3RhdGlzdGljcyAqLworCQlTdHJhdGVneUNvbnRy b2wtPnN3ZWVwc1tpXS5jb21wbGV0ZVBhc3NlcyA9IDA7CisJCXBnX2F0b21pY19pbml0X3Uz MigmU3RyYXRlZ3lDb250cm9sLT5zd2VlcHNbaV0ubnVtQnVmZmVyQWxsb2NzLCAwKTsKKwkJ cGdfYXRvbWljX2luaXRfdTY0KCZTdHJhdGVneUNvbnRyb2wtPnN3ZWVwc1tpXS5udW1Ub3Rh bEFsbG9jcywgMCk7CisJfQogCiAJLyogTm8gcGVuZGluZyBub3RpZmljYXRpb24gKi8KIAlT dHJhdGVneUNvbnRyb2wtPmJnd3Byb2NubyA9IC0xOwpAQCAtNzc3LDMgKzEwMjIsMjMgQEAg U3RyYXRlZ3lSZWplY3RCdWZmZXIoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksIEJ1 ZmZlckRlc2MgKmJ1ZiwgYm9vbCBmcm9tX3IKIAogCXJldHVybiB0cnVlOwogfQorCit2b2lk CitDbG9ja1N3ZWVwUGFydGl0aW9uR2V0SW5mbyhpbnQgaWR4LAorCQkJCQkJICAgdWludDMy ICpjb21wbGV0ZV9wYXNzZXMsIHVpbnQzMiAqbmV4dF92aWN0aW1fYnVmZmVyLAorCQkJCQkJ ICAgdWludDY0ICpidWZmZXJfdG90YWxfYWxsb2NzLCB1aW50MzIgKmJ1ZmZlcl9hbGxvY3Mp Cit7CisJQ2xvY2tTd2VlcCAqc3dlZXAgPSAmU3RyYXRlZ3lDb250cm9sLT5zd2VlcHNbaWR4 XTsKKworCUFzc2VydCgoaWR4ID49IDApICYmIChpZHggPCBTdHJhdGVneUNvbnRyb2wtPm51 bV9wYXJ0aXRpb25zKSk7CisKKwkvKiBnZXQgdGhlIGNsb2Nrc3dlZXAgc3RhdHMgKi8KKwkq Y29tcGxldGVfcGFzc2VzID0gc3dlZXAtPmNvbXBsZXRlUGFzc2VzOworCSpuZXh0X3ZpY3Rp bV9idWZmZXIgPSBwZ19hdG9taWNfcmVhZF91MzIoJnN3ZWVwLT5uZXh0VmljdGltQnVmZmVy KTsKKworCSpidWZmZXJfYWxsb2NzID0gcGdfYXRvbWljX3JlYWRfdTMyKCZzd2VlcC0+bnVt QnVmZmVyQWxsb2NzKTsKKwkqYnVmZmVyX3RvdGFsX2FsbG9jcyA9IHBnX2F0b21pY19yZWFk X3U2NCgmc3dlZXAtPm51bVRvdGFsQWxsb2NzKTsKKworCS8qIGNhbGN1bGF0ZSB0aGUgYWN0 dWFsIGJ1ZmZlciBJRCAqLworCSpuZXh0X3ZpY3RpbV9idWZmZXIgPSBzd2VlcC0+Zmlyc3RC dWZmZXIgKyAoKm5leHRfdmljdGltX2J1ZmZlciAlIHN3ZWVwLT5udW1CdWZmZXJzKTsKK30K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5oIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmgKaW5kZXggYjA4MmUzNmEuLmY5NzM2 YzI3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaAor KysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaApAQCAtNjAwLDcgKzYw MCw5IEBAIGV4dGVybiBCdWZmZXJEZXNjICpTdHJhdGVneUdldEJ1ZmZlcihCdWZmZXJBY2Nl c3NTdHJhdGVneSBzdHJhdGVneSwKIGV4dGVybiBib29sIFN0cmF0ZWd5UmVqZWN0QnVmZmVy KEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LAogCQkJCQkJCQkgQnVmZmVyRGVzYyAq YnVmLCBib29sIGZyb21fcmluZyk7CiAKLWV4dGVybiBpbnQJU3RyYXRlZ3lTeW5jU3RhcnQo dWludDMyICpjb21wbGV0ZV9wYXNzZXMsIHVpbnQzMiAqbnVtX2J1Zl9hbGxvYyk7CitleHRl cm4gdm9pZCBTdHJhdGVneVN5bmNQcmVwYXJlKGludCAqbnVtX3BhcnRzLCB1aW50MzIgKm51 bV9idWZfYWxsb2MpOworZXh0ZXJuIGludAlTdHJhdGVneVN5bmNTdGFydChpbnQgcGFydGl0 aW9uLCB1aW50MzIgKmNvbXBsZXRlX3Bhc3NlcywKKwkJCQkJCQkgIGludCAqZmlyc3RfYnVm ZmVyLCBpbnQgKm51bV9idWZmZXJzKTsKIGV4dGVybiB2b2lkIFN0cmF0ZWd5Tm90aWZ5QmdX cml0ZXIoaW50IGJnd3Byb2Nubyk7CiAKIC8qIGJ1Zl90YWJsZS5jICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9i dWZtZ3IuaAppbmRleCAxY2YwOWU4Zi4uZTBiYjRjYzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3N0b3JhZ2UvYnVmbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZtZ3Iu aApAQCAtNDEwLDYgKzQxMCwxMSBAQCBleHRlcm4gaW50CUdldEFjY2Vzc1N0cmF0ZWd5QnVm ZmVyQ291bnQoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3kpOwogZXh0ZXJuIGludAlH ZXRBY2Nlc3NTdHJhdGVneVBpbkxpbWl0KEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5 KTsKIAogZXh0ZXJuIHZvaWQgRnJlZUFjY2Vzc1N0cmF0ZWd5KEJ1ZmZlckFjY2Vzc1N0cmF0 ZWd5IHN0cmF0ZWd5KTsKK2V4dGVybiB2b2lkIENsb2NrU3dlZXBQYXJ0aXRpb25HZXRJbmZv KGludCBpZHgsCisJCQkJCQkJCQkgICB1aW50MzIgKmNvbXBsZXRlX3Bhc3NlcywKKwkJCQkJ CQkJCSAgIHVpbnQzMiAqbmV4dF92aWN0aW1fYnVmZmVyLAorCQkJCQkJCQkJICAgdWludDY0 ICpidWZmZXJfdG90YWxfYWxsb2NzLAorCQkJCQkJCQkJICAgdWludDMyICpidWZmZXJfYWxs b2NzKTsKIAogCiAvKiBpbmxpbmUgZnVuY3Rpb25zICovCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWNvdmVyeS90LzAyN19zdHJlYW1fcmVncmVzcy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5 L3QvMDI3X3N0cmVhbV9yZWdyZXNzLnBsCmluZGV4IGFlOTc3Mjk3Li5mNjhlMDhlNSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMjdfc3RyZWFtX3JlZ3Jlc3MucGwKKysr IGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMjdfc3RyZWFtX3JlZ3Jlc3MucGwKQEAgLTE4LDYg KzE4LDExIEBAICRub2RlX3ByaW1hcnktPmFkanVzdF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LCAnbWF4X2Nvbm5lY3Rpb25zJywgJzI1Jyk7CiAkbm9kZV9wcmltYXJ5LT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywKIAknbWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyA9IDEw Jyk7CiAKKyMgVGhlIGRlZmF1bHQgaXMgMU1CLCB3aGljaCBpcyBub3QgZW5vdWdoIHdpdGgg Y2xvY2stc3dlZXAgcGFydGl0aW9uaW5nLgorIyBJbmNyZWFzZSB0byAzMk1CLCBzbyB0aGF0 IHdlIGRvbid0IGdldCAibm8gdW5waW5uZWQgYnVmZmVycyIuCiskbm9kZV9wcmltYXJ5LT5h cHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwknc2hhcmVkX2J1ZmZlcnMgPSAzMk1C Jyk7CisKICMgRW5hYmxlIHBnX3N0YXRfc3RhdGVtZW50cyB0byBmb3JjZSB0ZXN0cyB0byBk byBxdWVyeSBqdW1ibGluZy4KICMgcGdfc3RhdF9zdGF0ZW1lbnRzLm1heCBzaG91bGQgYmUg bGFyZ2UgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBlbnRyaWVzCiAjIG9mIHRoZSByZWdyZXNz aW9uIGRhdGFiYXNlLgpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA2NjgwOWFm OS4uYjE5ZjQyZDkgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC00NDksNiAr NDQ5LDcgQEAgQ2xpZW50Q2VydE5hbWUKIENsaWVudENvbm5lY3Rpb25JbmZvCiBDbGllbnRE YXRhCiBDbGllbnRTb2NrZXQKK0Nsb2NrU3dlZXAKIENsb25lUHRyVHlwZQogQ2xvc2VQb3J0 YWxTdG10CiBDbG9zZVB0clR5cGUKLS0gCjIuNTAuMQoK --317345122ad1692da28ddb245f423447087961c8 Content-Disposition: attachment; filename*0="v20260915a-0005-clock-sweep-balancing-of-allocations.patch" Content-Type: text/x-patch; name="=?UTF-8?Q?v20260915a-0005-clock-sweep-balancing-of-allocations.patch?=" Content-Transfer-Encoding: base64 RnJvbSAyMjM4YmVlNjM0MWQ2ZTQ5MWJjYTg1YTdmNjM4NDNhYmZiYjQ2OTNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogVHVlLCAyIEp1biAyMDI2IDIyOjI4OjEwICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 MjAyNjA5MTVhIDUvOV0gY2xvY2stc3dlZXA6IGJhbGFuY2luZyBvZiBhbGxvY2F0aW9ucwoK SWYgYmFja2VuZHMgb25seSBhbGxvY2F0ZSBidWZmZXJzIGZyb20gdGhlICJob21lIiBwYXJ0 aXRpb24sIHRoYXQgbWF5CmNhdXNlIHNpZ25pZmljYW50IG1pc2JhbGFuY2UuIFNvbWUgcGFy dGl0aW9ucyBtaWdodCBiZSBvdmVydXNlZCwgd2hpbGUKb3RoZXIgcGFydGl0aW9ucyB3b3Vs ZCBiZSBsZWZ0IHVudXNlZC4gSW4gb3RoZXIgd29yZHMsIHNoYXJlZCBidWZmZXJzCndvdWxk IG5vdCBiZSB1c2VkIGVmZmljaWVudGx5LgoKV2Ugd2FudCBhbGwgcGFydGl0aW9ucyB0byBi ZSB1c2VkIGFib3V0IHRoZSBzYW1lLCBpLmUuIHNlcnZlIGFib3V0IHRoZQpzYW1lIG51bWJl ciBvZiBhbGxvY2F0aW9ucy4gVG8gYWNoaWV2ZSB0aGF0LCBhbGxvY2F0aW9ucyBmcm9tIHBh cnRpdGlvbnMKdGhhdCBhcmUgInRvbyBidXN5IiBtYXkgZ2V0IHJlZGlyZWN0ZWQgdG8gb3Ro ZXIgcGFydGl0aW9ucy4gVGhlIHN5c3RlbQpjb3VudHMgYWxsb2NhdGlvbnMgcmVxdWVzdGVk IGZyb20gZWFjaCBwYXJ0aXRpb24sIGNhbGN1bGF0ZXMgdGhlICJmYWlyCnNoYXJlIiAoYXZl cmFnZSBwZXIgcGFydGl0aW9uKSwgYW5kIHRoZW4gcmVkaXJlY3RzZXhjZXNzIGFsbG9jYXRp b25zIHRvCm90aGVyIHBhcnRpdGlvbnMuCgpFYWNoIHBhcnRpdGlvbiBnZXRzIGEgc2V0IG9m IGNvZWZmaWNpZW50cyBkZXRlcm1pbmluZyB0aGUgZnJhY3Rpb24gb2YKYWxsb2NhdGlvbnMg dG8gcmVkaXJlY3QgdG8gb3RoZXIgcGFydGl0aW9ucy4gVGhlIGNvZWZmaWNpZW50cyBtYXkg YmUKaW50ZXJwcmV0ZWQgYXMgYSAiYnVkZ2V0IiBmb3IgZWFjaCBvZiB0aGUgcGFydGl0aW9u LCBpLmUuIHRoZSBudW1iZXIgb2YKYWxsb2NhdGlvbnMgdG8gc2VydmUgZnJvbSB0aGF0IHBh cnRpdGlvbiwgYmVmb3JlIG1vdmluZyB0byB0aGUgbmV4dApwYXJ0aXRpb24gKGluIGEgcm91 bmQtcm9iaW4gbWFubmVyKS4KCkFsbCBvZiB0aGlzIGlzIHRpZWQgdG8gdGhlIHBhcnRpdGlv biB3aGVyZSB0aGUgYWxsb2NhdGlvbiB3YXMgcmVxdWVzdGVkLgpFYWNoIHBhcnRpdGlvbiBo YXMgYSBzZXBhcmF0ZSBzZXQgb2YgY29lZmZpY2llbnRzLgoKV2UgbWlnaHQgYWxzbyB0cmVh dCB0aGUgY29lZmZpY2llbnRzIGFzIHByb2JhYmlsaXRpZXMsIGFuZCB1c2UgUFJORyB0bwpk ZXRlcm1pbmUgd2hlcmUgdG8gZGlyZWN0IGluZGl2aWR1YWwgcmVxdWVzdHMuIEJ1dCBhIFBS Tkcgc2VlbXMgZmFpcmx5CmV4cGVuc2l2ZSwgYW5kIHRoZSBidWRnZXQgYXBwcm9hY2ggd29y a3Mgd2VsbC4KCldlIGludGVudGlvbmFsbHkga2VlcCB0aGUgImJ1ZGdldCIgZmFpcmx5IGxv dywgd2l0aCB0aGUgc3VtIGZvciBhIGdpdmVuCnBhcnRpdGlvbiAxMDAuIFRoYXQgbWVhbnMg d2UgZ2V0IHRvIHRoZSBzYW1lIHBhcnRpdGlvbiBhZnRlciBvbmx5IDEwMAphbGxvY2F0aW9u cywga2VlcGluZyBpdCBtb3JlIGJhbGFuY2VkLiBJdCB3b3VsZG4ndCBiZSBoYXJkIHRvIG1h a2UgdGhlCmJ1ZGdldHMgaGlnaGVyIChlLmcuIG1hdGNoaW5nIHRoZSBudW1iZXIgb2YgYWxs b2NhdGlvbnMgcGVyIHJvdW5kKSwgYnV0Cml0IG1pZ2h0IGFsc28gbWFrZSB0aGUgYmVoYXZp b3IgbGVzcyBzbW9vdGggKGxvbmcgcGVyaW9kIG9mIGFsbG9jYXRpb25zCmZyb20gZWFjaCBw YXJ0aXRpb24pLgoKVGhpcyBpcyB2ZXJ5IHNpbXBsZS9jaGVhcCwgYW5kIG92ZXIgbWFueSBh bGxvY2F0aW9ucyBpdCBoYXMgdGhlIHNhbWUKZWZmZWN0LiBGb3IgcGVyaW9kcyBvZiBsb3cg YWN0aXZpdHkgaXQgbWF5IGRpdmVyZ2UsIGJ1dCB0aGF0IGRvZXMgbm90Cm1hdHRlciBtdWNo ICh3ZSBjYXJlIGFib3V0IGhpZ2gtYWN0aXZpdHkgcGVyaW9kcyBtdWNoIG1vcmUpLgotLS0K IC4uLi9wZ19idWZmZXJjYWNoZS0tMS43LS0xLjguc3FsICAgICAgICAgICAgICB8ICAgNSAr LQogY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZV9wYWdlcy5jIHwgIDQz ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyAgICAgICAgICAgfCAg IDMgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYyAgICAgICAgIHwg NDI4ICsrKysrKysrKysrKysrKysrLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJu YWxzLmggICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmgg ICAgICAgICAgICAgICAgICB8ICAxMiArLQogNiBmaWxlcyBjaGFuZ2VkLCA0NzEgaW5zZXJ0 aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19idWZm ZXJjYWNoZS9wZ19idWZmZXJjYWNoZS0tMS43LS0xLjguc3FsIGIvY29udHJpYi9wZ19idWZm ZXJjYWNoZS9wZ19idWZmZXJjYWNoZS0tMS43LS0xLjguc3FsCmluZGV4IDkyMTc2ZmVkLi40 M2QyZTg0ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJj YWNoZS0tMS43LS0xLjguc3FsCisrKyBiL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVm ZmVyY2FjaGUtLTEuNy0tMS44LnNxbApAQCAtMjAsNyArMjAsMTAgQEAgQ1JFQVRFIFZJRVcg cGdfYnVmZmVyY2FjaGVfcGFydGl0aW9ucyBBUwogCSBudW1fcGFzc2VzIGJpZ2ludCwJCQkt LSBjbG9ja3N3ZWVwIHBhc3NlcwogCSBuZXh0X2J1ZmZlciBpbnRlZ2VyLAkJLS0gbmV4dCB2 aWN0aW0gYnVmZmVyIGZvciBjbG9ja3N3ZWVwCiAJIHRvdGFsX2FsbG9jcyBiaWdpbnQsCQkt LSBoYW5kbGVkIGFsbG9jcyAocnVubmluZyB0b3RhbCkKLQkgbnVtX2FsbG9jcyBiaWdpbnQp OwkJLS0gaGFuZGxlZCBhbGxvY3MgKGN1cnJlbnQgY3ljbGUpCisJIG51bV9hbGxvY3MgYmln aW50LAkJCS0tIGhhbmRsZWQgYWxsb2NzIChjdXJyZW50IGN5Y2xlKQorCSB0b3RhbF9yZXFf YWxsb2NzIGJpZ2ludCwJLS0gcmVxdWVzdGVkIGFsbG9jcyAocnVubmluZyB0b3RhbCkKKwkg bnVtX3JlcV9hbGxvY3MgYmlnaW50LAkJLS0gaGFuZGxlZCBhbGxvY3MgKGN1cnJlbnQgY3lj bGUpCisJIHdlaWdodHMgaW50W10pOwkJCS0tIGJhbGFuY2luZyB3ZWlnaHRzCiAKIC0tIERv bid0IHdhbnQgdGhlc2UgdG8gYmUgYXZhaWxhYmxlIHRvIHB1YmxpYy4KIFJFVk9LRSBBTEwg T04gRlVOQ1RJT04gcGdfYnVmZmVyY2FjaGVfcGFydGl0aW9ucygpIEZST00gUFVCTElDOwpk aWZmIC0tZ2l0IGEvY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZV9wYWdl cy5jIGIvY29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZV9wYWdlcy5jCmlu ZGV4IGIwN2ZhZmRhLi5mMjZiMjMzMiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19idWZmZXJj YWNoZS9wZ19idWZmZXJjYWNoZV9wYWdlcy5jCisrKyBiL2NvbnRyaWIvcGdfYnVmZmVyY2Fj aGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYwpAQCAtMTUsNiArMTUsOCBAQAogI2luY2x1ZGUg InBvcnQvcGdfbnVtYS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmX2ludGVybmFscy5oIgog I2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIK KyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgog I2luY2x1ZGUgInV0aWxzL3R1cGxlc3RvcmUuaCIKIApAQCAtMzEsNyArMzMsNyBAQAogI2Rl ZmluZSBOVU1fQlVGRkVSQ0FDSEVfTUFSS19ESVJUWV9BTExfRUxFTSAzCiAKICNkZWZpbmUg TlVNX0JVRkZFUkNBQ0hFX09TX1BBR0VTX0VMRU0JMwotI2RlZmluZSBOVU1fQlVGRkVSQ0FD SEVfUEFSVElUSU9OU19FTEVNCTkKKyNkZWZpbmUgTlVNX0JVRkZFUkNBQ0hFX1BBUlRJVElP TlNfRUxFTQkxMgogCiBQR19NT0RVTEVfTUFHSUNfRVhUKAogCQkJCQkubmFtZSA9ICJwZ19i dWZmZXJjYWNoZSIsCkBAIC05NDAsNiArOTQyLDggQEAgcGdfYnVmZmVyY2FjaGVfcGFydGl0 aW9ucyhQR19GVU5DVElPTl9BUkdTKQogCiAJaWYgKFNSRl9JU19GSVJTVENBTEwoKSkKIAl7 CisJCVR5cGVDYWNoZUVudHJ5ICp0eXBlbnRyeSA9IGxvb2t1cF90eXBlX2NhY2hlKElOVDRP SUQsIDApOworCiAJCWZ1bmNjdHggPSBTUkZfRklSU1RDQUxMX0lOSVQoKTsKIAogCQkvKiBT d2l0Y2ggY29udGV4dCB3aGVuIGFsbG9jYXRpbmcgc3R1ZmYgdG8gYmUgdXNlZCBpbiBsYXRl ciBjYWxscyAqLwpAQCAtOTcxLDYgKzk3NSwxMiBAQCBwZ19idWZmZXJjYWNoZV9wYXJ0aXRp b25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CiAJCVR1 cGxlRGVzY0luaXRFbnRyeSh0dXBsZWRlc2MsIChBdHRyTnVtYmVyKSA5LCAibnVtX2FsbG9j cyIsCiAJCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJCVR1cGxlRGVzY0luaXRFbnRyeSh0 dXBsZWRlc2MsIChBdHRyTnVtYmVyKSAxMCwgInRvdGFsX3JlcV9hbGxvY3MiLAorCQkJCQkJ ICAgSU5UOE9JRCwgLTEsIDApOworCQlUdXBsZURlc2NJbml0RW50cnkodHVwbGVkZXNjLCAo QXR0ck51bWJlcikgMTEsICJudW1fcmVxX2FsbG9jcyIsCisJCQkJCQkgICBJTlQ4T0lELCAt MSwgMCk7CisJCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBsZWRlc2MsIChBdHRyTnVtYmVyKSAx MiwgIndlaWd0aHMiLAorCQkJCQkJICAgdHlwZW50cnktPnR5cGFycmF5LCAtMSwgMCk7CiAK IAkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gQmxlc3NUdXBsZURlc2ModHVwbGVkZXNjKTsKIApA QCAtOTkyLDExICsxMDAyLDE3IEBAIHBnX2J1ZmZlcmNhY2hlX3BhcnRpdGlvbnMoUEdfRlVO Q1RJT05fQVJHUykKIAkJCQkJZmlyc3RfYnVmZmVyLAogCQkJCQlsYXN0X2J1ZmZlcjsKIAot CQl1aW50NjQJCWJ1ZmZlcl90b3RhbF9hbGxvY3M7CisJCXVpbnQ2NAkJYnVmZmVyX3RvdGFs X2FsbG9jcywKKwkJCQkJYnVmZmVyX3RvdGFsX3JlcV9hbGxvY3M7CiAKIAkJdWludDMyCQlj b21wbGV0ZV9wYXNzZXMsCiAJCQkJCW5leHRfdmljdGltX2J1ZmZlciwKLQkJCQkJYnVmZmVy X2FsbG9jczsKKwkJCQkJYnVmZmVyX2FsbG9jcywKKwkJCQkJYnVmZmVyX3JlcV9hbGxvY3M7 CisKKwkJaW50CQkgICAqd2VpZ2h0czsKKwkJRGF0dW0JICAgKmR3ZWlnaHRzOworCQlBcnJh eVR5cGUgICphcnJheTsKIAogCQlEYXR1bQkJdmFsdWVzW05VTV9CVUZGRVJDQUNIRV9QQVJU SVRJT05TX0VMRU1dOwogCQlib29sCQludWxsc1tOVU1fQlVGRkVSQ0FDSEVfUEFSVElUSU9O U19FTEVNXTsKQEAgLTEwMDUsOCArMTAyMSwxNiBAQCBwZ19idWZmZXJjYWNoZV9wYXJ0aXRp b25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJCQkgICAmZmlyc3RfYnVmZmVyLCAmbGFzdF9i dWZmZXIpOwogCiAJCUNsb2NrU3dlZXBQYXJ0aXRpb25HZXRJbmZvKGksCi0JCQkJCQkJCSAg ICZjb21wbGV0ZV9wYXNzZXMsICZuZXh0X3ZpY3RpbV9idWZmZXIsCi0JCQkJCQkJCSAgICZi dWZmZXJfdG90YWxfYWxsb2NzLCAmYnVmZmVyX2FsbG9jcyk7CisJCQkJCQkJCSAmY29tcGxl dGVfcGFzc2VzLCAmbmV4dF92aWN0aW1fYnVmZmVyLAorCQkJCQkJCQkgJmJ1ZmZlcl90b3Rh bF9hbGxvY3MsICZidWZmZXJfYWxsb2NzLAorCQkJCQkJCQkgJmJ1ZmZlcl90b3RhbF9yZXFf YWxsb2NzLCAmYnVmZmVyX3JlcV9hbGxvY3MsCisJCQkJCQkJCSAmd2VpZ2h0cyk7CisKKwkJ ZHdlaWdodHMgPSBwYWxsb2NfYXJyYXkoRGF0dW0sIGZ1bmNjdHgtPm1heF9jYWxscyk7CisJ CWZvciAoaW50IGkgPSAwOyBpIDwgZnVuY2N0eC0+bWF4X2NhbGxzOyBpKyspCisJCQlkd2Vp Z2h0c1tpXSA9IEludDMyR2V0RGF0dW0od2VpZ2h0c1tpXSk7CisKKwkJYXJyYXkgPSBjb25z dHJ1Y3RfYXJyYXlfYnVpbHRpbihkd2VpZ2h0cywgZnVuY2N0eC0+bWF4X2NhbGxzLCBJTlQ0 T0lEKTsKIAogCQl2YWx1ZXNbMF0gPSBJbnQzMkdldERhdHVtKGkpOwogCQludWxsc1swXSA9 IGZhbHNlOwpAQCAtMTAzNSw2ICsxMDU5LDE1IEBAIHBnX2J1ZmZlcmNhY2hlX3BhcnRpdGlv bnMoUEdfRlVOQ1RJT05fQVJHUykKIAkJdmFsdWVzWzhdID0gSW50NjRHZXREYXR1bShidWZm ZXJfYWxsb2NzKTsKIAkJbnVsbHNbOF0gPSBmYWxzZTsKIAorCQl2YWx1ZXNbOV0gPSBJbnQ2 NEdldERhdHVtKGJ1ZmZlcl90b3RhbF9yZXFfYWxsb2NzKTsKKwkJbnVsbHNbOV0gPSBmYWxz ZTsKKworCQl2YWx1ZXNbMTBdID0gSW50NjRHZXREYXR1bShidWZmZXJfcmVxX2FsbG9jcyk7 CisJCW51bGxzWzEwXSA9IGZhbHNlOworCisJCXZhbHVlc1sxMV0gPSBQb2ludGVyR2V0RGF0 dW0oYXJyYXkpOworCQludWxsc1sxMV0gPSBmYWxzZTsKKwogCQkvKiBCdWlsZCBhbmQgcmV0 dXJuIHRoZSB0dXBsZS4gKi8KIAkJdHVwbGUgPSBoZWFwX2Zvcm1fdHVwbGUoKFR1cGxlRGVz YykgZnVuY2N0eC0+dXNlcl9mY3R4LCB2YWx1ZXMsIG51bGxzKTsKIAkJcmVzdWx0ID0gSGVh cFR1cGxlR2V0RGF0dW0odHVwbGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3Iu YwppbmRleCBiNThmNTlkNS4uYTYwMWM1MDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVy L2J1Zm1nci5jCkBAIC00MTQ5LDYgKzQxNDksOSBAQCBCZ0J1ZmZlclN5bmMoV3JpdGViYWNr Q29udGV4dCAqd2JfY29udGV4dCkKIAkvKiBhc3N1bWUgd2UgY2FuIGhpYmVybmF0ZSwgYW55 IHBhcnRpdGlvbiBjYW4gc2V0IHRvIGZhbHNlICovCiAJYm9vbAkJaGliZXJuYXRlID0gdHJ1 ZTsKIAorCS8qIHRyaWdnZXIgcGFydGl0aW9uIHJlYmFsYW5jaW5nIGZpcnN0ICovCisJU3Ry YXRlZ3lTeW5jQmFsYW5jZSgpOworCiAJLyogZ2V0IHRoZSBudW1iZXIgb2YgY2xvY2tzd2Vl cCBwYXJ0aXRpb25zLCBhbmQgdG90YWwgYWxsb2MgY291bnQgKi8KIAlTdHJhdGVneVN5bmNQ cmVwYXJlKCZudW1fcGFydGl0aW9ucywgJnJlY2VudF9hbGxvYyk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCmluZGV4IDJkNTY1Nzk2Li5hNTQzZmIxMiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCkBAIC0zNSw2ICszNSwyNiBA QAogI2RlZmluZSBJTlRfQUNDRVNTX09OQ0UodmFyKQkoKGludCkoKigodm9sYXRpbGUgaW50 ICopJih2YXIpKSkpCiAKIAorLyoKKyAqIFhYWCBXZSBuZWVkIHRvIG1ha2UgQ2xvY2tTd2Vl cCBmaXhlZC1zaXplLCBzbyB0aGF0IHdlIGNhbiBoYXZlIGFuIGFycmF5CisgKiBpbiBzaGFy ZWQgbWVtb3J5LiBUaGUgZWFzaWVzdCB3YXkgaXMgdG8gcGljayBhIHN1ZmZpY2llbnRseSBo aWdoIHZhbHVlCisgKiB0aGF0IG5vIHN5c3RlbSB3aWxsIGFjdHVhbGx5IG5lZWQuIDMyIHNl ZW1zIGhpZ2ggZW5vdWdoLgorICoKKyAqIFhYWCBXZSBzaG91bGQgZW5mb3JjZSB0aGlzIGlu IGJ1Zm1nci5jLCB3aGVuIGluaXRpYWxpemluZyB0aGUgcGFydGl0aW9ucy4KKyAqLworI2Rl ZmluZSBNQVhfQlVGRkVSX1BBUlRJVElPTlMJCTMyCisKKy8qCisgKiBDb2VmZmljaWVudCB1 c2VkIHRvIGNvbWJpbmUgdGhlIG9sZCBhbmQgbmV3IGJhbGFuY2UgY29lZmZpY2llbnRzLCB1 c2luZworICogd2VpZ2h0ZWQgYXZlcmFnZSwgc28gdGhhdCB3ZSBkb24ndCBmbGFwIHRvbyBt dWNoLiBUaGUgaGlnaGVyIHRoZSB2YWx1ZSwgdGhlCisgKiBtb3JlIHRoZSBvbGQgdmFsdWUg YWZmZWN0cyB0aGUgcmVzdWx0LgorICoKKyAqIFhYWCBEb2Vzbid0IHRoaXMgb2JzY3VyZSB0 aGUgaW50ZXJwcmV0YXRpb24gb2Ygd2VpZ2h0cyBhcyBwcm9iYWJpbGl0aWVzIHRvCisgKiBh bGxvY2F0ZSBmcm9tIGEgZ2l2ZW4gcGFydGl0aW9uPyBEb2VzIGl0IHN0aWxsIHN1bSB0byAx MDAlPyBJIGRvbid0IHRoaW5rCisgKiBzbywgaXQncyBqdXN0IGEgZnJhY3Rpb24gb2YgYWxs b2NhdGlvbnMgdG8gZ28gZnJvbSBhIGdpdmVuIHBhcnRpdGlvbi4KKyAqLworI2RlZmluZSBD TE9DS1NXRUVQX0hJU1RPUllfQ09FRkYJMC41CisKIC8qCiAgKiBJbmZvcm1hdGlvbiBhYm91 dCBvbmUgcGFydGl0aW9uIG9mIHRoZSBDbG9ja1N3ZWVwIChvbiBhIHN1YnNldCBvZiBidWZm ZXJzKS4KICAqCkBAIC02OCw5ICs4OCwzMiBAQCB0eXBlZGVmIHN0cnVjdAogCXVpbnQzMgkJ Y29tcGxldGVQYXNzZXM7IC8qIENvbXBsZXRlIGN5Y2xlcyBvZiB0aGUgY2xvY2stc3dlZXAg Ki8KIAlwZ19hdG9taWNfdWludDMyIG51bUJ1ZmZlckFsbG9jczsJLyogQnVmZmVycyBhbGxv Y2F0ZWQgc2luY2UgbGFzdCByZXNldCAqLwogCisJLyoKKwkgKiBCdWZmZXJzIHRoYXQgc2hv dWxkIGhhdmUgYmVlbiBhbGxvY2F0ZWQgaW4gdGhpcyBwYXJ0aXRpb24gKGJ1dCBtaWdodAor CSAqIGhhdmUgYmVlbiByZWRpcmVjdGVkIHRvIGtlZXAgYWxsb2NhdGlvbnMgYmFsYW5jZWQp LgorCSAqLworCXBnX2F0b21pY191aW50MzIgbnVtUmVxdWVzdGVkQWxsb2NzOworCiAJLyog cnVubmluZyB0b3RhbCBvZiBhbGxvY3MgKi8KIAlwZ19hdG9taWNfdWludDY0IG51bVRvdGFs QWxsb2NzOworCXBnX2F0b21pY191aW50NjQgbnVtVG90YWxSZXF1ZXN0ZWRBbGxvY3M7CiAK KwkvKgorCSAqIFdlaWdodHMgdG8gYmFsYW5jZSBidWZmZXIgYWxsb2NhdGlvbnMgZm9yIGFs bCB0aGUgcGFydGl0aW9ucy4gRWFjaAorCSAqIHBhcnRpdGlvbiBnZXRzIGEgdmVjdG9yIG9m IHdlaWdodHMgMC0xMDAsIGRldGVybWluaW5nIHdoYXQgZnJhY3Rpb24KKwkgKiBvZiBidWZm ZXJzIHRvIGFsbG9jYXRlIGZyb20gdGhhdCBwYXJ0aXRpb24uIFNvIFs3NSwgMTUsIDUsIDVd IHdvdWxkCisJICogbWVhbiA3NSUgYWxsb2NhdGlvbnMgc2hvdWxkIGdvIGZyb20gcGFydGl0 aW9uIDAsIDE1JSBmcm9tIHBhcnRpdGlvbgorCSAqIDEsIGFuZCA1JSBmcm9tIHBhcnRpdGlv bnMgMiYzLiBFYWNoIHBhcnRpdGlvbiBnZXRzIGEgZGlmZmVyZW50IHZlY3RvcgorCSAqIG9m IHdlaWdodHMuCisJICoKKwkgKiBCYWNrZW5kcyB1c2UgdGhlIGJ1ZGdldCBmcm9tIGl0J3Mg ImhvbWUiIHBhcnRpdGlvbiwgc28gdGhhdCBhIGJ1c3kKKwkgKiBwYXJ0aXRpb25zICh3aXRo IGEgbG90IG9mIHByb2Nlc3NlcyBvbiB0aGF0IE5VTUEgbm9kZSBldGMuKSBzcHJlYWQKKwkg KiB0aGUgYWxsb2NhdGlvbnMgZXZlbmx5LgorCSAqCisJICogWFhYIEFsbG9jYXRlIGEgZml4 ZWQtbGVuZ3RoIGFycmF5LCB0byBzaW1wbGlmeSB3b3JraW5nIHdpdGggYXJyYXkgb2YKKwkg KiB0aGUgc3RydWN0cywgZXRjLgorCSAqLworCXVpbnQ4CQliYWxhbmNlW01BWF9CVUZGRVJf UEFSVElUSU9OU107CiB9IENsb2NrU3dlZXA7CiAKIC8qCkBAIC0xNDAsNyArMTgzLDY2IEBA IHN0YXRpYyBCdWZmZXJEZXNjICpHZXRCdWZmZXJGcm9tUmluZyhCdWZmZXJBY2Nlc3NTdHJh dGVneSBzdHJhdGVneSwKIAkJCQkJCQkJCSB1aW50NjQgKmJ1Zl9zdGF0ZSk7CiBzdGF0aWMg dm9pZCBBZGRCdWZmZXJUb1JpbmcoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksCiAJ CQkJCQkJQnVmZmVyRGVzYyAqYnVmKTsKLXN0YXRpYyBDbG9ja1N3ZWVwICpDaG9vc2VDbG9j a1N3ZWVwKHZvaWQpOworc3RhdGljIENsb2NrU3dlZXAgKkNob29zZUNsb2NrU3dlZXAoYm9v bCBiYWxhbmNlKTsKKworLyoKKyAqIGNsb2Nrc3dlZXAgYWxsb2NhdGlvbiBiYWxhbmNpbmcK KyAqCisgKiBUbyBiYWxhbmNlIGFsbG9jYXRpb25zIGZyb20gY2xvY2tzd2VlcCBwYXJ0aXRp b25zLCBlYWNoIHBhcnRpdGlvbiBnZXRzIGEKKyAqIGJ1ZGdldCBmb3IgYWxsb2NhdGluZyBi dWZmZXJzIGZyb20gb3RoZXIgcGFydGl0aW9ucy4gQSBwcm9jZXNzIHRoYXQKKyAqICJleGhh dXN0cyIgYSBidWRnZXQgaW4gaXQncyBob21lIHBhcnRpdGlvbiBnZXRzIHJlZGlyZWN0ZWQg dG8gdGhlIG90aGVyCisgKiBwYXJ0aXRpb25zLCBkcml2ZW4gYnkgdGhlIGJ1ZGdldHMuCisg KgorICogRm9yIGV4YW1wbGUsIGEgcGFydGl0aW9uIG1heSBoYXZlIGJ1ZGdldCBbMjUsIDI1 LCAyNSwgMjVdLCB3aGljaCBtZWFucworICogZWFjaCBvZiB0aGUgNCBwYXJ0aXRpb25zIHNo b3VsZCBnZXQgMS80IG9mIGFsbG9jYXRpb25zLiBPciB0aGUgYnVnZXQKKyAqIGNhbiBiZSBb NTAsIDUwLCAwLCAwXSwgd2hpY2ggbWVhbnMgYWxsIGFsbG9jYXRpb25zIHdpbGwgZ28gdG8g dGhlIGZpcnN0CisgKiB0d28gcGFydGl0aW9ucyAob25lIG9mIHRoZW0gYmVpbmcgdGhlICJo b21lIiBvbmUpOworICoKKyAqIFdlIGNvdWxkIGRvIHRoYXQgYmFzZWQgb24gYSByYW5kb20g bnVtYmVyIGdlbmVyYXRvciwgYnV0IGZvciBub3cgd2UKKyAqIHNpbXBseSB0cmVhdCB0aGUg dmFsdWVzIGFzIGEgYnVkZ2V0LCBpLmUuIGEgbnVtYmVyIG9mIGFsbG9jYXRpb25zIHRvCisg KiBzZXJ2ZSBmcm9tIG90aGVyIHBhcnRpdGlvbnMsIGFuZCBtb3ZlIGluIHJvdW5kLXJvYmlu IHdheS4KKyAqCisgKiBUaGlzIGlzIHZlcnkgc2ltcGxlL2NoZWFwLCBhbmQgb3ZlciBtYW55 IGFsbG9jYXRpb25zIGl0IGhhcyB0aGUgc2FtZQorICogZWZmZWN0LiBGb3IgcGVyaW9kcyBv ZiBsb3cgYWN0aXZpdHkgaXQgbWF5IGRpdmVyZ2UsIGJ1dCB0aGF0IGRvZXMgbm90CisgKiBt YXR0ZXIgbXVjaCAod2UgY2FyZSBhYm91dCBoaWdoLWFjdGl2aXR5IHBlcmlvZHMgbXVjaCBt b3JlKS4KKyAqCisgKiBXZSBpbnRlbnRpb25hbGx5IGtlZXAgdGhlICJidWRnZXQiIGZhaXJs eSBsb3csIHdpdGggdGhlIHN1bSBmb3IgYSBnaXZlbgorICogcGFydGl0aW9uIDEwMC4gVGhh dCBtZWFucyB3ZSBnZXQgdG8gdGhlIHNhbWUgcGFydGl0aW9uIGFmdGVyIG9ubHkgMTAwCisg KiBhbGxvY2F0aW9ucywga2VlcGluZyBpdCBtb3JlIGJhbGFuY2VkLiBXZSBjYW4gbWFrZSB0 aGUgYnVkZ2V0cyBoaWdoZXIKKyAqIChzYXksIHRvIG1hdGNoIHRoZSBleHBlY3RlZCBudW1i ZXIgb2YgYWxsb2NhdGlvbnMsIGkuZS4gYm91dCB0aGUgYXZlcmFnZQorICogbnVtYmVyIG9m IGFsbG9jYXRpb25zIGZyb20gdGhlIHBhc3QgaW50ZXJ2YWwpLiBPciBtYXliZSBjb25maWd1 cmFibGUuCisgKgorICogWFhYIFdlIHNob3VsZCBhbHdheXMgc3RhcnQgYWxsb2NhdGluZyBm cm9tIHRoZSAiaG9tZSIgcGFydGl0aW9uLCBpLmUuCisgKiBmcm9tIGZyb20gaXQsIGFuZCBv bmx5IHRoZW4gcmVkaXJlY3QgdG8gb3RoZXIgcGFydGl0aW9ucy4KKyAqCisgKiBYWFggSXQg cHJvYmFibHkgaXMgbm90IGdyZWF0IGFsbCB0aGUgcHJvY2Vzc2VzIGZyb20gdGhhdCAiaG9t ZSIKKyAqIHBhcnRpdGlvbiBhcmUgY29vcmRpbmF0ZWQsIGFuZCBtb3ZlIHRvIGJldHdlZW4g cGFydGl0aW9ucyBhdCBhYm91dCB0aGUKKyAqIHNhbWUgdGltZS4gTm90IHN1cmUgd2hhdCB0 byBkbyBhYm91dCB0aGlzLgorICoKKyAqIFhYWCBXZSBzaG91bGQgYWxzbyBwcmVmZXIgb3Ro ZXIgcGFydGl0aW9ucyBmcm9tIHRoZSBzYW1lIE5VTUEgbm9kZSAoaWYKKyAqIHRoZXJlIGFy ZSBzb21lKS4gUHJvYmFibHkgYnkgc2V0dGluZyB0aGUgYnVkZ2V0cy4KKyAqCisgKiBGSVhN RSBFeHBsYWluIGF0IHdoaWNoIHBvaW50IGFyZSB0aGUgYnVkZ2V0cyByZWNhbGN1bGF0ZWQs IGJ5IHdoaWNoCisgKiBwcm9jZXNzLCBhbmQgaG93IHRoYXQgYWZmZWN0cyBvdGhlciBwcm9j ZXNzZXMgYWxsb2NhdGluZyBidWZmZXJzLgorICovCisKKy8qCisgKiBUaGUgIm9wdGltYWwi IGNsb2NrLXN3ZWVwIHBhcnRpdGlvbi4gQWZ0ZXIgYSBiYWNrZW5kIGdldHMgbW92ZWQgdG8g YQorICogZGlmZmVyZW50IE5VTUEgbm9kZSwgd2UgcmVzdGFydCB0aGUgYmFsYW5jaW5nIHNv IHRoYXQgaXQgdXNlcyB0aGUKKyAqIGNvcnJlY3QgImJ1ZGdldCIgZnJvbSB0aGUgbmV3IGhv bWUgcGFydGl0aW9uLgorICovCitzdGF0aWMgaW50IGNsb2Nrc3dlZXBfcGFydGl0aW9uX2hv bWUgPSAtMTsKKworLyoKKyAqIFRoZSBwYXJ0aXRpb24gdGhlIGJhY2tlbmQgaXMgY3VycmVu dGx5IGFsbG9jYXRpbmcgZnJvbSAoZWl0aGVyIHRoZQorICogaG9tZSBvbmUsIG9yIG9uZSBv ZiB0aGUgcmVkaXJlY3RlZCBvbmVzKS4KKyAqLworc3RhdGljIGludCBjbG9ja3N3ZWVwX3Bh cnRpdGlvbl9jdXJyZW50ID0gLTE7CisKKy8qCisgKiBUaGUgbnVtYmVyIG9mIGJ1ZmZlcnMg dG8gYWxsb2NhdGUgZnJvbSB0aGUgY3VycmVudCBwYXJ0aXRpb24uCisgKi8KK3N0YXRpYyBp bnQgY2xvY2tzd2VlcF9wYXJ0aXRpb25fYnVkZ2V0ID0gMDsKIAogLyoKICAqIENsb2NrU3dl ZXBUaWNrIC0gSGVscGVyIHJvdXRpbmUgZm9yIFN0cmF0ZWd5R2V0QnVmZmVyKCkKQEAgLTE1 Miw3ICsyNTQsNyBAQCBzdGF0aWMgaW5saW5lIHVpbnQzMgogQ2xvY2tTd2VlcFRpY2sodm9p ZCkKIHsKIAl1aW50MzIJCXZpY3RpbTsKLQlDbG9ja1N3ZWVwICpzd2VlcCA9IENob29zZUNs b2NrU3dlZXAoKTsKKwlDbG9ja1N3ZWVwICpzd2VlcCA9IENob29zZUNsb2NrU3dlZXAodHJ1 ZSk7CiAKIAkvKgogCSAqIEF0b21pY2FsbHkgbW92ZSBoYW5kIGFoZWFkIG9uZSBidWZmZXIg LSBpZiB0aGVyZSdzIHNldmVyYWwgcHJvY2Vzc2VzCkBAIC0zMDAsMTEgKzQwMiw2OCBAQCBD bG9ja1N3ZWVwUGFydGl0aW9uSW5kZXgodm9pZCkKICAqIGFuZCB0aGF0J3MgY2hlYXBlci4g QnV0IGhvdyB3b3VsZCB0aGF0IGRlYWwgd2l0aCBvZGQgbnVtYmVyIG9mIG5vZGVzPwogICov CiBzdGF0aWMgQ2xvY2tTd2VlcCAqCi1DaG9vc2VDbG9ja1N3ZWVwKHZvaWQpCitDaG9vc2VD bG9ja1N3ZWVwKGJvb2wgYmFsYW5jZSkKIHsKKwkvKiBXaGF0J3MgdGhlICJvcHRpbWFsIiBw YXJ0aXRpb24gZm9yIHRoaXMgYmFja2VuZD8gKi8KIAlpbnQJCQlpbmRleCA9IENsb2NrU3dl ZXBQYXJ0aXRpb25JbmRleCgpOworCUNsb2NrU3dlZXAgKnN3ZWVwID0gJlN0cmF0ZWd5Q29u dHJvbC0+c3dlZXBzW2luZGV4XTsKKworCS8qCisJICogV2FzIHRoZSBwcm9jZXNzIG1pZ3Jh dGVkIHRvIGEgZGlmZmVyZW50IE5VTUEgbm9kZT8gSWYgdGhlIGhvbWUgcGFydGl0aW9uCisJ ICogY2hhbmdlZCwgd2UgbmVlZCB0byByZXNldCB0aGUgYnVkZ2V0IGFuZCBzdGFydCBvdmVy LCBzbyB0aGF0IHdlIGNvcnJlY3RseQorCSAqIHByZWZlciAibmVhcmJ5IiBwYXJ0aXRpb25z IGV0Yy4KKwkgKgorCSAqIFhYWCBDb3VsZCB0aGlzIGJlIGEgcHJvYmxlbSB3aGVuIHByb2Nl c3NlcyBtb3ZlIGFsbCB0aGUgdGltZT8gSSBkb24ndAorCSAqIHRoaW5rIHNvIC0gaWYgYSBw cm9jZXNzIG1vdmVzIGJldHdlZW4gbWFueSBwYXJ0aXRpb25zLCB0aGF0IGFsb25lIHdpbGwK KwkgKiBzcHJlYWQgdGhlIGFsbG9jYXRpb25zIG92ZXIgcGFydGl0aW9ucy4gU2ltaWxhcmx5 LCBpZiB0aGVyZSBhcmUgbWFueQorCSAqIHByb2Nlc3NlcywgdGhhdCBzaG91bGQgbWFrZSBp dCBldmVuIG1vcmUgZXZlbi4KKwkgKi8KKwlpZiAoY2xvY2tzd2VlcF9wYXJ0aXRpb25faG9t ZSAhPSBpbmRleCkKKwl7CisJCWNsb2Nrc3dlZXBfcGFydGl0aW9uX2hvbWUgPSBpbmRleDsK KwkJY2xvY2tzd2VlcF9wYXJ0aXRpb25fY3VycmVudCA9IGluZGV4OworCQljbG9ja3N3ZWVw X3BhcnRpdGlvbl9idWRnZXQgPSBzd2VlcC0+YmFsYW5jZVtpbmRleF07CisJfQorCisJLyog d2Ugc2hvdWxkIGhhdmUgYSB2YWxpZCBwYXJ0aXRpb24gKi8KKwlBc3NlcnQoY2xvY2tzd2Vl cF9wYXJ0aXRpb25faG9tZSAhPSAtMSk7CisJQXNzZXJ0KGNsb2Nrc3dlZXBfcGFydGl0aW9u X2N1cnJlbnQgIT0gLTEpOworCUFzc2VydChjbG9ja3N3ZWVwX3BhcnRpdGlvbl9idWRnZXQg Pj0gMCk7CisKKwkvKgorCSAqIFdoZW4gYmFsYW5jaW5nIGFsbG9jYXRpb25zLCByZWRpcmVj dCB0aGUgYWxsb2NhdGlvbnMgdG8gb3RoZXIgcGFydGl0aW9ucworCSAqIGFjY29yZGluZyB0 byB0aGUgYnVkZ2V0cy4gV2UgbW92ZSB0aHJvdWdoIHBhcnRpdGlvbnMgaW4gYSByb3VuZC1y b2JpbiB3YXksCisJICogYWZ0ZXIgYWxsb2NhdGluZyB0aGUgImJ1ZGdldCIgb2YgYWxsb2Nh dGlvbnMgZnJvbSB0aGUgY3VycmVudCBvbmUuCisJICovCisJaWYgKGJhbGFuY2UpCisJewor CQkvKgorCQkgKiBSYW4gb3V0IG9mIGJ1ZGdldCBmcm9tIHRoZSBjdXJyZW50IHBhcnRpdGlv bj8gTW92ZSB0byB0aGUgbmV4dCBvbmUKKwkJICogd2l0aCBub24temVybyBidWRnZXQuCisJ CSAqLworCQl3aGlsZSAoY2xvY2tzd2VlcF9wYXJ0aXRpb25fYnVkZ2V0ID09IDApCisJCXsK KwkJCS8qIHdyYXAgYXJvdW5kIGF0IHRoZSBlbmQgKi8KKwkJCWNsb2Nrc3dlZXBfcGFydGl0 aW9uX2N1cnJlbnQrKzsKKwkJCWlmIChjbG9ja3N3ZWVwX3BhcnRpdGlvbl9jdXJyZW50ID49 IFN0cmF0ZWd5Q29udHJvbC0+bnVtX3BhcnRpdGlvbnMpCisJCQkJY2xvY2tzd2VlcF9wYXJ0 aXRpb25fY3VycmVudCA9IDA7CisKKwkJCWNsb2Nrc3dlZXBfcGFydGl0aW9uX2J1ZGdldAor CQkJCT0gc3dlZXAtPmJhbGFuY2VbY2xvY2tzd2VlcF9wYXJ0aXRpb25fY3VycmVudF07CisJ CX0KIAotCXJldHVybiAmU3RyYXRlZ3lDb250cm9sLT5zd2VlcHNbaW5kZXhdOworCQkvKiBh Y2NvdW50IGZvciB0aGUgY3VycmVudCBhbGxvY2F0aW9uICovCisJCS0tY2xvY2tzd2VlcF9w YXJ0aXRpb25fYnVkZ2V0OworCisJCS8qCisJCSAqIEFjY291bnQgZm9yIHRoZSBhbGxvY2F0 aW9uIGluIHRoZSAiaG9tZSIgcGFydGl0aW9uLCBzbyB0aGF0IHRoZSBuZXh0CisJCSAqIHJv dW5kIG9mIHJlYmFsYW5jaW5nIChyZWNhbGN1bGF0aW5nIHRoZSBidWRnZXRzKSBrbm93cyBh Ym91dCB0aGUKKwkJICogYWxsb2NhdGlvbiB0cmFmZmljIGluIHZhcmlvdXMgcGFydGl0aW9u cy4KKwkJICovCisJCXBnX2F0b21pY19mZXRjaF9hZGRfdTMyKCZzd2VlcC0+bnVtUmVxdWVz dGVkQWxsb2NzLCAxKTsKKwl9CisKKwlyZXR1cm4gJlN0cmF0ZWd5Q29udHJvbC0+c3dlZXBz W2Nsb2Nrc3dlZXBfcGFydGl0aW9uX2N1cnJlbnRdOwogfQogCiAvKgpAQCAtMzgxLDcgKzU0 MCw3IEBAIFN0cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5 LCB1aW50NjQgKmJ1Zl9zdGF0ZSwgYm9vbCAqZnJvbV9yCiAJICogYmV0d2VlbiBDUFVzIC8g TlVNQSBub2RlcyBpbiBiZXR3ZWVuLCB0aGVzZSBjYWxsIG1heSBwaWNrIGRpZmZlcmVudAog CSAqIHBhcnRpdGlvbnMsIGNvbmZ1c2luZyB0aGUgbG9naWMgYSBiaXQuCiAJICovCi0JcGdf YXRvbWljX2ZldGNoX2FkZF91MzIoJkNob29zZUNsb2NrU3dlZXAoKS0+bnVtQnVmZmVyQWxs b2NzLCAxKTsKKwlwZ19hdG9taWNfZmV0Y2hfYWRkX3UzMigmQ2hvb3NlQ2xvY2tTd2VlcChm YWxzZSktPm51bUJ1ZmZlckFsbG9jcywgMSk7CiAKIAkvKgogCSAqIFVzZSB0aGUgImNsb2Nr IHN3ZWVwIiBhbGdvcml0aG0gdG8gZmluZCBhIGZyZWUgYnVmZmVyCkBAIC00ODUsNiArNjQ0 LDIyOSBAQCBTdHJhdGVneUdldEJ1ZmZlcihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVn eSwgdWludDY0ICpidWZfc3RhdGUsIGJvb2wgKmZyb21fcgogCX0KIH0KIAorLyoKKyAqIFN0 cmF0ZWd5U3luY0JhbGFuY2UKKyAqCQl1cGRhdGUgcGFydGl0aW9uIGJ1ZGdldHMsIHRvIGJh bGFuY2UgdGhlIGJ1ZmZlciBhbGxvY2F0aW9ucworICoKKyAqIFdlIHdhbnQgdG8gZ2l2ZSBw cmVmZXJlbmNlIHRvIGFsbG9jYXRpbmcgYnVmZmVycyBvbiB0aGUgc2FtZSBOVU1BIG5vZGUs CisgKiBidXQgdGhhdCBtaWdodCBsZWFkIHRvIGltYmFsYW5jZSAtIGEgc2luZ2xlIHByb2Nl c3Mgd291bGQgb25seSB1c2UgYQorICogZnJhY3Rpb24gb2Ygc2hhcmVkIGJ1ZmZlcnMuIFdl IGRvbid0IHdhbnQgdGhhdCwgd2Ugd2FudCB0byB1dGlsaXplIHRoZQorICogd2hvbGUgc2hh cmVkIGJ1ZmZlcnMuIFRoZSBudW1iZXIgb2YgYWxsb2NhdGlvbnMgaW4gZWFjaCBwYXJ0aXRp b24gbWF5CisgKiBhbHNvIGNoYW5nZSBvdmVyIHRpbWUsIHNvIHdlIG5lZWQgdG8gYWRhcHQg dG8gdGhhdC4KKyAqCisgKiBUbyBhbGxvdyB0aGlzICJhZGFwdGl2ZSBiYWxhbmNpbmciLCBl YWNoIHBhcnRpdGlvbiBoYXMgYSBzZXQgb2Ygd2VpZ2h0cywKKyAqIGRldGVybWluaW5nIHdo YXQgZnJhY3Rpb24gb2YgYWxsb2NhdGlvbnMgdG8gZGlyZWN0IHRvIG90aGVyIHBhcnRpdGlv bnMuCisgKiBGb3Igc2ltcGxpY2l0eSB0aGUgY29lZmZpY2llbnRzIGFyZSBpbnRlZ2VycyAw LTEwMCwgZXhwcmVzc2luZyB0aGUKKyAqIHBlcmNlbnRhZ2Ugb2YgYWxsb2NhdGlvbnMgcmVk aXJlY3RlZCB0byB0aGF0IHBhcnRpdGlvbi4KKyAqCisgKiBDb25zaWRlciBmb3IgZXhhbXBs ZSB3ZWlnaHRzIFs1MCwgMjUsIDI1LCAwXSBmb3Igb25lIG9mIDQgcGFydGl0aW9ucy4KKyAq IFRoaXMgbWVhbnMgNTAlIG9mIGFsbG9jYXRpb25zIHdpbGwgYmUgcmVkaXJlY3RlZCB0byBw YXJ0aXRpb24gMCwgMjUlCisgKiB0byBwYXJ0aXRpb25zIDEgYW5kIDIsIGFuZCBubyBhbGxv Y2F0aW9ucyB3aWxsIGdvIHRvIHBhcnRpdGlvbiAzLgorICoKKyAqIFRoaXMgbWVhbnMgYW4g YWxsb2NhdGlvbiBtYXkgYmUgcmVxdWVzdGVkIGluIHBhcnRpdGlvbiBBIChpLmUuIHRoZQor ICogaG9tZSBwYXJ0aXRpb24gb2YgdGhlIHByb2Nlc3MgcmVxdWVzdGluZyBpdCksIGJ1dCBl bmQgdXAgYWxsb2NhdGluZworICogdGhlIGJ1ZmZlciBpbiBwYXJ0aXRpb24gQi4gV2UgaGF2 ZSBhIGNvdW50ZXIgZm9yIGJvdGggLSB0aGUgbnVtYmVyIG9mCisgKiBhbGxvY2F0aW9ucyBy ZXF1ZXN0ZWQgaW4gYSBwYXJ0aXRpb24sIGFuZCB0aGUgbnVtYmVyIG9mIGFsbG9jYXRpb25z CisgKiBhY3R1YWxseSBoYW5kbGVkIGJ5IHRoYXQgcGFydGl0aW9uLiBUaGUgZm9ybWVyIGlz IHVzZWQgZm9yIGNhbGN1bGF0aW5nCisgKiB3ZWlnaHRzLCB0aGUgbGF0dGVyIGlzIHVzZWQg b25seSBmb3IgbW9uaXRvcmluZy4KKyAqCisgKiBUaGUgYmFsYW5jaW5nIGhhcHBlbnMgaW4g aW50ZXJ2YWxzIC0gaXQgYWRqdXN0cyBmdXR1cmUgYWxsb2NhdGlvbnMKKyAqIGJhc2VkIG9u IHN0YXRzIGFib3V0IHJlY2VudCBhbGxvY2F0aW9ucywgbmFtZWx5OgorICoKKyAqIC0gbnVt QnVmZmVyQWxsb2NzIC0gbnVtYmVyIG9mIGFsbG9jYXRpb25zIHNlcnZlZCBieSBhIHBhcnRp dGlvbgorICoKKyAqIC0gbnVtUmVxdWVzdGVkQWxsb2NzIC0gbnVtYmVyIG9mIGFsbG9jYXRp b3MgcmVxdWVzdGVkIGluIGEgcGFydGl0aW9uCisgKgorICogV2UncmUgdHJ5aW5nIHRvIHNt b290aCBudW1CdWZmZXJBbGxvY3MgaW4gdGhlIG5leHQgaW50ZXJ2YWwsIGJhc2VkIG9uCisg KiBudW1SZXF1ZXN0ZWRBbGxvY3MgbWVhc3VyZWQgaW4gdGhlIGxhc3QgaW50ZXJ2YWwuCisg KgorICogVGhlIGJhbGFuY2luZyBhbGdvcml0aG0gd29ya3MgbGlrZSB0aGlzOgorICoKKyAq IC0gdGhlIHRhcmdldCAoYXZlcmFnZSBudW1iZXIgb2YgYWxsb2NhdGlvbnMgcGVyIHBhcnRp dGlvbikgaXMgY2FsY3VsYXRlZAorICogICBmcm9tIHRvdGFsIG51bWJlciBvZiBhbGxvY2F0 aW9ucyByZXF1ZXN0ZWQgaW4gdGhlIGxhc3QgaW50ZXJ2YWFsCisgKgorICogLSBwYXJ0aXRp b25zIGdldCBkaXZpZGVkIGludG8gdHdvIGdyb3VwcyAtIHRob3NlIHdpdGggbW9yZSBhbGxv Y2F0aW9uCisgKiAgIHJlcXVlc3RzIHRoYW4gdGhlIHRhcmdldCwgYW5kIHRob3NlIHdpdGgg ZmV3ZXIgcmVxdWVzdHMKKyAqCisgKiAtIHdlICJkaXN0cmlidXRlIiB0aGUgZGVsdGEgKHdo aWNoIGlzIHRoZSBzYW1lIGJldHdlZW4gdGhlIGdyb3VwcykKKyAqICAgYmV0d2VlbiB0aGUg Z3JvdXBzIChvbmUgaGFzIG1vcmUsIHRoZSBvdGhlciBmZXdlcikKKyAqCisgKiBQYXJ0aXRp b25zIHdpdGggKG5hbGxvY3MgPiBhdmdfbmFsbG9jcykgcmVkaXJlY3QgdGhlIGV4dHJhIGFs bG9jYXRpb25zLAorICogd2l0aCBlYWNoIHRhcmdldCBhbGxvY2F0aW9uIGdldHRpbmcgYSBw cm9wb3J0aW9uYWwgcGFydCAod2l0aCByZXNwZWN0CisgKiB0byB0aGUgdG90YWwgZGVsdGEp LgorICoKKyAqIFhYWCBDdXJyZW50bHkgdGhpcyBkb2VzIG5vdCBnaXZlIHByZWZlcmVuY2Ug dG8gb3RoZXIgcGFydGl0aW9ucyBvbiB0aGUKKyAqIHNhbWUgTlVNQSBub2RlIChyZWRpcmVj dCB0byBpdCBmaXJzdCksIGJ1dCBpdCBjb3VsZC4KKyAqLwordm9pZAorU3RyYXRlZ3lTeW5j QmFsYW5jZSh2b2lkKQoreworCS8qIHNuYXBzaG90IG9mIGFsbG9jYXRpb24gcmVxdWVzdHMg Zm9yIHBhcnRpdGlvbnMgKi8KKwl1aW50MzIJYWxsb2NzW01BWF9CVUZGRVJfUEFSVElUSU9O U107CisKKwl1aW50MzIJdG90YWxfYWxsb2NzID0gMCwJLyogdG90YWwgbnVtYmVyIG9mIGFs bG9jYXRpb25zICovCisJCQlhdmdfYWxsb2NzLAkJCS8qIGF2ZXJhZ2UgYWxsb2NhdGlvbnMg KHBlciBwYXJ0aXRpb24pICovCisJCQlkZWx0YV9hbGxvY3MgPSAwOwkvKiBzdW0gb2YgYWxs b2NzIGFib3ZlIGF2ZXJhZ2UgKi8KKworCS8qCisJICogQ29sbGVjdCB0aGUgbnVtYmVyIG9m IGFsbG9jYXRpb25zIHJlcXVlc3RlZCBpbiB0aGUgcGFzdCBpbnRlcnZhbC4KKwkgKiBXaGls ZSBhdCBpdCwgcmVzZXQgdGhlIGNvdW50ZXIgdG8gc3RhcnQgdGhlIG5ldyBpbnRlcnZhbC4K KwkgKgorCSAqIFhYWCBXZSBsb2NrIHRoZSBwYXJ0aXRpb25zIG9uZSBieSBvbmUsIHNvIHRo aXMgaXMgbm90IGEgcGVyZmVjdGx5CisJICogY29uc2lzdGVudCBzbmFwc2hvdCBvZiB0aGUg Y291bnRzLCBhbmQgdGhlIHJlc2V0cyBoYXBwZW4gYmVmb3JlIHdlCisJICogdXBkYXRlIHRo ZSB3ZWlnaHRzIHRvby4gQnV0IHdlJ3JlIG9ubHkgbG9va2luZyBmb3IgaGV1cmlzdGljcywg c28KKwkgKiB0aGlzIHNob3VsZCBiZSBnb29kIGVub3VnaC4KKwkgKgorCSAqIFhYWCBBIHNp bWlsYXIgaXNzdWUgYXBwbGllcyB0byB0aGUgY291bnRlciByZXNldCBsYXRlciAtIHdlIGhh dmVuJ3QKKwkgKiB1cGRhdGVkIHRoZSB3ZWlnaHRzIHlldCwgc28gc29tZSBvZiB0aGUgcmVx dWVzdHMgY291bnRlZCBmb3IgdGhlIG5leHQKKwkgKiBpbnRlcnZhbCB3aWxsIGJlIHJlZGly ZWN0ZWQgcGVyIGN1cnJlbnQgd2VpZ2h0cy4gU2hvdWxkIGJlIGZpbmUsIGl0J3MKKwkgKiBq dXN0IGFuIGFwcHJveGltYXRlIGhldXJpc3RpY3MsIGFuZCB0aGVyZSBzaG91bGQgYmUgdmVy eSBmZXcgcmVxdWVzdHMgaW4KKwkgKiBiZXR3ZWVuLiBBbHRlcm5hdGl2ZWx5LCB3ZSBjb3Vs ZCByZXNldCB0aGUgcmVxdWVzdCBjb3VudGVycyB3aGVuIHNldHRpbmcKKwkgKiB0aGUgbmV3 IHdlaWdodHMsIGFuZCBqdXN0IGlnbm9yZSB0aGUgY291cGxlIHJlcXVlc3RzIGluIGJldHdl ZW4uCisJICoKKwkgKiBYWFggRG9lcyB0aGlzIG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGNv bXBsZXRlUGFzc2VzIHRvbz8KKwkgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IFN0cmF0ZWd5 Q29udHJvbC0+bnVtX3BhcnRpdGlvbnM7IGkrKykKKwl7CisJCUNsb2NrU3dlZXAgKnN3ZWVw ID0gJlN0cmF0ZWd5Q29udHJvbC0+c3dlZXBzW2ldOworCisJCS8qIG5vIG5lZWQgZm9yIGEg c3BpbmxvY2sgKi8KKwkJYWxsb2NzW2ldID0gcGdfYXRvbWljX2V4Y2hhbmdlX3UzMigmc3dl ZXAtPm51bVJlcXVlc3RlZEFsbG9jcywgMCk7CisKKwkJLyogYWRkIHRoZSBhbGxvY3MgdG8g cnVubmluZyB0b3RhbCAqLworCQlwZ19hdG9taWNfZmV0Y2hfYWRkX3U2NCgmc3dlZXAtPm51 bVRvdGFsUmVxdWVzdGVkQWxsb2NzLCBhbGxvY3NbaV0pOworCisJCXRvdGFsX2FsbG9jcyAr PSBhbGxvY3NbaV07CisJfQorCisJLyogQ2FsY3VsYXRlIHRoZSAiZmFpciBzaGFyZSIgb2Yg YWxsb2NhdGlvbnMgcGVyIHBhcnRpdGlvbi4gKi8KKwlhdmdfYWxsb2NzID0gKHRvdGFsX2Fs bG9jcyAvIFN0cmF0ZWd5Q29udHJvbC0+bnVtX3BhcnRpdGlvbnMpOworCisJLyoKKwkgKiBD YWxjdWxhdGUgdGhlICJkZWx0YSIgZnJvbSBiYWxhbmNlZCBzdGF0ZSBmb3IgZWFjaCBwYXJ0 aXRpb24sIGkuZS4gaG93CisJICogbWFueSBtb3JlL2Zld2VyIGFsbG9jYXRpb25zIGl0IGhh bmRsZWQgcmVsYXRpdmUgdG8gdGhlIGF2ZXJhZ2UuCisJICovCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBTdHJhdGVneUNvbnRyb2wtPm51bV9wYXJ0aXRpb25zOyBpKyspCisJeworCQlpZiAo YWxsb2NzW2ldID4gYXZnX2FsbG9jcykKKwkJCWRlbHRhX2FsbG9jcyArPSAoYWxsb2NzW2ld IC0gYXZnX2FsbG9jcyk7CisJfQorCisJLyoKKwkgKiBTa2lwIHJlYmFsYW5jaW5nIHdoZW4g dGhlcmUncyBub3QgZW5vdWdoIGFjdGl2aXR5LCBhbmQganVzdCBrZWVwIHRoZQorCSAqIGN1 cnJlbnQgd2VpZ2h0cy4KKwkgKgorCSAqIFhYWCBUaGUgdGhyZXNob2xkIG9mIDEwMCBhbGxv Y2F0aW9uIGlzIHByZXR0eSBhcmJpdHJhcnkuCisJICoKKwkgKiBYWFggTWF5YmUgYSBiZXR0 ZXIgc3RyYXRlZ3kgd291bGQgYmUgdG8gc2xvd2x5IHJldHVybiB0byB0aGUgZGVmYXVsdAor CSAqIHdlaWdodHMsIHdpdGggZWFjaCBwYXJ0aXRpb24gYWxsb2NhdGlvbiBvbmx5IGZyb20g aXRzZWxmPworCSAqCisJICogWFhYIE1heWJlIHdlIHNob3VsZG4ndCBldmVuIHJlc2V0IHRo ZSBjb3VudGVycyBpbiB0aGlzIGNhc2U/IEJ1dCBpdAorCSAqIHNob3VsZCBub3QgbWF0dGVy LCBpZiB0aGUgYWN0aXZpdHkgaXMgbG93LgorCSAqLworCWlmIChhdmdfYWxsb2NzIDwgMTAw KQorCXsKKwkJZWxvZyhERUJVRzEsICJyZWJhbGFuY2Ugc2tpcHBlZDogbm90IGVub3VnaCBh bGxvY2F0aW9ucyAoYWxsb2NzOiAldSkiLAorCQkJIGF2Z19hbGxvY3MpOworCQlyZXR1cm47 CisJfQorCisJLyoKKwkgKiBMaWtld2lzZSwgc2tpcCByZWJhbGFuY2luZyBpZiB0aGUgbWlz YmFsYW5jZSBpcyBub3Qgc2lnbmlmaWNhbnQuIFdlCisJICogY29uc2lkZXIgaXQgYWNjZXB0 YWJsZSBpZiB0aGUgYW1vdW50IG9mIGFsbG9jYXRpb25zIHdlJ2QgbmVlZCB0bworCSAqIHJl ZGlzdHJpYnV0ZSBpcyBsZXNzIHRoYW4gMTAlIG9mIHRoZSBhdmVyYWdlLgorCSAqCisJICog WFhYIEFnYWluLCB0aGVzZSB0aHJlc2hvbGQgYXJlIHJhdGhlciBhcmJpdHJhcnkuIEFuZCBt YXliZSB3ZSBzaG91bGQKKwkgKiBkbyB0aGUgcmFiYWxhbmNpbmcgaW4gdGhpcyBjYXNlIGFu eXdheSwgaXQncyBsaWtlbHkgY2hlYXAgYW5kIG9uIGEgYmlnCisJICogc3lzdGVtIDEwJSBj YW4gYmUgcXVpdGUgYSBsb3QuCisJICovCisJaWYgKGRlbHRhX2FsbG9jcyA8IChhdmdfYWxs b2NzICogMC4xKSkKKwl7CisJCWVsb2coREVCVUcxLCAicmViYWxhbmNlIHNraXBwZWQ6IGRl bHRhIHdpdGhpbiBsaW1pdCAoZGVsdGE6ICV1LCB0aHJlc2hvbGQ6ICV1KSIsCisJCQkgZGVs dGFfYWxsb2NzLCAodWludDMyKSAoYXZnX2FsbG9jcyAqIDAuMSkpOworCQlyZXR1cm47CisJ fQorCisJLyoKKwkgKiBUaGUgYWN0dWFsIHJlYmFsYW5jaW5nCisJICoKKwkgKiBQYXJ0aXRp b24gd2l0aCBmZXdlciB0aGFuIGF2ZXJhZ2UgYWxsb2NhdGlvbnMsIHNob3VsZCBub3QgcmVk aXJlY3QgYW55CisJICogYWxsb2NhdGlvbnMgdG8gb3RoZXIgcGFydGl0aW9ucy4gU28ganVz dCB1c2Ugd2VpZ2h0cyB3aXRoIGEgc2luZ2xlCisJICogbm9uLXplcm8gd2VpZ2h0IGZvciB0 aGUgcGFydGl0aW9uIGl0c2VsZi4KKwkgKgorCSAqIFBhcnRpdGlvbiB3aXRoIG1vcmUgdGhh biBhdmVyYWdlIGFsbG9jYXRpb25zLCBzaG91bGQgbm90IHJlY2VpdmUgYW55CisJICogcmVk aXJlY3RlZCBhbGxvY2F0aW9ucywgYW5kIGluc3RlYWQgaXQgc2hvdWxkIHJlZGlyZWN0IGV4 Y2VzcyBhbGxvY2F0aW9ucworCSAqIHRvIG90aGVyIHBhcnRpdGlvbnMuCisJICoKKwkgKiBU aGUgcmVkaXN0cmlidXRpb24gaXMgInByb3BvcnRpb25hbCIgLSBpZiB0aGUgZXhjZXNzIGFs bG9jYXRpb25zIG9mIGEKKwkgKiBwYXJ0aXRpb24gcmVwcmVzZW50IDEwJSBvZiB0aGUgImRl bHRhIiwgdGhlbiBlYWNoIHBhcnRpdGlvbiB0aGF0CisJICogbmVlZHMgbW9yZSBhbGxvY2F0 aW9ucyB3aWxsIGdldCAxMCUgb2YgdGhlIGdhcCBmcm9tIGl0LgorCSAqCisJICogWFhYIFdl IHNob3VsZCBhZGQgaHlzdGVyZXNpcywgc28gdGhhdCBpdCBkb2VzIG5vdCBvc2NpbGxhdGUg b3Igc29tZXRoaW5nCisJICogbGlrZSB0aGF0LiBNYXliZSBDTE9DS1NXRUVQX0hJU1RPUllf Q09FRkYgYWxyZWFkeSBkb2VzIHRoYXQ/CisJICoKKwkgKiBYWFggSWRlYWxseSwgdGhlIGFs dGVybmF0aXZlIHBhcnRpdGlvbnMgdG8gdXNlIGZpcnN0IHdvdWxkIGJlIHRoZSBvdGhlcgor CSAqIHBhcnRpdGlvbnMgZm9yIHRoZSBzYW1lIG5vZGUgKGlmIGFueSkuCisJICovCisJZm9y IChpbnQgaSA9IDA7IGkgPCBTdHJhdGVneUNvbnRyb2wtPm51bV9wYXJ0aXRpb25zOyBpKysp CisJeworCQlDbG9ja1N3ZWVwICpzd2VlcCA9ICZTdHJhdGVneUNvbnRyb2wtPnN3ZWVwc1tp XTsKKwkJdWludDgJCWJhbGFuY2VbTUFYX0JVRkZFUl9QQVJUSVRJT05TXTsKKworCQkvKiBs b2NrLCB3ZSdyZSBnb2luZyB0byBtb2RpZnkgdGhlIGJhbGFuY2Ugd2VpZ2h0cyAqLworCQlT cGluTG9ja0FjcXVpcmUoJnN3ZWVwLT5jbG9ja19zd2VlcF9sb2NrKTsKKworCQkvKiByZXNl dCB0aGUgd2VpZ2h0cyB0byBzdGFydCBmcm9tIHNjcmF0Y2ggKi8KKwkJbWVtc2V0KGJhbGFu Y2UsIDAsIHNpemVvZih1aW50OCkgKiBNQVhfQlVGRkVSX1BBUlRJVElPTlMpOworCisJCS8q IGRvZXMgdGhpcyBwYXJ0aXRpb24gaGFzIGZld2VyIG9yIG1vcmUgdGhhbiBhdmdfYWxsb2Nz PyAqLworCQlpZiAoYWxsb2NzW2ldIDwgYXZnX2FsbG9jcykKKwkJeworCQkJLyogZmV3ZXIg LSBkb24ndCByZWRpcmVjdCBhbnkgYWxsb2NhdGlvbnMgZWxzZXdoZXJlICovCisJCQliYWxh bmNlW2ldID0gMTAwOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIG1vcmUgLSBy ZWRpc3RyaWJ1dGUgdGhlIGV4Y2VzcyBhbGxvY2F0aW9ucworCQkJICoKKwkJCSAqIEVhY2gg InRhcmdldCIgcGFydGl0aW9uICh3aXRoIGxlc3MgdGhhbiBhdmdfYWxsb2NzKSBzaG91bGQg Z2V0CisJCQkgKiBhIGZyYWN0aW9uIHByb3BvcnRpb25hbCB0byAoZXhjZXNzL2RlbHRhKSBm cm9tIHRoaXMgb25lLgorCQkJICovCisKKwkJCS8qIGZyYWN0aW9uIG9mIHRoZSAidG90YWwi IGRlbHRhICovCisJCQlkb3VibGUJZGVsdGFfZnJhYyA9IChhbGxvY3NbaV0gLSBhdmdfYWxs b2NzKSAqIDEuMCAvIGRlbHRhX2FsbG9jczsKKworCQkJLyoga2VlcCBqdXN0IGVub3VnaCBh bGxvY2F0aW9ucyB0byBtZWV0IHRoZSB0YXJnZXQgKi8KKwkJCWJhbGFuY2VbaV0gPSAoMTAw LjAgKiBhdmdfYWxsb2NzIC8gYWxsb2NzW2ldKTsKKworCQkJLyogcmVkaXJlY3QgdGhlIGV4 dHJhIGFsbG9jYXRpb25zICovCisJCQlmb3IgKGludCBqID0gMDsgaiA8IFN0cmF0ZWd5Q29u dHJvbC0+bnVtX3BhcnRpdGlvbnM7IGorKykKKwkJCXsKKwkJCQkvKiBIb3cgbWFueSBhbGxv Y2F0aW9ucyB0byByZWNlaXZlIGZyb20gaS10aCBwYXJ0aXRpb24/ICovCisJCQkJdWludDMy CXJlY2VpdmVfYWxsb2NzID0gZGVsdGFfZnJhYyAqIChhdmdfYWxsb2NzIC0gYWxsb2NzW2pd KTsKKworCQkJCS8qIGlnbm9yZSBwYXJ0aXRpb25zIHRoYXQgZG9uJ3QgbmVlZCBhZGRpdGlv bmFsIGFsbG9jYXRpb25zICovCisJCQkJaWYgKGFsbG9jc1tqXSA+IGF2Z19hbGxvY3MpCisJ CQkJCWNvbnRpbnVlOworCisJCQkJLyogZnJhY3Rpb24gdG8gcmVkaXJlY3QgKi8KKwkJCQli YWxhbmNlW2pdID0gKDEwMC4wICogcmVjZWl2ZV9hbGxvY3MgLyBhbGxvY3NbaV0pICsgMC41 OworCQkJfQorCQl9CisKKwkJLyogY29tYmluZSB0aGUgb2xkIGFuZCBuZXcgd2VpZ2h0cyAo aHlzdGVyZXNpcykgKi8KKwkJZm9yIChpbnQgaiA9IDA7IGogPCBNQVhfQlVGRkVSX1BBUlRJ VElPTlM7IGorKykKKwkJeworCQkJc3dlZXAtPmJhbGFuY2Vbal0KKwkJCQk9IENMT0NLU1dF RVBfSElTVE9SWV9DT0VGRiAqIHN3ZWVwLT5iYWxhbmNlW2pdICsKKwkJCQkgICgxLjAgLSBD TE9DS1NXRUVQX0hJU1RPUllfQ09FRkYpICogYmFsYW5jZVtqXTsKKwkJfQorCisJCVNwaW5M b2NrUmVsZWFzZSgmc3dlZXAtPmNsb2NrX3N3ZWVwX2xvY2spOworCX0KK30KKwogLyoKICAq IFN0cmF0ZWd5U3luY1ByZXBhcmUgLS0gcHJlcGFyZSBmb3Igc3luYyBvZiBhbGwgcGFydGl0 aW9ucwogICoKQEAgLTY1Nyw3ICsxMDM5LDIxIEBAIFN0cmF0ZWd5Q3RsU2htZW1Jbml0KHZv aWQgKmFyZykKIAkJLyogQ2xlYXIgc3RhdGlzdGljcyAqLwogCQlTdHJhdGVneUNvbnRyb2wt PnN3ZWVwc1tpXS5jb21wbGV0ZVBhc3NlcyA9IDA7CiAJCXBnX2F0b21pY19pbml0X3UzMigm U3RyYXRlZ3lDb250cm9sLT5zd2VlcHNbaV0ubnVtQnVmZmVyQWxsb2NzLCAwKTsKKwkJcGdf YXRvbWljX2luaXRfdTMyKCZTdHJhdGVneUNvbnRyb2wtPnN3ZWVwc1tpXS5udW1SZXF1ZXN0 ZWRBbGxvY3MsIDApOwogCQlwZ19hdG9taWNfaW5pdF91NjQoJlN0cmF0ZWd5Q29udHJvbC0+ c3dlZXBzW2ldLm51bVRvdGFsQWxsb2NzLCAwKTsKKwkJcGdfYXRvbWljX2luaXRfdTY0KCZT dHJhdGVneUNvbnRyb2wtPnN3ZWVwc1tpXS5udW1Ub3RhbFJlcXVlc3RlZEFsbG9jcywgMCk7 CisKKwkJLyoKKwkJICogSW5pdGlhbGl6ZSB0aGUgd2VpZ2h0cyAtIHN0YXJ0IGJ5IGFsbG9j YXRpbmcgMTAwJSBidWZmZXJzIGZyb20KKwkJICogdGhlIGN1cnJlbnQgbm9kZSAvIHBhcnRp dGlvbi4KKwkJICovCisJCWZvciAoaW50IGogPSAwOyBqIDwgTUFYX0JVRkZFUl9QQVJUSVRJ T05TOyBqKyspCisJCXsKKwkJCWlmIChpID09IGopCisJCQkJU3RyYXRlZ3lDb250cm9sLT5z d2VlcHNbaV0uYmFsYW5jZVtpXSA9IDEwMDsKKwkJCWVsc2UKKwkJCQlTdHJhdGVneUNvbnRy b2wtPnN3ZWVwc1tpXS5iYWxhbmNlW2pdID0gMDsKKwkJfQogCX0KIAogCS8qIE5vIHBlbmRp bmcgbm90aWZpY2F0aW9uICovCkBAIC0xMDI1LDggKzE0MjEsMTAgQEAgU3RyYXRlZ3lSZWpl Y3RCdWZmZXIoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksIEJ1ZmZlckRlc2MgKmJ1 ZiwgYm9vbCBmcm9tX3IKIAogdm9pZAogQ2xvY2tTd2VlcFBhcnRpdGlvbkdldEluZm8oaW50 IGlkeCwKLQkJCQkJCSAgIHVpbnQzMiAqY29tcGxldGVfcGFzc2VzLCB1aW50MzIgKm5leHRf dmljdGltX2J1ZmZlciwKLQkJCQkJCSAgIHVpbnQ2NCAqYnVmZmVyX3RvdGFsX2FsbG9jcywg dWludDMyICpidWZmZXJfYWxsb2NzKQorCQkJCQkJIHVpbnQzMiAqY29tcGxldGVfcGFzc2Vz LCB1aW50MzIgKm5leHRfdmljdGltX2J1ZmZlciwKKwkJCQkJCSB1aW50NjQgKmJ1ZmZlcl90 b3RhbF9hbGxvY3MsIHVpbnQzMiAqYnVmZmVyX2FsbG9jcywKKwkJCQkJCSB1aW50NjQgKmJ1 ZmZlcl90b3RhbF9yZXFfYWxsb2NzLCB1aW50MzIgKmJ1ZmZlcl9yZXFfYWxsb2NzLAorCQkJ CQkJIGludCAqKndlaWdodHMpCiB7CiAJQ2xvY2tTd2VlcCAqc3dlZXAgPSAmU3RyYXRlZ3lD b250cm9sLT5zd2VlcHNbaWR4XTsKIApAQCAtMTAzNCwxMSArMTQzMiwyMSBAQCBDbG9ja1N3 ZWVwUGFydGl0aW9uR2V0SW5mbyhpbnQgaWR4LAogCiAJLyogZ2V0IHRoZSBjbG9ja3N3ZWVw IHN0YXRzICovCiAJKmNvbXBsZXRlX3Bhc3NlcyA9IHN3ZWVwLT5jb21wbGV0ZVBhc3NlczsK KworCS8qIGNhbGN1bGF0ZSB0aGUgYWN0dWFsIGJ1ZmZlciBJRCAqLwogCSpuZXh0X3ZpY3Rp bV9idWZmZXIgPSBwZ19hdG9taWNfcmVhZF91MzIoJnN3ZWVwLT5uZXh0VmljdGltQnVmZmVy KTsKKwkqbmV4dF92aWN0aW1fYnVmZmVyID0gc3dlZXAtPmZpcnN0QnVmZmVyICsgKCpuZXh0 X3ZpY3RpbV9idWZmZXIgJSBzd2VlcC0+bnVtQnVmZmVycyk7CiAKLQkqYnVmZmVyX2FsbG9j cyA9IHBnX2F0b21pY19yZWFkX3UzMigmc3dlZXAtPm51bUJ1ZmZlckFsbG9jcyk7CiAJKmJ1 ZmZlcl90b3RhbF9hbGxvY3MgPSBwZ19hdG9taWNfcmVhZF91NjQoJnN3ZWVwLT5udW1Ub3Rh bEFsbG9jcyk7CisJKmJ1ZmZlcl9hbGxvY3MgPSBwZ19hdG9taWNfcmVhZF91MzIoJnN3ZWVw LT5udW1CdWZmZXJBbGxvY3MpOwogCi0JLyogY2FsY3VsYXRlIHRoZSBhY3R1YWwgYnVmZmVy IElEICovCi0JKm5leHRfdmljdGltX2J1ZmZlciA9IHN3ZWVwLT5maXJzdEJ1ZmZlciArICgq bmV4dF92aWN0aW1fYnVmZmVyICUgc3dlZXAtPm51bUJ1ZmZlcnMpOworCSpidWZmZXJfdG90 YWxfcmVxX2FsbG9jcyA9IHBnX2F0b21pY19yZWFkX3U2NCgmc3dlZXAtPm51bVRvdGFsUmVx dWVzdGVkQWxsb2NzKTsKKwkqYnVmZmVyX3JlcV9hbGxvY3MgPSBwZ19hdG9taWNfcmVhZF91 MzIoJnN3ZWVwLT5udW1SZXF1ZXN0ZWRBbGxvY3MpOworCisJLyogcmV0dXJuIHRoZSB3ZWln aHRzIGluIGEgbmV3bHkgYWxsb2NhdGVkIGFycmF5ICovCisJKndlaWdodHMgPSBwYWxsb2Nf YXJyYXkoaW50LCBTdHJhdGVneUNvbnRyb2wtPm51bV9wYXJ0aXRpb25zKTsKKwlmb3IgKGlu dCBpID0gMDsgaSA8IFN0cmF0ZWd5Q29udHJvbC0+bnVtX3BhcnRpdGlvbnM7IGkrKykKKwl7 CisJCSgqd2VpZ2h0cylbaV0gPSAoaW50KSBzd2VlcC0+YmFsYW5jZVtpXTsKKwl9CiB9CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCBiL3NyYy9p bmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5oCmluZGV4IGY5NzM2YzI3Li5kMzliZDdl OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmgKQEAgLTYwMCw2ICs2MDAs NyBAQCBleHRlcm4gQnVmZmVyRGVzYyAqU3RyYXRlZ3lHZXRCdWZmZXIoQnVmZmVyQWNjZXNz U3RyYXRlZ3kgc3RyYXRlZ3ksCiBleHRlcm4gYm9vbCBTdHJhdGVneVJlamVjdEJ1ZmZlcihC dWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKIAkJCQkJCQkJIEJ1ZmZlckRlc2MgKmJ1 ZiwgYm9vbCBmcm9tX3JpbmcpOwogCitleHRlcm4gdm9pZCBTdHJhdGVneVN5bmNCYWxhbmNl KHZvaWQpOwogZXh0ZXJuIHZvaWQgU3RyYXRlZ3lTeW5jUHJlcGFyZShpbnQgKm51bV9wYXJ0 cywgdWludDMyICpudW1fYnVmX2FsbG9jKTsKIGV4dGVybiBpbnQJU3RyYXRlZ3lTeW5jU3Rh cnQoaW50IHBhcnRpdGlvbiwgdWludDMyICpjb21wbGV0ZV9wYXNzZXMsCiAJCQkJCQkJICBp bnQgKmZpcnN0X2J1ZmZlciwgaW50ICpudW1fYnVmZmVycyk7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZtZ3Iu aAppbmRleCBlMGJiNGNjMS4uMDI4MzNiMTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvYnVmbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZtZ3IuaApAQCAt NDExLDExICs0MTEsMTMgQEAgZXh0ZXJuIGludAlHZXRBY2Nlc3NTdHJhdGVneVBpbkxpbWl0 KEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KTsKIAogZXh0ZXJuIHZvaWQgRnJlZUFj Y2Vzc1N0cmF0ZWd5KEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5KTsKIGV4dGVybiB2 b2lkIENsb2NrU3dlZXBQYXJ0aXRpb25HZXRJbmZvKGludCBpZHgsCi0JCQkJCQkJCQkgICB1 aW50MzIgKmNvbXBsZXRlX3Bhc3NlcywKLQkJCQkJCQkJCSAgIHVpbnQzMiAqbmV4dF92aWN0 aW1fYnVmZmVyLAotCQkJCQkJCQkJICAgdWludDY0ICpidWZmZXJfdG90YWxfYWxsb2NzLAot CQkJCQkJCQkJICAgdWludDMyICpidWZmZXJfYWxsb2NzKTsKLQorCQkJCQkJCQkJIHVpbnQz MiAqY29tcGxldGVfcGFzc2VzLAorCQkJCQkJCQkJIHVpbnQzMiAqbmV4dF92aWN0aW1fYnVm ZmVyLAorCQkJCQkJCQkJIHVpbnQ2NCAqYnVmZmVyX3RvdGFsX2FsbG9jcywKKwkJCQkJCQkJ CSB1aW50MzIgKmJ1ZmZlcl9hbGxvY3MsCisJCQkJCQkJCQkgdWludDY0ICpidWZmZXJfdG90 YWxfcmVxX2FsbG9jcywKKwkJCQkJCQkJCSB1aW50MzIgKmJ1ZmZlcl9yZXFfYWxsb2NzLAor CQkJCQkJCQkJIGludCAqKndlaWdodHMpOwogCiAvKiBpbmxpbmUgZnVuY3Rpb25zICovCiAK LS0gCjIuNTAuMQoK --317345122ad1692da28ddb245f423447087961c8 Content-Disposition: attachment; filename*0="v20260915a-0006-clock-sweep-scan-all-partitions.patch" Content-Type: text/x-patch; name="=?UTF-8?Q?v20260915a-0006-clock-sweep-scan-all-partitions.patch?=" Content-Transfer-Encoding: base64 RnJvbSBiNGVlNGY2ZDRlOTFhNDRmZTk1ZGFkNzk0ODY1OTc1YzJmOTZlZTZmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogVHVlLCAyIEp1biAyMDI2IDIyOjM5OjM4ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 MjAyNjA5MTVhIDYvOV0gY2xvY2stc3dlZXA6IHNjYW4gYWxsIHBhcnRpdGlvbnMKCldoZW4g bG9va2luZyBmb3IgYSBmcmVlIGJ1ZmZlciwgc2NhbiBhbGwgY2xvY2stc3dlZXAgcGFydGl0 aW9ucywgbm90Cmp1c3QgdGhlICJob21lIiBvbmUuIEFsbCBidWZmZXJzIGluIHRoZSBob21l IHBhcnRpdGlvbiBtYXkgYmUgcGlubmVkLCBpbgp3aGljaCBjYXNlIHdlIHNob3VsZCBub3Qg ZmFpbC4gSW5zdGVhZCwgYWR2YW5jZSB0byB0aGUgbmV4dCBwYXJ0aXRpb24sCmluIGEgcm91 bmQtcm9iaW4gd2F5LCBhbmQgb25seSBmYWlsIGFmdGVyIHNjYW5uaW5nIHRocm91Z2ggYWxs IG9mIHRoZW0uCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYyAg ICAgfCA4MyArKysrKysrKysrKysrKysrLS0tLS0tLQogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8w Mjdfc3RyZWFtX3JlZ3Jlc3MucGwgfCAgNSAtLQogMiBmaWxlcyBjaGFuZ2VkLCA1NyBpbnNl cnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIv ZnJlZWxpc3QuYwppbmRleCBhNTQzZmIxMi4uMWFjMWUzZTMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9idWZmZXIvZnJlZWxpc3QuYwpAQCAtMTg0LDYgKzE4NCw5IEBAIHN0YXRpYyBCdWZm ZXJEZXNjICpHZXRCdWZmZXJGcm9tUmluZyhCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVn eSwKIHN0YXRpYyB2b2lkIEFkZEJ1ZmZlclRvUmluZyhCdWZmZXJBY2Nlc3NTdHJhdGVneSBz dHJhdGVneSwKIAkJCQkJCQlCdWZmZXJEZXNjICpidWYpOwogc3RhdGljIENsb2NrU3dlZXAg KkNob29zZUNsb2NrU3dlZXAoYm9vbCBiYWxhbmNlKTsKK3N0YXRpYyBCdWZmZXJEZXNjICpT dHJhdGVneUdldEJ1ZmZlclBhcnRpdGlvbihDbG9ja1N3ZWVwICpzd2VlcCwKKwkJCQkJCQkJ CQkJICBCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKKwkJCQkJCQkJCQkJICB1aW50 NjQgKmJ1Zl9zdGF0ZSk7CiAKIC8qCiAgKiBjbG9ja3N3ZWVwIGFsbG9jYXRpb24gYmFsYW5j aW5nCkBAIC0yNTEsMTAgKzI1NCw5IEBAIHN0YXRpYyBpbnQgY2xvY2tzd2VlcF9wYXJ0aXRp b25fYnVkZ2V0ID0gMDsKICAqIGlkIG9mIHRoZSBidWZmZXIgbm93IHVuZGVyIHRoZSBoYW5k LgogICovCiBzdGF0aWMgaW5saW5lIHVpbnQzMgotQ2xvY2tTd2VlcFRpY2sodm9pZCkKK0Ns b2NrU3dlZXBUaWNrKENsb2NrU3dlZXAgKnN3ZWVwKQogewogCXVpbnQzMgkJdmljdGltOwot CUNsb2NrU3dlZXAgKnN3ZWVwID0gQ2hvb3NlQ2xvY2tTd2VlcCh0cnVlKTsKIAogCS8qCiAJ ICogQXRvbWljYWxseSBtb3ZlIGhhbmQgYWhlYWQgb25lIGJ1ZmZlciAtIGlmIHRoZXJlJ3Mg c2V2ZXJhbCBwcm9jZXNzZXMKQEAgLTQ4Niw3ICs0ODgsOCBAQCBTdHJhdGVneUdldEJ1ZmZl cihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwgdWludDY0ICpidWZfc3RhdGUsIGJv b2wgKmZyb21fcgogewogCUJ1ZmZlckRlc2MgKmJ1ZjsKIAlpbnQJCQliZ3dwcm9jbm87Ci0J aW50CQkJdHJ5Y291bnRlcjsKKwlDbG9ja1N3ZWVwICpzd2VlcCwKKwkJCSAgICpzd2VlcF9z dGFydDsJCS8qIHN0YXJ0aW5nIGNsb2NrLXN3ZWVwIHBhcnRpdGlvbiAqLwogCiAJKmZyb21f cmluZyA9IGZhbHNlOwogCkBAIC01NDUsMzMgKzU0OCw2MSBAQCBTdHJhdGVneUdldEJ1ZmZl cihCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwgdWludDY0ICpidWZfc3RhdGUsIGJv b2wgKmZyb21fcgogCS8qCiAJICogVXNlIHRoZSAiY2xvY2sgc3dlZXAiIGFsZ29yaXRobSB0 byBmaW5kIGEgZnJlZSBidWZmZXIKIAkgKgotCSAqIFhYWCBOb3RlIHRoYXQgQ2xvY2tTd2Vl cFRpY2soKSBpcyBOVU1BLWF3YXJlLCBpLmUuIGl0IG9ubHkgbG9va3MgYXQKLQkgKiBidWZm ZXJzIGZyb20gYSBzaW5nbGUgcGFydGl0aW9uLCBhbGlnbmVkIHdpdGggdGhlIE5VTUEgbm9k ZS4gVGhhdCBtZWFucwotCSAqIGEgcHJvY2VzcyAic3dlZXBzIiBvbmx5IGEgZnJhY3Rpb24g b2YgYnVmZmVycywgZXZlbiBpZiB0aGUgb3RoZXIgYnVmZmVycwotCSAqIGFyZSBiZXR0ZXIg Y2FuZGlkYXRlcyBmb3IgZXZpY3Rpb24uIE1heWJlIHRoZXJlIHNob3VsZCBiZSBzb21lIGxv Z2ljIHRvCi0JICogInN0ZWFsIiBidWZmZXJzIGZyb20gb3RoZXIgcGFydGl0aW9ucyBvciBv dGhlciBub2Rlcz8KLQkgKgotCSAqIFhYWCBUaGlzIG9ubHkgc2VhcmNoZXMgYSBzaW5nbGUg cGFydGl0aW9uLCB3aGljaCBjYW4gcmVzdWx0IGluICJubwotCSAqIHVucGlubmVkIGJ1ZmZl cnMgYXZhaWxhYmxlIiBldmVuIGlmIHRoZXJlIGFyZSBidWZmZXJzIGluIG90aGVyCi0JICog cGFydGl0aW9ucy4gTmVlZHMgdG8gc2NhbiBwYXJ0aXRpb25zIGlmIG5lZWRlZCwgYXMgYSBm YWxsYmFjay4KLQkgKgotCSAqIFhYWCBXb3VsZCB0aGF0IGFsc28gbWVhbiB3ZSBzaG91bGQg aGF2ZSBtdWx0aXBsZSBiZ3dyaXRlcnMsIG9uZSBmb3IgZWFjaAotCSAqIG5vZGUsIG9yIHdv dWxkIG9uZSBiZ3dyaXRlciBzdGlsbCBoYW5kbGUgYWxsIG5vZGVzPwotCSAqCi0JICogWFhY IEFsc28sIHRoZSB0cnljb3VudGVyIHNob3VsZCBub3QgYmUgc2V0IHRvIE5CdWZmZXJzLCBi dXQgdG8gYnVmZmVyCi0JICogY291bnQgZm9yIHRoYXQgb25lIHBhcnRpdGlvbi4gSW4gZmFj dCwgdGhpcyBzaG91bGQgbm90IGNhbGwgQ2xvY2tTd2VlcFRpY2sKLQkgKiBmb3IgZXZlcnkg aXRlcmF0aW9uLiBUaGUgY2FsbCBpcyBsaWtlbHkgcXVpdGUgZXhwZW5zaXZlIChkb2VzIGEg bG90Ci0JICogb2Ygc3R1ZmYpLCBhbmQgYWxzbyBtYXkgcmV0dXJuIGEgZGlmZmVyZW50IHBh cnRpdGlvbiBvbiBlYWNoIGNhbGwuCi0JICogV2Ugc2hvdWxkIGp1c3QgZG8gaXQgb25jZSwg YW5kIHRoZW4gZG8gdGhlIGZvcig7OykgbG9vcC4gQW5kIHRoZW4KLQkgKiBtYXliZSBhZHZh bmNlIHRvIHRoZSBuZXh0IHBhcnRpdGlvbiwgdW50aWwgd2Ugc2NhbiB0aHJvdWdoIGFsbCBv ZiB0aGVtLgorCSAqIFN0YXJ0IHdpdGggdGhlICJwcmVmZXJyZWQiIHBhcnRpdGlvbiwgYW5k IHRoZW4gcHJvY2VlZCBpbiBhIHJvdW5kLXJvYmluCisJICogbWFubmVyLiBJZiB3ZSBjeWNs ZSBiYWNrIHRvIHRoZSBzdGFydGluZyBwYXJ0aXRpb24sIGl0IG1lYW5zIG5vbmUgb2YgdGhl CisJICogcGFydGl0aW9ucyBoYXMgdW5waW5uZWQgYnVmZmVycy4KIAkgKi8KLQl0cnljb3Vu dGVyID0gTkJ1ZmZlcnM7CisJc3dlZXAgPSBDaG9vc2VDbG9ja1N3ZWVwKHRydWUpOworCXN3 ZWVwX3N0YXJ0ID0gc3dlZXA7CisJZm9yICg7OykKKwl7CisJCWJ1ZiA9IFN0cmF0ZWd5R2V0 QnVmZmVyUGFydGl0aW9uKHN3ZWVwLCBzdHJhdGVneSwgYnVmX3N0YXRlKTsKKworCQkvKiBm b3VuZCBhIGJ1ZmZlciBpbiB0aGUgInN3ZWVwIiBwYXJ0aXRpb24sIHdlJ3JlIGRvbmUgKi8K KwkJaWYgKGJ1ZiAhPSBOVUxMKQorCQkJcmV0dXJuIGJ1ZjsKKworCQkvKgorCQkgKiBUcnkg YWR2YW5jaW5nIHRvIHRoZSBuZXh0IHBhcnRpdGlvbiwgcm91bmQtcm9iaW4gKGlmIGxhc3Qg cGFydGl0aW9uLAorCQkgKiB3cmFwIGFyb3VuZCB0byB0aGUgYmVnaW5uaW5nKS4KKwkJICoK KwkJICogWFhYIFRoaXMgaXMgYSBiaXQgdWdseSwgdGhlcmUgbXVzdCBiZSBhIGJldHRlciB3 YXkgdG8gYWR2YW5jZSB0byB0aGUKKwkJICogbmV4dCBwYXJ0aXRpb24uCisJCSAqLworCQlp ZiAoc3dlZXAgPT0gJlN0cmF0ZWd5Q29udHJvbC0+c3dlZXBzW1N0cmF0ZWd5Q29udHJvbC0+ bnVtX3BhcnRpdGlvbnMgLSAxXSkKKwkJCXN3ZWVwID0gU3RyYXRlZ3lDb250cm9sLT5zd2Vl cHM7CisJCWVsc2UKKwkJCXN3ZWVwKys7CisKKwkJLyogd2UndmUgc2Nhbm5lZCBhbGwgcGFy dGl0aW9ucyAqLworCQlpZiAoc3dlZXAgPT0gc3dlZXBfc3RhcnQpCisJCQlicmVhazsKKwl9 CisKKwkvKiB3ZSBzaG91bGRuJ3QgZ2V0IGhlcmUgaWYgdGhlcmUgYXJlIHVucGlubmVkIGJ1 ZmZlcnMgKi8KKwllbG9nKEVSUk9SLCAibm8gdW5waW5uZWQgYnVmZmVycyBhdmFpbGFibGUi KTsKK30KKworLyoKKyAqIFN0cmF0ZWd5R2V0QnVmZmVyUGFydGl0aW9uCisgKgkJZ2V0IGEg ZnJlZSBidWZmZXIgZnJvbSBhIHNpbmdsZSBjbG9jay1zd2VlcCBwYXJ0aXRpb24KKyAqCisg KiBSZXR1cm5zIE5VTEwgaWYgdGhlcmUgYXJlIG5vIGZyZWUgKHVucGlubmVkKSBidWZmZXJz IGluIHRoZSBwYXJ0aXRpb24uCisqLworc3RhdGljIEJ1ZmZlckRlc2MgKgorU3RyYXRlZ3lH ZXRCdWZmZXJQYXJ0aXRpb24oQ2xvY2tTd2VlcCAqc3dlZXAsIEJ1ZmZlckFjY2Vzc1N0cmF0 ZWd5IHN0cmF0ZWd5LAorCQkJCQkJICAgdWludDY0ICpidWZfc3RhdGUpCit7CisJQnVmZmVy RGVzYyAqYnVmOworCWludAkJCXRyeWNvdW50ZXI7CisKKwl0cnljb3VudGVyID0gc3dlZXAt Pm51bUJ1ZmZlcnM7CiAJZm9yICg7OykKIAl7CiAJCXVpbnQ2NAkJb2xkX2J1Zl9zdGF0ZTsK IAkJdWludDY0CQlsb2NhbF9idWZfc3RhdGU7CiAKLQkJYnVmID0gR2V0QnVmZmVyRGVzY3Jp cHRvcihDbG9ja1N3ZWVwVGljaygpKTsKKwkJYnVmID0gR2V0QnVmZmVyRGVzY3JpcHRvcihD bG9ja1N3ZWVwVGljayhzd2VlcCkpOwogCiAJCS8qCiAJCSAqIENoZWNrIHdoZXRoZXIgdGhl IGJ1ZmZlciBjYW4gYmUgdXNlZCBhbmQgcGluIGl0IGlmIHNvLiBEbyB0aGlzCkBAIC01OTks NyArNjMwLDcgQEAgU3RyYXRlZ3lHZXRCdWZmZXIoQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3Ry YXRlZ3ksIHVpbnQ2NCAqYnVmX3N0YXRlLCBib29sICpmcm9tX3IKIAkJCQkJICogb25lIGV2 ZW50dWFsbHksIGJ1dCBpdCdzIHByb2JhYmx5IGJldHRlciB0byBmYWlsIHRoYW4KIAkJCQkJ ICogdG8gcmlzayBnZXR0aW5nIHN0dWNrIGluIGFuIGluZmluaXRlIGxvb3AuCiAJCQkJCSAq LwotCQkJCQllbG9nKEVSUk9SLCAibm8gdW5waW5uZWQgYnVmZmVycyBhdmFpbGFibGUiKTsK KwkJCQkJcmV0dXJuIE5VTEw7CiAJCQkJfQogCQkJCWJyZWFrOwogCQkJfQpAQCAtNjE4LDcg KzY0OSw3IEBAIFN0cmF0ZWd5R2V0QnVmZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0 ZWd5LCB1aW50NjQgKmJ1Zl9zdGF0ZSwgYm9vbCAqZnJvbV9yCiAJCQkJaWYgKHBnX2F0b21p Y19jb21wYXJlX2V4Y2hhbmdlX3U2NCgmYnVmLT5zdGF0ZSwgJm9sZF9idWZfc3RhdGUsCiAJ CQkJCQkJCQkJCQkgICBsb2NhbF9idWZfc3RhdGUpKQogCQkJCXsKLQkJCQkJdHJ5Y291bnRl ciA9IE5CdWZmZXJzOworCQkJCQl0cnljb3VudGVyID0gc3dlZXAtPm51bUJ1ZmZlcnM7CiAJ CQkJCWJyZWFrOwogCQkJCX0KIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5 L3QvMDI3X3N0cmVhbV9yZWdyZXNzLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMjdfc3Ry ZWFtX3JlZ3Jlc3MucGwKaW5kZXggZjY4ZTA4ZTUuLmFlOTc3Mjk3IDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWNvdmVyeS90LzAyN19zdHJlYW1fcmVncmVzcy5wbAorKysgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzAyN19zdHJlYW1fcmVncmVzcy5wbApAQCAtMTgsMTEgKzE4LDYgQEAg JG5vZGVfcHJpbWFyeS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdtYXhfY29u bmVjdGlvbnMnLCAnMjUnKTsKICRub2RlX3ByaW1hcnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLAogCSdtYXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zID0gMTAnKTsKIAotIyBU aGUgZGVmYXVsdCBpcyAxTUIsIHdoaWNoIGlzIG5vdCBlbm91Z2ggd2l0aCBjbG9jay1zd2Vl cCBwYXJ0aXRpb25pbmcuCi0jIEluY3JlYXNlIHRvIDMyTUIsIHNvIHRoYXQgd2UgZG9uJ3Qg Z2V0ICJubyB1bnBpbm5lZCBidWZmZXJzIi4KLSRub2RlX3ByaW1hcnktPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLAotCSdzaGFyZWRfYnVmZmVycyA9IDMyTUInKTsKLQogIyBF bmFibGUgcGdfc3RhdF9zdGF0ZW1lbnRzIHRvIGZvcmNlIHRlc3RzIHRvIGRvIHF1ZXJ5IGp1 bWJsaW5nLgogIyBwZ19zdGF0X3N0YXRlbWVudHMubWF4IHNob3VsZCBiZSBsYXJnZSBlbm91 Z2ggdG8gaG9sZCBhbGwgdGhlIGVudHJpZXMKICMgb2YgdGhlIHJlZ3Jlc3Npb24gZGF0YWJh c2UuCi0tIAoyLjUwLjEKCg== --317345122ad1692da28ddb245f423447087961c8 Content-Disposition: attachment; filename*0="v20260915a-0007-clock-sweep-cached-CPU-NUMA-node-and-loca.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v20260915a-0007-clock-sweep-cached-CPU-NUMA-node-and-loca.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA1ZTkwNGEyZjllNzA0MWZjYjdmODkxOTNkYTNmZThiNzAxOGJlYjcwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VGh1LCAxMCBTZXAgMjAyNiAxMDo1MDoyMCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjIwMjYw OTE1YSA3LzldIGNsb2NrLXN3ZWVwOiBjYWNoZWQgQ1BVL05VTUEgbm9kZSBhbmQKIGxvY2Fs aXR5LWF3YXJlIGJhbGFuY2luZyAoMDAwOCwgVm9uZHJhL1dhcnRhaykKCi0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYyB8IDg0ICsrKysrKysrKysrKysrKysr KysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDczIGluc2VydGlvbnMoKyksIDExIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVs aXN0LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jCmluZGV4IDFh YzFlM2UzLi44ZTNmN2MzMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZm ZXIvZnJlZWxpc3QuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlz dC5jCkBAIC01NSw2ICs1NSw5IEBACiAgKi8KICNkZWZpbmUgQ0xPQ0tTV0VFUF9ISVNUT1JZ X0NPRUZGCTAuNQogCisvKiBIb3cgb2Z0ZW4gYmFja2VuZCBzaG91bGQgcmUtZmV0Y2ggdGhl IENQVS9ub2RlIG9uIHdoaWNoIGl0IGlzIHJ1bm5pbmcgb24/ICovCisjZGVmaW5lIENMT0NL U1dFRVBfQ1BVX05PREVfUkVGUkVTSAkxMjgKKwogLyoKICAqIEluZm9ybWF0aW9uIGFib3V0 IG9uZSBwYXJ0aXRpb24gb2YgdGhlIENsb2NrU3dlZXAgKG9uIGEgc3Vic2V0IG9mIGJ1ZmZl cnMpLgogICoKQEAgLTM0OCwxMyArMzUxLDI5IEBAIENsb2NrU3dlZXBQYXJ0aXRpb25JbmRl eCh2b2lkKQogI2lmZGVmIFVTRV9MSUJOVU1BCiAJaWYgKHNoYXJlZF9idWZmZXJzX251bWEp CiAJewotCQlpbnQJCWNwdTsKKwkJLyoKKwkJICogQ2FjaGUgdGhlIENQVS9OVU1BIG5vZGUs IHJlZnJlc2hpbmcgb25seSBldmVyeSBDTE9DS1NXRUVQX0NQVV9OT0RFX1JFRlJFU0gKKwkJ ICogYWxsb2NhdGlvbnMuIEl0IGFwcGVhcnMgdGhhdCBzY2hlZF9nZXRjcHUoKS9udW1hX25v ZGVfb2ZfY3B1KCkgYXJlIG5vdCBmcmVlLgorCQkgKiBPbiBzb21lIHBsYXRmb3JtcyBpdCB0 YWtlIHByaWNlIG9mIGZ1bGwgc3lzdGVtIGNhbGwsIG9yIHRoZSByZXN0ICh4ODZfNjQ/KQor CQkgKiBpcyBjYW4gYmUgdXNlIFZEU08gb3B0aW1pemF0aW9uLiBUaGUgYmFja2VuZCByYXJl bHkgbWlncmF0ZXMgYmV0d2VlbiBOVU1BCisJCSAqIG5vZGVzLCBhbmQgdGhlIGJhbGFuY2Ug bG9naWMgb25seSBuZWVkcyB0byBub3RpY2UgbWlncmF0aW9uIGFmdGVyIHNvbWUgdGltZSwK KwkJICogc28gYW4gb2NjYXNpb25hbCByZWZyZXNoIGlzIGdvb2QgZW5vdWdoLgorCQkgKi8K KwkJc3RhdGljIGludAkJY2FjaGVkX25vZGUgPSAtMTsKKwkJc3RhdGljIHVpbnQzMglyZWZy ZXNoX2NvdW50ZXIgPSAwOwogCi0JCS8qIFhYWCBkbyB3ZSBuZWVkIHRvIGNoZWNrIHNjaGVk X2dldGNwdSBpcyBhdmFpbGFibGUsIHNvbWVob3c/ICovCi0JCWlmICgoY3B1ID0gc2NoZWRf Z2V0Y3B1KCkpIDwgMCkKKwkJaWYgKGNhY2hlZF9ub2RlIDwgMCB8fCAocmVmcmVzaF9jb3Vu dGVyKysgJSBDTE9DS1NXRUVQX0NQVV9OT0RFX1JFRlJFU0gpID09IDApCisJCXsKKwkJICBp bnQgY3B1OworCisJCSAgLyogWFhYIGRvIHdlIG5lZWQgdG8gY2hlY2sgc2NoZWRfZ2V0Y3B1 IGlzIGF2YWlsYWJsZSwgc29tZWhvdz8gKi8KKwkJICBpZiAoKGNwdSA9IHNjaGVkX2dldGNw dSgpKSA8IDApCiAJCQllbG9nKEVSUk9SLCAic2NoZWRfZ2V0Y3B1IGZhaWxlZDogJW0iKTsK IAotCQlub2RlID0gbnVtYV9ub2RlX29mX2NwdShjcHUpOworCQkgIC8qIFhYWC9KVzogdXNl IGxpYm51bWEgd3JhcHBlciBmb3IgdGhpcyAqLworCQkgIGNhY2hlZF9ub2RlID0gbnVtYV9u b2RlX29mX2NwdShjcHUpOworCQl9CisJCW5vZGUgPSBjYWNoZWRfbm9kZTsKIAl9CiAjZW5k aWYKIApAQCAtNzM3LDcgKzc1Niw4IEBAIFN0cmF0ZWd5U3luY0JhbGFuY2Uodm9pZCkKIAog CXVpbnQzMgl0b3RhbF9hbGxvY3MgPSAwLAkvKiB0b3RhbCBudW1iZXIgb2YgYWxsb2NhdGlv bnMgKi8KIAkJCWF2Z19hbGxvY3MsCQkJLyogYXZlcmFnZSBhbGxvY2F0aW9ucyAocGVyIHBh cnRpdGlvbikgKi8KLQkJCWRlbHRhX2FsbG9jcyA9IDA7CS8qIHN1bSBvZiBhbGxvY3MgYWJv dmUgYXZlcmFnZSAqLworCQkJZGVsdGFfYWxsb2NzID0gMCwJLyogc3VtIG9mIGFsbG9jcyBh Ym92ZSBhdmVyYWdlICovCisJCQlyZWRpcmVjdF9jdXRvZmY7CS8qIHJlZGlyZWN0IG9ubHkg YWJvdmUgdGhpcyBtYW55IGFsbG9jcyAqLwogCiAJLyoKIAkgKiBDb2xsZWN0IHRoZSBudW1i ZXIgb2YgYWxsb2NhdGlvbnMgcmVxdWVzdGVkIGluIHRoZSBwYXN0IGludGVydmFsLgpAQCAt ODE4LDYgKzgzOCwyMCBAQCBTdHJhdGVneVN5bmNCYWxhbmNlKHZvaWQpCiAJCXJldHVybjsK IAl9CiAKKwkvKgorCSAqIEEgcGFydGl0aW9uIG9ubHkgcmVkaXJlY3RzIGFsbG9jYXRpb25z IHRvIG90aGVyIHBhcnRpdGlvbnMgd2hlbiBpdAorCSAqIGV4Y2VlZHMgdGhlIGF2ZXJhZ2Ug YnkgbW9yZSB0aGFuIHNvbWUgdGhyZXNob2xkIHBlcmNlbnQuCisJICogQmVsb3cgdGhpcyBj dXRvZmYgd2Uga2VlcCBhbGxvY2F0aW9ucyBsb2NhbCwgdG8gcHJlc2VydmUgTlVNQSBsb2Nh bGl0eS4KKwkgKgorCSAqIFRPRE86IG1heWJlIGJldHRlciB2YWx1ZSBpcyBwb3NzaWJsZS4g T24gNHMgd2l0aCAyNSBJJ3ZlIGdvdCBnb29kIHJlc3VsdHMsCisJICogICAgICAgYnV0IHdp dGggdmFsdWUgb2YgNTAgSSd2ZSBnb3Qgc2xpZ2h0IGRlZ3JhZGF0aW9uLiBNYXliZSBpdCBz aG91bGQgCisJICogICAgICAgYmUgZXF1YWwgdG8gMTAwL251bWFfbm9kZXMgPworCSAqCisJ ICovCisjZGVmaW5lIENMT0NLU1dFRVBfQ1VUT0ZGX1RIUkVTSE9MRCAyNQorCXJlZGlyZWN0 X2N1dG9mZiA9IGF2Z19hbGxvY3MgKworCQkodWludDMyKSAoKHVpbnQ2NCkgYXZnX2FsbG9j cyAqIENMT0NLU1dFRVBfQ1VUT0ZGX1RIUkVTSE9MRCAvIDEwMCk7CisKIAkvKgogCSAqIFRo ZSBhY3R1YWwgcmViYWxhbmNpbmcKIAkgKgpAQCAtODUwLDEwICs4ODQsMTUgQEAgU3RyYXRl Z3lTeW5jQmFsYW5jZSh2b2lkKQogCQkvKiByZXNldCB0aGUgd2VpZ2h0cyB0byBzdGFydCBm cm9tIHNjcmF0Y2ggKi8KIAkJbWVtc2V0KGJhbGFuY2UsIDAsIHNpemVvZih1aW50OCkgKiBN QVhfQlVGRkVSX1BBUlRJVElPTlMpOwogCi0JCS8qIGRvZXMgdGhpcyBwYXJ0aXRpb24gaGFz IGZld2VyIG9yIG1vcmUgdGhhbiBhdmdfYWxsb2NzPyAqLwotCQlpZiAoYWxsb2NzW2ldIDwg YXZnX2FsbG9jcykKKwkJLyoKKwkJICogRG9lcyB0aGlzIHBhcnRpdGlvbiBleGNlZWQgaXRz IGZhaXIgc2hhcmUgYnkgbW9yZSB0aGFuIHRoZQorCQkgKiB0aHJlc2hvbGQ/IElmIG5vdCwg a2VlcCBhbGwgYWxsb2NhdGlvbnMgbG9jYWwgLSByZWRpcmVjdGluZyB0aGVtCisJCSAqIHdv dWxkIHB1c2ggbWVtb3J5IG9udG8gcmVtb3RlIE5VTUEgbm9kZXMgZm9yIG5vIHJlYWwgYmVu ZWZpdCB3aGVuCisJCSAqIHRoZSBsb2FkIGlzIGFscmVhZHkgY2xvc2UgdG8gYmFsYW5jZWQu CisJCSAqLworCQlpZiAoYWxsb2NzW2ldIDw9IHJlZGlyZWN0X2N1dG9mZikKIAkJewotCQkJ LyogZmV3ZXIgLSBkb24ndCByZWRpcmVjdCBhbnkgYWxsb2NhdGlvbnMgZWxzZXdoZXJlICov CisJCQkvKiBuZWFyIGZhaXIgc2hhcmUgKG9yIGJlbG93KSAtIGtlZXAgYWxsb2NhdGlvbnMg bG9jYWwgKi8KIAkJCWJhbGFuY2VbaV0gPSAxMDA7CiAJCX0KIAkJZWxzZQpAQCAtODY4LDIy ICs5MDcsNDUgQEAgU3RyYXRlZ3lTeW5jQmFsYW5jZSh2b2lkKQogCQkJLyogZnJhY3Rpb24g b2YgdGhlICJ0b3RhbCIgZGVsdGEgKi8KIAkJCWRvdWJsZQlkZWx0YV9mcmFjID0gKGFsbG9j c1tpXSAtIGF2Z19hbGxvY3MpICogMS4wIC8gZGVsdGFfYWxsb2NzOwogCi0JCQkvKiBrZWVw IGp1c3QgZW5vdWdoIGFsbG9jYXRpb25zIHRvIG1lZXQgdGhlIHRhcmdldCAqLwotCQkJYmFs YW5jZVtpXSA9ICgxMDAuMCAqIGF2Z19hbGxvY3MgLyBhbGxvY3NbaV0pOworCQkJLyogaG93 IG11Y2ggd2Uga2VlcCBsb2NhbDsgd2UgaGFuZCBvdXQgdGhlIHJlc3QgYmVsb3cgKi8KKwkJ CWludAkJa2VwdCA9IDEwMDsKIAogCQkJLyogcmVkaXJlY3QgdGhlIGV4dHJhIGFsbG9jYXRp b25zICovCiAJCQlmb3IgKGludCBqID0gMDsgaiA8IFN0cmF0ZWd5Q29udHJvbC0+bnVtX3Bh cnRpdGlvbnM7IGorKykKIAkJCXsKIAkJCQkvKiBIb3cgbWFueSBhbGxvY2F0aW9ucyB0byBy ZWNlaXZlIGZyb20gaS10aCBwYXJ0aXRpb24/ICovCiAJCQkJdWludDMyCXJlY2VpdmVfYWxs b2NzID0gZGVsdGFfZnJhYyAqIChhdmdfYWxsb2NzIC0gYWxsb2NzW2pdKTsKKwkJCQlpbnQJ CXc7CisKKwkJCQkvKiBkbyBub3QgcmVkaXJlY3QgdG8gb3Vyc2VsdmVzICovCisJCQkJaWYg KGogPT0gaSkKKwkJCQkJY29udGludWU7CiAKIAkJCQkvKiBpZ25vcmUgcGFydGl0aW9ucyB0 aGF0IGRvbid0IG5lZWQgYWRkaXRpb25hbCBhbGxvY2F0aW9ucyAqLwogCQkJCWlmIChhbGxv Y3Nbal0gPiBhdmdfYWxsb2NzKQogCQkJCQljb250aW51ZTsKIAorCQkJCS8qCisJCQkJICog T25seSB1c2Ugb3RoZXIgcGFydGl0aW9ucyB0aGF0IGFjdHVhbGx5IGhhdmUgZGVtYW5kIG9m CisJCQkJICogdGhlaXIgb3duIChhdm9pZCBpZGxlKS4gSWYgd2UgZmFpbCwgdGhlcmUncyBh bHdheXMgdGhlCisJCQkJICogc2Nhbi1hbGwtcGFydGl0aW9ucyBmYWxsYmFjay4KKwkJCQkg KgorCQkJCSAqIFRPRE86OiBqdXN0IGd1ZXNzaW5nLGhldXJpc3RpY3MKKwkJCQkgKi8KKwkJ CQlpZiAoYWxsb2NzW2pdIDwgKGF2Z19hbGxvY3MgLyAyKSkKKwkJCQkJY29udGludWU7CisK IAkJCQkvKiBmcmFjdGlvbiB0byByZWRpcmVjdCAqLwotCQkJCWJhbGFuY2Vbal0gPSAoMTAw LjAgKiByZWNlaXZlX2FsbG9jcyAvIGFsbG9jc1tpXSkgKyAwLjU7CisJCQkJdyA9IChpbnQp ICgoMTAwLjAgKiByZWNlaXZlX2FsbG9jcyAvIGFsbG9jc1tpXSkgKyAwLjUpOworCQkJCWJh bGFuY2Vbal0gPSB3OworCQkJCWtlcHQgLT0gdzsKIAkJCX0KKworCQkJLyogYXZvaWQgbmVn YXRpdmUgYmFsYW5jZXMgKi8KKwkJCWlmIChrZXB0ID4gMCkKKwkJCQliYWxhbmNlW2ldID0g a2VwdDsKKwkJCWVsc2UKKwkJCQliYWxhbmNlW2ldID0gMTsKIAkJfQogCiAJCS8qIGNvbWJp bmUgdGhlIG9sZCBhbmQgbmV3IHdlaWdodHMgKGh5c3RlcmVzaXMpICovCi0tIAoyLjUwLjEK Cg== --317345122ad1692da28ddb245f423447087961c8 Content-Disposition: attachment; filename*0="v20260915a-0008-pg_buffercache-install-the-1.7-1.8-upgrad.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v20260915a-0008-pg=5Fbuffercache-install-the-1.7-1.8-upgrad.pa?= =?UTF-8?Q?tch?=" Content-Transfer-Encoding: base64 RnJvbSBhM2NkODU2MjdmNDRjMWRiMzY2NzI4Mjc2NTdhODk5NGIxNjYzYzg3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VGh1LCAxMCBTZXAgMjAyNiAxMTo0NDo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjIwMjYw OTE1YSA4LzldIHBnX2J1ZmZlcmNhY2hlOiBpbnN0YWxsIHRoZSAxLjctLTEuOCB1cGdyYWRl CiBzY3JpcHQgaW4gbWVzb24gYnVpbGQgKHBhdGNoc2V0IHVwZGF0ZWQgTWFrZWZpbGUgb25s eSkKCi0tLQogY29udHJpYi9wZ19idWZmZXJjYWNoZS9tZXNvbi5idWlsZCB8IDEgKwogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19i dWZmZXJjYWNoZS9tZXNvbi5idWlsZCBiL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvbWVzb24u YnVpbGQKaW5kZXggZTY4MTIwNWEuLjM2MTYyOGI4IDEwMDY0NAotLS0gYS9jb250cmliL3Bn X2J1ZmZlcmNhY2hlL21lc29uLmJ1aWxkCisrKyBiL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUv bWVzb24uYnVpbGQKQEAgLTI1LDYgKzI1LDcgQEAgaW5zdGFsbF9kYXRhKAogICAncGdfYnVm ZmVyY2FjaGUtLTEuNC0tMS41LnNxbCcsCiAgICdwZ19idWZmZXJjYWNoZS0tMS41LS0xLjYu c3FsJywKICAgJ3BnX2J1ZmZlcmNhY2hlLS0xLjYtLTEuNy5zcWwnLAorICAncGdfYnVmZmVy Y2FjaGUtLTEuNy0tMS44LnNxbCcsCiAgICdwZ19idWZmZXJjYWNoZS5jb250cm9sJywKICAg a3dhcmdzOiBjb250cmliX2RhdGFfYXJncywKICkKLS0gCjIuNTAuMQoK --317345122ad1692da28ddb245f423447087961c8 Content-Disposition: attachment; filename*0="v20260915a-0009-Replace-the-usage_count-clock-sweep-with-.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v20260915a-0009-Replace-the-usage=5Fcount-clock-sweep-with-.pa?= =?UTF-8?Q?tch?=" Content-Transfer-Encoding: base64 RnJvbSAxOTM2NzE3MzEyMmIwZmI4NTdhMzFiZTk3NTc4NDdjM2EzZTgzNzRiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog TW9uLCA2IEp1bCAyMDI2IDE5OjIyOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCB2MjAyNjA5 MTVhIDkvOV0gUmVwbGFjZSB0aGUgdXNhZ2VfY291bnQgY2xvY2sgc3dlZXAgd2l0aCBhCiBj b29saW5nLXN0YWdlIGV2aWN0b3IKClJlcGxhY2UgdGhlIDAuLjUgdXNhZ2VfY291bnQgYnVm ZmVyLXJlcGxhY2VtZW50IHBvbGljeSB3aXRoIGEgY29vbGluZy1zdGFnZQpjbG9jayAodGhl IExlYW5TdG9yZSAvIDJRLUExIG1vZGVsKTogYSBidWZmZXIgaXMgc2ltcGx5IEhPVCAocmVj ZW50bHkgdXNlZCkKb3IgQ09PTCAoYW4gZXZpY3Rpb24gY2FuZGlkYXRlKSwgd2l0aCAicGlu bmVkIiBiZWluZyB0aGUgZXhpc3RpbmcgcmVmY291bnQuClRoZXJlIGlzIG5vIHBlci1idWZm ZXIgYWNjZXNzIGNvdW50ZXIuCgogIC0gQSBkZW1hbmQtbG9hZGVkIHBhZ2UgaXMgYWRtaXR0 ZWQgQ09PTCAocHJvYmF0aW9uYXJ5KSwgbm90IEhPVC4gIEEgc2Vjb25kCiAgICBhY2Nlc3Mg dmlhIFBpbkJ1ZmZlciBwcm9tb3RlcyBpdCBDT09MIC0+IEhPVCAodGhlIHJlc2N1ZSkuICBT byBhIHBhZ2UKICAgIHRvdWNoZWQgb25jZSAtLSBhIHNlcXVlbnRpYWwgc2NhbiAtLSBmaWxs cyBhbmQgZHJhaW5zIHRoZSBDT09MIHN0YWdlIGFuZAogICAgaXMgZXZpY3RlZCBmcm9tIGl0 IHdpdGhvdXQgZXZlciBkaXNwbGFjaW5nIHRoZSBIT1Qgd29ya2luZyBzZXQuICBTY2FuCiAg ICByZXNpc3RhbmNlIGlzIGludHJpbnNpYyB0byB0aGUgcmVwbGFjZW1lbnQgYWxnb3JpdGht LCB3aGljaCBpcyB3aGF0IGxldHMgYQogICAgbGF0ZXIgY29tbWl0IHJlbW92ZSB0aGUgQnVm ZmVyQWNjZXNzU3RyYXRlZ3kgcmluZyBidWZmZXJzIGVudGlyZWx5LgoKICAtIFRoZSBmb3Jl Z3JvdW5kIHN3ZWVwIGluIFN0cmF0ZWd5R2V0QnVmZmVyKCkgcmVjbGFpbXMgYW4gYWxyZWFk eS1DT09MLAogICAgdW5waW5uZWQgYnVmZmVyLCBwaW5uaW5nIGl0IHdpdGggYSBDQVMgc28g YSByYWNpbmcgUGluQnVmZmVyIGFsd2F5cyB3aW5zLgogICAgUHJvbW90aW9uIChDT09MIC0+ IEhPVCkgYW5kIGRlbW90aW9uIChIT1QgLT4gQ09PTCkgYXJlIHNpbmdsZS1iaXQKICAgIHRy YW5zaXRpb25zOyBvbmx5IHRoZSBldmljdGlvbiBjbGFpbSBpcyBhIENBUy4KCiAgLSBUaGUg YmFja2dyb3VuZCB3cml0ZXIgbWFpbnRhaW5zIHRoZSBzdXBwbHkgb2YgQ09PTCB2aWN0aW1z LiAgQXMgaXRzIExSVQogICAgc2NhbiBydW5zIGFoZWFkIG9mIHRoZSBjbG9jayBoYW5kIGl0 IGRlbW90ZXMgSE9UIGJ1ZmZlcnMgdG8gQ09PTCwgc28gdGhlCiAgICBmb3JlZ3JvdW5kIGZp bmRzIGEgdmljdGltIGluIGEgc2luZ2xlIHBhc3MgcmF0aGVyIHRoYW4gaGF2aW5nIHRvIGNv b2wKICAgIGJ1ZmZlcnMgaXRzZWxmLiAgVGhlIGRlbW90aW9uIGlzIGRlbWFuZC1kcml2ZW4g LS0gYm91bmRlZCBieSB0aGUgcHJlZGljdGVkCiAgICBhbGxvY2F0aW9uIGZvciB0aGUgbmV4 dCBjeWNsZSAtLSBzbyBpdCBzdGFnZXMganVzdCBlbm91Z2ggQ09PTCBidWZmZXJzCiAgICB3 aXRob3V0IGNvb2xpbmcgdGhlIHdob2xlIHBvb2wsIGFuZCBpdCBpcyBkb25lIHVuZGVyIHRo ZSBidWZmZXIgaGVhZGVyCiAgICBsb2NrIHRoZSBzY2FuIGFscmVhZHkgaG9sZHMuICBBIHNp bmdsZSBzZWNvbmQtY2hhbmNlIHJlZmVyZW5jZSBiaXQKICAgIChzZXQgYnkgUGluQnVmZmVy LCBjbGVhcmVkIG9uIHRoZSBiZ3dyaXRlcidzIGZpcnN0IHBhc3Mgb3ZlciBhIEhPVCBidWZm ZXIpCiAgICBzcGFyZXMgYSByZWNlbnRseS1hY2Nlc3NlZCBidWZmZXIgb25lIGNvb2xpbmcg cGFzcywga2VlcGluZyB0aGUgZ2VudWluZWx5CiAgICBob3Qgc2V0IG91dCBvZiB0aGUgQ09P TCBzdGFnZSB1bmRlciBzY2FuIHByZXNzdXJlLiAgQmdCdWZmZXJTeW5jIGFsc28KICAgIHRy YWNrcyB0aGUgcmV1c2FibGUtYnVmZmVyIGRlbnNpdHkgaXQgZGlyZWN0bHkgb2JzZXJ2ZXMg b24gYSBzaG9ydGVyCiAgICBzbW9vdGhpbmcgd2luZG93LCBzbyBhIGJ1cnN0IG9mIHByb2Jh dGlvbmFyeS9zY2FuIENPT0wgcGFnZXMgaXMgZm9sbG93ZWQKICAgIHByb21wdGx5IHJhdGhl ciB0aGFuIGF2ZXJhZ2VkIGF3YXkuICBVbmRlciBhIGJ1bGstZGlydHlpbmcgd29ya2xvYWQg dGhlCiAgICBwZXItY3ljbGUgY2xlYW4td3JpdGUgY2FwIGlzIHJhaXNlZCBmcm9tIGJnd3Jp dGVyX2xydV9tYXhwYWdlcyB0byBwcmVkaWN0ZWQKICAgIGRlbWFuZCBzbyB0aGUgYmd3cml0 ZXIga2VlcHMgc3VwcGx5aW5nIGNsZWFuIHZpY3RpbXMsIHJhdGhlciB0aGFuIHRoZQogICAg Zm9yZWdyb3VuZCBzd2VlcCBoYXZpbmcgdG8gZmx1c2ggZGlydHkgdmljdGltcyBpbmxpbmU7 IG5vcm1hbCB3b3JrbG9hZHMsCiAgICB3aGVyZSBkZW1hbmQgaXMgYmVsb3cgdGhlIGNhcCwg YXJlIHVuYWZmZWN0ZWQuCgpUaGUgNC1iaXQgdXNhZ2VfY291bnQgZmllbGQgaXMgcmVpbnRl cnByZXRlZCBpbiBwbGFjZTogYml0IDAgaXMgdGhlIEhPVC9DT09MCnN0YXRlIChCVUZfQ09P TFNUQVRFX09ORSksIGJpdCAxIHRoZSByZWZlcmVuY2UgYml0IChCVUZfUkVGQklUKS4gIFRo ZSA2NC1iaXQKYnVmZmVyLXN0YXRlIGxheW91dCAtLSByZWZjb3VudCwgZmxhZyBhbmQgbG9j ayBvZmZzZXRzIGFuZCB0aGVpciBTdGF0aWNBc3NlcnRzCi0tIGlzIHVuY2hhbmdlZDsgb25s eSB0aGUgbWVhbmluZyBvZiB0aGUgZmllbGQgYW5kIHRoZSBpbnN0cnVjdGlvbnMgdGhhdCB0 b3VjaAppdCBjaGFuZ2UuICBBIFN0YXRpY0Fzc2VydCByZXF1aXJlcyB0aGUgZmllbGQgdG8g YmUgYXQgbGVhc3QgMiBiaXRzIHdpZGUgc28gYQpmdXR1cmUgd2lkdGggY2hhbmdlIGNhbm5v dCBwdXNoIHRoZSByZWZlcmVuY2UgYml0IGludG8gdGhlIGZsYWcgYml0cy4KQk1fTUFYX1VT QUdFX0NPVU5UIGJlY29tZXMgQlVGX0NPT0xTVEFURV9IT1QgKDEpLCBzbyB0aGUgcGluIGZh c3QgcGF0aApzYXR1cmF0ZXMgYXQgSE9ULiAgTG9jYWwgKHRlbXAtdGFibGUpIGJ1ZmZlcnMg Z2V0IHRoZSBzYW1lIHR3by1zdGF0ZQp0cmVhdG1lbnQ7IGJlaW5nIHNpbmdsZS1iYWNrZW5k IHRoZXkgbmVlZCBubyBiYWNrZ3JvdW5kIGNvb2xlci4KCkJlY2F1c2UgdGhlIHJlZmVyZW5j ZSBiaXQgc2hhcmVzIHRoZSBmaWVsZCwgdGhlIGZ1bGwgNC1iaXQgdmFsdWUgY2FuIGJlIDAu LjM7CnJlYWRlcnMgdGhhdCBtZWFuICJ0aGUgY29vbGluZyBzdGF0ZSIgbXVzdCB1c2UgQlVG X1NUQVRFX0dFVF9DT09MU1RBVEUoKSwgd2hpY2gKbWFza3MgdG8gYml0IDAgYW5kIHJldHVy bnMgb25seSAwIChDT09MKSBvciAxIChIT1QpLCBuZXZlciB0aGUgcmF3IGZpZWxkLgpjb250 cmliL3BnX2J1ZmZlcmNhY2hlIGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHk6IGl0cyB1c2FnZWNv dW50IGNvbHVtbiBhbmQgdGhlCnBnX2J1ZmZlcmNhY2hlX3N1bW1hcnkgYXZlcmFnZSByZXBv cnQgdGhlIGNvb2xpbmcgc3RhdGUgKDAgPSBDT09MLCAxID0gSE9UKSwKYW5kIHBnX2J1ZmZl cmNhY2hlX3VzYWdlX2NvdW50cygpIGJ1Y2tldHMgb24gaXQuICBVc2luZyB0aGUgcmF3IDQt Yml0IGdldHRlcgp0aGVyZSB3b3VsZCBpbmRleCBpdHMgQk1fTUFYX1VTQUdFX0NPVU5UKzEg PSAyLWVsZW1lbnQgYXJyYXlzIHdpdGggdmFsdWVzIHVwCnRvIDMgYW5kIG92ZXJydW4gdGhl IHN0YWNrOyBtYXNraW5nIHRvIHRoZSBjb29saW5nIGJpdCBrZWVwcyB0aGUgaW5kZXggaW4K cmFuZ2UuICBUaGUgcmVmZXJlbmNlIGJpdCBpcyBkZWxpYmVyYXRlbHkgbm90IGV4cG9zZWQg YXMgdXNhZ2Vjb3VudC4KCkRlcGVuZHMgb24gdGhlIGJhdGNoZWQgY2xvY2sgc3dlZXAgZnJv bSB0aGUgcHJldmlvdXMgY29tbWl0LgotLS0KIGNvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdf YnVmZmVyY2FjaGVfcGFnZXMuYyB8ICAgNiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZm ZXIvYnVmbWdyLmMgICAgICAgICAgIHwgMTI4ICsrKysrKysrKysrKysrLS0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYyAgICAgICAgIHwgIDU0ICsrKysrLS0t CiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jICAgICAgICAgfCAgMTMg Ky0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5oICAgICAgICAgICB8ICA2 MyArKysrKysrLS0KIDUgZmlsZXMgY2hhbmdlZCwgMjA1IGluc2VydGlvbnMoKyksIDU5IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVm ZmVyY2FjaGVfcGFnZXMuYyBiL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2Fj aGVfcGFnZXMuYwppbmRleCBmMjZiMjMzMi4uNTZmYmFjNDkgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvcGdfYnVmZmVyY2FjaGUvcGdfYnVmZmVyY2FjaGVfcGFnZXMuYworKysgYi9jb250cmli L3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNhY2hlX3BhZ2VzLmMKQEAgLTE2NSw3ICsxNjUs NyBAQCBwZ19idWZmZXJjYWNoZV9wYWdlcyhQR19GVU5DVElPTl9BUkdTKQogCQlyZWxkYXRh YmFzZSA9IGJ1Zkhkci0+dGFnLmRiT2lkOwogCQlmb3JrbnVtID0gQnVmVGFnR2V0Rm9ya051 bSgmYnVmSGRyLT50YWcpOwogCQlibG9ja251bSA9IGJ1Zkhkci0+dGFnLmJsb2NrTnVtOwot CQl1c2FnZWNvdW50ID0gQlVGX1NUQVRFX0dFVF9VU0FHRUNPVU5UKGJ1Zl9zdGF0ZSk7CisJ CXVzYWdlY291bnQgPSBCVUZfU1RBVEVfR0VUX0NPT0xTVEFURShidWZfc3RhdGUpOwogCQlw aW5uaW5nX2JhY2tlbmRzID0gQlVGX1NUQVRFX0dFVF9SRUZDT1VOVChidWZfc3RhdGUpOwog CiAJCWlmIChidWZfc3RhdGUgJiBCTV9ESVJUWSkKQEAgLTYwOSw3ICs2MDksNyBAQCBwZ19i dWZmZXJjYWNoZV9zdW1tYXJ5KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWlmIChidWZfc3RhdGUg JiBCTV9WQUxJRCkKIAkJewogCQkJYnVmZmVyc191c2VkKys7Ci0JCQl1c2FnZWNvdW50X3Rv dGFsICs9IEJVRl9TVEFURV9HRVRfVVNBR0VDT1VOVChidWZfc3RhdGUpOworCQkJdXNhZ2Vj b3VudF90b3RhbCArPSBCVUZfU1RBVEVfR0VUX0NPT0xTVEFURShidWZfc3RhdGUpOwogCiAJ CQlpZiAoYnVmX3N0YXRlICYgQk1fRElSVFkpCiAJCQkJYnVmZmVyc19kaXJ0eSsrOwpAQCAt NjU5LDcgKzY1OSw3IEBAIHBnX2J1ZmZlcmNhY2hlX3VzYWdlX2NvdW50cyhQR19GVU5DVElP Tl9BUkdTKQogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQkJdXNhZ2VfY291bnQg PSBCVUZfU1RBVEVfR0VUX1VTQUdFQ09VTlQoYnVmX3N0YXRlKTsKKwkJdXNhZ2VfY291bnQg PSBCVUZfU1RBVEVfR0VUX0NPT0xTVEFURShidWZfc3RhdGUpOwogCQl1c2FnZV9jb3VudHNb dXNhZ2VfY291bnRdKys7CiAKIAkJaWYgKGJ1Zl9zdGF0ZSAmIEJNX0RJUlRZKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwppbmRleCBhNjAxYzUwNS4uODc4Mjg1YjAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCkBAIC04Myw2ICs4Myw3IEBACiAv KiBCaXRzIGluIFN5bmNPbmVCdWZmZXIncyByZXR1cm4gdmFsdWUgKi8KICNkZWZpbmUgQlVG X1dSSVRURU4JCQkJMHgwMQogI2RlZmluZSBCVUZfUkVVU0FCTEUJCQkweDAyCisjZGVmaW5l IEJVRl9DT09MRUQJCQkJMHgwNAogCiAjZGVmaW5lIFJFTFNfQlNFQVJDSF9USFJFU0hPTEQJ CTIwCiAKQEAgLTYzNCw3ICs2MzUsNyBAQCBzdGF0aWMgdm9pZCBQaW5CdWZmZXJfTG9ja2Vk KEJ1ZmZlckRlc2MgKmJ1Zik7CiBzdGF0aWMgdm9pZCBVbnBpbkJ1ZmZlcihCdWZmZXJEZXNj ICpidWYpOwogc3RhdGljIHZvaWQgVW5waW5CdWZmZXJOb093bmVyKEJ1ZmZlckRlc2MgKmJ1 Zik7CiBzdGF0aWMgdm9pZCBCdWZmZXJTeW5jKGludCBmbGFncyk7Ci1zdGF0aWMgaW50CVN5 bmNPbmVCdWZmZXIoaW50IGJ1Zl9pZCwgYm9vbCBza2lwX3JlY2VudGx5X3VzZWQsCitzdGF0 aWMgaW50CVN5bmNPbmVCdWZmZXIoaW50IGJ1Zl9pZCwgYm9vbCBza2lwX3JlY2VudGx5X3Vz ZWQsIGJvb2wgY29vbF9pZl9ob3QsCiAJCQkJCQkgIFdyaXRlYmFja0NvbnRleHQgKndiX2Nv bnRleHQpOwogc3RhdGljIHZvaWQgV2FpdElPKEJ1ZmZlckRlc2MgKmJ1Zik7CiBzdGF0aWMg dm9pZCBBYm9ydEJ1ZmZlcklPKEJ1ZmZlciBidWZmZXIpOwpAQCAtMjMzMyw3ICsyMzM0LDEw IEBAIEJ1ZmZlckFsbG9jKFNNZ3JSZWxhdGlvbiBzbWdyLCBjaGFyIHJlbHBlcnNpc3RlbmNl LCBGb3JrTnVtYmVyIGZvcmtOdW0sCiAJICogY2hlY2twb2ludHMsIGV4Y2VwdCBmb3IgdGhl aXIgImluaXQiIGZvcmtzLCB3aGljaCBuZWVkIHRvIGJlIHRyZWF0ZWQKIAkgKiBqdXN0IGxp a2UgcGVybWFuZW50IHJlbGF0aW9ucy4KIAkgKi8KLQlzZXRfYml0cyB8PSBCTV9UQUdfVkFM SUQgfCBCVUZfVVNBR0VDT1VOVF9PTkU7CisJc2V0X2JpdHMgfD0gQk1fVEFHX1ZBTElEOwor CS8qIEFkbWl0IHRoZSBuZXdseSBsb2FkZWQgcGFnZSBDT09MIChwcm9iYXRpb24pOyBhIHNl Y29uZCBhY2Nlc3MgdmlhCisJICogUGluQnVmZmVyIHByb21vdGVzIGl0IHRvIEhPVC4gIFRo aXMgaXMgd2hhdCBtYWtlcyBhIG9uZS10b3VjaCBzY2FuCisJICogc2VsZi1ldmljdGluZyAt LSBzZWUgdGhlIGNvb2xpbmctc3RhdGUgbm90ZXMgaW4gYnVmX2ludGVybmFscy5oLiAqLwog CWlmIChyZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQgfHwgZm9y a051bSA9PSBJTklUX0ZPUktOVU0pCiAJCXNldF9iaXRzIHw9IEJNX1BFUk1BTkVOVDsKIApA QCAtMzAwMiw3ICszMDA2LDkgQEAgRXh0ZW5kQnVmZmVyZWRSZWxTaGFyZWQoQnVmZmVyTWFu YWdlclJlbGF0aW9uIGJtciwKIAogCQkJdmljdGltX2J1Zl9oZHItPnRhZyA9IHRhZzsKIAot CQkJc2V0X2JpdHMgfD0gQk1fVEFHX1ZBTElEIHwgQlVGX1VTQUdFQ09VTlRfT05FOworCQkJ c2V0X2JpdHMgfD0gQk1fVEFHX1ZBTElEOworCQkJLyogQWRtaXQgQ09PTCAocHJvYmF0aW9u KTsgc2VlIHRoZSBjb21tZW50IGF0IHRoZSBvdGhlciBhZG1pc3Npb24KKwkJCSAqIHNpdGUg YW5kIHRoZSBjb29saW5nLXN0YXRlIG5vdGVzIGluIGJ1Zl9pbnRlcm5hbHMuaC4gKi8KIAkJ CWlmIChibXIucmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UIHx8 IGZvcmsgPT0gSU5JVF9GT1JLTlVNKQogCQkJCXNldF9iaXRzIHw9IEJNX1BFUk1BTkVOVDsK IApAQCAtMzMzMiwyMSArMzMzOCwxNyBAQCBQaW5CdWZmZXIoQnVmZmVyRGVzYyAqYnVmLCBC dWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneSwKIAkJCS8qIGluY3JlYXNlIHJlZmNvdW50 ICovCiAJCQlidWZfc3RhdGUgKz0gQlVGX1JFRkNPVU5UX09ORTsKIAotCQkJaWYgKHN0cmF0 ZWd5ID09IE5VTEwpCi0JCQl7Ci0JCQkJLyogRGVmYXVsdCBjYXNlOiBpbmNyZWFzZSB1c2Fn ZWNvdW50IHVubGVzcyBhbHJlYWR5IG1heC4gKi8KLQkJCQlpZiAoQlVGX1NUQVRFX0dFVF9V U0FHRUNPVU5UKGJ1Zl9zdGF0ZSkgPCBCTV9NQVhfVVNBR0VfQ09VTlQpCi0JCQkJCWJ1Zl9z dGF0ZSArPSBCVUZfVVNBR0VDT1VOVF9PTkU7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJ LyoKLQkJCQkgKiBSaW5nIGJ1ZmZlcnMgc2hvdWxkbid0IGV2aWN0IG90aGVycyBmcm9tIHBv b2wuICBUaHVzIHdlCi0JCQkJICogZG9uJ3QgbWFrZSB1c2FnZWNvdW50IG1vcmUgdGhhbiAx LgotCQkJCSAqLwotCQkJCWlmIChCVUZfU1RBVEVfR0VUX1VTQUdFQ09VTlQoYnVmX3N0YXRl KSA9PSAwKQotCQkJCQlidWZfc3RhdGUgKz0gQlVGX1VTQUdFQ09VTlRfT05FOwotCQkJfQor CQkJLyoKKwkJCSAqIEFjY2Vzc2luZyBhIHJlc2lkZW50IGJ1ZmZlciBwcm9tb3RlcyBpdCB0 byBIT1QgKHRoZSAyUSByZXNjdWUpOgorCQkJICogYSBwYWdlIGxvYWRlZCBDT09MIG9uIHBy b2JhdGlvbiBiZWNvbWVzIHBhcnQgb2YgdGhlIGhvdCB3b3JraW5nCisJCQkgKiBzZXQgb24g aXRzIHNlY29uZCB0b3VjaC4gIEJNX01BWF9VU0FHRV9DT1VOVCBpcworCQkJICogQlVGX0NP T0xTVEFURV9IT1QgKDEpLCBzbyB0aGlzIHNhdHVyYXRlcyBhdCBIT1QgYW5kIG5ldmVyCisJ CQkgKiBvdmVyZmxvd3MgdGhlIGZpZWxkLiAgV2UgYWxzbyBzZXQgdGhlIHNlY29uZC1jaGFu Y2UgcmVmIGJpdCBzbworCQkJICogdGhlIGJnd3JpdGVyJ3MgbmV4dCBjb29saW5nIHBhc3Mg c3BhcmVzIHRoaXMgcmVjZW50bHktdXNlZCBidWZmZXIuCisJCQkgKi8KKwkJCWlmIChCVUZf U1RBVEVfR0VUX0NPT0xTVEFURShidWZfc3RhdGUpIDwgQlVGX0NPT0xTVEFURV9IT1QpCisJ CQkJYnVmX3N0YXRlICs9IEJVRl9DT09MU1RBVEVfT05FOworCQkJYnVmX3N0YXRlIHw9IEJV Rl9SRUZCSVQ7CiAKIAkJCWlmIChwZ19hdG9taWNfY29tcGFyZV9leGNoYW5nZV91NjQoJmJ1 Zi0+c3RhdGUsICZvbGRfYnVmX3N0YXRlLAogCQkJCQkJCQkJCQkgICBidWZfc3RhdGUpKQpA QCAtMzc4NSw3ICszNzg3LDcgQEAgQnVmZmVyU3luYyhpbnQgZmxhZ3MpCiAJCSAqLwogCQlp ZiAocGdfYXRvbWljX3JlYWRfdTY0KCZidWZIZHItPnN0YXRlKSAmIEJNX0NIRUNLUE9JTlRf TkVFREVEKQogCQl7Ci0JCQlpZiAoU3luY09uZUJ1ZmZlcihidWZfaWQsIGZhbHNlLCAmd2Jf Y29udGV4dCkgJiBCVUZfV1JJVFRFTikKKwkJCWlmIChTeW5jT25lQnVmZmVyKGJ1Zl9pZCwg ZmFsc2UsIGZhbHNlLCAmd2JfY29udGV4dCkgJiBCVUZfV1JJVFRFTikKIAkJCXsKIAkJCQlU UkFDRV9QT1NUR1JFU1FMX0JVRkZFUl9TWU5DX1dSSVRURU4oYnVmX2lkKTsKIAkJCQlQZW5k aW5nQ2hlY2twb2ludGVyU3RhdHMuYnVmZmVyc193cml0dGVuKys7CkBAIC0zODc3LDYgKzM4 NzksMTkgQEAgQmdCdWZmZXJTeW5jUGFydGl0aW9uKFdyaXRlYmFja0NvbnRleHQgKndiX2Nv bnRleHQsIGludCBudW1fcGFydGl0aW9ucywKIAlmbG9hdAkJc21vb3RoaW5nX3NhbXBsZXMg PSAxNjsKIAlmbG9hdAkJc2Nhbl93aG9sZV9wb29sX21pbGxpc2Vjb25kcyA9IDEyMDAwMC4w OwogCisJLyoKKwkgKiBUaGUgY2xlYW5lciBzY2FuIGRpcmVjdGx5IG9ic2VydmVzIHRoZSBy ZXVzYWJsZSAoQ09PTCwgdW5waW5uZWQpIGJ1ZmZlcgorCSAqIGRlbnNpdHkgb3ZlciB0aGUg cmVnaW9uIGl0IHdhbGtzLCB3aGljaCAtLSB3aXRoIHRoZSBjb29saW5nLXN0YWdlCisJICog ZXZpY3RvciAtLSBpcyBleGFjdGx5IHRoZSBzd2VlcCdzIHZpY3RpbSBwcmVkaWNhdGUuICBU aGF0IG9ic2VydmF0aW9uIGlzCisJICogZ3JvdW5kIHRydXRoIGZvciB0aGUgYnVmZmVycyBh Ym91dCB0byBiZSByZXVzZWQsIHdoZXJlYXMgdGhlIHN0cmF0ZWd5CisJICogc2NhbidzIHBv c2l0aW9uYWwgcHJveHkgKHN0cmF0ZWd5X2RlbHRhL3JlY2VudF9hbGxvYykgYmx1cnMgYSBw b29sIHdob3NlCisJICogQ09PTCBwb3B1bGF0aW9uIGlzIHNwYXRpYWxseSBjbHVzdGVyZWQg KGEgc2NhbiBidXJzdCBsZWF2ZXMgd2hvbGUgcmVnaW9ucworCSAqIENPT0wsIGhvdCBPTFRQ IHJlZ2lvbnMgbm90KS4gIFNvIHdlIGxldCB0aGUgY2xlYW5lcidzIG93biBzYW1wbGUgYWRh cHQgb24KKwkgKiBhIHNob3J0ZXIgd2luZG93IHRoYW4gdGhlIHN0cmF0ZWd5IHByb3h5LCB0 cmFja2luZyBhIGJ1cnN0IG9mCisJICogcHJvYmF0aW9uYXJ5L3NjYW4gQ09PTCBwYWdlcyB3 aXRoaW4gYSBjeWNsZSBvciB0d28gaW5zdGVhZCBvZiBsYWdnaW5nIGl0LgorCSAqLworCWZs b2F0CQljbGVhbmVyX3Ntb290aGluZ19zYW1wbGVzID0gNDsKKwogCS8qIFVzZWQgdG8gY29t cHV0ZSBob3cgZmFyIHdlIHNjYW4gYWhlYWQgKi8KIAlsb25nCQlzdHJhdGVneV9kZWx0YTsK IAlpbnQJCQlidWZzX3RvX2xhcDsKQEAgLTM4OTAsNiArMzkwNSw3IEBAIEJnQnVmZmVyU3lu Y1BhcnRpdGlvbihXcml0ZWJhY2tDb250ZXh0ICp3Yl9jb250ZXh0LCBpbnQgbnVtX3BhcnRp dGlvbnMsCiAJaW50CQkJbnVtX3RvX3NjYW47CiAJaW50CQkJbnVtX3dyaXR0ZW47CiAJaW50 CQkJcmV1c2FibGVfYnVmZmVyczsKKwlpbnQJCQl3cml0ZV9saW1pdDsKIAogCS8qIFZhcmlh YmxlcyBmb3IgZmluYWwgc21vb3RoZWRfZGVuc2l0eSB1cGRhdGUgKi8KIAlsb25nCQluZXdf c3RyYXRlZ3lfZGVsdGE7CkBAIC00MDU2LDggKzQwNzIsMjIgQEAgQmdCdWZmZXJTeW5jUGFy dGl0aW9uKFdyaXRlYmFja0NvbnRleHQgKndiX2NvbnRleHQsIGludCBudW1fcGFydGl0aW9u cywKIAkgKiBOb3cgd3JpdGUgb3V0IGRpcnR5IHJldXNhYmxlIGJ1ZmZlcnMsIHdvcmtpbmcg Zm9yd2FyZCBmcm9tIHRoZQogCSAqIG5leHRfdG9fY2xlYW4gcG9pbnQsIHVudGlsIHdlIGhh dmUgbGFwcGVkIHRoZSBzdHJhdGVneSBzY2FuLCBvciBjbGVhbmVkCiAJICogZW5vdWdoIGJ1 ZmZlcnMgdG8gbWF0Y2ggb3VyIGVzdGltYXRlIG9mIHRoZSBuZXh0IGN5Y2xlJ3MgYWxsb2Nh dGlvbgotCSAqIHJlcXVpcmVtZW50cywgb3IgaGl0IHRoZSBiZ3dyaXRlcl9scnVfbWF4cGFn ZXMgbGltaXQuCi0JICovCisJICogcmVxdWlyZW1lbnRzLCBvciBoaXQgdGhlIHdyaXRlIGxp bWl0LgorCSAqCisJICogVGhlIHBlci1jeWNsZSB3cml0ZSBjYXAgaXMgbm9ybWFsbHkgYmd3 cml0ZXJfbHJ1X21heHBhZ2VzLiAgQnV0IHVuZGVyIGEKKwkgKiBidWxrLWRpcnR5aW5nIHdv cmtsb2FkIChDT1BZLCBidWxrIFVQREFURSwgVkFDVVVNKSB0aGUgcG9vbCBmaWxscyB3aXRo CisJICogZGlydHkgQ09PTCBidWZmZXJzIGZhc3RlciB0aGFuIHRoYXQgZml4ZWQgY2FwIGNh biBjbGVhbiwgc28gdGhlCisJICogZm9yZWdyb3VuZCBjbG9jayBzd2VlcCBpcyBmb3JjZWQg dG8gZmx1c2ggZGlydHkgdmljdGltcyBpbmxpbmUgLS0gdGhlCisJICogdmVyeSBjb3N0IHRo ZSBjb29saW5nLXN0YWdlIGV2aWN0b3IgaXMgbWVhbnQgdG8ga2VlcCBvZmYgdGhlIGNyaXRp Y2FsCisJICogcGF0aC4gIFdoZW4gcHJlZGljdGVkIGRlbWFuZCAodXBjb21pbmdfYWxsb2Nf ZXN0KSBleGNlZWRzIHRoZSBmaXhlZCBjYXAsCisJICogcmFpc2UgdGhlIGxpbWl0IHRvIG1l ZXQgZGVtYW5kIHNvIHRoZSBiZ3dyaXRlciBzdGF5cyBhaGVhZCBhbmQgc3VwcGxpZXMKKwkg KiBjbGVhbiB2aWN0aW1zLiAgVGhpcyBzdGF5cyBib3VuZGVkIChieSBkZW1hbmQgYW5kIGJ5 IGxhcHBpbmcgdGhlCisJICogc3RyYXRlZ3kgcG9pbnQpLCBzbyBpdCBjYW5ub3QgcnVuIGF3 YXksIGFuZCBub3JtYWwgd29ya2xvYWRzIGFyZQorCSAqIHVuYWZmZWN0ZWQgYmVjYXVzZSB0 aGVyZSB1cGNvbWluZ19hbGxvY19lc3QgPD0gYmd3cml0ZXJfbHJ1X21heHBhZ2VzLgorCSAq LworCXdyaXRlX2xpbWl0ID0gYmd3cml0ZXJfbHJ1X21heHBhZ2VzOworCWlmICh1cGNvbWlu Z19hbGxvY19lc3QgPiB3cml0ZV9saW1pdCkKKwkJd3JpdGVfbGltaXQgPSB1cGNvbWluZ19h bGxvY19lc3Q7CiAKIAludW1fdG9fc2NhbiA9IGJ1ZnNfdG9fbGFwOwogCW51bV93cml0dGVu ID0gMDsKQEAgLTQwNjYsNyArNDA5NiwxMyBAQCBCZ0J1ZmZlclN5bmNQYXJ0aXRpb24oV3Jp dGViYWNrQ29udGV4dCAqd2JfY29udGV4dCwgaW50IG51bV9wYXJ0aXRpb25zLAogCS8qIEV4 ZWN1dGUgdGhlIExSVSBzY2FuICovCiAJd2hpbGUgKG51bV90b19zY2FuID4gMCAmJiByZXVz YWJsZV9idWZmZXJzIDwgdXBjb21pbmdfYWxsb2NfZXN0KQogCXsKLQkJaW50CQkJc3luY19z dGF0ZSA9IFN5bmNPbmVCdWZmZXIoc2F2ZWQtPm5leHRfdG9fY2xlYW4sIHRydWUsCisJCS8q CisJCSAqIGNvb2xfaWZfaG90ID0gZmFsc2U6IHdpdGggdGhlIGNvb2wtaW4tcGxhY2UgZm9y ZWdyb3VuZCBzd2VlcCwgdGhlCisJCSAqIGNsb2NrIGhhbmQgZGVtb3RlcyBIT1QgYnVmZmVy cyBvbiBldmVyeSB0aWNrLCBzbyB0aGUgYmd3cml0ZXIgZG9lcworCQkgKiB3cml0ZWJhY2sg b25seSBhbmQgbGVhdmVzIGFsbCBjb29saW5nIHRvIHRoZSBzd2VlcCAobm8gYmFja2dyb3Vu ZAorCQkgKiBwcmUtY29vbGluZywgbm8gZG91YmxlLWNvb2xpbmcpLgorCQkgKi8KKwkJaW50 CQkJc3luY19zdGF0ZSA9IFN5bmNPbmVCdWZmZXIoc2F2ZWQtPm5leHRfdG9fY2xlYW4sIHRy dWUsIGZhbHNlLAogCQkJCQkJCQkJCQkgICB3Yl9jb250ZXh0KTsKIAogCQlpZiAoKytzYXZl ZC0+bmV4dF90b19jbGVhbiA+PSAoZmlyc3RfYnVmZmVyICsgbnVtX2J1ZmZlcnMpKQpAQCAt NDExNCw3ICs0MTUwLDcgQEAgQmdCdWZmZXJTeW5jUGFydGl0aW9uKFdyaXRlYmFja0NvbnRl eHQgKndiX2NvbnRleHQsIGludCBudW1fcGFydGl0aW9ucywKIAl7CiAJCXNjYW5zX3Blcl9h bGxvYyA9IChmbG9hdCkgbmV3X3N0cmF0ZWd5X2RlbHRhIC8gKGZsb2F0KSBuZXdfcmVjZW50 X2FsbG9jOwogCQlzbW9vdGhlZF9kZW5zaXR5ICs9IChzY2Fuc19wZXJfYWxsb2MgLSBzbW9v dGhlZF9kZW5zaXR5KSAvCi0JCQlzbW9vdGhpbmdfc2FtcGxlczsKKwkJCWNsZWFuZXJfc21v b3RoaW5nX3NhbXBsZXM7CiAKICNpZmRlZiBCR1dfREVCVUcKIAkJZWxvZyhERUJVRzIsICJi Z3dyaXRlcjogY2xlYW5lciBkZW5zaXR5IGFsbG9jPSV1IHNjYW49JWxkIGRlbnNpdHk9JS4y ZiBuZXcgc21vb3RoZWQ9JS4yZiIsCkBAIC00MjExLDE2ICs0MjQ3LDI2IEBAIEJnQnVmZmVy U3luYyhXcml0ZWJhY2tDb250ZXh0ICp3Yl9jb250ZXh0KQogICogSWYgc2tpcF9yZWNlbnRs eV91c2VkIGlzIHRydWUsIHdlIGRvbid0IHdyaXRlIGN1cnJlbnRseS1waW5uZWQgYnVmZmVy cywgbm9yCiAgKiBidWZmZXJzIG1hcmtlZCByZWNlbnRseSB1c2VkLCBhcyB0aGVzZSBhcmUg bm90IHJlcGxhY2VtZW50IGNhbmRpZGF0ZXMuCiAgKgorICogSWYgY29vbF9pZl9ob3QgaXMg dHJ1ZSAodGhlIGJnd3JpdGVyJ3MgTFJVIHNjYW4pLCBhbiB1bnBpbm5lZCBIT1QgYnVmZmVy IGlzCisgKiBkZW1vdGVkIEhPVCAtPiBDT09MIGFzIHdlIHBhc3MgaXQsIHByZS1zdGFnaW5n IGV2aWN0aW9uIGNhbmRpZGF0ZXMgc28gdGhlCisgKiBmb3JlZ3JvdW5kIGNsb2NrIHN3ZWVw IGZpbmRzIGEgQ09PTCB2aWN0aW0gaW4gYSBzaW5nbGUgcGFzcyBpbnN0ZWFkIG9mCisgKiBo YXZpbmcgdG8gY29vbCBidWZmZXJzIGl0c2VsZiAoZm9yY2VfY29vbCkuICBUaGUgZGVtb3Rp b24gaXMgZG9uZSB1bmRlciB0aGUKKyAqIGJ1ZmZlciBoZWFkZXIgbG9jayB3ZSBhbHJlYWR5 IGhvbGQsIHNvIGl0IG5lZWRzIG5vIENBUyBhbmQgY2Fubm90IHJhY2UgYQorICogY29uY3Vy cmVudCBkZW1vdGlvbi4gIEEgY29uY3VycmVudCBQaW5CdWZmZXIgcHJvbW90ZXMgaXQgYmFj ayB0byBIT1QsIHdoaWNoCisgKiBpcyB0aGUgaW50ZW5kZWQgMlEgYmVoYXZpb3IgKGEgcmUt YWNjZXNzZWQgYnVmZmVyIGlzIHJlc2N1ZWQpLgorICoKICAqIFJldHVybnMgYSBiaXRtYXNr IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBmbGFnIGJpdHM6CiAgKglCVUZfV1JJVFRFTjog d2Ugd3JvdGUgdGhlIGJ1ZmZlci4KICAqCUJVRl9SRVVTQUJMRTogYnVmZmVyIGlzIGF2YWls YWJsZSBmb3IgcmVwbGFjZW1lbnQsIGllLCBpdCBoYXMKLSAqCQlwaW4gY291bnQgMCBhbmQg dXNhZ2UgY291bnQgMC4KKyAqCQlwaW4gY291bnQgMCBhbmQgaXMgQ09PTCAoYW4gZXZpY3Rp b24gY2FuZGlkYXRlKS4KKyAqCUJVRl9DT09MRUQ6IHdlIGRlbW90ZWQgdGhpcyBidWZmZXIg SE9UIC0+IENPT0wgdGhpcyBjYWxsLgogICoKICAqIChCVUZfV1JJVFRFTiBjb3VsZCBiZSBz ZXQgaW4gZXJyb3IgaWYgRmx1c2hCdWZmZXIgZmluZHMgdGhlIGJ1ZmZlciBjbGVhbgogICog YWZ0ZXIgbG9ja2luZyBpdCwgYnV0IHdlIGRvbid0IGNhcmUgYWxsIHRoYXQgbXVjaC4pCiAg Ki8KIHN0YXRpYyBpbnQKLVN5bmNPbmVCdWZmZXIoaW50IGJ1Zl9pZCwgYm9vbCBza2lwX3Jl Y2VudGx5X3VzZWQsIFdyaXRlYmFja0NvbnRleHQgKndiX2NvbnRleHQpCitTeW5jT25lQnVm ZmVyKGludCBidWZfaWQsIGJvb2wgc2tpcF9yZWNlbnRseV91c2VkLCBib29sIGNvb2xfaWZf aG90LAorCQkJICBXcml0ZWJhY2tDb250ZXh0ICp3Yl9jb250ZXh0KQogewogCUJ1ZmZlckRl c2MgKmJ1ZkhkciA9IEdldEJ1ZmZlckRlc2NyaXB0b3IoYnVmX2lkKTsKIAlpbnQJCQlyZXN1 bHQgPSAwOwpAQCAtNDI0Miw4ICs0Mjg4LDM4IEBAIFN5bmNPbmVCdWZmZXIoaW50IGJ1Zl9p ZCwgYm9vbCBza2lwX3JlY2VudGx5X3VzZWQsIFdyaXRlYmFja0NvbnRleHQgKndiX2NvbnRl eHQpCiAJICovCiAJYnVmX3N0YXRlID0gTG9ja0J1ZkhkcihidWZIZHIpOwogCisJLyoKKwkg KiBQcmUtY29vbCB3aXRoIGEgc2Vjb25kIGNoYW5jZTogaWYgYXNrZWQsIGFjdCBvbiBhbiB1 bnBpbm5lZCBIT1QgYnVmZmVyLgorCSAqIElmIGl0cyByZWYgYml0IGlzIHNldCAoYWNjZXNz ZWQgc2luY2Ugb3VyIGxhc3QgcGFzcyksIGNsZWFyIHRoZSByZWYgYml0CisJICogYW5kIGxl YXZlIGl0IEhPVCAtLSBhIHJlY2VudGx5LXVzZWQgYnVmZmVyIGVhcm5zIG9uZSByZXByaWV2 ZSwga2VlcGluZworCSAqIHRoZSBob3Qgd29ya2luZyBzZXQgb3V0IG9mIHRoZSBDT09MIHN0 YWdlIHVuZGVyIHNjYW4gcHJlc3N1cmUuICBPbmx5IGEKKwkgKiBIT1QgYnVmZmVyIHdob3Nl IHJlZiBiaXQgaXMgYWxyZWFkeSBjbGVhciBpcyBkZW1vdGVkIEhPVCAtPiBDT09MLAorCSAq IHByZS1zdGFnaW5nIGl0IGFzIGFuIGV2aWN0aW9uIGNhbmRpZGF0ZSBmb3IgdGhlIGZvcmVn cm91bmQgc3dlZXAuICBXZQorCSAqIGhvbGQgdGhlIGhlYWRlciBsb2NrLCBzbyBlYWNoIHRy YW5zaXRpb24gaXMgYSBwbGFpbiBtYXNrZWQgc3RvcmUgYXBwbGllZAorCSAqIGF0b21pY2Fs bHkgYnkgVW5sb2NrQnVmSGRyRXh0OyB3ZSByZS1sb2NrIHRvIGNvbnRpbnVlIHRoZSBkaXJ0 eS13cml0ZQorCSAqIGluc3BlY3Rpb24gYmVsb3cuCisJICovCisJaWYgKGNvb2xfaWZfaG90 ICYmCisJCUJVRl9TVEFURV9HRVRfUkVGQ09VTlQoYnVmX3N0YXRlKSA9PSAwICYmCisJCUJV Rl9TVEFURV9HRVRfQ09PTFNUQVRFKGJ1Zl9zdGF0ZSkgIT0gQlVGX0NPT0xTVEFURV9DT09M KQorCXsKKwkJaWYgKEJVRl9TVEFURV9HRVRfUkVGQklUKGJ1Zl9zdGF0ZSkpCisJCXsKKwkJ CS8qIHNlY29uZCBjaGFuY2U6IGNvbnN1bWUgdGhlIHJlZiBiaXQsIHN0YXkgSE9UICovCisJ CQlVbmxvY2tCdWZIZHJFeHQoYnVmSGRyLCBidWZfc3RhdGUsIDAsIEJVRl9SRUZCSVQsIDAp OworCQkJYnVmX3N0YXRlID0gTG9ja0J1ZkhkcihidWZIZHIpOworCQl9CisJCWVsc2UKKwkJ eworCQkJLyogbm90IHJlLWFjY2Vzc2VkIHNpbmNlIGxhc3QgcGFzczogZGVtb3RlIHRvIENP T0wgKi8KKwkJCVVubG9ja0J1ZkhkckV4dChidWZIZHIsIGJ1Zl9zdGF0ZSwgMCwgQlVGX1VT QUdFQ09VTlRfTUFTSywgMCk7CisJCQlidWZfc3RhdGUgPSBMb2NrQnVmSGRyKGJ1Zkhkcik7 CisJCQlyZXN1bHQgfD0gQlVGX0NPT0xFRDsKKwkJfQorCX0KKwogCWlmIChCVUZfU1RBVEVf R0VUX1JFRkNPVU5UKGJ1Zl9zdGF0ZSkgPT0gMCAmJgotCQlCVUZfU1RBVEVfR0VUX1VTQUdF Q09VTlQoYnVmX3N0YXRlKSA9PSAwKQorCQlCVUZfU1RBVEVfR0VUX0NPT0xTVEFURShidWZf c3RhdGUpID09IEJVRl9DT09MU1RBVEVfQ09PTCkKIAl7CiAJCXJlc3VsdCB8PSBCVUZfUkVV U0FCTEU7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJl ZWxpc3QuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKaW5kZXgg OGUzZjdjMzEuLjEyYWQwZDRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9mcmVlbGlzdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVs aXN0LmMKQEAgLTYyMCw2ICs2MjAsNyBAQCBTdHJhdGVneUdldEJ1ZmZlclBhcnRpdGlvbihD bG9ja1N3ZWVwICpzd2VlcCwgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksCiAJewog CQl1aW50NjQJCW9sZF9idWZfc3RhdGU7CiAJCXVpbnQ2NAkJbG9jYWxfYnVmX3N0YXRlOwor CQlib29sCQlub19wcm9ncmVzcyA9IGZhbHNlOwogCiAJCWJ1ZiA9IEdldEJ1ZmZlckRlc2Ny aXB0b3IoQ2xvY2tTd2VlcFRpY2soc3dlZXApKTsKIApAQCAtNjMyLDEyICs2MzMsNyBAQCBT dHJhdGVneUdldEJ1ZmZlclBhcnRpdGlvbihDbG9ja1N3ZWVwICpzd2VlcCwgQnVmZmVyQWNj ZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksCiAJCXsKIAkJCWxvY2FsX2J1Zl9zdGF0ZSA9IG9sZF9i dWZfc3RhdGU7CiAKLQkJCS8qCi0JCQkgKiBJZiB0aGUgYnVmZmVyIGlzIHBpbm5lZCBvciBo YXMgYSBub256ZXJvIHVzYWdlX2NvdW50LCB3ZSBjYW5ub3QKLQkJCSAqIHVzZSBpdDsgZGVj cmVtZW50IHRoZSB1c2FnZV9jb3VudCAodW5sZXNzIHBpbm5lZCkgYW5kIGtlZXAKLQkJCSAq IHNjYW5uaW5nLgotCQkJICovCi0KKwkJCS8qIElmIHRoZSBidWZmZXIgaXMgcGlubmVkIHdl IGNhbm5vdCB1c2UgaXQ7IGtlZXAgc2Nhbm5pbmcuICovCiAJCQlpZiAoQlVGX1NUQVRFX0dF VF9SRUZDT1VOVChsb2NhbF9idWZfc3RhdGUpICE9IDApCiAJCQl7CiAJCQkJaWYgKC0tdHJ5 Y291bnRlciA9PSAwKQpAQCAtNjYxLDkgKzY1NywyMyBAQCBTdHJhdGVneUdldEJ1ZmZlclBh cnRpdGlvbihDbG9ja1N3ZWVwICpzd2VlcCwgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRl Z3ksCiAJCQkJY29udGludWU7CiAJCQl9CiAKLQkJCWlmIChCVUZfU1RBVEVfR0VUX1VTQUdF Q09VTlQobG9jYWxfYnVmX3N0YXRlKSAhPSAwKQorCQkJaWYgKEJVRl9TVEFURV9HRVRfQ09P TFNUQVRFKGxvY2FsX2J1Zl9zdGF0ZSkgIT0gQlVGX0NPT0xTVEFURV9DT09MKQogCQkJewot CQkJCWxvY2FsX2J1Zl9zdGF0ZSAtPSBCVUZfVVNBR0VDT1VOVF9PTkU7CisJCQkJLyoKKwkJ CQkgKiBIT1QgYnVmZmVyOiBjb29sIGl0IGluIHBsYWNlIHRoaXMgdGljay4gIEFwcGx5IGEg c2luZ2xlCisJCQkJICogc2Vjb25kLWNoYW5jZSByZWZlcmVuY2UgYml0OiBhIEhPVCBidWZm ZXIgd2hvc2UgcmVmIGJpdCBpcworCQkJCSAqIHNldCAodG91Y2hlZCBzaW5jZSBpdCB3YXMg bGFzdCBwYXNzZWQpIGhhcyB0aGUgcmVmIGJpdAorCQkJCSAqIGNsZWFyZWQgYW5kIHN0YXlz IEhPVDsgb25seSBhIEhPVCBidWZmZXIgd2hvc2UgcmVmIGJpdCBpcworCQkJCSAqIGFscmVh ZHkgY2xlYXIgaXMgZGVtb3RlZCBIT1QgLT4gQ09PTC4gIEVpdGhlciB0cmFuc2l0aW9uIGlz CisJCQkJICogcHJvZ3Jlc3MgdG93YXJkIGEgdmljdGltLCBzbyByZXNldCB0cnljb3VudGVy LiAgV2UgZG8gTk9UCisJCQkJICogY2xhaW0gdGhlIGJ1ZmZlciB0aGlzIHRpY2sgLS0gYSBk ZW1vdGVkIGJ1ZmZlciBiZWNvbWVzIGEKKwkJCQkgKiBjYW5kaWRhdGUgZm9yIGEgbGF0ZXIg dGljaywgZ2l2aW5nIGl0IG9uZSBtb3JlIGZ1bGwgc3dlZXAgb2YKKwkJCQkgKiBncmFjZSBi ZWZvcmUgZXZpY3Rpb24uCisJCQkJICovCisJCQkJaWYgKEJVRl9TVEFURV9HRVRfUkVGQklU KGxvY2FsX2J1Zl9zdGF0ZSkpCisJCQkJCWxvY2FsX2J1Zl9zdGF0ZSAmPSB+QlVGX1JFRkJJ VDsJCQkvKiBzZWNvbmQgY2hhbmNlOiBjbGVhciByZWYsIHN0YXkgSE9UICovCisJCQkJZWxz ZQorCQkJCQlsb2NhbF9idWZfc3RhdGUgJj0gfkJVRl9VU0FHRUNPVU5UX01BU0s7CS8qIEhP VCAtPiBDT09MLCBjbGVhciByZWYgYml0ICovCiAKIAkJCQlpZiAocGdfYXRvbWljX2NvbXBh cmVfZXhjaGFuZ2VfdTY0KCZidWYtPnN0YXRlLCAmb2xkX2J1Zl9zdGF0ZSwKIAkJCQkJCQkJ CQkJCSAgIGxvY2FsX2J1Zl9zdGF0ZSkpCkBAIC02NzQsNyArNjg0LDcgQEAgU3RyYXRlZ3lH ZXRCdWZmZXJQYXJ0aXRpb24oQ2xvY2tTd2VlcCAqc3dlZXAsIEJ1ZmZlckFjY2Vzc1N0cmF0 ZWd5IHN0cmF0ZWd5LAogCQkJfQogCQkJZWxzZQogCQkJewotCQkJCS8qIHBpbiB0aGUgYnVm ZmVyIGlmIHRoZSBDQVMgc3VjY2VlZHMgKi8KKwkJCQkvKiBDT09MIGFuZCB1bnBpbm5lZDog Y2xhaW0gaXQuICBQaW4gaWYgdGhlIENBUyBzdWNjZWVkcy4gKi8KIAkJCQlsb2NhbF9idWZf c3RhdGUgKz0gQlVGX1JFRkNPVU5UX09ORTsKIAogCQkJCWlmIChwZ19hdG9taWNfY29tcGFy ZV9leGNoYW5nZV91NjQoJmJ1Zi0+c3RhdGUsICZvbGRfYnVmX3N0YXRlLApAQCAtNjkxLDYg KzcwMSwxNSBAQCBTdHJhdGVneUdldEJ1ZmZlclBhcnRpdGlvbihDbG9ja1N3ZWVwICpzd2Vl cCwgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgc3RyYXRlZ3ksCiAJCQkJfQogCQkJfQogCQl9CisK KwkJLyoKKwkJICogT25seSBhIHBpbm5lZCBidWZmZXIgaXMgbm8gcHJvZ3Jlc3MuICBBIGZ1 bGwgTkJ1ZmZlcnMgcGFzcyB0aGF0CisJCSAqIG1ha2VzIG5vIHByb2dyZXNzIG1lYW5zIGV2 ZXJ5IGJ1ZmZlciBpcyBwaW5uZWQsIHNvIGZhaWwgcmF0aGVyIHRoYW4KKwkJICogc3BpbiBm b3JldmVyLiAgKEEgZmFpbGVkIENBUyBhYm92ZSBpcyBuZWl0aGVyIHByb2dyZXNzIG5vciBh IGZ1bGwKKwkJICogbWlzczogd2Ugc2ltcGx5IHJldHJ5IHRoZSBzYW1lIGJ1ZmZlci4pCisJ CSAqLworCQlpZiAobm9fcHJvZ3Jlc3MgJiYgLS10cnljb3VudGVyID09IDApCisJCQllbG9n KEVSUk9SLCAibm8gdW5waW5uZWQgYnVmZmVycyBhdmFpbGFibGUiKTsKIAl9CiB9CiAKQEAg LTEzOTgsMTQgKzE0MTcsMTcgQEAgR2V0QnVmZmVyRnJvbVJpbmcoQnVmZmVyQWNjZXNzU3Ry YXRlZ3kgc3RyYXRlZ3ksIHVpbnQ2NCAqYnVmX3N0YXRlKQogCQkvKgogCQkgKiBJZiB0aGUg YnVmZmVyIGlzIHBpbm5lZCB3ZSBjYW5ub3QgdXNlIGl0IHVuZGVyIGFueSBjaXJjdW1zdGFu Y2VzLgogCQkgKgotCQkgKiBJZiB1c2FnZV9jb3VudCBpcyAwIG9yIDEgdGhlbiB0aGUgYnVm ZmVyIGlzIGZhaXIgZ2FtZSAod2UgZXhwZWN0IDEsCi0JCSAqIHNpbmNlIG91ciBvd24gcHJl dmlvdXMgdXNhZ2Ugb2YgdGhlIHJpbmcgZWxlbWVudCB3b3VsZCBoYXZlIGxlZnQgaXQKLQkJ ICogdGhlcmUsIGJ1dCBpdCBtaWdodCd2ZSBiZWVuIGRlY3JlbWVudGVkIGJ5IGNsb2NrLXN3 ZWVwIHNpbmNlIHRoZW4pLgotCQkgKiBBIGhpZ2hlciB1c2FnZV9jb3VudCBpbmRpY2F0ZXMg c29tZW9uZSBlbHNlIGhhcyB0b3VjaGVkIHRoZSBidWZmZXIsCi0JCSAqIHNvIHdlIHNob3Vs ZG4ndCByZS11c2UgaXQuCisJCSAqIElmIGl0IGlzIHVucGlubmVkIGJ1dCBoYXMgYmVlbiBw cm9tb3RlZCB0byBIT1QsIGFub3RoZXIgYmFja2VuZAorCQkgKiB0b3VjaGVkIGl0IHNpbmNl IHdlIGxhc3QgY3ljbGVkIHBhc3QgdGhpcyByaW5nIHNsb3QsIHNvIGl0IGhhcworCQkgKiBq b2luZWQgdGhlIHdvcmtpbmcgc2V0IGFuZCB3ZSBtdXN0IG5vdCByZWN5Y2xlIGl0IC0tIHRl bGwgdGhlIGNhbGxlcgorCQkgKiB0byBnZXQgYSBmcmVzaCB2aWN0aW0gZnJvbSB0aGUgc3dl ZXAgaW5zdGVhZC4gIFRoaXMgaXMgdGhlIDEtYml0CisJCSAqIGNvb2xpbmctc3RhdGUgYW5h bG9nIG9mIHRoZSBzdG9jayByaW5nJ3MgInVzYWdlX2NvdW50ID4gMSBtZWFucworCQkgKiBz b21lb25lIGVsc2UgdG91Y2hlZCBpdCIgdGVzdDogYSBzbG90IHRoZSByaW5nIGtlZXBzIHJl dXNpbmcgYW5kCisJCSAqIG5vYm9keSBlbHNlIHBpbnMgc3RheXMgQ09PTCwgYW5kIGFuIG91 dC1vZi1yaW5nIFBpbkJ1ZmZlcigpIGlzCisJCSAqIGV4YWN0bHkgd2hhdCBwcm9tb3RlcyBp dCB0byBIT1QuCiAJCSAqLwotCQlpZiAoQlVGX1NUQVRFX0dFVF9SRUZDT1VOVChsb2NhbF9i dWZfc3RhdGUpICE9IDAKLQkJCXx8IEJVRl9TVEFURV9HRVRfVVNBR0VDT1VOVChsb2NhbF9i dWZfc3RhdGUpID4gMSkKKwkJaWYgKEJVRl9TVEFURV9HRVRfUkVGQ09VTlQobG9jYWxfYnVm X3N0YXRlKSAhPSAwIHx8CisJCQlCVUZfU1RBVEVfR0VUX0NPT0xTVEFURShsb2NhbF9idWZf c3RhdGUpICE9IEJVRl9DT09MU1RBVEVfQ09PTCkKIAkJCWJyZWFrOwogCiAJCS8qIFNlZSBl cXVpdmFsZW50IGNvZGUgaW4gUGluQnVmZmVyKCkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9sb2NhbGJ1Zi5jCmluZGV4IDQ4NzBjOGUxLi4yMWMwODA5MSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jCkBAIC0xNjcsNyArMTY3LDcgQEAgTG9jYWxC dWZmZXJBbGxvYyhTTWdyUmVsYXRpb24gc21nciwgRm9ya051bWJlciBmb3JrTnVtLCBCbG9j a051bWJlciBibG9ja051bSwKIAogCQlidWZfc3RhdGUgPSBwZ19hdG9taWNfcmVhZF91NjQo JmJ1Zkhkci0+c3RhdGUpOwogCQlidWZfc3RhdGUgJj0gfihCVUZfRkxBR19NQVNLIHwgQlVG X1VTQUdFQ09VTlRfTUFTSyk7Ci0JCWJ1Zl9zdGF0ZSB8PSBCTV9UQUdfVkFMSUQgfCBCVUZf VVNBR0VDT1VOVF9PTkU7CisJCWJ1Zl9zdGF0ZSB8PSBCTV9UQUdfVkFMSUQ7CS8qIGFkbWl0 IENPT0wgKHByb2JhdGlvbikgKi8KIAkJcGdfYXRvbWljX3VubG9ja2VkX3dyaXRlX3U2NCgm YnVmSGRyLT5zdGF0ZSwgYnVmX3N0YXRlKTsKIAogCQkqZm91bmRQdHIgPSBmYWxzZTsKQEAg LTI0OCw5ICsyNDgsMTAgQEAgR2V0TG9jYWxWaWN0aW1CdWZmZXIodm9pZCkKIAkJewogCQkJ dWludDY0CQlidWZfc3RhdGUgPSBwZ19hdG9taWNfcmVhZF91NjQoJmJ1Zkhkci0+c3RhdGUp OwogCi0JCQlpZiAoQlVGX1NUQVRFX0dFVF9VU0FHRUNPVU5UKGJ1Zl9zdGF0ZSkgPiAwKQor CQkJaWYgKEJVRl9TVEFURV9HRVRfQ09PTFNUQVRFKGJ1Zl9zdGF0ZSkgIT0gQlVGX0NPT0xT VEFURV9DT09MKQogCQkJewotCQkJCWJ1Zl9zdGF0ZSAtPSBCVUZfVVNBR0VDT1VOVF9PTkU7 CisJCQkJLyogSE9UOiBnaXZlIGl0IGEgc2Vjb25kIGNoYW5jZSwgY29vbCBpdCBhbmQga2Vl cCBzY2FubmluZy4gKi8KKwkJCQlidWZfc3RhdGUgLT0gQlVGX0NPT0xTVEFURV9PTkU7CiAJ CQkJcGdfYXRvbWljX3VubG9ja2VkX3dyaXRlX3U2NCgmYnVmSGRyLT5zdGF0ZSwgYnVmX3N0 YXRlKTsKIAkJCQl0cnljb3VudGVyID0gTkxvY0J1ZmZlcjsKIAkJCX0KQEAgLTQ1NCw3ICs0 NTUsNyBAQCBFeHRlbmRCdWZmZXJlZFJlbExvY2FsKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBi bXIsCiAKIAkJCXZpY3RpbV9idWZfaGRyLT50YWcgPSB0YWc7CiAKLQkJCWJ1Zl9zdGF0ZSB8 PSBCTV9UQUdfVkFMSUQgfCBCVUZfVVNBR0VDT1VOVF9PTkU7CisJCQlidWZfc3RhdGUgfD0g Qk1fVEFHX1ZBTElEOwkvKiBhZG1pdCBDT09MIChwcm9iYXRpb24pICovCiAKIAkJCXBnX2F0 b21pY191bmxvY2tlZF93cml0ZV91NjQoJnZpY3RpbV9idWZfaGRyLT5zdGF0ZSwgYnVmX3N0 YXRlKTsKIApAQCAtODM5LDkgKzg0MCw5IEBAIFBpbkxvY2FsQnVmZmVyKEJ1ZmZlckRlc2Mg KmJ1Zl9oZHIsIGJvb2wgYWRqdXN0X3VzYWdlY291bnQpCiAJCU5Mb2NhbFBpbm5lZEJ1ZmZl cnMrKzsKIAkJYnVmX3N0YXRlICs9IEJVRl9SRUZDT1VOVF9PTkU7CiAJCWlmIChhZGp1c3Rf dXNhZ2Vjb3VudCAmJgotCQkJQlVGX1NUQVRFX0dFVF9VU0FHRUNPVU5UKGJ1Zl9zdGF0ZSkg PCBCTV9NQVhfVVNBR0VfQ09VTlQpCisJCQlCVUZfU1RBVEVfR0VUX0NPT0xTVEFURShidWZf c3RhdGUpIDwgQlVGX0NPT0xTVEFURV9IT1QpCiAJCXsKLQkJCWJ1Zl9zdGF0ZSArPSBCVUZf VVNBR0VDT1VOVF9PTkU7CisJCQlidWZfc3RhdGUgKz0gQlVGX0NPT0xTVEFURV9PTkU7CiAJ CX0KIAkJcGdfYXRvbWljX3VubG9ja2VkX3dyaXRlX3U2NCgmYnVmX2hkci0+c3RhdGUsIGJ1 Zl9zdGF0ZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVy bmFscy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmgKaW5kZXggZDM5 YmQ3ZTguLjA2NGU1NDdhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9p bnRlcm5hbHMuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaApA QCAtNjcsNiArNjcsNTAgQEAgU3RhdGljQXNzZXJ0RGVjbChCVUZfUkVGQ09VTlRfQklUUyAr IEJVRl9VU0FHRUNPVU5UX0JJVFMgKyBCVUZfRkxBR19CSVRTICsgQlVGX0wKICNkZWZpbmUg QlVGX1VTQUdFQ09VTlRfT05FIFwKIAkoVUlOVDY0Q09OU1QoMSkgPDwgQlVGX1JFRkNPVU5U X0JJVFMpCiAKKy8qCisgKiBDb29saW5nIHN0YXRlIChMZWFuU3RvcmUgLyAyUS1BMSBjb29s aW5nLXN0YWdlIGNsb2NrIHN3ZWVwKS4KKyAqCisgKiBUaGUgZmllbGQgaGlzdG9yaWNhbGx5 IHVzZWQgZm9yIHRoZSAwLi41IHVzYWdlX2NvdW50IG5vdyBob2xkcyBhIHNpbmdsZQorICog Y29vbGluZy1zdGF0ZSBiaXQ6IEhPVCAocmVjZW50bHkgYWNjZXNzZWQsIG5vdCBhbiBldmlj dGlvbiBjYW5kaWRhdGUpIG9yCisgKiBDT09MIChhbiBldmljdGlvbiBjYW5kaWRhdGUpLiAg V2UgcmV1c2UgQlVGX1VTQUdFQ09VTlRfT05FIGFzIHRoZSB1bml0IHNvCisgKiB0aGUgYnVm ZmVyLXN0YXRlIGJpdCBnZW9ncmFwaHkgLS0gcmVmY291bnQsIGZsYWcsIGFuZCBsb2NrIG9m ZnNldHMsIGFuZCB0aGUKKyAqIDY0LWJpdCBTdGF0aWNBc3NlcnRzIC0tIGlzIHVuY2hhbmdl ZDsgb25seSB0aGUgbWVhbmluZyBvZiB0aGUgZmllbGQgYW5kIHRoZQorICogaW5zdHJ1Y3Rp b25zIHRoYXQgdG91Y2ggaXQgY2hhbmdlLgorICoKKyAqIEEgZGVtYW5kLWxvYWRlZCBwYWdl IGlzIGFkbWl0dGVkIENPT0wgKHByb2JhdGlvbik7IGEgc2Vjb25kIGFjY2VzcyBwcm9tb3Rl cworICogaXQgdG8gSE9UICh0aGUgcmVzY3VlKS4gIFRoZSBzd2VlcCBwcmVmZXJzIENPT0wg dmljdGltcyBhbmQgZGVtb3RlcyBIT1QgdG8KKyAqIENPT0wgb25seSB3aGVuIGEgZnVsbCBw YXNzIGZpbmRzIG5vIENPT0wgdmljdGltLiAgU28gYSBvbmUtdG91Y2ggc2NhbiBmaWxscwor ICogYW5kIGRyYWlucyB0aGUgQ09PTCBzdGFnZSB3aXRob3V0IGRpc3BsYWNpbmcgdGhlIEhP VCB3b3JraW5nIHNldCAtLSBzY2FuCisgKiByZXNpc3RhbmNlIGludHJpbnNpYyB0byB0aGUg cmVwbGFjZW1lbnQgYWxnb3JpdGhtLgorICovCisjZGVmaW5lIEJVRl9DT09MU1RBVEVfQ09P TAkwCisjZGVmaW5lIEJVRl9DT09MU1RBVEVfSE9UCTEKKyNkZWZpbmUgQlVGX0NPT0xTVEFU RV9PTkUJQlVGX1VTQUdFQ09VTlRfT05FCisKKy8qCisgKiBTZWNvbmQtY2hhbmNlIHJlZmVy ZW5jZSBiaXQsIGJpdCAxIG9mIHRoZSAoZm9ybWVyIHVzYWdlY291bnQpIGZpZWxkLCBvbmUK KyAqIHBvc2l0aW9uIGFib3ZlIHRoZSBjb29saW5nLXN0YXRlIGJpdC4gIFBpbkJ1ZmZlciBz ZXRzIGl0IG9uIGV2ZXJ5IGFjY2Vzcy4KKyAqIFRoZSBiZ3dyaXRlcidzIHByZS1jb29saW5n IGdpdmVzIGEgSE9UIGJ1ZmZlciBhIHNlY29uZCBjaGFuY2U6IHRoZSBmaXJzdAorICogdGlt ZSBpdCBwYXNzZXMgYSBIT1QgYnVmZmVyIHdob3NlIHJlZiBiaXQgaXMgc2V0LCBpdCBjbGVh cnMgdGhlIHJlZiBiaXQgYW5kCisgKiBsZWF2ZXMgdGhlIGJ1ZmZlciBIT1Q7IG9ubHkgYSBI T1QgYnVmZmVyIHdob3NlIHJlZiBiaXQgaXMgYWxyZWFkeSBjbGVhciAobm90CisgKiByZS1h Y2Nlc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgYmd3cml0ZXIgcGFzcykgaXMgZGVtb3RlZCB0 byBDT09MLiAgVGhpcworICoga2VlcHMgZ2VudWluZWx5LWhvdCBwYWdlcyBvdXQgb2YgdGhl IENPT0wgc3RhZ2UgKHByb3RlY3RpbmcgdGhlIHdvcmtpbmcgc2V0CisgKiBmcm9tIGJlaW5n IGNvb2xlZCB1bmRlciBzY2FuIHByZXNzdXJlKSB3aGlsZSBsZWF2aW5nIHRoZSBmb3JlZ3Jv dW5kIHN3ZWVwIGEKKyAqIHNpbmdsZS1wYXNzIHNlYXJjaCBvdmVyIHRoZSBwcmUtc3RhZ2Vk IENPT0wgYnVmZmVycy4gIEEgc2VwYXJhdGUgYml0IChub3QgYQorICogY291bnQpIHNvIGl0 IHN0YXlzIGEgcGxhaW4gbWFza2VkIHN0b3JlIHVuZGVyIHRoZSBoZWFkZXIgbG9jay4KKyAq LworI2RlZmluZSBCVUZfUkVGQklUCQkJKFVJTlQ2NENPTlNUKDIpIDw8IEJVRl9SRUZDT1VO VF9CSVRTKQorI2RlZmluZSBCVUZfU1RBVEVfR0VUX1JFRkJJVChzdGF0ZSkJKCgoc3RhdGUp ICYgQlVGX1JFRkJJVCkgIT0gMCkKKworLyoKKyAqIFRoZSBjb29saW5nIHN0YXRlIG9jY3Vw aWVzIGJpdCAwIGFuZCB0aGUgcmVmZXJlbmNlIGJpdCBvY2N1cGllcyBiaXQgMSBvZgorICog dGhlIChmb3JtZXIgdXNhZ2Vjb3VudCkgZmllbGQsIHNvIHRoZSBmaWVsZCBtdXN0IGJlIGF0 IGxlYXN0IDIgYml0cyB3aWRlLgorICogQXNzZXJ0IGl0IGhlcmUgc28gYSBmdXR1cmUgY2hh bmdlIHRvIEJVRl9VU0FHRUNPVU5UX0JJVFMgY2Fubm90IHNpbGVudGx5CisgKiBwdXNoIEJV Rl9SRUZCSVQgdXAgaW50byB0aGUgZmxhZyBiaXRzLgorICovCitTdGF0aWNBc3NlcnREZWNs KEJVRl9VU0FHRUNPVU5UX0JJVFMgPj0gMiwKKwkJCQkgImNvb2xpbmcgc3RhdGUgKyByZWZl cmVuY2UgYml0IG5lZWQgYXQgbGVhc3QgMiBiaXRzIGluIHRoZSB1c2FnZWNvdW50IGZpZWxk Iik7CisKIC8qIGZsYWdzIHJlbGF0ZWQgZGVmaW5pdGlvbnMgKi8KICNkZWZpbmUgQlVGX0ZM QUdfU0hJRlQgXAogCShCVUZfUkVGQ09VTlRfQklUUyArIEJVRl9VU0FHRUNPVU5UX0JJVFMp CkBAIC05Miw2ICsxMzYsMTEgQEAgU3RhdGljQXNzZXJ0RGVjbChCVUZfUkVGQ09VTlRfQklU UyArIEJVRl9VU0FHRUNPVU5UX0JJVFMgKyBCVUZfRkxBR19CSVRTICsgQlVGX0wKICNkZWZp bmUgQlVGX1NUQVRFX0dFVF9VU0FHRUNPVU5UKHN0YXRlKSBcCiAJKCh1aW50MzIpKCgoc3Rh dGUpICYgQlVGX1VTQUdFQ09VTlRfTUFTSykgPj4gQlVGX1VTQUdFQ09VTlRfU0hJRlQpKQog CisvKiBDb29saW5nIHN0YXRlIChIT1QvQ09PTCkgZnJvbSBidWZmZXIgc3RhdGUgLS0gYml0 IDAgb2YgdGhlIGZpZWxkIG9ubHksIHNvCisgKiB0aGUgc2Vjb25kLWNoYW5jZSByZWYgYml0 IChiaXQgMSkgZG9lcyBub3QgcGVydHVyYiB0aGUgSE9UL0NPT0wgdGVzdC4gKi8KKyNkZWZp bmUgQlVGX1NUQVRFX0dFVF9DT09MU1RBVEUoc3RhdGUpIFwKKwkoKHVpbnQzMikgKCgoc3Rh dGUpID4+IEJVRl9VU0FHRUNPVU5UX1NISUZUKSAmIDEpKQorCiAvKgogICogRmxhZ3MgZm9y IGJ1ZmZlciBkZXNjcmlwdG9ycwogICoKQEAgLTEzNCwxNyArMTgzLDE1IEBAIFN0YXRpY0Fz c2VydERlY2woTUFYX0JBQ0tFTkRTX0JJVFMgPD0gKEJVRl9MT0NLX0JJVFMgLSAyKSwKIAog CiAvKgotICogVGhlIG1heGltdW0gYWxsb3dlZCB2YWx1ZSBvZiB1c2FnZV9jb3VudCByZXBy ZXNlbnRzIGEgdHJhZGVvZmYgYmV0d2VlbgotICogYWNjdXJhY3kgYW5kIHNwZWVkIG9mIHRo ZSBjbG9jay1zd2VlcCBidWZmZXIgbWFuYWdlbWVudCBhbGdvcml0aG0uICBBCi0gKiBsYXJn ZSB2YWx1ZSAoY29tcGFyYWJsZSB0byBOQnVmZmVycykgd291bGQgYXBwcm94aW1hdGUgTFJV IHNlbWFudGljcy4KLSAqIEJ1dCBpdCBjYW4gdGFrZSBhcyBtYW55IGFzIEJNX01BWF9VU0FH RV9DT1VOVCsxIGNvbXBsZXRlIGN5Y2xlcyBvZiB0aGUKLSAqIGNsb2NrLXN3ZWVwIGhhbmQg dG8gZmluZCBhIGZyZWUgYnVmZmVyLCBzbyBpbiBwcmFjdGljZSB3ZSBkb24ndCB3YW50IHRo ZQotICogdmFsdWUgdG8gYmUgdmVyeSBsYXJnZS4KKyAqIFRoZSBjb29saW5nIHN0YXRlIGlz IGEgc2luZ2xlIGJpdCAoSE9UL0NPT0wpOyB0aGUgbWF4aW11bSB2YWx1ZSBzdG9yZWQgaW4K KyAqIHRoZSBmaWVsZCBpcyB0aGVyZWZvcmUgQlVGX0NPT0xTVEFURV9IT1QuICBSZXRhaW5l ZCB1bmRlciB0aGUgaGlzdG9yaWNhbAorICogbmFtZSBCTV9NQVhfVVNBR0VfQ09VTlQgc28g dGhlIHBpbiBmYXN0IHBhdGggKCJwcm9tb3RlIHVubGVzcyBhbHJlYWR5IGF0CisgKiBtYXgi KSByZWFkcyBuYXR1cmFsbHkuCiAgKi8KLSNkZWZpbmUgQk1fTUFYX1VTQUdFX0NPVU5UCTUK KyNkZWZpbmUgQk1fTUFYX1VTQUdFX0NPVU5UCUJVRl9DT09MU1RBVEVfSE9UCiAKIFN0YXRp Y0Fzc2VydERlY2woQk1fTUFYX1VTQUdFX0NPVU5UIDwgKFVJTlQ2NENPTlNUKDEpIDw8IEJV Rl9VU0FHRUNPVU5UX0JJVFMpLAotCQkJCSAiQk1fTUFYX1VTQUdFX0NPVU5UIGRvZXNuJ3Qg Zml0IGluIEJVRl9VU0FHRUNPVU5UX0JJVFMgYml0cyIpOworCQkJCSAiY29vbGluZyBzdGF0 ZSBkb2Vzbid0IGZpdCBpbiBCVUZfVVNBR0VDT1VOVF9CSVRTIGJpdHMiKTsKIAogLyoKICAq IEJ1ZmZlciB0YWcgaWRlbnRpZmllcyB3aGljaCBkaXNrIGJsb2NrIHRoZSBidWZmZXIgY29u dGFpbnMuCi0tIAoyLjUwLjEKCg== --317345122ad1692da28ddb245f423447087961c8--