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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D3D0EEB64DB for ; Mon, 19 Jun 2023 08:22:27 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B9DBF10E1A7; Mon, 19 Jun 2023 08:22:26 +0000 (UTC) Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id E65F910E1A7 for ; Mon, 19 Jun 2023 08:22:23 +0000 (UTC) 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-out1.suse.de (Postfix) with ESMTPS id D764221866; Mon, 19 Jun 2023 08:22:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1687162941; 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=ukP5IDO3iooB8LhiQ6PRnXQ+b4BM52T4aTxRzAiZv1k=; b=WC5DXlvWRTqAMJnYjV3GSsi2pgHLPBJvWPbgc+Zi8k72dsXsxp3T4i5MmzhEgEoH5ISk9R BR9i4n5K8eoYteybu4ojJ4gROMCfhrnnXILS8wuD/5jbTfUyvaVrX8nBt0MWNWEzlskxyI o9XRc55ORcJXabGSnVY+ISXGbWGzBvc= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1687162941; 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=ukP5IDO3iooB8LhiQ6PRnXQ+b4BM52T4aTxRzAiZv1k=; b=Cd+1sGOs8EQaPnrWRB+4fLcAh9d1BE5tD2DzvwaIcPzz7iH5r1lK5hPvSCJpwDp+lWGOE/ KN8RiX5pE51DR8CA== 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 AED2D139C2; Mon, 19 Jun 2023 08:22:21 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id jlfCKT0QkGSHEwAAMHmgww (envelope-from ); Mon, 19 Jun 2023 08:22:21 +0000 Message-ID: Date: Mon, 19 Jun 2023 10:22:20 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: [09/14] drm/ast: Distinguish among chip generations Content-Language: en-US To: Sui Jingfeng , airlied@redhat.com, jfalempe@redhat.com, daniel@ffwll.ch, jammy_huang@aspeedtech.com References: <20230616140739.32042-10-tzimmermann@suse.de> <7ab95897-c536-629e-67db-1c9a9840b581@loongson.cn> From: Thomas Zimmermann In-Reply-To: <7ab95897-c536-629e-67db-1c9a9840b581@loongson.cn> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------SdCNwUsb4q6YJM2Ei9sXKKA4" X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: dri-devel@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------SdCNwUsb4q6YJM2Ei9sXKKA4 Content-Type: multipart/mixed; boundary="------------ov1e86tgXTIZCjupCgzYng5N"; protected-headers="v1" From: Thomas Zimmermann To: Sui Jingfeng , airlied@redhat.com, jfalempe@redhat.com, daniel@ffwll.ch, jammy_huang@aspeedtech.com Cc: dri-devel@lists.freedesktop.org Message-ID: Subject: Re: [09/14] drm/ast: Distinguish among chip generations References: <20230616140739.32042-10-tzimmermann@suse.de> <7ab95897-c536-629e-67db-1c9a9840b581@loongson.cn> In-Reply-To: <7ab95897-c536-629e-67db-1c9a9840b581@loongson.cn> --------------ov1e86tgXTIZCjupCgzYng5N Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMTcuMDYuMjMgdW0gMTA6MzUgc2NocmllYiBTdWkgSmluZ2Zlbmc6DQo+IEhp LA0KPiANCj4gT24gMjAyMy82LzE2IDIxOjUyLCBUaG9tYXMgWmltbWVybWFubiB3cm90ZToN Cj4+IEFTcGVlZCBkaXN0aW5ndWlzaGVzIGFtb25nIHZhcmlvdXMgZ2VuZXJhdGlvbnMgb2Yg dGhlIEFTVCBncmFwaGljcw0KPj4gY2hpcHNldCB3aXRoIHZhcmlvdXMgbW9kZWxzLiBbMV0g VGhlIG1vc3QtcmVjZW50IG1vZGVsIEFTVCAyNjAwIGlzDQo+PiBvZiB0aGUgN3RoIGdlbmVy YXRpb24sIHRoZSBBU1QgMjUwMCBpcyBvZiB0aGUgNnRoIGdlbmVyYXRpb24sIGFuZCBzbw0K Pj4gb24uDQo+Pg0KPj4gVGhlIGFzdCBkcml2ZXIgc2ltcGx5IHBpY2tzIG9uZSBvZiB0aGUg bW9kZWxzIGFzIHJlcHJlc2VudGF0aXZlIGZvcg0KPj4gdGhlIHdob2xlIGdlbmVyYXRpb24u IEluIHNldmVyYWwgcGxhY2VzLCBpbmRpdmlkdWFsIG1vZGVscyBvZiB0aGUNCj4+IHNhbWUg Z2VuZXJhdGlvbiBuZWVkIHRvIGJlIGhhbmRsZWQgZGlmZmVyZW50bHksIHdoaWNoIHRoZW4g cmVxdWlyZXMNCj4+IGFkZGl0aW9uYWwgY29kZSBmb3IgZGV0ZWN0aW5nIHRoZSBtb2RlbC4N Cj4+DQo+PiBJbnRyb2R1Y2UgZGlmZmVyZW50IGdlbmVyYXRpb25zIG9mIHRoZSBBc3BlZWQg Y2hpcHNldC4gSW4gdGhlIHNvdXJjZQ0KPj4gY29kZSwgcmVmZXIgdG8gdGhlIGdlbmVyYXRp b24gaW5zdGVhZCBvZiB0aGUgcmVwcmVzZW50YXRpb24gbW9kZWwgd2hlcmUNCj4+IHBvc3Np YmxlLiBUaGUgZmV3IHBsYWNlcyB0aGF0IHJlcXVpcmUgcGVyLW1vZGVsIGhhbmRsaW5nIGFy ZSBub3cgY2xlYXJseQ0KPj4gbWFya2VkLg0KPj4NCj4+IEluIHRoZSBlbnVtIGFzdF9jaGlw LCB3ZSBhcnJhbmdlIGVhY2ggbW9kZWwncyB2YWx1ZSBzdWNoIHRoYXQgaXQNCj4+IGVuY29k ZXMgdGhlIGdlbmVyYXRpb24uIFRoaXMgYWxsb3dzIGZvciBhbiBlYXN5IHRlc3QuIFRoZSBh Y3R1YWwgdmFsdWVzDQo+PiBhcmUgb3JkZXJlZCwgYnV0IG5vdCBvZiBpbnRlcmVzdCB0byB0 aGUgZHJpdmVyLg0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6IFRob21hcyBaaW1tZXJtYW5uIDx0 emltbWVybWFubkBzdXNlLmRlPg0KPj4gTGluazogDQo+PiBodHRwczovL3dlYi5hcmNoaXZl Lm9yZy93ZWIvMjAxNDEwMDcwOTMyNTgvaHR0cDovL3d3dy5hc3BlZWR0ZWNoLmNvbS9wcm9k dWN0cy5waHA/ZlBhdGg9MjAgIyAxDQo+PiAtLS0NCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9h c3QvYXN0X2RwNTAxLmMgfMKgIDYgKystLQ0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2FzdC9h c3RfZHJ2LmjCoMKgIHwgNTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tDQo+ PiDCoCBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tYWluLmPCoCB8IDIyICsrKysrKy0tLS0t LS0NCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuY8KgIHwgMzUgKysrKysr KysrKy0tLS0tLS0tLS0tDQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9wb3N0LmPC oCB8IDI3ICsrKysrKystLS0tLS0tLS0NCj4+IMKgIDUgZmlsZXMgY2hhbmdlZCwgODkgaW5z ZXJ0aW9ucygrKSwgNTcgZGVsZXRpb25zKC0pDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hc3QvYXN0X2RwNTAxLmMgDQo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hc3Qv YXN0X2RwNTAxLmMNCj4+IGluZGV4IDFiYzM1YTk5MjM2OWQuLmE1ZDI4NTg1MGZmYjEgMTAw NjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcDUwMS5jDQo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcDUwMS5jDQo+PiBAQCAtMzUwLDcgKzM1MCw3 IEBAIHN0YXRpYyBib29sIGFzdF9pbml0X2R2byhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQ0K Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGRhdGEgfD0gMHgwMDAwMDUwMDsNCj4+IMKgwqDCoMKg wqDCoMKgwqDCoCBhc3Rfd3JpdGUzMihhc3QsIDB4MTIwMDgsIGRhdGEpOw0KPj4gLcKgwqDC oMKgwqDCoMKgIGlmIChhc3QtPmNoaXAgPT0gQVNUMjMwMCkgew0KPj4gK8KgwqDCoMKgwqDC oMKgIGlmIChJU19BU1RfR0VONChhc3QpKSB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBkYXRhID0gYXN0X3JlYWQzMihhc3QsIDB4MTIwODQpOw0KPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgLyogbXVsdGktcGlucyBmb3IgRFZPIHNpbmdsZS1lZGdlICovDQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkYXRhIHw9IDB4ZmZmZTAwMDA7DQo+PiBA QCAtMzY2LDcgKzM2Niw3IEBAIHN0YXRpYyBib29sIGFzdF9pbml0X2R2byhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGF0YSAmPSAw eGZmZmZmZmNmOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGF0YSB8PSAweDAw MDAwMDIwOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X3dyaXRlMzIoYXN0 LCAweDEyMDkwLCBkYXRhKTsNCj4+IC3CoMKgwqDCoMKgwqDCoCB9IGVsc2UgeyAvKiBBU1Qy NDAwICovDQo+PiArwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsgLyogQVNUIEdFTjUrICovDQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkYXRhID0gYXN0X3JlYWQzMihhc3QsIDB4 MTIwODgpOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogbXVsdGktcGlucyBm b3IgRFZPIHNpbmdsZS1lZGdlICovDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk YXRhIHw9IDB4MzAwMDAwMDA7DQo+PiBAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgYXN0X2lu aXRfM3JkdHgoc3RydWN0IGRybV9kZXZpY2UgKmRldikNCj4+IMKgwqDCoMKgwqAgc3RydWN0 IGFzdF9kZXZpY2UgKmFzdCA9IHRvX2FzdF9kZXZpY2UoZGV2KTsNCj4+IMKgwqDCoMKgwqAg dTgganJlZzsNCj4+IC3CoMKgwqAgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+ Y2hpcCA9PSBBU1QyNDAwKSB7DQo+PiArwqDCoMKgIGlmIChJU19BU1RfR0VONChhc3QpIHx8 IElTX0FTVF9HRU41KGFzdCkpIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBqcmVnID0gYXN0 X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4ZDEsIA0KPj4g MHhmZik7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgc3dpdGNoIChqcmVnICYgMHgwZSkgew0K Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGNhc2UgMHgwNDoNCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaCANCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FzdC9h c3RfZHJ2LmgNCj4+IGluZGV4IGM0MmRmYjg2ZTA0MGQuLmMyMDlkN2U0ZTQxOTQgMTAwNjQ0 DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaA0KPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmgNCj4+IEBAIC01NSwxOCArNTUsMzggQEANCj4+ IMKgICNkZWZpbmUgQVNUX1BDSV9PUFRJT05fTUVNX0FDQ0VTU19FTkFCTEXCoMKgwqAgQklU KDEpDQo+PiDCoCAjZGVmaW5lIEFTVF9QQ0lfT1BUSU9OX0lPX0FDQ0VTU19FTkFCTEXCoMKg wqDCoMKgwqDCoCBCSVQoMCkNCj4+ICsjZGVmaW5lIF9fQVNUX0NISVAoX19nZW4sIF9faW5k ZXgpwqDCoMKgICgoX19nZW4pIDw8IDE2IHwgKF9faW5kZXgpKQ0KPj4gKw0KPj4gwqAgZW51 bSBhc3RfY2hpcCB7DQo+PiAtwqDCoMKgIEFTVDIwMDAsDQo+PiAtwqDCoMKgIEFTVDIxMDAs DQo+PiAtwqDCoMKgIEFTVDExMDAsDQo+PiAtwqDCoMKgIEFTVDIyMDAsDQo+PiAtwqDCoMKg IEFTVDIxNTAsDQo+PiAtwqDCoMKgIEFTVDIzMDAsDQo+PiAtwqDCoMKgIEFTVDI0MDAsDQo+ PiAtwqDCoMKgIEFTVDI1MDAsDQo+PiAtwqDCoMKgIEFTVDI2MDAsDQo+PiArwqDCoMKgIC8q IDFzdCBnZW4gKi8NCj4+ICvCoMKgwqAgQVNUMTAwMCA9IF9fQVNUX0NISVAoMSwgMCksIC8v IHVudXNlZA0KPj4gK8KgwqDCoCBBU1QyMDAwID0gX19BU1RfQ0hJUCgxLCAxKSwNCj4+ICvC oMKgwqAgLyogMm5kIGdlbiAqLw0KPj4gK8KgwqDCoCBBU1QxMTAwID0gX19BU1RfQ0hJUCgy LCAwKSwNCj4+ICvCoMKgwqAgQVNUMjEwMCA9IF9fQVNUX0NISVAoMiwgMSksDQo+PiArwqDC oMKgIEFTVDIwNTAgPSBfX0FTVF9DSElQKDIsIDIpLCAvLyB1bnVzZWQNCj4+ICvCoMKgwqAg LyogM3JkIGdlbiAqLw0KPj4gK8KgwqDCoCBBU1QyMjAwID0gX19BU1RfQ0hJUCgzLCAwKSwN Cj4+ICvCoMKgwqAgQVNUMjE1MCA9IF9fQVNUX0NISVAoMywgMSksDQo+PiArwqDCoMKgIC8q IDR0aCBnZW4gKi8NCj4+ICvCoMKgwqAgQVNUMjMwMCA9IF9fQVNUX0NISVAoNCwgMCksDQo+ PiArwqDCoMKgIEFTVDEzMDAgPSBfX0FTVF9DSElQKDQsIDEpLCAvLyB1bnVzZWQNCj4+ICvC oMKgwqAgQVNUMTA1MCA9IF9fQVNUX0NISVAoNCwgMiksIC8vIHVudXNlZA0KPj4gK8KgwqDC oCAvKiA1dGggZ2VuICovDQo+PiArwqDCoMKgIEFTVDI0MDAgPSBfX0FTVF9DSElQKDUsIDAp LA0KPj4gK8KgwqDCoCBBU1QxNDAwID0gX19BU1RfQ0hJUCg1LCAxKSwgLy8gdW51c2VkDQo+ PiArwqDCoMKgIEFTVDEyNTAgPSBfX0FTVF9DSElQKDUsIDIpLCAvLyB1bnVzZWQNCj4+ICvC oMKgwqAgLyogNnRoIGdlbiAqLw0KPj4gK8KgwqDCoCBBU1QyNTAwID0gX19BU1RfQ0hJUCg2 LCAwKSwNCj4+ICvCoMKgwqAgQVNUMjUxMCA9IF9fQVNUX0NISVAoNiwgMSksIC8vIHVudXNl ZA0KPj4gK8KgwqDCoCBBU1QyNTIwID0gX19BU1RfQ0hJUCg2LCAyKSwgLy8gdW51c2VkDQo+ PiArwqDCoMKgIC8qIDd0aCBnZW4gKi8NCj4+ICvCoMKgwqAgQVNUMjYwMCA9IF9fQVNUX0NI SVAoNywgMCksDQo+PiArwqDCoMKgIEFTVDI2MjAgPSBfX0FTVF9DSElQKDcsIDEpLCAvLyB1 bnVzZWQNCj4+IMKgIH07DQo+PiArI2RlZmluZSBfX0FTVF9DSElQX0dFTihfX2NoaXApwqDC oMKgICgoKHVuc2lnbmVkIGxvbmcpKF9fY2hpcCkpID4+IDE2KQ0KPj4gKw0KPj4gwqAgZW51 bSBhc3RfdHhfY2hpcCB7DQo+PiDCoMKgwqDCoMKgIEFTVF9UWF9OT05FLA0KPj4gwqDCoMKg wqDCoCBBU1RfVFhfU0lMMTY0LA0KPj4gQEAgLTIyMCw2ICsyNDAsMjQgQEAgc3RydWN0IGFz dF9kZXZpY2UgKmFzdF9kZXZpY2VfY3JlYXRlKGNvbnN0IHN0cnVjdCANCj4+IGRybV9kcml2 ZXIgKmRydiwNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHN0cnVjdCBwY2lfZGV2ICpwZGV2LA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBmbGFncyk7DQo+PiArc3RhdGlj IGlubGluZSB1bnNpZ25lZCBsb25nIF9fYXN0X2dlbihzdHJ1Y3QgYXN0X2RldmljZSAqYXN0 KQ0KPj4gK3sNCj4+ICvCoMKgwqAgcmV0dXJuIF9fQVNUX0NISVBfR0VOKGFzdC0+Y2hpcCk7 DQo+PiArfQ0KPj4gKyNkZWZpbmUgQVNUX0dFTihfX2FzdCnCoMKgwqAgX19hc3RfZ2VuKF9f YXN0KQ0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBfX2FzdF9pc19nZW4oc3RydWN0 IGFzdF9kZXZpY2UgKmFzdCwgdW5zaWduZWQgbG9uZyANCj4+IGdlbikNCj4+ICt7DQo+PiAr wqDCoMKgIHJldHVybiBfX2FzdF9nZW4oYXN0KSA9PSBnZW47DQo+PiArfQ0KPiANCj4gQ2hh bmdlZCB0byBfX2FzdF9nZW5faXNfZXF1YWwoKSA/DQoNCk1ha2VzIHNlbnNlLg0KDQo+IA0K PiANCj4+ICsjZGVmaW5lIElTX0FTVF9HRU4xKF9fYXN0KcKgwqDCoCBfX2FzdF9pc19nZW4o X19hc3QsIDEpDQo+PiArI2RlZmluZSBJU19BU1RfR0VOMihfX2FzdCnCoMKgwqAgX19hc3Rf aXNfZ2VuKF9fYXN0LCAyKQ0KPj4gKyNkZWZpbmUgSVNfQVNUX0dFTjMoX19hc3QpwqDCoMKg IF9fYXN0X2lzX2dlbihfX2FzdCwgMykNCj4+ICsjZGVmaW5lIElTX0FTVF9HRU40KF9fYXN0 KcKgwqDCoCBfX2FzdF9pc19nZW4oX19hc3QsIDQpDQo+PiArI2RlZmluZSBJU19BU1RfR0VO NShfX2FzdCnCoMKgwqAgX19hc3RfaXNfZ2VuKF9fYXN0LCA1KQ0KPj4gKyNkZWZpbmUgSVNf QVNUX0dFTjYoX19hc3QpwqDCoMKgIF9fYXN0X2lzX2dlbihfX2FzdCwgNikNCj4+ICsjZGVm aW5lIElTX0FTVF9HRU43KF9fYXN0KcKgwqDCoCBfX2FzdF9pc19nZW4oX19hc3QsIDcpDQo+ PiArDQo+PiDCoCAjZGVmaW5lIEFTVF9JT19BUl9QT1JUX1dSSVRFwqDCoMKgwqDCoMKgwqAg KDB4NDApDQo+PiDCoCAjZGVmaW5lIEFTVF9JT19NSVNDX1BPUlRfV1JJVEXCoMKgwqDCoMKg wqDCoCAoMHg0MikNCj4+IMKgICNkZWZpbmUgQVNUX0lPX1ZHQV9FTkFCTEVfUE9SVMKgwqDC oMKgwqDCoMKgICgweDQzKQ0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3Qv YXN0X21haW4uYyANCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jDQo+PiBp bmRleCA2ZmY0YjgzN2U2NGQ3Li4zY2Q5NGE3NDE1MGJmIDEwMDY0NA0KPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YXN0L2FzdF9tYWluLmMNCj4+IEBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIHZvaWQgYXN0 X2RldGVjdF9jb25maWdfbW9kZShzdHJ1Y3QgDQo+PiBkcm1fZGV2aWNlICpkZXYsIHUzMiAq c2N1X3JldikNCj4+IMKgwqDCoMKgwqAganJlZ2QwID0gYXN0X2dldF9pbmRleF9yZWdfbWFz ayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4ZDAsIDB4ZmYpOw0KPj4gwqDCoMKgwqDCoCBq cmVnZDEgPSBhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwg MHhkMSwgMHhmZik7DQo+PiDCoMKgwqDCoMKgIGlmICghKGpyZWdkMCAmIDB4ODApIHx8ICEo anJlZ2QxICYgMHgxMCkpIHsNCj4+IC3CoMKgwqDCoMKgwqDCoCAvKiBQYXRjaCBBU1QyNTAw ICovDQo+PiArwqDCoMKgwqDCoMKgwqAgLyogUGF0Y2ggR0VONiAqLw0KPj4gwqDCoMKgwqDC oMKgwqDCoMKgIGlmICgoKHBkZXYtPnJldmlzaW9uICYgMHhGMCkgPT0gMHg0MCkNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICYmICgoanJlZ2QwICYgQVNUX1ZSQU1fSU5JVF9T VEFUVVNfTUFTSykgPT0gMCkpDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3Rf cGF0Y2hfYWhiXzI1MDAoYXN0KTsNCj4+IEBAIC0xOTcsOCArMTk3LDggQEAgc3RhdGljIGlu dCBhc3RfZGV0ZWN0X2NoaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgDQo+PiBib29sIG5l ZWRfcG9zdCwgdTMyIHNjdV9yZXYpDQo+PiDCoMKgwqDCoMKgIH0NCj4+IMKgwqDCoMKgwqAg LyogQ2hlY2sgaWYgd2Ugc3VwcG9ydCB3aWRlIHNjcmVlbiAqLw0KPj4gLcKgwqDCoCBzd2l0 Y2ggKGFzdC0+Y2hpcCkgew0KPj4gLcKgwqDCoCBjYXNlIEFTVDIwMDA6DQo+PiArwqDCoMKg IHN3aXRjaCAoQVNUX0dFTihhc3QpKSB7DQo+PiArwqDCoMKgIGNhc2UgMToNCj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBhc3QtPnN1cHBvcnRfd2lkZV9zY3JlZW4gPSBmYWxzZTsNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+IMKgwqDCoMKgwqAgZGVmYXVsdDoNCj4+IEBA IC0yMTgsNyArMjE4LDcgQEAgc3RhdGljIGludCBhc3RfZGV0ZWN0X2NoaXAoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgDQo+PiBib29sIG5lZWRfcG9zdCwgdTMyIHNjdV9yZXYpDQo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoYXN0LT5jaGlwID09IEFTVDI1MDAgJiYN Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2N1X3JldiA9PSAweDEw MCnCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBhc3QyNTEwICovDQo+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdC0+c3VwcG9ydF93aWRlX3NjcmVlbiA9IHRydWU7 DQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoYXN0LT5jaGlwID09IEFTVDI2MDAp wqDCoMKgwqDCoMKgwqAgLyogYXN0MjYwMCAqLw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaWYgKElTX0FTVF9HRU43KGFzdCkpDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGFzdC0+c3VwcG9ydF93aWRlX3NjcmVlbiA9IHRydWU7DQo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgfQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4gQEAgLTI0 MSw5ICsyNDEsOSBAQCBzdGF0aWMgaW50IGFzdF9kZXRlY3RfY2hpcChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCANCj4+IGJvb2wgbmVlZF9wb3N0LCB1MzIgc2N1X3JldikNCj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdC0+dHhfY2hpcF90eXBlcyA9IEFTVF9UWF9TSUwx NjRfQklUOw0KPj4gwqDCoMKgwqDCoCB9DQo+PiAtwqDCoMKgIGlmICgoYXN0LT5jaGlwID09 IEFTVDIzMDApIHx8IChhc3QtPmNoaXAgPT0gQVNUMjQwMCkgfHwgDQo+PiAoYXN0LT5jaGlw ID09IEFTVDI1MDApKSB7DQo+PiArwqDCoMKgIGlmIChJU19BU1RfR0VONChhc3QpIHx8IElT X0FTVF9HRU41KGFzdCkgfHwgSVNfQVNUX0dFTjYoYXN0KSkgew0KPj4gwqDCoMKgwqDCoMKg wqDCoMKgIC8qDQo+PiAtwqDCoMKgwqDCoMKgwqDCoCAqIE9uIEFTVDIzMDAgYW5kIDI0MDAs IGxvb2sgdGhlIGNvbmZpZ3VyYXRpb24gc2V0IGJ5IHRoZSBTb0MgaW4NCj4+ICvCoMKgwqDC oMKgwqDCoMKgICogT24gQVNUIEdFTjQrLCBsb29rIHRoZSBjb25maWd1cmF0aW9uIHNldCBi eSB0aGUgU29DIGluDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHRoZSBTT0Mgc2NyYXRj aCByZWdpc3RlciAjMSBiaXRzIDExOjggKGludGVyZXN0aW5nbHkgbWFya2VkDQo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoCAqIGFzICJyZXNlcnZlZCIgaW4gdGhlIHNwZWMpDQo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4gQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMgaW50 IGFzdF9kZXRlY3RfY2hpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCANCj4+IGJvb2wgbmVl ZF9wb3N0LCB1MzIgc2N1X3JldikNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNlIDB4MGM6 DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3QtPnR4X2NoaXBfdHlwZXMgPSBB U1RfVFhfRFA1MDFfQklUOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+IC3CoMKgwqAg fSBlbHNlIGlmIChhc3QtPmNoaXAgPT0gQVNUMjYwMCkgew0KPj4gK8KgwqDCoCB9IGVsc2Ug aWYgKElTX0FTVF9HRU43KGFzdCkpIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoYXN0 X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RDEsIA0KPj4g VFhfVFlQRV9NQVNLKSA9PQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQVNURFBf RFBNQ1VfVFgpIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdC0+dHhfY2hp cF90eXBlcyA9IEFTVF9UWF9BU1REUF9CSVQ7DQo+PiBAQCAtMjk3LDcgKzI5Nyw3IEBAIHN0 YXRpYyBpbnQgYXN0X2dldF9kcmFtX2luZm8oc3RydWN0IGRybV9kZXZpY2UgKmRldikNCj4+ IMKgwqDCoMKgwqAgY2FzZSBhc3RfdXNlX2R0Og0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIC8q DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIElmIHNvbWUgcHJvcGVydGllcyBhcmUgbWlz c2luZywgdXNlIHJlYXNvbmFibGUNCj4+IC3CoMKgwqDCoMKgwqDCoMKgICogZGVmYXVsdHMg Zm9yIEFTVDI0MDANCj4+ICvCoMKgwqDCoMKgwqDCoMKgICogZGVmYXVsdHMgZm9yIEdFTjUN Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg KG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiYXNwZWVkLG1jci1jb25maWd1cmF0aW9uIiwN Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZtY3Jf Y2ZnKSkNCj4+IEBAIC0zMjAsNyArMzIwLDcgQEAgc3RhdGljIGludCBhc3RfZ2V0X2RyYW1f aW5mbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQ0KPj4gwqDCoMKgwqDCoCBkZWZhdWx0Og0K Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGFzdC0+ZHJhbV9idXNfd2lkdGggPSAxNjsNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoCBhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzFHeDE2Ow0KPj4g LcKgwqDCoMKgwqDCoMKgIGlmIChhc3QtPmNoaXAgPT0gQVNUMjUwMCkNCj4+ICvCoMKgwqDC oMKgwqDCoCBpZiAoSVNfQVNUX0dFTjYoYXN0KSkNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGFzdC0+bWNsayA9IDgwMDsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlDQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3QtPm1jbGsgPSAzOTY7DQo+PiBAQCAt MzMyLDcgKzMzMiw3IEBAIHN0YXRpYyBpbnQgYXN0X2dldF9kcmFtX2luZm8oc3RydWN0IGRy bV9kZXZpY2UgKmRldikNCj4+IMKgwqDCoMKgwqAgZWxzZQ0KPj4gwqDCoMKgwqDCoMKgwqDC oMKgIGFzdC0+ZHJhbV9idXNfd2lkdGggPSAzMjsNCj4+IC3CoMKgwqAgaWYgKGFzdC0+Y2hp cCA9PSBBU1QyNTAwKSB7DQo+PiArwqDCoMKgIGlmIChJU19BU1RfR0VONihhc3QpKSB7DQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgc3dpdGNoIChtY3JfY2ZnICYgMHgwMykgew0KPj4gwqDC oMKgwqDCoMKgwqDCoMKgIGNhc2UgMDoNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGFzdC0+ZHJhbV90eXBlID0gQVNUX0RSQU1fMUd4MTY7DQo+PiBAQCAtMzQ4LDcgKzM0OCw3 IEBAIHN0YXRpYyBpbnQgYXN0X2dldF9kcmFtX2luZm8oc3RydWN0IGRybV9kZXZpY2UgKmRl dikNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdC0+ZHJhbV90eXBlID0gQVNU X0RSQU1fOEd4MTY7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4+ IMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+PiAtwqDCoMKgIH0gZWxzZSBpZiAoYXN0LT5jaGlw ID09IEFTVDIzMDAgfHwgYXN0LT5jaGlwID09IEFTVDI0MDApIHsNCj4+ICvCoMKgwqAgfSBl bHNlIGlmIChJU19BU1RfR0VONChhc3QpIHx8IElTX0FTVF9HRU41KGFzdCkpIHsNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoCBzd2l0Y2ggKG1jcl9jZmcgJiAweDAzKSB7DQo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgY2FzZSAwOg0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0 LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV81MTJNeDE2Ow0KPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYyANCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FzdC9h c3RfbW9kZS5jDQo+PiBpbmRleCBiM2M2NzBhZjZlZjJiLi5mNzExZDU5MmRhNTJiIDEwMDY0 NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW9kZS5jDQo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMNCj4+IEBAIC0zNDIsNyArMzQyLDcgQEAg c3RhdGljIHZvaWQgYXN0X3NldF9jcnRjX3JlZyhzdHJ1Y3QgYXN0X2RldmljZSAqYXN0LA0K Pj4gwqDCoMKgwqDCoCB1OCBqcmVnMDUgPSAwLCBqcmVnMDcgPSAwLCBqcmVnMDkgPSAwLCBq cmVnQUMgPSAwLCBqcmVnQUQgPSAwLCANCj4+IGpyZWdBRSA9IDA7DQo+PiDCoMKgwqDCoMKg IHUxNiB0ZW1wLCBwcmVjYWNoZSA9IDA7DQo+PiAtwqDCoMKgIGlmICgoYXN0LT5jaGlwID09 IEFTVDI1MDAgfHwgYXN0LT5jaGlwID09IEFTVDI2MDApICYmDQo+PiArwqDCoMKgIGlmICgo SVNfQVNUX0dFTjYoYXN0KSB8fCBJU19BU1RfR0VONyhhc3QpKSAmJg0KPj4gwqDCoMKgwqDC oMKgwqDCoMKgICh2Ymlvc19tb2RlLT5lbmhfdGFibGUtPmZsYWdzICYgQVNUMjUwMFByZUNh dGNoQ1JUKSkNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBwcmVjYWNoZSA9IDQwOw0KPj4gQEAg LTM4NCw3ICszODQsNyBAQCBzdGF0aWMgdm9pZCBhc3Rfc2V0X2NydGNfcmVnKHN0cnVjdCBh c3RfZGV2aWNlICphc3QsDQo+PiDCoMKgwqDCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21hc2so YXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEFELCAweDAwLCBqcmVnQUQpOw0KPj4gwqDCoMKg wqDCoCAvLyBXb3JrYXJvdW5kIGZvciBIU3luYyBUaW1lIG5vbiBvY3RhdmUgcGl4ZWxzICgx OTIweDEwODBANjBIeiANCj4+IEhTeW5jIDQ0IHBpeGVscyk7DQo+PiAtwqDCoMKgIGlmICgo YXN0LT5jaGlwID09IEFTVDI2MDApICYmIChtb2RlLT5jcnRjX3ZkaXNwbGF5ID09IDEwODAp KQ0KPj4gK8KgwqDCoCBpZiAoSVNfQVNUX0dFTjcoYXN0KSAmJiAobW9kZS0+Y3J0Y192ZGlz cGxheSA9PSAxMDgwKSkNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBhc3Rfc2V0X2luZGV4X3Jl Z19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhGQywgMHhGRCwgDQo+PiAweDAyKTsN Cj4+IMKgwqDCoMKgwqAgZWxzZQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9zZXRfaW5k ZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEZDLCAweEZELCANCj4+IDB4 MDApOw0KPj4gQEAgLTQ2Niw3ICs0NjYsNyBAQCBzdGF0aWMgdm9pZCBhc3Rfc2V0X2RjbGtf cmVnKHN0cnVjdCBhc3RfZGV2aWNlICphc3QsDQo+PiDCoCB7DQo+PiDCoMKgwqDCoMKgIGNv bnN0IHN0cnVjdCBhc3RfdmJpb3NfZGNsa19pbmZvICpjbGtfaW5mbzsNCj4+IC3CoMKgwqAg aWYgKChhc3QtPmNoaXAgPT0gQVNUMjUwMCkgfHwgKGFzdC0+Y2hpcCA9PSBBU1QyNjAwKSkN Cj4+ICvCoMKgwqAgaWYgKElTX0FTVF9HRU42KGFzdCkgfHwgSVNfQVNUX0dFTjcoYXN0KSkN Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBjbGtfaW5mbyA9IA0KPj4gJmRjbGtfdGFibGVfYXN0 MjUwMFt2Ymlvc19tb2RlLT5lbmhfdGFibGUtPmRjbGtfaW5kZXhdOw0KPj4gwqDCoMKgwqDC oCBlbHNlDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgY2xrX2luZm8gPSAmZGNsa190YWJsZVt2 Ymlvc19tb2RlLT5lbmhfdGFibGUtPmRjbGtfaW5kZXhdOw0KPj4gQEAgLTUxMCwxNyArNTEw LDEzIEBAIHN0YXRpYyB2b2lkIGFzdF9zZXRfY29sb3JfcmVnKHN0cnVjdCBhc3RfZGV2aWNl IA0KPj4gKmFzdCwNCj4+IMKgIHN0YXRpYyB2b2lkIGFzdF9zZXRfY3J0dGhkX3JlZyhzdHJ1 Y3QgYXN0X2RldmljZSAqYXN0KQ0KPj4gwqAgew0KPj4gwqDCoMKgwqDCoCAvKiBTZXQgVGhy ZXNob2xkICovDQo+PiAtwqDCoMKgIGlmIChhc3QtPmNoaXAgPT0gQVNUMjYwMCkgew0KPj4g K8KgwqDCoCBpZiAoSVNfQVNUX0dFTjcoYXN0KSkgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKg IGFzdF9zZXRfaW5kZXhfcmVnKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhhNywgMHhlMCk7 DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X3NldF9pbmRleF9yZWcoYXN0LCBBU1RfSU9f Q1JUQ19QT1JULCAweGE2LCAweGEwKTsNCj4+IC3CoMKgwqAgfSBlbHNlIGlmIChhc3QtPmNo aXAgPT0gQVNUMjMwMCB8fCBhc3QtPmNoaXAgPT0gQVNUMjQwMCB8fA0KPj4gLcKgwqDCoMKg wqDCoMKgIGFzdC0+Y2hpcCA9PSBBU1QyNTAwKSB7DQo+PiArwqDCoMKgIH0gZWxzZSBpZiAo SVNfQVNUX0dFTjYoYXN0KSB8fCBJU19BU1RfR0VONShhc3QpIHx8IA0KPj4gSVNfQVNUX0dF TjQoYXN0KSkgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9zZXRfaW5kZXhfcmVnKGFz dCwgQVNUX0lPX0NSVENfUE9SVCwgMHhhNywgMHg3OCk7DQo+PiDCoMKgwqDCoMKgwqDCoMKg wqAgYXN0X3NldF9pbmRleF9yZWcoYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweGE2LCAweDYw KTsNCj4+IC3CoMKgwqAgfSBlbHNlIGlmIChhc3QtPmNoaXAgPT0gQVNUMjEwMCB8fA0KPj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdC0+Y2hpcCA9PSBBU1QxMTAwIHx8DQo+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqAgYXN0LT5jaGlwID09IEFTVDIyMDAgfHwNCj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoCBhc3QtPmNoaXAgPT0gQVNUMjE1MCkgew0KPj4gK8KgwqDCoCB9IGVs c2UgaWYgKElTX0FTVF9HRU4zKGFzdCkgfHwgSVNfQVNUX0dFTjIoYXN0KSkgew0KPj4gwqDC oMKgwqDCoMKgwqDCoMKgIGFzdF9zZXRfaW5kZXhfcmVnKGFzdCwgQVNUX0lPX0NSVENfUE9S VCwgMHhhNywgMHgzZik7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X3NldF9pbmRleF9y ZWcoYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweGE2LCAweDJmKTsNCj4+IMKgwqDCoMKgwqAg fSBlbHNlIHsNCj4+IEBAIC0xMDgyLDkgKzEwNzgsMTAgQEAgYXN0X2NydGNfaGVscGVyX21v ZGVfdmFsaWQoc3RydWN0IGRybV9jcnRjIA0KPj4gKmNydGMsIGNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKChtb2RlLT5oZGlzcGxh eSA9PSAxMTUyKSAmJiAobW9kZS0+dmRpc3BsYXkgPT0gODY0KSkNCj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiBNT0RFX09LOw0KPj4gLcKgwqDCoMKgwqDCoMKgIGlm ICgoYXN0LT5jaGlwID09IEFTVDIxMDApIHx8IChhc3QtPmNoaXAgPT0gQVNUMjIwMCkgfHwN Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChhc3QtPmNoaXAgPT0gQVNUMjMwMCkgfHwg KGFzdC0+Y2hpcCA9PSBBU1QyNDAwKSB8fA0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg KGFzdC0+Y2hpcCA9PSBBU1QyNTAwKSB8fCAoYXN0LT5jaGlwID09IEFTVDI2MDApKSB7DQo+ PiArwqDCoMKgwqDCoMKgwqAgaWYgKChhc3QtPmNoaXAgPT0gQVNUMjEwMCkgfHwgLy8gR0VO MiwgYnV0IG5vdCBBU1QxMTAwICg/KQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGFz dC0+Y2hpcCA9PSBBU1QyMjAwKSB8fCAvLyBHRU4zLCBidXQgbm90IEFTVDIxNTAgKD8pDQo+ IA0KPiBJZiBjaGlwcyBmcm9tIHRoZSBzYW1lIGdlbmVyYXRpb24gaXMgbm90IGNvbXBhdGli bGUsIHRoZW4gdGhpcyBhY3R1YWxseSANCj4gaW50cm9kdWNlIGNvbmZ1c2lvbi4NCj4gDQo+ IEl0J3Mgbm90IHlvdXIgcGF0Y2ggaXMgYmFkLCBpdCBpcyB0aGUgbmFtaW5nIGFuZC9vciB0 aGUgaGFyZHdhcmUgaXMgYmFkLg0KPiANCj4gT24gc3VjaCBhIHNpdHVhdGlvbiwgdGhlIHBh dGNoIGlzIG5vdCBnb29kIGVub3VnaCB0byBzdXBwcmVzcyBwcm9ibGVtcyANCj4gaW5jdXJy ZWQgYnkgdGhlIGhhcmR3YXJlIHZlcnNpb25zLg0KPiANCj4gSXQgaXMgbm90IGNsZWFuIGFu ZCBJdCBzdGlsbCBhIHRhbmdsZWQgaW1wbGVtZW50LiBCdXQgSSdtIGZpbmUgaWYgeW91IA0K PiB3YW50IHRvIHNlZSB0aGUgbGltaXRhdGlvbi4NCg0KVGhlIGhpc3RvcnkgYW5kIGZlYXR1 cmUgc2V0IG9mIHRoZSBlYXJsaWVyIGNoaXBzIGFwcGVhcnMgY29udm9sdXRlZC4gDQpUaGUg Y2hpcCBnZW5lcmF0aW9uIGlzIG1lYW50IGZvciB0aGUgY2FzZXMgd2hlcmUgYWxsIGNoaXBz IGJlaGF2ZSB0aGUgDQpzYW1lLiBJJ20gY29uc2lkZXJpbmcgdG8gY3JlYXRlIGEgcGF0Y2gg dGhhdCByZW9yZ2FuaXplcyB0aGVzZSBicmFuY2hlcyANCnRvIGJlIG1vcmUgcmVhZGFibGUu IEJ1dCBmb3Igbm93LCBpdCdzIGp1c3QgYWJvdXQgbWFraW5nIHRoZSBjdXJyZW50IA0KY29k ZSBtb3JlIHVuZGVyc3RhbmRhYmxlLg0KDQpCZXN0IHJlZ2FyZHMNClRob21hcw0KDQo+IA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSVNfQVNUX0dFTjQoYXN0KSB8fCBJU19BU1Rf R0VONShhc3QpIHx8DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJU19BU1RfR0VONihh c3QpIHx8IElTX0FTVF9HRU43KGFzdCkpIHsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmICgobW9kZS0+aGRpc3BsYXkgPT0gMTkyMCkgJiYgKG1vZGUtPnZkaXNwbGF5ID09 IDEwODApKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4g TU9ERV9PSzsNCj4+IEBAIC0xODAwLDEyICsxNzk3LDEyIEBAIGludCBhc3RfbW9kZV9jb25m aWdfaW5pdChzdHJ1Y3QgYXN0X2RldmljZSAqYXN0KQ0KPj4gwqDCoMKgwqDCoCBkZXYtPm1v ZGVfY29uZmlnLm1pbl9oZWlnaHQgPSAwOw0KPj4gwqDCoMKgwqDCoCBkZXYtPm1vZGVfY29u ZmlnLnByZWZlcnJlZF9kZXB0aCA9IDI0Ow0KPj4gLcKgwqDCoCBpZiAoYXN0LT5jaGlwID09 IEFTVDIxMDAgfHwNCj4+IC3CoMKgwqDCoMKgwqDCoCBhc3QtPmNoaXAgPT0gQVNUMjIwMCB8 fA0KPj4gLcKgwqDCoMKgwqDCoMKgIGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8DQo+PiAtwqDC oMKgwqDCoMKgwqAgYXN0LT5jaGlwID09IEFTVDI0MDAgfHwNCj4+IC3CoMKgwqDCoMKgwqDC oCBhc3QtPmNoaXAgPT0gQVNUMjUwMCB8fA0KPj4gLcKgwqDCoMKgwqDCoMKgIGFzdC0+Y2hp cCA9PSBBU1QyNjAwKSB7DQo+PiArwqDCoMKgIGlmIChhc3QtPmNoaXAgPT0gQVNUMjEwMCB8 fCAvLyBHRU4yLCBidXQgbm90IEFTVDExMDAgKD8pDQo+PiArwqDCoMKgwqDCoMKgwqAgYXN0 LT5jaGlwID09IEFTVDIyMDAgfHwgLy8gR0VOMywgYnV0IG5vdCBBU1QyMTUwICg/KQ0KPj4g K8KgwqDCoMKgwqDCoMKgIElTX0FTVF9HRU43KGFzdCkgfHwNCj4+ICvCoMKgwqDCoMKgwqDC oCBJU19BU1RfR0VONihhc3QpIHx8DQo+PiArwqDCoMKgwqDCoMKgwqAgSVNfQVNUX0dFTjUo YXN0KSB8fA0KPj4gK8KgwqDCoMKgwqDCoMKgIElTX0FTVF9HRU40KGFzdCkpIHsNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoCBkZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aCA9IDE5MjA7DQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2LT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0ID0gMjA0 ODsNCj4+IMKgwqDCoMKgwqAgfSBlbHNlIHsNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYXN0L2FzdF9wb3N0LmMgDQo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bv c3QuYw0KPj4gaW5kZXggYjc2NWVlYjU1ZTVmMS4uMTNlMTUxNzNmMmM1YiAxMDA2NDQNCj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYw0KPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jDQo+PiBAQCAtNTEsNyArNTEsNyBAQCBhc3Rfc2V0 X2RlZl9leHRfcmVnKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpDQo+PiDCoMKgwqDCoMKgIGZv ciAoaSA9IDB4ODE7IGkgPD0gMHg5ZjsgaSsrKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGFz dF9zZXRfaW5kZXhfcmVnKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgaSwgMHgwMCk7DQo+PiAt wqDCoMKgIGlmIChhc3QtPmNoaXAgPT0gQVNUMjMwMCB8fCBhc3QtPmNoaXAgPT0gQVNUMjQw MCB8fCBhc3QtPmNoaXAgPT0gDQo+PiBBU1QyNTAwKQ0KPj4gK8KgwqDCoCBpZiAoSVNfQVNU X0dFTjQoYXN0KSB8fCBJU19BU1RfR0VONShhc3QpIHx8IElTX0FTVF9HRU42KGFzdCkpDQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgZXh0X3JlZ19pbmZvID0gZXh0cmVnaW5mb19hc3QyMzAw Ow0KPj4gwqDCoMKgwqDCoCBlbHNlDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZXh0X3JlZ19p bmZvID0gZXh0cmVnaW5mbzsNCj4+IEBAIC03Miw4ICs3Miw3IEBAIGFzdF9zZXRfZGVmX2V4 dF9yZWcoc3RydWN0IGRybV9kZXZpY2UgKmRldikNCj4+IMKgwqDCoMKgwqAgLyogRW5hYmxl IFJBTURBQyBmb3IgQTEgKi8NCj4+IMKgwqDCoMKgwqAgcmVnID0gMHgwNDsNCj4+IC3CoMKg wqAgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAwIHx8 DQo+PiAtwqDCoMKgwqDCoMKgwqAgYXN0LT5jaGlwID09IEFTVDI1MDApDQo+PiArwqDCoMKg IGlmIChJU19BU1RfR0VONChhc3QpIHx8IElTX0FTVF9HRU41KGFzdCkgfHwgSVNfQVNUX0dF TjYoYXN0KSkNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZWcgfD0gMHgyMDsNCj4+IMKgwqDC oMKgwqAgYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4 YjYsIDB4ZmYsIHJlZyk7DQo+PiDCoCB9DQo+PiBAQCAtMjQ5LDcgKzI0OCw3IEBAIHN0YXRp YyB2b2lkIGFzdF9pbml0X2RyYW1fcmVnKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpDQo+PiDC oMKgwqDCoMKgIGogPSBhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENf UE9SVCwgMHhkMCwgMHhmZik7DQo+PiDCoMKgwqDCoMKgIGlmICgoaiAmIDB4ODApID09IDAp IHsgLyogVkdBIG9ubHkgKi8NCj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAoYXN0LT5jaGlwID09 IEFTVDIwMDApIHsNCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoSVNfQVNUX0dFTjEoYXN0KSkg ew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJhbV9yZWdfaW5mbyA9IGFzdDIw MDBfZHJhbV90YWJsZV9kYXRhOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0 X3dyaXRlMzIoYXN0LCAweGYwMDQsIDB4MWU2ZTAwMDApOw0KPj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgYXN0X3dyaXRlMzIoYXN0LCAweGYwMDAsIDB4MSk7DQo+PiBAQCAtMjU4 LDcgKzI1Nyw3IEBAIHN0YXRpYyB2b2lkIGFzdF9pbml0X2RyYW1fcmVnKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkbyB7DQo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDsNCj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIH0gd2hpbGUgKGFzdF9yZWFkMzIoYXN0LCAweDEwMTAwKSAhPSAweGE4 KTsNCj4+IC3CoMKgwqDCoMKgwqDCoCB9IGVsc2Ugey8qIEFTVDIxMDAvMTEwMCAqLw0KPj4g K8KgwqDCoMKgwqDCoMKgIH0gZWxzZSB7IC8qIEdFTjIvR0VOMyAqLw0KPj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMTAwIHx8IGFzdC0+Y2hp cCA9PSBBU1QyMjAwKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk cmFtX3JlZ19pbmZvID0gYXN0MjEwMF9kcmFtX3RhYmxlX2RhdGE7DQo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBlbHNlDQo+PiBAQCAtMjgxLDcgKzI4MCw3IEBAIHN0YXRpYyB2 b2lkIGFzdF9pbml0X2RyYW1fcmVnKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpDQo+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZHJhbV9yZWdfaW5mby0+aW5kZXggPT0gMHhm ZjAwKSB7LyogZGVsYXkgZm4gKi8NCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZm9yIChpID0gMDsgaSA8IDE1OyBpKyspDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdWRlbGF5KGRyYW1fcmVnX2luZm8tPmRhdGEpOw0K Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIGlmIChkcmFtX3JlZ19pbmZvLT5p bmRleCA9PSAweDQgJiYgYXN0LT5jaGlwICE9IA0KPj4gQVNUMjAwMCkgew0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIGlmIChkcmFtX3JlZ19pbmZvLT5pbmRleCA9PSAw eDQgJiYgDQo+PiAhSVNfQVNUX0dFTjEoYXN0KSkgew0KPj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBkYXRhID0gZHJhbV9yZWdfaW5mby0+ZGF0YTsNCj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGFzdC0+ZHJhbV90eXBlID09IEFT VF9EUkFNXzFHeDE2KQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGRhdGEgPSAweDAwMDAwZDg5Ow0KPj4gQEAgLTMwNywxNSArMzA2LDEzIEBAIHN0 YXRpYyB2b2lkIGFzdF9pbml0X2RyYW1fcmVnKHN0cnVjdCBkcm1fZGV2aWNlIA0KPj4gKmRl dikNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2JyZGxsaV9hc3Qy MTUwKGFzdCwgMzIpOyAvKiAzMiBiaXRzICovDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0K Pj4gLcKgwqDCoMKgwqDCoMKgIHN3aXRjaCAoYXN0LT5jaGlwKSB7DQo+PiAtwqDCoMKgwqDC oMKgwqAgY2FzZSBBU1QyMDAwOg0KPj4gK8KgwqDCoMKgwqDCoMKgIHN3aXRjaCAoQVNUX0dF Tihhc3QpKSB7DQo+PiArwqDCoMKgwqDCoMKgwqAgY2FzZSAxOg0KPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdGVtcCA9IGFzdF9yZWFkMzIoYXN0LCAweDEwMTQwKTsNCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF93cml0ZTMyKGFzdCwgMHgxMDE0MCwgdGVt cCB8IDB4NDApOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+PiAt wqDCoMKgwqDCoMKgwqAgY2FzZSBBU1QxMTAwOg0KPj4gLcKgwqDCoMKgwqDCoMKgIGNhc2Ug QVNUMjEwMDoNCj4+IC3CoMKgwqDCoMKgwqDCoCBjYXNlIEFTVDIyMDA6DQo+PiAtwqDCoMKg wqDCoMKgwqAgY2FzZSBBU1QyMTUwOg0KPj4gK8KgwqDCoMKgwqDCoMKgIGNhc2UgMjoNCj4+ ICvCoMKgwqDCoMKgwqDCoCBjYXNlIDM6DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB0ZW1wID0gYXN0X3JlYWQzMihhc3QsIDB4MTIwMGMpOw0KPj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgYXN0X3dyaXRlMzIoYXN0LCAweDEyMDBjLCB0ZW1wICYgMHhmZmZmZmZm ZCk7DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0ZW1wID0gYXN0X3JlYWQzMihh c3QsIDB4MTIwNDApOw0KPj4gQEAgLTMzOCwxMyArMzM1LDEzIEBAIHZvaWQgYXN0X3Bvc3Rf Z3B1KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpDQo+PiDCoMKgwqDCoMKgIGFzdF9zZXRfZGVm X2V4dF9yZWcoZGV2KTsNCj4+IC3CoMKgwqAgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyNjAwKSB7 DQo+PiArwqDCoMKgIGlmIChJU19BU1RfR0VONyhhc3QpKSB7DQo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKGFzdC0+dHhfY2hpcF90eXBlcyAmIEFTVF9UWF9BU1REUF9CSVQpDQo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfZHBfbGF1bmNoKGRldik7DQo+PiDCoMKg wqDCoMKgIH0gZWxzZSBpZiAoYXN0LT5jb25maWdfbW9kZSA9PSBhc3RfdXNlX3AyYSkgew0K Pj4gLcKgwqDCoMKgwqDCoMKgIGlmIChhc3QtPmNoaXAgPT0gQVNUMjUwMCkNCj4+ICvCoMKg wqDCoMKgwqDCoCBpZiAoSVNfQVNUX0dFTjYoYXN0KSkNCj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGFzdF9wb3N0X2NoaXBfMjUwMChkZXYpOw0KPj4gLcKgwqDCoMKgwqDCoMKg IGVsc2UgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAw KQ0KPj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKElTX0FTVF9HRU41KGFzdCkgfHwgSVNf QVNUX0dFTjQoYXN0KSkNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9wb3N0 X2NoaXBfMjMwMChkZXYpOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2UNCj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9pbml0X2RyYW1fcmVnKGRldik7DQo+IA0KDQot LSANClRob21hcyBaaW1tZXJtYW5uDQpHcmFwaGljcyBEcml2ZXIgRGV2ZWxvcGVyDQpTVVNF IFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdtYkgNCkZyYW5rZW5zdHJhc3NlIDE0Niwg OTA0NjEgTnVlcm5iZXJnLCBHZXJtYW55DQpHRjogSXZvIFRvdGV2LCBBbmRyZXcgTXllcnMs IEFuZHJldyBNY0RvbmFsZCwgQm91ZGllbiBNb2VybWFuDQpIUkIgMzY4MDkgKEFHIE51ZXJu YmVyZykNCg== --------------ov1e86tgXTIZCjupCgzYng5N-- --------------SdCNwUsb4q6YJM2Ei9sXKKA4 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+AFAmSQED0FAwAAAAAACgkQlh/E3EQov+DK /g/+KzkVPFyXXxCIISoetAvbq4B8hlLjr3uZIXjuQPH/335n06LF5flqRSpccaCL5aurytrYyQpL XqtvrsOwff8/FJqHIU9QKvVaOxEcho7EFe+uls1g3ouBPQY9vNMcMEtphHBsUsLniw1Bj81m7p+t Zww8mETFez12ovGsI4BVc9jswkbGk02q6Frh6inPaCMjlod4eMo7ySP5jrUl2HCWBo/nisbSBrqD bX4ruIFIgZ2J+iXmzLKU7Aab3TbNzQYbBPRs9SrsIj6IUIu/NAO/H8YtittrGjFuyudX3/HHw+uT 8MVCupzbAibMDaBarJ0hJ2+6QfWgaaAo2RQQkUyPzB1850OIOGRftwnQwDoOwonUO6IIEVVpvyeF oUk3H2hEJRvCCGP+zjPdvMrC4CEe0VeUkmoVqwywqMqBryeh+0Xad3pURYobRNDEfGFbkqr6GD+3 HZ0Kgskx0p1j3be1ivbJcVMLTMmD0abfBi9OlDzKRCGsHhKJ2/7woP3ZR6Di8SGJ5XN+NP2B4PKJ C0F5+ETvPJXRBoWN5SEL9vz9XIDfe9EXPE4t7ZsnkQgXLl/NPnKyH3XJu7AxlDc8yexhdSgYk5LO Oy6tEgQRrM/aOtCSbXtNeYpB72swm9K6d9e0bVYZn0YmtZec2C0Ij3sgq8sGkIMq01LRglCF8jDA Q4Q= =qbnR -----END PGP SIGNATURE----- --------------SdCNwUsb4q6YJM2Ei9sXKKA4--