Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp1841276pxb; Wed, 9 Feb 2022 05:44:49 -0800 (PST) X-Google-Smtp-Source: ABdhPJxowmZNSRSI2KeEai3ErDybkI5wT20cIlwUCM8Jpx7isfKNmOe3Cg/4m5rye3E0A/iNsboB X-Received: by 2002:a63:6b46:: with SMTP id g67mr1964181pgc.150.1644414289103; Wed, 09 Feb 2022 05:44:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644414289; cv=none; d=google.com; s=arc-20160816; b=oKBhLjtZixx04cDooJR/9PyO7cRHEuiSlBzF01SFbrK6fmzLx+FbFvE1tCCpRkxiOb bl4++ShOBFSNS8YhoY8wa/MpxhIUMXzQnl2b8M+ebSZvrfUTJ2zCltpjxtBk54uucpRm N1inAdaM0K0z01q/PTCU3KqbqsNVDd+7XWYiqifpct6em3lVIEwQCC5xe8uUx2oc7mqZ iFkzyo81bUsW0jioxjwiLhPT4hbjM8J68Th7XpN51v0eFVXQUfy4es5aS/1yldup2h0P iYf8ip6u3wvk847CXf/fDt/r+m1eLol9qWEXymOtbcD6j1IU3EjIcgyYXRzN5wVkFWx5 yJjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :dkim-signature:dkim-signature; bh=uy68hcEWgASqotQY2eTfT/YVYgBCm/bemdvnGG5wI64=; b=eUoXefFkEuVnbbzcfHwlIpmr52PZdWINYi8a+qvzCSdNOmrckvzhlwg2/2TsuxeSae Msc4KRp6p5L4FJU0lZXY8Ig+qwFmj6ppqQVHW2RPOKBaw0s5Q0z9w5pRS5vC6xg/T+4H jFN/23HLk38/U4ryD3GueYm7nCq5PNHDO9pVm19qo5Wc+khFtxB/RR9lDS5up8sXFIq7 T5J5NORH8dYe5MmJFVzygVEM+VunhYcAJK1siAerLhH++O+NymEWcJUTj5ey9Mr9frfN 8eLe3wP16H0zcd6Ad+DKkNem9V16PZc40NziMbWfb6HfuA58/yUpaX0PmkZa3Jbr9FQ2 vs2g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=Wdfc5dqy; dkim=neutral (no key) header.i=@suse.de; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id b4si15342576plr.18.2022.02.09.05.44.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Feb 2022 05:44:49 -0800 (PST) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=Wdfc5dqy; dkim=neutral (no key) header.i=@suse.de; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 11F3DE03492E; Wed, 9 Feb 2022 02:26:14 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234378AbiBIGYs (ORCPT + 99 others); Wed, 9 Feb 2022 01:24:48 -0500 Received: from gmail-smtp-in.l.google.com ([23.128.96.19]:44100 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236072AbiBIGXD (ORCPT ); Wed, 9 Feb 2022 01:23:03 -0500 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 77F2BC035414 for ; Tue, 8 Feb 2022 22:23:06 -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-out1.suse.de (Postfix) with ESMTPS id 0B7C9210F0; Wed, 9 Feb 2022 06:23:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1644387785; 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=uy68hcEWgASqotQY2eTfT/YVYgBCm/bemdvnGG5wI64=; b=Wdfc5dqyivC61AvLB5G10QuXSUBESLEx/H9NBr81HiCA6+0M0AAyn+MXEpApLudV9bF0Io jONzQCZkk+x1yQ2FrKBNmRPvIc+0W7zXKg27I1QpCYltALZTS5KAOABzuEGT41MQNXXeAL cpvwY24wh+Lt4ZklBBgiN5b+FOCOmlc= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1644387785; 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=uy68hcEWgASqotQY2eTfT/YVYgBCm/bemdvnGG5wI64=; b=LXyV4K+KUIhjk+1W6HmWBHPT3J7didXOuzVHVJ60mXNyBY8eeOBXGrDrGXH8o0ExQVfBgE Xu/TJFwWP4I8vOBA== 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 C15671332F; Wed, 9 Feb 2022 06:23:04 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id npJ3LchdA2LkbwAAMHmgww (envelope-from ); Wed, 09 Feb 2022 06:23:04 +0000 Message-ID: <863e61f9-2888-11a2-271b-a443f4681987@suse.de> Date: Wed, 9 Feb 2022 07:23:04 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: [PATCH v2 02/18] iosys-map: Add a few more helpers Content-Language: en-US To: Lucas De Marchi , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: Matthew Brost , =?UTF-8?Q?Thomas_Hellstr=c3=b6m?= , linux-kernel@vger.kernel.org, Daniele Ceraolo Spurio , Mauro Carvalho Chehab , =?UTF-8?Q?Christian_K=c3=b6nig?= , John Harrison References: <20220208104524.2516209-1-lucas.demarchi@intel.com> <20220208104524.2516209-3-lucas.demarchi@intel.com> From: Thomas Zimmermann In-Reply-To: <20220208104524.2516209-3-lucas.demarchi@intel.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------KiAiXzNuou4lKnwlAN3xLhD0" X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,NICE_REPLY_A,RDNS_NONE,SPF_HELO_NONE, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------KiAiXzNuou4lKnwlAN3xLhD0 Content-Type: multipart/mixed; boundary="------------UgFgHeVlDYvjGkUa4Fc8VSbx"; protected-headers="v1" From: Thomas Zimmermann To: Lucas De Marchi , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: Matthew Brost , =?UTF-8?Q?Thomas_Hellstr=c3=b6m?= , linux-kernel@vger.kernel.org, Daniele Ceraolo Spurio , Mauro Carvalho Chehab , =?UTF-8?Q?Christian_K=c3=b6nig?= , John Harrison Message-ID: <863e61f9-2888-11a2-271b-a443f4681987@suse.de> Subject: Re: [PATCH v2 02/18] iosys-map: Add a few more helpers References: <20220208104524.2516209-1-lucas.demarchi@intel.com> <20220208104524.2516209-3-lucas.demarchi@intel.com> In-Reply-To: <20220208104524.2516209-3-lucas.demarchi@intel.com> --------------UgFgHeVlDYvjGkUa4Fc8VSbx Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMDguMDIuMjIgdW0gMTE6NDUgc2NocmllYiBMdWNhcyBEZSBNYXJjaGk6DQo+ IEZpcnN0IHRoZSBzaW1wbGVzdCBvbmVzOg0KPiANCj4gCS0gaW9zeXNfbWFwX21lbXNldCgp OiB3aGVuIGFic3RyYWN0aW5nIHN5c3RlbSBhbmQgSS9PIG1lbW9yeSwNCj4gCSAganVzdCBs aWtlIHRoZSBtZW1jcHkoKSB1c2UgY2FzZSwgbWVtc2V0KCkgYWxzbyBoYXMgZGVkaWNhdGVk DQo+IAkgIGZ1bmN0aW9ucyB0byBiZSBjYWxsZWQgZm9yIHVzaW5nIElPIG1lbW9yeS4NCj4g CS0gaW9zeXNfbWFwX21lbWNweV9mcm9tKCk6IHdlIG1heSBuZWVkIHRvIGNvcHkgZGF0YSBm cm9tIEkvTw0KPiAJICBtZW1vcnksIG5vdCBvbmx5IHRvLg0KPiANCj4gSW4gY2VydGFpbiBz aXR1YXRpb25zIGl0J3MgdXNlZnVsIHRvIGJlIGFibGUgdG8gcmVhZCBvciB3cml0ZSB0byBh bg0KPiBvZmZzZXQgdGhhdCBpcyBjYWxjdWxhdGVkIGJ5IGhhdmluZyB0aGUgbWVtb3J5IGxh eW91dCBnaXZlbiBieSBhIHN0cnVjdA0KPiBkZWNsYXJhdGlvbi4gVXN1YWxseSB3ZSBhcmUg Z29pbmcgdG8gcmVhZC93cml0ZSBhIHU4LCB1MTYsIHUzMiBvciB1NjQuDQo+IA0KPiBBcyBh IHByZS1yZXF1aXNpdGUgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiwgYWRkIGlvc3lzX21hcF9t ZW1jcHlfZnJvbSgpDQo+IHRvIGJlIHRoZSBlcXVpdmFsZW50IG9mIGlvc3lzX21hcF9tZW1j cHlfdG8oKSwgYnV0IGluIHRoZSBvdGhlcg0KPiBkaXJlY3Rpb24uIFRoZW4gYWRkIDIgcGFp cnMgb2YgbWFjcm9zOg0KPiANCj4gCS0gaW9zeXNfbWFwX3JkKCkgLyBpb3N5c19tYXBfd3Io KQ0KPiAJLSBpb3N5c19tYXBfcmRfZmllbGQoKSAvIGlvc3lzX21hcF93cl9maWVsZCgpDQo+ IA0KPiBUaGUgZmlyc3QgcGFpciB0YWtlcyB0aGUgQy10eXBlIGFuZCBvZmZzZXQgdG8gcmVh ZC93cml0ZS4gVGhlIHNlY29uZA0KPiBwYWlyIHVzZXMgYSBzdHJ1Y3QgZGVzY3JpYmluZyB0 aGUgbGF5b3V0IG9mIHRoZSBtYXBwaW5nIGluIG9yZGVyIHRvDQo+IGNhbGN1bGF0ZSB0aGUg b2Zmc2V0IGFuZCBzaXplIGJlaW5nIHJlYWQvd3JpdHRlbi4NCj4gDQo+IFdlIGNvdWxkIHVz ZSByZWFkYiwgcmVhZHcsIHJlYWRsLCByZWFkcSBhbmQgdGhlIHdyaXRlKiBjb3VudGVycGFy dHMsDQo+IGhvd2V2ZXIgZHVlIHRvIGFsaWdubWVudCBpc3N1ZXMgdGhpcyBtYXkgbm90IHdv cmsgb24gYWxsIGFyY2hpdGVjdHVyZXMuDQo+IElmIGFsaWdubWVudCBuZWVkcyB0byBiZSBj aGVja2VkIHRvIGNhbGwgdGhlIHJpZ2h0IGZ1bmN0aW9uLCBpdCdzIG5vdA0KPiBwb3NzaWJs ZSB0byBkZWNpZGUgYXQgY29tcGlsZS10aW1lIHdoaWNoIGZ1bmN0aW9uIHRvIGNhbGw6IHNv IGp1c3QgbGVhdmUNCj4gdGhlIGRlY2lzaW9uIHRvIHRoZSBtZW1jcHkgZnVuY3Rpb24gdGhh dCB3aWxsIGRvIGV4YWN0bHkgdGhhdC4NCj4gDQo+IEZpbmFsbHksIGluIG9yZGVyIHRvIHVz ZSB0aGUgYWJvdmUgbWFjcm9zIHdpdGggYSBtYXAgZGVyaXZlZCBmcm9tDQo+IGFub3RoZXIs IGFkZCBhbm90aGVyIGluaXRpYWxpemVyOiBJT1NZU19NQVBfSU5JVF9PRkZTRVQoKS4NCj4g DQo+IHYyOg0KPiAgICAtIFJld29yayBJT1NZU19NQVBfSU5JVF9PRkZTRVQoKSBzbyBpdCBk b2Vzbid0IHJlbHkgb24gYWxpYXNpbmcgcnVsZXMNCj4gICAgICB3aXRoaW4gdGhlIHVuaW9u DQo+ICAgIC0gQWRkIG9mZnNldCB0byBib3RoIGlvc3lzX21hcF9yZF9maWVsZCgpIGFuZCBp b3N5c19tYXBfd3JfZmllbGQoKSB0bw0KPiAgICAgIGFsbG93IHRoZSBzdHJ1Y3QgaXRzZWxm IHRvIGJlIGF0IGFuIG9mZnNldCBmcm9tIHRoZSBtYXBwaW5nDQo+ICAgIC0gQWRkIGRvY3Vt ZW50YXRpb24gdG8gaW9zeXNfbWFwX3JkX2ZpZWxkKCkgd2l0aCBleGFtcGxlIGFuZCBleHBl Y3RlZA0KPiAgICAgIG1lbW9yeSBsYXlvdXQNCj4gDQo+IENjOiBTdW1pdCBTZW13YWwgPHN1 bWl0LnNlbXdhbEBsaW5hcm8ub3JnPg0KPiBDYzogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0 aWFuLmtvZW5pZ0BhbWQuY29tPg0KPiBDYzogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJt YW5uQHN1c2UuZGU+DQo+IENjOiBNYXVybyBDYXJ2YWxobyBDaGVoYWIgPG1jaGVoYWJAa2Vy bmVsLm9yZz4NCj4gQ2M6IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gQ2M6 IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcNCj4gU2lnbmVkLW9mZi1ieTogTHVjYXMg RGUgTWFyY2hpIDxsdWNhcy5kZW1hcmNoaUBpbnRlbC5jb20+DQo+IC0tLQ0KPiAgIGluY2x1 ZGUvbGludXgvaW9zeXMtbWFwLmggfCAyMDIgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysNCj4gICAxIGZpbGUgY2hhbmdlZCwgMjAyIGluc2VydGlvbnMoKykNCj4g DQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lvc3lzLW1hcC5oIGIvaW5jbHVkZS9s aW51eC9pb3N5cy1tYXAuaA0KPiBpbmRleCBlZGQ3MzBiMWU4OTkuLmM2YjIyMzUzNGIyMSAx MDA2NDQNCj4gLS0tIGEvaW5jbHVkZS9saW51eC9pb3N5cy1tYXAuaA0KPiArKysgYi9pbmNs dWRlL2xpbnV4L2lvc3lzLW1hcC5oDQo+IEBAIC02LDYgKzYsNyBAQA0KPiAgICNpZm5kZWYg X19JT1NZU19NQVBfSF9fDQo+ICAgI2RlZmluZSBfX0lPU1lTX01BUF9IX18NCj4gICANCj4g KyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCj4gICAjaW5jbHVkZSA8bGludXgvaW8uaD4N Cj4gICAjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+DQoNCkFscGhhYmV0aWNhbGx5IHNvcnRl ZCwgcGxlYXNlLg0KDQpXaGF0IHJlcXVpcmVzIGtlcm5lbC5oPyBDYW4gdGhpcyBiZSByZWR1 Y2VkIHRvIGFub3RoZXIgaW5jbHVkZSANCnN0YXRlbWVudD8gTWF5YmUgc3RkZGVmLmggZm9y IG9mZnNldG9mKCkgPw0KDQpCZXN0IHJlZ2FyZHMNClRob21hcw0KDQo+ICAgDQo+IEBAIC0x MjAsNiArMTIxLDQ1IEBAIHN0cnVjdCBpb3N5c19tYXAgew0KPiAgIAkJLmlzX2lvbWVtID0g ZmFsc2UsCVwNCj4gICAJfQ0KPiAgIA0KPiArLyoqDQo+ICsgKiBJT1NZU19NQVBfSU5JVF9P RkZTRVQgLSBJbml0aWFsaXplcyBzdHJ1Y3QgaW9zeXNfbWFwIGZyb20gYW5vdGhlciBpb3N5 c19tYXANCj4gKyAqIEBtYXBfOglUaGUgZG1hLWJ1ZiBtYXBwaW5nIHN0cnVjdHVyZSB0byBj b3B5IGZyb20NCj4gKyAqIEBvZmZzZXRfOglPZmZzZXQgdG8gYWRkIHRvIHRoZSBvdGhlciBt YXBwaW5nDQo+ICsgKg0KPiArICogSW5pdGlhbGl6ZXMgYSBuZXcgaW9zeXNfbWFwIHN0cnVj dCBiYXNlZCBvbiBhbm90aGVyIHBhc3NlZCBhcyBhcmd1bWVudC4gSXQNCj4gKyAqIGRvZXMg YSBzaGFsbG93IGNvcHkgb2YgdGhlIHN0cnVjdCBzbyBpdCdzIHBvc3NpYmxlIHRvIHVwZGF0 ZSB0aGUgYmFjayBzdG9yYWdlDQo+ICsgKiB3aXRob3V0IGNoYW5naW5nIHdoZXJlIHRoZSBv cmlnaW5hbCBtYXAgcG9pbnRzIHRvLiBJdCBpcyB0aGUgZXF1aXZhbGVudCBvZg0KPiArICog ZG9pbmc6DQo+ICsgKg0KPiArICogLi4gY29kZS1ibG9jazo6IGMNCj4gKyAqDQo+ICsgKglp b3N5c19tYXAgbWFwID0gb3RoZXJfbWFwOw0KPiArICoJaW9zeXNfbWFwX2luY3IoJm1hcCwg Jm9mZnNldCk7DQo+ICsgKg0KPiArICogRXhhbXBsZSB1c2FnZToNCj4gKyAqDQo+ICsgKiAu LiBjb2RlLWJsb2NrOjogYw0KPiArICoNCj4gKyAqCXZvaWQgZm9vKHN0cnVjdCBkZXZpY2Ug KmRldiwgc3RydWN0IGlvc3lzX21hcCAqYmFzZV9tYXApDQo+ICsgKgl7DQo+ICsgKgkJLi4u DQo+ICsgKgkJc3RydWN0IGlvc3lzX21hcCBtYXAgPSBJT1NZU19NQVBfSU5JVF9PRkZTRVQo YmFzZV9tYXAsIEZJRUxEX09GRlNFVCk7DQo+ICsgKgkJLi4uDQo+ICsgKgl9DQo+ICsgKg0K PiArICogVGhlIGFkdmFudGFnZSBvZiB1c2luZyB0aGUgaW5pdGlhbGl6ZXIgb3ZlciBqdXN0 IGluY3JlYXNpbmcgdGhlIG9mZnNldCB3aXRoDQo+ICsgKiBpb3N5c19tYXBfaW5jcigpIGxp a2UgYWJvdmUgaXMgdGhhdCB0aGUgbmV3IG1hcCB3aWxsIGFsd2F5cyBwb2ludCB0byB0aGUN Cj4gKyAqIHJpZ2h0IHBsYWNlIG9mIHRoZSBidWZmZXIgZHVyaW5nIGl0cyBzY29wZS4gSXQg cmVkdWNlcyB0aGUgcmlzayBvZiB1cGRhdGluZw0KPiArICogdGhlIHdyb25nIHBhcnQgb2Yg dGhlIGJ1ZmZlciBhbmQgaGF2aW5nIG5vIGNvbXBpbGVyIHdhcm5pbmcgYWJvdXQgdGhhdC4g SWYNCj4gKyAqIHRoZSBhc3NpZ25tZW50IHRvIElPU1lTX01BUF9JTklUX09GRlNFVCgpIGlz IGZvcmdvdHRlbiwgdGhlIGNvbXBpbGVyIGNhbiB3YXJuDQo+ICsgKiBhYm91dCB0aGUgdXNl IG9mIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuDQo+ICsgKi8NCj4gKyNkZWZpbmUgSU9TWVNf TUFQX0lOSVRfT0ZGU0VUKG1hcF8sIG9mZnNldF8pICh7CQkJCVwNCj4gKwlzdHJ1Y3QgaW9z eXNfbWFwIGNvcHkgPSAqbWFwXzsJCQkJCVwNCj4gKwlpb3N5c19tYXBfaW5jcigmY29weSwg b2Zmc2V0Xyk7CQkJCQlcDQo+ICsJY29weTsJCQkJCQkJCVwNCj4gK30pDQo+ICsNCj4gICAv KioNCj4gICAgKiBpb3N5c19tYXBfc2V0X3ZhZGRyIC0gU2V0cyBhIGlvc3lzIG1hcHBpbmcg c3RydWN0dXJlIHRvIGFuIGFkZHJlc3MgaW4gc3lzdGVtIG1lbW9yeQ0KPiAgICAqIEBtYXA6 CVRoZSBpb3N5c19tYXAgc3RydWN0dXJlDQo+IEBAIC0yMzksNiArMjc5LDI2IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBpb3N5c19tYXBfbWVtY3B5X3RvKHN0cnVjdCBpb3N5c19tYXAgKmRz dCwgc2l6ZV90IGRzdF9vZmZzZXQsDQo+ICAgCQltZW1jcHkoZHN0LT52YWRkciArIGRzdF9v ZmZzZXQsIHNyYywgbGVuKTsNCj4gICB9DQo+ICAgDQo+ICsvKioNCj4gKyAqIGlvc3lzX21h cF9tZW1jcHlfZnJvbSAtIE1lbWNweSBmcm9tIGlvc3lzX21hcCBpbnRvIHN5c3RlbSBtZW1v cnkNCj4gKyAqIEBkc3Q6CURlc3RpbmF0aW9uIGluIHN5c3RlbSBtZW1vcnkNCj4gKyAqIEBz cmM6CVRoZSBpb3N5c19tYXAgc3RydWN0dXJlDQo+ICsgKiBAc3JjX29mZnNldDoJVGhlIG9m ZnNldCBmcm9tIHdoaWNoIHRvIGNvcHkNCj4gKyAqIEBsZW46CVRoZSBudW1iZXIgb2YgYnl0 ZSBpbiBzcmMNCj4gKyAqDQo+ICsgKiBDb3BpZXMgZGF0YSBmcm9tIGEgaW9zeXNfbWFwIHdp dGggYW4gb2Zmc2V0LiBUaGUgZGVzdCBidWZmZXIgaXMgaW4NCj4gKyAqIHN5c3RlbSBtZW1v cnkuIERlcGVuZGluZyBvbiB0aGUgbWFwcGluZyBsb2NhdGlvbiwgdGhlIGhlbHBlciBwaWNr cyB0aGUNCj4gKyAqIGNvcnJlY3QgbWV0aG9kIG9mIGFjY2Vzc2luZyB0aGUgbWVtb3J5Lg0K PiArICovDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgaW9zeXNfbWFwX21lbWNweV9mcm9tKHZv aWQgKmRzdCwgY29uc3Qgc3RydWN0IGlvc3lzX21hcCAqc3JjLA0KPiArCQkJCQkgc2l6ZV90 IHNyY19vZmZzZXQsIHNpemVfdCBsZW4pDQo+ICt7DQo+ICsJaWYgKHNyYy0+aXNfaW9tZW0p DQo+ICsJCW1lbWNweV9mcm9taW8oZHN0LCBzcmMtPnZhZGRyX2lvbWVtICsgc3JjX29mZnNl dCwgbGVuKTsNCj4gKwllbHNlDQo+ICsJCW1lbWNweShkc3QsIHNyYy0+dmFkZHIgKyBzcmNf b2Zmc2V0LCBsZW4pOw0KPiArfQ0KPiArDQo+ICAgLyoqDQo+ICAgICogaW9zeXNfbWFwX2lu Y3IgLSBJbmNyZW1lbnRzIHRoZSBhZGRyZXNzIHN0b3JlZCBpbiBhIGlvc3lzIG1hcHBpbmcN Cj4gICAgKiBAbWFwOglUaGUgaW9zeXNfbWFwIHN0cnVjdHVyZQ0KPiBAQCAtMjU1LDQgKzMx NSwxNDYgQEAgc3RhdGljIGlubGluZSB2b2lkIGlvc3lzX21hcF9pbmNyKHN0cnVjdCBpb3N5 c19tYXAgKm1hcCwgc2l6ZV90IGluY3IpDQo+ICAgCQltYXAtPnZhZGRyICs9IGluY3I7DQo+ ICAgfQ0KPiAgIA0KPiArLyoqDQo+ICsgKiBpb3N5c19tYXBfbWVtc2V0IC0gTWVtc2V0IGlv c3lzX21hcA0KPiArICogQGRzdDoJVGhlIGlvc3lzX21hcCBzdHJ1Y3R1cmUNCj4gKyAqIEBv ZmZzZXQ6CU9mZnNldCBmcm9tIGRzdCB3aGVyZSB0byBzdGFydCBzZXR0aW5nIHZhbHVlDQo+ ICsgKiBAdmFsdWU6CVRoZSB2YWx1ZSB0byBzZXQNCj4gKyAqIEBsZW46CVRoZSBudW1iZXIg b2YgYnl0ZXMgdG8gc2V0IGluIGRzdA0KPiArICoNCj4gKyAqIFNldCB2YWx1ZSBpbiBpb3N5 c19tYXAuIERlcGVuZGluZyBvbiB0aGUgYnVmZmVyJ3MgbG9jYXRpb24sIHRoZSBoZWxwZXIN Cj4gKyAqIHBpY2tzIHRoZSBjb3JyZWN0IG1ldGhvZCBvZiBhY2Nlc3NpbmcgdGhlIG1lbW9y eS4NCj4gKyAqLw0KPiArc3RhdGljIGlubGluZSB2b2lkIGlvc3lzX21hcF9tZW1zZXQoc3Ry dWN0IGlvc3lzX21hcCAqZHN0LCBzaXplX3Qgb2Zmc2V0LA0KPiArCQkJCSAgICBpbnQgdmFs dWUsIHNpemVfdCBsZW4pDQo+ICt7DQo+ICsJaWYgKGRzdC0+aXNfaW9tZW0pDQo+ICsJCW1l bXNldF9pbyhkc3QtPnZhZGRyX2lvbWVtICsgb2Zmc2V0LCB2YWx1ZSwgbGVuKTsNCj4gKwll bHNlDQo+ICsJCW1lbXNldChkc3QtPnZhZGRyICsgb2Zmc2V0LCB2YWx1ZSwgbGVuKTsNCj4g K30NCj4gKw0KPiArLyoqDQo+ICsgKiBpb3N5c19tYXBfcmQgLSBSZWFkIGEgQy10eXBlIHZh bHVlIGZyb20gdGhlIGlvc3lzX21hcA0KPiArICoNCj4gKyAqIEBtYXBfXzoJVGhlIGlvc3lz X21hcCBzdHJ1Y3R1cmUNCj4gKyAqIEBvZmZzZXRfXzoJVGhlIG9mZnNldCBmcm9tIHdoaWNo IHRvIHJlYWQNCj4gKyAqIEB0eXBlX186CVR5cGUgb2YgdGhlIHZhbHVlIGJlaW5nIHJlYWQN Cj4gKyAqDQo+ICsgKiBSZWFkIGEgQyB0eXBlIHZhbHVlIGZyb20gaW9zeXNfbWFwLCBoYW5k bGluZyBwb3NzaWJsZSB1bi1hbGlnbmVkIGFjY2Vzc2VzIHRvDQo+ICsgKiB0aGUgbWFwcGlu Zy4NCj4gKyAqDQo+ICsgKiBSZXR1cm5zOg0KPiArICogVGhlIHZhbHVlIHJlYWQgZnJvbSB0 aGUgbWFwcGluZy4NCj4gKyAqLw0KPiArI2RlZmluZSBpb3N5c19tYXBfcmQobWFwX18sIG9m ZnNldF9fLCB0eXBlX18pICh7CQkJXA0KPiArCXR5cGVfXyB2YWw7CQkJCQkJCVwNCj4gKwlp b3N5c19tYXBfbWVtY3B5X2Zyb20oJnZhbCwgbWFwX18sIG9mZnNldF9fLCBzaXplb2YodmFs KSk7CVwNCj4gKwl2YWw7CQkJCQkJCQlcDQo+ICt9KQ0KPiArDQo+ICsvKioNCj4gKyAqIGlv c3lzX21hcF93ciAtIFdyaXRlIGEgQy10eXBlIHZhbHVlIHRvIHRoZSBpb3N5c19tYXANCj4g KyAqDQo+ICsgKiBAbWFwX186CVRoZSBpb3N5c19tYXAgc3RydWN0dXJlDQo+ICsgKiBAb2Zm c2V0X186CVRoZSBvZmZzZXQgZnJvbSB0aGUgbWFwcGluZyB0byB3cml0ZSB0bw0KPiArICog QHR5cGVfXzoJVHlwZSBvZiB0aGUgdmFsdWUgYmVpbmcgd3JpdHRlbg0KPiArICogQHZhbF9f OglWYWx1ZSB0byB3cml0ZQ0KPiArICoNCj4gKyAqIFdyaXRlIGEgQy10eXBlIHZhbHVlIHRv IHRoZSBpb3N5c19tYXAsIGhhbmRsaW5nIHBvc3NpYmxlIHVuLWFsaWduZWQgYWNjZXNzZXMN Cj4gKyAqIHRvIHRoZSBtYXBwaW5nLg0KPiArICovDQo+ICsjZGVmaW5lIGlvc3lzX21hcF93 cihtYXBfXywgb2Zmc2V0X18sIHR5cGVfXywgdmFsX18pICh7CQkJXA0KPiArCXR5cGVfXyB2 YWwgPSAodmFsX18pOwkJCQkJCVwNCj4gKwlpb3N5c19tYXBfbWVtY3B5X3RvKG1hcF9fLCBv ZmZzZXRfXywgJnZhbCwgc2l6ZW9mKHZhbCkpOwlcDQo+ICt9KQ0KPiArDQo+ICsvKioNCj4g KyAqIGlvc3lzX21hcF9yZF9maWVsZCAtIFJlYWQgYSBtZW1iZXIgZnJvbSBhIHN0cnVjdCBp biB0aGUgaW9zeXNfbWFwDQo+ICsgKg0KPiArICogQG1hcF9fOgkJVGhlIGlvc3lzX21hcCBz dHJ1Y3R1cmUNCj4gKyAqIEBzdHJ1Y3Rfb2Zmc2V0X186CU9mZnNldCBmcm9tIHRoZSBiZWdn aW5pbmcgb2YgdGhlIG1hcCwgd2hlcmUgdGhlIHN0cnVjdA0KPiArICoJCQlpcyBsb2NhdGVk DQo+ICsgKiBAc3RydWN0X3R5cGVfXzoJVGhlIHN0cnVjdCBkZXNjcmliaW5nIHRoZSBsYXlv dXQgb2YgdGhlIG1hcHBpbmcNCj4gKyAqIEBmaWVsZF9fOgkJTWVtYmVyIG9mIHRoZSBzdHJ1 Y3QgdG8gcmVhZA0KPiArICoNCj4gKyAqIFJlYWQgYSB2YWx1ZSBmcm9tIGlvc3lzX21hcCBj b25zaWRlcmluZyBpdHMgbGF5b3V0IGlzIGRlc2NyaWJlZCBieSBhIEMgc3RydWN0DQo+ICsg KiBzdGFydGluZyBhdCBAc3RydWN0X29mZnNldF9fLiBUaGUgZmllbGQgb2Zmc2V0IGFuZCBz aXplIGlzIGNhbGN1bGF0ZWQgYW5kIGl0cw0KPiArICogdmFsdWUgcmVhZCBoYW5kbGluZyBw b3NzaWJsZSB1bi1hbGlnbmVkIG1lbW9yeSBhY2Nlc3Nlcy4gRm9yIGV4YW1wbGU6IHN1cHBv c2UNCj4gKyAqIHRoZXJlIGlzIGEgQHN0cnVjdCBmb28gZGVmaW5lZCBhcyBiZWxvdyBhbmQg dGhlIHZhbHVlIGBgZm9vLmZpZWxkMi5pbm5lcjJgYA0KPiArICogbmVlZHMgdG8gYmUgcmVh ZCBmcm9tIHRoZSBpb3N5c19tYXA6DQo+ICsgKg0KPiArICogLi4gY29kZS1ibG9jazo6IGMN Cj4gKyAqDQo+ICsgKglzdHJ1Y3QgZm9vIHsNCj4gKyAqCQlpbnQgZmllbGQxOw0KPiArICoJ CXN0cnVjdCB7DQo+ICsgKgkJCWludCBpbm5lcjE7DQo+ICsgKgkJCWludCBpbm5lcjI7DQo+ ICsgKgkJfSBmaWVsZDI7DQo+ICsgKgkJaW50IGZpZWxkMzsNCj4gKyAqCX0gX19wYWNrZWQ7 DQo+ICsgKg0KPiArICogVGhpcyBpcyB0aGUgZXhwZWN0ZWQgbWVtb3J5IGxheW91dCBvZiBh IGJ1ZmZlciB1c2luZyBpb3N5c19tYXBfcmRfZmllbGQoKToNCj4gKyAqDQo+ICsgKiArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kw0KPiArICogfCBBZGRyZXNzICAgICAgICAgICAgICAgICAgICAgIHwgQ29udGVudCAgICAg ICAgICAgICAgICAgIHwNCj4gKyAqICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0r PT09PT09PT09PT09PT09PT09PT09PT09PT0rDQo+ICsgKiB8IGJ1ZmZlciArIDAwMDAgICAg ICAgICAgICAgICAgfCBzdGFydCBvZiBtbWFwcGVkIGJ1ZmZlciAgfA0KPiArICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcG9pbnRlZCBieSBpb3N5c19tYXAgICAgIHwN Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rDQo+ICsgKiB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgfCAu Li4gICAgICAgICAgICAgICAgICAgICAgfA0KPiArICogKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gKyAqIHwgYnVmZmVy ICsgYGBzdHJ1Y3Rfb2Zmc2V0X19gYCB8IHN0YXJ0IG9mIGBgc3RydWN0IGZvb2BgICB8DQo+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKw0KPiArICogfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgLi4u ICAgICAgICAgICAgICAgICAgICAgIHwNCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+ICsgKiB8IGJ1ZmZlciAr IHd3d3cgICAgICAgICAgICAgICAgfCBgYGZvby5maWVsZDIuaW5uZXIyYGAgICAgfA0KPiAr ICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSsNCj4gKyAqIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICB8IC4uLiAg ICAgICAgICAgICAgICAgICAgICB8DQo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPiArICogfCBidWZmZXIgKyB5 eXl5ICAgICAgICAgICAgICAgIHwgZW5kIG9mIGBgc3RydWN0IGZvb2BgICAgIHwNCj4gKyAq ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rDQo+ICsgKiB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgfCAuLi4gICAg ICAgICAgICAgICAgICAgICAgfA0KPiArICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gKyAqIHwgYnVmZmVyICsgenp6 eiAgICAgICAgICAgICAgICB8IGVuZCBvZiBtbWFwZWQgYnVmZmVyICAgICB8DQo+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKw0KPiArICoNCj4gKyAqIFZhbHVlcyBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgYnkg dGhpcyBtYWNybyBvciBub3QgbmVlZGVkIGFyZSBkZW5vdGVkIGJ5DQo+ICsgKiB3d3d3LCB5 eXl5IGFuZCB6enp6LiBUaGlzIGlzIHRoZSBjb2RlIHRvIHJlYWQgdGhhdCB2YWx1ZToNCj4g KyAqDQo+ICsgKiAuLiBjb2RlLWJsb2NrOjogYw0KPiArICoNCj4gKyAqCXggPSBpb3N5c19t YXBfcmRfZmllbGQoJm1hcCwgb2Zmc2V0LCBzdHJ1Y3QgZm9vLCBmaWVsZDIuaW5uZXIyKTsN Cj4gKyAqDQo+ICsgKiBSZXR1cm5zOg0KPiArICogVGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUg bWFwcGluZy4NCj4gKyAqLw0KPiArI2RlZmluZSBpb3N5c19tYXBfcmRfZmllbGQobWFwX18s IHN0cnVjdF9vZmZzZXRfXywgc3RydWN0X3R5cGVfXywgZmllbGRfXykgKHsJXA0KPiArCXN0 cnVjdF90eXBlX18gKnM7CQkJCQkJCVwNCj4gKwlpb3N5c19tYXBfcmQobWFwX18sIHN0cnVj dF9vZmZzZXRfXyArIG9mZnNldG9mKHN0cnVjdF90eXBlX18sIGZpZWxkX18pLAlcDQo+ICsJ CSAgICAgdHlwZW9mKHMtPmZpZWxkX18pKTsJCQkJCVwNCj4gK30pDQo+ICsNCj4gKy8qKg0K PiArICogaW9zeXNfbWFwX3dyX2ZpZWxkIC0gV3JpdGUgdG8gYSBtZW1iZXIgb2YgYSBzdHJ1 Y3QgaW4gdGhlIGlvc3lzX21hcA0KPiArICoNCj4gKyAqIEBtYXBfXzoJCVRoZSBpb3N5c19t YXAgc3RydWN0dXJlDQo+ICsgKiBAc3RydWN0X29mZnNldF9fOglPZmZzZXQgZnJvbSB0aGUg YmVnZ2luaW5nIG9mIHRoZSBtYXAsIHdoZXJlIHRoZSBzdHJ1Y3QNCj4gKyAqCQkJaXMgbG9j YXRlZA0KPiArICogQHN0cnVjdF90eXBlX186CVRoZSBzdHJ1Y3QgZGVzY3JpYmluZyB0aGUg bGF5b3V0IG9mIHRoZSBtYXBwaW5nDQo+ICsgKiBAZmllbGRfXzoJCU1lbWJlciBvZiB0aGUg c3RydWN0IHRvIHJlYWQNCj4gKyAqIEB2YWxfXzoJCVZhbHVlIHRvIHdyaXRlDQo+ICsgKg0K PiArICogV3JpdGUgYSB2YWx1ZSB0byB0aGUgaW9zeXNfbWFwIGNvbnNpZGVyaW5nIGl0cyBs YXlvdXQgaXMgZGVzY3JpYmVkIGJ5IGEgQyBzdHJ1Y3QNCj4gKyAqIHN0YXJ0aW5nIGF0IEBz dHJ1Y3Rfb2Zmc2V0X18uIFRoZSBmaWVsZCBvZmZzZXQgYW5kIHNpemUgaXMgY2FsY3VsYXRl ZCBhbmQgdGhlDQo+ICsgKiBAdmFsX18gaXMgd3JpdHRlbiBoYW5kbGluZyBwb3NzaWJsZSB1 bi1hbGlnbmVkIG1lbW9yeSBhY2Nlc3Nlcy4gUmVmZXIgdG8NCj4gKyAqIGlvc3lzX21hcF9y ZF9maWVsZCgpIGZvciBleHBlY3RlZCB1c2FnZSBhbmQgbWVtb3J5IGxheW91dC4NCj4gKyAq Lw0KPiArI2RlZmluZSBpb3N5c19tYXBfd3JfZmllbGQobWFwX18sIHN0cnVjdF9vZmZzZXRf Xywgc3RydWN0X3R5cGVfXywgZmllbGRfXywgdmFsX18pICh7CVwNCj4gKwlzdHJ1Y3RfdHlw ZV9fICpzOwkJCQkJCQkJXA0KPiArCWlvc3lzX21hcF93cihtYXBfXywgc3RydWN0X29mZnNl dF9fICsgb2Zmc2V0b2Yoc3RydWN0X3R5cGVfXywgZmllbGRfXyksCQlcDQo+ICsJCSAgICAg dHlwZW9mKHMtPmZpZWxkX18pLCB2YWxfXyk7CQkJCQlcDQo+ICt9KQ0KPiArDQo+ICAgI2Vu ZGlmIC8qIF9fSU9TWVNfTUFQX0hfXyAqLw0KDQotLSANClRob21hcyBaaW1tZXJtYW5uDQpH cmFwaGljcyBEcml2ZXIgRGV2ZWxvcGVyDQpTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJt YW55IEdtYkgNCk1heGZlbGRzdHIuIDUsIDkwNDA5IE7DvHJuYmVyZywgR2VybWFueQ0KKEhS QiAzNjgwOSwgQUcgTsO8cm5iZXJnKQ0KR2VzY2jDpGZ0c2bDvGhyZXI6IEl2byBUb3Rldg0K --------------UgFgHeVlDYvjGkUa4Fc8VSbx-- --------------KiAiXzNuou4lKnwlAN3xLhD0 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+AFAmIDXcgFAwAAAAAACgkQlh/E3EQov+AF hBAAiffItWn+25NPAuV8c0PRlrIZfvYtRzOiVvlXqv/Nx7RKjgSJSs35n9kg3lmaprT5n4tCgRyF GQk7B6kkA/uP9AD6z+MjJ26zCJqrjXsKlDDBhHwvRdpEUSZO1Kt2Y7xE6RgDA1kLzl2Kt6siLyTW 3B2JLwGEivEK7ldLzIxtJt/Rk+gAwuzdDMKCVIXJhMRUaSbpWBCfZJ/KkW3BYBLUevOHw8YzJoPl TiRkN/O0Xou51XhKklo+oRsRaq97kjka4so4sYmkNobmTuBLuK6qNbKvUkuc5BQRkwyq5ejKUa8z fHwkbh4ws9qQbmFBjeBHD5ieLffZEmOruwVQJby7KtDoOptHiGYq3VWocioCkz9zBQgtTYNiajuh qsCjl1LUuQuTFjfo4Rf0FgixbBqyixxyC5Uvty9E8tiTYVdJcQyg3ompTk/oTUemqMdznd5JkXAI ZUHKAelrUtHtz9IyfDCLKiZfS43tsef5Qjot+s6sqzjQTUddc3WKNLHzc9KHLusMmKIqee4yf8Rm XydKEig6Whk5tib6SCVdudVg474aEoiakSlK/2Sqm7xuSMmOOKk/zqKSG3Z5K7x67WWGrbtA6MmZ T397gutpwG9uakTyKufO18ZYzGIq6hNlBPDh0HuH+gStQACgosoRryLH0TIT1r/Qke8TXnfVY/LO pAw= =yw5E -----END PGP SIGNATURE----- --------------KiAiXzNuou4lKnwlAN3xLhD0--