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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C7996C64ED6 for ; Thu, 23 Feb 2023 12:49:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234240AbjBWMto (ORCPT ); Thu, 23 Feb 2023 07:49:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45250 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233296AbjBWMtm (ORCPT ); Thu, 23 Feb 2023 07:49:42 -0500 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 67E9043443 for ; Thu, 23 Feb 2023 04:49:37 -0800 (PST) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 18A115D914; Thu, 23 Feb 2023 12:49:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1677156576; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=M/Q+nNesS0ytR4muEQsaaQQp7wGmRQx3riXv6mk3HeQ=; b=dl5ALKn2Twmo46A2IDOxI79opPgP0R0PI8FmdRy8AwAg0vDIWqox9d7Wba5vcXc4W+YUVC x2pW37ywgHgEInv8Z7TTfPtdpTbSM8RvB2qId6JKV7sdh6TtXEc/Nzb8uTXSWdpM5UrxOE 0nJVn0ZIy0mZlKv4bPCB0QmjDTYFzP4= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1677156576; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=M/Q+nNesS0ytR4muEQsaaQQp7wGmRQx3riXv6mk3HeQ=; b=a5eH3dcIUmAa8fhEGRLycEGSQeW6ZE9K/doYcrQMLTe7XowiNjaQ75onLsVsLttdjruoJt 8SulhKjBThOBctCQ== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id BBBFF139B5; Thu, 23 Feb 2023 12:49:35 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id mijwLN9g92PlXQAAMHmgww (envelope-from ); Thu, 23 Feb 2023 12:49:35 +0000 Message-ID: <2478426e-11fd-de23-2059-e7b7249943c2@suse.de> Date: Thu, 23 Feb 2023 13:49:34 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH v2] drm: add kms driver for loongson display controller To: Sui Jingfeng <15330273260@189.cn>, Sui jingfeng , Maarten Lankhorst , Maxime Ripard , David Airlie , Daniel Vetter Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org References: <20230205161724.488421-1-15330273260@189.cn> <1b9df663-5dbc-d7f2-a1d6-41594983f1f0@suse.de> <423287b6-a25e-299a-bb35-783507dcbf16@loongson.cn> <8f9a31fb-edb6-db16-414b-63cc574ce19c@suse.de> <96c4eb5b-aa5c-94c7-25b5-e1ea5a2612df@189.cn> Content-Language: en-US From: Thomas Zimmermann In-Reply-To: <96c4eb5b-aa5c-94c7-25b5-e1ea5a2612df@189.cn> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------dzBq1AU4Njwcq3Hw1ZFZM7m3" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------dzBq1AU4Njwcq3Hw1ZFZM7m3 Content-Type: multipart/mixed; boundary="------------lcNJgwMJ6vxPYCPopHV0HVVn"; protected-headers="v1" From: Thomas Zimmermann To: Sui Jingfeng <15330273260@189.cn>, Sui jingfeng , Maarten Lankhorst , Maxime Ripard , David Airlie , Daniel Vetter Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Message-ID: <2478426e-11fd-de23-2059-e7b7249943c2@suse.de> Subject: Re: [PATCH v2] drm: add kms driver for loongson display controller References: <20230205161724.488421-1-15330273260@189.cn> <1b9df663-5dbc-d7f2-a1d6-41594983f1f0@suse.de> <423287b6-a25e-299a-bb35-783507dcbf16@loongson.cn> <8f9a31fb-edb6-db16-414b-63cc574ce19c@suse.de> <96c4eb5b-aa5c-94c7-25b5-e1ea5a2612df@189.cn> In-Reply-To: <96c4eb5b-aa5c-94c7-25b5-e1ea5a2612df@189.cn> --------------lcNJgwMJ6vxPYCPopHV0HVVn Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMTguMDIuMjMgdW0gMTY6MzAgc2NocmllYiBTdWkgSmluZ2Zlbmc6DQpbLi4u XQ0KPj4NCj4+IE5vIHByb2JsZW0uIEkgdGhpbmsgSSBtZW50aW9uZWQgdGhhdCBpdCB3b3Vs ZG4ndCBtYWtlIHNlbnNlIHRvIG1lcmdlIA0KPj4gdGhlIERSTSBkcml2ZXIgYmVmb3JlIEFD UEkgYW5kL29yIERUIGFyZSByZWFkeS4gU28gd2UgaGF2ZSB0aW1lIHRvIGdldCANCj4+IHRo ZSBkcml2ZXIgaW50byBnb29kIHNoYXBlLg0KPj4NCj4gU2lnaCzCoCA6KA0KPiANCj4gVGhl biBjYW4gd2UgZHJvcCB0aGUgc3VwcG9ydCBmb3IgU29DIGNoaXBzIHRlbXBvcmFyeSzCoCBh bmQgcHJvdmlkZSBEVCANCj4gc3VwcG9ydCBhdCBsYXR0ZXIgdGltZT8NCg0KWWVzLCBvZiBj b3Vyc2UgRFQgY2FuIGJlIHByb3ZpZGVkIGxhdGVyIHdoZW4gaXQgaXMgcmVhZHkuICBJZiB5 b3UgaGF2ZSANCnNvbWV0aGluZyB0aGF0IGlzIGN1cnJlbnRseSB1c2FibGUsIHlvdSBjYW4g c3VibWl0IGl0LiBCdXQgaWYgeW91ciBwYXRjaCANCmRlcGVuZHMgb24gb3RoZXIga2VybmVs IGZlYXR1cmVzLCB0aG9zZSBmZWF0dXJlcyBzaG91bGQgYmUgcmVhZHkgZmlyc3QuIA0KQW5k IGlmIHlvdXIgZHJpdmVyIGNhbm5vdCBiZSB1c2VkIGF0IGFsbCB3aXRob3V0IHRob3NlIGZl YXR1cmVzLCB0aGVyZSdzIA0Kbm8gcG9pbnQgaW4gbWVyZ2luZyB0aGUgZHJpdmVyIHVudGls IHRoZSBmZWF0dXJlIGlzIHJlYWR5Lg0KDQo+IA0KPiB0aGlzIHBhdGNoIGlzIHRhcmdldCB0 byBwcm92aWRpbmcgdGhlIGdlbmVyaWMgcGFydCBvZiBkZXZpY2UgZHJpdmVyIA0KPiBzdXBw b3J0IGZvciBMb29uZ3NvbiBpbnRlZ3JhdGVkIGdyYXBoaWNzLg0KPiANCj4gSSBzZWUgdGhl IGRvdWJsZSBtZW50aW9uIDooLCBidXQgc3RpbGwgd2FudCB0byBtYWtlIHN1cmUgaWYgaXQg aXMgDQo+IG5lZ290aWFibGUuIEJlY2F1c2UgZm9yIHRoZSBEQyBpbiBvdXIgYnJpZGdlIGNo aXAsDQo+IA0KPiB0aGlzIGRyaXZlciBjYW4gYmUgcHJvYmVkIHJlbGlhYmx5LiBUaGUgY29k ZSBzaXplIG9mIHRoaXMgcGF0Y2ggYW5kIHRoZSANCj4gdGVjaG5pY2FsIGRlc2NyaXB0aW9u IG5lZWRlZCBpcyBhY3R1YWxseQ0KPiANCj4gbGFyZ2UgZW5vdWdoIGZvciBtZSB0byBjYXJy eSBvbi4gwqAgSWYgdGhpcyBpcyBub3QgbmVnb3RpYWJsZSwgdGhlbiBpdCBpcyANCj4gb2sg dG8gcHJvdmlkZSBEVCBzdXBwb3J0IGF0IHRoZSBuZXh0IHZlcnNpb24gb2YNCj4gDQo+IHRo aXMgcGF0Y2g/wqAgaXQoZHQgc3VwcG9ydCBwYXRjaCkgdGVuZCB0byBpbmN1cnJpbmfCoCBt b3JlIGNyaXRpY2l6ZS4gSSdtIA0KPiBzY2FyZWQgYW5kIG5vdCB3YW50IHRvIGZhY2UgaXQu DQoNCkFzIEkgc2FpZCBhYm92ZSwgaWYgdGhlIGRyaXZlciBjYW4gYWxyZWFkeSBiZSB1c2Vk IHdpdGggdGhlIGJyaWRnZSBjaGlwLCANCnJlZHVjZSBpdCB0byB0aGUgcmVxdWlyZWQgY29k ZS4gVGhlIERUIHN1cHBvcnQgY2FuIGJlIHN1Ym1pdHRlZCBsYXRlciBvbi4NCg0KSW4gZmFj dCwgeW91IHNob3VsZCB0cnkgdG8gcmVkdWNlIHlvdXIgaW5pdGlhbCBkcml2ZXIgdG8gdGhl IG1pbmltdW0gDQpzaXplIHRoYXQgaXMgdXNlYWJsZS4gVHJ5IHRvIHJlbW92ZSBhbnkgZmVh dHVyZSBvciBmdW5jdGlvbmFsaXR5IHRoYXQgaXMgDQpub3QgY3JpdGljYWwgdG8gZ2V0IHNv bWV0aGluZyBvbiB0aGUgc2NyZWVuLiAgVGhlIGluaXRpYWwgZHJpdmVyIA0Kc3VibWlzc2lv biBpcyB0aGUgaGFyZGVzdC4gIE9uY2UgdGhlIGRyaXZlciBoYXMgYmVlbiBtZXJnZWQsIGl0 IGlzIG11Y2ggDQplYXNpZXIgdG8gYWRkIG5ldyBmZWF0dXJlcyBhbmQgZ2V0IHRoZW0gbWVy Z2VkIHF1aWNrbHkuDQoNCkZpcnN0LXRpbWUgc3VibWl0dGVycyBvZnRlbiB0aGluayB0aGV5 IGhhdmUgdG8gcHJvdmlkZSBhIA0KZmVhdHVyZS1jb21wbGV0ZSBkcml2ZXIuIFNvIHRoZXkg c2VuZCBodWdlIHBhdGNoZXMgdGhhdCBhcmUgaGFyZCB0byANCnVuZGVyc3RhbmQgcmV2aWV3 LiAgVGhvc2UgZHJpdmVycyB0aGVuIGVuZCB1cCBpbiBhbiBlbmRsZXNzIGN5Y2xlIG9mIA0K cmV2aWV3cy4NCg0KSXQncyBiZXR0ZXIgdG8gc3RhcnQgc21hbGwgYW5kIGdyb3cgdGhlIGRy aXZlciBvdmVyIHRpbWUuDQoNCkJlc3QgcmVnYXJkcw0KVGhvbWFzDQoNCj4gDQo+IFdlIGNh biBsZWF2ZSB0aGUgc3VwcG9ydCBmb3Igb3VyIFNvQyBhcyBpbnRlcm5hbCwgdGhvc2UgU29D IGFyZSByZWFsbHkgDQo+IHRhcmdldCBmb3IgbG93IGVuZCBhcHBsaWNhdGlvbi4NCj4gDQo+ IGtlZXAgdGhlbSBiYWNrIGlzIGFjdHVhbGx5IG9rLg0KPiANCj4gDQo+PiBCZXN0IHJlZ2Fy ZHMNCj4+IFRob21hcw0KPj4NCj4+Pg0KPj4+IGFuZCBwcmVwYXJlIG5leHQgdmVyc2lvbi4N Cj4+Pg0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCByZXR1cm4gcGNpX3JlZ2lzdGVyX2RyaXZl cigmbHNkY19wY2lfZHJpdmVyKTsNCj4+Pj4+ICt9DQo+Pj4+PiArbW9kdWxlX2luaXQobHNk Y19tb2R1bGVfaW5pdCk7DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIHZvaWQgX19leGl0IGxz ZGNfbW9kdWxlX2V4aXQodm9pZCkNCj4+Pj4+ICt7DQo+Pj4+PiArwqDCoMKgIHBjaV91bnJl Z2lzdGVyX2RyaXZlcigmbHNkY19wY2lfZHJpdmVyKTsNCj4+Pj4+ICt9DQo+Pj4+PiArbW9k dWxlX2V4aXQobHNkY19tb2R1bGVfZXhpdCk7DQo+Pj4+PiArDQo+Pj4+PiArTU9EVUxFX0RF VklDRV9UQUJMRShwY2ksIGxzZGNfcGNpaWRfbGlzdCk7DQo+Pj4+PiArTU9EVUxFX0FVVEhP UihEUklWRVJfQVVUSE9SKTsNCj4+Pj4+ICtNT0RVTEVfREVTQ1JJUFRJT04oRFJJVkVSX0RF U0MpOw0KPj4+Pj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsNCj4+Pj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX2Rydi5oIA0KPj4+Pj4gYi9kcml2ZXJzL2dw dS9kcm0vbHNkYy9sc2RjX2Rydi5oDQo+Pj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4+ Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi5kNjdkYWUwNDE0Y2ENCj4+Pj4+IC0tLSAvZGV2L251 bGwNCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNfZHJ2LmgNCj4+Pj4+ IEBAIC0wLDAgKzEsMjc0IEBADQo+Pj4+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAgKi8NCj4+Pj4+ICsvKg0KPj4+Pj4gKyAqIEtNUyBkcml2ZXIgZm9yIExvb25n c29uIGRpc3BsYXkgY29udHJvbGxlcg0KPj4+Pj4gKyAqIENvcHlyaWdodCAoQykgMjAyMiBM b29uZ3NvbiBDb3Jwb3JhdGlvbg0KPj4+Pj4gKyAqDQo+Pj4+PiArICogQXV0aG9yczoNCj4+ Pj4+ICsgKsKgwqDCoMKgwqAgTGkgWWkgPGxpeWlAbG9vbmdzb24uY24+DQo+Pj4+PiArICrC oMKgwqDCoMKgIExpIENoZW55YW5nIDxsaWNoZW55YW5nQGxvb25nc29uLmNuPg0KPj4+Pj4g KyAqwqDCoMKgwqDCoCBTdWkgSmluZ2ZlbmcgPHN1aWppbmdmZW5nQGxvb25nc29uLmNuPg0K Pj4+Pj4gKyAqLw0KPj4+Pj4gKw0KPj4+Pj4gKyNpZm5kZWYgX19MU0RDX0RSVl9IX18NCj4+ Pj4+ICsjZGVmaW5lIF9fTFNEQ19EUlZfSF9fDQo+Pj4+PiArDQo+Pj4+PiArI2luY2x1ZGUg PGxpbnV4L2kyYy5oPg0KPj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9pMmMtYWxnby1iaXQuaD4N Cj4+Pj4+ICsNCj4+Pj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5oPg0KPj4+Pj4gKyNp bmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPg0KPj4+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Ny dGMuaD4NCj4+Pj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZS5oPg0KPj4+Pj4gKyNpbmNs dWRlIDxkcm0vZHJtX2Nvbm5lY3Rvci5oPg0KPj4+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Vu Y29kZXIuaD4NCj4+Pj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4NCj4+Pj4+ICsjaW5j bHVkZSA8ZHJtL2RybV9hdG9taWMuaD4NCj4+Pj4+ICsNCj4+Pj4+ICsjaW5jbHVkZSAibHNk Y19yZWdzLmgiDQo+Pj4+PiArI2luY2x1ZGUgImxzZGNfcGxsLmgiDQo+Pj4+PiArDQo+Pj4+ PiArI2RlZmluZSBMU0RDX05VTV9DUlRDwqDCoMKgwqDCoMKgwqDCoMKgwqAgMg0KPj4+Pj4g Kw0KPj4+Pj4gKy8qDQo+Pj4+PiArICogVGhlIGRpc3BsYXkgY29udHJvbGxlciBpbiBMUzdB MjAwMCBpbnRlZ3JhdGUgdGhyZWUgbG9vbmdzb24gDQo+Pj4+PiBzZWxmLW1hZGUNCj4+Pj4+ ICsgKiBlbmNvZGVyLiBEaXNwbGF5IHBpcGUgMCBoYXMgYSB0cmFuc3BhcmVudCBWR0EgZW5j b2RlciBhbmQgYSANCj4+Pj4+IEhETUkgcGh5LA0KPj4+Pj4gKyAqIHRoZXkgYXJlIHBhcmFs bGVsLiBEaXNwbGF5IHBpcGUgMSBoYXMgb25seSBvbmUgSERNSSBwaHkuDQo+Pj4+PiArICrC oMKgwqDCoMKgwqAgX19fX19fX19fX19fX19fX19fX19fXyBfX19fX19fX19fX19fDQo+Pj4+ PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0tK8KgIHwg fMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8DQo+Pj4+PiArICrCoMKgwqDCoMKgIHwgQ1JU QzAgLSstLT4gfCBWR0EgfMKgIC0tLS0+IFZHQSBDb25uZWN0b3IgLS0tPiB8IFZHQSANCj4+ Pj4+IE1vbml0b3IgfDwtLS0rDQo+Pj4+PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDC oCB8wqDCoMKgICstLS0tLSvCoCB8IHxfX19fX19fX19fX19ffMKgwqDCoCB8DQo+Pj4+PiAr ICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHwgX19fX19fX19fX19fX1/CoMKgwqAgfA0KPj4+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKg wqDCoMKgwqAgfMKgwqDCoCArLS0tLS0tKyB8IHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8wqDCoCB8DQo+Pj4+PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoCArLS0+IHwg SERNSSB8IC0tLS0+IEhETUkgQ29ubmVjdG9yIC0tPiB8IEhETUkgDQo+Pj4+PiBNb25pdG9y IHw8LS0rDQo+Pj4+PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Ky0tLS0tLSsgfCB8X19fX19fX19fX19fX198wqDCoCB8DQo+Pj4+PiArICrCoMKgwqDCoMKg IHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICstLS0tLS0rIA0KPj4+Pj4gfMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8DQo+Pj4+PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgaTJjNiB8IA0KPj4+Pj4gPC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+Pj4+PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICstLS0tLS0rwqAgfA0KPj4+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwNCj4+Pj4+ICsgKsKgwqDC oMKgwqAgfMKgwqDCoCBEQyBpbiBMUzdBMjAwMMKgwqDCoCB8DQo+Pj4+PiArICrCoMKgwqDC oMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfA0KPj4+ Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArLS0tLS0tK8KgIHwN Cj4+Pj4+ICsgKsKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCBpMmM3IHwg PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPj4+Pj4gKyAqwqDCoMKgwqDC oCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArLS0tLS0tK8KgIHwgfA0KPj4+Pj4gKyAqwqDC oMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg X19fX19ffF9fX19fX18NCj4+Pj4+ICsgKsKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKy0tLS0tLSvCoCB8IHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8DQo+Pj4+ PiArICrCoMKgwqDCoMKgIHwgQ1JUQzEgLS0tPiB8IEhETUkgfMKgIC0tLS0+IEhETUkgQ29u bmVjdG9yIC0tLT4gfCBIRE1JIA0KPj4+Pj4gTW9uaXRvciB8DQo+Pj4+PiArICrCoMKgwqDC oMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICstLS0tLS0rwqAgfCB8X19fX19fX19fX19f X198DQo+Pj4+PiArICrCoMKgwqDCoMKgIHxfX19fX19fX19fX19fX19fX19fX19ffA0KPj4+ Pj4gKyAqDQo+Pj4+PiArICoNCj4+Pj4+ICsgKiBUaGUgZGlzcGxheSBjb250cm9sbGVyIGlu IExTN0ExMDAwIGludGVncmF0ZSB0d28td2F5IERWTywgZXh0ZXJuYWwNCj4+Pj4+ICsgKiBl bmNvZGVyIGlzIHJlcXVpcmVkIGV4Y2VwdCB1c2UgZGlyZWN0bHkgd2l0aCBkcGkocmdiODg4 KSBwYW5lbC4NCj4+Pj4+ICsgKiBfX19fX19fX19fX19fX19fX19fIF9fX19fX19fXw0KPj4+ Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tfCB8wqDC oMKgwqDCoMKgwqDCoCB8DQo+Pj4+PiArICrCoMKgwqDCoMKgIHzCoCBDUlRDMCAtLT4gfCBE Vk8wIC0tLS0+IEVuY29kZXIwIC0tLT4gQ29ubmVjdG9yMCAtLS0+IHwgDQo+Pj4+PiBEaXNw bGF5IHwNCj4+Pj4+ICsgKsKgwqDCoMKgwqAgfMKgIF/CoMKgIF/CoMKgwqDCoCAtLS0tLS0t fMKgwqDCoMKgwqDCoMKgIF7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXiB8X19fX19fX19f fA0KPj4+Pj4gKyAqwqDCoMKgwqDCoCB8IHwgfCB8IHzCoMKgwqAgLS0tLS0tLXzCoMKgwqDC oMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwNCj4+Pj4+ICsgKsKgwqDCoMKg wqAgfCB8X3wgfF98wqDCoMKgIHwgaTJjNiA8LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsNCj4+ Pj4+ICsgKsKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLS0tLS0tLXwNCj4+ Pj4+ICsgKsKgwqDCoMKgwqAgfMKgIF/CoMKgIF/CoMKgwqDCoCAtLS0tLS0tfA0KPj4+Pj4g KyAqwqDCoMKgwqDCoCB8IHwgfCB8IHzCoMKgwqAgfCBpMmM3IDwtLS0tLS0tLSstLS0tLS0t LS0tLS0tKw0KPj4+Pj4gKyAqwqDCoMKgwqDCoCB8IHxffCB8X3zCoMKgwqAgLS0tLS0tLXzC oMKgwqDCoMKgwqDCoCB8IHwgX19fX19fX19fDQo+Pj4+PiArICrCoMKgwqDCoMKgIHzCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC0tLS0tLS18wqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8IHzCoMKgwqDCoMKgwqDCoMKgIHwNCj4+Pj4+ICsgKsKgwqDCoMKg wqAgfMKgIENSVEMxIC0tPiB8IERWTzEgLS0tLT4gRW5jb2RlcjEgLS0tPiBDb25uZWN0b3Ix IC0tLT4gfCANCj4+Pj4+IFBhbmVswqAgfA0KPj4+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tfCB8X19fX19fX19ffA0KPj4+Pj4gKyAqwqDCoMKg wqDCoCB8X19fX19fX19fX19fX19fX19fX3wNCj4+Pj4+ICsgKg0KPj4+Pj4gKyAqDQo+Pj4+ PiArICogVGhlIGRpc3BsYXkgY29udHJvbGxlciBpbiBMUzJLMTAwMC4NCj4+Pj4+ICsgKiBf X19fX19fX19fX19fX19fX19fIF9fX19fX19fXw0KPj4+Pj4gKyAqwqDCoMKgwqDCoCB8wqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tfCB8wqDCoMKgwqDCoMKgwqDCoCB8DQo+Pj4+ PiArICrCoMKgwqDCoMKgIHzCoCBDUlRDMCAtLT4gfCBEVk8wIC0tLS0+IEVuY29kZXIwIC0t LT4gQ29ubmVjdG9yMCAtLS0+IHwgDQo+Pj4+PiBEaXNwbGF5IHwNCj4+Pj4+ICsgKsKgwqDC oMKgwqAgfMKgIF/CoMKgIF/CoMKgwqDCoCAtLS0tLS0tfMKgwqDCoMKgwqDCoMKgIF7CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBeIHxfX19fX19fX198DQo+Pj4+PiArICrCoMKgwqDC oMKgIHwgfCB8IHwgfMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoCB8wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfA0KPj4+Pj4gKyAqwqDCoMKgwqDCoCB8IHxffCB8 X3zCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqAgKy0tLS0tLSvCoMKgwqDCoMKgwqDC oMKgwqAgfA0KPj4+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDwtLS0tPnwgaTJjMCB8PC0tLS0tLS0tLSsNCj4+Pj4+ICsgKsKgwqDC oMKgwqAgfMKgIERDIGluIExTMksxMDAwwqDCoCB8wqDCoMKgwqAgKy0tLS0tLSsNCj4+Pj4+ ICsgKsKgwqDCoMKgwqAgfMKgIF/CoMKgIF/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKg wqDCoCArLS0tLS0tKw0KPj4+Pj4gKyAqwqDCoMKgwqDCoCB8IHwgfCB8IHzCoMKgwqDCoMKg wqDCoMKgwqDCoCA8LS0tLT58IGkyYzEgfC0tLS0tLS0tLS0rDQo+Pj4+PiArICrCoMKgwqDC oMKgIHwgfF98IHxffMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoCArLS0tLS0tKyB8 IF9fX19fX19fXw0KPj4+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAtLS0tLS0tfMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 IHzCoMKgwqDCoMKgwqDCoMKgIHwNCj4+Pj4+ICsgKsKgwqDCoMKgwqAgfMKgIENSVEMxIC0t PiB8IERWTzEgLS0tLT4gRW5jb2RlcjEgLS0tPiBDb25uZWN0b3IxIC0tLT4gfCANCj4+Pj4+ IFBhbmVswqAgfA0KPj4+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAtLS0tLS0tfCB8X19fX19fX19ffA0KPj4+Pj4gKyAqwqDCoMKgwqDCoCB8X19fX19fX19f X19fX19fX19fX3wNCj4+Pj4+ICsgKg0KPj4+Pj4gKyAqDQo+Pj4+PiArICogVGhlIGRpc3Bs YXkgY29udHJvbGxlciBpbiBMUzJLMDUwMCwgTFMySzA1MDAgaGFzIGEgYnVpbHQtaW4gDQo+ Pj4+PiB0cmFuc3BhcmVudA0KPj4+Pj4gKyAqIFZHQSBlbmNvZGVyIHdoaWNoIGlzIGNvbm5l Y3RlZCB0byBkaXNwbGF5IHBpcGUgMShDUlRDMSkuDQo+Pj4+PiArICogX19fX19fX19fX19f X19fX19fXyBfX19fX19fX18NCj4+Pj4+ICsgKsKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgLS0tLS0tLXwgfMKgwqDCoMKgwqDCoMKgwqAgfA0KPj4+Pj4gKyAqwqDCoMKg wqDCoCB8wqAgQ1JUQzAgLS0+IHwgRFZPMCAtLS0tPiBFbmNvZGVyMCAtLS0+IENvbm5lY3Rv cjAgLS0tPiB8IA0KPj4+Pj4gRGlzcGxheSB8DQo+Pj4+PiArICrCoMKgwqDCoMKgIHzCoCBf wqDCoCBfwqDCoMKgwqAgLS0tLS0tLXzCoMKgwqDCoMKgwqDCoCBewqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgXiB8X19fX19fX19ffA0KPj4+Pj4gKyAqwqDCoMKgwqDCoCB8IHwgfCB8 IHzCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwNCj4+Pj4+ICsgKsKgwqDCoMKgwqAgfCB8X3wgfF98wqDCoMKgwqDC oMKgwqDCoMKgwqAgfMKgwqDCoMKgICstLS0tLS0rwqDCoMKgwqDCoMKgwqDCoMKgIHwNCj4+ Pj4+ICsgKsKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCA8LS0tLT58IGkyYzQgfDwtLS0tLS0tLS0rDQo+Pj4+PiArICrCoMKgwqDCoMKgIHzCoCBE QyBpbiBMUzJLMDUwMMKgwqAgfMKgwqDCoMKgICstLS0tLS0rDQo+Pj4+PiArICrCoMKgwqDC oMKgIHzCoCBfwqDCoCBfwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqAgKy0tLS0t LSsNCj4+Pj4+ICsgKsKgwqDCoMKgwqAgfCB8IHwgfCB8wqDCoMKgwqDCoMKgwqDCoMKgwqAg PC0tLS0+fCBpMmM1IHwtLS0tLS0tLS0tLS0tLS0tLS0tKw0KPj4+Pj4gKyAqwqDCoMKgwqDC oCB8IHxffCB8X3zCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqAgKy0tLS0tLSsgX19f X19ffF9fX19fXw0KPj4+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqAg Ky0tLS0tKyB8IHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfA0KPj4+Pj4gKyAqwqDCoMKg wqDCoCB8IENSVEMxIC0tPiB8IFZHQSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4gfCBW R0EgTW9uaXRvciB8DQo+Pj4+PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDC oCArLS0tLS0rIHwgfF9fX19fX19fX19fX198DQo+Pj4+PiArICrCoMKgwqDCoMKgIHxfX19f X19fX19fX19fX19fX19ffA0KPj4+Pj4gKyAqDQo+Pj4+PiArICogTFM3QTEwMDAgYW5kIExT N0EyMDAwIGFyZSBicmlkZ2UgY2hpcHMsIGhhcyBkZWRpY2F0ZWQgVmlkZW8gUkFNLg0KPj4+ Pj4gKyAqIHdoaWxlIExTMksyMDAwL0xTMksxMDAwL0xTMkswNTAwIGFyZSBTb0MsIHRoZXkg ZG9uJ3QgaGF2ZSANCj4+Pj4+IGRlZGlhY2F0ZWQNCj4+Pj4+ICsgKiBWaWRlbyBSQU0uIFRo ZSBkYyBpbiBMUzJLMjAwMCBpcyBiYXNpY2x5IHNhbWUgd2l0aCB0aGUgZGMgaW4gDQo+Pj4+ PiBMUzdBMTAwMA0KPj4+Pj4gKyAqIGV4Y2VwdCB0aGF0IExTMksyMDAwIGRvbid0IGhhdmUg YSB2aWRlbyBSQU0gYW5kIGhhdmUgb25seSBvbmUgDQo+Pj4+PiBidWlsdC1pbg0KPj4+Pj4g KyAqIGhkbWkgZW5jb2Rlci4NCj4+Pj4+ICsgKg0KPj4+Pj4gKyAqIFRoZXJlIGlzIG9ubHkg YSAxOjEgbWFwcGluZyBvZiBlbmNvZGVycyBhbmQgY29ubmVjdG9ycyBmb3IgdGhlIERDLA0K Pj4+Pj4gKyAqIGVhY2ggQ1JUQyBoYXZlIHR3byBGQiBhZGRyZXNzIHJlZ2lzdGVycy4NCj4+ Pj4+ICsgKi8NCj4+Pj4+ICsNCj4+Pj4+ICtlbnVtIGxvb25nc29uX2NoaXBfZmFtaWx5IHsN Cj4+Pj4+ICvCoMKgwqAgQ0hJUF9VTktOT1dOID0gMCwNCj4+Pj4+ICvCoMKgwqAgQ0hJUF9M UzdBMTAwMCA9IDEswqAgLyogTm9ydGggYnJpZGdlIG9mIA0KPj4+Pj4gTFMzQTMwMDAvTFMz QTQwMDAvTFMzQTUwMDAgKi8NCj4+Pj4+ICvCoMKgwqAgQ0hJUF9MUzdBMjAwMCA9IDIswqAg LyogVXBkYXRlIHZlcnNpb24gb2YgTFM3QTEwMDAsIHdpdGggDQo+Pj4+PiBidWlsdC1pbiBI RE1JIGVuY29kZXIgKi8NCj4+Pj4+ICvCoMKgwqAgQ0hJUF9MUzJLMDUwMCA9IDMswqAgLyog UmVkdWNlZCB2ZXJzaW9uIG9mIExTMksxMDAwLCBzaW5nbGUgDQo+Pj4+PiBjb3JlICovDQo+ Pj4+PiArwqDCoMKgIENISVBfTFMySzEwMDAgPSA0LMKgIC8qIDItQ29yZSBNaXBzNjRyMi9M QTI2NCBTb0MsIDY0LWJpdCwgMS4wIA0KPj4+Pj4gR2h6ICovDQo+Pj4+PiArwqDCoMKgIENI SVBfTFMySzIwMDAgPSA1LMKgIC8qIDItQ29yZSA2NC1iaXQgTEEzNjQgU29DLCAxLjIgfiAx LjUgR2h6ICovDQo+Pj4+PiArwqDCoMKgIENISVBfTEFTVCwNCj4+Pj4+ICt9Ow0KPj4+Pj4g Kw0KPj4+Pj4gK3N0cnVjdCBsc2RjX2Rlc2Mgew0KPj4+Pj4gK8KgwqDCoCBlbnVtIGxvb25n c29uX2NoaXBfZmFtaWx5IGNoaXA7DQo+Pj4+PiArwqDCoMKgIHUzMiBudW1fb2ZfY3J0YzsN Cj4+Pj4+ICvCoMKgwqAgdTMyIG1heF9waXhlbF9jbGs7DQo+Pj4+PiArwqDCoMKgIHUzMiBt YXhfd2lkdGg7DQo+Pj4+PiArwqDCoMKgIHUzMiBtYXhfaGVpZ2h0Ow0KPj4+Pj4gK8KgwqDC oCB1MzIgbnVtX29mX2h3X2N1cnNvcjsNCj4+Pj4+ICvCoMKgwqAgdTMyIGh3X2N1cnNvcl93 Ow0KPj4+Pj4gK8KgwqDCoCB1MzIgaHdfY3Vyc29yX2g7DQo+Pj4+PiArwqDCoMKgIHUzMiBw aXRjaF9hbGlnbjvCoCAvKiBETUEgYWxpZ25tZW50IGNvbnN0cmFpbnQgKi8NCj4+Pj4+ICvC oMKgwqAgdTY0IG1jX2JpdHM7wqDCoMKgwqDCoCAvKiBwaHlzaWNhbCBhZGRyZXNzIGJ1cyBi aXQgd2lkdGggKi8NCj4+Pj4+ICvCoMKgwqAgYm9vbCBoYXNfdmJsYW5rX2NvdW50ZXI7DQo+ Pj4+PiArwqDCoMKgIGJvb2wgaGFzX2J1aWx0aW5faTJjOw0KPj4+Pj4gK8KgwqDCoCBib29s IGhhc192cmFtOw0KPj4+Pj4gK8KgwqDCoCBib29sIGhhc19ocGRfcmVnOw0KPj4+Pj4gK8Kg wqDCoCBib29sIGlzX3NvYzsNCj4+Pj4+ICt9Ow0KPj4+Pj4gKw0KPj4+Pj4gK3N0cnVjdCBs c2RjX2kyYyB7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBpMmNfYWRhcHRlciBhZGFwdGVyOw0K Pj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgaTJjX2FsZ29fYml0X2RhdGEgYml0Ow0KPj4+Pj4gK8Kg wqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldjsNCj4+Pj4+ICvCoMKgwqAgdm9pZCBfX2lv bWVtICpyZWdfYmFzZTsNCj4+Pj4+ICvCoMKgwqAgdm9pZCBfX2lvbWVtICpkaXJfcmVnOw0K Pj4+Pj4gK8KgwqDCoCB2b2lkIF9faW9tZW0gKmRhdF9yZWc7DQo+Pj4+PiArwqDCoMKgIC8q IHBpbiBiaXQgbWFzayAqLw0KPj4+Pj4gK8KgwqDCoCB1OCBzZGE7DQo+Pj4+PiArwqDCoMKg IHU4IHNjbDsNCj4+Pj4+ICt9Ow0KPj4+Pj4gKw0KPj4+Pj4gKy8qDQo+Pj4+PiArICogc3Ry dWN0IGxzZGNfZGlzcGxheV9waXBlIC0gQWJzdHJhY3Rpb24gb2YgaGFyZHdhcmUgZGlzcGxh eSANCj4+Pj4+IHBpcGVsaW5lLg0KPj4+Pj4gKyAqIEBjcnRjOiBDUlRDIGNvbnRyb2wgc3Ry dWN0dXJlDQo+Pj4+PiArICogQHByaW1hcnk6IGZyYW1lYnVmZmVyIHBsYW5lIGNvbnRyb2wg c3RydWN0dXJlDQo+Pj4+PiArICogQGN1cnNvcjogY3Vyc29yIHBsYW5lIGNvbnRyb2wgc3Ry dWN0dXJlDQo+Pj4+PiArICogQG91dHB1dDogb3V0cHV0IGNvbnRyb2wgc3RydWN0dXJlIG9m IHRoaXMgZGlzcGxheSBwaXBlIGJpbmQNCj4+Pj4+ICsgKiBAcGl4cGxsOiBwaXhlbCBwbGwg Y29udHJvbCBzdHJ1Y3R1cmUNCj4+Pj4+ICsgKiBAaW5kZXg6IHRoZSBpbmRleCBjb3JyZXNw b25kaW5nIHRvIHRoZSBoYXJkd2FyZSBkaXNwbGF5IHBpcGUNCj4+Pj4+ICsgKi8NCj4+Pj4+ ICtzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUgew0KPj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJt X2NydGMgY3J0YzsNCj4+Pj4+ICvCoMKgwqAgc3RydWN0IGRybV9wbGFuZSBwcmltYXJ5Ow0K Pj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX3BsYW5lIGN1cnNvcjsNCj4+Pj4+ICvCoMKgwqAg c3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBkcm1f Y29ubmVjdG9yIGNvbm5lY3RvcjsNCj4+Pj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfcGxsIHBp eHBsbDsNCj4+Pj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfaTJjICpsaTJjOw0KPj4+Pj4gK8Kg wqDCoCBpbnQgaW5kZXg7DQo+Pj4+PiArfTsNCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgaW5s aW5lIHN0cnVjdCBsc2RjX2Rpc3BsYXlfcGlwZSAqDQo+Pj4+PiArY3J0Y190b19kaXNwbGF5 X3BpcGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQ0KPj4+Pj4gK3sNCj4+Pj4+ICvCoMKgwqAg cmV0dXJuIGNvbnRhaW5lcl9vZihjcnRjLCBzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUsIGNy dGMpOw0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBs c2RjX2Rpc3BsYXlfcGlwZSAqDQo+Pj4+PiArY3Vyc29yX3RvX2Rpc3BsYXlfcGlwZShzdHJ1 Y3QgZHJtX3BsYW5lICpjdXJzb3IpDQo+Pj4+PiArew0KPj4+Pj4gK8KgwqDCoCByZXR1cm4g Y29udGFpbmVyX29mKGN1cnNvciwgc3RydWN0IGxzZGNfZGlzcGxheV9waXBlLCBjdXJzb3Ip Ow0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBsc2Rj X2Rpc3BsYXlfcGlwZSAqDQo+Pj4+PiArY29ubmVjdG9yX3RvX2Rpc3BsYXlfcGlwZShzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubikNCj4+Pj4+ICt7DQo+Pj4+PiArwqDCoMKgIHJldHVy biBjb250YWluZXJfb2YoY29ubiwgc3RydWN0IGxzZGNfZGlzcGxheV9waXBlLCBjb25uZWN0 b3IpOw0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBs c2RjX2Rpc3BsYXlfcGlwZSAqDQo+Pj4+PiArZW5jb2Rlcl90b19kaXNwbGF5X3BpcGUoc3Ry dWN0IGRybV9lbmNvZGVyICplbmMpDQo+Pj4+PiArew0KPj4+Pj4gK8KgwqDCoCByZXR1cm4g Y29udGFpbmVyX29mKGVuYywgc3RydWN0IGxzZGNfZGlzcGxheV9waXBlLCBlbmNvZGVyKTsN Cj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArc3RydWN0IGxzZGNfY3J0Y19zdGF0ZSB7DQo+ Pj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSBiYXNlOw0KPj4+Pj4gK8KgwqDC oCBzdHJ1Y3QgbHNkY19wbGxfcGFybXMgcHBhcm1zOw0KPj4+Pj4gK307DQo+Pj4+PiArDQo+ Pj4+PiArc3RydWN0IGxzZGNfZGV2aWNlIHsNCj4+Pj4+ICvCoMKgwqAgc3RydWN0IGRybV9k ZXZpY2UgYmFzZTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLyogQHJlZ2xvY2s6IHByb3Rl Y3RzIGNvbmN1cnJlbnQgcmVnaXN0ZXIgYWNjZXNzICovDQo+Pj4+PiArwqDCoMKgIHNwaW5s b2NrX3QgcmVnbG9jazsNCj4+Pj4+ICvCoMKgwqAgdm9pZCBfX2lvbWVtICpyZWdfYmFzZTsN Cj4+Pj4+ICvCoMKgwqAgdm9pZCBfX2lvbWVtICp2cmFtOw0KPj4+Pj4gK8KgwqDCoCByZXNv dXJjZV9zaXplX3QgdnJhbV9iYXNlOw0KPj4+Pj4gK8KgwqDCoCByZXNvdXJjZV9zaXplX3Qg dnJhbV9zaXplOw0KPj4+Pj4gK8KgwqDCoCB1NjQgbWNfbWFzazsNCj4+Pj4+ICsNCj4+Pj4+ ICvCoMKgwqAgc3RydWN0IGxzZGNfZGlzcGxheV9waXBlIGRpc3BpcGVbTFNEQ19OVU1fQ1JU Q107DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIC8qIEBudW1fb3V0cHV0OiBjb3VudCB0aGUg bnVtYmVyIG9mIGFjdGl2ZSBkaXNwbGF5IHBpcGUgKi8NCj4+Pj4+ICvCoMKgwqAgdW5zaWdu ZWQgaW50IG51bV9vdXRwdXQ7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIC8qIEBkZXNjcDog ZmVhdHVyZXMgZGVzY3JpcHRpb24gb2YgdGhlIERDIHZhcmlhbnQgKi8NCj4+Pj4+ICvCoMKg wqAgY29uc3Qgc3RydWN0IGxzZGNfZGVzYyAqZGVzY3A7DQo+Pj4+PiArDQo+Pj4+PiArwqDC oMKgIHUzMiBpcnFfc3RhdHVzOw0KPj4+Pj4gK307DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGlj IGlubGluZSBzdHJ1Y3QgbHNkY19kZXZpY2UgKg0KPj4+Pj4gK3RvX2xzZGMoc3RydWN0IGRy bV9kZXZpY2UgKmRkZXYpDQo+Pj4+PiArew0KPj4+Pj4gK8KgwqDCoCByZXR1cm4gY29udGFp bmVyX29mKGRkZXYsIHN0cnVjdCBsc2RjX2RldmljZSwgYmFzZSk7DQo+Pj4+PiArfQ0KPj4+ Pj4gKw0KPj4+Pj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGxzZGNfY3J0Y19zdGF0ZSAqDQo+ Pj4+PiArdG9fbHNkY19jcnRjX3N0YXRlKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqYmFzZSkN Cj4+Pj4+ICt7DQo+Pj4+PiArwqDCoMKgIHJldHVybiBjb250YWluZXJfb2YoYmFzZSwgc3Ry dWN0IGxzZGNfY3J0Y19zdGF0ZSwgYmFzZSk7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4g K3ZvaWQgbHNkY19kZWJ1Z2ZzX2luaXQoc3RydWN0IGRybV9taW5vciAqbWlub3IpOw0KPj4+ Pj4gKw0KPj4+Pj4gK2ludCBsc2RjX2NydGNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGRl diwNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMs DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IGluZGV4LA0KPj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksDQo+ Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9wbGFuZSAqY3Vyc29yKTsN Cj4+Pj4+ICsNCj4+Pj4+ICtpbnQgbHNkY19wbGFuZV9pbml0KHN0cnVjdCBsc2RjX2Rldmlj ZSAqbGRldiwNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSBkcm1fcGxh bmVfdHlwZSB0eXBlLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQg aW50IGluZGV4KTsNCj4+Pj4+ICsNCj4+Pj4+ICtpbnQgbHNkY19jcmVhdGVfb3V0cHV0KHN0 cnVjdCBsc2RjX2RldmljZSAqbGRldiwgdW5zaWduZWQgaW50IGluZGV4KTsNCj4+Pj4+ICsN Cj4+Pj4+ICtzdHJ1Y3QgbHNkY19pMmMgKmxzZGNfY3JlYXRlX2kyY19jaGFuKHN0cnVjdCBk cm1fZGV2aWNlICpkZGV2LA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB2b2lkICpiYXNlLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgaW5kZXgpOw0KPj4+Pj4gKw0K Pj4+Pj4gK3N0cnVjdCBpMmNfYWRhcHRlciAqbHNkY19nZXRfaTJjX2FkYXB0ZXIoc3RydWN0 IGxzZGNfZGV2aWNlICpsZGV2LCANCj4+Pj4+IGludCBpbmRleCk7DQo+Pj4+PiArDQo+Pj4+ PiAraXJxcmV0dXJuX3QgbHNkY19pcnFfdGhyZWFkX2hhbmRsZXIoaW50IGlycSwgdm9pZCAq YXJnKTsNCj4+Pj4+ICtpcnFfaGFuZGxlcl90IGxzZGNfZ2V0X2lycV9oYW5kbGVyKHN0cnVj dCBsc2RjX2RldmljZSAqbGRldik7DQo+Pj4+PiArDQo+Pj4+PiArdTMyIGxzZGNfcnJlZzMy KHN0cnVjdCBsc2RjX2RldmljZSAqIGNvbnN0IGxkZXYsIHUzMiBvZmZzZXQpOw0KPj4+Pj4g K3ZvaWQgbHNkY193cmVnMzIoc3RydWN0IGxzZGNfZGV2aWNlICogY29uc3QgbGRldiwgdTMy IG9mZnNldCwgdTMyIA0KPj4+Pj4gdmFsKTsNCj4+Pj4+ICsNCj4+Pj4+ICsjZW5kaWYNCj4+ Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX2kyYy5jIA0KPj4+ Pj4gYi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX2kyYy5jDQo+Pj4+PiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi5iMzgwMDk4NDA5Y2ENCj4+ Pj4+IC0tLSAvZGV2L251bGwNCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xz ZGNfaTJjLmMNCj4+Pj4+IEBAIC0wLDAgKzEsMjAxIEBADQo+Pj4+PiArLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4+Pj4+ICsNCj4+Pj4+ICsjaW5jbHVkZSA8bGlu dXgvaTJjLmg+DQo+Pj4+PiArI2luY2x1ZGUgPGRybS9kcm1fbWFuYWdlZC5oPg0KPj4+Pj4g KyNpbmNsdWRlICJsc2RjX2Rydi5oIg0KPj4+Pj4gKyNpbmNsdWRlICJsc2RjX3JlZ3MuaCIN Cj4+Pj4+ICsNCj4+Pj4+ICsvKg0KPj4+Pj4gKyAqIGxzN2FfZ3Bpb19pMmNfc2V0IC0gc2V0 IHRoZSBzdGF0ZSBvZiBhIGdwaW8gcGluIGluZGljYXRlZCBieSBtYXNrDQo+Pj4+PiArICog QG1hc2s6IGdwaW8gcGluIG1hc2sNCj4+Pj4+ICsgKiBAc3RhdGU6ICIwIiBmb3IgbG93LCAi MSIgZm9yIGhpZ2gNCj4+Pj4+ICsgKi8NCj4+Pj4+ICtzdGF0aWMgdm9pZCBsczdhX2dwaW9f aTJjX3NldChzdHJ1Y3QgbHNkY19pMmMgKiBjb25zdCBsaTJjLCBpbnQgDQo+Pj4+PiBtYXNr LCBpbnQgc3RhdGUpDQo+Pj4+PiArew0KPj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZp Y2UgKmxkZXYgPSB0b19sc2RjKGxpMmMtPmRkZXYpOw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25l ZCBsb25nIGZsYWdzOw0KPj4+Pj4gK8KgwqDCoCB1OCB2YWw7DQo+Pj4+PiArDQo+Pj4+PiAr wqDCoMKgIHNwaW5fbG9ja19pcnFzYXZlKCZsZGV2LT5yZWdsb2NrLCBmbGFncyk7DQo+Pj4+ PiArDQo+Pj4+PiArwqDCoMKgIGlmIChzdGF0ZSkgew0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg IC8qDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqIFNldHRpbmcgdGhpcyBwaW4gYXMgaW5w dXQgZGlyZWN0bHksIHdyaXRlIDEgZm9yIElucHV0Lg0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqAgKiBUaGUgZXh0ZXJuYWwgcHVsbC11cCByZXNpc3RvciB3aWxsIHB1bGwgdGhlIGxldmVs IHVwDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg IHZhbCA9IHJlYWRiKGxpMmMtPmRpcl9yZWcpOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHZh bCB8PSBtYXNrOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHdyaXRlYih2YWwsIGxpMmMtPmRp cl9yZWcpOw0KPj4+Pj4gK8KgwqDCoCB9IGVsc2Ugew0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg IC8qIEZpcnN0IHNldCB0aGlzIHBpbiBhcyBvdXRwdXQsIHdyaXRlIDAgZm9yIE91dHB1dCAq Lw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9IHJlYWRiKGxpMmMtPmRpcl9yZWcpOw0K Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHZhbCAmPSB+bWFzazsNCj4+Pj4+ICvCoMKgwqDCoMKg wqDCoCB3cml0ZWIodmFsLCBsaTJjLT5kaXJfcmVnKTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKg wqDCoMKgwqDCoCAvKiBUaGVuLCBtYWtlIHRoaXMgcGluIG91dHB1dCAwICovDQo+Pj4+PiAr wqDCoMKgwqDCoMKgwqAgdmFsID0gcmVhZGIobGkyYy0+ZGF0X3JlZyk7DQo+Pj4+PiArwqDC oMKgwqDCoMKgwqAgdmFsICY9IH5tYXNrOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHdyaXRl Yih2YWwsIGxpMmMtPmRhdF9yZWcpOw0KPj4+Pj4gK8KgwqDCoCB9DQo+Pj4+PiArDQo+Pj4+ PiArwqDCoMKgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxkZXYtPnJlZ2xvY2ssIGZsYWdz KTsNCj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArLyoNCj4+Pj4+ICsgKiBsczdhX2dwaW9f aTJjX2dldCAtIHJlYWQgdmFsdWUgYmFjayBmcm9tIHRoZSBncGlvIHBpbiBpbmRpY2F0ZWQg DQo+Pj4+PiBieSBtYXNrDQo+Pj4+PiArICogQG1hc2s6IGdwaW8gcGluIG1hc2sNCj4+Pj4+ ICsgKiByZXR1cm4gIjAiIGZvciBsb3csICIxIiBmb3IgaGlnaA0KPj4+Pj4gKyAqLw0KPj4+ Pj4gK3N0YXRpYyBpbnQgbHM3YV9ncGlvX2kyY19nZXQoc3RydWN0IGxzZGNfaTJjICogY29u c3QgbGkyYywgaW50IG1hc2spDQo+Pj4+PiArew0KPj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNk Y19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGxpMmMtPmRkZXYpOw0KPj4+Pj4gK8KgwqDCoCB1 bnNpZ25lZCBsb25nIGZsYWdzOw0KPj4+Pj4gK8KgwqDCoCB1OCB2YWw7DQo+Pj4+PiArDQo+ Pj4+PiArwqDCoMKgIHNwaW5fbG9ja19pcnFzYXZlKCZsZGV2LT5yZWdsb2NrLCBmbGFncyk7 DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIC8qIEZpcnN0IHNldCB0aGlzIHBpbiBhcyBpbnB1 dCAqLw0KPj4+Pj4gK8KgwqDCoCB2YWwgPSByZWFkYihsaTJjLT5kaXJfcmVnKTsNCj4+Pj4+ ICvCoMKgwqAgdmFsIHw9IG1hc2s7DQo+Pj4+PiArwqDCoMKgIHdyaXRlYih2YWwsIGxpMmMt PmRpcl9yZWcpOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCAvKiBUaGVuIGdldCBsZXZlbCBz dGF0ZSBmcm9tIHRoaXMgcGluICovDQo+Pj4+PiArwqDCoMKgIHZhbCA9IHJlYWRiKGxpMmMt PmRhdF9yZWcpOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZsZGV2LT5yZWdsb2NrLCBmbGFncyk7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIHJl dHVybiAodmFsICYgbWFzaykgPyAxIDogMDsNCj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiAr c3RhdGljIHZvaWQgbHM3YV9pMmNfc2V0X3NkYSh2b2lkICppMmMsIGludCBzdGF0ZSkNCj4+ Pj4+ICt7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2kyYyAqIGNvbnN0IGxpMmMgPSAo c3RydWN0IGxzZGNfaTJjICopaTJjOw0KPj4+Pj4gK8KgwqDCoCAvKiBzZXQgc3RhdGUgb24g dGhlIGxpMmMtPnNkYSBwaW4gKi8NCj4+Pj4+ICvCoMKgwqAgcmV0dXJuIGxzN2FfZ3Bpb19p MmNfc2V0KGxpMmMsIGxpMmMtPnNkYSwgc3RhdGUpOw0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+ Pj4+ICtzdGF0aWMgdm9pZCBsczdhX2kyY19zZXRfc2NsKHZvaWQgKmkyYywgaW50IHN0YXRl KQ0KPj4+Pj4gK3sNCj4+Pj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfaTJjICogY29uc3QgbGky YyA9IChzdHJ1Y3QgbHNkY19pMmMgKilpMmM7DQo+Pj4+PiArwqDCoMKgIC8qIHNldCBzdGF0 ZSBvbiB0aGUgbGkyYy0+c2NsIHBpbiAqLw0KPj4+Pj4gK8KgwqDCoCByZXR1cm4gbHM3YV9n cGlvX2kyY19zZXQobGkyYywgbGkyYy0+c2NsLCBzdGF0ZSk7DQo+Pj4+PiArfQ0KPj4+Pj4g Kw0KPj4+Pj4gK3N0YXRpYyBpbnQgbHM3YV9pMmNfZ2V0X3NkYSh2b2lkICppMmMpDQo+Pj4+ PiArew0KPj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19pMmMgKiBjb25zdCBsaTJjID0gKHN0 cnVjdCBsc2RjX2kyYyAqKWkyYzsNCj4+Pj4+ICvCoMKgwqAgLyogcmVhZCB2YWx1ZSBmcm9t IHRoZSBsaTJjLT5zZGEgcGluICovDQo+Pj4+PiArwqDCoMKgIHJldHVybiBsczdhX2dwaW9f aTJjX2dldChsaTJjLCBsaTJjLT5zZGEpOw0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICtz dGF0aWMgaW50IGxzN2FfaTJjX2dldF9zY2wodm9pZCAqaTJjKQ0KPj4+Pj4gK3sNCj4+Pj4+ ICvCoMKgwqAgc3RydWN0IGxzZGNfaTJjICogY29uc3QgbGkyYyA9IChzdHJ1Y3QgbHNkY19p MmMgKilpMmM7DQo+Pj4+PiArwqDCoMKgIC8qIHJlYWQgdGhlIHZhbHVlIGZyb20gdGhlIGxp MmMtPnNjbCBwaW4gKi8NCj4+Pj4+ICvCoMKgwqAgcmV0dXJuIGxzN2FfZ3Bpb19pMmNfZ2V0 KGxpMmMsIGxpMmMtPnNjbCk7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyB2 b2lkIGxzZGNfZGVzdHJveV9pMmMoc3RydWN0IGRybV9kZXZpY2UgKmRkZXYsIHZvaWQgKmRh dGEpDQo+Pj4+PiArew0KPj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19pMmMgKmxpMmMgPSAo c3RydWN0IGxzZGNfaTJjICopZGF0YTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgaWYgKGxp MmMpIHsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpMmNfZGVsX2FkYXB0ZXIoJmxpMmMtPmFk YXB0ZXIpOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGtmcmVlKGxpMmMpOw0KPj4+Pj4gK8Kg wqDCoCB9DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gKy8qDQo+Pj4+PiArICogVGhlIERD IGluIGxzN2ExMDAwL2xzN2EyMDAwIGhhdmUgYnVpbHRpbiBncGlvIGhhcmR3YXJlDQo+Pj4+ PiArICoNCj4+Pj4+ICsgKiBAYmFzZTogZ3BpbyByZWcgYmFzZQ0KPj4+Pj4gKyAqIEBpbmRl eDogb3V0cHV0IGNoYW5uZWwgaW5kZXgsIDAgZm9yIERWTzAsIDEgZm9yIERWTzENCj4+Pj4+ ICsgKi8NCj4+Pj4+ICtzdHJ1Y3QgbHNkY19pMmMgKmxzZGNfY3JlYXRlX2kyY19jaGFuKHN0 cnVjdCBkcm1fZGV2aWNlICpkZGV2LA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB2b2lkICpiYXNlLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgaW5kZXgpDQo+Pj4+ PiArew0KPj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXI7DQo+Pj4+ PiArwqDCoMKgIHN0cnVjdCBsc2RjX2kyYyAqbGkyYzsNCj4+Pj4+ICvCoMKgwqAgaW50IHJl dDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgbGkyYyA9IGt6YWxsb2Moc2l6ZW9mKCpsaTJj KSwgR0ZQX0tFUk5FTCk7DQo+Pj4+PiArwqDCoMKgIGlmICghbGkyYykNCj4+Pj4+ICvCoMKg wqDCoMKgwqDCoCByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsNCj4+Pj4+ICsNCj4+Pj4+ICvC oMKgwqAgaWYgKGluZGV4ID09IDApIHsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBsaTJjLT5z ZGEgPSAweDAxO8KgIC8qIHBpbiAwICovDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgbGkyYy0+ c2NsID0gMHgwMjvCoCAvKiBwaW4gMSAqLw0KPj4+Pj4gK8KgwqDCoCB9IGVsc2UgaWYgKGlu ZGV4ID09IDEpIHsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBsaTJjLT5zZGEgPSAweDA0O8Kg IC8qIHBpbiAyICovDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgbGkyYy0+c2NsID0gMHgwODvC oCAvKiBwaW4gMyAqLw0KPj4+Pj4gK8KgwqDCoCB9DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKg IGxpMmMtPnJlZ19iYXNlID0gYmFzZTsNCj4+Pj4+ICvCoMKgwqAgbGkyYy0+ZGRldiA9IGRk ZXY7DQo+Pj4+PiArwqDCoMKgIGxpMmMtPmRpcl9yZWcgPSBsaTJjLT5yZWdfYmFzZSArIExT N0FfRENfR1BJT19ESVJfUkVHOw0KPj4+Pj4gK8KgwqDCoCBsaTJjLT5kYXRfcmVnID0gbGky Yy0+cmVnX2Jhc2UgKyBMUzdBX0RDX0dQSU9fREFUX1JFRzsNCj4+Pj4+ICsNCj4+Pj4+ICvC oMKgwqAgbGkyYy0+Yml0LnNldHNkYSA9IGxzN2FfaTJjX3NldF9zZGE7DQo+Pj4+PiArwqDC oMKgIGxpMmMtPmJpdC5zZXRzY2wgPSBsczdhX2kyY19zZXRfc2NsOw0KPj4+Pj4gK8KgwqDC oCBsaTJjLT5iaXQuZ2V0c2RhID0gbHM3YV9pMmNfZ2V0X3NkYTsNCj4+Pj4+ICvCoMKgwqAg bGkyYy0+Yml0LmdldHNjbCA9IGxzN2FfaTJjX2dldF9zY2w7DQo+Pj4+PiArwqDCoMKgIGxp MmMtPmJpdC51ZGVsYXkgPSA1Ow0KPj4+Pj4gK8KgwqDCoCBsaTJjLT5iaXQudGltZW91dCA9 IHVzZWNzX3RvX2ppZmZpZXMoMjIwMCk7DQo+Pj4+PiArwqDCoMKgIGxpMmMtPmJpdC5kYXRh ID0gbGkyYzsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgYWRhcHRlciA9ICZsaTJjLT5hZGFw dGVyOw0KPj4+Pj4gK8KgwqDCoCBhZGFwdGVyLT5hbGdvX2RhdGEgPSAmbGkyYy0+Yml0Ow0K Pj4+Pj4gK8KgwqDCoCBhZGFwdGVyLT5vd25lciA9IFRISVNfTU9EVUxFOw0KPj4+Pj4gK8Kg wqDCoCBhZGFwdGVyLT5jbGFzcyA9IEkyQ19DTEFTU19EREM7DQo+Pj4+PiArwqDCoMKgIGFk YXB0ZXItPmRldi5wYXJlbnQgPSBkZGV2LT5kZXY7DQo+Pj4+PiArwqDCoMKgIGFkYXB0ZXIt Pm5yID0gLTE7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIHNucHJpbnRmKGFkYXB0ZXItPm5h bWUsIHNpemVvZihhZGFwdGVyLT5uYW1lKSwgImxzZGMtaTJjJXUiLCANCj4+Pj4+IGluZGV4 KTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgaTJjX3NldF9hZGFwZGF0YShhZGFwdGVyLCBs aTJjKTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgcmV0ID0gaTJjX2JpdF9hZGRfYnVzKGFk YXB0ZXIpOw0KPj4+Pj4gK8KgwqDCoCBpZiAocmV0KSB7DQo+Pj4+PiArwqDCoMKgwqDCoMKg wqAga2ZyZWUobGkyYyk7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVSUl9QVFIo cmV0KTsNCj4+Pj4+ICvCoMKgwqAgfQ0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCByZXQgPSBk cm1tX2FkZF9hY3Rpb25fb3JfcmVzZXQoZGRldiwgbHNkY19kZXN0cm95X2kyYywgbGkyYyk7 DQo+Pj4+PiArwqDCoMKgIGlmIChyZXQpDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJu IE5VTEw7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGRybV9pbmZvKGRkZXYsICIlcyhzZGE9 JXUsIHNjbD0ldSkgY3JlYXRlZCBmb3IgY29ubmVjdG9yLSV1XG4iLA0KPj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqAgYWRhcHRlci0+bmFtZSwgbGkyYy0+c2RhLCBsaTJjLT5zY2wsIGluZGV4 KTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgcmV0dXJuIGxpMmM7DQo+Pj4+PiArfQ0KPj4+ Pj4gKw0KPj4+Pj4gK3N0YXRpYyBpbnQgbHNkY19nZXRfaTJjX2lkKHN0cnVjdCBsc2RjX2Rl dmljZSAqbGRldiwgaW50IGluZGV4KQ0KPj4+Pj4gK3sNCj4+Pj4+ICvCoMKgwqAgY29uc3Qg c3RydWN0IGxzZGNfZGVzYyAqZGVzY3AgPSBsZGV2LT5kZXNjcDsNCj4+Pj4+ICsNCj4+Pj4+ ICvCoMKgwqAgaWYgKGRlc2NwLT5jaGlwID09IENISVBfTFMySzEwMDApDQo+Pj4+PiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIGluZGV4Ow0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBpZiAo ZGVzY3AtPmNoaXAgPT0gQ0hJUF9MUzJLMDUwMCkNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gaW5kZXggKyAyOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCByZXR1cm4gaW5kZXg7 DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0cnVjdCBpMmNfYWRhcHRlciAqbHNkY19n ZXRfaTJjX2FkYXB0ZXIoc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2LA0KPj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGluZGV4KQ0KPj4+Pj4g K3sNCj4+Pj4+ICvCoMKgwqAgY29uc3Qgc3RydWN0IGxzZGNfZGVzYyAqZGVzY3AgPSBsZGV2 LT5kZXNjcDsNCj4+Pj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGlzcGxheV9waXBlICpkaXNw aXBlID0gJmxkZXYtPmRpc3BpcGVbaW5kZXhdOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBp ZiAoZGVzY3AtPmhhc19idWlsdGluX2kyYykgew0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHN0 cnVjdCBsc2RjX2kyYyAqbGkyYyA9IGRpc3BpcGUtPmxpMmM7DQo+Pj4+PiArDQo+Pj4+PiAr wqDCoMKgwqDCoMKgwqAgaWYgKGxpMmMpDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gJmxpMmMtPmFkYXB0ZXI7DQo+Pj4+PiArwqDCoMKgIH0NCj4+Pj4+ICsNCj4+ Pj4+ICvCoMKgwqAgcmV0dXJuIGkyY19nZXRfYWRhcHRlcihsc2RjX2dldF9pMmNfaWQobGRl diwgaW5kZXgpKTsNCj4+Pj4+ICt9DQo+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2xzZGMvbHNkY19pcnEuYyANCj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNk Y19pcnEuYw0KPj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+Pj4+IGluZGV4IDAwMDAw MDAwMDAwMC4uNzFjODVmMDliYjZmDQo+Pj4+PiAtLS0gL2Rldi9udWxsDQo+Pj4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX2lycS5jDQo+Pj4+PiBAQCAtMCwwICsxLDg2 IEBADQo+Pj4+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4+Pj4+ ICsNCj4+Pj4+ICsjaW5jbHVkZSA8ZHJtL2RybV92YmxhbmsuaD4NCj4+Pj4+ICsjaW5jbHVk ZSAibHNkY19kcnYuaCINCj4+Pj4+ICsjaW5jbHVkZSAibHNkY19yZWdzLmgiDQo+Pj4+PiAr DQo+Pj4+PiArLyoNCj4+Pj4+ICsgKiBGb3IgdGhlIERDIGluIGxzN2EyMDAwLCBjbGVhcmlu ZyBpbnRlcnJ1cHQgc3RhdHVzIGlzIGFjaGlldmVkIGJ5DQo+Pj4+PiArICogd3JpdGUgIjEi IHRvIExTRENfSU5UX1JFRywgRm9yIHRoZSBEQyBpbiBsczdhMTAwMCwgbHMyazEwMDAgYW5k DQo+Pj4+PiArICogbHMyazA1MDAsIGNsZWFyaW5nIGludGVycnVwdCBzdGF0dXMgaXMgYWNo aWV2ZWQgYnkgd3JpdGUgIjAiIHRvDQo+Pj4+PiArICogTFNEQ19JTlRfUkVHLiBUd28gZGlm ZmVyZW50IGhhcmR3YXJlIGVuZ2luZWVyIG9mIExvb25nc29uIG1vZGlmeQ0KPj4+Pj4gKyAq IGl0IGFzIHRoZWlyIHdpbGwuDQo+Pj4+PiArICovDQo+Pj4+PiArDQo+Pj4+PiArLyogRm9y IHRoZSBEQyBpbiBsczdhMjAwMCAqLw0KPj4+Pj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBsc2Rj X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykNCj4+Pj4+ICt7DQo+Pj4+PiArwqDC oMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gYXJnOw0KPj4+Pj4gK8KgwqDCoCBzdHJ1 Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4+Pj4gK8KgwqDCoCB1 MzIgdmFsOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCAvKiBSZWFkIHRoZSBpbnRlcnJ1cHQg c3RhdHVzICovDQo+Pj4+PiArwqDCoMKgIHZhbCA9IGxzZGNfcnJlZzMyKGxkZXYsIExTRENf SU5UX1JFRyk7DQo+Pj4+PiArwqDCoMKgIGlmICgodmFsICYgSU5UX1NUQVRVU19NQVNLKSA9 PSAwKSB7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgZHJtX3dhcm4oZGRldiwgIm5vIGludGVy cnVwdCBvY2N1cnNcbiIpOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBJUlFfTk9O RTsNCj4+Pj4+ICvCoMKgwqAgfQ0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBsZGV2LT5pcnFf c3RhdHVzID0gdmFsOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCAvKiB3cml0ZSAiMSIgdG8g Y2xlYXIgdGhlIGludGVycnVwdCBzdGF0dXMgKi8NCj4+Pj4+ICvCoMKgwqAgbHNkY193cmVn MzIobGRldiwgTFNEQ19JTlRfUkVHLCB2YWwpOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBy ZXR1cm4gSVJRX1dBS0VfVEhSRUFEOw0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICsvKiBG b3IgdGhlIERDIGluIGxzN2ExMDAwLCBsczJrMTAwMCBhbmQgbHMyazA1MDAgKi8NCj4+Pj4+ ICtzdGF0aWMgaXJxcmV0dXJuX3QgbHNkY19pcnFfaGFuZGxlcl9sZWdhY3koaW50IGlycSwg dm9pZCAqYXJnKQ0KPj4+Pj4gK3sNCj4+Pj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2Ug KmRkZXYgPSBhcmc7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9 IHRvX2xzZGMoZGRldik7DQo+Pj4+PiArwqDCoMKgIHUzMiB2YWw7DQo+Pj4+PiArDQo+Pj4+ PiArwqDCoMKgIC8qIFJlYWQgdGhlIGludGVycnVwdCBzdGF0dXMgKi8NCj4+Pj4+ICvCoMKg wqAgdmFsID0gbHNkY19ycmVnMzIobGRldiwgTFNEQ19JTlRfUkVHKTsNCj4+Pj4+ICvCoMKg wqAgaWYgKCh2YWwgJiBJTlRfU1RBVFVTX01BU0spID09IDApIHsNCj4+Pj4+ICvCoMKgwqDC oMKgwqDCoCBkcm1fd2FybihkZGV2LCAibm8gaW50ZXJydXB0IG9jY3Vyc1xuIik7DQo+Pj4+ PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIElSUV9OT05FOw0KPj4+Pj4gK8KgwqDCoCB9DQo+ Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGxkZXYtPmlycV9zdGF0dXMgPSB2YWw7DQo+Pj4+PiAr DQo+Pj4+PiArwqDCoMKgIC8qIHdyaXRlICIwIiB0byBjbGVhciB0aGUgaW50ZXJydXB0IHN0 YXR1cyAqLw0KPj4+Pj4gK8KgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0lOVF9SRUcs IHZhbCAmIH5JTlRfU1RBVFVTX01BU0spOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCByZXR1 cm4gSVJRX1dBS0VfVEhSRUFEOw0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICtpcnFfaGFu ZGxlcl90IGxzZGNfZ2V0X2lycV9oYW5kbGVyKHN0cnVjdCBsc2RjX2RldmljZSAqbGRldikN Cj4+Pj4+ICt7DQo+Pj4+PiArwqDCoMKgIGNvbnN0IHN0cnVjdCBsc2RjX2Rlc2MgKmRlc2Nw ID0gbGRldi0+ZGVzY3A7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGlmIChkZXNjcC0+Y2hp cCA9PSBDSElQX0xTN0EyMDAwKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBsc2Rj X2lycV9oYW5kbGVyOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCByZXR1cm4gbHNkY19pcnFf aGFuZGxlcl9sZWdhY3k7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK2lycXJldHVybl90 IGxzZGNfaXJxX3RocmVhZF9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykNCj4+Pj4+ICt7 DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gYXJnOw0KPj4+Pj4g K8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4+ Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2NydGMgKmNydGM7DQo+Pj4+PiArDQo+Pj4+PiArwqDC oMKgIGlmIChsZGV2LT5pcnFfc3RhdHVzICYgSU5UX0NSVEMwX1ZTWU5DKSB7DQo+Pj4+PiAr wqDCoMKgwqDCoMKgwqAgY3J0YyA9IGRybV9jcnRjX2Zyb21faW5kZXgoZGRldiwgMCk7DQo+ Pj4+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2NydGNfaGFuZGxlX3ZibGFuayhjcnRjKTsNCj4+ Pj4+ICvCoMKgwqAgfQ0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBpZiAobGRldi0+aXJxX3N0 YXR1cyAmIElOVF9DUlRDMV9WU1lOQykgew0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGNydGMg PSBkcm1fY3J0Y19mcm9tX2luZGV4KGRkZXYsIDEpOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg IGRybV9jcnRjX2hhbmRsZV92YmxhbmsoY3J0Yyk7DQo+Pj4+PiArwqDCoMKgIH0NCj4+Pj4+ ICsNCj4+Pj4+ICvCoMKgwqAgcmV0dXJuIElSUV9IQU5ETEVEOw0KPj4+Pj4gK30NCj4+Pj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX291dHB1dC5jIA0KPj4+ Pj4gYi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX291dHB1dC5jDQo+Pj4+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi5kNGJjNzY2NmQ5ZWEN Cj4+Pj4+IC0tLSAvZGV2L251bGwNCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9sc2Rj L2xzZGNfb3V0cHV0LmMNCj4+Pj4+IEBAIC0wLDAgKzEsNDUyIEBADQo+Pj4+PiArLy8gU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4+Pj4+ICsNCj4+Pj4+ICsjaW5jbHVk ZSA8ZHJtL2RybV9lZGlkLmg+DQo+Pj4+PiArI2luY2x1ZGUgPGRybS9kcm1fcHJvYmVfaGVs cGVyLmg+DQo+Pj4+PiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPg0KPj4+ Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Nvbm5lY3Rvci5oPg0KPj4+Pj4gKyNpbmNsdWRlICJs c2RjX2Rydi5oIg0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyBpbnQgbHNkY19nZXRfbW9kZXMo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikNCj4+Pj4+ICt7DQo+Pj4+PiArwqDC oMKgIHVuc2lnbmVkIGludCBudW0gPSAwOw0KPj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgZWRpZCAq ZWRpZDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgaWYgKGNvbm5lY3Rvci0+ZGRjKSB7DQo+ Pj4+PiArwqDCoMKgwqDCoMKgwqAgZWRpZCA9IGRybV9nZXRfZWRpZChjb25uZWN0b3IsIGNv bm5lY3Rvci0+ZGRjKTsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoZWRpZCkgew0KPj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJtX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9w cm9wZXJ0eShjb25uZWN0b3IsIGVkaWQpOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgbnVtID0gZHJtX2FkZF9lZGlkX21vZGVzKGNvbm5lY3RvciwgZWRpZCk7DQo+Pj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBrZnJlZShlZGlkKTsNCj4+Pj4+ICvCoMKgwqDCoMKg wqDCoCB9DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIG51bTsNCj4+ Pj4+ICvCoMKgwqAgfQ0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBudW0gPSBkcm1fYWRkX21v ZGVzX25vZWRpZChjb25uZWN0b3IsIDE5MjAsIDEyMDApOw0KPj4+Pj4gKw0KPj4+Pj4gK8Kg wqDCoCBkcm1fc2V0X3ByZWZlcnJlZF9tb2RlKGNvbm5lY3RvciwgMTAyNCwgNzY4KTsNCj4+ Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgcmV0dXJuIG51bTsNCj4+Pj4+ICt9DQo+Pj4+PiArDQo+ Pj4+PiArc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMNCj4+Pj4+ICtsc2RjX3Vu a25vd25fY29ubmVjdG9yX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LCANCj4+Pj4+IGJvb2wgZm9yY2UpDQo+Pj4+PiArew0KPj4+Pj4gK8KgwqDCoCBzdHJ1Y3Qg aTJjX2FkYXB0ZXIgKmRkYyA9IGNvbm5lY3Rvci0+ZGRjOw0KPj4+Pj4gKw0KPj4+Pj4gK8Kg wqDCoCBpZiAoZGRjKSB7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGRybV9wcm9iZV9k ZGMoZGRjKSkNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBjb25uZWN0 b3Jfc3RhdHVzX2Nvbm5lY3RlZDsNCj4+Pj4+ICvCoMKgwqAgfSBlbHNlIHsNCj4+Pj4+ICvC oMKgwqDCoMKgwqDCoCBpZiAoY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9E RV9DT05ORUNUT1JfRFBJKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoMKg wqDCoMKgIGlmIChjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09IERSTV9NT0RFX0NPTk5F Q1RPUl9WSVJUVUFMKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGNv bm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOw0KPj4+Pj4gK8KgwqDCoCB9DQo+Pj4+PiArDQo+ Pj4+PiArwqDCoMKgIHJldHVybiBjb25uZWN0b3Jfc3RhdHVzX3Vua25vd247DQo+Pj4+PiAr fQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzDQo+ Pj4+PiArbHNkY19oZG1pX2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciwgYm9vbCANCj4+Pj4+IGZvcmNlKQ0KPj4+Pj4gK3sNCj4+Pj4+ICvCoMKg wqAgc3RydWN0IGxzZGNfZGlzcGxheV9waXBlICpwaXBlID0gDQo+Pj4+PiBjb25uZWN0b3Jf dG9fZGlzcGxheV9waXBlKGNvbm5lY3Rvcik7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBsc2Rj X2RldmljZSAqbGRldiA9IHRvX2xzZGMoY29ubmVjdG9yLT5kZXYpOw0KPj4+Pj4gK8KgwqDC oCB1MzIgdmFsOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCB2YWwgPSBsc2RjX3JyZWczMihs ZGV2LCBMU0RDX0hETUlfSFBEX1NUQVRVU19SRUcpOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDC oCBpZiAocGlwZS0+aW5kZXggPT0gMCkgew0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmICh2 YWwgJiBIRE1JMF9IUERfRkxBRykNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsNCj4+Pj4+ICvCoMKgwqAgfQ0KPj4+ Pj4gKw0KPj4+Pj4gK8KgwqDCoCBpZiAocGlwZS0+aW5kZXggPT0gMSkgew0KPj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIGlmICh2YWwgJiBIRE1JMV9IUERfRkxBRykNCj4+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsNCj4+ Pj4+ICvCoMKgwqAgfQ0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCByZXR1cm4gY29ubmVjdG9y X3N0YXR1c19kaXNjb25uZWN0ZWQ7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRp YyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzDQo+Pj4+PiArbHNkY19oZG1pX3ZnYV9jb25u ZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIA0KPj4+Pj4g Ym9vbCBmb3JjZSkNCj4+Pj4+ICt7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2Rpc3Bs YXlfcGlwZSAqcGlwZSA9IA0KPj4+Pj4gY29ubmVjdG9yX3RvX2Rpc3BsYXlfcGlwZShjb25u ZWN0b3IpOw0KPj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IGNvbm5l Y3Rvci0+ZGV2Ow0KPj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0 b19sc2RjKGRkZXYpOw0KPj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmRkYzsN Cj4+Pj4+ICvCoMKgwqAgdTMyIHZhbDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgdmFsID0g bHNkY19ycmVnMzIobGRldiwgTFNEQ19IRE1JX0hQRF9TVEFUVVNfUkVHKTsNCj4+Pj4+ICsN Cj4+Pj4+ICvCoMKgwqAgaWYgKHBpcGUtPmluZGV4ID09IDEpIHsNCj4+Pj4+ICvCoMKgwqDC oMKgwqDCoCBpZiAodmFsICYgSERNSTFfSFBEX0ZMQUcpDQo+Pj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7DQo+Pj4+PiAr DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29u bmVjdGVkOw0KPj4+Pj4gK8KgwqDCoCB9DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGlmIChw aXBlLT5pbmRleCA9PSAwKSB7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHZhbCAmIEhE TUkwX0hQRF9GTEFHKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGNv bm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoMKgwqDC oMKgIGRkYyA9IGNvbm5lY3Rvci0+ZGRjOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChk ZGMpIHsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChkcm1fcHJvYmVfZGRj KGRkYykpDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBj b25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsNCj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+Pj4+PiArwqDCoMKgIH0NCj4+Pj4+ICsNCj4+Pj4+ ICvCoMKgwqAgcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfdW5rbm93bjsNCj4+Pj4+ICt9DQo+ Pj4+PiArDQo+Pj4+PiArc3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAqDQo+Pj4+PiArbHNk Y19jb25uZWN0b3JfZ2V0X2Jlc3RfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+Pj4+PiArew0KPj4+Pj4gK8KgwqDCoCBzdHJ1 Y3QgbHNkY19kaXNwbGF5X3BpcGUgKnBpcGUgPSANCj4+Pj4+IGNvbm5lY3Rvcl90b19kaXNw bGF5X3BpcGUoY29ubmVjdG9yKTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgcmV0dXJuICZw aXBlLT5lbmNvZGVyOw0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzIA0KPj4+Pj4gbHNkY19jb25uZWN0 b3JfaGVscGVycyA9IHsNCj4+Pj4+ICvCoMKgwqAgLmF0b21pY19iZXN0X2VuY29kZXIgPSBs c2RjX2Nvbm5lY3Rvcl9nZXRfYmVzdF9lbmNvZGVyLA0KPj4+Pj4gK8KgwqDCoCAuZ2V0X21v ZGVzID0gbHNkY19nZXRfbW9kZXMsDQo+Pj4+PiArfTsNCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgDQo+Pj4+PiBsc2RjX3Vua25v d25fY29ubmVjdG9yX2Z1bmNzID0gew0KPj4+Pj4gK8KgwqDCoCAuZGV0ZWN0ID0gbHNkY191 bmtub3duX2Nvbm5lY3Rvcl9kZXRlY3QsDQo+Pj4+PiArwqDCoMKgIC5maWxsX21vZGVzID0g ZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLA0KPj4+Pj4gK8KgwqDC oCAuZGVzdHJveSA9IGRybV9jb25uZWN0b3JfY2xlYW51cCwNCj4+Pj4+ICvCoMKgwqAgLnJl c2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LA0KPj4+Pj4gK8KgwqDC oCAuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IA0KPj4+Pj4gZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwNCj4+Pj4+ICvCoMKgwqAgLmF0b21pY19kZXN0 cm95X3N0YXRlID0gDQo+Pj4+PiBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJv eV9zdGF0ZSwNCj4+Pj4+ICt9Ow0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyANCj4+Pj4+IGxzZGNfaGRtaV92Z2FfY29ubmVjdG9y X2Z1bmNzID0gew0KPj4+Pj4gK8KgwqDCoCAuZGV0ZWN0ID0gbHNkY19oZG1pX3ZnYV9jb25u ZWN0b3JfZGV0ZWN0LA0KPj4+Pj4gK8KgwqDCoCAuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJf cHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywNCj4+Pj4+ICvCoMKgwqAgLmRlc3Ryb3kg PSBkcm1fY29ubmVjdG9yX2NsZWFudXAsDQo+Pj4+PiArwqDCoMKgIC5yZXNldCA9IGRybV9h dG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9yZXNldCwNCj4+Pj4+ICvCoMKgwqAgLmF0b21pY19k dXBsaWNhdGVfc3RhdGUgPSANCj4+Pj4+IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9k dXBsaWNhdGVfc3RhdGUsDQo+Pj4+PiArwqDCoMKgIC5hdG9taWNfZGVzdHJveV9zdGF0ZSA9 IA0KPj4+Pj4gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsDQo+ Pj4+PiArfTsNCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25u ZWN0b3JfZnVuY3MgbHNkY19oZG1pX2Nvbm5lY3Rvcl9mdW5jcyA9IHsNCj4+Pj4+ICvCoMKg wqAgLmRldGVjdCA9IGxzZGNfaGRtaV9jb25uZWN0b3JfZGV0ZWN0LA0KPj4+Pj4gK8KgwqDC oCAuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2Rl cywNCj4+Pj4+ICvCoMKgwqAgLmRlc3Ryb3kgPSBkcm1fY29ubmVjdG9yX2NsZWFudXAsDQo+ Pj4+PiArwqDCoMKgIC5yZXNldCA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9yZXNl dCwNCj4+Pj4+ICvCoMKgwqAgLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSANCj4+Pj4+IGRy bV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUsDQo+Pj4+PiArwqDC oMKgIC5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IA0KPj4+Pj4gZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsDQo+Pj4+PiArfTsNCj4+Pj4+ICsNCj4+Pj4+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgKg0KPj4+Pj4gK2xzZGNf Z2V0X2Nvbm5lY3Rvcl9mdW5jKHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiwgdW5zaWduZWQg aW50IGluZGV4KQ0KPj4+Pj4gK3sNCj4+Pj4+ICvCoMKgwqAgY29uc3Qgc3RydWN0IGxzZGNf ZGVzYyAqZGVzY3AgPSBsZGV2LT5kZXNjcDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgaWYg KGRlc2NwLT5jaGlwID09IENISVBfTFM3QTIwMDApIHsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDC oCBpZiAoaW5kZXggPT0gMCkNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biAmbHNkY19oZG1pX3ZnYV9jb25uZWN0b3JfZnVuY3M7DQo+Pj4+PiArDQo+Pj4+PiArwqDC oMKgwqDCoMKgwqAgaWYgKGluZGV4ID09IDEpDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCByZXR1cm4gJmxzZGNfaGRtaV9jb25uZWN0b3JfZnVuY3M7DQo+Pj4+PiArwqDCoMKg IH0NCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgcmV0dXJuICZsc2RjX3Vua25vd25fY29ubmVj dG9yX2Z1bmNzOw0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICsvKg0KPj4+Pj4gKyAqIHdl IHByb3ZpZGUgYSBkZWZhdWx0IHN1cHBvcnQgYmVmb3JlIERUL1ZCSU9TIGlzIHN1cHBvcnRl ZA0KPj4+Pj4gKyAqLw0KPj4+Pj4gK3N0YXRpYyBpbnQgbHNkY19nZXRfZW5jb2Rlcl90eXBl KHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiwNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgaW5kZXgpDQo+Pj4+PiArew0KPj4+Pj4gK8Kg wqDCoCBjb25zdCBzdHJ1Y3QgbHNkY19kZXNjICpkZXNjcCA9IGxkZXYtPmRlc2NwOw0KPj4+ Pj4gKw0KPj4+Pj4gK8KgwqDCoCBpZiAoZGVzY3AtPmNoaXAgPT0gQ0hJUF9MUzdBMjAwMCkg ew0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChpbmRleCA9PSAwKQ0KPj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIERSTV9NT0RFX0VOQ09ERVJfREFDOw0KPj4+Pj4g K8KgwqDCoMKgwqDCoMKgIGlmIChpbmRleCA9PSAxKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIERSTV9NT0RFX0VOQ09ERVJfVE1EUzsNCj4+Pj4+ICvCoMKgwqAg fQ0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBpZiAoZGVzY3AtPmNoaXAgPT0gQ0hJUF9MUzdB MTAwMCB8fCBkZXNjcC0+Y2hpcCA9PSANCj4+Pj4+IENISVBfTFMySzEwMDApIHsNCj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoCBpZiAoaW5kZXggPT0gMCkNCj4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldHVybiBEUk1fTU9ERV9FTkNPREVSX0RQSTsNCj4+Pj4+ICvCoMKgwqDC oMKgwqDCoCBpZiAoaW5kZXggPT0gMSkNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiBEUk1fTU9ERV9FTkNPREVSX0RQSTsNCj4+Pj4+ICvCoMKgwqAgfQ0KPj4+Pj4g Kw0KPj4+Pj4gK8KgwqDCoCBpZiAoZGVzY3AtPmNoaXAgPT0gQ0hJUF9MUzJLMDUwMCkgew0K Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChpbmRleCA9PSAwKQ0KPj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIERSTV9NT0RFX0VOQ09ERVJfRFBJOw0KPj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIGlmIChpbmRleCA9PSAxKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIERSTV9NT0RFX0VOQ09ERVJfREFDOw0KPj4+Pj4gK8KgwqDCoCB9DQo+ Pj4+PiArDQo+Pj4+PiArwqDCoMKgIHJldHVybiBEUk1fTU9ERV9FTkNPREVSX05PTkU7DQo+ Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gKy8qDQo+Pj4+PiArICogcHJvdmlkZSBhIGRlZmF1 bHQgYmVmb3JlIERUL1ZCSU9TIHN1cHBvcnQgaXMgdXBzdHJlYW1lZA0KPj4+Pj4gKyAqLw0K Pj4+Pj4gK3N0YXRpYyBpbnQgbHNkY19nZXRfY29ubmVjdG9yX3R5cGUoc3RydWN0IGxzZGNf ZGV2aWNlICpsZGV2LA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1bnNpZ25lZCBpbnQgaW5kZXgpDQo+Pj4+PiArew0KPj4+Pj4gK8KgwqDCoCBjb25z dCBzdHJ1Y3QgbHNkY19kZXNjICpkZXNjcCA9IGxkZXYtPmRlc2NwOw0KPj4+Pj4gKw0KPj4+ Pj4gK8KgwqDCoCBpZiAoZGVzY3AtPmNoaXAgPT0gQ0hJUF9MUzdBMjAwMCkgew0KPj4+Pj4g K8KgwqDCoMKgwqDCoMKgIGlmIChpbmRleCA9PSAwKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuIERSTV9NT0RFX0NPTk5FQ1RPUl9WR0E7DQo+Pj4+PiArwqDCoMKg wqDCoMKgwqAgaWYgKGluZGV4ID09IDEpDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gRFJNX01PREVfQ09OTkVDVE9SX0hETUlBOw0KPj4+Pj4gK8KgwqDCoCB9DQo+ Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGlmIChkZXNjcC0+Y2hpcCA9PSBDSElQX0xTN0ExMDAw IHx8IGRlc2NwLT5jaGlwID09IA0KPj4+Pj4gQ0hJUF9MUzJLMTAwMCkgew0KPj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIGlmIChpbmRleCA9PSAwKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIERSTV9NT0RFX0NPTk5FQ1RPUl9EUEk7DQo+Pj4+PiArwqDCoMKgwqDC oMKgwqAgaWYgKGluZGV4ID09IDEpDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gRFJNX01PREVfQ09OTkVDVE9SX0RQSTsNCj4+Pj4+ICvCoMKgwqAgfQ0KPj4+Pj4g Kw0KPj4+Pj4gK8KgwqDCoCBpZiAoZGVzY3AtPmNoaXAgPT0gQ0hJUF9MUzJLMDUwMCkgew0K Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChpbmRleCA9PSAwKQ0KPj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIERSTV9NT0RFX0NPTk5FQ1RPUl9EUEk7DQo+Pj4+PiAr wqDCoMKgwqDCoMKgwqAgaWYgKGluZGV4ID09IDEpDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm4gRFJNX01PREVfQ09OTkVDVE9SX1ZHQTsNCj4+Pj4+ICvCoMKgwqAg fQ0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCByZXR1cm4gRFJNX01PREVfQ09OTkVDVE9SX1Vu a25vd247DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyB2b2lkIGxzZGNfaGRt aV9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikNCj4+Pj4+ICt7DQo+Pj4+ PiArwqDCoMKgIHN0cnVjdCBsc2RjX2Rpc3BsYXlfcGlwZSAqZGlzcGlwZSA9IA0KPj4+Pj4g ZW5jb2Rlcl90b19kaXNwbGF5X3BpcGUoZW5jb2Rlcik7DQo+Pj4+PiArwqDCoMKgIHN0cnVj dCBkcm1fZGV2aWNlICpkZGV2ID0gZW5jb2Rlci0+ZGV2Ow0KPj4+Pj4gK8KgwqDCoCBzdHJ1 Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4+Pj4gK8KgwqDCoCB1 bnNpZ25lZCBpbnQgaW5kZXggPSBkaXNwaXBlLT5pbmRleDsNCj4+Pj4+ICvCoMKgwqAgdTMy IHZhbDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgaWYgKGluZGV4ID09IDApDQo+Pj4+PiAr wqDCoMKgwqDCoMKgwqAgdmFsID0gbHNkY19ycmVnMzIobGRldiwgTFNEQ19IRE1JMF9QSFlf Q1RSTF9SRUcpOw0KPj4+Pj4gK8KgwqDCoCBlbHNlIGlmIChpbmRleCA9PSAxKQ0KPj4+Pj4g K8KgwqDCoMKgwqDCoMKgIHZhbCA9IGxzZGNfcnJlZzMyKGxkZXYsIExTRENfSERNSTFfUEhZ X0NUUkxfUkVHKTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgdmFsICY9IH5IRE1JX1BIWV9F TjsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgaWYgKGluZGV4ID09IDApDQo+Pj4+PiArwqDC oMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19IRE1JMF9QSFlfQ1RSTF9SRUcs IHZhbCk7DQo+Pj4+PiArwqDCoMKgIGVsc2UgaWYgKGluZGV4ID09IDEpDQo+Pj4+PiArwqDC oMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19IRE1JMV9QSFlfQ1RSTF9SRUcs IHZhbCk7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGRybV9kYmcoZGRldiwgIkhETUktJXUg ZGlzYWJsZWRcbiIsIGluZGV4KTsNCj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGlj IHZvaWQgbHNkY19oZG1pX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpDQo+ Pj4+PiArew0KPj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IGVuY29k ZXItPmRldjsNCj4+Pj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9f bHNkYyhkZGV2KTsNCj4+Pj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGlzcGxheV9waXBlICpk aXNwaXBlID0gDQo+Pj4+PiBlbmNvZGVyX3RvX2Rpc3BsYXlfcGlwZShlbmNvZGVyKTsNCj4+ Pj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGluZGV4ID0gZGlzcGlwZS0+aW5kZXg7DQo+Pj4+ PiArwqDCoMKgIHUzMiB2YWw7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIC8qIHdlIGFyZSB1 c2luZyBzb2Z0d2FyZSBncGlvIGVtdWxhdGVkIGkyYyAqLw0KPj4+Pj4gK8KgwqDCoCB2YWwg PSBIRE1JX0NUTF9QRVJJT0RfTU9ERSB8IEhETUlfQVVESU9fRU4gfA0KPj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoCBIRE1JX1BBQ0tFVF9FTiB8IEhETUlfSU5URVJGQUNFX0VOOw0KPj4+ Pj4gKw0KPj4+Pj4gK8KgwqDCoCBpZiAoaW5kZXggPT0gMCkgew0KPj4+Pj4gK8KgwqDCoMKg wqDCoMKgIC8qIEVuYWJsZSBIRE1JLTAgKi8NCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBsc2Rj X3dyZWczMihsZGV2LCBMU0RDX0hETUkwX0NUUkxfUkVHLCB2YWwpOw0KPj4+Pj4gKw0KPj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENfSERNSTBfWk9ORV9S RUcsIDB4MDA0MDAwNDApOw0KPj4+Pj4gK8KgwqDCoCB9IGVsc2UgaWYgKGluZGV4ID09IDEp IHsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBFbmFibGUgSERNSS0xICovDQo+Pj4+PiAr wqDCoMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19IRE1JMV9DVFJMX1JFRywg dmFsKTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBsc2RjX3dyZWczMihsZGV2 LCBMU0RDX0hETUkxX1pPTkVfUkVHLCAweDAwNDAwMDQwKTsNCj4+Pj4+ICvCoMKgwqAgfQ0K Pj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCB2YWwgPSBIRE1JX1BIWV9URVJNX1NUQVRVUyB8DQo+ Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgIEhETUlfUEhZX1RFUk1fREVUX0VOIHwNCj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqAgSERNSV9QSFlfVEVSTV9IX0VOIHwNCj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqAgSERNSV9QSFlfVEVSTV9MX0VOIHwNCj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqAgSERNSV9QSFlfUkVTRVRfTiB8DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg IEhETUlfUEhZX0VOOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBpZiAoaW5kZXggPT0gMCkN Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0hETUkwX1BI WV9DVFJMX1JFRywgdmFsKTsNCj4+Pj4+ICvCoMKgwqAgZWxzZSBpZiAoaW5kZXggPT0gMSkN Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0hETUkxX1BI WV9DVFJMX1JFRywgdmFsKTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgZHJtX2RiZyhkZGV2 LCAiSERNSS0ldSBlbmFibGVkXG4iLCBpbmRleCk7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+ Pj4gKy8qDQo+Pj4+PiArICrCoCBGb3V0ID0gTSAqIEZpbg0KPj4+Pj4gKyAqDQo+Pj4+PiAr ICrCoCBNID0gKDQgKiBMRikgLyAoSURGICogT0RGKQ0KPj4+Pj4gKyAqDQo+Pj4+PiArICrC oCBMb29uZ3NvbiBIRE1JIHJlcXVpcmUgTSA9IDEwDQo+Pj4+PiArICovDQo+Pj4+PiArc3Rh dGljIHZvaWQgbHNkY19oZG1pX3BoeV9wbGxfY29uZmlnKHN0cnVjdCBsc2RjX2RldmljZSAq bGRldiwNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGludCBpbmRleCwNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGludCBjbG9jaykNCj4+Pj4+ICt7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBkcm1f ZGV2aWNlICpkZGV2ID0gJmxkZXYtPmJhc2U7DQo+Pj4+PiArwqDCoMKgIGludCBjb3VudCA9 IDA7DQo+Pj4+PiArwqDCoMKgIHUzMiB2YWw7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIC8q IGRpc2FibGUgcGh5IHBsbCAqLw0KPj4+Pj4gK8KgwqDCoCBpZiAoaW5kZXggPT0gMCkNCj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0hETUkwX1BIWV9Q TExfUkVHLCAweDApOw0KPj4+Pj4gK8KgwqDCoCBlbHNlIGlmIChpbmRleCA9PSAxKQ0KPj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENfSERNSTFfUEhZX1BM TF9SRUcsIDB4MCk7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIC8qDQo+Pj4+PiArwqDCoMKg wqAgKiAxMCA9ICg0ICogNDApIC8gKDggKiAyKQ0KPj4+Pj4gK8KgwqDCoMKgICovDQo+Pj4+ PiArwqDCoMKgIHZhbCA9ICg4IDw8IEhETUlfUExMX0lERl9TSElGVCkgfA0KPj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoCAoNDAgPDwgSERNSV9QTExfTEZfU0hJRlQpIHwNCj4+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqAgKDEgPDwgSERNSV9QTExfT0RGX1NISUZUKSB8DQo+Pj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgIEhETUlfUExMX0VOQUJMRTsNCj4+Pj4+ICsNCj4+Pj4+ICvC oMKgwqAgZHJtX2RiZyhkZGV2LCAiSERNSS0ldSBjbG9jazogJWRcbiIsIGluZGV4LCBjbG9j ayk7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGlmIChpbmRleCA9PSAwKQ0KPj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENfSERNSTBfUEhZX1BMTF9SRUcs IHZhbCk7DQo+Pj4+PiArwqDCoMKgIGVsc2UgaWYgKGluZGV4ID09IDEpDQo+Pj4+PiArwqDC oMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19IRE1JMV9QSFlfUExMX1JFRywg dmFsKTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLyogd2FpdCBoZG1pIHBoeSBwbGwgbG9j ayAqLw0KPj4+Pj4gK8KgwqDCoCBkbyB7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGlu ZGV4ID09IDApDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2YWwgPSBsc2RjX3Jy ZWczMihsZGV2LCBMU0RDX0hETUkwX1BIWV9QTExfUkVHKTsNCj4+Pj4+ICvCoMKgwqDCoMKg wqDCoCBlbHNlIGlmIChpbmRleCA9PSAxKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgdmFsID0gbHNkY19ycmVnMzIobGRldiwgTFNEQ19IRE1JMV9QSFlfUExMX1JFRyk7DQo+ Pj4+PiArDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgKytjb3VudDsNCj4+Pj4+ICsNCj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoCBpZiAodmFsICYgSERNSV9QTExfTE9DS0VEKSB7DQo+Pj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1fZGJnKGRkZXYsICJTZXR0aW5nIEhETUktJXUg UExMIHN1Y2Nlc3ModGFrZSAlZCANCj4+Pj4+IGN5Y2xlcylcbiIsDQo+Pj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGluZGV4LCBjb3VudCk7DQo+Pj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+Pj4+ PiArwqDCoMKgIH0gd2hpbGUgKGNvdW50IDwgMTAwMCk7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0K Pj4+Pj4gK3N0YXRpYyB2b2lkIGxzZGNfaGRtaV9hdG9taWNfbW9kZV9zZXQoc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+ Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVj dCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQ0KPj4+Pj4gK3sNCj4+Pj4+ICvC oMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBlbmNvZGVyLT5kZXY7DQo+Pj4+PiAr wqDCoMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRldik7DQo+Pj4+ PiArwqDCoMKgIHN0cnVjdCBsc2RjX2Rpc3BsYXlfcGlwZSAqZGlzcGlwZSA9IA0KPj4+Pj4g ZW5jb2Rlcl90b19kaXNwbGF5X3BpcGUoZW5jb2Rlcik7DQo+Pj4+PiArwqDCoMKgIHVuc2ln bmVkIGludCBpbmRleCA9IGRpc3BpcGUtPmluZGV4Ow0KPj4+Pj4gK8KgwqDCoCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZjcnRjX3N0YXRlLT5tb2RlOw0KPj4+Pj4gKw0K Pj4+Pj4gK8KgwqDCoCBsc2RjX2hkbWlfcGh5X3BsbF9jb25maWcobGRldiwgaW5kZXgsIG1v ZGUtPmNsb2NrKTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgZHJtX2RiZyhkZGV2LCAiSERN SS0ldSBtb2Rlc2V0XG4iLCBpbmRleCk7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIA0KPj4+Pj4gbHNk Y19oZG1pX2hlbHBlcl9mdW5jcyA9IHsNCj4+Pj4+ICvCoMKgwqAgLmRpc2FibGUgPSBsc2Rj X2hkbWlfZGlzYWJsZSwNCj4+Pj4+ICvCoMKgwqAgLmVuYWJsZSA9IGxzZGNfaGRtaV9lbmFi bGUsDQo+Pj4+PiArwqDCoMKgIC5hdG9taWNfbW9kZV9zZXQgPSBsc2RjX2hkbWlfYXRvbWlj X21vZGVfc2V0LA0KPj4+Pj4gK307DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIHZvaWQgbHNk Y19oZG1pX3Jlc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikNCj4+Pj4+ICt7DQo+ Pj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gZW5jb2Rlci0+ZGV2Ow0K Pj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYp Ow0KPj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUgKmRpc3BpcGUgPSAN Cj4+Pj4+IGVuY29kZXJfdG9fZGlzcGxheV9waXBlKGVuY29kZXIpOw0KPj4+Pj4gK8KgwqDC oCB1bnNpZ25lZCBpbnQgaW5kZXggPSBkaXNwaXBlLT5pbmRleDsNCj4+Pj4+ICvCoMKgwqAg dTMyIHZhbCA9IEhETUlfQ1RMX1BFUklPRF9NT0RFIHwgSERNSV9BVURJT19FTiB8DQo+Pj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgIEhETUlfUEFDS0VUX0VOIHwgSERNSV9JTlRFUkZBQ0Vf RU47DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENfSERN STBfQ1RSTF9SRUcsIHZhbCk7DQo+Pj4+PiArwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExT RENfSERNSTFfQ1RSTF9SRUcsIHZhbCk7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGRybV9k YmcoZGRldiwgIkhETUktJXUgUmVzZXRcbiIsIGluZGV4KTsNCj4+Pj4+ICt9DQo+Pj4+PiAr DQo+Pj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBsc2RjX2Vu Y29kZXJfZnVuY3MgPSB7DQo+Pj4+PiArwqDCoMKgIC5yZXNldCA9IGxzZGNfaGRtaV9yZXNl dCwNCj4+Pj4+ICvCoMKgwqAgLmRlc3Ryb3kgPSBkcm1fZW5jb2Rlcl9jbGVhbnVwLA0KPj4+ Pj4gK307DQo+Pj4+PiArDQo+Pj4+PiAraW50IGxzZGNfY3JlYXRlX291dHB1dChzdHJ1Y3Qg bHNkY19kZXZpY2UgKmxkZXYsIHVuc2lnbmVkIGludCBpbmRleCkNCj4+Pj4+ICt7DQo+Pj4+ PiArwqDCoMKgIGNvbnN0IHN0cnVjdCBsc2RjX2Rlc2MgKmRlc2NwID0gbGRldi0+ZGVzY3A7 DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gJmxkZXYtPmJhc2U7 DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2Rpc3BsYXlfcGlwZSAqZGlzcGlwZSA9ICZs ZGV2LT5kaXNwaXBlW2luZGV4XTsNCj4+Pj4+ICvCoMKgwqAgc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyID0gJmRpc3BpcGUtPmVuY29kZXI7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmZGlzcGlwZS0+Y29ubmVjdG9yOw0KPj4+Pj4g K8KgwqDCoCBzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmRkYyA9IE5VTEw7DQo+Pj4+PiArwqDCoMKg IHN0cnVjdCBsc2RjX2kyYyAqbGkyYzsNCj4+Pj4+ICvCoMKgwqAgaW50IHJldDsNCj4+Pj4+ ICsNCj4+Pj4+ICvCoMKgwqAgcmV0ID0gZHJtX2VuY29kZXJfaW5pdChkZGV2LA0KPj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbmNvZGVyLA0KPj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmbHNkY19lbmNvZGVyX2Z1 bmNzLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsc2Rj X2dldF9lbmNvZGVyX3R5cGUobGRldiwgaW5kZXgpLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiZW5jb2Rlci0ldSIsDQo+Pj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGluZGV4KTsNCj4+Pj4+ICvCoMKgwqAgaWYg KHJldCkgew0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9lcnIoZGRldiwgIkZhaWxlZCB0 byBpbml0IGVuY29kZXI6ICVkXG4iLCByZXQpOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJl dHVybiByZXQ7DQo+Pj4+PiArwqDCoMKgIH0NCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgZW5j b2Rlci0+cG9zc2libGVfY3J0Y3MgPSBCSVQoaW5kZXgpOw0KPj4+Pj4gKw0KPj4+Pj4gK8Kg wqDCoCBpZiAoZGVzY3AtPmNoaXAgPT0gQ0hJUF9MUzdBMjAwMCkNCj4+Pj4+ICvCoMKgwqDC oMKgwqDCoCBkcm1fZW5jb2Rlcl9oZWxwZXJfYWRkKGVuY29kZXIsICZsc2RjX2hkbWlfaGVs cGVyX2Z1bmNzKTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgaWYgKGRlc2NwLT5oYXNfYnVp bHRpbl9pMmMpIHsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBsaTJjID0gbHNkY19jcmVhdGVf aTJjX2NoYW4oZGRldiwgbGRldi0+cmVnX2Jhc2UsIGluZGV4KTsNCj4+Pj4+ICvCoMKgwqDC oMKgwqDCoCBpZiAoSVNfRVJSKGxpMmMpKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIFBUUl9FUlIobGkyYyk7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgwqDCoMKg wqAgZGlzcGlwZS0+bGkyYyA9IGxpMmM7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgwqDCoMKg wqAgZGRjID0gJmxpMmMtPmFkYXB0ZXI7DQo+Pj4+PiArwqDCoMKgIH0gZWxzZSB7DQo+Pj4+ PiArwqDCoMKgwqDCoMKgwqAgZGRjID0gbHNkY19nZXRfaTJjX2FkYXB0ZXIobGRldiwgaW5k ZXgpOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChJU19FUlIoZGRjKSkgew0KPj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJtX2VycihkZGV2LCAiRXJyb3IgZ2V0IGRkYyBm b3Igb3V0cHV0LSV1XG4iLCBpbmRleCk7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gUFRSX0VSUihkZGMpOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+Pj4+ ICvCoMKgwqAgfQ0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCByZXQgPSBkcm1fY29ubmVjdG9y X2luaXRfd2l0aF9kZGMoZGRldiwNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgY29ubmVjdG9yLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsc2RjX2dldF9jb25uZWN0b3JfZnVuYyhsZGV2 LCBpbmRleCksDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGxzZGNfZ2V0X2Nvbm5lY3Rvcl90eXBlKGxkZXYsIGluZGV4KSwNCj4+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGRjKTsNCj4+Pj4+ ICvCoMKgwqAgaWYgKHJldCkgew0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9lcnIoZGRl diwgIkluaXQgY29ubmVjdG9yLSVkIGZhaWxlZFxuIiwgaW5kZXgpOw0KPj4+Pj4gK8KgwqDC oMKgwqDCoMKgIHJldHVybiByZXQ7DQo+Pj4+PiArwqDCoMKgIH0NCj4+Pj4+ICsNCj4+Pj4+ ICvCoMKgwqAgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKGNvbm5lY3RvciwgJmxzZGNfY29u bmVjdG9yX2hlbHBlcnMpOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBkcm1fY29ubmVjdG9y X2F0dGFjaF9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcik7DQo+Pj4+PiArDQo+Pj4+PiAr wqDCoMKgIGNvbm5lY3Rvci0+cG9sbGVkID0gRFJNX0NPTk5FQ1RPUl9QT0xMX0NPTk5FQ1Qg fA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fQ09OTkVDVE9S X1BPTExfRElTQ09OTkVDVDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgY29ubmVjdG9yLT5p bnRlcmxhY2VfYWxsb3dlZCA9IDA7DQo+Pj4+PiArwqDCoMKgIGNvbm5lY3Rvci0+ZG91Ymxl c2Nhbl9hbGxvd2VkID0gMDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgbGRldi0+bnVtX291 dHB1dCsrOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBkcm1faW5mbyhkZGV2LCAib3V0cHV0 LSV1IGluaXRpYWxpemVkXG4iLCBpbmRleCk7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIHJl dHVybiAwOw0KPj4+Pj4gK30NCj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bHNkYy9sc2RjX3BsYW5lLmMgDQo+Pj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNf cGxhbmUuYw0KPj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+Pj4+IGluZGV4IDAwMDAw MDAwMDAwMC4uMGY3NzljOTdkNTNiDQo+Pj4+PiAtLS0gL2Rldi9udWxsDQo+Pj4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX3BsYW5lLmMNCj4+Pj4+IEBAIC0wLDAgKzEs NDQzIEBADQo+Pj4+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4+ Pj4+ICsNCj4+Pj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4NCj4+Pj4+ICsjaW5j bHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+DQo+Pj4+PiArI2luY2x1ZGUgPGRybS9k cm1fZnJhbWVidWZmZXIuaD4NCj4+Pj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxw ZXIuaD4NCj4+Pj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fdnJhbV9oZWxwZXIuaD4NCj4+ Pj4+ICsjaW5jbHVkZSAibHNkY19kcnYuaCINCj4+Pj4+ICsjaW5jbHVkZSAibHNkY19yZWdz LmgiDQo+Pj4+PiArI2luY2x1ZGUgImxzZGNfcGxsLmgiDQo+Pj4+PiArDQo+Pj4+PiArc3Rh dGljIGNvbnN0IHUzMiBsc2RjX3ByaW1hcnlfZm9ybWF0c1tdID0gew0KPj4+Pj4gK8KgwqDC oCBEUk1fRk9STUFUX1hSR0I4ODg4LA0KPj4+Pj4gK8KgwqDCoCBEUk1fRk9STUFUX0FSR0I4 ODg4LA0KPj4+Pj4gK307DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIGNvbnN0IHUzMiBsc2Rj X2N1cnNvcl9mb3JtYXRzW10gPSB7DQo+Pj4+PiArwqDCoMKgIERSTV9GT1JNQVRfQVJHQjg4 ODgsDQo+Pj4+PiArfTsNCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgY29uc3QgdTY0IGxzZGNf ZmJfZm9ybWF0X21vZGlmaWVyc1tdID0gew0KPj4+Pj4gK8KgwqDCoCBEUk1fRk9STUFUX01P RF9MSU5FQVIsDQo+Pj4+PiArwqDCoMKgIERSTV9GT1JNQVRfTU9EX0lOVkFMSUQNCj4+Pj4+ ICt9Ow0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyB2b2lkIGxzZGNfdXBkYXRlX2ZiX2Zvcm1h dChzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYsDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsDQo+Pj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9p bmZvICpmbXRfaW5mbykNCj4+Pj4+ICt7DQo+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIGludCBp bmRleCA9IGRybV9jcnRjX2luZGV4KGNydGMpOw0KPj4+Pj4gK8KgwqDCoCB1MzIgdmFsOw0K Pj4+Pj4gK8KgwqDCoCB1MzIgZm10Ow0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBzd2l0Y2gg KGZtdF9pbmZvLT5mb3JtYXQpIHsNCj4+Pj4+ICvCoMKgwqAgY2FzZSBEUk1fRk9STUFUX1hS R0I4ODg4Og0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGZtdCA9IExTRENfUEZfWFJHQjg4ODg7 DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+Pj4+PiArwqDCoMKgIGNhc2UgRFJN X0ZPUk1BVF9BUkdCODg4ODoNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBmbXQgPSBMU0RDX1BG X1hSR0I4ODg4Ow0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+Pj4gK8KgwqDC oCBkZWZhdWx0Og0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGZtdCA9IExTRENfUEZfWFJHQjg4 ODg7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+Pj4+PiArwqDCoMKgIH0NCj4+ Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgaWYgKGluZGV4ID09IDApIHsNCj4+Pj4+ICvCoMKgwqDC oMKgwqDCoCB2YWwgPSBsc2RjX3JyZWczMihsZGV2LCBMU0RDX0NSVEMwX0NGR19SRUcpOw0K Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9ICh2YWwgJiB+Q0ZHX1BJWF9GTVRfTUFTSykg fCBmbXQ7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19D UlRDMF9DRkdfUkVHLCB2YWwpOw0KPj4+Pj4gK8KgwqDCoCB9IGVsc2UgaWYgKGluZGV4ID09 IDEpIHsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCB2YWwgPSBsc2RjX3JyZWczMihsZGV2LCBM U0RDX0NSVEMxX0NGR19SRUcpOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9ICh2YWwg JiB+Q0ZHX1BJWF9GTVRfTUFTSykgfCBmbXQ7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgbHNk Y193cmVnMzIobGRldiwgTFNEQ19DUlRDMV9DRkdfUkVHLCB2YWwpOw0KPj4+Pj4gK8KgwqDC oCB9DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyB2b2lkIGxzZGNfdXBkYXRl X2ZiX3N0YXJ0X2FkZHIoc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2LA0KPj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2NydGMg KmNydGMsDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHU2NCBwYWRkcikNCj4+Pj4+ICt7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2 aWNlICpkZGV2ID0gJmxkZXYtPmJhc2U7DQo+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIGludCBp bmRleCA9IGRybV9jcnRjX2luZGV4KGNydGMpOw0KPj4+Pj4gK8KgwqDCoCB1MzIgbG9fYWRk cl9yZWc7DQo+Pj4+PiArwqDCoMKgIHUzMiBoaV9hZGRyX3JlZzsNCj4+Pj4+ICvCoMKgwqAg dTMyIHZhbDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLyoNCj4+Pj4+ICvCoMKgwqDCoCAq IEZpbmQgd2hpY2ggZnJhbWVidWZmZXIgYWRkcmVzcyByZWdpc3RlciBzaG91bGQgdXBkYXRl Lg0KPj4+Pj4gK8KgwqDCoMKgICogaWYgRkJfQUREUjBfUkVHIGlzIGluIHVzaW5nLCB3ZSB3 cml0ZSB0aGUgYWRkcmVzcyB0byANCj4+Pj4+IEZCX0FERFIwX1JFRywNCj4+Pj4+ICvCoMKg wqDCoCAqIGlmIEZCX0FERFIxX1JFRyBpcyBpbiB1c2luZywgd2Ugd3JpdGUgdGhlIGFkZHJl c3MgdG8gDQo+Pj4+PiBGQl9BRERSMV9SRUcNCj4+Pj4+ICvCoMKgwqDCoCAqIGZvciBlYWNo IENSVEMsIHRoZSBzd2l0Y2ggdXNpbmcgb25lIGZiIHJlZ2lzdGVyIHRvIGFub3RoZXIgaXMN Cj4+Pj4+ICvCoMKgwqDCoCAqIHRyaWdnZXIgYnkgdHJpZ2dlcmVkIGJ5IHNldCBDRkdfUEFH RV9GTElQIGJpdCBvZiANCj4+Pj4+IExTRENfQ1JUQ3hfQ0ZHX1JFRw0KPj4+Pj4gK8KgwqDC oMKgICovDQo+Pj4+PiArwqDCoMKgIGlmIChpbmRleCA9PSAwKSB7DQo+Pj4+PiArwqDCoMKg wqDCoMKgwqAgdmFsID0gbHNkY19ycmVnMzIobGRldiwgTFNEQ19DUlRDMF9DRkdfUkVHKTsN Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAodmFsICYgQ0ZHX0ZCX0lOX1VTSU5HKSB7DQo+ Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsb19hZGRyX3JlZyA9IExTRENfQ1JUQzBf RkIxX0xPX0FERFJfUkVHOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGlfYWRk cl9yZWcgPSBMU0RDX0NSVEMwX0ZCMV9ISV9BRERSX1JFRzsNCj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRybV9kYmcoZGRldiwgIkN1cnJlbnRseSwgRkIxIGlzIGluIHVzaW5n IGJ5IENSVEMtMFxuIik7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsNCj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvX2FkZHJfcmVnID0gTFNEQ19DUlRDMF9GQjBf TE9fQUREUl9SRUc7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoaV9hZGRyX3Jl ZyA9IExTRENfQ1JUQzBfRkIwX0hJX0FERFJfUkVHOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZHJtX2RiZyhkZGV2LCAiQ3VycmVudGx5LCBGQjAgaXMgaW4gdXNpbmcgYnkg Q1JUQy0wXG4iKTsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+Pj4+PiArwqDCoMKgIH0g ZWxzZSBpZiAoaW5kZXggPT0gMSkgew0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9IGxz ZGNfcnJlZzMyKGxkZXYsIExTRENfQ1JUQzFfQ0ZHX1JFRyk7DQo+Pj4+PiArwqDCoMKgwqDC oMKgwqAgaWYgKHZhbCAmIENGR19GQl9JTl9VU0lORykgew0KPj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgbG9fYWRkcl9yZWcgPSBMU0RDX0NSVEMxX0ZCMV9MT19BRERSX1JFRzsN Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGhpX2FkZHJfcmVnID0gTFNEQ19DUlRD MV9GQjFfSElfQUREUl9SRUc7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1f ZGJnKGRkZXYsICJDdXJyZW50bHksIEZCMSBpcyBpbiB1c2luZyBieSBDUlRDLTFcbiIpOw0K Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0gZWxzZSB7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBsb19hZGRyX3JlZyA9IExTRENfQ1JUQzFfRkIwX0xPX0FERFJfUkVHOw0KPj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGlfYWRkcl9yZWcgPSBMU0RDX0NSVEMxX0ZC MF9ISV9BRERSX1JFRzsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRybV9kYmco ZGRldiwgIkN1cnJlbnRseSwgRkIwIGlzIGluIHVzaW5nIGJ5IENSVEMtMVxuIik7DQo+Pj4+ PiArwqDCoMKgwqDCoMKgwqAgfQ0KPj4+Pj4gK8KgwqDCoCB9DQo+Pj4+PiArDQo+Pj4+PiAr wqDCoMKgIC8qIDQwLWJpdCB3aWR0aCBwaHlzaWNhbCBhZGRyZXNzIGJ1cyAqLw0KPj4+Pj4g K8KgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBsb19hZGRyX3JlZywgcGFkZHIpOw0KPj4+Pj4g K8KgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBoaV9hZGRyX3JlZywgKHBhZGRyID4+IDMyKSAm IDB4RkYpOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBkcm1fZGJnKGRkZXYsICJDUlRDLSV1 IHNjYW50b3V0IGZyb20gMHglbGx4XG4iLCBpbmRleCwgcGFkZHIpOw0KPj4+Pj4gK30NCj4+ Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgdW5zaWduZWQgaW50IGxzZGNfZ2V0X2ZiX29mZnNldChz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0 ZSwNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB1bnNpZ25lZCBpbnQgcGxhbmUpDQo+Pj4+PiArew0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25l ZCBpbnQgb2Zmc2V0ID0gZmItPm9mZnNldHNbcGxhbmVdOw0KPj4+Pj4gKw0KPj4+Pj4gK8Kg wqDCoCBvZmZzZXQgKz0gZmItPmZvcm1hdC0+Y3BwW3BsYW5lXSAqIChzdGF0ZS0+c3JjX3gg Pj4gMTYpOw0KPj4+Pj4gK8KgwqDCoCBvZmZzZXQgKz0gZmItPnBpdGNoZXNbcGxhbmVdICog KHN0YXRlLT5zcmNfeSA+PiAxNik7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIHJldHVybiBv ZmZzZXQ7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyBzNjQgbHNkY19nZXRf dnJhbV9ib19vZmZzZXQoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpDQo+Pj4+PiArew0K Pj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvOw0KPj4+Pj4g K8KgwqDCoCBzNjQgZ3B1X2FkZHI7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGdibyA9IGRy bV9nZW1fdnJhbV9vZl9nZW0oZmItPm9ialswXSk7DQo+Pj4+PiArwqDCoMKgIGdwdV9hZGRy ID0gZHJtX2dlbV92cmFtX29mZnNldChnYm8pOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBy ZXR1cm4gZ3B1X2FkZHI7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyBpbnQg bHNkY19wcmltYXJ5X3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+Pj4+PiArew0KPj4+Pj4gK8Kg wqDCoCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9IA0KPj4+Pj4gZHJt X2F0b21pY19nZXRfbmV3X3BsYW5lX3N0YXRlKHN0YXRlLCBwbGFuZSk7DQo+Pj4+PiArwqDC oMKgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHBsYW5lX3N0YXRlLT5jcnRjOw0KPj4+Pj4g K8KgwqDCoCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPSANCj4+Pj4+IGRy bV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsNCj4+Pj4+ICsNCj4+ Pj4+ICvCoMKgwqAgaWYgKCFjcnRjKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAw Ow0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCByZXR1cm4gZHJtX2F0b21pY19oZWxwZXJfY2hl Y2tfcGxhbmVfc3RhdGUocGxhbmVfc3RhdGUsDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcnRjX3N0YXRlLA0KPj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg RFJNX1BMQU5FX05PX1NDQUxJTkcsDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fUExBTkVfTk9fU0NBTElORywNCj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGZhbHNlLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgdHJ1ZSk7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0 YXRpYyB2b2lkIGxzZGNfdXBkYXRlX2ZiX3N0cmlkZShzdHJ1Y3QgbHNkY19kZXZpY2UgKmxk ZXYsDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1bnNpZ25lZCBpbnQgc3RyaWRlKQ0KPj4+Pj4gK3sNCj4+Pj4+ICvCoMKgwqAgdW5z aWduZWQgaW50IGluZGV4ID0gZHJtX2NydGNfaW5kZXgoY3J0Yyk7DQo+Pj4+PiArDQo+Pj4+ PiArwqDCoMKgIGlmIChpbmRleCA9PSAwKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGxzZGNf d3JlZzMyKGxkZXYsIExTRENfQ1JUQzBfU1RSSURFX1JFRywgc3RyaWRlKTsNCj4+Pj4+ICvC oMKgwqAgZWxzZSBpZiAoaW5kZXggPT0gMSkNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBsc2Rj X3dyZWczMihsZGV2LCBMU0RDX0NSVEMxX1NUUklERV9SRUcsIHN0cmlkZSk7DQo+Pj4+PiAr DQo+Pj4+PiArwqDCoMKgIGRybV9kYmcoY3J0Yy0+ZGV2LCAidXBkYXRlIHN0cmlkZSB0byAl dVxuIiwgc3RyaWRlKTsNCj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIHZvaWQg bHNkY19wcmltYXJ5X3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4+Pj4+ICt7DQo+Pj4+ PiArwqDCoMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9IHRvX2xzZGMocGxhbmUtPmRl dik7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19wbGFuZV9z dGF0ZSA9IA0KPj4+Pj4gZHJtX2F0b21pY19nZXRfbmV3X3BsYW5lX3N0YXRlKHN0YXRlLCBw bGFuZSk7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IG5ld19wbGFu ZV9zdGF0ZS0+Y3J0YzsNCj4+Pj4+ICvCoMKgwqAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBuZXdfcGxhbmVfc3RhdGUtPmZiOw0KPj4+Pj4gK8KgwqDCoCB1MzIgZmJfb2Zmc2V0 ID0gbHNkY19nZXRfZmJfb2Zmc2V0KGZiLCBuZXdfcGxhbmVfc3RhdGUsIDApOw0KPj4+Pj4g K8KgwqDCoCBkbWFfYWRkcl90IGZiX2FkZHI7DQo+Pj4+PiArwqDCoMKgIHM2NCBncHVfYWRk cjsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgZ3B1X2FkZHIgPSBsc2RjX2dldF92cmFtX2Jv X29mZnNldChmYik7DQo+Pj4+PiArwqDCoMKgIGlmIChncHVfYWRkciA8IDApDQo+Pj4+PiAr wqDCoMKgwqDCoMKgwqAgcmV0dXJuOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBmYl9hZGRy ID0gbGRldi0+dnJhbV9iYXNlICsgZ3B1X2FkZHIgKyBmYl9vZmZzZXQ7DQo+Pj4+PiArDQo+ Pj4+PiArwqDCoMKgIGxzZGNfdXBkYXRlX2ZiX3N0YXJ0X2FkZHIobGRldiwgY3J0YywgZmJf YWRkcik7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGxzZGNfdXBkYXRlX2ZiX3N0cmlkZShs ZGV2LCBjcnRjLCBmYi0+cGl0Y2hlc1swXSk7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGxz ZGNfdXBkYXRlX2ZiX2Zvcm1hdChsZGV2LCBjcnRjLCBmYi0+Zm9ybWF0KTsNCj4+Pj4+ICt9 DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIHZvaWQgbHNkY19wcmltYXJ5X3BsYW5lX2F0b21p Y19kaXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUgDQo+Pj4+PiAqcGxhbmUsDQo+Pj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPj4+Pj4gK3sNCj4+Pj4+ICvCoMKgwqAgZHJt X2RiZyhwbGFuZS0+ZGV2LCAiJXMgZGlzYWJsZWRcbiIsIHBsYW5lLT5uYW1lKTsNCj4+Pj4+ ICt9DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVs cGVyX2Z1bmNzIA0KPj4+Pj4gbHNkY19wcmltYXJ5X3BsYW5lX2hlbHBlcnMgPSB7DQo+Pj4+ PiArwqDCoMKgIC5wcmVwYXJlX2ZiID0gZHJtX2dlbV92cmFtX3BsYW5lX2hlbHBlcl9wcmVw YXJlX2ZiLA0KPj4+Pj4gK8KgwqDCoCAuY2xlYW51cF9mYiA9IGRybV9nZW1fdnJhbV9wbGFu ZV9oZWxwZXJfY2xlYW51cF9mYiwNCj4+Pj4+ICvCoMKgwqAgLmF0b21pY19jaGVjayA9IGxz ZGNfcHJpbWFyeV9wbGFuZV9hdG9taWNfY2hlY2ssDQo+Pj4+PiArwqDCoMKgIC5hdG9taWNf dXBkYXRlID0gbHNkY19wcmltYXJ5X3BsYW5lX2F0b21pY191cGRhdGUsDQo+Pj4+PiArwqDC oMKgIC5hdG9taWNfZGlzYWJsZSA9IGxzZGNfcHJpbWFyeV9wbGFuZV9hdG9taWNfZGlzYWJs ZSwNCj4+Pj4+ICt9Ow0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRpYyBpbnQgbHNkY19jdXJzb3Jf YXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLA0KPj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSkNCj4+Pj4+ICt7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgKm5ld19wbGFuZV9zdGF0ZSA9IA0KPj4+Pj4gZHJtX2F0b21pY19nZXRfbmV3X3BsYW5l X3N0YXRlKHN0YXRlLCBwbGFuZSk7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiID0gbmV3X3BsYW5lX3N0YXRlLT5mYjsNCj4+Pj4+ICvCoMKgwqAgc3RydWN0 IGRybV9jcnRjICpjcnRjID0gbmV3X3BsYW5lX3N0YXRlLT5jcnRjOw0KPj4+Pj4gK8KgwqDC oCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7DQo+Pj4+PiArwqDCoMKgIGlu dCByZXQ7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIC8qIG5vIG5lZWQgZm9yIGZ1cnRoZXIg Y2hlY2tzIGlmIHRoZSBwbGFuZSBpcyBiZWluZyBkaXNhYmxlZCAqLw0KPj4+Pj4gK8KgwqDC oCBpZiAoIWNydGMgfHwgIWZiKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0K Pj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBpZiAoIW5ld19wbGFuZV9zdGF0ZS0+dmlzaWJsZSkN Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKg wqAgY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLA0K Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgbmV3X3BsYW5lX3N0YXRlLT5jcnRjKTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAg cmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUobmV3X3BsYW5lX3N0 YXRlLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGNydGNfc3RhdGUsDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX1BMQU5FX05PX1NDQUxJTkcsDQo+Pj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg RFJNX1BMQU5FX05PX1NDQUxJTkcsDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdHJ1ZSwNCj4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0cnVlKTsNCj4+Pj4+ICsN Cj4+Pj4+ICvCoMKgwqAgcmV0dXJuIHJldDsNCj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiAr LyoNCj4+Pj4+ICsgKiBUaGVyZSBpcyBvbmx5IG9uZSBoYXJkd2FyZSBjdXJzb3IgaW4gbHM3 YTEwMDAsIGxzMmsxMDAwIGFuZCANCj4+Pj4+IGxzMmswNTAwLg0KPj4+Pj4gKyAqIHdlIG1h ZGUgaXQgc2hhcmVkIGJ5IHRoZSB0d28gQ1JUQywgd2hpY2ggY2FuIHNhdGlzZnkgcGVvcGxl cyANCj4+Pj4+IHdobyB1c2UNCj4+Pj4+ICsgKiBkb3VibGUgc2NyZWVuIGV4dGVuZCBtb2Rl IG9ubHkuIE9uIGNsb25lIHNjcmVlbiB1c2FnZSBjYXNlLCB0aGUgDQo+Pj4+PiBjdXJzb3IN Cj4+Pj4+ICsgKiBvbiBkaXNwbGF5IHBpcGUgMSB3aWxsIG5vdCBiZSBhYmxlIHRvIGRpc3Bs YXkuDQo+Pj4+PiArICoNCj4+Pj4+ICsgKiBVcGRhdGUgbG9jYXRpb24gb2YgdGhlIGN1cnNv ciwgYXR0YWNoIGl0IHRvIENSVEMwIG9yIENSVEMxIG9uIA0KPj4+Pj4gdGhlIHJ1bnRpbWUu DQo+Pj4+PiArICovDQo+Pj4+PiArc3RhdGljIHZvaWQgbHNkY19jdXJzb3JfdXBkYXRlX2xv Y2F0aW9uX3F1aXJrcyhzdHJ1Y3QgbHNkY19kZXZpY2UgDQo+Pj4+PiAqbGRldiwNCj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHN0cnVjdCBkcm1fY3J0YyAqY3J0YykNCj4+Pj4+ICt7DQo+Pj4+PiArwqDCoMKgIHUzMiB2 YWwgPSBDVVJTT1JfRk9STUFUX0FSR0I4ODg4Ow0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCAv Kg0KPj4+Pj4gK8KgwqDCoMKgICogSWYgYml0IDQgb2YgTFNEQ19DVVJTT1IwX0NGR19SRUcg aXMgMSwgdGhlbiB0aGUgY3Vyc29yIHdpbGwgYmUNCj4+Pj4+ICvCoMKgwqDCoCAqIGxvY2F0 ZSBhdCBDUlRDLTEsIGlmIGJpdCA0IG9mIExTRENfQ1VSU09SMF9DRkdfUkVHIGlzIDAsIHRo ZW4NCj4+Pj4+ICvCoMKgwqDCoCAqIHRoZSBjdXJzb3Igd2lsbCBiZSBsb2NhdGUgYXQgQ1JU Qy0wLiBUaGUgY3Vyc29yIGlzIGFsd2F5IG9uIA0KPj4+Pj4gdGhlDQo+Pj4+PiArwqDCoMKg wqAgKiB0b3Agb2YgdGhlIHByaW1hcnkuIENvbXBvc2l0aW5nIHRoZSBwcmltYXJ5IHBsYW5l IGFuZCBjdXJzb3INCj4+Pj4+ICvCoMKgwqDCoCAqIHBsYW5lIGlzIGF1dG9tYXRpY2FsbHkg ZG9uZSBieSBoYXJkd2FyZS4NCj4+Pj4+ICvCoMKgwqDCoCAqLw0KPj4+Pj4gK8KgwqDCoCBp ZiAoZHJtX2NydGNfaW5kZXgoY3J0YykpDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgdmFsIHw9 IENVUlNPUl9MT0NBVElPTjsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgbHNkY193cmVnMzIo bGRldiwgTFNEQ19DVVJTT1IwX0NGR19SRUcsIHZhbCk7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0K Pj4+Pj4gKy8qIHVwZGF0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGN1cnNvciAqLw0KPj4+Pj4g K3N0YXRpYyB2b2lkIGxzZGNfY3Vyc29yX3VwZGF0ZV9wb3NpdGlvbl9xdWlya3Moc3RydWN0 IGxzZGNfZGV2aWNlIA0KPj4+Pj4gKmxkZXYsDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgeCwNCj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCB5 KQ0KPj4+Pj4gK3sNCj4+Pj4+ICvCoMKgwqAgaWYgKHggPCAwKQ0KPj4+Pj4gK8KgwqDCoMKg wqDCoMKgIHggPSAwOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBpZiAoeSA8IDApDQo+Pj4+ PiArwqDCoMKgwqDCoMKgwqAgeSA9IDA7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGxzZGNf d3JlZzMyKGxkZXYsIExTRENfQ1VSU09SMF9QT1NJVElPTl9SRUcsICh5IDw8IDE2KSB8IHgp Ow0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgdm9pZCBsc2RjX2N1cnNvcl9h dG9taWNfdXBkYXRlX3F1aXJrcyhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwNCj4+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPj4+Pj4gK3sNCj4+Pj4+ICvCoMKgwqAgc3Ry dWN0IGRybV9kZXZpY2UgKmRkZXYgPSBwbGFuZS0+ZGV2Ow0KPj4+Pj4gK8KgwqDCoCBzdHJ1 Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4+Pj4gK8KgwqDCoCBz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGUgPSANCj4+Pj4+IGRybV9h dG9taWNfZ2V0X25ld19wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOw0KPj4+Pj4gK8KgwqDC oCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfcGxhbmVfc3RhdGUgPSANCj4+Pj4+IGRy bV9hdG9taWNfZ2V0X29sZF9wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOw0KPj4+Pj4gK8Kg wqDCoCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpuZXdfZmIgPSBuZXdfcGxhbmVfc3RhdGUt PmZiOw0KPj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmIgPSBv bGRfcGxhbmVfc3RhdGUtPmZiOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBpZiAobmV3X2Zi ICE9IG9sZF9mYikgew0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHM2NCBvZmZzZXQgPSBsc2Rj X2dldF92cmFtX2JvX29mZnNldChuZXdfZmIpOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHU2 NCBjdXJzb3JfYWRkciA9IGxkZXYtPnZyYW1fYmFzZSArIG9mZnNldDsNCj4+Pj4+ICsNCj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1fZGJnX2ttcyhkZGV2LCAiJXMgb2Zmc2V0OiAlbGx4 XG4iLCBwbGFuZS0+bmFtZSwgb2Zmc2V0KTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqDCoMKg wqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0NVUlNPUjBfQUREUl9MT19SRUcsIGN1cnNv cl9hZGRyKTsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RD X0NVUlNPUjBfQUREUl9ISV9SRUcsIChjdXJzb3JfYWRkciANCj4+Pj4+ID4+IDMyKSAmIDB4 RkYpOw0KPj4+Pj4gK8KgwqDCoCB9DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGxzZGNfY3Vy c29yX3VwZGF0ZV9wb3NpdGlvbl9xdWlya3MobGRldiwgDQo+Pj4+PiBuZXdfcGxhbmVfc3Rh dGUtPmNydGNfeCwgbmV3X3BsYW5lX3N0YXRlLT5jcnRjX3kpOw0KPj4+Pj4gKw0KPj4+Pj4g K8KgwqDCoCBsc2RjX2N1cnNvcl91cGRhdGVfbG9jYXRpb25fcXVpcmtzKGxkZXYsIG5ld19w bGFuZV9zdGF0ZS0+Y3J0Yyk7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gKy8qIHVwZGF0 ZSB0aGUgZm9ybWF0LCBzaXplIGFuZCBsb2NhdGlvbiBvZiB0aGUgY3Vyc29yICovDQo+Pj4+ PiArc3RhdGljIHZvaWQgbHNkY19jdXJzb3JfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPj4+Pj4gK3sNCj4+ Pj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBwbGFuZS0+ZGV2Ow0KPj4+ Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0K Pj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUgKmRpc3BpcGUgPSANCj4+ Pj4+IGN1cnNvcl90b19kaXNwbGF5X3BpcGUocGxhbmUpOw0KPj4+Pj4gK8KgwqDCoCBzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGUgPSANCj4+Pj4+IGRybV9hdG9t aWNfZ2V0X25ld19wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOw0KPj4+Pj4gK8KgwqDCoCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpuZXdfZmIgPSBuZXdfcGxhbmVfc3RhdGUtPmZiOw0K Pj4+Pj4gK8KgwqDCoCBpbnQgeCA9IG5ld19wbGFuZV9zdGF0ZS0+Y3J0Y194Ow0KPj4+Pj4g K8KgwqDCoCBpbnQgeSA9IG5ld19wbGFuZV9zdGF0ZS0+Y3J0Y195Ow0KPj4+Pj4gK8KgwqDC oCB1MzIgY29uZiA9IENVUlNPUl9GT1JNQVRfQVJHQjg4ODggfCBDVVJTT1JfU0laRV82NFg2 NDsNCj4+Pj4+ICvCoMKgwqAgdTY0IGN1cnNvcl9hZGRyID0gbGRldi0+dnJhbV9iYXNlICsg DQo+Pj4+PiBsc2RjX2dldF92cmFtX2JvX29mZnNldChuZXdfZmIpOw0KPj4+Pj4gKw0KPj4+ Pj4gK8KgwqDCoCBpZiAoeCA8IDApDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgeCA9IDA7DQo+ Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGlmICh5IDwgMCkNCj4+Pj4+ICvCoMKgwqDCoMKgwqDC oCB5ID0gMDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgaWYgKGRpc3BpcGUtPmluZGV4ID09 IDApIHsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0NV UlNPUjBfQUREUl9ISV9SRUcsIChjdXJzb3JfYWRkciANCj4+Pj4+ID4+IDMyKSAmIDB4RkYp Ow0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENfQ1VSU09S MF9BRERSX0xPX1JFRywgY3Vyc29yX2FkZHIpOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIC8q IEF0dGFjaCBDdXJzb3ItMCB0byBDUlRDLTAgKi8NCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBs c2RjX3dyZWczMihsZGV2LCBMU0RDX0NVUlNPUjBfQ0ZHX1JFRywgY29uZiAmIA0KPj4+Pj4g fkNVUlNPUl9MT0NBVElPTik7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193cmVnMzIo bGRldiwgTFNEQ19DVVJTT1IwX1BPU0lUSU9OX1JFRywgKHkgPDwgMTYpIHwgeCk7DQo+Pj4+ PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuOw0KPj4+Pj4gK8KgwqDCoCB9DQo+Pj4+PiArDQo+ Pj4+PiArwqDCoMKgIGlmIChkaXNwaXBlLT5pbmRleCA9PSAxKSB7DQo+Pj4+PiArwqDCoMKg wqDCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19DVVJTT1IxX0FERFJfSElfUkVHLCAo Y3Vyc29yX2FkZHIgDQo+Pj4+PiA+PiAzMikgJiAweEZGKTsNCj4+Pj4+ICvCoMKgwqDCoMKg wqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0NVUlNPUjFfQUREUl9MT19SRUcsIGN1cnNv cl9hZGRyKTsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBBdHRhY2ggQ3Vyc29yLTEgdG8g Q1JUQy0xICovDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNE Q19DVVJTT1IxX0NGR19SRUcsIGNvbmYgfCANCj4+Pj4+IENVUlNPUl9MT0NBVElPTik7DQo+ Pj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19DVVJTT1IxX1BP U0lUSU9OX1JFRywgKHkgPDwgMTYpIHwgeCk7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuOw0KPj4+Pj4gK8KgwqDCoCB9DQo+Pj4+PiArfQ0KPj4+Pj4gKw0KPj4+Pj4gK3N0YXRp YyB2b2lkIGxzZGNfY3Vyc29yX2F0b21pY19kaXNhYmxlX3F1aXJrcyhzdHJ1Y3QgZHJtX3Bs YW5lIA0KPj4+Pj4gKnBsYW5lLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSkNCj4+Pj4+ICt7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0g cGxhbmUtPmRldjsNCj4+Pj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2ID0g dG9fbHNkYyhkZGV2KTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLyogU2V0IHRoZSBmb3Jt YXQgdG8gMCBhY3R1YWxseSBkaXNwbGF5IHRoZSBjdXJzb3IgKi8NCj4+Pj4+ICvCoMKgwqAg bHNkY193cmVnMzIobGRldiwgTFNEQ19DVVJTT1IwX0NGR19SRUcsIDApOw0KPj4+Pj4gKw0K Pj4+Pj4gK8KgwqDCoCBkcm1fZGJnKGRkZXYsICIlcyBkaXNhYmxlZFxuIiwgcGxhbmUtPm5h bWUpOw0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICtzdGF0aWMgdm9pZCBsc2RjX2N1cnNv cl9hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwNCj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpDQo+Pj4+PiArew0KPj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJt X2RldmljZSAqZGRldiA9IHBsYW5lLT5kZXY7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBsc2Rj X2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRldik7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBs c2RjX2Rpc3BsYXlfcGlwZSAqZGlzcGlwZSA9IA0KPj4+Pj4gY3Vyc29yX3RvX2Rpc3BsYXlf cGlwZShwbGFuZSk7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGlmIChkaXNwaXBlLT5pbmRl eCA9PSAwKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENf Q1VSU09SMF9DRkdfUkVHLCAwKTsNCj4+Pj4+ICvCoMKgwqAgZWxzZSBpZiAoZGlzcGlwZS0+ aW5kZXggPT0gMSkNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBM U0RDX0NVUlNPUjFfQ0ZHX1JFRywgMCk7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGRybV9k YmcoZGRldiwgIiVzIGRpc2FibGVkXG4iLCBwbGFuZS0+bmFtZSk7DQo+Pj4+PiArfQ0KPj4+ Pj4gKw0KPj4+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5j cyANCj4+Pj4+IGxzZGNfY3Vyc29yX2hlbHBlcnNfcXVpcmsgPSB7DQo+Pj4+PiArwqDCoMKg IC5wcmVwYXJlX2ZiID0gZHJtX2dlbV92cmFtX3BsYW5lX2hlbHBlcl9wcmVwYXJlX2ZiLA0K Pj4+Pj4gK8KgwqDCoCAuY2xlYW51cF9mYiA9IGRybV9nZW1fdnJhbV9wbGFuZV9oZWxwZXJf Y2xlYW51cF9mYiwNCj4+Pj4+ICvCoMKgwqAgLmF0b21pY19jaGVjayA9IGxzZGNfY3Vyc29y X2F0b21pY19jaGVjaywNCj4+Pj4+ICvCoMKgwqAgLmF0b21pY191cGRhdGUgPSBsc2RjX2N1 cnNvcl9hdG9taWNfdXBkYXRlX3F1aXJrcywNCj4+Pj4+ICvCoMKgwqAgLmF0b21pY19kaXNh YmxlID0gbHNkY19jdXJzb3JfYXRvbWljX2Rpc2FibGVfcXVpcmtzLA0KPj4+Pj4gK307DQo+ Pj4+PiArDQo+Pj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1 bmNzIA0KPj4+Pj4gbHNkY19jdXJzb3JfcGxhbmVfaGVscGVycyA9IHsNCj4+Pj4+ICvCoMKg wqAgLnByZXBhcmVfZmIgPSBkcm1fZ2VtX3ZyYW1fcGxhbmVfaGVscGVyX3ByZXBhcmVfZmIs DQo+Pj4+PiArwqDCoMKgIC5jbGVhbnVwX2ZiID0gZHJtX2dlbV92cmFtX3BsYW5lX2hlbHBl cl9jbGVhbnVwX2ZiLA0KPj4+Pj4gK8KgwqDCoCAuYXRvbWljX2NoZWNrID0gbHNkY19jdXJz b3JfYXRvbWljX2NoZWNrLA0KPj4+Pj4gK8KgwqDCoCAuYXRvbWljX3VwZGF0ZSA9IGxzZGNf Y3Vyc29yX2F0b21pY191cGRhdGUsDQo+Pj4+PiArwqDCoMKgIC5hdG9taWNfZGlzYWJsZSA9 IGxzZGNfY3Vyc29yX2F0b21pY19kaXNhYmxlLA0KPj4+Pj4gK307DQo+Pj4+PiArDQo+Pj4+ PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgbHNkY19wbGFuZV9mdW5j cyA9IHsNCj4+Pj4+ICvCoMKgwqAgLnVwZGF0ZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVy X3VwZGF0ZV9wbGFuZSwNCj4+Pj4+ICvCoMKgwqAgLmRpc2FibGVfcGxhbmUgPSBkcm1fYXRv bWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLA0KPj4+Pj4gK8KgwqDCoCAuZGVzdHJveSA9IGRy bV9wbGFuZV9jbGVhbnVwLA0KPj4+Pj4gK8KgwqDCoCAucmVzZXQgPSBkcm1fYXRvbWljX2hl bHBlcl9wbGFuZV9yZXNldCwNCj4+Pj4+ICvCoMKgwqAgLmF0b21pY19kdXBsaWNhdGVfc3Rh dGUgPSANCj4+Pj4+IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwN Cj4+Pj4+ICvCoMKgwqAgLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxw ZXJfcGxhbmVfZGVzdHJveV9zdGF0ZSwNCj4+Pj4+ICt9Ow0KPj4+Pj4gKw0KPj4+Pj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyAqDQo+Pj4+PiArbHNk Y19nZXRfY3Vyc29yX2hlbHBlcl9mdW5jcyhjb25zdCBzdHJ1Y3QgbHNkY19kZXNjICpkZXNj cCkNCj4+Pj4+ICt7DQo+Pj4+PiArwqDCoMKgIGlmIChkZXNjcC0+Y2hpcCA9PSBDSElQX0xT N0EyMDAwKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAmbHNkY19jdXJzb3JfcGxh bmVfaGVscGVyczsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgcmV0dXJuICZsc2RjX2N1cnNv cl9oZWxwZXJzX3F1aXJrOw0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICtpbnQgbHNkY19w bGFuZV9pbml0KHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiwNCj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLA0KPj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZW51bSBkcm1fcGxhbmVfdHlwZSB0eXBlLA0KPj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IGluZGV4KQ0KPj4+Pj4gK3sNCj4+Pj4+ ICvCoMKgwqAgY29uc3Qgc3RydWN0IGxzZGNfZGVzYyAqZGVzY3AgPSBsZGV2LT5kZXNjcDsN Cj4+Pj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSAmbGRldi0+YmFzZTsN Cj4+Pj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGZvcm1hdF9jb3VudDsNCj4+Pj4+ICvCoMKg wqAgY29uc3QgdTMyICpmb3JtYXRzOw0KPj4+Pj4gK8KgwqDCoCBjb25zdCBjaGFyICpuYW1l Ow0KPj4+Pj4gK8KgwqDCoCBpbnQgcmV0Ow0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBzd2l0 Y2ggKHR5cGUpIHsNCj4+Pj4+ICvCoMKgwqAgY2FzZSBEUk1fUExBTkVfVFlQRV9QUklNQVJZ Og0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGZvcm1hdHMgPSBsc2RjX3ByaW1hcnlfZm9ybWF0 czsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBmb3JtYXRfY291bnQgPSBBUlJBWV9TSVpFKGxz ZGNfcHJpbWFyeV9mb3JtYXRzKTsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBuYW1lID0gInBy aW1hcnktJXUiOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+Pj4gK8KgwqDC oCBjYXNlIERSTV9QTEFORV9UWVBFX0NVUlNPUjoNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBm b3JtYXRzID0gbHNkY19jdXJzb3JfZm9ybWF0czsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBm b3JtYXRfY291bnQgPSBBUlJBWV9TSVpFKGxzZGNfY3Vyc29yX2Zvcm1hdHMpOw0KPj4+Pj4g K8KgwqDCoMKgwqDCoMKgIG5hbWUgPSAiY3Vyc29yLSV1IjsNCj4+Pj4+ICvCoMKgwqDCoMKg wqDCoCBicmVhazsNCj4+Pj4+ICvCoMKgwqAgY2FzZSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZ Og0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9lcnIoZGRldiwgIm92ZXJsYXkgcGxhbmUg aXMgbm90IHN1cHBvcnRlZFxuIik7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+ Pj4+PiArwqDCoMKgIH0NCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgcmV0ID0gZHJtX3VuaXZl cnNhbF9wbGFuZV9pbml0KGRkZXYsIHBsYW5lLCAxIDw8IGluZGV4LA0KPj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZsc2RjX3BsYW5lX2Z1 bmNzLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGZvcm1hdHMsIGZvcm1hdF9jb3VudCwNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsc2RjX2ZiX2Zvcm1hdF9tb2RpZmllcnMsDQo+ Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdHlw ZSwgbmFtZSwgaW5kZXgpOw0KPj4+Pj4gK8KgwqDCoCBpZiAocmV0KSB7DQo+Pj4+PiArwqDC oMKgwqDCoMKgwqAgZHJtX2VycihkZGV2LCAiJXMgZmFpbGVkOiAlZFxuIiwgX19mdW5jX18s IHJldCk7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+Pj4+ICvCoMKg wqAgfQ0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBzd2l0Y2ggKHR5cGUpIHsNCj4+Pj4+ICvC oMKgwqAgY2FzZSBEUk1fUExBTkVfVFlQRV9QUklNQVJZOg0KPj4+Pj4gK8KgwqDCoMKgwqDC oMKgIGRybV9wbGFuZV9oZWxwZXJfYWRkKHBsYW5lLCAmbHNkY19wcmltYXJ5X3BsYW5lX2hl bHBlcnMpOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+Pj4gK8KgwqDCoCBj YXNlIERSTV9QTEFORV9UWVBFX0NVUlNPUjoNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1f cGxhbmVfaGVscGVyX2FkZChwbGFuZSwgDQo+Pj4+PiBsc2RjX2dldF9jdXJzb3JfaGVscGVy X2Z1bmNzKGRlc2NwKSk7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+Pj4+PiAr wqDCoMKgIGNhc2UgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWToNCj4+Pj4+ICvCoMKgwqDCoMKg wqDCoCBkcm1fZXJyKGRkZXYsICJvdmVybGF5IHBsYW5lIGlzIG5vdCBzdXBwb3J0ZWRcbiIp Ow0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+Pj4gK8KgwqDCoCB9DQo+Pj4+ PiArDQo+Pj4+PiArwqDCoMKgIHJldHVybiAwOw0KPj4+Pj4gK30NCj4+Pj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX3BsbC5jIA0KPj4+Pj4gYi9kcml2ZXJz L2dwdS9kcm0vbHNkYy9sc2RjX3BsbC5jDQo+Pj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K Pj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi42ZWQ3NDk4OWE2ZjUNCj4+Pj4+IC0tLSAvZGV2 L251bGwNCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNfcGxsLmMNCj4+ Pj4+IEBAIC0wLDAgKzEsNTY5IEBADQo+Pj4+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjANCj4+Pj4+ICsNCj4+Pj4+ICsjaW5jbHVkZSAibHNkY19kcnYuaCINCj4+ Pj4+ICsjaW5jbHVkZSAibHNkY19yZWdzLmgiDQo+Pj4+PiArI2luY2x1ZGUgImxzZGNfcGxs LmgiDQo+Pj4+PiArDQo+Pj4+PiArLyoNCj4+Pj4+ICsgKiBUaGUgc3RydWN0dXJlIG9mIHRo ZSBwaXhlbCBQTEwgcmVnaXN0ZXIgaXMgZXZvbHZlZCB3aXRoIHRpbWVzLg0KPj4+Pj4gKyAq IEFsbCBsb29uZ3NvbidzIGNwdSBpcyBsaXR0bGUgZW5kaWFuLg0KPj4+Pj4gKyAqLw0KPj4+ Pj4gKw0KPj4+Pj4gKy8qIHU2NCAqLw0KPj4+Pj4gK3N0cnVjdCBsczdhMTAwMF9waXhwbGxf Yml0bWFwIHsNCj4+Pj4+ICvCoMKgwqAgLyogQnl0ZSAwIH4gQnl0ZSAzICovDQo+Pj4+PiAr wqDCoMKgIHVuc2lnbmVkIGRpdl9vdXTCoMKgwqDCoMKgIDogNzvCoMKgIC8qwqAgMCA6IDbC oMKgwqDCoCBvdXRwdXQgY2xvY2sgDQo+Pj4+PiBkaXZpZGVywqAgKi8NCj4+Pj4+ICvCoMKg wqAgdW5zaWduZWQgX18xwqDCoMKgwqDCoMKgwqDCoMKgIDogMTQ7wqAgLyrCoCA3IDogDQo+ Pj4+PiAyMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICovDQo+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIGxvb3BjwqDCoMKgwqDCoMKgwqAgOiA5 O8KgwqAgLyogMjEgOiAyOcKgwqDCoCBjbG9jayANCj4+Pj4+IG11bHRpcGxpZXLCoMKgwqDC oMKgICovDQo+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIF9fMsKgwqDCoMKgwqDCoMKgwqDCoCA6 IDI7wqDCoCAvKiAzMCA6IA0KPj4+Pj4gMzHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCAvKiBC eXRlIDQgfiBCeXRlIDcgKi8NCj4+Pj4+ICvCoMKgwqAgdW5zaWduZWQgZGl2X3JlZsKgwqDC oMKgwqAgOiA3O8KgwqAgLyrCoCAwIDogNsKgwqDCoMKgIGlucHV0IGNsb2NrIA0KPj4+Pj4g ZGl2aWRlcsKgwqAgKi8NCj4+Pj4+ICvCoMKgwqAgdW5zaWduZWQgbG9ja2VkwqDCoMKgwqDC oMKgIDogMTvCoMKgIC8qwqAgN8KgwqDCoMKgwqDCoMKgwqAgUExMIGxvY2tlZCANCj4+Pj4+ IHN0YXR1c8KgwqDCoMKgICovDQo+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIHNlbF9vdXTCoMKg wqDCoMKgIDogMTvCoMKgIC8qwqAgOMKgwqDCoMKgwqDCoMKgwqAgb3V0cHV0IGNsayANCj4+ Pj4+IHNlbGVjdG9ywqDCoCAqLw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBfXzPCoMKgwqDC oMKgwqDCoMKgwqAgOiAyO8KgwqAgLyrCoCA5IDogMTAgcmVzZXJ2ZWTCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqLw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBzZXRfcGFyYW3CoMKg wqAgOiAxO8KgwqAgLyrCoCAxMcKgwqDCoMKgwqDCoMKgIHRyaWdnZXIgdGhlIA0KPj4+Pj4g dXBkYXRlwqDCoMKgICovDQo+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIGJ5cGFzc8KgwqDCoMKg wqDCoCA6IDE7wqDCoCAvKiANCj4+Pj4+IDEywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4+Pj4gK8KgwqDCoCB1bnNp Z25lZCBwb3dlcmRvd27CoMKgwqAgOiAxO8KgwqAgLyogDQo+Pj4+PiAxM8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+ Pj4+ICvCoMKgwqAgdW5zaWduZWQgX180wqDCoMKgwqDCoMKgwqDCoMKgIDogMTg7wqAgLyrC oCAxNCA6IA0KPj4+Pj4gMzHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKi8NCj4+Pj4+ICt9Ow0KPj4+Pj4gKw0KPj4+Pj4gKy8qIHUxMjggKi8N Cj4+Pj4+ICtzdHJ1Y3QgbHMyazEwMDBfcGl4cGxsX2JpdG1hcCB7DQo+Pj4+PiArwqDCoMKg IC8qIEJ5dGUgMCB+IEJ5dGUgMyAqLw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBzZWxfb3V0 wqDCoMKgwqDCoCA6wqAgMTvCoCAvKsKgIDDCoMKgwqDCoMKgIHNlbGVjdCB0aGlzIA0KPj4+ Pj4gUExMwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIF9f McKgwqDCoMKgwqDCoMKgwqDCoCA6wqAgMTvCoCAvKiANCj4+Pj4+IDHCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+ Pj4+ICvCoMKgwqAgdW5zaWduZWQgc3dfYWRqX2VuwqDCoMKgIDrCoCAxO8KgIC8qwqAgMsKg wqDCoMKgwqAgYWxsb3cgc29mdHdhcmUgDQo+Pj4+PiBhZGp1c3TCoMKgwqAgKi8NCj4+Pj4+ ICvCoMKgwqAgdW5zaWduZWQgYnlwYXNzwqDCoMKgwqDCoMKgIDrCoCAxO8KgIC8qwqAgM8Kg wqDCoMKgwqAgYnlwYXNzIEwxIA0KPj4+Pj4gUExMwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq Lw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBfXzLCoMKgwqDCoMKgwqDCoMKgwqAgOsKgIDM7 wqAgLyogDQo+Pj4+PiA0OjbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBsb2NrX2Vu wqDCoMKgwqDCoCA6wqAgMTvCoCAvKsKgIDfCoMKgwqDCoMKgIGVuYWJsZSBsb2NrIEwxIA0K Pj4+Pj4gUExMwqDCoMKgwqDCoMKgICovDQo+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIF9fM8Kg wqDCoMKgwqDCoMKgwqDCoCA6wqAgMjvCoCAvKiANCj4+Pj4+IDg6OcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+Pj4+PiAr wqDCoMKgIHVuc2lnbmVkIGxvY2tfY2hlY2vCoMKgIDrCoCAyO8KgIC8qIDEwOjExwqDCoCBw cmVjaXNpb24gDQo+Pj4+PiBjaGVja8KgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4+Pj4gK8Kg wqDCoCB1bnNpZ25lZCBfXzTCoMKgwqDCoMKgwqDCoMKgwqAgOsKgIDQ7wqAgLyogDQo+Pj4+ PiAxMjoxNcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqLw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBsb2NrZWTCoMKg wqDCoMKgwqAgOsKgIDE7wqAgLyogMTbCoMKgwqDCoMKgIFBMTCBsb2NrZWQgZmxhZyANCj4+ Pj4+IGJpdMKgwqDCoMKgwqAgKi8NCj4+Pj4+ICvCoMKgwqAgdW5zaWduZWQgX181wqDCoMKg wqDCoMKgwqDCoMKgIDrCoCAyO8KgIC8qIA0KPj4+Pj4gMTc6MTjCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+Pj4+ICvCoMKg wqAgdW5zaWduZWQgcG93ZXJkb3duwqDCoMKgIDrCoCAxO8KgIC8qIDE5wqDCoMKgwqDCoCBw b3dlcmRvd24gdGhlIHBsbCBpZiANCj4+Pj4+IHNldCAqLw0KPj4+Pj4gK8KgwqDCoCB1bnNp Z25lZCBfXzbCoMKgwqDCoMKgwqDCoMKgwqAgOsKgIDY7wqAgLyogDQo+Pj4+PiAyMDoyNcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq Lw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBkaXZfcmVmwqDCoMKgwqDCoCA6wqAgNjvCoCAv KiAyNjozMcKgwqAgTDEgDQo+Pj4+PiBQcmVzY2FsZXLCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKi8NCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLyogQnl0ZSA0IH4gQnl0ZSA3ICovDQo+ Pj4+PiArwqDCoMKgIHVuc2lnbmVkIGxvb3BjwqDCoMKgwqDCoMKgwqAgOiAxMDvCoCAvKiAz Mjo0McKgwqAgQ2xvY2sgDQo+Pj4+PiBNdWx0aXBsaWVywqDCoMKgwqDCoMKgwqDCoCAqLw0K Pj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBsMV9kaXbCoMKgwqDCoMKgwqAgOsKgIDY7wqAgLyog NDI6NDfCoMKgIG5vdCANCj4+Pj4+IHVzZWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqLw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBfXzfCoMKgwqDCoMKgwqDCoMKgwqAg OiAxNjvCoCAvKiANCj4+Pj4+IDQ4OjYzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIC8q IEJ5dGUgOCB+IEJ5dGUgMTUgKi8NCj4+Pj4+ICvCoMKgwqAgdW5zaWduZWQgZGl2X291dMKg wqDCoMKgwqAgOsKgIDY7wqAgLyogMCA6IDXCoMKgIG91dHB1dCBjbG9jayANCj4+Pj4+IGRp dmlkZXLCoMKgwqDCoCAqLw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBfXzjCoMKgwqDCoMKg wqDCoMKgwqAgOiAyNjvCoCAvKiA2IDogDQo+Pj4+PiAzMcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+Pj4+ICvCoMKgwqAgdW5z aWduZWQgX185wqDCoMKgwqDCoMKgwqDCoMKgIDogMzI7wqAgLyogNzA6IA0KPj4+Pj4gMTI3 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8N Cj4+Pj4+ICt9Ow0KPj4+Pj4gKw0KPj4+Pj4gKy8qIHUzMiAqLw0KPj4+Pj4gK3N0cnVjdCBs czJrMDUwMF9waXhwbGxfYml0bWFwIHsNCj4+Pj4+ICvCoMKgwqAgLyogQnl0ZSAwIH4gQnl0 ZSAxICovDQo+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIHNlbF9vdXTCoMKgwqDCoMKgIDogMTsN Cj4+Pj4+ICvCoMKgwqAgdW5zaWduZWQgX18xwqDCoMKgwqDCoMKgwqDCoMKgIDogMjsNCj4+ Pj4+ICvCoMKgwqAgdW5zaWduZWQgc3dfYWRqX2VuwqDCoMKgIDogMTvCoMKgIC8qIGFsbG93 IHNvZnR3YXJlIA0KPj4+Pj4gYWRqdXN0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8N Cj4+Pj4+ICvCoMKgwqAgdW5zaWduZWQgYnlwYXNzwqDCoMKgwqDCoMKgIDogMTvCoMKgIC8q IGJ5cGFzcyBMMSANCj4+Pj4+IFBMTMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqLw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBwb3dlcmRvd27CoMKgwqAg OiAxO8KgwqAgLyogd3JpdGUgMSB0byBwb3dlcmRvd24gdGhlIA0KPj4+Pj4gUExMwqDCoMKg wqDCoMKgICovDQo+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIF9fMsKgwqDCoMKgwqDCoMKgwqDC oCA6IDE7DQo+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIGxvY2tlZMKgwqDCoMKgwqDCoCA6IDE7 wqDCoCAvKsKgIDfCoMKgwqDCoCBJcyBMMSBQTEwgbG9ja2VkLCByZWFkIA0KPj4+Pj4gb25s eSAqLw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBkaXZfcmVmwqDCoMKgwqDCoCA6IDY7wqDC oCAvKsKgIDg6MTPCoCByZWYgY2xvY2sgDQo+Pj4+PiBkaXZpZGVywqDCoMKgwqDCoMKgwqDC oMKgwqAgKi8NCj4+Pj4+ICvCoMKgwqAgdW5zaWduZWQgX18zwqDCoMKgwqDCoMKgwqDCoMKg IDogMjvCoMKgIC8qIA0KPj4+Pj4gMTQ6MTXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+Pj4+PiArwqDCoMKgIC8qIEJ5 dGUgMiB+IEJ5dGUgMyAqLw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBsb29wY8KgwqDCoMKg wqDCoMKgIDogODvCoMKgIC8qIDE2OjIzwqDCoCBDbG9jayANCj4+Pj4+IE11bHRpcGxpZXLC oMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBkaXZfb3V0 wqDCoMKgwqDCoCA6IDY7wqDCoCAvKiAyNDoyOcKgwqAgb3V0cHV0IGNsb2NrIA0KPj4+Pj4g ZGl2aWRlcsKgwqDCoMKgwqDCoCAqLw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBfXzTCoMKg wqDCoMKgwqDCoMKgwqAgOiAyO8KgwqAgLyogDQo+Pj4+PiAzMDozMcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+Pj4+ ICt9Ow0KPj4+Pj4gKw0KPj4+Pj4gK3VuaW9uIGxzZGNfcGl4cGxsX2JpdG1hcCB7DQo+Pj4+ PiArwqDCoMKgIHN0cnVjdCBsczdhMTAwMF9waXhwbGxfYml0bWFwIGxzN2ExMDAwOw0KPj4+ Pj4gK8KgwqDCoCBzdHJ1Y3QgbHMyazEwMDBfcGl4cGxsX2JpdG1hcCBsczJrMTAwMDsNCj4+ Pj4+ICvCoMKgwqAgc3RydWN0IGxzMmswNTAwX3BpeHBsbF9iaXRtYXAgbHMyazA1MDA7DQo+ Pj4+PiArDQo+Pj4+PiArwqDCoMKgIHUzMiBkd29yZFs0XTsNCj4+Pj4+ICt9Ow0KPj4+Pj4g Kw0KPj4+Pj4gK3N0cnVjdCBwaXhjbGtfdG9fcGxsX3Bhcm0gew0KPj4+Pj4gK8KgwqDCoCAv KiBrSHogKi8NCj4+Pj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGNsb2NrOw0KPj4+Pj4gKw0K Pj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBzaG9ydCB3aWR0aDsNCj4+Pj4+ICvCoMKgwqAgdW5z aWduZWQgc2hvcnQgaGVpZ2h0Ow0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBzaG9ydCB2cmVm cmVzaDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLyogU3RvcmVzIHBhcmFtZXRlcnMgZm9y IHByb2dyYW1taW5nIHRoZSBIYXJkd2FyZSBQTExzICovDQo+Pj4+PiArwqDCoMKgIHVuc2ln bmVkIHNob3J0IGRpdl9vdXQ7DQo+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIHNob3J0IGxvb3Bj Ow0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBzaG9ydCBkaXZfcmVmOw0KPj4+Pj4gK307DQo+ Pj4+PiArDQo+Pj4+PiArLyoNCj4+Pj4+ICsgKiBQaXhlbCBjbG9jayB0byBQTEwgcGFyYW1l dGVycyB0cmFuc2xhdGlvbiB0YWJsZS4NCj4+Pj4+ICsgKiBTbWFsbCBzdGF0aWMgY2FjaGVk IHZhbHVlIHRvIHNwZWVkIHVwIFBMTCBwYXJhbWV0ZXJzIGNhbGN1bGF0aW9uLg0KPj4+Pj4g KyAqLw0KPj4+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGl4Y2xrX3RvX3BsbF9wYXJtIHBs bF9wYXJhbV90YWJsZVtdID0gew0KPj4+Pj4gK8KgwqDCoCB7MTQ4NTAwLCAxOTIwLCAxMDgw LCA2MCwgMTEsIDQ5LMKgIDN9LMKgwqAgLyogMTkyMHgxMDgwQDYwSHogKi8NCj4+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIDE5MjB4 MTA4MEA1MEh6ICovDQo+Pj4+PiArwqDCoMKgIHsxNzQ1MDAsIDE5MjAsIDEwODAsIDc1LCAx NywgODkswqAgM30swqDCoCAvKiAxOTIweDEwODBANzVIeiAqLw0KPj4+Pj4gK8KgwqDCoCB7 MTgxMjUwLCAyNTYwLCAxMDgwLCA3NSzCoCA4LCA1OCzCoCA0fSzCoMKgIC8qIDI1NjB4MTA4 MEA3NUh6ICovDQo+Pj4+PiArwqDCoMKgIHsxNDYyNTAsIDE2ODAsIDEwNTAsIDYwLCAxNiwg MTE3LCA1fSzCoMKgIC8qIDE2ODB4MTA1MEA2MEh6ICovDQo+Pj4+PiArwqDCoMKgIHsxMzUw MDAsIDEyODAsIDEwMjQsIDc1LCAxMCwgNTQswqAgNH0swqDCoCAvKiAxMjgweDEwMjRANzVI eiAqLw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCB7MTA4MDAwLCAxNjAwLCA5MDAswqAgNjAs IDE1LCA4MSzCoCA1fSzCoMKgIC8qIDE2MDB4OTAwQDYwSHogKi8NCj4+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIDEyODB4MTAyNEA2 MEh6ICovDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAvKiAxMjgweDk2MEA2MEh6ICovDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiAxMTUyeDg2NEA3NUh6ICovDQo+Pj4+ PiArDQo+Pj4+PiArwqDCoMKgIHsxMDY1MDAsIDE0NDAsIDkwMCzCoCA2MCwgMTksIDgxLMKg IDR9LMKgwqAgLyogMTQ0MHg5MDBANjBIeiAqLw0KPj4+Pj4gK8KgwqDCoCB7ODg3NTAswqAg MTQ0MCwgOTAwLMKgIDYwLCAxNiwgNzEswqAgNX0swqDCoCAvKiAxNDQweDkwMEA2MEh6ICov DQo+Pj4+PiArwqDCoMKgIHs4MzUwMCzCoCAxMjgwLCA4MDAswqAgNjAsIDE3LCA3MSzCoCA1 fSzCoMKgIC8qIDEyODB4ODAwQDYwSHogKi8NCj4+Pj4+ICvCoMKgwqAgezcxMDAwLMKgIDEy ODAsIDgwMCzCoCA2MCwgMjAsIDcxLMKgIDV9LMKgwqAgLyogMTI4MHg4MDBANjBIeiAqLw0K Pj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCB7NzQyNTAswqAgMTI4MCwgNzIwLMKgIDYwLCAyMiwg NDkswqAgM30swqDCoCAvKiAxMjgweDcyMEA2MEh6ICovDQo+Pj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiAxMjgweDcyMEA1MEh6ICov DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIHs3ODc1MCzCoCAxMDI0LCA3NjgswqAgNzUsIDE2 LCA2MyzCoCA1fSzCoMKgIC8qIDEwMjR4NzY4QDc1SHogKi8NCj4+Pj4+ICvCoMKgwqAgezc1 MDAwLMKgIDEwMjQsIDc2OCzCoCA3MCwgMjksIDg3LMKgIDR9LMKgwqAgLyogMTAyNHg3NjhA NzBIeiAqLw0KPj4+Pj4gK8KgwqDCoCB7NjUwMDAswqAgMTAyNCwgNzY4LMKgIDYwLCAyMCwg MzkswqAgM30swqDCoCAvKiAxMDI0eDc2OEA2MEh6ICovDQo+Pj4+PiArDQo+Pj4+PiArwqDC oMKgIHs1MTIwMCzCoCAxMDI0LCA2MDAswqAgNjAsIDI1LCA2NCzCoCA1fSzCoMKgIC8qIDEw MjR4NjAwQDYwSHogKi8NCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgezU3Mjg0LMKgIDgzMizC oCA2MjQswqAgNzUsIDI0LCA1NSzCoCA0fSzCoMKgIC8qIDgzMng2MjRANzVIeiAqLw0KPj4+ Pj4gK8KgwqDCoCB7NDk1MDAswqAgODAwLMKgIDYwMCzCoCA3NSwgNDAsIDk5LMKgIDV9LMKg wqAgLyogODAweDYwMEA3NUh6ICovDQo+Pj4+PiArwqDCoMKgIHs1MDAwMCzCoCA4MDAswqAg NjAwLMKgIDcyLCA0NCwgODgswqAgNH0swqDCoCAvKiA4MDB4NjAwQDcySHogKi8NCj4+Pj4+ ICvCoMKgwqAgezQwMDAwLMKgIDgwMCzCoCA2MDAswqAgNjAsIDMwLCAzNizCoCAzfSzCoMKg IC8qIDgwMHg2MDBANjBIeiAqLw0KPj4+Pj4gK8KgwqDCoCB7MzYwMDAswqAgODAwLMKgIDYw MCzCoCA1NiwgNTAsIDcyLMKgIDR9LMKgwqAgLyogODAweDYwMEA1Nkh6ICovDQo+Pj4+PiAr wqDCoMKgIHszMTUwMCzCoCA2NDAswqAgNDgwLMKgIDc1LCA0MCwgNjMswqAgNX0swqDCoCAv KiA2NDB4NDgwQDc1SHogKi8NCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC8qIDY0MHg0ODBANzNIeiAqLw0KPj4+Pj4gKw0KPj4+Pj4g K8KgwqDCoCB7MzAyNDAswqAgNjQwLMKgIDQ4MCzCoCA2NywgNjIsIDc1LMKgIDR9LMKgwqAg LyogNjQweDQ4MEA2N0h6ICovDQo+Pj4+PiArwqDCoMKgIHsyNzAwMCzCoCA3MjAswqAgNTc2 LMKgIDUwLCA1MCwgNTQswqAgNH0swqDCoCAvKiA3MjB4NTc2QDYwSHogKi8NCj4+Pj4+ICvC oMKgwqAgezI1MTc1LMKgIDY0MCzCoCA0ODAswqAgNjAsIDg1LCAxMDcsIDV9LMKgwqAgLyog NjQweDQ4MEA2MEh6ICovDQo+Pj4+PiArwqDCoMKgIHsyNTIwMCzCoCA2NDAswqAgNDgwLMKg IDYwLCA1MCwgNjMswqAgNX0swqDCoCAvKiA2NDB4NDgwQDYwSHogKi8NCj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIDcyMHg0ODBA NjBIeiAqLw0KPj4+Pj4gK307DQo+Pj4+PiArDQo+Pj4+PiArLyoNCj4+Pj4+ICsgKiBsc2Rj X3BpeHBsbF9zZXR1cCAtIGlvcmVtYXAgdGhlIGRldmljZSBkZXBlbmRlbnQgUExMIHJlZ2lz dGVycw0KPj4+Pj4gKyAqDQo+Pj4+PiArICogQHRoaXM6IHBvaW50IHRvIHRoZSBvYmplY3Qg d2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbQ0KPj4+Pj4gKyAqLw0KPj4+Pj4g K3N0YXRpYyBpbnQgbHNkY19waXhwbGxfc2V0dXAoc3RydWN0IGxzZGNfcGxsICogY29uc3Qg dGhpcykNCj4+Pj4+ICt7DQo+Pj4+PiArwqDCoMKgIHRoaXMtPm1taW8gPSBpb3JlbWFwKHRo aXMtPnJlZ19iYXNlLCB0aGlzLT5yZWdfc2l6ZSk7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKg IHJldHVybiAwOw0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+Pj4+ICsvKg0KPj4+Pj4gKyAqIEZp bmQgYSBzZXQgb2YgcGxsIHBhcmFtZXRlcnMgKHRvIGdlbmVyYXRlIHBpeGVsIGNsb2NrKSBm cm9tIGEgDQo+Pj4+PiBzdGF0aWMNCj4+Pj4+ICsgKiBsb2NhbCB0YWJsZSwgd2hpY2ggYXZv aWQgdG8gY29tcHV0ZSB0aGUgcGxsIHBhcmFtZXRlciBlYWNodGltZSBhDQo+Pj4+PiArICog bW9kZXNldCBpcyB0cmlnZ2VyZWQuDQo+Pj4+PiArICoNCj4+Pj4+ICsgKiBAdGhpczogcG9p bnQgdG8gdGhlIG9iamVjdCB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tDQo+ Pj4+PiArICogQGNsb2NrOiB0aGUgZGVzaXJlZCBvdXRwdXQgcGl4ZWwgY2xvY2ssIHRoZSB1 bml0IGlzIGtIeg0KPj4+Pj4gKyAqIEBwb3V0OiBwb2ludCB0byB3aGVyZSB0aGUgcGFyYW1l dGVycyB0byBzdG9yZSBpZiBmb3VuZA0KPj4+Pj4gKyAqDQo+Pj4+PiArICrCoCBSZXR1cm4g dHJ1ZSBpZiBoaXQsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuDQo+Pj4+PiArICovDQo+Pj4+ PiArc3RhdGljIGJvb2wgbHNkY19waXhwbGxfZmluZChzdHJ1Y3QgbHNkY19wbGwgKiBjb25z dCB0aGlzLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2ln bmVkIGludCBjbG9jaywNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzdHJ1Y3QgbHNkY19wbGxfcGFybXMgKiBjb25zdCBwb3V0KQ0KPj4+Pj4gK3sNCj4+Pj4+ ICvCoMKgwqAgdW5zaWduZWQgaW50IG51bSA9IEFSUkFZX1NJWkUocGxsX3BhcmFtX3RhYmxl KTsNCj4+Pj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGk7DQo+Pj4+PiArDQo+Pj4+PiArwqDC oMKgIGZvciAoaSA9IDA7IGkgPCBudW07IGkrKykgew0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg IGlmIChjbG9jayAhPSBwbGxfcGFyYW1fdGFibGVbaV0uY2xvY2spDQo+Pj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqDCoMKg wqDCoCBwb3V0LT5kaXZfcmVmID0gcGxsX3BhcmFtX3RhYmxlW2ldLmRpdl9yZWY7DQo+Pj4+ PiArwqDCoMKgwqDCoMKgwqAgcG91dC0+bG9vcGPCoMKgID0gcGxsX3BhcmFtX3RhYmxlW2ld Lmxvb3BjOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHBvdXQtPmRpdl9vdXQgPSBwbGxfcGFy YW1fdGFibGVbaV0uZGl2X291dDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gdHJ1ZTsNCj4+Pj4+ICvCoMKgwqAgfQ0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBk cm1fZGJnKHRoaXMtPmRkZXYsICJwaXhlbCBjbG9jayAldTogbWlzc1xuIiwgY2xvY2spOw0K Pj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCByZXR1cm4gZmFsc2U7DQo+Pj4+PiArfQ0KPj4+Pj4g Kw0KPj4+Pj4gKy8qDQo+Pj4+PiArICogRmluZCBhIHNldCBvZiBwbGwgcGFyYW1ldGVycyB3 aGljaCBoYXZlIG1pbmltYWwgZGlmZmVyZW5jZSB3aXRoIA0KPj4+Pj4gdGhlIGRlc2lyZWQN Cj4+Pj4+ICsgKiBwaXhlbCBjbG9jayBmcmVxdWVuY3kuIEl0IGRvZXMgdGhhdCBieSBjb21w dXRpbmcgYWxsIG9mIHRoZSANCj4+Pj4+IHBvc3NpYmxlDQo+Pj4+PiArICogY29tYmluYXRp b24uIENvbXB1dGUgdGhlIGRpZmYgYW5kIGZpbmQgdGhlIGNvbWJpbmF0aW9uIHdpdGggDQo+ Pj4+PiBtaW5pbWFsIGRpZmYuDQo+Pj4+PiArICoNCj4+Pj4+ICsgKsKgIGNsb2NrX291dCA9 IHJlZmNsayAvIGRpdl9yZWYgKiBsb29wYyAvIGRpdl9vdXQNCj4+Pj4+ICsgKg0KPj4+Pj4g KyAqwqAgcmVmY2xrIGlzIGRldGVybWluZWQgYnkgdGhlIG9zY2lsbGF0b3IgbW91bnRlZCBi b2FyZChIZXJlIGlzIA0KPj4+Pj4gMTAwTUh6IGluDQo+Pj4+PiArICrCoCBhbG1vc3QgYWxs IGNhc2UpDQo+Pj4+PiArICoNCj4+Pj4+ICsgKiBAdGhpczogcG9pbnQgdG8gdGhlIG9iamVj dCBmcm9tIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkDQo+Pj4+PiArICogQGNsb2Nr X2toejogdGhlIGRlc2lyZWQgb3V0cHV0IHBpeGVsIGNsb2NrLCB0aGUgdW5pdCBpcyBrSHoN Cj4+Pj4+ICsgKiBAcG91dDogcG9pbnQgdG8gdGhlIG91dCBzdHJ1Y3Qgb2YgbHNkY19wbGxf cGFybXMNCj4+Pj4+ICsgKg0KPj4+Pj4gKyAqwqAgUmV0dXJuIHRydWUgaWYgYSBwYXJhbWV0 ZXIgaXMgZm91bmQsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UNCj4+Pj4+ICsgKi8NCj4+Pj4+ ICtzdGF0aWMgYm9vbCBsc2RjX3BpeHBsbF9jb21wdXRlKHN0cnVjdCBsc2RjX3BsbCAqIGNv bnN0IHRoaXMsDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2ln bmVkIGludCBjbG9ja19raHosDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHN0cnVjdCBsc2RjX3BsbF9wYXJtcyAqcG91dCkNCj4+Pj4+ICt7DQo+Pj4+PiArwqDC oMKgIHVuc2lnbmVkIGludCByZWZjbGsgPSB0aGlzLT5yZWZfY2xvY2s7DQo+Pj4+PiArwqDC oMKgIGNvbnN0IHVuc2lnbmVkIGludCB0b2xlcmFuY2UgPSAxMDAwOw0KPj4+Pj4gK8KgwqDC oCB1bnNpZ25lZCBpbnQgbWluID0gdG9sZXJhbmNlOw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25l ZCBpbnQgZGl2X291dCwgbG9vcGMsIGRpdl9yZWY7DQo+Pj4+PiArwqDCoMKgIHVuc2lnbmVk IGludCBjb21wdXRlZDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgaWYgKGxzZGNfcGl4cGxs X2ZpbmQodGhpcywgY2xvY2tfa2h6LCBwb3V0KSkNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gdHJ1ZTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgZm9yIChkaXZfb3V0ID0gNjsg ZGl2X291dCA8IDY0OyBkaXZfb3V0KyspIHsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBmb3Ig KGRpdl9yZWYgPSAzOyBkaXZfcmVmIDwgNjsgZGl2X3JlZisrKSB7DQo+Pj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBmb3IgKGxvb3BjID0gNjsgbG9vcGMgPCAxNjE7IGxvb3BjKysp IHsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGRpZmY7DQo+ Pj4+PiArDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChsb29w YyA8IDEyICogZGl2X3JlZikNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBjb250aW51ZTsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKGxvb3BjID4gMzIgKiBkaXZfcmVmKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOw0KPj4+Pj4gKw0KPj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb21wdXRlZCA9IHJlZmNsayAqIGxvb3Bj IC8gZGl2X3JlZiAvIGRpdl9vdXQ7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGlmIChjbG9ja19raHogPiBjb21wdXRlZCkNCj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkaWZmID0gY2xvY2tfa2h6IC0g Y29tcHV0ZWQ7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2Ug aWYgKGNsb2NrX2toeiA8IGNvbXB1dGVkKQ0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGRpZmYgPSBjb21wdXRlZCAtIGNsb2NrX2toejsNCj4+Pj4+ ICsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGRpZmYgPCBt aW4pIHsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBt aW4gPSBkaWZmOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHBvdXQtPmRpdl9yZWYgPSBkaXZfcmVmOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvdXQtPmRpdl9vdXQgPSBkaXZfb3V0Ow0KPj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvdXQtPmxvb3BjID0g bG9vcGM7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaWYgKGRpZmYgPT0gMCkNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiB0cnVlOw0KPj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB9DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgfQ0KPj4+Pj4gK8KgwqDCoCB9DQo+Pj4+PiAr DQo+Pj4+PiArwqDCoMKgIHJldHVybiBtaW4gPCB0b2xlcmFuY2U7DQo+Pj4+PiArfQ0KPj4+ Pj4gKw0KPj4+Pj4gKy8qDQo+Pj4+PiArICogVXBkYXRlIHRoZSBwbGwgcGFyYW1ldGVycyB0 byBoYXJkd2FyZSwgdGFyZ2V0IHRvIHRoZSBwaXhwbGwgaW4gDQo+Pj4+PiBsczdhMTAwMA0K Pj4+Pj4gKyAqDQo+Pj4+PiArICogQHRoaXM6IHBvaW50IHRvIHRoZSBvYmplY3QgZnJvbSB3 aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZA0KPj4+Pj4gKyAqIEBwaW46IHBvaW50IHRv IHRoZSBzdHJ1Y3Qgb2YgbHNkY19wbGxfcGFybXMgcGFzc2VkIGluDQo+Pj4+PiArICoNCj4+ Pj4+ICsgKiByZXR1cm4gMCBpZiBzdWNjZXNzZnVsLg0KPj4+Pj4gKyAqLw0KPj4+Pj4gK3N0 YXRpYyBpbnQgbHM3YTEwMDBfcGl4cGxsX3BhcmFtX3VwZGF0ZShzdHJ1Y3QgbHNkY19wbGwg KiBjb25zdCB0aGlzLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0cnVjdCBsc2RjX3BsbF9wYXJtcyBjb25zdCAqcGluKQ0KPj4+Pj4gK3sNCj4+ Pj4+ICvCoMKgwqAgdm9pZCBfX2lvbWVtICpyZWcgPSB0aGlzLT5tbWlvOw0KPj4+Pj4gK8Kg wqDCoCB1bnNpZ25lZCBpbnQgY291bnRlciA9IDA7DQo+Pj4+PiArwqDCoMKgIGJvb2wgbG9j a2VkOw0KPj4+Pj4gK8KgwqDCoCB1MzIgdmFsOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCAv KiBCeXBhc3MgdGhlIHNvZnR3YXJlIGNvbmZpZ3VyZWQgUExMLCB1c2luZyByZWZjbGsgZGly ZWN0bHkgKi8NCj4+Pj4+ICvCoMKgwqAgdmFsID0gcmVhZGwocmVnICsgMHg0KTsNCj4+Pj4+ ICvCoMKgwqAgdmFsICY9IH4oMSA8PCA4KTsNCj4+Pj4+ICvCoMKgwqAgd3JpdGVsKHZhbCwg cmVnICsgMHg0KTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLyogUG93ZXJkb3duIHRoZSBQ TEwgKi8NCj4+Pj4+ICvCoMKgwqAgdmFsID0gcmVhZGwocmVnICsgMHg0KTsNCj4+Pj4+ICvC oMKgwqAgdmFsIHw9ICgxIDw8IDEzKTsNCj4+Pj4+ICvCoMKgwqAgd3JpdGVsKHZhbCwgcmVn ICsgMHg0KTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLyogQ2xlYXIgdGhlIHBsbCBwYXJh bWV0ZXJzICovDQo+Pj4+PiArwqDCoMKgIHZhbCA9IHJlYWRsKHJlZyArIDB4NCk7DQo+Pj4+ PiArwqDCoMKgIHZhbCAmPSB+KDEgPDwgMTEpOw0KPj4+Pj4gK8KgwqDCoCB3cml0ZWwodmFs LCByZWcgKyAweDQpOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCAvKiBjbGVhciBvbGQgdmFs dWUgJiBjb25maWcgbmV3IHZhbHVlICovDQo+Pj4+PiArwqDCoMKgIHZhbCA9IHJlYWRsKHJl ZyArIDB4MDQpOw0KPj4+Pj4gK8KgwqDCoCB2YWwgJj0gfjB4N0Y7DQo+Pj4+PiArwqDCoMKg IHZhbCB8PSBwaW4tPmRpdl9yZWY7wqDCoMKgwqDCoMKgwqAgLyogZGl2X3JlZiAqLw0KPj4+ Pj4gK8KgwqDCoCB3cml0ZWwodmFsLCByZWcgKyAweDQpOw0KPj4+Pj4gKw0KPj4+Pj4gK8Kg wqDCoCB2YWwgPSByZWFkbChyZWcpOw0KPj4+Pj4gK8KgwqDCoCB2YWwgJj0gfjB4N2Y7DQo+ Pj4+PiArwqDCoMKgIHZhbCB8PSBwaW4tPmRpdl9vdXQ7wqDCoMKgwqDCoMKgwqAgLyogZGl2 X291dCAqLw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCB2YWwgJj0gfigweDFmZiA8PCAyMSk7 DQo+Pj4+PiArwqDCoMKgIHZhbCB8PSBwaW4tPmxvb3BjIDw8IDIxO8KgwqDCoCAvKiBsb29w YyAqLw0KPj4+Pj4gK8KgwqDCoCB3cml0ZWwodmFsLCByZWcpOw0KPj4+Pj4gKw0KPj4+Pj4g K8KgwqDCoCAvKiBTZXQgdGhlIHBsbCB0aGUgcGFyYW1ldGVycyAqLw0KPj4+Pj4gK8KgwqDC oCB2YWwgPSByZWFkbChyZWcgKyAweDQpOw0KPj4+Pj4gK8KgwqDCoCB2YWwgfD0gKDEgPDwg MTEpOw0KPj4+Pj4gK8KgwqDCoCB3cml0ZWwodmFsLCByZWcgKyAweDQpOw0KPj4+Pj4gKw0K Pj4+Pj4gK8KgwqDCoCAvKiBQb3dlcnVwIHRoZSBQTEwgKi8NCj4+Pj4+ICvCoMKgwqAgdmFs ID0gcmVhZGwocmVnICsgMHg0KTsNCj4+Pj4+ICvCoMKgwqAgdmFsICY9IH4oMSA8PCAxMyk7 DQo+Pj4+PiArwqDCoMKgIHdyaXRlbCh2YWwsIHJlZyArIDB4NCk7DQo+Pj4+PiArDQo+Pj4+ PiArwqDCoMKgIC8qIFdhaXQgdGhlIFBMTCBsb2NrICovDQo+Pj4+PiArwqDCoMKgIGRvIHsN Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCB2YWwgPSByZWFkbChyZWcgKyAweDQpOw0KPj4+Pj4g K8KgwqDCoMKgwqDCoMKgIGxvY2tlZCA9IHZhbCAmIDB4ODA7DQo+Pj4+PiArwqDCoMKgwqDC oMKgwqAgY291bnRlcisrOw0KPj4+Pj4gK8KgwqDCoCB9IHdoaWxlICghbG9ja2VkICYmIChj b3VudGVyIDwgMjAwMCkpOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCBkcm1fZGJnKHRoaXMt PmRkZXYsICIldSBsb29wIHdhaXRlZFxuIiwgY291bnRlcik7DQo+Pj4+PiArDQo+Pj4+PiAr wqDCoMKgIC8qIFN3aXRjaCB0byB0aGUgc29mdHdhcmUgY29uZmlndXJlZCBwbGwgKi8NCj4+ Pj4+ICvCoMKgwqAgdmFsID0gcmVhZGwocmVnICsgMHg0KTsNCj4+Pj4+ICvCoMKgwqAgdmFs IHw9ICgxVUwgPDwgOCk7DQo+Pj4+PiArwqDCoMKgIHdyaXRlbCh2YWwsIHJlZyArIDB4NCk7 DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIHJldHVybiAwOw0KPj4+Pj4gK30NCj4+Pj4+ICsN Cj4+Pj4+ICsvKg0KPj4+Pj4gKyAqIFVwZGF0ZSB0aGUgcGxsIHBhcmFtZXRlcnMgdG8gaGFy ZHdhcmUsIHRhcmdldCB0byB0aGUgcGl4cGxsIGluIA0KPj4+Pj4gbHMyazEwMDANCj4+Pj4+ ICsgKg0KPj4+Pj4gKyAqIEB0aGlzOiBwb2ludCB0byB0aGUgb2JqZWN0IGZyb20gd2hpY2gg dGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQNCj4+Pj4+ICsgKiBAcGluOiBwb2ludCB0byB0aGUg c3RydWN0IG9mIGxzZGNfcGxsX3Bhcm1zIHBhc3NlZCBpbg0KPj4+Pj4gKyAqDQo+Pj4+PiAr ICogcmV0dXJuIDAgaWYgc3VjY2Vzc2Z1bC4NCj4+Pj4+ICsgKi8NCj4+Pj4+ICtzdGF0aWMg aW50IGxzMmsxMDAwX3BpeHBsbF9wYXJhbV91cGRhdGUoc3RydWN0IGxzZGNfcGxsICogY29u c3QgdGhpcywNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzdHJ1Y3QgbHNkY19wbGxfcGFybXMgY29uc3QgKnBpbikNCj4+Pj4+ICt7DQo+Pj4+PiAr wqDCoMKgIHZvaWQgX19pb21lbSAqcmVnID0gdGhpcy0+bW1pbzsNCj4+Pj4+ICvCoMKgwqAg dW5zaWduZWQgaW50IGNvdW50ZXIgPSAwOw0KPj4+Pj4gK8KgwqDCoCBib29sIGxvY2tlZCA9 IGZhbHNlOw0KPj4+Pj4gK8KgwqDCoCB1MzIgdmFsOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDC oCB2YWwgPSByZWFkbChyZWcpOw0KPj4+Pj4gK8KgwqDCoCAvKiBCeXBhc3MgdGhlIHNvZnR3 YXJlIGNvbmZpZ3VyZWQgUExMLCB1c2luZyByZWZjbGsgZGlyZWN0bHkgKi8NCj4+Pj4+ICvC oMKgwqAgdmFsICY9IH4oMSA8PCAwKTsNCj4+Pj4+ICvCoMKgwqAgd3JpdGVsKHZhbCwgcmVn KTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLyogUG93ZXJkb3duIHRoZSBQTEwgKi8NCj4+ Pj4+ICvCoMKgwqAgdmFsIHw9ICgxIDw8IDE5KTsNCj4+Pj4+ICvCoMKgwqAgd3JpdGVsKHZh bCwgcmVnKTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLyogQWxsb3cgdGhlIHNvZnR3YXJl IGNvbmZpZ3VyYXRpb24gKi8NCj4+Pj4+ICvCoMKgwqAgdmFsICY9IH4oMSA8PCAyKTsNCj4+ Pj4+ICvCoMKgwqAgd3JpdGVsKHZhbCwgcmVnKTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAg LyogYWxsb3cgTDEgUExMIGxvY2sgKi8NCj4+Pj4+ICvCoMKgwqAgdmFsID0gKDFMIDw8IDcp IHwgKDNMIDw8IDEwKTsNCj4+Pj4+ICvCoMKgwqAgd3JpdGVsKHZhbCwgcmVnKTsNCj4+Pj4+ ICsNCj4+Pj4+ICvCoMKgwqAgLyogY2xlYXIgZGl2X3JlZiBiaXQgZmllbGQgKi8NCj4+Pj4+ ICvCoMKgwqAgdmFsICY9IH4oMHgzZiA8PCAyNik7DQo+Pj4+PiArwqDCoMKgIC8qIHNldCBk aXZfcmVmIGJpdCBmaWVsZCAqLw0KPj4+Pj4gK8KgwqDCoCB2YWwgfD0gcGluLT5kaXZfcmVm IDw8IDI2Ow0KPj4+Pj4gK8KgwqDCoCB3cml0ZWwodmFsLCByZWcpOw0KPj4+Pj4gKw0KPj4+ Pj4gK8KgwqDCoCB2YWwgPSByZWFkbChyZWcgKyA0KTsNCj4+Pj4+ICvCoMKgwqAgLyogY2xl YXIgbG9vcGMgYml0IGZpZWxkICovDQo+Pj4+PiArwqDCoMKgIHZhbCAmPSB+MHgwZmZmOw0K Pj4+Pj4gK8KgwqDCoCAvKiBzZXQgbG9vcGMgYml0IGZpZWxkICovDQo+Pj4+PiArwqDCoMKg IHZhbCB8PSBwaW4tPmxvb3BjOw0KPj4+Pj4gK8KgwqDCoCB3cml0ZWwodmFsLCByZWcgKyA0 KTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLyogc2V0IGRpdl9vdXQgKi8NCj4+Pj4+ICvC oMKgwqAgd3JpdGVsKHBpbi0+ZGl2X291dCwgcmVnICsgOCk7DQo+Pj4+PiArDQo+Pj4+PiAr wqDCoMKgIHZhbCA9IHJlYWRsKHJlZyk7DQo+Pj4+PiArwqDCoMKgIC8qIHVzZSB0aGlzIHBh cm1zIGNvbmZpZ3VyZWQganVzdCBub3cgKi8NCj4+Pj4+ICvCoMKgwqAgdmFsIHw9ICgxIDw8 IDIpOw0KPj4+Pj4gK8KgwqDCoCAvKiBwb3dlcnVwIHRoZSBQTEwgKi8NCj4+Pj4+ICvCoMKg wqAgdmFsICY9IH4oMSA8PCAxOSk7DQo+Pj4+PiArwqDCoMKgIHdyaXRlbCh2YWwsIHJlZyk7 DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIC8qIHdhaXQgcGxsIHNldHVwIGFuZCBsb2NrZWQg Ki8NCj4+Pj4+ICvCoMKgwqAgZG8gew0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9IHJl YWRsKHJlZyk7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgbG9ja2VkID0gdmFsICYgMHgxMDAw MDsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBjb3VudGVyKys7DQo+Pj4+PiArwqDCoMKgIH0g d2hpbGUgKCFsb2NrZWQgJiYgKGNvdW50ZXIgPCAyMDAwKSk7DQo+Pj4+PiArDQo+Pj4+PiAr wqDCoMKgIGRybV9kYmcodGhpcy0+ZGRldiwgIiV1IGxvb3Agd2FpdGVkXG4iLCBjb3VudGVy KTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLyogU3dpdGNoIHRvIHNvZnR3YXJlIGNvbmZp Z3VyZWQgUExMIGluc3RlYWQgb2YgcmVmY2xrICovDQo+Pj4+PiArwqDCoMKgIHZhbCB8PSAx Ow0KPj4+Pj4gK8KgwqDCoCB3cml0ZWwodmFsLCByZWcpOw0KPj4+Pj4gKw0KPj4+Pj4gK8Kg wqDCoCByZXR1cm4gMDsNCj4+Pj4+ICt9DQo+Pj4+PiArDQo+Pj4+PiArLyoNCj4+Pj4+ICsg KiBVcGRhdGUgdGhlIHBsbCBwYXJhbWV0ZXJzIHRvIGhhcmR3YXJlLCB0YXJnZXQgdG8gdGhl IHBpeHBsbCBpbiANCj4+Pj4+IGxzMmswNTAwDQo+Pj4+PiArICoNCj4+Pj4+ICsgKiBAdGhp czogcG9pbnQgdG8gdGhlIG9iamVjdCB3aGljaCBjYWxsaW5nIHRoaXMgZnVuY3Rpb24NCj4+ Pj4+ICsgKiBAcGFyYW06IHBvaW50ZXIgdG8gd2hlcmUgdGhlIHBhcmFtZXRlcnMgcGFzc2Vk IGluDQo+Pj4+PiArICoNCj4+Pj4+ICsgKiByZXR1cm4gMCBpZiBzdWNjZXNzZnVsLg0KPj4+ Pj4gKyAqLw0KPj4+Pj4gK3N0YXRpYyBpbnQgbHMyazA1MDBfcGl4cGxsX3BhcmFtX3VwZGF0 ZShzdHJ1Y3QgbHNkY19wbGwgKiBjb25zdCB0aGlzLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBsc2RjX3BsbF9wYXJtcyBjb25zdCAq cGFyYW0pDQo+Pj4+PiArew0KPj4+Pj4gK8KgwqDCoCB2b2lkIF9faW9tZW0gKnJlZyA9IHRo aXMtPm1taW87DQo+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIGludCBjb3VudGVyID0gMDsNCj4+ Pj4+ICvCoMKgwqAgYm9vbCBsb2NrZWQgPSBmYWxzZTsNCj4+Pj4+ICvCoMKgwqAgdTMyIHZh bDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLyogQnlwYXNzIHRoZSBzb2Z0d2FyZSBjb25m aWd1cmVkIFBMTCwgdXNpbmcgcmVmY2xrIGRpcmVjdGx5ICovDQo+Pj4+PiArwqDCoMKgIHZh bCA9IHJlYWRsKHJlZyk7DQo+Pj4+PiArwqDCoMKgIHZhbCAmPSB+KDEgPDwgMCk7DQo+Pj4+ PiArwqDCoMKgIHdyaXRlbCh2YWwsIHJlZyk7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIC8q IFBvd2VyZG93biB0aGUgUExMICovDQo+Pj4+PiArwqDCoMKgIHZhbCA9IHJlYWRsKHJlZyk7 DQo+Pj4+PiArwqDCoMKgIHZhbCB8PSAoMSA8PCA1KTsNCj4+Pj4+ICvCoMKgwqAgd3JpdGVs KHZhbCwgcmVnKTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLyogQWxsb3cgdGhlIHNvZnR3 YXJlIGNvbmZpZ3VyYXRpb24gKi8NCj4+Pj4+ICvCoMKgwqAgdmFsIHw9ICgxIDw8IDMpOw0K Pj4+Pj4gK8KgwqDCoCB3cml0ZWwodmFsLCByZWcpOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDC oCAvKiBVcGRhdGUgdGhlIHBsbCBwYXJhbXMgKi8NCj4+Pj4+ICvCoMKgwqAgdmFsID0gKHBh cmFtLT5kaXZfb3V0IDw8IDI0KSB8DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgIChwYXJh bS0+bG9vcGMgPDwgMTYpIHwNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgKHBhcmFtLT5k aXZfcmVmIDw8IDgpOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCB3cml0ZWwodmFsLCByZWcp Ow0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCAvKiBQb3dlcnVwIHRoZSBQTEwgKi8NCj4+Pj4+ ICvCoMKgwqAgdmFsID0gcmVhZGwocmVnKTsNCj4+Pj4+ICvCoMKgwqAgdmFsICY9IH4oMSA8 PCA1KTsNCj4+Pj4+ICvCoMKgwqAgd3JpdGVsKHZhbCwgcmVnKTsNCj4+Pj4+ICsNCj4+Pj4+ ICvCoMKgwqAgLyogd2FpdCBwbGwgc2V0dXAgYW5kIGxvY2tlZCAqLw0KPj4+Pj4gK8KgwqDC oCBkbyB7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgdmFsID0gcmVhZGwocmVnKTsNCj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoCBsb2NrZWQgPSB2YWwgJiAweDgwOw0KPj4+Pj4gK8KgwqDCoMKg wqDCoMKgIGNvdW50ZXIrKzsNCj4+Pj4+ICvCoMKgwqAgfSB3aGlsZSAoIWxvY2tlZCAmJiAo Y291bnRlciA8IDEwMDAwKSk7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIGRybV9kYmcodGhp cy0+ZGRldiwgIiV1IGxvb3Agd2FpdGVkXG4iLCBjb3VudGVyKTsNCj4+Pj4+ICsNCj4+Pj4+ ICvCoMKgwqAgLyogU3dpdGNoIHRvIHNvZnR3YXJlIGNvbmZpZ3VyZWQgUExMIGluc3RlYWQg b2YgcmVmY2xrICovDQo+Pj4+PiArwqDCoMKgIHdyaXRlbCgodmFsIHwgMSksIHJlZyk7DQo+ Pj4+PiArDQo+Pj4+PiArwqDCoMKgIHJldHVybiAwOw0KPj4+Pj4gK30NCj4+Pj4+ICsNCj4+ Pj4+ICtzdGF0aWMgdW5zaWduZWQgaW50IGxzZGNfZ2V0X2Nsb2NrX3JhdGUoc3RydWN0IGxz ZGNfcGxsICogY29uc3QgdGhpcywNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbHNkY19wbGxfcGFybXMgKnBvdXQpDQo+Pj4+PiArew0K Pj4+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IHRoaXMtPmRkZXY7DQo+ Pj4+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRldik7 DQo+Pj4+PiArwqDCoMKgIGNvbnN0IHN0cnVjdCBsc2RjX2Rlc2MgKiBjb25zdCBkZXNjcCA9 IGxkZXYtPmRlc2NwOw0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgb3V0Ow0KPj4+Pj4g K8KgwqDCoCB1bmlvbiBsc2RjX3BpeHBsbF9iaXRtYXAgcGFybXM7DQo+Pj4+PiArDQo+Pj4+ PiArwqDCoMKgIGlmIChkZXNjcC0+Y2hpcCA9PSBDSElQX0xTN0ExMDAwIHx8IGRlc2NwLT5j aGlwID09IA0KPj4+Pj4gQ0hJUF9MUzdBMjAwMCkgew0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg IHN0cnVjdCBsczdhMTAwMF9waXhwbGxfYml0bWFwICpvYmogPSAmcGFybXMubHM3YTEwMDA7 DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcGFybXMuZHdvcmRbMF0gPSByZWFk bCh0aGlzLT5tbWlvKTsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBwYXJtcy5kd29yZFsxXSA9 IHJlYWRsKHRoaXMtPm1taW8gKyA0KTsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBvdXQgPSB0 aGlzLT5yZWZfY2xvY2sgLyBvYmotPmRpdl9yZWYgKiBvYmotPmxvb3BjIC8gDQo+Pj4+PiBv YmotPmRpdl9vdXQ7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHBvdXQpIHsNCj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvdXQtPmRpdl9yZWYgPSBvYmotPmRpdl9yZWY7 DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwb3V0LT5sb29wYyA9IG9iai0+bG9v cGM7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwb3V0LT5kaXZfb3V0ID0gb2Jq LT5kaXZfb3V0Ow0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+Pj4+ICvCoMKgwqAgfSBl bHNlIGlmIChkZXNjcC0+Y2hpcCA9PSBDSElQX0xTMksxMDAwKSB7DQo+Pj4+PiArwqDCoMKg wqDCoMKgwqAgc3RydWN0IGxzMmsxMDAwX3BpeHBsbF9iaXRtYXAgKm9iaiA9ICZwYXJtcy5s czJrMTAwMDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBwYXJtcy5kd29yZFsw XSA9IHJlYWRsKHRoaXMtPm1taW8pOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHBhcm1zLmR3 b3JkWzFdID0gcmVhZGwodGhpcy0+bW1pbyArIDQpOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg IHBhcm1zLmR3b3JkWzJdID0gcmVhZGwodGhpcy0+bW1pbyArIDgpOw0KPj4+Pj4gK8KgwqDC oMKgwqDCoMKgIHBhcm1zLmR3b3JkWzNdID0gcmVhZGwodGhpcy0+bW1pbyArIDEyKTsNCj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoCBvdXQgPSB0aGlzLT5yZWZfY2xvY2sgLyBvYmotPmRpdl9y ZWYgKiBvYmotPmxvb3BjIC8gDQo+Pj4+PiBvYmotPmRpdl9vdXQ7DQo+Pj4+PiArwqDCoMKg wqDCoMKgwqAgaWYgKHBvdXQpIHsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBv dXQtPmRpdl9yZWYgPSBvYmotPmRpdl9yZWY7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBwb3V0LT5sb29wYyA9IG9iai0+bG9vcGM7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBwb3V0LT5kaXZfb3V0ID0gb2JqLT5kaXZfb3V0Ow0KPj4+Pj4gK8KgwqDCoMKg wqDCoMKgIH0NCj4+Pj4+ICvCoMKgwqAgfSBlbHNlIGlmIChkZXNjcC0+Y2hpcCA9PSBDSElQ X0xTMkswNTAwKSB7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IGxzMmswNTAwX3Bp eHBsbF9iaXRtYXAgKm9iaiA9ICZwYXJtcy5sczJrMDUwMDsNCj4+Pj4+ICsNCj4+Pj4+ICvC oMKgwqDCoMKgwqDCoCBwYXJtcy5kd29yZFswXSA9IHJlYWRsKHRoaXMtPm1taW8pOw0KPj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIG91dCA9IHRoaXMtPnJlZl9jbG9jayAvIG9iai0+ZGl2X3Jl ZiAqIG9iai0+bG9vcGMgLyANCj4+Pj4+IG9iai0+ZGl2X291dDsNCj4+Pj4+ICvCoMKgwqDC oMKgwqDCoCBpZiAocG91dCkgew0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcG91 dC0+ZGl2X3JlZiA9IG9iai0+ZGl2X3JlZjsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHBvdXQtPmxvb3BjID0gb2JqLT5sb29wYzsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHBvdXQtPmRpdl9vdXQgPSBvYmotPmRpdl9vdXQ7DQo+Pj4+PiArwqDCoMKgwqDC oMKgwqAgfQ0KPj4+Pj4gK8KgwqDCoCB9IGVsc2Ugew0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg IGRybV9lcnIoZGRldiwgInVua25vd24gY2hpcCwgdGhlIGRyaXZlciBuZWVkIHVwZGF0ZVxu Iik7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7DQo+Pj4+PiArwqDCoMKgIH0N Cj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgcmV0dXJuIG91dDsNCj4+Pj4+ICt9DQo+Pj4+PiAr DQo+Pj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBsc2RjX3BpeHBsbF9mdW5jcyBsczdhMTAw MF9waXhwbGxfZnVuY3MgPSB7DQo+Pj4+PiArwqDCoMKgIC5zZXR1cCA9IGxzZGNfcGl4cGxs X3NldHVwLA0KPj4+Pj4gK8KgwqDCoCAuY29tcHV0ZSA9IGxzZGNfcGl4cGxsX2NvbXB1dGUs DQo+Pj4+PiArwqDCoMKgIC51cGRhdGUgPSBsczdhMTAwMF9waXhwbGxfcGFyYW1fdXBkYXRl LA0KPj4+Pj4gK8KgwqDCoCAuZ2V0X2Nsb2NrX3JhdGUgPSBsc2RjX2dldF9jbG9ja19yYXRl LA0KPj4+Pj4gK307DQo+Pj4+PiArDQo+Pj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBsc2Rj X3BpeHBsbF9mdW5jcyBsczJrMTAwMF9waXhwbGxfZnVuY3MgPSB7DQo+Pj4+PiArwqDCoMKg IC5zZXR1cCA9IGxzZGNfcGl4cGxsX3NldHVwLA0KPj4+Pj4gK8KgwqDCoCAuY29tcHV0ZSA9 IGxzZGNfcGl4cGxsX2NvbXB1dGUsDQo+Pj4+PiArwqDCoMKgIC51cGRhdGUgPSBsczJrMTAw MF9waXhwbGxfcGFyYW1fdXBkYXRlLA0KPj4+Pj4gK8KgwqDCoCAuZ2V0X2Nsb2NrX3JhdGUg PSBsc2RjX2dldF9jbG9ja19yYXRlLA0KPj4+Pj4gK307DQo+Pj4+PiArDQo+Pj4+PiArc3Rh dGljIGNvbnN0IHN0cnVjdCBsc2RjX3BpeHBsbF9mdW5jcyBsczJrMDUwMF9waXhwbGxfZnVu Y3MgPSB7DQo+Pj4+PiArwqDCoMKgIC5zZXR1cCA9IGxzZGNfcGl4cGxsX3NldHVwLA0KPj4+ Pj4gK8KgwqDCoCAuY29tcHV0ZSA9IGxzZGNfcGl4cGxsX2NvbXB1dGUsDQo+Pj4+PiArwqDC oMKgIC51cGRhdGUgPSBsczJrMDUwMF9waXhwbGxfcGFyYW1fdXBkYXRlLA0KPj4+Pj4gK8Kg wqDCoCAuZ2V0X2Nsb2NrX3JhdGUgPSBsc2RjX2dldF9jbG9ja19yYXRlLA0KPj4+Pj4gK307 DQo+Pj4+PiArDQo+Pj4+PiAraW50IGxzZGNfcGl4cGxsX2luaXQoc3RydWN0IGxzZGNfcGxs ICogY29uc3QgdGhpcywNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGRybV9kZXZpY2UgKmRkZXYsDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVu c2lnbmVkIGludCBpbmRleCkNCj4+Pj4+ICt7DQo+Pj4+PiArwqDCoMKgIHN0cnVjdCBsc2Rj X2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRldik7DQo+Pj4+PiArwqDCoMKgIGNvbnN0IHN0 cnVjdCBsc2RjX2Rlc2MgKmRlc2NwID0gbGRldi0+ZGVzY3A7DQo+Pj4+PiArDQo+Pj4+PiAr wqDCoMKgIHRoaXMtPmRkZXYgPSBkZGV2Ow0KPj4+Pj4gK8KgwqDCoCB0aGlzLT5pbmRleCA9 IGluZGV4Ow0KPj4+Pj4gK8KgwqDCoCB0aGlzLT5yZWZfY2xvY2sgPSBMU0RDX1BMTF9SRUZf Q0xLOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoCAvKiBMUzdBMTAwMCBhbmQgTFM3QTIwMDAn cyBwaXhwbGwgc2V0dGluZyByZWdpc3RlcnMgaXMgc2FtZSAqLw0KPj4+Pj4gK8KgwqDCoCBp ZiAoZGVzY3AtPmNoaXAgPT0gQ0hJUF9MUzdBMjAwMCB8fCBkZXNjcC0+Y2hpcCA9PSANCj4+ Pj4+IENISVBfTFM3QTEwMDApIHsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoaW5kZXgg PT0gMCkNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRoaXMtPnJlZ19iYXNlID0g TFM3QTEwMDBfQ0ZHX1JFR19CQVNFICsgDQo+Pj4+PiBMUzdBMTAwMF9QSVhfUExMMF9SRUc7 DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgZWxzZSBpZiAoaW5kZXggPT0gMSkNCj4+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRoaXMtPnJlZ19iYXNlID0gTFM3QTEwMDBfQ0ZHX1JF R19CQVNFICsgDQo+Pj4+PiBMUzdBMTAwMF9QSVhfUExMMV9SRUc7DQo+Pj4+PiArwqDCoMKg wqDCoMKgwqAgdGhpcy0+cmVnX3NpemUgPSA4Ow0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHRo aXMtPmZ1bmNzID0gJmxzN2ExMDAwX3BpeHBsbF9mdW5jczsNCj4+Pj4+ICvCoMKgwqAgfSBl bHNlIGlmIChkZXNjcC0+Y2hpcCA9PSBDSElQX0xTMksxMDAwKSB7DQo+Pj4+PiArwqDCoMKg wqDCoMKgwqAgaWYgKGluZGV4ID09IDApDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB0aGlzLT5yZWdfYmFzZSA9IExTMksxMDAwX0NGR19SRUdfQkFTRSArIA0KPj4+Pj4gTFMy SzEwMDBfUElYX1BMTDBfUkVHOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKGlu ZGV4ID09IDEpDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0aGlzLT5yZWdfYmFz ZSA9IExTMksxMDAwX0NGR19SRUdfQkFTRSArIA0KPj4+Pj4gTFMySzEwMDBfUElYX1BMTDFf UkVHOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHRoaXMtPnJlZ19zaXplID0g MTY7DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgdGhpcy0+ZnVuY3MgPSAmbHMyazEwMDBfcGl4 cGxsX2Z1bmNzOw0KPj4+Pj4gK8KgwqDCoCB9IGVsc2UgaWYgKGRlc2NwLT5jaGlwID09IENI SVBfTFMySzA1MDApIHsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoaW5kZXggPT0gMCkN Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRoaXMtPnJlZ19iYXNlID0gTFMySzA1 MDBfQ0ZHX1JFR19CQVNFICsgDQo+Pj4+PiBMUzJLMDUwMF9QSVhfUExMMF9SRUc7DQo+Pj4+ PiArwqDCoMKgwqDCoMKgwqAgZWxzZSBpZiAoaW5kZXggPT0gMSkNCj4+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHRoaXMtPnJlZ19iYXNlID0gTFMySzA1MDBfQ0ZHX1JFR19CQVNF ICsgDQo+Pj4+PiBMUzJLMDUwMF9QSVhfUExMMV9SRUc7DQo+Pj4+PiArDQo+Pj4+PiArwqDC oMKgwqDCoMKgwqAgdGhpcy0+cmVnX3NpemUgPSA0Ow0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg IHRoaXMtPmZ1bmNzID0gJmxzMmswNTAwX3BpeHBsbF9mdW5jczsNCj4+Pj4+ICvCoMKgwqAg fSBlbHNlIHsNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1fZXJyKHRoaXMtPmRkZXYsICJ1 bmtub3duIGNoaXAsIHRoZSBkcml2ZXIgbmVlZCANCj4+Pj4+IHVwZGF0ZVxuIik7DQo+Pj4+ PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9FTlQ7DQo+Pj4+PiArwqDCoMKgIH0NCj4+ Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgcmV0dXJuIHRoaXMtPmZ1bmNzLT5zZXR1cCh0aGlzKTsN Cj4+Pj4+ICt9DQo+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNk Y19wbGwuaCANCj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19wbGwuaA0KPj4+ Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+Pj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uNTM4 NzM5ZjQ2MWYyDQo+Pj4+PiAtLS0gL2Rldi9udWxsDQo+Pj4+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vbHNkYy9sc2RjX3BsbC5oDQo+Pj4+PiBAQCAtMCwwICsxLDc4IEBADQo+Pj4+PiAr LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8NCj4+Pj4+ICsNCj4+Pj4+ ICsjaWZuZGVmIF9fTFNEQ19QTExfSF9fDQo+Pj4+PiArI2RlZmluZSBfX0xTRENfUExMX0hf Xw0KPj4+Pj4gKw0KPj4+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPg0KPj4+Pj4g Kw0KPj4+Pj4gKy8qDQo+Pj4+PiArICogTG9vbmdzb24gUGl4ZWwgUExMIGhhcmR3YXJlIHN0 cnVjdHVyZQ0KPj4+Pj4gKyAqDQo+Pj4+PiArICogcmVmY2xrOiByZWZlcmVuY2UgZnJlcXVl bmN5LCAxMDAgTUh6IGZyb20gZXh0ZXJuYWwgb3NjaWxsYXRvcg0KPj4+Pj4gKyAqIG91dGNs azogb3V0cHV0IGZyZXF1ZW5jeSBkZXNpcmVkLg0KPj4+Pj4gKyAqDQo+Pj4+PiArICoNCj4+ Pj4+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTDHCoMKgwqDCoMKgwqAgRnJl ZiBGdmNvwqDCoMKgwqAgTDINCj4+Pj4+ICsgKiByZWZjbGvCoMKgICstLS0tLS0tLS0tLSvC oMKgwqDCoMKgICstLS0tLS0tLS0tLS0tLS0tLS0rICstLS0tLS0tLS0rIA0KPj4+Pj4gb3V0 Y2xrDQo+Pj4+PiArICogLS0tKy0tLT4gfCBQcmVzY2FsZXIgfCAtLS0+IHwgQ2xvY2sgTXVs dGlwbGllciB8IC0tLT4gfCBkaXZpZGVyIA0KPj4+Pj4gfCAtLS0tLS0tLT4NCj4+Pj4+ICsg KsKgwqDCoCB8wqDCoMKgwqAgKy0tLS0tLS0tLS0tK8KgwqDCoMKgwqAgKy0tLS0tLS0tLS0t LS0tLS0tLSsgKy0tLS0tLS0tLSvCoMKgwqDCoCBeDQo+Pj4+PiArICrCoMKgwqAgfMKgwqDC oMKgwqDCoMKgwqDCoMKgIF7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgXiBewqDCoMKgwqDCoMKgwqDCoMKgIHwNCj4+Pj4+ICsgKsKgwqDCoCB8wqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8IHzCoMKgwqDCoMKgwqDCoMKgwqAgfA0KPj4+Pj4gKyAqwqDCoMKgIHzCoMKgwqDC oMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgfMKgwqDCoMKgwqDCoMKgwqDCoCB8DQo+Pj4+PiArICrCoMKgwqAgfMKgwqDCoMKg wqDCoMKgIGRpdl9yZWbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsb29wYyBk aXZfb3V0IHwNCj4+Pj4+ICsgKiB8IHwNCj4+Pj4+ICsgKsKgwqDCoCArLS0tIHNlbF9vdXQg KGJ5cGFzcyBhYm92ZSBzb2Z0d2FyZSBjb25maWd1cmFibGUgY2xvY2sgaWYgDQo+Pj4+PiBz ZXQpIC0tLS0rDQo+Pj4+PiArICoNCj4+Pj4+ICsgKsKgIHNlbF9vdXQ6IFBMTCBjbG9jayBv dXRwdXQgc2VsZWN0b3IgKGZvciBkZWJ1ZyBwdXJwb3NlIG9ubHkpLg0KPj4+Pj4gKyAqDQo+ Pj4+PiArICrCoCBJZiBzZWxfb3V0ID09IDEsIGl0IHdpbGwgdGFrZSByZWZjbGsgYXMgb3V0 cHV0IGRpcmVjdGx5LA0KPj4+Pj4gKyAqwqAgdGhlIEwxIFByZXNjYWxlciBhbmQgdGhlIG91 dCBkaXZpZGVyIHdpbGwgYmUgYnlwYXNzZWQuDQo+Pj4+PiArICoNCj4+Pj4+ICsgKsKgIElm IHNlbF9vdXQgPT0gMCwgdGhlbiBvdXRjbGsgPSByZWZjbGsgLyBkaXZfcmVmICogbG9vcGMg LyANCj4+Pj4+IGRpdl9vdXQ7DQo+Pj4+PiArICoNCj4+Pj4+ICsgKiBQTEwgd29ya2luZyBy ZXF1aXJlbWVudHM6DQo+Pj4+PiArICoNCj4+Pj4+ICsgKsKgIDEpIDIwIE1IeiA8PSByZWZj bGsgLyBkaXZfcmVmIDw9IDQwTWh6DQo+Pj4+PiArICrCoCAyKSAxLjIgR0h6IDw9IHJlZmNs ayAvZGl2X291dCAqIGxvb3BjIDw9IDMuMiBHaHoNCj4+Pj4+ICsgKi8NCj4+Pj4+ICsNCj4+ Pj4+ICtzdHJ1Y3QgbHNkY19wbGxfcGFybXMgew0KPj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBp bnQgZGl2X3JlZjsNCj4+Pj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGxvb3BjOw0KPj4+Pj4g K8KgwqDCoCB1bnNpZ25lZCBpbnQgZGl2X291dDsNCj4+Pj4+ICt9Ow0KPj4+Pj4gKw0KPj4+ Pj4gK3N0cnVjdCBsc2RjX3BsbDsNCj4+Pj4+ICsNCj4+Pj4+ICtzdHJ1Y3QgbHNkY19waXhw bGxfZnVuY3Mgew0KPj4+Pj4gK8KgwqDCoCBpbnQgKCpzZXR1cCkoc3RydWN0IGxzZGNfcGxs ICogY29uc3QgdGhpcyk7DQo+Pj4+PiArwqDCoMKgIGJvb2wgKCpjb21wdXRlKShzdHJ1Y3Qg bHNkY19wbGwgKiBjb25zdCB0aGlzLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dW5zaWduZWQgaW50IGNsb2NrLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Ry dWN0IGxzZGNfcGxsX3Bhcm1zICpwb3V0KTsNCj4+Pj4+ICvCoMKgwqAgaW50ICgqdXBkYXRl KShzdHJ1Y3QgbHNkY19wbGwgKiBjb25zdCB0aGlzLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCBsc2RjX3BsbF9wYXJtcyBjb25zdCAqcGluKTsNCj4+Pj4+ ICvCoMKgwqAgdW5zaWduZWQgaW50ICgqZ2V0X2Nsb2NrX3JhdGUpKHN0cnVjdCBsc2RjX3Bs bCAqIGNvbnN0IHRoaXMsDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGxzZGNfcGxsX3Bhcm1zICpwb3V0KTsNCj4+Pj4+ICt9 Ow0KPj4+Pj4gKw0KPj4+Pj4gK3N0cnVjdCBsc2RjX3BsbCB7DQo+Pj4+PiArwqDCoMKgIGNv bnN0IHN0cnVjdCBsc2RjX3BpeHBsbF9mdW5jcyAqZnVuY3M7DQo+Pj4+PiArwqDCoMKgIHN0 cnVjdCBkcm1fZGV2aWNlICpkZGV2Ow0KPj4+Pj4gK8KgwqDCoCB2b2lkIF9faW9tZW0gKm1t aW87DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIC8qIFBMTCByZWdpc3RlciBvZmZzZXQgKi8N Cj4+Pj4+ICvCoMKgwqAgdTMyIHJlZ19iYXNlOw0KPj4+Pj4gK8KgwqDCoCAvKiBQTEwgcmVn aXN0ZXIgc2l6ZSBpbiBieXRlcyAqLw0KPj4+Pj4gK8KgwqDCoCB1MzIgcmVnX3NpemU7DQo+ Pj4+PiArDQo+Pj4+PiArwqDCoMKgIC8qIDEwMDAwMGtIeiwgZml4ZWQgb24gYWxsIGJvYXJk IGZvdW5kICovDQo+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIGludCByZWZfY2xvY2s7DQo+Pj4+ PiArDQo+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIGludCBpbmRleDsNCj4+Pj4+ICt9Ow0KPj4+ Pj4gKw0KPj4+Pj4gK2ludCBsc2RjX3BpeHBsbF9pbml0KHN0cnVjdCBsc2RjX3BsbCAqIGNv bnN0IHRoaXMsDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1f ZGV2aWNlICpkZGV2LA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25l ZCBpbnQgaW5kZXgpOw0KPj4+Pj4gKw0KPj4+Pj4gKyNlbmRpZg0KPj4+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNfcmVncy5jIA0KPj4+Pj4gYi9kcml2ZXJz L2dwdS9kcm0vbHNkYy9sc2RjX3JlZ3MuYw0KPj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4+Pj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uYzc5NTBjNDM5NjhmDQo+Pj4+PiAtLS0gL2Rl di9udWxsDQo+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX3JlZ3MuYw0K Pj4+Pj4gQEAgLTAsMCArMSwyOSBAQA0KPj4+Pj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wDQo+Pj4+PiArDQo+Pj4+PiArI2luY2x1ZGUgImxzZGNfZHJ2LmgiDQo+ Pj4+PiArI2luY2x1ZGUgImxzZGNfcmVncy5oIg0KPj4+Pj4gKw0KPj4+Pj4gK3UzMiBsc2Rj X3JyZWczMihzdHJ1Y3QgbHNkY19kZXZpY2UgKiBjb25zdCBsZGV2LCB1MzIgb2Zmc2V0KQ0K Pj4+Pj4gK3sNCj4+Pj4+ICvCoMKgwqAgdW5zaWduZWQgbG9uZyBmbGFnczsNCj4+Pj4+ICvC oMKgwqAgdTMyIHJldDsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgc3Bpbl9sb2NrX2lycXNh dmUoJmxkZXYtPnJlZ2xvY2ssIGZsYWdzKTsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgcmV0 ID0gcmVhZGwobGRldi0+cmVnX2Jhc2UgKyBvZmZzZXQpOw0KPj4+Pj4gKw0KPj4+Pj4gK8Kg wqDCoCBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZsZGV2LT5yZWdsb2NrLCBmbGFncyk7DQo+ Pj4+PiArDQo+Pj4+PiArwqDCoMKgIHJldHVybiByZXQ7DQo+Pj4+PiArfQ0KPj4+Pj4gKw0K Pj4+Pj4gK3ZvaWQgbHNkY193cmVnMzIoc3RydWN0IGxzZGNfZGV2aWNlICogY29uc3QgbGRl diwgdTMyIG9mZnNldCwgdTMyIA0KPj4+Pj4gdmFsKQ0KPj4+Pj4gK3sNCj4+Pj4+ICvCoMKg wqAgdW5zaWduZWQgbG9uZyBmbGFnczsNCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgc3Bpbl9s b2NrX2lycXNhdmUoJmxkZXYtPnJlZ2xvY2ssIGZsYWdzKTsNCj4+Pj4+ICsNCj4+Pj4+ICvC oMKgwqAgd3JpdGVsKHZhbCwgbGRldi0+cmVnX2Jhc2UgKyBvZmZzZXQpOw0KPj4+Pj4gKw0K Pj4+Pj4gK8KgwqDCoCBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZsZGV2LT5yZWdsb2NrLCBm bGFncyk7DQo+Pj4+PiArfQ0KPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9s c2RjL2xzZGNfcmVncy5oIA0KPj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX3Jl Z3MuaA0KPj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+Pj4+IGluZGV4IDAwMDAwMDAw MDAwMC4uODI4OTU2NjMzMTM3DQo+Pj4+PiAtLS0gL2Rldi9udWxsDQo+Pj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX3JlZ3MuaA0KPj4+Pj4gQEAgLTAsMCArMSwyOTYg QEANCj4+Pj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KPj4+ Pj4gKw0KPj4+Pj4gKyNpZm5kZWYgX19MU0RDX1JFR1NfSF9fDQo+Pj4+PiArI2RlZmluZSBf X0xTRENfUkVHU19IX18NCj4+Pj4+ICsNCj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvYml0b3Bz Lmg+DQo+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+DQo+Pj4+PiArDQo+Pj4+PiAr LyoNCj4+Pj4+ICsgKiBQSVhFTCBQTEwgUmVmZXJlbmNlIGNsb2NrDQo+Pj4+PiArICovDQo+ Pj4+PiArI2RlZmluZSBMU0RDX1BMTF9SRUZfQ0xLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDEwMDAwMMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGtIeiAqLw0KPj4+Pj4gKw0K Pj4+Pj4gKy8qDQo+Pj4+PiArICogVGhvc2UgUExMIHJlZ2lzdGVycyBhcmUgbm90IGxvY2F0 ZWQgYXQgREMgcmVnIGJhciBzcGFjZSwNCj4+Pj4+ICsgKiB0aGVyZSBhcmUgcmVsYXRpdmUg dG8gTFNYWFhYWF9DRkdfUkVHX0JBU0UuDQo+Pj4+PiArICogWFhYWFggPSA3QTEwMDAsIDJL MTAwMCwgMkswNTAwDQo+Pj4+PiArICovDQo+Pj4+PiArDQo+Pj4+PiArLyogTFMySzEwMDAg Ki8NCj4+Pj4+ICsjZGVmaW5lIExTMksxMDAwX1BJWF9QTEwwX1JFR8KgwqDCoMKgwqDCoMKg wqDCoMKgIDB4MDRCMA0KPj4+Pj4gKyNkZWZpbmUgTFMySzEwMDBfUElYX1BMTDFfUkVHwqDC oMKgwqDCoMKgwqDCoMKgwqAgMHgwNEMwDQo+Pj4+PiArI2RlZmluZSBMUzJLMTAwMF9DRkdf UkVHX0JBU0XCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDFmZTEwMDAwDQo+Pj4+PiArDQo+Pj4+ PiArLyogTFM3QTEwMDAgYW5kIExTMksyMDAwICovDQo+Pj4+PiArI2RlZmluZSBMUzdBMTAw MF9QSVhfUExMMF9SRUfCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA0QjANCj4+Pj4+ICsjZGVm aW5lIExTN0ExMDAwX1BJWF9QTEwxX1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDRDMA0K Pj4+Pj4gKyNkZWZpbmUgTFM3QTEwMDBfQ0ZHX1JFR19CQVNFwqDCoMKgwqDCoMKgwqDCoMKg wqAgMHgxMDAxMDAwMA0KPj4+Pj4gKw0KPj4+Pj4gKy8qIExTMkswNTAwICovDQo+Pj4+PiAr I2RlZmluZSBMUzJLMDUwMF9QSVhfUExMMF9SRUfCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA0 MTgNCj4+Pj4+ICsjZGVmaW5lIExTMkswNTAwX1BJWF9QTEwxX1JFR8KgwqDCoMKgwqDCoMKg wqDCoMKgIDB4MDQyMA0KPj4+Pj4gKyNkZWZpbmUgTFMySzA1MDBfQ0ZHX1JFR19CQVNFwqDC oMKgwqDCoMKgwqDCoMKgwqAgMHgxZmUxMDAwMA0KPj4+Pj4gKw0KPj4+Pj4gKy8qDQo+Pj4+ PiArICrCoCBDUlRDIENGRyBSRUcNCj4+Pj4+ICsgKi8NCj4+Pj4+ICsjZGVmaW5lIENGR19Q SVhfRk1UX01BU0vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VOTUFTSygyLCAw KQ0KPj4+Pj4gKw0KPj4+Pj4gK2VudW0gbHNkY19waXhlbF9mb3JtYXQgew0KPj4+Pj4gK8Kg wqDCoCBMU0RDX1BGX05PTkUgPSAwLA0KPj4+Pj4gK8KgwqDCoCBMU0RDX1BGX0FSR0I0NDQ0 ID0gMSzCoCAvKiBBUkdCIEE6NCBiaXRzIFIvRy9COiA0IGJpdHMgZWFjaCBbMTYgDQo+Pj4+ PiBiaXRzXSAqLw0KPj4+Pj4gK8KgwqDCoCBMU0RDX1BGX0FSR0IxNTU1ID0gMizCoCAvKiBB UkdCIEE6MSBiaXQgUkdCOjE1IGJpdHMgWzE2IGJpdHNdICovDQo+Pj4+PiArwqDCoMKgIExT RENfUEZfUkdCNTY1ID0gMyzCoMKgwqAgLyogUkdCIFsxNiBiaXRzXSAqLw0KPj4+Pj4gK8Kg wqDCoCBMU0RDX1BGX1hSR0I4ODg4ID0gNCzCoCAvKiBYUkdCIFszMiBiaXRzXSAqLw0KPj4+ Pj4gK8KgwqDCoCBMU0RDX1BGX1JHQkE4ODg4ID0gNSzCoCAvKiBBUkdCIFszMiBiaXRzXSAq Lw0KPj4+Pj4gK307DQo+Pj4+PiArDQo+Pj4+PiArLyoNCj4+Pj4+ICsgKiBFYWNoIGNydGMg aGFzIHR3byBzZXQgZmIgYWRkcmVzcyByZWdpc3RlcnMgdXNhYmxlLCANCj4+Pj4+IENGR19G Ql9JTl9VU0lORyBvZg0KPj4+Pj4gKyAqIExTRENfQ1JUQ3hfQ0ZHX1JFRyBzcGVjaWZ5IHdo aWNoIGZiIGFkZHJlc3MgcmVnaXN0ZXIgaXMgY3VycmVudGx5DQo+Pj4+PiArICogaW4gdXNp bmcgYnkgdGhlIENSVEMuIENGR19QQUdFX0ZMSVAgb2YgTFNEQ19DUlRDeF9DRkdfUkVHIGlz IA0KPj4+Pj4gdXNlZCB0bw0KPj4+Pj4gKyAqIHRyaWdnZXIgdGhlIHN3aXRjaCB3aGljaCB3 aWxsIGJlIGZpbmlzaGVkIGF0IHRoZSB2ZXJ5IHZibGFuay4gDQo+Pj4+PiBJZiB5b3UNCj4+ Pj4+ICsgKiB3YW50IGl0IHN3aXRjaCB0byBhbm90aGVyIGFnYWluLCB5b3UgbXVzdCBzZXQg Q0ZHX1BBR0VfRkxJUCBhZ2Fpbi4NCj4+Pj4+ICsgKi8NCj4+Pj4+ICsjZGVmaW5lIENGR19Q QUdFX0ZMSVDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDcpDQo+ Pj4+PiArI2RlZmluZSBDRkdfT1VUUFVUX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEJJVCg4KQ0KPj4+Pj4gKy8qIENSVEMwIGNsb25lIGZyb20gQ1JUQzEgb3Ig Q1JUQzEgY2xvbmUgZnJvbSBDUlRDMCB1c2luZyBoYXJkd2FyZSANCj4+Pj4+IGxvZ2ljICov DQo+Pj4+PiArI2RlZmluZSBDRkdfUEFORUxfU1dJVENIwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEJJVCg5KQ0KPj4+Pj4gKy8qIEluZGljYXRlIHdpdGNoIGZiIGFkZHIgcmVn IGlzIGluIHVzaW5nLCBjdXJyZW50bHkgKi8NCj4+Pj4+ICsjZGVmaW5lIENGR19GQl9JTl9V U0lOR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgxMSkNCj4+Pj4+ICsj ZGVmaW5lIENGR19HQU1NQV9FTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIEJJVCgxMikNCj4+Pj4+ICsNCj4+Pj4+ICsvKiBDUlRDIGdldCBzb2Z0IHJlc2V0IGlm IHZvbHRhZ2UgbGV2ZWwgY2hhbmdlIGZyb20gMSAtPiAwICovDQo+Pj4+PiArI2RlZmluZSBD RkdfUkVTRVRfTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklU KDIwKQ0KPj4+Pj4gKw0KPj4+Pj4gKyNkZWZpbmUgQ0ZHX0hTWU5DX0VOwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDMwKQ0KPj4+Pj4gKyNkZWZpbmUgQ0ZH X0hTWU5DX0lOVsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMzEp DQo+Pj4+PiArI2RlZmluZSBDRkdfVlNZTkNfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBCSVQoMzApDQo+Pj4+PiArI2RlZmluZSBDRkdfVlNZTkNfSU5WwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgzMSkNCj4+Pj4+ICsNCj4+ Pj4+ICsvKiBUSEUgRE1BIHN0ZXAgb2YgdGhlIERDIGluIExTN0EyMDAwIGlzIGNvbmZpZ3Vy YWJsZSAqLw0KPj4+Pj4gKyNkZWZpbmUgTFNEQ19ETUFfU1RFUF9NQVNLwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgR0VOTUFTSygxNywgMTYpDQo+Pj4+PiArZW51bSBsc2RjX2RtYV9z dGVwc19zdXBwb3J0ZWQgew0KPj4+Pj4gK8KgwqDCoCBMU0RDX0RNQV9TVEVQXzI1Nl9CWVRF UyA9IDAsDQo+Pj4+PiArwqDCoMKgIExTRENfRE1BX1NURVBfMTI4X0JZVEVTID0gMSwNCj4+ Pj4+ICvCoMKgwqAgTFNEQ19ETUFfU1RFUF82NF9CWVRFUyA9IDIsDQo+Pj4+PiArwqDCoMKg IExTRENfRE1BX1NURVBfMzJfQllURVMgPSAzLA0KPj4+Pj4gK307DQo+Pj4+PiArDQo+Pj4+ PiArLyoqKioqKioqIENSVEMwICYgRFZPMCAqKioqKioqKi8NCj4+Pj4+ICsjZGVmaW5lIExT RENfQ1JUQzBfQ0ZHX1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTI0MA0KPj4+ Pj4gKyNkZWZpbmUgTFNEQ19DUlRDMF9GQjBfTE9fQUREUl9SRUfCoMKgwqDCoMKgIDB4MTI2 MA0KPj4+Pj4gKyNkZWZpbmUgTFNEQ19DUlRDMF9GQjBfSElfQUREUl9SRUfCoMKgwqDCoMKg IDB4MTVBMA0KPj4+Pj4gKyNkZWZpbmUgTFNEQ19DUlRDMF9GQjFfTE9fQUREUl9SRUfCoMKg wqDCoMKgIDB4MTU4MA0KPj4+Pj4gKyNkZWZpbmUgTFNEQ19DUlRDMF9GQjFfSElfQUREUl9S RUfCoMKgwqDCoMKgIDB4MTVDMA0KPj4+Pj4gKyNkZWZpbmUgTFNEQ19DUlRDMF9TVFJJREVf UkVHwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxMjgwDQo+Pj4+PiArI2RlZmluZSBMU0RDX0NS VEMwX0ZCX09SSUdJTl9SRUfCoMKgwqDCoMKgwqDCoCAweDEzMDANCj4+Pj4+ICsjZGVmaW5l IExTRENfQ1JUQzBfSERJU1BMQVlfUkVHwqDCoMKgwqDCoMKgwqDCoCAweDE0MDANCj4+Pj4+ ICsjZGVmaW5lIExTRENfQ1JUQzBfSFNZTkNfUkVHwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAw eDE0MjANCj4+Pj4+ICsjZGVmaW5lIExTRENfQ1JUQzBfVkRJU1BMQVlfUkVHwqDCoMKgwqDC oMKgwqDCoCAweDE0ODANCj4+Pj4+ICsjZGVmaW5lIExTRENfQ1JUQzBfVlNZTkNfUkVHwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAweDE0QTANCj4+Pj4+ICsjZGVmaW5lIExTRENfQ1JUQzBf R0FNTUFfSU5ERVhfUkVHwqDCoMKgwqDCoCAweDE0RTANCj4+Pj4+ICsjZGVmaW5lIExTRENf Q1JUQzBfR0FNTUFfREFUQV9SRUfCoMKgwqDCoMKgwqAgMHgxNTAwDQo+Pj4+PiArDQo+Pj4+ PiArLyoqKioqKioqIENUUkMxICYgRFZPMSAqKioqKioqKi8NCj4+Pj4+ICsjZGVmaW5lIExT RENfQ1JUQzFfQ0ZHX1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTI1MA0KPj4+ Pj4gKyNkZWZpbmUgTFNEQ19DUlRDMV9GQjBfTE9fQUREUl9SRUfCoMKgwqDCoMKgIDB4MTI3 MA0KPj4+Pj4gKyNkZWZpbmUgTFNEQ19DUlRDMV9GQjBfSElfQUREUl9SRUfCoMKgwqDCoMKg IDB4MTVCMA0KPj4+Pj4gKyNkZWZpbmUgTFNEQ19DUlRDMV9GQjFfTE9fQUREUl9SRUfCoMKg wqDCoMKgIDB4MTU5MA0KPj4+Pj4gKyNkZWZpbmUgTFNEQ19DUlRDMV9GQjFfSElfQUREUl9S RUfCoMKgwqDCoMKgIDB4MTVEMA0KPj4+Pj4gKyNkZWZpbmUgTFNEQ19DUlRDMV9TVFJJREVf UkVHwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxMjkwDQo+Pj4+PiArI2RlZmluZSBMU0RDX0NS VEMxX0ZCX09SSUdJTl9SRUfCoMKgwqDCoMKgwqDCoCAweDEzMTANCj4+Pj4+ICsjZGVmaW5l IExTRENfQ1JUQzFfSERJU1BMQVlfUkVHwqDCoMKgwqDCoMKgwqDCoCAweDE0MTANCj4+Pj4+ ICsjZGVmaW5lIExTRENfQ1JUQzFfSFNZTkNfUkVHwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAw eDE0MzANCj4+Pj4+ICsjZGVmaW5lIExTRENfQ1JUQzFfVkRJU1BMQVlfUkVHwqDCoMKgwqDC oMKgwqDCoCAweDE0OTANCj4+Pj4+ICsjZGVmaW5lIExTRENfQ1JUQzFfVlNZTkNfUkVHwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAweDE0QjANCj4+Pj4+ICsjZGVmaW5lIExTRENfQ1JUQzFf R0FNTUFfSU5ERVhfUkVHwqDCoMKgwqDCoCAweDE0RjANCj4+Pj4+ICsjZGVmaW5lIExTRENf Q1JUQzFfR0FNTUFfREFUQV9SRUfCoMKgwqDCoMKgwqAgMHgxNTEwDQo+Pj4+PiArDQo+Pj4+ PiArLyoNCj4+Pj4+ICsgKiBMUzdBMjAwMCBoYXMgdGhlIGhhcmR3YXJlIHdoaWNoIHJlY29y ZCB0aGUgc2NhbiBwb3NpdGlvbiBvZiB0aGUgDQo+Pj4+PiBDUlRDDQo+Pj4+PiArICogWzMx OjE2XSA6IGN1cnJlbnQgWCBwb3NpdGlvbiwgWzE1OjBdIDogY3VycmVudCBZIHBvc2l0aW9u DQo+Pj4+PiArICovDQo+Pj4+PiArI2RlZmluZSBMU0RDX0NSVEMwX1NDQU5fUE9TX1JFR8Kg wqDCoMKgwqDCoMKgwqAgMHgxNEMwDQo+Pj4+PiArI2RlZmluZSBMU0RDX0NSVEMxX1NDQU5f UE9TX1JFR8KgwqDCoMKgwqDCoMKgwqAgMHgxNEQwDQo+Pj4+PiArDQo+Pj4+PiArLyoNCj4+ Pj4+ICsgKiBMUzdBMjAwMCBoYXMgdGhlIGhhcmR3YXJlIHdoaWNoIGNvdW50IHRoZSBudW1i ZXIgb2YgdmJsYW5rIA0KPj4+Pj4gZ2VuZXJhdGVkDQo+Pj4+PiArICovDQo+Pj4+PiArI2Rl ZmluZSBMU0RDX0NSVEMwX1ZTWU5DX0NPVU5URVJfUkVHwqDCoMKgIDB4MUEwMA0KPj4+Pj4g KyNkZWZpbmUgTFNEQ19DUlRDMV9WU1lOQ19DT1VOVEVSX1JFR8KgwqDCoCAweDFBMTANCj4+ Pj4+ICsNCj4+Pj4+ICsvKiBJbiBhbGwsIExTRENfQ1JUQzFfWFhYX1JFRyAtIExTRENfQ1JU QzBfWFhYX1JFRyA9IDB4MTAgKi8NCj4+Pj4+ICsNCj4+Pj4+ICsvKg0KPj4+Pj4gKyAqIFRo ZXJlIGlzIG9ubHkgb25lIGhhcmR3YXJlIGN1cnNvciB1bml0IGluIGxzN2ExMDAwLCBsczJr MTAwMCANCj4+Pj4+IGFuZCBsczJrMDUwMC4NCj4+Pj4+ICsgKiB3ZWxsLCBsczdhMjAwMCBo YXMgdHdvIGhhcmR3YXJlIGN1cnNvciB1bml0Lg0KPj4+Pj4gKyAqLw0KPj4+Pj4gKyNkZWZp bmUgQ1VSU09SX0ZPUk1BVF9NQVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VOTUFT SygxLCAwKQ0KPj4+Pj4gK2VudW0gbHNkY19jdXJzb3JfZm9ybWF0IHsNCj4+Pj4+ICvCoMKg wqAgQ1VSU09SX0ZPUk1BVF9ESVNBQkxFID0gMCwNCj4+Pj4+ICvCoMKgwqAgQ1VSU09SX0ZP Uk1BVF9NT05PQ0hST01FID0gMSwNCj4+Pj4+ICvCoMKgwqAgQ1VSU09SX0ZPUk1BVF9BUkdC ODg4OCA9IDIsDQo+Pj4+PiArfTsNCj4+Pj4+ICsNCj4+Pj4+ICsjZGVmaW5lIENVUlNPUl9T SVpFXzY0WDY0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMikNCj4+Pj4+ICsj ZGVmaW5lIENVUlNPUl9MT0NBVElPTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEJJVCg0KQ0KPj4+Pj4gKw0KPj4+Pj4gKyNkZWZpbmUgTFNEQ19DVVJTT1IwX0NGR19SRUfC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTUyMA0KPj4+Pj4gKyNkZWZpbmUgTFNEQ19DVVJT T1IwX0FERFJfTE9fUkVHwqDCoMKgwqDCoMKgwqAgMHgxNTMwDQo+Pj4+PiArI2RlZmluZSBM U0RDX0NVUlNPUjBfQUREUl9ISV9SRUfCoMKgwqDCoMKgwqDCoCAweDE1ZTANCj4+Pj4+ICsj ZGVmaW5lIExTRENfQ1VSU09SMF9QT1NJVElPTl9SRUfCoMKgwqDCoMKgwqAgMHgxNTQwDQo+ Pj4+PiArI2RlZmluZSBMU0RDX0NVUlNPUjBfQkdfQ09MT1JfUkVHwqDCoMKgwqDCoMKgIDB4 MTU1MMKgIC8qIGJhY2tncm91bmQgDQo+Pj4+PiBjb2xvciAqLw0KPj4+Pj4gKyNkZWZpbmUg TFNEQ19DVVJTT1IwX0ZHX0NPTE9SX1JFR8KgwqDCoMKgwqDCoCAweDE1NjDCoCAvKiBmb3Jl Z3JvdW5kIA0KPj4+Pj4gY29sb3IgKi8NCj4+Pj4+ICsNCj4+Pj4+ICsjZGVmaW5lIExTRENf Q1VSU09SMV9DRkdfUkVHwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDE2NzANCj4+Pj4+ICsj ZGVmaW5lIExTRENfQ1VSU09SMV9BRERSX0xPX1JFR8KgwqDCoMKgwqDCoMKgIDB4MTY4MA0K Pj4+Pj4gKyNkZWZpbmUgTFNEQ19DVVJTT1IxX0FERFJfSElfUkVHwqDCoMKgwqDCoMKgwqAg MHgxNmUwDQo+Pj4+PiArI2RlZmluZSBMU0RDX0NVUlNPUjFfUE9TSVRJT05fUkVHwqDCoMKg wqDCoMKgIDB4MTY5MMKgIC8qIFszMToxNl0gWSwgDQo+Pj4+PiBbMTU6MF0gWCAqLw0KPj4+ Pj4gKyNkZWZpbmUgTFNEQ19DVVJTT1IxX0JHX0NPTE9SX1JFR8KgwqDCoMKgwqDCoCAweDE2 QTDCoCAvKiBiYWNrZ3JvdW5kIA0KPj4+Pj4gY29sb3IgKi8NCj4+Pj4+ICsjZGVmaW5lIExT RENfQ1VSU09SMV9GR19DT0xPUl9SRUfCoMKgwqDCoMKgwqAgMHgxNkIwwqAgLyogZm9yZWdy b3VuZCANCj4+Pj4+IGNvbG9yICovDQo+Pj4+PiArDQo+Pj4+PiArLyoNCj4+Pj4+ICsgKiBE QyBJbnRlcnJ1cHQgQ29udHJvbCBSZWdpc3RlciwgMzJiaXQsIEFkZHJlc3MgT2Zmc2V0OiAx NTcwDQo+Pj4+PiArICoNCj4+Pj4+ICsgKiBCaXRzIDE1OjAgaW5pZGljYXRlIHRoZSBpbnRl cnJ1cHQgc3RhdHVzDQo+Pj4+PiArICogQml0cyAzMToxNiBjb250cm9sIGVuYWJsZSBpbnRl cnJ1cHRzIGNvcnJlc3BvbmRpbmcgdG8gYml0IDE1OjAgDQo+Pj4+PiBvciBub3QNCj4+Pj4+ ICsgKiBXcml0ZSAxIHRvIGVuYWJsZSwgd3JpdGUgMCB0byBkaXNhYmxlDQo+Pj4+PiArICoN Cj4+Pj4+ICsgKiBSRjogUmVhZCBGaW5pc2hlZA0KPj4+Pj4gKyAqIElEQlU6IEludGVybmFs IERhdGEgQnVmZmVyIFVuZGVyZmxvdw0KPj4+Pj4gKyAqIElEQkZVOiBJbnRlcm5hbCBEYXRh IEJ1ZmZlciBGYXRhbCBVbmRlcmZsb3cNCj4+Pj4+ICsgKiBDQlJGOiBDdXJzb3IgQnVmZmVy IFJlYWQgRmluaXNoZWQgRmxhZywgbm8gdXNlLg0KPj4+Pj4gKyAqDQo+Pj4+PiArICogDQo+ Pj4+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0rDQo+Pj4+PiArICogfCAzMToyNyB8wqDCoMKgwqDCoMKg wqDCoCAyNjoxNsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxNToxMSB8wqDCoCAxMMKgwqAg fCA5IHzCoMKgIDjCoMKgIHwNCj4+Pj4+ICsgKiANCj4+Pj4+ICstLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSsN Cj4+Pj4+ICsgKiB8wqAgTi9BwqAgfCBJbnRlcnJ1cHQgRW5hYmxlIENvbnRyb2wgfMKgIE4v QcKgIHwgSURCRlUwIHwgSURCRlUxIHwgDQo+Pj4+PiBJREJVMCB8DQo+Pj4+PiArICogDQo+ Pj4+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0rDQo+Pj4+PiArICoNCj4+Pj4+ICsgKiArLS0tLS0tLSst LS0tLSstLS0tLSstLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0r DQo+Pj4+PiArICogfMKgwqAgN8KgwqAgfMKgIDbCoCB8wqAgNcKgIHzCoCA0wqDCoCB8wqDC oCAzwqDCoMKgIHzCoMKgIDLCoMKgwqAgfMKgwqAgMcKgwqDCoCB8IDDCoMKgwqAgfA0KPj4+ Pj4gKyAqICstLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLSsNCj4+Pj4+ICsgKiB8IElEQlUxIHwgUkYwIHwgUkYxIHwgQ1JS RiB8IEhTWU5DMCB8IFZTWU5DMCB8IEhTWU5DMSB8IFZTWU5DMSB8DQo+Pj4+PiArICogKy0t LS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tKw0KPj4+Pj4gKyAqLw0KPj4+Pj4gKw0KPj4+Pj4gKyNkZWZpbmUgTFNEQ19JTlRf UkVHwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxNTcwDQo+Pj4+ PiArDQo+Pj4+PiArI2RlZmluZSBJTlRfQ1JUQzBfVlNZTkPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBCSVQoMikNCj4+Pj4+ICsjZGVmaW5lIElOVF9DUlRDMF9IU1lOQ8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgzKQ0KPj4+Pj4gKyNkZWZpbmUg SU5UX0NSVEMwX1JGwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklU KDYpDQo+Pj4+PiArI2RlZmluZSBJTlRfQ1JUQzBfSURCVcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgQklUKDgpDQo+Pj4+PiArI2RlZmluZSBJTlRfQ1JUQzBfSURCRlXC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMTApDQo+Pj4+PiArDQo+Pj4+ PiArI2RlZmluZSBJTlRfQ1JUQzFfVlNZTkPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBCSVQoMCkNCj4+Pj4+ICsjZGVmaW5lIElOVF9DUlRDMV9IU1lOQ8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgxKQ0KPj4+Pj4gKyNkZWZpbmUgSU5UX0NSVEMx X1JGwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDUpDQo+Pj4+ PiArI2RlZmluZSBJTlRfQ1JUQzFfSURCVcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgQklUKDcpDQo+Pj4+PiArI2RlZmluZSBJTlRfQ1JUQzFfSURCRlXCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoOSkNCj4+Pj4+ICsNCj4+Pj4+ICsjZGVmaW5l IElOVF9DUlRDMF9WU19FTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgx OCkNCj4+Pj4+ICsjZGVmaW5lIElOVF9DUlRDMF9IU19FTsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEJJVCgxOSkNCj4+Pj4+ICsjZGVmaW5lIElOVF9DUlRDMF9SRl9FTsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgyMikNCj4+Pj4+ICsjZGVmaW5l IElOVF9DUlRDMF9JREJVX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMjQp DQo+Pj4+PiArI2RlZmluZSBJTlRfQ1JUQzBfSURCRlVfRU7CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBCSVQoMjYpDQo+Pj4+PiArDQo+Pj4+PiArI2RlZmluZSBJTlRfQ1JUQzFfVlNf RU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMTYpDQo+Pj4+PiArI2Rl ZmluZSBJTlRfQ1JUQzFfSFNfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBC SVQoMTcpDQo+Pj4+PiArI2RlZmluZSBJTlRfQ1JUQzFfUkZfRU7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBCSVQoMjEpDQo+Pj4+PiArI2RlZmluZSBJTlRfQ1JUQzFfSURC VV9FTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDIzKQ0KPj4+Pj4gKyNkZWZp bmUgSU5UX0NSVEMxX0lEQkZVX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDI1 KQ0KPj4+Pj4gKw0KPj4+Pj4gKyNkZWZpbmUgSU5UX1NUQVRVU19NQVNLwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VOTUFTSygxNSwgMCkNCj4+Pj4+ICsNCj4+Pj4+ICsv Kg0KPj4+Pj4gKyAqIExTN0ExMDAwL0xTN0EyMDAwIGhhdmUgNCBncGlvcyB3aGljaCBhcmUg dXNlZCB0byBlbXVsYXRlZCBJMkMuDQo+Pj4+PiArICogVGhleSBhcmUgdW5kZXIgY29udHJv bCBvZiB0aGUgTFM3QV9EQ19HUElPX0RBVF9SRUcgYW5kIA0KPj4+Pj4gTFM3QV9EQ19HUElP X0RJUl9SRUcNCj4+Pj4+ICsgKiByZWdpc3RlciwgVGhvc2UgR1BJT3MgaGFzIG5vIHJlbGF0 aW9uc2hpcCB3aHRoIHRoZSBHUElPIA0KPj4+Pj4gaGFyZHdhcmUgb24gdGhlDQo+Pj4+PiAr ICogYnJpZGdlIGNoaXAgaXRzZWxmLiBUaG9zZSBvZmZzZXRzIGFyZSByZWxhdGl2ZSB0byBE QyByZWdpc3RlciANCj4+Pj4+IGJhc2UgYWRkcmVzcw0KPj4+Pj4gKyAqDQo+Pj4+PiArICog TFMyazEwMDAgYW5kIExTMkswNTAwIGRvbid0IGhhdmUgdGhvc2UgcmVnaXN0ZXJzLCB0aGV5 IHVzZSANCj4+Pj4+IGhhcmR3YXJlIGkyYw0KPj4+Pj4gKyAqIG9yIGdlbmVyYWwgR1BJTyBl bXVsYXRlZCBpMmMgZnJvbSBsaW51eCBpMmMgc3Vic3lzdGVtLg0KPj4+Pj4gKyAqDQo+Pj4+ PiArICogR1BJTyBkYXRhIHJlZ2lzdGVyLCBhZGRyZXNzIG9mZnNldDogMHgxNjUwDQo+Pj4+ PiArICrCoMKgICstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rDQo+ Pj4+PiArICrCoMKgIHwgNyB8IDYgfCA1IHwgNCB8wqAgM8KgIHzCoCAywqAgfMKgIDHCoCB8 wqAgMMKgIHwNCj4+Pj4+ICsgKsKgwqAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLSsNCj4+Pj4+ICsgKsKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfMKgwqDCoCBEVk8xwqDCoCB8wqDCoMKgIERWTzDCoMKgIHwNCj4+Pj4+ICsgKsKgwqAg K8KgwqDCoMKgwqAgTi9BwqDCoMKgwqDCoCArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rDQo+ Pj4+PiArICrCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgU0NMIHwgU0RB IHwgU0NMIHwgU0RBIHwNCj4+Pj4+ICsgKsKgwqAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLSsNCj4+Pj4+ICsgKi8NCj4+Pj4+ICsjZGVmaW5lIExTN0FfRENf R1BJT19EQVRfUkVHwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDE2NTANCj4+Pj4+ICsNCj4+ Pj4+ICsvKg0KPj4+Pj4gKyAqwqAgR1BJTyBJbnB1dC9PdXRwdXQgZGlyZWN0aW9uIGNvbnRy b2wgcmVnaXN0ZXIsIGFkZHJlc3Mgb2Zmc2V0OiANCj4+Pj4+IDB4MTY2MA0KPj4+Pj4gKyAq Lw0KPj4+Pj4gKyNkZWZpbmUgTFM3QV9EQ19HUElPX0RJUl9SRUfCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDB4MTY2MA0KPj4+Pj4gKw0KPj4+Pj4gKy8qDQo+Pj4+PiArICrCoCBMUzdBMjAw MCBoYXMgdHdvIGJ1aWx0LWluIEhETUkgRW5jb2RlciBhbmQgb25lIFZHQSBlbmNvZGVyDQo+ Pj4+PiArICovDQo+Pj4+PiArDQo+Pj4+PiArLyoNCj4+Pj4+ICsgKiBOdW1iZXIgb2YgY29u dGludW91cyBwYWNrZXRzIG1heSBiZSBwcmVzZW50DQo+Pj4+PiArICogaW4gSERNSSBoYmxh bmsgYW5kIHZibGFuayB6b25lLCBzaG91bGQgPj0gNDgNCj4+Pj4+ICsgKi8NCj4+Pj4+ICsj ZGVmaW5lIExTRENfSERNSTBfWk9ORV9SRUfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgx NzAwDQo+Pj4+PiArI2RlZmluZSBMU0RDX0hETUkxX1pPTkVfUkVHwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDB4MTcxMA0KPj4+Pj4gKw0KPj4+Pj4gKyNkZWZpbmUgSERNSV9JTlRFUkZB Q0VfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgwKQ0KPj4+Pj4gKyNkZWZp bmUgSERNSV9QQUNLRVRfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJ VCgxKQ0KPj4+Pj4gKyNkZWZpbmUgSERNSV9BVURJT19FTsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBCSVQoMikNCj4+Pj4+ICsjZGVmaW5lIEhETUlfVklERU9fUFJF QU1CTEVfTUFTS8KgwqDCoMKgwqDCoMKgIEdFTk1BU0soNywgNCkNCj4+Pj4+ICsjZGVmaW5l IEhETUlfSFdfSTJDX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQo OCkNCj4+Pj4+ICsjZGVmaW5lIEhETUlfQ1RMX1BFUklPRF9NT0RFwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBCSVQoOSkNCj4+Pj4+ICsjZGVmaW5lIExTRENfSERNSTBfQ1RSTF9SRUfCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxNzIwDQo+Pj4+PiArI2RlZmluZSBMU0RDX0hETUkx X0NUUkxfUkVHwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTczMA0KPj4+Pj4gKw0KPj4+ Pj4gKyNkZWZpbmUgSERNSV9QSFlfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEJJVCgwKQ0KPj4+Pj4gKyNkZWZpbmUgSERNSV9QSFlfUkVTRVRfTsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMSkNCj4+Pj4+ICsjZGVmaW5lIEhETUlf UEhZX1RFUk1fTF9FTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCg4KQ0KPj4+Pj4g KyNkZWZpbmUgSERNSV9QSFlfVEVSTV9IX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg QklUKDkpDQo+Pj4+PiArI2RlZmluZSBIRE1JX1BIWV9URVJNX0RFVF9FTsKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgQklUKDEwKQ0KPj4+Pj4gKyNkZWZpbmUgSERNSV9QSFlfVEVSTV9TVEFU VVPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgxMSkNCj4+Pj4+ICsjZGVmaW5lIExTRENf SERNSTBfUEhZX0NUUkxfUkVHwqDCoMKgwqDCoMKgwqDCoCAweDE4MDANCj4+Pj4+ICsjZGVm aW5lIExTRENfSERNSTFfUEhZX0NUUkxfUkVHwqDCoMKgwqDCoMKgwqDCoCAweDE4MTANCj4+ Pj4+ICsNCj4+Pj4+ICsvKg0KPj4+Pj4gKyAqwqAgSURGOiBJbnB1dCBEaXZpc2lvbiBGYWN0 b3INCj4+Pj4+ICsgKsKgIE9ERjogT3V0cHV0IERpdmlzaW9uIEZhY3Rvcg0KPj4+Pj4gKyAq wqDCoCBMRjogTG9vcCBGYWN0b3INCj4+Pj4+ICsgKsKgwqDCoCBNOiBSZXF1aXJlZCBNdWx0 DQo+Pj4+PiArICoNCj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+Pj4+PiArICrCoCB8wqDCoMKgwqAgRmlu IChrSFopwqDCoMKgwqAgfCBNwqAgfCBJREYgfCBMRiB8IE9ERiB8IEZvdXQoTWh6KcKgIHwN Cj4+Pj4+ICsgKiB8LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKy0tLS0tKy0tLS0rLS0tLS0r LS0tLS0tLS0tLS0tLS18DQo+Pj4+PiArICrCoCB8wqAgMTcwMDAwIH4gMzQwMDAwwqAgfCAx MCB8IDE2wqAgfCA0MCB8wqAgMcKgIHwgMTcwMCB+IDM0MDDCoCB8DQo+Pj4+PiArICrCoCB8 wqDCoCA4NTAwMCB+IDE3MDAwMMKgIHwgMTAgfMKgIDjCoCB8IDQwIHzCoCAywqAgfMKgIDg1 MCB+IDE3MDDCoCB8DQo+Pj4+PiArICrCoCB8wqDCoCA0MjUwMCB+wqAgODUwMDDCoCB8IDEw IHzCoCA0wqAgfCA0MCB8wqAgNMKgIHzCoCA0MjUgfiA4NTDCoMKgIHwNCj4+Pj4+ICsgKsKg IHzCoMKgIDIxMjUwIH7CoCA0MjUwMMKgIHwgMTAgfMKgIDLCoCB8IDQwIHzCoCA4wqAgfCAy MTIuNSB+IDQyNcKgIHwNCj4+Pj4+ICsgKsKgIHzCoMKgIDIwMDAwIH7CoCAyMTI1MMKgIHwg MTAgfMKgIDHCoCB8IDQwIHwgMTbCoCB8wqAgMjAwIH4gMjEyLjUgfA0KPj4+Pj4gKyAqICst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsNCj4+Pj4+ICsgKi8NCj4+Pj4+ICsjZGVmaW5lIExTRENfSERNSTBfUEhZX1BMTF9SRUfC oMKgwqDCoO+/ve+/vcKgwqDCoMKgIDB4MTgyMA0KPj4+Pj4gKyNkZWZpbmUgTFNEQ19IRE1J MV9QSFlfUExMX1JFR8KgwqDCoMKgwqDCoMKgwqDCoCAweDE4MzANCj4+Pj4+ICsNCj4+Pj4+ ICsjZGVmaW5lIEhETUlfUExMX0VOQUJMRcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIEJJVCgwKQ0KPj4+Pj4gKyNkZWZpbmUgSERNSV9QTExfTE9DS0VEwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDE2KQ0KPj4+Pj4gKyNkZWZpbmUgSERNSV9QTExf QllQQVNTwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDE3KQ0KPj4+Pj4g Kw0KPj4+Pj4gKyNkZWZpbmUgSERNSV9QTExfSURGX1NISUZUwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgMQ0KPj4+Pj4gKyNkZWZpbmUgSERNSV9QTExfSURGX01BU0vCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIEdFTk1BU0soNSwgMSkNCj4+Pj4+ICsjZGVmaW5lIEhETUlf UExMX0xGX1NISUZUwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA2DQo+Pj4+PiArI2Rl ZmluZSBIRE1JX1BMTF9MRl9NQVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdF Tk1BU0soMTIsIDYpDQo+Pj4+PiArI2RlZmluZSBIRE1JX1BMTF9PREZfU0hJRlTCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAxMw0KPj4+Pj4gKyNkZWZpbmUgSERNSV9QTExfT0RGX01B U0vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTk1BU0soMTUsIDEzKQ0KPj4+Pj4g Kw0KPj4+Pj4gKy8qIExTN0EyMDAwIGhhdmUgaHBkIHN1cHBvcnQgKi8NCj4+Pj4+ICsjZGVm aW5lIExTRENfSERNSV9IUERfU1RBVFVTX1JFR8KgwqDCoMKgwqDCoMKgIDB4MUJBMA0KPj4+ Pj4gKyNkZWZpbmUgSERNSTBfSFBEX0ZMQUfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIEJJVCgwKQ0KPj4+Pj4gKyNkZWZpbmUgSERNSTFfSFBEX0ZMQUfCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgxKQ0KPj4+Pj4gKw0KPj4+Pj4gKyNlbmRp Zg0KPj4+Pg0KPj4+DQo+Pg0KDQotLSANClRob21hcyBaaW1tZXJtYW5uDQpHcmFwaGljcyBE cml2ZXIgRGV2ZWxvcGVyDQpTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdtYkgN Ck1heGZlbGRzdHIuIDUsIDkwNDA5IE7DvHJuYmVyZywgR2VybWFueQ0KKEhSQiAzNjgwOSwg QUcgTsO8cm5iZXJnKQ0KR2VzY2jDpGZ0c2bDvGhyZXI6IEl2byBUb3Rldg0K --------------lcNJgwMJ6vxPYCPopHV0HVVn-- --------------dzBq1AU4Njwcq3Hw1ZFZM7m3 Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEExndm/fpuMUdwYFFolh/E3EQov+AFAmP3YN4FAwAAAAAACgkQlh/E3EQov+BQ CxAAmu7/L7hyGFIpfSIV8McQ0TcJVrNiar0zKlAALkp6RAosS5I5kOWbBdZAhjwGrcrQLbowXEjT RQOZ7sj4X0UfoZ4jP5jMgpKRYPOeLMrz1uudYKrTBxfEakOpndkHG2jmvhkZQAmAOOyEeoaQQeTB 3WFdU6mPWSBfR17dXCylfOq4Z7coPOVC7jIQ8cXJYYr1dWj7o5oHzsDM4z0HnF9v6q/xJfo+6HyM tABQdlDSb6fWXMHRNtljZWmyVc/KdawpvlJi+JnNbM3Wg+gjkono4zxnq0VsGLqjSWLKFOOBV/gZ KVT84edyTjNohtM3gKEJkuCVh1l02ykOOMTXVPuiFZAfFrQ+uIsQRnqCftyXpIdM85WuRm//CUyn AjyrMsPv1s5mt8M8ZoXrdm+s55HDvkL99+j1yO0PmIA2zgKJX3wdNGCZizwgY0YKJtHT4aNzpXbd Kjs3of+hifVJKSH6ECbgZtT8lyLP7rjy3XqgtlJT9vN4yF25ToaOKRVg7xzdQ9muxUAyS/ggb+r+ BJLUP8QKUNTYzna+BlAgEgS/cu+SOaWaQF+LiAzBezNhcCB1HvDrhuYmw2K2VFUcqEy+6skj+6wf UciiwJS3HlW8/a9LxC0fZ72YAhxZn9N/M1M2hGk0dZ/3Dyag+V48/8Grn/NNNM49oF0OByyvHA5M EDc= =gXsT -----END PGP SIGNATURE----- --------------dzBq1AU4Njwcq3Hw1ZFZM7m3--