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 440B7C43334 for ; Thu, 14 Jul 2022 08:46:33 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9309BA3875; Thu, 14 Jul 2022 08:46:32 +0000 (UTC) Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id A6A0BA3879 for ; Thu, 14 Jul 2022 08:46:30 +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 3BC5134B03; Thu, 14 Jul 2022 08:46:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1657788387; 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=onlY0+3nuLXulnjKG5muS2HJ9HYjr5iOjhdAhftilak=; b=ucRJnRV3lpHqJ/NQTdSTCt5K0eOnAdht8ODUwuM3ksAGQRP4yI/Bnx/JCwdBIK7wkz0ctl BDuOsXXAtMtV+NBKH/82wMIRMMuKzTX4frWgn/GlvHKZEYkFXdpolGpLDJEabjmVnDkUZu Ydyjc/UV5CQdIYh+cd1kqR/jOriFW60= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1657788387; 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=onlY0+3nuLXulnjKG5muS2HJ9HYjr5iOjhdAhftilak=; b=VTSYikPX6GNu8tfgv4kSgXH6s38NGsMG1lXWXRNHyoyuhac7UsAob0nBI2uemnyQtWn99L wv1JoPBjv7hqTZCQ== 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 0F84713A61; Thu, 14 Jul 2022 08:46:27 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id naHSAuPXz2LRFwAAMHmgww (envelope-from ); Thu, 14 Jul 2022 08:46:27 +0000 Message-ID: <8aefb172-62ec-72d1-7196-7cfe49b70d63@suse.de> Date: Thu, 14 Jul 2022 10:46:26 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH] Revert "drm/amdgpu: add drm buddy support to amdgpu" Content-Language: en-US To: Arunpravin Paneer Selvam , dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org References: <20220708102124.493372-1-Arunpravin.PaneerSelvam@amd.com> From: Thomas Zimmermann In-Reply-To: <20220708102124.493372-1-Arunpravin.PaneerSelvam@amd.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------xLllenh25Vmz4USZ1x2jo07B" X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alexander.deucher@amd.com, christian.koenig@amd.com Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------xLllenh25Vmz4USZ1x2jo07B Content-Type: multipart/mixed; boundary="------------Rb2XrQUvIry4EYmn59lzFFL6"; protected-headers="v1" From: Thomas Zimmermann To: Arunpravin Paneer Selvam , dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Cc: alexander.deucher@amd.com, christian.koenig@amd.com Message-ID: <8aefb172-62ec-72d1-7196-7cfe49b70d63@suse.de> Subject: Re: [PATCH] Revert "drm/amdgpu: add drm buddy support to amdgpu" References: <20220708102124.493372-1-Arunpravin.PaneerSelvam@amd.com> In-Reply-To: <20220708102124.493372-1-Arunpravin.PaneerSelvam@amd.com> --------------Rb2XrQUvIry4EYmn59lzFFL6 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMDguMDcuMjIgdW0gMTI6MjEgc2NocmllYiBBcnVucHJhdmluIFBhbmVlciBT ZWx2YW06DQo+IFRoaXMgcmV2ZXJ0cyB0aGUgZm9sbG93aW5nIGNvbW1pdHM6DQo+IGNvbW1p dCA3MDhkMTlkOWYzNjIgKCJkcm0vYW1kZ3B1OiBtb3ZlIGludGVybmFsIHZyYW1fbWdyIGZ1 bmN0aW9uIGludG8gdGhlIEMgZmlsZSIpDQo+IGNvbW1pdCA1ZTNmMWU3NzI5ZWMgKCJkcm0v YW1kZ3B1OiBmaXggc3RhcnQgY2FsY3VsYXRpb24gaW4gYW1kZ3B1X3ZyYW1fbWdyX25ldyIp DQo+IGNvbW1pdCBjOWNhZDkzN2MwYzUgKCJkcm0vYW1kZ3B1OiBhZGQgZHJtIGJ1ZGR5IHN1 cHBvcnQgdG8gYW1kZ3B1IikNCg0KRG9lcyB0aGUgcmV2ZXJ0IG5lZWQgdG8gYmUgY2hlcnJ5 LXBpY2tlZCBpbnRvIGRybS1taXNjLW5leHQtZml4ZXM/DQoNCkJlc3QgcmVnYXJkcw0KVGhv bWFzDQoNCj4gDQo+IFtXSFldDQo+IEZldyB1c2VycyByZXBvcnRlZCBnYXJiYWdlZCBncmFw aGljcyBhcyBzb29uIGFzIHggc3RhcnRzLA0KPiByZXZlcnRpbmcgdW50aWwgdGhpcyBjYW4g YmUgcmVzb2x2ZWQuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBBcnVucHJhdmluIFBhbmVlciBT ZWx2YW0gPEFydW5wcmF2aW4uUGFuZWVyU2VsdmFtQGFtZC5jb20+DQo+IC0tLQ0KPiAgIGRy aXZlcnMvZ3B1L2RybS9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAtDQo+ ICAgLi4uL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmVzX2N1cnNvci5oICAgIHwgIDk3 ICstLS0tDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5oICAg ICAgIHwgIDEwICstDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zy YW1fbWdyLmMgIHwgMzk0ICsrKysrKystLS0tLS0tLS0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFtX21nci5oICB8ICA2MiAtLS0NCj4gICA1IGZpbGVz IGNoYW5nZWQsIDE3NiBpbnNlcnRpb25zKCspLCAzODggZGVsZXRpb25zKC0pDQo+ICAgZGVs ZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFt X21nci5oDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9k cml2ZXJzL2dwdS9kcm0vS2NvbmZpZw0KPiBpbmRleCA2YzIyNTZlODQ3NGIuLmQ0MzhkNWZm OGI0MCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcNCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL0tjb25maWcNCj4gQEAgLTI3Miw3ICsyNzIsNiBAQCBjb25maWcg RFJNX0FNREdQVQ0KPiAgIAlzZWxlY3QgSFdNT04NCj4gICAJc2VsZWN0IEJBQ0tMSUdIVF9D TEFTU19ERVZJQ0UNCj4gICAJc2VsZWN0IElOVEVSVkFMX1RSRUUNCj4gLQlzZWxlY3QgRFJN X0JVRERZDQo+ICAgCWhlbHANCj4gICAJICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhh dmUgYSByZWNlbnQgQU1EIFJhZGVvbiBncmFwaGljcyBjYXJkLg0KPiAgIA0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc19jdXJzb3IuaCBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNfY3Vyc29yLmgNCj4gaW5k ZXggNjU0NjU1MmU1OTZjLi5hY2ZhMjA3Y2Y5NzAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yZXNfY3Vyc29yLmgNCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jlc19jdXJzb3IuaA0KPiBAQCAtMzAsMTUg KzMwLDEyIEBADQo+ICAgI2luY2x1ZGUgPGRybS90dG0vdHRtX3Jlc291cmNlLmg+DQo+ICAg I2luY2x1ZGUgPGRybS90dG0vdHRtX3JhbmdlX21hbmFnZXIuaD4NCj4gICANCj4gLSNpbmNs dWRlICJhbWRncHVfdnJhbV9tZ3IuaCINCj4gLQ0KPiAgIC8qIHN0YXRlIGJhY2sgZm9yIHdh bGtpbmcgb3ZlciB2cmFtX21nciBhbmQgZ3R0X21nciBhbGxvY2F0aW9ucyAqLw0KPiAgIHN0 cnVjdCBhbWRncHVfcmVzX2N1cnNvciB7DQo+ICAgCXVpbnQ2NF90CQlzdGFydDsNCj4gICAJ dWludDY0X3QJCXNpemU7DQo+ICAgCXVpbnQ2NF90CQlyZW1haW5pbmc7DQo+IC0Jdm9pZAkJ CSpub2RlOw0KPiAtCXVpbnQzMl90CQltZW1fdHlwZTsNCj4gKwlzdHJ1Y3QgZHJtX21tX25v ZGUJKm5vZGU7DQo+ICAgfTsNCj4gICANCj4gICAvKioNCj4gQEAgLTU1LDYzICs1MiwyNyBA QCBzdGF0aWMgaW5saW5lIHZvaWQgYW1kZ3B1X3Jlc19maXJzdChzdHJ1Y3QgdHRtX3Jlc291 cmNlICpyZXMsDQo+ICAgCQkJCSAgICB1aW50NjRfdCBzdGFydCwgdWludDY0X3Qgc2l6ZSwN Cj4gICAJCQkJICAgIHN0cnVjdCBhbWRncHVfcmVzX2N1cnNvciAqY3VyKQ0KPiAgIHsNCj4g LQlzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpibG9jazsNCj4gLQlzdHJ1Y3QgbGlzdF9oZWFk ICpoZWFkLCAqbmV4dDsNCj4gICAJc3RydWN0IGRybV9tbV9ub2RlICpub2RlOw0KPiAgIA0K PiAtCWlmICghcmVzKQ0KPiAtCQlnb3RvIGZhbGxiYWNrOw0KPiAtDQo+IC0JQlVHX09OKHN0 YXJ0ICsgc2l6ZSA+IHJlcy0+bnVtX3BhZ2VzIDw8IFBBR0VfU0hJRlQpOw0KPiAtDQo+IC0J Y3VyLT5tZW1fdHlwZSA9IHJlcy0+bWVtX3R5cGU7DQo+IC0NCj4gLQlzd2l0Y2ggKGN1ci0+ bWVtX3R5cGUpIHsNCj4gLQljYXNlIFRUTV9QTF9WUkFNOg0KPiAtCQloZWFkID0gJnRvX2Ft ZGdwdV92cmFtX21ncl9yZXNvdXJjZShyZXMpLT5ibG9ja3M7DQo+IC0NCj4gLQkJYmxvY2sg PSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoaGVhZCwNCj4gLQkJCQkJCSBzdHJ1Y3QgZHJt X2J1ZGR5X2Jsb2NrLA0KPiAtCQkJCQkJIGxpbmspOw0KPiAtCQlpZiAoIWJsb2NrKQ0KPiAt CQkJZ290byBmYWxsYmFjazsNCj4gLQ0KPiAtCQl3aGlsZSAoc3RhcnQgPj0gYW1kZ3B1X3Zy YW1fbWdyX2Jsb2NrX3NpemUoYmxvY2spKSB7DQo+IC0JCQlzdGFydCAtPSBhbWRncHVfdnJh bV9tZ3JfYmxvY2tfc2l6ZShibG9jayk7DQo+IC0NCj4gLQkJCW5leHQgPSBibG9jay0+bGlu ay5uZXh0Ow0KPiAtCQkJaWYgKG5leHQgIT0gaGVhZCkNCj4gLQkJCQlibG9jayA9IGxpc3Rf ZW50cnkobmV4dCwgc3RydWN0IGRybV9idWRkeV9ibG9jaywgbGluayk7DQo+IC0JCX0NCj4g LQ0KPiAtCQljdXItPnN0YXJ0ID0gYW1kZ3B1X3ZyYW1fbWdyX2Jsb2NrX3N0YXJ0KGJsb2Nr KSArIHN0YXJ0Ow0KPiAtCQljdXItPnNpemUgPSBtaW4oYW1kZ3B1X3ZyYW1fbWdyX2Jsb2Nr X3NpemUoYmxvY2spIC0gc3RhcnQsIHNpemUpOw0KPiAtCQljdXItPnJlbWFpbmluZyA9IHNp emU7DQo+IC0JCWN1ci0+bm9kZSA9IGJsb2NrOw0KPiAtCQlicmVhazsNCj4gLQljYXNlIFRU TV9QTF9UVDoNCj4gLQkJbm9kZSA9IHRvX3R0bV9yYW5nZV9tZ3Jfbm9kZShyZXMpLT5tbV9u b2RlczsNCj4gLQkJd2hpbGUgKHN0YXJ0ID49IG5vZGUtPnNpemUgPDwgUEFHRV9TSElGVCkN Cj4gLQkJCXN0YXJ0IC09IG5vZGUrKy0+c2l6ZSA8PCBQQUdFX1NISUZUOw0KPiAtDQo+IC0J CWN1ci0+c3RhcnQgPSAobm9kZS0+c3RhcnQgPDwgUEFHRV9TSElGVCkgKyBzdGFydDsNCj4g LQkJY3VyLT5zaXplID0gbWluKChub2RlLT5zaXplIDw8IFBBR0VfU0hJRlQpIC0gc3RhcnQs IHNpemUpOw0KPiArCWlmICghcmVzIHx8IHJlcy0+bWVtX3R5cGUgPT0gVFRNX1BMX1NZU1RF TSkgew0KPiArCQljdXItPnN0YXJ0ID0gc3RhcnQ7DQo+ICsJCWN1ci0+c2l6ZSA9IHNpemU7 DQo+ICAgCQljdXItPnJlbWFpbmluZyA9IHNpemU7DQo+IC0JCWN1ci0+bm9kZSA9IG5vZGU7 DQo+IC0JCWJyZWFrOw0KPiAtCWRlZmF1bHQ6DQo+IC0JCWdvdG8gZmFsbGJhY2s7DQo+ICsJ CWN1ci0+bm9kZSA9IE5VTEw7DQo+ICsJCVdBUk5fT04ocmVzICYmIHN0YXJ0ICsgc2l6ZSA+ IHJlcy0+bnVtX3BhZ2VzIDw8IFBBR0VfU0hJRlQpOw0KPiArCQlyZXR1cm47DQo+ICAgCX0N Cj4gICANCj4gLQlyZXR1cm47DQo+ICsJQlVHX09OKHN0YXJ0ICsgc2l6ZSA+IHJlcy0+bnVt X3BhZ2VzIDw8IFBBR0VfU0hJRlQpOw0KPiAgIA0KPiAtZmFsbGJhY2s6DQo+IC0JY3VyLT5z dGFydCA9IHN0YXJ0Ow0KPiAtCWN1ci0+c2l6ZSA9IHNpemU7DQo+ICsJbm9kZSA9IHRvX3R0 bV9yYW5nZV9tZ3Jfbm9kZShyZXMpLT5tbV9ub2RlczsNCj4gKwl3aGlsZSAoc3RhcnQgPj0g bm9kZS0+c2l6ZSA8PCBQQUdFX1NISUZUKQ0KPiArCQlzdGFydCAtPSBub2RlKystPnNpemUg PDwgUEFHRV9TSElGVDsNCj4gKw0KPiArCWN1ci0+c3RhcnQgPSAobm9kZS0+c3RhcnQgPDwg UEFHRV9TSElGVCkgKyBzdGFydDsNCj4gKwljdXItPnNpemUgPSBtaW4oKG5vZGUtPnNpemUg PDwgUEFHRV9TSElGVCkgLSBzdGFydCwgc2l6ZSk7DQo+ICAgCWN1ci0+cmVtYWluaW5nID0g c2l6ZTsNCj4gLQljdXItPm5vZGUgPSBOVUxMOw0KPiAtCVdBUk5fT04ocmVzICYmIHN0YXJ0 ICsgc2l6ZSA+IHJlcy0+bnVtX3BhZ2VzIDw8IFBBR0VfU0hJRlQpOw0KPiAtCXJldHVybjsN Cj4gKwljdXItPm5vZGUgPSBub2RlOw0KPiAgIH0NCj4gICANCj4gICAvKioNCj4gQEAgLTEy NCw5ICs4NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhbWRncHVfcmVzX2ZpcnN0KHN0cnVj dCB0dG1fcmVzb3VyY2UgKnJlcywNCj4gICAgKi8NCj4gICBzdGF0aWMgaW5saW5lIHZvaWQg YW1kZ3B1X3Jlc19uZXh0KHN0cnVjdCBhbWRncHVfcmVzX2N1cnNvciAqY3VyLCB1aW50NjRf dCBzaXplKQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpibG9jazsNCj4g LQlzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGU7DQo+IC0Jc3RydWN0IGxpc3RfaGVhZCAqbmV4 dDsNCj4gKwlzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUgPSBjdXItPm5vZGU7DQo+ICAgDQo+ ICAgCUJVR19PTihzaXplID4gY3VyLT5yZW1haW5pbmcpOw0KPiAgIA0KPiBAQCAtMTQwLDI3 ICs5OSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhbWRncHVfcmVzX25leHQoc3RydWN0IGFt ZGdwdV9yZXNfY3Vyc29yICpjdXIsIHVpbnQ2NF90IHNpemUpDQo+ICAgCQlyZXR1cm47DQo+ ICAgCX0NCj4gICANCj4gLQlzd2l0Y2ggKGN1ci0+bWVtX3R5cGUpIHsNCj4gLQljYXNlIFRU TV9QTF9WUkFNOg0KPiAtCQlibG9jayA9IGN1ci0+bm9kZTsNCj4gLQ0KPiAtCQluZXh0ID0g YmxvY2stPmxpbmsubmV4dDsNCj4gLQkJYmxvY2sgPSBsaXN0X2VudHJ5KG5leHQsIHN0cnVj dCBkcm1fYnVkZHlfYmxvY2ssIGxpbmspOw0KPiAtDQo+IC0JCWN1ci0+bm9kZSA9IGJsb2Nr Ow0KPiAtCQljdXItPnN0YXJ0ID0gYW1kZ3B1X3ZyYW1fbWdyX2Jsb2NrX3N0YXJ0KGJsb2Nr KTsNCj4gLQkJY3VyLT5zaXplID0gbWluKGFtZGdwdV92cmFtX21ncl9ibG9ja19zaXplKGJs b2NrKSwgY3VyLT5yZW1haW5pbmcpOw0KPiAtCQlicmVhazsNCj4gLQljYXNlIFRUTV9QTF9U VDoNCj4gLQkJbm9kZSA9IGN1ci0+bm9kZTsNCj4gLQ0KPiAtCQljdXItPm5vZGUgPSArK25v ZGU7DQo+IC0JCWN1ci0+c3RhcnQgPSBub2RlLT5zdGFydCA8PCBQQUdFX1NISUZUOw0KPiAt CQljdXItPnNpemUgPSBtaW4obm9kZS0+c2l6ZSA8PCBQQUdFX1NISUZULCBjdXItPnJlbWFp bmluZyk7DQo+IC0JCWJyZWFrOw0KPiAtCWRlZmF1bHQ6DQo+IC0JCXJldHVybjsNCj4gLQl9 DQo+ICsJY3VyLT5ub2RlID0gKytub2RlOw0KPiArCWN1ci0+c3RhcnQgPSBub2RlLT5zdGFy dCA8PCBQQUdFX1NISUZUOw0KPiArCWN1ci0+c2l6ZSA9IG1pbihub2RlLT5zaXplIDw8IFBB R0VfU0hJRlQsIGN1ci0+cmVtYWluaW5nKTsNCj4gICB9DQo+ICAgDQo+ICAgI2VuZGlmDQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmgg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmgNCj4gaW5kZXggNmE3 MDgxODAzOWRkLi45MTIwYWU4MGVmNTIgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uaA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfdHRtLmgNCj4gQEAgLTI2LDcgKzI2LDYgQEANCj4gICANCj4gICAj aW5jbHVkZSA8bGludXgvZG1hLWRpcmVjdGlvbi5oPg0KPiAgICNpbmNsdWRlIDxkcm0vZ3B1 X3NjaGVkdWxlci5oPg0KPiAtI2luY2x1ZGUgImFtZGdwdV92cmFtX21nci5oIg0KPiAgICNp bmNsdWRlICJhbWRncHUuaCINCj4gICANCj4gICAjZGVmaW5lIEFNREdQVV9QTF9HRFMJCShU VE1fUExfUFJJViArIDApDQo+IEBAIC0zOSw2ICszOCwxNSBAQA0KPiAgIA0KPiAgICNkZWZp bmUgQU1ER1BVX1BPSVNPTgkweGQwYmVkMGJlDQo+ICAgDQo+ICtzdHJ1Y3QgYW1kZ3B1X3Zy YW1fbWdyIHsNCj4gKwlzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgbWFuYWdlcjsNCj4g KwlzdHJ1Y3QgZHJtX21tIG1tOw0KPiArCXNwaW5sb2NrX3QgbG9jazsNCj4gKwlzdHJ1Y3Qg bGlzdF9oZWFkIHJlc2VydmF0aW9uc19wZW5kaW5nOw0KPiArCXN0cnVjdCBsaXN0X2hlYWQg cmVzZXJ2ZWRfcGFnZXM7DQo+ICsJYXRvbWljNjRfdCB2aXNfdXNhZ2U7DQo+ICt9Ow0KPiAr DQo+ICAgc3RydWN0IGFtZGdwdV9ndHRfbWdyIHsNCj4gICAJc3RydWN0IHR0bV9yZXNvdXJj ZV9tYW5hZ2VyIG1hbmFnZXI7DQo+ICAgCXN0cnVjdCBkcm1fbW0gbW07DQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92cmFtX21nci5jDQo+IGluZGV4IDdh NWU4YTdiNGExYi4uMGE3NjExNjQ4NTczIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuYw0KPiBAQCAtMzIsMTAgKzMyLDggQEAN Cj4gICAjaW5jbHVkZSAiYXRvbS5oIg0KPiAgIA0KPiAgIHN0cnVjdCBhbWRncHVfdnJhbV9y ZXNlcnZhdGlvbiB7DQo+IC0JdTY0IHN0YXJ0Ow0KPiAtCXU2NCBzaXplOw0KPiAtCXN0cnVj dCBsaXN0X2hlYWQgYWxsb2NhdGVkOw0KPiAtCXN0cnVjdCBsaXN0X2hlYWQgYmxvY2tzOw0K PiArCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsNCj4gKwlzdHJ1Y3QgZHJtX21tX25vZGUgbW1f bm9kZTsNCj4gICB9Ow0KPiAgIA0KPiAgIHN0YXRpYyBpbmxpbmUgc3RydWN0IGFtZGdwdV92 cmFtX21nciAqDQo+IEBAIC01MCwzNSArNDgsNiBAQCB0b19hbWRncHVfZGV2aWNlKHN0cnVj dCBhbWRncHVfdnJhbV9tZ3IgKm1ncikNCj4gICAJcmV0dXJuIGNvbnRhaW5lcl9vZihtZ3Is IHN0cnVjdCBhbWRncHVfZGV2aWNlLCBtbWFuLnZyYW1fbWdyKTsNCj4gICB9DQo+ICAgDQo+ IC1zdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKg0KPiAtYW1kZ3B1X3Zy YW1fbWdyX2ZpcnN0X2Jsb2NrKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpDQo+IC17DQo+IC0J cmV0dXJuIGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbChsaXN0LCBzdHJ1Y3QgZHJtX2J1ZGR5 X2Jsb2NrLCBsaW5rKTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGlubGluZSBib29sIGFtZGdw dV9pc192cmFtX21ncl9ibG9ja3NfY29udGlndW91cyhzdHJ1Y3QgbGlzdF9oZWFkICpoZWFk KQ0KPiAtew0KPiAtCXN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrOw0KPiAtCXU2NCBz dGFydCwgc2l6ZTsNCj4gLQ0KPiAtCWJsb2NrID0gYW1kZ3B1X3ZyYW1fbWdyX2ZpcnN0X2Js b2NrKGhlYWQpOw0KPiAtCWlmICghYmxvY2spDQo+IC0JCXJldHVybiBmYWxzZTsNCj4gLQ0K PiAtCXdoaWxlIChoZWFkICE9IGJsb2NrLT5saW5rLm5leHQpIHsNCj4gLQkJc3RhcnQgPSBh bWRncHVfdnJhbV9tZ3JfYmxvY2tfc3RhcnQoYmxvY2spOw0KPiAtCQlzaXplID0gYW1kZ3B1 X3ZyYW1fbWdyX2Jsb2NrX3NpemUoYmxvY2spOw0KPiAtDQo+IC0JCWJsb2NrID0gbGlzdF9l bnRyeShibG9jay0+bGluay5uZXh0LCBzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrLCBsaW5rKTsN Cj4gLQkJaWYgKHN0YXJ0ICsgc2l6ZSAhPSBhbWRncHVfdnJhbV9tZ3JfYmxvY2tfc3RhcnQo YmxvY2spKQ0KPiAtCQkJcmV0dXJuIGZhbHNlOw0KPiAtCX0NCj4gLQ0KPiAtCXJldHVybiB0 cnVlOw0KPiAtfQ0KPiAtDQo+IC0NCj4gLQ0KPiAgIC8qKg0KPiAgICAqIERPQzogbWVtX2lu Zm9fdnJhbV90b3RhbA0KPiAgICAqDQo+IEBAIC0yMTcsMTggKzE4NiwxOCBAQCBjb25zdCBz dHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGFtZGdwdV92cmFtX21ncl9hdHRyX2dyb3VwID0gew0K PiAgIH07DQo+ICAgDQo+ICAgLyoqDQo+IC0gKiBhbWRncHVfdnJhbV9tZ3JfdmlzX3NpemUg LSBDYWxjdWxhdGUgdmlzaWJsZSBibG9jayBzaXplDQo+ICsgKiBhbWRncHVfdnJhbV9tZ3Jf dmlzX3NpemUgLSBDYWxjdWxhdGUgdmlzaWJsZSBub2RlIHNpemUNCj4gICAgKg0KPiAgICAq IEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50ZXINCj4gLSAqIEBibG9jazogRFJNIEJVRERZ IGJsb2NrIHN0cnVjdHVyZQ0KPiArICogQG5vZGU6IE1NIG5vZGUgc3RydWN0dXJlDQo+ICAg ICoNCj4gLSAqIENhbGN1bGF0ZSBob3cgbWFueSBieXRlcyBvZiB0aGUgRFJNIEJVRERZIGJs b2NrIGFyZSBpbnNpZGUgdmlzaWJsZSBWUkFNDQo+ICsgKiBDYWxjdWxhdGUgaG93IG1hbnkg Ynl0ZXMgb2YgdGhlIE1NIG5vZGUgYXJlIGluc2lkZSB2aXNpYmxlIFZSQU0NCj4gICAgKi8N Cj4gICBzdGF0aWMgdTY0IGFtZGdwdV92cmFtX21ncl92aXNfc2l6ZShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwNCj4gLQkJCQkgICAgc3RydWN0IGRybV9idWRkeV9ibG9jayAqYmxv Y2spDQo+ICsJCQkJICAgIHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSkNCj4gICB7DQo+IC0J dTY0IHN0YXJ0ID0gYW1kZ3B1X3ZyYW1fbWdyX2Jsb2NrX3N0YXJ0KGJsb2NrKTsNCj4gLQl1 NjQgZW5kID0gc3RhcnQgKyBhbWRncHVfdnJhbV9tZ3JfYmxvY2tfc2l6ZShibG9jayk7DQo+ ICsJdWludDY0X3Qgc3RhcnQgPSBub2RlLT5zdGFydCA8PCBQQUdFX1NISUZUOw0KPiArCXVp bnQ2NF90IGVuZCA9IChub2RlLT5zaXplICsgbm9kZS0+c3RhcnQpIDw8IFBBR0VfU0hJRlQ7 DQo+ICAgDQo+ICAgCWlmIChzdGFydCA+PSBhZGV2LT5nbWMudmlzaWJsZV92cmFtX3NpemUp DQo+ICAgCQlyZXR1cm4gMDsNCj4gQEAgLTI0OSw5ICsyMTgsOSBAQCB1NjQgYW1kZ3B1X3Zy YW1fbWdyX2JvX3Zpc2libGVfc2l6ZShzdHJ1Y3QgYW1kZ3B1X2JvICpibykNCj4gICB7DQo+ ICAgCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gYW1kZ3B1X3R0bV9hZGV2KGJvLT50 Ym8uYmRldik7DQo+ICAgCXN0cnVjdCB0dG1fcmVzb3VyY2UgKnJlcyA9IGJvLT50Ym8ucmVz b3VyY2U7DQo+IC0Jc3RydWN0IGFtZGdwdV92cmFtX21ncl9yZXNvdXJjZSAqdnJlcyA9IHRv X2FtZGdwdV92cmFtX21ncl9yZXNvdXJjZShyZXMpOw0KPiAtCXN0cnVjdCBkcm1fYnVkZHlf YmxvY2sgKmJsb2NrOw0KPiAtCXU2NCB1c2FnZSA9IDA7DQo+ICsJdW5zaWduZWQgcGFnZXMg PSByZXMtPm51bV9wYWdlczsNCj4gKwlzdHJ1Y3QgZHJtX21tX25vZGUgKm1tOw0KPiArCXU2 NCB1c2FnZTsNCj4gICANCj4gICAJaWYgKGFtZGdwdV9nbWNfdnJhbV9mdWxsX3Zpc2libGUo JmFkZXYtPmdtYykpDQo+ICAgCQlyZXR1cm4gYW1kZ3B1X2JvX3NpemUoYm8pOw0KPiBAQCAt MjU5LDggKzIyOCw5IEBAIHU2NCBhbWRncHVfdnJhbV9tZ3JfYm9fdmlzaWJsZV9zaXplKHN0 cnVjdCBhbWRncHVfYm8gKmJvKQ0KPiAgIAlpZiAocmVzLT5zdGFydCA+PSBhZGV2LT5nbWMu dmlzaWJsZV92cmFtX3NpemUgPj4gUEFHRV9TSElGVCkNCj4gICAJCXJldHVybiAwOw0KPiAg IA0KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkoYmxvY2ssICZ2cmVzLT5ibG9ja3MsIGxpbmsp DQo+IC0JCXVzYWdlICs9IGFtZGdwdV92cmFtX21ncl92aXNfc2l6ZShhZGV2LCBibG9jayk7 DQo+ICsJbW0gPSAmY29udGFpbmVyX29mKHJlcywgc3RydWN0IHR0bV9yYW5nZV9tZ3Jfbm9k ZSwgYmFzZSktPm1tX25vZGVzWzBdOw0KPiArCWZvciAodXNhZ2UgPSAwOyBwYWdlczsgcGFn ZXMgLT0gbW0tPnNpemUsIG1tKyspDQo+ICsJCXVzYWdlICs9IGFtZGdwdV92cmFtX21ncl92 aXNfc2l6ZShhZGV2LCBtbSk7DQo+ICAgDQo+ICAgCXJldHVybiB1c2FnZTsNCj4gICB9DQo+ IEBAIC0yNzAsMzAgKzI0MCwyMyBAQCBzdGF0aWMgdm9pZCBhbWRncHVfdnJhbV9tZ3JfZG9f cmVzZXJ2ZShzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbikNCj4gICB7DQo+ICAg CXN0cnVjdCBhbWRncHVfdnJhbV9tZ3IgKm1nciA9IHRvX3ZyYW1fbWdyKG1hbik7DQo+ICAg CXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gdG9fYW1kZ3B1X2RldmljZShtZ3IpOw0K PiAtCXN0cnVjdCBkcm1fYnVkZHkgKm1tID0gJm1nci0+bW07DQo+ICsJc3RydWN0IGRybV9t bSAqbW0gPSAmbWdyLT5tbTsNCj4gICAJc3RydWN0IGFtZGdwdV92cmFtX3Jlc2VydmF0aW9u ICpyc3YsICp0ZW1wOw0KPiAtCXN0cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrOw0KPiAg IAl1aW50NjRfdCB2aXNfdXNhZ2U7DQo+ICAgDQo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKHJzdiwgdGVtcCwgJm1nci0+cmVzZXJ2YXRpb25zX3BlbmRpbmcsIGJsb2Nrcykgew0K PiAtCQlpZiAoZHJtX2J1ZGR5X2FsbG9jX2Jsb2NrcyhtbSwgcnN2LT5zdGFydCwgcnN2LT5z dGFydCArIHJzdi0+c2l6ZSwNCj4gLQkJCQkJICAgcnN2LT5zaXplLCBtbS0+Y2h1bmtfc2l6 ZSwgJnJzdi0+YWxsb2NhdGVkLA0KPiAtCQkJCQkgICBEUk1fQlVERFlfUkFOR0VfQUxMT0NB VElPTikpDQo+IC0JCQljb250aW51ZTsNCj4gLQ0KPiAtCQlibG9jayA9IGFtZGdwdV92cmFt X21ncl9maXJzdF9ibG9jaygmcnN2LT5hbGxvY2F0ZWQpOw0KPiAtCQlpZiAoIWJsb2NrKQ0K PiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyc3YsIHRlbXAsICZtZ3ItPnJlc2VydmF0 aW9uc19wZW5kaW5nLCBub2RlKSB7DQo+ICsJCWlmIChkcm1fbW1fcmVzZXJ2ZV9ub2RlKG1t LCAmcnN2LT5tbV9ub2RlKSkNCj4gICAJCQljb250aW51ZTsNCj4gICANCj4gICAJCWRldl9k YmcoYWRldi0+ZGV2LCAiUmVzZXJ2YXRpb24gMHglbGx4IC0gJWxsZCwgU3VjY2VlZGVkXG4i LA0KPiAtCQkJcnN2LT5zdGFydCwgcnN2LT5zaXplKTsNCj4gKwkJCXJzdi0+bW1fbm9kZS5z dGFydCwgcnN2LT5tbV9ub2RlLnNpemUpOw0KPiAgIA0KPiAtCQl2aXNfdXNhZ2UgPSBhbWRn cHVfdnJhbV9tZ3JfdmlzX3NpemUoYWRldiwgYmxvY2spOw0KPiArCQl2aXNfdXNhZ2UgPSBh bWRncHVfdnJhbV9tZ3JfdmlzX3NpemUoYWRldiwgJnJzdi0+bW1fbm9kZSk7DQo+ICAgCQlh dG9taWM2NF9hZGQodmlzX3VzYWdlLCAmbWdyLT52aXNfdXNhZ2UpOw0KPiAgIAkJc3Bpbl9s b2NrKCZtYW4tPmJkZXYtPmxydV9sb2NrKTsNCj4gLQkJbWFuLT51c2FnZSArPSByc3YtPnNp emU7DQo+ICsJCW1hbi0+dXNhZ2UgKz0gcnN2LT5tbV9ub2RlLnNpemUgPDwgUEFHRV9TSElG VDsNCj4gICAJCXNwaW5fdW5sb2NrKCZtYW4tPmJkZXYtPmxydV9sb2NrKTsNCj4gLQkJbGlz dF9tb3ZlKCZyc3YtPmJsb2NrcywgJm1nci0+cmVzZXJ2ZWRfcGFnZXMpOw0KPiArCQlsaXN0 X21vdmUoJnJzdi0+bm9kZSwgJm1nci0+cmVzZXJ2ZWRfcGFnZXMpOw0KPiAgIAl9DQo+ICAg fQ0KPiAgIA0KPiBAQCAtMzE1LDE2ICsyNzgsMTQgQEAgaW50IGFtZGdwdV92cmFtX21ncl9y ZXNlcnZlX3JhbmdlKHN0cnVjdCBhbWRncHVfdnJhbV9tZ3IgKm1nciwNCj4gICAJaWYgKCFy c3YpDQo+ICAgCQlyZXR1cm4gLUVOT01FTTsNCj4gICANCj4gLQlJTklUX0xJU1RfSEVBRCgm cnN2LT5hbGxvY2F0ZWQpOw0KPiAtCUlOSVRfTElTVF9IRUFEKCZyc3YtPmJsb2Nrcyk7DQo+ IC0NCj4gLQlyc3YtPnN0YXJ0ID0gc3RhcnQ7DQo+IC0JcnN2LT5zaXplID0gc2l6ZTsNCj4g KwlJTklUX0xJU1RfSEVBRCgmcnN2LT5ub2RlKTsNCj4gKwlyc3YtPm1tX25vZGUuc3RhcnQg PSBzdGFydCA+PiBQQUdFX1NISUZUOw0KPiArCXJzdi0+bW1fbm9kZS5zaXplID0gc2l6ZSA+ PiBQQUdFX1NISUZUOw0KPiAgIA0KPiAtCW11dGV4X2xvY2soJm1nci0+bG9jayk7DQo+IC0J bGlzdF9hZGRfdGFpbCgmcnN2LT5ibG9ja3MsICZtZ3ItPnJlc2VydmF0aW9uc19wZW5kaW5n KTsNCj4gKwlzcGluX2xvY2soJm1nci0+bG9jayk7DQo+ICsJbGlzdF9hZGRfdGFpbCgmcnN2 LT5ub2RlLCAmbWdyLT5yZXNlcnZhdGlvbnNfcGVuZGluZyk7DQo+ICAgCWFtZGdwdV92cmFt X21ncl9kb19yZXNlcnZlKCZtZ3ItPm1hbmFnZXIpOw0KPiAtCW11dGV4X3VubG9jaygmbWdy LT5sb2NrKTsNCj4gKwlzcGluX3VubG9jaygmbWdyLT5sb2NrKTsNCj4gICANCj4gICAJcmV0 dXJuIDA7DQo+ICAgfQ0KPiBAQCAtMzQ2LDE5ICszMDcsMTkgQEAgaW50IGFtZGdwdV92cmFt X21ncl9xdWVyeV9wYWdlX3N0YXR1cyhzdHJ1Y3QgYW1kZ3B1X3ZyYW1fbWdyICptZ3IsDQo+ ICAgCXN0cnVjdCBhbWRncHVfdnJhbV9yZXNlcnZhdGlvbiAqcnN2Ow0KPiAgIAlpbnQgcmV0 Ow0KPiAgIA0KPiAtCW11dGV4X2xvY2soJm1nci0+bG9jayk7DQo+ICsJc3Bpbl9sb2NrKCZt Z3ItPmxvY2spOw0KPiAgIA0KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkocnN2LCAmbWdyLT5y ZXNlcnZhdGlvbnNfcGVuZGluZywgYmxvY2tzKSB7DQo+IC0JCWlmIChyc3YtPnN0YXJ0IDw9 IHN0YXJ0ICYmDQo+IC0JCSAgICAoc3RhcnQgPCAocnN2LT5zdGFydCArIHJzdi0+c2l6ZSkp KSB7DQo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShyc3YsICZtZ3ItPnJlc2VydmF0aW9uc19w ZW5kaW5nLCBub2RlKSB7DQo+ICsJCWlmICgocnN2LT5tbV9ub2RlLnN0YXJ0IDw9IHN0YXJ0 KSAmJg0KPiArCQkgICAgKHN0YXJ0IDwgKHJzdi0+bW1fbm9kZS5zdGFydCArIHJzdi0+bW1f bm9kZS5zaXplKSkpIHsNCj4gICAJCQlyZXQgPSAtRUJVU1k7DQo+ICAgCQkJZ290byBvdXQ7 DQo+ICAgCQl9DQo+ICAgCX0NCj4gICANCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJzdiwg Jm1nci0+cmVzZXJ2ZWRfcGFnZXMsIGJsb2Nrcykgew0KPiAtCQlpZiAocnN2LT5zdGFydCA8 PSBzdGFydCAmJg0KPiAtCQkgICAgKHN0YXJ0IDwgKHJzdi0+c3RhcnQgKyByc3YtPnNpemUp KSkgew0KPiArCWxpc3RfZm9yX2VhY2hfZW50cnkocnN2LCAmbWdyLT5yZXNlcnZlZF9wYWdl cywgbm9kZSkgew0KPiArCQlpZiAoKHJzdi0+bW1fbm9kZS5zdGFydCA8PSBzdGFydCkgJiYN Cj4gKwkJICAgIChzdGFydCA8IChyc3YtPm1tX25vZGUuc3RhcnQgKyByc3YtPm1tX25vZGUu c2l6ZSkpKSB7DQo+ICAgCQkJcmV0ID0gMDsNCj4gICAJCQlnb3RvIG91dDsNCj4gICAJCX0N Cj4gQEAgLTM2NiwxMCArMzI3LDMyIEBAIGludCBhbWRncHVfdnJhbV9tZ3JfcXVlcnlfcGFn ZV9zdGF0dXMoc3RydWN0IGFtZGdwdV92cmFtX21nciAqbWdyLA0KPiAgIA0KPiAgIAlyZXQg PSAtRU5PRU5UOw0KPiAgIG91dDoNCj4gLQltdXRleF91bmxvY2soJm1nci0+bG9jayk7DQo+ ICsJc3Bpbl91bmxvY2soJm1nci0+bG9jayk7DQo+ICAgCXJldHVybiByZXQ7DQo+ICAgfQ0K PiAgIA0KPiArLyoqDQo+ICsgKiBhbWRncHVfdnJhbV9tZ3JfdmlydF9zdGFydCAtIHVwZGF0 ZSB2aXJ0dWFsIHN0YXJ0IGFkZHJlc3MNCj4gKyAqDQo+ICsgKiBAbWVtOiB0dG1fcmVzb3Vy Y2UgdG8gdXBkYXRlDQo+ICsgKiBAbm9kZToganVzdCBhbGxvY2F0ZWQgbm9kZQ0KPiArICoN Cj4gKyAqIENhbGN1bGF0ZSBhIHZpcnR1YWwgQk8gc3RhcnQgYWRkcmVzcyB0byBlYXNpbHkg Y2hlY2sgaWYgZXZlcnl0aGluZyBpcyBDUFUNCj4gKyAqIGFjY2Vzc2libGUuDQo+ICsgKi8N Cj4gK3N0YXRpYyB2b2lkIGFtZGdwdV92cmFtX21ncl92aXJ0X3N0YXJ0KHN0cnVjdCB0dG1f cmVzb3VyY2UgKm1lbSwNCj4gKwkJCQkgICAgICAgc3RydWN0IGRybV9tbV9ub2RlICpub2Rl KQ0KPiArew0KPiArCXVuc2lnbmVkIGxvbmcgc3RhcnQ7DQo+ICsNCj4gKwlzdGFydCA9IG5v ZGUtPnN0YXJ0ICsgbm9kZS0+c2l6ZTsNCj4gKwlpZiAoc3RhcnQgPiBtZW0tPm51bV9wYWdl cykNCj4gKwkJc3RhcnQgLT0gbWVtLT5udW1fcGFnZXM7DQo+ICsJZWxzZQ0KPiArCQlzdGFy dCA9IDA7DQo+ICsJbWVtLT5zdGFydCA9IG1heChtZW0tPnN0YXJ0LCBzdGFydCk7DQo+ICt9 DQo+ICsNCj4gICAvKioNCj4gICAgKiBhbWRncHVfdnJhbV9tZ3JfbmV3IC0gYWxsb2NhdGUg bmV3IHJhbmdlcw0KPiAgICAqDQo+IEBAIC0zODUsNDQgKzM2OCw0NiBAQCBzdGF0aWMgaW50 IGFtZGdwdV92cmFtX21ncl9uZXcoc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4s DQo+ICAgCQkJICAgICAgIGNvbnN0IHN0cnVjdCB0dG1fcGxhY2UgKnBsYWNlLA0KPiAgIAkJ CSAgICAgICBzdHJ1Y3QgdHRtX3Jlc291cmNlICoqcmVzKQ0KPiAgIHsNCj4gLQl1NjQgdmlz X3VzYWdlID0gMCwgbWF4X2J5dGVzLCBjdXJfc2l6ZSwgbWluX2Jsb2NrX3NpemU7DQo+ICsJ dW5zaWduZWQgbG9uZyBscGZuLCBudW1fbm9kZXMsIHBhZ2VzX3Blcl9ub2RlLCBwYWdlc19s ZWZ0LCBwYWdlczsNCj4gICAJc3RydWN0IGFtZGdwdV92cmFtX21nciAqbWdyID0gdG9fdnJh bV9tZ3IobWFuKTsNCj4gICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSB0b19hbWRn cHVfZGV2aWNlKG1ncik7DQo+IC0Jc3RydWN0IGFtZGdwdV92cmFtX21ncl9yZXNvdXJjZSAq dnJlczsNCj4gLQl1NjQgc2l6ZSwgcmVtYWluaW5nX3NpemUsIGxwZm4sIGZwZm47DQo+IC0J c3RydWN0IGRybV9idWRkeSAqbW0gPSAmbWdyLT5tbTsNCj4gLQlzdHJ1Y3QgZHJtX2J1ZGR5 X2Jsb2NrICpibG9jazsNCj4gLQl1bnNpZ25lZCBsb25nIHBhZ2VzX3Blcl9ibG9jazsNCj4g Kwl1aW50NjRfdCB2aXNfdXNhZ2UgPSAwLCBtZW1fYnl0ZXMsIG1heF9ieXRlczsNCj4gKwlz dHJ1Y3QgdHRtX3JhbmdlX21ncl9ub2RlICpub2RlOw0KPiArCXN0cnVjdCBkcm1fbW0gKm1t ID0gJm1nci0+bW07DQo+ICsJZW51bSBkcm1fbW1faW5zZXJ0X21vZGUgbW9kZTsNCj4gKwl1 bnNpZ25lZCBpOw0KPiAgIAlpbnQgcjsNCj4gICANCj4gLQlscGZuID0gcGxhY2UtPmxwZm4g PDwgUEFHRV9TSElGVDsNCj4gKwlscGZuID0gcGxhY2UtPmxwZm47DQo+ICAgCWlmICghbHBm bikNCj4gLQkJbHBmbiA9IG1hbi0+c2l6ZTsNCj4gLQ0KPiAtCWZwZm4gPSBwbGFjZS0+ZnBm biA8PCBQQUdFX1NISUZUOw0KPiArCQlscGZuID0gbWFuLT5zaXplID4+IFBBR0VfU0hJRlQ7 DQo+ICAgDQo+ICAgCW1heF9ieXRlcyA9IGFkZXYtPmdtYy5tY192cmFtX3NpemU7DQo+ICAg CWlmICh0Ym8tPnR5cGUgIT0gdHRtX2JvX3R5cGVfa2VybmVsKQ0KPiAgIAkJbWF4X2J5dGVz IC09IEFNREdQVV9WTV9SRVNFUlZFRF9WUkFNOw0KPiAgIA0KPiArCW1lbV9ieXRlcyA9IHRi by0+YmFzZS5zaXplOw0KPiAgIAlpZiAocGxhY2UtPmZsYWdzICYgVFRNX1BMX0ZMQUdfQ09O VElHVU9VUykgew0KPiAtCQlwYWdlc19wZXJfYmxvY2sgPSB+MHVsOw0KPiArCQlwYWdlc19w ZXJfbm9kZSA9IH4wdWw7DQo+ICsJCW51bV9ub2RlcyA9IDE7DQo+ICAgCX0gZWxzZSB7DQo+ ICAgI2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRQ0KPiAtCQlwYWdlc19wZXJf YmxvY2sgPSBIUEFHRV9QTURfTlI7DQo+ICsJCXBhZ2VzX3Blcl9ub2RlID0gSFBBR0VfUE1E X05SOw0KPiAgICNlbHNlDQo+ICAgCQkvKiBkZWZhdWx0IHRvIDJNQiAqLw0KPiAtCQlwYWdl c19wZXJfYmxvY2sgPSAyVUwgPDwgKDIwVUwgLSBQQUdFX1NISUZUKTsNCj4gKwkJcGFnZXNf cGVyX25vZGUgPSAyVUwgPDwgKDIwVUwgLSBQQUdFX1NISUZUKTsNCj4gICAjZW5kaWYNCj4g LQkJcGFnZXNfcGVyX2Jsb2NrID0gbWF4X3QodWludDMyX3QsIHBhZ2VzX3Blcl9ibG9jaywN Cj4gLQkJCQkJdGJvLT5wYWdlX2FsaWdubWVudCk7DQo+ICsJCXBhZ2VzX3Blcl9ub2RlID0g bWF4X3QodWludDMyX3QsIHBhZ2VzX3Blcl9ub2RlLA0KPiArCQkJCSAgICAgICB0Ym8tPnBh Z2VfYWxpZ25tZW50KTsNCj4gKwkJbnVtX25vZGVzID0gRElWX1JPVU5EX1VQX1VMTChQRk5f VVAobWVtX2J5dGVzKSwgcGFnZXNfcGVyX25vZGUpOw0KPiAgIAl9DQo+ICAgDQo+IC0JdnJl cyA9IGt6YWxsb2Moc2l6ZW9mKCp2cmVzKSwgR0ZQX0tFUk5FTCk7DQo+IC0JaWYgKCF2cmVz KQ0KPiArCW5vZGUgPSBrdm1hbGxvYyhzdHJ1Y3Rfc2l6ZShub2RlLCBtbV9ub2RlcywgbnVt X25vZGVzKSwNCj4gKwkJCUdGUF9LRVJORUwgfCBfX0dGUF9aRVJPKTsNCj4gKwlpZiAoIW5v ZGUpDQo+ICAgCQlyZXR1cm4gLUVOT01FTTsNCj4gICANCj4gLQl0dG1fcmVzb3VyY2VfaW5p dCh0Ym8sIHBsYWNlLCAmdnJlcy0+YmFzZSk7DQo+ICsJdHRtX3Jlc291cmNlX2luaXQodGJv LCBwbGFjZSwgJm5vZGUtPmJhc2UpOw0KPiAgIA0KPiAgIAkvKiBiYWlsIG91dCBxdWlja2x5 IGlmIHRoZXJlJ3MgbGlrZWx5IG5vdCBlbm91Z2ggVlJBTSBmb3IgdGhpcyBCTyAqLw0KPiAg IAlpZiAodHRtX3Jlc291cmNlX21hbmFnZXJfdXNhZ2UobWFuKSA+IG1heF9ieXRlcykgew0K PiBAQCAtNDMwLDEzNiArNDE1LDY2IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZyYW1fbWdyX25l dyhzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiwNCj4gICAJCWdvdG8gZXJyb3Jf ZmluaTsNCj4gICAJfQ0KPiAgIA0KPiAtCUlOSVRfTElTVF9IRUFEKCZ2cmVzLT5ibG9ja3Mp Ow0KPiAtDQo+ICsJbW9kZSA9IERSTV9NTV9JTlNFUlRfQkVTVDsNCj4gICAJaWYgKHBsYWNl LT5mbGFncyAmIFRUTV9QTF9GTEFHX1RPUERPV04pDQo+IC0JCXZyZXMtPmZsYWdzIHw9IERS TV9CVUREWV9UT1BET1dOX0FMTE9DQVRJT047DQo+IC0NCj4gLQlpZiAoZnBmbiB8fCBscGZu ICE9IG1hbi0+c2l6ZSkNCj4gLQkJLyogQWxsb2NhdGUgYmxvY2tzIGluIGRlc2lyZWQgcmFu Z2UgKi8NCj4gLQkJdnJlcy0+ZmxhZ3MgfD0gRFJNX0JVRERZX1JBTkdFX0FMTE9DQVRJT047 DQo+IC0NCj4gLQlyZW1haW5pbmdfc2l6ZSA9IHZyZXMtPmJhc2UubnVtX3BhZ2VzIDw8IFBB R0VfU0hJRlQ7DQo+IC0NCj4gLQltdXRleF9sb2NrKCZtZ3ItPmxvY2spOw0KPiAtCXdoaWxl IChyZW1haW5pbmdfc2l6ZSkgew0KPiAtCQlpZiAodGJvLT5wYWdlX2FsaWdubWVudCkNCj4g LQkJCW1pbl9ibG9ja19zaXplID0gdGJvLT5wYWdlX2FsaWdubWVudCA8PCBQQUdFX1NISUZU Ow0KPiAtCQllbHNlDQo+IC0JCQltaW5fYmxvY2tfc2l6ZSA9IG1nci0+ZGVmYXVsdF9wYWdl X3NpemU7DQo+IC0NCj4gLQkJQlVHX09OKG1pbl9ibG9ja19zaXplIDwgbW0tPmNodW5rX3Np emUpOw0KPiAtDQo+IC0JCS8qIExpbWl0IG1heGltdW0gc2l6ZSB0byAyR2lCIGR1ZSB0byBT RyB0YWJsZSBsaW1pdGF0aW9ucyAqLw0KPiAtCQlzaXplID0gbWluKHJlbWFpbmluZ19zaXpl LCAyVUxMIDw8IDMwKTsNCj4gLQ0KPiAtCQlpZiAoc2l6ZSA+PSBwYWdlc19wZXJfYmxvY2sg PDwgUEFHRV9TSElGVCkNCj4gLQkJCW1pbl9ibG9ja19zaXplID0gcGFnZXNfcGVyX2Jsb2Nr IDw8IFBBR0VfU0hJRlQ7DQo+IC0NCj4gLQkJY3VyX3NpemUgPSBzaXplOw0KPiAtDQo+IC0J CWlmIChmcGZuICsgc2l6ZSAhPSBwbGFjZS0+bHBmbiA8PCBQQUdFX1NISUZUKSB7DQo+IC0J CQkvKg0KPiAtCQkJICogRXhjZXB0IGZvciBhY3R1YWwgcmFuZ2UgYWxsb2NhdGlvbiwgbW9k aWZ5IHRoZSBzaXplIGFuZA0KPiAtCQkJICogbWluX2Jsb2NrX3NpemUgY29uZm9ybWluZyB0 byBjb250aW51b3VzIGZsYWcgZW5hYmxlbWVudA0KPiAtCQkJICovDQo+IC0JCQlpZiAocGxh Y2UtPmZsYWdzICYgVFRNX1BMX0ZMQUdfQ09OVElHVU9VUykgew0KPiAtCQkJCXNpemUgPSBy b3VuZHVwX3Bvd19vZl90d28oc2l6ZSk7DQo+IC0JCQkJbWluX2Jsb2NrX3NpemUgPSBzaXpl Ow0KPiAtCQkJLyoNCj4gLQkJCSAqIE1vZGlmeSB0aGUgc2l6ZSB2YWx1ZSBpZiBzaXplIGlz IG5vdA0KPiAtCQkJICogYWxpZ25lZCB3aXRoIG1pbl9ibG9ja19zaXplDQo+IC0JCQkgKi8N Cj4gLQkJCX0gZWxzZSBpZiAoIUlTX0FMSUdORUQoc2l6ZSwgbWluX2Jsb2NrX3NpemUpKSB7 DQo+IC0JCQkJc2l6ZSA9IHJvdW5kX3VwKHNpemUsIG1pbl9ibG9ja19zaXplKTsNCj4gKwkJ bW9kZSA9IERSTV9NTV9JTlNFUlRfSElHSDsNCj4gKw0KPiArCXBhZ2VzX2xlZnQgPSBub2Rl LT5iYXNlLm51bV9wYWdlczsNCj4gKw0KPiArCS8qIExpbWl0IG1heGltdW0gc2l6ZSB0byAy R0IgZHVlIHRvIFNHIHRhYmxlIGxpbWl0YXRpb25zICovDQo+ICsJcGFnZXMgPSBtaW4ocGFn ZXNfbGVmdCwgMlVMIDw8ICgzMCAtIFBBR0VfU0hJRlQpKTsNCj4gKw0KPiArCWkgPSAwOw0K PiArCXNwaW5fbG9jaygmbWdyLT5sb2NrKTsNCj4gKwl3aGlsZSAocGFnZXNfbGVmdCkgew0K PiArCQl1aW50MzJfdCBhbGlnbm1lbnQgPSB0Ym8tPnBhZ2VfYWxpZ25tZW50Ow0KPiArDQo+ ICsJCWlmIChwYWdlcyA+PSBwYWdlc19wZXJfbm9kZSkNCj4gKwkJCWFsaWdubWVudCA9IHBh Z2VzX3Blcl9ub2RlOw0KPiArDQo+ICsJCXIgPSBkcm1fbW1faW5zZXJ0X25vZGVfaW5fcmFu Z2UobW0sICZub2RlLT5tbV9ub2Rlc1tpXSwgcGFnZXMsDQo+ICsJCQkJCQlhbGlnbm1lbnQs IDAsIHBsYWNlLT5mcGZuLA0KPiArCQkJCQkJbHBmbiwgbW9kZSk7DQo+ICsJCWlmICh1bmxp a2VseShyKSkgew0KPiArCQkJaWYgKHBhZ2VzID4gcGFnZXNfcGVyX25vZGUpIHsNCj4gKwkJ CQlpZiAoaXNfcG93ZXJfb2ZfMihwYWdlcykpDQo+ICsJCQkJCXBhZ2VzID0gcGFnZXMgLyAy Ow0KPiArCQkJCWVsc2UNCj4gKwkJCQkJcGFnZXMgPSByb3VuZGRvd25fcG93X29mX3R3byhw YWdlcyk7DQo+ICsJCQkJY29udGludWU7DQo+ICAgCQkJfQ0KPiArCQkJZ290byBlcnJvcl9m cmVlOw0KPiAgIAkJfQ0KPiAgIA0KPiAtCQlyID0gZHJtX2J1ZGR5X2FsbG9jX2Jsb2Nrcyht bSwgZnBmbiwNCj4gLQkJCQkJICAgbHBmbiwNCj4gLQkJCQkJICAgc2l6ZSwNCj4gLQkJCQkJ ICAgbWluX2Jsb2NrX3NpemUsDQo+IC0JCQkJCSAgICZ2cmVzLT5ibG9ja3MsDQo+IC0JCQkJ CSAgIHZyZXMtPmZsYWdzKTsNCj4gLQkJaWYgKHVubGlrZWx5KHIpKQ0KPiAtCQkJZ290byBl cnJvcl9mcmVlX2Jsb2NrczsNCj4gLQ0KPiAtCQlpZiAoc2l6ZSA+IHJlbWFpbmluZ19zaXpl KQ0KPiAtCQkJcmVtYWluaW5nX3NpemUgPSAwOw0KPiAtCQllbHNlDQo+IC0JCQlyZW1haW5p bmdfc2l6ZSAtPSBzaXplOw0KPiAtCX0NCj4gLQltdXRleF91bmxvY2soJm1nci0+bG9jayk7 DQo+IC0NCj4gLQlpZiAoY3VyX3NpemUgIT0gc2l6ZSkgew0KPiAtCQlzdHJ1Y3QgZHJtX2J1 ZGR5X2Jsb2NrICpibG9jazsNCj4gLQkJc3RydWN0IGxpc3RfaGVhZCAqdHJpbV9saXN0Ow0K PiAtCQl1NjQgb3JpZ2luYWxfc2l6ZTsNCj4gLQkJTElTVF9IRUFEKHRlbXApOw0KPiAtDQo+ IC0JCXRyaW1fbGlzdCA9ICZ2cmVzLT5ibG9ja3M7DQo+IC0JCW9yaWdpbmFsX3NpemUgPSB2 cmVzLT5iYXNlLm51bV9wYWdlcyA8PCBQQUdFX1NISUZUOw0KPiAtDQo+IC0JCS8qDQo+IC0J CSAqIElmIHNpemUgdmFsdWUgaXMgcm91bmRlZCB1cCB0byBtaW5fYmxvY2tfc2l6ZSwgdHJp bSB0aGUgbGFzdA0KPiAtCQkgKiBibG9jayB0byB0aGUgcmVxdWlyZWQgc2l6ZQ0KPiAtCQkg Ki8NCj4gLQkJaWYgKCFsaXN0X2lzX3Npbmd1bGFyKCZ2cmVzLT5ibG9ja3MpKSB7DQo+IC0J CQlibG9jayA9IGxpc3RfbGFzdF9lbnRyeSgmdnJlcy0+YmxvY2tzLCB0eXBlb2YoKmJsb2Nr KSwgbGluayk7DQo+IC0JCQlsaXN0X21vdmVfdGFpbCgmYmxvY2stPmxpbmssICZ0ZW1wKTsN Cj4gLQkJCXRyaW1fbGlzdCA9ICZ0ZW1wOw0KPiAtCQkJLyoNCj4gLQkJCSAqIENvbXB1dGUg dGhlIG9yaWdpbmFsX3NpemUgdmFsdWUgYnkgc3VidHJhY3RpbmcgdGhlDQo+IC0JCQkgKiBs YXN0IGJsb2NrIHNpemUgd2l0aCAoYWxpZ25lZCBzaXplIC0gb3JpZ2luYWwgc2l6ZSkNCj4g LQkJCSAqLw0KPiAtCQkJb3JpZ2luYWxfc2l6ZSA9IGFtZGdwdV92cmFtX21ncl9ibG9ja19z aXplKGJsb2NrKSAtIChzaXplIC0gY3VyX3NpemUpOw0KPiAtCQl9DQo+IC0NCj4gLQkJbXV0 ZXhfbG9jaygmbWdyLT5sb2NrKTsNCj4gLQkJZHJtX2J1ZGR5X2Jsb2NrX3RyaW0obW0sDQo+ IC0JCQkJICAgICBvcmlnaW5hbF9zaXplLA0KPiAtCQkJCSAgICAgdHJpbV9saXN0KTsNCj4g LQkJbXV0ZXhfdW5sb2NrKCZtZ3ItPmxvY2spOw0KPiAtDQo+IC0JCWlmICghbGlzdF9lbXB0 eSgmdGVtcCkpDQo+IC0JCQlsaXN0X3NwbGljZV90YWlsKHRyaW1fbGlzdCwgJnZyZXMtPmJs b2Nrcyk7DQo+IC0JfQ0KPiAtDQo+IC0JdnJlcy0+YmFzZS5zdGFydCA9IDA7DQo+IC0JbGlz dF9mb3JfZWFjaF9lbnRyeShibG9jaywgJnZyZXMtPmJsb2NrcywgbGluaykgew0KPiAtCQl1 bnNpZ25lZCBsb25nIHN0YXJ0Ow0KPiAtDQo+IC0JCXN0YXJ0ID0gYW1kZ3B1X3ZyYW1fbWdy X2Jsb2NrX3N0YXJ0KGJsb2NrKSArDQo+IC0JCQlhbWRncHVfdnJhbV9tZ3JfYmxvY2tfc2l6 ZShibG9jayk7DQo+IC0JCXN0YXJ0ID4+PSBQQUdFX1NISUZUOw0KPiArCQl2aXNfdXNhZ2Ug Kz0gYW1kZ3B1X3ZyYW1fbWdyX3Zpc19zaXplKGFkZXYsICZub2RlLT5tbV9ub2Rlc1tpXSk7 DQo+ICsJCWFtZGdwdV92cmFtX21ncl92aXJ0X3N0YXJ0KCZub2RlLT5iYXNlLCAmbm9kZS0+ bW1fbm9kZXNbaV0pOw0KPiArCQlwYWdlc19sZWZ0IC09IHBhZ2VzOw0KPiArCQkrK2k7DQo+ ICAgDQo+IC0JCWlmIChzdGFydCA+IHZyZXMtPmJhc2UubnVtX3BhZ2VzKQ0KPiAtCQkJc3Rh cnQgLT0gdnJlcy0+YmFzZS5udW1fcGFnZXM7DQo+IC0JCWVsc2UNCj4gLQkJCXN0YXJ0ID0g MDsNCj4gLQkJdnJlcy0+YmFzZS5zdGFydCA9IG1heCh2cmVzLT5iYXNlLnN0YXJ0LCBzdGFy dCk7DQo+IC0NCj4gLQkJdmlzX3VzYWdlICs9IGFtZGdwdV92cmFtX21ncl92aXNfc2l6ZShh ZGV2LCBibG9jayk7DQo+ICsJCWlmIChwYWdlcyA+IHBhZ2VzX2xlZnQpDQo+ICsJCQlwYWdl cyA9IHBhZ2VzX2xlZnQ7DQo+ICAgCX0NCj4gKwlzcGluX3VubG9jaygmbWdyLT5sb2NrKTsN Cj4gICANCj4gLQlpZiAoYW1kZ3B1X2lzX3ZyYW1fbWdyX2Jsb2Nrc19jb250aWd1b3VzKCZ2 cmVzLT5ibG9ja3MpKQ0KPiAtCQl2cmVzLT5iYXNlLnBsYWNlbWVudCB8PSBUVE1fUExfRkxB R19DT05USUdVT1VTOw0KPiArCWlmIChpID09IDEpDQo+ICsJCW5vZGUtPmJhc2UucGxhY2Vt ZW50IHw9IFRUTV9QTF9GTEFHX0NPTlRJR1VPVVM7DQo+ICAgDQo+ICAgCWlmIChhZGV2LT5n bWMueGdtaS5jb25uZWN0ZWRfdG9fY3B1KQ0KPiAtCQl2cmVzLT5iYXNlLmJ1cy5jYWNoaW5n ID0gdHRtX2NhY2hlZDsNCj4gKwkJbm9kZS0+YmFzZS5idXMuY2FjaGluZyA9IHR0bV9jYWNo ZWQ7DQo+ICAgCWVsc2UNCj4gLQkJdnJlcy0+YmFzZS5idXMuY2FjaGluZyA9IHR0bV93cml0 ZV9jb21iaW5lZDsNCj4gKwkJbm9kZS0+YmFzZS5idXMuY2FjaGluZyA9IHR0bV93cml0ZV9j b21iaW5lZDsNCj4gICANCj4gICAJYXRvbWljNjRfYWRkKHZpc191c2FnZSwgJm1nci0+dmlz X3VzYWdlKTsNCj4gLQkqcmVzID0gJnZyZXMtPmJhc2U7DQo+ICsJKnJlcyA9ICZub2RlLT5i YXNlOw0KPiAgIAlyZXR1cm4gMDsNCj4gICANCj4gLWVycm9yX2ZyZWVfYmxvY2tzOg0KPiAt CWRybV9idWRkeV9mcmVlX2xpc3QobW0sICZ2cmVzLT5ibG9ja3MpOw0KPiAtCW11dGV4X3Vu bG9jaygmbWdyLT5sb2NrKTsNCj4gK2Vycm9yX2ZyZWU6DQo+ICsJd2hpbGUgKGktLSkNCj4g KwkJZHJtX21tX3JlbW92ZV9ub2RlKCZub2RlLT5tbV9ub2Rlc1tpXSk7DQo+ICsJc3Bpbl91 bmxvY2soJm1nci0+bG9jayk7DQo+ICAgZXJyb3JfZmluaToNCj4gLQl0dG1fcmVzb3VyY2Vf ZmluaShtYW4sICZ2cmVzLT5iYXNlKTsNCj4gLQlrZnJlZSh2cmVzKTsNCj4gKwl0dG1fcmVz b3VyY2VfZmluaShtYW4sICZub2RlLT5iYXNlKTsNCj4gKwlrdmZyZWUobm9kZSk7DQo+ICAg DQo+ICAgCXJldHVybiByOw0KPiAgIH0NCj4gQEAgLTU3NSwyNiArNDkwLDI3IEBAIHN0YXRp YyBpbnQgYW1kZ3B1X3ZyYW1fbWdyX25ldyhzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIg Km1hbiwNCj4gICBzdGF0aWMgdm9pZCBhbWRncHVfdnJhbV9tZ3JfZGVsKHN0cnVjdCB0dG1f cmVzb3VyY2VfbWFuYWdlciAqbWFuLA0KPiAgIAkJCQlzdHJ1Y3QgdHRtX3Jlc291cmNlICpy ZXMpDQo+ICAgew0KPiAtCXN0cnVjdCBhbWRncHVfdnJhbV9tZ3JfcmVzb3VyY2UgKnZyZXMg PSB0b19hbWRncHVfdnJhbV9tZ3JfcmVzb3VyY2UocmVzKTsNCj4gKwlzdHJ1Y3QgdHRtX3Jh bmdlX21ncl9ub2RlICpub2RlID0gdG9fdHRtX3JhbmdlX21ncl9ub2RlKHJlcyk7DQo+ICAg CXN0cnVjdCBhbWRncHVfdnJhbV9tZ3IgKm1nciA9IHRvX3ZyYW1fbWdyKG1hbik7DQo+ICAg CXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gdG9fYW1kZ3B1X2RldmljZShtZ3IpOw0K PiAtCXN0cnVjdCBkcm1fYnVkZHkgKm1tID0gJm1nci0+bW07DQo+IC0Jc3RydWN0IGRybV9i dWRkeV9ibG9jayAqYmxvY2s7DQo+ICAgCXVpbnQ2NF90IHZpc191c2FnZSA9IDA7DQo+ICsJ dW5zaWduZWQgaSwgcGFnZXM7DQo+ICAgDQo+IC0JbXV0ZXhfbG9jaygmbWdyLT5sb2NrKTsN Cj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJsb2NrLCAmdnJlcy0+YmxvY2tzLCBsaW5rKQ0K PiAtCQl2aXNfdXNhZ2UgKz0gYW1kZ3B1X3ZyYW1fbWdyX3Zpc19zaXplKGFkZXYsIGJsb2Nr KTsNCj4gKwlzcGluX2xvY2soJm1nci0+bG9jayk7DQo+ICsJZm9yIChpID0gMCwgcGFnZXMg PSByZXMtPm51bV9wYWdlczsgcGFnZXM7DQo+ICsJICAgICBwYWdlcyAtPSBub2RlLT5tbV9u b2Rlc1tpXS5zaXplLCArK2kpIHsNCj4gKwkJc3RydWN0IGRybV9tbV9ub2RlICptbSA9ICZu b2RlLT5tbV9ub2Rlc1tpXTsNCj4gICANCj4gKwkJZHJtX21tX3JlbW92ZV9ub2RlKG1tKTsN Cj4gKwkJdmlzX3VzYWdlICs9IGFtZGdwdV92cmFtX21ncl92aXNfc2l6ZShhZGV2LCBtbSk7 DQo+ICsJfQ0KPiAgIAlhbWRncHVfdnJhbV9tZ3JfZG9fcmVzZXJ2ZShtYW4pOw0KPiAtDQo+ IC0JZHJtX2J1ZGR5X2ZyZWVfbGlzdChtbSwgJnZyZXMtPmJsb2Nrcyk7DQo+IC0JbXV0ZXhf dW5sb2NrKCZtZ3ItPmxvY2spOw0KPiArCXNwaW5fdW5sb2NrKCZtZ3ItPmxvY2spOw0KPiAg IA0KPiAgIAlhdG9taWM2NF9zdWIodmlzX3VzYWdlLCAmbWdyLT52aXNfdXNhZ2UpOw0KPiAg IA0KPiAgIAl0dG1fcmVzb3VyY2VfZmluaShtYW4sIHJlcyk7DQo+IC0Ja2ZyZWUodnJlcyk7 DQo+ICsJa3ZmcmVlKG5vZGUpOw0KPiAgIH0NCj4gICANCj4gICAvKioNCj4gQEAgLTYyNiw3 ICs1NDIsNyBAQCBpbnQgYW1kZ3B1X3ZyYW1fbWdyX2FsbG9jX3NndChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwNCj4gICAJaWYgKCEqc2d0KQ0KPiAgIAkJcmV0dXJuIC1FTk9NRU07 DQo+ICAgDQo+IC0JLyogRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgRFJNX0JVRERZIGJsb2Nr cyB0byBleHBvcnQgKi8NCj4gKwkvKiBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBEUk1fTU0g bm9kZXMgdG8gZXhwb3J0ICovDQo+ICAgCWFtZGdwdV9yZXNfZmlyc3QocmVzLCBvZmZzZXQs IGxlbmd0aCwgJmN1cnNvcik7DQo+ICAgCXdoaWxlIChjdXJzb3IucmVtYWluaW5nKSB7DQo+ ICAgCQludW1fZW50cmllcysrOw0KPiBAQCAtNjQyLDEwICs1NTgsMTAgQEAgaW50IGFtZGdw dV92cmFtX21ncl9hbGxvY19zZ3Qoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+ICAg CQlzZy0+bGVuZ3RoID0gMDsNCj4gICANCj4gICAJLyoNCj4gLQkgKiBXYWxrIGRvd24gRFJN X0JVRERZIGJsb2NrcyB0byBwb3B1bGF0ZSBzY2F0dGVybGlzdCBub2Rlcw0KPiAtCSAqIEBu b3RlOiBVc2UgaXRlcmF0b3IgYXBpIHRvIGdldCBmaXJzdCB0aGUgRFJNX0JVRERZIGJsb2Nr DQo+ICsJICogV2FsayBkb3duIERSTV9NTSBub2RlcyB0byBwb3B1bGF0ZSBzY2F0dGVybGlz dCBub2Rlcw0KPiArCSAqIEBub3RlOiBVc2UgaXRlcmF0b3IgYXBpIHRvIGdldCBmaXJzdCB0 aGUgRFJNX01NIG5vZGUNCj4gICAJICogYW5kIHRoZSBudW1iZXIgb2YgYnl0ZXMgZnJvbSBp dC4gQWNjZXNzIHRoZSBmb2xsb3dpbmcNCj4gLQkgKiBEUk1fQlVERFkgYmxvY2socykgaWYg bW9yZSBidWZmZXIgbmVlZHMgdG8gZXhwb3J0ZWQNCj4gKwkgKiBEUk1fTU0gbm9kZShzKSBp ZiBtb3JlIGJ1ZmZlciBuZWVkcyB0byBleHBvcnRlZA0KPiAgIAkgKi8NCj4gICAJYW1kZ3B1 X3Jlc19maXJzdChyZXMsIG9mZnNldCwgbGVuZ3RoLCAmY3Vyc29yKTsNCj4gICAJZm9yX2Vh Y2hfc2d0YWJsZV9zZygoKnNndCksIHNnLCBpKSB7DQo+IEBAIC03MzIsMjIgKzY0OCwxMyBA QCBzdGF0aWMgdm9pZCBhbWRncHVfdnJhbV9tZ3JfZGVidWcoc3RydWN0IHR0bV9yZXNvdXJj ZV9tYW5hZ2VyICptYW4sDQo+ICAgCQkJCSAgc3RydWN0IGRybV9wcmludGVyICpwcmludGVy KQ0KPiAgIHsNCj4gICAJc3RydWN0IGFtZGdwdV92cmFtX21nciAqbWdyID0gdG9fdnJhbV9t Z3IobWFuKTsNCj4gLQlzdHJ1Y3QgZHJtX2J1ZGR5ICptbSA9ICZtZ3ItPm1tOw0KPiAtCXN0 cnVjdCBkcm1fYnVkZHlfYmxvY2sgKmJsb2NrOw0KPiAgIA0KPiAgIAlkcm1fcHJpbnRmKHBy aW50ZXIsICIgIHZpcyB1c2FnZTolbGx1XG4iLA0KPiAgIAkJICAgYW1kZ3B1X3ZyYW1fbWdy X3Zpc191c2FnZShtZ3IpKTsNCj4gICANCj4gLQltdXRleF9sb2NrKCZtZ3ItPmxvY2spOw0K PiAtCWRybV9wcmludGYocHJpbnRlciwgImRlZmF1bHRfcGFnZV9zaXplOiAlbGx1S2lCXG4i LA0KPiAtCQkgICBtZ3ItPmRlZmF1bHRfcGFnZV9zaXplID4+IDEwKTsNCj4gLQ0KPiAtCWRy bV9idWRkeV9wcmludChtbSwgcHJpbnRlcik7DQo+IC0NCj4gLQlkcm1fcHJpbnRmKHByaW50 ZXIsICJyZXNlcnZlZDpcbiIpOw0KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkoYmxvY2ssICZt Z3ItPnJlc2VydmVkX3BhZ2VzLCBsaW5rKQ0KPiAtCQlkcm1fYnVkZHlfYmxvY2tfcHJpbnQo bW0sIGJsb2NrLCBwcmludGVyKTsNCj4gLQltdXRleF91bmxvY2soJm1nci0+bG9jayk7DQo+ ICsJc3Bpbl9sb2NrKCZtZ3ItPmxvY2spOw0KPiArCWRybV9tbV9wcmludCgmbWdyLT5tbSwg cHJpbnRlcik7DQo+ICsJc3Bpbl91bmxvY2soJm1nci0+bG9jayk7DQo+ICAgfQ0KPiAgIA0K PiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXJfZnVuYyBhbWRn cHVfdnJhbV9tZ3JfZnVuYyA9IHsNCj4gQEAgLTc2NywyMSArNjc0LDE2IEBAIGludCBhbWRn cHVfdnJhbV9tZ3JfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikNCj4gICB7DQo+ ICAgCXN0cnVjdCBhbWRncHVfdnJhbV9tZ3IgKm1nciA9ICZhZGV2LT5tbWFuLnZyYW1fbWdy Ow0KPiAgIAlzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiA9ICZtZ3ItPm1hbmFn ZXI7DQo+IC0JaW50IGVycjsNCj4gICANCj4gICAJdHRtX3Jlc291cmNlX21hbmFnZXJfaW5p dChtYW4sICZhZGV2LT5tbWFuLmJkZXYsDQo+ICAgCQkJCSAgYWRldi0+Z21jLnJlYWxfdnJh bV9zaXplKTsNCj4gICANCj4gICAJbWFuLT5mdW5jID0gJmFtZGdwdV92cmFtX21ncl9mdW5j Ow0KPiAgIA0KPiAtCWVyciA9IGRybV9idWRkeV9pbml0KCZtZ3ItPm1tLCBtYW4tPnNpemUs IFBBR0VfU0laRSk7DQo+IC0JaWYgKGVycikNCj4gLQkJcmV0dXJuIGVycjsNCj4gLQ0KPiAt CW11dGV4X2luaXQoJm1nci0+bG9jayk7DQo+ICsJZHJtX21tX2luaXQoJm1nci0+bW0sIDAs IG1hbi0+c2l6ZSA+PiBQQUdFX1NISUZUKTsNCj4gKwlzcGluX2xvY2tfaW5pdCgmbWdyLT5s b2NrKTsNCj4gICAJSU5JVF9MSVNUX0hFQUQoJm1nci0+cmVzZXJ2YXRpb25zX3BlbmRpbmcp Ow0KPiAgIAlJTklUX0xJU1RfSEVBRCgmbWdyLT5yZXNlcnZlZF9wYWdlcyk7DQo+IC0JbWdy LT5kZWZhdWx0X3BhZ2Vfc2l6ZSA9IFBBR0VfU0laRTsNCj4gICANCj4gICAJdHRtX3NldF9k cml2ZXJfbWFuYWdlcigmYWRldi0+bW1hbi5iZGV2LCBUVE1fUExfVlJBTSwgJm1nci0+bWFu YWdlcik7DQo+ICAgCXR0bV9yZXNvdXJjZV9tYW5hZ2VyX3NldF91c2VkKG1hbiwgdHJ1ZSk7 DQo+IEBAIC04MDksMTYgKzcxMSwxNiBAQCB2b2lkIGFtZGdwdV92cmFtX21ncl9maW5pKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQ0KPiAgIAlpZiAocmV0KQ0KPiAgIAkJcmV0dXJu Ow0KPiAgIA0KPiAtCW11dGV4X2xvY2soJm1nci0+bG9jayk7DQo+IC0JbGlzdF9mb3JfZWFj aF9lbnRyeV9zYWZlKHJzdiwgdGVtcCwgJm1nci0+cmVzZXJ2YXRpb25zX3BlbmRpbmcsIGJs b2NrcykNCj4gKwlzcGluX2xvY2soJm1nci0+bG9jayk7DQo+ICsJbGlzdF9mb3JfZWFjaF9l bnRyeV9zYWZlKHJzdiwgdGVtcCwgJm1nci0+cmVzZXJ2YXRpb25zX3BlbmRpbmcsIG5vZGUp DQo+ICAgCQlrZnJlZShyc3YpOw0KPiAgIA0KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfc2Fm ZShyc3YsIHRlbXAsICZtZ3ItPnJlc2VydmVkX3BhZ2VzLCBibG9ja3MpIHsNCj4gLQkJZHJt X2J1ZGR5X2ZyZWVfbGlzdCgmbWdyLT5tbSwgJnJzdi0+YmxvY2tzKTsNCj4gKwlsaXN0X2Zv cl9lYWNoX2VudHJ5X3NhZmUocnN2LCB0ZW1wLCAmbWdyLT5yZXNlcnZlZF9wYWdlcywgbm9k ZSkgew0KPiArCQlkcm1fbW1fcmVtb3ZlX25vZGUoJnJzdi0+bW1fbm9kZSk7DQo+ICAgCQlr ZnJlZShyc3YpOw0KPiAgIAl9DQo+IC0JZHJtX2J1ZGR5X2ZpbmkoJm1nci0+bW0pOw0KPiAt CW11dGV4X3VubG9jaygmbWdyLT5sb2NrKTsNCj4gKwlkcm1fbW1fdGFrZWRvd24oJm1nci0+ bW0pOw0KPiArCXNwaW5fdW5sb2NrKCZtZ3ItPmxvY2spOw0KPiAgIA0KPiAgIAl0dG1fcmVz b3VyY2VfbWFuYWdlcl9jbGVhbnVwKG1hbik7DQo+ICAgCXR0bV9zZXRfZHJpdmVyX21hbmFn ZXIoJmFkZXYtPm1tYW4uYmRldiwgVFRNX1BMX1ZSQU0sIE5VTEwpOw0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZyYW1fbWdyLmggYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdnJhbV9tZ3IuaA0KPiBkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggNGIyNjdiZjFjNWRiLi4wMDAwMDAwMDAwMDANCj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZyYW1fbWdyLmgNCj4g KysrIC9kZXYvbnVsbA0KPiBAQCAtMSw2MiArMCwwIEBADQo+IC0vKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogTUlUDQo+IC0gKiBDb3B5cmlnaHQgMjAyMSBBZHZhbmNlZCBNaWNybyBE ZXZpY2VzLCBJbmMuDQo+IC0gKg0KPiAtICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGENCj4gLSAqIGNv cHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksDQo+IC0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uDQo+IC0gKiB0 aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwNCj4gLSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQ0KPiAtICogU29mdHdh cmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoNCj4gLSAqDQo+IC0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbg0KPiAtICogYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQo+IC0g Kg0KPiAtICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCj4gLSAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ LA0KPiAtICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ TkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMDQo+IC0gKiBUSEUgQ09QWVJJR0hUIEhPTERF UihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IN Cj4gLSAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLA0KPiAtICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SDQo+IC0gKiBP VEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQo+IC0gKg0KPiAtICovDQo+IC0NCj4g LSNpZm5kZWYgX19BTURHUFVfVlJBTV9NR1JfSF9fDQo+IC0jZGVmaW5lIF9fQU1ER1BVX1ZS QU1fTUdSX0hfXw0KPiAtDQo+IC0jaW5jbHVkZSA8ZHJtL2RybV9idWRkeS5oPg0KPiAtDQo+ IC1zdHJ1Y3QgYW1kZ3B1X3ZyYW1fbWdyIHsNCj4gLQlzdHJ1Y3QgdHRtX3Jlc291cmNlX21h bmFnZXIgbWFuYWdlcjsNCj4gLQlzdHJ1Y3QgZHJtX2J1ZGR5IG1tOw0KPiAtCS8qIHByb3Rl Y3RzIGFjY2VzcyB0byBidWZmZXIgb2JqZWN0cyAqLw0KPiAtCXN0cnVjdCBtdXRleCBsb2Nr Ow0KPiAtCXN0cnVjdCBsaXN0X2hlYWQgcmVzZXJ2YXRpb25zX3BlbmRpbmc7DQo+IC0Jc3Ry dWN0IGxpc3RfaGVhZCByZXNlcnZlZF9wYWdlczsNCj4gLQlhdG9taWM2NF90IHZpc191c2Fn ZTsNCj4gLQl1NjQgZGVmYXVsdF9wYWdlX3NpemU7DQo+IC19Ow0KPiAtDQo+IC1zdHJ1Y3Qg YW1kZ3B1X3ZyYW1fbWdyX3Jlc291cmNlIHsNCj4gLQlzdHJ1Y3QgdHRtX3Jlc291cmNlIGJh c2U7DQo+IC0Jc3RydWN0IGxpc3RfaGVhZCBibG9ja3M7DQo+IC0JdW5zaWduZWQgbG9uZyBm bGFnczsNCj4gLX07DQo+IC0NCj4gLXN0YXRpYyBpbmxpbmUgdTY0IGFtZGdwdV92cmFtX21n cl9ibG9ja19zdGFydChzdHJ1Y3QgZHJtX2J1ZGR5X2Jsb2NrICpibG9jaykNCj4gLXsNCj4g LQlyZXR1cm4gZHJtX2J1ZGR5X2Jsb2NrX29mZnNldChibG9jayk7DQo+IC19DQo+IC0NCj4g LXN0YXRpYyBpbmxpbmUgdTY0IGFtZGdwdV92cmFtX21ncl9ibG9ja19zaXplKHN0cnVjdCBk cm1fYnVkZHlfYmxvY2sgKmJsb2NrKQ0KPiAtew0KPiAtCXJldHVybiBQQUdFX1NJWkUgPDwg ZHJtX2J1ZGR5X2Jsb2NrX29yZGVyKGJsb2NrKTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGlu bGluZSBzdHJ1Y3QgYW1kZ3B1X3ZyYW1fbWdyX3Jlc291cmNlICoNCj4gLXRvX2FtZGdwdV92 cmFtX21ncl9yZXNvdXJjZShzdHJ1Y3QgdHRtX3Jlc291cmNlICpyZXMpDQo+IC17DQo+IC0J cmV0dXJuIGNvbnRhaW5lcl9vZihyZXMsIHN0cnVjdCBhbWRncHVfdnJhbV9tZ3JfcmVzb3Vy Y2UsIGJhc2UpOw0KPiAtfQ0KPiAtDQo+IC0jZW5kaWYNCg0KLS0gDQpUaG9tYXMgWmltbWVy bWFubg0KR3JhcGhpY3MgRHJpdmVyIERldmVsb3Blcg0KU1VTRSBTb2Z0d2FyZSBTb2x1dGlv bnMgR2VybWFueSBHbWJIDQpNYXhmZWxkc3RyLiA1LCA5MDQwOSBOw7xybmJlcmcsIEdlcm1h bnkNCihIUkIgMzY4MDksIEFHIE7DvHJuYmVyZykNCkdlc2Now6RmdHNmw7xocmVyOiBJdm8g VG90ZXYNCg== --------------Rb2XrQUvIry4EYmn59lzFFL6-- --------------xLllenh25Vmz4USZ1x2jo07B 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+AFAmLP1+IFAwAAAAAACgkQlh/E3EQov+Cp DxAAsrKACP6cqSU7KeqhmiRsiTLtkeXWKn5s6pOSNTbCVsfmpq9JZIzF7wO8KbtZwqT09BHHrtPO O5DJldwAerV4aAeHS4pGXdRfBvsir3MlRjW0iusVS/CFUXC80syQodfen+OnfLlQ8/AZz9mqFKPu KjnYcvV3m/bWOz2g9F1+CHXLv07m0oyd2fExqS3s0hfOK3rbC8IuquRqZ/BXtpnUt0jzS5u0M5pr s9J8qbJSVxO/MapPnPe3HGZvP3YGrsOk1YhCDPwjpVNypM2g3n8/98ugEGjM+xiOO4qKAxAgUv9L Zmy3Ngw/w9gSjZc0FRfordl4tjolI4dnJZwG9le5MfM8tfO+XI0aPywPF7/DpnIzeJXV4DHH5exy vuogwS/U4DCgGfwS2O1bvdpDING/XTwctWQed/4jcdftbrgidbERZyAD7nb+Bfzy2Lqyd+HG7tOF GEC38/XEy8Xta7Zws4KA63HO5bios4DNFYxgSOJqhrQ0D0fWwUeHchzmcgjnlfG2zErZGURA6VSO ARnZIr/0dnKq923cETQMg1deWH6EfL9wKX+7CaCoOvPQczSk/EkAewkocaJ4t335vIRSRl0dILwo /5E31FvdOWG3p2qjXwSxirlIcHuWDPEny/1h6l4M0s8Fl8cV4f3w/8xYCAaPfbHHgcYY1i4mxeZa M18= =Bpyd -----END PGP SIGNATURE----- --------------xLllenh25Vmz4USZ1x2jo07B--