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 C8D434AA02 for ; Thu, 6 Jun 2024 18:16:07 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1EBB168D705; Thu, 6 Jun 2024 21:16:05 +0300 (EEST) Received: from smtp1.dnsmadeeasy.com (smtp1.dnsmadeeasy.com [208.94.147.128]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BDCBD68D0BD for ; Thu, 6 Jun 2024 21:15:57 +0300 (EEST) Received: from smtp1.dnsmadeeasy.com (localhost [127.0.0.1]) by smtp1.dnsmadeeasy.com (Postfix) with ESMTP id 9FF9F2F804BF; Thu, 6 Jun 2024 18:15:55 +0000 (UTC) X-Authenticated-Name: nate@nmssoftware.com Received: from stor01 (unknown [129.224.199.189]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp1.dnsmadeeasy.com (Postfix) with ESMTPSA; Thu, 6 Jun 2024 18:15:55 +0000 (UTC) Received: from marcus.forced.laptop (unknown [192.168.26.125]) by stor01 (Postfix) with ESMTP id CEBE31EF9F8; Thu, 6 Jun 2024 13:15:54 -0500 (CDT) From: Marcus B Spencer To: ffmpeg-devel@ffmpeg.org Date: Thu, 6 Jun 2024 13:15:50 -0500 Message-ID: <20240606181551.6201-1-marcus@marcusspencer.xyz> X-Mailer: git-send-email 2.45.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v9] avcodec: add farbfeld encoder, decoder and demuxer 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 Cc: Marcus B Spencer 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: ZmFyYmZlbGQgaXMgYW4gdW5jb21wcmVzc2VkIGltYWdlIGZvcm1hdCB0aGF0IGlzIGEgcGFydCBv ZiBzdWNrbGVzcwp0b29scyAoaHR0cHM6Ly90b29scy5zdWNrbGVzcy5vcmcpLgoKSXRzIGRvY3Vt ZW50YXRpb24gaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdG9vbHMuc3Vja2xlc3Mub3JnL2ZhcmJm ZWxkLgoKQWRkIHN1cHBvcnQgZm9yIHRoaXMgaW1hZ2UgZm9ybWF0IGluIGF2Y29kZWMgYW5kIGF2 Zm9ybWF0LCBhbmQgdXBkYXRlIHRoZSBpbWFnZTIKZm9ybWF0IGFjY29yZGluZ2x5LgoKU2lnbmVk LW9mZi1ieTogTWFyY3VzIEIgU3BlbmNlciA8bWFyY3VzQG1hcmN1c3NwZW5jZXIueHl6PgotLS0K IENoYW5nZWxvZyAgICAgICAgICAgICAgICAgfCAgMSArCiBkb2MvZ2VuZXJhbF9jb250ZW50cy50 ZXhpIHwgIDIgKwogbGliYXZjb2RlYy9NYWtlZmlsZSAgICAgICB8ICAyICsKIGxpYmF2Y29kZWMv YWxsY29kZWNzLmMgICAgfCAgMiArCiBsaWJhdmNvZGVjL2NvZGVjX2Rlc2MuYyAgIHwgIDcgKysr CiBsaWJhdmNvZGVjL2NvZGVjX2lkLmggICAgIHwgIDEgKwogbGliYXZjb2RlYy9mYXJiZmVsZGRl Yy5jICB8IDgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbGliYXZjb2RlYy9m YXJiZmVsZGVuYy5jICB8IDk2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogbGliYXZjb2RlYy92ZXJzaW9uLmggICAgICB8ICAyICstCiBsaWJhdmZvcm1hdC9NYWtlZmls ZSAgICAgIHwgIDEgKwogbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5jICB8ICAxICsKIGxpYmF2Zm9y bWF0L2ltZzIuYyAgICAgICAgfCAgMSArCiBsaWJhdmZvcm1hdC9pbWcyZGVjLmMgICAgIHwgMTYg KysrKysrKwogbGliYXZmb3JtYXQvaW1nMmVuYy5jICAgICB8ICAyICstCiBsaWJhdmZvcm1hdC92 ZXJzaW9uLmggICAgIHwgIDQgKy0KIDE1IGZpbGVzIGNoYW5nZWQsIDIxNiBpbnNlcnRpb25zKCsp LCA0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvZmFyYmZlbGRk ZWMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvZmFyYmZlbGRlbmMuYwoKZGlmZiAt LWdpdCBhL0NoYW5nZWxvZyBiL0NoYW5nZWxvZwppbmRleCAwM2Q2YjI5YWQ4Li4xMDJjNzE4ZmZj IDEwMDY0NAotLS0gYS9DaGFuZ2Vsb2cKKysrIGIvQ2hhbmdlbG9nCkBAIC0xMiw2ICsxMiw3IEBA IHZlcnNpb24gPG5leHQ+OgogLSBxc3ZfcGFyYW1zIG9wdGlvbiBhZGRlZCBmb3IgUVNWIGVuY29k ZXJzCiAtIFZWQyBkZWNvZGVyIGNvbXBhdGlibGUgd2l0aCBEVkIgdGVzdCBjb250ZW50CiAtIHhI RS1BQUMgZGVjb2RlcgorLSBmYXJiZmVsZCBlbmNvZGVyLCBkZWNvZGVyIGFuZCBkZW11eGVyCiAK IAogdmVyc2lvbiA3LjA6CmRpZmYgLS1naXQgYS9kb2MvZ2VuZXJhbF9jb250ZW50cy50ZXhpIGIv ZG9jL2dlbmVyYWxfY29udGVudHMudGV4aQppbmRleCBlN2NmNGY4MjM5Li5mYWIzMDYxMGE0IDEw MDY0NAotLS0gYS9kb2MvZ2VuZXJhbF9jb250ZW50cy50ZXhpCisrKyBiL2RvYy9nZW5lcmFsX2Nv bnRlbnRzLnRleGkKQEAgLTg1Myw2ICs4NTMsOCBAQCBmb2xsb3dpbmcgaW1hZ2UgZm9ybWF0cyBh cmUgc3VwcG9ydGVkOgogICAgIEB0YWIgWCBQaXhNYXAgaW1hZ2UgZm9ybWF0CiBAaXRlbSBYV0Qg IEB0YWIgWCBAdGFiIFgKICAgICBAdGFiIFggV2luZG93IER1bXAgaW1hZ2UgZm9ybWF0CitAaXRl bSBGRiAgICAgICAgICAgQHRhYiBYIEB0YWIgWAorICAgIEB0YWIgZmFyYmZlbGQgdW5jb21wcmVz c2VkIGltYWdlIGZvcm1hdAogQGVuZCBtdWx0aXRhYmxlCiAKIEBjb2Rle1h9IG1lYW5zIHRoYXQg dGhlIGZlYXR1cmUgaW4gdGhhdCBjb2x1bW4gKGVuY29kaW5nIC8gZGVjb2RpbmcpIGlzIHN1cHBv cnRlZC4KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvTWFrZWZpbGUgYi9saWJhdmNvZGVjL01ha2Vm aWxlCmluZGV4IDhhYjQzOThiNmMuLjA4YTNkMzlhZjAgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMv TWFrZWZpbGUKKysrIGIvbGliYXZjb2RlYy9NYWtlZmlsZQpAQCAtMzU2LDYgKzM1Niw4IEBAIE9C SlMtJChDT05GSUdfRVNDQVBFMTMwX0RFQ09ERVIpICAgICAgICs9IGVzY2FwZTEzMC5vCiBPQkpT LSQoQ09ORklHX0VWUkNfREVDT0RFUikgICAgICAgICAgICArPSBldnJjZGVjLm8gYWNlbHBfdmVj dG9ycy5vIGxzcC5vCiBPQkpTLSQoQ09ORklHX0VYUl9ERUNPREVSKSAgICAgICAgICAgICArPSBl eHIubyBleHJkc3AubyBoYWxmMmZsb2F0Lm8KIE9CSlMtJChDT05GSUdfRVhSX0VOQ09ERVIpICAg ICAgICAgICAgICs9IGV4cmVuYy5vIGZsb2F0MmhhbGYubworT0JKUy0kKENPTkZJR19GQVJCRkVM RF9ERUNPREVSKSAgICAgICAgKz0gZmFyYmZlbGRkZWMubworT0JKUy0kKENPTkZJR19GQVJCRkVM RF9FTkNPREVSKSAgICAgICAgKz0gZmFyYmZlbGRlbmMubwogT0JKUy0kKENPTkZJR19GQVNUQVVE SU9fREVDT0RFUikgICAgICAgKz0gZmFzdGF1ZGlvLm8KIE9CSlMtJChDT05GSUdfRkZWMV9ERUNP REVSKSAgICAgICAgICAgICs9IGZmdjFkZWMubyBmZnYxLm8KIE9CSlMtJChDT05GSUdfRkZWMV9F TkNPREVSKSAgICAgICAgICAgICs9IGZmdjFlbmMubyBmZnYxLm8KZGlmZiAtLWdpdCBhL2xpYmF2 Y29kZWMvYWxsY29kZWNzLmMgYi9saWJhdmNvZGVjL2FsbGNvZGVjcy5jCmluZGV4IGIxMDJhODA2 OWUuLjlmOWVkYThlYzYgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMKKysrIGIv bGliYXZjb2RlYy9hbGxjb2RlY3MuYwpAQCAtMTE1LDYgKzExNSw4IEBAIGV4dGVybiBjb25zdCBG RkNvZGVjIGZmX2VzY2FwZTEyNF9kZWNvZGVyOwogZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfZXNj YXBlMTMwX2RlY29kZXI7CiBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9leHJfZW5jb2RlcjsKIGV4 dGVybiBjb25zdCBGRkNvZGVjIGZmX2V4cl9kZWNvZGVyOworZXh0ZXJuIGNvbnN0IEZGQ29kZWMg ZmZfZmFyYmZlbGRfZGVjb2RlcjsKK2V4dGVybiBjb25zdCBGRkNvZGVjIGZmX2ZhcmJmZWxkX2Vu Y29kZXI7CiBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9mZnYxX2VuY29kZXI7CiBleHRlcm4gY29u c3QgRkZDb2RlYyBmZl9mZnYxX2RlY29kZXI7CiBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9mZnZo dWZmX2VuY29kZXI7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2NvZGVjX2Rlc2MuYyBiL2xpYmF2 Y29kZWMvY29kZWNfZGVzYy5jCmluZGV4IGEyOGVmNjgwNjEuLjMzZGJkMmNlOTQgMTAwNjQ0Ci0t LSBhL2xpYmF2Y29kZWMvY29kZWNfZGVzYy5jCisrKyBiL2xpYmF2Y29kZWMvY29kZWNfZGVzYy5j CkBAIC0xOTU5LDYgKzE5NTksMTMgQEAgc3RhdGljIGNvbnN0IEFWQ29kZWNEZXNjcmlwdG9yIGNv ZGVjX2Rlc2NyaXB0b3JzW10gPSB7CiAgICAgICAgIC5sb25nX25hbWUgPSBOVUxMX0lGX0NPTkZJ R19TTUFMTCgiTEVBRCBNQ01QIiksCiAgICAgICAgIC5wcm9wcyAgICAgPSBBVl9DT0RFQ19QUk9Q X0lOVFJBX09OTFkgfCBBVl9DT0RFQ19QUk9QX0xPU1NZLAogICAgIH0sCisgICAgeworICAgICAg ICAuaWQgICAgICAgID0gQVZfQ09ERUNfSURfRkFSQkZFTEQsCisgICAgICAgIC50eXBlICAgICAg PSBBVk1FRElBX1RZUEVfVklERU8sCisgICAgICAgIC5uYW1lICAgICAgPSAiZmFyYmZlbGQiLAor ICAgICAgICAubG9uZ19uYW1lID0gTlVMTF9JRl9DT05GSUdfU01BTEwoImZhcmJmZWxkIHVuY29t cHJlc3NlZCBpbWFnZSIpLAorICAgICAgICAucHJvcHMgICAgID0gQVZfQ09ERUNfUFJPUF9JTlRS QV9PTkxZIHwgQVZfQ09ERUNfUFJPUF9MT1NTTEVTUywKKyAgICB9LAogCiAgICAgLyogdmFyaW91 cyBQQ00gImNvZGVjcyIgKi8KICAgICB7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2NvZGVjX2lk LmggYi9saWJhdmNvZGVjL2NvZGVjX2lkLmgKaW5kZXggMGFiMWUzNGE2MS4uZDRiMGQyM2Y3ZSAx MDA2NDQKLS0tIGEvbGliYXZjb2RlYy9jb2RlY19pZC5oCisrKyBiL2xpYmF2Y29kZWMvY29kZWNf aWQuaApAQCAtMzIyLDYgKzMyMiw3IEBAIGVudW0gQVZDb2RlY0lEIHsKICAgICBBVl9DT0RFQ19J RF9SVFYxLAogICAgIEFWX0NPREVDX0lEX1ZNSVgsCiAgICAgQVZfQ09ERUNfSURfTEVBRCwKKyAg ICBBVl9DT0RFQ19JRF9GQVJCRkVMRCwKIAogICAgIC8qIHZhcmlvdXMgUENNICJjb2RlY3MiICov CiAgICAgQVZfQ09ERUNfSURfRklSU1RfQVVESU8gPSAweDEwMDAwLCAgICAgLy8vPCBBIGR1bW15 IGlkIHBvaW50aW5nIGF0IHRoZSBzdGFydCBvZiBhdWRpbyBjb2RlY3MKZGlmZiAtLWdpdCBhL2xp YmF2Y29kZWMvZmFyYmZlbGRkZWMuYyBiL2xpYmF2Y29kZWMvZmFyYmZlbGRkZWMuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iNTY3MjcyMjVjCi0tLSAvZGV2L251bGwK KysrIGIvbGliYXZjb2RlYy9mYXJiZmVsZGRlYy5jCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBD b3B5cmlnaHQgKGMpIDIwMjQgTWFyY3VzIEIgU3BlbmNlciA8bWFyY3VzQG1hcmN1c3NwZW5jZXIu eHl6PgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIOKAnFNvZnR3YXJl4oCdKSwgdG8K KyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv ZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQg4oCcQVMgSVPigJ0sIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs IEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisg KiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElO IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H UworICogSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlICJhdmNvZGVjLmgiCisjaW5j bHVkZSAiYnl0ZXN0cmVhbS5oIgorI2luY2x1ZGUgImNvZGVjX2ludGVybmFsLmgiCisjaW5jbHVk ZSAiZGVjb2RlLmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2ltZ3V0aWxzLmgiCisjaW5jbHVkZSAi dGhyZWFkLmgiCisKK3N0YXRpYyBpbnQgZmFyYmZlbGRfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250 ZXh0ICpjdHgsIEFWRnJhbWUgKnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgKmdvdF9mcmFtZSwgQVZQYWNrZXQgKnBrdCkKK3sKKyAgICBpbnQgd2lkdGgsIGhlaWdodDsK KyAgICBHZXRCeXRlQ29udGV4dCBnOworICAgIGludCByZXQ7CisKKyAgICBieXRlc3RyZWFtMl9p bml0KCZnLCBwa3QtPmRhdGEsIHBrdC0+c2l6ZSk7CisgICAgYnl0ZXN0cmVhbTJfc2tpcCgmZywg OCk7CisKKyAgICB3aWR0aCAgPSBieXRlc3RyZWFtMl9nZXRfYmUzMigmZyk7CisgICAgaGVpZ2h0 ID0gYnl0ZXN0cmVhbTJfZ2V0X2JlMzIoJmcpOworCisgICAgaWYgKChyZXQgPSBmZl9zZXRfZGlt ZW5zaW9ucyhjdHgsIHdpZHRoLCBoZWlnaHQpKSA8IDApCisgICAgICAgIHJldHVybiByZXQ7CisK KyAgICBjdHgtPnBpeF9mbXQgPSBBVl9QSVhfRk1UX1JHQkE2NEJFOworCisgICAgaWYgKGN0eC0+ c2tpcF9mcmFtZSA+PSBBVkRJU0NBUkRfQUxMKQorICAgICAgICByZXR1cm4gcGt0LT5zaXplOwor CisgICAgaWYgKChyZXQgPSBmZl90aHJlYWRfZ2V0X2J1ZmZlcihjdHgsIHAsIDApKSA8IDApCisg ICAgICAgIHJldHVybiByZXQ7CisKKyAgICBpZiAoKHJldCA9IGF2X2ltYWdlX2dldF9idWZmZXJf c2l6ZShjdHgtPnBpeF9mbXQsIHdpZHRoLCBoZWlnaHQsIDEpKSA8IDApCisgICAgICAgIHJldHVy biByZXQ7CisKKyAgICBpZiAoYnl0ZXN0cmVhbTJfZ2V0X2J5dGVzX2xlZnQoJmcpIDwgcmV0KQor ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgIGF2X2ltYWdlX2ZpbGxf YXJyYXlzKAorICAgICAgICBwLT5kYXRhLAorICAgICAgICBwLT5saW5lc2l6ZSwKKyAgICAgICAg Zy5idWZmZXIsCisgICAgICAgIGN0eC0+cGl4X2ZtdCwKKyAgICAgICAgd2lkdGgsCisgICAgICAg IGhlaWdodCwKKyAgICAgICAgMQorICAgICk7CisKKyAgICAqZ290X2ZyYW1lID0gMTsKKworICAg IHJldHVybiBwa3QtPnNpemU7Cit9CisKK2NvbnN0IEZGQ29kZWMgZmZfZmFyYmZlbGRfZGVjb2Rl ciA9IHsKKyAgICAucC5uYW1lICAgICAgICAgPSAiZmFyYmZlbGQiLAorICAgIENPREVDX0xPTkdf TkFNRSgiZmFyYmZlbGQgdW5jb21wcmVzc2VkIGltYWdlIiksCisgICAgLnAudHlwZSAgICAgICAg ID0gQVZNRURJQV9UWVBFX1ZJREVPLAorICAgIC5wLmlkICAgICAgICAgICA9IEFWX0NPREVDX0lE X0ZBUkJGRUxELAorICAgIC5wLmNhcGFiaWxpdGllcyA9IEFWX0NPREVDX0NBUF9EUjEgfCBBVl9D T0RFQ19DQVBfRlJBTUVfVEhSRUFEUywKKyAgICBGRl9DT0RFQ19ERUNPREVfQ0IoZmFyYmZlbGRf ZGVjb2RlX2ZyYW1lKSwKK307CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2ZhcmJmZWxkZW5jLmMg Yi9saWJhdmNvZGVjL2ZhcmJmZWxkZW5jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uMjgwMTMyNDg1MgotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvZmFyYmZl bGRlbmMuYwpAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDI0IE1hcmN1 cyBCIFNwZW5jZXIgPG1hcmN1c0BtYXJjdXNzcGVuY2VyLnh5ej4KKyAqCisgKiBQZXJtaXNzaW9u IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p bmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp b24gZmlsZXMgKHRoZSDigJxTb2Z0d2FyZeKAnSksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQor ICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0 ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBU aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFs bCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv ZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIOKAnEFTIElT 4oCdLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVE LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS SU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQg SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4K KyAqLworCisjaW5jbHVkZSAiYXZjb2RlYy5oIgorI2luY2x1ZGUgImJ5dGVzdHJlYW0uaCIKKyNp bmNsdWRlICJjb2RlY19pbnRlcm5hbC5oIgorI2luY2x1ZGUgImVuY29kZS5oIgorI2luY2x1ZGUg ImxpYmF2dXRpbC9pbWd1dGlscy5oIgorCisjZGVmaW5lIEhFQURFUl9TSVpFIDE2CisjZGVmaW5l IFBMQU5FX0NPVU5UIDQgLy8gcmVxdWlyZWQgYnkgYXZfaW1hZ2VfY29weV90b19idWZmZXIKKwor c3RhdGljIGludCBmYXJiZmVsZF9lbmNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmN0eCwgQVZQ YWNrZXQgKnBrdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFWRnJh bWUgKnAsIGludCAqZ290X3BhY2tldCkKK3sKKyAgICBpbnQgcmF3X2ltZ19zaXplID0gYXZfaW1h Z2VfZ2V0X2J1ZmZlcl9zaXplKAorICAgICAgICBwLT5mb3JtYXQsCisgICAgICAgIHAtPndpZHRo LAorICAgICAgICBwLT5oZWlnaHQsCisgICAgICAgIDEKKyAgICApOworICAgIGNvbnN0IHVpbnQ4 X3QgKnBsYW5lc1s0XTsKKyAgICBpbnQ2NF90IGJ1Zl9zaXplOworICAgIHVpbnQ4X3QgKmJ1ZjsK KyAgICBpbnQgcmV0OworCisgICAgaWYgKHJhd19pbWdfc2l6ZSA8IDApCisgICAgICAgIHJldHVy biByYXdfaW1nX3NpemU7CisKKyNpZiBJTlRfTUFYID4gSU5UNjRfTUFYIC0gSEVBREVSX1NJWkUK KyAgICBpZiAocmF3X2ltZ19zaXplID4gSU5UNjRfTUFYIC0gSEVBREVSX1NJWkUpCisgICAgICAg IHJldHVybiBBVkVSUk9SKEVSQU5HRSk7CisjZW5kaWYKKworICAgIGJ1Zl9zaXplID0gKGludDY0 X3QpcmF3X2ltZ19zaXplICsgSEVBREVSX1NJWkU7CisKKyAgICBpZiAoKHJldCA9IGZmX2dldF9l bmNvZGVfYnVmZmVyKGN0eCwgcGt0LCBidWZfc2l6ZSwgMCkpIDwgMCkKKyAgICAgICAgcmV0dXJu IHJldDsKKworICAgIGJ1ZiA9IHBrdC0+ZGF0YTsKKworICAgIGJ5dGVzdHJlYW1fcHV0X2J1ZmZl cigmYnVmLCAiZmFyYmZlbGQiLCA4KTsKKworICAgIGJ5dGVzdHJlYW1fcHV0X2JlMzIoJmJ1Ziwg Y3R4LT53aWR0aCk7CisgICAgYnl0ZXN0cmVhbV9wdXRfYmUzMigmYnVmLCBjdHgtPmhlaWdodCk7 CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IFBMQU5FX0NPVU5UOyArK2kpCisgICAgICAgIHBs YW5lc1tpXSA9IHAtPmRhdGFbaV07CisKKyAgICBhdl9pbWFnZV9jb3B5X3RvX2J1ZmZlcigKKyAg ICAgICAgYnVmLAorICAgICAgICByYXdfaW1nX3NpemUsCisgICAgICAgIHBsYW5lcywKKyAgICAg ICAgcC0+bGluZXNpemUsCisgICAgICAgIHAtPmZvcm1hdCwKKyAgICAgICAgcC0+d2lkdGgsCisg ICAgICAgIHAtPmhlaWdodCwKKyAgICAgICAgMQorICAgICk7CisKKyAgICAqZ290X3BhY2tldCA9 IDE7CisKKyAgICByZXR1cm4gMDsKK30KKworY29uc3QgRkZDb2RlYyBmZl9mYXJiZmVsZF9lbmNv ZGVyID0geworICAgIC5wLm5hbWUgICAgICAgICA9ICJmYXJiZmVsZCIsCisgICAgQ09ERUNfTE9O R19OQU1FKCJmYXJiZmVsZCB1bmNvbXByZXNzZWQgaW1hZ2UiKSwKKyAgICAucC50eXBlICAgICAg ICAgPSBBVk1FRElBX1RZUEVfVklERU8sCisgICAgLnAuaWQgICAgICAgICAgID0gQVZfQ09ERUNf SURfRkFSQkZFTEQsCisgICAgLnAuY2FwYWJpbGl0aWVzID0gQVZfQ09ERUNfQ0FQX0RSMSB8IEFW X0NPREVDX0NBUF9GUkFNRV9USFJFQURTLAorICAgIEZGX0NPREVDX0VOQ09ERV9DQihmYXJiZmVs ZF9lbmNvZGVfZnJhbWUpLAorICAgIC5wLnBpeF9mbXRzICAgICA9IChjb25zdCBlbnVtIEFWUGl4 ZWxGb3JtYXRbXSl7CisgICAgICAgIEFWX1BJWF9GTVRfUkdCQTY0QkUsCisgICAgICAgIEFWX1BJ WF9GTVRfTk9ORQorICAgIH0sCit9OwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92ZXJzaW9uLmgg Yi9saWJhdmNvZGVjL3ZlcnNpb24uaAppbmRleCBkYTU0Zjg3ODg3Li43YWNiMjYxYmIzIDEwMDY0 NAotLS0gYS9saWJhdmNvZGVjL3ZlcnNpb24uaAorKysgYi9saWJhdmNvZGVjL3ZlcnNpb24uaApA QCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAidmVyc2lvbl9tYWpvci5oIgogCi0jZGVmaW5l IExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiAgIDYKKyNkZWZpbmUgTElCQVZDT0RFQ19WRVJTSU9O X01JTk9SICAgNwogI2RlZmluZSBMSUJBVkNPREVDX1ZFUlNJT05fTUlDUk8gMTAwCiAKICNkZWZp bmUgTElCQVZDT0RFQ19WRVJTSU9OX0lOVCAgQVZfVkVSU0lPTl9JTlQoTElCQVZDT0RFQ19WRVJT SU9OX01BSk9SLCBcCmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9NYWtlZmlsZSBiL2xpYmF2Zm9y bWF0L01ha2VmaWxlCmluZGV4IDFjNGQ5ZGVjY2QuLjU4OGEwOTcxNDkgMTAwNjQ0Ci0tLSBhL2xp YmF2Zm9ybWF0L01ha2VmaWxlCisrKyBiL2xpYmF2Zm9ybWF0L01ha2VmaWxlCkBAIC0yODQsNiAr Mjg0LDcgQEAgT0JKUy0kKENPTkZJR19JTUFHRV9DUklfUElQRV9ERU1VWEVSKSAgICAgKz0gaW1n MmRlYy5vIGltZzIubwogT0JKUy0kKENPTkZJR19JTUFHRV9ERFNfUElQRV9ERU1VWEVSKSAgICAg Kz0gaW1nMmRlYy5vIGltZzIubwogT0JKUy0kKENPTkZJR19JTUFHRV9EUFhfUElQRV9ERU1VWEVS KSAgICAgKz0gaW1nMmRlYy5vIGltZzIubwogT0JKUy0kKENPTkZJR19JTUFHRV9FWFJfUElQRV9E RU1VWEVSKSAgICAgKz0gaW1nMmRlYy5vIGltZzIubworT0JKUy0kKENPTkZJR19JTUFHRV9GQVJC RkVMRF9QSVBFX0RFTVVYRVIpKz0gaW1nMmRlYy5vIGltZzIubwogT0JKUy0kKENPTkZJR19JTUFH RV9HRU1fUElQRV9ERU1VWEVSKSAgICAgKz0gaW1nMmRlYy5vIGltZzIubwogT0JKUy0kKENPTkZJ R19JTUFHRV9HSUZfUElQRV9ERU1VWEVSKSAgICAgKz0gaW1nMmRlYy5vIGltZzIubwogT0JKUy0k KENPTkZJR19JTUFHRV9IRFJfUElQRV9ERU1VWEVSKSAgICAgKz0gaW1nMmRlYy5vIGltZzIubwpk aWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvYWxsZm9ybWF0cy5jIGIvbGliYXZmb3JtYXQvYWxsZm9y bWF0cy5jCmluZGV4IDMwNWZhNDY1MzIuLjY5MDBlZTgxOTkgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9y bWF0L2FsbGZvcm1hdHMuYworKysgYi9saWJhdmZvcm1hdC9hbGxmb3JtYXRzLmMKQEAgLTUzNyw2 ICs1MzcsNyBAQCBleHRlcm4gY29uc3QgRkZJbnB1dEZvcm1hdCAgZmZfaW1hZ2VfY3JpX3BpcGVf ZGVtdXhlcjsKIGV4dGVybiBjb25zdCBGRklucHV0Rm9ybWF0ICBmZl9pbWFnZV9kZHNfcGlwZV9k ZW11eGVyOwogZXh0ZXJuIGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZmX2ltYWdlX2RweF9waXBlX2Rl bXV4ZXI7CiBleHRlcm4gY29uc3QgRkZJbnB1dEZvcm1hdCAgZmZfaW1hZ2VfZXhyX3BpcGVfZGVt dXhlcjsKK2V4dGVybiBjb25zdCBGRklucHV0Rm9ybWF0ICBmZl9pbWFnZV9mYXJiZmVsZF9waXBl X2RlbXV4ZXI7CiBleHRlcm4gY29uc3QgRkZJbnB1dEZvcm1hdCAgZmZfaW1hZ2VfZ2VtX3BpcGVf ZGVtdXhlcjsKIGV4dGVybiBjb25zdCBGRklucHV0Rm9ybWF0ICBmZl9pbWFnZV9naWZfcGlwZV9k ZW11eGVyOwogZXh0ZXJuIGNvbnN0IEZGSW5wdXRGb3JtYXQgIGZmX2ltYWdlX2hkcl9waXBlX2Rl bXV4ZXI7CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9pbWcyLmMgYi9saWJhdmZvcm1hdC9pbWcy LmMKaW5kZXggOTk4MTg2N2Y4Mi4uNzdlZGM3ZmY5YiAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQv aW1nMi5jCisrKyBiL2xpYmF2Zm9ybWF0L2ltZzIuYwpAQCAtOTUsNiArOTUsNyBAQAogICAgIFRB RyhRT0ksICAgICAgICAgICAgIHFvaSAgICAgICkgXAogICAgIFRBRyhSQURJQU5DRV9IRFIsICAg IGhkciAgICAgICkgXAogICAgIFRBRyhXQk1QLCAgICAgICAgICAgIHdibXAgICAgICkgXAorICAg IFRBRyhGQVJCRkVMRCwgICAgICAgIGZmICAgICAgICkgXAogICAgIFRBRyhOT05FLCAgICAgICAg ICAgICAgICAgICAgICkKIAogI2RlZmluZSBMRU5HVEhfQ0hFQ0soQ09ERUNJRCwgU1RSKSBcCmRp ZmYgLS1naXQgYS9saWJhdmZvcm1hdC9pbWcyZGVjLmMgYi9saWJhdmZvcm1hdC9pbWcyZGVjLmMK aW5kZXggYTQwNjc1ZDQzNC4uNzAwOTFjNzBmMiAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvaW1n MmRlYy5jCisrKyBiL2xpYmF2Zm9ybWF0L2ltZzJkZWMuYwpAQCAtMTIwNSw2ICsxMjA1LDIxIEBA IHN0YXRpYyBpbnQgdmJuX3Byb2JlKGNvbnN0IEFWUHJvYmVEYXRhICpwKQogICAgIHJldHVybiAw OwogfQogCitzdGF0aWMgaW50IGZhcmJmZWxkX3Byb2JlKGNvbnN0IEFWUHJvYmVEYXRhICpwKQor eworICAgIGlmIChwLT5idWZfc2l6ZSA8IDE2KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlm IChtZW1jbXAocC0+YnVmLCAiZmFyYmZlbGQiLCA4KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg ICAvLyBjaGVjayBpZiB3aWR0aCBvciBoZWlnaHQgaXMgemVybworICAgIGlmIChBVl9SQjMyKHAt PmJ1ZiArIDgpID09IDAgfHwgQVZfUkIzMihwLT5idWYgKyAxMikgPT0gMCkKKyAgICAgICAgcmV0 dXJuIDA7CisKKyAgICByZXR1cm4gQVZQUk9CRV9TQ09SRV9NQVggLSAxOworfQorCiAjZGVmaW5l IElNQUdFQVVUT19ERU1VWEVSXzAoaW1nbmFtZSwgY29kZWNpZCkKICNkZWZpbmUgSU1BR0VBVVRP X0RFTVVYRVJfMShpbWduYW1lLCBjb2RlY2lkKVwKIGNvbnN0IEZGSW5wdXRGb3JtYXQgZmZfaW1h Z2VfICMjIGltZ25hbWUgIyMgX3BpcGVfZGVtdXhlciA9IHtcCkBAIC0xMjM0LDYgKzEyNDksNyBA QCBJTUFHRUFVVE9fREVNVVhFUihjcmksICAgICAgIENSSSkKIElNQUdFQVVUT19ERU1VWEVSKGRk cywgICAgICAgRERTKQogSU1BR0VBVVRPX0RFTVVYRVIoZHB4LCAgICAgICBEUFgpCiBJTUFHRUFV VE9fREVNVVhFUihleHIsICAgICAgIEVYUikKK0lNQUdFQVVUT19ERU1VWEVSKGZhcmJmZWxkLCAg RkFSQkZFTEQpCiBJTUFHRUFVVE9fREVNVVhFUihnZW0sICAgICAgIEdFTSkKIElNQUdFQVVUT19E RU1VWEVSKGdpZiwgICAgICAgR0lGKQogSU1BR0VBVVRPX0RFTVVYRVJfRVhUKGhkciwgICBSQURJ QU5DRV9IRFIsIEhEUikKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2ltZzJlbmMuYyBiL2xpYmF2 Zm9ybWF0L2ltZzJlbmMuYwppbmRleCA1MjZhMTFlNWVlLi4xMzM1NWE2ZmFkIDEwMDY0NAotLS0g YS9saWJhdmZvcm1hdC9pbWcyZW5jLmMKKysrIGIvbGliYXZmb3JtYXQvaW1nMmVuYy5jCkBAIC0y NzYsNyArMjc2LDcgQEAgY29uc3QgRkZPdXRwdXRGb3JtYXQgZmZfaW1hZ2UyX211eGVyID0gewog ICAgIC5wLmxvbmdfbmFtZSAgICA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJpbWFnZTIgc2VxdWVu Y2UiKSwKICAgICAucC5leHRlbnNpb25zICAgPSAiYm1wLGRweCxleHIsamxzLGpwZWcsanBnLGp4 bCxsanBnLHBhbSxwYm0scGN4LHBmbSxwZ20scGdteXV2LHBobSwiCiAgICAgICAgICAgICAgICAg ICAgICAgInBuZyxwcG0sc2dpLHRnYSx0aWYsdGlmZixqcDIsajJjLGoyayx4d2Qsc3VuLHJhcyxy cyxpbTEsaW04LCIKLSAgICAgICAgICAgICAgICAgICAgICAiaW0yNCxzdW5yYXMsdmJuLHhibSx4 ZmFjZSxwaXgseSxhdmlmLHFvaSxoZHIsd2JtcCIsCisgICAgICAgICAgICAgICAgICAgICAgImlt MjQsc3VucmFzLHZibix4Ym0seGZhY2UscGl4LHksYXZpZixxb2ksaGRyLHdibXAsZmYiLAogICAg IC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihWaWRlb011eERhdGEpLAogICAgIC5wLnZpZGVvX2Nv ZGVjICA9IEFWX0NPREVDX0lEX01KUEVHLAogICAgIC53cml0ZV9oZWFkZXIgICA9IHdyaXRlX2hl YWRlciwKZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L3ZlcnNpb24uaCBiL2xpYmF2Zm9ybWF0L3Zl cnNpb24uaAppbmRleCA0Njg3Y2Q4NTdjLi5hZjdkMGExMDI0IDEwMDY0NAotLS0gYS9saWJhdmZv cm1hdC92ZXJzaW9uLmgKKysrIGIvbGliYXZmb3JtYXQvdmVyc2lvbi5oCkBAIC0zMSw4ICszMSw4 IEBACiAKICNpbmNsdWRlICJ2ZXJzaW9uX21ham9yLmgiCiAKLSNkZWZpbmUgTElCQVZGT1JNQVRf VkVSU0lPTl9NSU5PUiAgIDMKLSNkZWZpbmUgTElCQVZGT1JNQVRfVkVSU0lPTl9NSUNSTyAxMDQK KyNkZWZpbmUgTElCQVZGT1JNQVRfVkVSU0lPTl9NSU5PUiAgIDQKKyNkZWZpbmUgTElCQVZGT1JN QVRfVkVSU0lPTl9NSUNSTyAxMDAKIAogI2RlZmluZSBMSUJBVkZPUk1BVF9WRVJTSU9OX0lOVCBB Vl9WRVJTSU9OX0lOVChMSUJBVkZPUk1BVF9WRVJTSU9OX01BSk9SLCBcCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQkFWRk9STUFUX1ZFUlNJT05fTUlO T1IsIFwKLS0gCjIuNDUuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9y ZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVu c3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVz dEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=