Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp1381043ybl; Fri, 23 Aug 2019 19:01:40 -0700 (PDT) X-Google-Smtp-Source: APXvYqy/tnC56pmhnmw0H7fyubVRMaohJkYYeYTfIceMRv9IZHDjvq2dMUodIsVmZH+ixOYqSm5K X-Received: by 2002:a17:90a:86c2:: with SMTP id y2mr8377156pjv.46.1566612100532; Fri, 23 Aug 2019 19:01:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566612100; cv=none; d=google.com; s=arc-20160816; b=hWuembHxxZWfr1tsc3p1ddb2blqKz9jRXFJjyNoaLVMPvjP1nqTLj4wBI0lpx8PhvQ QwgoTzQUhXonoHXnr3IMqHcXXSxU6eHC9ESWUEtJ+kngAsHKgfK1u4RosAk4pcDS8mHn CT/dpxYA9dyMiIFMnYprwTUoa775Q7xs8zHnDnbyK07yWVIKhrBqBPjDw8MKpMiK68VQ 5I/jcg48uwksDygVb5xiCg/MEH0r2SXPs4iGmb2iy6itss5Ebr2rFiL4IfP2VqVYxEid ETXDNRHMtLrefA2raTkzXQFeSnWxkMdIcTZKWVU9kLqDsoE6qGP5HSCRgpw+KnojcjqG N0Rw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :message-id:in-reply-to:subject:cc:to:from:date:dkim-signature; bh=PEspCej/rho8XFVqncU74KVMiH500fGeCNPU+riB6jY=; b=drYM1NLtECDF7qSd4ApNl7Ej4PfW5n0j67QjocAhO+RMsHESDbI09UQg1uumpbeqCO N3cuBsZeV364xYaK6wLnPCMvf60aeveZcDbD4aVXI6awAT4BtBClaXIwtCJHvUsxXd5z osLCDedVVn8N+vEN8gjLg2gMdnmB6UHDbXQFkQnbRGbRfn+MhHjh19eplqmZ+GJ3ga62 zs+9SXq3MTV8xao8Cgr+E22ctLlYt9WhExpchofVRodr8o5Z3d7nPVuhAUawJAtEfJ3+ VVdg8wYiCkFsUYdGloB1kXqnwfabrsI3KQ/QOLZSKr2jYOiiaatVkl70Udm0dPl1FnrB APMw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=TNOFVOxX; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c193si4335004pfb.115.2019.08.23.19.01.23; Fri, 23 Aug 2019 19:01:40 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=TNOFVOxX; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726385AbfHXCAE (ORCPT + 99 others); Fri, 23 Aug 2019 22:00:04 -0400 Received: from mail-pg1-f196.google.com ([209.85.215.196]:46236 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725782AbfHXCAE (ORCPT ); Fri, 23 Aug 2019 22:00:04 -0400 Received: by mail-pg1-f196.google.com with SMTP id m3so6744247pgv.13 for ; Fri, 23 Aug 2019 19:00:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=PEspCej/rho8XFVqncU74KVMiH500fGeCNPU+riB6jY=; b=TNOFVOxXvSfHgDqpoia1rKVl0FulsLkD6pUrUMslkg5VujC7RNi9mAPsFT12EipuiA JnNafAncwTqFndKKOKsX2i5YaZj1diHZsyNNfV2J9OOTn3sYZMrTRZkBp7JNjHvkh/RZ Kw72EhoYp0TgeyRS89j8lJ6q+RTfc4S49XBWlrYcDBT5O+DeJjo5AmgfLarcqZzGKgI9 TddRT4NRXNeVproxTf5NB6wAvv56J3KyKAE08I5cBZCVU6Spcpy9SvKaBp//dY8px/bq wlR6R02NFyaHKB16r78TpXZRkRTX23RM/9opHPtexlaHOlhcass2ZG3FPP7VN704XW0r ApfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=PEspCej/rho8XFVqncU74KVMiH500fGeCNPU+riB6jY=; b=b/xTc9p6Siqx1oqtgCE2XsmInovuMcSouBbNpCLhVQSwY6EbRv+Kg23L2bjywHrJs/ MZmtXuKfOTzFFJ4jnMwB0Ics6q7m6ZbMK9Mpwm2u/uZqxYVRijdtvjZCo0MW8eYRJefC 3cbuvpGUALnB6DChI0h+D0QT9IHg2dV/1WF4s9M5OVZqp+/msin0Lc8kf97gHfMLCgx6 /NT8bqIXLVdu+yRMl93xpnHs7olNEKYUNJ7AtJ363ZQougZ2X37PY1xA2Rfl2a+vjgpp zK/mOngW325JlQ0xAQ6IixHk1FFAqIK/6nY8L/scc2LH5VCGGJSPbwcKTsoWb/YmRlv8 LR3g== X-Gm-Message-State: APjAAAUcTOvf/+EG13K307keCvvbgEm1lWsfTcAK6V8tvRiU6/r4ae+p KDNF5q+eZtpiKUJESGzsZQ3jg0FI5sc= X-Received: by 2002:a63:460d:: with SMTP id t13mr6253326pga.205.1566611998992; Fri, 23 Aug 2019 18:59:58 -0700 (PDT) Received: from [100.112.91.228] ([104.133.8.100]) by smtp.gmail.com with ESMTPSA id e66sm6723090pfe.142.2019.08.23.18.59.56 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 23 Aug 2019 18:59:57 -0700 (PDT) Date: Fri, 23 Aug 2019 18:59:21 -0700 (PDT) From: Hugh Dickins X-X-Sender: hugh@eggly.anvils To: Alex Shi cc: Hugh Dickins , Michal Hocko , Cgroups , LKML , Linux MM , Andrew Morton , Mel Gorman , Tejun Heo , Shakeel Butt , Yu Zhao , Daniel Jordan , Johannes Weiner , Vlastimil Babka , Vladimir Davydov , Minchan Kim , Kirill Tkhai , Konstantin Khlebnikov , Matthew Wilcox Subject: Re: [PATCH 00/14] per memcg lru_lock In-Reply-To: Message-ID: References: <1566294517-86418-1-git-send-email-alex.shi@linux.alibaba.com> <20190820104532.GP3111@dhcp22.suse.cz> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-2114503153-1566611997=:16920" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --0-2114503153-1566611997=:16920 Content-Type: TEXT/PLAIN; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE On Wed, 21 Aug 2019, Alex Shi wrote: > =E5=9C=A8 2019/8/21 =E4=B8=8A=E5=8D=882:24, Hugh Dickins =E5=86=99=E9=81= =93: > > I'll set aside what I'm doing, and switch to rebasing ours to v5.3-rc > > and/or mmotm. Then compare with what Alex has, to see if there's any > > good reason to prefer one to the other: if no good reason to prefer our= s, > > I doubt we shall bother to repost, but just use it as basis for helping > > to review or improve Alex's. >=20 > For your review, my patchset are pretty straight and simple. > It just use per lruvec lru_lock to replace necessary pgdat lru_lock. > just this. We could talk more after I back to work. :) Sorry to be bearer of bad news, Alex, but when you said "straight and simple", I feared that your patchset would turn out to be fundamentally too simple. And that is so. I have only to see the =09=09lruvec =3D mem_cgroup_page_lruvec(page, pgdat); line in isolate_migratepages_block() in mm/compaction.c, and check that mem_cgroup_page_lruvec() is little changed in mm/mempolicy.c. The central problem with per-memcg lru_lock is that you do not know for sure what lock to take (which memcg a page belongs to) until you have taken the expected lock, and then checked whether page->memcg is still the same - backing out and trying again if not. Fix that central problem, and you end up with a more complicated patchset, much like ours. It's true that when ours was first developed, the memcg situation was more complicated in several ways, and perhaps some aspects of our patchset could be simplified now (though I've not identified any). Johannes in particular has done a great deal of simplifying work in memcg over the last few years, but there are still situations in which a page's memcg can change (move_charge_at_immigrate and swapin readahead spring to mind - or perhaps the latter is only an issue when MEMCG_SWAP is not enabled, I forget; and I often wonder if reparenting will be brought back one day). I did not review your patchset in detail, and wasn't able to get very far in testing it. At first I was put off by set_task_reclaim_state warnings from mm/vmscan.c, but those turned out to be in v5.3-rc5 itself, not from your patchset or mine (but I've not yet investigated what's responsible for them). Within a minute of starting swapping load, kcompactd compact_lock_irqsave() in isolate_migratepages_block() would deadlock, and I did not get further. (Though I did also notice that booting the CONFIG_MEMCG=3Dy kernel with "cgroup_disable=3Dmemory" froze in booting - tiresomely, one has to keep both the memcg and no-memcg locking to cope with that case, and I guess you had not.) Rather than duplicating effort, I would advise you to give our patchset a try, and if it works for you, help towards getting that one merged: but of course, it's up to you. I've attached a tarfile of it rebased to v5.3-rc5: I do not want to spam the list with patches yet, because I do not have any stats or argument in support of the series, as Andrew asked for years ago and Michal asks again now. But aside from that I consider it ready, and will let Shakeel take it over from here, while I get back to what I diverted from (but of course I'll try to answer questions on it). Thanks, Hugh --0-2114503153-1566611997=:16920 Content-Type: APPLICATION/x-tar; name=lrulock503.tar Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: per-memcg lru_lock on v5.3-rc5 Content-Disposition: attachment; filename=lrulock503.tar MDAwMS1tbS1tb3JlLVdSSVRFX09OQ0UtYW5kLVJFQURfT05DRS1vbi1wYWdl LW1hcHBpbmcucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAADAwMDA2NDQAMDMxNTA2NgAwMjU3NTIzADAwMDAwMDEyMjc1 ADEzNTMwMDc2NzQ1ADAyMzI0MQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGh1Z2hk AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHJpbWFyeWdyb3VwAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABGcm9tIGExYWJjYmMyYWFjNzBjNmJhNDdiODk5 MTk5MmJiODViODZiNGExNjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IEh1Z2ggRGlja2lucyA8aHVnaGRAZ29vZ2xlLmNvbT4KRGF0ZTogVGh1 LCAyMiBBdWcgMjAxOSAxNTo0OTo0NCAtMDcwMApTdWJqZWN0OiBbUEFUQ0gg MS85XSBtbTogbW9yZSBXUklURV9PTkNFIGFuZCBSRUFEX09OQ0Ugb24gcGFn ZS0+bWFwcGluZwoKdjQuMiBjb21taXQgNDE0ZTJmYjhjZTVhICgicm1hcDog Zml4IHRoZW9yZXRpY2FsIHJhY2UgYmV0d2VlbiBkb193cF9wYWdlCmFuZCBz aHJpbmtfYWN0aXZlX2xpc3QiKSBhZGRlZCBhIFdSSVRFX09OQ0UoKSB3aGVy ZSBwYWdlX21vdmVfYW5vbl9ybWFwKCkKY29tcG9zZXMgcGFnZS0+bWFwcGlu ZyBmcm9tIGFub25fdm1hIHBvaW50ZXIgYW5kIFBBR0VfTUFQUElOR19BTk9O LgoKTm93IGRvIHRoZSBzYW1lIHdoZXJlIF9fcGFnZV9zZXRfYW5vbl9ybWFw KCkgZG9lcyB0aGUgc2FtZSwgYW5kIHdoZXJlCmNvbXBhY3Rpb24uYyBhcHBs aWVzIFBBR0VfTUFQUElOR19NT1ZBQkxFLCBhbmQga3NtLmMgUEFHRV9NQVBQ SU5HX0tTTS4KCnJtYXAuYyBhbHJlYWR5IHVzZXMgUkVBRF9PTkNFKHBhZ2Ut Pm1hcHBpbmcpLCBidXQgdXRpbC5jIHNob3VsZCB0b286CmFkZCBSRUFEX09O Q0UoKSBpbiBwYWdlX3JtYXBwaW5nKCksIHBhZ2VfYW5vbl92bWEoKSBhbmQg cGFnZV9tYXBwaW5nKCkuCkRlbGV0ZSB0aGUgdGhlbiB1bnVzZWQgaGVscGVy IF9fcGFnZV9ybWFwcGluZygpLgoKSSBkb3VidCB0aGF0IHRoaXMgY29tbWl0 IGZpeGVzIGFueXRoaW5nLCBidXQgaXQncyBoYXJtbGVzcyBhbmQKdW5pbnRy dXNpdmUsIGFuZCBtYWtlcyByZWFzb25pbmcgYWJvdXQgcGFnZSBtYXBwaW5n IGZsYWdzIGVhc2llci4KCldoYXQgaWYgYSBjb21waWxlciBpbXBsZW1lbnRz ICJwYWdlLT5tYXBwaW5nID0gbWFwcGluZyIgaW4gb3RoZXIgcGxhY2VzCmJ5 LCBzYXksIGZpcnN0IGFzc2lnbmluZyB0aGUgb2RkIGJpdHMgb2YgbWFwcGlu ZywgdGhlbiBhZGRpbmcgaW4gdGhlCmV2ZW4gYml0cz8gIFRoZW4gd2Ugc2hh bGwgbm90IGJ1aWxkIHRoZSBrZXJuZWwgd2l0aCBzdWNoIGEgY29tcGlsZXIu CgpTaWduZWQtb2ZmLWJ5OiBIdWdoIERpY2tpbnMgPGh1Z2hkQGdvb2dsZS5j b20+CkNjOiBWbGFkaW1pciBEYXZ5ZG92IDx2ZGF2eWRvdi5kZXZAZ21haWwu Y29tPgpDYzogVmxhc3RpbWlsIEJhYmthIDx2YmFia2FAc3VzZS5jej4KQ2M6 IE1pbmNoYW4gS2ltIDxtaW5jaGFuQGtlcm5lbC5vcmc+CkNjOiBZdSBaaGFv IDx5dXpoYW9AZ29vZ2xlLmNvbT4KQ2M6IEFsZXggU2hpIDxhbGV4LnNoaUBs aW51eC5hbGliYWJhLmNvbT4KLS0tCiBtbS9jb21wYWN0aW9uLmMgfCAgNyAr KysrLS0tCiBtbS9rc20uYyAgICAgICAgfCAgMiArLQogbW0vcm1hcC5jICAg ICAgIHwgIDcgKysrKysrLQogbW0vdXRpbC5jICAgICAgIHwgMjQgKysrKysr KysrKy0tLS0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDIxIGluc2Vy dGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL21tL2Nv bXBhY3Rpb24uYyBiL21tL2NvbXBhY3Rpb24uYwppbmRleCA5NTJkYzJmYjI0 ZTUuLmM0MDVmNDM2MjYyNCAxMDA2NDQKLS0tIGEvbW0vY29tcGFjdGlvbi5j CisrKyBiL21tL2NvbXBhY3Rpb24uYwpAQCAtMTEzLDcgKzExMyw4IEBAIHZv aWQgX19TZXRQYWdlTW92YWJsZShzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0 IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpCiB7CiAJVk1fQlVHX09OX1BBR0Uo IVBhZ2VMb2NrZWQocGFnZSksIHBhZ2UpOwogCVZNX0JVR19PTl9QQUdFKCh1 bnNpZ25lZCBsb25nKW1hcHBpbmcgJiBQQUdFX01BUFBJTkdfTU9WQUJMRSwg cGFnZSk7Ci0JcGFnZS0+bWFwcGluZyA9ICh2b2lkICopKCh1bnNpZ25lZCBs b25nKW1hcHBpbmcgfCBQQUdFX01BUFBJTkdfTU9WQUJMRSk7CisJV1JJVEVf T05DRShwYWdlLT5tYXBwaW5nLAorCQkgICAodW5zaWduZWQgbG9uZyltYXBw aW5nIHwgUEFHRV9NQVBQSU5HX01PVkFCTEUpOwogfQogRVhQT1JUX1NZTUJP TChfX1NldFBhZ2VNb3ZhYmxlKTsKIApAQCAtMTI2LDggKzEyNyw4IEBAIHZv aWQgX19DbGVhclBhZ2VNb3ZhYmxlKHN0cnVjdCBwYWdlICpwYWdlKQogCSAq IGZsYWcgc28gdGhhdCBWTSBjYW4gY2F0Y2ggdXAgcmVsZWFzZWQgcGFnZSBi eSBkcml2ZXIgYWZ0ZXIgaXNvbGF0aW9uLgogCSAqIFdpdGggaXQsIFZNIG1p Z3JhdGlvbiBkb2Vzbid0IHRyeSB0byBwdXQgaXQgYmFjay4KIAkgKi8KLQlw YWdlLT5tYXBwaW5nID0gKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpcGFnZS0+ bWFwcGluZyAmCi0JCQkJUEFHRV9NQVBQSU5HX01PVkFCTEUpOworCVdSSVRF X09OQ0UocGFnZS0+bWFwcGluZywKKwkJICAgKHVuc2lnbmVkIGxvbmcpcGFn ZS0+bWFwcGluZyAmIFBBR0VfTUFQUElOR19NT1ZBQkxFKTsKIH0KIEVYUE9S VF9TWU1CT0woX19DbGVhclBhZ2VNb3ZhYmxlKTsKIApkaWZmIC0tZ2l0IGEv bW0va3NtLmMgYi9tbS9rc20uYwppbmRleCAzZGM0MzQ2NDExZTQuLjQyNmI2 YTQwZWE0MSAxMDA2NDQKLS0tIGEvbW0va3NtLmMKKysrIGIvbW0va3NtLmMK QEAgLTg2NSw3ICs4NjUsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBzdGFi bGVfbm9kZSAqcGFnZV9zdGFibGVfbm9kZShzdHJ1Y3QgcGFnZSAqcGFnZSkK IHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcGFnZV9zdGFibGVfbm9kZShzdHJ1 Y3QgcGFnZSAqcGFnZSwKIAkJCQkJc3RydWN0IHN0YWJsZV9ub2RlICpzdGFi bGVfbm9kZSkKIHsKLQlwYWdlLT5tYXBwaW5nID0gKHZvaWQgKikoKHVuc2ln bmVkIGxvbmcpc3RhYmxlX25vZGUgfCBQQUdFX01BUFBJTkdfS1NNKTsKKwlX UklURV9PTkNFKHBhZ2UtPm1hcHBpbmcsICh1bnNpZ25lZCBsb25nKXN0YWJs ZV9ub2RlIHwgUEFHRV9NQVBQSU5HX0tTTSk7CiB9CiAKICNpZmRlZiBDT05G SUdfU1lTRlMKZGlmZiAtLWdpdCBhL21tL3JtYXAuYyBiL21tL3JtYXAuYwpp bmRleCAwMDMzNzdlMjQyMzIuLjk0ODBkZjQzN2VkYyAxMDA2NDQKLS0tIGEv bW0vcm1hcC5jCisrKyBiL21tL3JtYXAuYwpAQCAtMTA0NCw3ICsxMDQ0LDEy IEBAIHN0YXRpYyB2b2lkIF9fcGFnZV9zZXRfYW5vbl9ybWFwKHN0cnVjdCBw YWdlICpwYWdlLAogCQlhbm9uX3ZtYSA9IGFub25fdm1hLT5yb290OwogCiAJ YW5vbl92bWEgPSAodm9pZCAqKSBhbm9uX3ZtYSArIFBBR0VfTUFQUElOR19B Tk9OOwotCXBhZ2UtPm1hcHBpbmcgPSAoc3RydWN0IGFkZHJlc3Nfc3BhY2Ug KikgYW5vbl92bWE7CisJLyoKKwkgKiBFbnN1cmUgdGhhdCBhbm9uX3ZtYSBh bmQgdGhlIFBBR0VfTUFQUElOR19BTk9OIGJpdCBhcmUgd3JpdHRlbgorCSAq IHNpbXVsdGFuZW91c2x5LCBzbyBhIGNvbmN1cnJlbnQgcmVhZGVyIChlZyBw YWdlX3JlZmVyZW5jZWQoKSdzCisJICogUGFnZUFub24oKSkgd2lsbCBub3Qg c2VlIG9uZSB3aXRob3V0IHRoZSBvdGhlci4KKwkgKi8KKwlXUklURV9PTkNF KHBhZ2UtPm1hcHBpbmcsIChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqKSBhbm9u X3ZtYSk7CiAJcGFnZS0+aW5kZXggPSBsaW5lYXJfcGFnZV9pbmRleCh2bWEs IGFkZHJlc3MpOwogfQogCmRpZmYgLS1naXQgYS9tbS91dGlsLmMgYi9tbS91 dGlsLmMKaW5kZXggZTYzNTFhODBmMjQ4Li4wOWI5ZmNiZWRhYzMgMTAwNjQ0 Ci0tLSBhL21tL3V0aWwuYworKysgYi9tbS91dGlsLmMKQEAgLTQ4OSwyMSAr NDg5LDE0IEBAIHZvaWQga3ZmcmVlKGNvbnN0IHZvaWQgKmFkZHIpCiB9CiBF WFBPUlRfU1lNQk9MKGt2ZnJlZSk7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCAq X19wYWdlX3JtYXBwaW5nKHN0cnVjdCBwYWdlICpwYWdlKQotewotCXVuc2ln bmVkIGxvbmcgbWFwcGluZzsKLQotCW1hcHBpbmcgPSAodW5zaWduZWQgbG9u ZylwYWdlLT5tYXBwaW5nOwotCW1hcHBpbmcgJj0gflBBR0VfTUFQUElOR19G TEFHUzsKLQotCXJldHVybiAodm9pZCAqKW1hcHBpbmc7Ci19Ci0KIC8qIE5l dXRyYWwgcGFnZS0+bWFwcGluZyBwb2ludGVyIHRvIGFkZHJlc3Nfc3BhY2Ug b3IgYW5vbl92bWEgb3Igb3RoZXIgKi8KIHZvaWQgKnBhZ2Vfcm1hcHBpbmco c3RydWN0IHBhZ2UgKnBhZ2UpCiB7CisJdW5zaWduZWQgbG9uZyBtYXBwaW5n OworCiAJcGFnZSA9IGNvbXBvdW5kX2hlYWQocGFnZSk7Ci0JcmV0dXJuIF9f cGFnZV9ybWFwcGluZyhwYWdlKTsKKwltYXBwaW5nID0gKHVuc2lnbmVkIGxv bmcpUkVBRF9PTkNFKHBhZ2UtPm1hcHBpbmcpOworCXJldHVybiAodm9pZCAq KShtYXBwaW5nICYgflBBR0VfTUFQUElOR19GTEFHUyk7CiB9CiAKIC8qCkBA IC01MzQsMTAgKzUyNywxMSBAQCBzdHJ1Y3QgYW5vbl92bWEgKnBhZ2VfYW5v bl92bWEoc3RydWN0IHBhZ2UgKnBhZ2UpCiAJdW5zaWduZWQgbG9uZyBtYXBw aW5nOwogCiAJcGFnZSA9IGNvbXBvdW5kX2hlYWQocGFnZSk7Ci0JbWFwcGlu ZyA9ICh1bnNpZ25lZCBsb25nKXBhZ2UtPm1hcHBpbmc7CisJbWFwcGluZyA9 ICh1bnNpZ25lZCBsb25nKVJFQURfT05DRShwYWdlLT5tYXBwaW5nKTsKKwkv KiBSZXR1cm4gTlVMTCBpZiBmaWxlIG9yIFBhZ2VNb3ZhYmxlIG9yIFBhZ2VL c20gKi8KIAlpZiAoKG1hcHBpbmcgJiBQQUdFX01BUFBJTkdfRkxBR1MpICE9 IFBBR0VfTUFQUElOR19BTk9OKQogCQlyZXR1cm4gTlVMTDsKLQlyZXR1cm4g X19wYWdlX3JtYXBwaW5nKHBhZ2UpOworCXJldHVybiAoc3RydWN0IGFub25f dm1hICopKG1hcHBpbmcgJiB+UEFHRV9NQVBQSU5HX0ZMQUdTKTsKIH0KIAog c3RydWN0IGFkZHJlc3Nfc3BhY2UgKnBhZ2VfbWFwcGluZyhzdHJ1Y3QgcGFn ZSAqcGFnZSkKQEAgLTU1NywxMCArNTUxLDEyIEBAIHN0cnVjdCBhZGRyZXNz X3NwYWNlICpwYWdlX21hcHBpbmcoc3RydWN0IHBhZ2UgKnBhZ2UpCiAJCXJl dHVybiBzd2FwX2FkZHJlc3Nfc3BhY2UoZW50cnkpOwogCX0KIAotCW1hcHBp bmcgPSBwYWdlLT5tYXBwaW5nOworCW1hcHBpbmcgPSBSRUFEX09OQ0UocGFn ZS0+bWFwcGluZyk7CisJLyogUmV0dXJuIE5VTEwgaWYgUGFnZUFub24gKGlu Y2x1ZGluZyBQYWdlS3NtKSAqLwogCWlmICgodW5zaWduZWQgbG9uZyltYXBw aW5nICYgUEFHRV9NQVBQSU5HX0FOT04pCiAJCXJldHVybiBOVUxMOwogCisJ LyogUmV0dXJuIHN0cnVjdCBhZGRyZXNzX3NwYWNlIHBvaW50ZXIgaWYgZmls ZSBvciBQYWdlTW92YWJsZSAqLwogCXJldHVybiAodm9pZCAqKSgodW5zaWdu ZWQgbG9uZyltYXBwaW5nICYgflBBR0VfTUFQUElOR19GTEFHUyk7CiB9CiBF WFBPUlRfU1lNQk9MKHBhZ2VfbWFwcGluZyk7Ci0tIAoyLjIzLjAuMTg3Lmcx N2Y1Yjc1NTZjLWdvb2cKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMi1tbS1wYWdlX2lkbGVfZ2V0 X3BhZ2UtZG9lcy1ub3QtbmVlZC1scnVfbG9jay5wYXRjaAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQAMDMx NTA2NgAwMjU3NTIzADAwMDAwMDAzNDE1ADEzNTMwMDc2NzQ1ADAyMzU2MQAg MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAB1c3RhciAgAGh1Z2hkAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAcHJpbWFyeWdyb3VwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGcm9t IGFlOTA3OWMyYjIyNjU5MTY2MjdmZDY2M2M5MGZkNTgwY2MwZmUzOTEgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEh1Z2ggRGlja2lucyA8aHVn aGRAZ29vZ2xlLmNvbT4KRGF0ZTogTW9uLCAxMyBKdW4gMjAxNiAxOTo0Mzoz NCAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMi85XSBtbTogcGFnZV9pZGxlX2dl dF9wYWdlKCkgZG9lcyBub3QgbmVlZCBscnVfbG9jawoKSXQgaXMgbmVjZXNz YXJ5IGZvciBwYWdlX2lkbGVfZ2V0X3BhZ2UoKSB0byByZWNoZWNrIFBhZ2VM UlUoKSBhZnRlcgpnZXRfcGFnZV91bmxlc3NfemVybygpLCBidXQgaG9sZGlu ZyBscnVfbG9jayBhcm91bmQgdGhhdCBzZXJ2ZXMgbm8KdXNlZnVsIHB1cnBv c2UsIGFuZCBhZGRzIHRvIGxydV9sb2NrIGNvbnRlbnRpb246IGRlbGV0ZSBp dC4KClNlZSBodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21sLzIwMTUwNTA0 MDMxNzIyLkdBMjc2OEBibGFwdG9wIGZvciB0aGUKZGlzY3Vzc2lvbiB0aGF0 IGxlZCB0byBscnVfbG9jayB0aGVyZTsgYnV0IF9fcGFnZV9zZXRfYW5vbl9y bWFwKCkgbm93IHVzZXMKV1JJVEVfT05DRSgpLCBhbmQgSSBzZWUgbm8gb3Ro ZXIgcmlzayBpbiBwYWdlX2lkbGVfY2xlYXJfcHRlX3JlZnMoKSB1c2luZwpy bWFwX3dhbGsoKSAoYmV5b25kIHRoZSByaXNrIG9mIHJhY2luZyBQYWdlQW5v bi0+UGFnZUtzbSwgbW9zdGx5IGJ1dCBub3QKZW50aXJlbHkgcHJldmVudGVk IGJ5IHBhZ2VfY291bnQoKSBjaGVjayBpbiBrc20uYydzIHdyaXRlX3Byb3Rl Y3RfcGFnZSgpOgp0aGF0IHJpc2sgYmVpbmcgc2hhcmVkIHdpdGggcGFnZV9y ZWZlcmVuY2VkKCkgYW5kIG5vdCBoZWxwZWQgYnkgbHJ1X2xvY2spLgoKU2ln bmVkLW9mZi1ieTogSHVnaCBEaWNraW5zIDxodWdoZEBnb29nbGUuY29tPgpD YzogVmxhZGltaXIgRGF2eWRvdiA8dmRhdnlkb3YuZGV2QGdtYWlsLmNvbT4K Q2M6IFZsYXN0aW1pbCBCYWJrYSA8dmJhYmthQHN1c2UuY3o+CkNjOiBNaW5j aGFuIEtpbSA8bWluY2hhbkBrZXJuZWwub3JnPgpDYzogWXUgWmhhbyA8eXV6 aGFvQGdvb2dsZS5jb20+CkNjOiBBbGV4IFNoaSA8YWxleC5zaGlAbGludXgu YWxpYmFiYS5jb20+Ci0tLQogbW0vcGFnZV9pZGxlLmMgfCA0IC0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL21t L3BhZ2VfaWRsZS5jIGIvbW0vcGFnZV9pZGxlLmMKaW5kZXggMjk1NTEyNDY1 MDY1Li5iOTY0ZGQzOGFlOGUgMTAwNjQ0Ci0tLSBhL21tL3BhZ2VfaWRsZS5j CisrKyBiL21tL3BhZ2VfaWRsZS5jCkBAIC0zMSw3ICszMSw2IEBACiBzdGF0 aWMgc3RydWN0IHBhZ2UgKnBhZ2VfaWRsZV9nZXRfcGFnZSh1bnNpZ25lZCBs b25nIHBmbikKIHsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKLQlwZ19kYXRhX3Qg KnBnZGF0OwogCiAJaWYgKCFwZm5fdmFsaWQocGZuKSkKIAkJcmV0dXJuIE5V TEw7CkBAIC00MSwxMyArNDAsMTAgQEAgc3RhdGljIHN0cnVjdCBwYWdlICpw YWdlX2lkbGVfZ2V0X3BhZ2UodW5zaWduZWQgbG9uZyBwZm4pCiAJICAgICFn ZXRfcGFnZV91bmxlc3NfemVybyhwYWdlKSkKIAkJcmV0dXJuIE5VTEw7CiAK LQlwZ2RhdCA9IHBhZ2VfcGdkYXQocGFnZSk7Ci0Jc3Bpbl9sb2NrX2lycSgm cGdkYXQtPmxydV9sb2NrKTsKIAlpZiAodW5saWtlbHkoIVBhZ2VMUlUocGFn ZSkpKSB7CiAJCXB1dF9wYWdlKHBhZ2UpOwogCQlwYWdlID0gTlVMTDsKIAl9 Ci0Jc3Bpbl91bmxvY2tfaXJxKCZwZ2RhdC0+bHJ1X2xvY2spOwogCXJldHVy biBwYWdlOwogfQogCi0tIAoyLjIzLjAuMTg3LmcxN2Y1Yjc1NTZjLWdvb2cK CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAADAwMDMtbW0tY29tcGFjdGlvbi1raWxsLWNv bXBhY3RfdW5sb2NrX3Nob3VsZF9hYm9ydC5wYXRjaAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAzMTUwNjYA MDI1NzUyMwAwMDAwMDAxMjAzMgAxMzUzMDA3Njc0NQAwMjQzNzMAIDAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAdXN0YXIgIABodWdoZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHByaW1hcnlncm91cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARnJvbSA4NTVj ZDc2MWQ3MGVlOTQ0ZTBlNTkzNDMxMzM4NDkzOTE2Yjk4ZTVmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIdWdoIERpY2tpbnMgPGh1Z2hkQGdv b2dsZS5jb20+CkRhdGU6IFNhdCwgMTEgSnVuIDIwMTYgMTY6MDQ6NTcgLTA3 MDAKU3ViamVjdDogW1BBVENIIDMvOV0gbW0vY29tcGFjdGlvbjoga2lsbCBj b21wYWN0X3VubG9ja19zaG91bGRfYWJvcnQoKQoKY29tcGFjdF91bmxvY2tf c2hvdWxkX2Fib3J0KCkgaXMgbm90IGEgdXNlZnVsIGFic3RyYWN0aW9uOiBy ZW5hbWUgaXQKY29tcGFjdF9zaG91bGRfYWJvcnQoKSBhbmQgbGVhdmUgdGhl IHNwaW4gdW5sb2NraW5nIHRvIGl0cyB0d28gY2FsbGVycy4KCmNvbXBhY3Rf bG9ja19pcnFzYXZlKCkgYWx3YXlzIHN1Y2NlZWRzOiBjaGFuZ2UgaXQgZnJv bSB2b2lkIHRvIGJvb2wsCnNvIHRoYXQgaXMgb2J2aW91cyBhdCBpdHMgdHdv IGNhbGxzaXRlcy4KClNpZ25lZC1vZmYtYnk6IEh1Z2ggRGlja2lucyA8aHVn aGRAZ29vZ2xlLmNvbT4KQ2M6IE1lbCBHb3JtYW4gPG1nb3JtYW5AdGVjaHNp bmd1bGFyaXR5Lm5ldD4KQ2M6IFZsYXN0aW1pbCBCYWJrYSA8dmJhYmthQHN1 c2UuY3o+CkNjOiBZdSBaaGFvIDx5dXpoYW9AZ29vZ2xlLmNvbT4KQ2M6IEFs ZXggU2hpIDxhbGV4LnNoaUBsaW51eC5hbGliYWJhLmNvbT4KLS0tCiBtbS9j b21wYWN0aW9uLmMgfCA2MCArKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjcgaW5z ZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbW0v Y29tcGFjdGlvbi5jIGIvbW0vY29tcGFjdGlvbi5jCmluZGV4IGM0MDVmNDM2 MjYyNC4uNTJjZDdmYTQ0MjdkIDEwMDY0NAotLS0gYS9tbS9jb21wYWN0aW9u LmMKKysrIGIvbW0vY29tcGFjdGlvbi5jCkBAIC00NzYsMjIgKzQ3NiwxOSBA QCBzdGF0aWMgYm9vbCB0ZXN0X2FuZF9zZXRfc2tpcChzdHJ1Y3QgY29tcGFj dF9jb250cm9sICpjYywgc3RydWN0IHBhZ2UgKnBhZ2UsCiAgKiBsb2NrIGlz IGNvbnRlbmRlZC4gVGhlIGxvY2sgd2lsbCBzdGlsbCBiZSBhY3F1aXJlZCBi dXQgY29tcGFjdGlvbiB3aWxsCiAgKiBhYm9ydCB3aGVuIHRoZSBjdXJyZW50 IGJsb2NrIGlzIGZpbmlzaGVkIHJlZ2FyZGxlc3Mgb2Ygc3VjY2VzcyByYXRl LgogICogU3luYyBjb21wYWN0aW9uIGFjcXVpcmVzIHRoZSBsb2NrLgotICoK LSAqIEFsd2F5cyByZXR1cm5zIHRydWUgd2hpY2ggbWFrZXMgaXQgZWFzaWVy IHRvIHRyYWNrIGxvY2sgc3RhdGUgaW4gY2FsbGVycy4KICAqLwotc3RhdGlj IGJvb2wgY29tcGFjdF9sb2NrX2lycXNhdmUoc3BpbmxvY2tfdCAqbG9jaywg dW5zaWduZWQgbG9uZyAqZmxhZ3MsCitzdGF0aWMgdm9pZCBjb21wYWN0X2xv Y2tfaXJxc2F2ZShzcGlubG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25nICpm bGFncywKIAkJCQkJCXN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjKQogewog CS8qIFRyYWNrIGlmIHRoZSBsb2NrIGlzIGNvbnRlbmRlZCBpbiBhc3luYyBt b2RlICovCiAJaWYgKGNjLT5tb2RlID09IE1JR1JBVEVfQVNZTkMgJiYgIWNj LT5jb250ZW5kZWQpIHsKIAkJaWYgKHNwaW5fdHJ5bG9ja19pcnFzYXZlKGxv Y2ssICpmbGFncykpCi0JCQlyZXR1cm4gdHJ1ZTsKKwkJCXJldHVybjsKIAog CQljYy0+Y29udGVuZGVkID0gdHJ1ZTsKIAl9CiAKIAlzcGluX2xvY2tfaXJx c2F2ZShsb2NrLCAqZmxhZ3MpOwotCXJldHVybiB0cnVlOwogfQogCiAvKgpA QCAtNDk5LDI0ICs0OTYsMTMgQEAgc3RhdGljIGJvb2wgY29tcGFjdF9sb2Nr X2lycXNhdmUoc3BpbmxvY2tfdCAqbG9jaywgdW5zaWduZWQgbG9uZyAqZmxh Z3MsCiAgKiB2ZXJ5IGhlYXZpbHkgY29udGVuZGVkLiBUaGUgbG9jayBzaG91 bGQgYmUgcGVyaW9kaWNhbGx5IHVubG9ja2VkIHRvIGF2b2lkCiAgKiBoYXZp bmcgZGlzYWJsZWQgSVJRcyBmb3IgYSBsb25nIHRpbWUsIGV2ZW4gd2hlbiB0 aGVyZSBpcyBub2JvZHkgd2FpdGluZyBvbgogICogdGhlIGxvY2suIEl0IG1p Z2h0IGFsc28gYmUgdGhhdCBhbGxvd2luZyB0aGUgSVJRcyB3aWxsIHJlc3Vs dCBpbgotICogbmVlZF9yZXNjaGVkKCkgYmVjb21pbmcgdHJ1ZS4gSWYgc2No ZWR1bGluZyBpcyBuZWVkZWQsIGFzeW5jIGNvbXBhY3Rpb24KLSAqIGFib3J0 cy4gU3luYyBjb21wYWN0aW9uIHNjaGVkdWxlcy4KLSAqIEVpdGhlciBjb21w YWN0aW9uIHR5cGUgd2lsbCBhbHNvIGFib3J0IGlmIGEgZmF0YWwgc2lnbmFs IGlzIHBlbmRpbmcuCi0gKiBJbiBlaXRoZXIgY2FzZSBpZiB0aGUgbG9jayB3 YXMgbG9ja2VkLCBpdCBpcyBkcm9wcGVkIGFuZCBub3QgcmVnYWluZWQuCisg KiBuZWVkX3Jlc2NoZWQoKSBiZWNvbWluZyB0cnVlLgogICoKLSAqIFJldHVy bnMgdHJ1ZSBpZiBjb21wYWN0aW9uIHNob3VsZCBhYm9ydCBkdWUgdG8gZmF0 YWwgc2lnbmFsIHBlbmRpbmcsIG9yCi0gKgkJYXN5bmMgY29tcGFjdGlvbiBk dWUgdG8gbmVlZF9yZXNjaGVkKCkKLSAqIFJldHVybnMgZmFsc2Ugd2hlbiBj b21wYWN0aW9uIGNhbiBjb250aW51ZSAoc3luYyBjb21wYWN0aW9uIG1pZ2h0 IGhhdmUKLSAqCQlzY2hlZHVsZWQpCisgKiBSZXR1cm5zIHRydWUgaWYgY29t cGFjdGlvbiBzaG91bGQgYWJvcnQgZHVlIHRvIGZhdGFsIHNpZ25hbCBwZW5k aW5nLgorICogUmV0dXJucyBmYWxzZSAoYWZ0ZXIgcGVyaGFwcyBhIHJlc2No ZWR1bGUpIHdoZW4gY29tcGFjdGlvbiBjYW4gY29udGludWUuCiAgKi8KLXN0 YXRpYyBib29sIGNvbXBhY3RfdW5sb2NrX3Nob3VsZF9hYm9ydChzcGlubG9j a190ICpsb2NrLAotCQl1bnNpZ25lZCBsb25nIGZsYWdzLCBib29sICpsb2Nr ZWQsIHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjKQorc3RhdGljIGJvb2wg Y29tcGFjdF9zaG91bGRfYWJvcnQoc3RydWN0IGNvbXBhY3RfY29udHJvbCAq Y2MpCiB7Ci0JaWYgKCpsb2NrZWQpIHsKLQkJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZShsb2NrLCBmbGFncyk7Ci0JCSpsb2NrZWQgPSBmYWxzZTsKLQl9Ci0K IAlpZiAoZmF0YWxfc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHsKIAkJY2Mt PmNvbnRlbmRlZCA9IHRydWU7CiAJCXJldHVybiB0cnVlOwpAQCAtNTYyLDEw ICs1NDgsMTQgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaXNvbGF0ZV9mcmVl cGFnZXNfYmxvY2soc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsCiAJCSAq IGNvbnRlbnRpb24sIHRvIGdpdmUgY2hhbmNlIHRvIElSUXMuIEFib3J0IGlm IGZhdGFsIHNpZ25hbAogCQkgKiBwZW5kaW5nIG9yIGFzeW5jIGNvbXBhY3Rp b24gZGV0ZWN0cyBuZWVkX3Jlc2NoZWQoKQogCQkgKi8KLQkJaWYgKCEoYmxv Y2twZm4gJSBTV0FQX0NMVVNURVJfTUFYKQotCQkgICAgJiYgY29tcGFjdF91 bmxvY2tfc2hvdWxkX2Fib3J0KCZjYy0+em9uZS0+bG9jaywgZmxhZ3MsCi0J CQkJCQkJCSZsb2NrZWQsIGNjKSkKLQkJCWJyZWFrOworCQlpZiAoIShibG9j a3BmbiAlIFNXQVBfQ0xVU1RFUl9NQVgpKSB7CisJCQlpZiAobG9ja2VkKSB7 CisJCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2MtPnpvbmUtPmxvY2ss IGZsYWdzKTsKKwkJCQlsb2NrZWQgPSBmYWxzZTsKKwkJCX0KKwkJCWlmIChj b21wYWN0X3Nob3VsZF9hYm9ydChjYykpCisJCQkJYnJlYWs7CisJCX0KIAog CQlucl9zY2FubmVkKys7CiAJCWlmICghcGZuX3ZhbGlkX3dpdGhpbihibG9j a3BmbikpCkBAIC01OTgsOCArNTg4LDggQEAgc3RhdGljIHVuc2lnbmVkIGxv bmcgaXNvbGF0ZV9mcmVlcGFnZXNfYmxvY2soc3RydWN0IGNvbXBhY3RfY29u dHJvbCAqY2MsCiAJCSAqIHJlY2hlY2sgYXMgd2VsbC4KIAkJICovCiAJCWlm ICghbG9ja2VkKSB7Ci0JCQlsb2NrZWQgPSBjb21wYWN0X2xvY2tfaXJxc2F2 ZSgmY2MtPnpvbmUtPmxvY2ssCi0JCQkJCQkJCSZmbGFncywgY2MpOworCQkJ Y29tcGFjdF9sb2NrX2lycXNhdmUoJmNjLT56b25lLT5sb2NrLCAmZmxhZ3Ms IGNjKTsKKwkJCWxvY2tlZCA9IHRydWU7CiAKIAkJCS8qIFJlY2hlY2sgdGhp cyBpcyBhIGJ1ZGR5IHBhZ2UgdW5kZXIgbG9jayAqLwogCQkJaWYgKCFQYWdl QnVkZHkocGFnZSkpCkBAIC04NDYsMTEgKzgzNiwxNSBAQCBpc29sYXRlX21p Z3JhdGVwYWdlc19ibG9jayhzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywg dW5zaWduZWQgbG9uZyBsb3dfcGZuLAogCQkgKiBjb250ZW50aW9uLCB0byBn aXZlIGNoYW5jZSB0byBJUlFzLiBBYm9ydCBjb21wbGV0ZWx5IGlmCiAJCSAq IGEgZmF0YWwgc2lnbmFsIGlzIHBlbmRpbmcuCiAJCSAqLwotCQlpZiAoIShs b3dfcGZuICUgU1dBUF9DTFVTVEVSX01BWCkKLQkJICAgICYmIGNvbXBhY3Rf dW5sb2NrX3Nob3VsZF9hYm9ydCgmcGdkYXQtPmxydV9sb2NrLAotCQkJCQkg ICAgZmxhZ3MsICZsb2NrZWQsIGNjKSkgewotCQkJbG93X3BmbiA9IDA7Ci0J CQlnb3RvIGZhdGFsX3BlbmRpbmc7CisJCWlmICghKGxvd19wZm4gJSBTV0FQ X0NMVVNURVJfTUFYKSkgeworCQkJaWYgKGxvY2tlZCkgeworCQkJCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnBnZGF0LT5scnVfbG9jaywgZmxhZ3MpOwor CQkJCWxvY2tlZCA9IGZhbHNlOworCQkJfQorCQkJaWYgKGNvbXBhY3Rfc2hv dWxkX2Fib3J0KGNjKSkgeworCQkJCWxvd19wZm4gPSAwOworCQkJCWdvdG8g ZmF0YWxfcGVuZGluZzsKKwkJCX0KIAkJfQogCiAJCWlmICghcGZuX3ZhbGlk X3dpdGhpbihsb3dfcGZuKSkKQEAgLTk1MCw4ICs5NDQsOCBAQCBpc29sYXRl X21pZ3JhdGVwYWdlc19ibG9jayhzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpj YywgdW5zaWduZWQgbG9uZyBsb3dfcGZuLAogCiAJCS8qIElmIHdlIGFscmVh ZHkgaG9sZCB0aGUgbG9jaywgd2UgY2FuIHNraXAgc29tZSByZWNoZWNraW5n ICovCiAJCWlmICghbG9ja2VkKSB7Ci0JCQlsb2NrZWQgPSBjb21wYWN0X2xv Y2tfaXJxc2F2ZSgmcGdkYXQtPmxydV9sb2NrLAotCQkJCQkJCQkmZmxhZ3Ms IGNjKTsKKwkJCWNvbXBhY3RfbG9ja19pcnFzYXZlKCZwZ2RhdC0+bHJ1X2xv Y2ssICZmbGFncywgY2MpOworCQkJbG9ja2VkID0gdHJ1ZTsKIAogCQkJLyog VHJ5IGdldCBleGNsdXNpdmUgYWNjZXNzIHVuZGVyIGxvY2sgKi8KIAkJCWlm ICghc2tpcF91cGRhdGVkKSB7Ci0tIAoyLjIzLjAuMTg3LmcxN2Y1Yjc1NTZj LWdvb2cKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw MDQtbW0tY29tcGFjdGlvbi1pc29sYXRpb24tcGluLXRoZW4tbG9jay10aGVu LUNsZWFyUGFnZS5wYXRjaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAwMDAwNjQ0ADAzMTUwNjYAMDI1NzUyMwAwMDAwMDAyNjY0MQAx MzUzMDA3Njc0NQAwMjUxMzQAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABodWdoZAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHByaW1hcnlncm91cAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAARnJvbSA1YWM5NjVjOTg4YzcxOTRmYTM4NWMwMjMw MjYzMjBlNDRlZWIwNzhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBIdWdoIERpY2tpbnMgPGh1Z2hkQGdvb2dsZS5jb20+CkRhdGU6IFR1ZSwg MTIgSnVuIDIwMTIgMTU6NDY6NTYgLTA3MDAKU3ViamVjdDogW1BBVENIIDQv OV0gbW0vY29tcGFjdGlvbjogaXNvbGF0aW9uIHBpbiB0aGVuIGxvY2sgdGhl biBDbGVhclBhZ2VMUlUKClNpbmNlIHpvbmUgaXMgZml4ZWQsIGNvbXBhY3Rp b24ncyBpc29sYXRlX21pZ3JhdGVwYWdlc19ibG9jaygpIHRlbmRlZCB0bwpo b2xkIHBnZGF0LT5scnVfbG9jayB0aHJvdWdob3V0LCBqdXN0IHRlbXBvcmFy aWx5IGRyb3BwaW5nIGFmdGVyIDMyIHBhZ2VzLgpCdXQgdGhhdCB3aWxsIG5v dCB3b3JrIG9uY2Ugd2UgbW92ZSB0byBwZXItbWVtY2ctcGVyLW5vZGUgbG9j a2luZzogdGhlCmFwcHJvcHJpYXRlIGxydXZlYyB3aWxsIGNoYW5nZSwgYW5k IG5vIGxvbmdlciBiZSBrbm93biBpbiBhZHZhbmNlLgoKUHJlcGFyZSBmb3Ig dGhhdCBieSByZWFycmFuZ2luZyBsb2NraW5nIGFyb3VuZCBpdHMgX19pc29s YXRlX2xydV9wYWdlKCksCndoZXJlIG5vdyB3ZSBtdXN0IHRha2UgdGhlIGxv Y2sgYWZ0ZXIgdGhlIHBhZ2UgaXMgcGlubmVkLiAgSWYgdGhlIGxvY2sgaXMK dG8gZGVwZW5kIHVwb24gdGhlIHVzZSBvZiB0aGUgcGFnZSwgd2UgY2Fubm90 IGxldCBwYWdlIGJlIHJldXNlZCB3aGlsZQphY3F1aXJpbmcgbG9jazogdGhp cyBpcyB0cmlja2llciBmb3IgY29tcGFjdGlvbiB0aGFuIGVsc2V3aGVyZSwg YmVjYXVzZQppdCBzZWxlY3RzIHRoZSBwYWdlIGJ5IHBoeXNpY2FsIGxvY2F0 aW9uLCBub3QgbG9naWNhbGx5IGJ5IHVzYWdlIG9yIGxydS4KCkJyaW5nIF9f aXNvbGF0ZV9scnVfcGFnZSgpJ3MgY29kZSBpbnRvIGlzb2xhdGVfbWlncmF0 ZXBhZ2VzX2Jsb2NrKCksCndoZXJlIGxydV9sb2NrIGNhbiBiZSBzYWZlbHkg ZHJvcHBlZCBiZWZvcmUgcHV0X3BhZ2UoKSB3aGVuIHVud2luZGluZy4KQ3V0 IG1tL3Ztc2Nhbi5jJ3MgdmVyc2lvbiBiYWNrIGRvd24gdG8gd2hhdCBpcyBu ZWVkZWQgdGhlcmU6IGl0J3MKYW11c2luZyB0byBkaXNjb3ZlciBob3cgbGl0 dGxlIHRoZSB0d28gdXNhZ2VzIGFjdHVhbGx5IHNoYXJlZCAoYnV0CnByb2Jh Ymx5IGhhZCBtb3JlIGluIGNvbW1vbiBpbiB0aGUgZGF5cyBvZiBsdW1weSBy ZWNsYWltKS4KCk9uY2UgcGFnZV9tYXBwaW5nKCkgaXMgY2FsbGVkIHdpdGgg cGFnZSBwaW5uZWQsIHRoZSByaWdodCBscnVfbG9jaywKYW5kIFBhZ2VMUlUg cmVjaGVja2VkLCBJU09MQVRFX01JR1JBVEVfQVNZTkMgY2FuIHVzZSByY3Vf cmVhZF9sb2NrKCkKaW5zdGVhZCBvZiB0cnlsb2NrX3BhZ2UoKTogNjlkNzYz ZmM2ZDNhIHByZWZlcnJlZCBub3QsIHNheWluZwoiaXQncyBhbiB1bmNvbnZl bnRpb25hbCBtZWFucyBvZiBwcmVzZXJ2aW5nIGEgbWFwcGluZyI7IGJ1dCAy LjYuMzgKY29tbWl0IGZhMGQ3ZTNkZTZkNiAoImZzOiBpY2FjaGUgUkNVIGZy ZWUgaW5vZGVzIikgaW50cm9kdWNlZCBSQ1UgdG8KaW5vZGVzLCA0YjNlZjlk YWE0ZmMgKCJtbS9zd2FwOiBzcGxpdCBzd2FwIGNhY2hlIGludG8gNjRNQiB0 cnVua3MiKQpleHRlbmRlZCB1c2Ugb2YgUkNVIHRvIGZyZWVpbmcgc3dhcHBl cl9zcGFjZXMsIGFuZCA0LjE3IGU5MmJiNGRkOTY3MwooIm1tOiBmaXggcmFj ZXMgYmV0d2VlbiBhZGRyZXNzX3NwYWNlIGRlcmVmZXJlbmNlIGFuZCBmcmVl IGluCnBhZ2VfZXZpY2F0YWJsZSIpIGhhcyBub3cgZXN0YWJsaXNoZWQgaXQg YXMgYSBjb252ZW50aW9uYWwgbWVhbnMuClRob3VnaCwgdXNlZCBpbiB0aGlz IHNwaW5fbG9ja19pcnEoKWVkIHNlY3Rpb24sIHRoYXQgcmN1X3JlYWRfbG9j aygpCmlzIHJhdGhlciBmb3IgZG9jdW1lbnRhdGlvbiB0aGFuIG5lY2Vzc2Fy eS4KClRoYXQgaGlzdG9yeSBkb2VzIG5vdCBxdWl0ZSBjb3ZlciB0aGlzIG5l dyBjYXNlOiBoZXJlIHdlIGFsc28KZGVyZWZlcmVuY2UgbWFwcGluZy0+YV9v cHMuICBCdXQgSSd2ZSBub3QgZm91bmQgYW55IGNhc2Ugd2hlcmUKbWFwcGlu Zy0+YV9vcHMgZ2V0cyB6ZXJvZWQsIGFuZCBldmVuIGlmIGl0IHBvaW50cyB0 byBtb2R1bGUgZGF0YSwKdGhlcmUgaGFzIHRvIGJlIGEgZ3JhY2UgcGVyaW9k IGJlZm9yZSB0aGF0IG1vZHVsZSBnZXRzIHVubG9hZGVkLgpJdCdzIG5vdCBp ZGVhbCB0byByZWx5IG9uIHRoYXQsIGJ1dCBjb25zaWRlcmluZyB0aGF0IHdl IHN1cnZpdmVkCmZvciBzaXggeWVhcnMgYmVmb3JlIDY5ZDc2M2ZjNmQzYSBm aXhlZCBhIHRoZW9yZXRpY2FsIHByb2JsZW0sCkkgd291bGQgcmF0aGVyIHJl bHkgb24gUkNVIGhlcmUgdGhhbiB1c2UgdHJ5bG9ja19wYWdlKCkuCgpTaWdu ZWQtb2ZmLWJ5OiBIdWdoIERpY2tpbnMgPGh1Z2hkQGdvb2dsZS5jb20+CkNj OiBNZWwgR29ybWFuIDxtZ29ybWFuQHRlY2hzaW5ndWxhcml0eS5uZXQ+CkNj OiBWbGFzdGltaWwgQmFia2EgPHZiYWJrYUBzdXNlLmN6PgpDYzogTWluY2hh biBLaW0gPG1pbmNoYW5Aa2VybmVsLm9yZz4KQ2M6ICJIdWFuZywgWWluZyIg PHlpbmcuaHVhbmdAaW50ZWwuY29tPgpDYzogWXUgWmhhbyA8eXV6aGFvQGdv b2dsZS5jb20+CkNjOiBBbGV4IFNoaSA8YWxleC5zaGlAbGludXguYWxpYmFi YS5jb20+Ci0tLQogaW5jbHVkZS9saW51eC9zd2FwLmggfCAgMSAtCiBtbS9j b21wYWN0aW9uLmMgICAgICB8IDg1ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tCiBtbS92bXNjYW4uYyAgICAgICAgICB8 IDcyICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDMg ZmlsZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgODggZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zd2FwLmggYi9pbmNs dWRlL2xpbnV4L3N3YXAuaAppbmRleCBkZTJjNjdhMzNiN2UuLjc1ZWRhZmFl Nzc2MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zd2FwLmgKKysrIGIv aW5jbHVkZS9saW51eC9zd2FwLmgKQEAgLTM1MCw3ICszNTAsNiBAQCBleHRl cm4gdm9pZCBscnVfY2FjaGVfYWRkX2FjdGl2ZV9vcl91bmV2aWN0YWJsZShz dHJ1Y3QgcGFnZSAqcGFnZSwKIGV4dGVybiB1bnNpZ25lZCBsb25nIHpvbmVf cmVjbGFpbWFibGVfcGFnZXMoc3RydWN0IHpvbmUgKnpvbmUpOwogZXh0ZXJu IHVuc2lnbmVkIGxvbmcgdHJ5X3RvX2ZyZWVfcGFnZXMoc3RydWN0IHpvbmVs aXN0ICp6b25lbGlzdCwgaW50IG9yZGVyLAogCQkJCQlnZnBfdCBnZnBfbWFz aywgbm9kZW1hc2tfdCAqbWFzayk7Ci1leHRlcm4gaW50IF9faXNvbGF0ZV9s cnVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgaXNvbGF0ZV9tb2RlX3QgbW9k ZSk7CiBleHRlcm4gdW5zaWduZWQgbG9uZyB0cnlfdG9fZnJlZV9tZW1fY2dy b3VwX3BhZ2VzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywKIAkJCQkJCSAg dW5zaWduZWQgbG9uZyBucl9wYWdlcywKIAkJCQkJCSAgZ2ZwX3QgZ2ZwX21h c2ssCmRpZmYgLS1naXQgYS9tbS9jb21wYWN0aW9uLmMgYi9tbS9jb21wYWN0 aW9uLmMKaW5kZXggNTJjZDdmYTQ0MjdkLi5lZjdmMTE3ZjA4MjUgMTAwNjQ0 Ci0tLSBhL21tL2NvbXBhY3Rpb24uYworKysgYi9tbS9jb21wYWN0aW9uLmMK QEAgLTc3MCw3ICs3NzAsNyBAQCBzdGF0aWMgYm9vbCB0b29fbWFueV9pc29s YXRlZChwZ19kYXRhX3QgKnBnZGF0KQogICovCiBzdGF0aWMgdW5zaWduZWQg bG9uZwogaXNvbGF0ZV9taWdyYXRlcGFnZXNfYmxvY2soc3RydWN0IGNvbXBh Y3RfY29udHJvbCAqY2MsIHVuc2lnbmVkIGxvbmcgbG93X3BmbiwKLQkJCXVu c2lnbmVkIGxvbmcgZW5kX3BmbiwgaXNvbGF0ZV9tb2RlX3QgaXNvbGF0ZV9t b2RlKQorCQkJdW5zaWduZWQgbG9uZyBlbmRfcGZuLCBpc29sYXRlX21vZGVf dCBpc29sX21vZGUpCiB7CiAJcGdfZGF0YV90ICpwZ2RhdCA9IGNjLT56b25l LT56b25lX3BnZGF0OwogCXVuc2lnbmVkIGxvbmcgbnJfc2Nhbm5lZCA9IDAs IG5yX2lzb2xhdGVkID0gMDsKQEAgLTc3OSw5ICs3NzksMTAgQEAgaXNvbGF0 ZV9taWdyYXRlcGFnZXNfYmxvY2soc3RydWN0IGNvbXBhY3RfY29udHJvbCAq Y2MsIHVuc2lnbmVkIGxvbmcgbG93X3BmbiwKIAlib29sIGxvY2tlZCA9IGZh bHNlOwogCXN0cnVjdCBwYWdlICpwYWdlID0gTlVMTCwgKnZhbGlkX3BhZ2Ug PSBOVUxMOwogCXVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuID0gbG93X3BmbjsK LQlib29sIHNraXBfb25fZmFpbHVyZSA9IGZhbHNlOwogCXVuc2lnbmVkIGxv bmcgbmV4dF9za2lwX3BmbiA9IDA7CisJYm9vbCBza2lwX29uX2ZhaWx1cmUg PSBmYWxzZTsKIAlib29sIHNraXBfdXBkYXRlZCA9IGZhbHNlOworCWJvb2wg Z290X3BhZ2UgPSBmYWxzZTsKIAogCS8qCiAJICogRW5zdXJlIHRoYXQgdGhl cmUgYXJlIG5vdCB0b28gbWFueSBwYWdlcyBpc29sYXRlZCBmcm9tIHRoZSBM UlUKQEAgLTkxOSw3ICs5MjAsNyBAQCBpc29sYXRlX21pZ3JhdGVwYWdlc19i bG9jayhzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgdW5zaWduZWQgbG9u ZyBsb3dfcGZuLAogCQkJCQlsb2NrZWQgPSBmYWxzZTsKIAkJCQl9CiAKLQkJ CQlpZiAoIWlzb2xhdGVfbW92YWJsZV9wYWdlKHBhZ2UsIGlzb2xhdGVfbW9k ZSkpCisJCQkJaWYgKCFpc29sYXRlX21vdmFibGVfcGFnZShwYWdlLCBpc29s X21vZGUpKQogCQkJCQlnb3RvIGlzb2xhdGVfc3VjY2VzczsKIAkJCX0KIApA QCAtOTQyLDYgKzk0MywyMiBAQCBpc29sYXRlX21pZ3JhdGVwYWdlc19ibG9j ayhzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgdW5zaWduZWQgbG9uZyBs b3dfcGZuLAogCQlpZiAoIShjYy0+Z2ZwX21hc2sgJiBfX0dGUF9GUykgJiYg cGFnZV9tYXBwaW5nKHBhZ2UpKQogCQkJZ290byBpc29sYXRlX2ZhaWw7CiAK KwkJLyogQ29tcGFjdGlvbiBtb3ZlcyB1bmV2aWN0YWJsZXMgaWYgc3lzY3Rs IGFsbG93czsgQ01BIGFsd2F5cyAqLworCQlpZiAoIShpc29sX21vZGUgJiBJ U09MQVRFX1VORVZJQ1RBQkxFKSAmJiBQYWdlVW5ldmljdGFibGUocGFnZSkp CisJCQlnb3RvIGlzb2xhdGVfZmFpbDsKKworCQkvKgorCQkgKiBJU09MQVRF X0FTWU5DX01JR1JBVEUgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IGl0IG9u bHkKKwkJICogd2FudHMgcGFnZXMgdGhhdCBjYW4gYmUgbWlncmF0ZWQgd2l0 aG91dCBibG9ja2luZzoKKwkJICogYnV0IGFsbCB0aGUgY2FsbGVyIGNhbiBk byBvbiBQYWdlV3JpdGViYWNrIGlzIGJsb2NrLgorCQkgKi8KKwkJaWYgKChp c29sX21vZGUgJiBJU09MQVRFX0FTWU5DX01JR1JBVEUpICYmIFBhZ2VXcml0 ZWJhY2socGFnZSkpCisJCQlnb3RvIGlzb2xhdGVfZmFpbDsKKworCQkvKiBH ZXQgcmVmZXJlbmNlIG9uIHBhZ2UgYmVmb3JlIGlzb2xhdGluZyBpdCAqLwor CQlpZiAoIWdldF9wYWdlX3VubGVzc196ZXJvKHBhZ2UpKQorCQkJZ290byBp c29sYXRlX2ZhaWw7CisKIAkJLyogSWYgd2UgYWxyZWFkeSBob2xkIHRoZSBs b2NrLCB3ZSBjYW4gc2tpcCBzb21lIHJlY2hlY2tpbmcgKi8KIAkJaWYgKCFs b2NrZWQpIHsKIAkJCWNvbXBhY3RfbG9ja19pcnFzYXZlKCZwZ2RhdC0+bHJ1 X2xvY2ssICZmbGFncywgY2MpOwpAQCAtOTUwLDM0ICs5NjcsNDYgQEAgaXNv bGF0ZV9taWdyYXRlcGFnZXNfYmxvY2soc3RydWN0IGNvbXBhY3RfY29udHJv bCAqY2MsIHVuc2lnbmVkIGxvbmcgbG93X3BmbiwKIAkJCS8qIFRyeSBnZXQg ZXhjbHVzaXZlIGFjY2VzcyB1bmRlciBsb2NrICovCiAJCQlpZiAoIXNraXBf dXBkYXRlZCkgewogCQkJCXNraXBfdXBkYXRlZCA9IHRydWU7Ci0JCQkJaWYg KHRlc3RfYW5kX3NldF9za2lwKGNjLCBwYWdlLCBsb3dfcGZuKSkKKwkJCQlp ZiAodGVzdF9hbmRfc2V0X3NraXAoY2MsIHBhZ2UsIGxvd19wZm4pKSB7CisJ CQkJCWdvdF9wYWdlID0gdHJ1ZTsKIAkJCQkJZ290byBpc29sYXRlX2Fib3J0 OworCQkJCX0KIAkJCX0KKwkJfQogCi0JCQkvKiBSZWNoZWNrIFBhZ2VMUlUg YW5kIFBhZ2VDb21wb3VuZCB1bmRlciBsb2NrICovCi0JCQlpZiAoIVBhZ2VM UlUocGFnZSkpCi0JCQkJZ290byBpc29sYXRlX2ZhaWw7Ci0KKwkJLyogUmVj aGVjayBQYWdlTFJVIGFuZCBQYWdlQ29tcG91bmQgdW5kZXIgbG9jayAqLwor CQlpZiAodW5saWtlbHkoIVBhZ2VMUlUocGFnZSkgfHwgUGFnZUNvbXBvdW5k KHBhZ2UpKSkgewogCQkJLyoKLQkJCSAqIFBhZ2UgYmVjb21lIGNvbXBvdW5k IHNpbmNlIHRoZSBub24tbG9ja2VkIGNoZWNrLAotCQkJICogYW5kIGl0J3Mg b24gTFJVLiBJdCBjYW4gb25seSBiZSBhIFRIUCBzbyB0aGUgb3JkZXIKLQkJ CSAqIGlzIHNhZmUgdG8gcmVhZCBhbmQgaXQncyAwIGZvciB0YWlsIHBhZ2Vz LgorCQkJICogbHJ1X2xvY2sgZXhjbHVkZXMgc3BsaXR0aW5nIGEgaHVnZSBw YWdlLAorCQkJICogYnV0IHdlIGNhbm5vdCBob2xkIGxydV9sb2NrIHdoaWxl IGZyZWVpbmcgcGFnZS4KIAkJCSAqLwotCQkJaWYgKHVubGlrZWx5KFBhZ2VD b21wb3VuZChwYWdlKSkpIHsKLQkJCQlsb3dfcGZuICs9ICgxVUwgPDwgY29t cG91bmRfb3JkZXIocGFnZSkpIC0gMTsKLQkJCQlnb3RvIGlzb2xhdGVfZmFp bDsKLQkJCX0KKwkJCWxvd19wZm4gKz0gKDFVTCA8PCBjb21wb3VuZF9vcmRl cihwYWdlKSkgLSAxOworCQkJZ290byB1bmxvY2tfYW5kX3B1dDsKIAkJfQog Ci0JCWxydXZlYyA9IG1lbV9jZ3JvdXBfcGFnZV9scnV2ZWMocGFnZSwgcGdk YXQpOworCQlpZiAoKGlzb2xfbW9kZSAmIElTT0xBVEVfQVNZTkNfTUlHUkFU RSkgJiYgUGFnZURpcnR5KHBhZ2UpKSB7CisJCQlzdHJ1Y3QgYWRkcmVzc19z cGFjZSAqbWFwcGluZzsKKwkJCWJvb2wgbWlncmF0ZV9kaXJ0eTsKIAotCQkv KiBUcnkgaXNvbGF0ZSB0aGUgcGFnZSAqLwotCQlpZiAoX19pc29sYXRlX2xy dV9wYWdlKHBhZ2UsIGlzb2xhdGVfbW9kZSkgIT0gMCkKLQkJCWdvdG8gaXNv bGF0ZV9mYWlsOwotCi0JCVZNX0JVR19PTl9QQUdFKFBhZ2VDb21wb3VuZChw YWdlKSwgcGFnZSk7CisJCQkvKgorCQkJICogT25seSBwYWdlcyB3aXRob3V0 IG1hcHBpbmdzIG9yIHRoYXQgaGF2ZSBhCisJCQkgKiAtPm1pZ3JhdGVwYWdl IGNhbGxiYWNrIGFyZSBwb3NzaWJsZSB0byBtaWdyYXRlCisJCQkgKiB3aXRo b3V0IGJsb2NraW5nLiBIb3dldmVyLCB3ZSBjYW4gYmUgcmFjaW5nIHdpdGgK KwkJCSAqIHRydW5jYXRpb24gc28gaXQncyBuZWNlc3NhcnkgdG8gZGVsYXkg dGhlIG1hcHBpbmcKKwkJCSAqIChhbmQgaXRzIGFfb3BzKSBmcm9tIGJlaW5n IGZyZWVkIGNvbmN1cnJlbnRseToKKwkJCSAqIGlub2RlcyBhbmQgc3dhcCBh ZGRyZXNzX3NwYWNlcyBhcmUgZnJlZWQgYnkgUkNVLgorCQkJICovCisJCQly Y3VfcmVhZF9sb2NrKCk7CisJCQltYXBwaW5nID0gcGFnZV9tYXBwaW5nKHBh Z2UpOworCQkJbWlncmF0ZV9kaXJ0eSA9ICFtYXBwaW5nIHx8IG1hcHBpbmct PmFfb3BzLT5taWdyYXRlcGFnZTsKKwkJCXJjdV9yZWFkX3VubG9jaygpOwor CQkJaWYgKCFtaWdyYXRlX2RpcnR5KQorCQkJCWdvdG8gdW5sb2NrX2FuZF9w dXQ7CisJCX0KIAotCQkvKiBTdWNjZXNzZnVsbHkgaXNvbGF0ZWQgKi8KKwkJ LyogUGFnZSBjYW4gbm93IGJlIHNhZmVseSBpc29sYXRlZCAqLworCQlscnV2 ZWMgPSBtZW1fY2dyb3VwX3BhZ2VfbHJ1dmVjKHBhZ2UsIHBnZGF0KTsKKwkJ Q2xlYXJQYWdlTFJVKHBhZ2UpOwogCQlkZWxfcGFnZV9mcm9tX2xydV9saXN0 KHBhZ2UsIGxydXZlYywgcGFnZV9scnUocGFnZSkpOwogCQlpbmNfbm9kZV9w YWdlX3N0YXRlKHBhZ2UsCiAJCQkJTlJfSVNPTEFURURfQU5PTiArIHBhZ2Vf aXNfZmlsZV9jYWNoZShwYWdlKSk7CkBAIC0xMDAwLDYgKzEwMjksMTMgQEAg aXNvbGF0ZV9taWdyYXRlcGFnZXNfYmxvY2soc3RydWN0IGNvbXBhY3RfY29u dHJvbCAqY2MsIHVuc2lnbmVkIGxvbmcgbG93X3BmbiwKIAkJfQogCiAJCWNv bnRpbnVlOworCit1bmxvY2tfYW5kX3B1dDoKKwkJLyogQXZvaWQgcG90ZW50 aWFsIGRlYWRsb2NrIGluIGZyZWVpbmcgcGFnZSB1bmRlciBscnVfbG9jayAq LworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwZ2RhdC0+bHJ1X2xvY2ss IGZsYWdzKTsKKwkJbG9ja2VkID0gZmFsc2U7CisJCXB1dF9wYWdlKHBhZ2Up OworCiBpc29sYXRlX2ZhaWw6CiAJCWlmICghc2tpcF9vbl9mYWlsdXJlKQog CQkJY29udGludWU7CkBAIC0xMDM3LDggKzEwNzMsMTEgQEAgaXNvbGF0ZV9t aWdyYXRlcGFnZXNfYmxvY2soc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2Ms IHVuc2lnbmVkIGxvbmcgbG93X3BmbiwKIAkJbG93X3BmbiA9IGVuZF9wZm47 CiAKIGlzb2xhdGVfYWJvcnQ6Ci0JaWYgKGxvY2tlZCkKKwlpZiAobG9ja2Vk KSB7CiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBnZGF0LT5scnVfbG9j aywgZmxhZ3MpOworCQlpZiAoZ290X3BhZ2UpCisJCQlwdXRfcGFnZShwYWdl KTsKKwl9CiAKIAkvKgogCSAqIFVwZGF0ZWQgdGhlIGNhY2hlZCBzY2FubmVy IHBmbiBvbmNlIHRoZSBwYWdlYmxvY2sgaGFzIGJlZW4gc2Nhbm5lZApkaWZm IC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uYwppbmRleCBjNzdk MWUzNzYxYTcuLjI5YjJhNTllMjgxMCAxMDA2NDQKLS0tIGEvbW0vdm1zY2Fu LmMKKysrIGIvbW0vdm1zY2FuLmMKQEAgLTE1NjMsNjUgKzE1NjMsMTcgQEAg dW5zaWduZWQgbG9uZyByZWNsYWltX2NsZWFuX3BhZ2VzX2Zyb21fbGlzdChz dHJ1Y3Qgem9uZSAqem9uZSwKIH0KIAogLyoKLSAqIEF0dGVtcHQgdG8gcmVt b3ZlIHRoZSBzcGVjaWZpZWQgcGFnZSBmcm9tIGl0cyBMUlUuICBPbmx5IHRh a2UgdGhpcyBwYWdlCi0gKiBpZiBpdCBpcyBvZiB0aGUgYXBwcm9wcmlhdGUg UGFnZUFjdGl2ZSBzdGF0dXMuICBQYWdlcyB3aGljaCBhcmUgYmVpbmcKLSAq IGZyZWVkIGVsc2V3aGVyZSBhcmUgYWxzbyBpZ25vcmVkLgorICogQXR0ZW1w dCB0byByZW1vdmUgdGhlIHNwZWNpZmllZCBwYWdlIGZyb20gaXRzIExSVS4K KyAqIFBhZ2VzIHdoaWNoIGFyZSBiZWluZyBmcmVlZCBlbHNld2hlcmUgYXJl IGlnbm9yZWQuCiAgKgogICogcGFnZToJcGFnZSB0byBjb25zaWRlcgotICog bW9kZToJb25lIG9mIHRoZSBMUlUgaXNvbGF0aW9uIG1vZGVzIGRlZmluZWQg YWJvdmUKKyAqIG1vZGU6CTAgb3IgSVNPTEFURV9VTk1BUFBFRAogICoKLSAq IHJldHVybnMgMCBvbiBzdWNjZXNzLCAtdmUgZXJybm8gb24gZmFpbHVyZS4K KyAqIHJldHVybnMgMCBvbiBzdWNjZXNzLCAtRUJVU1kgb24gZmFpbHVyZS4K ICAqLwotaW50IF9faXNvbGF0ZV9scnVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFn ZSwgaXNvbGF0ZV9tb2RlX3QgbW9kZSkKK3N0YXRpYyBpbnQgX19pc29sYXRl X2xydV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBpc29sYXRlX21vZGVfdCBt b2RlKQogewotCWludCByZXQgPSAtRUlOVkFMOwotCi0JLyogT25seSB0YWtl IHBhZ2VzIG9uIHRoZSBMUlUuICovCi0JaWYgKCFQYWdlTFJVKHBhZ2UpKQot CQlyZXR1cm4gcmV0OwotCi0JLyogQ29tcGFjdGlvbiBzaG91bGQgbm90IGhh bmRsZSB1bmV2aWN0YWJsZSBwYWdlcyBidXQgQ01BIGNhbiBkbyBzbyAqLwot CWlmIChQYWdlVW5ldmljdGFibGUocGFnZSkgJiYgIShtb2RlICYgSVNPTEFU RV9VTkVWSUNUQUJMRSkpCi0JCXJldHVybiByZXQ7Ci0KLQlyZXQgPSAtRUJV U1k7Ci0KLQkvKgotCSAqIFRvIG1pbmltaXNlIExSVSBkaXNydXB0aW9uLCB0 aGUgY2FsbGVyIGNhbiBpbmRpY2F0ZSB0aGF0IGl0IG9ubHkKLQkgKiB3YW50 cyB0byBpc29sYXRlIHBhZ2VzIGl0IHdpbGwgYmUgYWJsZSB0byBvcGVyYXRl IG9uIHdpdGhvdXQKLQkgKiBibG9ja2luZyAtIGNsZWFuIHBhZ2VzIGZvciB0 aGUgbW9zdCBwYXJ0LgotCSAqCi0JICogSVNPTEFURV9BU1lOQ19NSUdSQVRF IGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCBpdCBvbmx5IHdhbnRzIHRvIHBh Z2VzCi0JICogdGhhdCBpdCBpcyBwb3NzaWJsZSB0byBtaWdyYXRlIHdpdGhv dXQgYmxvY2tpbmcKLQkgKi8KLQlpZiAobW9kZSAmIElTT0xBVEVfQVNZTkNf TUlHUkFURSkgewotCQkvKiBBbGwgdGhlIGNhbGxlciBjYW4gZG8gb24gUGFn ZVdyaXRlYmFjayBpcyBibG9jayAqLwotCQlpZiAoUGFnZVdyaXRlYmFjayhw YWdlKSkKLQkJCXJldHVybiByZXQ7Ci0KLQkJaWYgKFBhZ2VEaXJ0eShwYWdl KSkgewotCQkJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7Ci0JCQli b29sIG1pZ3JhdGVfZGlydHk7Ci0KLQkJCS8qCi0JCQkgKiBPbmx5IHBhZ2Vz IHdpdGhvdXQgbWFwcGluZ3Mgb3IgdGhhdCBoYXZlIGEKLQkJCSAqIC0+bWln cmF0ZXBhZ2UgY2FsbGJhY2sgYXJlIHBvc3NpYmxlIHRvIG1pZ3JhdGUKLQkJ CSAqIHdpdGhvdXQgYmxvY2tpbmcuIEhvd2V2ZXIsIHdlIGNhbiBiZSByYWNp bmcgd2l0aAotCQkJICogdHJ1bmNhdGlvbiBzbyBpdCdzIG5lY2Vzc2FyeSB0 byBsb2NrIHRoZSBwYWdlCi0JCQkgKiB0byBzdGFiaWxpc2UgdGhlIG1hcHBp bmcgYXMgdHJ1bmNhdGlvbiBob2xkcwotCQkJICogdGhlIHBhZ2UgbG9jayB1 bnRpbCBhZnRlciB0aGUgcGFnZSBpcyByZW1vdmVkCi0JCQkgKiBmcm9tIHRo ZSBwYWdlIGNhY2hlLgotCQkJICovCi0JCQlpZiAoIXRyeWxvY2tfcGFnZShw YWdlKSkKLQkJCQlyZXR1cm4gcmV0OwotCi0JCQltYXBwaW5nID0gcGFnZV9t YXBwaW5nKHBhZ2UpOwotCQkJbWlncmF0ZV9kaXJ0eSA9ICFtYXBwaW5nIHx8 IG1hcHBpbmctPmFfb3BzLT5taWdyYXRlcGFnZTsKLQkJCXVubG9ja19wYWdl KHBhZ2UpOwotCQkJaWYgKCFtaWdyYXRlX2RpcnR5KQotCQkJCXJldHVybiBy ZXQ7Ci0JCX0KLQl9CisJaW50IHJldCA9IC1FQlVTWTsKIAogCWlmICgobW9k ZSAmIElTT0xBVEVfVU5NQVBQRUQpICYmIHBhZ2VfbWFwcGVkKHBhZ2UpKQog CQlyZXR1cm4gcmV0OwpAQCAtMTYzOSw3ICsxNTkxLDYgQEAgaW50IF9faXNv bGF0ZV9scnVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgaXNvbGF0ZV9tb2Rl X3QgbW9kZSkKIAlyZXR1cm4gcmV0OwogfQogCi0KIC8qCiAgKiBVcGRhdGUg TFJVIHNpemVzIGFmdGVyIGlzb2xhdGluZyBwYWdlcy4gVGhlIExSVSBzaXpl IHVwZGF0ZXMgbXVzdAogICogYmUgY29tcGxldGUgYmVmb3JlIG1lbV9jZ3Jv dXBfdXBkYXRlX2xydV9zaXplIGR1ZSB0byBhIHNhbnRpdHkgY2hlY2suCkBA IC0xNzI1LDIwICsxNjc2LDEzIEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGlz b2xhdGVfbHJ1X3BhZ2VzKHVuc2lnbmVkIGxvbmcgbnJfdG9fc2NhbiwKIAkJ ICogb25seSB3aGVuIHRoZSBwYWdlIGlzIGJlaW5nIGZyZWVkIHNvbWV3aGVy ZSBlbHNlLgogCQkgKi8KIAkJc2NhbiArPSBucl9wYWdlczsKLQkJc3dpdGNo IChfX2lzb2xhdGVfbHJ1X3BhZ2UocGFnZSwgbW9kZSkpIHsKLQkJY2FzZSAw OgorCQlpZiAoX19pc29sYXRlX2xydV9wYWdlKHBhZ2UsIG1vZGUpID09IDAp IHsKIAkJCW5yX3Rha2VuICs9IG5yX3BhZ2VzOwogCQkJbnJfem9uZV90YWtl bltwYWdlX3pvbmVudW0ocGFnZSldICs9IG5yX3BhZ2VzOwogCQkJbGlzdF9t b3ZlKCZwYWdlLT5scnUsIGRzdCk7Ci0JCQlicmVhazsKLQotCQljYXNlIC1F QlVTWToKKwkJfSBlbHNlIHsKIAkJCS8qIGVsc2UgaXQgaXMgYmVpbmcgZnJl ZWQgZWxzZXdoZXJlICovCiAJCQlsaXN0X21vdmUoJnBhZ2UtPmxydSwgc3Jj KTsKLQkJCWNvbnRpbnVlOwotCi0JCWRlZmF1bHQ6Ci0JCQlCVUcoKTsKIAkJ fQogCX0KIAotLSAKMi4yMy4wLjE4Ny5nMTdmNWI3NTU2Yy1nb29nCgoAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ADAwMDUtbW0tbWVtY2ctbWlzYy1jbGVhbnVwcy10by1zaW1wbGlmeS10aGUt bmV4dC1jb21taXQucGF0Y2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAwMDAwNjQ0ADAzMTUwNjYAMDI1NzUyMwAwMDAwMDAxNjEy MAAxMzUzMDA3Njc0NQAwMjQ2NzEAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABodWdo ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHByaW1hcnlncm91cAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAARnJvbSA4YzNmY2QyY2UzMjA0NGZkMDY1MTIz NzIzMzNjZGQwYzhmNWNmZTk0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiBIdWdoIERpY2tpbnMgPGh1Z2hkQGdvb2dsZS5jb20+CkRhdGU6IFRo dSwgMTcgTWF5IDIwMTggMTY6MDk6MjEgLTA3MDAKU3ViamVjdDogW1BBVENI IDUvOV0gbW0vbWVtY2c6IG1pc2MgY2xlYW51cHMgdG8gc2ltcGxpZnkgdGhl IG5leHQgY29tbWl0CgpUaHJlZSBtaW5vciBjbGVhbnVwczogc2VwYXJhdGlu ZyB0aGVzZSBvdXQgbWFrZXMgaXQgYSBsaXR0bGUgZWFzaWVyIGZvcgp0aGUg cmV2aWV3ZXIgdG8gZm9jdXMgb24gdGhlIG1haW4gYnVzaW5lc3Mgb2YgdGhl IG5leHQgY29tbWl0LiAgVGhlc2UKY2FuIGJlIGZ1cnRoZXIgc3ViZGl2aWRl ZCwgYnV0IG1heSBub3QgYmUgd29ydGggdGhlIGVmZm9ydC4KCjEuIFRoZSBu b2RlX2xydXZlYygpIHdyYXBwZXIgZG9lcyBub3RoaW5nIGhlbHBmdWw6IGRl bGV0ZSBpdC4KCjIuIGxvY2tfcGFnZV9scnUoKSBhbmQgdW5sb2NrX3BhZ2Vf bHJ1KCkgYXJlIG5vdyBiYWNrIHRvIGJlaW5nIHVzZWQgYnkKICAgY29tbWl0 X2NoYXJnZSgpIGFsb25lOiBpdCdzIG1vcmUgY29udmVuaWVudCB0byBwdXQg dGhlbSBpbmxpbmUgdGhlcmUKICAgYWdhaW4sIGFuZCByZWR1Y2VzIGNvbmZ1 c2lvbiBiZXR3ZWVuIGRpZmZlcmVudCBtZW1jZyBsb2NraW5nIGZ1bmN0aW9u cy4KCjMuIG1lbV9jZ3JvdXBfcGFnZV9scnV2ZWMoKSB3aWxsIGJlIHN1cGVy c2VkZWQgYnkgbHJ1dmVjIGxvY2tpbmcgaW4gdGhlCiAgIG5leHQgY29tbWl0 LCBidXQgdGVzdF9jbGVhcl9wYWdlX3dyaXRlYmFjaygpIG11c3QgYXZvaWQg dGhhdCAoYmVpbmcKICAgY2FsbGVkIGZyb20gYSBsb3dlciBsZXZlbCwgdXNp bmcgbG9ja19wYWdlX21lbWNnKCkgdG8gcHJvdGVjdCBmcm9tCiAgIG1lbWNn IG1vdmUpOiBpdCBjYW4ganVzdCBhcyB3ZWxsIHVzZSBtZW1fY2dyb3VwX2xy dXZlYygpIGluc3RlYWQsCiAgIHNvIGxvbmcgYXMgbG9ja19wYWdlX21lbWNn KCkgcmV0dXJucyByb290X21lbV9jZ3JvdXAgZm9yIE5VTEwKICAgcGFnZS0+ bWVtX2Nncm91cCAod2hpY2ggaXMgYmV0dGVyIHJlYWQgd2l0aCBSRUFEX09O Q0UoKSkuCgpTaWduZWQtb2ZmLWJ5OiBIdWdoIERpY2tpbnMgPGh1Z2hkQGdv b2dsZS5jb20+CkNjOiBKb2hhbm5lcyBXZWluZXIgPGhhbm5lc0BjbXB4Y2hn Lm9yZz4KQ2M6IE1lbCBHb3JtYW4gPG1nb3JtYW5AdGVjaHNpbmd1bGFyaXR5 Lm5ldD4KQ2M6IFl1IFpoYW8gPHl1emhhb0Bnb29nbGUuY29tPgpDYzogQWxl eCBTaGkgPGFsZXguc2hpQGxpbnV4LmFsaWJhYmEuY29tPgotLS0KIGluY2x1 ZGUvbGludXgvbWVtY29udHJvbC5oIHwgIDQgKy0tCiBpbmNsdWRlL2xpbnV4 L21tem9uZS5oICAgICB8ICA1IC0tLQogbW0vbWVtY29udHJvbC5jICAgICAg ICAgICAgfCA2OCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogbW0vcGFnZS13cml0ZWJhY2suYyAgICAgICAgfCAgMiArLQogbW0v cGFnZV9hbGxvYy5jICAgICAgICAgICAgfCAgMiArLQogNSBmaWxlcyBjaGFu Z2VkLCAzMSBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaCBiL2luY2x1ZGUv bGludXgvbWVtY29udHJvbC5oCmluZGV4IDJjZDQzNTljYjM4Yy4uNmIyM2E0 MTgwZmRiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wu aAorKysgYi9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaApAQCAtMzc1LDcg KzM3NSw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGxydXZlYyAqbWVtX2Nn cm91cF9scnV2ZWMoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwKIAlzdHJ1 Y3QgbHJ1dmVjICpscnV2ZWM7CiAKIAlpZiAobWVtX2Nncm91cF9kaXNhYmxl ZCgpKSB7Ci0JCWxydXZlYyA9IG5vZGVfbHJ1dmVjKHBnZGF0KTsKKwkJbHJ1 dmVjID0gJnBnZGF0LT5scnV2ZWM7CiAJCWdvdG8gb3V0OwogCX0KIApAQCAt ODYwLDcgKzg2MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtZW1fY2dyb3Vw X21pZ3JhdGUoc3RydWN0IHBhZ2UgKm9sZCwgc3RydWN0IHBhZ2UgKm5ldykK IHN0YXRpYyBpbmxpbmUgc3RydWN0IGxydXZlYyAqbWVtX2Nncm91cF9scnV2 ZWMoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwKIAkJCQlzdHJ1Y3QgbWVt X2Nncm91cCAqbWVtY2cpCiB7Ci0JcmV0dXJuIG5vZGVfbHJ1dmVjKHBnZGF0 KTsKKwlyZXR1cm4gJnBnZGF0LT5scnV2ZWM7CiB9CiAKIHN0YXRpYyBpbmxp bmUgc3RydWN0IGxydXZlYyAqbWVtX2Nncm91cF9wYWdlX2xydXZlYyhzdHJ1 Y3QgcGFnZSAqcGFnZSwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW16 b25lLmggYi9pbmNsdWRlL2xpbnV4L21tem9uZS5oCmluZGV4IGQ3N2Q3MTdj NjIwYy4uOTdiYTQyNzZmMzY0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4 L21tem9uZS5oCisrKyBiL2luY2x1ZGUvbGludXgvbW16b25lLmgKQEAgLTc4 NCwxMSArNzg0LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgcGdsaXN0X2RhdGEgewog I2RlZmluZSBub2RlX3N0YXJ0X3BmbihuaWQpCShOT0RFX0RBVEEobmlkKS0+ bm9kZV9zdGFydF9wZm4pCiAjZGVmaW5lIG5vZGVfZW5kX3BmbihuaWQpIHBn ZGF0X2VuZF9wZm4oTk9ERV9EQVRBKG5pZCkpCiAKLXN0YXRpYyBpbmxpbmUg c3RydWN0IGxydXZlYyAqbm9kZV9scnV2ZWMoc3RydWN0IHBnbGlzdF9kYXRh ICpwZ2RhdCkKLXsKLQlyZXR1cm4gJnBnZGF0LT5scnV2ZWM7Ci19Ci0KIHN0 YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBwZ2RhdF9lbmRfcGZuKHBnX2Rh dGFfdCAqcGdkYXQpCiB7CiAJcmV0dXJuIHBnZGF0LT5ub2RlX3N0YXJ0X3Bm biArIHBnZGF0LT5ub2RlX3NwYW5uZWRfcGFnZXM7CmRpZmYgLS1naXQgYS9t bS9tZW1jb250cm9sLmMgYi9tbS9tZW1jb250cm9sLmMKaW5kZXggNmY1YzBj NTE3YzQ5Li5mMjhlMjg2YTk4YzIgMTAwNjQ0Ci0tLSBhL21tL21lbWNvbnRy b2wuYworKysgYi9tbS9tZW1jb250cm9sLmMKQEAgLTEyMzcsOSArMTIzNyw5 IEBAIGludCBtZW1fY2dyb3VwX3NjYW5fdGFza3Moc3RydWN0IG1lbV9jZ3Jv dXAgKm1lbWNnLAogICovCiBzdHJ1Y3QgbHJ1dmVjICptZW1fY2dyb3VwX3Bh Z2VfbHJ1dmVjKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgcGdsaXN0X2Rh dGEgKnBnZGF0KQogewotCXN0cnVjdCBtZW1fY2dyb3VwX3Blcl9ub2RlICpt ejsKIAlzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2c7CiAJc3RydWN0IGxydXZl YyAqbHJ1dmVjOworCWludCBuaWQ7CiAKIAlpZiAobWVtX2Nncm91cF9kaXNh YmxlZCgpKSB7CiAJCWxydXZlYyA9ICZwZ2RhdC0+bHJ1dmVjOwpAQCAtMTI1 NCw4ICsxMjU0LDggQEAgc3RydWN0IGxydXZlYyAqbWVtX2Nncm91cF9wYWdl X2xydXZlYyhzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IHBnbGlzdF9kYXRh ICpwZ2QKIAlpZiAoIW1lbWNnKQogCQltZW1jZyA9IHJvb3RfbWVtX2Nncm91 cDsKIAotCW16ID0gbWVtX2Nncm91cF9wYWdlX25vZGVpbmZvKG1lbWNnLCBw YWdlKTsKLQlscnV2ZWMgPSAmbXotPmxydXZlYzsKKwluaWQgPSBwYWdlX3Rv X25pZChwYWdlKTsKKwlscnV2ZWMgPSAmbWVtY2ctPm5vZGVpbmZvW25pZF0t PmxydXZlYzsKIG91dDoKIAkvKgogCSAqIFNpbmNlIGEgbm9kZSBjYW4gYmUg b25saW5lZCBhZnRlciB0aGUgbWVtX2Nncm91cCB3YXMgY3JlYXRlZCwKQEAg LTIwOTAsOSArMjA5MCw5IEBAIHN0cnVjdCBtZW1fY2dyb3VwICpsb2NrX3Bh Z2VfbWVtY2coc3RydWN0IHBhZ2UgKnBhZ2UpCiAJaWYgKG1lbV9jZ3JvdXBf ZGlzYWJsZWQoKSkKIAkJcmV0dXJuIE5VTEw7CiBhZ2FpbjoKLQltZW1jZyA9 IHBhZ2UtPm1lbV9jZ3JvdXA7CisJbWVtY2cgPSBSRUFEX09OQ0UocGFnZS0+ bWVtX2Nncm91cCk7CiAJaWYgKHVubGlrZWx5KCFtZW1jZykpCi0JCXJldHVy biBOVUxMOworCQlyZXR1cm4gcm9vdF9tZW1fY2dyb3VwOwogCiAJaWYgKGF0 b21pY19yZWFkKCZtZW1jZy0+bW92aW5nX2FjY291bnQpIDw9IDApCiAJCXJl dHVybiBtZW1jZzsKQEAgLTI1NTMsNDEgKzI1NTMsMTIgQEAgc3RhdGljIHZv aWQgY2FuY2VsX2NoYXJnZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHVu c2lnbmVkIGludCBucl9wYWdlcykKIAljc3NfcHV0X21hbnkoJm1lbWNnLT5j c3MsIG5yX3BhZ2VzKTsKIH0KIAotc3RhdGljIHZvaWQgbG9ja19wYWdlX2xy dShzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50ICppc29sYXRlZCkKLXsKLQlwZ19k YXRhX3QgKnBnZGF0ID0gcGFnZV9wZ2RhdChwYWdlKTsKLQotCXNwaW5fbG9j a19pcnEoJnBnZGF0LT5scnVfbG9jayk7Ci0JaWYgKFBhZ2VMUlUocGFnZSkp IHsKLQkJc3RydWN0IGxydXZlYyAqbHJ1dmVjOwotCi0JCWxydXZlYyA9IG1l bV9jZ3JvdXBfcGFnZV9scnV2ZWMocGFnZSwgcGdkYXQpOwotCQlDbGVhclBh Z2VMUlUocGFnZSk7Ci0JCWRlbF9wYWdlX2Zyb21fbHJ1X2xpc3QocGFnZSwg bHJ1dmVjLCBwYWdlX2xydShwYWdlKSk7Ci0JCSppc29sYXRlZCA9IDE7Ci0J fSBlbHNlCi0JCSppc29sYXRlZCA9IDA7Ci19Ci0KLXN0YXRpYyB2b2lkIHVu bG9ja19wYWdlX2xydShzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IGlzb2xhdGVk KQotewotCXBnX2RhdGFfdCAqcGdkYXQgPSBwYWdlX3BnZGF0KHBhZ2UpOwot Ci0JaWYgKGlzb2xhdGVkKSB7Ci0JCXN0cnVjdCBscnV2ZWMgKmxydXZlYzsK LQotCQlscnV2ZWMgPSBtZW1fY2dyb3VwX3BhZ2VfbHJ1dmVjKHBhZ2UsIHBn ZGF0KTsKLQkJVk1fQlVHX09OX1BBR0UoUGFnZUxSVShwYWdlKSwgcGFnZSk7 Ci0JCVNldFBhZ2VMUlUocGFnZSk7Ci0JCWFkZF9wYWdlX3RvX2xydV9saXN0 KHBhZ2UsIGxydXZlYywgcGFnZV9scnUocGFnZSkpOwotCX0KLQlzcGluX3Vu bG9ja19pcnEoJnBnZGF0LT5scnVfbG9jayk7Ci19Ci0KIHN0YXRpYyB2b2lk IGNvbW1pdF9jaGFyZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBtZW1f Y2dyb3VwICptZW1jZywKIAkJCSAgYm9vbCBscnVjYXJlKQogewotCWludCBp c29sYXRlZDsKKwlwZ19kYXRhX3QgKnBnZGF0OworCXN0cnVjdCBscnV2ZWMg KmxydXZlYzsKKwlib29sIGlzb2xhdGVkID0gZmFsc2U7CiAKIAlWTV9CVUdf T05fUEFHRShwYWdlLT5tZW1fY2dyb3VwLCBwYWdlKTsKIApAQCAtMjU5NSw4 ICsyNTY2LDE2IEBAIHN0YXRpYyB2b2lkIGNvbW1pdF9jaGFyZ2Uoc3RydWN0 IHBhZ2UgKnBhZ2UsIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywKIAkgKiBJ biBzb21lIGNhc2VzLCBTd2FwQ2FjaGUgYW5kIEZVU0Uoc3BsaWNlX2J1Zi0+ cmFkaXh0cmVlKSwgdGhlIHBhZ2UKIAkgKiBtYXkgYWxyZWFkeSBiZSBvbiBz b21lIG90aGVyIG1lbV9jZ3JvdXAncyBMUlUuICBUYWtlIGNhcmUgb2YgaXQu CiAJICovCi0JaWYgKGxydWNhcmUpCi0JCWxvY2tfcGFnZV9scnUocGFnZSwg Jmlzb2xhdGVkKTsKKwlpZiAobHJ1Y2FyZSkgeworCQlwZ2RhdCA9IHBhZ2Vf cGdkYXQocGFnZSk7CisJCXNwaW5fbG9ja19pcnEoJnBnZGF0LT5scnVfbG9j ayk7CisJCWlmIChQYWdlTFJVKHBhZ2UpKSB7CisJCQlscnV2ZWMgPSBtZW1f Y2dyb3VwX3BhZ2VfbHJ1dmVjKHBhZ2UsIHBnZGF0KTsKKwkJCUNsZWFyUGFn ZUxSVShwYWdlKTsKKwkJCWRlbF9wYWdlX2Zyb21fbHJ1X2xpc3QocGFnZSwg bHJ1dmVjLCBwYWdlX2xydShwYWdlKSk7CisJCQlpc29sYXRlZCA9IHRydWU7 CisJCX0KKwl9CiAKIAkvKgogCSAqIE5vYm9keSBzaG91bGQgYmUgY2hhbmdp bmcgb3Igc2VyaW91c2x5IGxvb2tpbmcgYXQKQEAgLTI2MTQsOCArMjU5Mywx NSBAQCBzdGF0aWMgdm9pZCBjb21taXRfY2hhcmdlKHN0cnVjdCBwYWdlICpw YWdlLCBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csCiAJICovCiAJcGFnZS0+ bWVtX2Nncm91cCA9IG1lbWNnOwogCi0JaWYgKGxydWNhcmUpCi0JCXVubG9j a19wYWdlX2xydShwYWdlLCBpc29sYXRlZCk7CisJaWYgKGxydWNhcmUpIHsK KwkJaWYgKGlzb2xhdGVkKSB7CisJCQlscnV2ZWMgPSBtZW1fY2dyb3VwX3Bh Z2VfbHJ1dmVjKHBhZ2UsIHBnZGF0KTsKKwkJCVZNX0JVR19PTl9QQUdFKFBh Z2VMUlUocGFnZSksIHBhZ2UpOworCQkJU2V0UGFnZUxSVShwYWdlKTsKKwkJ CWFkZF9wYWdlX3RvX2xydV9saXN0KHBhZ2UsIGxydXZlYywgcGFnZV9scnUo cGFnZSkpOworCQl9CisJCXNwaW5fdW5sb2NrX2lycSgmcGdkYXQtPmxydV9s b2NrKTsKKwl9CiB9CiAKICNpZmRlZiBDT05GSUdfTUVNQ0dfS01FTQpkaWZm IC0tZ2l0IGEvbW0vcGFnZS13cml0ZWJhY2suYyBiL21tL3BhZ2Utd3JpdGVi YWNrLmMKaW5kZXggMTgwNGY2NGZmNDNjLi40YmJlNTc4NzllMDggMTAwNjQ0 Ci0tLSBhL21tL3BhZ2Utd3JpdGViYWNrLmMKKysrIGIvbW0vcGFnZS13cml0 ZWJhY2suYwpAQCAtMjcxNSw3ICsyNzE1LDcgQEAgaW50IHRlc3RfY2xlYXJf cGFnZV93cml0ZWJhY2soc3RydWN0IHBhZ2UgKnBhZ2UpCiAJaW50IHJldDsK IAogCW1lbWNnID0gbG9ja19wYWdlX21lbWNnKHBhZ2UpOwotCWxydXZlYyA9 IG1lbV9jZ3JvdXBfcGFnZV9scnV2ZWMocGFnZSwgcGFnZV9wZ2RhdChwYWdl KSk7CisJbHJ1dmVjID0gbWVtX2Nncm91cF9scnV2ZWMocGFnZV9wZ2RhdChw YWdlKSwgbWVtY2cpOwogCWlmIChtYXBwaW5nICYmIG1hcHBpbmdfdXNlX3dy aXRlYmFja190YWdzKG1hcHBpbmcpKSB7CiAJCXN0cnVjdCBpbm9kZSAqaW5v ZGUgPSBtYXBwaW5nLT5ob3N0OwogCQlzdHJ1Y3QgYmFja2luZ19kZXZfaW5m byAqYmRpID0gaW5vZGVfdG9fYmRpKGlub2RlKTsKZGlmZiAtLWdpdCBhL21t L3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuYwppbmRleCAyNzJjNmRl MWJmNGUuLjEwZjZlNjAwNDBlMSAxMDA2NDQKLS0tIGEvbW0vcGFnZV9hbGxv Yy5jCisrKyBiL21tL3BhZ2VfYWxsb2MuYwpAQCAtNjY3OCw3ICs2Njc4LDcg QEAgc3RhdGljIHZvaWQgX19tZW1pbml0IHBnZGF0X2luaXRfaW50ZXJuYWxz KHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpCiAKIAlwZ2RhdF9wYWdlX2V4 dF9pbml0KHBnZGF0KTsKIAlzcGluX2xvY2tfaW5pdCgmcGdkYXQtPmxydV9s b2NrKTsKLQlscnV2ZWNfaW5pdChub2RlX2xydXZlYyhwZ2RhdCkpOworCWxy dXZlY19pbml0KCZwZ2RhdC0+bHJ1dmVjKTsKIH0KIAogc3RhdGljIHZvaWQg X19tZW1pbml0IHpvbmVfaW5pdF9pbnRlcm5hbHMoc3RydWN0IHpvbmUgKnpv bmUsIGVudW0gem9uZV90eXBlIGlkeCwgaW50IG5pZCwKLS0gCjIuMjMuMC4x ODcuZzE3ZjViNzU1NmMtZ29vZwoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAMDAwNi1tbS1tZW1jZy1pbnRyb2R1Y2UtcmVsb2NrX3BhZ2VfbHJ1dmVj LnBhdGNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAADAwMDA2NDQAMDMxNTA2NgAwMjU3NTIzADAwMDAwMDc2 NTIxADEzNTMwMDc2NzQ1ADAyMjQ3NQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGh1 Z2hkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHJpbWFyeWdyb3VwAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAABGcm9tIDRmNzEwNDNhNjFjOTI0ZTViZjcx ZTM1NjhlMzA0NDA0ZDIzMWZlOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IEh1Z2ggRGlja2lucyA8aHVnaGRAZ29vZ2xlLmNvbT4KRGF0ZTog VHVlLCAxMiBKdW4gMjAxMiAxNTo0Njo1OCAtMDcwMApTdWJqZWN0OiBbUEFU Q0ggNi85XSBtbS9tZW1jZzogaW50cm9kdWNlIHJlbG9ja19wYWdlX2xydXZl YygpCgpSZXBsYWNlIG1lbV9jZ3JvdXBfcGFnZV9scnV2ZWMoKQphbmQgbmVh cmJ5IHNwaW5fbG9ja19pcnEgb3Igc3Bpbl9sb2NrX2lycXNhdmUgb2YgcGdk YXQtPmxydV9sb2NrOgppbiBtb3N0IHBsYWNlcyBieSBsb2NrX3BhZ2VfbHJ1 dmVjKCkgb3IgcmVsb2NrX3BhZ2VfbHJ1dmVjKCkgKHRoZQpmb3JtZXIgYmVp bmcgYSBzaW1wbGUgY2FzZSBvZiB0aGUgbGF0dGVyKSBvciBqdXN0IGJ5IGxv Y2tfbHJ1dmVjKCkuCnVubG9ja19scnV2ZWMoKSBkb2VzIHRoZSBzcGluX3Vu bG9ja19pcnFyZXN0b3JlIGZvciB0aGVtIGFsbC4KCnJlbG9ja19wYWdlX2xy dXZlYygpIGlzIGJvcm4gZnJvbSB0aGF0ICJwYWdlcGdkYXQiIHBhdHRlcm4g aW4gc3dhcC5jCmFuZCB2bXNjYW4uYywgd2hlcmUgd2UgbG9vcCBvdmVyIGFu IGFycmF5IG9mIHBhZ2VzLCBzd2l0Y2hpbmcgbG9jawp3aGVuZXZlciB0aGUg cGdkYXQgY2hhbmdlczogYmVhcmluZyBpbiBtaW5kIHRoYXQgaWYgd2Ugd2Vy ZSB0byByZWZpbmUKdGhhdCBsb2NrIHRvIHBlci1tZW1jZyBwZXItbm9kZSwg dGhlbiB3ZSB3b3VsZCBoYXZlIHRvIHN3aXRjaCB3aGVuZXZlcgp0aGUgbWVt Y2cgY2hhbmdlcyB0b28uCgpyZWxvY2tfcGFnZV9scnV2ZWMocGFnZSwgJmxy dXZlYykgbG9jYXRlcyB0aGUgcmlnaHQgbHJ1dmVjIGZvciBwYWdlLAp1bmxv Y2tzIHRoZSBvbGQgbHJ1dmVjIGlmIGRpZmZlcmVudCAoYW5kIG5vdCBOVUxM KSwgbG9ja3MgdGhlIG5ldywKYW5kIHVwZGF0ZXMgbHJ1dmVjIG9uIHJldHVy bjogc28gdGhhdCB3ZSBzaGFsbCBoYXZlIGp1c3Qgb25lIHJvdXRpbmUKdG8g bG9jYXRlIGFuZCBsb2NrIHRoZSBscnV2ZWMsIHdoZXJlIG9yaWdpbmFsbHkg aXQgd2FzIHJlLWV2YWx1YXRlZAphdCBkaWZmZXJlbnQgc3RhZ2VzLiAgKEJ1 dCBJIGRvbid0IHlldCBrbm93IGhvdyB0byBzYXRpc2Z5IHNwYXJzZSgxKS4p CgpCdXQgcGFnZS0+bWVtX2Nncm91cCAoYW5kIGhlbmNlIGxydXZlYykgbWF5 IG9ubHkgYmUgc3RhYmxlIG9uY2Ugd2UgaGF2ZQp0aGUgbG9jazogc28sIGhh dmluZyBnb3QgaXQsIGNoZWNrIGlmIGl0J3Mgc3RpbGwgdGhlIG9uZSB3ZSB3 YW50LCBhbmQKcmV0cnkgaWYgbm90LiAgSXQgaXMgZm9yIHRoaXMgcmV0cnkg KHdoaWNoIGJlY29tZXMgbW9yZSBjcnVjaWFsIG9uY2UKbHJ1X2xvY2sgbW92 ZXMgZnJvbSBwZ2RhdCBpbnRvIGxydXZlYykgdGhhdCB3ZSByb3V0ZSBhbGwg cGFnZSBscnV2ZWMKbG9ja2luZyB0aHJvdWdoIHRoaXMgb25lIGZ1bmN0aW9u LgoKcmVsb2NrX3BhZ2VfbHJ1dmVjKCkgKGFuZCBpdHMgd3JhcHBlcnMpIGlz IGFjdHVhbGx5IGFuIF9pcnFzYXZlIG9wZXJhdGlvbjoKdGhlcmUgYXJlIGEg ZmV3IGNhc2VzIGluIHN3YXAuYyB3aGVyZSBpdCBtYXkgYmUgbmVlZGVkIGF0 IGludGVycnVwdCB0aW1lCih0byBmcmVlIG9yIHRvIHJvdGF0ZSBhIHBhZ2Ug b24gSS9PIGNvbXBsZXRpb24pLiAgSWRlYWxseSg/KSB3ZSB3b3VsZCB1c2UK c3RyYWlnaHRmb3J3YXJkIF9pcnEgZGlzYWJsaW5nIGVsc2V3aGVyZSwgYnV0 IHRoZSB2YXJpYW50cyBnZXQgY29uZnVzaW5nOgprZWVwIGl0IHNpbXBsZSBm b3Igbm93IHdpdGgganVzdCB0aGUgb25lIGlycXNhdmVyIGV2ZXJ5d2hlcmUu CgpQYXNzaW5nIGFuIGlycWZsYWdzIGFyZ3VtZW50L3BvaW50ZXIgZG93biBz ZXZlcmFsIGxldmVscyBsb29rcyBtZXNzeQp0b28sIGFuZCBJJ20gcmVsdWN0 YW50IHRvIGFkZCBhbnkgbW9yZSB0byB0aGUgcGFnZSByZWNsYWltIHN0YWNr OiBzbwpzYXZlIHRoZSBpcnFmbGFncyBhbG9uZ3NpZGUgdGhlIGxydV9sb2Nr IGFuZCByZXN0b3JlIHRoZW0gZnJvbSB0aGVyZS4KCkl0J3MgYSBsaXR0bGUg c2FkIG5vdyB0byBiZSBpbmNsdWRpbmcgbW0uaCBpbiBzd2FwLmggdG8gZ2V0 IHBhZ2VfcGdkYXQoKTsKYnV0IEkgdGhpbmsgdGhhdCBzd2FwLmggKGRlc3Bp dGUgaXRzIG5hbWU7IG9yIG1tem9uZS5oPykgaXMgdGhlIHJpZ2h0CnBsYWNl IGZvciB0aGVzZSBscnUgZnVuY3Rpb25zLCBhbmQgd2l0aG91dCB0aG9zZSBp bmxpbmVkLCB0aGUgb3B0aW1pemVyCmNhbm5vdCBkbyBhcyB3ZWxsIGluIHRo ZSAhQ09ORklHX01FTUNHIGNhc2UuCgpTaWduZWQtb2ZmLWJ5OiBIdWdoIERp Y2tpbnMgPGh1Z2hkQGdvb2dsZS5jb20+CkNjOiBKb2hhbm5lcyBXZWluZXIg PGhhbm5lc0BjbXB4Y2hnLm9yZz4KQ2M6IE1lbCBHb3JtYW4gPG1nb3JtYW5A dGVjaHNpbmd1bGFyaXR5Lm5ldD4KQ2M6IFZsYXN0aW1pbCBCYWJrYSA8dmJh YmthQHN1c2UuY3o+CkNjOiBZdSBaaGFvIDx5dXpoYW9AZ29vZ2xlLmNvbT4K Q2M6IEFsZXggU2hpIDxhbGV4LnNoaUBsaW51eC5hbGliYWJhLmNvbT4KLS0t CiBpbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaCB8ICA4IC0tLS0KIGluY2x1 ZGUvbGludXgvbW16b25lLmggICAgIHwgIDEgKwogaW5jbHVkZS9saW51eC9z d2FwLmggICAgICAgfCA1MSArKysrKysrKysrKysrKysrKysrKysrKysrCiBt bS9jb21wYWN0aW9uLmMgICAgICAgICAgICB8IDUyICsrKysrKysrKysrLS0t LS0tLS0tLS0tLS0KIG1tL2h1Z2VfbWVtb3J5LmMgICAgICAgICAgIHwgMTgg KysrKy0tLS0tCiBtbS9tZW1jb250cm9sLmMgICAgICAgICAgICB8IDc3ICsr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiBtbS9tbG9j ay5jICAgICAgICAgICAgICAgICB8IDMzICsrKysrKysrLS0tLS0tLS0KIG1t L3N3YXAuYyAgICAgICAgICAgICAgICAgIHwgNzcgKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIG1tL3Ztc2Nhbi5jICAgICAgICAg ICAgICAgIHwgNzAgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LQogOSBmaWxlcyBjaGFuZ2VkLCAyMDYgaW5zZXJ0aW9ucygrKSwgMTgxIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWVtY29u dHJvbC5oIGIvaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgKaW5kZXggNmIy M2E0MTgwZmRiLi5lZTcxZTkyNTE4NTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv bGludXgvbWVtY29udHJvbC5oCisrKyBiL2luY2x1ZGUvbGludXgvbWVtY29u dHJvbC5oCkBAIC0zOTIsOCArMzkyLDYgQEAgc3RhdGljIGlubGluZSBzdHJ1 Y3QgbHJ1dmVjICptZW1fY2dyb3VwX2xydXZlYyhzdHJ1Y3QgcGdsaXN0X2Rh dGEgKnBnZGF0LAogCXJldHVybiBscnV2ZWM7CiB9CiAKLXN0cnVjdCBscnV2 ZWMgKm1lbV9jZ3JvdXBfcGFnZV9scnV2ZWMoc3RydWN0IHBhZ2UgKiwgc3Ry dWN0IHBnbGlzdF9kYXRhICopOwotCiBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVt X2Nncm91cF9mcm9tX3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKIAog c3RydWN0IG1lbV9jZ3JvdXAgKmdldF9tZW1fY2dyb3VwX2Zyb21fbW0oc3Ry dWN0IG1tX3N0cnVjdCAqbW0pOwpAQCAtODYzLDEyICs4NjEsNiBAQCBzdGF0 aWMgaW5saW5lIHN0cnVjdCBscnV2ZWMgKm1lbV9jZ3JvdXBfbHJ1dmVjKHN0 cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsCiAJcmV0dXJuICZwZ2RhdC0+bHJ1 dmVjOwogfQogCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBscnV2ZWMgKm1lbV9j Z3JvdXBfcGFnZV9scnV2ZWMoc3RydWN0IHBhZ2UgKnBhZ2UsCi0JCQkJCQkg ICAgc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCkKLXsKLQlyZXR1cm4gJnBn ZGF0LT5scnV2ZWM7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBtbV9tYXRj aF9jZ3JvdXAoc3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCXN0cnVjdCBtZW1f Y2dyb3VwICptZW1jZykKIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv bW16b25lLmggYi9pbmNsdWRlL2xpbnV4L21tem9uZS5oCmluZGV4IDk3YmE0 Mjc2ZjM2NC4uNzhmOGZhODllMGU0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xp bnV4L21tem9uZS5oCisrKyBiL2luY2x1ZGUvbGludXgvbW16b25lLmgKQEAg LTc0NSw2ICs3NDUsNyBAQCB0eXBlZGVmIHN0cnVjdCBwZ2xpc3RfZGF0YSB7 CiAJLyogV3JpdGUtaW50ZW5zaXZlIGZpZWxkcyB1c2VkIGJ5IHBhZ2UgcmVj bGFpbSAqLwogCVpPTkVfUEFERElORyhfcGFkMV8pCiAJc3BpbmxvY2tfdAkJ bHJ1X2xvY2s7CisJdW5zaWduZWQgbG9uZwkJaXJxZmxhZ3M7CiAKICNpZmRl ZiBDT05GSUdfREVGRVJSRURfU1RSVUNUX1BBR0VfSU5JVAogCS8qCmRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L3N3YXAuaCBiL2luY2x1ZGUvbGludXgv c3dhcC5oCmluZGV4IDc1ZWRhZmFlNzc2MS4uNzAzOTMxMWMyNjhjIDEwMDY0 NAotLS0gYS9pbmNsdWRlL2xpbnV4L3N3YXAuaAorKysgYi9pbmNsdWRlL2xp bnV4L3N3YXAuaApAQCAtMTAsNiArMTAsNyBAQAogI2luY2x1ZGUgPGxpbnV4 L3NjaGVkLmg+CiAjaW5jbHVkZSA8bGludXgvbm9kZS5oPgogI2luY2x1ZGUg PGxpbnV4L2ZzLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4JCQkvKiBmb3Ig cGFnZV9wZ2RhdChwYWdlKSAqLwogI2luY2x1ZGUgPGxpbnV4L2F0b21pYy5o PgogI2luY2x1ZGUgPGxpbnV4L3BhZ2UtZmxhZ3MuaD4KICNpbmNsdWRlIDxh c20vcGFnZS5oPgpAQCAtMzQ2LDYgKzM0Nyw1NiBAQCBleHRlcm4gdm9pZCBz d2FwX3NldHVwKHZvaWQpOwogZXh0ZXJuIHZvaWQgbHJ1X2NhY2hlX2FkZF9h Y3RpdmVfb3JfdW5ldmljdGFibGUoc3RydWN0IHBhZ2UgKnBhZ2UsCiAJCQkJ CQlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CiAKK3N0YXRpYyBpbmxp bmUgc3BpbmxvY2tfdCAqbHJ1X2xvY2twdHIoc3RydWN0IGxydXZlYyAqbHJ1 dmVjKQoreworCXJldHVybiAmbHJ1dmVjX3BnZGF0KGxydXZlYyktPmxydV9s b2NrOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgbG9ja19scnV2ZWMoc3Ry dWN0IGxydXZlYyAqbHJ1dmVjKQoreworCXN0cnVjdCBwZ2xpc3RfZGF0YSAq cGdkYXQgPSBscnV2ZWNfcGdkYXQobHJ1dmVjKTsKKwl1bnNpZ25lZCBsb25n IGlycWZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnBnZGF0LT5scnVf bG9jaywgaXJxZmxhZ3MpOworCXBnZGF0LT5pcnFmbGFncyA9IGlycWZsYWdz OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgdW5sb2NrX2xydXZlYyhzdHJ1 Y3QgbHJ1dmVjICpscnV2ZWMpCit7CisJc3RydWN0IHBnbGlzdF9kYXRhICpw Z2RhdCA9IGxydXZlY19wZ2RhdChscnV2ZWMpOworCXVuc2lnbmVkIGxvbmcg aXJxZmxhZ3M7CisKKwlpcnFmbGFncyA9IHBnZGF0LT5pcnFmbGFnczsKKwlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZwZ2RhdC0+bHJ1X2xvY2ssIGlycWZs YWdzKTsKK30KKworI2lmZGVmIENPTkZJR19NRU1DRworLyogbGludXgvbW0v bWVtY29udHJvbC5jICovCitleHRlcm4gdm9pZCByZWxvY2tfcGFnZV9scnV2 ZWMoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBscnV2ZWMgKipscnV2cCk7 CisjZWxzZQorc3RhdGljIGlubGluZSB2b2lkIHJlbG9ja19wYWdlX2xydXZl YyhzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGxydXZlYyAqKmxydXZwKQor eworCXN0cnVjdCBscnV2ZWMgKmxydXZlYyA9ICZwYWdlX3BnZGF0KHBhZ2Up LT5scnV2ZWM7CisKKwlpZiAoKmxydXZwICYmICpscnV2cCAhPSBscnV2ZWMp IHsKKwkJdW5sb2NrX2xydXZlYygqbHJ1dnApOworCQkqbHJ1dnAgPSBOVUxM OworCX0KKwlpZiAoISpscnV2cCkgeworCQkqbHJ1dnAgPSBscnV2ZWM7CisJ CWxvY2tfbHJ1dmVjKGxydXZlYyk7CisJfQorfQorI2VuZGlmIC8qIENPTkZJ R19NRU1DRyAqLworCitzdGF0aWMgaW5saW5lIHN0cnVjdCBscnV2ZWMgKmxv Y2tfcGFnZV9scnV2ZWMoc3RydWN0IHBhZ2UgKnBhZ2UpCit7CisJc3RydWN0 IGxydXZlYyAqbHJ1dmVjID0gTlVMTDsKKworCXJlbG9ja19wYWdlX2xydXZl YyhwYWdlLCAmbHJ1dmVjKTsKKwlyZXR1cm4gbHJ1dmVjOworfQorCiAvKiBs aW51eC9tbS92bXNjYW4uYyAqLwogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgem9u ZV9yZWNsYWltYWJsZV9wYWdlcyhzdHJ1Y3Qgem9uZSAqem9uZSk7CiBleHRl cm4gdW5zaWduZWQgbG9uZyB0cnlfdG9fZnJlZV9wYWdlcyhzdHJ1Y3Qgem9u ZWxpc3QgKnpvbmVsaXN0LCBpbnQgb3JkZXIsCmRpZmYgLS1naXQgYS9tbS9j b21wYWN0aW9uLmMgYi9tbS9jb21wYWN0aW9uLmMKaW5kZXggZWY3ZjExN2Yw ODI1Li5hZTMxYTA5MzIxMTEgMTAwNjQ0Ci0tLSBhL21tL2NvbXBhY3Rpb24u YworKysgYi9tbS9jb21wYWN0aW9uLmMKQEAgLTc3NCw5ICs3NzQsNyBAQCBp c29sYXRlX21pZ3JhdGVwYWdlc19ibG9jayhzdHJ1Y3QgY29tcGFjdF9jb250 cm9sICpjYywgdW5zaWduZWQgbG9uZyBsb3dfcGZuLAogewogCXBnX2RhdGFf dCAqcGdkYXQgPSBjYy0+em9uZS0+em9uZV9wZ2RhdDsKIAl1bnNpZ25lZCBs b25nIG5yX3NjYW5uZWQgPSAwLCBucl9pc29sYXRlZCA9IDA7Ci0Jc3RydWN0 IGxydXZlYyAqbHJ1dmVjOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwot CWJvb2wgbG9ja2VkID0gZmFsc2U7CisJc3RydWN0IGxydXZlYyAqbHJ1dmVj ID0gTlVMTDsKIAlzdHJ1Y3QgcGFnZSAqcGFnZSA9IE5VTEwsICp2YWxpZF9w YWdlID0gTlVMTDsKIAl1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiA9IGxvd19w Zm47CiAJdW5zaWduZWQgbG9uZyBuZXh0X3NraXBfcGZuID0gMDsKQEAgLTgz OCw5ICs4MzYsOSBAQCBpc29sYXRlX21pZ3JhdGVwYWdlc19ibG9jayhzdHJ1 Y3QgY29tcGFjdF9jb250cm9sICpjYywgdW5zaWduZWQgbG9uZyBsb3dfcGZu LAogCQkgKiBhIGZhdGFsIHNpZ25hbCBpcyBwZW5kaW5nLgogCQkgKi8KIAkJ aWYgKCEobG93X3BmbiAlIFNXQVBfQ0xVU1RFUl9NQVgpKSB7Ci0JCQlpZiAo bG9ja2VkKSB7Ci0JCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGdkYXQt PmxydV9sb2NrLCBmbGFncyk7Ci0JCQkJbG9ja2VkID0gZmFsc2U7CisJCQlp ZiAobHJ1dmVjKSB7CisJCQkJdW5sb2NrX2xydXZlYyhscnV2ZWMpOworCQkJ CWxydXZlYyA9IE5VTEw7CiAJCQl9CiAJCQlpZiAoY29tcGFjdF9zaG91bGRf YWJvcnQoY2MpKSB7CiAJCQkJbG93X3BmbiA9IDA7CkBAIC05MTQsMTIgKzkx MiwxMCBAQCBpc29sYXRlX21pZ3JhdGVwYWdlc19ibG9jayhzdHJ1Y3QgY29t cGFjdF9jb250cm9sICpjYywgdW5zaWduZWQgbG9uZyBsb3dfcGZuLAogCQkJ ICovCiAJCQlpZiAodW5saWtlbHkoX19QYWdlTW92YWJsZShwYWdlKSkgJiYK IAkJCQkJIVBhZ2VJc29sYXRlZChwYWdlKSkgewotCQkJCWlmIChsb2NrZWQp IHsKLQkJCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGdkYXQtPmxydV9s b2NrLAotCQkJCQkJCQkJZmxhZ3MpOwotCQkJCQlsb2NrZWQgPSBmYWxzZTsK KwkJCQlpZiAobHJ1dmVjKSB7CisJCQkJCXVubG9ja19scnV2ZWMobHJ1dmVj KTsKKwkJCQkJbHJ1dmVjID0gTlVMTDsKIAkJCQl9Ci0KIAkJCQlpZiAoIWlz b2xhdGVfbW92YWJsZV9wYWdlKHBhZ2UsIGlzb2xfbW9kZSkpCiAJCQkJCWdv dG8gaXNvbGF0ZV9zdWNjZXNzOwogCQkJfQpAQCAtOTU5LDE4ICs5NTUsMTUg QEAgaXNvbGF0ZV9taWdyYXRlcGFnZXNfYmxvY2soc3RydWN0IGNvbXBhY3Rf Y29udHJvbCAqY2MsIHVuc2lnbmVkIGxvbmcgbG93X3BmbiwKIAkJaWYgKCFn ZXRfcGFnZV91bmxlc3NfemVybyhwYWdlKSkKIAkJCWdvdG8gaXNvbGF0ZV9m YWlsOwogCi0JCS8qIElmIHdlIGFscmVhZHkgaG9sZCB0aGUgbG9jaywgd2Ug Y2FuIHNraXAgc29tZSByZWNoZWNraW5nICovCi0JCWlmICghbG9ja2VkKSB7 Ci0JCQljb21wYWN0X2xvY2tfaXJxc2F2ZSgmcGdkYXQtPmxydV9sb2NrLCAm ZmxhZ3MsIGNjKTsKLQkJCWxvY2tlZCA9IHRydWU7CisJCS8qIFRlbXBvcmFy eSByZWdyZXNzaW9uIGZyb20gdHJ5bG9jaywgZml4ZWQgaW4gbGF0ZXIgcGF0 Y2ggKi8KKwkJcmVsb2NrX3BhZ2VfbHJ1dmVjKHBhZ2UsICZscnV2ZWMpOwog Ci0JCQkvKiBUcnkgZ2V0IGV4Y2x1c2l2ZSBhY2Nlc3MgdW5kZXIgbG9jayAq LwotCQkJaWYgKCFza2lwX3VwZGF0ZWQpIHsKLQkJCQlza2lwX3VwZGF0ZWQg PSB0cnVlOwotCQkJCWlmICh0ZXN0X2FuZF9zZXRfc2tpcChjYywgcGFnZSwg bG93X3BmbikpIHsKLQkJCQkJZ290X3BhZ2UgPSB0cnVlOwotCQkJCQlnb3Rv IGlzb2xhdGVfYWJvcnQ7Ci0JCQkJfQorCQkvKiBUcnkgZ2V0IGV4Y2x1c2l2 ZSBhY2Nlc3MgdW5kZXIgbG9jayAqLworCQlpZiAoIXNraXBfdXBkYXRlZCkg eworCQkJc2tpcF91cGRhdGVkID0gdHJ1ZTsKKwkJCWlmICh0ZXN0X2FuZF9z ZXRfc2tpcChjYywgcGFnZSwgbG93X3BmbikpIHsKKwkJCQlnb3RfcGFnZSA9 IHRydWU7CisJCQkJZ290byBpc29sYXRlX2Fib3J0OwogCQkJfQogCQl9CiAK QEAgLTEwMDUsNyArOTk4LDYgQEAgaXNvbGF0ZV9taWdyYXRlcGFnZXNfYmxv Y2soc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHVuc2lnbmVkIGxvbmcg bG93X3BmbiwKIAkJfQogCiAJCS8qIFBhZ2UgY2FuIG5vdyBiZSBzYWZlbHkg aXNvbGF0ZWQgKi8KLQkJbHJ1dmVjID0gbWVtX2Nncm91cF9wYWdlX2xydXZl YyhwYWdlLCBwZ2RhdCk7CiAJCUNsZWFyUGFnZUxSVShwYWdlKTsKIAkJZGVs X3BhZ2VfZnJvbV9scnVfbGlzdChwYWdlLCBscnV2ZWMsIHBhZ2VfbHJ1KHBh Z2UpKTsKIAkJaW5jX25vZGVfcGFnZV9zdGF0ZShwYWdlLApAQCAtMTAzMiw4 ICsxMDI0LDggQEAgaXNvbGF0ZV9taWdyYXRlcGFnZXNfYmxvY2soc3RydWN0 IGNvbXBhY3RfY29udHJvbCAqY2MsIHVuc2lnbmVkIGxvbmcgbG93X3BmbiwK IAogdW5sb2NrX2FuZF9wdXQ6CiAJCS8qIEF2b2lkIHBvdGVudGlhbCBkZWFk bG9jayBpbiBmcmVlaW5nIHBhZ2UgdW5kZXIgbHJ1X2xvY2sgKi8KLQkJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmcGdkYXQtPmxydV9sb2NrLCBmbGFncyk7 Ci0JCWxvY2tlZCA9IGZhbHNlOworCQl1bmxvY2tfbHJ1dmVjKGxydXZlYyk7 CisJCWxydXZlYyA9IE5VTEw7CiAJCXB1dF9wYWdlKHBhZ2UpOwogCiBpc29s YXRlX2ZhaWw6CkBAIC0xMDQ2LDkgKzEwMzgsOSBAQCBpc29sYXRlX21pZ3Jh dGVwYWdlc19ibG9jayhzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgdW5z aWduZWQgbG9uZyBsb3dfcGZuLAogCQkgKiBwYWdlIGFueXdheS4KIAkJICov CiAJCWlmIChucl9pc29sYXRlZCkgewotCQkJaWYgKGxvY2tlZCkgewotCQkJ CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBnZGF0LT5scnVfbG9jaywgZmxh Z3MpOwotCQkJCWxvY2tlZCA9IGZhbHNlOworCQkJaWYgKGxydXZlYykgewor CQkJCXVubG9ja19scnV2ZWMobHJ1dmVjKTsKKwkJCQlscnV2ZWMgPSBOVUxM OwogCQkJfQogCQkJcHV0YmFja19tb3ZhYmxlX3BhZ2VzKCZjYy0+bWlncmF0 ZXBhZ2VzKTsKIAkJCWNjLT5ucl9taWdyYXRlcGFnZXMgPSAwOwpAQCAtMTA3 Myw4ICsxMDY1LDggQEAgaXNvbGF0ZV9taWdyYXRlcGFnZXNfYmxvY2soc3Ry dWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHVuc2lnbmVkIGxvbmcgbG93X3Bm biwKIAkJbG93X3BmbiA9IGVuZF9wZm47CiAKIGlzb2xhdGVfYWJvcnQ6Ci0J aWYgKGxvY2tlZCkgewotCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwZ2Rh dC0+bHJ1X2xvY2ssIGZsYWdzKTsKKwlpZiAobHJ1dmVjKSB7CisJCXVubG9j a19scnV2ZWMobHJ1dmVjKTsKIAkJaWYgKGdvdF9wYWdlKQogCQkJcHV0X3Bh Z2UocGFnZSk7CiAJfQpkaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBi L21tL2h1Z2VfbWVtb3J5LmMKaW5kZXggNzM4MDY1Zjc2NWFiLi4zYzBmZWQz Nzg3MWMgMTAwNjQ0Ci0tLSBhL21tL2h1Z2VfbWVtb3J5LmMKKysrIGIvbW0v aHVnZV9tZW1vcnkuYwpAQCAtMjQ5MCwxNiArMjQ5MCwxMiBAQCBzdGF0aWMg dm9pZCBfX3NwbGl0X2h1Z2VfcGFnZV90YWlsKHN0cnVjdCBwYWdlICpoZWFk LCBpbnQgdGFpbCwKIAlscnVfYWRkX3BhZ2VfdGFpbChoZWFkLCBwYWdlX3Rh aWwsIGxydXZlYywgbGlzdCk7CiB9CiAKLXN0YXRpYyB2b2lkIF9fc3BsaXRf aHVnZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9oZWFk ICpsaXN0LAotCQlwZ29mZl90IGVuZCwgdW5zaWduZWQgbG9uZyBmbGFncykK K3N0YXRpYyB2b2lkIF9fc3BsaXRfaHVnZV9wYWdlKHN0cnVjdCBwYWdlICpw YWdlLCBwZ29mZl90IGVuZCwKKwkJc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBz dHJ1Y3QgbGlzdF9oZWFkICpsaXN0KQogewogCXN0cnVjdCBwYWdlICpoZWFk ID0gY29tcG91bmRfaGVhZChwYWdlKTsKLQlwZ19kYXRhX3QgKnBnZGF0ID0g cGFnZV9wZ2RhdChoZWFkKTsKLQlzdHJ1Y3QgbHJ1dmVjICpscnV2ZWM7CiAJ aW50IGk7CiAKLQlscnV2ZWMgPSBtZW1fY2dyb3VwX3BhZ2VfbHJ1dmVjKGhl YWQsIHBnZGF0KTsKLQogCS8qIGNvbXBsZXRlIG1lbWNnIHdvcmtzIGJlZm9y ZSBhZGQgcGFnZXMgdG8gTFJVICovCiAJbWVtX2Nncm91cF9zcGxpdF9odWdl X2ZpeHVwKGhlYWQpOwogCkBAIC0yNTI5LDcgKzI1MjUsNyBAQCBzdGF0aWMg dm9pZCBfX3NwbGl0X2h1Z2VfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgc3Ry dWN0IGxpc3RfaGVhZCAqbGlzdCwKIAkJeGFfdW5sb2NrKCZoZWFkLT5tYXBw aW5nLT5pX3BhZ2VzKTsKIAl9CiAKLQlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZwZ2RhdC0+bHJ1X2xvY2ssIGZsYWdzKTsKKwl1bmxvY2tfbHJ1dmVjKGxy dXZlYyk7CiAKIAlyZW1hcF9wYWdlKGhlYWQpOwogCkBAIC0yNjcxLDkgKzI2 NjcsOSBAQCBpbnQgc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3Qoc3RydWN0IHBh Z2UgKnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpCiAJc3RydWN0IHBn bGlzdF9kYXRhICpwZ2RhdGEgPSBOT0RFX0RBVEEocGFnZV90b19uaWQoaGVh ZCkpOwogCXN0cnVjdCBhbm9uX3ZtYSAqYW5vbl92bWEgPSBOVUxMOwogCXN0 cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gTlVMTDsKKwlzdHJ1Y3Qg bHJ1dmVjICpscnV2ZWM7CiAJaW50IGNvdW50LCBtYXBjb3VudCwgZXh0cmFf cGlucywgcmV0OwogCWJvb2wgbWxvY2tlZDsKLQl1bnNpZ25lZCBsb25nIGZs YWdzOwogCXBnb2ZmX3QgZW5kOwogCiAJVk1fQlVHX09OX1BBR0UoaXNfaHVn ZV96ZXJvX3BhZ2UocGFnZSksIHBhZ2UpOwpAQCAtMjc0MCw3ICsyNzM2LDcg QEAgaW50IHNwbGl0X2h1Z2VfcGFnZV90b19saXN0KHN0cnVjdCBwYWdlICpw YWdlLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KQogCQlscnVfYWRkX2RyYWlu KCk7CiAKIAkvKiBwcmV2ZW50IFBhZ2VMUlUgdG8gZ28gYXdheSBmcm9tIHVu ZGVyIHVzLCBhbmQgZnJlZXplIGxydSBzdGF0cyAqLwotCXNwaW5fbG9ja19p cnFzYXZlKCZwZ2RhdGEtPmxydV9sb2NrLCBmbGFncyk7CisJbHJ1dmVjID0g bG9ja19wYWdlX2xydXZlYyhoZWFkKTsKIAogCWlmIChtYXBwaW5nKSB7CiAJ CVhBX1NUQVRFKHhhcywgJm1hcHBpbmctPmlfcGFnZXMsIHBhZ2VfaW5kZXgo aGVhZCkpOwpAQCAtMjc2Niw3ICsyNzYyLDcgQEAgaW50IHNwbGl0X2h1Z2Vf cGFnZV90b19saXN0KHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbGlzdF9o ZWFkICpsaXN0KQogCQlpZiAobWFwcGluZykKIAkJCV9fZGVjX25vZGVfcGFn ZV9zdGF0ZShwYWdlLCBOUl9TSE1FTV9USFBTKTsKIAkJc3Bpbl91bmxvY2so JnBnZGF0YS0+c3BsaXRfcXVldWVfbG9jayk7Ci0JCV9fc3BsaXRfaHVnZV9w YWdlKHBhZ2UsIGxpc3QsIGVuZCwgZmxhZ3MpOworCQlfX3NwbGl0X2h1Z2Vf cGFnZShwYWdlLCBlbmQsIGxydXZlYywgbGlzdCk7CiAJCWlmIChQYWdlU3dh cENhY2hlKGhlYWQpKSB7CiAJCQlzd3BfZW50cnlfdCBlbnRyeSA9IHsgLnZh bCA9IHBhZ2VfcHJpdmF0ZShoZWFkKSB9OwogCkBAIC0yNzg1LDcgKzI3ODEs NyBAQCBpbnQgc3BsaXRfaHVnZV9wYWdlX3RvX2xpc3Qoc3RydWN0IHBhZ2Ug KnBhZ2UsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpCiAJCXNwaW5fdW5sb2Nr KCZwZ2RhdGEtPnNwbGl0X3F1ZXVlX2xvY2spOwogZmFpbDoJCWlmIChtYXBw aW5nKQogCQkJeGFfdW5sb2NrKCZtYXBwaW5nLT5pX3BhZ2VzKTsKLQkJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmcGdkYXRhLT5scnVfbG9jaywgZmxhZ3Mp OworCQl1bmxvY2tfbHJ1dmVjKGxydXZlYyk7CiAJCXJlbWFwX3BhZ2UoaGVh ZCk7CiAJCXJldCA9IC1FQlVTWTsKIAl9CmRpZmYgLS1naXQgYS9tbS9tZW1j b250cm9sLmMgYi9tbS9tZW1jb250cm9sLmMKaW5kZXggZjI4ZTI4NmE5OGMy Li45MGE3ZjYwZjc1ZjggMTAwNjQ0Ci0tLSBhL21tL21lbWNvbnRyb2wuYwor KysgYi9tbS9tZW1jb250cm9sLmMKQEAgLTEyMjcsNDQgKzEyMjcsNjQgQEAg aW50IG1lbV9jZ3JvdXBfc2Nhbl90YXNrcyhzdHJ1Y3QgbWVtX2Nncm91cCAq bWVtY2csCiB9CiAKIC8qKgotICogbWVtX2Nncm91cF9wYWdlX2xydXZlYyAt IHJldHVybiBscnV2ZWMgZm9yIGlzb2xhdGluZy9wdXR0aW5nIGFuIExSVSBw YWdlCisgKiByZWxvY2tfcGFnZV9scnV2ZWMgLSBsb2NrIGFuZCB1cGRhdGUg bHJ1dmVjIGZvciB0aGlzIHBhZ2UsIHVubG9ja2luZyBwcmV2aW91cwogICog QHBhZ2U6IHRoZSBwYWdlCi0gKiBAcGdkYXQ6IHBnZGF0IG9mIHRoZSBwYWdl Ci0gKgotICogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHNhZmUgd2hlbiBmb2xs b3dpbmcgdGhlIExSVSBwYWdlIGlzb2xhdGlvbgotICogYW5kIHB1dGJhY2sg cHJvdG9jb2w6IHRoZSBMUlUgbG9jayBtdXN0IGJlIGhlbGQsIGFuZCB0aGUg cGFnZSBtdXN0Ci0gKiBlaXRoZXIgYmUgUGFnZUxSVSgpIG9yIHRoZSBjYWxs ZXIgbXVzdCBoYXZlIGlzb2xhdGVkL2FsbG9jYXRlZCBpdC4KKyAqIEBscnV2 cDogcG9pbnRlciB0byB3aGVyZSB0byBvdXRwdXQgbHJ1dmVjOyB1bmxvY2sg aW5wdXQgbHJ1dmVjIGlmIG5vbi1OVUxMCiAgKi8KLXN0cnVjdCBscnV2ZWMg Km1lbV9jZ3JvdXBfcGFnZV9scnV2ZWMoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0 cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpCit2b2lkIHJlbG9ja19wYWdlX2xy dXZlYyhzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGxydXZlYyAqKmxydXZw KQogewotCXN0cnVjdCBtZW1fY2dyb3VwICptZW1jZzsKKwlzdHJ1Y3QgbWVt X2Nncm91cCAqb3JpZ19tZW1jZywgKm1lbWNnOwogCXN0cnVjdCBscnV2ZWMg KmxydXZlYzsKLQlpbnQgbmlkOwotCi0JaWYgKG1lbV9jZ3JvdXBfZGlzYWJs ZWQoKSkgewotCQlscnV2ZWMgPSAmcGdkYXQtPmxydXZlYzsKLQkJZ290byBv dXQ7Ci0JfQorCWludCBuaWQgPSBwYWdlX3RvX25pZChwYWdlKTsKKwlzdHJ1 Y3QgcGdsaXN0X2RhdGEgKnBnZGF0ID0gTk9ERV9EQVRBKG5pZCk7CiAKLQlt ZW1jZyA9IHBhZ2UtPm1lbV9jZ3JvdXA7CiAJLyoKLQkgKiBTd2FwY2FjaGUg cmVhZGFoZWFkIHBhZ2VzIGFyZSBhZGRlZCB0byB0aGUgTFJVIC0gYW5kCi0J ICogcG9zc2libHkgbWlncmF0ZWQgLSBiZWZvcmUgdGhleSBhcmUgY2hhcmdl ZC4KKwkgKiBJbWFnaW5lIGJlaW5nIHByZWVtcHRlZCBmb3IgYSBsb25nIHRp bWU6IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQKKwkgKiB0aGUgc3RydWN0 dXJlIGF0IHBhZ2UtPm1lbV9jZ3JvdXAsIGFuZCBzdHJ1Y3R1cmVzIGl0IGxp bmtzIHRvLCBjYW5ub3QKKwkgKiBiZSBmcmVlZCB3aGlsZSB3ZSBsb2NhdGUg YW5kIGFjcXVpcmUgaXRzIGxydXZlYyBsb2NrLiAgY2dyb3VwJ3MgY3NzCisJ ICogZGVzdHJ1Y3Rpb24gd2FpdHMgUkNVIGdyYWNlIHBlcmlvZCBiZWZvcmUg Y3NzX2ZyZWUsIG1ha2luZyB0aGlzIHNhZmUuCiAJICovCi0JaWYgKCFtZW1j ZykKLQkJbWVtY2cgPSByb290X21lbV9jZ3JvdXA7CisJcmN1X3JlYWRfbG9j aygpOworYWdhaW46CisJb3JpZ19tZW1jZyA9IG1lbWNnID0gUkVBRF9PTkNF KHBhZ2UtPm1lbV9jZ3JvdXApOworCisJaWYgKGxpa2VseSghbWVtX2Nncm91 cF9kaXNhYmxlZCgpKSkgeworCQkvKgorCQkgKiBTd2FwY2FjaGUgcmVhZGFo ZWFkIHBhZ2VzIGFyZSBhZGRlZCB0byB0aGUgTFJVIC0KKwkJICogYW5kIHBv c3NpYmx5IG1pZ3JhdGVkIC0gYmVmb3JlIHRoZXkgYXJlIGNoYXJnZWQuCisJ CSAqLworCQlpZiAoIW1lbWNnKQorCQkJbWVtY2cgPSByb290X21lbV9jZ3Jv dXA7CisJCWxydXZlYyA9ICZtZW1jZy0+bm9kZWluZm9bbmlkXS0+bHJ1dmVj OworCX0gZWxzZQorCQlscnV2ZWMgPSAmcGdkYXQtPmxydXZlYzsKIAotCW5p ZCA9IHBhZ2VfdG9fbmlkKHBhZ2UpOwotCWxydXZlYyA9ICZtZW1jZy0+bm9k ZWluZm9bbmlkXS0+bHJ1dmVjOwotb3V0OgogCS8qCiAJICogU2luY2UgYSBu b2RlIGNhbiBiZSBvbmxpbmVkIGFmdGVyIHRoZSBtZW1fY2dyb3VwIHdhcyBj cmVhdGVkLAotCSAqIHdlIGhhdmUgdG8gYmUgcHJlcGFyZWQgdG8gaW5pdGlh bGl6ZSBscnV2ZWMtPnpvbmUgaGVyZTsKKwkgKiB3ZSBoYXZlIHRvIGJlIHBy ZXBhcmVkIHRvIGluaXRpYWxpemUgbHJ1dmVjLT5wZ2RhdCBoZXJlOwogCSAq IGFuZCBpZiBvZmZsaW5lZCB0aGVuIHJlb25saW5lZCwgd2UgbmVlZCB0byBy ZWluaXRpYWxpemUgaXQuCiAJICovCiAJaWYgKHVubGlrZWx5KGxydXZlYy0+ cGdkYXQgIT0gcGdkYXQpKQogCQlscnV2ZWMtPnBnZGF0ID0gcGdkYXQ7Ci0J cmV0dXJuIGxydXZlYzsKKworCS8qCisJICogRm9yIHRoZSBtb21lbnQsIHNp bXBseSBsb2NrIGJ5IHBnZGF0IGp1c3QgYXMgYmVmb3JlLgorCSAqLworCWlm ICgqbHJ1dnAgJiYgKCpscnV2cCktPnBnZGF0ICE9IGxydXZlYy0+cGdkYXQp IHsKKwkJdW5sb2NrX2xydXZlYygqbHJ1dnApOworCQkqbHJ1dnAgPSBOVUxM OworCX0KKwlpZiAoISpscnV2cCkKKwkJbG9ja19scnV2ZWMobHJ1dmVjKTsK KwkqbHJ1dnAgPSBscnV2ZWM7CisKKwkvKgorCSAqIEJ1dCBwYWdlLT5tZW1f Y2dyb3VwIG1heSBoYXZlIGNoYW5nZWQgc2luY2Ugd2UgbG9va2VkLi4uCisJ ICovCisJaWYgKHVubGlrZWx5KFJFQURfT05DRShwYWdlLT5tZW1fY2dyb3Vw KSAhPSBvcmlnX21lbWNnKSkKKwkJZ290byBhZ2FpbjsKKworCXJjdV9yZWFk X3VubG9jaygpOwogfQogCiAvKioKQEAgLTI1NTYsNyArMjU3Niw2IEBAIHN0 YXRpYyB2b2lkIGNhbmNlbF9jaGFyZ2Uoc3RydWN0IG1lbV9jZ3JvdXAgKm1l bWNnLCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMpCiBzdGF0aWMgdm9pZCBjb21t aXRfY2hhcmdlKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbWVtX2Nncm91 cCAqbWVtY2csCiAJCQkgIGJvb2wgbHJ1Y2FyZSkKIHsKLQlwZ19kYXRhX3Qg KnBnZGF0OwogCXN0cnVjdCBscnV2ZWMgKmxydXZlYzsKIAlib29sIGlzb2xh dGVkID0gZmFsc2U7CiAKQEAgLTI1NjcsMTAgKzI1ODYsOCBAQCBzdGF0aWMg dm9pZCBjb21taXRfY2hhcmdlKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3Qg bWVtX2Nncm91cCAqbWVtY2csCiAJICogbWF5IGFscmVhZHkgYmUgb24gc29t ZSBvdGhlciBtZW1fY2dyb3VwJ3MgTFJVLiAgVGFrZSBjYXJlIG9mIGl0Lgog CSAqLwogCWlmIChscnVjYXJlKSB7Ci0JCXBnZGF0ID0gcGFnZV9wZ2RhdChw YWdlKTsKLQkJc3Bpbl9sb2NrX2lycSgmcGdkYXQtPmxydV9sb2NrKTsKKwkJ bHJ1dmVjID0gbG9ja19wYWdlX2xydXZlYyhwYWdlKTsKIAkJaWYgKFBhZ2VM UlUocGFnZSkpIHsKLQkJCWxydXZlYyA9IG1lbV9jZ3JvdXBfcGFnZV9scnV2 ZWMocGFnZSwgcGdkYXQpOwogCQkJQ2xlYXJQYWdlTFJVKHBhZ2UpOwogCQkJ ZGVsX3BhZ2VfZnJvbV9scnVfbGlzdChwYWdlLCBscnV2ZWMsIHBhZ2VfbHJ1 KHBhZ2UpKTsKIAkJCWlzb2xhdGVkID0gdHJ1ZTsKQEAgLTI1OTUsMTIgKzI2 MTIsMTIgQEAgc3RhdGljIHZvaWQgY29tbWl0X2NoYXJnZShzdHJ1Y3QgcGFn ZSAqcGFnZSwgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLAogCiAJaWYgKGxy dWNhcmUpIHsKIAkJaWYgKGlzb2xhdGVkKSB7Ci0JCQlscnV2ZWMgPSBtZW1f Y2dyb3VwX3BhZ2VfbHJ1dmVjKHBhZ2UsIHBnZGF0KTsKKwkJCXJlbG9ja19w YWdlX2xydXZlYyhwYWdlLCAmbHJ1dmVjKTsKIAkJCVZNX0JVR19PTl9QQUdF KFBhZ2VMUlUocGFnZSksIHBhZ2UpOwogCQkJU2V0UGFnZUxSVShwYWdlKTsK IAkJCWFkZF9wYWdlX3RvX2xydV9saXN0KHBhZ2UsIGxydXZlYywgcGFnZV9s cnUocGFnZSkpOwogCQl9Ci0JCXNwaW5fdW5sb2NrX2lycSgmcGdkYXQtPmxy dV9sb2NrKTsKKwkJdW5sb2NrX2xydXZlYyhscnV2ZWMpOwogCX0KIH0KIApk aWZmIC0tZ2l0IGEvbW0vbWxvY2suYyBiL21tL21sb2NrLmMKaW5kZXggYTkw MDk5ZGE0ZmI0Li5jYjM3MmU5MGUyODIgMTAwNjQ0Ci0tLSBhL21tL21sb2Nr LmMKKysrIGIvbW0vbWxvY2suYwpAQCAtMTAzLDE3ICsxMDMsMTIgQEAgdm9p ZCBtbG9ja192bWFfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKIH0KIAogLyoK LSAqIElzb2xhdGUgYSBwYWdlIGZyb20gTFJVIHdpdGggb3B0aW9uYWwgZ2V0 X3BhZ2UoKSBwaW4uCisgKiBJc29sYXRlIGEgcGFnZSBmcm9tIExSVS4KICAq IEFzc3VtZXMgbHJ1X2xvY2sgYWxyZWFkeSBoZWxkIGFuZCBwYWdlIGFscmVh ZHkgcGlubmVkLgogICovCi1zdGF0aWMgYm9vbCBfX211bmxvY2tfaXNvbGF0 ZV9scnVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgYm9vbCBnZXRwYWdlKQor c3RhdGljIGJvb2wgX19tdW5sb2NrX2lzb2xhdGVfbHJ1X3BhZ2Uoc3RydWN0 IHBhZ2UgKnBhZ2UsIHN0cnVjdCBscnV2ZWMgKmxydXZlYykKIHsKIAlpZiAo UGFnZUxSVShwYWdlKSkgewotCQlzdHJ1Y3QgbHJ1dmVjICpscnV2ZWM7Ci0K LQkJbHJ1dmVjID0gbWVtX2Nncm91cF9wYWdlX2xydXZlYyhwYWdlLCBwYWdl X3BnZGF0KHBhZ2UpKTsKLQkJaWYgKGdldHBhZ2UpCi0JCQlnZXRfcGFnZShw YWdlKTsKIAkJQ2xlYXJQYWdlTFJVKHBhZ2UpOwogCQlkZWxfcGFnZV9mcm9t X2xydV9saXN0KHBhZ2UsIGxydXZlYywgcGFnZV9scnUocGFnZSkpOwogCQly ZXR1cm4gdHJ1ZTsKQEAgLTE4Miw3ICsxNzcsNyBAQCBzdGF0aWMgdm9pZCBf X211bmxvY2tfaXNvbGF0aW9uX2ZhaWxlZChzdHJ1Y3QgcGFnZSAqcGFnZSkK IHVuc2lnbmVkIGludCBtdW5sb2NrX3ZtYV9wYWdlKHN0cnVjdCBwYWdlICpw YWdlKQogewogCWludCBucl9wYWdlczsKLQlwZ19kYXRhX3QgKnBnZGF0ID0g cGFnZV9wZ2RhdChwYWdlKTsKKwlzdHJ1Y3QgbHJ1dmVjICpscnV2ZWM7CiAK IAkvKiBGb3IgdHJ5X3RvX211bmxvY2soKSBhbmQgdG8gc2VyaWFsaXplIHdp dGggcGFnZSBtaWdyYXRpb24gKi8KIAlCVUdfT04oIVBhZ2VMb2NrZWQocGFn ZSkpOwpAQCAtMTk0LDcgKzE4OSw3IEBAIHVuc2lnbmVkIGludCBtdW5sb2Nr X3ZtYV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlKQogCSAqIG1pZ2h0IG90aGVy d2lzZSBjb3B5IFBhZ2VNbG9ja2VkIHRvIHBhcnQgb2YgdGhlIHRhaWwgcGFn ZXMgYmVmb3JlCiAJICogd2UgY2xlYXIgaXQgaW4gdGhlIGhlYWQgcGFnZS4g SXQgYWxzbyBzdGFiaWxpemVzIGhwYWdlX25yX3BhZ2VzKCkuCiAJICovCi0J c3Bpbl9sb2NrX2lycSgmcGdkYXQtPmxydV9sb2NrKTsKKwlscnV2ZWMgPSBs b2NrX3BhZ2VfbHJ1dmVjKHBhZ2UpOwogCiAJaWYgKCFUZXN0Q2xlYXJQYWdl TWxvY2tlZChwYWdlKSkgewogCQkvKiBQb3RlbnRpYWxseSwgUFRFLW1hcHBl ZCBUSFA6IGRvIG5vdCBza2lwIHRoZSByZXN0IFBURXMgKi8KQEAgLTIwNSwx NiArMjAwLDE2IEBAIHVuc2lnbmVkIGludCBtdW5sb2NrX3ZtYV9wYWdlKHN0 cnVjdCBwYWdlICpwYWdlKQogCW5yX3BhZ2VzID0gaHBhZ2VfbnJfcGFnZXMo cGFnZSk7CiAJX19tb2Rfem9uZV9wYWdlX3N0YXRlKHBhZ2Vfem9uZShwYWdl KSwgTlJfTUxPQ0ssIC1ucl9wYWdlcyk7CiAKLQlpZiAoX19tdW5sb2NrX2lz b2xhdGVfbHJ1X3BhZ2UocGFnZSwgdHJ1ZSkpIHsKLQkJc3Bpbl91bmxvY2tf aXJxKCZwZ2RhdC0+bHJ1X2xvY2spOworCWlmIChfX211bmxvY2tfaXNvbGF0 ZV9scnVfcGFnZShwYWdlLCBscnV2ZWMpKSB7CisJCWdldF9wYWdlKHBhZ2Up OworCQl1bmxvY2tfbHJ1dmVjKGxydXZlYyk7CiAJCV9fbXVubG9ja19pc29s YXRlZF9wYWdlKHBhZ2UpOwogCQlnb3RvIG91dDsKIAl9CiAJX19tdW5sb2Nr X2lzb2xhdGlvbl9mYWlsZWQocGFnZSk7CiAKIHVubG9ja19vdXQ6Ci0Jc3Bp bl91bmxvY2tfaXJxKCZwZ2RhdC0+bHJ1X2xvY2spOwotCisJdW5sb2NrX2xy dXZlYyhscnV2ZWMpOwogb3V0OgogCXJldHVybiBucl9wYWdlcyAtIDE7CiB9 CkBAIC0yODksNiArMjg0LDcgQEAgc3RhdGljIHZvaWQgX19wdXRiYWNrX2xy dV9mYXN0KHN0cnVjdCBwYWdldmVjICpwdmVjLCBpbnQgcGdyZXNjdWVkKQog ICovCiBzdGF0aWMgdm9pZCBfX211bmxvY2tfcGFnZXZlYyhzdHJ1Y3QgcGFn ZXZlYyAqcHZlYywgc3RydWN0IHpvbmUgKnpvbmUpCiB7CisJc3RydWN0IGxy dXZlYyAqbHJ1dmVjID0gTlVMTDsKIAlpbnQgaTsKIAlpbnQgbnIgPSBwYWdl dmVjX2NvdW50KHB2ZWMpOwogCWludCBkZWx0YV9tdW5sb2NrZWQgPSAtbnI7 CkBAIC0yOTgsMTYgKzI5NCwxNiBAQCBzdGF0aWMgdm9pZCBfX211bmxvY2tf cGFnZXZlYyhzdHJ1Y3QgcGFnZXZlYyAqcHZlYywgc3RydWN0IHpvbmUgKnpv bmUpCiAJcGFnZXZlY19pbml0KCZwdmVjX3B1dGJhY2spOwogCiAJLyogUGhh c2UgMTogcGFnZSBpc29sYXRpb24gKi8KLQlzcGluX2xvY2tfaXJxKCZ6b25l LT56b25lX3BnZGF0LT5scnVfbG9jayk7CiAJZm9yIChpID0gMDsgaSA8IG5y OyBpKyspIHsKIAkJc3RydWN0IHBhZ2UgKnBhZ2UgPSBwdmVjLT5wYWdlc1tp XTsKIAorCQlyZWxvY2tfcGFnZV9scnV2ZWMocGFnZSwgJmxydXZlYyk7CiAJ CWlmIChUZXN0Q2xlYXJQYWdlTWxvY2tlZChwYWdlKSkgewogCQkJLyoKIAkJ CSAqIFdlIGFscmVhZHkgaGF2ZSBwaW4gZnJvbSBmb2xsb3dfcGFnZV9tYXNr KCkKIAkJCSAqIHNvIHdlIGNhbiBzcGFyZSB0aGUgZ2V0X3BhZ2UoKSBoZXJl LgogCQkJICovCi0JCQlpZiAoX19tdW5sb2NrX2lzb2xhdGVfbHJ1X3BhZ2Uo cGFnZSwgZmFsc2UpKQorCQkJaWYgKF9fbXVubG9ja19pc29sYXRlX2xydV9w YWdlKHBhZ2UsIGxydXZlYykpCiAJCQkJY29udGludWU7CiAJCQllbHNlCiAJ CQkJX19tdW5sb2NrX2lzb2xhdGlvbl9mYWlsZWQocGFnZSk7CkBAIC0zMjQs OCArMzIwLDExIEBAIHN0YXRpYyB2b2lkIF9fbXVubG9ja19wYWdldmVjKHN0 cnVjdCBwYWdldmVjICpwdmVjLCBzdHJ1Y3Qgem9uZSAqem9uZSkKIAkJcGFn ZXZlY19hZGQoJnB2ZWNfcHV0YmFjaywgcHZlYy0+cGFnZXNbaV0pOwogCQlw dmVjLT5wYWdlc1tpXSA9IE5VTEw7CiAJfQotCV9fbW9kX3pvbmVfcGFnZV9z dGF0ZSh6b25lLCBOUl9NTE9DSywgZGVsdGFfbXVubG9ja2VkKTsKLQlzcGlu X3VubG9ja19pcnEoJnpvbmUtPnpvbmVfcGdkYXQtPmxydV9sb2NrKTsKKwor CWlmIChscnV2ZWMpIHsKKwkJX19tb2Rfem9uZV9wYWdlX3N0YXRlKHpvbmUs IE5SX01MT0NLLCBkZWx0YV9tdW5sb2NrZWQpOworCQl1bmxvY2tfbHJ1dmVj KGxydXZlYyk7CisJfQogCiAJLyogTm93IHdlIGNhbiByZWxlYXNlIHBpbnMg b2YgcGFnZXMgdGhhdCB3ZSBhcmUgbm90IG11bmxvY2tpbmcgKi8KIAlwYWdl dmVjX3JlbGVhc2UoJnB2ZWNfcHV0YmFjayk7CmRpZmYgLS1naXQgYS9tbS9z d2FwLmMgYi9tbS9zd2FwLmMKaW5kZXggYWUzMDAzOTdkZmRhLi40ODdmNzQ4 YjJjOTAgMTAwNjQ0Ci0tLSBhL21tL3N3YXAuYworKysgYi9tbS9zd2FwLmMK QEAgLTU5LDE2ICs1OSwxMyBAQCBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3Ry dWN0IHBhZ2V2ZWMsIGFjdGl2YXRlX3BhZ2VfcHZlY3MpOwogc3RhdGljIHZv aWQgX19wYWdlX2NhY2hlX3JlbGVhc2Uoc3RydWN0IHBhZ2UgKnBhZ2UpCiB7 CiAJaWYgKFBhZ2VMUlUocGFnZSkpIHsKLQkJcGdfZGF0YV90ICpwZ2RhdCA9 IHBhZ2VfcGdkYXQocGFnZSk7CiAJCXN0cnVjdCBscnV2ZWMgKmxydXZlYzsK LQkJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCQlzcGluX2xvY2tfaXJxc2F2 ZSgmcGdkYXQtPmxydV9sb2NrLCBmbGFncyk7Ci0JCWxydXZlYyA9IG1lbV9j Z3JvdXBfcGFnZV9scnV2ZWMocGFnZSwgcGdkYXQpOworCQlscnV2ZWMgPSBs b2NrX3BhZ2VfbHJ1dmVjKHBhZ2UpOwogCQlWTV9CVUdfT05fUEFHRSghUGFn ZUxSVShwYWdlKSwgcGFnZSk7CiAJCV9fQ2xlYXJQYWdlTFJVKHBhZ2UpOwog CQlkZWxfcGFnZV9mcm9tX2xydV9saXN0KHBhZ2UsIGxydXZlYywgcGFnZV9v ZmZfbHJ1KHBhZ2UpKTsKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGdk YXQtPmxydV9sb2NrLCBmbGFncyk7CisJCXVubG9ja19scnV2ZWMobHJ1dmVj KTsKIAl9CiAJX19DbGVhclBhZ2VXYWl0ZXJzKHBhZ2UpOwogCW1lbV9jZ3Jv dXBfdW5jaGFyZ2UocGFnZSk7CkBAIC0xOTEsMjYgKzE4OCwxNiBAQCBzdGF0 aWMgdm9pZCBwYWdldmVjX2xydV9tb3ZlX2ZuKHN0cnVjdCBwYWdldmVjICpw dmVjLAogCXZvaWQgKmFyZykKIHsKIAlpbnQgaTsKLQlzdHJ1Y3QgcGdsaXN0 X2RhdGEgKnBnZGF0ID0gTlVMTDsKLQlzdHJ1Y3QgbHJ1dmVjICpscnV2ZWM7 Ci0JdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7CisJc3RydWN0IGxydXZlYyAq bHJ1dmVjID0gTlVMTDsKIAogCWZvciAoaSA9IDA7IGkgPCBwYWdldmVjX2Nv dW50KHB2ZWMpOyBpKyspIHsKIAkJc3RydWN0IHBhZ2UgKnBhZ2UgPSBwdmVj LT5wYWdlc1tpXTsKLQkJc3RydWN0IHBnbGlzdF9kYXRhICpwYWdlcGdkYXQg PSBwYWdlX3BnZGF0KHBhZ2UpOwotCi0JCWlmIChwYWdlcGdkYXQgIT0gcGdk YXQpIHsKLQkJCWlmIChwZ2RhdCkKLQkJCQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZwZ2RhdC0+bHJ1X2xvY2ssIGZsYWdzKTsKLQkJCXBnZGF0ID0gcGFn ZXBnZGF0OwotCQkJc3Bpbl9sb2NrX2lycXNhdmUoJnBnZGF0LT5scnVfbG9j aywgZmxhZ3MpOwotCQl9CiAKLQkJbHJ1dmVjID0gbWVtX2Nncm91cF9wYWdl X2xydXZlYyhwYWdlLCBwZ2RhdCk7CisJCXJlbG9ja19wYWdlX2xydXZlYyhw YWdlLCAmbHJ1dmVjKTsKIAkJKCptb3ZlX2ZuKShwYWdlLCBscnV2ZWMsIGFy Zyk7CiAJfQotCWlmIChwZ2RhdCkKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmcGdkYXQtPmxydV9sb2NrLCBmbGFncyk7CisJaWYgKGxydXZlYykKKwkJ dW5sb2NrX2xydXZlYyhscnV2ZWMpOwogCXJlbGVhc2VfcGFnZXMocHZlYy0+ cGFnZXMsIHB2ZWMtPm5yKTsKIAlwYWdldmVjX3JlaW5pdChwdmVjKTsKIH0K QEAgLTMyMywxMiArMzEwLDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhY3Rp dmF0ZV9wYWdlX2RyYWluKGludCBjcHUpCiAKIHZvaWQgYWN0aXZhdGVfcGFn ZShzdHJ1Y3QgcGFnZSAqcGFnZSkKIHsKLQlwZ19kYXRhX3QgKnBnZGF0ID0g cGFnZV9wZ2RhdChwYWdlKTsKKwlzdHJ1Y3QgbHJ1dmVjICpscnV2ZWM7CiAK IAlwYWdlID0gY29tcG91bmRfaGVhZChwYWdlKTsKLQlzcGluX2xvY2tfaXJx KCZwZ2RhdC0+bHJ1X2xvY2spOwotCV9fYWN0aXZhdGVfcGFnZShwYWdlLCBt ZW1fY2dyb3VwX3BhZ2VfbHJ1dmVjKHBhZ2UsIHBnZGF0KSwgTlVMTCk7Ci0J c3Bpbl91bmxvY2tfaXJxKCZwZ2RhdC0+bHJ1X2xvY2spOworCWxydXZlYyA9 IGxvY2tfcGFnZV9scnV2ZWMocGFnZSk7CisJX19hY3RpdmF0ZV9wYWdlKHBh Z2UsIGxydXZlYywgTlVMTCk7CisJdW5sb2NrX2xydXZlYyhscnV2ZWMpOwog fQogI2VuZGlmCiAKQEAgLTcxOSw5ICs3MDYsNyBAQCB2b2lkIHJlbGVhc2Vf cGFnZXMoc3RydWN0IHBhZ2UgKipwYWdlcywgaW50IG5yKQogewogCWludCBp OwogCUxJU1RfSEVBRChwYWdlc190b19mcmVlKTsKLQlzdHJ1Y3QgcGdsaXN0 X2RhdGEgKmxvY2tlZF9wZ2RhdCA9IE5VTEw7Ci0Jc3RydWN0IGxydXZlYyAq bHJ1dmVjOwotCXVuc2lnbmVkIGxvbmcgdW5pbml0aWFsaXplZF92YXIoZmxh Z3MpOworCXN0cnVjdCBscnV2ZWMgKmxydXZlYyA9IE5VTEw7CiAJdW5zaWdu ZWQgaW50IHVuaW5pdGlhbGl6ZWRfdmFyKGxvY2tfYmF0Y2gpOwogCiAJZm9y IChpID0gMDsgaSA8IG5yOyBpKyspIHsKQEAgLTczMCwyMSArNzE1LDIwIEBA IHZvaWQgcmVsZWFzZV9wYWdlcyhzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCBpbnQg bnIpCiAJCS8qCiAJCSAqIE1ha2Ugc3VyZSB0aGUgSVJRLXNhZmUgbG9jay1o b2xkaW5nIHRpbWUgZG9lcyBub3QgZ2V0CiAJCSAqIGV4Y2Vzc2l2ZSB3aXRo IGEgY29udGludW91cyBzdHJpbmcgb2YgcGFnZXMgZnJvbSB0aGUKLQkJICog c2FtZSBwZ2RhdC4gVGhlIGxvY2sgaXMgaGVsZCBvbmx5IGlmIHBnZGF0ICE9 IE5VTEwuCisJCSAqIHNhbWUgbHJ1dmVjLiBUaGUgbG9jayBpcyBoZWxkIG9u bHkgaWYgbHJ1dmVjICE9IE5VTEwuCiAJCSAqLwotCQlpZiAobG9ja2VkX3Bn ZGF0ICYmICsrbG9ja19iYXRjaCA9PSBTV0FQX0NMVVNURVJfTUFYKSB7Ci0J CQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZsb2NrZWRfcGdkYXQtPmxydV9s b2NrLCBmbGFncyk7Ci0JCQlsb2NrZWRfcGdkYXQgPSBOVUxMOworCQlpZiAo bHJ1dmVjICYmICsrbG9ja19iYXRjaCA9PSBTV0FQX0NMVVNURVJfTUFYKSB7 CisJCQl1bmxvY2tfbHJ1dmVjKGxydXZlYyk7CisJCQlscnV2ZWMgPSBOVUxM OwogCQl9CiAKIAkJaWYgKGlzX2h1Z2VfemVyb19wYWdlKHBhZ2UpKQogCQkJ Y29udGludWU7CiAKIAkJaWYgKGlzX3pvbmVfZGV2aWNlX3BhZ2UocGFnZSkp IHsKLQkJCWlmIChsb2NrZWRfcGdkYXQpIHsKLQkJCQlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZsb2NrZWRfcGdkYXQtPmxydV9sb2NrLAotCQkJCQkJICAg ICAgIGZsYWdzKTsKLQkJCQlsb2NrZWRfcGdkYXQgPSBOVUxMOworCQkJaWYg KGxydXZlYykgeworCQkJCXVubG9ja19scnV2ZWMobHJ1dmVjKTsKKwkJCQls cnV2ZWMgPSBOVUxMOwogCQkJfQogCQkJLyoKIAkJCSAqIFpPTkVfREVWSUNF IHBhZ2VzIHRoYXQgcmV0dXJuICdmYWxzZScgZnJvbQpAQCAtNzYxLDI3ICs3 NDUsMjAgQEAgdm9pZCByZWxlYXNlX3BhZ2VzKHN0cnVjdCBwYWdlICoqcGFn ZXMsIGludCBucikKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChQYWdlQ29tcG91 bmQocGFnZSkpIHsKLQkJCWlmIChsb2NrZWRfcGdkYXQpIHsKLQkJCQlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZsb2NrZWRfcGdkYXQtPmxydV9sb2NrLCBm bGFncyk7Ci0JCQkJbG9ja2VkX3BnZGF0ID0gTlVMTDsKKwkJCWlmIChscnV2 ZWMpIHsKKwkJCQl1bmxvY2tfbHJ1dmVjKGxydXZlYyk7CisJCQkJbHJ1dmVj ID0gTlVMTDsKIAkJCX0KIAkJCV9fcHV0X2NvbXBvdW5kX3BhZ2UocGFnZSk7 CiAJCQljb250aW51ZTsKIAkJfQogCiAJCWlmIChQYWdlTFJVKHBhZ2UpKSB7 Ci0JCQlzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0ID0gcGFnZV9wZ2RhdChw YWdlKTsKKwkJCXN0cnVjdCBscnV2ZWMgKnByZXZfbHJ1dmVjID0gbHJ1dmVj OwogCi0JCQlpZiAocGdkYXQgIT0gbG9ja2VkX3BnZGF0KSB7Ci0JCQkJaWYg KGxvY2tlZF9wZ2RhdCkKLQkJCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm bG9ja2VkX3BnZGF0LT5scnVfbG9jaywKLQkJCQkJCQkJCWZsYWdzKTsKKwkJ CXJlbG9ja19wYWdlX2xydXZlYyhwYWdlLCAmbHJ1dmVjKTsKKwkJCWlmIChs cnV2ZWMgIT0gcHJldl9scnV2ZWMpCiAJCQkJbG9ja19iYXRjaCA9IDA7Ci0J CQkJbG9ja2VkX3BnZGF0ID0gcGdkYXQ7Ci0JCQkJc3Bpbl9sb2NrX2lycXNh dmUoJmxvY2tlZF9wZ2RhdC0+bHJ1X2xvY2ssIGZsYWdzKTsKLQkJCX0KLQot CQkJbHJ1dmVjID0gbWVtX2Nncm91cF9wYWdlX2xydXZlYyhwYWdlLCBsb2Nr ZWRfcGdkYXQpOwogCQkJVk1fQlVHX09OX1BBR0UoIVBhZ2VMUlUocGFnZSks IHBhZ2UpOwogCQkJX19DbGVhclBhZ2VMUlUocGFnZSk7CiAJCQlkZWxfcGFn ZV9mcm9tX2xydV9saXN0KHBhZ2UsIGxydXZlYywgcGFnZV9vZmZfbHJ1KHBh Z2UpKTsKQEAgLTc5Myw4ICs3NzAsOCBAQCB2b2lkIHJlbGVhc2VfcGFnZXMo c3RydWN0IHBhZ2UgKipwYWdlcywgaW50IG5yKQogCiAJCWxpc3RfYWRkKCZw YWdlLT5scnUsICZwYWdlc190b19mcmVlKTsKIAl9Ci0JaWYgKGxvY2tlZF9w Z2RhdCkKLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbG9ja2VkX3BnZGF0 LT5scnVfbG9jaywgZmxhZ3MpOworCWlmIChscnV2ZWMpCisJCXVubG9ja19s cnV2ZWMobHJ1dmVjKTsKIAogCW1lbV9jZ3JvdXBfdW5jaGFyZ2VfbGlzdCgm cGFnZXNfdG9fZnJlZSk7CiAJZnJlZV91bnJlZl9wYWdlX2xpc3QoJnBhZ2Vz X3RvX2ZyZWUpOwpAQCAtODMyLDcgKzgwOSw3IEBAIHZvaWQgbHJ1X2FkZF9w YWdlX3RhaWwoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBwYWdlICpwYWdl X3RhaWwsCiAJVk1fQlVHX09OX1BBR0UoIVBhZ2VIZWFkKHBhZ2UpLCBwYWdl KTsKIAlWTV9CVUdfT05fUEFHRShQYWdlQ29tcG91bmQocGFnZV90YWlsKSwg cGFnZSk7CiAJVk1fQlVHX09OX1BBR0UoUGFnZUxSVShwYWdlX3RhaWwpLCBw YWdlKTsKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZscnV2ZWNfcGdkYXQobHJ1 dmVjKS0+bHJ1X2xvY2spOworCWxvY2tkZXBfYXNzZXJ0X2hlbGQobHJ1X2xv Y2twdHIobHJ1dmVjKSk7CiAKIAlpZiAoIWxpc3QpCiAJCVNldFBhZ2VMUlUo cGFnZV90YWlsKTsKZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1z Y2FuLmMKaW5kZXggMjliMmE1OWUyODEwLi43ZDc2ZmQ3Nzk2YjMgMTAwNjQ0 Ci0tLSBhL21tL3Ztc2Nhbi5jCisrKyBiL21tL3Ztc2Nhbi5jCkBAIC0xLDQg KzEsMyBAQAotLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAK IC8qCiAgKiAgbGludXgvbW0vdm1zY2FuLmMKICAqCkBAIC0xNzQ2LDExICsx NzQ1LDkgQEAgaW50IGlzb2xhdGVfbHJ1X3BhZ2Uoc3RydWN0IHBhZ2UgKnBh Z2UpCiAJV0FSTl9SQVRFTElNSVQoUGFnZVRhaWwocGFnZSksICJ0cnlpbmcg dG8gaXNvbGF0ZSB0YWlsIHBhZ2UiKTsKIAogCWlmIChQYWdlTFJVKHBhZ2Up KSB7Ci0JCXBnX2RhdGFfdCAqcGdkYXQgPSBwYWdlX3BnZGF0KHBhZ2UpOwog CQlzdHJ1Y3QgbHJ1dmVjICpscnV2ZWM7CiAKLQkJc3Bpbl9sb2NrX2lycSgm cGdkYXQtPmxydV9sb2NrKTsKLQkJbHJ1dmVjID0gbWVtX2Nncm91cF9wYWdl X2xydXZlYyhwYWdlLCBwZ2RhdCk7CisJCWxydXZlYyA9IGxvY2tfcGFnZV9s cnV2ZWMocGFnZSk7CiAJCWlmIChQYWdlTFJVKHBhZ2UpKSB7CiAJCQlpbnQg bHJ1ID0gcGFnZV9scnUocGFnZSk7CiAJCQlnZXRfcGFnZShwYWdlKTsKQEAg LTE3NTgsNyArMTc1NSw3IEBAIGludCBpc29sYXRlX2xydV9wYWdlKHN0cnVj dCBwYWdlICpwYWdlKQogCQkJZGVsX3BhZ2VfZnJvbV9scnVfbGlzdChwYWdl LCBscnV2ZWMsIGxydSk7CiAJCQlyZXQgPSAwOwogCQl9Ci0JCXNwaW5fdW5s b2NrX2lycSgmcGdkYXQtPmxydV9sb2NrKTsKKwkJdW5sb2NrX2xydXZlYyhs cnV2ZWMpOwogCX0KIAlyZXR1cm4gcmV0OwogfQpAQCAtMTgyMyw3ICsxODIw LDcgQEAgc3RhdGljIGludCB0b29fbWFueV9pc29sYXRlZChzdHJ1Y3QgcGds aXN0X2RhdGEgKnBnZGF0LCBpbnQgZmlsZSwKIHN0YXRpYyB1bnNpZ25lZCBu b2lubGluZV9mb3Jfc3RhY2sgbW92ZV9wYWdlc190b19scnUoc3RydWN0IGxy dXZlYyAqbHJ1dmVjLAogCQkJCQkJICAgICBzdHJ1Y3QgbGlzdF9oZWFkICps aXN0KQogewotCXN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQgPSBscnV2ZWNf cGdkYXQobHJ1dmVjKTsKKwlzdHJ1Y3QgbHJ1dmVjICpvcmlnX2xydXZlYyA9 IGxydXZlYzsKIAlpbnQgbnJfcGFnZXMsIG5yX21vdmVkID0gMDsKIAlMSVNU X0hFQUQocGFnZXNfdG9fZnJlZSk7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7CkBA IC0xODM0LDEyICsxODMxLDE2IEBAIHN0YXRpYyB1bnNpZ25lZCBub2lubGlu ZV9mb3Jfc3RhY2sgbW92ZV9wYWdlc190b19scnUoc3RydWN0IGxydXZlYyAq bHJ1dmVjLAogCQlWTV9CVUdfT05fUEFHRShQYWdlTFJVKHBhZ2UpLCBwYWdl KTsKIAkJaWYgKHVubGlrZWx5KCFwYWdlX2V2aWN0YWJsZShwYWdlKSkpIHsK IAkJCWxpc3RfZGVsKCZwYWdlLT5scnUpOwotCQkJc3Bpbl91bmxvY2tfaXJx KCZwZ2RhdC0+bHJ1X2xvY2spOworCQkJaWYgKGxydXZlYykgeworCQkJCXVu bG9ja19scnV2ZWMobHJ1dmVjKTsKKwkJCQlscnV2ZWMgPSBOVUxMOworCQkJ fQogCQkJcHV0YmFja19scnVfcGFnZShwYWdlKTsKLQkJCXNwaW5fbG9ja19p cnEoJnBnZGF0LT5scnVfbG9jayk7CiAJCQljb250aW51ZTsKIAkJfQotCQls cnV2ZWMgPSBtZW1fY2dyb3VwX3BhZ2VfbHJ1dmVjKHBhZ2UsIHBnZGF0KTsK KworCQkvKiBPY2Nhc2lvbmFsbHksIG1lbWNnIGhhcyBjaGFuZ2VkLCBzbyBj aGFuZ2UgbHJ1dmVjICovCisJCXJlbG9ja19wYWdlX2xydXZlYyhwYWdlLCAm bHJ1dmVjKTsKIAogCQlTZXRQYWdlTFJVKHBhZ2UpOwogCQlscnUgPSBwYWdl X2xydShwYWdlKTsKQEAgLTE4NTQsMTAgKzE4NTUsMTAgQEAgc3RhdGljIHVu c2lnbmVkIG5vaW5saW5lX2Zvcl9zdGFjayBtb3ZlX3BhZ2VzX3RvX2xydShz dHJ1Y3QgbHJ1dmVjICpscnV2ZWMsCiAJCQlkZWxfcGFnZV9mcm9tX2xydV9s aXN0KHBhZ2UsIGxydXZlYywgbHJ1KTsKIAogCQkJaWYgKHVubGlrZWx5KFBh Z2VDb21wb3VuZChwYWdlKSkpIHsKLQkJCQlzcGluX3VubG9ja19pcnEoJnBn ZGF0LT5scnVfbG9jayk7CisJCQkJdW5sb2NrX2xydXZlYyhscnV2ZWMpOwor CQkJCWxydXZlYyA9IE5VTEw7CiAJCQkJbWVtX2Nncm91cF91bmNoYXJnZShw YWdlKTsKIAkJCQkoKmdldF9jb21wb3VuZF9wYWdlX2R0b3IocGFnZSkpKHBh Z2UpOwotCQkJCXNwaW5fbG9ja19pcnEoJnBnZGF0LT5scnVfbG9jayk7CiAJ CQl9IGVsc2UKIAkJCQlsaXN0X2FkZCgmcGFnZS0+bHJ1LCAmcGFnZXNfdG9f ZnJlZSk7CiAJCX0gZWxzZSB7CkBAIC0xODY1LDYgKzE4NjYsMTIgQEAgc3Rh dGljIHVuc2lnbmVkIG5vaW5saW5lX2Zvcl9zdGFjayBtb3ZlX3BhZ2VzX3Rv X2xydShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsCiAJCX0KIAl9CiAKKwlpZiAo bHJ1dmVjICE9IG9yaWdfbHJ1dmVjKSB7CisJCWlmIChscnV2ZWMpCisJCQl1 bmxvY2tfbHJ1dmVjKGxydXZlYyk7CisJCWxvY2tfbHJ1dmVjKG9yaWdfbHJ1 dmVjKTsKKwl9CisKIAkvKgogCSAqIFRvIHNhdmUgb3VyIGNhbGxlcidzIHN0 YWNrLCBub3cgdXNlIGlucHV0IGxpc3QgZm9yIHBhZ2VzIHRvIGZyZWUuCiAJ ICovCkBAIC0xOTIwLDcgKzE5MjcsNyBAQCBzaHJpbmtfaW5hY3RpdmVfbGlz dCh1bnNpZ25lZCBsb25nIG5yX3RvX3NjYW4sIHN0cnVjdCBscnV2ZWMgKmxy dXZlYywKIAogCWxydV9hZGRfZHJhaW4oKTsKIAotCXNwaW5fbG9ja19pcnEo JnBnZGF0LT5scnVfbG9jayk7CisJbG9ja19scnV2ZWMobHJ1dmVjKTsKIAog CW5yX3Rha2VuID0gaXNvbGF0ZV9scnVfcGFnZXMobnJfdG9fc2NhbiwgbHJ1 dmVjLCAmcGFnZV9saXN0LAogCQkJCSAgICAgJm5yX3NjYW5uZWQsIHNjLCBs cnUpOwpAQCAtMTkzMiw3ICsxOTM5LDggQEAgc2hyaW5rX2luYWN0aXZlX2xp c3QodW5zaWduZWQgbG9uZyBucl90b19zY2FuLCBzdHJ1Y3QgbHJ1dmVjICps cnV2ZWMsCiAJaWYgKGdsb2JhbF9yZWNsYWltKHNjKSkKIAkJX19jb3VudF92 bV9ldmVudHMoaXRlbSwgbnJfc2Nhbm5lZCk7CiAJX19jb3VudF9tZW1jZ19l dmVudHMobHJ1dmVjX21lbWNnKGxydXZlYyksIGl0ZW0sIG5yX3NjYW5uZWQp OwotCXNwaW5fdW5sb2NrX2lycSgmcGdkYXQtPmxydV9sb2NrKTsKKworCXVu bG9ja19scnV2ZWMobHJ1dmVjKTsKIAogCWlmIChucl90YWtlbiA9PSAwKQog CQlyZXR1cm4gMDsKQEAgLTE5NDAsNyArMTk0OCw3IEBAIHNocmlua19pbmFj dGl2ZV9saXN0KHVuc2lnbmVkIGxvbmcgbnJfdG9fc2Nhbiwgc3RydWN0IGxy dXZlYyAqbHJ1dmVjLAogCW5yX3JlY2xhaW1lZCA9IHNocmlua19wYWdlX2xp c3QoJnBhZ2VfbGlzdCwgcGdkYXQsIHNjLCAwLAogCQkJCSZzdGF0LCBmYWxz ZSk7CiAKLQlzcGluX2xvY2tfaXJxKCZwZ2RhdC0+bHJ1X2xvY2spOworCWxv Y2tfbHJ1dmVjKGxydXZlYyk7CiAKIAlpdGVtID0gY3VycmVudF9pc19rc3dh cGQoKSA/IFBHU1RFQUxfS1NXQVBEIDogUEdTVEVBTF9ESVJFQ1Q7CiAJaWYg KGdsb2JhbF9yZWNsYWltKHNjKSkKQEAgLTE5NTMsNyArMTk2MSw3IEBAIHNo cmlua19pbmFjdGl2ZV9saXN0KHVuc2lnbmVkIGxvbmcgbnJfdG9fc2Nhbiwg c3RydWN0IGxydXZlYyAqbHJ1dmVjLAogCiAJX19tb2Rfbm9kZV9wYWdlX3N0 YXRlKHBnZGF0LCBOUl9JU09MQVRFRF9BTk9OICsgZmlsZSwgLW5yX3Rha2Vu KTsKIAotCXNwaW5fdW5sb2NrX2lycSgmcGdkYXQtPmxydV9sb2NrKTsKKwl1 bmxvY2tfbHJ1dmVjKGxydXZlYyk7CiAKIAltZW1fY2dyb3VwX3VuY2hhcmdl X2xpc3QoJnBhZ2VfbGlzdCk7CiAJZnJlZV91bnJlZl9wYWdlX2xpc3QoJnBh Z2VfbGlzdCk7CkBAIC0yMDA2LDcgKzIwMTQsNyBAQCBzdGF0aWMgdm9pZCBz aHJpbmtfYWN0aXZlX2xpc3QodW5zaWduZWQgbG9uZyBucl90b19zY2FuLAog CiAJbHJ1X2FkZF9kcmFpbigpOwogCi0Jc3Bpbl9sb2NrX2lycSgmcGdkYXQt PmxydV9sb2NrKTsKKwlsb2NrX2xydXZlYyhscnV2ZWMpOwogCiAJbnJfdGFr ZW4gPSBpc29sYXRlX2xydV9wYWdlcyhucl90b19zY2FuLCBscnV2ZWMsICZs X2hvbGQsCiAJCQkJICAgICAmbnJfc2Nhbm5lZCwgc2MsIGxydSk7CkBAIC0y MDE3LDcgKzIwMjUsNyBAQCBzdGF0aWMgdm9pZCBzaHJpbmtfYWN0aXZlX2xp c3QodW5zaWduZWQgbG9uZyBucl90b19zY2FuLAogCV9fY291bnRfdm1fZXZl bnRzKFBHUkVGSUxMLCBucl9zY2FubmVkKTsKIAlfX2NvdW50X21lbWNnX2V2 ZW50cyhscnV2ZWNfbWVtY2cobHJ1dmVjKSwgUEdSRUZJTEwsIG5yX3NjYW5u ZWQpOwogCi0Jc3Bpbl91bmxvY2tfaXJxKCZwZ2RhdC0+bHJ1X2xvY2spOwor CXVubG9ja19scnV2ZWMobHJ1dmVjKTsKIAogCXdoaWxlICghbGlzdF9lbXB0 eSgmbF9ob2xkKSkgewogCQljb25kX3Jlc2NoZWQoKTsKQEAgLTIwNjMsNyAr MjA3MSw3IEBAIHN0YXRpYyB2b2lkIHNocmlua19hY3RpdmVfbGlzdCh1bnNp Z25lZCBsb25nIG5yX3RvX3NjYW4sCiAJLyoKIAkgKiBNb3ZlIHBhZ2VzIGJh Y2sgdG8gdGhlIGxydSBsaXN0LgogCSAqLwotCXNwaW5fbG9ja19pcnEoJnBn ZGF0LT5scnVfbG9jayk7CisJbG9ja19scnV2ZWMobHJ1dmVjKTsKIAkvKgog CSAqIENvdW50IHJlZmVyZW5jZWQgcGFnZXMgZnJvbSBjdXJyZW50bHkgdXNl ZCBtYXBwaW5ncyBhcyByb3RhdGVkLAogCSAqIGV2ZW4gdGhvdWdoIG9ubHkg c29tZSBvZiB0aGVtIGFyZSBhY3R1YWxseSByZS1hY3RpdmF0ZWQuICBUaGlz CkBAIC0yMDc5LDkgKzIwODcsOSBAQCBzdGF0aWMgdm9pZCBzaHJpbmtfYWN0 aXZlX2xpc3QodW5zaWduZWQgbG9uZyBucl90b19zY2FuLAogCiAJX19jb3Vu dF92bV9ldmVudHMoUEdERUFDVElWQVRFLCBucl9kZWFjdGl2YXRlKTsKIAlf X2NvdW50X21lbWNnX2V2ZW50cyhscnV2ZWNfbWVtY2cobHJ1dmVjKSwgUEdE RUFDVElWQVRFLCBucl9kZWFjdGl2YXRlKTsKLQogCV9fbW9kX25vZGVfcGFn ZV9zdGF0ZShwZ2RhdCwgTlJfSVNPTEFURURfQU5PTiArIGZpbGUsIC1ucl90 YWtlbik7Ci0Jc3Bpbl91bmxvY2tfaXJxKCZwZ2RhdC0+bHJ1X2xvY2spOwor CisJdW5sb2NrX2xydXZlYyhscnV2ZWMpOwogCiAJbWVtX2Nncm91cF91bmNo YXJnZV9saXN0KCZsX2FjdGl2ZSk7CiAJZnJlZV91bnJlZl9wYWdlX2xpc3Qo JmxfYWN0aXZlKTsKQEAgLTIxOTksNyArMjIwNyw2IEBAIHN0YXRpYyB2b2lk IGdldF9zY2FuX2NvdW50KHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0 IG1lbV9jZ3JvdXAgKm1lbWNnLAogCXN0cnVjdCB6b25lX3JlY2xhaW1fc3Rh dCAqcmVjbGFpbV9zdGF0ID0gJmxydXZlYy0+cmVjbGFpbV9zdGF0OwogCXU2 NCBmcmFjdGlvblsyXTsKIAl1NjQgZGVub21pbmF0b3IgPSAwOwkvKiBnY2Mg Ki8KLQlzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0ID0gbHJ1dmVjX3BnZGF0 KGxydXZlYyk7CiAJdW5zaWduZWQgbG9uZyBhbm9uX3ByaW8sIGZpbGVfcHJp bzsKIAllbnVtIHNjYW5fYmFsYW5jZSBzY2FuX2JhbGFuY2U7CiAJdW5zaWdu ZWQgbG9uZyBhbm9uLCBmaWxlOwpAQCAtMjI0NCw2ICsyMjUxLDcgQEAgc3Rh dGljIHZvaWQgZ2V0X3NjYW5fY291bnQoc3RydWN0IGxydXZlYyAqbHJ1dmVj LCBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csCiAJICogYW5vbiBwYWdlcy4g IFRyeSB0byBkZXRlY3QgdGhpcyBiYXNlZCBvbiBmaWxlIExSVSBzaXplLgog CSAqLwogCWlmIChnbG9iYWxfcmVjbGFpbShzYykpIHsKKwkJc3RydWN0IHBn bGlzdF9kYXRhICpwZ2RhdCA9IGxydXZlY19wZ2RhdChscnV2ZWMpOwogCQl1 bnNpZ25lZCBsb25nIHBnZGF0ZmlsZTsKIAkJdW5zaWduZWQgbG9uZyBwZ2Rh dGZyZWU7CiAJCWludCB6OwpAQCAtMjMxNyw3ICsyMzI1LDcgQEAgc3RhdGlj IHZvaWQgZ2V0X3NjYW5fY291bnQoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBz dHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csCiAJZmlsZSAgPSBscnV2ZWNfbHJ1 X3NpemUobHJ1dmVjLCBMUlVfQUNUSVZFX0ZJTEUsIE1BWF9OUl9aT05FUykg KwogCQlscnV2ZWNfbHJ1X3NpemUobHJ1dmVjLCBMUlVfSU5BQ1RJVkVfRklM RSwgTUFYX05SX1pPTkVTKTsKIAotCXNwaW5fbG9ja19pcnEoJnBnZGF0LT5s cnVfbG9jayk7CisJbG9ja19scnV2ZWMobHJ1dmVjKTsKIAlpZiAodW5saWtl bHkocmVjbGFpbV9zdGF0LT5yZWNlbnRfc2Nhbm5lZFswXSA+IGFub24gLyA0 KSkgewogCQlyZWNsYWltX3N0YXQtPnJlY2VudF9zY2FubmVkWzBdIC89IDI7 CiAJCXJlY2xhaW1fc3RhdC0+cmVjZW50X3JvdGF0ZWRbMF0gLz0gMjsKQEAg LTIzMzgsNyArMjM0Niw3IEBAIHN0YXRpYyB2b2lkIGdldF9zY2FuX2NvdW50 KHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IG1lbV9jZ3JvdXAgKm1l bWNnLAogCiAJZnAgPSBmaWxlX3ByaW8gKiAocmVjbGFpbV9zdGF0LT5yZWNl bnRfc2Nhbm5lZFsxXSArIDEpOwogCWZwIC89IHJlY2xhaW1fc3RhdC0+cmVj ZW50X3JvdGF0ZWRbMV0gKyAxOwotCXNwaW5fdW5sb2NrX2lycSgmcGdkYXQt PmxydV9sb2NrKTsKKwl1bmxvY2tfbHJ1dmVjKGxydXZlYyk7CiAKIAlmcmFj dGlvblswXSA9IGFwOwogCWZyYWN0aW9uWzFdID0gZnA7CkBAIC00MTk0LDI0 ICs0MjAyLDE2IEBAIGludCBwYWdlX2V2aWN0YWJsZShzdHJ1Y3QgcGFnZSAq cGFnZSkKICAqLwogdm9pZCBjaGVja19tb3ZlX3VuZXZpY3RhYmxlX3BhZ2Vz KHN0cnVjdCBwYWdldmVjICpwdmVjKQogewotCXN0cnVjdCBscnV2ZWMgKmxy dXZlYzsKLQlzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0ID0gTlVMTDsKKwlz dHJ1Y3QgbHJ1dmVjICpscnV2ZWMgPSBOVUxMOwogCWludCBwZ3NjYW5uZWQg PSAwOwogCWludCBwZ3Jlc2N1ZWQgPSAwOwogCWludCBpOwogCiAJZm9yIChp ID0gMDsgaSA8IHB2ZWMtPm5yOyBpKyspIHsKIAkJc3RydWN0IHBhZ2UgKnBh Z2UgPSBwdmVjLT5wYWdlc1tpXTsKLQkJc3RydWN0IHBnbGlzdF9kYXRhICpw YWdlcGdkYXQgPSBwYWdlX3BnZGF0KHBhZ2UpOwogCiAJCXBnc2Nhbm5lZCsr OwotCQlpZiAocGFnZXBnZGF0ICE9IHBnZGF0KSB7Ci0JCQlpZiAocGdkYXQp Ci0JCQkJc3Bpbl91bmxvY2tfaXJxKCZwZ2RhdC0+bHJ1X2xvY2spOwotCQkJ cGdkYXQgPSBwYWdlcGdkYXQ7Ci0JCQlzcGluX2xvY2tfaXJxKCZwZ2RhdC0+ bHJ1X2xvY2spOwotCQl9Ci0JCWxydXZlYyA9IG1lbV9jZ3JvdXBfcGFnZV9s cnV2ZWMocGFnZSwgcGdkYXQpOworCQlyZWxvY2tfcGFnZV9scnV2ZWMocGFn ZSwgJmxydXZlYyk7CiAKIAkJaWYgKCFQYWdlTFJVKHBhZ2UpIHx8ICFQYWdl VW5ldmljdGFibGUocGFnZSkpCiAJCQljb250aW51ZTsKQEAgLTQyMjcsMTAg KzQyMjcsMTAgQEAgdm9pZCBjaGVja19tb3ZlX3VuZXZpY3RhYmxlX3BhZ2Vz KHN0cnVjdCBwYWdldmVjICpwdmVjKQogCQl9CiAJfQogCi0JaWYgKHBnZGF0 KSB7CisJaWYgKGxydXZlYykgewogCQlfX2NvdW50X3ZtX2V2ZW50cyhVTkVW SUNUQUJMRV9QR1JFU0NVRUQsIHBncmVzY3VlZCk7CiAJCV9fY291bnRfdm1f ZXZlbnRzKFVORVZJQ1RBQkxFX1BHU0NBTk5FRCwgcGdzY2FubmVkKTsKLQkJ c3Bpbl91bmxvY2tfaXJxKCZwZ2RhdC0+bHJ1X2xvY2spOworCQl1bmxvY2tf bHJ1dmVjKGxydXZlYyk7CiAJfQogfQogRVhQT1JUX1NZTUJPTF9HUEwoY2hl Y2tfbW92ZV91bmV2aWN0YWJsZV9wYWdlcyk7Ci0tIAoyLjIzLjAuMTg3Lmcx N2Y1Yjc1NTZjLWdvb2cKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAwMDA3LW1tLW1lbWNnLXBlci1tZW1jZy1wZXItbm9kZS1s cnUtbG9ja2luZy5wYXRjaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMzE1MDY2ADAyNTc1MjMA MDAwMDAwMTIyNjAAMTM1MzAwNzY3NDYAMDIyNDQ3ACAwAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVz dGFyICAAaHVnaGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwcmltYXJ5 Z3JvdXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZyb20gNWNiOWMxNTUwYjkz MmQ2NTg4NTdkNTE0M2E1MDkwNWNiM2Y4Y2I1OSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogSHVnaCBEaWNraW5zIDxodWdoZEBnb29nbGUuY29t PgpEYXRlOiBUdWUsIDEyIEp1biAyMDEyIDE1OjQ2OjU5IC0wNzAwClN1Ympl Y3Q6IFtQQVRDSCA3LzldIG1tL21lbWNnOiBwZXItbWVtY2cgcGVyLW5vZGUg bHJ1IGxvY2tpbmcKCldlJ3JlIG5lYXJseSB0aGVyZS4gIE5vdyBtb3ZlIGxy dV9sb2NrIGFuZCBpcnFmbGFncyBpbnRvIHN0cnVjdCBscnV2ZWMsCnNvIHRo ZXkgYXJlIGluIGV2ZXJ5IHBnZGF0IChmb3IgIUNPTkZJR19NRU1DRyBhbmQg bWVtX2Nncm91cF9kaXNhYmxlZCgpCmNhc2VzKSBhbmQgaW4gZXZlcnkgbWVt Y2cgbHJ1dmVjLgoKRXh0ZW5kIHRoZSBtZW1jZyB2ZXJzaW9uIG9mIHJlbG9j a19wYWdlX2xydXZlYygpIHRvIGRyb3Agb2xkIGFuZCB0YWtlCm5ldyBsb2Nr IHdoZW5ldmVyIGNoYW5naW5nIGxydXZlYywgcmV0cnlpbmcgYXMgYmVmb3Jl IGlmIG1lbWNnIGNoYW5nZWQuCgpUaGVuIGZsaXAgdGhlIHN3aXRjaCBmcm9t IHBlci1ub2RlIGxydSBsb2NraW5nIHRvIHBlci1tZW1jZyBwZXItbm9kZQps cnUgbG9ja2luZy4KClNpZ25lZC1vZmYtYnk6IEh1Z2ggRGlja2lucyA8aHVn aGRAZ29vZ2xlLmNvbT4KQ2M6IEpvaGFubmVzIFdlaW5lciA8aGFubmVzQGNt cHhjaGcub3JnPgpDYzogTWVsIEdvcm1hbiA8bWdvcm1hbkB0ZWNoc2luZ3Vs YXJpdHkubmV0PgpDYzogVmxhc3RpbWlsIEJhYmthIDx2YmFia2FAc3VzZS5j ej4KQ2M6IFl1IFpoYW8gPHl1emhhb0Bnb29nbGUuY29tPgpDYzogQWxleCBT aGkgPGFsZXguc2hpQGxpbnV4LmFsaWJhYmEuY29tPgotLS0KIGluY2x1ZGUv bGludXgvbW16b25lLmggfCAxMiArKysrKy0tLS0tLS0KIGluY2x1ZGUvbGlu dXgvc3dhcC5oICAgfCAxNyArKysrKysrKysrLS0tLS0tLQogbW0vbWVtY29u dHJvbC5jICAgICAgICB8IDEwICsrKysrKy0tLS0KIG1tL21tem9uZS5jICAg ICAgICAgICAgfCAgMSArCiBtbS9wYWdlX2FsbG9jLmMgICAgICAgIHwgIDEg LQogNSBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxOSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tem9uZS5o IGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaAppbmRleCA3OGY4ZmE4OWUwZTQu LmJhMmRjNDkyNTNhNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbXpv bmUuaAorKysgYi9pbmNsdWRlL2xpbnV4L21tem9uZS5oCkBAIC0xNTksNyAr MTU5LDcgQEAgc3RhdGljIGlubGluZSBib29sIGZyZWVfYXJlYV9lbXB0eShz dHJ1Y3QgZnJlZV9hcmVhICphcmVhLCBpbnQgbWlncmF0ZXR5cGUpCiBzdHJ1 Y3QgcGdsaXN0X2RhdGE7CiAKIC8qCi0gKiB6b25lLT5sb2NrIGFuZCB0aGUg em9uZSBscnVfbG9jayBhcmUgdHdvIG9mIHRoZSBob3R0ZXN0IGxvY2tzIGlu IHRoZSBrZXJuZWwuCisgKiB6b25lLT5sb2NrIGFuZCBscnV2ZWMtPmxydV9s b2NrIGFyZSB0d28gb2YgdGhlIGhvdHRlc3QgbG9ja3MgaW4gdGhlIGtlcm5l bC4KICAqIFNvIGFkZCBhIHdpbGQgYW1vdW50IG9mIHBhZGRpbmcgaGVyZSB0 byBlbnN1cmUgdGhhdCB0aGV5IGZhbGwgaW50byBzZXBhcmF0ZQogICogY2Fj aGVsaW5lcy4gIFRoZXJlIGFyZSB2ZXJ5IGZldyB6b25lIHN0cnVjdHVyZXMg aW4gdGhlIG1hY2hpbmUsIHNvIHNwYWNlCiAgKiBjb25zdW1wdGlvbiBpcyBu b3QgYSBjb25jZXJuIGhlcmUuCkBAIC0yOTQsNiArMjk0LDggQEAgc3RydWN0 IHpvbmVfcmVjbGFpbV9zdGF0IHsKIH07CiAKIHN0cnVjdCBscnV2ZWMgewor CXNwaW5sb2NrX3QJCQlscnVfbG9jazsKKwl1bnNpZ25lZCBsb25nCQkJaXJx ZmxhZ3M7CiAJc3RydWN0IGxpc3RfaGVhZAkJbGlzdHNbTlJfTFJVX0xJU1RT XTsKIAlzdHJ1Y3Qgem9uZV9yZWNsYWltX3N0YXQJcmVjbGFpbV9zdGF0Owog CS8qIEV2aWN0aW9ucyAmIGFjdGl2YXRpb25zIG9uIHRoZSBpbmFjdGl2ZSBm aWxlIGxpc3QgKi8KQEAgLTc0MiwxMSArNzQ0LDYgQEAgdHlwZWRlZiBzdHJ1 Y3QgcGdsaXN0X2RhdGEgewogCXVuc2lnbmVkIGxvbmcJCW1pbl9zbGFiX3Bh Z2VzOwogI2VuZGlmIC8qIENPTkZJR19OVU1BICovCiAKLQkvKiBXcml0ZS1p bnRlbnNpdmUgZmllbGRzIHVzZWQgYnkgcGFnZSByZWNsYWltICovCi0JWk9O RV9QQURESU5HKF9wYWQxXykKLQlzcGlubG9ja190CQlscnVfbG9jazsKLQl1 bnNpZ25lZCBsb25nCQlpcnFmbGFnczsKLQogI2lmZGVmIENPTkZJR19ERUZF UlJFRF9TVFJVQ1RfUEFHRV9JTklUCiAJLyoKIAkgKiBJZiBtZW1vcnkgaW5p dGlhbGlzYXRpb24gb24gbGFyZ2UgbWFjaGluZXMgaXMgZGVmZXJyZWQgdGhl biB0aGlzCkBAIC03NjIsOCArNzU5LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgcGds aXN0X2RhdGEgewogI2VuZGlmCiAKIAkvKiBGaWVsZHMgY29tbW9ubHkgYWNj ZXNzZWQgYnkgdGhlIHBhZ2UgcmVjbGFpbSBzY2FubmVyICovCi0Jc3RydWN0 IGxydXZlYwkJbHJ1dmVjOworCVpPTkVfUEFERElORyhfcGFkMV8pCiAKKwlz dHJ1Y3QgbHJ1dmVjCQlscnV2ZWM7CiAJdW5zaWduZWQgbG9uZwkJZmxhZ3M7 CiAKIAlaT05FX1BBRERJTkcoX3BhZDJfKQpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9saW51eC9zd2FwLmggYi9pbmNsdWRlL2xpbnV4L3N3YXAuaAppbmRleCA3 MDM5MzExYzI2OGMuLmYwNGI3NTNhODY4YyAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9saW51eC9zd2FwLmgKKysrIGIvaW5jbHVkZS9saW51eC9zd2FwLmgKQEAg LTM0OSwyNSArMzQ5LDI4IEBAIGV4dGVybiB2b2lkIGxydV9jYWNoZV9hZGRf YWN0aXZlX29yX3VuZXZpY3RhYmxlKHN0cnVjdCBwYWdlICpwYWdlLAogCiBz dGF0aWMgaW5saW5lIHNwaW5sb2NrX3QgKmxydV9sb2NrcHRyKHN0cnVjdCBs cnV2ZWMgKmxydXZlYykKIHsKLQlyZXR1cm4gJmxydXZlY19wZ2RhdChscnV2 ZWMpLT5scnVfbG9jazsKKwkvKgorCSAqIFVzZSBwZXItbWVtY2ctcGVyLW5v ZGUgbHJ1X2xvY2suCisJICogT3IsIHRvIHJldmVydCB0byB1c2luZyBwZXIt bm9kZSBscnVfbG9jaywKKwkgKiByZXR1cm4gJmxydXZlY19wZ2RhdChscnV2 ZWMpLT5scnV2ZWMubHJ1X2xvY2s7CisJICovCisJcmV0dXJuICZscnV2ZWMt PmxydV9sb2NrOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbG9ja19scnV2 ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjKQogewotCXN0cnVjdCBwZ2xpc3Rf ZGF0YSAqcGdkYXQgPSBscnV2ZWNfcGdkYXQobHJ1dmVjKTsKIAl1bnNpZ25l ZCBsb25nIGlycWZsYWdzOwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJnBnZGF0 LT5scnVfbG9jaywgaXJxZmxhZ3MpOwotCXBnZGF0LT5pcnFmbGFncyA9IGly cWZsYWdzOworCXNwaW5fbG9ja19pcnFzYXZlKGxydV9sb2NrcHRyKGxydXZl YyksIGlycWZsYWdzKTsKKwlscnV2ZWMtPmlycWZsYWdzID0gaXJxZmxhZ3M7 CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB1bmxvY2tfbHJ1dmVjKHN0cnVj dCBscnV2ZWMgKmxydXZlYykKIHsKLQlzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBn ZGF0ID0gbHJ1dmVjX3BnZGF0KGxydXZlYyk7CiAJdW5zaWduZWQgbG9uZyBp cnFmbGFnczsKIAotCWlycWZsYWdzID0gcGdkYXQtPmlycWZsYWdzOwotCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJnBnZGF0LT5scnVfbG9jaywgaXJxZmxh Z3MpOworCWlycWZsYWdzID0gbHJ1dmVjLT5pcnFmbGFnczsKKwlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKGxydV9sb2NrcHRyKGxydXZlYyksIGlycWZsYWdz KTsKIH0KIAogI2lmZGVmIENPTkZJR19NRU1DRwpkaWZmIC0tZ2l0IGEvbW0v bWVtY29udHJvbC5jIGIvbW0vbWVtY29udHJvbC5jCmluZGV4IDkwYTdmNjBm NzVmOC4uODk0N2RmNTcwZTMyIDEwMDY0NAotLS0gYS9tbS9tZW1jb250cm9s LmMKKysrIGIvbW0vbWVtY29udHJvbC5jCkBAIC0xMjY4LDE1ICsxMjY4LDE3 IEBAIHZvaWQgcmVsb2NrX3BhZ2VfbHJ1dmVjKHN0cnVjdCBwYWdlICpwYWdl LCBzdHJ1Y3QgbHJ1dmVjICoqbHJ1dnApCiAJCWxydXZlYy0+cGdkYXQgPSBw Z2RhdDsKIAogCS8qCi0JICogRm9yIHRoZSBtb21lbnQsIHNpbXBseSBsb2Nr IGJ5IHBnZGF0IGp1c3QgYXMgYmVmb3JlLgorCSAqIFNvbWV0aW1lcyB3ZSBh cmUgY2FsbGVkIHdpdGggbm9uLU5VTEwgKmxydXZwIHNwaW5sb2NrIGFscmVh ZHkgaGVsZDoKKwkgKiBob2xkIG9uIGlmIHdlIHdhbnQgdGhlIHNhbWUgbG9j ayBhZ2Fpbiwgb3RoZXJ3aXNlIGRyb3AgYW5kIGFjcXVpcmUuCiAJICovCi0J aWYgKCpscnV2cCAmJiAoKmxydXZwKS0+cGdkYXQgIT0gbHJ1dmVjLT5wZ2Rh dCkgeworCWlmICgqbHJ1dnAgJiYgKmxydXZwICE9IGxydXZlYykgewogCQl1 bmxvY2tfbHJ1dmVjKCpscnV2cCk7CiAJCSpscnV2cCA9IE5VTEw7CiAJfQot CWlmICghKmxydXZwKQorCWlmICghKmxydXZwKSB7CisJCSpscnV2cCA9IGxy dXZlYzsKIAkJbG9ja19scnV2ZWMobHJ1dmVjKTsKLQkqbHJ1dnAgPSBscnV2 ZWM7CisJfQogCiAJLyoKIAkgKiBCdXQgcGFnZS0+bWVtX2Nncm91cCBtYXkg aGF2ZSBjaGFuZ2VkIHNpbmNlIHdlIGxvb2tlZC4uLgpkaWZmIC0tZ2l0IGEv bW0vbW16b25lLmMgYi9tbS9tbXpvbmUuYwppbmRleCA0Njg2ZmRjMjNiYjku LjM3NTBhOTBlZDRhMCAxMDA2NDQKLS0tIGEvbW0vbW16b25lLmMKKysrIGIv bW0vbW16b25lLmMKQEAgLTkxLDYgKzkxLDcgQEAgdm9pZCBscnV2ZWNfaW5p dChzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpCiAJZW51bSBscnVfbGlzdCBscnU7 CiAKIAltZW1zZXQobHJ1dmVjLCAwLCBzaXplb2Yoc3RydWN0IGxydXZlYykp OworCXNwaW5fbG9ja19pbml0KCZscnV2ZWMtPmxydV9sb2NrKTsKIAogCWZv cl9lYWNoX2xydShscnUpCiAJCUlOSVRfTElTVF9IRUFEKCZscnV2ZWMtPmxp c3RzW2xydV0pOwpkaWZmIC0tZ2l0IGEvbW0vcGFnZV9hbGxvYy5jIGIvbW0v cGFnZV9hbGxvYy5jCmluZGV4IDEwZjZlNjAwNDBlMS4uYmM4MWY5OTczN2Q1 IDEwMDY0NAotLS0gYS9tbS9wYWdlX2FsbG9jLmMKKysrIGIvbW0vcGFnZV9h bGxvYy5jCkBAIC02Njc3LDcgKzY2NzcsNiBAQCBzdGF0aWMgdm9pZCBfX21l bWluaXQgcGdkYXRfaW5pdF9pbnRlcm5hbHMoc3RydWN0IHBnbGlzdF9kYXRh ICpwZ2RhdCkKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZwZ2RhdC0+cGZtZW1h bGxvY193YWl0KTsKIAogCXBnZGF0X3BhZ2VfZXh0X2luaXQocGdkYXQpOwot CXNwaW5fbG9ja19pbml0KCZwZ2RhdC0+bHJ1X2xvY2spOwogCWxydXZlY19p bml0KCZwZ2RhdC0+bHJ1dmVjKTsKIH0KIAotLSAKMi4yMy4wLjE4Ny5nMTdm NWI3NTU2Yy1nb29nCgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDA4LW1tLW1l bWNnLWFzeW5jLWNvbXBhY3Rpb24tbmVlZHMtdHJ5bG9ja19wYWdlX2xydXZl Yy5wYXRjaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA MDAwMDY0NAAwMzE1MDY2ADAyNTc1MjMAMDAwMDAwMTQwNTMAMTM1MzAwNzY3 NDYAMDI1MjQ3ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAaHVnaGQAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABwcmltYXJ5Z3JvdXAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAEZyb20gZTI2MzJkNzdjY2YwNjQ2YjM5ZTE2YzM4MjNjOGI1ZGY3 ZTdjYzA3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSHVnaCBE aWNraW5zIDxodWdoZEBnb29nbGUuY29tPgpEYXRlOiBTYXQsIDExIEp1biAy MDE2IDIxOjU5OjM2IC0wNzAwClN1YmplY3Q6IFtQQVRDSCA4LzldIG1tL21l bWNnOiBhc3luYyBjb21wYWN0aW9uIG5lZWRzIHRyeWxvY2tfcGFnZV9scnV2 ZWMoKQoKdjMuMTggY29tbWl0IDhiNDRkMjc5MWY5MSAoIm1tLCBjb21wYWN0 aW9uOiBwZXJpb2RpY2FsbHkgZHJvcCBsb2NrIGFuZApyZXN0b3JlIElSUXMg aW4gc2Nhbm5lcnMiKSBtYWRlIGNvbXBhY3RfdHJ5bG9ja19pcnFzYXZlKCkg ZG8gYSBwcm9wZXIKdHJ5bG9jaywgaW5zdGVhZCBvZiB0aGUgZWFybGllciBz cGluX2lzX2NvbnRlbmRlZCgpIGNoZWNraW5nLiAgVGhhdApzZWVtcyBsaWtl IGEgZ29vZCBpbXByb3ZlbWVudCwgYnV0IGl0IGRvZXMgaW52aXRlIGVxdWl2 YWxlbnQgc3VwcG9ydApmcm9tIHJlbG9ja19wYWdlX2xydXZlYygpOiBvdGhl cndpc2Ugd2UgaGF2ZSByZWdyZXNzZWQgY29tcGFjdGlvbgpieSByZW1vdmlu ZyBib3RoIHRoYXQgdHJ5bG9jayBhbmQgdGhlIGVhcmxpZXIgY29udGVudGlv biBjaGVja2luZy4KClNvIG5vdyBtYWtlIHRyeWxvY2tfcGFnZV9scnV2ZWMo cGFnZSwgJmxydXZlYywgYm9vbCB0cnlpbmcpIHRoZSBiYXNpYwpmdW5jdGlv biwgYW5kIHJlbG9ja19wYWdlX2xydXZlYyhwYWdlLCAmbHJ1dmVjKSBhIHdy YXBwZXIgYXJvdW5kIGl0Owpob3BpbmcgdGhhdCB0aGUgbmV3ICJ0cnlpbmci IGJyYW5jaCBkb2VzIG5vdCBkZWdyYWRlIHBlcmZvcm1hbmNlLgoKQnV0IHRo ZXJlJ3MgdGhlbiBhIHNpemVhYmxlIHBpZWNlIG9mIGNvZGUgY29tbW9uIHRv IGl0cyBtYWluIHBhdGgKaW4gbWVtY29udHJvbC5jLCBhbmQgd2hhdCBoYWQg YmV0dGVyIG5vdyBiZSBhbiBvdXQtb2YtbGluZSAjaWZuZGVmCkNPTkZJR19N RU1DRyB2ZXJzaW9uIGluIHN3YXAuYzogYWJzdHJhY3QgdGhhdCBwYXJ0IG91 dCBhcyBhbiBpbmxpbmUKaGVscGVyIF9fdHJ5bG9ja19scnV2ZWMoKSBpbiBz d2FwLmguCgpTaWduZWQtb2ZmLWJ5OiBIdWdoIERpY2tpbnMgPGh1Z2hkQGdv b2dsZS5jb20+CkNjOiBKb2hhbm5lcyBXZWluZXIgPGhhbm5lc0BjbXB4Y2hn Lm9yZz4KQ2M6IE1lbCBHb3JtYW4gPG1nb3JtYW5AdGVjaHNpbmd1bGFyaXR5 Lm5ldD4KQ2M6IFZsYXN0aW1pbCBCYWJrYSA8dmJhYmthQHN1c2UuY3o+CkNj OiBZdSBaaGFvIDx5dXpoYW9AZ29vZ2xlLmNvbT4KQ2M6IEFsZXggU2hpIDxh bGV4LnNoaUBsaW51eC5hbGliYWJhLmNvbT4KLS0tCiBpbmNsdWRlL2xpbnV4 L3N3YXAuaCB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LQogbW0vY29tcGFjdGlvbi5jICAgICAgfCAgNyArKysrKy0tCiBtbS9tZW1j b250cm9sLmMgICAgICB8IDIyICsrKysrKysrKystLS0tLS0tLS0tLS0KIG1t L3N3YXAuYyAgICAgICAgICAgIHwgIDcgKysrKysrKwogNCBmaWxlcyBjaGFu Z2VkLCA0NiBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L3N3YXAuaCBiL2luY2x1ZGUvbGludXgv c3dhcC5oCmluZGV4IGYwNGI3NTNhODY4Yy4uNmI1MTZiYjljYmU1IDEwMDY0 NAotLS0gYS9pbmNsdWRlL2xpbnV4L3N3YXAuaAorKysgYi9pbmNsdWRlL2xp bnV4L3N3YXAuaApAQCAtMzczLDI0ICszNzMsMzkgQEAgc3RhdGljIGlubGlu ZSB2b2lkIHVubG9ja19scnV2ZWMoc3RydWN0IGxydXZlYyAqbHJ1dmVjKQog CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUobHJ1X2xvY2twdHIobHJ1dmVjKSwg aXJxZmxhZ3MpOwogfQogCi0jaWZkZWYgQ09ORklHX01FTUNHCi0vKiBsaW51 eC9tbS9tZW1jb250cm9sLmMgKi8KLWV4dGVybiB2b2lkIHJlbG9ja19wYWdl X2xydXZlYyhzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGxydXZlYyAqKmxy dXZwKTsKLSNlbHNlCi1zdGF0aWMgaW5saW5lIHZvaWQgcmVsb2NrX3BhZ2Vf bHJ1dmVjKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbHJ1dmVjICoqbHJ1 dnApCisvKiBfX3RyeWxvY2tfbHJ1dmVjKCkgaXMgaW5saW5lZCBpbnRvIGVp dGhlciB2ZXJzaW9uIG9mIHBhZ2VfdHJ5bG9ja19scnV2ZWMoKSAqLworc3Rh dGljIGlubGluZSBib29sCitfX3RyeWxvY2tfbHJ1dmVjKHN0cnVjdCBscnV2 ZWMgKmxydXZlYywgc3RydWN0IGxydXZlYyAqKmxydXZwLCBib29sIHRyeWlu ZykKIHsKLQlzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMgPSAmcGFnZV9wZ2RhdChw YWdlKS0+bHJ1dmVjOwotCisJLyoKKwkgKiBTb21ldGltZXMgd2UgYXJlIGNh bGxlZCB3aXRoIG5vbi1OVUxMICpscnV2cCBzcGlubG9jayBhbHJlYWR5IGhl bGQ6CisJICogaG9sZCBvbiBpZiB3ZSB3YW50IHRoZSBzYW1lIGxvY2sgYWdh aW4sIG90aGVyd2lzZSBkcm9wIGFuZCBhY3F1aXJlLgorCSAqLwogCWlmICgq bHJ1dnAgJiYgKmxydXZwICE9IGxydXZlYykgewogCQl1bmxvY2tfbHJ1dmVj KCpscnV2cCk7CiAJCSpscnV2cCA9IE5VTEw7CiAJfQogCWlmICghKmxydXZw KSB7CisJCXNwaW5sb2NrX3QgKmxvY2twdHIgPSBscnVfbG9ja3B0cihscnV2 ZWMpOworCQl1bnNpZ25lZCBsb25nIGlycWZsYWdzOworCisJCWlmIChsaWtl bHkoIXRyeWluZykpCisJCQlzcGluX2xvY2tfaXJxc2F2ZShsb2NrcHRyLCBp cnFmbGFncyk7CisJCWVsc2UgaWYgKCFzcGluX3RyeWxvY2tfaXJxc2F2ZShs b2NrcHRyLCBpcnFmbGFncykpCisJCQlyZXR1cm4gZmFsc2U7CisJCWxydXZl Yy0+aXJxZmxhZ3MgPSBpcnFmbGFnczsKIAkJKmxydXZwID0gbHJ1dmVjOwot CQlsb2NrX2xydXZlYyhscnV2ZWMpOwogCX0KKwlyZXR1cm4gdHJ1ZTsKK30K KworLyogaW4gbGludXgvbW0vbWVtY29udHJvbC5jIG9yIGxpbnV4L21tL3N3 YXAuYyAqLworYm9vbCB0cnlsb2NrX3BhZ2VfbHJ1dmVjKHN0cnVjdCBwYWdl ICpwYWdlLCBzdHJ1Y3QgbHJ1dmVjICoqbHJ1dnAsIGJvb2wgdHJ5aW5nKTsK Kworc3RhdGljIGlubGluZSB2b2lkIHJlbG9ja19wYWdlX2xydXZlYyhzdHJ1 Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGxydXZlYyAqKmxydXZwKQoreworCXRy eWxvY2tfcGFnZV9scnV2ZWMocGFnZSwgbHJ1dnAsIGZhbHNlKTsKIH0KLSNl bmRpZiAvKiBDT05GSUdfTUVNQ0cgKi8KIAogc3RhdGljIGlubGluZSBzdHJ1 Y3QgbHJ1dmVjICpsb2NrX3BhZ2VfbHJ1dmVjKHN0cnVjdCBwYWdlICpwYWdl KQogewpkaWZmIC0tZ2l0IGEvbW0vY29tcGFjdGlvbi5jIGIvbW0vY29tcGFj dGlvbi5jCmluZGV4IGFlMzFhMDkzMjExMS4uNWY1ODk3MWFlZGU3IDEwMDY0 NAotLS0gYS9tbS9jb21wYWN0aW9uLmMKKysrIGIvbW0vY29tcGFjdGlvbi5j CkBAIC05NTUsOCArOTU1LDExIEBAIGlzb2xhdGVfbWlncmF0ZXBhZ2VzX2Js b2NrKHN0cnVjdCBjb21wYWN0X2NvbnRyb2wgKmNjLCB1bnNpZ25lZCBsb25n IGxvd19wZm4sCiAJCWlmICghZ2V0X3BhZ2VfdW5sZXNzX3plcm8ocGFnZSkp CiAJCQlnb3RvIGlzb2xhdGVfZmFpbDsKIAotCQkvKiBUZW1wb3JhcnkgcmVn cmVzc2lvbiBmcm9tIHRyeWxvY2ssIGZpeGVkIGluIGxhdGVyIHBhdGNoICov Ci0JCXJlbG9ja19wYWdlX2xydXZlYyhwYWdlLCAmbHJ1dmVjKTsKKwkJaWYg KCF0cnlsb2NrX3BhZ2VfbHJ1dmVjKHBhZ2UsICZscnV2ZWMsCisJCQkJCSBj Yy0+bW9kZSA9PSBNSUdSQVRFX0FTWU5DKSkgeworCQkJY2MtPmNvbnRlbmRl ZCA9IHRydWU7CisJCQlscnV2ZWMgPSBsb2NrX3BhZ2VfbHJ1dmVjKHBhZ2Up OworCQl9CiAKIAkJLyogVHJ5IGdldCBleGNsdXNpdmUgYWNjZXNzIHVuZGVy IGxvY2sgKi8KIAkJaWYgKCFza2lwX3VwZGF0ZWQpIHsKZGlmZiAtLWdpdCBh L21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wuYwppbmRleCA4OTQ3 ZGY1NzBlMzIuLjFlNmQ2YzAxYWJjNSAxMDA2NDQKLS0tIGEvbW0vbWVtY29u dHJvbC5jCisrKyBiL21tL21lbWNvbnRyb2wuYwpAQCAtMTIyNywxMSArMTIy NywxNSBAQCBpbnQgbWVtX2Nncm91cF9zY2FuX3Rhc2tzKHN0cnVjdCBtZW1f Y2dyb3VwICptZW1jZywKIH0KIAogLyoqCi0gKiByZWxvY2tfcGFnZV9scnV2 ZWMgLSBsb2NrIGFuZCB1cGRhdGUgbHJ1dmVjIGZvciB0aGlzIHBhZ2UsIHVu bG9ja2luZyBwcmV2aW91cworICogdHJ5bG9ja19wYWdlX2xydXZlYyAtIGxv Y2sgb3IgdHJ5bG9jayBscnV2ZWMgZm9yIHBhZ2UsIHVubG9ja2luZyBwcmV2 aW91cwogICogQHBhZ2U6IHRoZSBwYWdlCiAgKiBAbHJ1dnA6IHBvaW50ZXIg dG8gd2hlcmUgdG8gb3V0cHV0IGxydXZlYzsgdW5sb2NrIGlucHV0IGxydXZl YyBpZiBub24tTlVMTAorICogQHRyeWluZzogdXN1YWxseSBmYWxzZSwgYnV0 IHRydWUgdG8gdHJ5bG9jayBpbnN0ZWFkIG9mIGxvY2sKKyAqCisgKiBNb3N0 IGNhbGxlcnMgdXNlIHZvaWQgcGFnZV9yZWxvY2tfbHJ1dmVjKCk6IHBhZ2Vf dHJ5bG9ja19scnV2ZWMoLCxmYWxzZSk7CisgKiBidXQgY29tcGFjdGlvbidz IGlzb2xhdGVfbWlncmF0ZXBhZ2VzX2Jsb2NrKCkgbmVlZHMgdGhlIHRyeWxv Y2suCiAgKi8KLXZvaWQgcmVsb2NrX3BhZ2VfbHJ1dmVjKHN0cnVjdCBwYWdl ICpwYWdlLCBzdHJ1Y3QgbHJ1dmVjICoqbHJ1dnApCitib29sIHRyeWxvY2tf cGFnZV9scnV2ZWMoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBscnV2ZWMg KipscnV2cCwgYm9vbCB0cnlpbmcpCiB7CiAJc3RydWN0IG1lbV9jZ3JvdXAg Km9yaWdfbWVtY2csICptZW1jZzsKIAlzdHJ1Y3QgbHJ1dmVjICpscnV2ZWM7 CkBAIC0xMjY4LDE3ICsxMjcyLDEwIEBAIHZvaWQgcmVsb2NrX3BhZ2VfbHJ1 dmVjKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgbHJ1dmVjICoqbHJ1dnAp CiAJCWxydXZlYy0+cGdkYXQgPSBwZ2RhdDsKIAogCS8qCi0JICogU29tZXRp bWVzIHdlIGFyZSBjYWxsZWQgd2l0aCBub24tTlVMTCAqbHJ1dnAgc3Bpbmxv Y2sgYWxyZWFkeSBoZWxkOgotCSAqIGhvbGQgb24gaWYgd2Ugd2FudCB0aGUg c2FtZSBsb2NrIGFnYWluLCBvdGhlcndpc2UgZHJvcCBhbmQgYWNxdWlyZS4K KwkgKiBJZiBscnV2ZWMgZGlmZmVycyBmcm9tICpscnV2cCwgZHJvcCAqbHJ1 dnAgbG9jayBhbmQKKwkgKiB0YWtlIGxydXZlYyBsb2NrOiBzZWUgaW5saW5l IGluIGluY2x1ZGUvbGludXgvc3dhcC5oLgogCSAqLwotCWlmICgqbHJ1dnAg JiYgKmxydXZwICE9IGxydXZlYykgewotCQl1bmxvY2tfbHJ1dmVjKCpscnV2 cCk7Ci0JCSpscnV2cCA9IE5VTEw7Ci0JfQotCWlmICghKmxydXZwKSB7Ci0J CSpscnV2cCA9IGxydXZlYzsKLQkJbG9ja19scnV2ZWMobHJ1dmVjKTsKLQl9 CisJX190cnlsb2NrX2xydXZlYyhscnV2ZWMsIGxydXZwLCB0cnlpbmcpOwog CiAJLyoKIAkgKiBCdXQgcGFnZS0+bWVtX2Nncm91cCBtYXkgaGF2ZSBjaGFu Z2VkIHNpbmNlIHdlIGxvb2tlZC4uLgpAQCAtMTI4Nyw2ICsxMjg0LDcgQEAg dm9pZCByZWxvY2tfcGFnZV9scnV2ZWMoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0 cnVjdCBscnV2ZWMgKipscnV2cCkKIAkJZ290byBhZ2FpbjsKIAogCXJjdV9y ZWFkX3VubG9jaygpOworCXJldHVybiAqbHJ1dnAgIT0gTlVMTDsKIH0KIAog LyoqCmRpZmYgLS1naXQgYS9tbS9zd2FwLmMgYi9tbS9zd2FwLmMKaW5kZXgg NDg3Zjc0OGIyYzkwLi5mNjkxNjIxMzBjZjggMTAwNjQ0Ci0tLSBhL21tL3N3 YXAuYworKysgYi9tbS9zd2FwLmMKQEAgLTUyLDYgKzUyLDEzIEBAIHN0YXRp YyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgcGFnZXZlYywgbHJ1X2xhenlmcmVl X3B2ZWNzKTsKIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgcGFnZXZl YywgYWN0aXZhdGVfcGFnZV9wdmVjcyk7CiAjZW5kaWYKIAorI2lmbmRlZiBD T05GSUdfTUVNQ0cKK2Jvb2wgdHJ5bG9ja19wYWdlX2xydXZlYyhzdHJ1Y3Qg cGFnZSAqcGFnZSwgc3RydWN0IGxydXZlYyAqKmxydXZwLCBib29sIHRyeWlu ZykKK3sKKwlyZXR1cm4gX190cnlsb2NrX2xydXZlYygmcGFnZV9wZ2RhdChw YWdlKS0+bHJ1dmVjLCBscnV2cCwgdHJ5aW5nKTsKK30KKyNlbmRpZgorCiAv KgogICogVGhpcyBwYXRoIGFsbW9zdCBuZXZlciBoYXBwZW5zIGZvciBWTSBh Y3Rpdml0eSAtIHBhZ2VzIGFyZSBub3JtYWxseQogICogZnJlZWQgdmlhIHBh Z2V2ZWNzLiAgQnV0IGl0IGdldHMgdXNlZCBieSBuZXR3b3JraW5nLgotLSAK Mi4yMy4wLjE4Ny5nMTdmNWI3NTU2Yy1nb29nCgoAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAMDAwOS1tbS1tZW1jZy11cGRhdGUtbHJ1X2xvY2stRG9jLWFuZC1jb21t ZW50cy5wYXRjaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAADAwMDA2NDQAMDMxNTA2NgAwMjU3NTIzADAwMDAwMDM3 MzAxADEzNTMwMDc2NzQ2ADAyMzAyNQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGh1 Z2hkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHJpbWFyeWdyb3VwAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAABGcm9tIGFmMzcyZGUxODU1ZGVlZWMzMDkx MmUxZDhhNmMyZTE2NDk1MWU0OWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IEh1Z2ggRGlja2lucyA8aHVnaGRAZ29vZ2xlLmNvbT4KRGF0ZTog VHVlLCAxMiBKdW4gMjAxMiAxNTo0NzowMiAtMDcwMApTdWJqZWN0OiBbUEFU Q0ggOS85XSBtbS9tZW1jZzogdXBkYXRlIGxydV9sb2NrIERvYyBhbmQgY29t bWVudHMKClVwZGF0ZSBzY2F0dGVyZWQgcmVmZXJlbmNlcyBmcm9tICJ6b25l X2xydV9sb2NrIiB0byAibHJ1dmVjLT5scnVfbG9jayIKKGluIGxvdy1sZXZl bCBkZXNjcmlwdGlvbnMpIG9yICJscnV2ZWMgbG9jayIgKHdoZXJlIHRoYXQg cmVhZHMgYmV0dGVyKS4KCkluIHRoZSBjb3Vyc2Ugb2YgZG9pbmcgc28sIHVw ZGF0ZSBsb2NrIG9yZGVyaW5nIGNvbW1lbnRzIGluIG1tL3JtYXAuYwphbmQg bW0vZmlsZW1hcC5jIGFuZCBEb2N1bWVudGF0aW9uL2Nncm91cHMvbWVtb3J5 LnR4dCAtIHNsaWdodGx5LCB3aXRoCm5vIGF0dGVtcHQgdG8gYmUgY29tcGxl dGUgKHN3YXBfbG9jaywgaW4gcGFydGljdWxhciwgbGVmdCBvdXQtb2YtZGF0 ZSkuClJlbW92ZSBhbGx1c2lvbnMgdG8gc2V0X3BhZ2VfZGlydHkgdW5kZXIg cGFnZV9yZW1vdmVfcm1hcDogZ29uZSBpbiB2My45LgoKbWVtY2dfdGVzdC50 eHQgbG9va3MgcXVpdGUgb3V0LW9mLWRhdGU6IGp1c3QgZ2l2ZSBMUlUgYSBz aG9ydCBwYXJhZ3JhcGguClJlcGxhY2VkIHpvbmUgYnkgbm9kZSB0aHJvdWdo b3V0IHVuZXZpY3RhYmxlLWxydS50eHQgKGV4Y2VwdCBmb3Igc3RhdHMpLgpM ZWF2ZSBEb2N1bWVudGF0aW9uL2xvY2tpbmcvbG9ja3N0YXQudHh0IHVudG91 Y2hlZCB0aGlzIHRpbWU6IGl0IGRvZXNuJ3QKbWF0dGVyIGlmIHRoYXQgc3Rp bGwgcmVmZXJzIHRvIHpvbmUtPmxydV9sb2NrLCBhbG9uZyB3aXRoIG90aGVy IGhpc3RvcnkuCgpJIHN0cnVnZ2xlZCB0byB1bmRlcnN0YW5kIHRoZSBjb21t ZW50IGFib3ZlIG1vdmVfcGFnZXNfdG9fbHJ1KCkgKHN1cmVseQppdCBuZXZl ciBjYWxscyBwYWdlX3JlZmVyZW5jZWQoKSksIGFuZCBldmVudHVhbGx5IHJl YWxpemVkIHRoYXQgbW9zdCBvZgppdCBoYWQgZ290IHNlcGFyYXRlZCBmcm9t IHNocmlua19hY3RpdmVfbGlzdCgpOiBtb3ZlIHRoYXQgY29tbWVudCBiYWNr LgoKU2lnbmVkLW9mZi1ieTogSHVnaCBEaWNraW5zIDxodWdoZEBnb29nbGUu Y29tPgpDYzogSm9oYW5uZXMgV2VpbmVyIDxoYW5uZXNAY21weGNoZy5vcmc+ CkNjOiBNZWwgR29ybWFuIDxtZ29ybWFuQHRlY2hzaW5ndWxhcml0eS5uZXQ+ CkNjOiBWbGFzdGltaWwgQmFia2EgPHZiYWJrYUBzdXNlLmN6PgpDYzogS2ly aWxsIFRraGFpIDxrdGtoYWlAdmlydHVvenpvLmNvbT4KQ2M6IFl1IFpoYW8g PHl1emhhb0Bnb29nbGUuY29tPgpDYzogQWxleCBTaGkgPGFsZXguc2hpQGxp bnV4LmFsaWJhYmEuY29tPgotLS0KIC4uLi9hZG1pbi1ndWlkZS9jZ3JvdXAt djEvbWVtY2dfdGVzdC5yc3QgICAgICB8IDE1ICsrLS0tLS0KIC4uLi9hZG1p bi1ndWlkZS9jZ3JvdXAtdjEvbWVtb3J5LnJzdCAgICAgICAgICB8IDI2ICsr KysrKy0tLS0tLQogRG9jdW1lbnRhdGlvbi90cmFjZS9ldmVudHMta21lbS5y c3QgICAgICAgICAgIHwgIDIgKy0KIERvY3VtZW50YXRpb24vdm0vdW5ldmlj dGFibGUtbHJ1LnJzdCAgICAgICAgICB8IDIyICsrKystLS0tLS0KIGluY2x1 ZGUvbGludXgvbW1fdHlwZXMuaCAgICAgICAgICAgICAgICAgICAgICB8ICAy ICstCiBtbS9maWxlbWFwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgOCArLS0tCiBtbS9tZW1jb250cm9sLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgNCArLQogbW0vcm1hcC5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKy0tLS0KIG1t L3Ztc2Nhbi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDQxICsrKysrKysrKystLS0tLS0tLS0KIDkgZmlsZXMgY2hhbmdlZCwgNTcg aW5zZXJ0aW9ucygrKSwgNzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv RG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjEvbWVtY2dfdGVz dC5yc3QgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12MS9t ZW1jZ190ZXN0LnJzdAppbmRleCAzZjcxMTVlMDdiNWQuLjBiOWY5MTU4OWQz ZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3Jv dXAtdjEvbWVtY2dfdGVzdC5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi9hZG1p bi1ndWlkZS9jZ3JvdXAtdjEvbWVtY2dfdGVzdC5yc3QKQEAgLTEzMywxOCAr MTMzLDkgQEAgVW5kZXIgYmVsb3cgZXhwbGFuYXRpb24sIHdlIGFzc3VtZSBD T05GSUdfTUVNX1JFU19DVFJMX1NXQVA9eS4KIAogOC4gTFJVCiA9PT09PT0K LSAgICAgICAgRWFjaCBtZW1jZyBoYXMgaXRzIG93biBwcml2YXRlIExSVS4g Tm93LCBpdHMgaGFuZGxpbmcgaXMgdW5kZXIgZ2xvYmFsCi0JVk0ncyBjb250 cm9sIChtZWFucyB0aGF0IGl0J3MgaGFuZGxlZCB1bmRlciBnbG9iYWwgcGdk YXQtPmxydV9sb2NrKS4KLQlBbG1vc3QgYWxsIHJvdXRpbmVzIGFyb3VuZCBt ZW1jZydzIExSVSBpcyBjYWxsZWQgYnkgZ2xvYmFsIExSVSdzCi0JbGlzdCBt YW5hZ2VtZW50IGZ1bmN0aW9ucyB1bmRlciBwZ2RhdC0+bHJ1X2xvY2suCi0K LQlBIHNwZWNpYWwgZnVuY3Rpb24gaXMgbWVtX2Nncm91cF9pc29sYXRlX3Bh Z2VzKCkuIFRoaXMgc2NhbnMKLQltZW1jZydzIHByaXZhdGUgTFJVIGFuZCBj YWxsIF9faXNvbGF0ZV9scnVfcGFnZSgpIHRvIGV4dHJhY3QgYSBwYWdlCi0J ZnJvbSBMUlUuCi0KLQkoQnkgX19pc29sYXRlX2xydV9wYWdlKCksIHRoZSBw YWdlIGlzIHJlbW92ZWQgZnJvbSBib3RoIG9mIGdsb2JhbCBhbmQKLQlwcml2 YXRlIExSVS4pCi0KKwlFYWNoIG1lbWNnIGhhcyBpdHMgb3duIHZlY3RvciBv ZiBMUlVzIChpbmFjdGl2ZSBhbm9uLCBhY3RpdmUgYW5vbiwKKwlpbmFjdGl2 ZSBmaWxlLCBhY3RpdmUgZmlsZSwgdW5ldmljdGFibGUpIG9mIHBhZ2VzIGZy b20gZWFjaCBub2RlLAorCWVhY2ggTFJVIGhhbmRsZWQgdW5kZXIgYSBzaW5n bGUgbHJ1X2xvY2sgZm9yIHRoYXQgbWVtY2cgYW5kIG5vZGUuCiAKIDkuIFR5 cGljYWwgVGVzdHMuCiA9PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEv RG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjEvbWVtb3J5LnJz dCBiL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYxL21lbW9y eS5yc3QKaW5kZXggNDFiZGMwMzhkYWQ5Li41ODg4ZTVkMjYzNTcgMTAwNjQ0 Ci0tLSBhL0RvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYxL21l bW9yeS5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3Jv dXAtdjEvbWVtb3J5LnJzdApAQCAtMjg4LDIwICsyODgsMTggQEAgV2hlbiBv b20gZXZlbnQgbm90aWZpZXIgaXMgcmVnaXN0ZXJlZCwgZXZlbnQgd2lsbCBi ZSBkZWxpdmVyZWQuCiAyLjYgTG9ja2luZwogLS0tLS0tLS0tLS0KIAotICAg bG9ja19wYWdlX2Nncm91cCgpL3VubG9ja19wYWdlX2Nncm91cCgpIHNob3Vs ZCBub3QgYmUgY2FsbGVkIHVuZGVyCi0gICB0aGUgaV9wYWdlcyBsb2NrLgot Ci0gICBPdGhlciBsb2NrIG9yZGVyIGlzIGZvbGxvd2luZzoKLQotICAgUEdf bG9ja2VkLgotICAgICBtbS0+cGFnZV90YWJsZV9sb2NrCi0gICAgICAgICBw Z2RhdC0+bHJ1X2xvY2sKLQkgICBsb2NrX3BhZ2VfY2dyb3VwLgotCi0gIElu IG1hbnkgY2FzZXMsIGp1c3QgbG9ja19wYWdlX2Nncm91cCgpIGlzIGNhbGxl ZC4KLQotICBwZXItem9uZS1wZXItY2dyb3VwIExSVSAoY2dyb3VwJ3MgcHJp dmF0ZSBMUlUpIGlzIGp1c3QgZ3VhcmRlZCBieQotICBwZ2RhdC0+bHJ1X2xv Y2ssIGl0IGhhcyBubyBsb2NrIG9mIGl0cyBvd24uCitMb2NrIG9yZGVyIGlz IGFzIGZvbGxvd3M6CisKK21tLT5tbWFwX3NlbQorICBwYWdlLT5QR19sb2Nr ZWQKKyAgICBtYXBwaW5nLT5pX21tYXBfcndzZW0KKyAgICAgIGFub25fdm1h LT5yd3NlbQorICAgICAgICBtbS0+cGFnZV90YWJsZV9sb2NrIG9yIHB0ZSBs b2NrCisgICAgICAgICAgbHJ1dmVjLT5scnVfbG9jaworICAgICAgICAgICAg bWVtY2ctPm1vdmVfbG9jaworICAgICAgICAgICAgICBtYXBwaW5nLT5pX3Bh Z2VzIGxvY2sKKworUGVyLW1lbWNnIHBlci1ub2RlIExSVSAoY2dyb3VwJ3Mg cHJpdmF0ZSBMUlUpIGlzIGd1YXJkZWQgYnkgbHJ1dmVjLT5scnVfbG9jay4K IAogMi43IEtlcm5lbCBNZW1vcnkgRXh0ZW5zaW9uIChDT05GSUdfTUVNQ0df S01FTSkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RyYWNlL2V2 ZW50cy1rbWVtLnJzdCBiL0RvY3VtZW50YXRpb24vdHJhY2UvZXZlbnRzLWtt ZW0ucnN0CmluZGV4IDU1NTQ4NDExMGUzNi4uNjhmYTc1MjQ3NDg4IDEwMDY0 NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RyYWNlL2V2ZW50cy1rbWVtLnJzdAor KysgYi9Eb2N1bWVudGF0aW9uL3RyYWNlL2V2ZW50cy1rbWVtLnJzdApAQCAt NjksNyArNjksNyBAQCBXaGVuIHBhZ2VzIGFyZSBmcmVlZCBpbiBiYXRjaCwg dGhlIGFsc28gbW1fcGFnZV9mcmVlX2JhdGNoZWQgaXMgdHJpZ2dlcmVkLgog QnJvYWRseSBzcGVha2luZywgcGFnZXMgYXJlIHRha2VuIG9mZiB0aGUgTFJV IGxvY2sgaW4gYnVsayBhbmQKIGZyZWVkIGluIGJhdGNoIHdpdGggYSBwYWdl IGxpc3QuIFNpZ25pZmljYW50IGFtb3VudHMgb2YgYWN0aXZpdHkgaGVyZSBj b3VsZAogaW5kaWNhdGUgdGhhdCB0aGUgc3lzdGVtIGlzIHVuZGVyIG1lbW9y eSBwcmVzc3VyZSBhbmQgY2FuIGFsc28gaW5kaWNhdGUKLWNvbnRlbnRpb24g b24gdGhlIHpvbmUtPmxydV9sb2NrLgorY29udGVudGlvbiBvbiB0aGUgbHJ1 dmVjLT5scnVfbG9jay4KIAogNC4gUGVyLUNQVSBBbGxvY2F0b3IgQWN0aXZp dHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQg YS9Eb2N1bWVudGF0aW9uL3ZtL3VuZXZpY3RhYmxlLWxydS5yc3QgYi9Eb2N1 bWVudGF0aW9uL3ZtL3VuZXZpY3RhYmxlLWxydS5yc3QKaW5kZXggMTdkMDg2 MWIwZjFkLi4wZTE0OTA1MjRmNTMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRp b24vdm0vdW5ldmljdGFibGUtbHJ1LnJzdAorKysgYi9Eb2N1bWVudGF0aW9u L3ZtL3VuZXZpY3RhYmxlLWxydS5yc3QKQEAgLTMzLDcgKzMzLDcgQEAgcmVj bGFpbSBpbiBMaW51eC4gIFRoZSBwcm9ibGVtcyBoYXZlIGJlZW4gb2JzZXJ2 ZWQgYXQgY3VzdG9tZXIgc2l0ZXMgb24gbGFyZ2UKIG1lbW9yeSB4ODZfNjQg c3lzdGVtcy4KIAogVG8gaWxsdXN0cmF0ZSB0aGlzIHdpdGggYW4gZXhhbXBs ZSwgYSBub24tTlVNQSB4ODZfNjQgcGxhdGZvcm0gd2l0aCAxMjhHQiBvZgot bWFpbiBtZW1vcnkgd2lsbCBoYXZlIG92ZXIgMzIgbWlsbGlvbiA0ayBwYWdl cyBpbiBhIHNpbmdsZSB6b25lLiAgV2hlbiBhIGxhcmdlCittYWluIG1lbW9y eSB3aWxsIGhhdmUgb3ZlciAzMiBtaWxsaW9uIDRrIHBhZ2VzIGluIGEgc2lu Z2xlIG5vZGUuICBXaGVuIGEgbGFyZ2UKIGZyYWN0aW9uIG9mIHRoZXNlIHBh Z2VzIGFyZSBub3QgZXZpY3RhYmxlIGZvciBhbnkgcmVhc29uIFtzZWUgYmVs b3ddLCB2bXNjYW4KIHdpbGwgc3BlbmQgYSBsb3Qgb2YgdGltZSBzY2Fubmlu ZyB0aGUgTFJVIGxpc3RzIGxvb2tpbmcgZm9yIHRoZSBzbWFsbCBmcmFjdGlv bgogb2YgcGFnZXMgdGhhdCBhcmUgZXZpY3RhYmxlLiAgVGhpcyBjYW4gcmVz dWx0IGluIGEgc2l0dWF0aW9uIHdoZXJlIGFsbCBDUFVzIGFyZQpAQCAtNTUs NyArNTUsNyBAQCB1bmV2aWN0YWJsZSwgZWl0aGVyIGJ5IGRlZmluaXRpb24g b3IgYnkgY2lyY3Vtc3RhbmNlLCBpbiB0aGUgZnV0dXJlLgogVGhlIFVuZXZp Y3RhYmxlIFBhZ2UgTGlzdAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog Ci1UaGUgVW5ldmljdGFibGUgTFJVIGluZnJhc3RydWN0dXJlIGNvbnNpc3Rz IG9mIGFuIGFkZGl0aW9uYWwsIHBlci16b25lLCBMUlUgbGlzdAorVGhlIFVu ZXZpY3RhYmxlIExSVSBpbmZyYXN0cnVjdHVyZSBjb25zaXN0cyBvZiBhbiBh ZGRpdGlvbmFsLCBwZXItbm9kZSwgTFJVIGxpc3QKIGNhbGxlZCB0aGUgInVu ZXZpY3RhYmxlIiBsaXN0IGFuZCBhbiBhc3NvY2lhdGVkIHBhZ2UgZmxhZywg UEdfdW5ldmljdGFibGUsIHRvCiBpbmRpY2F0ZSB0aGF0IHRoZSBwYWdlIGlz IGJlaW5nIG1hbmFnZWQgb24gdGhlIHVuZXZpY3RhYmxlIGxpc3QuCiAKQEAg LTg0LDE1ICs4NCw5IEBAIFRoZSB1bmV2aWN0YWJsZSBsaXN0IGRvZXMgbm90 IGRpZmZlcmVudGlhdGUgYmV0d2VlbiBmaWxlLWJhY2tlZCBhbmQgYW5vbnlt b3VzLAogc3dhcC1iYWNrZWQgcGFnZXMuICBUaGlzIGRpZmZlcmVudGlhdGlv biBpcyBvbmx5IGltcG9ydGFudCB3aGlsZSB0aGUgcGFnZXMgYXJlLAogaW4g ZmFjdCwgZXZpY3RhYmxlLgogCi1UaGUgdW5ldmljdGFibGUgbGlzdCBiZW5l Zml0cyBmcm9tIHRoZSAiYXJyYXlpZmljYXRpb24iIG9mIHRoZSBwZXItem9u ZSBMUlUKK1RoZSB1bmV2aWN0YWJsZSBsaXN0IGJlbmVmaXRzIGZyb20gdGhl ICJhcnJheWlmaWNhdGlvbiIgb2YgdGhlIHBlci1ub2RlIExSVQogbGlzdHMg YW5kIHN0YXRpc3RpY3Mgb3JpZ2luYWxseSBwcm9wb3NlZCBhbmQgcG9zdGVk IGJ5IENocmlzdG9waCBMYW1ldGVyLgogCi1UaGUgdW5ldmljdGFibGUgbGlz dCBkb2VzIG5vdCB1c2UgdGhlIExSVSBwYWdldmVjIG1lY2hhbmlzbS4gUmF0 aGVyLAotdW5ldmljdGFibGUgcGFnZXMgYXJlIHBsYWNlZCBkaXJlY3RseSBv biB0aGUgcGFnZSdzIHpvbmUncyB1bmV2aWN0YWJsZSBsaXN0Ci11bmRlciB0 aGUgem9uZSBscnVfbG9jay4gIFRoaXMgYWxsb3dzIHVzIHRvIHByZXZlbnQg dGhlIHN0cmFuZGluZyBvZiBwYWdlcyBvbgotdGhlIHVuZXZpY3RhYmxlIGxp c3Qgd2hlbiBvbmUgdGFzayBoYXMgdGhlIHBhZ2UgaXNvbGF0ZWQgZnJvbSB0 aGUgTFJVIGFuZCBvdGhlcgotdGFza3MgYXJlIGNoYW5naW5nIHRoZSAiZXZp Y3RhYmlsaXR5IiBzdGF0ZSBvZiB0aGUgcGFnZS4KLQogCiBNZW1vcnkgQ29u dHJvbCBHcm91cCBJbnRlcmFjdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KQEAgLTEwMSw4ICs5NSw4IEBAIFRoZSB1bmV2aWN0YWJs ZSBMUlUgZmFjaWxpdHkgaW50ZXJhY3RzIHdpdGggdGhlIG1lbW9yeSBjb250 cm9sIGdyb3VwIFtha2EKIG1lbW9yeSBjb250cm9sbGVyOyBzZWUgRG9jdW1l bnRhdGlvbi9hZG1pbi1ndWlkZS9jZ3JvdXAtdjEvbWVtb3J5LnJzdF0gYnkg ZXh0ZW5kaW5nIHRoZQogbHJ1X2xpc3QgZW51bS4KIAotVGhlIG1lbW9yeSBj b250cm9sbGVyIGRhdGEgc3RydWN0dXJlIGF1dG9tYXRpY2FsbHkgZ2V0cyBh IHBlci16b25lIHVuZXZpY3RhYmxlCi1saXN0IGFzIGEgcmVzdWx0IG9mIHRo ZSAiYXJyYXlpZmljYXRpb24iIG9mIHRoZSBwZXItem9uZSBMUlUgbGlzdHMg KG9uZSBwZXIKK1RoZSBtZW1vcnkgY29udHJvbGxlciBkYXRhIHN0cnVjdHVy ZSBhdXRvbWF0aWNhbGx5IGdldHMgYSBwZXItbm9kZSB1bmV2aWN0YWJsZQor bGlzdCBhcyBhIHJlc3VsdCBvZiB0aGUgImFycmF5aWZpY2F0aW9uIiBvZiB0 aGUgcGVyLW5vZGUgTFJVIGxpc3RzIChvbmUgcGVyCiBscnVfbGlzdCBlbnVt IGVsZW1lbnQpLiAgVGhlIG1lbW9yeSBjb250cm9sbGVyIHRyYWNrcyB0aGUg bW92ZW1lbnQgb2YgcGFnZXMgdG8KIGFuZCBmcm9tIHRoZSB1bmV2aWN0YWJs ZSBsaXN0LgogCkBAIC0xOTYsNyArMTkwLDcgQEAgZm9yIHRoZSBzYWtlIG9m IGV4cGVkaWVuY3ksIHRvIGxlYXZlIGEgdW5ldmljdGFibGUgcGFnZSBvbiBv bmUgb2YgdGhlIHJlZ3VsYXIKIGFjdGl2ZS9pbmFjdGl2ZSBMUlUgbGlzdHMg Zm9yIHZtc2NhbiB0byBkZWFsIHdpdGguICB2bXNjYW4gY2hlY2tzIGZvciBz dWNoCiBwYWdlcyBpbiBhbGwgb2YgdGhlIHNocmlua197YWN0aXZlfGluYWN0 aXZlfHBhZ2V9X2xpc3QoKSBmdW5jdGlvbnMgYW5kIHdpbGwKICJjdWxsIiBz dWNoIHBhZ2VzIHRoYXQgaXQgZW5jb3VudGVyczogdGhhdCBpcywgaXQgZGl2 ZXJ0cyB0aG9zZSBwYWdlcyB0byB0aGUKLXVuZXZpY3RhYmxlIGxpc3QgZm9y IHRoZSB6b25lIGJlaW5nIHNjYW5uZWQuCit1bmV2aWN0YWJsZSBsaXN0IGZv ciB0aGUgbm9kZSBiZWluZyBzY2FubmVkLgogCiBUaGVyZSBtYXkgYmUgc2l0 dWF0aW9ucyB3aGVyZSBhIHBhZ2UgaXMgbWFwcGVkIGludG8gYSBWTV9MT0NL RUQgVk1BLCBidXQgdGhlCiBwYWdlIGlzIG5vdCBtYXJrZWQgYXMgUEdfbWxv Y2tlZC4gIFN1Y2ggcGFnZXMgd2lsbCBtYWtlIGl0IGFsbCB0aGUgd2F5IHRv CkBAIC0zMjgsNyArMzIyLDcgQEAgSWYgdGhlIHBhZ2Ugd2FzIE5PVCBhbHJl YWR5IG1sb2NrZWQsIG1sb2NrX3ZtYV9wYWdlKCkgYXR0ZW1wdHMgdG8gaXNv bGF0ZSB0aGUKIHBhZ2UgZnJvbSB0aGUgTFJVLCBhcyBpdCBpcyBsaWtlbHkg b24gdGhlIGFwcHJvcHJpYXRlIGFjdGl2ZSBvciBpbmFjdGl2ZSBsaXN0CiBh dCB0aGF0IHRpbWUuICBJZiB0aGUgaXNvbGF0ZV9scnVfcGFnZSgpIHN1Y2Nl ZWRzLCBtbG9ja192bWFfcGFnZSgpIHdpbGwgcHV0CiBiYWNrIHRoZSBwYWdl IC0gYnkgY2FsbGluZyBwdXRiYWNrX2xydV9wYWdlKCkgLSB3aGljaCB3aWxs IG5vdGljZSB0aGF0IHRoZSBwYWdlCi1pcyBub3cgbWxvY2tlZCBhbmQgZGl2 ZXJ0IHRoZSBwYWdlIHRvIHRoZSB6b25lJ3MgdW5ldmljdGFibGUgbGlzdC4g IElmCitpcyBub3cgbWxvY2tlZCBhbmQgZGl2ZXJ0IHRoZSBwYWdlIHRvIHRo ZSBub2RlJ3MgdW5ldmljdGFibGUgbGlzdC4gIElmCiBtbG9ja192bWFfcGFn ZSgpIGlzIHVuYWJsZSB0byBpc29sYXRlIHRoZSBwYWdlIGZyb20gdGhlIExS VSwgdm1zY2FuIHdpbGwgaGFuZGxlCiBpdCBsYXRlciBpZiBhbmQgd2hlbiBp dCBhdHRlbXB0cyB0byByZWNsYWltIHRoZSBwYWdlLgogCkBAIC02MDMsNyAr NTk3LDcgQEAgU29tZSBleGFtcGxlcyBvZiB0aGVzZSB1bmV2aWN0YWJsZSBw YWdlcyBvbiB0aGUgTFJVIGxpc3RzIGFyZToKICAgICAgdW5ldmljdGFibGUg bGlzdCBpbiBtbG9ja192bWFfcGFnZSgpLgogCiBzaHJpbmtfaW5hY3RpdmVf bGlzdCgpIGFsc28gZGl2ZXJ0cyBhbnkgdW5ldmljdGFibGUgcGFnZXMgdGhh dCBpdCBmaW5kcyBvbiB0aGUKLWluYWN0aXZlIGxpc3RzIHRvIHRoZSBhcHBy b3ByaWF0ZSB6b25lJ3MgdW5ldmljdGFibGUgbGlzdC4KK2luYWN0aXZlIGxp c3RzIHRvIHRoZSBhcHByb3ByaWF0ZSBub2RlJ3MgdW5ldmljdGFibGUgbGlz dC4KIAogc2hyaW5rX2luYWN0aXZlX2xpc3QoKSBzaG91bGQgb25seSBzZWUg U0hNX0xPQ0snZCBwYWdlcyB0aGF0IGJlY2FtZSBTSE1fTE9DSydkCiBhZnRl ciBzaHJpbmtfYWN0aXZlX2xpc3QoKSBoYWQgbW92ZWQgdGhlbSB0byB0aGUg aW5hY3RpdmUgbGlzdCwgb3IgcGFnZXMgbWFwcGVkCmRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L21tX3R5cGVzLmggYi9pbmNsdWRlL2xpbnV4L21tX3R5 cGVzLmgKaW5kZXggNmE3YTEwODNiNmZiLi5mOWY5OTBkOGYwOGYgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaAorKysgYi9pbmNsdWRl L2xpbnV4L21tX3R5cGVzLmgKQEAgLTc5LDcgKzc5LDcgQEAgc3RydWN0IHBh Z2UgewogCQlzdHJ1Y3QgewkvKiBQYWdlIGNhY2hlIGFuZCBhbm9ueW1vdXMg cGFnZXMgKi8KIAkJCS8qKgogCQkJICogQGxydTogUGFnZW91dCBsaXN0LCBl Zy4gYWN0aXZlX2xpc3QgcHJvdGVjdGVkIGJ5Ci0JCQkgKiBwZ2RhdC0+bHJ1 X2xvY2suICBTb21ldGltZXMgdXNlZCBhcyBhIGdlbmVyaWMgbGlzdAorCQkJ ICogbHJ1dmVjLT5scnVfbG9jay4gIFNvbWV0aW1lcyB1c2VkIGFzIGEgZ2Vu ZXJpYyBsaXN0CiAJCQkgKiBieSB0aGUgcGFnZSBvd25lci4KIAkJCSAqLwog CQkJc3RydWN0IGxpc3RfaGVhZCBscnU7CmRpZmYgLS1naXQgYS9tbS9maWxl bWFwLmMgYi9tbS9maWxlbWFwLmMKaW5kZXggZDBjZjcwMGJmMjAxLi5hNGYw Zjk5ZGFhZjYgMTAwNjQ0Ci0tLSBhL21tL2ZpbGVtYXAuYworKysgYi9tbS9m aWxlbWFwLmMKQEAgLTEwMCwxMiArMTAwLDggQEAKICAqICAgIC0+c3dhcF9s b2NrCQkodHJ5X3RvX3VubWFwX29uZSkKICAqICAgIC0+cHJpdmF0ZV9sb2Nr CQkodHJ5X3RvX3VubWFwX29uZSkKICAqICAgIC0+aV9wYWdlcyBsb2NrCQko dHJ5X3RvX3VubWFwX29uZSkKLSAqICAgIC0+cGdkYXQtPmxydV9sb2NrCQko Zm9sbG93X3BhZ2UtPm1hcmtfcGFnZV9hY2Nlc3NlZCkKLSAqICAgIC0+cGdk YXQtPmxydV9sb2NrCQkoY2hlY2tfcHRlX3JhbmdlLT5pc29sYXRlX2xydV9w YWdlKQotICogICAgLT5wcml2YXRlX2xvY2sJCShwYWdlX3JlbW92ZV9ybWFw LT5zZXRfcGFnZV9kaXJ0eSkKLSAqICAgIC0+aV9wYWdlcyBsb2NrCQkocGFn ZV9yZW1vdmVfcm1hcC0+c2V0X3BhZ2VfZGlydHkpCi0gKiAgICBiZGkud2It Pmxpc3RfbG9jawkJKHBhZ2VfcmVtb3ZlX3JtYXAtPnNldF9wYWdlX2RpcnR5 KQotICogICAgLT5pbm9kZS0+aV9sb2NrCQkocGFnZV9yZW1vdmVfcm1hcC0+ c2V0X3BhZ2VfZGlydHkpCisgKiAgICAtPmxydXZlYy0+bHJ1X2xvY2sJKGZv bGxvd19wYWdlX3B0ZS0+bWFya19wYWdlX2FjY2Vzc2VkKQorICogICAgLT5s cnV2ZWMtPmxydV9sb2NrCShxdWV1ZV9wYWdlc19wdGVfcmFuZ2UtPmlzb2xh dGVfbHJ1X3BhZ2UpCiAgKiAgICAtPm1lbWNnLT5tb3ZlX2xvY2sJKHBhZ2Vf cmVtb3ZlX3JtYXAtPmxvY2tfcGFnZV9tZW1jZykKICAqICAgIGJkaS53Yi0+ bGlzdF9sb2NrCQkoemFwX3B0ZV9yYW5nZS0+c2V0X3BhZ2VfZGlydHkpCiAg KiAgICAtPmlub2RlLT5pX2xvY2sJCSh6YXBfcHRlX3JhbmdlLT5zZXRfcGFn ZV9kaXJ0eSkKZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21l bWNvbnRyb2wuYwppbmRleCAxZTZkNmMwMWFiYzUuLmYzODQzOTJhOGMyOCAx MDA2NDQKLS0tIGEvbW0vbWVtY29udHJvbC5jCisrKyBiL21tL21lbWNvbnRy b2wuYwpAQCAtMjkwMyw4ICsyOTAzLDggQEAgdm9pZCBfX21lbWNnX2ttZW1f dW5jaGFyZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBvcmRlcikKICNpZmRl ZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UKIAogLyoKLSAqIEJlY2F1 c2UgdGFpbCBwYWdlcyBhcmUgbm90IG1hcmtlZCBhcyAidXNlZCIsIHNldCBp dC4gV2UncmUgdW5kZXIKLSAqIHBnZGF0LT5scnVfbG9jayBhbmQgbWlncmF0 aW9uIGVudHJpZXMgc2V0dXAgaW4gYWxsIHBhZ2UgbWFwcGluZ3MuCisgKiBC ZWNhdXNlIHRhaWwgcGFnZXMgYXJlIG5vdCBtYXJrZWQgd2l0aCBtZW1fY2dy b3VwLCBub3cgc2V0IHRoZW0uIFdlJ3JlCisgKiB1bmRlciBscnV2ZWMgbG9j aywgd2l0aCBtaWdyYXRpb24gZW50cmllcyBpbiBwbGFjZSBvZiBhbGwgcGFn ZSBtYXBwaW5ncy4KICAqLwogdm9pZCBtZW1fY2dyb3VwX3NwbGl0X2h1Z2Vf Zml4dXAoc3RydWN0IHBhZ2UgKmhlYWQpCiB7CmRpZmYgLS1naXQgYS9tbS9y bWFwLmMgYi9tbS9ybWFwLmMKaW5kZXggOTQ4MGRmNDM3ZWRjLi44M2Y1MTVl Njk1MDcgMTAwNjQ0Ci0tLSBhL21tL3JtYXAuYworKysgYi9tbS9ybWFwLmMK QEAgLTI3LDE4ICsyNywxNiBAQAogICogICAgICAgICBtYXBwaW5nLT5pX21t YXBfcndzZW0KICAqICAgICAgICAgICBhbm9uX3ZtYS0+cndzZW0KICAqICAg ICAgICAgICAgIG1tLT5wYWdlX3RhYmxlX2xvY2sgb3IgcHRlX2xvY2sKLSAq ICAgICAgICAgICAgICAgcGdkYXQtPmxydV9sb2NrIChpbiBtYXJrX3BhZ2Vf YWNjZXNzZWQsIGlzb2xhdGVfbHJ1X3BhZ2UpCisgKiAgICAgICAgICAgICAg IGxydXZlYy0+bHJ1X2xvY2sgKGluIG1hcmtfcGFnZV9hY2Nlc3NlZCwgaXNv bGF0ZV9scnVfcGFnZSkKICAqICAgICAgICAgICAgICAgc3dhcF9sb2NrIChp biBzd2FwX2R1cGxpY2F0ZSwgc3dhcF9pbmZvX2dldCkKICAqICAgICAgICAg ICAgICAgICBtbWxpc3RfbG9jayAoaW4gbW1wdXQsIGRyYWluX21tbGlzdCBh bmQgb3RoZXJzKQotICogICAgICAgICAgICAgICAgIG1hcHBpbmctPnByaXZh dGVfbG9jayAoaW4gX19zZXRfcGFnZV9kaXJ0eV9idWZmZXJzKQotICogICAg ICAgICAgICAgICAgICAgbWVtX2Nncm91cF97YmVnaW4sZW5kfV9wYWdlX3N0 YXQgKG1lbWNnLT5tb3ZlX2xvY2spCi0gKiAgICAgICAgICAgICAgICAgICAg IGlfcGFnZXMgbG9jayAod2lkZWx5IHVzZWQpCi0gKiAgICAgICAgICAgICAg ICAgaW5vZGUtPmlfbG9jayAoaW4gc2V0X3BhZ2VfZGlydHkncyBfX21hcmtf aW5vZGVfZGlydHkpCiAgKiAgICAgICAgICAgICAgICAgYmRpLndiLT5saXN0 X2xvY2sgKGluIHNldF9wYWdlX2RpcnR5J3MgX19tYXJrX2lub2RlX2RpcnR5 KQotICogICAgICAgICAgICAgICAgICAgc2JfbG9jayAod2l0aGluIGlub2Rl X2xvY2sgaW4gZnMvZnMtd3JpdGViYWNrLmMpCi0gKiAgICAgICAgICAgICAg ICAgICBpX3BhZ2VzIGxvY2sgKHdpZGVseSB1c2VkLCBpbiBzZXRfcGFnZV9k aXJ0eSwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhcmNo LWRlcGVuZGVudCBmbHVzaF9kY2FjaGVfbW1hcF9sb2NrLAotICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbiBiZGkud2ItPmxpc3RfbG9j ayBpbiBfX3N5bmNfc2luZ2xlX2lub2RlKQorICogICAgICAgICAgICAgICBp bm9kZS0+aV9sb2NrIChpbiBzZXRfcGFnZV9kaXJ0eSdzIF9fbWFya19pbm9k ZV9kaXJ0eSkKKyAqICAgICAgICAgICAgICAgbWFwcGluZy0+cHJpdmF0ZV9s b2NrIChpbiBfX3NldF9wYWdlX2RpcnR5X2J1ZmZlcnMpCisgKiAgICAgICAg ICAgICAgICAgbWVtY2ctPm1vdmVfbG9jayAoaW4gbG9ja19wYWdlX21lbWNn KQorICogICAgICAgICAgICAgICAgICAgbWFwcGluZy0+aV9wYWdlcyBsb2Nr ICh3aWRlbHkgdXNlZCwgaW4gc2V0X3BhZ2VfZGlydHksCisgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluIGFyY2gtZGVwZW5kZW50IGZsdXNoX2Rj YWNoZV9tbWFwX2xvY2spCisgKiAgICAgICAgICAgICAgICAgICAgIGxpc3Rf bHJ1LT5ub2RlLT5sb2NrIChpbiBwYWdlX2NhY2hlX3RyZWVfZGVsZXRlKQog ICoKICAqIGFub25fdm1hLT5yd3NlbSxtYXBwaW5nLT5pX211dGV4ICAgICAg KG1lbW9yeV9mYWlsdXJlLCBjb2xsZWN0X3Byb2NzX2Fub24pCiAgKiAgIC0+ dGFza2xpc3RfbG9jawpkaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9tbS92 bXNjYW4uYwppbmRleCA3ZDc2ZmQ3Nzk2YjMuLmU5NDhkOWNhNzY4YyAxMDA2 NDQKLS0tIGEvbW0vdm1zY2FuLmMKKysrIGIvbW0vdm1zY2FuLmMKQEAgLTE2 MTIsNyArMTYxMiw3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCB1 cGRhdGVfbHJ1X3NpemVzKHN0cnVjdCBscnV2ZWMgKmxydXZlYywKIH0KIAog LyoqCi0gKiBwZ2RhdC0+bHJ1X2xvY2sgaXMgaGVhdmlseSBjb250ZW5kZWQu ICBTb21lIG9mIHRoZSBmdW5jdGlvbnMgdGhhdAorICogbHJ1dmVjIGxvY2sg aXMgaGVhdmlseSBjb250ZW5kZWQuICBTb21lIG9mIHRoZSBmdW5jdGlvbnMg dGhhdAogICogc2hyaW5rIHRoZSBsaXN0cyBwZXJmb3JtIGJldHRlciBieSB0 YWtpbmcgb3V0IGEgYmF0Y2ggb2YgcGFnZXMKICAqIGFuZCB3b3JraW5nIG9u IHRoZW0gb3V0c2lkZSB0aGUgTFJVIGxvY2suCiAgKgpAQCAtMTc5OCwyNyAr MTc5OCwxMSBAQCBzdGF0aWMgaW50IHRvb19tYW55X2lzb2xhdGVkKHN0cnVj dCBwZ2xpc3RfZGF0YSAqcGdkYXQsIGludCBmaWxlLAogfQogCiAvKgotICog VGhpcyBtb3ZlcyBwYWdlcyBmcm9tIEBsaXN0IHRvIGNvcnJlc3BvbmRpbmcg TFJVIGxpc3QuCi0gKgotICogV2UgbW92ZSB0aGVtIHRoZSBvdGhlciB3YXkg aWYgdGhlIHBhZ2UgaXMgcmVmZXJlbmNlZCBieSBvbmUgb3IgbW9yZQotICog cHJvY2Vzc2VzLCBmcm9tIHJtYXAuCi0gKgotICogSWYgdGhlIHBhZ2VzIGFy ZSBtb3N0bHkgdW5tYXBwZWQsIHRoZSBwcm9jZXNzaW5nIGlzIGZhc3QgYW5k IGl0IGlzCi0gKiBhcHByb3ByaWF0ZSB0byBob2xkIHpvbmVfbHJ1X2xvY2sg YWNyb3NzIHRoZSB3aG9sZSBvcGVyYXRpb24uICBCdXQgaWYKLSAqIHRoZSBw YWdlcyBhcmUgbWFwcGVkLCB0aGUgcHJvY2Vzc2luZyBpcyBzbG93IChwYWdl X3JlZmVyZW5jZWQoKSkgc28gd2UKLSAqIHNob3VsZCBkcm9wIHpvbmVfbHJ1 X2xvY2sgYXJvdW5kIGVhY2ggcGFnZS4gIEl0J3MgaW1wb3NzaWJsZSB0byBi YWxhbmNlCi0gKiB0aGlzLCBzbyBpbnN0ZWFkIHdlIHJlbW92ZSB0aGUgcGFn ZXMgZnJvbSB0aGUgTFJVIHdoaWxlIHByb2Nlc3NpbmcgdGhlbS4KLSAqIEl0 IGlzIHNhZmUgdG8gcmVseSBvbiBQR19hY3RpdmUgYWdhaW5zdCB0aGUgbm9u LUxSVSBwYWdlcyBpbiBoZXJlIGJlY2F1c2UKLSAqIG5vYm9keSB3aWxsIHBs YXkgd2l0aCB0aGF0IGJpdCBvbiBhIG5vbi1MUlUgcGFnZS4KLSAqCi0gKiBU aGUgZG93bnNpZGUgaXMgdGhhdCB3ZSBoYXZlIHRvIHRvdWNoIHBhZ2UtPl9y ZWZjb3VudCBhZ2FpbnN0IGVhY2ggcGFnZS4KLSAqIEJ1dCB3ZSBoYWQgdG8g YWx0ZXIgcGFnZS0+ZmxhZ3MgYW55d2F5LgotICoKKyAqIFRoaXMgaGVscGVy IG1vdmVzIHBhZ2VzIGZyb20gcHJpdmF0ZSBAbGlzdCB0byB0aGUgYXBwcm9w cmlhdGUgTFJVIGxpc3QuCiAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgcGFn ZXMgbW92ZWQgdG8gdGhlIGdpdmVuIGxydXZlYy4KICAqLwotCi1zdGF0aWMg dW5zaWduZWQgbm9pbmxpbmVfZm9yX3N0YWNrIG1vdmVfcGFnZXNfdG9fbHJ1 KHN0cnVjdCBscnV2ZWMgKmxydXZlYywKLQkJCQkJCSAgICAgc3RydWN0IGxp c3RfaGVhZCAqbGlzdCkKK3N0YXRpYyBub2lubGluZV9mb3Jfc3RhY2sKK3Vu c2lnbmVkIGludCBtb3ZlX3BhZ2VzX3RvX2xydShzdHJ1Y3QgbHJ1dmVjICps cnV2ZWMsIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpCiB7CiAJc3RydWN0IGxy dXZlYyAqb3JpZ19scnV2ZWMgPSBscnV2ZWM7CiAJaW50IG5yX3BhZ2VzLCBu cl9tb3ZlZCA9IDA7CkBAIC0xOTk0LDYgKzE5NzgsMjMgQEAgc2hyaW5rX2lu YWN0aXZlX2xpc3QodW5zaWduZWQgbG9uZyBucl90b19zY2FuLCBzdHJ1Y3Qg bHJ1dmVjICpscnV2ZWMsCiAJcmV0dXJuIG5yX3JlY2xhaW1lZDsKIH0KIAor LyoKKyAqIFRoaXMgbW92ZXMgcGFnZXMgZnJvbSB0aGUgYWN0aXZlIGxpc3Qg dG8gdGhlIGluYWN0aXZlIGxpc3QuCisgKgorICogV2UgbW92ZSB0aGVtIHRo ZSBvdGhlciB3YXkgaWYgdGhlIHBhZ2UgaXMgcmVmZXJlbmNlZCBieSBvbmUg b3IgbW9yZQorICogcHJvY2Vzc2VzLCBmcm9tIHJtYXAuCisgKgorICogSWYg dGhlIHBhZ2VzIGFyZSBtb3N0bHkgdW5tYXBwZWQsIHRoZSBwcm9jZXNzaW5n IGlzIGZhc3QgYW5kIGl0IGlzCisgKiBhcHByb3ByaWF0ZSB0byBob2xkIGxy dXZlYyBsb2NrIGFjcm9zcyB0aGUgd2hvbGUgb3BlcmF0aW9uLiAgQnV0IGlm CisgKiB0aGUgcGFnZXMgYXJlIG1hcHBlZCwgdGhlIHByb2Nlc3NpbmcgaXMg c2xvdyAocGFnZV9yZWZlcmVuY2VkKCkpIHNvIHdlCisgKiBzaG91bGQgZHJv cCBscnV2ZWMgbG9jayBhcm91bmQgZWFjaCBwYWdlLiAgSXQncyBpbXBvc3Np YmxlIHRvIGJhbGFuY2UKKyAqIHRoaXMsIHNvIGluc3RlYWQgd2UgcmVtb3Zl IHRoZSBwYWdlcyBmcm9tIHRoZSBMUlUgd2hpbGUgcHJvY2Vzc2luZyB0aGVt LgorICogSXQgaXMgc2FmZSB0byByZWx5IG9uIFBHX2FjdGl2ZSBhZ2FpbnN0 IHRoZSBub24tTFJVIHBhZ2VzIGluIGhlcmUgYmVjYXVzZQorICogbm9ib2R5 IHdpbGwgcGxheSB3aXRoIHRoYXQgYml0IG9uIGEgbm9uLUxSVSBwYWdlLgor ICoKKyAqIFRoZSBkb3duc2lkZSBpcyB0aGF0IHdlIGhhdmUgdG8gdG91Y2gg cGFnZS0+X3JlZmNvdW50IGFnYWluc3QgZWFjaCBwYWdlLgorICogQnV0IHdl IGhhZCB0byBhbHRlciBwYWdlLT5mbGFncyBhbnl3YXkuCisgKi8KIHN0YXRp YyB2b2lkIHNocmlua19hY3RpdmVfbGlzdCh1bnNpZ25lZCBsb25nIG5yX3Rv X3NjYW4sCiAJCQkgICAgICAgc3RydWN0IGxydXZlYyAqbHJ1dmVjLAogCQkJ ICAgICAgIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjLAotLSAKMi4yMy4wLjE4 Ny5nMTdmNWI3NTU2Yy1nb29nCgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== --0-2114503153-1566611997=:16920--