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 7074D46759 for ; Wed, 16 Aug 2023 16:42:56 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4BDC768C6D9; Wed, 16 Aug 2023 19:42:54 +0300 (EEST) Received: from 8.mo560.mail-out.ovh.net (8.mo560.mail-out.ovh.net [188.165.52.147]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0582268C2BC for ; Wed, 16 Aug 2023 19:42:48 +0300 (EEST) Received: from director3.ghost.mail-out.ovh.net (unknown [10.109.138.183]) by mo560.mail-out.ovh.net (Postfix) with ESMTP id 4F64F223DB for ; Wed, 16 Aug 2023 16:42:47 +0000 (UTC) Received: from ghost-submission-6684bf9d7b-nc9dc (unknown [10.110.171.34]) by director3.ghost.mail-out.ovh.net (Postfix) with ESMTPS id 0BBE51FDA5 for ; Wed, 16 Aug 2023 16:42:46 +0000 (UTC) Received: from courmont.net ([37.59.142.95]) by ghost-submission-6684bf9d7b-nc9dc with ESMTPSA id uBkmOIb83GREogAAczDG6g (envelope-from ) for ; Wed, 16 Aug 2023 16:42:46 +0000 Authentication-Results: garm.ovh; auth=pass (GARM-95G001a4cf4966-c1d3-45f9-b216-92f3d17fdca8, 2A1E08F8108080771253F1CDA85BBB3477E57844) smtp.auth=postmaster@courmont.net X-OVh-ClientIp: 87.92.194.88 From: =?ISO-8859-1?Q?R=E9mi?= Denis-Courmont To: ffmpeg-devel@ffmpeg.org Date: Wed, 16 Aug 2023 19:42:43 +0300 Message-ID: <3964361.O3JupQaQKb@basile.remlab.net> Organization: Remlab In-Reply-To: References: MIME-Version: 1.0 X-Ovh-Tracer-Id: 18196512821759056377 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedviedruddtledguddtiecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemucehtddtnecunecujfgurhephffvufffkfhojghfggfgtgesthhqredttddtjeenucfhrhhomheptformhhiucffvghnihhsqdevohhurhhmohhnthcuoehrvghmihesrhgvmhhlrggsrdhnvghtqeenucggtffrrghtthgvrhhnpedutedvgfeggfduvdffjefgjeeggeekkeduhfelfeejhfegfeefffdtlefgfefhgeenucffohhmrghinhepohhrrggtlhgvrdgtohhmpdhphihthhhonhdrohhrghdprhgvmhhlrggsrdhnvghtnecukfhppeduvdejrddtrddtrddupdekjedrledvrdduleegrdekkedpfeejrdehledrudegvddrleehnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpeeorhgvmhhisehrvghmlhgrsgdrnhgvtheqpdhnsggprhgtphhtthhopedupdhrtghpthhtohepfhhfmhhpvghgqdguvghvvghlsehffhhmphgvghdrohhrghdpoffvtefjohhsthepmhhoheeitddpmhhouggvpehsmhhtphhouhht Subject: Re: [FFmpeg-devel] [PATCH v4] vvcdec: add thread executor 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: TGUgdGlpc3RhaW5hIDE1LiBlbG9rdXV0YSAyMDIzLCAxNy41MC4xMyBFRVNUIE51byBNaSBhIMOp Y3JpdCA6Cj4gVGhlIGV4ZWN1dG9yIGRlc2lnbiBwYXR0ZXJuIHdhcyBpbnJvZHVjZWQgYnkgamF2 YQo+IDxodHRwczovL2RvY3Mub3JhY2xlLmNvbS9lbi9qYXZhL2phdmFzZS8yMC9kb2NzL2FwaS9q YXZhLmJhc2UvamF2YS91dGlsL2NvbmMKPiB1cnJlbnQvRXhlY3V0b3IuaHRtbD4gaXQgYWxzbyBh ZGFwdGVkIGJ5IHB5dGhvbgo+IDxodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvY29u Y3VycmVudC5mdXR1cmVzLmh0bWw+Cj4gQ29tcGFyZWQgdG8gaGFuZGNyYWZ0ZWQgdGhyZWFkIHBv b2wgbWFuYWdlbWVudCwgaXQgZ3JlYXRseSBzaW1wbGlmaWVzIHRoZQo+IHRocmVhZCBjb2RlLiAt LS0KPiAgbGliYXZ1dGlsL01ha2VmaWxlICAgfCAgIDIgKwo+ICBsaWJhdnV0aWwvZXhlY3V0b3Iu YyB8IDIwMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGxp YmF2dXRpbC9leGVjdXRvci5oIHwgIDY3ICsrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5n ZWQsIDI3MCBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdnV0aWwvZXhl Y3V0b3IuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZ1dGlsL2V4ZWN1dG9yLmgKPiAKPiBk aWZmIC0tZ2l0IGEvbGliYXZ1dGlsL01ha2VmaWxlIGIvbGliYXZ1dGlsL01ha2VmaWxlCj4gaW5k ZXggNzgyOGM5NGRjNS4uNDcxMWY4Y2RlOCAxMDA2NDQKPiAtLS0gYS9saWJhdnV0aWwvTWFrZWZp bGUKPiArKysgYi9saWJhdnV0aWwvTWFrZWZpbGUKPiBAQCAtMzEsNiArMzEsNyBAQCBIRUFERVJT ID0gYWRsZXIzMi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCj4gICAg ICAgICAgICAgIFwgZW5jcnlwdGlvbl9pbmZvLmggICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCj4gIFwgZXJyb3IuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcIGV2YWwuaCAgCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcICsgICAgICAgICAKPiBleGVjdXRv ci5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwg Zmlmby5oICAgICAKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwgZmlsZS5oICAgICAgICAgICAgICAgICAKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwgZnJhbWUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwgQEAgLTEyNyw2ICsxMjgsNyBAQCBPQkpTID0gYWRs ZXIzMi5vICAgICAgICAgICAKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwgZW5jcnlwdGlvbl9pbmZvLm8gICAgICAgICAgICAKPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwgZXJyb3IubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKPiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgZXZhbC5vICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKPiAgICAgICAgICAgICAgICAgIFwgKyAgICAgICBleGVj dXRvci5vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPiAgICAgICAgICAg ICAgICAgXCBmaWZvLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKPiAgICAgICAgXCBmaWxlLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiBmaWxlX29wZW4ubyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgZGlmZgo+IC0tZ2l0IGEv bGliYXZ1dGlsL2V4ZWN1dG9yLmMgYi9saWJhdnV0aWwvZXhlY3V0b3IuYwo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMC4uNmI0N2JhMGJmMgo+IC0tLSAvZGV2L251bGwK PiArKysgYi9saWJhdnV0aWwvZXhlY3V0b3IuYwo+IEBAIC0wLDAgKzEsMjAxIEBACj4gKy8qCj4g KyAqIENvcHlyaWdodCAoQykgMjAyMyBOdW8gTWkKPiArICoKPiArICogVGhpcyBmaWxlIGlzIHBh cnQgb2YgRkZtcGVnLgo+ICsgKgo+ICsgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gKyAqIHZlcnNpb24g Mi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u Lgo+ICsgKgo+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPiArICogTGVzc2VyIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICoKPiArICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp Ywo+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlCj4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMQo+IFVTQSArICovCj4gKyNpbmNsdWRl ICJpbnRlcm5hbC5oIgo+ICsjaW5jbHVkZSAibWVtLmgiCj4gKyNpbmNsdWRlICJ0aHJlYWQuaCIK PiArCj4gKyNpbmNsdWRlICJleGVjdXRvci5oIgo+ICsKPiArI2lmICFIQVZFX1RIUkVBRFMKPiAr I2RlZmluZSBwdGhyZWFkX2NyZWF0ZSh0LCBhLCBzLCBhcikgICAgIDAKCkVyciwgdGhpcyBzaG91 bGQgcHJvYmFibHkgcmV0dXJuIGFuIGVycm9yIHZhbHVlLCBlLmcuIEVOT1NZUyBvciBFTk9UU1VQ LgoKPiArI2RlZmluZSBwdGhyZWFkX2pvaW4odCwgcikgICAgICAgICAgICAgIGRvIHt9IHdoaWxl KDApCgouLi5hbmQgdGhpcyBzaG91bGQgYmUgYW4gdW5yZWFjaGFibGUoKSwgYXNzZXJ0KDApLCBh Ym9ydCgpIG9yIHNvbWV0aGluZyBhbG9uZyAKdGhvc2UgbGluZXMuCgo+ICsKPiArI2RlZmluZSBw dGhyZWFkX2NvbmRfaW5pdChjLCBhKSAgICAgICAgIDAKPiArI2RlZmluZSBwdGhyZWFkX2NvbmRf YnJvYWRjYXN0KGMpICAgICAgIGRvIHt9IHdoaWxlKDApCj4gKyNkZWZpbmUgcHRocmVhZF9jb25k X3NpZ25hbChjKSAgICAgICAgICBkbyB7fSB3aGlsZSgwKQo+ICsjZGVmaW5lIHB0aHJlYWRfY29u ZF93YWl0KGMsIG0pICAgICAgICAgZG8ge30gd2hpbGUoMCkKPiArI2RlZmluZSBwdGhyZWFkX2Nv bmRfZGVzdHJveShjKSAgICAgICAgIGRvIHt9IHdoaWxlKDApCj4gKwo+ICsjZGVmaW5lIHB0aHJl YWRfbXV0ZXhfaW5pdChtLCBhKSAgICAgICAgMAo+ICsjZGVmaW5lIHB0aHJlYWRfbXV0ZXhfbG9j ayhsKSAgICAgICAgICAgZG8ge30gd2hpbGUoMCkKPiArI2RlZmluZSBwdGhyZWFkX211dGV4X3Vu bG9jayhsKSAgICAgICAgIGRvIHt9IHdoaWxlKDApCj4gKyNkZWZpbmUgcHRocmVhZF9tdXRleF9k ZXN0cm95KGwpICAgICAgICBkbyB7fSB3aGlsZSgwKQo+ICsjZW5kaWYKPiArCj4gK3R5cGVkZWYg c3RydWN0IFRocmVhZEluZm8gewo+ICsgICAgQVZFeGVjdXRvciAqZTsKPiArICAgIHB0aHJlYWRf dCB0aHJlYWQ7CgpEb2VzIHRoaXMgZXZlbiB3b3JrIGlmICFIQVZFX1RIUkVBRCA/Cgo+ICt9IFRo cmVhZEluZm87Cj4gKwo+ICtzdHJ1Y3QgQVZFeGVjdXRvciB7Cj4gKyAgICBBVlRhc2tDYWxsYmFj a3MgY2I7Cj4gKyAgICBpbnQgdGhyZWFkX2NvdW50Owo+ICsKPiArICAgIFRocmVhZEluZm8gKnRo cmVhZHM7Cj4gKyAgICB1aW50OF90ICpsb2NhbF9jb250ZXh0czsKPiArCj4gKyAgICBwdGhyZWFk X211dGV4X3QgbG9jazsKPiArICAgIHB0aHJlYWRfY29uZF90IGNvbmQ7Cj4gKyAgICBpbnQgZGll Owo+ICsKPiArICAgIEFWVGFzayAqdGFza3M7Cj4gK307Cj4gKwo+ICtzdGF0aWMgQVZUYXNrKiBy ZW1vdmVfdGFzayhBVlRhc2sgKipwcmV2LCBBVlRhc2sgKnQpCj4gK3sKPiArICAgICpwcmV2ICA9 IHQtPm5leHQ7Cj4gKyAgICB0LT5uZXh0ID0gTlVMTDsKPiArICAgIHJldHVybiB0Owo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBhZGRfdGFzayhBVlRhc2sgKipwcmV2LCBBVlRhc2sgKnQpCj4gK3sK PiArICAgIHQtPm5leHQgPSAqcHJldjsKPiArICAgICpwcmV2ICAgPSB0Owo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IHJ1bl9vbmVfdGFzayhBVkV4ZWN1dG9yICplLCB2b2lkICpsYykKPiArewo+ICsg ICAgQVZUYXNrQ2FsbGJhY2tzICpjYiA9ICZlLT5jYjsKPiArICAgIEFWVGFzayAqKnByZXY7Cj4g Kwo+ICsgICAgZm9yIChwcmV2ID0gJmUtPnRhc2tzOyAqcHJldiAmJiAhY2ItPnJlYWR5KCpwcmV2 LCBjYi0+dXNlcl9kYXRhKTsgcHJldgo+ID0gJigqcHJldiktPm5leHQpCj4gKyAgICAgICAgLyog bm90aGluZyAqLzsKPiArICAgIGlmICgqcHJldikgewo+ICsgICAgICAgIEFWVGFzayAqdCA9IHJl bW92ZV90YXNrKHByZXYsICpwcmV2KTsKPiArICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygm ZS0+bG9jayk7Cj4gKyAgICAgICAgY2ItPnJ1bih0LCBsYywgY2ItPnVzZXJfZGF0YSk7Cj4gKyAg ICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZlLT5sb2NrKTsKPiArICAgICAgICByZXR1cm4gMTsK PiArICAgIH0KPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICsjaWYgSEFWRV9USFJFQURTCj4g K3N0YXRpYyB2b2lkICpleGVjdXRvcl93b3JrZXJfdGFzayh2b2lkICpkYXRhKQo+ICt7Cj4gKyAg ICBUaHJlYWRJbmZvICp0aSA9IChUaHJlYWRJbmZvKilkYXRhOwo+ICsgICAgQVZFeGVjdXRvciAq ZSAgPSB0aS0+ZTsKPiArICAgIHZvaWQgKmxjICAgICAgID0gZS0+bG9jYWxfY29udGV4dHMKPiAr ICh0aSAtIGUtPnRocmVhZHMpICoKPiBlLT5jYi5sb2NhbF9jb250ZXh0X3NpemU7ICsKPiArICAg IHB0aHJlYWRfbXV0ZXhfbG9jaygmZS0+bG9jayk7Cj4gKyAgICB3aGlsZSAoMSkgewo+ICsgICAg ICAgIGlmIChlLT5kaWUpIGJyZWFrOwo+ICsKPiArICAgICAgICBpZiAoIXJ1bl9vbmVfdGFzayhl LCBsYykpIHsKPiArICAgICAgICAgICAgLy9ubyB0YXNrIGluIG9uZSBsb29wCj4gKyAgICAgICAg ICAgIHB0aHJlYWRfY29uZF93YWl0KCZlLT5jb25kLCAmZS0+bG9jayk7Cj4gKyAgICAgICAgfQo+ ICsgICAgfQo+ICsgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmUtPmxvY2spOwo+ICsgICAgcmV0 dXJuIE5VTEw7Cj4gK30KPiArI2VuZGlmCj4gKwo+ICtzdGF0aWMgdm9pZCBleGVjdXRvcl9mcmVl KEFWRXhlY3V0b3IgKmUsIGNvbnN0IGludCBoYXNfbG9jaywgY29uc3QgaW50Cj4gaGFzX2NvbmQp ICt7Cj4gKyAgICBpZiAoZS0+dGhyZWFkX2NvdW50KSB7Cj4gKyAgICAgICAgLy9zaWduYWwgZGll Cj4gKyAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZlLT5sb2NrKTsKPiArICAgICAgICBlLT5k aWUgPSAxOwo+ICsgICAgICAgIHB0aHJlYWRfY29uZF9icm9hZGNhc3QoJmUtPmNvbmQpOwo+ICsg ICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZlLT5sb2NrKTsKPiArCj4gKyAgICAgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBlLT50aHJlYWRfY291bnQ7IGkrKykKPiArICAgICAgICAgICAgcHRo cmVhZF9qb2luKGUtPnRocmVhZHNbaV0udGhyZWFkLCBOVUxMKTsKPiArICAgIH0KPiArICAgIGlm IChoYXNfY29uZCkKPiArICAgICAgICBwdGhyZWFkX2NvbmRfZGVzdHJveSgmZS0+Y29uZCk7Cj4g KyAgICBpZiAoaGFzX2xvY2spCj4gKyAgICAgICAgcHRocmVhZF9tdXRleF9kZXN0cm95KCZlLT5s b2NrKTsKPiArCj4gKyAgICBhdl9mcmVlKGUtPnRocmVhZHMpOwo+ICsgICAgYXZfZnJlZShlLT5s b2NhbF9jb250ZXh0cyk7Cj4gKwo+ICsgICAgYXZfZnJlZShlKTsKPiArfQo+ICsKPiArQVZFeGVj dXRvciogYXZfZXhlY3V0b3JfYWxsb2MoY29uc3QgQVZUYXNrQ2FsbGJhY2tzICpjYiwgaW50IHRo cmVhZF9jb3VudCkKPiArewo+ICsgICAgQVZFeGVjdXRvciAqZTsKPiArICAgIGludCBoYXNfbG9j ayA9IDAsIGhhc19jb25kID0gMDsKPiArICAgIGlmICghY2IgfHwgIWNiLT51c2VyX2RhdGEgfHwg IWNiLT5yZWFkeSB8fCAhY2ItPnJ1biB8fAo+ICFjYi0+cHJpb3JpdHlfaGlnaGVyKSArICAgICAg ICByZXR1cm4gTlVMTDsKPiArCj4gKyAgICBlID0gYXZfY2FsbG9jKDEsIHNpemVvZigqZSkpOwo+ ICsgICAgaWYgKCFlKQo+ICsgICAgICAgIHJldHVybiBOVUxMOwo+ICsgICAgZS0+Y2IgPSAqY2I7 Cj4gKwo+ICsgICAgZS0+bG9jYWxfY29udGV4dHMgPSBhdl9jYWxsb2ModGhyZWFkX2NvdW50LCBl LT5jYi5sb2NhbF9jb250ZXh0X3NpemUpOwo+ICsgICAgaWYgKCFlLT5sb2NhbF9jb250ZXh0cykK PiArICAgICAgICBnb3RvIGZyZWVfZXhlY3V0b3I7Cj4gKwo+ICsgICAgZS0+dGhyZWFkcyA9IGF2 X2NhbGxvYyh0aHJlYWRfY291bnQsIHNpemVvZigqZS0+dGhyZWFkcykpOwo+ICsgICAgaWYgKCFl LT50aHJlYWRzKQo+ICsgICAgICAgIGdvdG8gZnJlZV9leGVjdXRvcjsKPiArCj4gKyAgICBoYXNf bG9jayA9ICFwdGhyZWFkX211dGV4X2luaXQoJmUtPmxvY2ssIE5VTEwpOwo+ICsgICAgaGFzX2Nv bmQgPSAhcHRocmVhZF9jb25kX2luaXQoJmUtPmNvbmQsIE5VTEwpOwo+ICsKPiArICAgIGlmICgh aGFzX2xvY2sgfHwgIWhhc19jb25kKQo+ICsgICAgICAgIGdvdG8gZnJlZV9leGVjdXRvcjsKPiAr Cj4gKyAgICBmb3IgKC8qIG5vdGhpbmcgKi87IGUtPnRocmVhZF9jb3VudCA8IHRocmVhZF9jb3Vu dDsgZS0+dGhyZWFkX2NvdW50KyspCj4geyArICAgICAgICBUaHJlYWRJbmZvICp0aSA9IGUtPnRo cmVhZHMgKyBlLT50aHJlYWRfY291bnQ7Cj4gKyAgICAgICAgdGktPmUgPSBlOwo+ICsgICAgICAg IGlmIChwdGhyZWFkX2NyZWF0ZSgmdGktPnRocmVhZCwgTlVMTCwgZXhlY3V0b3Jfd29ya2VyX3Rh c2ssIHRpKSkKPiArICAgICAgICAgICAgZ290byBmcmVlX2V4ZWN1dG9yOwo+ICsgICAgfQo+ICsg ICAgcmV0dXJuIGU7Cj4gKwo+ICtmcmVlX2V4ZWN1dG9yOgo+ICsgICAgZXhlY3V0b3JfZnJlZShl LCBoYXNfbG9jaywgaGFzX2NvbmQpOwo+ICsgICAgcmV0dXJuIE5VTEw7Cj4gK30KPiArCj4gK3Zv aWQgYXZfZXhlY3V0b3JfZnJlZShBVkV4ZWN1dG9yICoqZXhlY3V0b3IpCj4gK3sKPiArICAgIGlm ICghZXhlY3V0b3IgfHwgISpleGVjdXRvcikKPiArICAgICAgICByZXR1cm47Cj4gKyAgICBleGVj dXRvcl9mcmVlKCpleGVjdXRvciwgMSwgMSk7Cj4gKyAgICAqZXhlY3V0b3IgPSBOVUxMOwo+ICt9 Cj4gKwo+ICt2b2lkIGF2X2V4ZWN1dG9yX2V4ZWN1dGUoQVZFeGVjdXRvciAqZSwgQVZUYXNrICp0 KQo+ICt7Cj4gKyAgICBBVlRhc2tDYWxsYmFja3MgKmNiID0gJmUtPmNiOwo+ICsgICAgQVZUYXNr ICoqcHJldjsKPiArCj4gKyAgICBwdGhyZWFkX211dGV4X2xvY2soJmUtPmxvY2spOwo+ICsgICAg aWYgKHQpIHsKPiArICAgICAgICBmb3IgKHByZXYgPSAmZS0+dGFza3M7ICpwcmV2ICYmIGNiLT5w cmlvcml0eV9oaWdoZXIoKnByZXYsIHQpOyBwcmV2Cj4gPSAmKCpwcmV2KS0+bmV4dCkgKyAgICAg ICAgICAgIC8qIG5vdGhpbmcgKi87Cj4gKyAgICAgICAgYWRkX3Rhc2socHJldiwgdCk7Cj4gKyAg ICB9Cj4gKyAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZlLT5jb25kKTsKPiArICAgIHB0aHJlYWRf bXV0ZXhfdW5sb2NrKCZlLT5sb2NrKTsKPiArCj4gKyNpZiAhSEFWRV9USFJFQURTCj4gKyAgICAv LyBXZSBhcmUgcnVubmluZyBpbiBhIHNpbmdsZS10aHJlYWRlZCBlbnZpcm9ubWVudCwgc28gd2Ug bXVzdCBoYW5kbGUKPiBhbGwgdGFza3Mgb3Vyc2VsdmVzCj4gKyAgICB3aGlsZSAocnVuX29uZV90 YXNrKGUsIGUtPmxvY2FsX2NvbnRleHRzKSkKPiArICAgICAgICAvKiBub3RoaW5nICovOwo+ICsj ZW5kaWYKPiArfQo+IGRpZmYgLS1naXQgYS9saWJhdnV0aWwvZXhlY3V0b3IuaCBiL2xpYmF2dXRp bC9leGVjdXRvci5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi5j M2ZlNDRiZDBlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYmF2dXRpbC9leGVjdXRvci5oCj4g QEAgLTAsMCArMSw2NyBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjMgTnVvIE1pCj4g KyAqCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiArICoKPiArICogRkZtcGVn IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ICsgKiBt b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj Cj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICogRkZtcGVnIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAq IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUgR05VCj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBl ZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBGb3VuZGF0aW9uLCBJ bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEz MDEKPiBVU0EgKyAqLwo+ICsKPiArI2lmbmRlZiBBVlVUSUxfRVhFQ1VUT1JfSAo+ICsjZGVmaW5l IEFWVVRJTF9FWEVDVVRPUl9ICj4gKwo+ICt0eXBlZGVmIHN0cnVjdCBBVkV4ZWN1dG9yIEFWRXhl Y3V0b3I7Cj4gK3R5cGVkZWYgc3RydWN0IEFWVGFzayBBVlRhc2s7Cj4gKwo+ICtzdHJ1Y3QgQVZU YXNrIHsKPiArICAgIEFWVGFzayAqbmV4dDsKPiArfTsKPiArCj4gK3R5cGVkZWYgc3RydWN0IEFW VGFza0NhbGxiYWNrcyB7Cj4gKyAgICB2b2lkICp1c2VyX2RhdGE7Cj4gKwo+ICsgICAgaW50IGxv Y2FsX2NvbnRleHRfc2l6ZTsKPiArCj4gKyAgICAvLyByZXR1cm4gMSBpZiBhJ3MgcHJpb3JpdHkg PiBiJ3MgcHJpb3JpdHkKPiArICAgIGludCAoKnByaW9yaXR5X2hpZ2hlcikoY29uc3QgQVZUYXNr ICphLCBjb25zdCBBVlRhc2sgKmIpOwo+ICsKPiArICAgIC8vIHRhc2sgaXMgcmVhZHkgZm9yIHJ1 bgo+ICsgICAgaW50ICgqcmVhZHkpKGNvbnN0IEFWVGFzayAqdCwgdm9pZCAqdXNlcl9kYXRhKTsK PiArCj4gKyAgICAvLyBydW4gdGhlIHRhc2sKPiArICAgIGludCAoKnJ1bikoQVZUYXNrICp0LCB2 b2lkICpsb2NhbF9jb250ZXh0LCB2b2lkICp1c2VyX2RhdGEpOwo+ICt9IEFWVGFza0NhbGxiYWNr czsKPiArCj4gKy8qKgo+ICsgKiBBbGxvYyBleGVjdXRvcgo+ICsgKiBAcGFyYW0gY2FsbGJhY2tz IGNhbGxiYWNrIHN0cnVjdXRyZSBmb3IgZXhlY3V0b3IKPiArICogQHBhcmFtIHRocmVhZF9jb3Vu dCB3b3JrZXIgdGhyZWFkIG51bWJlcgo+ICsgKiBAcmV0dXJuIHJldHVybiB0aGUgZXhlY3V0b3IK PiArICovCj4gK0FWRXhlY3V0b3IqIGF2X2V4ZWN1dG9yX2FsbG9jKGNvbnN0IEFWVGFza0NhbGxi YWNrcyAqY2FsbGJhY2tzLCBpbnQKPiB0aHJlYWRfY291bnQpOyArCj4gKy8qKgo+ICsgKiBGcmVl IGV4ZWN1dG9yCj4gKyAqIEBwYXJhbSBlICBwb2ludGVyIHRvIGV4ZWN1dG9yCj4gKyAqLwo+ICt2 b2lkIGF2X2V4ZWN1dG9yX2ZyZWUoQVZFeGVjdXRvciAqKmUpOwo+ICsKPiArLyoqCj4gKyAqIEFk ZCB0YXNrIHRvIGV4ZWN1dG9yCj4gKyAqIEBwYXJhbSBlIHBvaW50ZXIgdG8gZXhlY3V0b3IKPiAr ICogQHBhcmFtIHQgcG9pbnRlciB0byB0YXNrLiBJZiBOVUxMLCBpdCB3aWxsIHdha2V1cCBvbmUg d29yayB0aHJlYWQKPiArICovCj4gK3ZvaWQgYXZfZXhlY3V0b3JfZXhlY3V0ZShBVkV4ZWN1dG9y ICplLCBBVlRhc2sgKnQpOwo+ICsKPiArI2VuZGlmIC8vQVZVVElMX0VYRUNVVE9SX0gKCgotLSAK UsOpbWkgRGVuaXMtQ291cm1vbnQKaHR0cDovL3d3dy5yZW1sYWIubmV0LwoKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGlu ZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUs IG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1 bnN1YnNjcmliZSIuCg==