Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp1131227imm; Fri, 12 Oct 2018 12:17:54 -0700 (PDT) X-Google-Smtp-Source: ACcGV62RbvUFknX+sIreT7OZEVykZUhZ4gdzQ/mlbLPtBJPloGgoJGTK00YL6AcHvNGT5eJAiloe X-Received: by 2002:a63:69c9:: with SMTP id e192-v6mr6728380pgc.143.1539371874674; Fri, 12 Oct 2018 12:17:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539371874; cv=none; d=google.com; s=arc-20160816; b=SgaMSQGJMHEhAAzONQVrYKMpcwCSHcpeXZXoqn3BYpOyCSHdJVcFIeW2l8HftnlKIS TpqIhL+MFWSjnpjS1f1o28JCmbqdRiiPEKyMaDucWB0toLPtr97j4hueC6vFYrneqs4Z UonmwzMydpRePMjhArcyp5Cbr68MWVBgabRNgcCQHL7xi36utdsPsCp2Bykd5BnSfAky AAQtm6ID50BXJY6cqJAILPQpRsnc6+8+FlfflR6suM35hpV1+o9lhsxKqfeRqox1qBWa EEeR21f81eFixD7xYFker3LnGHn2MuFdWa005C1ePl+8Qrh8XuZno3p5eWuRFmuaap6I CRxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=4RJsXJ6As2CjEpz8PxOmynW9DLtajPnHtRra82M3QKA=; b=IcdrubzMLD7qnVYvG3kzgSfKM6wm0yP5FvLnxV+8ZlTTZCj5mRLk9n9KJLs9z2sO20 Nzblff7igfWtJrbUxymyu1wOjS6tjy+Ey/aZIyqrMcMD3MnsPSW/OAx9g5xOqIofPEpW DQtzwmDwIULs+9KdS7qMnsMMBO5dnUs0qJ6UuhNe2m11ztBRaomvO+mY5a+1eW8SzJ1N EujXDryIWof2+Dwm53F0Gu/LuRa7XjBHbv7yi/5fRy8cHhDt/I6zhcGUO+D2OWzjgDUk X6M9wruAk4WR+YXmWEuljBsim0u0kuqczKwtuXR+oNoJWPZGmAJIVR+qJ1Pngqn/r/kV Zg1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@dell.com header.s=smtpout header.b=lU4FOa7f; 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=fail (p=NONE sp=NONE dis=NONE) header.from=dell.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u66-v6si2192737pgu.94.2018.10.12.12.17.36; Fri, 12 Oct 2018 12:17:54 -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=fail header.i=@dell.com header.s=smtpout header.b=lU4FOa7f; 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=fail (p=NONE sp=NONE dis=NONE) header.from=dell.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726399AbeJMCvH (ORCPT + 99 others); Fri, 12 Oct 2018 22:51:07 -0400 Received: from esa6.dell-outbound.iphmx.com ([68.232.149.229]:14157 "EHLO esa6.dell-outbound.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725851AbeJMCvG (ORCPT ); Fri, 12 Oct 2018 22:51:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=dell.com; i=@dell.com; q=dns/txt; s=smtpout; t=1539371829; x=1570907829; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=4RJsXJ6As2CjEpz8PxOmynW9DLtajPnHtRra82M3QKA=; b=lU4FOa7fizuVCfMENIUrNU8VE6fTmwDkQwwdYRe/QQZsJX1ilSVFoZGz YeE8VjgXLnD3SVoUAgSEv9ozuPbfGvM5GOIWEZmo1U68osTAain0N92z7 JPivy9h3GYwS4MNHcM/ib1iDC7iepUaYWyssKmWvh/wLgvkjT1lNF9iUN A=; X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2EGAADk8sBbhiWd50NkGgEBAQEBAgE?= =?us-ascii?q?BAQEHAgEBAQGBUQUBAQEBCwGBWYIPKAqDa4gWX4tRgg16gkWTSBSBZgsBAYR?= =?us-ascii?q?sAheERiE0DQ0BAwEBAgEBAgEBAhABAQETCwgpL4I2IoJiAQEBAQIBEggBCAQ?= =?us-ascii?q?NRQULAgEIGAICJgICAkUQAgQBDQUIGoIzSwGBeQibGYlXAQEBbXsziViBC4o?= =?us-ascii?q?7gheBEQGCXTWEZy6CaoJXAoEpAZwfUwYBAolpAQWGYR+BT4RviViVfQIEAgQ?= =?us-ascii?q?FAhSBQzeBV3BQgR6BToImDgkRjghvig4pgQWBHwEB?= X-IPAS-Result: =?us-ascii?q?A2EGAADk8sBbhiWd50NkGgEBAQEBAgEBAQEHAgEBAQGBU?= =?us-ascii?q?QUBAQEBCwGBWYIPKAqDa4gWX4tRgg16gkWTSBSBZgsBAYRsAheERiE0DQ0BA?= =?us-ascii?q?wEBAgEBAgEBAhABAQETCwgpL4I2IoJiAQEBAQIBEggBCAQNRQULAgEIGAICJ?= =?us-ascii?q?gICAkUQAgQBDQUIGoIzSwGBeQibGYlXAQEBbXsziViBC4o7gheBEQGCXTWEZ?= =?us-ascii?q?y6CaoJXAoEpAZwfUwYBAolpAQWGYR+BT4RviViVfQIEAgQFAhSBQzeBV3BQg?= =?us-ascii?q?R6BToImDgkRjghvig4pgQWBHwEB?= Received: from mx0b-00154901.pphosted.com ([67.231.157.37]) by esa6.dell-outbound.iphmx.com with ESMTP/TLS/AES256-SHA256; 12 Oct 2018 14:17:07 -0500 Received: from pps.filterd (m0134318.ppops.net [127.0.0.1]) by mx0a-00154901.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w9CJ2oQR096623; Fri, 12 Oct 2018 15:17:06 -0400 Received: from esa2.dell-outbound2.iphmx.com (esa2.dell-outbound2.iphmx.com [68.232.153.202]) by mx0a-00154901.pphosted.com with ESMTP id 2mxqpddwpv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 12 Oct 2018 15:17:06 -0400 From: Received: from ausxippc106.us.dell.com ([143.166.85.156]) by esa2.dell-outbound2.iphmx.com with ESMTP/TLS/DHE-RSA-AES256-SHA256; 13 Oct 2018 01:17:02 +0600 X-LoopCount0: from 10.166.135.98 X-IronPort-AV: E=Sophos;i="5.54,373,1534827600"; d="scan'208";a="304659917" To: , CC: , , Subject: RE: [RFC PATCH 2/2] net/ncsi: Configure multi-package, multi-channel modes with failover Thread-Topic: [RFC PATCH 2/2] net/ncsi: Configure multi-package, multi-channel modes with failover Thread-Index: AQHUX4RyYJjtPwgbwE6mb3hPBRiDwKUXHQkQgAKsl4CAAGCeoIABEBAAgACPjVA= Date: Fri, 12 Oct 2018 19:16:59 +0000 Message-ID: References: <20181009035815.5246-1-sam@mendozajonas.com> <20181009035815.5246-2-sam@mendozajonas.com> <8548f1872badb35588d5506da21f0d89bea71127.camel@mendozajonas.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.143.242.75] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-10-12_13:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1807170000 definitions=main-1810120183 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiBPbiBUaHUsIDIwMTgtMTAtMTEgYXQgMjI6MDkgKzAwMDAsIEp1c3Rpbi5MZWUxQERlbGwuY29t IHdyb3RlOg0KPiA+IEhpIFNhbSwNCj4gPiANCj4gPiBQbGVhc2Ugc2VlIG15IGNvbW1lbnRzIGJl bG93Lg0KPiA+IA0KPiA+IFRoYW5rcywNCj4gPiBKdXN0aW4NCj4gPiAgDQo+ID4gIA0KPiA+ID4g T24gV2VkLCAyMDE4LTEwLTEwIGF0IDIyOjM2ICswMDAwLCBKdXN0aW4uTGVlMUBEZWxsLmNvbSB3 cm90ZToNCj4gPiA+ID4gSGkgU2FtdWVsLA0KPiA+ID4gPiANCj4gPiA+ID4gSSBhbSBzdGlsbCB0 ZXN0aW5nIHlvdXIgY2hhbmdlIGFuZCBoYXZlIHNvbWUgY29tbWVudHMgYmVsb3cuDQo+ID4gPiA+ IA0KPiA+ID4gPiBUaGFua3MsDQo+ID4gPiA+IEp1c3Rpbg0KPiA+ID4gPiANCj4gPiA+ID4gDQo+ ID4gPiA+ID4gVGhpcyBwYXRjaCBleHRlbmRzIHRoZSBuY3NpLW5ldGxpbmsgaW50ZXJmYWNlIHdp dGggdHdvIG5ldyBjb21tYW5kcyBhbmQNCj4gPiA+ID4gPiB0aHJlZSBuZXcgYXR0cmlidXRlcyB0 byBjb25maWd1cmUgbXVsdGlwbGUgcGFja2FnZXMgYW5kL29yIGNoYW5uZWxzIGF0DQo+ID4gPiA+ ID4gb25jZSwgYW5kIGNvbmZpZ3VyZSBzcGVjaWZpYyBmYWlsb3ZlciBtb2Rlcy4NCj4gPiA+ID4g PiANCj4gPiA+ID4gPiBOQ1NJX0NNRF9TRVRfUEFDS0FHRSBtYXNrIGFuZCBOQ1NJX0NNRF9TRVRf Q0hBTk5FTF9NQVNLIHNldCBhIHdoaXRlbGlzdA0KPiA+ID4gPiA+IG9mIHBhY2thZ2VzIG9yIGNo YW5uZWxzIGFsbG93ZWQgdG8gYmUgY29uZmlndXJlZCB3aXRoIHRoZQ0KPiA+ID4gPiA+IE5DU0lf QVRUUl9QQUNLQUdFX01BU0sgYW5kIE5DU0lfQVRUUl9DSEFOTkVMX01BU0sgYXR0cmlidXRlcw0K PiA+ID4gPiA+IHJlc3BlY3RpdmVseS4gSWYgb25lIG9mIHRoZXNlIHdoaXRlbGlzdHMgaXMgc2V0 IG9ubHkgcGFja2FnZXMgb3INCj4gPiA+ID4gPiBjaGFubmVscyBtYXRjaGluZyB0aGUgd2hpdGVs aXN0IGFyZSBjb25zaWRlcmVkIGZvciB0aGUgY2hhbm5lbCBxdWV1ZSBpbg0KPiA+ID4gPiA+IG5j c2lfY2hvb3NlX2FjdGl2ZV9jaGFubmVsKCkuDQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gVGhlc2Ug Y29tbWFuZHMgbWF5IGFsc28gdXNlIHRoZSBOQ1NJX0FUVFJfTVVMVElfRkxBRyB0byBzaWduYWwg dGhhdA0KPiA+ID4gPiA+IG11bHRpcGxlIHBhY2thZ2VzIG9yIGNoYW5uZWxzIG1heSBiZSBjb25m aWd1cmVkIHNpbXVsdGFuZW91c2x5LiBOQ1NJDQo+ID4gPiA+ID4gaGFyZHdhcmUgYXJiaXRyYXRp b24gKEhXQSkgbXVzdCBiZSBhdmFpbGFibGUgaW4gb3JkZXIgdG8gZW5hYmxlDQo+ID4gPiA+ID4g bXVsdGktcGFja2FnZSBtb2RlLiBNdWx0aS1jaGFubmVsIG1vZGUgaXMgYWx3YXlzIGF2YWlsYWJs ZS4NCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBJZiB0aGUgTkNTSV9BVFRSX0NIQU5ORUxfSUQgYXR0 cmlidXRlIGlzIHByZXNlbnQgaW4gdGhlDQo+ID4gPiA+ID4gTkNTSV9DTURfU0VUX0NIQU5ORUxf TUFTSyBjb21tYW5kIHRoZSBpdCBzZXRzIHRoZSBwcmVmZXJyZWQgY2hhbm5lbCBhcw0KPiA+ID4g PiA+IHdpdGggdGhlIE5DU0lfQ01EX1NFVF9JTlRFUkZBQ0UgY29tbWFuZC4gVGhlIGNvbWJpbmF0 aW9uIG9mIHByZWZlcnJlZA0KPiA+ID4gPiA+IGNoYW5uZWwgYW5kIGNoYW5uZWwgd2hpdGVsaXN0 IGRlZmluZXMgYSBwcmltYXJ5IGNoYW5uZWwgYW5kIHRoZSBhbGxvd2VkDQo+ID4gPiA+ID4gZmFp bG92ZXIgY2hhbm5lbHMuDQo+ID4gPiA+ID4gSWYgdGhlIE5DU0lfQVRUUl9NVUxUSV9GTEFHIGF0 dHJpYnV0ZSBpcyBhbHNvIHByZXNlbnQgdGhlbiB0aGUgcHJlZmVycmVkDQo+ID4gPiA+ID4gY2hh bm5lbCBpcyBjb25maWd1cmVkIGZvciBUeC9SeCBhbmQgdGhlIG90aGVyIGNoYW5uZWxzIGFyZSBl bmFibGVkIG9ubHkNCj4gPiA+ID4gPiBmb3IgUnguDQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gU2ln bmVkLW9mZi1ieTogU2FtdWVsIE1lbmRvemEtSm9uYXMgPHNhbUBtZW5kb3pham9uYXMuY29tPg0K PiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ICBpbmNsdWRlL3VhcGkvbGludXgvbmNzaS5oIHwgIDE2 ICsrKw0KPiA+ID4gPiA+ICBuZXQvbmNzaS9pbnRlcm5hbC5oICAgICAgIHwgIDExICstDQo+ID4g PiA+ID4gIG5ldC9uY3NpL25jc2ktYWVuLmMgICAgICAgfCAgIDIgKy0NCj4gPiA+ID4gPiAgbmV0 L25jc2kvbmNzaS1tYW5hZ2UuYyAgICB8IDEzOCArKysrKysrKysrKysrKysrLS0tLS0tLS0NCj4g PiA+ID4gPiAgbmV0L25jc2kvbmNzaS1uZXRsaW5rLmMgICB8IDIxNyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLQ0KPiA+ID4gPiA+ICBuZXQvbmNzaS9uY3NpLXJzcC5jICAg ICAgIHwgICAyICstDQo+ID4gPiA+ID4gIDYgZmlsZXMgY2hhbmdlZCwgMzEyIGluc2VydGlvbnMo KyksIDc0IGRlbGV0aW9ucygtKQ0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9p bmNsdWRlL3VhcGkvbGludXgvbmNzaS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L25jc2kuaA0KPiA+ ID4gPiA+IGluZGV4IDRjMjkyZWNiYjc0OC4uMDM1ZmJhMTY5M2Y5IDEwMDY0NA0KPiA+ID4gPiA+ IC0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9uY3NpLmgNCj4gPiA+ID4gPiArKysgYi9pbmNsdWRl L3VhcGkvbGludXgvbmNzaS5oDQo+ID4gPiA+ID4gQEAgLTIzLDYgKzIzLDEzIEBADQo+ID4gPiA+ ID4gICAqCW9wdGlvbmFsbHkgdGhlIHByZWZlcnJlZCBOQ1NJX0FUVFJfQ0hBTk5FTF9JRC4NCj4g PiA+ID4gPiAgICogQE5DU0lfQ01EX0NMRUFSX0lOVEVSRkFDRTogY2xlYXIgYW55IHByZWZlcnJl ZCBwYWNrYWdlL2NoYW5uZWwgY29tYmluYXRpb24uDQo+ID4gPiA+ID4gICAqCVJlcXVpcmVzIE5D U0lfQVRUUl9JRklOREVYLg0KPiA+ID4gPiA+ICsgKiBATkNTSV9DTURfU0VUX1BBQ0tBR0VfTUFT Szogc2V0IGEgd2hpdGVsaXN0IG9mIGFsbG93ZWQgcGFja2FnZXMuDQo+ID4gPiA+ID4gKyAqIEBO Q1NJX0NNRF9TRVRfUEFDS0FHRV9NQVNLOiBzZXQgYSB3aGl0ZWxpc3Qgb2YgYWxsb3dlZCBjaGFu bmVscy4NCj4gPiA+ID4gPiArICoJUmVxdWlyZXMgTkNTSV9BVFRSX0lGSU5ERVggYW5kIE5DU0lf QVRUUl9QQUNLQUdFX01BU0suDQo+ID4gPiA+ID4gKyAqIEBOQ1NJX0NNRF9TRVRfUEFDS0FHRV9N QVNLOiBzZXQgYSB3aGl0ZWxpc3Qgb2YgYWxsb3dlZCBjaGFubmVscy4NCj4gPiA+ID4gPiArICoJ UmVxdWlyZXMgTkNTSV9BVFRSX0lGSU5ERVgsIE5DU0lfQVRUUl9QQUNLQUdFX0lELCBhbmQNCj4g PiA+ID4gPiArICoJTkNTSV9BVFRSX0NIQU5ORUxfTUFTSy4gSWYgTkNTSV9BVFRSX0NIQU5ORUxf SUQgaXMgcHJlc2VudCBpdCBzZXRzDQo+ID4gPiA+ID4gKyAqCXRoZSBwcmltYXJ5IGNoYW5uZWwu DQo+ID4gPiA+ID4gICAqIEBOQ1NJX0NNRF9NQVg6IGhpZ2hlc3QgY29tbWFuZCBudW1iZXINCj4g PiA+ID4gPiAgICovDQo+ID4gPiA+IA0KPiA+ID4gPiBUaGVyZSBhcmUgc29tZSB0eXBvIGluIHRo ZSBkZXNjcmlwdGlvbi4NCj4gPiA+ID4gKiBATkNTSV9DTURfU0VUX1BBQ0tBR0VfTUFTSzogc2V0 IGEgd2hpdGVsaXN0IG9mIGFsbG93ZWQgcGFja2FnZXMuDQo+ID4gPiA+ICAqCVJlcXVpcmVzIE5D U0lfQVRUUl9JRklOREVYIGFuZCBOQ1NJX0FUVFJfUEFDS0FHRV9NQVNLLg0KPiA+ID4gPiAgKiBA TkNTSV9DTURfU0VUX0NIQU5ORUxfTUFTSzogc2V0IGEgd2hpdGVsaXN0IG9mIGFsbG93ZWQgY2hh bm5lbHMuDQo+ID4gPiA+ICAqCVJlcXVpcmVzIE5DU0lfQVRUUl9JRklOREVYLCBOQ1NJX0FUVFJf UEFDS0FHRV9JRCwgYW5kDQo+ID4gPiA+ICAqCU5DU0lfQVRUUl9DSEFOTkVMX01BU0suIElmIE5D U0lfQVRUUl9DSEFOTkVMX0lEIGlzIHByZXNlbnQgaXQgc2V0cw0KPiA+ID4gPiAgKgl0aGUgcHJp bWFyeSBjaGFubmVsLg0KPiA+ID4gDQo+ID4gPiBIYWhhLCB5ZXMgSSB0aHJldyB0aGF0IGluIGF0 IHRoZSBlbmQsIHRoYW5rcyBmb3IgY2F0Y2hpbmcgaXQuDQo+ID4gPiANCj4gPiA+ID4gPiAgZW51 bSBuY3NpX25sX2NvbW1hbmRzIHsNCj4gPiA+ID4gPiBAQCAtMzAsNiArMzcsOCBAQCBlbnVtIG5j c2lfbmxfY29tbWFuZHMgew0KPiA+ID4gPiA+ICAJTkNTSV9DTURfUEtHX0lORk8sDQo+ID4gPiA+ ID4gIAlOQ1NJX0NNRF9TRVRfSU5URVJGQUNFLA0KPiA+ID4gPiA+ICAJTkNTSV9DTURfQ0xFQVJf SU5URVJGQUNFLA0KPiA+ID4gPiA+ICsJTkNTSV9DTURfU0VUX1BBQ0tBR0VfTUFTSywNCj4gPiA+ ID4gPiArCU5DU0lfQ01EX1NFVF9DSEFOTkVMX01BU0ssDQo+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ ICAJX19OQ1NJX0NNRF9BRlRFUl9MQVNULA0KPiA+ID4gPiA+ICAJTkNTSV9DTURfTUFYID0gX19O Q1NJX0NNRF9BRlRFUl9MQVNUIC0gMQ0KPiA+ID4gPiA+IEBAIC00Myw2ICs1MiwxMCBAQCBlbnVt IG5jc2lfbmxfY29tbWFuZHMgew0KPiA+ID4gPiA+ICAgKiBATkNTSV9BVFRSX1BBQ0tBR0VfTElT VDogbmVzdGVkIGFycmF5IG9mIE5DU0lfUEtHX0FUVFIgYXR0cmlidXRlcw0KPiA+ID4gPiA+ICAg KiBATkNTSV9BVFRSX1BBQ0tBR0VfSUQ6IHBhY2thZ2UgSUQNCj4gPiA+ID4gPiAgICogQE5DU0lf QVRUUl9DSEFOTkVMX0lEOiBjaGFubmVsIElEDQo+ID4gPiA+ID4gKyAqIEBOQ1NJX0FUVFJfTVVM VElfRkxBRzogZmxhZyB0byBzaWduYWwgdGhhdCBtdWx0aS1tb2RlIHNob3VsZCBiZSBlbmFibGVk IHdpdGgNCj4gPiA+ID4gPiArICoJTkNTSV9DTURfU0VUX1BBQ0tBR0VfTUFTSyBvciBOQ1NJX0NN RF9TRVRfQ0hBTk5FTF9NQVNLLg0KPiA+ID4gPiA+ICsgKiBATkNTSV9BVFRSX1BBQ0tBR0VfTUFT SzogMzItYml0IG1hc2sgb2YgYWxsb3dlZCBwYWNrYWdlcy4NCj4gPiA+ID4gPiArICogQE5DU0lf QVRUUl9DSEFOTkVMX01BU0s6IDMyLWJpdCBtYXNrIG9mIGFsbG93ZWQgY2hhbm5lbHMuDQo+ID4g PiA+ID4gICAqIEBOQ1NJX0FUVFJfTUFYOiBoaWdoZXN0IGF0dHJpYnV0ZSBudW1iZXINCj4gPiA+ ID4gPiAgICovDQo+ID4gPiA+ID4gIGVudW0gbmNzaV9ubF9hdHRycyB7DQo+ID4gPiA+ID4gQEAg LTUxLDYgKzY0LDkgQEAgZW51bSBuY3NpX25sX2F0dHJzIHsNCj4gPiA+ID4gPiAgCU5DU0lfQVRU Ul9QQUNLQUdFX0xJU1QsDQo+ID4gPiA+ID4gIAlOQ1NJX0FUVFJfUEFDS0FHRV9JRCwNCj4gPiA+ ID4gPiAgCU5DU0lfQVRUUl9DSEFOTkVMX0lELA0KPiA+ID4gPiA+ICsJTkNTSV9BVFRSX01VTFRJ X0ZMQUcsDQo+ID4gPiA+ID4gKwlOQ1NJX0FUVFJfUEFDS0FHRV9NQVNLLA0KPiA+ID4gPiA+ICsJ TkNTSV9BVFRSX0NIQU5ORUxfTUFTSywNCj4gPiA+ID4gDQo+ID4gPiA+IElzIHRoZXJlIGEgY2Fz ZSB0aGF0IHdlIG1pZ2h0IHNldCB0aGVzZSB0d28gbWFza3MgYXQgdGhlIHNhbWUgdGltZT8NCj4g PiA+ID4gSWYgbm90LCBtYXliZSB3ZSBjYW4ganVzdCBoYXZlIG9uZSBnZW5lcmljIE1BU0sgYXR0 cmlidXRlLg0KPiA+ID4gPiANCj4gPiA+IA0KPiA+ID4gSSB0aG91Z2h0IG9mIHRoaXMgdG9vOiBu b3QgeWV0LCBidXQgSSB3b25kZXIgaWYgd2UgbWlnaHQgaW4gdGhlIGZ1dHVyZS4NCj4gPiA+IEkn bGwgaGF2ZSBhIHRoaW5rIGFib3V0IGl0Lg0KPiA+ID4gDQo+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ ICAJX19OQ1NJX0FUVFJfQUZURVJfTEFTVCwNCj4gPiA+ID4gPiAgCU5DU0lfQVRUUl9NQVggPSBf X05DU0lfQVRUUl9BRlRFUl9MQVNUIC0gMQ0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9uZXQvbmNz aS9pbnRlcm5hbC5oIGIvbmV0L25jc2kvaW50ZXJuYWwuaA0KPiA+ID4gPiA+IGluZGV4IDNkMGEz M2I4NzRmNS4uODQzNzQ3NGQwYTc4IDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL25ldC9uY3NpL2lu dGVybmFsLmgNCj4gPiA+ID4gPiArKysgYi9uZXQvbmNzaS9pbnRlcm5hbC5oDQo+ID4gPiA+ID4g QEAgLTIxMyw2ICsyMTMsMTAgQEAgc3RydWN0IG5jc2lfcGFja2FnZSB7DQo+ID4gPiA+ID4gIAl1 bnNpZ25lZCBpbnQgICAgICAgICBjaGFubmVsX251bTsgLyogTnVtYmVyIG9mIGNoYW5uZWxzICAg ICAqLw0KPiA+ID4gPiA+ICAJc3RydWN0IGxpc3RfaGVhZCAgICAgY2hhbm5lbHM7ICAgIC8qIExp c3Qgb2YgY2hhbmVscyAgICAgICAgKi8NCj4gPiA+ID4gPiAgCXN0cnVjdCBsaXN0X2hlYWQgICAg IG5vZGU7ICAgICAgICAvKiBGb3JtIGxpc3Qgb2YgcGFja2FnZXMgICovDQo+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ICsJYm9vbCAgICAgICAgICAgICAgICAgbXVsdGlfY2hhbm5lbDsgLyogRW5hYmxl IG11bHRpcGxlIGNoYW5uZWxzICAqLw0KPiA+ID4gPiA+ICsJdTMyICAgICAgICAgICAgICAgICAg Y2hhbm5lbF93aGl0ZWxpc3Q7IC8qIENoYW5uZWxzIHRvIGNvbmZpZ3VyZSAqLw0KPiA+ID4gPiA+ ICsJc3RydWN0IG5jc2lfY2hhbm5lbCAgKnByZWZlcnJlZF9jaGFubmVsOyAvKiBQcmltYXJ5IGNo YW5uZWwgICAgICAqLw0KPiA+ID4gPiA+ICB9Ow0KPiA+ID4gPiA+ICANCj4gPiA+ID4gPiAgc3Ry dWN0IG5jc2lfcmVxdWVzdCB7DQo+ID4gPiA+ID4gQEAgLTI4MCw4ICsyODQsNiBAQCBzdHJ1Y3Qg bmNzaV9kZXZfcHJpdiB7DQo+ID4gPiA+ID4gIAl1bnNpZ25lZCBpbnQgICAgICAgIHBhY2thZ2Vf bnVtOyAgICAgLyogTnVtYmVyIG9mIHBhY2thZ2VzICAgICAgICAgKi8NCj4gPiA+ID4gPiAgCXN0 cnVjdCBsaXN0X2hlYWQgICAgcGFja2FnZXM7ICAgICAgICAvKiBMaXN0IG9mIHBhY2thZ2VzICAg ICAgICAgICAqLw0KPiA+ID4gPiA+ICAJc3RydWN0IG5jc2lfY2hhbm5lbCAqaG90X2NoYW5uZWw7 ICAgIC8qIENoYW5uZWwgd2FzIGV2ZXIgYWN0aXZlICAgICovDQo+ID4gPiA+ID4gLQlzdHJ1Y3Qg bmNzaV9wYWNrYWdlICpmb3JjZV9wYWNrYWdlOyAgLyogRm9yY2UgYSBzcGVjaWZpYyBwYWNrYWdl ICAgKi8NCj4gPiA+ID4gPiAtCXN0cnVjdCBuY3NpX2NoYW5uZWwgKmZvcmNlX2NoYW5uZWw7ICAv KiBGb3JjZSBhIHNwZWNpZmljIGNoYW5uZWwgICAqLw0KPiA+ID4gPiA+ICAJc3RydWN0IG5jc2lf cmVxdWVzdCByZXF1ZXN0c1syNTZdOyAgIC8qIFJlcXVlc3QgdGFibGUgICAgICAgICAgICAgICov DQo+ID4gPiA+ID4gIAl1bnNpZ25lZCBpbnQgICAgICAgIHJlcXVlc3RfaWQ7ICAgICAgLyogTGFz dCB1c2VkIHJlcXVlc3QgSUQgICAgICAgKi8NCj4gPiA+ID4gPiAgI2RlZmluZSBOQ1NJX1JFUV9T VEFSVF9JRFgJMQ0KPiA+ID4gPiA+IEBAIC0yOTQsNiArMjk2LDkgQEAgc3RydWN0IG5jc2lfZGV2 X3ByaXYgew0KPiA+ID4gPiA+ICAJc3RydWN0IGxpc3RfaGVhZCAgICBub2RlOyAgICAgICAgICAg IC8qIEZvcm0gTkNTSSBkZXZpY2UgbGlzdCAgICAgICovDQo+ID4gPiA+ID4gICNkZWZpbmUgTkNT SV9NQVhfVkxBTl9WSURTCTE1DQo+ID4gPiA+ID4gIAlzdHJ1Y3QgbGlzdF9oZWFkICAgIHZsYW5f dmlkczsgICAgICAgLyogTGlzdCBvZiBhY3RpdmUgVkxBTiBJRHMgKi8NCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKwlib29sICAgICAgICAgICAgICAgIG11bHRpX3BhY2thZ2U7ICAgLyogRW5hYmxl IG11bHRpcGxlIHBhY2thZ2VzICAgKi8NCj4gPiA+ID4gPiArCXUzMiAgICAgICAgICAgICAgICAg cGFja2FnZV93aGl0ZWxpc3Q7IC8qIFBhY2thZ2VzIHRvIGNvbmZpZ3VyZSAgICAqLw0KPiA+ID4g PiA+ICB9Ow0KPiA+ID4gPiA+ICANCj4gPiA+ID4gPiAgc3RydWN0IG5jc2lfY21kX2FyZyB7DQo+ ID4gPiA+ID4gQEAgLTM0NSw2ICszNTAsOCBAQCBzdHJ1Y3QgbmNzaV9yZXF1ZXN0ICpuY3NpX2Fs bG9jX3JlcXVlc3Qoc3RydWN0IG5jc2lfZGV2X3ByaXYgKm5kcCwNCj4gPiA+ID4gPiAgdm9pZCBu Y3NpX2ZyZWVfcmVxdWVzdChzdHJ1Y3QgbmNzaV9yZXF1ZXN0ICpucik7DQo+ID4gPiA+ID4gIHN0 cnVjdCBuY3NpX2RldiAqbmNzaV9maW5kX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsNCj4g PiA+ID4gPiAgaW50IG5jc2lfcHJvY2Vzc19uZXh0X2NoYW5uZWwoc3RydWN0IG5jc2lfZGV2X3By aXYgKm5kcCk7DQo+ID4gPiA+ID4gK2Jvb2wgbmNzaV9jaGFubmVsX2lzX2xhc3Qoc3RydWN0IG5j c2lfZGV2X3ByaXYgKm5kcCwNCj4gPiA+ID4gPiArCQkJICBzdHJ1Y3QgbmNzaV9jaGFubmVsICpj aGFubmVsKTsNCj4gPiA+ID4gPiAgDQo+ID4gPiA+ID4gIC8qIFBhY2tldCBoYW5kbGVycyAqLw0K PiA+ID4gPiA+ICB1MzIgbmNzaV9jYWxjdWxhdGVfY2hlY2tzdW0odW5zaWduZWQgY2hhciAqZGF0 YSwgaW50IGxlbik7DQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL25ldC9uY3NpL25jc2ktYWVuLmMg Yi9uZXQvbmNzaS9uY3NpLWFlbi5jDQo+ID4gPiA+ID4gaW5kZXggNjVmNDdhNjQ4YmUzLi5lYWM1 NmFlZTMwYzQgMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvbmV0L25jc2kvbmNzaS1hZW4uYw0KPiA+ ID4gPiA+ICsrKyBiL25ldC9uY3NpL25jc2ktYWVuLmMNCj4gPiA+ID4gPiBAQCAtODYsNyArODYs NyBAQCBzdGF0aWMgaW50IG5jc2lfYWVuX2hhbmRsZXJfbHNjKHN0cnVjdCBuY3NpX2Rldl9wcml2 ICpuZHAsDQo+ID4gPiA+ID4gIAkgICAgIShzdGF0ZSA9PSBOQ1NJX0NIQU5ORUxfQUNUSVZFICYm ICEoZGF0YSAmIDB4MSkpKQ0KPiA+ID4gPiA+ICAJCXJldHVybiAwOw0KPiA+ID4gPiA+ICANCj4g PiA+ID4gPiAtCWlmIChzdGF0ZSA9PSBOQ1NJX0NIQU5ORUxfQUNUSVZFKQ0KPiA+ID4gPiA+ICsJ aWYgKHN0YXRlID09IE5DU0lfQ0hBTk5FTF9BQ1RJVkUgJiYgbmNzaV9jaGFubmVsX2lzX2xhc3Qo bmRwLCBuYykpDQo+ID4gPiA+ID4gIAkJbmRwLT5mbGFncyB8PSBOQ1NJX0RFVl9SRVNIVUZGTEU7 DQo+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ICAJbmNzaV9zdG9wX2NoYW5uZWxfbW9uaXRvcihuYyk7 DQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL25ldC9uY3NpL25jc2ktbWFuYWdlLmMgYi9uZXQvbmNz aS9uY3NpLW1hbmFnZS5jDQo+ID4gPiA+ID4gaW5kZXggNjY1YmVlMjVlYzQ0Li42YTU1ZGY3MDBi Y2IgMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvbmV0L25jc2kvbmNzaS1tYW5hZ2UuYw0KPiA+ID4g PiA+ICsrKyBiL25ldC9uY3NpL25jc2ktbWFuYWdlLmMNCj4gPiA+ID4gPiBAQCAtMjcsNiArMjcs MjQgQEANCj4gPiA+ID4gPiAgTElTVF9IRUFEKG5jc2lfZGV2X2xpc3QpOw0KPiA+ID4gPiA+ICBE RUZJTkVfU1BJTkxPQ0sobmNzaV9kZXZfbG9jayk7DQo+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ICsv KiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGNoYW5uZWwgaXMgdGhlIGxhc3QgY2hhbm5lbCBh dmFpbGFibGUgKi8NCj4gPiA+ID4gPiArYm9vbCBuY3NpX2NoYW5uZWxfaXNfbGFzdChzdHJ1Y3Qg bmNzaV9kZXZfcHJpdiAqbmRwLA0KPiA+ID4gPiA+ICsJCQkgIHN0cnVjdCBuY3NpX2NoYW5uZWwg KmNoYW5uZWwpDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArCXN0cnVjdCBuY3NpX3BhY2thZ2Ug Km5wOw0KPiA+ID4gPiA+ICsJc3RydWN0IG5jc2lfY2hhbm5lbCAqbmM7DQo+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ICsJTkNTSV9GT1JfRUFDSF9QQUNLQUdFKG5kcCwgbnApDQo+ID4gPiA+ID4gKwkJ TkNTSV9GT1JfRUFDSF9DSEFOTkVMKG5wLCBuYykgew0KPiA+ID4gPiA+ICsJCQlpZiAobmMgPT0g Y2hhbm5lbCkNCj4gPiA+ID4gPiArCQkJCWNvbnRpbnVlOw0KPiA+ID4gPiA+ICsJCQlpZiAobmMt PnN0YXRlID09IE5DU0lfQ0hBTk5FTF9BQ1RJVkUpDQo+ID4gPiA+ID4gKwkJCQlyZXR1cm4gZmFs c2U7DQo+ID4gPiA+ID4gKwkJfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCXJldHVybiB0cnVl Ow0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICBzdGF0aWMgdm9pZCBuY3Np X3JlcG9ydF9saW5rKHN0cnVjdCBuY3NpX2Rldl9wcml2ICpuZHAsIGJvb2wgZm9yY2VfZG93bikN Cj4gPiA+ID4gPiAgew0KPiA+ID4gPiA+ICAJc3RydWN0IG5jc2lfZGV2ICpuZCA9ICZuZHAtPm5k ZXY7DQo+ID4gPiA+ID4gQEAgLTI2Niw2ICsyODQsNyBAQCBzdHJ1Y3QgbmNzaV9wYWNrYWdlICpu Y3NpX2FkZF9wYWNrYWdlKHN0cnVjdCBuY3NpX2Rldl9wcml2ICpuZHAsDQo+ID4gPiA+ID4gIAlu cC0+bmRwID0gbmRwOw0KPiA+ID4gPiA+ICAJc3Bpbl9sb2NrX2luaXQoJm5wLT5sb2NrKTsNCj4g PiA+ID4gPiAgCUlOSVRfTElTVF9IRUFEKCZucC0+Y2hhbm5lbHMpOw0KPiA+ID4gPiA+ICsJbnAt PmNoYW5uZWxfd2hpdGVsaXN0ID0gVUlOVF9NQVg7DQo+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ICAJ c3Bpbl9sb2NrX2lycXNhdmUoJm5kcC0+bG9jaywgZmxhZ3MpOw0KPiA+ID4gPiA+ICAJdG1wID0g bmNzaV9maW5kX3BhY2thZ2UobmRwLCBpZCk7DQo+ID4gPiA+ID4gQEAgLTYzMyw2ICs2NTIsMzQg QEAgc3RhdGljIGludCBzZXRfb25lX3ZpZChzdHJ1Y3QgbmNzaV9kZXZfcHJpdiAqbmRwLCBzdHJ1 Y3QgbmNzaV9jaGFubmVsICpuYywNCj4gPiA+ID4gPiAgCXJldHVybiAwOw0KPiA+ID4gPiA+ICB9 DQo+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ICsvKiBEZXRlcm1pbmUgaWYgYSBnaXZlbiBjaGFubmVs IHNob3VsZCBiZSB0aGUgVHggY2hhbm5lbCAqLw0KPiA+ID4gPiA+ICtib29sIG5jc2lfY2hhbm5l bF9pc190eChzdHJ1Y3QgbmNzaV9kZXZfcHJpdiAqbmRwLCBzdHJ1Y3QgbmNzaV9jaGFubmVsICpu YykNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsJc3RydWN0IG5jc2lfcGFja2FnZSAqbnAgPSBu Yy0+cGFja2FnZTsNCj4gPiA+ID4gPiArCXN0cnVjdCBuY3NpX2NoYW5uZWwgKmNoYW5uZWw7DQo+ ID4gPiA+ID4gKwlzdHJ1Y3QgbmNzaV9jaGFubmVsX21vZGUgKm5jbTsNCj4gPiANCj4gPiBMZWFy biBmcm9tIERhdmUuIEFsbCBsb2NhbCB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgZnJvbSBsb25nZXN0 IHRvIHNob3J0ZXN0DQo+ID4gbGluZS4gOikNCj4gPiANCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g KwlOQ1NJX0ZPUl9FQUNIX0NIQU5ORUwobnAsIGNoYW5uZWwpIHsNCj4gPiA+ID4gPiArCQluY20g PSAmY2hhbm5lbC0+bW9kZXNbTkNTSV9NT0RFX1RYX0VOQUJMRV07DQo+ID4gPiA+ID4gKwkJLyog QW5vdGhlciBjaGFubmVsIGlzIGFscmVhZHkgVHggKi8NCj4gPiA+ID4gPiArCQlpZiAobmNtLT5l bmFibGUpDQo+ID4gPiA+ID4gKwkJCXJldHVybiBmYWxzZTsNCj4gPiA+ID4gPiArCX0NCg0KQXMg d2UgZG9uJ3Qgc3VzcGVuZCB0aGUgb2xkIGNoYW5uZWwgd2hlbiB3ZSBjYWxsIHRoZSBuY3NpX3N0 b3BfZGV2KCkgZnVuY3Rpb24sDQp0aGlzIHdpbGwgYWx3YXlzIGJlIGZhbHNlIGFuZCB3ZSB3aWxs IG5vdCBzZXQgaXQgdG8gdGhlIHJpZ2h0IGNoYW5uZWwuDQpJZiBtdXRsaV9jaGFubmVsIGlzIGVu YWJsZWQsIHN1cHBvc2UgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gc2VuZCBUWCBlbmFibGUvZGlzYWJs ZQ0Kd2hlbiAgdGhlIGxpbmsgaXMgY2hhbmdlZC4NCg0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAr CWlmICghbnAtPnByZWZlcnJlZF9jaGFubmVsKQ0KPiA+ID4gPiA+ICsJCXJldHVybiB0cnVlOw0K PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCWlmIChucC0+cHJlZmVycmVkX2NoYW5uZWwgPT0gbmMp DQo+ID4gPiA+ID4gKwkJcmV0dXJuIHRydWU7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJLyog VGhlIHByZWZlcnJlZCBjaGFubmVsIGlzIG5vdCBpbiB0aGUgcXVldWUgYW5kIG5vdCBhY3RpdmUg Ki8NCj4gPiA+ID4gPiArCWlmIChsaXN0X2VtcHR5KCZucC0+cHJlZmVycmVkX2NoYW5uZWwtPmxp bmspICYmDQo+ID4gPiA+ID4gKwkgICAgbnAtPnByZWZlcnJlZF9jaGFubmVsLT5zdGF0ZSAhPSBO Q1NJX0NIQU5ORUxfQUNUSVZFKQ0KPiA+ID4gPiA+ICsJCXJldHVybiB0cnVlOw0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiArCXJldHVybiBmYWxzZTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiAgc3RhdGljIHZvaWQgbmNzaV9jb25maWd1cmVfY2hhbm5lbChzdHJ1Y3QgbmNz aV9kZXZfcHJpdiAqbmRwKQ0KPiA+ID4gPiA+ICB7DQo+ID4gPiA+ID4gIAlzdHJ1Y3QgbmNzaV9k ZXYgKm5kID0gJm5kcC0+bmRldjsNCj4gPiA+ID4gPiBAQCAtNzQ1LDE4ICs3OTIsMjIgQEAgc3Rh dGljIHZvaWQgbmNzaV9jb25maWd1cmVfY2hhbm5lbChzdHJ1Y3QgbmNzaV9kZXZfcHJpdiAqbmRw KQ0KPiA+ID4gPiA+ICAJCX0gZWxzZSBpZiAobmQtPnN0YXRlID09IG5jc2lfZGV2X3N0YXRlX2Nv bmZpZ19lYmYpIHsNCj4gPiA+ID4gPiAgCQkJbmNhLnR5cGUgPSBOQ1NJX1BLVF9DTURfRUJGOw0K PiA+ID4gPiA+ICAJCQluY2EuZHdvcmRzWzBdID0gbmMtPmNhcHNbTkNTSV9DQVBfQkNdLmNhcDsN Cj4gPiA+ID4gPiAtCQkJbmQtPnN0YXRlID0gbmNzaV9kZXZfc3RhdGVfY29uZmlnX2VjbnQ7DQo+ ID4gPiA+ID4gKwkJCWlmIChuY3NpX2NoYW5uZWxfaXNfdHgobmRwLCBuYykpDQo+ID4gPiA+ID4g KwkJCQluZC0+c3RhdGUgPSBuY3NpX2Rldl9zdGF0ZV9jb25maWdfZWNudDsNCj4gPiA+ID4gPiAr CQkJZWxzZQ0KPiA+ID4gPiA+ICsJCQkJbmQtPnN0YXRlID0gbmNzaV9kZXZfc3RhdGVfY29uZmln X2VjOw0KPiA+ID4gPiA+ICAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikNCj4gPiA+ID4gPiAg CQkJaWYgKG5kcC0+aW5ldDZfYWRkcl9udW0gPiAwICYmDQo+ID4gPiA+ID4gIAkJCSAgICAobmMt PmNhcHNbTkNTSV9DQVBfR0VORVJJQ10uY2FwICYNCj4gPiA+ID4gPiAgCQkJICAgICBOQ1NJX0NB UF9HRU5FUklDX01DKSkNCj4gPiA+ID4gPiAgCQkJCW5kLT5zdGF0ZSA9IG5jc2lfZGV2X3N0YXRl X2NvbmZpZ19lZ21mOw0KPiA+ID4gPiA+IC0JCQllbHNlDQo+ID4gPiA+ID4gLQkJCQluZC0+c3Rh dGUgPSBuY3NpX2Rldl9zdGF0ZV9jb25maWdfZWNudDsNCj4gPiA+ID4gPiAgCQl9IGVsc2UgaWYg KG5kLT5zdGF0ZSA9PSBuY3NpX2Rldl9zdGF0ZV9jb25maWdfZWdtZikgew0KPiA+ID4gPiA+ICAJ CQluY2EudHlwZSA9IE5DU0lfUEtUX0NNRF9FR01GOw0KPiA+ID4gPiA+ICAJCQluY2EuZHdvcmRz WzBdID0gbmMtPmNhcHNbTkNTSV9DQVBfTUNdLmNhcDsNCj4gPiA+ID4gPiAtCQkJbmQtPnN0YXRl ID0gbmNzaV9kZXZfc3RhdGVfY29uZmlnX2VjbnQ7DQo+ID4gPiA+ID4gKwkJCWlmIChuY3NpX2No YW5uZWxfaXNfdHgobmRwLCBuYykpDQo+ID4gPiA+ID4gKwkJCQluZC0+c3RhdGUgPSBuY3NpX2Rl dl9zdGF0ZV9jb25maWdfZWNudDsNCj4gPiA+ID4gPiArCQkJZWxzZQ0KPiA+ID4gPiA+ICsJCQkJ bmQtPnN0YXRlID0gbmNzaV9kZXZfc3RhdGVfY29uZmlnX2VjOw0KPiA+ID4gPiA+ICAjZW5kaWYg LyogQ09ORklHX0lQVjYgKi8NCj4gPiA+ID4gPiAgCQl9IGVsc2UgaWYgKG5kLT5zdGF0ZSA9PSBu Y3NpX2Rldl9zdGF0ZV9jb25maWdfZWNudCkgew0KPiA+ID4gPiA+ICAJCQluY2EudHlwZSA9IE5D U0lfUEtUX0NNRF9FQ05UOw0KPiA+ID4gPiA+IEBAIC04NDAsNDMgKzg5MSwzNSBAQCBzdGF0aWMg dm9pZCBuY3NpX2NvbmZpZ3VyZV9jaGFubmVsKHN0cnVjdCBuY3NpX2Rldl9wcml2ICpuZHApDQo+ ID4gPiA+ID4gIA0KPiA+ID4gPiA+ICBzdGF0aWMgaW50IG5jc2lfY2hvb3NlX2FjdGl2ZV9jaGFu bmVsKHN0cnVjdCBuY3NpX2Rldl9wcml2ICpuZHApDQo+ID4gPiA+ID4gIHsNCj4gPiA+ID4gPiAt CXN0cnVjdCBuY3NpX3BhY2thZ2UgKm5wLCAqZm9yY2VfcGFja2FnZTsNCj4gPiA+ID4gPiAtCXN0 cnVjdCBuY3NpX2NoYW5uZWwgKm5jLCAqZm91bmQsICpob3RfbmMsICpmb3JjZV9jaGFubmVsOw0K PiA+ID4gPiA+ICsJc3RydWN0IG5jc2lfcGFja2FnZSAqbnA7DQo+ID4gPiA+ID4gKwlzdHJ1Y3Qg bmNzaV9jaGFubmVsICpuYywgKmZvdW5kLCAqaG90X25jOw0KPiA+ID4gPiA+ICAJc3RydWN0IG5j c2lfY2hhbm5lbF9tb2RlICpuY207DQo+ID4gPiA+ID4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOw0K PiA+ID4gPiA+ICsJdW5zaWduZWQgbG9uZyBmbGFncywgY2ZsYWdzOw0KPiA+ID4gPiA+ICsJYm9v bCB3aXRoX2xpbms7DQo+ID4gDQo+ID4gQWxsIGxvY2FsIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyBm cm9tIGxvbmdlc3QgdG8gc2hvcnRlc3QNCj4gPiBsaW5lLg0KPiA+IA0KPiA+ID4gPiA+ICANCj4g PiA+ID4gPiAgCXNwaW5fbG9ja19pcnFzYXZlKCZuZHAtPmxvY2ssIGZsYWdzKTsNCj4gPiA+ID4g PiAgCWhvdF9uYyA9IG5kcC0+aG90X2NoYW5uZWw7DQo+ID4gPiA+ID4gLQlmb3JjZV9jaGFubmVs ID0gbmRwLT5mb3JjZV9jaGFubmVsOw0KPiA+ID4gPiA+IC0JZm9yY2VfcGFja2FnZSA9IG5kcC0+ Zm9yY2VfcGFja2FnZTsNCj4gPiA+ID4gPiAgCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm5kcC0+ bG9jaywgZmxhZ3MpOw0KPiA+ID4gPiA+ICANCj4gPiA+ID4gPiAtCS8qIEZvcmNlIGEgc3BlY2lm aWMgY2hhbm5lbCB3aGV0aGVyIG9yIG5vdCBpdCBoYXMgbGluayBpZiB3ZSBoYXZlIGJlZW4NCj4g PiA+ID4gPiAtCSAqIGNvbmZpZ3VyZWQgdG8gZG8gc28NCj4gPiA+ID4gPiAtCSAqLw0KPiA+ID4g PiA+IC0JaWYgKGZvcmNlX3BhY2thZ2UgJiYgZm9yY2VfY2hhbm5lbCkgew0KPiA+ID4gPiA+IC0J CWZvdW5kID0gZm9yY2VfY2hhbm5lbDsNCj4gPiA+ID4gPiAtCQluY20gPSAmZm91bmQtPm1vZGVz W05DU0lfTU9ERV9MSU5LXTsNCj4gPiA+ID4gPiAtCQlpZiAoIShuY20tPmRhdGFbMl0gJiAweDEp KQ0KPiA+ID4gPiA+IC0JCQluZXRkZXZfaW5mbyhuZHAtPm5kZXYuZGV2LA0KPiA+ID4gPiA+IC0J CQkJICAgICJOQ1NJOiBDaGFubmVsICV1IGZvcmNlZCwgYnV0IGl0IGlzIGxpbmsgZG93blxuIiwN Cj4gPiA+ID4gPiAtCQkJCSAgICBmb3VuZC0+aWQpOw0KPiA+ID4gPiA+IC0JCWdvdG8gb3V0Ow0K PiA+ID4gPiA+IC0JfQ0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAtCS8qIFRoZSBzZWFyY2ggaXMg ZG9uZSBvbmNlIGFuIGluYWN0aXZlIGNoYW5uZWwgd2l0aCB1cA0KPiA+ID4gPiA+IC0JICogbGlu ayBpcyBmb3VuZC4NCj4gPiA+ID4gPiArCS8qIEJ5IGRlZmF1bHQgdGhlIHNlYXJjaCBpcyBkb25l IG9uY2UgYW4gaW5hY3RpdmUgY2hhbm5lbCB3aXRoIHVwDQo+ID4gPiA+ID4gKwkgKiBsaW5rIGlz IGZvdW5kLCB1bmxlc3MgYSBwcmVmZXJyZWQgY2hhbm5lbCBpcyBzZXQuDQo+ID4gPiA+ID4gKwkg KiBJZiBtdWx0aV9wYWNrYWdlIG9yIG11bHRpX2NoYW5uZWwgYXJlIGNvbmZpZ3VyZWQgYWxsIGNo YW5uZWxzIGluIHRoZQ0KPiA+ID4gPiA+ICsJICogd2hpdGVsaXN0IHdpdGggbGluayBhcmUgYWRk ZWQgdG8gdGhlIGNoYW5uZWwgcXVldWUuDQo+ID4gPiA+ID4gIAkgKi8NCj4gPiA+ID4gPiAgCWZv dW5kID0gTlVMTDsNCj4gPiA+ID4gPiArCXdpdGhfbGluayA9IGZhbHNlOw0KPiA+ID4gPiA+ICAJ TkNTSV9GT1JfRUFDSF9QQUNLQUdFKG5kcCwgbnApIHsNCj4gPiA+ID4gPiAtCQlpZiAobmRwLT5m b3JjZV9wYWNrYWdlICYmIG5wICE9IG5kcC0+Zm9yY2VfcGFja2FnZSkNCj4gPiA+ID4gPiArCQlp ZiAoIShuZHAtPnBhY2thZ2Vfd2hpdGVsaXN0ICYgKDB4MSA8PCBucC0+aWQpKSkNCj4gPiA+ID4g PiAgCQkJY29udGludWU7DQo+ID4gPiA+ID4gIAkJTkNTSV9GT1JfRUFDSF9DSEFOTkVMKG5wLCBu Yykgew0KPiA+ID4gPiA+IC0JCQlzcGluX2xvY2tfaXJxc2F2ZSgmbmMtPmxvY2ssIGZsYWdzKTsN Cj4gPiA+ID4gPiArCQkJaWYgKCEobnAtPmNoYW5uZWxfd2hpdGVsaXN0ICYgKDB4MSA8PCBuYy0+ aWQpKSkNCj4gPiA+ID4gPiArCQkJCWNvbnRpbnVlOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAr CQkJc3Bpbl9sb2NrX2lycXNhdmUoJm5jLT5sb2NrLCBjZmxhZ3MpOw0KPiA+ID4gPiA+ICANCj4g PiA+ID4gPiAgCQkJaWYgKCFsaXN0X2VtcHR5KCZuYy0+bGluaykgfHwNCj4gPiA+ID4gPiAgCQkJ ICAgIG5jLT5zdGF0ZSAhPSBOQ1NJX0NIQU5ORUxfSU5BQ1RJVkUpIHsNCj4gPiA+ID4gPiAtCQkJ CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm5jLT5sb2NrLCBmbGFncyk7DQo+ID4gPiA+ID4gKwkJ CQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZuYy0+bG9jaywgY2ZsYWdzKTsNCj4gPiA+ID4gPiAg CQkJCWNvbnRpbnVlOw0KPiA+ID4gPiA+ICAJCQl9DQo+ID4gPiA+ID4gIA0KPiA+ID4gPiA+IEBA IC04ODgsMzIgKzkzMSw0MiBAQCBzdGF0aWMgaW50IG5jc2lfY2hvb3NlX2FjdGl2ZV9jaGFubmVs KHN0cnVjdCBuY3NpX2Rldl9wcml2ICpuZHApDQo+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ICAJCQlu Y20gPSAmbmMtPm1vZGVzW05DU0lfTU9ERV9MSU5LXTsNCj4gPiA+ID4gPiAgCQkJaWYgKG5jbS0+ ZGF0YVsyXSAmIDB4MSkgew0KPiA+ID4gPiANCj4gPiA+ID4gVGhpcyBkYXRhIHdpbGwgbm90IGJl IHVwZGF0ZWQgaWYgdGhlIGNoYW5uZWwgbW9uaXRvciBmb3IgaXQgaXMgbm90IHJ1bm5pbmcuDQo+ ID4gPiA+IElmIEkgbW92ZSB0aGUgY2FibGUgZnJvbSB0aGUgY3VycmVudCBjb25maWd1cmVkIGNo YW5uZWwgdG8gdGhlIG90aGVyIGNoYW5uZWwsDQo+ID4gPiA+IE5DLVNJIG1vZHVsZSB3aWxsIG5v dCBkZXRlY3QgdGhlIGxpbmsgc3RhdHVzIGFzIHRoZSBvdGhlciBjaGFubmVsIGlzIG5vdCBjb25m aWd1cmVkDQo+ID4gPiA+IGFuZCBBRU4gd2lsbCBub3QgaGFwcGVuLg0KPiA+ID4gPiBJcyBpdCBw ZXIgZGVzaWduIHRoYXQgTkMtU0kgbW9kdWxlIHdpbGwgYWx3YXlzIHVzZSB0aGUgZmlyc3QgaW50 ZXJmYWNlIHdpdGggdGhlIGxpbms/DQo+ID4gPiANCj4gPiA+IFdlJ2xsIGNoZWNrIHRoZSBsaW5r IHN0YXRlIG9mIGV2ZXJ5IGNoYW5uZWwgYXQgaW5pdCwgYW5kIHBlci1wYWNrYWdlIG9uDQo+ID4g PiBzdXNwZW5kIGV2ZW50cywgYnV0IHlvdSdyZSByaWdodCB0aGF0IHdlIG9ubHkgZ2V0IEFFTnMg cmlnaHQgbm93IGZyb20NCj4gPiA+IGNvbmZpZ3VyZWQgY2hhbm5lbHMuIFRoZXJlJ3MgcHJvYmFi bHkgbm8gcmVhc29uIHdoeSB3ZSBjb3VsZCBhdCBsZWFzdA0KPiA+ID4gZW5hYmxlIEFFTnMgb24g YWxsIGNoYW5uZWxzIGV2ZW4gaWYgd2UgZG9uJ3QgdXNlIHRoZW0gZm9yIG5ldHdvcmssIG1heWJl DQo+ID4gPiBkdXJpbmcgdGhlIHBhY2thZ2UgcHJvYmUgc3RlcC4NCj4gPiA+IA0KPiA+IA0KPiA+ IFRvIHJlY2VpdmUgdGhlIEFFTiBwYWNrZXQsIHRoZSBjaGFubmVsIChSWCkgbmVlZHMgdG8gYmUg ZW5hYmxlZC4NCj4gPiBJdCBzZWVtcyB0aGF0IHdlIG5lZWQgdG8gc2VuZCBHZXQgTGluayBTdGF0 dXMgY29tbWFuZCB0byBhbGwgY2hhbm5lbHMgYmVmb3JlIGNob29zaW5nDQo+ID4gVGhlIGFjdGl2 ZSBjaGFubmVsLg0KPiANCj4gV2UgbW9zdGx5IGFscmVhZHkgZG8gYSBHTFMgYmVmb3JlIHRoaXM7 IGVpdGhlciB3ZSd2ZSBqdXN0IHN0YXJ0ZWQgdGhlDQo+IE5DU0kgZGV2aWNlIGluIHdoaWNoIGNh c2Ugd2Ugc2VudCBhIEdMUyB0byBldmVyeSBwYWNrYWdlIGFzIHBhcnQgb2YNCj4gcHJvYmluZywg b3Igc29tZSBvdGhlciBldmVudCBoYXMgb2NjdXJlZCBhbmQgd2UndmUgZ29uZSB0aHJvdWdoDQo+ IG5jc2lfc3VzcGVuZF9jaGFubmVsKCkgd2hpY2ggd2lsbCBkbyBuY3NpX2Rldl9zdGF0ZV9zdXNw ZW5kX2dscy4NCj4gSG93ZXZlciB0aGVyZSBhcmUgc29tZSBnYXBzIGhlcmUsIGZvciBleGFtcGxl IHRoZQ0KPiBuY3NpX3N0b3BfZGV2KCkvbmNzaV9zdGFydF9kZXYoKSBwYXRoIHdvbid0IGNhdXNl IEdMUyBjb21tYW5kcyB0byBiZSBzZW50DQo+IHNvIHdlJ2xsIGhhdmUgc3RhbGUgaW5mb3JtYXRp b24uIENvbnRpbnVlZCBiZWxvdy4uDQo+IA0KPiA+IA0KPiA+ID4gPiA+IC0JCQkJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmbmMtPmxvY2ssIGZsYWdzKTsNCj4gPiA+ID4gPiAgCQkJCWZvdW5kID0g bmM7DQo+ID4gPiA+ID4gLQkJCQlnb3RvIG91dDsNCj4gPiA+ID4gPiArCQkJCXdpdGhfbGluayA9 IHRydWU7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJCQkJc3Bpbl9sb2NrX2lycXNhdmUoJm5k cC0+bG9jaywgZmxhZ3MpOw0KPiA+ID4gPiA+ICsJCQkJbGlzdF9hZGRfdGFpbF9yY3UoJmZvdW5k LT5saW5rLA0KPiA+ID4gPiA+ICsJCQkJCQkgICZuZHAtPmNoYW5uZWxfcXVldWUpOw0KPiA+ID4g PiA+ICsJCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbmRwLT5sb2NrLCBmbGFncyk7DQo+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ICsJCQkJbmV0ZGV2X2RiZyhuZHAtPm5kZXYuZGV2LA0KPiA+ID4g PiA+ICsJCQkJCSAgICJOQ1NJOiBDaGFubmVsICV1IGFkZGVkIHRvIHF1ZXVlIChsaW5rICVzKVxu IiwNCj4gPiA+ID4gPiArCQkJCQkgICBmb3VuZC0+aWQsDQo+ID4gPiA+ID4gKwkJCQkJICAgbmNt LT5kYXRhWzJdICYgMHgxID8gInVwIiA6ICJkb3duIik7DQo+ID4gPiA+ID4gIAkJCX0NCj4gPiAN Cj4gPiBJZiBtdWx0aV9jaGFubmVsIGlzIGVuYWJsZWQsIHRoZSBpbnRlcmZhY2Ugd2l0aG91dCBs aW5rIHN0aWxsIG5lZWRzIHRvIGJlIHByb2Nlc3NlZC4NCj4gPiBTb21ldGhpbmcgbGlrZXMgYmVs b3c/DQo+ID4gCQkJfSBlbHNlIGlmIChucC0+bXVsdGlfY2hhbm5lbCkgew0KPiA+IAkJCQlmb3Vu ZCA9IG5jOw0KPiA+IA0KPiA+IAkJCQlzcGluX2xvY2tfaXJxc2F2ZSgmbmRwLT5sb2NrLCBmbGFn cyk7DQo+ID4gCQkJCWxpc3RfYWRkX3RhaWxfcmN1KCZmb3VuZC0+bGluaywNCj4gPiAJCQkJCQkg ICZuZHAtPmNoYW5uZWxfcXVldWUpOw0KPiA+IAkJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZu ZHAtPmxvY2ssIGZsYWdzKTsNCj4gPiANCj4gPiAJCQkJbmV0ZGV2X2RiZyhuZHAtPm5kZXYuZGV2 LA0KPiA+IAkJCQkJICAgIk5DU0k6IHBrZyAldSBjaCAldSBhZGRlZCB0byBxdWV1ZSAobGluayAl cylcbiIsDQo+ID4gCQkJCQkgICBmb3VuZC0+cGFja2FnZS0+aWQsDQo+ID4gCQkJCQkgICBmb3Vu ZC0+aWQsDQo+ID4gCQkJCQkgICBuY20tPmRhdGFbMl0gJiAweDEgPyAidXAiIDogImRvd24iKTsN Cj4gPiAJCQl9DQo+IA0KPiBZZXMgd2Ugc2hvdWxkIGp1c3QgY29uZmlndXJlIGV2ZXJ5IGNoYW5u ZWwgaW4gdGhlIHdoaXRlbGlzdCBpZg0KPiBtdWx0aV9jaGFubmVsIGlzIHNldCAtIHRoaXMgZ2l2 ZXMgdXMgQUVOcyBmb3IgdGhhdCBjaGFubmVsIGFuZCB3ZSdsbA0KPiByZWNvZ25pc2Ugd2hlbiBp dCBnb2VzIGxpbmsgdXAuDQo+IA0KPiBJdCB3b3VsZCBiZSBnb29kIHRvIGhhdmUgYSBiZXR0ZXIg d2F5IG9mICJib3VuY2luZyIgdGhlIE5DU0kNCj4gY29uZmlndXJhdGlvbiBpbiB0aGVzZSBjYXNl cyB0aG91Z2gsIGVzcGVjaWFsbHkgdG8gaW5jbHVkZSBhIHJlLXByb2JlIG9mDQo+IGNoYW5uZWwg c3RhdGVzLiBJJ2xsIGluY2x1ZGUgc29tZXRoaW5nIGxpa2UgdGhhdCBmb3IgdGhpcyBzZXJpZXMu DQo+IA0KPiA+IA0KPiA+ID4gPiA+ICsJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZuYy0+bG9j aywgY2ZsYWdzKTsNCj4gPiA+ID4gPiAgDQo+ID4gPiA+ID4gLQkJCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJm5jLT5sb2NrLCBmbGFncyk7DQo+ID4gPiA+ID4gKwkJCWlmICh3aXRoX2xpbmsgJiYg IW5wLT5tdWx0aV9jaGFubmVsKQ0KPiA+ID4gPiA+ICsJCQkJYnJlYWs7DQo+ID4gPiA+ID4gIAkJ fQ0KPiA+ID4gPiA+ICsJCWlmICh3aXRoX2xpbmsgJiYgIW5kcC0+bXVsdGlfcGFja2FnZSkNCj4g PiA+ID4gPiArCQkJYnJlYWs7DQo+ID4gPiA+ID4gIAl9DQo+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ IC0JaWYgKCFmb3VuZCkgew0KPiA+ID4gPiA+ICsJaWYgKCF3aXRoX2xpbmsgJiYgZm91bmQpIHsN Cj4gPiA+ID4gPiArCQluZXRkZXZfaW5mbyhuZHAtPm5kZXYuZGV2LA0KPiA+ID4gPiA+ICsJCQkg ICAgIk5DU0k6IE5vIGNoYW5uZWwgd2l0aCBsaW5rIGZvdW5kLCBjb25maWd1cmluZyBjaGFubmVs ICV1XG4iLA0KPiA+ID4gPiA+ICsJCQkgICAgZm91bmQtPmlkKTsNCj4gPiA+ID4gPiArCQlzcGlu X2xvY2tfaXJxc2F2ZSgmbmRwLT5sb2NrLCBmbGFncyk7DQo+ID4gPiA+ID4gKwkJbGlzdF9hZGRf dGFpbF9yY3UoJmZvdW5kLT5saW5rLCAmbmRwLT5jaGFubmVsX3F1ZXVlKTsNCj4gPiA+ID4gPiAr CQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZuZHAtPmxvY2ssIGZsYWdzKTsNCg0KSWYgbXVsdGkt Y2hhbm5lbCBpcyBlbmFibGVkIGFuZCB3aXRob3V0IHRoZSBsaW5rLCB0aGUgbGFzdCBmb3VuZCBj aGFubmVsIHdvdWxkIGJlIGFkZGVkIGFnYWluLg0KDQo+ID4gPiA+ID4gKwl9IGVsc2UgaWYgKCFm b3VuZCkgew0KPiA+ID4gPiA+ICAJCW5ldGRldl93YXJuKG5kcC0+bmRldi5kZXYsDQo+ID4gPiA+ ID4gLQkJCSAgICAiTkNTSTogTm8gY2hhbm5lbCBmb3VuZCB3aXRoIGxpbmtcbiIpOw0KPiA+ID4g PiA+ICsJCQkgICAgIk5DU0k6IE5vIGNoYW5uZWwgZm91bmQgdG8gY29uZmlndXJlIVxuIik7DQo+ ID4gPiA+ID4gIAkJbmNzaV9yZXBvcnRfbGluayhuZHAsIHRydWUpOw0KPiA+ID4gPiA+ICAJCXJl dHVybiAtRU5PREVWOw0KPiA+ID4gPiA+ICAJfQ0KPiA+ID4gPiA+ICANCj4gPiA+ID4gPiAtCW5j bSA9ICZmb3VuZC0+bW9kZXNbTkNTSV9NT0RFX0xJTktdOw0KPiA+ID4gPiA+IC0JbmV0ZGV2X2Ri ZyhuZHAtPm5kZXYuZGV2LA0KPiA+ID4gPiA+IC0JCSAgICJOQ1NJOiBDaGFubmVsICV1IGFkZGVk IHRvIHF1ZXVlIChsaW5rICVzKVxuIiwNCj4gPiA+ID4gPiAtCQkgICBmb3VuZC0+aWQsIG5jbS0+ ZGF0YVsyXSAmIDB4MSA/ICJ1cCIgOiAiZG93biIpOw0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAt b3V0Og0KPiA+ID4gPiA+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJm5kcC0+bG9jaywgZmxhZ3MpOw0K PiA+ID4gPiA+IC0JbGlzdF9hZGRfdGFpbF9yY3UoJmZvdW5kLT5saW5rLCAmbmRwLT5jaGFubmVs X3F1ZXVlKTsNCj4gPiA+ID4gPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm5kcC0+bG9jaywg ZmxhZ3MpOw0KPiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAgCXJldHVybiBuY3NpX3Byb2Nlc3NfbmV4 dF9jaGFubmVsKG5kcCk7DQo+ID4gPiA+ID4gIH0NCj4gPiA+ID4gPiAgDQo+ID4gPiA+ID4gQEAg LTE0MjgsNiArMTQ4MSw3IEBAIHN0cnVjdCBuY3NpX2RldiAqbmNzaV9yZWdpc3Rlcl9kZXYoc3Ry dWN0IG5ldF9kZXZpY2UgKmRldiwNCj4gPiA+ID4gPiAgCUlOSVRfTElTVF9IRUFEKCZuZHAtPmNo YW5uZWxfcXVldWUpOw0KPiA+ID4gPiA+ICAJSU5JVF9MSVNUX0hFQUQoJm5kcC0+dmxhbl92aWRz KTsNCj4gPiA+ID4gPiAgCUlOSVRfV09SSygmbmRwLT53b3JrLCBuY3NpX2Rldl93b3JrKTsNCj4g PiA+ID4gPiArCW5kcC0+cGFja2FnZV93aGl0ZWxpc3QgPSBVSU5UX01BWDsNCj4gPiA+ID4gPiAg DQo+ID4gPiA+ID4gIAkvKiBJbml0aWFsaXplIHByaXZhdGUgTkNTSSBkZXZpY2UgKi8NCj4gPiA+ ID4gPiAgCXNwaW5fbG9ja19pbml0KCZuZHAtPmxvY2spOw0KPiA+ID4gPiA+IGRpZmYgLS1naXQg YS9uZXQvbmNzaS9uY3NpLW5ldGxpbmsuYyBiL25ldC9uY3NpL25jc2ktbmV0bGluay5jDQo+ID4g PiA+ID4gaW5kZXggMzJjYjc3NTFkMjE2Li4zM2EwOTFlNmY0NjYgMTAwNjQ0DQo+ID4gPiA+ID4g LS0tIGEvbmV0L25jc2kvbmNzaS1uZXRsaW5rLmMNCj4gPiA+ID4gPiArKysgYi9uZXQvbmNzaS9u Y3NpLW5ldGxpbmsuYw0KPiA+ID4gPiANCj4gPiA+ID4gSXMgdGhlIGZvbGxvd2luZyBtaXNzZWQg aW4gdGhlIHBhdGNoPw0KPiA+ID4gPiBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgbmNz aV9nZW5sX3BvbGljeVtOQ1NJX0FUVFJfTUFYICsgMV0gPSB7DQo+ID4gPiA+IC4uLg0KPiA+ID4g PiAJW05DU0lfQVRUUl9NVUxUSV9GTEFHXSA9CXsgLnR5cGUgPSBOTEFfRkxBRyB9LA0KPiA+ID4g PiAJW05DU0lfQVRUUl9QQUNLQUdFX01BU0tdID0JeyAudHlwZSA9IE5MQV9VMzIgfSwNCj4gPiA+ ID4gCVtOQ1NJX0FUVFJfQ0hBTk5FTF9NQVNLXSA9CXsgLnR5cGUgPSBOTEFfVTMyIH0sDQo+ID4g PiANCj4gPiA+IE9vcHMsIGFkZGVkLg0KPiA+ID4gDQo+ID4gPiA+ID4gQEAgLTY3LDcgKzY3LDcg QEAgc3RhdGljIGludCBuY3NpX3dyaXRlX2NoYW5uZWxfaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2ti LA0KPiA+ID4gPiA+ICAJbmxhX3B1dF91MzIoc2tiLCBOQ1NJX0NIQU5ORUxfQVRUUl9MSU5LX1NU QVRFLCBtLT5kYXRhWzJdKTsNCj4gPiA+ID4gPiAgCWlmIChuYy0+c3RhdGUgPT0gTkNTSV9DSEFO TkVMX0FDVElWRSkNCj4gPiA+ID4gPiAgCQlubGFfcHV0X2ZsYWcoc2tiLCBOQ1NJX0NIQU5ORUxf QVRUUl9BQ1RJVkUpOw0KPiA+ID4gPiA+IC0JaWYgKG5kcC0+Zm9yY2VfY2hhbm5lbCA9PSBuYykN Cj4gPiA+ID4gPiArCWlmIChuYyA9PSBuYy0+cGFja2FnZS0+cHJlZmVycmVkX2NoYW5uZWwpDQo+ ID4gPiA+ID4gIAkJbmxhX3B1dF9mbGFnKHNrYiwgTkNTSV9DSEFOTkVMX0FUVFJfRk9SQ0VEKTsN Cj4gPiA+ID4gPiAgDQo+ID4gPiA+ID4gIAlubGFfcHV0X3UzMihza2IsIE5DU0lfQ0hBTk5FTF9B VFRSX1ZFUlNJT05fTUFKT1IsIG5jLT52ZXJzaW9uLnZlcnNpb24pOw0KPiA+ID4gPiA+IEBAIC0x MTIsNyArMTEyLDcgQEAgc3RhdGljIGludCBuY3NpX3dyaXRlX3BhY2thZ2VfaW5mbyhzdHJ1Y3Qg c2tfYnVmZiAqc2tiLA0KPiA+ID4gPiA+ICAJCWlmICghcG5lc3QpDQo+ID4gPiA+ID4gIAkJCXJl dHVybiAtRU5PTUVNOw0KPiA+ID4gPiA+ICAJCW5sYV9wdXRfdTMyKHNrYiwgTkNTSV9QS0dfQVRU Ul9JRCwgbnAtPmlkKTsNCj4gPiA+ID4gPiAtCQlpZiAobmRwLT5mb3JjZV9wYWNrYWdlID09IG5w KQ0KPiA+ID4gPiA+ICsJCWlmICgoMHgxIDw8IG5wLT5pZCkgPT0gbmRwLT5wYWNrYWdlX3doaXRl bGlzdCkNCj4gPiA+ID4gPiAgCQkJbmxhX3B1dF9mbGFnKHNrYiwgTkNTSV9QS0dfQVRUUl9GT1JD RUQpOw0KPiA+ID4gPiA+ICAJCWNuZXN0ID0gbmxhX25lc3Rfc3RhcnQoc2tiLCBOQ1NJX1BLR19B VFRSX0NIQU5ORUxfTElTVCk7DQo+ID4gPiA+ID4gIAkJaWYgKCFjbmVzdCkgew0KPiA+ID4gPiA+ IEBAIC0yODgsNDUgKzI4OCw1NCBAQCBzdGF0aWMgaW50IG5jc2lfc2V0X2ludGVyZmFjZV9ubChz dHJ1Y3Qgc2tfYnVmZiAqbXNnLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQ0KPiA+ID4gPiA+ICAJ cGFja2FnZV9pZCA9IG5sYV9nZXRfdTMyKGluZm8tPmF0dHJzW05DU0lfQVRUUl9QQUNLQUdFX0lE XSk7DQo+ID4gPiA+ID4gIAlwYWNrYWdlID0gTlVMTDsNCj4gPiA+ID4gPiAgDQo+ID4gPiA+ID4g LQlzcGluX2xvY2tfaXJxc2F2ZSgmbmRwLT5sb2NrLCBmbGFncyk7DQo+ID4gPiA+ID4gLQ0KPiA+ ID4gPiA+ICAJTkNTSV9GT1JfRUFDSF9QQUNLQUdFKG5kcCwgbnApDQo+ID4gPiA+ID4gIAkJaWYg KG5wLT5pZCA9PSBwYWNrYWdlX2lkKQ0KPiA+ID4gPiA+ICAJCQlwYWNrYWdlID0gbnA7DQo+ID4g PiA+ID4gIAlpZiAoIXBhY2thZ2UpIHsNCj4gPiA+ID4gPiAgCQkvKiBUaGUgdXNlciBoYXMgc2V0 IGEgcGFja2FnZSB0aGF0IGRvZXMgbm90IGV4aXN0ICovDQo+ID4gPiA+ID4gLQkJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmbmRwLT5sb2NrLCBmbGFncyk7DQo+ID4gPiA+ID4gIAkJcmV0dXJuIC1F UkFOR0U7DQo+ID4gPiA+ID4gIAl9DQo+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ICAJY2hhbm5lbCA9 IE5VTEw7DQo+ID4gPiA+ID4gLQlpZiAoIWluZm8tPmF0dHJzW05DU0lfQVRUUl9DSEFOTkVMX0lE XSkgew0KPiA+ID4gPiA+IC0JCS8qIEFsbG93IGFueSBjaGFubmVsICovDQo+ID4gPiA+ID4gLQkJ Y2hhbm5lbF9pZCA9IE5DU0lfUkVTRVJWRURfQ0hBTk5FTDsNCj4gPiA+ID4gPiAtCX0gZWxzZSB7 DQo+ID4gPiA+ID4gKwlpZiAoaW5mby0+YXR0cnNbTkNTSV9BVFRSX0NIQU5ORUxfSURdKSB7DQo+ ID4gPiA+ID4gIAkJY2hhbm5lbF9pZCA9IG5sYV9nZXRfdTMyKGluZm8tPmF0dHJzW05DU0lfQVRU Ul9DSEFOTkVMX0lEXSk7DQo+ID4gPiA+ID4gIAkJTkNTSV9GT1JfRUFDSF9DSEFOTkVMKHBhY2th Z2UsIG5jKQ0KPiA+ID4gPiA+IC0JCQlpZiAobmMtPmlkID09IGNoYW5uZWxfaWQpDQo+ID4gPiA+ ID4gKwkJCWlmIChuYy0+aWQgPT0gY2hhbm5lbF9pZCkgew0KPiA+ID4gPiA+ICAJCQkJY2hhbm5l bCA9IG5jOw0KPiA+ID4gPiA+ICsJCQkJYnJlYWs7DQo+ID4gPiA+ID4gKwkJCX0NCj4gPiA+ID4g PiArCQlpZiAoIWNoYW5uZWwpIHsNCj4gPiA+ID4gPiArCQkJbmV0ZGV2X2luZm8obmRwLT5uZGV2 LmRldiwNCj4gPiA+ID4gPiArCQkJCSAgICAiTkNTSTogQ2hhbm5lbCAldSBkb2VzIG5vdCBleGlz dCFcbiIsDQo+ID4gPiA+ID4gKwkJCQkgICAgY2hhbm5lbF9pZCk7DQo+ID4gPiA+ID4gKwkJCXJl dHVybiAtRVJBTkdFOw0KPiA+ID4gPiA+ICsJCX0NCj4gPiA+ID4gPiAgCX0NCj4gPiA+ID4gPiAg DQo+ID4gPiA+ID4gLQlpZiAoY2hhbm5lbF9pZCAhPSBOQ1NJX1JFU0VSVkVEX0NIQU5ORUwgJiYg IWNoYW5uZWwpIHsNCj4gPiA+ID4gPiAtCQkvKiBUaGUgdXNlciBoYXMgc2V0IGEgY2hhbm5lbCB0 aGF0IGRvZXMgbm90IGV4aXN0IG9uIHRoaXMNCj4gPiA+ID4gPiAtCQkgKiBwYWNrYWdlDQo+ID4g PiA+ID4gLQkJICovDQo+ID4gPiA+ID4gLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbmRwLT5s b2NrLCBmbGFncyk7DQo+ID4gPiA+ID4gLQkJbmV0ZGV2X2luZm8obmRwLT5uZGV2LmRldiwgIk5D U0k6IENoYW5uZWwgJXUgZG9lcyBub3QgZXhpc3QhXG4iLA0KPiA+ID4gPiA+IC0JCQkgICAgY2hh bm5lbF9pZCk7DQo+ID4gPiA+ID4gLQkJcmV0dXJuIC1FUkFOR0U7DQo+ID4gPiA+ID4gLQl9DQo+ ID4gPiA+ID4gLQ0KPiA+ID4gPiA+IC0JbmRwLT5mb3JjZV9wYWNrYWdlID0gcGFja2FnZTsNCj4g PiA+ID4gPiAtCW5kcC0+Zm9yY2VfY2hhbm5lbCA9IGNoYW5uZWw7DQo+ID4gPiA+ID4gKwlzcGlu X2xvY2tfaXJxc2F2ZSgmbmRwLT5sb2NrLCBmbGFncyk7DQo+ID4gPiA+ID4gKwluZHAtPnBhY2th Z2Vfd2hpdGVsaXN0ID0gMHgxIDw8IHBhY2thZ2UtPmlkOw0KPiA+ID4gPiA+ICsJbmRwLT5tdWx0 aV9wYWNrYWdlID0gZmFsc2U7DQo+ID4gPiA+ID4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZu ZHAtPmxvY2ssIGZsYWdzKTsNCj4gPiA+ID4gPiAgDQo+ID4gPiA+ID4gLQluZXRkZXZfaW5mbyhu ZHAtPm5kZXYuZGV2LCAiU2V0IHBhY2thZ2UgMHgleCwgY2hhbm5lbCAweCV4JXMgYXMgcHJlZmVy cmVkXG4iLA0KPiA+ID4gPiA+IC0JCSAgICBwYWNrYWdlX2lkLCBjaGFubmVsX2lkLA0KPiA+ID4g PiA+IC0JCSAgICBjaGFubmVsX2lkID09IE5DU0lfUkVTRVJWRURfQ0hBTk5FTCA/ICIgKGFueSki IDogIiIpOw0KPiA+ID4gPiA+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnBhY2thZ2UtPmxvY2ssIGZs YWdzKTsNCj4gPiA+ID4gPiArCXBhY2thZ2UtPm11bHRpX2NoYW5uZWwgPSBmYWxzZTsNCj4gPiA+ ID4gPiArCWlmIChjaGFubmVsKSB7DQo+ID4gPiA+ID4gKwkJcGFja2FnZS0+Y2hhbm5lbF93aGl0 ZWxpc3QgPSAweDEgPDwgY2hhbm5lbC0+aWQ7DQo+ID4gPiA+ID4gKwkJcGFja2FnZS0+cHJlZmVy cmVkX2NoYW5uZWwgPSBjaGFubmVsOw0KPiA+ID4gPiA+ICsJfSBlbHNlIHsNCj4gPiA+ID4gPiAr CQkvKiBBbGxvdyBhbnkgY2hhbm5lbCAqLw0KPiA+ID4gPiA+ICsJCXBhY2thZ2UtPmNoYW5uZWxf d2hpdGVsaXN0ID0gVUlOVF9NQVg7DQo+ID4gPiA+ID4gKwkJcGFja2FnZS0+cHJlZmVycmVkX2No YW5uZWwgPSBOVUxMOw0KPiA+ID4gPiA+ICsJfQ0KPiA+ID4gPiA+ICsJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmcGFja2FnZS0+bG9jaywgZmxhZ3MpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAr CWlmIChjaGFubmVsKQ0KPiA+ID4gPiA+ICsJCW5ldGRldl9pbmZvKG5kcC0+bmRldi5kZXYsDQo+ ID4gPiA+ID4gKwkJCSAgICAiU2V0IHBhY2thZ2UgMHgleCwgY2hhbm5lbCAweCV4IGFzIHByZWZl cnJlZFxuIiwNCj4gPiA+ID4gPiArCQkJICAgIHBhY2thZ2VfaWQsIGNoYW5uZWxfaWQpOw0KPiA+ ID4gPiA+ICsJZWxzZQ0KPiA+ID4gPiA+ICsJCW5ldGRldl9pbmZvKG5kcC0+bmRldi5kZXYsICJT ZXQgcGFja2FnZSAweCV4IGFzIHByZWZlcnJlZFxuIiwNCj4gPiA+ID4gPiArCQkJICAgIHBhY2th Z2VfaWQpOw0KPiA+ID4gPiA+ICANCj4gPiA+ID4gPiAgCS8qIEJvdW5jZSB0aGUgTkNTSSBjaGFu bmVsIHRvIHNldCBjaGFuZ2VzICovDQo+ID4gPiA+ID4gIAluY3NpX3N0b3BfZGV2KCZuZHAtPm5k ZXYpOw0KPiA+ID4gPiA+IEBAIC0zMzgsNiArMzQ3LDcgQEAgc3RhdGljIGludCBuY3NpX3NldF9p bnRlcmZhY2Vfbmwoc3RydWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykN Cj4gPiA+ID4gPiAgc3RhdGljIGludCBuY3NpX2NsZWFyX2ludGVyZmFjZV9ubChzdHJ1Y3Qgc2tf YnVmZiAqbXNnLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQ0KPiA+ID4gPiA+ICB7DQo+ID4gPiA+ ID4gIAlzdHJ1Y3QgbmNzaV9kZXZfcHJpdiAqbmRwOw0KPiA+ID4gPiA+ICsJc3RydWN0IG5jc2lf cGFja2FnZSAqbnA7DQo+ID4gPiA+ID4gIAl1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiA+ID4gPiA+ ICANCj4gPiA+ID4gPiAgCWlmICghaW5mbyB8fCAhaW5mby0+YXR0cnMpDQo+ID4gPiA+ID4gQEAg LTM1MSwxMSArMzYxLDE5IEBAIHN0YXRpYyBpbnQgbmNzaV9jbGVhcl9pbnRlcmZhY2Vfbmwoc3Ry dWN0IHNrX2J1ZmYgKm1zZywgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykNCj4gPiA+ID4gPiAgCWlm ICghbmRwKQ0KPiA+ID4gPiA+ICAJCXJldHVybiAtRU5PREVWOw0KPiA+ID4gPiA+ICANCj4gPiA+ ID4gPiAtCS8qIENsZWFyIGFueSBvdmVycmlkZSAqLw0KPiA+ID4gPiA+ICsJLyogUmVzZXQgYW55 IHdoaXRlbGlzdHMgYW5kIGRpc2FibGUgbXVsdGkgbW9kZSAqLw0KPiA+ID4gPiA+ICAJc3Bpbl9s b2NrX2lycXNhdmUoJm5kcC0+bG9jaywgZmxhZ3MpOw0KPiA+ID4gPiA+IC0JbmRwLT5mb3JjZV9w YWNrYWdlID0gTlVMTDsNCj4gPiA+ID4gPiAtCW5kcC0+Zm9yY2VfY2hhbm5lbCA9IE5VTEw7DQo+ ID4gPiA+ID4gKwluZHAtPnBhY2thZ2Vfd2hpdGVsaXN0ID0gVUlOVF9NQVg7DQo+ID4gPiA+ID4g KwluZHAtPm11bHRpX3BhY2thZ2UgPSBmYWxzZTsNCj4gPiA+ID4gPiAgCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJm5kcC0+bG9jaywgZmxhZ3MpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCU5D U0lfRk9SX0VBQ0hfUEFDS0FHRShuZHAsIG5wKSB7DQo+ID4gPiA+ID4gKwkJc3Bpbl9sb2NrX2ly cXNhdmUoJm5wLT5sb2NrLCBmbGFncyk7DQo+ID4gPiA+ID4gKwkJbnAtPm11bHRpX2NoYW5uZWwg PSBmYWxzZTsNCj4gPiA+ID4gPiArCQlucC0+Y2hhbm5lbF93aGl0ZWxpc3QgPSBVSU5UX01BWDsN Cj4gPiA+ID4gPiArCQlucC0+cHJlZmVycmVkX2NoYW5uZWwgPSBOVUxMOw0KPiA+ID4gPiA+ICsJ CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm5wLT5sb2NrLCBmbGFncyk7DQo+ID4gPiA+ID4gKwl9 DQo+ID4gPiA+ID4gIAluZXRkZXZfaW5mbyhuZHAtPm5kZXYuZGV2LCAiTkNTSTogQ2xlYXJlZCBw cmVmZXJyZWQgcGFja2FnZS9jaGFubmVsXG4iKTsNCj4gPiA+ID4gPiAgDQo+ID4gPiA+ID4gIAkv KiBCb3VuY2UgdGhlIE5DU0kgY2hhbm5lbCB0byBzZXQgY2hhbmdlcyAqLw0KPiA+ID4gPiA+IEBA IC0zNjUsNiArMzgzLDEzNyBAQCBzdGF0aWMgaW50IG5jc2lfY2xlYXJfaW50ZXJmYWNlX25sKHN0 cnVjdCBza19idWZmICptc2csIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pDQo+ID4gPiA+ID4gIAly ZXR1cm4gMDsNCj4gPiA+ID4gPiAgfQ0KPiA+ID4gPiA+ICANCj4gPiA+ID4gPiArc3RhdGljIGlu dCBuY3NpX3NldF9wYWNrYWdlX21hc2tfbmwoc3RydWN0IHNrX2J1ZmYgKm1zZywNCj4gPiA+ID4g PiArCQkJCSAgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ ID4gKwlzdHJ1Y3QgbmNzaV9kZXZfcHJpdiAqbmRwOw0KPiA+ID4gPiA+ICsJdW5zaWduZWQgbG9u ZyBmbGFnczsNCj4gPiA+ID4gPiArCWludCByYzsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwlp ZiAoIWluZm8gfHwgIWluZm8tPmF0dHJzKQ0KPiA+ID4gPiA+ICsJCXJldHVybiAtRUlOVkFMOw0K PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCWlmICghaW5mby0+YXR0cnNbTkNTSV9BVFRSX0lGSU5E RVhdKQ0KPiA+ID4gPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiArCWlmICghaW5mby0+YXR0cnNbTkNTSV9BVFRSX1BBQ0tBR0VfTUFTS10pDQo+ID4gPiA+ID4g KwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJbmRwID0gbmRwX2Zy b21faWZpbmRleChnZXRfbmV0KHNvY2tfbmV0KG1zZy0+c2spKSwNCj4gPiA+ID4gPiArCQkJICAg ICAgIG5sYV9nZXRfdTMyKGluZm8tPmF0dHJzW05DU0lfQVRUUl9JRklOREVYXSkpOw0KPiA+ID4g PiA+ICsJaWYgKCFuZHApDQo+ID4gPiA+ID4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJm5kcC0+bG9jaywgZmxhZ3MpOw0KPiA+ ID4gPiA+ICsJbmRwLT5wYWNrYWdlX3doaXRlbGlzdCA9DQo+ID4gPiA+ID4gKwkJbmxhX2dldF91 MzIoaW5mby0+YXR0cnNbTkNTSV9BVFRSX1BBQ0tBR0VfTUFTS10pOw0KPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiArCWlmIChubGFfZ2V0X2ZsYWcoaW5mby0+YXR0cnNbTkNTSV9BVFRSX01VTFRJX0ZM QUddKSkgew0KPiA+ID4gPiA+ICsJCWlmIChuZHAtPmZsYWdzICYgTkNTSV9ERVZfSFdBKSB7DQo+ ID4gPiA+ID4gKwkJCW5kcC0+bXVsdGlfcGFja2FnZSA9IHRydWU7DQo+ID4gPiA+ID4gKwkJCXJj ID0gMDsNCj4gPiA+ID4gPiArCQl9IGVsc2Ugew0KPiA+ID4gPiA+ICsJCQluZXRkZXZfZXJyKG5k cC0+bmRldi5kZXYsDQo+ID4gPiA+ID4gKwkJCQkgICAiTkNTSTogQ2FuJ3QgdXNlIG11bHRpcGxl IHBhY2thZ2VzIHdpdGhvdXQgSFdBXG4iKTsNCj4gPiA+ID4gPiArCQkJcmMgPSAtRVBFUk07DQo+ ID4gPiA+ID4gKwkJfQ0KPiA+ID4gPiA+ICsJfSBlbHNlIHsNCj4gPiA+ID4gPiArCQlyYyA9IDA7 DQoNCkkgbWVhbiB0aGlzIG9uZS4gSWYgTkNTSV9BVFRSX01VTFRJX0ZMQUcgYXR0cmlidXRlIGlz IG5vdCBzZXQsIGl0IG1lYW5zIHVzZXIgZGlzYWJsZXMgaXQuDQoNCj4gPiA+ID4gPiArCX0NCj4g PiANCj4gPiBJZiB0aGUgZmxhZyBpcyBub3Qgc2V0LCBkbyB3ZSBuZWVkIHRvIGNsZWFyIHRoZSBt dWx0aV9wYWNrYWdlIGZsYWc/IEl0IGlzIHBvc3NpYmxlIHRoYXQgaXQgaXMNCj4gPiB1c2VyJ3Mg aW50ZW5zaW9uIHRvIGRpc2FibGUgdGhlIG11bHRpLW1vZGUuDQo+ID4gCX0gZWxzZSB7DQo+ID4g CQluZHAtPm11bHRpX3BhY2thZ2UgPSBmYWxzZTsNCj4gPiAJCXJjID0gMDsNCj4gPiAJfQ0KPiAN Cj4gWWVwLCBnb29kIGNhdGNoIChhbHRob3VnaCB0ZWNobmljYWxseSBtdWx0aV9wYWNrYWdlIGNv dWxkIG5vdCBoYXZlIGJlZW4NCj4gc2V0IHRydWUgaW4gdGhlIHBhc3QgaWYgSFdBIGlzIG5vdCBh dmFpbGFibGUpLg0KPiANCj4gPiANCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZuZHAtPmxvY2ssIGZsYWdzKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g KwlpZiAoIXJjKSB7DQo+ID4gPiA+ID4gKwkJLyogQm91bmNlIHRoZSBOQ1NJIGNoYW5uZWwgdG8g c2V0IGNoYW5nZXMgKi8NCj4gPiA+ID4gPiArCQluY3NpX3N0b3BfZGV2KCZuZHAtPm5kZXYpOw0K DQpJbnNpZGUgdGhlIG5jc2lfc3RvcF9kZXYoKSBmdW5jdGlvbiwgZG8gd2UgbmVlZCB0byBzdXNw ZW5kIGNoYW5uZWw/DQpEaXNhYmxlIGNoYW5uZWwgYW5kIFRYPw0KDQo+ID4gPiA+ID4gKwkJbmNz aV9zdGFydF9kZXYoJm5kcC0+bmRldik7DQo+ID4gPiA+IA0KPiA+ID4gPiBJcyBpdCBwb3NzaWJs ZSB0byBkZWxheSB0aGUgcmVzdGFydD8gSWYgd2UgaGF2ZSB0d28gcGFja2FnZXMsIHdlIG1pZ2h0 IHNlbmQNCj4gPiA+ID4gc2V0X3BhY2thZ2VfbWFzayBjb21tYW5kIG9uY2UgYW5kIHNldF9jaGFu bmVsX21hc2sgY29tbWFuZCB0d2ljZS4NCj4gPiA+ID4gV2Ugd2lsbCBzZWUgdGhlIHVubmVjZXNz YXJ5IHJlY29uZmlndXJhdGlvbnMgaW4gYSB2ZXJ5IHNob3J0IHBlcmlvZCB0aW1lLg0KPiA+ID4g DQo+ID4gPiBXZSBjb3VsZCBwcm9iYWJseSBkbyB3aXRoIGEgYmV0dGVyIHdheSBvZiBib3VuY2lu ZyB0aGUgbGluayBoZXJlIHRvby4gSQ0KPiA+ID4gc3VwcG9zZSB3ZSBjb3VsZCBzY2hlZHVsZSB0 aGUgYWN0dWFsIGxpbmsgJ2JvdW5jZScgdG8gb2NjdXIgYSBzZWNvbmQgb3INCj4gPiA+IHR3byBs YXRlciwgYW5kIGRlbGF5IGlmIHdlIHJlY2VpdmUgbmV3IGNvbmZpZ3VyYXRpb24gaW4gdGhhdCB0 aW1lLg0KPiA+ID4gUGVyaGFwcyBzb21ldGhpbmcgb3V0c2lkZSBvZiB0aGUgc2NvcGUgb2YgdGhp cyBwYXRjaCB0aG91Z2guDQo+ID4gPiANCj4gPiA+ID4gPiArCX0NCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKwlyZXR1cm4gcmM7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4g K3N0YXRpYyBpbnQgbmNzaV9zZXRfY2hhbm5lbF9tYXNrX25sKHN0cnVjdCBza19idWZmICptc2cs DQo+ID4gPiA+ID4gKwkJCQkgICAgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykNCj4gPiA+ID4gPiAr ew0KPiA+ID4gPiA+ICsJc3RydWN0IG5jc2lfcGFja2FnZSAqbnAsICpwYWNrYWdlOw0KPiA+ID4g PiA+ICsJc3RydWN0IG5jc2lfY2hhbm5lbCAqbmMsICpjaGFubmVsOw0KPiA+ID4gPiA+ICsJc3Ry dWN0IG5jc2lfZGV2X3ByaXYgKm5kcDsNCj4gPiA+ID4gPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7 DQo+ID4gPiA+ID4gKwl1MzIgcGFja2FnZV9pZCwgY2hhbm5lbF9pZDsNCj4gPiANCj4gPiBBbGwg bG9jYWwgdmFyaWFibGUgZGVjbGFyYXRpb25zIGZyb20gbG9uZ2VzdCB0byBzaG9ydGVzdA0KPiA+ IGxpbmUuDQo+ID4gDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJaWYgKCFpbmZvIHx8ICFpbmZv LT5hdHRycykNCj4gPiA+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKwlpZiAoIWluZm8tPmF0dHJzW05DU0lfQVRUUl9JRklOREVYXSkNCj4gPiA+ID4gPiAr CQlyZXR1cm4gLUVJTlZBTDsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwlpZiAoIWluZm8tPmF0 dHJzW05DU0lfQVRUUl9QQUNLQUdFX0lEXSkNCj4gPiA+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsN Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwlpZiAoIWluZm8tPmF0dHJzW05DU0lfQVRUUl9DSEFO TkVMX01BU0tdKQ0KPiA+ID4gPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiArCW5kcCA9IG5kcF9mcm9tX2lmaW5kZXgoZ2V0X25ldChzb2NrX25ldChtc2ctPnNr KSksDQo+ID4gPiA+ID4gKwkJCSAgICAgICBubGFfZ2V0X3UzMihpbmZvLT5hdHRyc1tOQ1NJX0FU VFJfSUZJTkRFWF0pKTsNCj4gPiA+ID4gPiArCWlmICghbmRwKQ0KPiA+ID4gPiA+ICsJCXJldHVy biAtRU5PREVWOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCXBhY2thZ2VfaWQgPSBubGFfZ2V0 X3UzMihpbmZvLT5hdHRyc1tOQ1NJX0FUVFJfUEFDS0FHRV9JRF0pOw0KPiA+ID4gPiA+ICsJcGFj a2FnZSA9IE5VTEw7DQo+ID4gPiA+ID4gKwlOQ1NJX0ZPUl9FQUNIX1BBQ0tBR0UobmRwLCBucCkN Cj4gPiA+ID4gPiArCQlpZiAobnAtPmlkID09IHBhY2thZ2VfaWQpIHsNCj4gPiA+ID4gPiArCQkJ cGFja2FnZSA9IG5wOw0KPiA+ID4gPiA+ICsJCQlicmVhazsNCj4gPiA+ID4gPiArCQl9DQo+ID4g PiA+ID4gKwlpZiAoIXBhY2thZ2UpDQo+ID4gPiA+ID4gKwkJcmV0dXJuIC1FUkFOR0U7DQo+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnBhY2thZ2UtPmxvY2ssIGZs YWdzKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwljaGFubmVsID0gTlVMTDsNCj4gPiA+ID4g PiArCWlmIChpbmZvLT5hdHRyc1tOQ1NJX0FUVFJfQ0hBTk5FTF9JRF0pIHsNCj4gPiA+ID4gPiAr CQljaGFubmVsX2lkID0gbmxhX2dldF91MzIoaW5mby0+YXR0cnNbTkNTSV9BVFRSX0NIQU5ORUxf SURdKTsNCj4gPiA+ID4gPiArCQlOQ1NJX0ZPUl9FQUNIX0NIQU5ORUwobnAsIG5jKQ0KPiA+ID4g PiA+ICsJCQlpZiAobmMtPmlkID09IGNoYW5uZWxfaWQpIHsNCj4gPiA+ID4gPiArCQkJCWNoYW5u ZWwgPSBuYzsNCj4gPiA+ID4gPiArCQkJCWJyZWFrOw0KPiA+ID4gPiA+ICsJCQl9DQo+ID4gPiA+ ID4gKwkJaWYgKCFjaGFubmVsKSB7DQo+ID4gPiA+ID4gKwkJCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJnBhY2thZ2UtPmxvY2ssIGZsYWdzKTsNCj4gPiA+ID4gPiArCQkJcmV0dXJuIC1FUkFOR0U7 DQo+ID4gPiA+ID4gKwkJfQ0KPiA+ID4gPiA+ICsJCW5ldGRldl9kYmcobmRwLT5uZGV2LmRldiwN Cj4gPiA+ID4gPiArCQkJICAgIk5DU0k6IENoYW5uZWwgJXUgc2V0IGFzIHByZWZlcnJlZCBjaGFu bmVsXG4iLA0KPiA+ID4gPiA+ICsJCQkgICBjaGFubmVsLT5pZCk7DQo+ID4gPiA+ID4gKwl9DQo+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJcGFja2FnZS0+Y2hhbm5lbF93aGl0ZWxpc3QgPQ0KPiA+ ID4gPiA+ICsJCW5sYV9nZXRfdTMyKGluZm8tPmF0dHJzW05DU0lfQVRUUl9DSEFOTkVMX01BU0td KTsNCj4gPiA+ID4gPiArCWlmIChwYWNrYWdlLT5jaGFubmVsX3doaXRlbGlzdCA9PSAwKQ0KPiA+ ID4gPiA+ICsJCW5ldGRldl9kYmcobmRwLT5uZGV2LmRldiwNCj4gPiA+ID4gPiArCQkJICAgIk5D U0k6IFBhY2thZ2UgJXUgc2V0IHRvIGFsbCBjaGFubmVscyBkaXNhYmxlZFxuIiwNCj4gPiA+ID4g PiArCQkJICAgcGFja2FnZS0+aWQpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCXBhY2thZ2Ut PnByZWZlcnJlZF9jaGFubmVsID0gY2hhbm5lbDsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwlp ZiAobmxhX2dldF9mbGFnKGluZm8tPmF0dHJzW05DU0lfQVRUUl9NVUxUSV9GTEFHXSkpIHsNCj4g PiA+ID4gPiArCQlwYWNrYWdlLT5tdWx0aV9jaGFubmVsID0gdHJ1ZTsNCj4gPiA+ID4gPiArCQlu ZXRkZXZfaW5mbyhuZHAtPm5kZXYuZGV2LA0KPiA+ID4gPiA+ICsJCQkgICAgIk5DU0k6IE11bHRp LWNoYW5uZWwgZW5hYmxlZCBvbiBwYWNrYWdlICV1XG4iLA0KPiA+ID4gPiA+ICsJCQkgICAgcGFj a2FnZV9pZCk7DQo+ID4gPiA+ID4gKwl9IGVsc2Ugew0KPiA+ID4gPiA+ICsJCXBhY2thZ2UtPm11 bHRpX2NoYW5uZWwgPSBmYWxzZTsNCj4gPiA+ID4gPiArCX0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwYWNrYWdlLT5sb2NrLCBmbGFncyk7DQo+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ICsJLyogQm91bmNlIHRoZSBOQ1NJIGNoYW5uZWwgdG8gc2V0IGNo YW5nZXMgKi8NCj4gPiA+ID4gPiArCW5jc2lfc3RvcF9kZXYoJm5kcC0+bmRldik7DQo+ID4gPiA+ ID4gKwluY3NpX3N0YXJ0X2RldigmbmRwLT5uZGV2KTsNCj4gPiA+ID4gDQo+ID4gPiA+IFNhbWUg cXVlc3Rpb24gYXMgc2V0X3BhY2thZ2VfbWFzayBmdW5jdGlvbi4NCj4gPiA+ID4gSXMgaXQgcG9z c2libGUgdG8gZGVsYXkgdGhlIHJlc3RhcnQ/IElmIHdlIGhhdmUgdHdvIHBhY2thZ2VzLCB3ZSBt aWdodCBzZW5kDQo+ID4gPiA+IHNldF9wYWNrYWdlX21hc2sgY29tbWFuZCBvbmNlIGFuZCBzZXRf Y2hhbm5lbF9tYXNrIGNvbW1hbmQgdHdpY2UuDQo+ID4gPiA+IFdlIHdpbGwgc2VlIHRoZSB1bm5l Y2Vzc2FyeSByZWNvbmZpZ3VyYXRpb25zIGluIGEgdmVyeSBzaG9ydCBwZXJpb2QgdGltZS4NCj4g PiA+ID4gDQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJcmV0dXJuIDA7DQo+ID4gPiA+ID4gK30N Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9vcHMgbmNz aV9vcHNbXSA9IHsNCj4gPiA+ID4gPiAgCXsNCj4gPiA+ID4gPiAgCQkuY21kID0gTkNTSV9DTURf UEtHX0lORk8sDQo+ID4gPiA+ID4gQEAgLTM4NSw2ICs1MzQsMTggQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBnZW5sX29wcyBuY3NpX29wc1tdID0gew0KPiA+ID4gPiA+ICAJCS5kb2l0ID0gbmNzaV9j bGVhcl9pbnRlcmZhY2VfbmwsDQo+ID4gPiA+ID4gIAkJLmZsYWdzID0gR0VOTF9BRE1JTl9QRVJN LA0KPiA+ID4gPiA+ICAJfSwNCj4gPiA+ID4gPiArCXsNCj4gPiA+ID4gPiArCQkuY21kID0gTkNT SV9DTURfU0VUX1BBQ0tBR0VfTUFTSywNCj4gPiA+ID4gPiArCQkucG9saWN5ID0gbmNzaV9nZW5s X3BvbGljeSwNCj4gPiA+ID4gPiArCQkuZG9pdCA9IG5jc2lfc2V0X3BhY2thZ2VfbWFza19ubCwN Cj4gPiA+ID4gPiArCQkuZmxhZ3MgPSBHRU5MX0FETUlOX1BFUk0sDQo+ID4gPiA+ID4gKwl9LA0K PiA+ID4gPiA+ICsJew0KPiA+ID4gPiA+ICsJCS5jbWQgPSBOQ1NJX0NNRF9TRVRfQ0hBTk5FTF9N QVNLLA0KPiA+ID4gPiA+ICsJCS5wb2xpY3kgPSBuY3NpX2dlbmxfcG9saWN5LA0KPiA+ID4gPiA+ ICsJCS5kb2l0ID0gbmNzaV9zZXRfY2hhbm5lbF9tYXNrX25sLA0KPiA+ID4gPiA+ICsJCS5mbGFn cyA9IEdFTkxfQURNSU5fUEVSTSwNCj4gPiA+ID4gPiArCX0sDQo+ID4gPiA+ID4gIH07DQo+ID4g PiA+ID4gIA0KPiA+ID4gPiA+ICBzdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IG5jc2lfZ2VubF9m YW1pbHkgX19yb19hZnRlcl9pbml0ID0gew0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9uZXQvbmNz aS9uY3NpLXJzcC5jIGIvbmV0L25jc2kvbmNzaS1yc3AuYw0KPiA+ID4gPiA+IGluZGV4IGQ2NmIz NDc0OTAyNy4uMDJjZTc2MjZiNTc5IDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL25ldC9uY3NpL25j c2ktcnNwLmMNCj4gPiA+ID4gPiArKysgYi9uZXQvbmNzaS9uY3NpLXJzcC5jDQo+ID4gPiA+ID4g QEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0aWMgaW50IG5jc2lfcnNwX2hhbmRsZXJfZGNudChzdHJ1 Y3QgbmNzaV9yZXF1ZXN0ICpucikNCj4gPiA+ID4gPiAgCWlmICghbmNtLT5lbmFibGUpDQo+ID4g PiA+ID4gIAkJcmV0dXJuIDA7DQo+ID4gPiA+ID4gIA0KPiA+ID4gPiA+IC0JbmNtLT5lbmFibGUg PSAxOw0KPiA+ID4gPiA+ICsJbmNtLT5lbmFibGUgPSAwOw0KPiA+ID4gPiA+ICAJcmV0dXJuIDA7 DQo+ID4gPiA+ID4gIH0NCj4gPiA+ID4gPiAgDQo+ID4gPiA+ID4gLS0gDQo+ID4gPiA+ID4gMi4x OS4wDQoNCg0K