From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.0 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED, USER_AGENT_SANE_2 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AD4A4C07E95 for ; Tue, 20 Jul 2021 05:58:19 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 17E226113A for ; Tue, 20 Jul 2021 05:58:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 17E226113A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id EF87B6E247; Tue, 20 Jul 2021 05:58:15 +0000 (UTC) Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) by gabe.freedesktop.org (Postfix) with ESMTPS id 983336E243 for ; Tue, 20 Jul 2021 05:58:13 +0000 (UTC) X-UUID: 7e07ddbc631f440db7c859374a5df458-20210720 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=InCC7RRYeFnNDaPbXWKFZyszAEeppI/ys4dDomsowIs=; b=YyRkZ9PKcvYT3VBExq7AAj6AcWKwTfDzpIqvrtg3qVDABNQ3/T/Dkz6udfG6fDOOI5GPOjSezFszEKfmjbimpE9T7T9RiubK3Pl6+NFTGuSYH878x1XIib/TZiGTjGoCAd+mca1+j+nvKwVPGK6Qkt4+huomWoTdGxmxDT/eINk=; X-UUID: 7e07ddbc631f440db7c859374a5df458-20210720 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 410702828; Tue, 20 Jul 2021 13:58:00 +0800 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 20 Jul 2021 13:57:58 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 20 Jul 2021 13:57:58 +0800 Message-ID: <1626760678.15532.14.camel@mtksdaap41> Subject: Re: [PATCH v1 07/10] drm/mediatek: add pseudo ovl support for MT8195 From: CK Hu To: Nancy.Lin Date: Tue, 20 Jul 2021 13:57:58 +0800 In-Reply-To: <20210717090408.28283-8-nancy.lin@mediatek.com> References: <20210717090408.28283-1-nancy.lin@mediatek.com> <20210717090408.28283-8-nancy.lin@mediatek.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Chun-Kuang Hu , srv_heupstream@mediatek.com, devicetree@vger.kernel.org, David Airlie , "jason-jh . lin" , singo.chang@mediatek.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Yongqiang Niu , Rob Herring , linux-mediatek@lists.infradead.org, Matthias Brugger , linux-arm-kernel@lists.infradead.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" DQpIaSwgTmFuY3k6DQoNCk9uIFNhdCwgMjAyMS0wNy0xNyBhdCAxNzowNCArMDgwMCwgTmFuY3ku TGluIHdyb3RlOg0KPiBBZGQgcHNldWRvIG92bCBtb2R1bGUgZmlsZXM6DQo+IFBzZXVkbyBvdmwg aXMgYW4gZW5jYXBzdWxhdGVkIG1vZHVsZSBhbmQgZGVzaWduZWQgZm9yIHNpbXBsaWZpZWQNCj4g RFJNIGNvbnRyb2wgZmxvdy4gVGhpcyBtb2R1bGUgaXMgY29tcG9zZWQgb2YgOCBSRE1BcyBhbmQg NCBNRVJHRXMuDQo+IFR3byBSRE1BcyBtZXJnZSBpbnRvIG9uZSBsYXllciwgc28gdGhpcyBtb2R1 bGUgc3VwcG9ydCA0DQo+IGxheWVycy4gVGhlIGZvdXIgbGF5ZXJzIGFyZSBibGVuZGluZyBhdCB0 aGUgRUhURFIgbW9kdWxlIG5leHQgdG8gaXQuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBOYW5jeS5M aW4gPG5hbmN5LmxpbkBtZWRpYXRlay5jb20+DQo+IC0tLQ0KPiAgZHJpdmVycy9ncHUvZHJtL21l ZGlhdGVrL01ha2VmaWxlICAgICAgICAgICAgIHwgICA0ICstDQo+ICBkcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2Rpc3BfZHJ2LmggICAgICAgfCAgMTIgKw0KPiAgLi4uL2dwdS9kcm0vbWVk aWF0ZWsvbXRrX2Rpc3BfcHNldWRvX292bC5jICAgIHwgNjU1ICsrKysrKysrKysrKysrKysrKw0K PiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwX2NvbXAuYyAgIHwgIDUwICsr DQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHBfY29tcC5oICAgfCAgIDMg Kw0KPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMgICAgICAgIHwgICA0 ICsNCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oICAgICAgICB8ICAg MSArDQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX21kcF9yZG1hLmMgICAgICAgfCA0 NTYgKysrKysrKysrKysrDQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX21kcF9yZG1h LmggICAgICAgfCAxMDkgKysrDQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX21kcF9y ZWdfcmRtYS5oICAgfCAxNjAgKysrKysNCj4gIDEwIGZpbGVzIGNoYW5nZWQsIDE0NTMgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfZGlzcF9wc2V1ZG9fb3ZsLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX21kcF9yZG1hLmMNCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX21kcF9yZG1hLmgNCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX21kcF9yZWdfcmRtYS5o DQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlIGIv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlDQo+IGluZGV4IGZjY2UwODcxMGNlZi4u NzBiNTM0ODdhYjBjIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFr ZWZpbGUNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlDQo+IEBAIC0x NCw3ICsxNCw5IEBAIG1lZGlhdGVrLWRybS15IDo9IG10a19kaXNwX2Njb3JyLm8gXA0KPiAgCQkg IG10a19kcm1fcGxhbmUubyBcDQo+ICAJCSAgbXRrX2RzaS5vIFwNCj4gIAkJICBtdGtfZHBpLm8g XA0KPiAtCQkgIG10a19ldGhkci5vDQo+ICsJCSAgbXRrX2V0aGRyLm8gXA0KPiArCQkgIG10a19k aXNwX3BzZXVkb19vdmwubyBcDQo+ICsJCSAgbXRrX21kcF9yZG1hLm8NCj4gIA0KPiAgb2JqLSQo Q09ORklHX0RSTV9NRURJQVRFSykgKz0gbWVkaWF0ZWstZHJtLm8NCj4gIA0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kaXNwX2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kaXNwX2Rydi5oDQo+IGluZGV4IDcyMjdmZmJjM2VhZS4uZjVkMzUw MDdiODRkIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3Bf ZHJ2LmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kaXNwX2Rydi5oDQo+ IEBAIC0xMDUsNiArMTA1LDE4IEBAIHZvaWQgbXRrX3JkbWFfZW5hYmxlX3ZibGFuayhzdHJ1Y3Qg ZGV2aWNlICpkZXYsDQo+ICAJCQkgICAgdm9pZCAqdmJsYW5rX2NiX2RhdGEpOw0KPiAgdm9pZCBt dGtfcmRtYV9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZGV2aWNlICpkZXYpOw0KPiAgDQo+ICtpbnQg bXRrX3BzZXVkb19vdmxfY2xrX2VuYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYpOw0KPiArdm9pZCBt dGtfcHNldWRvX292bF9jbGtfZGlzYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYpOw0KPiArdm9pZCBt dGtfcHNldWRvX292bF9jb25maWcoc3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdywN Cj4gKwkJCSAgIHVuc2lnbmVkIGludCBoLCB1bnNpZ25lZCBpbnQgdnJlZnJlc2gsDQo+ICsJCQkg ICB1bnNpZ25lZCBpbnQgYnBjLCBzdHJ1Y3QgY21kcV9wa3QgKmNtZHFfcGt0KTsNCj4gK3ZvaWQg bXRrX3BzZXVkb19vdmxfc3RhcnQoc3RydWN0IGRldmljZSAqZGV2KTsNCj4gK3ZvaWQgbXRrX3Bz ZXVkb19vdmxfc3RvcChzdHJ1Y3QgZGV2aWNlICpkZXYpOw0KPiArdm9pZCBtdGtfcHNldWRvX292 bF9sYXllcl9jb25maWcoc3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgaWR4LA0KPiAr CQkJCSBzdHJ1Y3QgbXRrX3BsYW5lX3N0YXRlICpzdGF0ZSwNCj4gKwkJCQkgc3RydWN0IGNtZHFf cGt0ICpjbWRxX3BrdCk7DQo+ICt1bnNpZ25lZCBpbnQgbXRrX3BzZXVkb19vdmxfbGF5ZXJfbnIo c3RydWN0IGRldmljZSAqZGV2KTsNCj4gKw0KPiAgaW50IG10a19ldGhkcl9jbGtfZW5hYmxlKHN0 cnVjdCBkZXZpY2UgKmRldik7DQo+ICB2b2lkIG10a19ldGhkcl9jbGtfZGlzYWJsZShzdHJ1Y3Qg ZGV2aWNlICpkZXYpOw0KPiAgdm9pZCBtdGtfZXRoZHJfY29uZmlnKHN0cnVjdCBkZXZpY2UgKmRl diwgdW5zaWduZWQgaW50IHcsDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2Rpc3BfcHNldWRvX292bC5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19k aXNwX3BzZXVkb19vdmwuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAw MDAwMDAuLjhlYzgwZTE4ODdlMA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfZGlzcF9wc2V1ZG9fb3ZsLmMNCj4gQEAgLTAsMCArMSw2NTUgQEAN Cj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4gKy8qDQo+ICsg KiBDb3B5cmlnaHQgKGMpIDIwMjEgTWVkaWFUZWsgSW5jLg0KPiArICovDQo+ICsNCj4gKyNpbmNs dWRlIDxkcm0vZHJtX2ZvdXJjYy5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPg0KPiArI2lu Y2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5o Pg0KPiArI2luY2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9w bGF0Zm9ybV9kZXZpY2UuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+DQo+ICsj aW5jbHVkZSA8bGludXgvc29jL21lZGlhdGVrL210ay1jbWRxLmg+DQo+ICsNCj4gKyNpbmNsdWRl ICJtdGtfZHJtX2Rydi5oIg0KPiArI2luY2x1ZGUgIm10a19kcm1fY3J0Yy5oIg0KPiArI2luY2x1 ZGUgIm10a19kcm1fZGRwX2NvbXAuaCINCj4gKyNpbmNsdWRlICJtdGtfbWRwX3JkbWEuaCINCj4g KyNpbmNsdWRlICJtdGtfZXRoZHIuaCINCj4gKw0KPiArI2RlZmluZSBESVNQX01FUkdFX0VOQUJM RQkweDANCj4gKwkjZGVmaW5lIE1FUkdFX0VOQUJMRSBCSVQoMCkNCj4gKyNkZWZpbmUgRElTUF9N RVJHRV9DRkdfMAkweDEwDQo+ICsjZGVmaW5lIERJU1BfTUVSR0VfQ0ZHXzEJMHgxNA0KPiArI2Rl ZmluZSBESVNQX01FUkdFX0NGR180CTB4MjANCj4gKyNkZWZpbmUgRElTUF9NRVJHRV9DRkdfNQkw eDI0DQo+ICsjZGVmaW5lIERJU1BfTUVSR0VfQ0ZHXzEwCTB4MzgNCj4gKwkjZGVmaW5lIENGR18x MF9OT19TV0FQIDANCj4gKyNkZWZpbmUgRElTUF9NRVJHRV9DRkdfMTIJMHg0MA0KPiArCSNkZWZp bmUgQ0ZHMTJfMTBfMTBfMVBJXzJQT19CVUZfTU9ERSA2DQo+ICsJI2RlZmluZSBDRkcxMl8xMV8x MF8xUElfMlBPX01FUkdFIDE4DQo+ICsjZGVmaW5lIERJU1BfTUVSR0VfQ0ZHXzI0CTB4NzANCj4g KyNkZWZpbmUgRElTUF9NRVJHRV9DRkdfMjUJMHg3NA0KPiArI2RlZmluZSBESVNQX01FUkdFX0NG R18yNgkweDc4DQo+ICsjZGVmaW5lIERJU1BfTUVSR0VfQ0ZHXzI3CTB4N2MNCj4gKyNkZWZpbmUg RElTUF9NRVJHRV9NVVRFXzAJMHhmMDANCj4gKw0KPiArI2RlZmluZSBWRE8xX0NPTkZJR19TVzBf UlNUX0IgMHgxZDANCj4gKyNkZWZpbmUgVkRPMV9DT05GSUdfTUVSR0UwX0FTWU5DX0NGR19XRCAw eGUzMA0KPiArI2RlZmluZSBWRE8xX0NPTkZJR19NRVJHRTFfQVNZTkNfQ0ZHX1dEIDB4ZTQwDQo+ ICsjZGVmaW5lIFZETzFfQ09ORklHX01FUkdFMl9BU1lOQ19DRkdfV0QgMHhlNTANCj4gKyNkZWZp bmUgVkRPMV9DT05GSUdfTUVSR0UzX0FTWU5DX0NGR19XRCAweGU2MA0KPiArDQo+ICsjZGVmaW5l IE1US19QU0VVRE9fT1ZMX1NJTkdMRV9QSVBFX01BWF9XSURUSCAxOTIwDQo+ICsNCj4gK2VudW0g bXRrX3BzZXVkb19vdmxfY29tcF90eXBlIHsNCj4gKwlQU0VVRE9fT1ZMX1RZUEVfUkRNQSA9IDAs DQo+ICsJUFNFVURPX09WTF9UWVBFX01FUkdFLA0KPiArCVBTRVVET19PVkxfVFlQRV9OVU0sDQo+ ICt9Ow0KPiArDQo+ICtlbnVtIG10a19wc2V1ZG9fb3ZsX2NvbXBfaWQgew0KPiArCVBTRVVET19P VkxfUkRNQV9CQVNFID0gMCwNCj4gKwlQU0VVRE9fT1ZMX01EUF9SRE1BMCA9IFBTRVVET19PVkxf UkRNQV9CQVNFLA0KPiArCVBTRVVET19PVkxfTURQX1JETUExLA0KPiArCVBTRVVET19PVkxfTURQ X1JETUEyLA0KPiArCVBTRVVET19PVkxfTURQX1JETUEzLA0KPiArCVBTRVVET19PVkxfTURQX1JE TUE0LA0KPiArCVBTRVVET19PVkxfTURQX1JETUE1LA0KPiArCVBTRVVET19PVkxfTURQX1JETUE2 LA0KPiArCVBTRVVET19PVkxfTURQX1JETUE3LA0KPiArCVBTRVVET19PVkxfTUVSR0VfQkFTRSwN Cj4gKwlQU0VVRE9fT1ZMX01FUkdFMCA9IFBTRVVET19PVkxfTUVSR0VfQkFTRSwNCj4gKwlQU0VV RE9fT1ZMX01FUkdFMSwNCj4gKwlQU0VVRE9fT1ZMX01FUkdFMiwNCj4gKwlQU0VVRE9fT1ZMX01F UkdFMywNCj4gKwlQU0VVRE9fT1ZMX0lEX01BWA0KPiArfTsNCj4gKw0KPiArc3RydWN0IHBzZXVk b19vdmxfZGF0YSB7DQo+ICsJdW5zaWduZWQgaW50IGxheWVyX25yOw0KPiArCXN0cnVjdCBtdGtf bWRwX3JkbWFfZmlmbyBmaWZvOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IHBzZXVkb19vdmxfY29t cF9tYXRjaCB7DQo+ICsJZW51bSBtdGtfcHNldWRvX292bF9jb21wX3R5cGUgdHlwZTsNCj4gKwlp bnQgYWxpYXNfaWQ7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgcHNldWRvX292bF9tZXJnZV9jb25m aWcgew0KPiArCXVuc2lnbmVkIGludCBmbXQ7DQo+ICsJdW5zaWduZWQgaW50IG1lcmdlX21vZGU7 DQo+ICsJdW5zaWduZWQgaW50IGluX3dbMl07DQo+ICsJdW5zaWduZWQgaW50IG91dF93WzJdOw0K PiArCXVuc2lnbmVkIGludCBpbl9oOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IG10a19wc2V1ZG9f b3ZsX2NvbXAgew0KPiArCXN0cnVjdCBkZXZpY2UgKmRldjsNCj4gKwlzdHJ1Y3QgY2xrICpjbGtz WzJdOw0KPiArCXN0cnVjdCBjbWRxX2NsaWVudF9yZWcgY21kcV9iYXNlOw0KPiArCXZvaWQgX19p b21lbSAqcmVnczsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBtdGtfZGlzcF9wc2V1ZG9fb3ZsIHsN Cj4gKwlzdHJ1Y3QgbXRrX3BzZXVkb19vdmxfY29tcCBwc2V1ZG9fb3ZsX2NvbXBbUFNFVURPX09W TF9JRF9NQVhdOw0KPiArCXN0cnVjdCBjbWRxX2NsaWVudF9yZWcgdG9wX2NtZHFfYmFzZTsNCj4g Kwl2b2lkIF9faW9tZW0gKnRvcF9yZWdzOw0KPiArCWNvbnN0IHN0cnVjdCBwc2V1ZG9fb3ZsX2Rh dGEgKmRhdGE7DQo+ICsJc3RydWN0IGRldmljZSAqbmV4dF9kZXY7DQo+ICt9Ow0KPiArDQo+ICtz dGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBzZXVkb19vdmxfY29tcF9zdHJbXSA9IHsNCj4gKwki UFNFVURPX09WTF9NRFBfUkRNQTAiLA0KPiArCSJQU0VVRE9fT1ZMX01EUF9SRE1BMSIsDQo+ICsJ IlBTRVVET19PVkxfTURQX1JETUEyIiwNCj4gKwkiUFNFVURPX09WTF9NRFBfUkRNQTMiLA0KPiAr CSJQU0VVRE9fT1ZMX01EUF9SRE1BNCIsDQo+ICsJIlBTRVVET19PVkxfTURQX1JETUE1IiwNCj4g KwkiUFNFVURPX09WTF9NRFBfUkRNQTYiLA0KPiArCSJQU0VVRE9fT1ZMX01EUF9SRE1BNyIsDQo+ ICsJIlBTRVVET19PVkxfTUVSR0UwIiwNCj4gKwkiUFNFVURPX09WTF9NRVJHRTEiLA0KPiArCSJQ U0VVRE9fT1ZMX01FUkdFMiIsDQo+ICsJIlBTRVVET19PVkxfTUVSR0UzIiwNCj4gKwkiUFNFVURP X09WTF9JRF9NQVgiDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBy aXZhdGVfY29tcF9zdGVtW1BTRVVET19PVkxfVFlQRV9OVU1dID0gew0KPiArCVtQU0VVRE9fT1ZM X1RZUEVfUkRNQV0gPSAidmRvMV9yZG1hIiwNCj4gKwlbUFNFVURPX09WTF9UWVBFX01FUkdFXSA9 ICJtZXJnZSIsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBzZXVkb19vdmxf Y29tcF9tYXRjaCBjb21wX21hdGNoZXNbUFNFVURPX09WTF9JRF9NQVhdID0gew0KPiArCVtQU0VV RE9fT1ZMX01EUF9SRE1BMF0gPQl7IFBTRVVET19PVkxfVFlQRV9SRE1BLCAwIH0sDQo+ICsJW1BT RVVET19PVkxfTURQX1JETUExXSA9CXsgUFNFVURPX09WTF9UWVBFX1JETUEsIDEgfSwNCj4gKwlb UFNFVURPX09WTF9NRFBfUkRNQTJdID0JeyBQU0VVRE9fT1ZMX1RZUEVfUkRNQSwgMiB9LA0KPiAr CVtQU0VVRE9fT1ZMX01EUF9SRE1BM10gPQl7IFBTRVVET19PVkxfVFlQRV9SRE1BLCAzIH0sDQo+ ICsJW1BTRVVET19PVkxfTURQX1JETUE0XSA9CXsgUFNFVURPX09WTF9UWVBFX1JETUEsIDQgfSwN Cj4gKwlbUFNFVURPX09WTF9NRFBfUkRNQTVdID0JeyBQU0VVRE9fT1ZMX1RZUEVfUkRNQSwgNSB9 LA0KPiArCVtQU0VVRE9fT1ZMX01EUF9SRE1BNl0gPQl7IFBTRVVET19PVkxfVFlQRV9SRE1BLCA2 IH0sDQo+ICsJW1BTRVVET19PVkxfTURQX1JETUE3XSA9CXsgUFNFVURPX09WTF9UWVBFX1JETUEs IDcgfSwNCj4gKwlbUFNFVURPX09WTF9NRVJHRTBdID0JeyBQU0VVRE9fT1ZMX1RZUEVfTUVSR0Us IDEgfSwNCj4gKwlbUFNFVURPX09WTF9NRVJHRTFdID0JeyBQU0VVRE9fT1ZMX1RZUEVfTUVSR0Us IDIgfSwNCj4gKwlbUFNFVURPX09WTF9NRVJHRTJdID0JeyBQU0VVRE9fT1ZMX1RZUEVfTUVSR0Us IDMgfSwNCj4gKwlbUFNFVURPX09WTF9NRVJHRTNdID0JeyBQU0VVRE9fT1ZMX1RZUEVfTUVSR0Us IDQgfSwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWVyZ2VfYXN5 bmNfb2Zmc2V0W10gPSB7DQo+ICsJVkRPMV9DT05GSUdfTUVSR0UwX0FTWU5DX0NGR19XRCwNCj4g KwlWRE8xX0NPTkZJR19NRVJHRTFfQVNZTkNfQ0ZHX1dELA0KPiArCVZETzFfQ09ORklHX01FUkdF Ml9BU1lOQ19DRkdfV0QsDQo+ICsJVkRPMV9DT05GSUdfTUVSR0UzX0FTWU5DX0NGR19XRCwNCj4g K307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWVyZ2VfYXN5bmNfcmVzZXRf Yml0W10gPSB7DQo+ICsJQklUKDI1KSwgQklUKDI2KSwgQklUKDI3KSwgQklUKDI4KX07DQo+ICsN Cj4gK3N0YXRpYyBpbnQgbXRrX3BzZXVkb19vdmxfZmlmb19zZXR0aW5nKHN0cnVjdCBtdGtfZGlz cF9wc2V1ZG9fb3ZsICpwc2V1ZG9fb3ZsLA0KPiArCQkJCSAgICAgICBzdHJ1Y3QgY21kcV9wa3Qg KmhhbmRsZSkNCj4gK3sNCj4gKwlzdHJ1Y3QgbXRrX3BzZXVkb19vdmxfY29tcCAqcmRtYSA9IE5V TEw7DQo+ICsJY29uc3Qgc3RydWN0IHBzZXVkb19vdmxfZGF0YSAqZGF0YSA9IHBzZXVkb19vdmwt PmRhdGE7DQo+ICsJY29uc3Qgc3RydWN0IG10a19tZHBfcmRtYV9maWZvICpmaWZvID0gJmRhdGEt PmZpZm87DQo+ICsJaW50IGk7DQo+ICsNCj4gKwlmb3IgKGkgPSBQU0VVRE9fT1ZMX01EUF9SRE1B MDsgaSA8PSBQU0VVRE9fT1ZMX01EUF9SRE1BNzsgaSsrKSB7DQo+ICsJCXJkbWEgPSAmcHNldWRv X292bC0+cHNldWRvX292bF9jb21wW1BTRVVET19PVkxfUkRNQV9CQVNFICsgaV07DQo+ICsJCW10 a19tZHBfcmRtYV9maWZvX2NvbmZpZyhyZG1hLT5yZWdzLCBoYW5kbGUsICZyZG1hLT5jbWRxX2Jh c2UsIGZpZm8pOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgdm9pZCBtdGtfcHNldWRvX292bF9tZXJnZV9jb25maWcoc3RydWN0IG10a19wc2V1ZG9fb3Zs X2NvbXAgKmNvbXAsDQo+ICsJCQkJCXN0cnVjdCBwc2V1ZG9fb3ZsX21lcmdlX2NvbmZpZyAqbWVy Z2VfY2ZnLA0KPiArCQkJCQlzdHJ1Y3QgY21kcV9wa3QgKmNtZHFfcGt0KQ0KPiArew0KPiArCXN3 aXRjaCAobWVyZ2VfY2ZnLT5tZXJnZV9tb2RlKSB7DQo+ICsJY2FzZSA2Og0KDQpjYXNlIENGRzEy XzEwXzEwXzFQSV8yUE9fQlVGX01PREUgOg0KDQo+ICsJCW10a19kZHBfd3JpdGVfbWFzayhjbWRx X3BrdCwgKG1lcmdlX2NmZy0+aW5faCA8PCAxNiB8IG1lcmdlX2NmZy0+aW5fd1swXSksDQo+ICsJ CQkJICAgJmNvbXAtPmNtZHFfYmFzZSwgY29tcC0+cmVncywgRElTUF9NRVJHRV9DRkdfMCwgfjAp Ow0KDQptdGtfZGRwX3dyaXRlKGNtZHFfcGt0LCBtZXJnZV9jZmctPmluX2ggPDwgMTYgfG1lcmdl X2NmZy0+aW5fd1swXSwNCiZjb21wLT5jbWRxX2Jhc2UsIGNvbXAtPnJlZ3MsIERJU1BfTUVSR0Vf Q0ZHXzApOw0KDQo+ICsJCW10a19kZHBfd3JpdGVfbWFzayhjbWRxX3BrdCwgKG1lcmdlX2NmZy0+ aW5faCA8PCAxNiB8IG1lcmdlX2NmZy0+b3V0X3dbMF0pLA0KPiArCQkJCSAgICZjb21wLT5jbWRx X2Jhc2UsIGNvbXAtPnJlZ3MsIERJU1BfTUVSR0VfQ0ZHXzQsIH4wKTsNCj4gKwkJbXRrX2RkcF93 cml0ZV9tYXNrKGNtZHFfcGt0LCAobWVyZ2VfY2ZnLT5pbl9oIDw8IDE2IHwgbWVyZ2VfY2ZnLT5p bl93WzBdKSwNCj4gKwkJCQkgICAmY29tcC0+Y21kcV9iYXNlLCBjb21wLT5yZWdzLCBESVNQX01F UkdFX0NGR18yNCwgfjApOw0KPiArCQltdGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3QsIChtZXJn ZV9jZmctPmluX2ggPDwgMTYgfCBtZXJnZV9jZmctPmluX3dbMF0pLA0KPiArCQkJCSAgICZjb21w LT5jbWRxX2Jhc2UsIGNvbXAtPnJlZ3MsIERJU1BfTUVSR0VfQ0ZHXzI1LCB+MCk7DQo+ICsJCWJy ZWFrOw0KPiArCWNhc2UgMTg6DQo+ICsJCW10a19kZHBfd3JpdGVfbWFzayhjbWRxX3BrdCwgKG1l cmdlX2NmZy0+aW5faCA8PCAxNiB8IG1lcmdlX2NmZy0+aW5fd1swXSksDQo+ICsJCQkJICAgJmNv bXAtPmNtZHFfYmFzZSwgY29tcC0+cmVncywgRElTUF9NRVJHRV9DRkdfMCwgfjApOw0KPiArCQlt dGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3QsIChtZXJnZV9jZmctPmluX2ggPDwgMTYgfCBtZXJn ZV9jZmctPmluX3dbMV0pLA0KPiArCQkJCSAgICZjb21wLT5jbWRxX2Jhc2UsIGNvbXAtPnJlZ3Ms IERJU1BfTUVSR0VfQ0ZHXzEsIH4wKTsNCj4gKwkJbXRrX2RkcF93cml0ZV9tYXNrKGNtZHFfcGt0 LCAobWVyZ2VfY2ZnLT5pbl9oIDw8IDE2IHwgbWVyZ2VfY2ZnLT5vdXRfd1swXSksDQo+ICsJCQkJ ICAgJmNvbXAtPmNtZHFfYmFzZSwgY29tcC0+cmVncywgRElTUF9NRVJHRV9DRkdfNCwgfjApOw0K PiArCQltdGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3QsIChtZXJnZV9jZmctPmluX2ggPDwgMTYg fCBtZXJnZV9jZmctPmluX3dbMF0pLA0KPiArCQkJCSAgICZjb21wLT5jbWRxX2Jhc2UsIGNvbXAt PnJlZ3MsIERJU1BfTUVSR0VfQ0ZHXzI0LCB+MCk7DQo+ICsJCW10a19kZHBfd3JpdGVfbWFzayhj bWRxX3BrdCwgKG1lcmdlX2NmZy0+aW5faCA8PCAxNiB8IG1lcmdlX2NmZy0+aW5fd1sxXSksDQo+ ICsJCQkJICAgJmNvbXAtPmNtZHFfYmFzZSwgY29tcC0+cmVncywgRElTUF9NRVJHRV9DRkdfMjUs IH4wKTsNCj4gKwkJbXRrX2RkcF93cml0ZV9tYXNrKGNtZHFfcGt0LCAobWVyZ2VfY2ZnLT5pbl9o IDw8IDE2IHwgbWVyZ2VfY2ZnLT5pbl93WzBdKSwNCj4gKwkJCQkgICAmY29tcC0+Y21kcV9iYXNl LCBjb21wLT5yZWdzLCBESVNQX01FUkdFX0NGR18yNiwgfjApOw0KPiArCQltdGtfZGRwX3dyaXRl X21hc2soY21kcV9wa3QsIChtZXJnZV9jZmctPmluX2ggPDwgMTYgfCBtZXJnZV9jZmctPmluX3db MV0pLA0KPiArCQkJCSAgICZjb21wLT5jbWRxX2Jhc2UsIGNvbXAtPnJlZ3MsIERJU1BfTUVSR0Vf Q0ZHXzI3LCB+MCk7DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCW10a19kZHBfd3Jp dGVfbWFzayhjbWRxX3BrdCwgKG1lcmdlX2NmZy0+aW5faCA8PCAxNiB8IG1lcmdlX2NmZy0+aW5f d1swXSksDQo+ICsJCQkJICAgJmNvbXAtPmNtZHFfYmFzZSwgY29tcC0+cmVncywgRElTUF9NRVJH RV9DRkdfMCwgfjApOw0KPiArCQltdGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3QsIChtZXJnZV9j ZmctPmluX2ggPDwgMTYgfCBtZXJnZV9jZmctPmluX3dbMV0pLA0KPiArCQkJCSAgICZjb21wLT5j bWRxX2Jhc2UsIGNvbXAtPnJlZ3MsIERJU1BfTUVSR0VfQ0ZHXzEsIH4wKTsNCj4gKwkJbXRrX2Rk cF93cml0ZV9tYXNrKGNtZHFfcGt0LCAobWVyZ2VfY2ZnLT5pbl9oIDw8IDE2IHwgbWVyZ2VfY2Zn LT5vdXRfd1swXSksDQo+ICsJCQkJICAgJmNvbXAtPmNtZHFfYmFzZSwgY29tcC0+cmVncywgRElT UF9NRVJHRV9DRkdfNCwgfjApOw0KPiArCQltdGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3QsICht ZXJnZV9jZmctPmluX2ggPDwgMTYgfCBtZXJnZV9jZmctPm91dF93WzFdKSwNCj4gKwkJCQkgICAm Y29tcC0+Y21kcV9iYXNlLCBjb21wLT5yZWdzLCBESVNQX01FUkdFX0NGR181LCB+MCk7DQo+ICsJ CWJyZWFrOw0KPiArCX0NCj4gKw0KPiArCW10a19kZHBfd3JpdGVfbWFzayhjbWRxX3BrdCwgbWVy Z2VfY2ZnLT5tZXJnZV9tb2RlLCAmY29tcC0+Y21kcV9iYXNlLA0KPiArCQkJICAgY29tcC0+cmVn cywgRElTUF9NRVJHRV9DRkdfMTIsIH4wKTsNCj4gKwltdGtfZGRwX3dyaXRlX21hc2soY21kcV9w a3QsIENGR18xMF9OT19TV0FQLCAmY29tcC0+Y21kcV9iYXNlLA0KPiArCQkJICAgY29tcC0+cmVn cywgRElTUF9NRVJHRV9DRkdfMTAsIH4wKTsNCj4gKwltdGtfZGRwX3dyaXRlX21hc2soY21kcV9w a3QsIDEsICZjb21wLT5jbWRxX2Jhc2UsIGNvbXAtPnJlZ3MsDQo+ICsJCQkgICBESVNQX01FUkdF X0VOQUJMRSwgfjApOw0KPiArfQ0KPiArDQo+ICt1bnNpZ25lZCBpbnQgbXRrX3BzZXVkb19vdmxf bGF5ZXJfbnIoc3RydWN0IGRldmljZSAqZGV2KQ0KPiArew0KPiArCXN0cnVjdCBtdGtfZGlzcF9w c2V1ZG9fb3ZsICpwc2V1ZG9fb3ZsID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ICsNCj4gKwly ZXR1cm4gcHNldWRvX292bC0+ZGF0YS0+bGF5ZXJfbnI7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgbXRr X3BzZXVkb19vdmxfbGF5ZXJfY29uZmlnKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50 IGlkeCwNCj4gKwkJCQkgc3RydWN0IG10a19wbGFuZV9zdGF0ZSAqc3RhdGUsDQo+ICsJCQkJIHN0 cnVjdCBjbWRxX3BrdCAqY21kcV9wa3QpDQo+ICt7DQo+ICsJc3RydWN0IG10a19kaXNwX3BzZXVk b19vdmwgKnBzZXVkb19vdmwgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKwlzdHJ1Y3QgbXRr X3BsYW5lX3BlbmRpbmdfc3RhdGUgKnBlbmRpbmcgPSAmc3RhdGUtPnBlbmRpbmc7DQo+ICsJc3Ry dWN0IHBzZXVkb19vdmxfbWVyZ2VfY29uZmlnIG1lcmdlX2NmZyA9IHswfTsNCj4gKwlzdHJ1Y3Qg bXRrX21kcF9yZG1hX2NmZyByZG1hX2NvbmZpZyA9IHswfTsNCj4gKwlzdHJ1Y3QgbXRrX3BzZXVk b19vdmxfY29tcCAqcmRtYV9sOw0KPiArCXN0cnVjdCBtdGtfcHNldWRvX292bF9jb21wICpyZG1h X3I7DQo+ICsJc3RydWN0IG10a19wc2V1ZG9fb3ZsX2NvbXAgKm1lcmdlOw0KPiArCWNvbnN0IHN0 cnVjdCBkcm1fZm9ybWF0X2luZm8gKmZtdF9pbmZvID0gZHJtX2Zvcm1hdF9pbmZvKHBlbmRpbmct PmZvcm1hdCk7DQo+ICsJYm9vbCB1c2VfZHVhbF9waXBlID0gZmFsc2U7DQo+ICsNCj4gKwlkZXZf ZGJnKGRldiwgIiVzKyBpZHg6JWQsIGVuYWJsZTolZCwgZm10OjB4JXhcbiIsIF9fZnVuY19fLCBp ZHgsDQo+ICsJCXBlbmRpbmctPmVuYWJsZSwgcGVuZGluZy0+Zm9ybWF0KTsNCj4gKwlkZXZfZGJn KGRldiwgImFkZHIgMHglbHgsIGZiIHc6JWQsIHslZCwlZCwlZCwlZH1cbiIsDQo+ICsJCXBlbmRp bmctPmFkZHIsIChwZW5kaW5nLT5waXRjaCAvIGZtdF9pbmZvLT5jcHBbMF0pLA0KPiArCQlwZW5k aW5nLT54LCBwZW5kaW5nLT55LCBwZW5kaW5nLT53aWR0aCwgcGVuZGluZy0+aGVpZ2h0KTsNCj4g Kw0KPiArCXJkbWFfbCA9ICZwc2V1ZG9fb3ZsLT5wc2V1ZG9fb3ZsX2NvbXBbUFNFVURPX09WTF9S RE1BX0JBU0UgKyAyICogaWR4XTsNCj4gKwlyZG1hX3IgPSAmcHNldWRvX292bC0+cHNldWRvX292 bF9jb21wW1BTRVVET19PVkxfUkRNQV9CQVNFICsgMiAqIGlkeCArIDFdOw0KPiArCW1lcmdlID0g JnBzZXVkb19vdmwtPnBzZXVkb19vdmxfY29tcFtQU0VVRE9fT1ZMX01FUkdFX0JBU0UgKyBpZHhd Ow0KPiArDQo+ICsJaWYgKCFwZW5kaW5nLT5lbmFibGUpIHsNCj4gKwkJbXRrX2V0aGRyX2xheWVy X29mZihwc2V1ZG9fb3ZsLT5uZXh0X2RldiwgaWR4LCBjbWRxX3BrdCk7DQo+ICsJCW10a19kZHBf d3JpdGVfbWFzayhjbWRxX3BrdCwgMHgwLCAmbWVyZ2UtPmNtZHFfYmFzZSwgbWVyZ2UtPnJlZ3Ms DQo+ICsJCQkJICAgRElTUF9NRVJHRV9FTkFCTEUsIDB4MSk7DQo+ICsJCW10a19tZHBfcmRtYV9z dG9wKHJkbWFfbC0+cmVncywgY21kcV9wa3QsICZyZG1hX2wtPmNtZHFfYmFzZSk7DQo+ICsJCW10 a19tZHBfcmRtYV9zdG9wKHJkbWFfci0+cmVncywgY21kcV9wa3QsICZyZG1hX3ItPmNtZHFfYmFz ZSk7DQo+ICsJCXJldHVybjsNCj4gKwl9DQo+ICsNCj4gKwlpZiAocGVuZGluZy0+d2lkdGggPiBN VEtfUFNFVURPX09WTF9TSU5HTEVfUElQRV9NQVhfV0lEVEgpDQo+ICsJCXVzZV9kdWFsX3BpcGUg PSB0cnVlOw0KPiArDQo+ICsJbWVyZ2VfY2ZnLm91dF93WzBdID0gcGVuZGluZy0+d2lkdGg7DQo+ ICsJbWVyZ2VfY2ZnLmluX2ggPSBwZW5kaW5nLT5oZWlnaHQ7DQo+ICsJbWVyZ2VfY2ZnLmZtdCA9 IHBlbmRpbmctPmZvcm1hdDsNCj4gKwlpZiAodXNlX2R1YWxfcGlwZSkgew0KPiArCQltZXJnZV9j ZmcubWVyZ2VfbW9kZSA9IENGRzEyXzExXzEwXzFQSV8yUE9fTUVSR0U7DQo+ICsJCW1lcmdlX2Nm Zy5pbl93WzBdID0gKHBlbmRpbmctPndpZHRoIC8gMikgKyAoKHBlbmRpbmctPndpZHRoIC8gMikg JSAyKTsNCj4gKwkJbWVyZ2VfY2ZnLmluX3dbMV0gPSAocGVuZGluZy0+d2lkdGggLyAyKSAtICgo cGVuZGluZy0+d2lkdGggLyAyKSAlIDIpOw0KPiArCX0gZWxzZSB7DQo+ICsJCW1lcmdlX2NmZy5t ZXJnZV9tb2RlID0gQ0ZHMTJfMTBfMTBfMVBJXzJQT19CVUZfTU9ERTsNCj4gKwkJbWVyZ2VfY2Zn LmluX3dbMF0gPSBwZW5kaW5nLT53aWR0aDsNCj4gKwl9DQo+ICsNCj4gKwltdGtfcHNldWRvX292 bF9tZXJnZV9jb25maWcobWVyZ2UsICZtZXJnZV9jZmcsIGNtZHFfcGt0KTsNCj4gKwltdGtfZGRw X3dyaXRlX21hc2soY21kcV9wa3QsIChwZW5kaW5nLT5oZWlnaHQgPDwgMTYgfCAocGVuZGluZy0+ d2lkdGggLyAyKSksDQo+ICsJCQkgICAmcHNldWRvX292bC0+dG9wX2NtZHFfYmFzZSwgcHNldWRv X292bC0+dG9wX3JlZ3MsDQo+ICsJCQkgICBtZXJnZV9hc3luY19vZmZzZXRbaWR4XSwgfjApOw0K PiArDQo+ICsJcmRtYV9jb25maWcuc291cmNlX3dpZHRoID0gcGVuZGluZy0+cGl0Y2ggLyBmbXRf aW5mby0+Y3BwWzBdOw0KPiArCXJkbWFfY29uZmlnLmNzY19lbmFibGUgPSBmbXRfaW5mby0+aXNf eXV2ID8gdHJ1ZSA6IGZhbHNlOw0KPiArCXJkbWFfY29uZmlnLnByb2ZpbGUgPSBSRE1BX0NTQ19G VUxMNzA5X1RPX1JHQjsNCj4gKwlyZG1hX2NvbmZpZy5lbmNvZGVfdHlwZSA9IFJETUFfRU5DT0RF X05PTkU7DQo+ICsJcmRtYV9jb25maWcuYmxvY2tfc2l6ZSA9IFJETUFfQkxPQ0tfTk9ORTsNCj4g KwlyZG1hX2NvbmZpZy53aWR0aCA9IG1lcmdlX2NmZy5pbl93WzBdOw0KPiArCXJkbWFfY29uZmln LmhlaWdodCA9IHBlbmRpbmctPmhlaWdodDsNCj4gKwlyZG1hX2NvbmZpZy5hZGRyMCA9IHBlbmRp bmctPmFkZHI7DQo+ICsJcmRtYV9jb25maWcuZm10ID0gcGVuZGluZy0+Zm9ybWF0Ow0KPiArCW10 a19tZHBfcmRtYV9jb25maWcocmRtYV9sLT5yZWdzLCAmcmRtYV9jb25maWcsIGNtZHFfcGt0LCAm cmRtYV9sLT5jbWRxX2Jhc2UpOw0KPiArDQo+ICsJcmRtYV9jb25maWcueF9sZWZ0ID0gbWVyZ2Vf Y2ZnLmluX3dbMF07DQo+ICsJcmRtYV9jb25maWcud2lkdGggPSBtZXJnZV9jZmcuaW5fd1sxXTsN Cj4gKwltdGtfbWRwX3JkbWFfY29uZmlnKHJkbWFfci0+cmVncywgJnJkbWFfY29uZmlnLCBjbWRx X3BrdCwgJnJkbWFfci0+Y21kcV9iYXNlKTsNCj4gKw0KPiArCW10a19kZHBfd3JpdGVfbWFzayhj bWRxX3BrdCwgMHgxLCAmbWVyZ2UtPmNtZHFfYmFzZSwgbWVyZ2UtPnJlZ3MsDQo+ICsJCQkgICBE SVNQX01FUkdFX0VOQUJMRSwgMHgxKTsNCj4gKwltdGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3Qs IDB4MCwgJm1lcmdlLT5jbWRxX2Jhc2UsIG1lcmdlLT5yZWdzLA0KPiArCQkJICAgRElTUF9NRVJH RV9NVVRFXzAsIDB4MSk7DQo+ICsNCj4gKwltdGtfbWRwX3JkbWFfc3RhcnQocmRtYV9sLT5yZWdz LCBjbWRxX3BrdCwgJnJkbWFfbC0+Y21kcV9iYXNlKTsNCj4gKwlpZiAodXNlX2R1YWxfcGlwZSkN Cj4gKwkJbXRrX21kcF9yZG1hX3N0YXJ0KHJkbWFfci0+cmVncywgY21kcV9wa3QsICZyZG1hX3It PmNtZHFfYmFzZSk7DQo+ICsJZWxzZQ0KPiArCQltdGtfbWRwX3JkbWFfc3RvcChyZG1hX3ItPnJl Z3MsIGNtZHFfcGt0LCAmcmRtYV9yLT5jbWRxX2Jhc2UpOw0KPiArDQo+ICsJbXRrX2V0aGRyX2xh eWVyX2NvbmZpZyhwc2V1ZG9fb3ZsLT5uZXh0X2RldiwgaWR4LCBzdGF0ZSwgY21kcV9wa3QpOw0K PiArCW10a19ldGhkcl9sYXllcl9vbihwc2V1ZG9fb3ZsLT5uZXh0X2RldiwgaWR4LCBjbWRxX3Br dCk7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgbXRrX3BzZXVkb19vdmxfY29uZmlnKHN0cnVjdCBkZXZp Y2UgKmRldiwgdW5zaWduZWQgaW50IHcsIHVuc2lnbmVkIGludCBoLA0KPiArCQkJICAgdW5zaWdu ZWQgaW50IHZyZWZyZXNoLCB1bnNpZ25lZCBpbnQgYnBjLA0KPiArCQkJICAgc3RydWN0IGNtZHFf cGt0ICpjbWRxX3BrdCkNCj4gK3sNCj4gKwlzdHJ1Y3QgbXRrX2Rpc3BfcHNldWRvX292bCAqcHNl dWRvX292bCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArDQo+ICsJZGV2X2luZm8oZGV2LCAi JXMgdzolZCwgaDolZFxuIiwgX19mdW5jX18sIHcsIGgpOw0KPiArCW10a19wc2V1ZG9fb3ZsX2Zp Zm9fc2V0dGluZyhwc2V1ZG9fb3ZsLCBjbWRxX3BrdCk7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgbXRr X3BzZXVkb19vdmxfc3RhcnQoc3RydWN0IGRldmljZSAqZGV2KQ0KPiArew0KPiArfQ0KPiArDQo+ ICt2b2lkIG10a19wc2V1ZG9fb3ZsX3N0b3Aoc3RydWN0IGRldmljZSAqZGV2KQ0KPiArew0KPiAr CXN0cnVjdCBtdGtfZGlzcF9wc2V1ZG9fb3ZsICpwc2V1ZG9fb3ZsID0gZGV2X2dldF9kcnZkYXRh KGRldik7DQo+ICsJc3RydWN0IG10a19wc2V1ZG9fb3ZsX2NvbXAgKnJkbWFfbDsNCj4gKwlzdHJ1 Y3QgbXRrX3BzZXVkb19vdmxfY29tcCAqcmRtYV9yOw0KPiArCXN0cnVjdCBtdGtfcHNldWRvX292 bF9jb21wICptZXJnZTsNCj4gKwl1bnNpZ25lZCBpbnQgcmVnOw0KPiArCXUzMiBpOw0KPiArDQo+ ICsJZm9yIChpID0gMDsgaSA8IHBzZXVkb19vdmwtPmRhdGEtPmxheWVyX25yOyBpKyspIHsNCj4g KwkJcmRtYV9sID0gJnBzZXVkb19vdmwtPnBzZXVkb19vdmxfY29tcFtQU0VVRE9fT1ZMX1JETUFf QkFTRSArIDIgKiBpXTsNCj4gKwkJcmRtYV9yID0gJnBzZXVkb19vdmwtPnBzZXVkb19vdmxfY29t cFtQU0VVRE9fT1ZMX1JETUFfQkFTRSArIDIgKiBpICsgMV07DQo+ICsJCW1lcmdlID0gJnBzZXVk b19vdmwtPnBzZXVkb19vdmxfY29tcFtQU0VVRE9fT1ZMX01FUkdFX0JBU0UgKyBpXTsNCj4gKw0K PiArCQltdGtfbWRwX3JkbWFfc3RvcChyZG1hX2wtPnJlZ3MsIE5VTEwsICZyZG1hX2wtPmNtZHFf YmFzZSk7DQo+ICsJCW10a19tZHBfcmRtYV9zdG9wKHJkbWFfci0+cmVncywgTlVMTCwgJnJkbWFf ci0+Y21kcV9iYXNlKTsNCj4gKw0KPiArCQlyZWcgPSByZWFkbChtZXJnZS0+cmVncyArIERJU1Bf TUVSR0VfRU5BQkxFKTsNCj4gKwkJcmVnID0gcmVnICYgfk1FUkdFX0VOQUJMRTsNCj4gKwkJd3Jp dGVsX3JlbGF4ZWQocmVnLCBtZXJnZS0+cmVncyArIERJU1BfTUVSR0VfRU5BQkxFKTsNCj4gKw0K PiArCQltdGtfZGRwX3dyaXRlX21hc2soTlVMTCwgMCwgJnBzZXVkb19vdmwtPnRvcF9jbWRxX2Jh c2UsDQo+ICsJCQkJICAgcHNldWRvX292bC0+dG9wX3JlZ3MsIFZETzFfQ09ORklHX1NXMF9SU1Rf QiwNCj4gKwkJCQkgICBtZXJnZV9hc3luY19yZXNldF9iaXRbaV0pOw0KPiArCQltdGtfZGRwX3dy aXRlX21hc2soTlVMTCwgbWVyZ2VfYXN5bmNfcmVzZXRfYml0W2ldLA0KPiArCQkJCSAgICZwc2V1 ZG9fb3ZsLT50b3BfY21kcV9iYXNlLA0KPiArCQkJCSAgIHBzZXVkb19vdmwtPnRvcF9yZWdzLCBW RE8xX0NPTkZJR19TVzBfUlNUX0IsDQo+ICsJCQkJICAgbWVyZ2VfYXN5bmNfcmVzZXRfYml0W2ld KTsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK2ludCBtdGtfcHNldWRvX292bF9jbGtfZW5hYmxlKHN0 cnVjdCBkZXZpY2UgKmRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgbXRrX2Rpc3BfcHNldWRvX292bCAq cHNldWRvX292bCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiArCXN0cnVjdCBtdGtfcHNldWRv X292bF9jb21wICpjb21wOw0KPiArCWludCByZXQ7DQo+ICsJaW50IGk7DQo+ICsJaW50IGo7DQo+ ICsNCj4gKwlmb3IgKGkgPSBQU0VVRE9fT1ZMX01EUF9SRE1BMDsgaSA8IFBTRVVET19PVkxfSURf TUFYOyBpKyspIHsNCj4gKwkJY29tcCA9ICZwc2V1ZG9fb3ZsLT5wc2V1ZG9fb3ZsX2NvbXBbaV07 DQo+ICsJCWlmICghY29tcC0+ZGV2KQ0KPiArCQkJY29udGludWU7DQo+ICsNCj4gKwkJLyogTmVl ZCB0byBwb3dlciBvbiBmb3IgcHJpdmF0ZSByZG1hIGRldmljZXMgKi8NCj4gKwkJaWYgKGkgPCBQ U0VVRE9fT1ZMX01FUkdFX0JBU0UpIHsNCj4gKwkJCXJldCA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMo Y29tcC0+ZGV2KTsNCj4gKwkJCWlmIChyZXQgPCAwKQ0KPiArCQkJCWRldl9lcnIoZGV2LA0KPiAr CQkJCQkiRmFpbGVkIHRvIHBvd2VyIG9uLCBlcnIgJWQtJXNcbiIsDQo+ICsJCQkJCXJldCwgcHNl dWRvX292bF9jb21wX3N0cltpXSk7DQo+ICsJCX0NCj4gKw0KPiArCQlmb3IgKGogPSAwOyBqIDwg QVJSQVlfU0laRShjb21wLT5jbGtzKTsgaisrKSB7DQo+ICsJCQlpZiAoSVNfRVJSKGNvbXAtPmNs a3Nbal0pKQ0KPiArCQkJCWJyZWFrOw0KPiArDQo+ICsJCQlyZXQgPSBjbGtfcHJlcGFyZV9lbmFi bGUoY29tcC0+Y2xrc1tqXSk7DQo+ICsJCQlpZiAocmV0KQ0KPiArCQkJCWRldl9lcnIoZGV2LA0K PiArCQkJCQkiRmFpbGVkIHRvIGVuYWJsZSBjbG9jayAlZCwgZXJyICVkLSVzXG4iLA0KPiArCQkJ CQlpLCByZXQsIHBzZXVkb19vdmxfY29tcF9zdHJbaV0pOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArdm9pZCBtdGtfcHNldWRvX292bF9jbGtfZGlz YWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsJc3RydWN0IG10a19kaXNwX3BzZXVk b19vdmwgKnBzZXVkb19vdmwgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKwlzdHJ1Y3QgbXRr X3BzZXVkb19vdmxfY29tcCAqY29tcDsNCj4gKwlpbnQgcmV0Ow0KPiArCWludCBpOw0KPiArCWlu dCBqOw0KPiArDQo+ICsJZm9yIChpID0gUFNFVURPX09WTF9NRFBfUkRNQTA7IGkgPCBQU0VVRE9f T1ZMX0lEX01BWDsgaSsrKSB7DQo+ICsJCWNvbXAgPSAmcHNldWRvX292bC0+cHNldWRvX292bF9j b21wW2ldOw0KPiArCQlpZiAoIWNvbXAtPmRldikNCj4gKwkJCWNvbnRpbnVlOw0KPiArDQo+ICsJ CWZvciAoaiA9IDA7IGkgPCBBUlJBWV9TSVpFKGNvbXAtPmNsa3MpOyBqKyspIHsNCj4gKwkJCWlm IChJU19FUlIoY29tcC0+Y2xrc1tqXSkpDQo+ICsJCQkJYnJlYWs7DQo+ICsJCQljbGtfZGlzYWJs ZV91bnByZXBhcmUoY29tcC0+Y2xrc1tqXSk7DQo+ICsJCX0NCj4gKw0KPiArCQkvKiBOZWVkIHRv IHBvd2VyIG9mZiBmb3IgcHJpdmF0ZSByZG1hIGRldmljZXMgKi8NCj4gKwkJaWYgKGkgPCBQU0VV RE9fT1ZMX01FUkdFX0JBU0UpIHsNCj4gKwkJCXJldCA9IHBtX3J1bnRpbWVfcHV0KGNvbXAtPmRl dik7DQo+ICsJCQlpZiAocmV0IDwgMCkNCj4gKwkJCQlkZXZfZXJyKGRldiwNCj4gKwkJCQkJIkZh aWxlZCB0byBwb3dlciBvZmYsIGVyci0lc1xuIiwNCj4gKwkJCQkJcmV0LCBwc2V1ZG9fb3ZsX2Nv bXBfc3RyW2ldKTsNCj4gKwkJfQ0KPiArCX0NCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBtdGtf ZGlzcF9wc2V1ZG9fb3ZsX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICpt YXN0ZXIsDQo+ICsJCQkJICAgIHZvaWQgKmRhdGEpDQo+ICt7DQo+ICsJc3RydWN0IG10a19kaXNw X3BzZXVkb19vdmwgKnBzZXVkb19vdmwgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9IGRhdGE7DQo+ICsJc3RydWN0IG10a19kcm1fcHJpdmF0 ZSAqZHJtX3ByaXZhdGUgPSBkcm1fZGV2LT5kZXZfcHJpdmF0ZTsNCj4gKwlzdHJ1Y3QgZGV2aWNl ICptbXN5c19kZXYgPSBkcm1fcHJpdmF0ZS0+bW1zeXNfZGV2Ow0KPiArDQo+ICsJcHNldWRvX292 bC0+bmV4dF9kZXYgPSBtdGtfZHJtX2ZpbmRfbmV4dF9jb21wKGRybV9kZXYsIGRldik7DQo+ICsN Cj4gKwlwc2V1ZG9fb3ZsLT50b3BfcmVncyA9IG9mX2lvbWFwKG1tc3lzX2Rldi0+b2Zfbm9kZSwg MCk7DQo+ICsjaWYgSVNfUkVBQ0hBQkxFKENPTkZJR19NVEtfQ01EUSkNCj4gKwlpZiAoY21kcV9k ZXZfZ2V0X2NsaWVudF9yZWcobW1zeXNfZGV2LCAmcHNldWRvX292bC0+dG9wX2NtZHFfYmFzZSwg MCkpDQo+ICsJCWRldl9kYmcoZGV2LCAiZ2V0IG1lZGlhdGVrLGdjZS1jbGllbnQtcmVnIGZhaWwh XG4iKTsNCj4gKyNlbmRpZg0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyB2b2lkIG10a19kaXNwX3BzZXVkb19vdmxfdW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry dWN0IGRldmljZSAqbWFzdGVyLA0KPiArCQkJCSAgICAgICB2b2lkICpkYXRhKQ0KPiArew0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgbXRrX2Rpc3BfcHNl dWRvX292bF9jb21wb25lbnRfb3BzID0gew0KPiArCS5iaW5kCT0gbXRrX2Rpc3BfcHNldWRvX292 bF9iaW5kLA0KPiArCS51bmJpbmQgPSBtdGtfZGlzcF9wc2V1ZG9fb3ZsX3VuYmluZCwNCj4gK307 DQo+ICsNCj4gK3N0YXRpYyBpbnQgcHNldWRvX292bF9jb21wX2dldF9pZChzdHJ1Y3QgZGV2aWNl ICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSwNCj4gKwkJCQkgIGVudW0gbXRrX3BzZXVk b19vdmxfY29tcF90eXBlIHR5cGUpDQo+ICt7DQo+ICsJaW50IGFsaWFzX2lkID0gb2ZfYWxpYXNf Z2V0X2lkKG5vZGUsIHByaXZhdGVfY29tcF9zdGVtW3R5cGVdKTsNCj4gKwlpbnQgcmV0Ow0KPiAr CWludCBpOw0KPiArDQo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY29tcF9tYXRjaGVz KTsgaSsrKQ0KPiArCQlpZiAoY29tcF9tYXRjaGVzW2ldLnR5cGUgPT0gdHlwZSAmJg0KPiArCQkg ICAgY29tcF9tYXRjaGVzW2ldLmFsaWFzX2lkID09IGFsaWFzX2lkKQ0KPiArCQkJcmV0dXJuIGk7 DQo+ICsNCj4gKwlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQgaWQuIHR5cGU6ICVkLCBhbGlh czogJWRcbiIsIHR5cGUsIGFsaWFzX2lkKTsNCj4gKwlyZXR1cm4gLUVJTlZBTDsNCj4gK30NCj4g Kw0KPiArc3RhdGljIGludCBwcml2YXRlX2NvbXBfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSwNCj4gKwkJCSAgICAgc3RydWN0IG10a19wc2V1ZG9fb3Zs X2NvbXAgKmNvbXAsDQo+ICsJCQkgICAgIGVudW0gbXRrX3BzZXVkb19vdmxfY29tcF9pZCBpZCkN Cj4gK3sNCj4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpjb21wX3BkZXY7DQo+ICsJaW50IHJl dDsNCj4gKwlpbnQgaTsNCj4gKw0KPiArCWlmIChpZCA8IDAgfHwgaWQgPj0gUFNFVURPX09WTF9J RF9NQVgpIHsNCj4gKwkJZGV2X2VycihkZXYsICJJbnZhbGlkIGNvbXBvbmVudCBpZCAlZFxuIiwg aWQpOw0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsNCj4gKwljb21wX3BkZXYgPSBv Zl9maW5kX2RldmljZV9ieV9ub2RlKG5vZGUpOw0KPiArCWlmICghY29tcF9wZGV2KSB7DQo+ICsJ CWRldl93YXJuKGRldiwgImNhbid0IGZpbmQgcGxhdGZvcm0gZGV2aWNlIG9mIG5vZGU6JXNcbiIs DQo+ICsJCQkgbm9kZS0+bmFtZSk7DQo+ICsJCXJldHVybiAtRU5PREVWOw0KPiArCX0NCj4gKwlj b21wLT5kZXYgPSAmY29tcF9wZGV2LT5kZXY7DQo+ICsJY29tcC0+cmVncyA9IG9mX2lvbWFwKG5v ZGUsIDApOw0KPiArDQo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY29tcC0+Y2xrcyk7 IGkrKykgew0KPiArCQljb21wLT5jbGtzW2ldID0gb2ZfY2xrX2dldChub2RlLCBpKTsNCj4gKwkJ aWYgKElTX0VSUihjb21wLT5jbGtzW2ldKSkNCj4gKwkJCWJyZWFrOw0KPiArCX0NCj4gKw0KPiAr I2lmIElTX1JFQUNIQUJMRShDT05GSUdfTVRLX0NNRFEpDQo+ICsJcmV0ID0gY21kcV9kZXZfZ2V0 X2NsaWVudF9yZWcoY29tcC0+ZGV2LCAmY29tcC0+Y21kcV9iYXNlLCAwKTsNCj4gKwlpZiAocmV0 KQ0KPiArCQlkZXZfaW5mbyhkZXYsICJnZXQgbWVkaWF0ZWssZ2NlLWNsaWVudC1yZWcgZmFpbCFc biIpOw0KPiArI2VuZGlmDQo+ICsNCj4gKwlpZiAoaWQgPCBQU0VVRE9fT1ZMX01FUkdFX0JBU0Up DQo+ICsJCXBtX3J1bnRpbWVfZW5hYmxlKGNvbXAtPmRldik7DQo+ICsNCj4gKwlkZXZfaW5mbyhk ZXYsICJbRFJNXXJlZ3M6MHglcCwgbm9kZTolc1xuIiwgY29tcC0+cmVncywgcHNldWRvX292bF9j b21wX3N0cltpZF0pOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBp bnQgbXRrX2Rpc3BfcHNldWRvX292bF9jb21wX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpDQo+ICt7DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgbXRr X2Rpc3BfcHNldWRvX292bF9jb21wX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQ0KPiArew0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCBtdGtfcHNldWRvX292bF9jb21wX2R0X2lkc1tdID0gew0KPiArCXsNCj4g KwkJLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTk1LXZkbzEtcmRtYSIsDQo+ICsJCS5kYXRh ID0gKHZvaWQgKilQU0VVRE9fT1ZMX1RZUEVfUkRNQSwNCj4gKwl9LCB7DQo+ICsJCS5jb21wYXRp YmxlID0gIm1lZGlhdGVrLG10ODE5NS12ZG8xLW1lcmdlIiwNCj4gKwkJLmRhdGEgPSAodm9pZCAq KVBTRVVET19PVkxfVFlQRV9NRVJHRSwNCj4gKwl9LA0KPiArCXt9LA0KPiArfTsNCj4gKw0KPiAr c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2Rpc3BfcHNldWRvX292bF9jb21wX2Ry aXZlciA9IHsNCj4gKwkucHJvYmUJCT0gbXRrX2Rpc3BfcHNldWRvX292bF9jb21wX3Byb2JlLA0K PiArCS5yZW1vdmUJCT0gbXRrX2Rpc3BfcHNldWRvX292bF9jb21wX3JlbW92ZSwNCj4gKwkuZHJp dmVyID0gew0KPiArCQkubmFtZQk9ICJtZWRpYXRlay1kaXNwLXBzZXVkby1vdmwtY29tcCIsDQo+ ICsJCS5vd25lcgk9IFRISVNfTU9EVUxFLA0KPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBtdGtfcHNl dWRvX292bF9jb21wX2R0X2lkcywNCj4gKwl9LA0KPiArfTsNCj4gK21vZHVsZV9wbGF0Zm9ybV9k cml2ZXIobXRrX2Rpc3BfcHNldWRvX292bF9jb21wX2RyaXZlcik7DQo+ICsNCj4gK3N0YXRpYyBp bnQgcHNldWRvX292bF9jb21wX2luaXQoc3RydWN0IGRldmljZSAqZGV2KQ0KPiArew0KPiArCXN0 cnVjdCBtdGtfZGlzcF9wc2V1ZG9fb3ZsICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ ICsJc3RydWN0IGRldmljZV9ub2RlICpub2RlLCAqcGFyZW50Ow0KPiArCWludCBpLCByZXQ7DQo+ ICsNCj4gKwlwYXJlbnQgPSBkZXYtPm9mX25vZGUtPnBhcmVudDsNCj4gKw0KPiArCWZvcl9lYWNo X2NoaWxkX29mX25vZGUocGFyZW50LCBub2RlKSB7DQo+ICsJCWNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgKm9mX2lkOw0KPiArCQllbnVtIG10a19wc2V1ZG9fb3ZsX2NvbXBfdHlwZSB0eXBlOw0K PiArCQlzdHJ1Y3QgbXRrX3BzZXVkb19vdmxfY29tcCAqY29tcDsNCj4gKwkJaW50IGlkOw0KPiAr DQo+ICsJCW9mX2lkID0gb2ZfbWF0Y2hfbm9kZShtdGtfcHNldWRvX292bF9jb21wX2R0X2lkcywg bm9kZSk7DQo+ICsJCWlmICghb2ZfaWQpDQo+ICsJCQljb250aW51ZTsNCj4gKw0KPiArCQlpZiAo IW9mX2RldmljZV9pc19hdmFpbGFibGUobm9kZSkpIHsNCj4gKwkJCWRldl9pbmZvKGRldiwgIlNr aXBwaW5nIGRpc2FibGVkIGNvbXBvbmVudCAlcE9GXG4iLA0KPiArCQkJCSBub2RlKTsNCj4gKwkJ CWNvbnRpbnVlOw0KPiArCQl9DQo+ICsNCj4gKwkJdHlwZSA9IChlbnVtIG10a19wc2V1ZG9fb3Zs X2NvbXBfdHlwZSlvZl9pZC0+ZGF0YTsNCj4gKwkJaWQgPSBwc2V1ZG9fb3ZsX2NvbXBfZ2V0X2lk KGRldiwgbm9kZSwgdHlwZSk7DQo+ICsJCWlmIChpZCA8IDApIHsNCj4gKwkJCWRldl93YXJuKGRl diwgIlNraXBwaW5nIHVua25vd24gY29tcG9uZW50ICVwT0ZcbiIsDQo+ICsJCQkJIG5vZGUpOw0K PiArCQkJY29udGludWU7DQo+ICsJCX0NCj4gKw0KPiArCQlyZXQgPSBwcml2YXRlX2NvbXBfaW5p dChkZXYsIG5vZGUsICZwcml2LT5wc2V1ZG9fb3ZsX2NvbXBbaWRdLCBpZCk7DQo+ICsJCWlmIChy ZXQpDQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiArCX0NCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0K PiArDQo+ICtzdGF0aWMgaW50IG10a19kaXNwX3BzZXVkb19vdmxfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgbXRrX2Rpc3BfcHNldWRvX292bCAq cHJpdjsNCj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiArCWludCByZXQ7 DQo+ICsJaW50IGk7DQo+ICsNCj4gKwlkZXZfaW5mbyhkZXYsICIlcytcbiIsIF9fZnVuY19fKTsN Cj4gKw0KPiArCXByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VS TkVMKTsNCj4gKwlpZiAoIXByaXYpDQo+ICsJCXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsJcHJp di0+ZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOw0KPiArDQo+ICsJcGxhdGZv cm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7DQo+ICsNCj4gKwlyZXQgPSBwc2V1ZG9fb3ZsX2Nv bXBfaW5pdChkZXYpOw0KPiArCWlmIChyZXQpIHsNCj4gKwkJZGV2X25vdGljZShkZXYsICJwc2V1 ZG9fb3ZsIGNvbXAgaW5pdCBmYWlsXG4iKTsNCj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ICsN Cj4gKwlyZXQgPSBjb21wb25lbnRfYWRkKGRldiwgJm10a19kaXNwX3BzZXVkb19vdmxfY29tcG9u ZW50X29wcyk7DQo+ICsJaWYgKHJldCAhPSAwKSB7DQo+ICsJCWRldl9ub3RpY2UoZGV2LCAiRmFp bGVkIHRvIGFkZCBjb21wb25lbnQ6ICVkXG4iLCByZXQpOw0KPiArDQo+ICsJCWZvciAoaSA9IFBT RVVET19PVkxfTURQX1JETUEwOyBpIDwgUFNFVURPX09WTF9NRVJHRV9CQVNFOyBpKyspDQo+ICsJ CQlwbV9ydW50aW1lX2Rpc2FibGUocHJpdi0+cHNldWRvX292bF9jb21wW2ldLmRldik7DQo+ICsJ fQ0KPiArCWRldl9pbmZvKGRldiwgIiVzLVxuIiwgX19mdW5jX18pOw0KPiArCXJldHVybiByZXQ7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgbXRrX2Rpc3BfcHNldWRvX292bF9yZW1vdmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgbXRrX2Rpc3BfcHNl dWRvX292bCAqcHNldWRvX292bCA9IGRldl9nZXRfZHJ2ZGF0YSgmcGRldi0+ZGV2KTsNCj4gKwlp bnQgaTsNCj4gKw0KPiArCWNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJm10a19kaXNwX3BzZXVk b19vdmxfY29tcG9uZW50X29wcyk7DQo+ICsNCj4gKwlmb3IgKGkgPSBQU0VVRE9fT1ZMX01EUF9S RE1BMDsgaSA8IFBTRVVET19PVkxfTUVSR0VfQkFTRTsgaSsrKQ0KPiArCQlwbV9ydW50aW1lX2Rp c2FibGUocHNldWRvX292bC0+cHNldWRvX292bF9jb21wW2ldLmRldik7DQo+ICsNCj4gKwlyZXR1 cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBwc2V1ZG9fb3ZsX2RhdGEg bXQ4MTk1X3BzZXVkb19vdmxfZHJpdmVyX2RhdGEgPSB7DQoNCk5vdyBvbmx5IG9uZSBTb0MsIHNv IHJlbW92ZSB0aGlzIGRyaXZlciBkYXRhLg0KDQo+ICsJLmxheWVyX25yID0gNCwNCj4gKwkuZmlm by5yZWFkX3JlcXVlc3RfdHlwZSA9IDcsDQo+ICsJLmZpZm8uY29tbWFuZF9kaXYgPSAxLA0KPiAr CS5maWZvLmV4dF9wcmV1dHJhX2VuID0gMSwNCj4gKwkuZmlmby51bHRyYV9lbiA9IDAsDQo+ICsJ LmZpZm8ucHJlX3VsdHJhX2VuID0gMSwNCj4gKwkuZmlmby5leHRfdWx0cmFfZW4gPSAxLA0KPiAr CS5maWZvLmV4dHJkX2FyYl9tYXhfMCA9IDMsDQo+ICsJLmZpZm8uYnVmX3Jlc3Zfc2l6ZV8wID0g MCwNCj4gKwkuZmlmby5pc3N1ZV9yZXFfdGhfMCA9IDAsDQo+ICsJLmZpZm8udWx0cmFfaF9jb25f MCA9IDE1NiwNCj4gKwkuZmlmby51bHRyYV9sX2Nvbl8wID0gMTA0LA0KPiArfTsNCj4gKw0KPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2Rpc3BfcHNldWRvX292bF9kcml2 ZXJfZHRfbWF0Y2hbXSA9IHsNCj4gKwl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE5NS1k aXNwLXBzZXVkby1vdmwiLA0KPiArCSAgLmRhdGEgPSAmbXQ4MTk1X3BzZXVkb19vdmxfZHJpdmVy X2RhdGF9LA0KPiArCXt9LA0KPiArfTsNCj4gKw0KPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwg bXRrX2Rpc3BfcHNldWRvX292bF9kcml2ZXJfZHRfbWF0Y2gpOw0KPiArDQo+ICtzdHJ1Y3QgcGxh dGZvcm1fZHJpdmVyIG10a19kaXNwX3BzZXVkb19vdmxfZHJpdmVyID0gew0KPiArCS5wcm9iZSA9 IG10a19kaXNwX3BzZXVkb19vdmxfcHJvYmUsDQo+ICsJLnJlbW92ZSA9IG10a19kaXNwX3BzZXVk b19vdmxfcmVtb3ZlLA0KPiArCS5kcml2ZXIgPSB7DQo+ICsJCQkubmFtZSA9ICJtZWRpYXRlay1k aXNwLXBzZXVkby1vdmwiLA0KPiArCQkJLm93bmVyID0gVEhJU19NT0RVTEUsDQo+ICsJCQkub2Zf bWF0Y2hfdGFibGUgPSBtdGtfZGlzcF9wc2V1ZG9fb3ZsX2RyaXZlcl9kdF9tYXRjaCwNCj4gKwkJ fSwNCj4gK307DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Ry bV9kZHBfY29tcC5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwX2NvbXAu Yw0KPiBpbmRleCAzZmE4NmYxMmZlYjQuLjY0Y2JiOWUxY2M4MyAxMDA2NDQNCj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwX2NvbXAuYw0KPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHBfY29tcC5jDQo+IEBAIC0zNTUsNiArMzU1LDE2 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2RkcF9jb21wX2Z1bmNzIGRkcF91Zm9lID0gew0K PiAgCS5zdGFydCA9IG10a191Zm9lX3N0YXJ0LA0KPiAgfTsNCj4gIA0KPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBtdGtfZGRwX2NvbXBfZnVuY3MgZGRwX3BzZXVkb19vdmwgPSB7DQo+ICsJLmNsa19l bmFibGUgPSBtdGtfcHNldWRvX292bF9jbGtfZW5hYmxlLA0KPiArCS5jbGtfZGlzYWJsZSA9IG10 a19wc2V1ZG9fb3ZsX2Nsa19kaXNhYmxlLA0KPiArCS5jb25maWcgPSBtdGtfcHNldWRvX292bF9j b25maWcsDQo+ICsJLnN0YXJ0ID0gbXRrX3BzZXVkb19vdmxfc3RhcnQsDQo+ICsJLnN0b3AgPSBt dGtfcHNldWRvX292bF9zdG9wLA0KPiArCS5sYXllcl9uciA9IG10a19wc2V1ZG9fb3ZsX2xheWVy X25yLA0KPiArCS5sYXllcl9jb25maWcgPSBtdGtfcHNldWRvX292bF9sYXllcl9jb25maWcsDQo+ ICt9Ow0KPiArDQo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19kZHBfY29tcF9mdW5jcyBkZHBf ZXRoZHIgPSB7DQo+ICAJLmNsa19lbmFibGUgPSBtdGtfZXRoZHJfY2xrX2VuYWJsZSwNCj4gIAku Y2xrX2Rpc2FibGUgPSBtdGtfZXRoZHJfY2xrX2Rpc2FibGUsDQo+IEBAIC0zNzcsNiArMzg3LDcg QEAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBtdGtfZGRwX2NvbXBfc3RlbVtNVEtfRERQX0NP TVBfVFlQRV9NQVhdID0gew0KPiAgCVtNVEtfRElTUF9VRk9FXSA9ICJ1Zm9lIiwNCj4gIAlbTVRL X0RTSV0gPSAiZHNpIiwNCj4gIAlbTVRLX0RQSV0gPSAiZHBpIiwNCj4gKwlbTVRLX0RJU1BfUFNF VURPX09WTF0gPSAicHNldWRvX292bCIsDQo+ICAJW01US19ESVNQX1BXTV0gPSAicHdtIiwNCj4g IAlbTVRLX0RJU1BfTVVURVhdID0gIm11dGV4IiwNCj4gIAlbTVRLX0RJU1BfT0RdID0gIm9kIiwN Cj4gQEAgLTQyMiw2ICs0MzMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19kZHBfY29tcF9t YXRjaCBtdGtfZGRwX21hdGNoZXNbRERQX0NPTVBPTkVOVF9JRF9NQVhdID0gew0KPiAgCVtERFBf Q09NUE9ORU5UX09WTDFdCT0geyBNVEtfRElTUF9PVkwsCTEsICZkZHBfb3ZsIH0sDQo+ICAJW0RE UF9DT01QT05FTlRfT1ZMXzJMMF0JPSB7IE1US19ESVNQX09WTF8yTCwJMCwgJmRkcF9vdmwgfSwN Cj4gIAlbRERQX0NPTVBPTkVOVF9PVkxfMkwxXQk9IHsgTVRLX0RJU1BfT1ZMXzJMLAkxLCAmZGRw X292bCB9LA0KPiArCVtERFBfQ09NUE9ORU5UX1BTRVVET19PVkxdID0geyBNVEtfRElTUF9QU0VV RE9fT1ZMLAkwLCAmZGRwX3BzZXVkb19vdmwgfSwNCj4gIAlbRERQX0NPTVBPTkVOVF9QV00wXQk9 IHsgTVRLX0RJU1BfUFdNLAkwLCBOVUxMIH0sDQo+ICAJW0REUF9DT01QT05FTlRfUFdNMV0JPSB7 IE1US19ESVNQX1BXTSwJMSwgTlVMTCB9LA0KPiAgCVtERFBfQ09NUE9ORU5UX1BXTTJdCT0geyBN VEtfRElTUF9QV00sCTIsIE5VTEwgfSwNCj4gQEAgLTUxMCw2ICs1MjIsNDMgQEAgc3RhdGljIGlu dCBtdGtfZGRwX2dldF9sYXJiX2RldihzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsIHN0cnVjdCBt dGtfZGRwX2NvbXAgKmMNCj4gIAlyZXR1cm4gMDsNCj4gIH0NCj4gIA0KPiArc3RydWN0IGRldmlj ZSAqbXRrX2RybV9maW5kX25leHRfY29tcChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3Qg ZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsJc3RydWN0IG10a19kcm1fcHJpdmF0ZSAqcHJpdmF0ZSA9 IGRybS0+ZGV2X3ByaXZhdGU7DQo+ICsJY29uc3QgZW51bSBtdGtfZGRwX2NvbXBfaWQgKnBhdGg7 DQo+ICsJdW5zaWduZWQgaW50IHBhdGhfbGVuID0gMDsNCj4gKwlpbnQgaTsNCj4gKw0KPiArCWlm IChtdGtfZHJtX2ZpbmRfY29tcF9pbl9kZHAoZGV2LCBwcml2YXRlLT5kYXRhLT5tYWluX3BhdGgs DQo+ICsJCQkJICAgICBwcml2YXRlLT5kYXRhLT5tYWluX2xlbiwNCj4gKwkJCQkgICAgIHByaXZh dGUtPmRkcF9jb21wKSkgew0KPiArCQlwYXRoX2xlbiA9IHByaXZhdGUtPmRhdGEtPm1haW5fbGVu Ow0KPiArCQlwYXRoID0gcHJpdmF0ZS0+ZGF0YS0+bWFpbl9wYXRoOw0KPiArCX0gZWxzZSBpZiAo bXRrX2RybV9maW5kX2NvbXBfaW5fZGRwKGRldiwgcHJpdmF0ZS0+ZGF0YS0+ZXh0X3BhdGgsDQo+ ICsJCQkJCSAgICBwcml2YXRlLT5kYXRhLT5leHRfbGVuLA0KPiArCQkJCQkgICAgcHJpdmF0ZS0+ ZGRwX2NvbXApKSB7DQo+ICsJCXBhdGhfbGVuID0gcHJpdmF0ZS0+ZGF0YS0+ZXh0X2xlbjsNCj4g KwkJcGF0aCA9IHByaXZhdGUtPmRhdGEtPmV4dF9wYXRoOw0KPiArCX0gZWxzZSBpZiAobXRrX2Ry bV9maW5kX2NvbXBfaW5fZGRwKGRldiwgcHJpdmF0ZS0+ZGF0YS0+dGhpcmRfcGF0aCwNCj4gKwkJ CQkJICAgIHByaXZhdGUtPmRhdGEtPnRoaXJkX2xlbiwNCj4gKwkJCQkJICAgIHByaXZhdGUtPmRk cF9jb21wKSkgew0KPiArCQlwYXRoX2xlbiA9IHByaXZhdGUtPmRhdGEtPnRoaXJkX2xlbjsNCj4g KwkJcGF0aCA9IHByaXZhdGUtPmRhdGEtPnRoaXJkX3BhdGg7DQo+ICsJfQ0KPiArDQo+ICsJaWYg KCFwYXRoX2xlbikNCj4gKwkJcmV0dXJuIE5VTEw7DQo+ICsNCj4gKwlmb3IgKGkgPSAwVTsgaSA8 IHBhdGhfbGVuOyBpKyspDQo+ICsJCWlmIChkZXYgPT0gcHJpdmF0ZS0+ZGRwX2NvbXBbcGF0aFtp XV0uZGV2KQ0KPiArCQkJYnJlYWs7DQo+ICsNCj4gKwlpZiAoaSA8IChwYXRoX2xlbiAtIDEpKQ0K PiArCQlyZXR1cm4gcHJpdmF0ZS0+ZGRwX2NvbXBbcGF0aFtpICsgMV1dLmRldjsNCj4gKwllbHNl DQo+ICsJCXJldHVybiBOVUxMOw0KPiArfQ0KPiArDQo+ICBpbnQgbXRrX2RkcF9jb21wX2luaXQo c3RydWN0IGRldmljZV9ub2RlICpub2RlLCBzdHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wLA0KPiAg CQkgICAgICBlbnVtIG10a19kZHBfY29tcF9pZCBjb21wX2lkKQ0KPiAgew0KPiBAQCAtNTUxLDYg KzYwMCw3IEBAIGludCBtdGtfZGRwX2NvbXBfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUs IHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsDQo+ICAJICAgIHR5cGUgPT0gTVRLX0RJU1BfTUVS R0UgfHwNCj4gIAkgICAgdHlwZSA9PSBNVEtfRElTUF9PVkwgfHwNCj4gIAkgICAgdHlwZSA9PSBN VEtfRElTUF9PVkxfMkwgfHwNCj4gKwkgICAgdHlwZSA9PSBNVEtfRElTUF9QU0VVRE9fT1ZMIHx8 DQo+ICAJICAgIHR5cGUgPT0gTVRLX0RJU1BfUFdNIHx8DQo+ICAJICAgIHR5cGUgPT0gTVRLX0RJ U1BfUkRNQSB8fA0KPiAgCSAgICB0eXBlID09IE1US19EUEkgfHwNCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcF9jb21wLmggYi9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX2RybV9kZHBfY29tcC5oDQo+IGluZGV4IGY1NWVmYmE2ZTc0NC4uZWM4 NGRjMjU4MTI0IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Ry bV9kZHBfY29tcC5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rk cF9jb21wLmgNCj4gQEAgLTM3LDYgKzM3LDcgQEAgZW51bSBtdGtfZGRwX2NvbXBfdHlwZSB7DQo+ ICAJTVRLX0RJU1BfRFNDLA0KPiAgCU1US19ESVNQX01FUkdFLA0KPiAgCU1US19ESVNQX0VUSERS LA0KPiArCU1US19ESVNQX1BTRVVET19PVkwsDQo+ICAJTVRLX0REUF9DT01QX1RZUEVfTUFYLA0K PiAgfTsNCj4gIA0KPiBAQCAtMTkyLDYgKzE5Myw4IEBAIGludCBtdGtfZGRwX2NvbXBfZ2V0X2lk KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSwNCj4gIAkJCWVudW0gbXRrX2RkcF9jb21wX3R5cGUg Y29tcF90eXBlKTsNCj4gIHVuc2lnbmVkIGludCBtdGtfZHJtX2ZpbmRfcG9zc2libGVfY3J0Y19i eV9jb21wKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sDQo+ICAJCQkJCQlzdHJ1Y3QgZGV2aWNlICpk ZXYpOw0KPiArc3RydWN0IGRldmljZSAqbXRrX2RybV9maW5kX25leHRfY29tcChzdHJ1Y3QgZHJt X2RldmljZSAqZHJtLA0KPiArCQkJCSAgICAgIHN0cnVjdCBkZXZpY2UgKmRldik7DQo+ICBpbnQg bXRrX2RkcF9jb21wX2luaXQoc3RydWN0IGRldmljZV9ub2RlICpjb21wX25vZGUsIHN0cnVjdCBt dGtfZGRwX2NvbXAgKmNvbXAsDQo+ICAJCSAgICAgIGVudW0gbXRrX2RkcF9jb21wX2lkIGNvbXBf aWQpOw0KPiAgZW51bSBtdGtfZGRwX2NvbXBfdHlwZSBtdGtfZGRwX2NvbXBfZ2V0X3R5cGUoZW51 bSBtdGtfZGRwX2NvbXBfaWQgY29tcF9pZCk7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf ZHJtX2Rydi5jDQo+IGluZGV4IGFjZTk1OGEzNGJiNS4uZGRjMjYxNjBkZWExIDEwMDY0NA0KPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYw0KPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYw0KPiBAQCAtNDgwLDYgKzQ4MCw4IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10a19kZHBfY29tcF9kdF9pZHNbXSA9 IHsNCj4gIAkgIC5kYXRhID0gKHZvaWQgKilNVEtfRElTUF9QV00gfSwNCj4gIAl7IC5jb21wYXRp YmxlID0gIm1lZGlhdGVrLG10ODE3My1kaXNwLW9kIiwNCj4gIAkgIC5kYXRhID0gKHZvaWQgKilN VEtfRElTUF9PRCB9LA0KPiArCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTk1LWRpc3At cHNldWRvLW92bCIsDQo+ICsJICAuZGF0YSA9ICh2b2lkICopTVRLX0RJU1BfUFNFVURPX09WTCB9 LA0KPiAgCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTk1LWRpc3AtZXRoZHIiLA0KPiAg CSAgLmRhdGEgPSAodm9pZCAqKU1US19ESVNQX0VUSERSIH0sDQo+ICAJeyB9DQo+IEBAIC01NzQs NiArNTc2LDcgQEAgc3RhdGljIGludCBtdGtfZHJtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpDQo+ICAJCSAgICBjb21wX3R5cGUgPT0gTVRLX0RJU1BfTUVSR0UgfHwNCj4gIAkJ ICAgIGNvbXBfdHlwZSA9PSBNVEtfRElTUF9PVkwgfHwNCj4gIAkJICAgIGNvbXBfdHlwZSA9PSBN VEtfRElTUF9PVkxfMkwgfHwNCj4gKwkJICAgIGNvbXBfdHlwZSA9PSBNVEtfRElTUF9QU0VVRE9f T1ZMIHx8DQo+ICAJCSAgICBjb21wX3R5cGUgPT0gTVRLX0RJU1BfUkRNQSB8fA0KPiAgCQkgICAg Y29tcF90eXBlID09IE1US19EUEkgfHwNCj4gIAkJICAgIGNvbXBfdHlwZSA9PSBNVEtfRFNJKSB7 DQo+IEBAIC02NzksNiArNjgyLDcgQEAgc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKiBj b25zdCBtdGtfZHJtX2RyaXZlcnNbXSA9IHsNCj4gIAkmbXRrX2RwaV9kcml2ZXIsDQo+ICAJJm10 a19kcm1fcGxhdGZvcm1fZHJpdmVyLA0KPiAgCSZtdGtfZHNpX2RyaXZlciwNCj4gKwkmbXRrX2Rp c3BfcHNldWRvX292bF9kcml2ZXIsDQo+ICAJJm10a19ldGhkcl9kcml2ZXIsDQo+ICB9Ow0KPiAg DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oDQo+IGluZGV4IGM4N2ViYjUz MDlkMC4uZmMwM2NmZGE3NjAxIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2RybV9kcnYuaA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Ry bV9kcnYuaA0KPiBAQCAtNTUsNiArNTUsNyBAQCBleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZl ciBtdGtfZGlzcF9kc2NfZHJpdmVyOw0KPiAgZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIg bXRrX2Rpc3BfbWVyZ2VfZHJpdmVyOw0KPiAgZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIg bXRrX2RwaV9kcml2ZXI7DQo+ICBleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZHNp X2RyaXZlcjsNCj4gK2V4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19kaXNwX3BzZXVk b19vdmxfZHJpdmVyOw0KPiAgZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2V0aGRy X2RyaXZlcjsNCj4gIA0KPiAgI2VuZGlmIC8qIE1US19EUk1fRFJWX0ggKi8NCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbWRwX3JkbWEuYyBiL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfbWRwX3JkbWEuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleCAwMDAwMDAwMDAwMDAuLjgxZDNjYzQ4NzJlYg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbWRwX3JkbWEuYw0KPiBAQCAtMCwwICsxLDQ1 NiBAQA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KPiArLyoN Cj4gKyAqIENvcHlyaWdodCAoYykgMjAyMSBNZWRpYVRlayBJbmMuDQo+ICsgKi8NCj4gKw0KPiAr I2luY2x1ZGUgPGRybS9kcm1fZm91cmNjLmg+DQo+ICsjaW5jbHVkZSAibXRrX2RybV9kcnYuaCIN Cj4gKyNpbmNsdWRlICJtdGtfbWRwX3JlZ19yZG1hLmgiDQo+ICsjaW5jbHVkZSAibXRrX21kcF9y ZG1hLmgiDQo+ICsNCj4gKyNkZWZpbmUgUkRNQV9JTlBVVF9TV0FQCQlCSVQoMTQpDQo+ICsjZGVm aW5lIFJETUFfSU5QVVRfMTBCSVQJQklUKDE4KQ0KPiArI2RlZmluZSBJUlFfSU5UX0VOX0FMTAlc DQo+ICsJKFJFR19GTERfTUFTSyhGTERfVU5ERVJSVU5fSU5UX0VOKSB8XA0KPiArCSBSRUdfRkxE X01BU0soRkxEX1JFR19VUERBVEVfSU5UX0VOKSB8XA0KPiArCSBSRUdfRkxEX01BU0soRkxEX0ZS QU1FX0NPTVBMRVRFX0lOVF9FTikpDQo+ICsNCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgcmRtYV9n ZXRfeV9waXRjaCh1bnNpZ25lZCBpbnQgZm10LCB1bnNpZ25lZCBpbnQgd2lkdGgpDQo+ICt7DQo+ ICsJc3dpdGNoIChmbXQpIHsNCj4gKwlkZWZhdWx0Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9SR0I1 NjU6DQo+ICsJY2FzZSBEUk1fRk9STUFUX0JHUjU2NToNCj4gKwkJcmV0dXJuIDIgKiB3aWR0aDsN Cj4gKwljYXNlIERSTV9GT1JNQVRfUkdCODg4Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1I4ODg6 DQo+ICsJCXJldHVybiAzICogd2lkdGg7DQo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQlg4ODg4Og0K PiArCWNhc2UgRFJNX0ZPUk1BVF9SR0JBODg4ODoNCj4gKwljYXNlIERSTV9GT1JNQVRfQkdSWDg4 ODg6DQo+ICsJY2FzZSBEUk1fRk9STUFUX0JHUkE4ODg4Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9Y UkdCODg4ODoNCj4gKwljYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6DQo+ICsJY2FzZSBEUk1fRk9S TUFUX1hCR1I4ODg4Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9BQkdSODg4ODoNCj4gKwljYXNlIERS TV9GT1JNQVRfQVJHQjIxMDEwMTA6DQo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1IyMTAxMDEwOg0K PiArCWNhc2UgRFJNX0ZPUk1BVF9SR0JBMTAxMDEwMjoNCj4gKwljYXNlIERSTV9GT1JNQVRfQkdS QTEwMTAxMDI6DQo+ICsJCXJldHVybiA0ICogd2lkdGg7DQo+ICsJY2FzZSBEUk1fRk9STUFUX1VZ Vlk6DQo+ICsJY2FzZSBEUk1fRk9STUFUX1lVWVY6DQo+ICsJCXJldHVybiAyICogd2lkdGg7DQo+ ICsJY2FzZSBEUk1fRk9STUFUX05WMTI6DQo+ICsJY2FzZSBEUk1fRk9STUFUX05WMjE6DQo+ICsJ CXJldHVybiAxICogd2lkdGg7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdW5zaWduZWQg aW50IHJkbWFfZ2V0X3V2X3BpdGNoKHVuc2lnbmVkIGludCBmbXQsIHVuc2lnbmVkIGludCB3aWR0 aCkNCj4gK3sNCj4gKwlzd2l0Y2ggKGZtdCkgew0KPiArCWRlZmF1bHQ6DQo+ICsJCXJldHVybiAw Ow0KPiArCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOg0KPiArCWNhc2UgRFJNX0ZPUk1BVF9OVjIxOg0K PiArCQlyZXR1cm4gNCAqIHdpZHRoOw0KPiArCX0NCj4gK30NCj4gKw0KPiArc3RhdGljIHVuc2ln bmVkIGludCByZG1hX2dldF9ibG9ja19oKHVuc2lnbmVkIGludCBtb2RlKQ0KPiArew0KPiArCXN3 aXRjaCAobW9kZSkgew0KPiArCWRlZmF1bHQ6DQo+ICsJCXJldHVybiAwOw0KPiArCWNhc2UgUkRN QV9CTE9DS184eDg6DQo+ICsJY2FzZSBSRE1BX0JMT0NLXzE2eDg6DQo+ICsJY2FzZSBSRE1BX0JM T0NLXzMyeDg6DQo+ICsJCXJldHVybiA4Ow0KPiArCWNhc2UgUkRNQV9CTE9DS184eDE2Og0KPiAr CWNhc2UgUkRNQV9CTE9DS18xNngxNjoNCj4gKwljYXNlIFJETUFfQkxPQ0tfMzJ4MTY6DQo+ICsJ CXJldHVybiAxNjsNCj4gKwljYXNlIFJETUFfQkxPQ0tfOHgzMjoNCj4gKwljYXNlIFJETUFfQkxP Q0tfMTZ4MzI6DQo+ICsJY2FzZSBSRE1BX0JMT0NLXzMyeDMyOg0KPiArCQlyZXR1cm4gMzI7DQo+ ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdW5zaWduZWQgaW50IHJkbWFfZ2V0X2hvcml6b250 YWxfc2hpZnRfdXYodW5zaWduZWQgaW50IGZtdCkNCj4gK3sNCj4gKwlzd2l0Y2ggKGZtdCkgew0K PiArCWRlZmF1bHQ6DQo+ICsJCXJldHVybiAwOw0KPiArCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOg0K PiArCWNhc2UgRFJNX0ZPUk1BVF9OVjIxOg0KPiArCQlyZXR1cm4gMTsNCj4gKwl9DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgcmRtYV9nZXRfdmVydGljYWxfc2hpZnRfdXYodW5z aWduZWQgaW50IGZtdCkNCj4gK3sNCj4gKwlzd2l0Y2ggKGZtdCkgew0KPiArCWRlZmF1bHQ6DQo+ ICsJCXJldHVybiAwOw0KPiArCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOg0KPiArCWNhc2UgRFJNX0ZP Uk1BVF9OVjIxOg0KPiArCQlyZXR1cm4gMTsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB1 bnNpZ25lZCBpbnQgcmRtYV9nZXRfYml0c19wZXJfcGl4ZWxfeSh1bnNpZ25lZCBpbnQgZm10KQ0K PiArew0KPiArCXN3aXRjaCAoZm10KSB7DQo+ICsJZGVmYXVsdDoNCj4gKwljYXNlIERSTV9GT1JN QVRfUkdCNTY1Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1I1NjU6DQo+ICsJCXJldHVybiAxNjsN Cj4gKwljYXNlIERSTV9GT1JNQVRfUkdCODg4Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1I4ODg6 DQo+ICsJCXJldHVybiAyNDsNCj4gKwljYXNlIERSTV9GT1JNQVRfUkdCWDg4ODg6DQo+ICsJY2Fz ZSBEUk1fRk9STUFUX1JHQkE4ODg4Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1JYODg4ODoNCj4g KwljYXNlIERSTV9GT1JNQVRfQkdSQTg4ODg6DQo+ICsJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4 Og0KPiArCWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoNCj4gKwljYXNlIERSTV9GT1JNQVRfWEJH Ujg4ODg6DQo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Og0KPiArCQlyZXR1cm4gMzI7DQo+ ICsJY2FzZSBEUk1fRk9STUFUX1VZVlk6DQo+ICsJY2FzZSBEUk1fRk9STUFUX1lVWVY6DQo+ICsJ CXJldHVybiAxNjsNCj4gKwljYXNlIERSTV9GT1JNQVRfTlYxMjoNCj4gKwljYXNlIERSTV9GT1JN QVRfTlYyMToNCj4gKwkJcmV0dXJuIDg7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdW5z aWduZWQgaW50IHJkbWFfZ2V0X2JpdHNfcGVyX3BpeGVsX3V2KHVuc2lnbmVkIGludCBmbXQpDQo+ ICt7DQo+ICsJc3dpdGNoIChmbXQpIHsNCj4gKwlkZWZhdWx0Og0KPiArCQlyZXR1cm4gMDsNCj4g KwljYXNlIERSTV9GT1JNQVRfTlYxMjoNCj4gKwljYXNlIERSTV9GT1JNQVRfTlYyMToNCj4gKwkJ cmV0dXJuIDE2Ow0KPiArCX0NCj4gK30NCj4gKw0KPiArc3RhdGljIGJvb2wgd2l0aF9hbHBoYSh1 aW50MzJfdCBmb3JtYXQpDQo+ICt7DQo+ICsJY29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAq Zm10X2luZm8gPSBkcm1fZm9ybWF0X2luZm8oZm9ybWF0KTsNCj4gKw0KPiArCXJldHVybiBmbXRf aW5mby0+aGFzX2FscGhhOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdW5zaWduZWQgaW50IHJkbWFf Zm10X2NvbnZlcnQodW5zaWduZWQgaW50IGZtdCkNCj4gK3sNCj4gKwlzd2l0Y2ggKGZtdCkgew0K PiArCWRlZmF1bHQ6DQo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToNCj4gKwkJcmV0dXJuIFJE TUFfSU5QVVRfRk9STUFUX1JHQjU2NTsNCj4gKwljYXNlIERSTV9GT1JNQVRfQkdSNTY1Og0KPiAr CQlyZXR1cm4gUkRNQV9JTlBVVF9GT1JNQVRfUkdCNTY1IHwgUkRNQV9JTlBVVF9TV0FQOw0KPiAr CWNhc2UgRFJNX0ZPUk1BVF9SR0I4ODg6DQo+ICsJCXJldHVybiBSRE1BX0lOUFVUX0ZPUk1BVF9S R0I4ODg7DQo+ICsJY2FzZSBEUk1fRk9STUFUX0JHUjg4ODoNCj4gKwkJcmV0dXJuIFJETUFfSU5Q VVRfRk9STUFUX1JHQjg4OCB8IFJETUFfSU5QVVRfU1dBUDsNCj4gKwljYXNlIERSTV9GT1JNQVRf UkdCWDg4ODg6DQo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQkE4ODg4Og0KPiArCQlyZXR1cm4gUkRN QV9JTlBVVF9GT1JNQVRfQVJHQjg4ODg7DQo+ICsJY2FzZSBEUk1fRk9STUFUX0JHUlg4ODg4Og0K PiArCWNhc2UgRFJNX0ZPUk1BVF9CR1JBODg4ODoNCj4gKwkJcmV0dXJuIFJETUFfSU5QVVRfRk9S TUFUX0FSR0I4ODg4IHwgUkRNQV9JTlBVVF9TV0FQOw0KPiArCWNhc2UgRFJNX0ZPUk1BVF9YUkdC ODg4ODoNCj4gKwljYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6DQo+ICsJCXJldHVybiBSRE1BX0lO UFVUX0ZPUk1BVF9SR0JBODg4ODsNCj4gKwljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6DQo+ICsJ Y2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Og0KPiArCQlyZXR1cm4gUkRNQV9JTlBVVF9GT1JNQVRf UkdCQTg4ODggfCBSRE1BX0lOUFVUX1NXQVA7DQo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1IyMTAx MDEwOg0KPiArCQlyZXR1cm4gUkRNQV9JTlBVVF9GT1JNQVRfUkdCQTg4ODggfCBSRE1BX0lOUFVU X1NXQVAgfA0KPiArCQkJCVJETUFfSU5QVVRfMTBCSVQ7DQo+ICsJY2FzZSBEUk1fRk9STUFUX0FS R0IyMTAxMDEwOg0KPiArCQlyZXR1cm4gUkRNQV9JTlBVVF9GT1JNQVRfUkdCQTg4ODggfCBSRE1B X0lOUFVUXzEwQklUOw0KPiArCWNhc2UgRFJNX0ZPUk1BVF9SR0JBMTAxMDEwMjoNCj4gKwkJcmV0 dXJuIFJETUFfSU5QVVRfRk9STUFUX0FSR0I4ODg4IHwgUkRNQV9JTlBVVF9TV0FQIHwNCj4gKwkJ CQlSRE1BX0lOUFVUXzEwQklUOw0KPiArCWNhc2UgRFJNX0ZPUk1BVF9CR1JBMTAxMDEwMjoNCj4g KwkJcmV0dXJuIFJETUFfSU5QVVRfRk9STUFUX0FSR0I4ODg4IHwgUkRNQV9JTlBVVF8xMEJJVDsN Cj4gKwljYXNlIERSTV9GT1JNQVRfVVlWWToNCj4gKwkJcmV0dXJuIFJETUFfSU5QVVRfRk9STUFU X1VZVlk7DQo+ICsJY2FzZSBEUk1fRk9STUFUX1lVWVY6DQo+ICsJCXJldHVybiBSRE1BX0lOUFVU X0ZPUk1BVF9ZVVkyOw0KPiArCX0NCj4gK30NCj4gKw0KPiArdm9pZCBtdGtfbWRwX3JkbWFfc3Rh cnQodm9pZCBfX2lvbWVtICpiYXNlLCBzdHJ1Y3QgY21kcV9wa3QgKmNtZHFfcGt0LA0KPiArCQkJ c3RydWN0IGNtZHFfY2xpZW50X3JlZyAqY21kcV9iYXNlKQ0KPiArew0KPiArCXVuc2lnbmVkIGlu dCBpbnRlbiA9IElSUV9JTlRfRU5fQUxMOw0KPiArDQo+ICsJbXRrX2RkcF93cml0ZV9tYXNrKGNt ZHFfcGt0LCBpbnRlbiwgY21kcV9iYXNlLCBiYXNlLA0KPiArCQkJICAgTURQX1JETUFfSU5URVJS VVBUX0VOQUJMRSwgSVJRX0lOVF9FTl9BTEwpOw0KPiArCW10a19kZHBfd3JpdGVfbWFzayhjbWRx X3BrdCwgUkVHX0ZMRF9WQUwoRkxEX1JPVF9FTkFCTEUsIDEpLCBjbWRxX2Jhc2UsDQo+ICsJCQkg ICBiYXNlLCBNRFBfUkRNQV9FTiwgUkVHX0ZMRF9NQVNLKEZMRF9ST1RfRU5BQkxFKSk7DQo+ICt9 DQo+ICsNCj4gK3ZvaWQgbXRrX21kcF9yZG1hX3N0b3Aodm9pZCBfX2lvbWVtICpiYXNlLCBzdHJ1 Y3QgY21kcV9wa3QgKmNtZHFfcGt0LA0KPiArCQkgICAgICAgc3RydWN0IGNtZHFfY2xpZW50X3Jl ZyAqY21kcV9iYXNlKQ0KPiArew0KPiArCW10a19kZHBfd3JpdGVfbWFzayhjbWRxX3BrdCwgUkVH X0ZMRF9WQUwoRkxEX1JPVF9FTkFCTEUsIDApLCBjbWRxX2Jhc2UsDQo+ICsJCQkgICBiYXNlLCBN RFBfUkRNQV9FTiwgUkVHX0ZMRF9NQVNLKEZMRF9ST1RfRU5BQkxFKSk7DQo+ICsJbXRrX2RkcF93 cml0ZV9tYXNrKGNtZHFfcGt0LCAwLCBjbWRxX2Jhc2UsIGJhc2UsDQo+ICsJCQkgICBNRFBfUkRN QV9JTlRFUlJVUFRfRU5BQkxFLCBJUlFfSU5UX0VOX0FMTCk7DQo+ICsJbXRrX2RkcF93cml0ZV9t YXNrKGNtZHFfcGt0LCAwLCBjbWRxX2Jhc2UsIGJhc2UsDQo+ICsJCQkgICBNRFBfUkRNQV9JTlRF UlJVUFRfU1RBVFVTLCBJUlFfSU5UX0VOX0FMTCk7DQo+ICsJbXRrX2RkcF93cml0ZV9tYXNrKGNt ZHFfcGt0LCAxLCBjbWRxX2Jhc2UsIGJhc2UsIE1EUF9SRE1BX1JFU0VULCB+MCk7DQo+ICsJbXRr X2RkcF93cml0ZV9tYXNrKGNtZHFfcGt0LCAwLCBjbWRxX2Jhc2UsIGJhc2UsIE1EUF9SRE1BX1JF U0VULCB+MCk7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgbXRrX21kcF9yZG1hX2ZpZm9fY29uZmlnKHZv aWQgX19pb21lbSAqYmFzZSwgc3RydWN0IGNtZHFfcGt0ICpjbWRxX3BrdCwNCj4gKwkJCSAgICAg IHN0cnVjdCBjbWRxX2NsaWVudF9yZWcgKmNtZHFfYmFzZSwNCj4gKwkJCSAgICAgIGNvbnN0IHN0 cnVjdCBtdGtfbWRwX3JkbWFfZmlmbyAqZmlmbykNCj4gK3sNCj4gKwlpbnQgcmVnOw0KPiArCWlu dCByZWdfdmFsOw0KPiArCWludCByZWdfbWFzazsNCj4gKw0KPiArCXJlZyA9IE1EUF9SRE1BX0dN Q0lGX0NPTjsNCj4gKwlyZWdfdmFsID0gUkVHX0ZMRF9WQUwoRkxEX1JEX1JFUV9UWVBFLCBmaWZv LT5yZWFkX3JlcXVlc3RfdHlwZSkgfA0KPiArCQkgIFJFR19GTERfVkFMKEZMRF9DT01NQU5EX0RJ ViwgZmlmby0+Y29tbWFuZF9kaXYpIHwNCj4gKwkJICBSRUdfRkxEX1ZBTChGTERfRVhUX1BSRVVM VFJBX0VOLCBmaWZvLT5leHRfcHJldXRyYV9lbikgfA0KPiArCQkgIFJFR19GTERfVkFMKEZMRF9V TFRSQV9FTiwgZmlmby0+dWx0cmFfZW4pIHwNCj4gKwkJICBSRUdfRkxEX1ZBTChQUkVfVUxUUkFf RU4sIGZpZm8tPnByZV91bHRyYV9lbikgfA0KPiArCQkgIFJFR19GTERfVkFMKEZMRF9FWFRfVUxU UkFfRU4sIGZpZm8tPmV4dF91bHRyYV9lbik7DQo+ICsJcmVnX21hc2sgPSBSRUdfRkxEX01BU0so RkxEX1JEX1JFUV9UWVBFKSB8DQo+ICsJCSAgIFJFR19GTERfTUFTSyhGTERfQ09NTUFORF9ESVYp IHwNCj4gKwkJICAgUkVHX0ZMRF9NQVNLKEZMRF9FWFRfUFJFVUxUUkFfRU4pIHwNCj4gKwkJICAg UkVHX0ZMRF9NQVNLKEZMRF9VTFRSQV9FTikgfA0KPiArCQkgICBSRUdfRkxEX01BU0soUFJFX1VM VFJBX0VOKSB8DQo+ICsJCSAgIFJFR19GTERfTUFTSyhGTERfRVhUX1VMVFJBX0VOKTsNCj4gKwlt dGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3QsIHJlZ192YWwsIGNtZHFfYmFzZSwgYmFzZSwgcmVn LCByZWdfbWFzayk7DQo+ICsNCj4gKwlyZWcgPSBNRFBfUkRNQV9ETUFfQ09OXzA7DQo+ICsJcmVn X3ZhbCA9IFJFR19GTERfVkFMKEZMRF9FWFRSRF9BUkJfTUFYLCBmaWZvLT5leHRyZF9hcmJfbWF4 XzApIHwNCj4gKwkJICBSRUdfRkxEX1ZBTChGTERfQlVGX1JFU1ZfU0laRSwgZmlmby0+YnVmX3Jl c3Zfc2l6ZV8wKSB8DQo+ICsJCSAgUkVHX0ZMRF9WQUwoRkxEX0lTU1VFX1JFUV9USCwgZmlmby0+ aXNzdWVfcmVxX3RoXzApOw0KPiArCXJlZ19tYXNrID0gUkVHX0ZMRF9NQVNLKEZMRF9FWFRSRF9B UkJfTUFYKSB8DQo+ICsJCSAgIFJFR19GTERfTUFTSyhGTERfQlVGX1JFU1ZfU0laRSkgfA0KPiAr CQkgICBSRUdfRkxEX01BU0soRkxEX0lTU1VFX1JFUV9USCk7DQo+ICsJbXRrX2RkcF93cml0ZV9t YXNrKGNtZHFfcGt0LCByZWdfdmFsLCBjbWRxX2Jhc2UsIGJhc2UsIHJlZywgcmVnX21hc2spOw0K PiArDQo+ICsJcmVnID0gTURQX1JETUFfVVRSQV9IX0NPTl8wOw0KPiArCXJlZ192YWwgPSBSRUdf RkxEX1ZBTChGTERfUFJFVVRSQV9IX09GU18wLCBmaWZvLT51bHRyYV9oX2Nvbl8wKTsNCj4gKwly ZWdfbWFzayA9IFJFR19GTERfTUFTSyhGTERfUFJFVVRSQV9IX09GU18wKTsNCj4gKwltdGtfZGRw X3dyaXRlX21hc2soY21kcV9wa3QsIHJlZ192YWwsIGNtZHFfYmFzZSwgYmFzZSwgcmVnLCByZWdf bWFzayk7DQo+ICsNCj4gKwlyZWcgPSBNRFBfUkRNQV9VVFJBX0xfQ09OXzA7DQo+ICsJcmVnX3Zh bCA9IFJFR19GTERfVkFMKEZMRF9QUkVVVFJBX0xfT0ZTXzAsIGZpZm8tPnVsdHJhX2xfY29uXzAp Ow0KPiArCXJlZ19tYXNrID0gUkVHX0ZMRF9NQVNLKEZMRF9QUkVVVFJBX0xfT0ZTXzApOw0KPiAr CW10a19kZHBfd3JpdGVfbWFzayhjbWRxX3BrdCwgcmVnX3ZhbCwgY21kcV9iYXNlLCBiYXNlLCBy ZWcsIHJlZ19tYXNrKTsNCj4gKw0KPiArCXJlZyA9IE1EUF9SRE1BX0RNQUJVRl9DT05fMTsNCj4g KwlyZWdfdmFsID0gUkVHX0ZMRF9WQUwoRkxEX0VYVFJEX0FSQl9NQVhfMSwgMCkgfA0KPiArCQkg IFJFR19GTERfVkFMKEZMRF9CVUZfUkVTVl9TSVpFXzEsIDApIHwNCj4gKwkJICBSRUdfRkxEX1ZB TChGTERfSVNTVUVfUkVRX1RIXzEsIDApOw0KPiArCXJlZ19tYXNrID0gUkVHX0ZMRF9NQVNLKEZM RF9FWFRSRF9BUkJfTUFYXzEpIHwNCj4gKwkJICAgUkVHX0ZMRF9NQVNLKEZMRF9CVUZfUkVTVl9T SVpFXzEpIHwNCj4gKwkJICAgUkVHX0ZMRF9NQVNLKEZMRF9JU1NVRV9SRVFfVEhfMSk7DQo+ICsJ bXRrX2RkcF93cml0ZV9tYXNrKGNtZHFfcGt0LCByZWdfdmFsLCBjbWRxX2Jhc2UsIGJhc2UsIHJl ZywgcmVnX21hc2spOw0KPiArDQo+ICsJcmVnID0gTURQX1JETUFfVUxUUkFfVEhfSElHSF9DT05f MTsNCj4gKwlyZWdfdmFsID0gUkVHX0ZMRF9WQUwoRkxEX1BSRV9VTFRSQV9USF9ISUdIX09GU18x LCAwKTsNCj4gKwlyZWdfbWFzayA9IFJFR19GTERfTUFTSyhGTERfUFJFX1VMVFJBX1RIX0hJR0hf T0ZTXzEpOw0KPiArCW10a19kZHBfd3JpdGVfbWFzayhjbWRxX3BrdCwgcmVnX3ZhbCwgY21kcV9i YXNlLCBiYXNlLCByZWcsIHJlZ19tYXNrKTsNCj4gKw0KPiArCXJlZyA9IE1EUF9SRE1BX1VMVFJB X1RIX0xPV19DT05fMTsNCj4gKwlyZWdfdmFsID0gUkVHX0ZMRF9WQUwoRkxEX1BSRV9VTFRSQV9U SF9MT1dfT0ZTXzEsIDApOw0KPiArCXJlZ19tYXNrID0gUkVHX0ZMRF9NQVNLKEZMRF9QUkVfVUxU UkFfVEhfTE9XX09GU18xKTsNCj4gKwltdGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3QsIHJlZ192 YWwsIGNtZHFfYmFzZSwgYmFzZSwgcmVnLCByZWdfbWFzayk7DQo+ICsNCj4gKwlyZWcgPSBNRFBf UkRNQV9ETUFCVUZfQ09OXzI7DQo+ICsJcmVnX3ZhbCA9IFJFR19GTERfVkFMKEZMRF9FWFRSRF9B UkJfTUFYXzIsIDApIHwNCj4gKwkJICBSRUdfRkxEX1ZBTChGTERfQlVGX1JFU1ZfU0laRV8yLCAw KSB8DQo+ICsJCSAgUkVHX0ZMRF9WQUwoRkxEX0lTU1VFX1JFUV9USF8yLCAwKTsNCj4gKwlyZWdf bWFzayA9IFJFR19GTERfTUFTSyhGTERfRVhUUkRfQVJCX01BWF8yKSB8DQo+ICsJCSAgIFJFR19G TERfTUFTSyhGTERfQlVGX1JFU1ZfU0laRV8yKSB8DQo+ICsJCSAgIFJFR19GTERfTUFTSyhGTERf SVNTVUVfUkVRX1RIXzIpOw0KPiArCW10a19kZHBfd3JpdGVfbWFzayhjbWRxX3BrdCwgcmVnX3Zh bCwgY21kcV9iYXNlLCBiYXNlLCByZWcsIHJlZ19tYXNrKTsNCj4gKw0KPiArCXJlZyA9IE1EUF9S RE1BX1VUUkFfSF9DT05fMjsNCj4gKwlyZWdfdmFsID0gUkVHX0ZMRF9WQUwoRkxEX1BSRV9VTFRS QV9USF9ISUdIX09GU18yLCAwKTsNCj4gKwlyZWdfbWFzayA9IFJFR19GTERfTUFTSyhGTERfUFJF X1VMVFJBX1RIX0hJR0hfT0ZTXzIpOw0KPiArCW10a19kZHBfd3JpdGVfbWFzayhjbWRxX3BrdCwg cmVnX3ZhbCwgY21kcV9iYXNlLCBiYXNlLCByZWcsIHJlZ19tYXNrKTsNCj4gKw0KPiArCXJlZyA9 IE1EUF9SRE1BX1VMVFJBX1RIX0xPV19DT05fMjsNCj4gKwlyZWdfdmFsID0gUkVHX0ZMRF9WQUwo RkxEX1BSRV9VTFRSQV9USF9MT1dfT0ZTXzIsIDApOw0KPiArCXJlZ19tYXNrID0gUkVHX0ZMRF9N QVNLKEZMRF9QUkVfVUxUUkFfVEhfTE9XX09GU18yKTsNCj4gKwltdGtfZGRwX3dyaXRlX21hc2so Y21kcV9wa3QsIHJlZ192YWwsIGNtZHFfYmFzZSwgYmFzZSwgcmVnLCByZWdfbWFzayk7DQo+ICsN Cj4gKwlyZWcgPSBNRFBfUkRNQV9ETUFCVUZfQ09OXzM7DQo+ICsJcmVnX3ZhbCA9IFJFR19GTERf VkFMKEZMRF9FWFRSRF9BUkJfTUFYXzMsIDApIHwNCj4gKwkJICBSRUdfRkxEX1ZBTChGTERfQlVG X1JFU1ZfU0laRV8zLCAwKSB8DQo+ICsJCSAgUkVHX0ZMRF9WQUwoRkxEX0lTU1VFX1JFUV9USF8z LCAwKTsNCj4gKwlyZWdfbWFzayA9IFJFR19GTERfTUFTSyhGTERfRVhUUkRfQVJCX01BWF8zKSB8 DQo+ICsJCSAgIFJFR19GTERfTUFTSyhGTERfQlVGX1JFU1ZfU0laRV8zKSB8DQo+ICsJCSAgIFJF R19GTERfTUFTSyhGTERfSVNTVUVfUkVRX1RIXzMpOw0KPiArCW10a19kZHBfd3JpdGVfbWFzayhj bWRxX3BrdCwgcmVnX3ZhbCwgY21kcV9iYXNlLCBiYXNlLCByZWcsIHJlZ19tYXNrKTsNCj4gKw0K PiArCXJlZyA9IE1EUF9SRE1BX1VUUkFfSF9DT05fMzsNCj4gKwlyZWdfdmFsID0gUkVHX0ZMRF9W QUwoRkxEX1BSRV9VTFRSQV9USF9ISUdIX09GU18zLCAwKTsNCj4gKwlyZWdfbWFzayA9IFJFR19G TERfTUFTSyhGTERfUFJFX1VMVFJBX1RIX0hJR0hfT0ZTXzMpOw0KPiArCW10a19kZHBfd3JpdGVf bWFzayhjbWRxX3BrdCwgcmVnX3ZhbCwgY21kcV9iYXNlLCBiYXNlLCByZWcsIHJlZ19tYXNrKTsN Cj4gKw0KPiArCXJlZyA9IE1EUF9SRE1BX1VMVFJBX1RIX0xPV19DT05fMzsNCj4gKwlyZWdfdmFs ID0gUkVHX0ZMRF9WQUwoRkxEX1BSRV9VTFRSQV9USF9MT1dfT0ZTXzMsIDApOw0KPiArCXJlZ19t YXNrID0gUkVHX0ZMRF9NQVNLKEZMRF9QUkVfVUxUUkFfVEhfTE9XX09GU18zKTsNCj4gKwltdGtf ZGRwX3dyaXRlX21hc2soY21kcV9wa3QsIHJlZ192YWwsIGNtZHFfYmFzZSwgYmFzZSwgcmVnLCBy ZWdfbWFzayk7DQo+ICt9DQo+ICsNCj4gK3ZvaWQgbXRrX21kcF9yZG1hX2NvbmZpZyh2b2lkIF9f aW9tZW0gKmJhc2UsIHN0cnVjdCBtdGtfbWRwX3JkbWFfY2ZnICpjZmcsDQo+ICsJCQkgc3RydWN0 IGNtZHFfcGt0ICpjbWRxX3BrdCwNCj4gKwkJCSBzdHJ1Y3QgY21kcV9jbGllbnRfcmVnICpjbWRx X2Jhc2UpDQo+ICt7DQo+ICsJdW5zaWduZWQgaW50IHNyY19waXRjaF91diA9IHJkbWFfZ2V0X3V2 X3BpdGNoKGNmZy0+Zm10LCBjZmctPnNvdXJjZV93aWR0aCk7DQo+ICsJdW5zaWduZWQgaW50IHNy Y19waXRjaF95ID0gcmRtYV9nZXRfeV9waXRjaChjZmctPmZtdCwgY2ZnLT5zb3VyY2Vfd2lkdGgp Ow0KDQpUaGUgcGl0Y2ggaXMgZ290IGluIG10a19wbGFuZV9hdG9taWNfdXBkYXRlKCksIGlzbid0 IGl0Pw0KDQo+ICsJdW5zaWduZWQgaW50IGhfc2hpZnRfdXYgPSByZG1hX2dldF9ob3Jpem9udGFs X3NoaWZ0X3V2KGNmZy0+Zm10KTsNCj4gKwl1bnNpZ25lZCBpbnQgdl9zaGlmdF91diA9IHJkbWFf Z2V0X3ZlcnRpY2FsX3NoaWZ0X3V2KGNmZy0+Zm10KTsNCj4gKwl1bnNpZ25lZCBpbnQgYnBwX3V2 ID0gcmRtYV9nZXRfYml0c19wZXJfcGl4ZWxfdXYoY2ZnLT5mbXQpOw0KDQpJIHRoaW5rIGRybV9m b3JtYXRfaW5mbygpIGNvdWxkIGdldCB0aGlzIGluZm8uDQoNCj4gKwl1bnNpZ25lZCBpbnQgYmxv Y2tfaCA9IHJkbWFfZ2V0X2Jsb2NrX2goY2ZnLT5ibG9ja19zaXplKTsNCg0KYmxvY2tfaCA9IDA7 DQoNCj4gKwl1bnNpZ25lZCBpbnQgYnBwX3kgPSByZG1hX2dldF9iaXRzX3Blcl9waXhlbF95KGNm Zy0+Zm10KTsNCg0KSSB0aGluayBkcm1fZm9ybWF0X2luZm8oKSBjb3VsZCBnZXQgdGhpcyBpbmZv Lg0KDQo+ICsJdW5zaWduZWQgaW50IHlfc3RhcnRfbGluZSA9IDA7DQo+ICsJdW5zaWduZWQgaW50 IG9mZnNldF95ID0gMDsNCj4gKwl1bnNpZ25lZCBpbnQgb2Zmc2V0X3UgPSAwOw0KPiArCXVuc2ln bmVkIGludCBvZmZzZXRfdiA9IDA7DQo+ICsNCj4gKwltdGtfZGRwX3dyaXRlX21hc2soY21kcV9w a3QsIFJFR19GTERfVkFMKEZMRF9VTklGT1JNX0NPTkZJRywgMSksDQo+ICsJCQkgICBjbWRxX2Jh c2UsIGJhc2UsIE1EUF9SRE1BX1NSQ19DT04sDQo+ICsJCQkgICBSRUdfRkxEX01BU0soRkxEX1VO SUZPUk1fQ09ORklHKSk7DQo+ICsJbXRrX2RkcF93cml0ZV9tYXNrKGNtZHFfcGt0LCByZG1hX2Zt dF9jb252ZXJ0KGNmZy0+Zm10KSwgY21kcV9iYXNlLA0KPiArCQkJICAgYmFzZSwgTURQX1JETUFf U1JDX0NPTiwgUkVHX0ZMRF9NQVNLKEZMRF9TV0FQKSB8DQo+ICsJCQkgICBSRUdfRkxEX01BU0so RkxEX1NSQ19GT1JNQVQpIHwNCj4gKwkJCSAgIFJFR19GTERfTUFTSyhGTERfQklUX05VTUJFUikp Ow0KPiArDQo+ICsJaWYgKCFjZmctPmNzY19lbmFibGUgJiYgd2l0aF9hbHBoYShjZmctPmZtdCkp DQo+ICsJCW10a19kZHBfd3JpdGVfbWFzayhjbWRxX3BrdCwgUkVHX0ZMRF9WQUwoRkxEX09VVFBV VF9BUkdCLCAxKSwNCj4gKwkJCQkgICBjbWRxX2Jhc2UsIGJhc2UsIE1EUF9SRE1BX1NSQ19DT04s DQo+ICsJCQkJICAgUkVHX0ZMRF9NQVNLKEZMRF9PVVRQVVRfQVJHQikpOw0KPiArCWVsc2UNCj4g KwkJbXRrX2RkcF93cml0ZV9tYXNrKGNtZHFfcGt0LCBSRUdfRkxEX1ZBTChGTERfT1VUUFVUX0FS R0IsIDApLA0KPiArCQkJCSAgIGNtZHFfYmFzZSwgYmFzZSwgTURQX1JETUFfU1JDX0NPTiwNCj4g KwkJCQkgICBSRUdfRkxEX01BU0soRkxEX09VVFBVVF9BUkdCKSk7DQo+ICsNCj4gKwltdGtfZGRw X3dyaXRlX21hc2soY21kcV9wa3QsIGNmZy0+YWRkcjAsIGNtZHFfYmFzZSwgYmFzZSwNCj4gKwkJ CSAgIE1EUF9SRE1BX1NSQ19CQVNFXzAsIFJFR19GTERfTUFTSyhGTERfU1JDX0JBU0VfMCkpOw0K DQptdGtfZGRwX3dyaXRlKGNtZHFfcGt0LCBjZmctPmFkZHIwLCBjbWRxX2Jhc2UsIGJhc2UsIE1E UF9SRE1BX1NSQ19CQVNFXzApOw0KDQo+ICsJbXRrX2RkcF93cml0ZV9tYXNrKGNtZHFfcGt0LCBj ZmctPmFkZHIxLCBjbWRxX2Jhc2UsIGJhc2UsDQo+ICsJCQkgICBNRFBfUkRNQV9TUkNfQkFTRV8x LCBSRUdfRkxEX01BU0soRkxEX1NSQ19CQVNFXzEpKTsNCj4gKwltdGtfZGRwX3dyaXRlX21hc2so Y21kcV9wa3QsIGNmZy0+YWRkcjIsIGNtZHFfYmFzZSwgYmFzZSwNCj4gKwkJCSAgIE1EUF9SRE1B X1NSQ19CQVNFXzIsIFJFR19GTERfTUFTSyhGTERfU1JDX0JBU0VfMikpOw0KPiArDQo+ICsJbXRr X2RkcF93cml0ZV9tYXNrKGNtZHFfcGt0LCBzcmNfcGl0Y2hfeSwgY21kcV9iYXNlLCBiYXNlLA0K PiArCQkJICAgTURQX1JETUFfTUZfQktHRF9TSVpFX0lOX0JZVEUsDQo+ICsJCQkgICBSRUdfRkxE X01BU0soRkxEX01GX0JLR0RfV0IpKTsNCj4gKwltdGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3Qs IHNyY19waXRjaF91diwgY21kcV9iYXNlLCBiYXNlLA0KPiArCQkJICAgTURQX1JETUFfU0ZfQktH RF9TSVpFX0lOX0JZVEUsDQo+ICsJCQkgICBSRUdfRkxEX01BU0soRkxEX1NGX0JLR0RfV0IpKTsN Cj4gKw0KPiArCWlmIChjZmctPmVuY29kZV90eXBlID09IFJETUFfRU5DT0RFX0FGQkMpIHsNCg0K TmV2ZXIgYmUgaGVyZSwgc28gcmVtb3ZlLg0KDQo+ICsJCW10a19kZHBfd3JpdGVfbWFzayhjbWRx X3BrdCwgUkVHX0ZMRF9WQUwoRkxEX01GX0JLR0RfV1AsIGNmZy0+c291cmNlX3dpZHRoKSwNCj4g KwkJCQkgICBjbWRxX2Jhc2UsIGJhc2UsIE1EUF9SRE1BX01GX0JLR0RfU0laRV9JTl9QSVhFTCwN Cj4gKwkJCQkgICBSRUdfRkxEX01BU0soRkxEX01GX0JLR0RfV1ApKTsNCj4gKwkJbXRrX2RkcF93 cml0ZV9tYXNrKGNtZHFfcGt0LCBSRUdfRkxEX1ZBTChGTERfQktHRF9IUCwgY2ZnLT5oZWlnaHQp LA0KPiArCQkJCSAgIGNtZHFfYmFzZSwgYmFzZSwgTURQX1JETUFfTUZfQktHRF9IX1NJWkVfSU5f UElYRUwsDQo+ICsJCQkJICAgUkVHX0ZMRF9NQVNLKEZMRF9CS0dEX0hQKSk7DQo+ICsJCW10a19k ZHBfd3JpdGVfbWFzayhjbWRxX3BrdCwgUkVHX0ZMRF9WQUwoRkxEX0FGQkNfWVVWX1RSQU5TRk9S TSwgMSksDQo+ICsJCQkJICAgY21kcV9iYXNlLCBiYXNlLCBNRFBfUkRNQV9DT01QX0NPTiwNCj4g KwkJCQkgICBSRUdfRkxEX01BU0soRkxEX0FGQkNfWVVWX1RSQU5TRk9STSkpOw0KPiArCQltdGtf ZGRwX3dyaXRlX21hc2soY21kcV9wa3QsIFJFR19GTERfVkFMKEZMRF9VRkJEQ19FTiwgMSksIGNt ZHFfYmFzZSwNCj4gKwkJCQkgICBiYXNlLCBNRFBfUkRNQV9DT01QX0NPTiwgUkVHX0ZMRF9NQVNL KEZMRF9VRkJEQ19FTikpOw0KPiArCQltdGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3QsIFJFR19G TERfVkFMKEZMRF9BRkJDX0VOLCAxKSwgY21kcV9iYXNlLA0KPiArCQkJCSAgIGJhc2UsIE1EUF9S RE1BX0NPTVBfQ09OLCBSRUdfRkxEX01BU0soRkxEX0FGQkNfRU4pKTsNCj4gKwl9IGVsc2Ugew0K PiArCQltdGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3QsIFJFR19GTERfVkFMKEZMRF9BRkJDX1lV Vl9UUkFOU0ZPUk0sIDApLA0KPiArCQkJCSAgIGNtZHFfYmFzZSwgYmFzZSwgTURQX1JETUFfQ09N UF9DT04sDQo+ICsJCQkJICAgUkVHX0ZMRF9NQVNLKEZMRF9BRkJDX1lVVl9UUkFOU0ZPUk0pKTsN Cj4gKwkJbXRrX2RkcF93cml0ZV9tYXNrKGNtZHFfcGt0LCBSRUdfRkxEX1ZBTChGTERfVUZCRENf RU4sIDApLCBjbWRxX2Jhc2UsDQo+ICsJCQkJICAgYmFzZSwgTURQX1JETUFfQ09NUF9DT04sIFJF R19GTERfTUFTSyhGTERfVUZCRENfRU4pKTsNCj4gKwkJbXRrX2RkcF93cml0ZV9tYXNrKGNtZHFf cGt0LCBSRUdfRkxEX1ZBTChGTERfQUZCQ19FTiwgMCksIGNtZHFfYmFzZSwNCj4gKwkJCQkgICBi YXNlLCBNRFBfUkRNQV9DT01QX0NPTiwgUkVHX0ZMRF9NQVNLKEZMRF9BRkJDX0VOKSk7DQo+ICsJ fQ0KPiArDQo+ICsJbXRrX2RkcF93cml0ZV9tYXNrKGNtZHFfcGt0LCBSRUdfRkxEX1ZBTChGTERf T1VUUFVUXzEwQiwgMSksIGNtZHFfYmFzZSwNCj4gKwkJCSAgIGJhc2UsIE1EUF9SRE1BX0NPTiwg UkVHX0ZMRF9NQVNLKEZMRF9PVVRQVVRfMTBCKSk7DQo+ICsJbXRrX2RkcF93cml0ZV9tYXNrKGNt ZHFfcGt0LCBSRUdfRkxEX1ZBTChGTERfU0lNUExFX01PREUsIDEpLCBjbWRxX2Jhc2UsDQo+ICsJ CQkgICBiYXNlLCBNRFBfUkRNQV9DT04sIFJFR19GTERfTUFTSyhGTERfU0lNUExFX01PREUpKTsN Cj4gKwltdGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3QsIFJFR19GTERfVkFMKEZMRF9UUkFOU19F TiwgY2ZnLT5jc2NfZW5hYmxlKSwNCj4gKwkJCSAgIGNtZHFfYmFzZSwgYmFzZSwgTURQX1JETUFf VFJBTlNGT1JNXzAsDQo+ICsJCQkgICBSRUdfRkxEX01BU0soRkxEX1RSQU5TX0VOKSk7DQo+ICsJ bXRrX2RkcF93cml0ZV9tYXNrKGNtZHFfcGt0LCBSRUdfRkxEX1ZBTChGTERfSU5UX01BVFJJWF9T RUwsIGNmZy0+cHJvZmlsZSksDQo+ICsJCQkgICBjbWRxX2Jhc2UsIGJhc2UsIE1EUF9SRE1BX1RS QU5TRk9STV8wLA0KPiArCQkJICAgUkVHX0ZMRF9NQVNLKEZMRF9JTlRfTUFUUklYX1NFTCkpOw0K PiArDQo+ICsJaWYgKGNmZy0+YmxvY2tfc2l6ZSA9PSBSRE1BX0JMT0NLX05PTkUpIHsNCj4gKwkJ eV9zdGFydF9saW5lID0gY2ZnLT55X3RvcDsNCj4gKw0KPiArCQlvZmZzZXRfeSAgPSAoY2ZnLT54 X2xlZnQgKiBicHBfeSA+PiAzKSArIHlfc3RhcnRfbGluZSAqIHNyY19waXRjaF95Ow0KPiArCQlv ZmZzZXRfdSAgPSAoKGNmZy0+eF9sZWZ0ID4+IGhfc2hpZnRfdXYpICogYnBwX3V2ID4+IDMpICsN Cj4gKwkJCSAgICAoeV9zdGFydF9saW5lID4+IHZfc2hpZnRfdXYpICogc3JjX3BpdGNoX3V2Ow0K PiArCQlvZmZzZXRfdiAgPSAoKGNmZy0+eF9sZWZ0ID4+IGhfc2hpZnRfdXYpICogYnBwX3V2ID4+ IDMpICsNCj4gKwkJCSAgICAoeV9zdGFydF9saW5lID4+IHZfc2hpZnRfdXYpICogc3JjX3BpdGNo X3V2Ow0KPiArCX0gZWxzZSB7DQoNCk5ldmVyIGJlIGhlcmUsIHNvIHJlbW92ZS4NCg0KPiArCQlv ZmZzZXRfeSA9IChjZmctPnhfbGVmdCAqIGJsb2NrX2ggKiBicHBfeSA+PiAzKSArDQo+ICsJCQkg ICAoY2ZnLT55X3RvcCkgKiBzcmNfcGl0Y2hfeTsNCj4gKwkJb2Zmc2V0X3UgPSAoKGNmZy0+eF9s ZWZ0ID4+IGhfc2hpZnRfdXYpICogKGJsb2NrX2ggPj4gdl9zaGlmdF91dikgKg0KPiArCQkJICAg YnBwX3V2ID4+IDMpICsgKGNmZy0+eV90b3ApICogc3JjX3BpdGNoX3V2Ow0KPiArCQlvZmZzZXRf diA9ICgoY2ZnLT54X2xlZnQgPj4gaF9zaGlmdF91dikgKiAoYmxvY2tfaCA+PiB2X3NoaWZ0X3V2 KSAqDQo+ICsJCQkgICBicHBfdXYgPj4gMykgKyAoY2ZnLT55X3RvcCkgKiBzcmNfcGl0Y2hfdXY7 DQo+ICsJfQ0KPiArDQo+ICsJaWYgKGNmZy0+ZW5jb2RlX3R5cGUgPT0gUkRNQV9FTkNPREVfQUZC Qykgew0KDQpOZXZlciBiZSBoZXJlLCBzbyByZW1vdmUuDQoNCj4gKwkJbXRrX2RkcF93cml0ZV9t YXNrKGNtZHFfcGt0LCBSRUdfRkxEX1ZBTChGTERfU1JDX09GRlNFVF9XUCwgY2ZnLT54X2xlZnQp LA0KPiArCQkJCSAgIGNtZHFfYmFzZSwgYmFzZSwgTURQX1JETUFfU1JDX09GRlNFVF9XUCwNCj4g KwkJCQkgICBSRUdfRkxEX01BU0soRkxEX1NSQ19PRkZTRVRfV1ApKTsNCj4gKw0KPiArCQltdGtf ZGRwX3dyaXRlX21hc2soY21kcV9wa3QsIFJFR19GTERfVkFMKEZMRF9TUkNfT0ZGU0VUX0hQLCBj ZmctPnlfdG9wKSwNCj4gKwkJCQkgICBjbWRxX2Jhc2UsIGJhc2UsIE1EUF9SRE1BX1NSQ19PRkZT RVRfSFAsDQo+ICsJCQkJICAgUkVHX0ZMRF9NQVNLKEZMRF9TUkNfT0ZGU0VUX0hQKSk7DQo+ICsJ fQ0KPiArDQo+ICsJbXRrX2RkcF93cml0ZV9tYXNrKGNtZHFfcGt0LCBSRUdfRkxEX1ZBTChGTERf U1JDX09GRlNFVF8wLCBvZmZzZXRfeSksDQo+ICsJCQkgICBjbWRxX2Jhc2UsIGJhc2UsIE1EUF9S RE1BX1NSQ19PRkZTRVRfMCwNCj4gKwkJCSAgIFJFR19GTERfTUFTSyhGTERfU1JDX09GRlNFVF8w KSk7DQoNCm10a19kZHBfd3JpdGUoY21kcV9wa3QsIG9mZnNldF95LCBjbWRxX2Jhc2UsIGJhc2Us IE1EUF9SRE1BX1NSQ19PRkZTRVRfMCk7DQoNCj4gKwltdGtfZGRwX3dyaXRlX21hc2soY21kcV9w a3QsIFJFR19GTERfVkFMKEZMRF9TUkNfT0ZGU0VUXzEsIG9mZnNldF91KSwNCj4gKwkJCSAgIGNt ZHFfYmFzZSwgYmFzZSwgTURQX1JETUFfU1JDX09GRlNFVF8xLA0KPiArCQkJICAgUkVHX0ZMRF9N QVNLKEZMRF9TUkNfT0ZGU0VUXzEpKTsNCj4gKwltdGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3Qs IFJFR19GTERfVkFMKEZMRF9TUkNfT0ZGU0VUXzIsIG9mZnNldF92KSwNCj4gKwkJCSAgIGNtZHFf YmFzZSwgYmFzZSwgTURQX1JETUFfU1JDX09GRlNFVF8yLA0KPiArCQkJICAgUkVHX0ZMRF9NQVNL KEZMRF9TUkNfT0ZGU0VUXzIpKTsNCj4gKwltdGtfZGRwX3dyaXRlX21hc2soY21kcV9wa3QsIFJF R19GTERfVkFMKEZMRF9NRl9TUkNfVywgY2ZnLT53aWR0aCksDQo+ICsJCQkgICBjbWRxX2Jhc2Us IGJhc2UsIE1EUF9SRE1BX01GX1NSQ19TSVpFLA0KPiArCQkJICAgUkVHX0ZMRF9NQVNLKEZMRF9N Rl9TUkNfVykpOw0KPiArCW10a19kZHBfd3JpdGVfbWFzayhjbWRxX3BrdCwgUkVHX0ZMRF9WQUwo RkxEX01GX1NSQ19ILCBjZmctPmhlaWdodCksDQo+ICsJCQkgICBjbWRxX2Jhc2UsIGJhc2UsIE1E UF9SRE1BX01GX1NSQ19TSVpFLA0KPiArCQkJICAgUkVHX0ZMRF9NQVNLKEZMRF9NRl9TUkNfSCkp Ow0KPiArCW10a19kZHBfd3JpdGVfbWFzayhjbWRxX3BrdCwgUkVHX0ZMRF9WQUwoRkxEX01GX0NM SVBfVywgY2ZnLT53aWR0aCksDQo+ICsJCQkgICBjbWRxX2Jhc2UsIGJhc2UsIE1EUF9SRE1BX01G X0NMSVBfU0laRSwNCj4gKwkJCSAgIFJFR19GTERfTUFTSyhGTERfTUZfQ0xJUF9XKSk7DQo+ICsJ bXRrX2RkcF93cml0ZV9tYXNrKGNtZHFfcGt0LCBSRUdfRkxEX1ZBTChGTERfTUZfQ0xJUF9ILCBj ZmctPmhlaWdodCksDQo+ICsJCQkgICBjbWRxX2Jhc2UsIGJhc2UsIE1EUF9SRE1BX01GX0NMSVBf U0laRSwNCj4gKwkJCSAgIFJFR19GTERfTUFTSyhGTERfTUZfQ0xJUF9IKSk7DQo+ICsJbXRrX2Rk cF93cml0ZV9tYXNrKGNtZHFfcGt0LCBSRUdfRkxEX1ZBTChGTERfTUZfT0ZGU0VUX1dfMSwgMCks DQo+ICsJCQkgICBjbWRxX2Jhc2UsIGJhc2UsIE1EUF9SRE1BX01GX09GRlNFVF8xLA0KPiArCQkJ ICAgUkVHX0ZMRF9NQVNLKEZMRF9NRl9PRkZTRVRfV18xKSk7DQo+ICsJbXRrX2RkcF93cml0ZV9t YXNrKGNtZHFfcGt0LCBSRUdfRkxEX1ZBTChGTERfTUZfT0ZGU0VUX0hfMSwgMCksDQo+ICsJCQkg ICBjbWRxX2Jhc2UsIGJhc2UsIE1EUF9SRE1BX01GX09GRlNFVF8xLA0KPiArCQkJICAgUkVHX0ZM RF9NQVNLKEZMRF9NRl9PRkZTRVRfSF8xKSk7DQo+ICsJbXRrX2RkcF93cml0ZV9tYXNrKGNtZHFf cGt0LCBSRUdfRkxEX1ZBTChGTERfTElORV9USFJFU0hPTEQsIGNmZy0+aGVpZ2h0KSwNCj4gKwkJ CSAgIGNtZHFfYmFzZSwgYmFzZSwgTURQX1JETUFfVEFSR0VUX0xJTkUsDQo+ICsJCQkgICBSRUdf RkxEX01BU0soRkxEX0xJTkVfVEhSRVNIT0xEKSk7DQo+ICsJbXRrX2RkcF93cml0ZV9tYXNrKGNt ZHFfcGt0LCBSRUdfRkxEX1ZBTChGTERfVEFSR0VUX0xJTkVfRU4sIDEpLA0KPiArCQkJICAgY21k cV9iYXNlLCBiYXNlLCBNRFBfUkRNQV9UQVJHRVRfTElORSwNCj4gKwkJCSAgIFJFR19GTERfTUFT SyhGTERfVEFSR0VUX0xJTkVfRU4pKTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfbWRwX3JkbWEuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfbWRwX3JkbWEuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAw MDAuLmMxNmJmYjcxNjYxMA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfbWRwX3JkbWEuaA0KPiBAQCAtMCwwICsxLDEwOSBAQA0KPiArLyogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLw0KPiArLyoNCj4gKyAqIENvcHly aWdodCAoYykgMjAyMSBNZWRpYVRlayBJbmMuDQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfX01U S19NRFBfUkRNQV9IX18NCj4gKyNkZWZpbmUgX19NVEtfTURQX1JETUFfSF9fDQo+ICsNCj4gK2Vu dW0gcmRtYV9mb3JtYXQgew0KPiArCVJETUFfSU5QVVRfRk9STUFUX1JHQjU2NSA9IDAsDQo+ICsJ UkRNQV9JTlBVVF9GT1JNQVRfUkdCODg4ID0gMSwNCj4gKwlSRE1BX0lOUFVUX0ZPUk1BVF9SR0JB ODg4OCA9IDIsDQo+ICsJUkRNQV9JTlBVVF9GT1JNQVRfQVJHQjg4ODggPSAzLA0KPiArCVJETUFf SU5QVVRfRk9STUFUX1VZVlkgPSA0LA0KPiArCVJETUFfSU5QVVRfRk9STUFUX1lVWTIgPSA1LA0K PiArCVJETUFfSU5QVVRfRk9STUFUX1k4ID0gNywNCj4gKwlSRE1BX0lOUFVUX0ZPUk1BVF9ZVjEy ID0gOCwNCj4gKwlSRE1BX0lOUFVUX0ZPUk1BVF9VWVZZXzNQTCA9IDksDQo+ICsJUkRNQV9JTlBV VF9GT1JNQVRfTlYxMiA9IDEyLA0KPiArCVJETUFfSU5QVVRfRk9STUFUX1VZVllfMlBMID0gMTMs DQo+ICsJUkRNQV9JTlBVVF9GT1JNQVRfWTQxMCA9IDE0DQo+ICt9Ow0KPiArDQo+ICtlbnVtIHJk bWFfcHJvZmlsZSB7DQo+ICsJUkRNQV9DU0NfUkdCX1RPX0pQRUcgPSAwLA0KPiArCVJETUFfQ1ND X1JHQl9UT19GVUxMNzA5ID0gMSwNCj4gKwlSRE1BX0NTQ19SR0JfVE9fQlQ2MDEgPSAyLA0KPiAr CVJETUFfQ1NDX1JHQl9UT19CVDcwOSA9IDMsDQo+ICsJUkRNQV9DU0NfSlBFR19UT19SR0IgPSA0 LA0KPiArCVJETUFfQ1NDX0ZVTEw3MDlfVE9fUkdCID0gNSwNCj4gKwlSRE1BX0NTQ19CVDYwMV9U T19SR0IgPSA2LA0KPiArCVJETUFfQ1NDX0JUNzA5X1RPX1JHQiA9IDcsDQo+ICsJUkRNQV9DU0Nf SlBFR19UT19CVDYwMSA9IDgsDQo+ICsJUkRNQV9DU0NfSlBFR19UT19CVDcwOSA9IDksDQo+ICsJ UkRNQV9DU0NfQlQ2MDFfVE9fSlBFRyA9IDEwLA0KPiArCVJETUFfQ1NDX0JUNzA5X1RPX0JUNjAx ID0gMTEsDQo+ICsJUkRNQV9DU0NfQlQ2MDFfVE9fQlQ3MDkgPSAxMg0KPiArfTsNCj4gKw0KPiAr ZW51bSByZG1hX2VuY29kZSB7DQo+ICsJUkRNQV9FTkNPREVfTk9ORSA9IDAsDQo+ICsJUkRNQV9F TkNPREVfQUZCQyA9IDEsDQo+ICsJUkRNQV9FTkNPREVfSFlGQkMgPSAyLA0KPiArCVJETUFfRU5D T0RFX1VGT19EQ1AgPSAzDQo+ICt9Ow0KPiArDQo+ICtlbnVtIHJkbWFfYmxvY2sgew0KPiArCVJE TUFfQkxPQ0tfTk9ORSA9IDAsDQo+ICsJUkRNQV9CTE9DS184eDggPSAxLA0KPiArCVJETUFfQkxP Q0tfOHgxNiA9IDIsDQo+ICsJUkRNQV9CTE9DS184eDMyID0gMywNCj4gKwlSRE1BX0JMT0NLXzE2 eDggPSA0LA0KPiArCVJETUFfQkxPQ0tfMTZ4MTYgPSA1LA0KPiArCVJETUFfQkxPQ0tfMTZ4MzIg PSA2LA0KPiArCVJETUFfQkxPQ0tfMzJ4OCA9IDcsDQo+ICsJUkRNQV9CTE9DS18zMngxNiA9IDgs DQo+ICsJUkRNQV9CTE9DS18zMngzMiA9IDkNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBtdGtfbWRw X3JkbWFfY2ZnIHsNCj4gKwllbnVtIHJkbWFfZW5jb2RlIGVuY29kZV90eXBlOw0KPiArCWVudW0g cmRtYV9ibG9jayBibG9ja19zaXplOw0KPiArCWVudW0gcmRtYV9wcm9maWxlIHByb2ZpbGU7DQo+ ICsJdW5zaWduZWQgaW50IHNvdXJjZV93aWR0aDsNCj4gKwl1bnNpZ25lZCBpbnQgYWRkcjA7DQo+ ICsJdW5zaWduZWQgaW50IGFkZHIxOw0KPiArCXVuc2lnbmVkIGludCBhZGRyMjsNCj4gKwl1bnNp Z25lZCBpbnQgd2lkdGg7DQo+ICsJdW5zaWduZWQgaW50IGhlaWdodDsNCj4gKwl1bnNpZ25lZCBp bnQgeF9sZWZ0Ow0KPiArCXVuc2lnbmVkIGludCB5X3RvcDsNCj4gKwlib29sIGNzY19lbmFibGU7 DQo+ICsJaW50IGZtdDsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBtdGtfbWRwX3JkbWFfZmlmbyB7 DQo+ICsJaW50IHJlYWRfcmVxdWVzdF90eXBlOw0KPiArCWludCBjb21tYW5kX2RpdjsNCj4gKwlp bnQgZXh0X3ByZXV0cmFfZW47DQo+ICsJaW50IHVsdHJhX2VuOw0KPiArCWludCBwcmVfdWx0cmFf ZW47DQo+ICsJaW50IGV4dF91bHRyYV9lbjsNCj4gKwlpbnQgZXh0cmRfYXJiX21heF8wOw0KPiAr CWludCBidWZfcmVzdl9zaXplXzA7DQo+ICsJaW50IGlzc3VlX3JlcV90aF8wOw0KPiArCWludCB1 bHRyYV9oX2Nvbl8wOw0KPiArCWludCB1bHRyYV9sX2Nvbl8wOw0KPiArfTsNCj4gKw0KPiArdm9p ZCBtdGtfbWRwX3JkbWFfc3RhcnQodm9pZCBfX2lvbWVtICpiYXNlLA0KPiArCQkJc3RydWN0IGNt ZHFfcGt0ICpjbWRxX3BrdCwNCj4gKwkJCXN0cnVjdCBjbWRxX2NsaWVudF9yZWcgKmNtZHFfYmFz ZSk7DQo+ICsNCj4gK3ZvaWQgbXRrX21kcF9yZG1hX3N0b3Aodm9pZCBfX2lvbWVtICpiYXNlLA0K PiArCQkgICAgICAgc3RydWN0IGNtZHFfcGt0ICpjbWRxX3BrdCwNCj4gKwkJICAgICAgIHN0cnVj dCBjbWRxX2NsaWVudF9yZWcgKmNtZHFfYmFzZSk7DQo+ICsNCj4gK3ZvaWQgbXRrX21kcF9yZG1h X2ZpZm9fY29uZmlnKHZvaWQgX19pb21lbSAqYmFzZSwNCj4gKwkJCSAgICAgIHN0cnVjdCBjbWRx X3BrdCAqY21kcV9wa3QsDQo+ICsJCQkgICAgICBzdHJ1Y3QgY21kcV9jbGllbnRfcmVnICpjbWRx X2Jhc2UsDQo+ICsJCQkgICAgICBjb25zdCBzdHJ1Y3QgbXRrX21kcF9yZG1hX2ZpZm8gKmZpZm8p Ow0KPiArDQo+ICt2b2lkIG10a19tZHBfcmRtYV9jb25maWcodm9pZCBfX2lvbWVtICpiYXNlLA0K PiArCQkJIHN0cnVjdCBtdGtfbWRwX3JkbWFfY2ZnICpjZmcsDQo+ICsJCQkgc3RydWN0IGNtZHFf cGt0ICpjbWRxX3BrdCwNCj4gKwkJCSBzdHJ1Y3QgY21kcV9jbGllbnRfcmVnICpjbWRxX2Jhc2Up Ow0KPiArDQo+ICsjZW5kaWYgLy8gX19NVEtfTURQX1JETUFfSF9fDQo+ICsNCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbWRwX3JlZ19yZG1hLmggYi9kcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX21kcF9yZWdfcmRtYS5oDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMDhhYmQ5ZjM5YmQ4DQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19tZHBfcmVnX3JkbWEuaA0KPiBA QCAtMCwwICsxLDE2MCBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt b25seSAqLw0KPiArLyoNCj4gKyAqIENvcHlyaWdodCAoYykgMjAyMSBNZWRpYVRlayBJbmMuDQo+ ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfX01EUF9SRE1BX1JFR1NfSF9fDQo+ICsjZGVmaW5lIF9f TURQX1JETUFfUkVHU19IX18NCj4gKw0KPiArI2RlZmluZSBSRUdfRkxEKHdpZHRoLCBzaGlmdCkg XA0KPiArCSgodW5zaWduZWQgaW50KSgoKCh3aWR0aCkgJiAweGZmKSA8PCAxNikgfCAoKHNoaWZ0 KSAmIDB4ZmYpKSkNCj4gKw0KPiArI2RlZmluZSBSRUdfRkxEX1dJRFRIKGZpZWxkKSAoKHVuc2ln bmVkIGludCkoKChmaWVsZCkgPj4gMTYpICYgMHhmZikpDQo+ICsNCj4gKyNkZWZpbmUgUkVHX0ZM RF9TSElGVChmaWVsZCkgKCh1bnNpZ25lZCBpbnQpKChmaWVsZCkgJiAweGZmKSkNCj4gKw0KPiAr I2RlZmluZSBSRUdfRkxEX01BU0soZmllbGQpIFwNCj4gKwkoKHVuc2lnbmVkIGludCkoKDFVTEwg PDwgUkVHX0ZMRF9XSURUSChmaWVsZCkpIC0gMSkgXA0KPiArCSA8PCBSRUdfRkxEX1NISUZUKGZp ZWxkKSkNCj4gKw0KPiArI2RlZmluZSBSRUdfRkxEX1ZBTChmaWVsZCwgdmFsKSBcDQo+ICsJKCgo dmFsKSA8PCBSRUdfRkxEX1NISUZUKGZpZWxkKSkgJiBSRUdfRkxEX01BU0soZmllbGQpKQ0KPiAr DQo+ICsjZGVmaW5lIE1EUF9SRE1BX0VOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDAwMA0KPiArI2RlZmluZSBGTERfUk9UX0VOQUJMRSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSRUdfRkxEKDEsIDApDQo+ICsNCj4gKyNkZWZpbmUgTURQX1JETUFfUkVT RVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA4DQo+ICsNCj4g KyNkZWZpbmUgTURQX1JETUFfSU5URVJSVVBUX0VOQUJMRSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4MDEwDQo+ICsjZGVmaW5lIEZMRF9VTkRFUlJVTl9JTlRfRU4gICAgICAgICAgICAg ICAgICAgICAgIFJFR19GTEQoMSwgMikNCj4gKyNkZWZpbmUgRkxEX1JFR19VUERBVEVfSU5UX0VO ICAgICAgICAgICAgICAgICAgICAgUkVHX0ZMRCgxLCAxKQ0KPiArI2RlZmluZSBGTERfRlJBTUVf Q09NUExFVEVfSU5UX0VOICAgICAgICAgICAgICAgICBSRUdfRkxEKDEsIDApDQo+ICsNCj4gKyNk ZWZpbmUgTURQX1JETUFfSU5URVJSVVBUX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MDE4DQo+ICsNCj4gKyNkZWZpbmUgTURQX1JETUFfQ09OICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwDQo+ICsjZGVmaW5lIEZMRF9PVVRQVVRfMTBC ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFR19GTEQoMSwgNSkNCj4gKyNkZWZpbmUgRkxE X1NJTVBMRV9NT0RFICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVHX0ZMRCgxLCA0KQ0KPiAr DQo+ICsjZGVmaW5lIE1EUF9SRE1BX0dNQ0lGX0NPTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDAyOA0KPiArI2RlZmluZSBGTERfRVhUX1VMVFJBX0VOICAgICAgICAgICAg ICAgICAgICAgICAgICBSRUdfRkxEKDEsIDE4KQ0KPiArI2RlZmluZSBQUkVfVUxUUkFfRU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBSRUdfRkxEKDIsIDE2KQ0KPiArI2RlZmluZSBGTERf VUxUUkFfRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUdfRkxEKDIsIDEyKQ0KPiAr I2RlZmluZSBGTERfUkRfUkVRX1RZUEUgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUdfRkxE KDQsIDQpDQo+ICsjZGVmaW5lIEZMRF9FWFRfUFJFVUxUUkFfRU4gICAgICAgICAgICAgICAgICAg ICAgIFJFR19GTEQoMSwgMykNCj4gKyNkZWZpbmUgRkxEX0NPTU1BTkRfRElWICAgICAgICAgICAg ICAgICAgICAgICAgICAgUkVHX0ZMRCgxLCAwKQ0KPiArDQo+ICsjZGVmaW5lIE1EUF9SRE1BX1NS Q19DT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAzMA0KPiArI2Rl ZmluZSBGTERfT1VUUFVUX0FSR0IgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUdfRkxEKDEs IDI1KQ0KPiArI2RlZmluZSBGTERfQklUX05VTUJFUiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSRUdfRkxEKDIsIDE4KQ0KPiArI2RlZmluZSBGTERfVU5JRk9STV9DT05GSUcgICAgICAgICAg ICAgICAgICAgICAgICBSRUdfRkxEKDEsIDE3KQ0KPiArI2RlZmluZSBGTERfU1dBUCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBSRUdfRkxEKDEsIDE0KQ0KPiArI2RlZmluZSBGTERf U1JDX0ZPUk1BVCAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUdfRkxEKDQsIDApDQo+ICsN Cj4gKyNkZWZpbmUgTURQX1JETUFfQ09NUF9DT04gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDM4DQo+ICsjZGVmaW5lIEZMRF9BRkJDX0VOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFJFR19GTEQoMSwgMjIpDQo+ICsjZGVmaW5lIEZMRF9BRkJDX1lVVl9UUkFO U0ZPUk0gICAgICAgICAgICAgICAgICAgIFJFR19GTEQoMSwgMjEpDQo+ICsjZGVmaW5lIEZMRF9V RkJEQ19FTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFR19GTEQoMSwgMTIpDQo+ICsN Cj4gKyNkZWZpbmUgTURQX1JETUFfTUZfQktHRF9TSVpFX0lOX0JZVEUgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDYwDQo+ICsjZGVmaW5lIEZMRF9NRl9CS0dEX1dCICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFJFR19GTEQoMjMsIDApDQo+ICsNCj4gKyNkZWZpbmUgTURQX1JETUFfTUZf QktHRF9TSVpFX0lOX1BJWEVMICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDY4DQo+ICsjZGVm aW5lIEZMRF9NRl9CS0dEX1dQICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFR19GTEQoMjMs IDApDQo+ICsNCj4gKyNkZWZpbmUgTURQX1JETUFfTUZfU1JDX1NJWkUgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDcwDQo+ICsjZGVmaW5lIEZMRF9NRl9TUkNfSCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJFR19GTEQoMTUsIDE2KQ0KPiArI2RlZmluZSBGTERfTUZf U1JDX1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUdfRkxEKDE1LCAwKQ0KPiArDQo+ ICsjZGVmaW5lIE1EUF9SRE1BX01GX0NMSVBfU0laRSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDA3OA0KPiArI2RlZmluZSBGTERfTUZfQ0xJUF9IICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBSRUdfRkxEKDE1LCAxNikNCj4gKyNkZWZpbmUgRkxEX01GX0NMSVBfVyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUkVHX0ZMRCgxNSwgMCkNCj4gKw0KPiArI2RlZmluZSBN RFBfUkRNQV9NRl9PRkZTRVRfMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw ODANCj4gKyNkZWZpbmUgRkxEX01GX09GRlNFVF9IXzEgICAgICAgICAgICAgICAgICAgICAgICAg UkVHX0ZMRCg2LCAxNikNCj4gKyNkZWZpbmUgRkxEX01GX09GRlNFVF9XXzEgICAgICAgICAgICAg ICAgICAgICAgICAgUkVHX0ZMRCg1LCAwKQ0KPiArDQo+ICsjZGVmaW5lIE1EUF9SRE1BX1NGX0JL R0RfU0laRV9JTl9CWVRFICAgICAgICAgICAgICAgICAgICAgICAgICAweDA5MA0KPiArI2RlZmlu ZSBGTERfU0ZfQktHRF9XQiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUdfRkxEKDIzLCAw KQ0KPiArDQo+ICsjZGVmaW5lIE1EUF9SRE1BX01GX0JLR0RfSF9TSVpFX0lOX1BJWEVMICAgICAg ICAgICAgICAgICAgICAgICAweDA5OA0KPiArI2RlZmluZSBGTERfQktHRF9IUCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSRUdfRkxEKDIzLCAwKQ0KPiArDQo+ICsjZGVmaW5lIE1EUF9S RE1BX1RBUkdFVF9MSU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBhMA0K PiArI2RlZmluZSBGTERfTElORV9USFJFU0hPTEQgICAgICAgICAgICAgICAgICAgICAgICBSRUdf RkxEKDE1LCAxNykNCj4gKyNkZWZpbmUgRkxEX1RBUkdFVF9MSU5FX0VOICAgICAgICAgICAgICAg ICAgICAgICAgUkVHX0ZMRCgxLCAxNikNCj4gKw0KPiArI2RlZmluZSBNRFBfUkRNQV9TUkNfT0ZG U0VUXzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMTgNCj4gKyNkZWZpbmUg RkxEX1NSQ19PRkZTRVRfMCAgICAgICAgICAgICAgICAgICAgICAgICAgUkVHX0ZMRCgzMiwgMCkN Cj4gKw0KPiArI2RlZmluZSBNRFBfUkRNQV9TUkNfT0ZGU0VUXzEgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHgxMjANCj4gKyNkZWZpbmUgRkxEX1NSQ19PRkZTRVRfMSAgICAgICAg ICAgICAgICAgICAgICAgICAgUkVHX0ZMRCgzMiwgMCkNCj4gKw0KPiArI2RlZmluZSBNRFBfUkRN QV9TUkNfT0ZGU0VUXzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMjgNCj4g KyNkZWZpbmUgRkxEX1NSQ19PRkZTRVRfMiAgICAgICAgICAgICAgICAgICAgICAgICAgUkVHX0ZM RCgzMiwgMCkNCj4gKw0KPiArI2RlZmluZSBNRFBfUkRNQV9TUkNfT0ZGU0VUX1dQICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgxNDgNCj4gKyNkZWZpbmUgRkxEX1NSQ19PRkZTRVRf V1AgICAgICAgICAgICAgICAgICAgICAgICAgUkVHX0ZMRCgzMiwgMCkNCj4gKw0KPiArI2RlZmlu ZSBNRFBfUkRNQV9TUkNfT0ZGU0VUX0hQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MHgxNTANCj4gKyNkZWZpbmUgRkxEX1NSQ19PRkZTRVRfSFAgICAgICAgICAgICAgICAgICAgICAg ICAgUkVHX0ZMRCgzMiwgMCkNCj4gKw0KPiArI2RlZmluZSBNRFBfUkRNQV9UUkFOU0ZPUk1fMCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMDANCj4gKyNkZWZpbmUgRkxEX0lO VF9NQVRSSVhfU0VMICAgICAgICAgICAgICAgICAgICAgICAgUkVHX0ZMRCg1LCAyMykNCj4gKyNk ZWZpbmUgRkxEX1RSQU5TX0VOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVHX0ZMRCgx LCAxNikNCj4gKw0KPiArI2RlZmluZSBNRFBfUkRNQV9ETUFfQ09OXzAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgyNDANCj4gKyNkZWZpbmUgRkxEX0VYVFJEX0FSQl9NQVgg ICAgICAgICAgICAgICAgICAgICAgICAgUkVHX0ZMRCg0LCAyNCkNCj4gKyNkZWZpbmUgRkxEX0JV Rl9SRVNWX1NJWkUgICAgICAgICAgICAgICAgICAgICAgICAgUkVHX0ZMRCg4LCAxNikNCj4gKyNk ZWZpbmUgRkxEX0lTU1VFX1JFUV9USCAgICAgICAgICAgICAgICAgICAgICAgICAgUkVHX0ZMRCg4 LCAwKQ0KPiArDQo+ICsjZGVmaW5lIE1EUF9SRE1BX1VUUkFfSF9DT05fMCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDI0OA0KPiArI2RlZmluZSBGTERfUFJFVVRSQV9IX09GU18w ICAgICAgICAgICAgICAgICAgICAgICBSRUdfRkxEKDEwLCAxMCkNCj4gKw0KPiArI2RlZmluZSBN RFBfUkRNQV9VVFJBX0xfQ09OXzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgy NTANCj4gKyNkZWZpbmUgRkxEX1BSRVVUUkFfTF9PRlNfMCAgICAgICAgICAgICAgICAgICAgICAg UkVHX0ZMRCgxMCwgMTApDQo+ICsNCj4gKyNkZWZpbmUgTURQX1JETUFfRE1BQlVGX0NPTl8xICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjU4DQo+ICsjZGVmaW5lIEZMRF9FWFRS RF9BUkJfTUFYXzEgICAgICAgICAgICAgICAgICAgICAgIFJFR19GTEQoNCwgMjQpDQo+ICsjZGVm aW5lIEZMRF9CVUZfUkVTVl9TSVpFXzEgICAgICAgICAgICAgICAgICAgICAgIFJFR19GTEQoNywg MTYpDQo+ICsjZGVmaW5lIEZMRF9JU1NVRV9SRVFfVEhfMSAgICAgICAgICAgICAgICAgICAgICAg IFJFR19GTEQoNywgMCkNCj4gKw0KPiArI2RlZmluZSBNRFBfUkRNQV9VTFRSQV9USF9ISUdIX0NP Tl8xICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNjANCj4gKyNkZWZpbmUgRkxEX1BSRV9V TFRSQV9USF9ISUdIX09GU18xICAgICAgICAgICAgICAgUkVHX0ZMRCgxMCwgMTApDQo+ICsNCj4g KyNkZWZpbmUgTURQX1JETUFfVUxUUkFfVEhfTE9XX0NPTl8xICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4MjY4DQo+ICsjZGVmaW5lIEZMRF9QUkVfVUxUUkFfVEhfTE9XX09GU18xICAgICAg ICAgICAgICAgIFJFR19GTEQoMTAsIDEwKQ0KPiArDQo+ICsjZGVmaW5lIE1EUF9SRE1BX0RNQUJV Rl9DT05fMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3MA0KPiArI2RlZmlu ZSBGTERfRVhUUkRfQVJCX01BWF8yICAgICAgICAgICAgICAgICAgICAgICBSRUdfRkxEKDQsIDI0 KQ0KPiArI2RlZmluZSBGTERfQlVGX1JFU1ZfU0laRV8yICAgICAgICAgICAgICAgICAgICAgICBS RUdfRkxEKDYsIDE2KQ0KPiArI2RlZmluZSBGTERfSVNTVUVfUkVRX1RIXzIgICAgICAgICAgICAg ICAgICAgICAgICBSRUdfRkxEKDYsIDApDQo+ICsNCj4gKyNkZWZpbmUgTURQX1JETUFfVVRSQV9I X0NPTl8yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Mjc4DQo+ICsjZGVmaW5l IEZMRF9QUkVfVUxUUkFfVEhfSElHSF9PRlNfMiAgICAgICAgICAgICAgIFJFR19GTEQoMTAsIDEw KQ0KPiArDQo+ICsjZGVmaW5lIE1EUF9SRE1BX1VMVFJBX1RIX0xPV19DT05fMiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAweDI4MA0KPiArI2RlZmluZSBGTERfUFJFX1VMVFJBX1RIX0xPV19P RlNfMiAgICAgICAgICAgICAgICBSRUdfRkxEKDEwLCAxMCkNCj4gKw0KPiArI2RlZmluZSBNRFBf UkRNQV9ETUFCVUZfQ09OXzMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyODgN Cj4gKyNkZWZpbmUgRkxEX0VYVFJEX0FSQl9NQVhfMyAgICAgICAgICAgICAgICAgICAgICAgUkVH X0ZMRCg0LCAyNCkNCj4gKyNkZWZpbmUgRkxEX0JVRl9SRVNWX1NJWkVfMyAgICAgICAgICAgICAg ICAgICAgICAgUkVHX0ZMRCg2LCAxNikNCj4gKyNkZWZpbmUgRkxEX0lTU1VFX1JFUV9USF8zICAg ICAgICAgICAgICAgICAgICAgICAgUkVHX0ZMRCg2LCAwKQ0KPiArDQo+ICsjZGVmaW5lIE1EUF9S RE1BX1VUUkFfSF9DT05fMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI5MA0K PiArI2RlZmluZSBGTERfUFJFX1VMVFJBX1RIX0hJR0hfT0ZTXzMgICAgICAgICAgICAgICBSRUdf RkxEKDEwLCAxMCkNCj4gKw0KPiArI2RlZmluZSBNRFBfUkRNQV9VTFRSQV9USF9MT1dfQ09OXzMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOTgNCj4gKyNkZWZpbmUgRkxEX1BSRV9VTFRS QV9USF9MT1dfT0ZTXzMgICAgICAgICAgICAgICAgUkVHX0ZMRCgxMCwgMTApDQo+ICsNCj4gKyNk ZWZpbmUgTURQX1JETUFfU1JDX0JBU0VfMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4ZjAwDQo+ICsjZGVmaW5lIEZMRF9TUkNfQkFTRV8wICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFJFR19GTEQoMzIsIDApDQo+ICsNCj4gKyNkZWZpbmUgTURQX1JETUFfU1JDX0JBU0Vf MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjA4DQo+ICsjZGVmaW5lIEZM RF9TUkNfQkFTRV8xICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFR19GTEQoMzIsIDApDQo+ ICsNCj4gKyNkZWZpbmUgTURQX1JETUFfU1JDX0JBU0VfMiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4ZjEwDQo+ICsjZGVmaW5lIEZMRF9TUkNfQkFTRV8yICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJFR19GTEQoMzIsIDApDQo+ICsNCj4gKyNlbmRpZiAvKiBfX01EUF9S RE1BX1JFR1NfSF9fICovDQo+ICsNCg0KDQo=