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 553FF44E3D for ; Tue, 27 Dec 2022 23:19:04 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C9BDC68BCBD; Wed, 28 Dec 2022 01:18:33 +0200 (EET) Received: from ssq0.pkh.me (laubervilliers-656-1-228-164.w92-154.abo.wanadoo.fr [92.154.28.164]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B1D2068BC9A for ; Wed, 28 Dec 2022 01:18:26 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pkh.me; s=selector1; t=1672183096; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=WcErPaO7Q9cDOvterFZ60wYQJexR1JN8exf4X2WtHaQ=; b=U1OC7daX7nhRkLvaUiLs7VRBy4wIoTj6KqiyChlKHKWAyksa1nSqWj/fu1odYSbYU8yblw VaBRRDXDdK1F+L84q0WTDuOL2pwbOswQI3mNrU8l6kxbFrXa6BNO/Dw85VLnlmFWT+jtdh cZd815YyX5Qj8Kuxh6DDY6iLOyh8g3I= Received: from localhost (ssq0.pkh.me [local]) by ssq0.pkh.me (OpenSMTPD) with ESMTPA id 283b3d4e; Tue, 27 Dec 2022 23:18:16 +0000 (UTC) From: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 28 Dec 2022 00:17:46 +0100 Message-Id: <20221227231814.2520181-5-u@pkh.me> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221227231814.2520181-1-u@pkh.me> References: <20221105152617.1809282-1-u@pkh.me> <20221227231814.2520181-1-u@pkh.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 04/32] avfilter/palette{gen, use}: add palette utils 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: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= 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: VGhlc2UgY29sb3IgbWFuYWdlbWVudCBoZWxwZXJzIHdpbGwgYmUgc2hhcmVkIGJ5IHBhbGV0dGVn ZW4gYW5kCnBhbGV0dGV1c2UgaW4gdGhlIGZvbGxvd2luZyBjb21taXRzLgoKTm90ZSB0aGF0IGl0 IHByb2JhYmx5IG1ha2VzIHNlbnNlIHRvIHNoYXJlIGF0IGxlYXN0IHRoZSBzUkdCL2xpbmVhcgpm dW5jdGlvbnMgd2l0aCBvdGhlciBmaWx0ZXJzIGF0IHNvbWUgcG9pbnQuCgpNb3JlIGluZm9ybWF0 aW9uIG9uIE9rTGFiIGNhbiBiZSBmb3VuZCBoZXJlOiBodHRwczovL2JvdHRvc3Nvbi5naXRodWIu aW8vcG9zdHMvb2tsYWIvCgpGb3IgdGhlIGFyaXRobWV0aWMgaW50ZWdlciB2ZXJzaW9uLCBzZWU6 Cmh0dHA6Ly9ibG9nLnBraC5tZS9wLzM4LXBvcnRpbmctb2tsYWItY29sb3JzcGFjZS10by1pbnRl Z2VyLWFyaXRobWV0aWMuaHRtbAphbmQgaHR0cHM6Ly9naXRodWIuY29tL3ViaXR1eC9va2xhYi1p bnQKLS0tCiBsaWJhdmZpbHRlci9wYWxldHRlLmMgfCAyMTAgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiBsaWJhdmZpbHRlci9wYWxldHRlLmggfCAgNTggKysrKysr KysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDI2OCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAx MDA2NDQgbGliYXZmaWx0ZXIvcGFsZXR0ZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0 ZXIvcGFsZXR0ZS5oCgpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvcGFsZXR0ZS5jIGIvbGliYXZm aWx0ZXIvcGFsZXR0ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjAz ZTQ4ZmM3MWUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmZpbHRlci9wYWxldHRlLmMKQEAgLTAs MCArMSwyMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjAgQmrDtnJuIE90dG9zc29uCisg KiBDb3B5cmlnaHQgKGMpIDIwMjIgQ2zDqW1lbnQgQsWTc2NoIDx1IHBraCBtZT4KKyAqCisgKiBU aGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz aW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl bnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl CisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC b3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworCisjaW5jbHVkZSAibGliYXZ1dGlsL2Nv bW1vbi5oIgorI2luY2x1ZGUgInBhbGV0dGUuaCIKKworI2RlZmluZSBLICgoMSA8PCAxNikgLSAx KQorI2RlZmluZSBLMiAoKGludDY0X3QpSypLKQorI2RlZmluZSBQICgoMSA8PCA5KSAtIDEpCisK Ky8qKgorICogVGFibGUgbWFwcGluZyBmb3JtdWxhOgorICogICBmKHgpID0geCA8IDAuMDQwNDUg PyB4LzEyLjkyIDogKCh4KzAuMDU1KS8xLjA1NSleMi40ICAoc1JHQiBFT1RGKQorICogV2hlcmUg eCBpcyB0aGUgbm9ybWFsaXplZCBpbmRleCBpbiB0aGUgdGFibGUgYW5kIGYoeCkgdGhlIHZhbHVl IGluIHRoZSB0YWJsZS4KKyAqIGYoeCkgaXMgcmVtYXBwZWQgdG8gWzA7S10gYW5kIHJvdW5kZWQu CisgKi8KK3N0YXRpYyBjb25zdCB1aW50MTZfdCBzcmdiMmxpbmVhclsyNTZdID0geworICAgIDB4 MDAwMCwgMHgwMDE0LCAweDAwMjgsIDB4MDAzYywgMHgwMDUwLCAweDAwNjMsIDB4MDA3NywgMHgw MDhiLAorICAgIDB4MDA5ZiwgMHgwMGIzLCAweDAwYzcsIDB4MDBkYiwgMHgwMGYxLCAweDAxMDgs IDB4MDEyMCwgMHgwMTM5LAorICAgIDB4MDE1NCwgMHgwMTZmLCAweDAxOGMsIDB4MDFhYiwgMHgw MWNhLCAweDAxZWIsIDB4MDIwZSwgMHgwMjMyLAorICAgIDB4MDI1NywgMHgwMjdkLCAweDAyYTUs IDB4MDJjZSwgMHgwMmY5LCAweDAzMjUsIDB4MDM1MywgMHgwMzgyLAorICAgIDB4MDNiMywgMHgw M2U1LCAweDA0MTgsIDB4MDQ0ZCwgMHgwNDg0LCAweDA0YmMsIDB4MDRmNiwgMHgwNTMyLAorICAg IDB4MDU2ZiwgMHgwNWFkLCAweDA1ZWQsIDB4MDYyZiwgMHgwNjczLCAweDA2YjgsIDB4MDZmZSwg MHgwNzQ3LAorICAgIDB4MDc5MSwgMHgwN2RkLCAweDA4MmEsIDB4MDg3YSwgMHgwOGNhLCAweDA5 MWQsIDB4MDk3MiwgMHgwOWM4LAorICAgIDB4MGEyMCwgMHgwYTc5LCAweDBhZDUsIDB4MGIzMiwg MHgwYjkxLCAweDBiZjIsIDB4MGM1NSwgMHgwY2JhLAorICAgIDB4MGQyMCwgMHgwZDg4LCAweDBk ZjIsIDB4MGU1ZSwgMHgwZWNjLCAweDBmM2MsIDB4MGZhZSwgMHgxMDIxLAorICAgIDB4MTA5Nywg MHgxMTBlLCAweDExODgsIDB4MTIwMywgMHgxMjgwLCAweDEzMDAsIDB4MTM4MSwgMHgxNDA0LAor ICAgIDB4MTQ4OSwgMHgxNTEwLCAweDE1OWEsIDB4MTYyNSwgMHgxNmIyLCAweDE3NDEsIDB4MTdk MywgMHgxODY2LAorICAgIDB4MThmYiwgMHgxOTkzLCAweDFhMmMsIDB4MWFjOCwgMHgxYjY2LCAw eDFjMDYsIDB4MWNhNywgMHgxZDRjLAorICAgIDB4MWRmMiwgMHgxZTlhLCAweDFmNDQsIDB4MWZm MSwgMHgyMGEwLCAweDIxNTAsIDB4MjIwNCwgMHgyMmI5LAorICAgIDB4MjM3MCwgMHgyNDJhLCAw eDI0ZTUsIDB4MjVhMywgMHgyNjY0LCAweDI3MjYsIDB4MjdlYiwgMHgyOGIxLAorICAgIDB4Mjk3 YiwgMHgyYTQ2LCAweDJiMTQsIDB4MmJlMywgMHgyY2I2LCAweDJkOGEsIDB4MmU2MSwgMHgyZjNh LAorICAgIDB4MzAxNSwgMHgzMGYyLCAweDMxZDIsIDB4MzJiNCwgMHgzMzk5LCAweDM0ODAsIDB4 MzU2OSwgMHgzNjU1LAorICAgIDB4Mzc0MiwgMHgzODMzLCAweDM5MjUsIDB4M2ExYSwgMHgzYjEy LCAweDNjMGIsIDB4M2QwNywgMHgzZTA2LAorICAgIDB4M2YwNywgMHg0MDBhLCAweDQxMTAsIDB4 NDIxOCwgMHg0MzIzLCAweDQ0MzAsIDB4NDUzZiwgMHg0NjUxLAorICAgIDB4NDc2NSwgMHg0ODdj LCAweDQ5OTUsIDB4NGFiMSwgMHg0YmNmLCAweDRjZjAsIDB4NGUxMywgMHg0ZjM5LAorICAgIDB4 NTA2MSwgMHg1MThjLCAweDUyYjksIDB4NTNlOSwgMHg1NTFiLCAweDU2NTAsIDB4NTc4NywgMHg1 OGMxLAorICAgIDB4NTlmZSwgMHg1YjNkLCAweDVjN2UsIDB4NWRjMiwgMHg1ZjA5LCAweDYwNTIs IDB4NjE5ZSwgMHg2MmVkLAorICAgIDB4NjQzZSwgMHg2NTkxLCAweDY2ZTgsIDB4Njg0MCwgMHg2 OTljLCAweDZhZmEsIDB4NmM1YiwgMHg2ZGJlLAorICAgIDB4NmYyNCwgMHg3MDhkLCAweDcxZjgs IDB4NzM2NiwgMHg3NGQ3LCAweDc2NGEsIDB4NzdjMCwgMHg3OTM5LAorICAgIDB4N2FiNCwgMHg3 YzMyLCAweDdkYjMsIDB4N2YzNywgMHg4MGJkLCAweDgyNDYsIDB4ODNkMSwgMHg4NTVmLAorICAg IDB4ODZmMCwgMHg4ODg0LCAweDhhMWIsIDB4OGJiNCwgMHg4ZDUwLCAweDhlZWYsIDB4OTA5MCwg MHg5MjM1LAorICAgIDB4OTNkYywgMHg5NTg2LCAweDk3MzIsIDB4OThlMiwgMHg5YTk0LCAweDlj NDksIDB4OWUwMSwgMHg5ZmJiLAorICAgIDB4YTE3OSwgMHhhMzM5LCAweGE0ZmMsIDB4YTZjMiwg MHhhODhiLCAweGFhNTYsIDB4YWMyNSwgMHhhZGY2LAorICAgIDB4YWZjYSwgMHhiMWExLCAweGIz N2IsIDB4YjU1NywgMHhiNzM3LCAweGI5MTksIDB4YmFmZiwgMHhiY2U3LAorICAgIDB4YmVkMiwg MHhjMGMwLCAweGMyYjEsIDB4YzRhNSwgMHhjNjljLCAweGM4OTUsIDB4Y2E5MiwgMHhjYzkxLAor ICAgIDB4Y2U5NCwgMHhkMDk5LCAweGQyYTEsIDB4ZDRhZCwgMHhkNmJiLCAweGQ4Y2MsIDB4ZGFl MCwgMHhkY2Y3LAorICAgIDB4ZGYxMSwgMHhlMTJlLCAweGUzNGUsIDB4ZTU3MSwgMHhlNzk3LCAw eGU5YzAsIDB4ZWJlYywgMHhlZTFiLAorICAgIDB4ZjA0ZCwgMHhmMjgyLCAweGY0YmEsIDB4ZjZm NSwgMHhmOTMzLCAweGZiNzQsIDB4ZmRiOCwgMHhmZmZmLAorfTsKKworLyoqCisgKiBUYWJsZSBt YXBwaW5nIGZvcm11bGE6CisgKiAgIGYoeCkgPSB4IDwgMC4wMDMxMzA4ID8geCoxMi45MiA6IDEu MDU1KnheKDEvMi40KS0wLjA1NSAgKHNSR0IgT0VURikKKyAqIFdoZXJlIHggaXMgdGhlIG5vcm1h bGl6ZWQgaW5kZXggaW4gdGhlIHRhYmxlIGFuZCBmKHgpIHRoZSB2YWx1ZSBpbiB0aGUgdGFibGUu CisgKiBmKHgpIGlzIHJlbWFwcGVkIHRvIFswOzB4ZmZdIGFuZCByb3VuZGVkLgorICoKKyAqIFNp bmNlIGEgMTYtYml0IHRhYmxlIGlzIHRvbyBsYXJnZSwgd2UgcmVkdWNlIGl0cyBwcmVjaXNpb24g dG8gOS1iaXQuCisgKi8KK3N0YXRpYyBjb25zdCB1aW50OF90IGxpbmVhcjJzcmdiW1AgKyAxXSA9 IHsKKyAgICAweDAwLCAweDA2LCAweDBkLCAweDEyLCAweDE2LCAweDE5LCAweDFjLCAweDFmLCAw eDIyLCAweDI0LCAweDI2LCAweDI4LCAweDJhLCAweDJjLCAweDJlLCAweDMwLAorICAgIDB4MzIs IDB4MzMsIDB4MzUsIDB4MzYsIDB4MzgsIDB4MzksIDB4M2IsIDB4M2MsIDB4M2QsIDB4M2UsIDB4 NDAsIDB4NDEsIDB4NDIsIDB4NDMsIDB4NDUsIDB4NDYsCisgICAgMHg0NywgMHg0OCwgMHg0OSwg MHg0YSwgMHg0YiwgMHg0YywgMHg0ZCwgMHg0ZSwgMHg0ZiwgMHg1MCwgMHg1MSwgMHg1MiwgMHg1 MywgMHg1NCwgMHg1NSwgMHg1NiwKKyAgICAweDU2LCAweDU3LCAweDU4LCAweDU5LCAweDVhLCAw eDViLCAweDViLCAweDVjLCAweDVkLCAweDVlLCAweDVmLCAweDVmLCAweDYwLCAweDYxLCAweDYy LCAweDYyLAorICAgIDB4NjMsIDB4NjQsIDB4NjUsIDB4NjUsIDB4NjYsIDB4NjcsIDB4NjcsIDB4 NjgsIDB4NjksIDB4NmEsIDB4NmEsIDB4NmIsIDB4NmMsIDB4NmMsIDB4NmQsIDB4NmUsCisgICAg MHg2ZSwgMHg2ZiwgMHg2ZiwgMHg3MCwgMHg3MSwgMHg3MSwgMHg3MiwgMHg3MywgMHg3MywgMHg3 NCwgMHg3NCwgMHg3NSwgMHg3NiwgMHg3NiwgMHg3NywgMHg3NywKKyAgICAweDc4LCAweDc5LCAw eDc5LCAweDdhLCAweDdhLCAweDdiLCAweDdiLCAweDdjLCAweDdkLCAweDdkLCAweDdlLCAweDdl LCAweDdmLCAweDdmLCAweDgwLCAweDgwLAorICAgIDB4ODEsIDB4ODEsIDB4ODIsIDB4ODIsIDB4 ODMsIDB4ODQsIDB4ODQsIDB4ODUsIDB4ODUsIDB4ODYsIDB4ODYsIDB4ODcsIDB4ODcsIDB4ODgs IDB4ODgsIDB4ODksCisgICAgMHg4OSwgMHg4YSwgMHg4YSwgMHg4YiwgMHg4YiwgMHg4YywgMHg4 YywgMHg4YywgMHg4ZCwgMHg4ZCwgMHg4ZSwgMHg4ZSwgMHg4ZiwgMHg4ZiwgMHg5MCwgMHg5MCwK KyAgICAweDkxLCAweDkxLCAweDkyLCAweDkyLCAweDkzLCAweDkzLCAweDkzLCAweDk0LCAweDk0 LCAweDk1LCAweDk1LCAweDk2LCAweDk2LCAweDk3LCAweDk3LCAweDk3LAorICAgIDB4OTgsIDB4 OTgsIDB4OTksIDB4OTksIDB4OWEsIDB4OWEsIDB4OWEsIDB4OWIsIDB4OWIsIDB4OWMsIDB4OWMs IDB4OWMsIDB4OWQsIDB4OWQsIDB4OWUsIDB4OWUsCisgICAgMHg5ZiwgMHg5ZiwgMHg5ZiwgMHhh MCwgMHhhMCwgMHhhMSwgMHhhMSwgMHhhMSwgMHhhMiwgMHhhMiwgMHhhMywgMHhhMywgMHhhMywg MHhhNCwgMHhhNCwgMHhhNSwKKyAgICAweGE1LCAweGE1LCAweGE2LCAweGE2LCAweGE2LCAweGE3 LCAweGE3LCAweGE4LCAweGE4LCAweGE4LCAweGE5LCAweGE5LCAweGE5LCAweGFhLCAweGFhLCAw eGFiLAorICAgIDB4YWIsIDB4YWIsIDB4YWMsIDB4YWMsIDB4YWMsIDB4YWQsIDB4YWQsIDB4YWUs IDB4YWUsIDB4YWUsIDB4YWYsIDB4YWYsIDB4YWYsIDB4YjAsIDB4YjAsIDB4YjAsCisgICAgMHhi MSwgMHhiMSwgMHhiMSwgMHhiMiwgMHhiMiwgMHhiMywgMHhiMywgMHhiMywgMHhiNCwgMHhiNCwg MHhiNCwgMHhiNSwgMHhiNSwgMHhiNSwgMHhiNiwgMHhiNiwKKyAgICAweGI2LCAweGI3LCAweGI3 LCAweGI3LCAweGI4LCAweGI4LCAweGI4LCAweGI5LCAweGI5LCAweGI5LCAweGJhLCAweGJhLCAw eGJhLCAweGJiLCAweGJiLCAweGJiLAorICAgIDB4YmMsIDB4YmMsIDB4YmMsIDB4YmQsIDB4YmQs IDB4YmQsIDB4YmUsIDB4YmUsIDB4YmUsIDB4YmYsIDB4YmYsIDB4YmYsIDB4YzAsIDB4YzAsIDB4 YzAsIDB4YzEsCisgICAgMHhjMSwgMHhjMSwgMHhjMSwgMHhjMiwgMHhjMiwgMHhjMiwgMHhjMywg MHhjMywgMHhjMywgMHhjNCwgMHhjNCwgMHhjNCwgMHhjNSwgMHhjNSwgMHhjNSwgMHhjNiwKKyAg ICAweGM2LCAweGM2LCAweGM2LCAweGM3LCAweGM3LCAweGM3LCAweGM4LCAweGM4LCAweGM4LCAw eGM5LCAweGM5LCAweGM5LCAweGM5LCAweGNhLCAweGNhLCAweGNhLAorICAgIDB4Y2IsIDB4Y2Is IDB4Y2IsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2QsIDB4Y2QsIDB4Y2QsIDB4Y2UsIDB4 Y2UsIDB4Y2UsIDB4Y2UsIDB4Y2YsIDB4Y2YsCisgICAgMHhjZiwgMHhkMCwgMHhkMCwgMHhkMCwg MHhkMCwgMHhkMSwgMHhkMSwgMHhkMSwgMHhkMiwgMHhkMiwgMHhkMiwgMHhkMiwgMHhkMywgMHhk MywgMHhkMywgMHhkNCwKKyAgICAweGQ0LCAweGQ0LCAweGQ0LCAweGQ1LCAweGQ1LCAweGQ1LCAw eGQ2LCAweGQ2LCAweGQ2LCAweGQ2LCAweGQ3LCAweGQ3LCAweGQ3LCAweGQ3LCAweGQ4LCAweGQ4 LAorICAgIDB4ZDgsIDB4ZDksIDB4ZDksIDB4ZDksIDB4ZDksIDB4ZGEsIDB4ZGEsIDB4ZGEsIDB4 ZGEsIDB4ZGIsIDB4ZGIsIDB4ZGIsIDB4ZGMsIDB4ZGMsIDB4ZGMsIDB4ZGMsCisgICAgMHhkZCwg MHhkZCwgMHhkZCwgMHhkZCwgMHhkZSwgMHhkZSwgMHhkZSwgMHhkZSwgMHhkZiwgMHhkZiwgMHhk ZiwgMHhlMCwgMHhlMCwgMHhlMCwgMHhlMCwgMHhlMSwKKyAgICAweGUxLCAweGUxLCAweGUxLCAw eGUyLCAweGUyLCAweGUyLCAweGUyLCAweGUzLCAweGUzLCAweGUzLCAweGUzLCAweGU0LCAweGU0 LCAweGU0LCAweGU0LCAweGU1LAorICAgIDB4ZTUsIDB4ZTUsIDB4ZTUsIDB4ZTYsIDB4ZTYsIDB4 ZTYsIDB4ZTYsIDB4ZTcsIDB4ZTcsIDB4ZTcsIDB4ZTcsIDB4ZTgsIDB4ZTgsIDB4ZTgsIDB4ZTgs IDB4ZTksCisgICAgMHhlOSwgMHhlOSwgMHhlOSwgMHhlYSwgMHhlYSwgMHhlYSwgMHhlYSwgMHhl YiwgMHhlYiwgMHhlYiwgMHhlYiwgMHhlYywgMHhlYywgMHhlYywgMHhlYywgMHhlZCwKKyAgICAw eGVkLCAweGVkLCAweGVkLCAweGVlLCAweGVlLCAweGVlLCAweGVlLCAweGVmLCAweGVmLCAweGVm LCAweGVmLCAweGVmLCAweGYwLCAweGYwLCAweGYwLCAweGYwLAorICAgIDB4ZjEsIDB4ZjEsIDB4 ZjEsIDB4ZjEsIDB4ZjIsIDB4ZjIsIDB4ZjIsIDB4ZjIsIDB4ZjMsIDB4ZjMsIDB4ZjMsIDB4ZjMs IDB4ZjMsIDB4ZjQsIDB4ZjQsIDB4ZjQsCisgICAgMHhmNCwgMHhmNSwgMHhmNSwgMHhmNSwgMHhm NSwgMHhmNiwgMHhmNiwgMHhmNiwgMHhmNiwgMHhmNiwgMHhmNywgMHhmNywgMHhmNywgMHhmNywg MHhmOCwgMHhmOCwKKyAgICAweGY4LCAweGY4LCAweGY5LCAweGY5LCAweGY5LCAweGY5LCAweGY5 LCAweGZhLCAweGZhLCAweGZhLCAweGZhLCAweGZiLCAweGZiLCAweGZiLCAweGZiLCAweGZiLAor ICAgIDB4ZmMsIDB4ZmMsIDB4ZmMsIDB4ZmMsIDB4ZmQsIDB4ZmQsIDB4ZmQsIDB4ZmQsIDB4ZmQs IDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4ZmYsCit9OworCitpbnQzMl90 IGZmX3NyZ2JfdThfdG9fbGluZWFyX2ludCh1aW50OF90IHgpCit7CisgICAgcmV0dXJuIChpbnQz Ml90KXNyZ2IybGluZWFyW3hdOworfQorCit1aW50OF90IGZmX2xpbmVhcl9pbnRfdG9fc3JnYl91 OChpbnQzMl90IHgpCit7CisgICAgaWYgKHggPD0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAg ICB9IGVsc2UgaWYgKHggPj0gSykgeworICAgICAgICByZXR1cm4gMHhmZjsKKyAgICB9IGVsc2Ug eworICAgICAgICBjb25zdCBpbnQzMl90IHhQID0geCAqIFA7CisgICAgICAgIGNvbnN0IGludDMy X3QgaSA9IHhQIC8gSzsKKyAgICAgICAgY29uc3QgaW50MzJfdCBtID0geFAgJSBLOworICAgICAg ICBjb25zdCBpbnQzMl90IHkwID0gbGluZWFyMnNyZ2JbaV07CisgICAgICAgIGNvbnN0IGludDMy X3QgeTEgPSBsaW5lYXIyc3JnYltpICsgMV07CisgICAgICAgIHJldHVybiAobSAqICh5MSAtIHkw KSArIEsvMikgLyBLICsgeTA7CisgICAgfQorfQorCisvKiBJbnRlZ2VyIGN1YmUgcm9vdCwgd29y a2luZyBvbmx5IHdpdGhpbiBbMDsxXSAqLworc3RhdGljIGludDMyX3QgY2JydDAxX2ludChpbnQz Ml90IHgpCit7CisgICAgaW50NjRfdCB1OworCisgICAgLyogQXBwcm94aW1hdGlvbiBjdXJ2ZSBp cyBmb3IgdGhlIFswOzFdIHJhbmdlICovCisgICAgaWYgKHggPD0gMCkgcmV0dXJuIDA7CisgICAg aWYgKHggPj0gSykgcmV0dXJuIEs7CisKKyAgICAvKgorICAgICAqIEluaXRpYWwgYXBwcm94aW1h dGlvbjogeMKzIC0gMi4xOTg5M3jCsiArIDIuMDE1OTN4ICsgMC4yMTk0MDcKKyAgICAgKgorICAg ICAqIFdlIGFyZSBub3QgdXNpbmcgYW55IHJvdW5kaW5nIGhlcmUgc2luY2UgdGhlIHByZWNpc2lv biBpcyBub3QgaW1wb3J0YW50CisgICAgICogYXQgdGhpcyBzdGFnZSBhbmQgaXQgd291bGQgcmVx dWlyZSB0aGUgbW9yZSBleHBlbnNpdmUgcm91bmRpbmcgZnVuY3Rpb24KKyAgICAgKiB0aGF0IGRl YWxzIHdpdGggbmVnYXRpdmUgbnVtYmVycy4KKyAgICAgKi8KKyAgICB1ID0geCooeCooeCArIC0x NDQxMDdMTCkgLyBLICsgMTMyMTE0TEwpIC8gSyArIDE0Mzc5TEw7CisKKyAgICAvKgorICAgICAq IFJlZmluZSB3aXRoIDIgSGFsbGV5IGl0ZXJhdGlvbnM6CisgICAgICogICB14oKZ4oKK4oKBID0g deKCmS0yZih14oKZKWYnKHXigpkpLygyZicodeKCmSnCsi1mKHXigpkpZiIodeKCmSkpCisgICAg ICogICAgICAgID0gdeKCmSgyeCt14oKZwrMpLyh4KzJ14oKZwrMpCisgICAgICoKKyAgICAgKiBO b3RlOiB1IGlzIG5vdCBleHBlY3RlZCB0byBiZSA8IDAsIHNvIHdlIGNhbiB1c2UgdGhlIChhK2Iv MikvYiByb3VuZGluZy4KKyAgICAgKi8KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykg eworICAgICAgICBjb25zdCBpbnQ2NF90IHUzID0gdSp1KnU7CisgICAgICAgIGNvbnN0IGludDY0 X3QgZGVuID0geCArICgyKnUzICsgSzIvMikgLyBLMjsKKyAgICAgICAgdSA9ICh1ICogKDIqeCAr ICh1MyArIEsyLzIpIC8gSzIpICsgZGVuLzIpIC8gZGVuOworICAgIH0KKworICAgIHJldHVybiB1 OworfQorCitzdGF0aWMgaW50NjRfdCBkaXZfcm91bmQ2NChpbnQ2NF90IGEsIGludDY0X3QgYikg eyByZXR1cm4gKGFeYik8MCA/IChhLWIvMikvYiA6IChhK2IvMikvYjsgfQorCitzdHJ1Y3QgTGFi IGZmX3NyZ2JfdThfdG9fb2tsYWJfaW50KHVpbnQzMl90IHNyZ2IpCit7CisgICAgY29uc3QgaW50 MzJfdCByID0gKGludDMyX3Qpc3JnYjJsaW5lYXJbc3JnYiA+PiAxNiAmIDB4ZmZdOworICAgIGNv bnN0IGludDMyX3QgZyA9IChpbnQzMl90KXNyZ2IybGluZWFyW3NyZ2IgPj4gIDggJiAweGZmXTsK KyAgICBjb25zdCBpbnQzMl90IGIgPSAoaW50MzJfdClzcmdiMmxpbmVhcltzcmdiICAgICAgICYg MHhmZl07CisKKyAgICAvLyBOb3RlOiBsbXMgY2FuIGFjdHVhbGx5IGJlIHNsaWdodGx5IG92ZXIg SyBkdWUgdG8gcm91bmRlZCBjb2VmZmljaWVudHMKKyAgICBjb25zdCBpbnQzMl90IGwgPSAoMjcw MTVMTCpyICsgMzUxNDlMTCpnICsgIDMzNzJMTCpiICsgSy8yKSAvIEs7CisgICAgY29uc3QgaW50 MzJfdCBtID0gKDEzODg3TEwqciArIDQ0NjEwTEwqZyArICA3MDM4TEwqYiArIEsvMikgLyBLOwor ICAgIGNvbnN0IGludDMyX3QgcyA9ICggNTc4N0xMKnIgKyAxODQ2MkxMKmcgKyA0MTI4NkxMKmIg KyBLLzIpIC8gSzsKKworICAgIGNvbnN0IGludDMyX3QgbF8gPSBjYnJ0MDFfaW50KGwpOworICAg IGNvbnN0IGludDMyX3QgbV8gPSBjYnJ0MDFfaW50KG0pOworICAgIGNvbnN0IGludDMyX3Qgc18g PSBjYnJ0MDFfaW50KHMpOworCisgICAgY29uc3Qgc3RydWN0IExhYiByZXQgPSB7CisgICAgICAg IC5MID0gZGl2X3JvdW5kNjQoIDEzNzkyTEwqbF8gKyAgNTIwMTBMTCptXyAtICAgMjY3TEwqc18s IEspLAorICAgICAgICAuYSA9IGRpdl9yb3VuZDY0KDEyOTYyOExMKmxfIC0gMTU5MTU4TEwqbV8g KyAyOTUzMExMKnNfLCBLKSwKKyAgICAgICAgLmIgPSBkaXZfcm91bmQ2NCggIDE2OThMTCpsXyAr ICA1MTI5OUxMKm1fIC0gNTI5OTdMTCpzXywgSyksCisgICAgfTsKKworICAgIHJldHVybiByZXQ7 Cit9CisKK3VpbnQzMl90IGZmX29rbGFiX2ludF90b19zcmdiX3U4KHN0cnVjdCBMYWIgYykKK3sK KyAgICBjb25zdCBpbnQ2NF90IGxfID0gYy5MICsgZGl2X3JvdW5kNjQoMjU5NzRMTCAqIGMuYSwg SykgKyBkaXZfcm91bmQ2NCgxNDE0M0xMICogYy5iLCBLKTsKKyAgICBjb25zdCBpbnQ2NF90IG1f ID0gYy5MICsgZGl2X3JvdW5kNjQoLTY5MThMTCAqIGMuYSwgSykgKyBkaXZfcm91bmQ2NCgtNDE4 NUxMICogYy5iLCBLKTsKKyAgICBjb25zdCBpbnQ2NF90IHNfID0gYy5MICsgZGl2X3JvdW5kNjQo LTU4NjRMTCAqIGMuYSwgSykgKyBkaXZfcm91bmQ2NCgtODQ2MzhMTCAqIGMuYiwgSyk7CisKKyAg ICBjb25zdCBpbnQzMl90IGwgPSBsXypsXypsXyAvIEsyOworICAgIGNvbnN0IGludDMyX3QgbSA9 IG1fKm1fKm1fIC8gSzI7CisgICAgY29uc3QgaW50MzJfdCBzID0gc18qc18qc18gLyBLMjsKKwor ICAgIGNvbnN0IHVpbnQ4X3QgciA9IGZmX2xpbmVhcl9pbnRfdG9fc3JnYl91OCgoMjY3MTY5TEwg KiBsICsgLTIxNjc3MUxMICogbSArIDE1MTM3TEwgKiBzICsgSy8yKSAvIEspOworICAgIGNvbnN0 IHVpbnQ4X3QgZyA9IGZmX2xpbmVhcl9pbnRfdG9fc3JnYl91OCgoLTgzMTI3TEwgKiBsICsgMTcx MDMwTEwgKiBtICsgLTIyMzY4TEwgKiBzICsgSy8yKSAvIEspOworICAgIGNvbnN0IHVpbnQ4X3Qg YiA9IGZmX2xpbmVhcl9pbnRfdG9fc3JnYl91OCgoLTI3NUxMICogbCArIC00NjA5OUxMICogbSAr IDExMTkwOUxMICogcyArIEsvMikgLyBLKTsKKworICAgIHJldHVybiByPDwxNiB8IGc8PDggfCBi OworfQpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvcGFsZXR0ZS5oIGIvbGliYXZmaWx0ZXIvcGFs ZXR0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjY4MzliZjZmYzYK LS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmZpbHRlci9wYWxldHRlLmgKQEAgLTAsMCArMSw1OCBA QAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMCBCasO2cm4gT3R0b3Nzb24KKyAqIENvcHlyaWdo dCAoYykgMjAyMiBDbMOpbWVudCBCxZNzY2ggPHUgcGtoIG1lPgorICoKKyAqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK KyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcg d2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5k YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg MDIxMTAtMTMwMSBVU0EKKyAqLworCisjaWZuZGVmIEFWRklMVEVSX1BBTEVUVEVfSAorI2RlZmlu ZSBBVkZJTFRFUl9QQUxFVFRFX0gKKworI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdGRp bnQuaD4KKworI2luY2x1ZGUgImxpYmF2dXRpbC9hdHRyaWJ1dGVzLmgiCisKK3N0cnVjdCBMYWIg eworICAgIGludDMyX3QgTCwgYSwgYjsKK307CisKKy8qKgorICogTWFwIHNSR0IgOC1iaXQgY29s b3IgY29tcG9uZW50IHRvIGEgMTYtYml0IGxpbmVhciB2YWx1ZSAoZ2FtbWEKKyAqIGV4cGFuZCBm cm9tIGVsZWN0cmljYWwgdG8gb3B0aWNhbCB2YWx1ZSkuCisgKi8KK2ludDMyX3QgZmZfc3JnYl91 OF90b19saW5lYXJfaW50KHVpbnQ4X3QgeCk7CisKKy8qKgorICogTWFwIGEgMTYtYml0IGxpbmVh ciB2YWx1ZSB0byBhIHNSR0IgOC1iaXQgY29sb3IgY29tcG9uZW50IChnYW1tYQorICogY29tcHJl c3NlZCBmcm9tIG9wdGljYWwgdG8gZWxlY3RyaWNhbCB2YWx1ZSkuCisgKi8KK3VpbnQ4X3QgZmZf bGluZWFyX2ludF90b19zcmdiX3U4KGludDMyX3QgeCk7CisKKy8qKgorICogc1JHQiAobm9uLWxp bmVhcikgdG8gT2tMYWIgY29udmVyc2lvbgorICogQHNlZSBodHRwczovL2JvdHRvc3Nvbi5naXRo dWIuaW8vcG9zdHMvb2tsYWIvCisgKi8KK3N0cnVjdCBMYWIgZmZfc3JnYl91OF90b19va2xhYl9p bnQodWludDMyX3Qgc3JnYik7CisKKy8qKgorICogT2tMYWIgdG8gc1JHQiAobm9uLWxpbmVhcikg Y29udmVyc2lvbgorICogQHNlZSBodHRwczovL2JvdHRvc3Nvbi5naXRodWIuaW8vcG9zdHMvb2ts YWIvCisgKi8KK3VpbnQzMl90IGZmX29rbGFiX2ludF90b19zcmdiX3U4KHN0cnVjdCBMYWIgYyk7 CisKKyNlbmRpZiAvKiBBVkZJTFRFUl9QQUxFVFRFX0ggKi8KLS0gCjIuMzkuMAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxp bmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1h bi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3Zl LCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAi dW5zdWJzY3JpYmUiLgo=