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 5B4C745EF8 for ; Fri, 15 Dec 2023 07:25:05 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 43AF868D230; Fri, 15 Dec 2023 09:24:57 +0200 (EET) Received: from shout01.mail.de (shout01.mail.de [62.201.172.24]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AF5A868D099 for ; Fri, 15 Dec 2023 09:24:50 +0200 (EET) Received: from postfix02.mail.de (postfix02.bt.mail.de [10.0.121.126]) by shout01.mail.de (Postfix) with ESMTP id 55C90245D33 for ; Fri, 15 Dec 2023 08:24:50 +0100 (CET) Received: from smtp01.mail.de (smtp02.bt.mail.de [10.0.121.212]) by postfix02.mail.de (Postfix) with ESMTP id 3A31BA03C3 for ; Fri, 15 Dec 2023 08:24:50 +0100 (CET) Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp01.mail.de (Postfix) with ESMTPSA id 9E8CC240AC0 for ; Fri, 15 Dec 2023 08:24:49 +0100 (CET) To: ffmpeg-devel@ffmpeg.org Date: Fri, 15 Dec 2023 08:24:46 +0100 Message-Id: <20231215072447.31761-2-thilo.borgmann@mail.de> In-Reply-To: <20231215072447.31761-1-thilo.borgmann@mail.de> References: <20231215072447.31761-1-thilo.borgmann@mail.de> MIME-Version: 1.0 X-purgate: clean X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate-type: clean X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate: clean X-purgate-size: 14629 X-purgate-ID: 154282::1702625089-1B52A878-B8EED602/0/0 Subject: [FFmpeg-devel] [PATCH 1/2] avfilter: Add fsync filter 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: , From: Thilo Borgmann via ffmpeg-devel Reply-To: FFmpeg development discussions and patches Cc: Thilo Borgmann 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: LS0tCiBDaGFuZ2Vsb2cgICAgICAgICAgICAgICAgfCAgIDEgKwogTUFJTlRBSU5FUlMgICAgICAg ICAgICAgIHwgICAxICsKIGRvYy9maWx0ZXJzLnRleGkgICAgICAgICB8ICAzMyArKysrKwogbGli YXZmaWx0ZXIvTWFrZWZpbGUgICAgIHwgICAxICsKIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyB8 ICAgMSArCiBsaWJhdmZpbHRlci92ZXJzaW9uLmggICAgfCAgIDIgKy0KIGxpYmF2ZmlsdGVyL3Zm X2ZzeW5jLmMgICB8IDMwNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IDcgZmlsZXMgY2hhbmdlZCwgMzQyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci92Zl9mc3luYy5jCgpkaWZmIC0tZ2l0IGEvQ2hhbmdl bG9nIGIvQ2hhbmdlbG9nCmluZGV4IDY3ZWY5MmViMDIuLmEyNTI3OGQyMjcgMTAwNjQ0Ci0tLSBh L0NoYW5nZWxvZworKysgYi9DaGFuZ2Vsb2cKQEAgLTksNiArOSw3IEBAIHZlcnNpb24gPG5leHQ+ OgogLSBhYXAgZmlsdGVyCiAtIGRlbXV4aW5nLCBkZWNvZGluZywgZmlsdGVyaW5nLCBlbmNvZGlu ZywgYW5kIG11eGluZyBpbiB0aGUKICAgZmZtcGVnIENMSSBub3cgYWxsIHJ1biBpbiBwYXJhbGxl bAorLSBmc3luYyBmaWx0ZXIKIAogdmVyc2lvbiA2LjE6CiAtIGxpYmFyaWJjYXB0aW9uIGRlY29k ZXIKZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggMzliMzdlZTBj NS4uNDI1N2ZjYWQ5OCAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMK QEAgLTM0Myw2ICszNDMsNyBAQCBGaWx0ZXJzOgogICB2Zl9kZWxvZ28uYyAgICAgICAgICAgICAg ICAgICAgICAgICAgIEplYW4gRGVsdmFyZSAoQ0MgPGpkZWx2YXJlQHN1c2UuY29tPikKICAgdmZf ZHJhd2JveC5jL2RyYXdncmlkICAgICAgICAgICAgICAgICBBbmRyZXkgVXRraW4KICAgdmZfZXh0 cmFjdHBsYW5lcy5jICAgICAgICAgICAgICAgICAgICBQYXVsIEIgTWFob2wKKyAgdmZfZnN5bmMu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlsbyBCb3JnbWFubgogICB2Zl9oaXN0b2dy YW0uYyAgICAgICAgICAgICAgICAgICAgICAgIFBhdWwgQiBNYWhvbAogICB2Zl9ocXguYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIENsw6ltZW50IELFk3NjaAogICB2Zl9pZGV0LmMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBhc2NhbCBNYXNzaW1pbm8KZGlmZiAtLWdpdCBhL2Rv Yy9maWx0ZXJzLnRleGkgYi9kb2MvZmlsdGVycy50ZXhpCmluZGV4IDZkMDBiYTJjM2YuLjlmMTlj YmE5ZGYgMTAwNjQ0Ci0tLSBhL2RvYy9maWx0ZXJzLnRleGkKKysrIGIvZG9jL2ZpbHRlcnMudGV4 aQpAQCAtMTQ2ODEsNiArMTQ2ODEsMzkgQEAgb3B0aW9uIG1heSBjYXVzZSBmbGlja2VyIHNpbmNl IHRoZSBCLUZyYW1lcyBoYXZlIG9mdGVuIGxhcmdlciBRUC4gRGVmYXVsdCBpcwogCiBAZW5kIHRh YmxlCiAKK0BhbmNob3J7ZnN5bmN9CitAc2VjdGlvbiBmc3luYworCitTeW5jaHJvbml6ZSB2aWRl byBmcmFtZXMgd2l0aCBhbiBleHRlcm5hbCBtYXBwaW5nIGZyb20gYSBmaWxlLgorCitGb3IgZWFj aCBpbnB1dCBQVFMgZ2l2ZW4gaW4gdGhlIG1hcCBmaWxlIGl0IGVpdGhlciBkcm9wcyBvciBjcmVh dGVzIGFzIG1hbnkgZnJhbWVzIGFzIG5lY2Vzc2FyeSB0byByZWNyZWF0ZSB0aGUgc2VxdWVuY2Ug b2Ygb3V0cHV0IGZyYW1lcyBnaXZlbiBpbiB0aGUgbWFwIGZpbGUuCisKK1RoaXMgZmlsdGVyIGlz IHVzZWZ1bCB0byByZWNyZWF0ZSB0aGUgb3V0cHV0IGZyYW1lcyBvZiBhIGZyYW1lcmF0ZSBjb252 ZXJzaW9uIGJ5IHRoZSBAcmVme2Zwc30gZmlsdGVyLCByZWNvcmRlZCBpbnRvIGEgbWFwIGZpbGUg dXNpbmcgdGhlIGZmbXBlZyBvcHRpb24gQGNvZGV7LXN0YXRzX211eF9wcmV9LCBhbmQgZG8gZnVy dGhlciBwcm9jZXNzaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIGZyYW1lcyBlLmcuIHF1YWxpdHkg Y29tcGFyaXNvbi4KKworRWFjaCBsaW5lIG9mIHRoZSBtYXAgZmlsZSBtdXN0IGNvbnRhaW4gdGhy ZWUgaXRlbXMgcGVyIGlucHV0IGZyYW1lLCB0aGUgaW5wdXQgUFRTIChkZWNpbWFsKSwgdGhlIG91 dHB1dCBQVFMgKGRlY2ltYWwpIGFuZCB0aGUgb3V0cHV0IFRJTUVCQVNFIChkZWNpbWFsL2RlY2lt YWwpLCBzZXBlcmF0ZWQgYnkgYSBzcGFjZS4KK1RoaXMgZmlsZSBmb3JtYXQgY29ycmVzcG9uZHMg dG8gdGhlIG91dHB1dCBvZiBAY29kZXstc3RhdHNfbXV4X3ByZV9mbXQ9IkB7cHRzaUB9IEB7cHRz QH0gQHt0YkB9In0uCisKK1RoZSBmaWx0ZXIgYXNzdW1lcyB0aGUgbWFwIGZpbGUgaXMgc29ydGVk IGJ5IGluY3JlYXNpbmcgaW5wdXQgUFRTLgorCitUaGUgZmlsdGVyIGFjY2VwdHMgdGhlIGZvbGxv d2luZyBvcHRpb25zOgorQHRhYmxlIEBvcHRpb24KKworQGl0ZW0gZmlsZSwgZgorVGhlIGZpbGVu YW1lIG9mIHRoZSBtYXAgZmlsZSB0byBiZSB1c2VkLgorQGVuZCB0YWJsZQorCitFeGFtcGxlOgor QGV4YW1wbGUKKyMgQ29udmVydCBhIHZpZGVvIHRvIDI1IGZwcyBhbmQgcmVjb3JkIGEgTUFQX0ZJ TEUgZmlsZSB3aXRoIHRoZSBkZWZhdWx0IGZvcm1hdCBvZiB0aGlzIGZpbHRlcgorZmZtcGVnIC1p IElOUFVUIC12ZiBmcHM9ZnBzPTI1IC1zdGF0c19tdXhfcHJlIE1BUF9GSUxFIC1zdGF0c19tdXhf cHJlX2ZtdCAiQHtwdHNpQH0gQHtwdHNAfSBAe3RiQH0iIE9VVFBVVAorCisjIFNvcnQgTUFQX0ZJ TEUgYnkgaW5jcmVhc2luZyBpbnB1dCBQVFMKK3NvcnQgLW4gTUFQX0ZJTEUKKworIyBVc2UgSU5Q VVQsIE9VVFBVVCBhbmQgdGhlIE1BUF9GSUxFIGZyb20gYWJvdmUgdG8gY29tcGFyZSB0aGUgY29y cmVzcG9uZGluZyBmcmFtZXMgaW4gSU5QVVQgYW5kIE9VVFBVVCB2aWEgU1NJTQorZmZtcGVnIC1p IElOUFVUIC1pIE9VVFBVVCAtZmlsdGVyX2NvbXBsZXggJ1swOnZdZnN5bmM9ZmlsZT1NQVBfRklM RVtyZWZdO1sxOnZdW3JlZl1zc2ltJyAtZiBudWxsIC0KK0BlbmQgZXhhbXBsZQorCiBAc2VjdGlv biBnYmx1cgogCiBBcHBseSBHYXVzc2lhbiBibHVyIGZpbHRlci4KZGlmZiAtLWdpdCBhL2xpYmF2 ZmlsdGVyL01ha2VmaWxlIGIvbGliYXZmaWx0ZXIvTWFrZWZpbGUKaW5kZXggNjM3MjVmOTFiNC4u NjEyNjE2ZGZiNCAxMDA2NDQKLS0tIGEvbGliYXZmaWx0ZXIvTWFrZWZpbGUKKysrIGIvbGliYXZm aWx0ZXIvTWFrZWZpbGUKQEAgLTMyMyw2ICszMjMsNyBAQCBPQkpTLSQoQ09ORklHX0ZSRUVaRURF VEVDVF9GSUxURVIpICAgICAgICAgICArPSB2Zl9mcmVlemVkZXRlY3QubwogT0JKUy0kKENPTkZJ R19GUkVFWkVGUkFNRVNfRklMVEVSKSAgICAgICAgICAgKz0gdmZfZnJlZXplZnJhbWVzLm8KIE9C SlMtJChDT05GSUdfRlJFSTBSX0ZJTFRFUikgICAgICAgICAgICAgICAgICs9IHZmX2ZyZWkwci5v CiBPQkpTLSQoQ09ORklHX0ZTUFBfRklMVEVSKSAgICAgICAgICAgICAgICAgICArPSB2Zl9mc3Bw Lm8gcXBfdGFibGUubworT0JKUy0kKENPTkZJR19GU1lOQ19GSUxURVIpICAgICAgICAgICAgICAg ICAgKz0gdmZfZnN5bmMubwogT0JKUy0kKENPTkZJR19HQkxVUl9GSUxURVIpICAgICAgICAgICAg ICAgICAgKz0gdmZfZ2JsdXIubwogT0JKUy0kKENPTkZJR19HQkxVUl9WVUxLQU5fRklMVEVSKSAg ICAgICAgICAgKz0gdmZfZ2JsdXJfdnVsa2FuLm8gdnVsa2FuLm8gdnVsa2FuX2ZpbHRlci5vCiBP QkpTLSQoQ09ORklHX0dFUV9GSUxURVIpICAgICAgICAgICAgICAgICAgICArPSB2Zl9nZXEubwpk aWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jIGIvbGliYXZmaWx0ZXIvYWxsZmls dGVycy5jCmluZGV4IGVkN2MzMmJlOTQuLmIzMmZmYjJkNzEgMTAwNjQ0Ci0tLSBhL2xpYmF2Zmls dGVyL2FsbGZpbHRlcnMuYworKysgYi9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMKQEAgLTI5OSw2 ICsyOTksNyBAQCBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfZnJlZXplZGV0ZWN0OwogZXh0 ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX2ZyZWV6ZWZyYW1lczsKIGV4dGVybiBjb25zdCBBVkZp bHRlciBmZl92Zl9mcmVpMHI7CiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfZnNwcDsKK2V4 dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl9mc3luYzsKIGV4dGVybiBjb25zdCBBVkZpbHRlciBm Zl92Zl9nYmx1cjsKIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl9nYmx1cl92dWxrYW47CiBl eHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfZ2VxOwpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIv dmVyc2lvbi5oIGIvbGliYXZmaWx0ZXIvdmVyc2lvbi5oCmluZGV4IDc2NDJiNjcwZDEuLjU5MzMw ODU4YmQgMTAwNjQ0Ci0tLSBhL2xpYmF2ZmlsdGVyL3ZlcnNpb24uaAorKysgYi9saWJhdmZpbHRl ci92ZXJzaW9uLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgInZlcnNpb25fbWFqb3Iu aCIKIAotI2RlZmluZSBMSUJBVkZJTFRFUl9WRVJTSU9OX01JTk9SICAxNAorI2RlZmluZSBMSUJB VkZJTFRFUl9WRVJTSU9OX01JTk9SICAxNQogI2RlZmluZSBMSUJBVkZJTFRFUl9WRVJTSU9OX01J Q1JPIDEwMAogCiAKZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL3ZmX2ZzeW5jLmMgYi9saWJhdmZp bHRlci92Zl9mc3luYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjNj ZTZmMjJkMDYKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmZpbHRlci92Zl9mc3luYy5jCkBAIC0w LDAgKzEsMzA0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIzIFRoaWxvIEJvcmdtYW5uIDx0 aGlsby5ib3JnbWFubiBfYXRfIG1haWwuZGU+CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg RkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vu c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVn IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBl ZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5j LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAx IFVTQQorICovCisKKy8qKgorICogQGZpbGUKKyAqIEZpbHRlciBmb3Igc3luY2luZyB2aWRlbyBm cmFtZXMgZnJvbSBleHRlcm5hbCBzb3VyY2UKKyAqCisgKiBAYXV0aG9yIFRoaWxvIEJvcmdtYW5u IDx0aGlsby5ib3JnbWFubiBfYXRfIG1haWwuZGU+CisgKi8KKworI2luY2x1ZGUgImxpYmF2dXRp bC9hdnN0cmluZy5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9lcnJvci5oIgorI2luY2x1ZGUgImxp YmF2dXRpbC9vcHQuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmlvLmgiCisjaW5jbHVkZSAi dmlkZW8uaCIKKyNpbmNsdWRlICJmaWx0ZXJzLmgiCisKKyNkZWZpbmUgQlVGX1NJWkUgMjU2CisK K3R5cGVkZWYgc3RydWN0IEZzeW5jQ29udGV4dCB7CisgICAgY29uc3QgQVZDbGFzcyAqY2xhc3M7 CisgICAgQVZJT0NvbnRleHQgKmF2aW9fY3R4OyAvLyByZWFkaW5nIHRoZSBtYXAgZmlsZQorICAg IEFWRnJhbWUgKmxhc3RfZnJhbWU7ICAgLy8gYnVmZmVyaW5nIHRoZSBsYXN0IGZyYW1lIGZvciBk dXBsaWNhdGluZyBldmVudHVhbGx5CisgICAgY2hhciAqZmlsZW5hbWU7ICAgICAgICAvLyB1c2Vy LXNwZWNpZmllZCBtYXAgZmlsZQorICAgIGNoYXIgKmJ1ZjsgICAgICAgICAgICAgLy8gbGluZSBi dWZmZXIgZm9yIHRoZSBtYXAgZmlsZQorICAgIGNoYXIgKmN1cjsgICAgICAgICAgICAgLy8gY3Vy cmVudCBwb3NpdGlvbiBpbiB0aGUgbGluZSBidWZmZXIKKyAgICBjaGFyICplbmQ7ICAgICAgICAg ICAgIC8vIGVuZCBwb2ludGVyIG9mIHRoZSBsaW5lIGJ1ZmZlcgorICAgIGludDY0X3QgcHRzaTsg ICAgICAgICAgLy8gaW5wdXQgcHRzIHRvIG1hcCB0byBbMC1OXSBvdXRwdXQgcHRzCisgICAgaW50 NjRfdCBwdHM7ICAgICAgICAgICAvLyBvdXRwdXQgcHRzCisgICAgaW50NjRfdCB0Yl9udW07ICAg ICAgICAvLyBvdXRwdXQgdGltZWJhc2UgbnVtCisgICAgaW50NjRfdCB0Yl9kZW47ICAgICAgICAv LyBvdXRwdXQgdGltZWJhc2UgZGVuCit9IEZzeW5jQ29udGV4dDsKKworI2RlZmluZSBPRkZTRVQo eCkgb2Zmc2V0b2YoRnN5bmNDb250ZXh0LCB4KQorI2RlZmluZSBERUZJTkVfT1BUSU9OUyhmaWx0 X25hbWUsIEZMQUdTKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitzdGF0aWMgY29u c3QgQVZPcHRpb24gZmlsdF9uYW1lIyNfb3B0aW9uc1tdID0geyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICB7ICJmaWxlIiwgICAic2V0IHRoZSBmaWxlIG5hbWUgdG8gdXNlIGZvciBmcmFt ZSBzeW5jIiwgT0ZGU0VUKGZpbGVuYW1lKSwgQVZfT1BUX1RZUEVfU1RSSU5HLCB7IC5zdHIgPSAi IiB9LCAuZmxhZ3M9RkxBR1MgfSwgXAorICAgIHsgImYiLCAgICAgICJzZXQgdGhlIGZpbGUgbmFt ZSB0byB1c2UgZm9yIGZyYW1lIHN5bmMiLCBPRkZTRVQoZmlsZW5hbWUpLCBBVl9PUFRfVFlQRV9T VFJJTkcsIHsgLnN0ciA9ICIiIH0sIC5mbGFncz1GTEFHUyB9LCBcCisgICAgeyBOVUxMIH0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK K30KKworLy8gZmlsbHMgdGhlIGJ1ZmZlciBmcm9tIGN1ciB0byBlbmQsIGFkZCBcMCBhdCBFT0YK K3N0YXRpYyBpbnQgYnVmX2ZpbGwoRnN5bmNDb250ZXh0ICpjdHgpCit7CisgICAgaW50IHJldDsK KyAgICBpbnQgbnVtID0gY3R4LT5lbmQgLSBjdHgtPmN1cjsKKworICAgIHJldCA9IGF2aW9fcmVh ZChjdHgtPmF2aW9fY3R4LCBjdHgtPmN1ciwgbnVtKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAg ICAgcmV0dXJuIHJldDsKKyAgICBpZiAocmV0IDwgbnVtKSB7CisgICAgICAgICooY3R4LT5jdXIg KyByZXQpID0gJ1wwJzsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCisvLyBjb3BpZXMg Y3VyIHRvIGVuZCB0byB0aGUgYmVnaW5uaW5nIGFuZCBmaWxscyB0aGUgcmVzdAorc3RhdGljIGlu dCBidWZfcmVsb2FkKEZzeW5jQ29udGV4dCAqY3R4KQoreworICAgIGludCBpLCByZXQ7CisgICAg aW50IG51bSA9IGN0eC0+ZW5kIC0gY3R4LT5jdXI7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVt OyBpKyspIHsKKyAgICAgICAgY3R4LT5idWZbaV0gPSAqY3R4LT5jdXIrKzsKKyAgICB9CisKKyAg ICBjdHgtPmN1ciA9IGN0eC0+YnVmICsgaTsKKyAgICByZXQgPSBidWZfZmlsbChjdHgpOworICAg IGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworICAgIGN0eC0+Y3VyID0gY3R4LT5i dWY7CisKKyAgICByZXR1cm4gcmV0OworfQorCisvLyBza2lwIGZyb20gY3VyIG92ZXIgZW9sCitz dGF0aWMgdm9pZCBidWZfc2tpcF9lb2woRnN5bmNDb250ZXh0ICpjdHgpCit7CisgICAgY2hhciAq aTsKKyAgICBmb3IgKGkgPSBjdHgtPmN1cjsgaSA8IGN0eC0+ZW5kOyBpKyspIHsKKyAgICAgICAg aWYgKCppICE9ICdcbicpLy8gJiYgKmkgIT0gJ1xyJykKKyAgICAgICAgICAgIGJyZWFrOworICAg IH0KKyAgICBjdHgtPmN1ciA9IGk7Cit9CisKKy8vIGdldCBudW1iZXIgb2YgYnl0ZXMgZnJvbSBj dXIgdW50aWwgZW9sCitzdGF0aWMgaW50IGJ1Zl9nZXRfbGluZV9jb3VudChGc3luY0NvbnRleHQg KmN0eCkKK3sKKyAgICBpbnQgcmV0ID0gMDsKKyAgICBjaGFyICppOworICAgIGZvciAoaSA9IGN0 eC0+Y3VyOyBpIDwgY3R4LT5lbmQ7IGkrKywgcmV0KyspIHsKKyAgICAgICAgaWYgKCppID09ICdc MCcgfHwgKmkgPT0gJ1xuJykKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAg cmV0dXJuIC0xOworfQorCisvLyBnZXQgbnVtYmVyIG9mIGJ5dGVzIGZyb20gY3VyIHRvICdcMCcK K3N0YXRpYyBpbnQgYnVmX2dldF96ZXJvKEZzeW5jQ29udGV4dCAqY3R4KQoreworICAgIGludCBy ZXQgPSAwOworICAgIGNoYXIgKmk7CisgICAgZm9yIChpID0gY3R4LT5jdXI7IGkgPCBjdHgtPmVu ZDsgaSsrLCByZXQrKykgeworICAgICAgICBpZiAoKmkgPT0gJ1wwJykKKyAgICAgICAgICAgIHJl dHVybiByZXQ7CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBhY3Rp dmF0ZShBVkZpbHRlckNvbnRleHQgKmN0eCkKK3sKKyAgICBGc3luY0NvbnRleHQgKnMgICAgICAg PSBjdHgtPnByaXY7CisgICAgQVZGaWx0ZXJMaW5rICppbmxpbmsgID0gY3R4LT5pbnB1dHNbMF07 CisgICAgQVZGaWx0ZXJMaW5rICpvdXRsaW5rID0gY3R4LT5vdXRwdXRzWzBdOworCisgICAgaW50 IHJldCwgbGluZV9jb3VudDsKKyAgICBBVkZyYW1lICpmcmFtZTsKKworICAgIEZGX0ZJTFRFUl9G T1JXQVJEX1NUQVRVU19CQUNLKG91dGxpbmssIGlubGluayk7CisKKyAgICBidWZfc2tpcF9lb2wo cyk7CisgICAgbGluZV9jb3VudCA9IGJ1Zl9nZXRfbGluZV9jb3VudChzKTsKKyAgICBpZiAobGlu ZV9jb3VudCA8IDApIHsKKyAgICAgICAgbGluZV9jb3VudCA9IGJ1Zl9yZWxvYWQocyk7CisgICAg ICAgIGlmIChsaW5lX2NvdW50IDwgMCkKKyAgICAgICAgICAgIHJldHVybiBsaW5lX2NvdW50Owor ICAgICAgICBsaW5lX2NvdW50ID0gYnVmX2dldF9saW5lX2NvdW50KHMpOworICAgICAgICBpZiAo bGluZV9jb3VudCA8IDApCisgICAgICAgICAgICByZXR1cm4gbGluZV9jb3VudDsKKyAgICB9CisK KyAgICBpZiAoYXZpb19mZW9mKHMtPmF2aW9fY3R4KSAmJiBidWZfZ2V0X3plcm8ocykgPCAzKSB7 CisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19ERUJVRywgIkVuZCBvZiBmaWxlLiBUbyB6ZXJv ID0gJWlcbiIsIGJ1Zl9nZXRfemVybyhzKSk7CisgICAgICAgIGdvdG8gZW5kOworICAgIH0KKwor ICAgIGlmIChzLT5sYXN0X2ZyYW1lKSB7CisgICAgICAgIHJldCA9IGF2X3NzY2FuZihzLT5jdXIs ICIlIlBSSWQ2NCIgJSJQUklkNjQiICVkLyVkIiwgJnMtPnB0c2ksICZzLT5wdHMsICZzLT50Yl9u dW0sICZzLT50Yl9kZW4pOworICAgICAgICBpZiAocmV0ICE9IDQpIHsKKyAgICAgICAgICAgIGF2 X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIlVuZXhwZWN0ZWQgZm9ybWF0IGZvdW5kICglaSAvIDQp LlxuIiwgcmV0KTsKKyAgICAgICAgICAgIGZmX291dGxpbmtfc2V0X3N0YXR1cyhvdXRsaW5rLCBB VkVSUk9SX0lOVkFMSUREQVRBLCBBVl9OT1BUU19WQUxVRSk7CisgICAgICAgICAgICByZXR1cm4g QVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgfQorCisgICAgICAgIGF2X2xvZyhjdHgsIEFW X0xPR19ERUJVRywgImZyYW1lICVsbGkgIiwgcy0+bGFzdF9mcmFtZS0+cHRzKTsKKworICAgICAg ICBpZiAocy0+bGFzdF9mcmFtZS0+cHRzID49IHMtPnB0c2kpIHsKKyAgICAgICAgICAgIGF2X2xv ZyhjdHgsIEFWX0xPR19ERUJVRywgIj49ICVsbGk6IERVUCBMQVNUIHdpdGggcHRzID0gJWxsaVxu Iiwgcy0+cHRzaSwgcy0+cHRzKTsKKworICAgICAgICAgICAgLy8gY2xvbmUgZnJhbWUKKyAgICAg ICAgICAgIGZyYW1lID0gYXZfZnJhbWVfY2xvbmUocy0+bGFzdF9mcmFtZSk7CisgICAgICAgICAg ICBpZiAoIWZyYW1lKSB7CisgICAgICAgICAgICAgICAgZmZfb3V0bGlua19zZXRfc3RhdHVzKG91 dGxpbmssIEFWRVJST1IoRU5PTUVNKSwgQVZfTk9QVFNfVkFMVUUpOworICAgICAgICAgICAgICAg IHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhdl9m cmFtZV9jb3B5X3Byb3BzKGZyYW1lLCBzLT5sYXN0X2ZyYW1lKTsKKworICAgICAgICAgICAgLy8g c2V0IG91dHB1dCBwdHMgYW5kIHRpbWViYXNlCisgICAgICAgICAgICBmcmFtZS0+cHRzID0gcy0+ cHRzOworICAgICAgICAgICAgZnJhbWUtPnRpbWVfYmFzZSA9IGF2X21ha2VfcSgoaW50KXMtPnRi X251bSwgKGludClzLT50Yl9kZW4pOworCisgICAgICAgICAgICAvLyBhZHZhbmNlIGN1ciB0byBl b2wsIHNraXAgb3ZlciBlb2wgaW4gdGhlIG5leHQgY2FsbAorICAgICAgICAgICAgcy0+Y3VyICs9 IGxpbmVfY291bnQ7CisKKyAgICAgICAgICAgIC8vIGNhbGwgYWdhaW4KKyAgICAgICAgICAgIGlm IChmZl9pbm91dGxpbmtfY2hlY2tfZmxvdyhpbmxpbmssIG91dGxpbmspKQorICAgICAgICAgICAg ICAgIGZmX2ZpbHRlcl9zZXRfcmVhZHkoY3R4LCAxMDApOworCisgICAgICAgICAgICAvLyBmaWx0 ZXIgZnJhbWUKKyAgICAgICAgICAgIHJldHVybiBmZl9maWx0ZXJfZnJhbWUob3V0bGluaywgZnJh bWUpOworICAgICAgICB9IGVsc2UgaWYgKHMtPmxhc3RfZnJhbWUtPnB0cyA8IHMtPnB0c2kpIHsK KyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19ERUJVRywgIjwgICVsbGk6IERST1BcbiIs IHMtPnB0c2kpOworICAgICAgICAgICAgYXZfZnJhbWVfZnJlZSgmcy0+bGFzdF9mcmFtZSk7CisK KyAgICAgICAgICAgIC8vIGNhbGwgYWdhaW4KKyAgICAgICAgICAgIGlmIChmZl9pbm91dGxpbmtf Y2hlY2tfZmxvdyhpbmxpbmssIG91dGxpbmspKQorICAgICAgICAgICAgICAgIGZmX2ZpbHRlcl9z ZXRfcmVhZHkoY3R4LCAxMDApOworCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQor ICAgIH0KKworZW5kOgorICAgIHJldCA9IGZmX2lubGlua19jb25zdW1lX2ZyYW1lKGlubGluaywg JnMtPmxhc3RfZnJhbWUpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0Owor CisgICAgRkZfRklMVEVSX0ZPUldBUkRfU1RBVFVTKGlubGluaywgb3V0bGluayk7CisgICAgRkZf RklMVEVSX0ZPUldBUkRfV0FOVEVEKG91dGxpbmssIGlubGluayk7CisKKyAgICByZXR1cm4gRkZF UlJPUl9OT1RfUkVBRFk7Cit9CisKK3N0YXRpYyBpbnQgZnN5bmNfY29uZmlnX3Byb3BzKEFWRmls dGVyTGluayogb3V0bGluaykKK3sKKyAgICBBVkZpbHRlckNvbnRleHQgKmN0eCA9IG91dGxpbmst PnNyYzsKKyAgICBGc3luY0NvbnRleHQgICAgKnMgICA9IGN0eC0+cHJpdjsKKyAgICBpbnQgcmV0 OworCisgICAgLy8gcmVhZCBmaXJzdCBsaW5lIHRvIGdldCBvdXRwdXQgdGltZWJhc2UKKyAgICBy ZXQgPSBhdl9zc2NhbmYocy0+Y3VyLCAiJSJQUklkNjQiICUiUFJJZDY0IiAlZC8lZCIsICZzLT5w dHNpLCAmcy0+cHRzLCAmcy0+dGJfbnVtLCAmcy0+dGJfZGVuKTsKKyAgICBpZiAocmV0ICE9IDQp IHsKKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiVW5leHBlY3RlZCBmb3JtYXQg Zm91bmQgKCVpIG9mIDQpLlxuIiwgcmV0KTsKKyAgICAgICAgZmZfb3V0bGlua19zZXRfc3RhdHVz KG91dGxpbmssIEFWRVJST1JfSU5WQUxJRERBVEEsIEFWX05PUFRTX1ZBTFVFKTsKKyAgICAgICAg cmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgfQorCisgICAgb3V0bGluay0+ZnJhbWVf cmF0ZSA9IGF2X21ha2VfcSgxLCAwKTsgLy8gdW5rbm93biBvciBkeW5hbWljCisgICAgb3V0bGlu ay0+dGltZV9iYXNlICA9IGF2X21ha2VfcSgoaW50KXMtPnRiX251bSwgKGludClzLT50Yl9kZW4p OworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBhdl9jb2xkIGludCBmc3luY19pbml0KEFW RmlsdGVyQ29udGV4dCAqY3R4KQoreworICAgIEZzeW5jQ29udGV4dCAqcyA9IGN0eC0+cHJpdjsK KyAgICBpbnQgcmV0OworCisgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0RFQlVHLCAiZmlsZW5hbWU6 ICVzXG4iLCBzLT5maWxlbmFtZSk7CisKKyAgICBzLT5idWYgPSBhdl9tYWxsb2MoQlVGX1NJWkUp OworICAgIGlmICghcy0+YnVmKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisg ICAgcmV0ID0gYXZpb19vcGVuKCZzLT5hdmlvX2N0eCwgcy0+ZmlsZW5hbWUsIEFWSU9fRkxBR19S RUFEKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIHMtPmN1 ciA9IHMtPmJ1ZjsKKyAgICBzLT5lbmQgPSBzLT5idWYgKyBCVUZfU0laRTsKKworICAgIHJldCA9 IGJ1Zl9maWxsKHMpOworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcmV0OworCisg ICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBhdl9jb2xkIHZvaWQgZnN5bmNfdW5pbml0KEFWRmls dGVyQ29udGV4dCAqY3R4KQoreworICAgIEZzeW5jQ29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKwor ICAgIGF2aW9fY2xvc2Uocy0+YXZpb19jdHgpOworICAgIGF2X2ZyZWVwKCZzLT5idWYpOworICAg IGF2X2ZyYW1lX3VucmVmKHMtPmxhc3RfZnJhbWUpOworfQorCitERUZJTkVfT1BUSU9OUyhmc3lu YywgQVZfT1BUX0ZMQUdfVklERU9fUEFSQU18QVZfT1BUX0ZMQUdfRklMVEVSSU5HX1BBUkFNKTsK K0FWRklMVEVSX0RFRklORV9DTEFTUyhmc3luYyk7CisKK3N0YXRpYyBjb25zdCBlbnVtIEFWUGl4 ZWxGb3JtYXQgcGl4X2ZtdHNbXSA9IHsKKyAgICBBVl9QSVhfRk1UX0dSQVk4LAorICAgIEFWX1BJ WF9GTVRfR0JSUCwgICAgIEFWX1BJWF9GTVRfR0JSQVAsCisgICAgQVZfUElYX0ZNVF9ZVVY0MjJQ LCAgQVZfUElYX0ZNVF9ZVVY0MjBQLAorICAgIEFWX1BJWF9GTVRfWVVWNDQ0UCwgIEFWX1BJWF9G TVRfWVVWNDQwUCwKKyAgICBBVl9QSVhfRk1UX1lVVjQxMVAsICBBVl9QSVhfRk1UX1lVVjQxMFAs CisgICAgQVZfUElYX0ZNVF9ZVVZKNDQwUCwgQVZfUElYX0ZNVF9ZVVZKNDExUCwgQVZfUElYX0ZN VF9ZVVZKNDIwUCwKKyAgICBBVl9QSVhfRk1UX1lVVko0MjJQLCBBVl9QSVhfRk1UX1lVVko0NDRQ LAorICAgIEFWX1BJWF9GTVRfWVVWQTQ0NFAsIEFWX1BJWF9GTVRfWVVWQTQyMlAsIEFWX1BJWF9G TVRfWVVWQTQyMFAsCisgICAgQVZfUElYX0ZNVF9OT05FCit9OworCitzdGF0aWMgY29uc3QgQVZG aWx0ZXJQYWQgYXZmaWx0ZXJfdmZfZnN5bmNfb3V0cHV0c1tdID0geworICAgIHsKKyAgICAgICAg Lm5hbWUgICAgICAgICAgPSAiZGVmYXVsdCIsCisgICAgICAgIC50eXBlICAgICAgICAgID0gQVZN RURJQV9UWVBFX1ZJREVPLAorICAgICAgICAuY29uZmlnX3Byb3BzICA9IGZzeW5jX2NvbmZpZ19w cm9wcywKKyAgICB9LAorfTsKKworY29uc3QgQVZGaWx0ZXIgZmZfdmZfZnN5bmMgPSB7CisgICAg Lm5hbWUgICAgICAgICAgPSAiZnN5bmMiLAorICAgIC5kZXNjcmlwdGlvbiAgID0gTlVMTF9JRl9D T05GSUdfU01BTEwoIlN5bmNocm9uaXplIHZpZGVvIGZyYW1lcyBmcm9tIGV4dGVybmFsIHNvdXJj ZS4iKSwKKyAgICAuaW5pdCAgICAgICAgICA9IGZzeW5jX2luaXQsCisgICAgLnVuaW5pdCAgICAg ICAgPSBmc3luY191bmluaXQsCisgICAgLnByaXZfc2l6ZSAgICAgPSBzaXplb2YoRnN5bmNDb250 ZXh0KSwKKyAgICAucHJpdl9jbGFzcyAgICA9ICZmc3luY19jbGFzcywKKyAgICAuYWN0aXZhdGUg ICAgICA9IGFjdGl2YXRlLAorICAgIEZJTFRFUl9QSVhGTVRTX0FSUkFZKHBpeF9mbXRzKSwKKyAg ICBGSUxURVJfSU5QVVRTKGZmX3ZpZGVvX2RlZmF1bHRfZmlsdGVycGFkKSwKKyAgICBGSUxURVJf T1VUUFVUUyhhdmZpbHRlcl92Zl9mc3luY19vdXRwdXRzKSwKKyAgICAuZmxhZ3MgICAgICAgICA9 IEFWRklMVEVSX0ZMQUdfTUVUQURBVEFfT05MWSwKK307Ci0tIAoyLjM3LjEgKEFwcGxlIEdpdC0x MzcuMSkKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZm bXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9m Zm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwg dmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9y ZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K