From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C36FB2BEC4E; Mon, 26 Jan 2026 10:53:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.21 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769424829; cv=none; b=FhehDpQw4X38zzZOCkmt4d0njQgUq53CzPg6fd/aXk+0nbHlwNgZpW01niW8GlaGNhWGqHdaVAonEDRlXX5huqV8/Rx1UcAGKpaU9TEb96tFgqjgqQtpXbgiGty/j5DJOStQEdGlgNOwPete+Mr4GGsNyfEvOXvTI+5kW61KPIU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769424829; c=relaxed/simple; bh=YUkw2vGbjIrg1XKHJg6/MLXfgU2jD6MmCtcSuaSa1jo=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=IRxnFAecdg+zHjaDtc6rPawkEkQLcgq4BHbbA2j2ZzG6TY5SWW19ET8JWP4HSqWLl8FVZCiGzPTRfLFPZadtW1F7pKVfx8JxFNDGrvzdaxonMMhJihcnup1WA+dRG7Kzsbwr3jgjXhyKRr3+EZwuTdkIXWAQiSTMnj4T8K1/8Yk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=qCTQw6K+; arc=none smtp.client-ip=212.227.17.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="qCTQw6K+" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1769424824; x=1770029624; i=w_armin@gmx.de; bh=YUkw2vGbjIrg1XKHJg6/MLXfgU2jD6MmCtcSuaSa1jo=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:From:To: Cc:References:In-Reply-To:Content-Type:Content-Transfer-Encoding: cc:content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=qCTQw6K+MkWuLmS8L23bglr40MMkOv8vt2sXDRJJSSGv2eh88HO4PNBkqarNWrTc CXv2AMsfoA2Y4enylKSiCnoldaEJBhJcbPe55XcOG5GA7va5FgB03Ch8hnJO0W5FR Dzz4WEI6ijWw5E/UGAx23o+PDL6gO5y5jQtJjHGKzM0TAzGEV6Dzq8TqyE1xm+1pI BNLj10Sal6xgkb8t9UKtWQxGbO7+ssinFPSXHpqXRVelS+yKh9c99MMcKWqx+qJUf t7CB63AZ8RVstBL0KJ2pguXWVtPI/0dQHpvidnOBTsDvSk3fOtvHkXWzu26RokRIj 2f6/xzkCPudniFZ4pA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [172.16.119.44] ([141.76.8.140]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M2wGi-1vlQgl2pHo-001VuZ; Mon, 26 Jan 2026 11:53:43 +0100 Message-ID: Date: Mon, 26 Jan 2026 11:53:41 +0100 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 1/2] platform/x86: uniwill-laptop: Introduce device descriptor system From: Armin Wolf To: Werner Sembach , Hans de Goede , =?UTF-8?Q?Ilpo_J=C3=A4rvinen?= Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org References: <20260115154332.402873-1-wse@tuxedocomputers.com> Content-Language: en-US In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 X-Provags-ID: V03:K1:TT5+BZXOAfwwk0NG1dzCPDIb8cQ2078z6S4KJuw6dCSt5mmpKsx pCUcXpfvEoQI7JgJSuAxEeA//9d8mhYEqID0CIdDiY/SJy+DhWoaab6auGo9r+hcjhyRkSy K97VMCr7R4czPdcV8PU2fcouIMbHmZpScKgESkhMD/RjZd0EIDccxYcVX8aigPxuyi5MAtj 3nodBQKppsMCyDEpqpvTg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:f5Swh9Y8fGQ=;2AXuFk5Q7SYLbVl7nqu16UwJNqx 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 YZqDDOcJ56deLRLrCehodTmd+gQea0WHP8+tJw/9HJhONVx8kjW2fvmbLsGSuR2D8/xHv6U0h NIEXAKFuvtvIv4g6YQp8YaVy82RLoYySuEQBpmSRFnwWopGuJ9H0J5S4hXKiSLLe/CKSPLodp GAZJfBjDOS22apyFB+O29cxLj/iMT1kYKjbiatCOXhXqDkqyeIMSnA4et2eqzUJ/iFMRnEvk9 vjO1khSeX9OGZ698qThae1DYrIojx0CEE3Xe2CPqBpDhXhZvfxdhlQUxAMvaXVxGuVOTb1eSZ w1fZYt9WA9dzW9j3vEHCx8y0VKY5dC7aTT1SSQkQ42VizT+eDxXPkc9E1OYCvSOXDayRMGX7V 7U1VW/IKOQqb2mvvmDFXj5gHoQ98dUqqena+Ht/qDbwNI7cvkupyWpBMbJeftvc= QW0gMTUuMDEuMjYgdW0gMjE6NDEgc2NocmllYiBBcm1pbiBXb2xmOg0KDQo+IEFtIDE1LjAxLjI2 IHVtIDE2OjQyIHNjaHJpZWIgV2VybmVyIFNlbWJhY2g6DQo+DQo+PiBGcm9tOiBBcm1pbiBXb2xm IDxXX0FybWluQGdteC5kZT4NCj4+DQo+PiBGdXR1cmUgYWRkaXRpb25zIHRvIHRoZSBkcml2ZXIg d2lsbCBkZXBlbmQgb24gZGV2aWNlLXNwZWNpZmljDQo+PiBpbml0aWFsaXphdGlvbiBzdGVwcy4g RXh0ZW5kIHRoZSBETUktYmFzZWQgZmVhdHVyZSBkZXRlY3Rpb24gc3lzdGVtDQo+PiB0byBpbmNs dWRlIGRldmljZSBkZXNjcmlwdG9ycy4gRWFjaCBkZXNjcmlwdG9yIGNvbnRhaW5zIGEgYml0bWFw IG9mDQo+PiBzdXBwb3J0ZWQgZmVhdHVyZXMgYW5kIGEgc2V0IG9mIGNhbGxiYWNrIGZvciBwZXJm b3JtaW5nDQo+PiBkZXZpY2Utc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24uDQo+DQo+IFJldmlld2Vk LWJ5OiBBcm1pbiBXb2xmIDxXX0FybWluQGdteC5kZT4NCj4NCldoYXQgaXMgdGhlIHN0YXR1cyBv ZiB0aGlzIHNlcmllcz8NCg0KVGhhbmtzLA0KQXJtaW4gV29sZg0KDQo+PiBTaWduZWQtb2ZmLWJ5 OiBBcm1pbiBXb2xmIDxXX0FybWluQGdteC5kZT4NCj4+IENvLWRldmVsb3BlZC1ieTogV2VybmVy IFNlbWJhY2ggPHdzZUB0dXhlZG9jb21wdXRlcnMuY29tPg0KPj4gU2lnbmVkLW9mZi1ieTogV2Vy bmVyIFNlbWJhY2ggPHdzZUB0dXhlZG9jb21wdXRlcnMuY29tPg0KPj4gLS0tDQo+PiDCoCBkcml2 ZXJzL3BsYXRmb3JtL3g4Ni91bml3aWxsL3VuaXdpbGwtYWNwaS5jIHwgMTU3ICsrKysrKysrKysr KysrKystLS0tDQo+PiDCoCAxIGZpbGUgY2hhbmdlZCwgMTMxIGluc2VydGlvbnMoKyksIDI2IGRl bGV0aW9ucygtKQ0KPj4NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BsYXRmb3JtL3g4Ni91bml3 aWxsL3VuaXdpbGwtYWNwaS5jIA0KPj4gYi9kcml2ZXJzL3BsYXRmb3JtL3g4Ni91bml3aWxsL3Vu aXdpbGwtYWNwaS5jDQo+PiBpbmRleCAwZjkzNTUzMmYyNTA0Li4zZDhjMTM2ZTM2MjE5IDEwMDY0 NA0KPj4gLS0tIGEvZHJpdmVycy9wbGF0Zm9ybS94ODYvdW5pd2lsbC91bml3aWxsLWFjcGkuYw0K Pj4gKysrIGIvZHJpdmVycy9wbGF0Zm9ybS94ODYvdW5pd2lsbC91bml3aWxsLWFjcGkuYw0KPj4g QEAgLTMyMiw2ICszMjIsNyBAQCBzdHJ1Y3QgdW5pd2lsbF9kYXRhIHsNCj4+IMKgwqDCoMKgwqAg c3RydWN0IGRldmljZSAqZGV2Ow0KPj4gwqDCoMKgwqDCoCBhY3BpX2hhbmRsZSBoYW5kbGU7DQo+ PiDCoMKgwqDCoMKgIHN0cnVjdCByZWdtYXAgKnJlZ21hcDsNCj4+ICvCoMKgwqAgdW5zaWduZWQg aW50IGZlYXR1cmVzOw0KPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgYWNwaV9iYXR0ZXJ5X2hvb2sgaG9v azsNCj4+IMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IGxhc3RfY2hhcmdlX2N0cmw7DQo+PiDCoMKg wqDCoMKgIHN0cnVjdCBtdXRleCBiYXR0ZXJ5X2xvY2s7wqDCoMKgIC8qIFByb3RlY3RzIHRoZSBs aXN0IG9mIGN1cnJlbnRseSANCj4+IHJlZ2lzdGVyZWQgYmF0dGVyaWVzICovDQo+PiBAQCAtMzQx LDEyICszNDIsMjEgQEAgc3RydWN0IHVuaXdpbGxfYmF0dGVyeV9lbnRyeSB7DQo+PiDCoMKgwqDC oMKgIHN0cnVjdCBwb3dlcl9zdXBwbHkgKmJhdHRlcnk7DQo+PiDCoCB9Ow0KPj4gwqAgK3N0cnVj dCB1bml3aWxsX2RldmljZV9kZXNjcmlwdG9yIHsNCj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGZl YXR1cmVzOw0KPj4gK8KgwqDCoCAvKiBFeGVjdXRlZCBkdXJpbmcgZHJpdmVyIHByb2JpbmcgKi8N Cj4+ICvCoMKgwqAgaW50ICgqcHJvYmUpKHN0cnVjdCB1bml3aWxsX2RhdGEgKmRhdGEpOw0KPj4g K307DQo+PiArDQo+PiDCoCBzdGF0aWMgYm9vbCBmb3JjZTsNCj4+IMKgIG1vZHVsZV9wYXJhbV91 bnNhZmUoZm9yY2UsIGJvb2wsIDApOw0KPj4gwqAgTU9EVUxFX1BBUk1fREVTQyhmb3JjZSwgIkZv cmNlIGxvYWRpbmcgd2l0aG91dCBjaGVja2luZyBmb3IgDQo+PiBzdXBwb3J0ZWQgZGV2aWNlc1xu Iik7DQo+PiDCoCAtLyogRmVhdHVyZSBiaXRtYXNrIHNpbmNlIHRoZSBhc3NvY2lhdGVkIHJlZ2lz dGVycyBhcmUgbm90IHJlbGlhYmxlICovDQo+PiAtc3RhdGljIHVuc2lnbmVkIGludCBzdXBwb3J0 ZWRfZmVhdHVyZXM7DQo+PiArLyoNCj4+ICsgKiBDb250YWlucyBkZXZpY2Ugc3BlY2lmaWMgZGF0 YSBsaWtlIHRoZSBmZWF0dXJlIGJpdG1hcCBzaW5jZQ0KPj4gKyAqIHRoZSBhc3NvY2lhdGVkIHJl Z2lzdGVycyBhcmUgbm90IGFsd2F5cyByZWxpYWJsZS4NCj4+ICsgKi8NCj4+ICtzdGF0aWMgc3Ry dWN0IHVuaXdpbGxfZGV2aWNlX2Rlc2NyaXB0b3IgZGV2aWNlX2Rlc2NyaXB0b3IgDQo+PiBfX3Jv X2FmdGVyX2luaXQ7DQo+PiDCoCDCoCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHVuaXdpbGxf dGVtcF9sYWJlbHNbXSA9IHsNCj4+IMKgwqDCoMKgwqAgIkNQVSIsDQo+PiBAQCAtNDExLDYgKzQy MSwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGtleV9lbnRyeSB1bml3aWxsX2tleW1hcFtdID0g ew0KPj4gwqDCoMKgwqDCoCB7IEtFX0VORCB9DQo+PiDCoCB9Ow0KPj4gwqAgK3N0YXRpYyBpbmxp bmUgYm9vbCB1bml3aWxsX2RldmljZV9zdXBwb3J0cyhzdHJ1Y3QgdW5pd2lsbF9kYXRhICpkYXRh LA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2ln bmVkIGludCBmZWF0dXJlcykNCj4+ICt7DQo+PiArwqDCoMKgIHJldHVybiAoZGF0YS0+ZmVhdHVy ZXMgJiBmZWF0dXJlcykgPT0gZmVhdHVyZXM7DQo+PiArfQ0KPj4gKw0KPj4gwqAgc3RhdGljIGlu dCB1bml3aWxsX2VjX3JlZ193cml0ZSh2b2lkICpjb250ZXh0LCB1bnNpZ25lZCBpbnQgcmVnLCAN Cj4+IHVuc2lnbmVkIGludCB2YWwpDQo+PiDCoCB7DQo+PiDCoMKgwqDCoMKgIHVuaW9uIGFjcGlf b2JqZWN0IHBhcmFtc1syXSA9IHsNCj4+IEBAIC03OTksMjQgKzgxNSwyNyBAQCBzdGF0aWMgc3Ry dWN0IGF0dHJpYnV0ZSAqdW5pd2lsbF9hdHRyc1tdID0gew0KPj4gwqAgwqAgc3RhdGljIHVtb2Rl X3QgdW5pd2lsbF9hdHRyX2lzX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIA0KPj4gc3Ry dWN0IGF0dHJpYnV0ZSAqYXR0ciwgaW50IG4pDQo+PiDCoCB7DQo+PiArwqDCoMKgIHN0cnVjdCBk ZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopOw0KPj4gK8KgwqDCoCBzdHJ1Y3QgdW5pd2ls bF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+PiArDQo+PiDCoMKgwqDCoMKg IGlmIChhdHRyID09ICZkZXZfYXR0cl9mbl9sb2NrX3RvZ2dsZV9lbmFibGUuYXR0cikgew0KPj4g LcKgwqDCoMKgwqDCoMKgIGlmIChzdXBwb3J0ZWRfZmVhdHVyZXMgJiBVTklXSUxMX0ZFQVRVUkVf Rk5fTE9DS19UT0dHTEUpDQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHVuaXdpbGxfZGV2aWNlX3N1 cHBvcnRzKGRhdGEsIA0KPj4gVU5JV0lMTF9GRUFUVVJFX0ZOX0xPQ0tfVE9HR0xFKSkNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBhdHRyLT5tb2RlOw0KPj4gwqDCoMKgwqDC oCB9DQo+PiDCoCDCoMKgwqDCoMKgIGlmIChhdHRyID09ICZkZXZfYXR0cl9zdXBlcl9rZXlfdG9n Z2xlX2VuYWJsZS5hdHRyKSB7DQo+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKHN1cHBvcnRlZF9mZWF0 dXJlcyAmIFVOSVdJTExfRkVBVFVSRV9TVVBFUl9LRVlfVE9HR0xFKQ0KPj4gK8KgwqDCoMKgwqDC oMKgIGlmICh1bml3aWxsX2RldmljZV9zdXBwb3J0cyhkYXRhLCANCj4+IFVOSVdJTExfRkVBVFVS RV9TVVBFUl9LRVlfVE9HR0xFKSkNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biBhdHRyLT5tb2RlOw0KPj4gwqDCoMKgwqDCoCB9DQo+PiDCoCDCoMKgwqDCoMKgIGlmIChhdHRy ID09ICZkZXZfYXR0cl90b3VjaHBhZF90b2dnbGVfZW5hYmxlLmF0dHIpIHsNCj4+IC3CoMKgwqDC oMKgwqDCoCBpZiAoc3VwcG9ydGVkX2ZlYXR1cmVzICYgVU5JV0lMTF9GRUFUVVJFX1RPVUNIUEFE X1RPR0dMRSkNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAodW5pd2lsbF9kZXZpY2Vfc3VwcG9ydHMo ZGF0YSwgDQo+PiBVTklXSUxMX0ZFQVRVUkVfVE9VQ0hQQURfVE9HR0xFKSkNCj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBhdHRyLT5tb2RlOw0KPj4gwqDCoMKgwqDCoCB9DQo+ PiDCoCDCoMKgwqDCoMKgIGlmIChhdHRyID09ICZkZXZfYXR0cl9yYWluYm93X2FuaW1hdGlvbi5h dHRyIHx8DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYXR0ciA9PSAmZGV2X2F0dHJfYnJlYXRoaW5n X2luX3N1c3BlbmQuYXR0cikgew0KPj4gLcKgwqDCoMKgwqDCoMKgIGlmIChzdXBwb3J0ZWRfZmVh dHVyZXMgJiBVTklXSUxMX0ZFQVRVUkVfTElHSFRCQVIpDQo+PiArwqDCoMKgwqDCoMKgwqAgaWYg KHVuaXdpbGxfZGV2aWNlX3N1cHBvcnRzKGRhdGEsIFVOSVdJTExfRkVBVFVSRV9MSUdIVEJBUikp DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gYXR0ci0+bW9kZTsNCj4+IMKg wqDCoMKgwqAgfQ0KPj4gwqAgQEAgLTk0NCw3ICs5NjMsNyBAQCBzdGF0aWMgaW50IHVuaXdpbGxf aHdtb25faW5pdChzdHJ1Y3QgDQo+PiB1bml3aWxsX2RhdGEgKmRhdGEpDQo+PiDCoCB7DQo+PiDC oMKgwqDCoMKgIHN0cnVjdCBkZXZpY2UgKmhkZXY7DQo+PiDCoCAtwqDCoMKgIGlmICghKHN1cHBv cnRlZF9mZWF0dXJlcyAmIFVOSVdJTExfRkVBVFVSRV9IV01PTikpDQo+PiArwqDCoMKgIGlmICgh dW5pd2lsbF9kZXZpY2Vfc3VwcG9ydHMoZGF0YSwgVU5JV0lMTF9GRUFUVVJFX0hXTU9OKSkNCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsNCj4+IMKgIMKgwqDCoMKgwqAgaGRldiA9IGRl dm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfaW5mbyhkYXRhLT5kZXYsIA0KPj4gInVuaXdp bGwiLCBkYXRhLA0KPj4gQEAgLTEwMTksNyArMTAzOCw3IEBAIHN0YXRpYyBpbnQgdW5pd2lsbF9s ZWRfaW5pdChzdHJ1Y3QgdW5pd2lsbF9kYXRhIA0KPj4gKmRhdGEpDQo+PiDCoMKgwqDCoMKgIHVu c2lnbmVkIGludCB2YWx1ZTsNCj4+IMKgwqDCoMKgwqAgaW50IHJldDsNCj4+IMKgIC3CoMKgwqAg aWYgKCEoc3VwcG9ydGVkX2ZlYXR1cmVzICYgVU5JV0lMTF9GRUFUVVJFX0xJR0hUQkFSKSkNCj4+ ICvCoMKgwqAgaWYgKCF1bml3aWxsX2RldmljZV9zdXBwb3J0cyhkYXRhLCBVTklXSUxMX0ZFQVRV UkVfTElHSFRCQVIpKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPj4gwqAgwqDC oMKgwqDCoCByZXQgPSBkZXZtX211dGV4X2luaXQoZGF0YS0+ZGV2LCAmZGF0YS0+bGVkX2xvY2sp Ow0KPj4gQEAgLTEyMzIsNyArMTI1MSw3IEBAIHN0YXRpYyBpbnQgdW5pd2lsbF9iYXR0ZXJ5X2lu aXQoc3RydWN0IA0KPj4gdW5pd2lsbF9kYXRhICpkYXRhKQ0KPj4gwqAgew0KPj4gwqDCoMKgwqDC oCBpbnQgcmV0Ow0KPj4gwqAgLcKgwqDCoCBpZiAoIShzdXBwb3J0ZWRfZmVhdHVyZXMgJiBVTklX SUxMX0ZFQVRVUkVfQkFUVEVSWSkpDQo+PiArwqDCoMKgIGlmICghdW5pd2lsbF9kZXZpY2Vfc3Vw cG9ydHMoZGF0YSwgVU5JV0lMTF9GRUFUVVJFX0JBVFRFUlkpKQ0KPj4gwqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiAwOw0KPj4gwqAgwqDCoMKgwqDCoCByZXQgPSBkZXZtX211dGV4X2luaXQoZGF0 YS0+ZGV2LCAmZGF0YS0+YmF0dGVyeV9sb2NrKTsNCj4+IEBAIC0xMzYxLDYgKzEzODAsMTkgQEAg c3RhdGljIGludCB1bml3aWxsX3Byb2JlKHN0cnVjdCANCj4+IHBsYXRmb3JtX2RldmljZSAqcGRl dikNCj4+IMKgwqDCoMKgwqAgaWYgKHJldCA8IDApDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIHJldDsNCj4+IMKgICvCoMKgwqAgZGF0YS0+ZmVhdHVyZXMgPSBkZXZpY2VfZGVzY3JpcHRv ci5mZWF0dXJlczsNCj4+ICsNCj4+ICvCoMKgwqAgLyoNCj4+ICvCoMKgwqDCoCAqIFNvbWUgZGV2 aWNlcyBtaWdodCBuZWVkIHRvIHBlcmZvcm0gc29tZSBkZXZpY2Utc3BlY2lmaWMgDQo+PiBpbml0 aWFsaXphdGlvbiBzdGVwcw0KPj4gK8KgwqDCoMKgICogYmVmb3JlIHRoZSBzdXBwb3J0ZWQgZmVh dHVyZXMgYXJlIGluaXRpYWxpemVkLiBCZWNhdXNlIG9mIA0KPj4gdGhpcyB3ZSBoYXZlIHRvIGNh bGwNCj4+ICvCoMKgwqDCoCAqIHRoaXMgY2FsbGJhY2sganVzdCBhZnRlciB0aGUgRUMgaXRzZWxm IHdhcyBpbml0aWFsaXplZC4NCj4+ICvCoMKgwqDCoCAqLw0KPj4gK8KgwqDCoCBpZiAoZGV2aWNl X2Rlc2NyaXB0b3IucHJvYmUpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSBkZXZpY2VfZGVz Y3JpcHRvci5wcm9iZShkYXRhKTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+PiArwqDCoMKgIH0NCj4+ICsN Cj4+IMKgwqDCoMKgwqAgcmV0ID0gdW5pd2lsbF9iYXR0ZXJ5X2luaXQoZGF0YSk7DQo+PiDCoMKg wqDCoMKgIGlmIChyZXQgPCAwKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+ PiBAQCAtMTM4NSw3ICsxNDE3LDcgQEAgc3RhdGljIHZvaWQgdW5pd2lsbF9zaHV0ZG93bihzdHJ1 Y3QgDQo+PiBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+PiDCoCDCoCBzdGF0aWMgaW50IHVuaXdp bGxfc3VzcGVuZF9rZXlib2FyZChzdHJ1Y3QgdW5pd2lsbF9kYXRhICpkYXRhKQ0KPj4gwqAgew0K Pj4gLcKgwqDCoCBpZiAoIShzdXBwb3J0ZWRfZmVhdHVyZXMgJiBVTklXSUxMX0ZFQVRVUkVfU1VQ RVJfS0VZX1RPR0dMRSkpDQo+PiArwqDCoMKgIGlmICghdW5pd2lsbF9kZXZpY2Vfc3VwcG9ydHMo ZGF0YSwgDQo+PiBVTklXSUxMX0ZFQVRVUkVfU1VQRVJfS0VZX1RPR0dMRSkpDQo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuIDA7DQo+PiDCoCDCoMKgwqDCoMKgIC8qDQo+PiBAQCAtMTM5Nyw3 ICsxNDI5LDcgQEAgc3RhdGljIGludCB1bml3aWxsX3N1c3BlbmRfa2V5Ym9hcmQoc3RydWN0IA0K Pj4gdW5pd2lsbF9kYXRhICpkYXRhKQ0KPj4gwqAgwqAgc3RhdGljIGludCB1bml3aWxsX3N1c3Bl bmRfYmF0dGVyeShzdHJ1Y3QgdW5pd2lsbF9kYXRhICpkYXRhKQ0KPj4gwqAgew0KPj4gLcKgwqDC oCBpZiAoIShzdXBwb3J0ZWRfZmVhdHVyZXMgJiBVTklXSUxMX0ZFQVRVUkVfQkFUVEVSWSkpDQo+ PiArwqDCoMKgIGlmICghdW5pd2lsbF9kZXZpY2Vfc3VwcG9ydHMoZGF0YSwgVU5JV0lMTF9GRUFU VVJFX0JBVFRFUlkpKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPj4gwqAgwqDC oMKgwqDCoCAvKg0KPj4gQEAgLTE0MzIsNyArMTQ2NCw3IEBAIHN0YXRpYyBpbnQgdW5pd2lsbF9y ZXN1bWVfa2V5Ym9hcmQoc3RydWN0IA0KPj4gdW5pd2lsbF9kYXRhICpkYXRhKQ0KPj4gwqDCoMKg wqDCoCB1bnNpZ25lZCBpbnQgdmFsdWU7DQo+PiDCoMKgwqDCoMKgIGludCByZXQ7DQo+PiDCoCAt wqDCoMKgIGlmICghKHN1cHBvcnRlZF9mZWF0dXJlcyAmIFVOSVdJTExfRkVBVFVSRV9TVVBFUl9L RVlfVE9HR0xFKSkNCj4+ICvCoMKgwqAgaWYgKCF1bml3aWxsX2RldmljZV9zdXBwb3J0cyhkYXRh LCANCj4+IFVOSVdJTExfRkVBVFVSRV9TVVBFUl9LRVlfVE9HR0xFKSkNCj4+IMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm4gMDsNCj4+IMKgIMKgwqDCoMKgwqAgcmV0ID0gcmVnbWFwX3JlYWQoZGF0 YS0+cmVnbWFwLCBFQ19BRERSX1NXSVRDSF9TVEFUVVMsICZ2YWx1ZSk7DQo+PiBAQCAtMTQ0OCw3 ICsxNDgwLDcgQEAgc3RhdGljIGludCB1bml3aWxsX3Jlc3VtZV9rZXlib2FyZChzdHJ1Y3QgDQo+ PiB1bml3aWxsX2RhdGEgKmRhdGEpDQo+PiDCoCDCoCBzdGF0aWMgaW50IHVuaXdpbGxfcmVzdW1l X2JhdHRlcnkoc3RydWN0IHVuaXdpbGxfZGF0YSAqZGF0YSkNCj4+IMKgIHsNCj4+IC3CoMKgwqAg aWYgKCEoc3VwcG9ydGVkX2ZlYXR1cmVzICYgVU5JV0lMTF9GRUFUVVJFX0JBVFRFUlkpKQ0KPj4g K8KgwqDCoCBpZiAoIXVuaXdpbGxfZGV2aWNlX3N1cHBvcnRzKGRhdGEsIFVOSVdJTExfRkVBVFVS RV9CQVRURVJZKSkNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsNCj4+IMKgIMKgwqDC oMKgwqAgcmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhkYXRhLT5yZWdtYXAsIEVDX0FERFJfQ0hB UkdFX0NUUkwsIA0KPj4gQ0hBUkdFX0NUUkxfTUFTSywNCj4+IEBAIC0xNDk2LDYgKzE1MjgsMjUg QEAgc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgdW5pd2lsbF9kcml2ZXIgPSB7DQo+PiDC oMKgwqDCoMKgIC5zaHV0ZG93biA9IHVuaXdpbGxfc2h1dGRvd24sDQo+PiDCoCB9Ow0KPj4gwqAg K3N0YXRpYyBzdHJ1Y3QgdW5pd2lsbF9kZXZpY2VfZGVzY3JpcHRvciBsYXBhYzcxaF9kZXNjcmlw dG9yIA0KPj4gX19pbml0ZGF0YSA9IHsNCj4+ICvCoMKgwqAgLmZlYXR1cmVzID0gVU5JV0lMTF9G RUFUVVJFX0ZOX0xPQ0tfVE9HR0xFIHwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFVOSVdJ TExfRkVBVFVSRV9TVVBFUl9LRVlfVE9HR0xFIHwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFVOSVdJTExfRkVBVFVSRV9UT1VDSFBBRF9UT0dHTEUgfA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgVU5JV0lMTF9GRUFUVVJFX0JBVFRFUlkgfA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgVU5JV0lMTF9GRUFUVVJFX0hXTU9ODQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgc3RydWN0 IHVuaXdpbGxfZGV2aWNlX2Rlc2NyaXB0b3IgbGFwa2M3MWZfZGVzY3JpcHRvciANCj4+IF9faW5p dGRhdGEgPSB7DQo+PiArwqDCoMKgIC5mZWF0dXJlcyA9IFVOSVdJTExfRkVBVFVSRV9GTl9MT0NL X1RPR0dMRSB8DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBVTklXSUxMX0ZFQVRVUkVfU1VQ RVJfS0VZX1RPR0dMRSB8DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBVTklXSUxMX0ZFQVRV UkVfVE9VQ0hQQURfVE9HR0xFIHwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFVOSVdJTExf RkVBVFVSRV9MSUdIVEJBUiB8DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBVTklXSUxMX0ZF QVRVUkVfQkFUVEVSWSB8DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBVTklXSUxMX0ZFQVRV UkVfSFdNT04NCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1Y3QgdW5pd2lsbF9kZXZpY2Vf ZGVzY3JpcHRvciBlbXB0eV9kZXNjcmlwdG9yIF9faW5pdGRhdGEgDQo+PiA9IHt9Ow0KPj4gKw0K Pj4gwqAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkIHVuaXdpbGxfZG1pX3RhYmxl W10gX19pbml0Y29uc3QgPSB7DQo+PiDCoMKgwqDCoMKgIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDC oCAuaWRlbnQgPSAiWE1HIEZVU0lPTiAxNSIsDQo+PiBAQCAtMTUwMyw2ICsxNTU0LDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkIA0KPj4gdW5pd2lsbF9kbWlfdGFibGVbXSBf X2luaXRjb25zdCA9IHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9NQVRDSChE TUlfU1lTX1ZFTkRPUiwgIlNjaGVua2VyVGVjaG5vbG9naWVzR21iSCIpLA0KPj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgRE1JX0VYQUNUX01BVENIKERNSV9CT0FSRF9OQU1FLCAiTEFQUUM3 MUEiKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5kcml2 ZXJfZGF0YSA9ICZlbXB0eV9kZXNjcmlwdG9yLA0KPj4gwqDCoMKgwqDCoCB9LA0KPj4gwqDCoMKg wqDCoCB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLmlkZW50ID0gIlhNRyBGVVNJT04gMTUiLA0K Pj4gQEAgLTE1MTAsNiArMTU2Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9p ZCANCj4+IHVuaXdpbGxfZG1pX3RhYmxlW10gX19pbml0Y29uc3QgPSB7DQo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBETUlfTUFUQ0goRE1JX1NZU19WRU5ET1IsICJTY2hlbmtlclRlY2hu b2xvZ2llc0dtYkgiKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9FWEFDVF9N QVRDSChETUlfQk9BUkRfTkFNRSwgIkxBUFFDNzFCIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg fSwNCj4+ICvCoMKgwqDCoMKgwqDCoCAuZHJpdmVyX2RhdGEgPSAmZW1wdHlfZGVzY3JpcHRvciwN Cj4+IMKgwqDCoMKgwqAgfSwNCj4+IMKgwqDCoMKgwqAgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKg IC5pZGVudCA9ICJJbnRlbCBOVUMgeDE1IiwNCj4+IEBAIC0xNTE3LDExICsxNTcwLDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkIA0KPj4gdW5pd2lsbF9kbWlfdGFibGVbXSBf X2luaXRjb25zdCA9IHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9FWEFDVF9N QVRDSChETUlfU1lTX1ZFTkRPUiwgIkludGVsKFIpIENsaWVudCANCj4+IFN5c3RlbXMiKSwNCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9FWEFDVF9NQVRDSChETUlfUFJPRFVDVF9O QU1FLCAiTEFQQUM3MUgiKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPj4gLcKgwqDCoMKg wqDCoMKgIC5kcml2ZXJfZGF0YSA9ICh2b2lkICopKFVOSVdJTExfRkVBVFVSRV9GTl9MT0NLX1RP R0dMRSB8DQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVU5JV0lM TF9GRUFUVVJFX1NVUEVSX0tFWV9UT0dHTEUgfA0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFVOSVdJTExfRkVBVFVSRV9UT1VDSFBBRF9UT0dHTEUgfA0KPj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFVOSVdJTExfRkVBVFVSRV9CQVRU RVJZIHwNCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBVTklXSUxM X0ZFQVRVUkVfSFdNT04pLA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5kcml2ZXJfZGF0YSA9ICZsYXBh YzcxaF9kZXNjcmlwdG9yLA0KPj4gwqDCoMKgwqDCoCB9LA0KPj4gwqDCoMKgwqDCoCB7DQo+PiDC oMKgwqDCoMKgwqDCoMKgwqAgLmlkZW50ID0gIkludGVsIE5VQyB4MTUiLA0KPj4gQEAgLTE1Mjks MTIgKzE1NzgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgDQo+PiB1bml3 aWxsX2RtaV90YWJsZVtdIF9faW5pdGNvbnN0ID0gew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgRE1JX0VYQUNUX01BVENIKERNSV9TWVNfVkVORE9SLCAiSW50ZWwoUikgQ2xpZW50IA0K Pj4gU3lzdGVtcyIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX0VYQUNUX01B VENIKERNSV9QUk9EVUNUX05BTUUsICJMQVBLQzcxRiIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKg IH0sDQo+PiAtwqDCoMKgwqDCoMKgwqAgLmRyaXZlcl9kYXRhID0gKHZvaWQgKikoVU5JV0lMTF9G RUFUVVJFX0ZOX0xPQ0tfVE9HR0xFIHwNCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBVTklXSUxMX0ZFQVRVUkVfU1VQRVJfS0VZX1RPR0dMRSB8DQo+PiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVU5JV0lMTF9GRUFUVVJFX1RPVUNIUEFE X1RPR0dMRSB8DQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVU5J V0lMTF9GRUFUVVJFX0xJR0hUQkFSIHwNCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBVTklXSUxMX0ZFQVRVUkVfQkFUVEVSWSB8DQo+PiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVU5JV0lMTF9GRUFUVVJFX0hXTU9OKSwNCj4+ICvCoMKg wqDCoMKgwqDCoCAuZHJpdmVyX2RhdGEgPSAmbGFwa2M3MWZfZGVzY3JpcHRvciwNCj4+IMKgwqDC oMKgwqAgfSwNCj4+IMKgwqDCoMKgwqAgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIC5pZGVudCA9 ICJUVVhFRE8gSW5maW5pdHlCb29rIFBybyAxNCBHZW42IEludGVsIiwNCj4+IEBAIC0xNTQyLDYg KzE1ODYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgDQo+PiB1bml3aWxs X2RtaV90YWJsZVtdIF9faW5pdGNvbnN0ID0gew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiVFVYRURPIiksDQo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBETUlfRVhBQ1RfTUFUQ0goRE1JX0JPQVJEX05BTUUsICJQSHhUeFgxIiks DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfSwNCj4+ICvCoMKgwqDCoMKgwqDCoCAuZHJpdmVyX2Rh dGEgPSAmZW1wdHlfZGVzY3JpcHRvciwNCj4+IMKgwqDCoMKgwqAgfSwNCj4+IMKgwqDCoMKgwqAg ew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIC5pZGVudCA9ICJUVVhFRE8gSW5maW5pdHlCb29rIFBy byAxNCBHZW42IEludGVsIiwNCj4+IEBAIC0xNTQ5LDYgKzE1OTQsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGRtaV9zeXN0ZW1faWQgDQo+PiB1bml3aWxsX2RtaV90YWJsZVtdIF9faW5pdGNvbnN0 ID0gew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX01BVENIKERNSV9TWVNfVkVO RE9SLCAiVFVYRURPIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlfRVhBQ1Rf TUFUQ0goRE1JX0JPQVJEX05BTUUsICJQSHhUUXgxIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg fSwNCj4+ICvCoMKgwqDCoMKgwqDCoCAuZHJpdmVyX2RhdGEgPSAmZW1wdHlfZGVzY3JpcHRvciwN Cj4+IMKgwqDCoMKgwqAgfSwNCj4+IMKgwqDCoMKgwqAgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKg IC5pZGVudCA9ICJUVVhFRE8gSW5maW5pdHlCb29rIFBybyAxNC8xNiBHZW43IEludGVsIiwNCj4+ IEBAIC0xNTU2LDYgKzE2MDIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQg DQo+PiB1bml3aWxsX2RtaV90YWJsZVtdIF9faW5pdGNvbnN0ID0gew0KPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiVFVYRURPIiksDQo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlfRVhBQ1RfTUFUQ0goRE1JX0JPQVJEX05BTUUs ICJQSHhBUlgxX1BIeEFRRjEiKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPj4gK8KgwqDC oMKgwqDCoMKgIC5kcml2ZXJfZGF0YSA9ICZlbXB0eV9kZXNjcmlwdG9yLA0KPj4gwqDCoMKgwqDC oCB9LA0KPj4gwqDCoMKgwqDCoCB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLmlkZW50ID0gIlRV WEVETyBJbmZpbml0eUJvb2sgUHJvIDE2IEdlbjcgSW50ZWwvQ29tbW9kb3JlIA0KPj4gT21uaWEt Qm9vayBQcm8gR2VuIDciLA0KPj4gQEAgLTE1NjMsNiArMTYxMCw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZG1pX3N5c3RlbV9pZCANCj4+IHVuaXdpbGxfZG1pX3RhYmxlW10gX19pbml0Y29uc3Qg PSB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlfTUFUQ0goRE1JX1NZU19WRU5E T1IsICJUVVhFRE8iKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9FWEFDVF9N QVRDSChETUlfQk9BUkRfTkFNRSwgDQo+PiAiUEg2QUcwMV9QSDZBUTcxX1BINkFRSTEiKSwNCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5kcml2ZXJfZGF0YSA9 ICZlbXB0eV9kZXNjcmlwdG9yLA0KPj4gwqDCoMKgwqDCoCB9LA0KPj4gwqDCoMKgwqDCoCB7DQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgLmlkZW50ID0gIlRVWEVETyBJbmZpbml0eUJvb2sgUHJvIDE0 LzE2IEdlbjggDQo+PiBJbnRlbC9Db21tb2RvcmUgT21uaWEtQm9vayBQcm8gR2VuIDgiLA0KPj4g QEAgLTE1NzAsNiArMTYxOCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAN Cj4+IHVuaXdpbGxfZG1pX3RhYmxlW10gX19pbml0Y29uc3QgPSB7DQo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBETUlfTUFUQ0goRE1JX1NZU19WRU5ET1IsICJUVVhFRE8iKSwNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9FWEFDVF9NQVRDSChETUlfQk9BUkRfTkFNRSwg IlBINFBSWDFfUEg2UFJYMSIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0sDQo+PiArwqDCoMKg wqDCoMKgwqAgLmRyaXZlcl9kYXRhID0gJmVtcHR5X2Rlc2NyaXB0b3IsDQo+PiDCoMKgwqDCoMKg IH0sDQo+PiDCoMKgwqDCoMKgIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAuaWRlbnQgPSAiVFVY RURPIEluZmluaXR5Qm9vayBQcm8gMTQgR2VuOCBJbnRlbC9Db21tb2RvcmUgDQo+PiBPbW5pYS1C b29rIFBybyBHZW4gOCIsDQo+PiBAQCAtMTU3Nyw2ICsxNjI2LDcgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBkbWlfc3lzdGVtX2lkIA0KPj4gdW5pd2lsbF9kbWlfdGFibGVbXSBfX2luaXRjb25zdCA9 IHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9NQVRDSChETUlfU1lTX1ZFTkRP UiwgIlRVWEVETyIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX0VYQUNUX01B VENIKERNSV9CT0FSRF9OQU1FLCAiUEg0UEczMSIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0s DQo+PiArwqDCoMKgwqDCoMKgwqAgLmRyaXZlcl9kYXRhID0gJmVtcHR5X2Rlc2NyaXB0b3IsDQo+ PiDCoMKgwqDCoMKgIH0sDQo+PiDCoMKgwqDCoMKgIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAu aWRlbnQgPSAiVFVYRURPIEluZmluaXR5Qm9vayBQcm8gMTYgR2VuOCBJbnRlbCIsDQo+PiBAQCAt MTU4NCw2ICsxNjM0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkIA0KPj4g dW5pd2lsbF9kbWlfdGFibGVbXSBfX2luaXRjb25zdCA9IHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIERNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIlRVWEVETyIpLA0KPj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX0VYQUNUX01BVENIKERNSV9CT0FSRF9OQU1FLCAiUEg2 UEcwMV9QSDZQRzcxIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfSwNCj4+ICvCoMKgwqDCoMKg wqDCoCAuZHJpdmVyX2RhdGEgPSAmZW1wdHlfZGVzY3JpcHRvciwNCj4+IMKgwqDCoMKgwqAgfSwN Cj4+IMKgwqDCoMKgwqAgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIC5pZGVudCA9ICJUVVhFRE8g SW5maW5pdHlCb29rIFBybyAxNC8xNSBHZW45IEFNRCIsDQo+PiBAQCAtMTU5MSw2ICsxNjQyLDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkIA0KPj4gdW5pd2lsbF9kbWlfdGFi bGVbXSBfX2luaXRjb25zdCA9IHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9N QVRDSChETUlfU1lTX1ZFTkRPUiwgIlRVWEVETyIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgRE1JX0VYQUNUX01BVENIKERNSV9CT0FSRF9OQU1FLCAiR1h4SFJYeCIpLA0KPj4gwqDC oMKgwqDCoMKgwqDCoMKgIH0sDQo+PiArwqDCoMKgwqDCoMKgwqAgLmRyaXZlcl9kYXRhID0gJmVt cHR5X2Rlc2NyaXB0b3IsDQo+PiDCoMKgwqDCoMKgIH0sDQo+PiDCoMKgwqDCoMKgIHsNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoCAuaWRlbnQgPSAiVFVYRURPIEluZmluaXR5Qm9vayBQcm8gMTQvMTUg R2VuOSANCj4+IEludGVsL0NvbW1vZG9yZSBPbW5pYS1Cb29rIDE1IEdlbjkiLA0KPj4gQEAgLTE1 OTgsNiArMTY1MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCANCj4+IHVu aXdpbGxfZG1pX3RhYmxlW10gX19pbml0Y29uc3QgPSB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBETUlfTUFUQ0goRE1JX1NZU19WRU5ET1IsICJUVVhFRE8iKSwNCj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIERNSV9FWEFDVF9NQVRDSChETUlfQk9BUkRfTkFNRSwgIkdYeE1S WHgiKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5kcml2 ZXJfZGF0YSA9ICZlbXB0eV9kZXNjcmlwdG9yLA0KPj4gwqDCoMKgwqDCoCB9LA0KPj4gwqDCoMKg wqDCoCB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLmlkZW50ID0gIlRVWEVETyBJbmZpbml0eUJv b2sgUHJvIDE0LzE1IEdlbjEwIEFNRCIsDQo+PiBAQCAtMTYwNSw2ICsxNjU4LDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkIA0KPj4gdW5pd2lsbF9kbWlfdGFibGVbXSBfX2lu aXRjb25zdCA9IHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9NQVRDSChETUlf U1lTX1ZFTkRPUiwgIlRVWEVETyIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1J X0VYQUNUX01BVENIKERNSV9CT0FSRF9OQU1FLCAiWHhIUDROQXgiKSwNCj4+IMKgwqDCoMKgwqDC oMKgwqDCoCB9LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5kcml2ZXJfZGF0YSA9ICZlbXB0eV9kZXNj cmlwdG9yLA0KPj4gwqDCoMKgwqDCoCB9LA0KPj4gwqDCoMKgwqDCoCB7DQo+PiDCoMKgwqDCoMKg wqDCoMKgwqAgLmlkZW50ID0gIlRVWEVETyBJbmZpbml0eUJvb2sgUHJvIDE0LzE1IEdlbjEwIEFN RCIsDQo+PiBAQCAtMTYxMiw2ICsxNjY2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWlfc3lz dGVtX2lkIA0KPj4gdW5pd2lsbF9kbWlfdGFibGVbXSBfX2luaXRjb25zdCA9IHsNCj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIlRVWEVETyIp LA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX0VYQUNUX01BVENIKERNSV9CT0FS RF9OQU1FLCAiWHhLSzROQXhfWHhTUDROQXgiKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0K Pj4gK8KgwqDCoMKgwqDCoMKgIC5kcml2ZXJfZGF0YSA9ICZlbXB0eV9kZXNjcmlwdG9yLA0KPj4g wqDCoMKgwqDCoCB9LA0KPj4gwqDCoMKgwqDCoCB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLmlk ZW50ID0gIlRVWEVETyBJbmZpbml0eUJvb2sgUHJvIDE1IEdlbjEwIEludGVsIiwNCj4+IEBAIC0x NjE5LDYgKzE2NzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgDQo+PiB1 bml3aWxsX2RtaV90YWJsZVtdIF9faW5pdGNvbnN0ID0gew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiVFVYRURPIiksDQo+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBETUlfRVhBQ1RfTUFUQ0goRE1JX0JPQVJEX05BTUUsICJYeEFS NE5BeCIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0sDQo+PiArwqDCoMKgwqDCoMKgwqAgLmRy aXZlcl9kYXRhID0gJmVtcHR5X2Rlc2NyaXB0b3IsDQo+PiDCoMKgwqDCoMKgIH0sDQo+PiDCoMKg wqDCoMKgIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAuaWRlbnQgPSAiVFVYRURPIEluZmluaXR5 Qm9vayBNYXggMTUgR2VuMTAgQU1EIiwNCj4+IEBAIC0xNjI2LDYgKzE2ODIsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgDQo+PiB1bml3aWxsX2RtaV90YWJsZVtdIF9faW5p dGNvbnN0ID0gew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX01BVENIKERNSV9T WVNfVkVORE9SLCAiVFVYRURPIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlf RVhBQ1RfTUFUQ0goRE1JX0JPQVJEX05BTUUsICJYNUtLNDV4U19YNVNQNDV4UyIpLA0KPj4gwqDC oMKgwqDCoMKgwqDCoMKgIH0sDQo+PiArwqDCoMKgwqDCoMKgwqAgLmRyaXZlcl9kYXRhID0gJmVt cHR5X2Rlc2NyaXB0b3IsDQo+PiDCoMKgwqDCoMKgIH0sDQo+PiDCoMKgwqDCoMKgIHsNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoCAuaWRlbnQgPSAiVFVYRURPIEluZmluaXR5Qm9vayBNYXggMTYgR2Vu MTAgQU1EIiwNCj4+IEBAIC0xNjMzLDYgKzE2OTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRt aV9zeXN0ZW1faWQgDQo+PiB1bml3aWxsX2RtaV90YWJsZVtdIF9faW5pdGNvbnN0ID0gew0KPj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiVFVY RURPIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlfRVhBQ1RfTUFUQ0goRE1J X0JPQVJEX05BTUUsICJYNkhQNDV4VSIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0sDQo+PiAr wqDCoMKgwqDCoMKgwqAgLmRyaXZlcl9kYXRhID0gJmVtcHR5X2Rlc2NyaXB0b3IsDQo+PiDCoMKg wqDCoMKgIH0sDQo+PiDCoMKgwqDCoMKgIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAuaWRlbnQg PSAiVFVYRURPIEluZmluaXR5Qm9vayBNYXggMTYgR2VuMTAgQU1EIiwNCj4+IEBAIC0xNjQwLDYg KzE2OTgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgDQo+PiB1bml3aWxs X2RtaV90YWJsZVtdIF9faW5pdGNvbnN0ID0gew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiVFVYRURPIiksDQo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBETUlfRVhBQ1RfTUFUQ0goRE1JX0JPQVJEX05BTUUsICJYNktLNDV4VV9Y NlNQNDV4VSIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0sDQo+PiArwqDCoMKgwqDCoMKgwqAg LmRyaXZlcl9kYXRhID0gJmVtcHR5X2Rlc2NyaXB0b3IsDQo+PiDCoMKgwqDCoMKgIH0sDQo+PiDC oMKgwqDCoMKgIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAuaWRlbnQgPSAiVFVYRURPIEluZmlu aXR5Qm9vayBNYXggMTUgR2VuMTAgSW50ZWwiLA0KPj4gQEAgLTE2NDcsNiArMTcwNiw3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCANCj4+IHVuaXdpbGxfZG1pX3RhYmxlW10g X19pbml0Y29uc3QgPSB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlfTUFUQ0go RE1JX1NZU19WRU5ET1IsICJUVVhFRE8iKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IERNSV9FWEFDVF9NQVRDSChETUlfQk9BUkRfTkFNRSwgIlg1QVI0NXhTIiksDQo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgfSwNCj4+ICvCoMKgwqDCoMKgwqDCoCAuZHJpdmVyX2RhdGEgPSAmZW1wdHlf ZGVzY3JpcHRvciwNCj4+IMKgwqDCoMKgwqAgfSwNCj4+IMKgwqDCoMKgwqAgew0KPj4gwqDCoMKg wqDCoMKgwqDCoMKgIC5pZGVudCA9ICJUVVhFRE8gSW5maW5pdHlCb29rIE1heCAxNiBHZW4xMCBJ bnRlbCIsDQo+PiBAQCAtMTY1NCw2ICsxNzE0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWlf c3lzdGVtX2lkIA0KPj4gdW5pd2lsbF9kbWlfdGFibGVbXSBfX2luaXRjb25zdCA9IHsNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIlRVWEVE TyIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX0VYQUNUX01BVENIKERNSV9C T0FSRF9OQU1FLCAiWDZBUjU1eFUiKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPj4gK8Kg wqDCoMKgwqDCoMKgIC5kcml2ZXJfZGF0YSA9ICZlbXB0eV9kZXNjcmlwdG9yLA0KPj4gwqDCoMKg wqDCoCB9LA0KPj4gwqDCoMKgwqDCoCB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLmlkZW50ID0g IlRVWEVETyBQb2xhcmlzIDE1IEdlbjEgQU1EIiwNCj4+IEBAIC0xNjYxLDYgKzE3MjIsNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgDQo+PiB1bml3aWxsX2RtaV90YWJsZVtd IF9faW5pdGNvbnN0ID0gew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX01BVENI KERNSV9TWVNfVkVORE9SLCAiVFVYRURPIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBETUlfRVhBQ1RfTUFUQ0goRE1JX0JPQVJEX05BTUUsICJQT0xBUklTMTUwMUExNjUwVEkiKSwN Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5kcml2ZXJfZGF0 YSA9ICZlbXB0eV9kZXNjcmlwdG9yLA0KPj4gwqDCoMKgwqDCoCB9LA0KPj4gwqDCoMKgwqDCoCB7 DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLmlkZW50ID0gIlRVWEVETyBQb2xhcmlzIDE1IEdlbjEg QU1EIiwNCj4+IEBAIC0xNjY4LDYgKzE3MzAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9z eXN0ZW1faWQgDQo+PiB1bml3aWxsX2RtaV90YWJsZVtdIF9faW5pdGNvbnN0ID0gew0KPj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiVFVYRURP IiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlfRVhBQ1RfTUFUQ0goRE1JX0JP QVJEX05BTUUsICJQT0xBUklTMTUwMUEyMDYwIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfSwN Cj4+ICvCoMKgwqDCoMKgwqDCoCAuZHJpdmVyX2RhdGEgPSAmZW1wdHlfZGVzY3JpcHRvciwNCj4+ IMKgwqDCoMKgwqAgfSwNCj4+IMKgwqDCoMKgwqAgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIC5p ZGVudCA9ICJUVVhFRE8gUG9sYXJpcyAxNyBHZW4xIEFNRCIsDQo+PiBAQCAtMTY3NSw2ICsxNzM4 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkIA0KPj4gdW5pd2lsbF9kbWlf dGFibGVbXSBfX2luaXRjb25zdCA9IHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERN SV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIlRVWEVETyIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgRE1JX0VYQUNUX01BVENIKERNSV9CT0FSRF9OQU1FLCAiUE9MQVJJUzE3MDFBMTY1 MFRJIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfSwNCj4+ICvCoMKgwqDCoMKgwqDCoCAuZHJp dmVyX2RhdGEgPSAmZW1wdHlfZGVzY3JpcHRvciwNCj4+IMKgwqDCoMKgwqAgfSwNCj4+IMKgwqDC oMKgwqAgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIC5pZGVudCA9ICJUVVhFRE8gUG9sYXJpcyAx NyBHZW4xIEFNRCIsDQo+PiBAQCAtMTY4Miw2ICsxNzQ2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBkbWlfc3lzdGVtX2lkIA0KPj4gdW5pd2lsbF9kbWlfdGFibGVbXSBfX2luaXRjb25zdCA9IHsN Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwg IlRVWEVETyIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX0VYQUNUX01BVENI KERNSV9CT0FSRF9OQU1FLCAiUE9MQVJJUzE3MDFBMjA2MCIpLA0KPj4gwqDCoMKgwqDCoMKgwqDC oMKgIH0sDQo+PiArwqDCoMKgwqDCoMKgwqAgLmRyaXZlcl9kYXRhID0gJmVtcHR5X2Rlc2NyaXB0 b3IsDQo+PiDCoMKgwqDCoMKgIH0sDQo+PiDCoMKgwqDCoMKgIHsNCj4+IMKgwqDCoMKgwqDCoMKg wqDCoCAuaWRlbnQgPSAiVFVYRURPIFBvbGFyaXMgMTUgR2VuMSBJbnRlbCIsDQo+PiBAQCAtMTY4 OSw2ICsxNzU0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkIA0KPj4gdW5p d2lsbF9kbWlfdGFibGVbXSBfX2luaXRjb25zdCA9IHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIERNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIlRVWEVETyIpLA0KPj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgRE1JX0VYQUNUX01BVENIKERNSV9CT0FSRF9OQU1FLCAiUE9MQVJJ UzE1MDFJMTY1MFRJIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfSwNCj4+ICvCoMKgwqDCoMKg wqDCoCAuZHJpdmVyX2RhdGEgPSAmZW1wdHlfZGVzY3JpcHRvciwNCj4+IMKgwqDCoMKgwqAgfSwN Cj4+IMKgwqDCoMKgwqAgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIC5pZGVudCA9ICJUVVhFRE8g UG9sYXJpcyAxNSBHZW4xIEludGVsIiwNCj4+IEBAIC0xNjk2LDYgKzE3NjIsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgDQo+PiB1bml3aWxsX2RtaV90YWJsZVtdIF9faW5p dGNvbnN0ID0gew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX01BVENIKERNSV9T WVNfVkVORE9SLCAiVFVYRURPIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlf RVhBQ1RfTUFUQ0goRE1JX0JPQVJEX05BTUUsICJQT0xBUklTMTUwMUkyMDYwIiksDQo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgfSwNCj4+ICvCoMKgwqDCoMKgwqDCoCAuZHJpdmVyX2RhdGEgPSAmZW1w dHlfZGVzY3JpcHRvciwNCj4+IMKgwqDCoMKgwqAgfSwNCj4+IMKgwqDCoMKgwqAgew0KPj4gwqDC oMKgwqDCoMKgwqDCoMKgIC5pZGVudCA9ICJUVVhFRE8gUG9sYXJpcyAxNyBHZW4xIEludGVsIiwN Cj4+IEBAIC0xNzAzLDYgKzE3NzAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1f aWQgDQo+PiB1bml3aWxsX2RtaV90YWJsZVtdIF9faW5pdGNvbnN0ID0gew0KPj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiVFVYRURPIiksDQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlfRVhBQ1RfTUFUQ0goRE1JX0JPQVJEX05B TUUsICJQT0xBUklTMTcwMUkxNjUwVEkiKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPj4g K8KgwqDCoMKgwqDCoMKgIC5kcml2ZXJfZGF0YSA9ICZlbXB0eV9kZXNjcmlwdG9yLA0KPj4gwqDC oMKgwqDCoCB9LA0KPj4gwqDCoMKgwqDCoCB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLmlkZW50 ID0gIlRVWEVETyBQb2xhcmlzIDE3IEdlbjEgSW50ZWwiLA0KPj4gQEAgLTE3MTAsNiArMTc3OCw3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCANCj4+IHVuaXdpbGxfZG1pX3Rh YmxlW10gX19pbml0Y29uc3QgPSB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlf TUFUQ0goRE1JX1NZU19WRU5ET1IsICJUVVhFRE8iKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIERNSV9FWEFDVF9NQVRDSChETUlfQk9BUkRfTkFNRSwgIlBPTEFSSVMxNzAxSTIwNjAi KSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5kcml2ZXJf ZGF0YSA9ICZlbXB0eV9kZXNjcmlwdG9yLA0KPj4gwqDCoMKgwqDCoCB9LA0KPj4gwqDCoMKgwqDC oCB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLmlkZW50ID0gIlRVWEVETyBUcmluaXR5IDE1IElu dGVsIEdlbjEiLA0KPj4gQEAgLTE3MTcsNiArMTc4Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZG1pX3N5c3RlbV9pZCANCj4+IHVuaXdpbGxfZG1pX3RhYmxlW10gX19pbml0Y29uc3QgPSB7DQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlfTUFUQ0goRE1JX1NZU19WRU5ET1IsICJU VVhFRE8iKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9FWEFDVF9NQVRDSChE TUlfQk9BUkRfTkFNRSwgIlRSSU5JVFkxNTAxSSIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0s DQo+PiArwqDCoMKgwqDCoMKgwqAgLmRyaXZlcl9kYXRhID0gJmVtcHR5X2Rlc2NyaXB0b3IsDQo+ PiDCoMKgwqDCoMKgIH0sDQo+PiDCoMKgwqDCoMKgIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAu aWRlbnQgPSAiVFVYRURPIFRyaW5pdHkgMTcgSW50ZWwgR2VuMSIsDQo+PiBAQCAtMTcyNCw2ICsx Nzk0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkIA0KPj4gdW5pd2lsbF9k bWlfdGFibGVbXSBfX2luaXRjb25zdCA9IHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IERNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIlRVWEVETyIpLA0KPj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgRE1JX0VYQUNUX01BVENIKERNSV9CT0FSRF9OQU1FLCAiVFJJTklUWTE3MDFJ IiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfSwNCj4+ICvCoMKgwqDCoMKgwqDCoCAuZHJpdmVy X2RhdGEgPSAmZW1wdHlfZGVzY3JpcHRvciwNCj4+IMKgwqDCoMKgwqAgfSwNCj4+IMKgwqDCoMKg wqAgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIC5pZGVudCA9ICJUVVhFRE8gUG9sYXJpcyAxNS8x NyBHZW4yIEFNRCIsDQo+PiBAQCAtMTczMSw2ICsxODAyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBkbWlfc3lzdGVtX2lkIA0KPj4gdW5pd2lsbF9kbWlfdGFibGVbXSBfX2luaXRjb25zdCA9IHsN Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwg IlRVWEVETyIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX0VYQUNUX01BVENI KERNSV9CT0FSRF9OQU1FLCAiR014TUd4eCIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0sDQo+ PiArwqDCoMKgwqDCoMKgwqAgLmRyaXZlcl9kYXRhID0gJmVtcHR5X2Rlc2NyaXB0b3IsDQo+PiDC oMKgwqDCoMKgIH0sDQo+PiDCoMKgwqDCoMKgIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAuaWRl bnQgPSAiVFVYRURPIFBvbGFyaXMgMTUvMTcgR2VuMiBJbnRlbCIsDQo+PiBAQCAtMTczOCw2ICsx ODEwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkIA0KPj4gdW5pd2lsbF9k bWlfdGFibGVbXSBfX2luaXRjb25zdCA9IHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IERNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIlRVWEVETyIpLA0KPj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgRE1JX0VYQUNUX01BVENIKERNSV9CT0FSRF9OQU1FLCAiR014Tkd4eCIpLA0K Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0sDQo+PiArwqDCoMKgwqDCoMKgwqAgLmRyaXZlcl9kYXRh ID0gJmVtcHR5X2Rlc2NyaXB0b3IsDQo+PiDCoMKgwqDCoMKgIH0sDQo+PiDCoMKgwqDCoMKgIHsN Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAuaWRlbnQgPSAiVFVYRURPIFN0ZWxsYXJpcy9Qb2xhcmlz IDE1LzE3IEdlbjMgQU1EIiwNCj4+IEBAIC0xNzQ1LDYgKzE4MTgsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGRtaV9zeXN0ZW1faWQgDQo+PiB1bml3aWxsX2RtaV90YWJsZVtdIF9faW5pdGNvbnN0 ID0gew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX01BVENIKERNSV9TWVNfVkVO RE9SLCAiVFVYRURPIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlfRVhBQ1Rf TUFUQ0goRE1JX0JPQVJEX05BTUUsICJHTXhaR3h4IiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAg fSwNCj4+ICvCoMKgwqDCoMKgwqDCoCAuZHJpdmVyX2RhdGEgPSAmZW1wdHlfZGVzY3JpcHRvciwN Cj4+IMKgwqDCoMKgwqAgfSwNCj4+IMKgwqDCoMKgwqAgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKg IC5pZGVudCA9ICJUVVhFRE8gU3RlbGxhcmlzL1BvbGFyaXMgMTUvMTcgR2VuMyBJbnRlbCIsDQo+ PiBAQCAtMTc1Miw2ICsxODI2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lk IA0KPj4gdW5pd2lsbF9kbWlfdGFibGVbXSBfX2luaXRjb25zdCA9IHsNCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIERNSV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIlRVWEVETyIpLA0KPj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX0VYQUNUX01BVENIKERNSV9CT0FSRF9OQU1F LCAiR014VEd4eCIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0sDQo+PiArwqDCoMKgwqDCoMKg wqAgLmRyaXZlcl9kYXRhID0gJmVtcHR5X2Rlc2NyaXB0b3IsDQo+PiDCoMKgwqDCoMKgIH0sDQo+ PiDCoMKgwqDCoMKgIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAuaWRlbnQgPSAiVFVYRURPIFN0 ZWxsYXJpcy9Qb2xhcmlzIDE1LzE3IEdlbjQgQU1EIiwNCj4+IEBAIC0xNzU5LDYgKzE4MzQsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgDQo+PiB1bml3aWxsX2RtaV90YWJs ZVtdIF9faW5pdGNvbnN0ID0gew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX01B VENIKERNSV9TWVNfVkVORE9SLCAiVFVYRURPIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBETUlfRVhBQ1RfTUFUQ0goRE1JX0JPQVJEX05BTUUsICJHTXhSR3h4IiksDQo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgfSwNCj4+ICvCoMKgwqDCoMKgwqDCoCAuZHJpdmVyX2RhdGEgPSAmZW1w dHlfZGVzY3JpcHRvciwNCj4+IMKgwqDCoMKgwqAgfSwNCj4+IMKgwqDCoMKgwqAgew0KPj4gwqDC oMKgwqDCoMKgwqDCoMKgIC5pZGVudCA9ICJUVVhFRE8gU3RlbGxhcmlzIDE1IEdlbjQgSW50ZWwi LA0KPj4gQEAgLTE3NjYsNiArMTg0Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3Rl bV9pZCANCj4+IHVuaXdpbGxfZG1pX3RhYmxlW10gX19pbml0Y29uc3QgPSB7DQo+PiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBETUlfTUFUQ0goRE1JX1NZU19WRU5ET1IsICJUVVhFRE8iKSwN Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9FWEFDVF9NQVRDSChETUlfQk9BUkRf TkFNRSwgIkdNeEFHeHgiKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPj4gK8KgwqDCoMKg wqDCoMKgIC5kcml2ZXJfZGF0YSA9ICZlbXB0eV9kZXNjcmlwdG9yLA0KPj4gwqDCoMKgwqDCoCB9 LA0KPj4gwqDCoMKgwqDCoCB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLmlkZW50ID0gIlRVWEVE TyBQb2xhcmlzIDE1LzE3IEdlbjUgQU1EIiwNCj4+IEBAIC0xNzczLDYgKzE4NTAsNyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgDQo+PiB1bml3aWxsX2RtaV90YWJsZVtdIF9f aW5pdGNvbnN0ID0gew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX01BVENIKERN SV9TWVNfVkVORE9SLCAiVFVYRURPIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBE TUlfRVhBQ1RfTUFUQ0goRE1JX0JPQVJEX05BTUUsICJHTXhYR3h4IiksDQo+PiDCoMKgwqDCoMKg wqDCoMKgwqAgfSwNCj4+ICvCoMKgwqDCoMKgwqDCoCAuZHJpdmVyX2RhdGEgPSAmZW1wdHlfZGVz Y3JpcHRvciwNCj4+IMKgwqDCoMKgwqAgfSwNCj4+IMKgwqDCoMKgwqAgew0KPj4gwqDCoMKgwqDC oMKgwqDCoMKgIC5pZGVudCA9ICJUVVhFRE8gU3RlbGxhcmlzIDE2IEdlbjUgQU1EIiwNCj4+IEBA IC0xNzgwLDYgKzE4NTgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgDQo+ PiB1bml3aWxsX2RtaV90YWJsZVtdIF9faW5pdGNvbnN0ID0gew0KPj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiVFVYRURPIiksDQo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlfRVhBQ1RfTUFUQ0goRE1JX0JPQVJEX05BTUUsICJH TTZYR3hYIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfSwNCj4+ICvCoMKgwqDCoMKgwqDCoCAu ZHJpdmVyX2RhdGEgPSAmZW1wdHlfZGVzY3JpcHRvciwNCj4+IMKgwqDCoMKgwqAgfSwNCj4+IMKg wqDCoMKgwqAgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIC5pZGVudCA9ICJUVVhFRE8gU3RlbGxh cmlzIDE2LzE3IEdlbjUgSW50ZWwvQ29tbW9kb3JlIE9SSU9OIA0KPj4gR2VuIDUiLA0KPj4gQEAg LTE3ODcsNiArMTg2Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCANCj4+ IHVuaXdpbGxfZG1pX3RhYmxlW10gX19pbml0Y29uc3QgPSB7DQo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBETUlfTUFUQ0goRE1JX1NZU19WRU5ET1IsICJUVVhFRE8iKSwNCj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9FWEFDVF9NQVRDSChETUlfQk9BUkRfTkFNRSwgIkdN eFBYeHgiKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5k cml2ZXJfZGF0YSA9ICZlbXB0eV9kZXNjcmlwdG9yLA0KPj4gwqDCoMKgwqDCoCB9LA0KPj4gwqDC oMKgwqDCoCB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLmlkZW50ID0gIlRVWEVETyBTdGVsbGFy aXMgU2xpbSAxNSBHZW42IEFNRCIsDQo+PiBAQCAtMTc5NCw2ICsxODc0LDcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkIA0KPj4gdW5pd2lsbF9kbWlfdGFibGVbXSBfX2luaXRj b25zdCA9IHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9NQVRDSChETUlfU1lT X1ZFTkRPUiwgIlRVWEVETyIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX0VY QUNUX01BVENIKERNSV9CT0FSRF9OQU1FLCAiR014SEd4eCIpLA0KPj4gwqDCoMKgwqDCoMKgwqDC oMKgIH0sDQo+PiArwqDCoMKgwqDCoMKgwqAgLmRyaXZlcl9kYXRhID0gJmVtcHR5X2Rlc2NyaXB0 b3IsDQo+PiDCoMKgwqDCoMKgIH0sDQo+PiDCoMKgwqDCoMKgIHsNCj4+IMKgwqDCoMKgwqDCoMKg wqDCoCAuaWRlbnQgPSAiVFVYRURPIFN0ZWxsYXJpcyBTbGltIDE1IEdlbjYgSW50ZWwvQ29tbW9k b3JlIA0KPj4gT1JJT04gU2xpbSAxNSBHZW42IiwNCj4+IEBAIC0xODAxLDYgKzE4ODIsNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgDQo+PiB1bml3aWxsX2RtaV90YWJsZVtd IF9faW5pdGNvbnN0ID0gew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX01BVENI KERNSV9TWVNfVkVORE9SLCAiVFVYRURPIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBETUlfRVhBQ1RfTUFUQ0goRE1JX0JPQVJEX05BTUUsICJHTTVJWHhBIiksDQo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgfSwNCj4+ICvCoMKgwqDCoMKgwqDCoCAuZHJpdmVyX2RhdGEgPSAmZW1wdHlf ZGVzY3JpcHRvciwNCj4+IMKgwqDCoMKgwqAgfSwNCj4+IMKgwqDCoMKgwqAgew0KPj4gwqDCoMKg wqDCoMKgwqDCoMKgIC5pZGVudCA9ICJUVVhFRE8gU3RlbGxhcmlzIDE2IEdlbjYgSW50ZWwvQ29t bW9kb3JlIE9SSU9OIDE2IA0KPj4gR2VuNiIsDQo+PiBAQCAtMTgwOCw2ICsxODkwLDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkIA0KPj4gdW5pd2lsbF9kbWlfdGFibGVbXSBf X2luaXRjb25zdCA9IHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9NQVRDSChE TUlfU1lTX1ZFTkRPUiwgIlRVWEVETyIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg RE1JX0VYQUNUX01BVENIKERNSV9CT0FSRF9OQU1FLCAiR002SVh4Ql9NQjEiKSwNCj4+IMKgwqDC oMKgwqDCoMKgwqDCoCB9LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5kcml2ZXJfZGF0YSA9ICZlbXB0 eV9kZXNjcmlwdG9yLA0KPj4gwqDCoMKgwqDCoCB9LA0KPj4gwqDCoMKgwqDCoCB7DQo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgLmlkZW50ID0gIlRVWEVETyBTdGVsbGFyaXMgMTYgR2VuNiBJbnRlbC9D b21tb2RvcmUgT1JJT04gMTYgDQo+PiBHZW42IiwNCj4+IEBAIC0xODE1LDYgKzE4OTgsNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgDQo+PiB1bml3aWxsX2RtaV90YWJsZVtd IF9faW5pdGNvbnN0ID0gew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX01BVENI KERNSV9TWVNfVkVORE9SLCAiVFVYRURPIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBETUlfRVhBQ1RfTUFUQ0goRE1JX0JPQVJEX05BTUUsICJHTTZJWHhCX01CMiIpLA0KPj4gwqDC oMKgwqDCoMKgwqDCoMKgIH0sDQo+PiArwqDCoMKgwqDCoMKgwqAgLmRyaXZlcl9kYXRhID0gJmVt cHR5X2Rlc2NyaXB0b3IsDQo+PiDCoMKgwqDCoMKgIH0sDQo+PiDCoMKgwqDCoMKgIHsNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoCAuaWRlbnQgPSAiVFVYRURPIFN0ZWxsYXJpcyAxNyBHZW42IEludGVs L0NvbW1vZG9yZSBPUklPTiAxNyANCj4+IEdlbjYiLA0KPj4gQEAgLTE4MjIsNiArMTkwNiw3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCANCj4+IHVuaXdpbGxfZG1pX3RhYmxl W10gX19pbml0Y29uc3QgPSB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlfTUFU Q0goRE1JX1NZU19WRU5ET1IsICJUVVhFRE8iKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIERNSV9FWEFDVF9NQVRDSChETUlfQk9BUkRfTkFNRSwgIkdNN0lYeE4iKSwNCj4+IMKgwqDC oMKgwqDCoMKgwqDCoCB9LA0KPj4gK8KgwqDCoMKgwqDCoMKgIC5kcml2ZXJfZGF0YSA9ICZlbXB0 eV9kZXNjcmlwdG9yLA0KPj4gwqDCoMKgwqDCoCB9LA0KPj4gwqDCoMKgwqDCoCB7DQo+PiDCoMKg wqDCoMKgwqDCoMKgwqAgLmlkZW50ID0gIlRVWEVETyBTdGVsbGFyaXMgMTYgR2VuNyBBTUQiLA0K Pj4gQEAgLTE4MjksNiArMTkxNCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9p ZCANCj4+IHVuaXdpbGxfZG1pX3RhYmxlW10gX19pbml0Y29uc3QgPSB7DQo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBETUlfTUFUQ0goRE1JX1NZU19WRU5ET1IsICJUVVhFRE8iKSwNCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9FWEFDVF9NQVRDSChETUlfQk9BUkRfTkFN RSwgIlg2RlI1eHhZIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfSwNCj4+ICvCoMKgwqDCoMKg wqDCoCAuZHJpdmVyX2RhdGEgPSAmZW1wdHlfZGVzY3JpcHRvciwNCj4+IMKgwqDCoMKgwqAgfSwN Cj4+IMKgwqDCoMKgwqAgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIC5pZGVudCA9ICJUVVhFRE8g U3RlbGxhcmlzIDE2IEdlbjcgSW50ZWwiLA0KPj4gQEAgLTE4MzYsNiArMTkyMiw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCANCj4+IHVuaXdpbGxfZG1pX3RhYmxlW10gX19p bml0Y29uc3QgPSB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlfTUFUQ0goRE1J X1NZU19WRU5ET1IsICJUVVhFRE8iKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERN SV9FWEFDVF9NQVRDSChETUlfQk9BUkRfTkFNRSwgIlg2QVI1eHhZIiksDQo+PiDCoMKgwqDCoMKg wqDCoMKgwqAgfSwNCj4+ICvCoMKgwqDCoMKgwqDCoCAuZHJpdmVyX2RhdGEgPSAmZW1wdHlfZGVz Y3JpcHRvciwNCj4+IMKgwqDCoMKgwqAgfSwNCj4+IMKgwqDCoMKgwqAgew0KPj4gwqDCoMKgwqDC oMKgwqDCoMKgIC5pZGVudCA9ICJUVVhFRE8gU3RlbGxhcmlzIDE2IEdlbjcgSW50ZWwiLA0KPj4g QEAgLTE4NDMsNiArMTkzMCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAN Cj4+IHVuaXdpbGxfZG1pX3RhYmxlW10gX19pbml0Y29uc3QgPSB7DQo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBETUlfTUFUQ0goRE1JX1NZU19WRU5ET1IsICJUVVhFRE8iKSwNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9FWEFDVF9NQVRDSChETUlfQk9BUkRfTkFNRSwg Ilg2QVI1eHhZX21MRUQiKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPj4gK8KgwqDCoMKg wqDCoMKgIC5kcml2ZXJfZGF0YSA9ICZlbXB0eV9kZXNjcmlwdG9yLA0KPj4gwqDCoMKgwqDCoCB9 LA0KPj4gwqDCoMKgwqDCoCB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLmlkZW50ID0gIlRVWEVE TyBCb29rIEJBMTUgR2VuMTAgQU1EIiwNCj4+IEBAIC0xODUwLDYgKzE5MzgsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgDQo+PiB1bml3aWxsX2RtaV90YWJsZVtdIF9faW5p dGNvbnN0ID0gew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX01BVENIKERNSV9T WVNfVkVORE9SLCAiVFVYRURPIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlf RVhBQ1RfTUFUQ0goRE1JX0JPQVJEX05BTUUsICJQRjVQVTFHIiksDQo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgfSwNCj4+ICvCoMKgwqDCoMKgwqDCoCAuZHJpdmVyX2RhdGEgPSAmZW1wdHlfZGVzY3Jp cHRvciwNCj4+IMKgwqDCoMKgwqAgfSwNCj4+IMKgwqDCoMKgwqAgew0KPj4gwqDCoMKgwqDCoMKg wqDCoMKgIC5pZGVudCA9ICJUVVhFRE8gUHVsc2UgMTQgR2VuMSBBTUQiLA0KPj4gQEAgLTE4NTcs NiArMTk0Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCANCj4+IHVuaXdp bGxfZG1pX3RhYmxlW10gX19pbml0Y29uc3QgPSB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBETUlfTUFUQ0goRE1JX1NZU19WRU5ET1IsICJUVVhFRE8iKSwNCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIERNSV9FWEFDVF9NQVRDSChETUlfQk9BUkRfTkFNRSwgIlBVTFNFMTQw MSIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0sDQo+PiArwqDCoMKgwqDCoMKgwqAgLmRyaXZl cl9kYXRhID0gJmVtcHR5X2Rlc2NyaXB0b3IsDQo+PiDCoMKgwqDCoMKgIH0sDQo+PiDCoMKgwqDC oMKgIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAuaWRlbnQgPSAiVFVYRURPIFB1bHNlIDE1IEdl bjEgQU1EIiwNCj4+IEBAIC0xODY0LDYgKzE5NTQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRt aV9zeXN0ZW1faWQgDQo+PiB1bml3aWxsX2RtaV90YWJsZVtdIF9faW5pdGNvbnN0ID0gew0KPj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiVFVY RURPIiksDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBETUlfRVhBQ1RfTUFUQ0goRE1J X0JPQVJEX05BTUUsICJQVUxTRTE1MDEiKSwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPj4g K8KgwqDCoMKgwqDCoMKgIC5kcml2ZXJfZGF0YSA9ICZlbXB0eV9kZXNjcmlwdG9yLA0KPj4gwqDC oMKgwqDCoCB9LA0KPj4gwqDCoMKgwqDCoCB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgLmlkZW50 ID0gIlRVWEVETyBQdWxzZSAxNSBHZW4yIEFNRCIsDQo+PiBAQCAtMTg3MSw2ICsxOTYyLDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBkbWlfc3lzdGVtX2lkIA0KPj4gdW5pd2lsbF9kbWlfdGFibGVb XSBfX2luaXRjb25zdCA9IHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERNSV9NQVRD SChETUlfU1lTX1ZFTkRPUiwgIlRVWEVETyIpLA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgRE1JX0VYQUNUX01BVENIKERNSV9CT0FSRF9OQU1FLCAiUEY1TFVYRyIpLA0KPj4gwqDCoMKg wqDCoMKgwqDCoMKgIH0sDQo+PiArwqDCoMKgwqDCoMKgwqAgLmRyaXZlcl9kYXRhID0gJmVtcHR5 X2Rlc2NyaXB0b3IsDQo+PiDCoMKgwqDCoMKgIH0sDQo+PiDCoMKgwqDCoMKgIHsgfQ0KPj4gwqAg fTsNCj4+IEBAIC0xODc4LDYgKzE5NzAsNyBAQCBNT0RVTEVfREVWSUNFX1RBQkxFKGRtaSwgdW5p d2lsbF9kbWlfdGFibGUpOw0KPj4gwqAgwqAgc3RhdGljIGludCBfX2luaXQgdW5pd2lsbF9pbml0 KHZvaWQpDQo+PiDCoCB7DQo+PiArwqDCoMKgIGNvbnN0IHN0cnVjdCB1bml3aWxsX2RldmljZV9k ZXNjcmlwdG9yICpkZXNjcmlwdG9yOw0KPj4gwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgZG1pX3N5 c3RlbV9pZCAqaWQ7DQo+PiDCoMKgwqDCoMKgIGludCByZXQ7DQo+PiDCoCBAQCAtMTg4NywxMCAr MTk4MCwyMiBAQCBzdGF0aWMgaW50IF9faW5pdCB1bml3aWxsX2luaXQodm9pZCkNCj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PREVWOw0KPj4gwqAgwqDCoMKgwqDCoMKg wqDCoMKgIC8qIEFzc3VtZSB0aGF0IHRoZSBkZXZpY2Ugc3VwcG9ydHMgYWxsIGZlYXR1cmVzICov DQo+PiAtwqDCoMKgwqDCoMKgwqAgc3VwcG9ydGVkX2ZlYXR1cmVzID0gVUlOVF9NQVg7DQo+PiAr wqDCoMKgwqDCoMKgwqAgZGV2aWNlX2Rlc2NyaXB0b3IuZmVhdHVyZXMgPSBVSU5UX01BWDsNCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCBwcl93YXJuKCJMb2FkaW5nIG9uIGEgcG90ZW50aWFsbHkgdW5z dXBwb3J0ZWQgZGV2aWNlXG4iKTsNCj4+IMKgwqDCoMKgwqAgfSBlbHNlIHsNCj4+IC3CoMKgwqDC oMKgwqDCoCBzdXBwb3J0ZWRfZmVhdHVyZXMgPSAodWludHB0cl90KWlkLT5kcml2ZXJfZGF0YTsN Cj4+ICvCoMKgwqDCoMKgwqDCoCAvKg0KPj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBTb21lIGRldmlj ZXMgbWlnaHQgc3VwcG9ydCBhZGRpdGlvbmFsIGZlYXR1cmVzIGRlcGVuZGluZyBvbg0KPj4gK8Kg wqDCoMKgwqDCoMKgwqAgKiB0aGUgQklPUyB2ZXJzaW9uL2RhdGUsIHNvIHdlIGNhbGwgdGhpcyBj YWxsYmFjayB0byBsZXQgdGhlbQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBtb2RpZnkgdGhlaXIg ZGV2aWNlIGRlc2NyaXB0b3IgYWNjb3JkaW5nbHkuDQo+PiArwqDCoMKgwqDCoMKgwqDCoCAqLw0K Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChpZC0+Y2FsbGJhY2spIHsNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldCA9IGlkLT5jYWxsYmFjayhpZCk7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpZiAocmV0IDwgMCkNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIHJldDsNCj4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAg ZGVzY3JpcHRvciA9IGlkLT5kcml2ZXJfZGF0YTsNCj4+ICvCoMKgwqDCoMKgwqDCoCBkZXZpY2Vf ZGVzY3JpcHRvciA9ICpkZXNjcmlwdG9yOw0KPj4gwqDCoMKgwqDCoCB9DQo+PiDCoCDCoMKgwqDC oMKgIHJldCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigmdW5pd2lsbF9kcml2ZXIpOw0KPg0K