From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id D39614898E for ; Fri, 22 Dec 2023 06:20:33 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E8D9B68D22E; Fri, 22 Dec 2023 08:20:30 +0200 (EET) Received: from 4.mo560.mail-out.ovh.net (4.mo560.mail-out.ovh.net [87.98.172.75]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C37A868CCB8 for ; Fri, 22 Dec 2023 08:20:24 +0200 (EET) Received: from director4.ghost.mail-out.ovh.net (unknown [10.109.176.37]) by mo560.mail-out.ovh.net (Postfix) with ESMTP id 2F1382AD48 for ; Fri, 22 Dec 2023 06:20:24 +0000 (UTC) Received: from ghost-submission-6684bf9d7b-5c8q5 (unknown [10.110.178.131]) by director4.ghost.mail-out.ovh.net (Postfix) with ESMTPS id C9A2C1FDA8 for ; Fri, 22 Dec 2023 06:20:23 +0000 (UTC) Received: from courmont.net ([37.59.142.101]) by ghost-submission-6684bf9d7b-5c8q5 with ESMTPSA id EzZsKqcqhWWqFAAAjIt1CQ (envelope-from ) for ; Fri, 22 Dec 2023 06:20:23 +0000 Authentication-Results: garm.ovh; auth=pass (GARM-101G004b3c19055-13ed-4963-acf7-cd01f041161a, 0250B5C33F79FE0720097DCFD3AD70DFCD8E8E56) smtp.auth=postmaster@courmont.net X-OVh-ClientIp: 176.93.137.134 Date: Fri, 22 Dec 2023 08:20:21 +0200 From: =?ISO-8859-1?Q?R=E9mi_Denis-Courmont?= To: FFmpeg development discussions and patches User-Agent: K-9 Mail for Android In-Reply-To: <2897841.9JAYuftNni@basile.remlab.net> References: <20231219120200.24003-1-martin@martin.st> <2897841.9JAYuftNni@basile.remlab.net> Message-ID: MIME-Version: 1.0 X-Ovh-Tracer-Id: 3073706749013137913 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedvkedrvdduiedgleefucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhepfffhvffufggjfhfkgggtgfesthhqmhdttderjeenucfhrhhomheptformhhiucffvghnihhsqdevohhurhhmohhnthcuoehrvghmihesrhgvmhhlrggsrdhnvghtqeenucggtffrrghtthgvrhhnpefgueelhfefffegveegteegueehgeduvdffledtjeegteduvddtjefhhfegtedvjeenucfkphepuddvjedrtddrtddruddpudejiedrleefrddufeejrddufeegpdefjedrheelrddugedvrddutddunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpeeorhgvmhhisehrvghmlhgrsgdrnhgvtheqpdhnsggprhgtphhtthhopedupdhrtghpthhtohepfhhfmhhpvghgqdguvghvvghlsehffhhmphgvghdrohhrghdpoffvtefjohhsthepmhhoheeitddpmhhouggvpehsmhhtphhouhht Subject: Re: [FFmpeg-devel] [PATCH] checkasm: Generalize crash handling X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: CgpMZSAyMSBkw6ljZW1icmUgMjAyMyAyMjoxNjowOSBHTVQrMDI6MDAsICJSw6ltaSBEZW5pcy1D b3VybW9udCIgPHJlbWlAcmVtbGFiLm5ldD4gYSDDqWNyaXTCoDoKPkxlIHRpaXN0YWluYSAxOS4g am91bHVrdXV0YSAyMDIzLCAxNC4wMi4wMCBFRVQgTWFydGluIFN0b3JzasO2IGEgw6ljcml0IDoK Pj4gVGhpcyByZXBsYWNlcyB0aGUgcmlzY3Ygc3BlY2lmaWMgaGFuZGxpbmcgZnJvbQo+PiA3MjEy NDY2ZTczNWFhMTg3ZDgyZjUxZGFkYmNlOTU3ZmUzZGE3N2YwICh3aGljaCBlc3NlbnRpYWxseSBp cwo+PiByZXZlcnRlZCwgdG9nZXRoZXIgd2l0aCAyODZkNjc0MjIxOGJhMDIzNWMzMjg3NmI1MGJm NTkzY2IxOTg2MzUzKQo+PiB3aXRoIGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIG9mIHRoZSBz YW1lIChwbHVzIGEgYml0IG1vcmUpLCBiYXNlZAo+PiBvbiB0aGUgY29ycmVzcG9uZGluZyBmZWF0 dXJlIGluIGRhdjFkJ3MgY2hlY2thc20sIHN1cHBvcnRpbmcgYm90aCBVbml4Cj4+IGFuZCBXaW5k b3dzLgo+PiAKPj4gU2VlIGluIHBhcnRpY3VsYXIgZGF2MWQgY29tbWl0cwo+PiAwYjZlZTMwZWFi MjQwMGU0Zjg1YjczNWFkMjlhNjhhODQyYzM0ZTIxIGFuZAo+PiAwNDIxZjc4N2VhNTkyZmQyY2M3 NGM4ODdmMjBiOGRjMzEzOTM3ODhiLCBhdXRob3JlZCBieQo+PiBIZW5yaWsgR3JhbW5lci4KPj4g Cj4+IFRoZSBvdmVyYWxsIGFwcHJvYWNoIGlzIHRoZSBzYW1lOyBzZXQgdXAgYSBzaWduYWwgaGFu ZGxlciwKPj4gc3RvcmUgdGhlIHN0YXRlIHdpdGggc2V0am1wL3NpZ3NldGptcCwganVtcCBvdXQg b2YgdGhlIGNyYXNoaW5nCj4+IGZ1bmN0aW9uIHdpdGggbG9uZ2ptcC9zaWdsb25nam1wLgo+PiAK Pj4gVGhlIG1haW4gZGlmZmVyZW5jZSBpcyBpbiB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgc2lnbmFs IGhhbmRsZXIKPj4gaXMgaW52b2tlZC4gSW4gdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uLCBp dCB3b3VsZCByZXN1bWUgZnJvbQo+PiByaWdodCBiZWZvcmUgY2FsbGluZyB0aGUgY3Jhc2hpbmcg ZnVuY3Rpb24sIGFuZCB0aGVuIHNraXAgdGhhdCBjYWxsCj4+IGJhc2VkIG9uIHRoZSBzZXRqbXAg cmV0dXJuIHZhbHVlLgo+PiAKPj4gSW4gdGhlIGltcG9ydGVkIGltcGxlbWVudGF0aW9uIGZyb20g ZGF2MWQsIHdlIHJldHVybiB0byByaWdodCBiZWZvcmUKPj4gdGhlIGNoZWNrX2Z1bmMoKSBjYWxs LCB3aGljaCB3aWxsIHNraXAgdGVzdGluZyB0aGUgY3VycmVudCBmdW5jdGlvbgo+PiAoYXMgdGhl IHBvaW50ZXIgaXMgdGhlIHNhbWUgYXMgaXQgd2FzIGJlZm9yZSkuCj4+IAo+PiBPdGhlciBkaWZm ZXJlbmNlcyBhcmU6Cj4+IC0gU3VwcG9ydCBmb3Igb3RoZXIgc2lnbmFsIGhhbmRsaW5nIG1lY2hh bmlzbXMgKFdpbmRvd3MKPj4gICBBZGRWZWN0b3JlZEV4Y2VwdGlvbkhhbmRsZXIpCj4+IC0gVXNp bmcgUnRsQ2FwdHVyZUNvbnRleHQvUnRsUmVzdG9yZUNvbnRleHQgaW5zdGVhZCBvZiBzZXRqbXAv bG9uZ2ptcAo+PiAgIG9uIFdpbmRvd3Mgd2l0aCBTRUggKHdoaWNoIGFkZHMgdGhlIGRlc2lnbiBs aW1pdGF0aW9uIHRoYXQgaXQgZG9lc24ndAo+PiAgIHJldHVybiBhIHZhbHVlIGxpa2Ugc2V0am1w IGRvZXMpCj4+IC0gT25seSBjYXRjaGluZyBzaWduYWxzIG9uY2UgcGVyIGZ1bmN0aW9uIC0gaWYg bW9yZSB0aGFuIG9uZQo+PiAgIHNpZ25hbCBpcyBkZWxpdmVyZWQgYmVmb3JlIHNpZ25hbCBoYW5k bGluZyBpcyByZWVuYWJsZWQsIGFueQo+PiAgIHNpZ25hbCBpcyBoYW5kbGVkIGFzIGl0IHdvdWxk IHdpdGhvdXQgb3VyIGhhbmRsZXIKPj4gLSBOb3QgdXNpbmcgYW4gYXJjaCBzcGVjaWZpYyBzaWdu YWwgaGFuZGxlciB3cml0dGVuIGluIGFzc2VtYmx5Cj4+IC0tLQo+PiAgdGVzdHMvY2hlY2thc20v Y2hlY2thc20uYyAgICAgICB8IDEwMCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQo+ PiAgdGVzdHMvY2hlY2thc20vY2hlY2thc20uaCAgICAgICB8ICA3OSArKysrKysrKysrKysrKysr KystLS0tLS0tCj4+ICB0ZXN0cy9jaGVja2FzbS9yaXNjdi9jaGVja2FzbS5TIHwgIDEyIC0tLS0K Pj4gIDMgZmlsZXMgY2hhbmdlZCwgMTQwIGluc2VydGlvbnMoKyksIDUxIGRlbGV0aW9ucygtKQo+ PiAKPj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmMgYi90ZXN0cy9jaGVj a2FzbS9jaGVja2FzbS5jCj4+IGluZGV4IDYzMThkOTI5NmIuLjY2ODAzNGM2N2YgMTAwNjQ0Cj4+ IC0tLSBhL3Rlc3RzL2NoZWNrYXNtL2NoZWNrYXNtLmMKPj4gKysrIGIvdGVzdHMvY2hlY2thc20v Y2hlY2thc20uYwo+PiBAQCAtMjMsOCArMjMsMTAgQEAKPj4gICNpbmNsdWRlICJjb25maWcuaCIK Pj4gICNpbmNsdWRlICJjb25maWdfY29tcG9uZW50cy5oIgo+PiAKPj4gLSNpZm5kZWYgX0dOVV9T T1VSQ0UKPj4gLSMgZGVmaW5lIF9HTlVfU09VUkNFIC8vIGZvciBzeXNjYWxsIChwZXJmb3JtYW5j ZSBtb25pdG9yaW5nIEFQSSksCj4+IHN0cnNpZ25hbCgpICsjaWYgQ09ORklHX0xJTlVYX1BFUkYK Pj4gKyMgaWZuZGVmIF9HTlVfU09VUkNFCj4+ICsjICBkZWZpbmUgX0dOVV9TT1VSQ0UgLy8gZm9y IHN5c2NhbGwgKHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgQVBJKQo+PiArIyBlbmRpZgo+PiAgI2Vu ZGlmCj4+IAo+PiAgI2luY2x1ZGUgPHNpZ25hbC5oPgo+PiBAQCAtMzI2LDYgKzMyOCw3IEBAIHN0 YXRpYyBzdHJ1Y3Qgewo+PiAgICAgIGNvbnN0IGNoYXIgKmNwdV9mbGFnX25hbWU7Cj4+ICAgICAg Y29uc3QgY2hhciAqdGVzdF9uYW1lOwo+PiAgICAgIGludCB2ZXJib3NlOwo+PiArICAgIGludCBj YXRjaF9zaWduYWxzOwo+Cj5BRkFJQ1QsIHRoaXMgbmVlZHMgdG8gYmUgdm9sYXRpbGUgc2lnYXRv bWljX3QKPgo+PiAgfSBzdGF0ZTsKPj4gCj4+ICAvKiBQUk5HIHN0YXRlICovCj4+IEBAIC02Mjcs NiArNjMwLDY0IEBAIHN0YXRpYyBDaGVja2FzbUZ1bmMgKmdldF9mdW5jKENoZWNrYXNtRnVuYyAq KnJvb3QsCj4+IGNvbnN0IGNoYXIgKm5hbWUpIHJldHVybiBmOwo+PiAgfQo+PiAKPj4gK2NoZWNr YXNtX2NvbnRleHQgY2hlY2thc21fY29udGV4dF9idWY7Cj4+ICsKPj4gKy8qIENyYXNoIGhhbmRs aW5nOiBhdHRlbXB0IHRvIGNhdGNoIGNyYXNoZXMgYW5kIGhhbmRsZSB0aGVtCj4+ICsgKiBncmFj ZWZ1bGx5IGluc3RlYWQgb2YganVzdCBhYm9ydGluZyBhYnJ1cHRseS4gKi8KPj4gKyNpZmRlZiBf V0lOMzIKPj4gKyNpZiBXSU5BUElfRkFNSUxZX1BBUlRJVElPTihXSU5BUElfUEFSVElUSU9OX0RF U0tUT1ApCj4+ICtzdGF0aWMgTE9ORyBOVEFQSSBzaWduYWxfaGFuZGxlcihFWENFUFRJT05fUE9J TlRFUlMgKmNvbnN0IGUpIHsKPj4gKyAgICBjb25zdCBjaGFyICplcnI7Cj4+ICsKPj4gKyAgICBp ZiAoIXN0YXRlLmNhdGNoX3NpZ25hbHMpCj4+ICsgICAgICAgIHJldHVybiBFWENFUFRJT05fQ09O VElOVUVfU0VBUkNIOwo+PiArCj4+ICsgICAgc3dpdGNoIChlLT5FeGNlcHRpb25SZWNvcmQtPkV4 Y2VwdGlvbkNvZGUpIHsKPj4gKyAgICBjYXNlIEVYQ0VQVElPTl9GTFRfRElWSURFX0JZX1pFUk86 Cj4+ICsgICAgY2FzZSBFWENFUFRJT05fSU5UX0RJVklERV9CWV9aRVJPOgo+PiArICAgICAgICBl cnIgPSAiZmF0YWwgYXJpdGhtZXRpYyBlcnJvciI7Cj4+ICsgICAgICAgIGJyZWFrOwo+PiArICAg IGNhc2UgRVhDRVBUSU9OX0lMTEVHQUxfSU5TVFJVQ1RJT046Cj4+ICsgICAgY2FzZSBFWENFUFRJ T05fUFJJVl9JTlNUUlVDVElPTjoKPj4gKyAgICAgICAgZXJyID0gImlsbGVnYWwgaW5zdHJ1Y3Rp b24iOwo+PiArICAgICAgICBicmVhazsKPj4gKyAgICBjYXNlIEVYQ0VQVElPTl9BQ0NFU1NfVklP TEFUSU9OOgo+PiArICAgIGNhc2UgRVhDRVBUSU9OX0FSUkFZX0JPVU5EU19FWENFRURFRDoKPj4g KyAgICBjYXNlIEVYQ0VQVElPTl9EQVRBVFlQRV9NSVNBTElHTk1FTlQ6Cj4+ICsgICAgY2FzZSBF WENFUFRJT05fU1RBQ0tfT1ZFUkZMT1c6Cj4+ICsgICAgICAgIGVyciA9ICJzZWdtZW50YXRpb24g ZmF1bHQiOwo+PiArICAgICAgICBicmVhazsKPj4gKyAgICBjYXNlIEVYQ0VQVElPTl9JTl9QQUdF X0VSUk9SOgo+PiArICAgICAgICBlcnIgPSAiYnVzIGVycm9yIjsKPj4gKyAgICAgICAgYnJlYWs7 Cj4+ICsgICAgZGVmYXVsdDoKPj4gKyAgICAgICAgcmV0dXJuIEVYQ0VQVElPTl9DT05USU5VRV9T RUFSQ0g7Cj4+ICsgICAgfQo+PiArICAgIHN0YXRlLmNhdGNoX3NpZ25hbHMgPSAwOwo+PiArICAg IGNoZWNrYXNtX2ZhaWxfZnVuYygiJXMiLCBlcnIpOwo+PiArICAgIGNoZWNrYXNtX2xvYWRfY29u dGV4dCgpOwo+PiArICAgIHJldHVybiBFWENFUFRJT05fQ09OVElOVUVfRVhFQ1VUSU9OOyAvKiBu ZXZlciByZWFjaGVkLCBidXQgc2h1dHMgdXAgZ2NjCj4+ICovICt9Cj4+ICsjZW5kaWYKPj4gKyNl bHNlCj4+ICtzdGF0aWMgdm9pZCBzaWduYWxfaGFuZGxlcihjb25zdCBpbnQgcykgewo+PiArICAg IGlmIChzdGF0ZS5jYXRjaF9zaWduYWxzKSB7Cj4+ICsgICAgICAgIHN0YXRlLmNhdGNoX3NpZ25h bHMgPSAwOwo+PiArICAgICAgICBjaGVja2FzbV9mYWlsX2Z1bmMoIiVzIiwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIHMgPT0gU0lHRlBFID8gImZhdGFsIGFyaXRobWV0aWMgZXJyb3Ii IDoKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPT0gU0lHSUxMID8gImlsbGVnYWwg aW5zdHJ1Y3Rpb24iIDoKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPT0gU0lHQlVT ID8gImJ1cyBlcnJvciIgOgo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAic2VnbWVudGF0aW9uIGZhdWx0Iik7Cj4KPlRoZSBjdXJyZW50IGNvZGUgZm9yIHRoZSBl cnJvciBwcmludC1vdXQgaXMgYm90aCBzaW1wbGVyIGFuZCBtb3JlIHZlcnNhdGlsZSwgCj5zbyBJ IGRvbid0IGdldCB0aGlzLgo+Cj4+ICsgICAgICAgIGNoZWNrYXNtX2xvYWRfY29udGV4dCgpOwo+ PiArICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgIC8qIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBz aWduYWwgaGFuZGxlciAqLwo+PiArICAgICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHNpZ2FjdGlv biBkZWZhdWx0X3NhID0geyAuc2FfaGFuZGxlciA9IFNJR19ERkwKPj4gfTsgKyAgICAgICAgc2ln YWN0aW9uKHMsICZkZWZhdWx0X3NhLCBOVUxMKTsKPj4gKyAgICAgICAgcmFpc2Uocyk7Cj4KPldo eSByYWlzZSBoZXJlPyBSZXR1cm5pbmcgZnJvbSB0aGUgaGFuZGxlciB3aWxsIHJlZXZhbHVhdGUg dGhlIHNhbWUgY29kZSB3aXRoIAo+dGhlIHNhbWUgdGhyZWFkIHN0YXRlLCBhbmQgdHJpZ2dlciB0 aGUgZGVmYXVsdCBzaWduYWwgaGFuZGxlciBhbnl3YXkgKHNpbmNlIAo+eW91IGRvbid0IG1vZGlm eSB0aGUgdXNlciBjb250ZXh0KS4KPgo+PiArICAgIH0KPj4gK30KPj4gKyNlbmRpZgo+PiArCj4+ ICAvKiBQZXJmb3JtIHRlc3RzIGFuZCBiZW5jaG1hcmtzIGZvciB0aGUgc3BlY2lmaWVkIGNwdSBm bGFnIGlmIHN1cHBvcnRlZCBieQo+PiB0aGUgaG9zdCAqLyBzdGF0aWMgdm9pZCBjaGVja19jcHVf ZmxhZyhjb25zdCBjaGFyICpuYW1lLCBpbnQgZmxhZykKPj4gIHsKPj4gQEAgLTczNywxOCArNzk4 LDI0IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4+ICAgICAgdW5zaWduZWQg aW50IHNlZWQgPSBhdl9nZXRfcmFuZG9tX3NlZWQoKTsKPj4gICAgICBpbnQgaSwgcmV0ID0gMDsK Pj4gCj4+ICsjaWZkZWYgX1dJTjMyCj4+ICsjaWYgV0lOQVBJX0ZBTUlMWV9QQVJUSVRJT04oV0lO QVBJX1BBUlRJVElPTl9ERVNLVE9QKQo+PiArICAgIEFkZFZlY3RvcmVkRXhjZXB0aW9uSGFuZGxl cigwLCBzaWduYWxfaGFuZGxlcik7Cj4+ICsjZW5kaWYKPj4gKyNlbHNlCj4+ICsgICAgY29uc3Qg c3RydWN0IHNpZ2FjdGlvbiBzYSA9IHsKPj4gKyAgICAgICAgLnNhX2hhbmRsZXIgPSBzaWduYWxf aGFuZGxlciwKPj4gKyAgICAgICAgLnNhX2ZsYWdzID0gU0FfTk9ERUZFUiwKPgo+VGhhdCBkb2Vz IG5vdCBsb29rIHZlcnkgc2FuZSB0byBtZS4gSWYgYSByZWN1cnNpdmUgc2lnbmFsIG9jY3Vycywg cHJvY2Vzc2luZyAKPml0IHJlY3Vyc2l2ZWx5IGlzIE5PVCBhIGdvb2QgaWRlYS4KCkZvbGxvd2lu ZyB0aGF0LCBpdCBhY3R1YWxseSBzZWVtcyBzYWZlciB0byBhdXRvbWF0aWNhbGx5IHJlc2V0IHRo ZSBoYW5kbGVyLCB1c2luZyBgc2lnbmFsKClgIG9yIGVxdWl2YWxlbnRseSBwYXNzaW5nIHRoZSBg U0FfUkVTRVRIQU5EYCBmbGFnLiBUaGVuIHRoZSBoYW5kbGVyIGNhbiByZWFybSBpdHMgb3duIHNl bGYgaWYgYW5kICpvbmx5KiBpZiBpdCB3YXMgYWJsZSB0byBhY3R1YWxseSBoYW5kbGUgdGhlIHNp Z25hbCBieSBvYnNlcnZpbmcgYSBsb25nIGp1bXAuIFJlc2V0dGluZyB0byBkZWZhdWx0IGV4cGxp Y2l0bHkgaXMgbm8gbG9uZ2VyIHVzZWZ1bCB0aGVuLgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWct ZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1w ZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1w ZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=