From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 632D719D8A8; Thu, 18 Dec 2025 07:49:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=211.75.126.72 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766044176; cv=none; b=lkT1XyVRVDyPRE9+WSxumln8O90iudkQPgEpbYPRrEZ1m0mrglFq678zwLTWhAZiFsPUadcxjSfTldsQxTQ/GsuWpaU+bHbYHZ3vxtXR74IZk1YBF8s64KO0PJNwVp2R6TIng1h0NBYTKhErIisROW5bacMr+2CvdtjcUnpHjHA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766044176; c=relaxed/simple; bh=gmwWB0qyjuHKh5Ylr53FsAnBnQ5pfeyKer3rVLpCZAM=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=eiR2izlRVZajhz9eSEKRC6QvWVTMH+pEXBwa/4mkalLFOwGaet8vVQjhZFczpQ7JbuKrPYSqlHjTxV+fSL+PbxiR/lfLSb+RauF5tzD8sdz18sEHMLpL/hK/HxCpxlixGllpL4SyeffI34yU7GUqTR8Ha2awpH6LxYRuv/RkPS8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=realtek.com; spf=pass smtp.mailfrom=realtek.com; dkim=fail (2048-bit key) header.d=realtek.com header.i=@realtek.com header.b=Ib3LKbCO reason="signature verification failed"; arc=none smtp.client-ip=211.75.126.72 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=realtek.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=realtek.com Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=realtek.com header.i=@realtek.com header.b="Ib3LKbCO" X-SpamFilter-By: ArmorX SpamTrap 5.80 with qID 5BI7mUBX13448555, This message is accepted by code: ctloc85258 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=realtek.com; s=dkim; t=1766044110; bh=gmwWB0qyjuHKh5Ylr53FsAnBnQ5pfeyKer3rVLpCZAM=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:Content-Transfer-Encoding:MIME-Version; b=Ib3LKbCOegByyAYyce7EJnz8s8UhCOZ5Q26JxmbaRWtCqfxsTsrxmUXhcuK853y/S JjxsQ/DPs68OwZ2URJh0fH8loFh+uLIuMIHfaMCiPYtjkiifUAAg8t94uvgs8bT49q WXVwVkUtEAH4BMX/z8/zv2x6D9bTAPUh+SJmboyWiKr5xxkYSak8fMRuY9T2Zn0XuD 2ndWAEu3IU6oQEojXAuoblFpnOCzyBA2v0O/lVxgLLxeMSdyacPIiGxHpXBQ/b6QOL Sqa1shDJCzMPeWJjHW//ctp8X8OmmBlRmXyewOx4gXB1vg6R4vtkI7sqDsV+3miMp9 /773caGF2ycLg== Received: from mail.realtek.com (rtkexhmbs02.realtek.com.tw[172.21.6.41]) by rtits2.realtek.com.tw (8.15.2/3.21/5.94) with ESMTPS id 5BI7mUBX13448555 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 18 Dec 2025 15:48:30 +0800 Received: from RTKEXHMBS06.realtek.com.tw (10.21.1.56) by RTKEXHMBS02.realtek.com.tw (172.21.6.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.10; Thu, 18 Dec 2025 15:48:30 +0800 Received: from RTKEXHMBS06.realtek.com.tw ([fe80::4cbd:6c6c:b92b:3913]) by RTKEXHMBS06.realtek.com.tw ([fe80::4cbd:6c6c:b92b:3913%10]) with mapi id 15.02.1748.010; Thu, 18 Dec 2025 15:48:30 +0800 From: Oder Chiou To: "'Cezary Rojewski'" CC: "linux-spi@vger.kernel.org" , "perex@perex.cz" , "linux-sound@vger.kernel.org" , "devicetree@vger.kernel.org" , "alsa-devel@alsa-project.org" , "Flove(HsinFu)" , =?big5?B?U2h1bWluZyBbrVOu0bvKXQ==?= , Jack Yu , =?big5?B?RGVyZWsgW6TovHe4cV0=?= , "broonie@kernel.org" , "lgirdwood@gmail.com" , "robh@kernel.org" , "krzk+dt@kernel.org" , "conor+dt@kernel.org" Subject: RE: [PATCH v10 3/3] ASoC: rt5575: Add the codec driver for the ALC5575 Thread-Topic: [PATCH v10 3/3] ASoC: rt5575: Add the codec driver for the ALC5575 Thread-Index: AQHcblwHWVxRFhnSPEiZ0NJVbZI9S7UlIc4AgAGq36A= Date: Thu, 18 Dec 2025 07:48:29 +0000 Message-ID: <39d3d2e44d13470698b6769c9185413e@realtek.com> References: <20251216071853.3929135-1-oder_chiou@realtek.com> <20251216071853.3929135-4-oder_chiou@realtek.com> <81510775-c277-4dfc-bbe1-d3b75debc140@intel.com> In-Reply-To: <81510775-c277-4dfc-bbe1-d3b75debc140@intel.com> Accept-Language: zh-TW, en-US Content-Language: zh-TW Content-Type: text/plain; charset="big5" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBDZXphcnkgUm9qZXdza2kgPGNl emFyeS5yb2pld3NraUBpbnRlbC5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgRGVjZW1iZXIgMTcs IDIwMjUgNjo0NiBQTQ0KPiBUbzogT2RlciBDaGlvdSA8b2Rlcl9jaGlvdUByZWFsdGVrLmNvbT4N Cj4gQ2M6IGxpbnV4LXNwaUB2Z2VyLmtlcm5lbC5vcmc7IHBlcmV4QHBlcmV4LmN6OyBsaW51eC1z b3VuZEB2Z2VyLmtlcm5lbC5vcmc7DQo+IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOyBhbHNh LWRldmVsQGFsc2EtcHJvamVjdC5vcmc7IEZsb3ZlKEhzaW5GdSkNCj4gPGZsb3ZlQHJlYWx0ZWsu Y29tPjsgU2h1bWluZyBbrVOu0bvKXSA8c2h1bWluZ2ZAcmVhbHRlay5jb20+OyBKYWNrIFl1DQo+ IDxqYWNrLnl1QHJlYWx0ZWsuY29tPjsgRGVyZWsgW6TovHe4cV0gPGRlcmVrLmZhbmdAcmVhbHRl ay5jb20+Ow0KPiBicm9vbmllQGtlcm5lbC5vcmc7IGxnaXJkd29vZEBnbWFpbC5jb207IHJvYmhA a2VybmVsLm9yZzsNCj4ga3J6aytkdEBrZXJuZWwub3JnOyBjb25vcitkdEBrZXJuZWwub3JnDQo+ IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjEwIDMvM10gQVNvQzogcnQ1NTc1OiBBZGQgdGhlIGNvZGVj IGRyaXZlciBmb3IgdGhlDQo+IEFMQzU1NzUNCj4gDQo+IA0KPiBFeHRlcm5hbCBtYWlsIDogVGhp cyBlbWFpbCBvcmlnaW5hdGVkIGZyb20gb3V0c2lkZSB0aGUgb3JnYW5pemF0aW9uLiBEbyBub3QN Cj4gcmVwbHksIGNsaWNrIGxpbmtzLCBvciBvcGVuIGF0dGFjaG1lbnRzIHVubGVzcyB5b3UgcmVj b2duaXplIHRoZSBzZW5kZXIgYW5kDQo+IGtub3cgdGhlIGNvbnRlbnQgaXMgc2FmZS4NCj4gDQo+ IA0KPiANCj4gT24gMjAyNS0xMi0xNiA4OjE4IEFNLCBPZGVyIENoaW91IHdyb3RlOg0KPiA+IFRo ZSBBTEM1NTc1IGludGVncmF0ZXMgYW4gYXVkaW8gRFNQIHRoYXQgdHlwaWNhbGx5IGxvYWRzIGl0 cyBmaXJtd2FyZQ0KPiA+IGZyb20gYW4gZXh0ZXJuYWwgZmxhc2ggdmlhIGl0cyBvd24gU1BJIGhv c3QgaW50ZXJmYWNlLiBJbiBjZXJ0YWluDQo+ID4gaGFyZHdhcmUgY29uZmlndXJhdGlvbnMsIHRo ZSBmaXJtd2FyZSBjYW4gYWx0ZXJuYXRpdmVseSBiZSBsb2FkZWQNCj4gPiB0aHJvdWdoIHRoZSBT UEkgY2xpZW50IGludGVyZmFjZS4gVGhlIGRyaXZlciBwcm92aWRlcyBiYXNpYyBtdXRlIGFuZA0K PiA+IHZvbHVtZSBjb250cm9sIGZ1bmN0aW9ucy4gV2hlbiB0aGUgU1BJIGNsaWVudCBpbnRlcmZh Y2UgaXMgZW5hYmxlZCwNCj4gPiBmaXJtd2FyZSBsb2FkaW5nIGlzIGhhbmRsZWQgYnkgdGhlIFNQ SSBkcml2ZXIuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBPZGVyIENoaW91IDxvZGVyX2NoaW91 QHJlYWx0ZWsuY29tPg0KPiA+IC0tLQ0KPiA+ICAgc291bmQvc29jL2NvZGVjcy9LY29uZmlnICAg ICAgfCAgMTAgKw0KPiA+ICAgc291bmQvc29jL2NvZGVjcy9NYWtlZmlsZSAgICAgfCAgIDMgKw0K PiA+ICAgc291bmQvc29jL2NvZGVjcy9ydDU1NzUtc3BpLmMgfCAxMTkgKysrKysrKysrKysNCj4g PiAgIHNvdW5kL3NvYy9jb2RlY3MvcnQ1NTc1LXNwaS5oIHwgIDI2ICsrKw0KPiA+ICAgc291bmQv c29jL2NvZGVjcy9ydDU1NzUuYyAgICAgfCAzNTkNCj4gKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKw0KPiA+ICAgc291bmQvc29jL2NvZGVjcy9ydDU1NzUuaCAgICAgfCAgNTQgKysr KysNCj4gPiAgIDYgZmlsZXMgY2hhbmdlZCwgNTcxIGluc2VydGlvbnMoKykNCj4gPiAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzb3VuZC9zb2MvY29kZWNzL3J0NTU3NS1zcGkuYw0KPiA+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IHNvdW5kL3NvYy9jb2RlY3MvcnQ1NTc1LXNwaS5oDQo+ID4gICBjcmVhdGUg bW9kZSAxMDA2NDQgc291bmQvc29jL2NvZGVjcy9ydDU1NzUuYw0KPiA+ICAgY3JlYXRlIG1vZGUg MTAwNjQ0IHNvdW5kL3NvYy9jb2RlY3MvcnQ1NTc1LmgNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9z b3VuZC9zb2MvY29kZWNzL0tjb25maWcgYi9zb3VuZC9zb2MvY29kZWNzL0tjb25maWcNCj4gPiBp bmRleCAwNjE3OTFlNjE5MDcuLjE0ZjNkMDllNzExNyAxMDA2NDQNCj4gPiAtLS0gYS9zb3VuZC9z b2MvY29kZWNzL0tjb25maWcNCj4gPiArKysgYi9zb3VuZC9zb2MvY29kZWNzL0tjb25maWcNCj4g PiBAQCAtMjEyLDYgKzIxMiw3IEBAIGNvbmZpZyBTTkRfU09DX0FMTF9DT0RFQ1MNCj4gPiAgICAg ICBpbXBseSBTTkRfU09DX1JUMTMwNQ0KPiA+ICAgICAgIGltcGx5IFNORF9TT0NfUlQxMzA4DQo+ ID4gICAgICAgaW1wbHkgU05EX1NPQ19SVDU1MTQNCj4gPiArICAgICBpbXBseSBTTkRfU09DX1JU NTU3NQ0KPiA+ICAgICAgIGltcGx5IFNORF9TT0NfUlQ1NjE2DQo+ID4gICAgICAgaW1wbHkgU05E X1NPQ19SVDU2MzENCj4gPiAgICAgICBpbXBseSBTTkRfU09DX1JUNTY0MA0KPiA+IEBAIC0xNzgz LDYgKzE3ODQsMTUgQEAgY29uZmlnIFNORF9TT0NfUlQ1NTE0X1NQSV9CVUlMVElODQo+ID4gICAg ICAgYm9vbCAjIGZvcmNlIFJUNTUxNF9TUEkgdG8gYmUgYnVpbHQtaW4gdG8gYXZvaWQgbGluayBl cnJvcnMNCj4gPiAgICAgICBkZWZhdWx0IFNORF9TT0NfUlQ1NTE0PXkgJiYgU05EX1NPQ19SVDU1 MTRfU1BJPW0NCj4gPg0KPiA+ICtjb25maWcgU05EX1NPQ19SVDU1NzUNCj4gPiArICAgICB0cmlz dGF0ZSAiUmVhbHRlayBBTEM1NTc1IENvZGVjIC0gSTJDIg0KPiA+ICsgICAgIGRlcGVuZHMgb24g STJDDQo+ID4gKw0KPiA+ICtjb25maWcgU05EX1NPQ19SVDU1NzVfU1BJDQo+ID4gKyAgICAgdHJp c3RhdGUgIlJlYWx0ZWsgQUxDNTU3NSBDb2RlYyAtIFNQSSINCj4gPiArICAgICBkZXBlbmRzIG9u IFNQSV9NQVNURVIgJiYgSTJDDQo+ID4gKyAgICAgZGVwZW5kcyBvbiBTTkRfU09DX1JUNTU3NQ0K PiA+ICsNCj4gPiAgIGNvbmZpZyBTTkRfU09DX1JUNTYxNg0KPiA+ICAgICAgIHRyaXN0YXRlICJS ZWFsdGVrIFJUNTYxNiBDT0RFQyINCj4gPiAgICAgICBkZXBlbmRzIG9uIEkyQw0KPiA+IGRpZmYg LS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL01ha2VmaWxlIGIvc291bmQvc29jL2NvZGVjcy9NYWtl ZmlsZQ0KPiA+IGluZGV4IGQ2ODdkNGY3NDM2My4uYTY0MDZiYzkwN2E5IDEwMDY0NA0KPiA+IC0t LSBhL3NvdW5kL3NvYy9jb2RlY3MvTWFrZWZpbGUNCj4gPiArKysgYi9zb3VuZC9zb2MvY29kZWNz L01ha2VmaWxlDQo+ID4gQEAgLTI1Myw2ICsyNTMsOCBAQCBzbmQtc29jLXJ0Mjg2LXkgOj0gcnQy ODYubw0KPiA+ICAgc25kLXNvYy1ydDI5OC15IDo9IHJ0Mjk4Lm8NCj4gPiAgIHNuZC1zb2MtcnQ1 NTE0LXkgOj0gcnQ1NTE0Lm8NCj4gPiAgIHNuZC1zb2MtcnQ1NTE0LXNwaS15IDo9IHJ0NTUxNC1z cGkubw0KPiA+ICtzbmQtc29jLXJ0NTU3NS15IDo9IHJ0NTU3NS5vDQo+ID4gK3NuZC1zb2MtcnQ1 NTc1LSQoQ09ORklHX1NORF9TT0NfUlQ1NTc1X1NQSSkgKz0gcnQ1NTc1LXNwaS5vDQo+ID4gICBz bmQtc29jLXJ0NTYxNi15IDo9IHJ0NTYxNi5vDQo+ID4gICBzbmQtc29jLXJ0NTYzMS15IDo9IHJ0 NTYzMS5vDQo+ID4gICBzbmQtc29jLXJ0NTY0MC15IDo9IHJ0NTY0MC5vDQo+ID4gQEAgLTY4Niw2 ICs2ODgsNyBAQCBvYmotJChDT05GSUdfU05EX1NPQ19SVDI5OCkgICAgICAgKz0NCj4gc25kLXNv Yy1ydDI5OC5vDQo+ID4gICBvYmotJChDT05GSUdfU05EX1NPQ19SVDU1MTQpICAgICAgICArPSBz bmQtc29jLXJ0NTUxNC5vDQo+ID4gICBvYmotJChDT05GSUdfU05EX1NPQ19SVDU1MTRfU1BJKSAg ICArPSBzbmQtc29jLXJ0NTUxNC1zcGkubw0KPiA+ICAgb2JqLSQoQ09ORklHX1NORF9TT0NfUlQ1 NTE0X1NQSV9CVUlMVElOKSAgICArPQ0KPiBzbmQtc29jLXJ0NTUxNC1zcGkubw0KPiA+ICtvYmot JChDT05GSUdfU05EX1NPQ19SVDU1NzUpICs9IHNuZC1zb2MtcnQ1NTc1Lm8NCj4gPiAgIG9iai0k KENPTkZJR19TTkRfU09DX1JUNTYxNikgICAgICAgICs9IHNuZC1zb2MtcnQ1NjE2Lm8NCj4gPiAg IG9iai0kKENPTkZJR19TTkRfU09DX1JUNTYzMSkgICAgICAgICs9IHNuZC1zb2MtcnQ1NjMxLm8N Cj4gPiAgIG9iai0kKENPTkZJR19TTkRfU09DX1JUNTY0MCkgICAgICAgICs9IHNuZC1zb2MtcnQ1 NjQwLm8NCj4gPiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9ydDU1NzUtc3BpLmMgYi9z b3VuZC9zb2MvY29kZWNzL3J0NTU3NS1zcGkuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5jOGVhZGIyZjU5YTYNCj4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gKysrIGIvc291bmQvc29jL2NvZGVjcy9ydDU1NzUtc3BpLmMNCj4gPiBAQCAtMCwwICsxLDEx OSBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQo+ID4g Ky8qDQo+ID4gKyAqIHJ0NTU3NS1zcGkuYyAgLS0gIEFMQzU1NzUgU1BJIGRyaXZlcg0KPiA+ICsg Kg0KPiA+ICsgKiBDb3B5cmlnaHQoYykgMjAyNSBSZWFsdGVrIFNlbWljb25kdWN0b3IgQ29ycC4N Cj4gPiArICoNCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvZmlybXdhcmUu aD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9zcGkv c3BpLmg+DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAicnQ1NTc1LXNwaS5oIg0KPiA+ICsNCj4gPiAr I2RlZmluZSBSVDU1NzVfU1BJX0NNRF9CVVJTVF9XUklURSAgIDUNCj4gPiArI2RlZmluZSBSVDU1 NzVfU1BJX0JVRl9MRU4gICAgICAgICAgIDI0MA0KPiA+ICsNCj4gPiArc3RydWN0IHJ0NTU3NV9z cGlfYnVyc3Rfd3JpdGUgew0KPiA+ICsgICAgIHU4IGNtZDsNCj4gPiArICAgICB1MzIgYWRkcjsN Cj4gPiArICAgICB1OCBkYXRhW1JUNTU3NV9TUElfQlVGX0xFTl07DQo+ID4gKyAgICAgdTggZHVt bXk7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICtzdHJ1Y3Qgc3BpX2RldmljZSAqcnQ1 NTc1X3NwaV9nZXRfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gPiArew0KPiA+ICsgICAg IHN0cnVjdCBkZXZpY2Vfbm9kZSAqc3BpX25wOw0KPiA+ICsgICAgIHN0cnVjdCBzcGlfY29udHJv bGxlciAqY3RscjsNCj4gDQo+IFJlb3JkZXIgdG8gYWNoaWV2ZSByZXZlcnNlLWNocmlzdG1hcy10 cmVlIG5vdGF0aW9uLiBXYXRlcmZhbGwgdG8gYQ0KPiBudW1iZXIgb2YgZnVuY3Rpb25zIGZvdW5k IGluIHRoaXMgcGF0Y2guDQo+IA0KPiA+ICsgICAgIHN0cnVjdCBzcGlfZGV2aWNlICpzcGk7DQo+ ID4gKyAgICAgdTMyIGNzOw0KPiA+ICsNCj4gPiArICAgICBzcGlfbnAgPSBvZl9wYXJzZV9waGFu ZGxlKGRldi0+b2Zfbm9kZSwgInNwaS1wYXJlbnQiLCAwKTsNCj4gPiArICAgICBpZiAoIXNwaV9u cCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IHNwaS1w YXJlbnQgcGhhbmRsZVxuIik7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCj4gPiAr ICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMl9pbmRleChk ZXYtPm9mX25vZGUsICJzcGktcGFyZW50IiwgMSwgJmNzKSkNCj4gPiArICAgICAgICAgICAgIGNz ID0gMDsNCj4gPiArDQo+ID4gKyAgICAgaWYgKGNzID49IGN0bHItPm51bV9jaGlwc2VsZWN0KSB7 DQo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkNoaXAgc2VsZWN0IGhhcyB3cm9uZyBu dW1iZXIgJWRcbiIsIGNzKTsNCj4gPiArICAgICAgICAgICAgIG9mX25vZGVfcHV0KHNwaV9ucCk7 DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ ICsgICAgIGN0bHIgPSBvZl9maW5kX3NwaV9jb250cm9sbGVyX2J5X25vZGUoc3BpX25wKTsNCj4g PiArICAgICBvZl9ub2RlX3B1dChzcGlfbnApOw0KPiA+ICsgICAgIGlmICghY3RscikNCj4gPiAr ICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KPiA+ICsNCj4gPiArICAgICBzcGkgPSBzcGlfbmV3 X2RldmljZShjdGxyLCAmKHN0cnVjdCBzcGlfYm9hcmRfaW5mbyl7DQo+ID4gKyAgICAgICAgICAg ICAubW9kYWxpYXMgPSAicnQ1NTc1IiwNCj4gPiArICAgICAgICAgICAgIC5jaGlwX3NlbGVjdCA9 IGNzLA0KPiA+ICsgICAgICAgICAgICAgLm1heF9zcGVlZF9oeiA9IDEwMDAwMDAwLA0KPiA+ICsg ICAgIH0pOw0KPiA+ICsNCj4gPiArICAgICBzcGlfY29udHJvbGxlcl9wdXQoY3Rscik7DQo+ID4g KyAgICAgcmV0dXJuIHNwaTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHJ0NTU3 NV9zcGlfYnVyc3Rfd3JpdGUgLSBXcml0ZSBkYXRhIHRvIFNQSSBieSBydDU1NzUgYWRkcmVzcy4N Cj4gPiArICogQHNwaTogU1BJIGRldmljZS4NCj4gPiArICogQGFkZHI6IFN0YXJ0IGFkZHJlc3Mu DQo+ID4gKyAqIEB0eGJ1ZjogRGF0YSBidWZmZXIgZm9yIHdyaXRpbmcuDQo+ID4gKyAqIEBsZW46 IERhdGEgbGVuZ3RoLg0KPiA+ICsgKg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGludCBydDU1NzVf c3BpX2J1cnN0X3dyaXRlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHUzMiBhZGRyLCBjb25zdCB1 OA0KPiAqdHhidWYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVfdCBsZW4pDQo+IA0KPiBBbGlnbm1lbnQgb3IsIGp1c3QgbWFrZSBpdCBvbmUt bGluZXIuIEl0IGZpdHMgdGhlIGxpbWl0Lg0KPiANCj4gPiArew0KPiA+ICsgICAgIHN0cnVjdCBy dDU1NzVfc3BpX2J1cnN0X3dyaXRlIGJ1ZiA9IHsNCj4gPiArICAgICAgICAgICAgIC5jbWQgPSBS VDU1NzVfU1BJX0NNRF9CVVJTVF9XUklURQ0KPiANCj4gTWlzc2luZyBjb21tYSBhdCB0aGUgZW5k Lg0KPiANCj4gPiArICAgICB9Ow0KPiA+ICsgICAgIHVuc2lnbmVkIGludCBlbmQsIG9mZnNldCA9 IDA7DQo+ID4gKw0KPiA+ICsgICAgIHdoaWxlIChvZmZzZXQgPCBsZW4pIHsNCj4gPiArICAgICAg ICAgICAgIGlmIChvZmZzZXQgKyBSVDU1NzVfU1BJX0JVRl9MRU4gPD0gbGVuKQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICBlbmQgPSBSVDU1NzVfU1BJX0JVRl9MRU47DQo+ID4gKyAgICAgICAg ICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGVuZCA9IGxlbiAlIFJUNTU3NV9T UElfQlVGX0xFTjsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICBidWYuYWRkciA9IGNwdV90b19s ZTMyKGFkZHIgKyBvZmZzZXQpOw0KPiA+ICsgICAgICAgICAgICAgbWVtY3B5KCZidWYuZGF0YSwg JnR4YnVmW29mZnNldF0sIGVuZCk7DQo+ID4gKyAgICAgICAgICAgICBzcGlfd3JpdGUoc3BpLCAm YnVmLCBzaXplb2YoYnVmKSk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgb2Zmc2V0ICs9IFJU NTU3NV9TUElfQlVGX0xFTjsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAw Ow0KPiANCj4gSWYgeW91IGludGVuZCBvbiBpZ25vcmluZyByZXN1bHQgb2Ygc3BpX3dyaXRlKClz LCB0aGVuIEkgc2VlIG5vIHJlYXNvbg0KPiB3aHkgcnQ1NTc1X3NwaV9idXJzdF93cml0ZSgpIHNo b3VsZG4ndCBiZSBhIHZvaWQgZnVuY3Rpb24uDQo+IA0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQg cnQ1NTc1X3NwaV9md19sb2FkKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpDQo+ID4gK3sNCj4gPiAr ICAgICBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZpcm13YXJlOw0KPiA+ICsgICAgIHN0cnVjdCBk ZXZpY2UgKmRldiA9ICZzcGktPmRldjsNCj4gPiArICAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNv bnN0IGZ3X3BhdGhbXSA9IHsNCj4gPiArICAgICAgICAgICAgICJyZWFsdGVrL3J0NTU3NS9ydDU1 NzVfZncxLmJpbiIsDQo+ID4gKyAgICAgICAgICAgICAicmVhbHRlay9ydDU1NzUvcnQ1NTc1X2Z3 Mi5iaW4iLA0KPiA+ICsgICAgICAgICAgICAgInJlYWx0ZWsvcnQ1NTc1L3J0NTU3NV9mdzMuYmlu IiwNCj4gPiArICAgICAgICAgICAgICJyZWFsdGVrL3J0NTU3NS9ydDU1NzVfZnc0LmJpbiINCj4g PiArICAgICB9Ow0KPiA+ICsgICAgIHN0YXRpYyBjb25zdCB1MzIgZndfYWRkcltdID0geyAweDVm NDAwMDAwLCAweDVmNjAwMDAwLCAweDVmN2ZlMDAwLA0KPiAweDVmN2ZmMDAwIH07DQo+ID4gKyAg ICAgaW50IGksIHJldDsNCj4gPiArDQo+ID4gKyAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUoZndfYWRkcik7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgcmV0ID0gcmVxdWVzdF9maXJt d2FyZSgmZmlybXdhcmUsIGZ3X3BhdGhbaV0sIGRldik7DQo+IA0KPiBTbywgaW4gdjggb3IgZWFy bGllciB0aGUgb3JkZXJpbmcgb2Ygb3BlcmF0aW9ucyB3YXMgZGlmZmVyZW50Og0KPiANCj4gICAg ICAgICByZXF1ZXN0X2Zpcm13YXJlKGZ3MSk7DQo+IA0KPiAgICAgICAgIHJlZ21hcF93cml0ZSgp Ow0KPiAgICAgICAgIHJlZ21hcF93cml0ZSgpOw0KPiAgICAgICAgIHJlZ21hcF93cml0ZSgpOw0K PiANCj4gICAgICAgICBydDU1NzVfc3BpX2J1cnN0X3dyaXRlKCk7DQo+ICAgICAgICAgcmVsZWFz ZV9maXJtd2FyZShmdzEpOw0KPiANCj4gICAgICAgICAvKiBQcm9jZWVkIHdpdGggbG9vcCBmb3Ig dGhlIHJlbWFpbmluZyBmdzIsIGZ3MywgZnc0LiAqLw0KPiANCj4gV2hhdCBjaGFuZ2VkIHRoYXQg c3VkZGVubHkgdGhlIG9yZGVyaW5nIGNvdWxkIGJlIHNpbXBsaWZpZWQ/DQoNCk9yaWdpbmFsbHks IHJlcXVlc3RfZmlybXdhcmVfbm93YWl0IHdhcyB1c2VkIHdoZW4gdGhlIGRyaXZlciBidWlsdCBp bnRvIHRoZQ0Ka2VybmVsIGltYWdlIGFuZCB0aGUgZmlybXdhcmVzIHdhcyBpbiBmaWxlc3lzdGVt LiBJbiBvcmRlciB0byBtYXRjaCB0aGUNCmZvbGxvd2luZyBmbG93LCBpZiB0aGUgZHJpdmVyIGlz IGJ1aWx0IGludG8gdGhlIGtlcm5lbCBpbWFnZSwgdGhlIGZpcm13YXJlcw0Kc2hvdWxkIGFsc28g YmUgYnVpbHQgaW50byB0aGUga2VybmVsIGltYWdlLg0KDQoxKSBib290IEkyQywgaW5pdCByZWdt YXBzDQoyKSBib290IFNQSSwgbG9hZCBmaXJtd2FyZQ0KMykgcmVnaXN0ZXIgQVNvQyBjb21wb25l bnQgaWYgMSkgYW5kIDIpIHN1Y2NlZWQNCg0KPiA+ICsgICAgICAgICAgICAgaWYgKCFyZXQpIHsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgcnQ1NTc1X3NwaV9idXJzdF93cml0ZShzcGksIGZ3 X2FkZHJbaV0sDQo+IGZpcm13YXJlLT5kYXRhLCBmaXJtd2FyZS0+c2l6ZSk7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIHJlbGVhc2VfZmlybXdhcmUoZmlybXdhcmUpOw0KPiA+ICsgICAgICAg ICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJS ZXF1ZXN0IGZpcm13YXJlIGZhaWx1cmU6ICVkXG4iLA0KPiByZXQpOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsgICAgICAgICAgICAgfQ0KPiANCj4gUGxlYXNl IHJlZmFjdG9yIHRoaXMgY29uc3RydWN0LiBXaGVuIGZhY2luZyBlbHNlLXJldHVybiwgZmF2b3Vy DQo+IHJldHVybmluZyBlYXJseSB0byByZWR1Y2UgaW5kZW50YXRpb24gYW5kIG1ha2UgaXQgZWFz aWVyIHRvIHJlYWQgdGhlIGNvZGUuDQo+IA0KPiAgICAgICAgIGlmIChyZXQpIHsNCj4gICAgICAg ICAgICAgICAgIGRldl9lcnIoKTsNCj4gICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ICAg ICAgICAgfQ0KPiANCj4gICAgICAgICBydDU1NzVfc3BpX2J1cnN0X3dyaXRlKCk7DQo+ICAgICAg ICAgcmVsZWFzZV9maXJtd2FyZSgpOw0KPiANCj4gTXVjaCBiZXR0ZXIsIGlzbid0IGl0Pw0KPiAN Cj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gZGlm ZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvcnQ1NTc1LXNwaS5oIGIvc291bmQvc29jL2NvZGVj cy9ydDU1NzUtc3BpLmgNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAw MDAwMDAwMC4uM2IyOTZiY2FjOWE2DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL3NvdW5k L3NvYy9jb2RlY3MvcnQ1NTc1LXNwaS5oDQo+ID4gQEAgLTAsMCArMSwyNiBAQA0KPiA+ICsvKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovDQo+ID4gKy8qDQo+ID4gKyAq IHJ0NTU3NS1zcGkuaCAgLS0gIEFMQzU1NzUgU1BJIGRyaXZlcg0KPiA+ICsgKg0KPiA+ICsgKiBD b3B5cmlnaHQoYykgMjAyNSBSZWFsdGVrIFNlbWljb25kdWN0b3IgQ29ycC4NCj4gPiArICoNCj4g PiArICovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIF9fUlQ1NTc1X1NQSV9IX18NCj4gPiArI2RlZmlu ZSBfX1JUNTU3NV9TUElfSF9fDQo+ID4gKw0KPiA+ICsjaWYgSVNfRU5BQkxFRChDT05GSUdfU05E X1NPQ19SVDU1NzVfU1BJKQ0KPiA+ICtzdHJ1Y3Qgc3BpX2RldmljZSAqcnQ1NTc1X3NwaV9nZXRf ZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldik7DQo+ID4gK2ludCBydDU1NzVfc3BpX2Z3X2xvYWQo c3RydWN0IHNwaV9kZXZpY2UgKnNwaSk7DQo+ID4gKyNlbHNlDQo+ID4gK3N0YXRpYyBpbmxpbmUg c3RydWN0IHNwaV9kZXZpY2UgKnJ0NTU3NV9zcGlfZ2V0X2RldmljZShzdHJ1Y3QgZGV2aWNlICpk ZXYpDQo+ID4gK3sNCj4gPiArICAgICByZXR1cm4gTlVMTDsNCj4gPiArfQ0KPiANCj4gTWlzc2lu ZyBuZXdsaW5lLg0KPiANCj4gPiArc3RhdGljIGlubGluZSBpbnQgcnQ1NTc1X3NwaV9md19sb2Fk KHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpDQo+ID4gK3sNCj4gPiArICAgICByZXR1cm4gLUVJTlZB TDsNCj4gPiArfQ0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKyNlbmRpZiAvKiBfX1JUNTU3NV9T UElfSF9fICovDQo+ID4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvcnQ1NTc1LmMgYi9z b3VuZC9zb2MvY29kZWNzL3J0NTU3NS5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBp bmRleCAwMDAwMDAwMDAwMDAuLmMzYTliYTIyYTkwZA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiAr KysgYi9zb3VuZC9zb2MvY29kZWNzL3J0NTU3NS5jDQo+ID4gQEAgLTAsMCArMSwzNTkgQEANCj4g PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KPiA+ICsvKg0KPiA+ ICsgKiBydDU1NzUuYyAgLS0gIEFMQzU1NzUgQUxTQSBTb0MgYXVkaW8gY29tcG9uZW50IGRyaXZl cg0KPiA+ICsgKg0KPiA+ICsgKiBDb3B5cmlnaHQoYykgMjAyNSBSZWFsdGVrIFNlbWljb25kdWN0 b3IgQ29ycC4NCj4gPiArICoNCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgv aTJjLmg+DQo+ID4gKyNpbmNsdWRlIDxzb3VuZC9zb2MuaD4NCj4gPiArI2luY2x1ZGUgPHNvdW5k L3Rsdi5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgInJ0NTU3NS5oIg0KPiA+ICsjaW5jbHVkZSAi cnQ1NTc1LXNwaS5oIg0KPiANCj4gKC4uLikNCj4gDQo+ID4gK3N0YXRpYyBpbnQgcnQ1NTc1X2ky Y19yZWFkKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludA0KPiAq dmFsKQ0KPiA+ICt7DQo+ID4gKyAgICAgc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IGNvbnRl eHQ7DQo+ID4gKyAgICAgc3RydWN0IHJ0NTU3NV9wcml2ICpydDU1NzUgPSBpMmNfZ2V0X2NsaWVu dGRhdGEoY2xpZW50KTsNCj4gPiArDQo+ID4gKyAgICAgcmVnbWFwX3JlYWQocnQ1NTc1LT5kc3Bf cmVnbWFwLCByZWcgfCBSVDU1NzVfRFNQX01BUFBJTkcsDQo+IHZhbCk7DQo+ID4gKw0KPiA+ICsg ICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHJ0NTU3NV9pMmNf d3JpdGUodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50IHZhbCkN Cj4gPiArew0KPiA+ICsgICAgIHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBjb250ZXh0Ow0K PiA+ICsgICAgIHN0cnVjdCBydDU1NzVfcHJpdiAqcnQ1NTc1ID0gaTJjX2dldF9jbGllbnRkYXRh KGNsaWVudCk7DQo+ID4gKw0KPiA+ICsgICAgIHJlZ21hcF93cml0ZShydDU1NzUtPmRzcF9yZWdt YXAsIHJlZyB8IFJUNTU3NV9EU1BfTUFQUElORywNCj4gdmFsKTsNCj4gPiArDQo+ID4gKyAgICAg cmV0dXJuIDA7DQo+IA0KPiBOb3QgYW4gZXhwZWN0IGluIHJlZ21hcCwgYnV0IEknZCBsZWF2ZSBk ZWNpc2lvbiB0byB0aGUgY2FsbGVyIHdoZXRoZXIgdG8NCj4gc3F1ZWxjaCBhbiBlcnJvciBvciBu b3QuDQo+IA0KPiBGb3IgYm90aCwgcnQ1NTc1X2kyY19yZWFkKCkvd3JpdGUoKSBJJ2QganVzdCBy ZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcNCj4gcmVnbWFwX3h4eCgpIG9wZXJhdGlvbiByYXRoZXIg dGhlbiAnMCcuDQo+IA0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJl Z21hcF9jb25maWcgcnQ1NTc1X3JlZ21hcCA9IHsNCj4gPiArICAgICAucmVnX2JpdHMgPSAxNiwN Cj4gPiArICAgICAudmFsX2JpdHMgPSAzMiwNCj4gPiArICAgICAucmVnX3N0cmlkZSA9IDQsDQo+ ID4gKyAgICAgLm1heF9yZWdpc3RlciA9IDB4ZmZmYywNCj4gPiArICAgICAucmVhZGFibGVfcmVn ID0gcnQ1NTc1X3JlYWRhYmxlX3JlZ2lzdGVyLA0KPiA+ICsgICAgIC5yZWdfcmVhZCA9IHJ0NTU3 NV9pMmNfcmVhZCwNCj4gPiArICAgICAucmVnX3dyaXRlID0gcnQ1NTc1X2kyY193cml0ZSwNCj4g PiArICAgICAudXNlX3NpbmdsZV9yZWFkID0gdHJ1ZSwNCj4gPiArICAgICAudXNlX3NpbmdsZV93 cml0ZSA9IHRydWUsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHJ0NTU3NV9md19s b2FkX2J5X3NwaShzdHJ1Y3QgcnQ1NTc1X3ByaXYgKnJ0NTU3NSkNCj4gPiArew0KPiA+ICsgICAg IHN0cnVjdCBpMmNfY2xpZW50ICppMmMgPSBydDU1NzUtPmkyYzsNCj4gPiArICAgICBzdHJ1Y3Qg c3BpX2RldmljZSAqc3BpOw0KPiA+ICsgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZpMmMtPmRl djsNCj4gPiArICAgICBpbnQgcmV0Ow0KPiA+ICsNCj4gPiArICAgICBzcGkgPSBydDU1NzVfc3Bp X2dldF9kZXZpY2UoZGV2KTsNCj4gPiArICAgICBpZiAoIXNwaSkgew0KPiA+ICsgICAgICAgICAg ICAgZGV2X3dhcm4oZGV2LCAiVGhlIHNwaS1wYXJlbnQgbm90IGRlc2NyaWJlZCBpbiB0aGUgRFRT XG4iDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgaGFyZHdhcmUgY29uZmln dXJhdGlvbiBzaG91bGQgYmUNCj4gd2l0aCBidWlsdC1pbiBmbGFzaFxuIik7DQo+ID4gKw0KPiA+ ICsgICAgICAgICAgICAgaWYgKCFJU19FTkFCTEVEKENPTkZJR19TTkRfU09DX1JUNTU3NV9TUEkp KQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBkZXZfd2FybihkZXYsICJJZiB0aGUgc3BpLXBh cmVudCBpcyBzZXQgaW4gdGhlIERUUw0KPiBhbmQgaXQgaXMgd2l0aG91dCBidWlsdC1pbiBmbGFz aFxuIg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGVhc2UgZW5h YmxlDQo+IENPTkZJR19TTkRfU09DX1JUNTU3NV9TUElcbiIpOw0KPiANCj4gRG9lcyB0aGlzIG1l YW4gd2UgYWx3YXlzIGdldCBhIHdhcm5pbmcsIGV2ZW4gaW4gY2FzZSB3aGVuIHdlJ3JlIGRlYWxp bmcNCj4gd2l0aCBub24tU1BJIHZhcmlhbnQ/DQo+IA0KPiA+ICsNCj4gPiArICAgICAgICAgICAg IHJldHVybiAtRU5YSU87DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICByZWdtYXBfd3Jp dGUocnQ1NTc1LT5kc3BfcmVnbWFwLCAweGZhZmFmYWZhLCAweDAwMDAwMDA0KTsNCj4gPiArICAg ICByZWdtYXBfd3JpdGUocnQ1NTc1LT5kc3BfcmVnbWFwLCAweDE4MDA4MDY0LCAweDAwMDAwMDAw KTsNCj4gPiArICAgICByZWdtYXBfd3JpdGUocnQ1NTc1LT5kc3BfcmVnbWFwLCAweDE4MDA4MDY4 LCAweDAwMDJmZmZmKTsNCj4gPiArDQo+ID4gKyAgICAgcmV0ID0gcnQ1NTc1X3NwaV9md19sb2Fk KHNwaSk7DQo+ID4gKyAgICAgaWYgKHJldCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2Vycihk ZXYsICJMb2FkIGZpcm13YXJlIGZhaWx1cmU6ICVkXG4iLCByZXQpOw0KPiA+ICsgICAgICAgICAg ICAgcmV0dXJuIC1FTk9ERVY7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICByZWdtYXBf d3JpdGUocnQ1NTc1LT5kc3BfcmVnbWFwLCAweDE4MDAwMDAwLCAweDAwMDAwMDAwKTsNCj4gPiAr ICAgICByZWdtYXBfdXBkYXRlX2JpdHMocnQ1NTc1LT5yZWdtYXAsIFJUNTU3NV9TV19JTlQsIDEs IDEpOw0KPiA+ICsNCj4gPiArICAgICByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocnQ1NTc1LT5y ZWdtYXAsIFJUNTU3NV9TV19JTlQsDQo+IHJldCwgIXJldCwgMTAwMDAwLCAxMDAwMDAwMCk7DQo+ ID4gKyAgICAgaWYgKHJldCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYsICJSdW4g ZmlybXdhcmUgZmFpbHVyZTogJWRcbiIsIHJldCk7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4g LUVOT0RFVjsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHJ0NTU3NV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGll bnQgKmkyYykNCj4gPiArew0KPiA+ICsgICAgIHN0cnVjdCBydDU1NzVfcHJpdiAqcnQ1NTc1Ow0K PiA+ICsgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZpMmMtPmRldjsNCj4gPiArICAgICBpbnQg cmV0LCB2YWw7DQo+ID4gKw0KPiA+ICsgICAgIHJ0NTU3NSA9IGRldm1fa3phbGxvYyhkZXYsIHNp emVvZihzdHJ1Y3QgcnQ1NTc1X3ByaXYpLCBHRlBfS0VSTkVMKTsNCj4gPiArICAgICBpZiAoIXJ0 NTU3NSkNCj4gPiArICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiArICAg ICBpMmNfc2V0X2NsaWVudGRhdGEoaTJjLCBydDU1NzUpOw0KPiA+ICsNCj4gPiArICAgICBydDU1 NzUtPmkyYyA9IGkyYzsNCj4gPiArDQo+ID4gKyAgICAgcnQ1NTc1LT5kc3BfcmVnbWFwID0gZGV2 bV9yZWdtYXBfaW5pdF9pMmMoaTJjLA0KPiAmcnQ1NTc1X2RzcF9yZWdtYXApOw0KPiA+ICsgICAg IGlmIChJU19FUlIocnQ1NTc1LT5kc3BfcmVnbWFwKSkgew0KPiA+ICsgICAgICAgICAgICAgcmV0 ID0gUFRSX0VSUihydDU1NzUtPmRzcF9yZWdtYXApOw0KPiA+ICsgICAgICAgICAgICAgZGV2X2Vy cihkZXYsICJGYWlsZWQgdG8gYWxsb2NhdGUgRFNQIHJlZ2lzdGVyIG1hcDogJWRcbiIsDQo+IHJl dCk7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsgICAgIH0NCj4gPiArDQo+ ID4gKyAgICAgcnQ1NTc1LT5yZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0KGRldiwgTlVMTCwgaTJj LA0KPiAmcnQ1NTc1X3JlZ21hcCk7DQo+ID4gKyAgICAgaWYgKElTX0VSUihydDU1NzUtPnJlZ21h cCkpIHsNCj4gPiArICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIocnQ1NTc1LT5yZWdtYXApOw0K PiA+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gYWxsb2NhdGUgcmVnaXN0 ZXIgbWFwOiAlZFxuIiwgcmV0KTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4g KyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICByZWdtYXBfcmVhZChydDU1NzUtPnJlZ21hcCwgUlQ1 NTc1X0lELCAmdmFsKTsNCj4gPiArICAgICBpZiAodmFsICE9IFJUNTU3NV9ERVZJQ0VfSUQpIHsN Cj4gPiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRGV2aWNlIHdpdGggSUQgcmVnaXN0ZXIg JTA4eCBpcyBub3QgcnQ1NTc1XG4iLA0KPiB2YWwpOw0KPiA+ICsgICAgICAgICAgICAgcmV0dXJu IC1FTk9ERVY7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICByZWdtYXBfcmVhZChydDU1 NzUtPnJlZ21hcCwgUlQ1NTc1X0lEXzEsICZ2YWwpOw0KPiA+ICsgICAgIGlmICghdmFsKSB7DQo+ IA0KPiAxLiBUaGUgJ1JUNTU3NV9ERVZJQ0VfSUQnIGNoZWNrIGFib3ZlIGZhaWxzLCAndmFsJyBl cXVhbHMNCj4gUlQ1NTc1X0RFVklDRV9JRCwgbm9uLXplcm8uDQo+IDIuIHJlZ21hcF9yZWFkKFJU NTU3NV9JRF8xKSBmYWlscywgbGV0J3Mgc2tpcCB0aGUgcmVhc29uaW5nIGZvciBub3cuDQo+ICd2 YWwnIHJlbWFpbnMgdW5jaGFuZ2VkLg0KPiAzLiBUaGUgJyF2YWwnIGNoZWNrIGZhaWxzIHRob3Vn aCBub3RoaW5nIGhhcyBiZWVuIGFjdHVhbGx5IHJlYWQsICd2YWwnDQo+IGNvdWxkIGJlIHNpbXBs eSBpbnZhbGlkLg0KPiANCj4gV2hhdCdzIHRoZSBnb2FsIG9mIHRoaXMgY2hlY2s/IFNob3VsZG4n dCB3ZSBiZSBtb3JlIHByZWNpc2Ugd2hlbg0KPiBjaGVja2luZyB0aGUgJ2Zvcm1hbCB2ZXJzaW9u Jz8NCg0KU2luY2UgdGhlcmUgaXMgbm8gaW4tZm9ybWFsIHZlcnNpb24gYXZhaWxhYmxlLCB0aGUg Zm9ybWFsIHZlcnNpb24gY2hlY2sNCndpbGwgYmUgcmVtb3ZlZC4NCg0K