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 88C4D42AAC for ; Thu, 11 Aug 2022 11:50:41 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6A11768B178; Thu, 11 Aug 2022 14:50:39 +0300 (EEST) Received: from btbn.de (btbn.de [136.243.74.85]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6022168B2BC for ; Thu, 11 Aug 2022 14:50:32 +0300 (EEST) Received: from [authenticated] by btbn.de (Postfix) with ESMTPSA id 13BEB359477 for ; Thu, 11 Aug 2022 13:50:32 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rothenpieler.org; s=mail; t=1660218632; bh=BoS3tcu+DdXn5UkIEuNMYylKuRKVUIbvrcENsahUMXE=; h=Date:Subject:To:References:From:In-Reply-To; b=a66ZoKRqrr9JJ2MlqLW751wM/YV4QnKjUr2NlHxMDWED3hUudqDIvZTSNmmVTIsdb gDTrbiL4GoYtEFzoN+zSm5QUbDSacGraTEPDtqS03yhZK0trlGQNs2MRA4ENNlteza BM26m6fI+B/rJcIpim+woTqgfokt3Y3KvV7Z1SxwMNXv6EQyIU4g1rWtiJ6fGu9qPX sY9xaY8FP3c4+0I4QnwBqQXDQKwPfx4lOxXV7WrKChdTjRGr0VhWn1RBsTC5m/PwDt 4sVoYtyxRpfEKwFAtLLugRx1+vuQ7krX6GlCwKsEpETEHQ685qKEIMkiW2YxVW3HdR YGR3yMS2pAj5Q== Message-ID: Date: Thu, 11 Aug 2022 13:50:35 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.1.2 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220810204712.3123-9-timo@rothenpieler.org> <20220810225154.8435-1-timo@rothenpieler.org> <314f36cb-5fe1-551b-81bc-b3b902dd6c79@gmail.com> From: Timo Rothenpieler In-Reply-To: <314f36cb-5fe1-551b-81bc-b3b902dd6c79@gmail.com> Subject: Re: [FFmpeg-devel] [PATCH v2 09/11] avutil/half2float: use native _Float16 if available 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gMTEvMDgvMjAyMiAwMjoxNCwgSmFtZXMgQWxtZXIgd3JvdGU6Cj4gT24gOC8xMC8yMDIyIDc6 NTEgUE0sIFRpbW8gUm90aGVucGllbGVyIHdyb3RlOgo+PiBfRmxvYXQxNiBzdXBwb3J0IHdhcyBh dmFpbGFibGUgb24gYXJtL2FhcmNoNjQgZm9yIGEgd2hpbGUsIGFuZCB3aXRoIGdjYwo+PiAxMiB3 YXMgZW5hYmxlZCBvbiB4ODYgYXMgbG9uZyBhcyBTU0UyIGlzIHN1cHBvcnRlZC4KPj4KPj4gSWYg dGhlIHRhcmdldCBhcmNoIHN1cHBvcnRzIGYxNmMsIGdjYyBlbWl0cyBmYWlybHkgZWZmaWNpZW50 IGFzc2VtYmx5LAo+PiB0YWtpbmcgYWR2YW50YWdlIG9mIGl0LiBUaGlzIGlzIHRoZSBjYXNlIG9u IHg4Ni02NC12MyBvciBoaWdoZXIuCj4+IFNhbWUgZ29lcyBvbiBhcm0sIHdoaWNoIGhhcyBuYXRp dmUgZmxvYXQxNiBzdXBwb3J0Lgo+PiBPbiB4ODYsIHdpdGhvdXQgZjE2YywgaXQgZW11bGF0ZXMg aXQgaW4gc29mdHdhcmUgdXNpbmcgc3NlMiBpbnN0cnVjdGlvbnMuCj4+Cj4+IFRoaXMgaGFzIHNo b3duIHRvIHBlcmZvcm0gcmF0aGVyIHBvb3JseToKPj4KPj4gX0Zsb2F0MTYgZnVsbCBTU0UyIGVt dWxhdGlvbjoKPj4gZnJhbWU9NTAwNzQgZnBzPTg0OCBxPS0wLjAgc2l6ZT1OL0EgdGltZT0wMDoz MzoyMi45NiBiaXRyYXRlPU4vQSAKPj4gc3BlZWQ9MzMuOXgKPj4KPj4gX0Zsb2F0MTYgZjE2YyBh Y2NlbGVyYXRlZCAoWmVuMiwgLS1jcHU9em52ZXIyKToKPj4gZnJhbWU9NTA2MzYgZnBzPTE5NjUg cT0tMC4wIExzaXplPU4vQSB0aW1lPTAwOjMzOjQ1LjQwIGJpdHJhdGU9Ti9BIAo+PiBzcGVlZD03 OC42eAo+Pgo+PiBjbGFzc2ljIGhhbGYyZmxvYXQgZnVsbCBzb2Z0d2FyZSBpbXBsZW1lbnRhdGlv bjoKPj4gZnJhbWU9NDk5MjYgZnBzPTE2MDUgcT0tMC4wIExzaXplPU4vQSB0aW1lPTAwOjMzOjE3 LjAwIGJpdHJhdGU9Ti9BIAo+PiBzcGVlZD02NC4yeAo+Pgo+PiBIZW5jZSBhbiBhZGRpdGlvbmFs IGNoZWNrIHdhcyBpbnRyb2R1Y2VkLCB0aGF0IG9ubHkgZW5hYmxlcyB1c2Ugb2YKPj4gX0Zsb2F0 MTYgb24geDg2IGlmIGYxNmMgaXMgYmVpbmcgdXRpbGl6ZWQuCj4+Cj4+IE9uIGFhcmNoNjQsIGEg c2ltaWxhciB1cGxpZnQgaW4gcGVyZm9ybWFuY2UgaXMgc2VlbjoKPj4KPj4gUlBpNCBoYWxmMmZs b2F0IGZ1bGwgc29mdHdhcmUgaW1wbGVtZW50YXRpb246Cj4+IGZyYW1lPSA2MDg4IGZwcz0xMjYg cT0tMC4wIExzaXplPU4vQSB0aW1lPTAwOjA0OjAzLjQ4IGJpdHJhdGU9Ti9BIAo+PiBzcGVlZD01 LjA2eAo+Pgo+PiBSUGk0IF9GbG9hdDE2Ogo+PiBmcmFtZT0gNjEwMyBmcHM9MTU4IHE9LTAuMCBM c2l6ZT1OL0EgdGltZT0wMDowNDowNC4wOCBiaXRyYXRlPU4vQSAKPj4gc3BlZWQ9Ni4zMngKPj4K Pj4gU2luY2UgYXJtL2FhcmNoNjQgYWx3YXlzIG5hdGl2ZWx5IHN1cHBvcnQgMTYgYml0IGZsb2F0 cywgaXQgY2FuIGFsd2F5cwo+PiBiZSBjb25zaWRlcmVkIGZhc3QgdGhlcmUuCj4+Cj4+IEknbSBu b3QgYXdhcmUgb2YgYW55IGFkZGl0aW9uYWwgcGxhdGZvcm1zIHRoYXQgY3VycmVudGx5IHN1cHBv cnQKPj4gX0Zsb2F0MTYuIEFuZCBpZiB0aGVyZSBhcmUsIHRoZXkgc2hvdWxkIGJlIGNvbnNpZGVy ZWQgbm9uLWZhc3QgdW50aWwKPj4gcHJvdmVuIGZhc3QuCj4+IC0tLQo+PiDCoCBjb25maWd1cmXC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDEzICsrKysrKysrKysrKysKPj4gwqAgbGliYXZ1 dGlsL2Zsb2F0MmhhbGYuYyB8wqAgMiArKwo+PiDCoCBsaWJhdnV0aWwvZmxvYXQyaGFsZi5oIHwg MTYgKysrKysrKysrKysrKysrKwo+PiDCoCBsaWJhdnV0aWwvaGFsZjJmbG9hdC5jIHzCoCA0ICsr KysKPj4gwqAgbGliYXZ1dGlsL2hhbGYyZmxvYXQuaCB8IDE2ICsrKysrKysrKysrKysrKysKPj4g wqAgNSBmaWxlcyBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspCj4+Cj4+IGRpZmYgLS1naXQgYS9j b25maWd1cmUgYi9jb25maWd1cmUKPj4gaW5kZXggNjc2MWQwY2IzMi4uNmVkZTlhNWE4ZiAxMDA3 NTUKPj4gLS0tIGEvY29uZmlndXJlCj4+ICsrKyBiL2NvbmZpZ3VyZQo+PiBAQCAtMjE0Myw2ICsy MTQzLDggQEAgQVJDSF9GRUFUVVJFUz0iCj4+IMKgwqDCoMKgwqAgZmFzdF82NGJpdAo+PiDCoMKg wqDCoMKgIGZhc3RfY2x6Cj4+IMKgwqDCoMKgwqAgZmFzdF9jbW92Cj4+ICvCoMKgwqAgZmFzdF9m bG9hdDE2Cj4+ICvCoMKgwqAgZmxvYXQxNgo+IAo+IElmIEhBVkVfRkxPQVQxNiBpcyBub3QgZ29p bmcgdG8gYmUgdXNlZCwgdGhlbiBkb24ndCBleHBvcnQgaXQgaGVyZS4gCj4gTGVhdmUgaXQgYXMg YSBjb25maWd1cmUgaW50ZXJuYWwgdmFyaWFibGUuCj4gCgpHb29kIHBvaW50LCBmaXhlZCBsb2Nh bGx5LgoKPj4gwqDCoMKgwqDCoCBsb2NhbF9hbGlnbmVkCj4+IMKgwqDCoMKgwqAgc2ltZF9hbGln bl8xNgo+PiDCoMKgwqDCoMKgIHNpbWRfYWxpZ25fMzIKPj4gQEAgLTUxMjUsNiArNTEyNyw4IEBA IGVsaWYgZW5hYmxlZCBhcm07IHRoZW4KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOzsK Pj4gwqDCoMKgwqDCoCBlc2FjCj4+ICvCoMKgwqAgdGVzdF9jZmxhZ3MgLW1mcDE2LWZvcm1hdD1p ZWVlICYmIGFkZF9jZmxhZ3MgLW1mcDE2LWZvcm1hdD1pZWVlCj4+ICsKPj4gwqAgZWxpZiBlbmFi bGVkIGF2cjMyOyB0aGVuCj4+IMKgwqDCoMKgwqAgY2FzZSAkY3B1IGluCj4+IEBAIC02MjI5LDYg KzYyMzMsMTUgQEAgY2hlY2tfYnVpbHRpbiBzeW5jX3ZhbF9jb21wYXJlX2FuZF9zd2FwICIiICJp bnQgCj4+ICpwdHI7IGludCBvbGR2YWwsIG5ld3ZhbDsgX19zeW5jCj4+IMKgIGNoZWNrX2J1aWx0 aW4gZ210aW1lX3IgdGltZS5oICJ0aW1lX3QgKnRpbWU7IHN0cnVjdCB0bSAqdG07IAo+PiBnbXRp bWVfcih0aW1lLCB0bSkiCj4+IMKgIGNoZWNrX2J1aWx0aW4gbG9jYWx0aW1lX3IgdGltZS5oICJ0 aW1lX3QgKnRpbWU7IHN0cnVjdCB0bSAqdG07IAo+PiBsb2NhbHRpbWVfcih0aW1lLCB0bSkiCj4+ ICtjaGVja19idWlsdGluIGZsb2F0MTYgIiIgIl9GbG9hdDE2IGYxNnZhciIKPj4gK2lmIGVuYWJs ZWQgZmxvYXQxNjsgdGhlbgo+PiArwqDCoMKgIGlmIGVuYWJsZWQgeDg2OyB0aGVuCj4+ICvCoMKg wqDCoMKgwqDCoCB0ZXN0X2NwcF9jb25kaXRpb24gc3RkZGVmLmggImRlZmluZWQoX19GMTZDX18p IiAmJiBlbmFibGUgCj4+IGZhc3RfZmxvYXQxNgo+PiArwqDCoMKgIGVsaWYgZW5hYmxlZCBhcm0g fHwgZW5hYmxlZCBhYXJjaDY0OyB0aGVuCj4+ICvCoMKgwqDCoMKgwqDCoCBlbmFibGUgZmFzdF9m bG9hdDE2Cj4+ICvCoMKgwqAgZmkKPj4gK2ZpCj4+ICsKPj4gwqAgY2FzZSAiJGN1c3RvbV9hbGxv Y2F0b3IiIGluCj4+IMKgwqDCoMKgwqAgamVtYWxsb2MpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAj IGplbWFsbG9jIGJ5IGRlZmF1bHQgZG9lcyBub3QgdXNlIGEgcHJlZml4Cj4+IGRpZmYgLS1naXQg YS9saWJhdnV0aWwvZmxvYXQyaGFsZi5jIGIvbGliYXZ1dGlsL2Zsb2F0MmhhbGYuYwo+PiBpbmRl eCBkYmExNGNlZjVkLi43MDAyNjEyMTk0IDEwMDY0NAo+PiAtLS0gYS9saWJhdnV0aWwvZmxvYXQy aGFsZi5jCj4+ICsrKyBiL2xpYmF2dXRpbC9mbG9hdDJoYWxmLmMKPj4gQEAgLTIwLDYgKzIwLDcg QEAKPj4gwqAgdm9pZCBmZl9pbml0X2Zsb2F0MmhhbGZfdGFibGVzKGZsb2F0MmhhbGZfdGFibGVz ICp0KQo+PiDCoCB7Cj4+ICsjaWYgIUhBVkVfRkFTVF9GTE9BVDE2Cj4+IMKgwqDCoMKgwqAgZm9y IChpbnQgaSA9IDA7IGkgPCAyNTY7IGkrKykgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGUg PSBpIC0gMTI3Owo+PiBAQCAtNTAsNCArNTEsNSBAQCB2b2lkIGZmX2luaXRfZmxvYXQyaGFsZl90 YWJsZXMoZmxvYXQyaGFsZl90YWJsZXMgKnQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHQtPnNoaWZ0dGFibGVbaXwweDEwMF0gPSAxMzsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4g wqDCoMKgwqDCoCB9Cj4+ICsjZW5kaWYKPj4gwqAgfQo+PiBkaWZmIC0tZ2l0IGEvbGliYXZ1dGls L2Zsb2F0MmhhbGYuaCBiL2xpYmF2dXRpbC9mbG9hdDJoYWxmLmgKPj4gaW5kZXggYjhjOWNkZmM0 Zi4uNDM3NjY2OTY2YiAxMDA2NDQKPj4gLS0tIGEvbGliYXZ1dGlsL2Zsb2F0MmhhbGYuaAo+PiAr KysgYi9saWJhdnV0aWwvZmxvYXQyaGFsZi5oCj4+IEBAIC0yMCwyMSArMjAsMzcgQEAKPj4gwqAg I2RlZmluZSBBVlVUSUxfRkxPQVQySEFMRl9ICj4+IMKgICNpbmNsdWRlIDxzdGRpbnQuaD4KPj4g KyNpbmNsdWRlICJpbnRmbG9hdC5oIgo+PiArCj4+ICsjaW5jbHVkZSAiY29uZmlnLmgiCj4+IMKg IHR5cGVkZWYgc3RydWN0IGZsb2F0MmhhbGZfdGFibGVzIHsKPj4gKyNpZiBIQVZFX0ZBU1RfRkxP QVQxNgo+PiArwqDCoMKgIHVpbnQ4X3QgZHVtbXk7Cj4+ICsjZWxzZQo+PiDCoMKgwqDCoMKgIHVp bnQxNl90IGJhc2V0YWJsZVs1MTJdOwo+PiDCoMKgwqDCoMKgIHVpbnQ4X3Qgc2hpZnR0YWJsZVs1 MTJdOwo+PiArI2VuZGlmCj4+IMKgIH0gZmxvYXQyaGFsZl90YWJsZXM7Cj4+IMKgIHZvaWQgZmZf aW5pdF9mbG9hdDJoYWxmX3RhYmxlcyhmbG9hdDJoYWxmX3RhYmxlcyAqdCk7Cj4+IMKgIHN0YXRp YyBpbmxpbmUgdWludDE2X3QgZmxvYXQyaGFsZih1aW50MzJfdCBmLCBjb25zdCAKPj4gZmxvYXQy aGFsZl90YWJsZXMgKnQpCj4+IMKgIHsKPj4gKyNpZiBIQVZFX0ZBU1RfRkxPQVQxNgo+PiArwqDC oMKgIHVuaW9uIHsKPj4gK8KgwqDCoMKgwqDCoMKgIF9GbG9hdDE2IGY7Cj4+ICvCoMKgwqDCoMKg wqDCoCB1aW50MTZfdCBpOwo+PiArwqDCoMKgIH0gdTsKPj4gK8KgwqDCoCB1LmYgPSBhdl9pbnQy ZmxvYXQoZik7Cj4+ICvCoMKgwqAgcmV0dXJuIHUuaTsKPj4gKyNlbHNlCj4+IMKgwqDCoMKgwqAg dWludDE2X3QgaDsKPj4gwqDCoMKgwqDCoCBoID0gdC0+YmFzZXRhYmxlWyhmID4+IDIzKSAmIDB4 MWZmXSArICgoZiAmIDB4MDA3ZmZmZmYpID4+IAo+PiB0LT5zaGlmdHRhYmxlWyhmID4+IDIzKSAm IDB4MWZmXSk7Cj4+IMKgwqDCoMKgwqAgcmV0dXJuIGg7Cj4+ICsjZW5kaWYKPj4gwqAgfQo+PiDC oCAjZW5kaWYgLyogQVZVVElMX0ZMT0FUMkhBTEZfSCAqLwo+PiBkaWZmIC0tZ2l0IGEvbGliYXZ1 dGlsL2hhbGYyZmxvYXQuYyBiL2xpYmF2dXRpbC9oYWxmMmZsb2F0LmMKPj4gaW5kZXggYmFhYzhl NDA5My4uZmYxOThhODE4NyAxMDA2NDQKPj4gLS0tIGEvbGliYXZ1dGlsL2hhbGYyZmxvYXQuYwo+ PiArKysgYi9saWJhdnV0aWwvaGFsZjJmbG9hdC5jCj4+IEBAIC0xOCw2ICsxOCw3IEBACj4+IMKg ICNpbmNsdWRlICJsaWJhdnV0aWwvaGFsZjJmbG9hdC5oIgo+PiArI2lmICFIQVZFX0ZBU1RfRkxP QVQxNgo+PiDCoCBzdGF0aWMgdWludDMyX3QgY29udmVydG1hbnRpc3NhKHVpbnQzMl90IGkpCj4+ IMKgIHsKPj4gwqDCoMKgwqDCoCBpbnQzMl90IG0gPSBpIDw8IDEzOyAvLyBaZXJvIHBhZCBtYW50 aXNzYSBiaXRzCj4+IEBAIC0zMyw5ICszNCwxMSBAQCBzdGF0aWMgdWludDMyX3QgY29udmVydG1h bnRpc3NhKHVpbnQzMl90IGkpCj4+IMKgwqDCoMKgwqAgcmV0dXJuIG0gfCBlOyAvLyBSZXR1cm4g Y29tYmluZWQgbnVtYmVyCj4+IMKgIH0KPj4gKyNlbmRpZgo+PiDCoCB2b2lkIGZmX2luaXRfaGFs ZjJmbG9hdF90YWJsZXMoaGFsZjJmbG9hdF90YWJsZXMgKnQpCj4+IMKgIHsKPj4gKyNpZiAhSEFW RV9GQVNUX0ZMT0FUMTYKPj4gwqDCoMKgwqDCoCB0LT5tYW50aXNzYXRhYmxlWzBdID0gMDsKPj4g wqDCoMKgwqDCoCBmb3IgKGludCBpID0gMTsgaSA8IDEwMjQ7IGkrKykKPj4gwqDCoMKgwqDCoMKg wqDCoMKgIHQtPm1hbnRpc3NhdGFibGVbaV0gPSBjb252ZXJ0bWFudGlzc2EoaSk7Cj4+IEBAIC02 MCw0ICs2Myw1IEBAIHZvaWQgZmZfaW5pdF9oYWxmMmZsb2F0X3RhYmxlcyhoYWxmMmZsb2F0X3Rh YmxlcyAqdCkKPj4gwqDCoMKgwqDCoCB0LT5vZmZzZXR0YWJsZVszMV0gPSAyMDQ4Owo+PiDCoMKg wqDCoMKgIHQtPm9mZnNldHRhYmxlWzMyXSA9IDA7Cj4+IMKgwqDCoMKgwqAgdC0+b2Zmc2V0dGFi bGVbNjNdID0gMjA0ODsKPj4gKyNlbmRpZgo+PiDCoCB9Cj4+IGRpZmYgLS1naXQgYS9saWJhdnV0 aWwvaGFsZjJmbG9hdC5oIGIvbGliYXZ1dGlsL2hhbGYyZmxvYXQuaAo+PiBpbmRleCBjYjU4ZTQ0 YTFjLi41N2VlODM3MmZlIDEwMDY0NAo+PiAtLS0gYS9saWJhdnV0aWwvaGFsZjJmbG9hdC5oCj4+ ICsrKyBiL2xpYmF2dXRpbC9oYWxmMmZsb2F0LmgKPj4gQEAgLTIwLDIyICsyMCwzOCBAQAo+PiDC oCAjZGVmaW5lIEFWVVRJTF9IQUxGMkZMT0FUX0gKPj4gwqAgI2luY2x1ZGUgPHN0ZGludC5oPgo+ PiArI2luY2x1ZGUgImludGZsb2F0LmgiCj4+ICsKPj4gKyNpbmNsdWRlICJjb25maWcuaCIKPj4g wqAgdHlwZWRlZiBzdHJ1Y3QgaGFsZjJmbG9hdF90YWJsZXMgewo+PiArI2lmIEhBVkVfRkFTVF9G TE9BVDE2Cj4+ICvCoMKgwqAgdWludDhfdCBkdW1teTsKPj4gKyNlbHNlCj4+IMKgwqDCoMKgwqAg dWludDMyX3QgbWFudGlzc2F0YWJsZVszMDcyXTsKPj4gwqDCoMKgwqDCoCB1aW50MzJfdCBleHBv bmVudHRhYmxlWzY0XTsKPj4gwqDCoMKgwqDCoCB1aW50MTZfdCBvZmZzZXR0YWJsZVs2NF07Cj4+ ICsjZW5kaWYKPj4gwqAgfSBoYWxmMmZsb2F0X3RhYmxlczsKPj4gwqAgdm9pZCBmZl9pbml0X2hh bGYyZmxvYXRfdGFibGVzKGhhbGYyZmxvYXRfdGFibGVzICp0KTsKPj4gwqAgc3RhdGljIGlubGlu ZSB1aW50MzJfdCBoYWxmMmZsb2F0KHVpbnQxNl90IGgsIGNvbnN0IAo+PiBoYWxmMmZsb2F0X3Rh YmxlcyAqdCkKPj4gwqAgewo+PiArI2lmIEhBVkVfRkFTVF9GTE9BVDE2Cj4+ICvCoMKgwqAgdW5p b24gewo+PiArwqDCoMKgwqDCoMKgwqAgX0Zsb2F0MTYgZjsKPj4gK8KgwqDCoMKgwqDCoMKgIHVp bnQxNl90IGk7Cj4+ICvCoMKgwqAgfSB1Owo+PiArwqDCoMKgIHUuaSA9IGg7Cj4+ICvCoMKgwqAg cmV0dXJuIGF2X2Zsb2F0MmludCh1LmYpOwo+PiArI2Vsc2UKPj4gwqDCoMKgwqDCoCB1aW50MzJf dCBmOwo+PiDCoMKgwqDCoMKgIGYgPSB0LT5tYW50aXNzYXRhYmxlW3QtPm9mZnNldHRhYmxlW2gg Pj4gMTBdICsgKGggJiAweDNmZildICsgCj4+IHQtPmV4cG9uZW50dGFibGVbaCA+PiAxMF07Cj4+ IMKgwqDCoMKgwqAgcmV0dXJuIGY7Cj4+ICsjZW5kaWYKPj4gwqAgfQo+PiDCoCAjZW5kaWYgLyog QVZVVElMX0hBTEYyRkxPQVRfSCAqLwo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1kZXZl bEBmZm1wZWcub3JnCj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVn LWRldmVsCj4gCj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4g ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJl Ii4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVn LWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBl Zy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNp dCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdp dGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=