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 5768E45F88 for ; Sun, 21 May 2023 14:44:48 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7108A68BEE0; Sun, 21 May 2023 17:44:46 +0300 (EEST) Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8346C68BD75 for ; Sun, 21 May 2023 17:44:40 +0300 (EEST) Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-4f3a9ad31dbso3586586e87.0 for ; Sun, 21 May 2023 07:44:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684680279; x=1687272279; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=4f/ONiUy3XM57ibdavUuj93QQVpsZ78o6KwwoimabH4=; b=NluN4vr4yEH6SGogM0ll/6VvBnymNosu2jKlpOo49T/8cFPjgsGGR51Sa5lhtiw8rF DbHezelA3rDmGOjVpybHGuLsJbinMHXu+S7dupmTHpzZaIgqyFfx9slMXLrUKzpLw2y0 PZEsnhVEkMu2pkrFVP89Rcu3uh9VPk+w63I5NdDaj+KJpt4EV6zvuGN4pIfEieEz1hKB a9RUc/uKVrYLEs4L3NIc5EYRAzkYplW4q+SX3U/gU6SlpQRNwceUGa4Su5MpkK1FxU0w EL/+6qKAvSJ6jaqfYPeTPJLWbtsWDf5D1RZwv11CRaXLIIvMKFROcyBfpXFeiNMBj8/v 93NQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684680279; x=1687272279; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=4f/ONiUy3XM57ibdavUuj93QQVpsZ78o6KwwoimabH4=; b=EPrQEGjcukObH2aLXde0jZtE9QyvF3Vb6f62nMkP7enRwD3NIu1jHpJfj7eutMDmR8 X2SjtcxyHFXkpKWbbzs6VT9oOWGJzG3o97mRWrcORUtJD1pnMw7jW+DJRiUeJ25JOMyd IqeFGSkDxUiwXLtL49qTtnAtj8ud2nN8lJPiT5A0Da7NA4mnpf2I92CFFf1mtEQOPqY9 aT02nQh5rYTbd1ZoQqjdwzMzANpeVWYOYz7asA2pkAker9+KFdTPdR0uhSyaad22op+h feiGyCC9xeN1+vO4enJ+UaEJZwDC9NH7Gb9WppcuvR8Y65tC0SseruDfi2r58+v0N4J0 uK+w== X-Gm-Message-State: AC+VfDwOo5XP1eZnQGx5JM+ggbEI0kVl9s4WR9qGlkNaH/Bh/ljJumHQ OW47rmaAmqKNAk9lLaNSVnbEn4yR08KUfUWteEYHTnCtZvQ= X-Google-Smtp-Source: ACHHUZ5sOoqxjwv1uBSfVuF36QiK3Ml25lUvaKdtLYNiZvCOMNv3PYp74kkMbJYikPPZADf22YyIJrw1bpYzJ5ZHrOs= X-Received: by 2002:ac2:4197:0:b0:4f2:4f26:3e5a with SMTP id z23-20020ac24197000000b004f24f263e5amr2715725lfh.41.1684680279038; Sun, 21 May 2023 07:44:39 -0700 (PDT) MIME-Version: 1.0 References: <20230521130319.13813-1-nuomi2021@gmail.com> <20230521130319.13813-2-nuomi2021@gmail.com> <12209065.O9o76ZdvQC@basile.remlab.net> In-Reply-To: <12209065.O9o76ZdvQC@basile.remlab.net> From: Nuo Mi Date: Sun, 21 May 2023 22:44:28 +0800 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 01/14] 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: T24gU3VuLCBNYXkgMjEsIDIwMjMgYXQgOToxNeKAr1BNIFLDqW1pIERlbmlzLUNvdXJtb250IDxy ZW1pQHJlbWxhYi5uZXQ+IHdyb3RlOgoKPiBMZSBzdW5udW50YWluYSAyMS4gdG91a29rdXV0YSAy MDIzLCAxNi4wMy4wNiBFRVNUIE51byBNaSBhIMOpY3JpdCA6Cj4gPiBUaGUgZXhlY3V0b3IgZGVz aWduIHBhdHRlcm4gd2FzIGlucm9kdWNlZCBieSBqYXZhCj4gPiA8Cj4gaHR0cHM6Ly9kb2NzLm9y YWNsZS5jb20vZW4vamF2YS9qYXZhc2UvMjAvZG9jcy9hcGkvamF2YS5iYXNlL2phdmEvdXRpbC9j b25jCj4gPiB1cnJlbnQvRXhlY3V0b3IuaHRtbD4gaXQgYWxzbyBhZGFwdGVkIGJ5IHB5dGhvbgo+ ID4gPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMu aHRtbD4KPiA+IENvbXBhcmVkIHRvIGhhbmRjcmFmdGVkIHRocmVhZCBwb29sIG1hbmFnZW1lbnQs IGl0IGdyZWF0bHkgc2ltcGxpZmllcyB0aGUKPiA+IHRocmVhZCBjb2RlLiAtLS0KPiA+ICBsaWJh dmNvZGVjL01ha2VmaWxlICAgICAgICAgICB8ICAgMSArCj4gPiAgbGliYXZjb2RlYy92dmMvTWFr ZWZpbGUgICAgICAgfCAgIDQgKwo+ID4gIGxpYmF2Y29kZWMvdnZjL3Z2Y19leGVjdXRvci5jIHwg MTkzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ICBsaWJhdmNvZGVjL3Z2 Yy92dmNfZXhlY3V0b3IuaCB8ICA3MyArKysrKysrKysrKysrCj4gPiAgNCBmaWxlcyBjaGFuZ2Vk LCAyNzEgaW5zZXJ0aW9ucygrKQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL3Z2 Yy9NYWtlZmlsZQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL3Z2Yy92dmNfZXhl Y3V0b3IuYwo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL3Z2Yy92dmNfZXhlY3V0 b3IuaAo+ID4KPiA+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL01ha2VmaWxlIGIvbGliYXZjb2Rl Yy9NYWtlZmlsZQo+ID4gaW5kZXggZGFiMDlmNDgzYS4uYjFmY2JmNzFiMiAxMDA2NDQKPiA+IC0t LSBhL2xpYmF2Y29kZWMvTWFrZWZpbGUKPiA+ICsrKyBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKPiA+ IEBAIC02Miw2ICs2Miw3IEBAIE9CSlMgPSBhYzNfcGFyc2VyLm8KPgo+ID4gICAgICAgICAgICAg IFwgeGlwaC5vCj4KPiA+ICAgICBcCj4gPgo+ID4gICMgc3Vic3lzdGVtcwo+ID4gK2luY2x1ZGUg JChTUkNfUEFUSCkvbGliYXZjb2RlYy92dmMvTWFrZWZpbGUKPiA+ICBPQkpTLSQoQ09ORklHX0FB TkRDVFRBQkxFUykgICAgICAgICAgICArPSBhYW5kY3R0YWIubwo+ID4gIE9CSlMtJChDT05GSUdf QUMzRFNQKSAgICAgICAgICAgICAgICAgICs9IGFjM2RzcC5vIGFjMy5vIGFjM3RhYi5vCj4gPiAg T0JKUy0kKENPTkZJR19BRFRTX0hFQURFUikgICAgICAgICAgICAgKz0gYWR0c19oZWFkZXIubwo+ ID4gbXBlZzRhdWRpb19zYW1wbGVfcmF0ZXMubyBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92dmMv TWFrZWZpbGUKPiA+IGIvbGliYXZjb2RlYy92dmMvTWFrZWZpbGUKPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwLi5jNGI5M2UwMzg5Cj4gPiAtLS0gL2Rldi9udWxs Cj4gPiArKysgYi9saWJhdmNvZGVjL3Z2Yy9NYWtlZmlsZQo+ID4gQEAgLTAsMCArMSw0IEBACj4g PiArY2xlYW46Ogo+ID4gKyAgICAgJChSTSkgJChDTEVBTlNVRkZJWEVTOiU9bGliYXZjb2RlYy92 dmMvJSkKPiA+ICsKPiA+ICtPQkpTLSQoQ09ORklHX1ZWQ19ERUNPREVSKSAgICAgICAgICArPSAg dnZjL3Z2Y19leGVjdXRvci5vCj4gPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92dmMvdnZjX2V4 ZWN1dG9yLmMKPiBiL2xpYmF2Y29kZWMvdnZjL3Z2Y19leGVjdXRvci5jCj4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMC4uZjJhZmRmNzlhZQo+ID4gLS0tIC9kZXYv bnVsbAo+ID4gKysrIGIvbGliYXZjb2RlYy92dmMvdnZjX2V4ZWN1dG9yLmMKPiA+IEBAIC0wLDAg KzEsMTkzIEBACj4gPiArLyoKPiA+ICsgKiBWVkMgdmlkZW8gRGVjb2Rlcgo+ID4gKyAqCj4gPiAr ICogQ29weXJpZ2h0IChDKSAyMDIyIE51byBNaQo+ID4gKyAqCj4gPiArICogVGhpcyBmaWxlIGlz IHBhcnQgb2YgRkZtcGVnLgo+ID4gKyAqCj4gPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ID4gKyAqIG1vZGlmeSBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiA+ICsgKiBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiA+ ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KPiA+ICsgKgo+ID4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ID4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gPiArICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUKPiA+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgo+ID4gKyAqCj4gPiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ID4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBG Rm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiA+ICsgKiBGb3VuZGF0 aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCj4g MDIxMTAtMTMwMQo+ID4gVVNBICsgKi8KPiA+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2F2dXRpbC5o Igo+ID4gKyNpbmNsdWRlICJsaWJhdnV0aWwvdGhyZWFkLmgiCj4gPiArCj4gPiArI2luY2x1ZGUg InZ2Y19leGVjdXRvci5oIgo+Cj4gVGhpcyBkb2VzIG5vdCBzZWVtIHNwZWNpZmljIHRvIFZWQyBp biBhbnkgd2F5LCBzbyB0aGUgbmFtaW5nIChhbmQgY2hvaWNlCj4gb2YKPiBmb2xkZXIgcGxhY2Vt ZW50KSBpcyByYXRoZXIgd2VpcmQuCj4KVGhlIHV0aWxzIGNhbiB1c2UgYXMgZmlsdGVyLCBlbmNv ZGVyIG9yIGFueSBjb21wb25lbnQuCldpbGwgbW92ZSB0byBsaWJhdmNvZGVjIGZpcnN0LiBTb21l Ym9keSBjYW4gcHJvbW90ZSBpdCB0byBsaWJhdnV0aWxzIGlmCnRoZXkgZmluZCBpdCB1c2VmdWwu Cgo+Cj4gPiArCj4gPiArdHlwZWRlZiBzdHJ1Y3QgVGhyZWFkSW5mbyB7Cj4gPiArICAgIGludCBp ZHg7Cj4gPiArICAgIFZWQ0V4ZWN1dG9yICplOwo+ID4gKyAgICBwdGhyZWFkX3QgdGhyZWFkOwo+ ID4gK30gVGhyZWFkSW5mbzsKPiA+ICsKPiA+ICtzdHJ1Y3QgVlZDRXhlY3V0b3Igewo+ID4gKyAg ICBWVkNUYXNrQ2FsbGJhY2tzIGNiOwo+ID4gKyAgICBUaHJlYWRJbmZvICp0aHJlYWRzOwo+ID4g KyAgICB1aW50OF90ICpsb2NhbF9jb250ZXh0czsKPgo+IEl0IHNlZW1zIG9kZCBhbmQgbmVlZGxl c3MgY29tcGxleCB0byBzZXBhcmF0ZSB0aGlzIGZyb20gdGhlIHRocmVhZCBpbmZvLgo+IEl0Cj4g bG9va3MgbGlrZSB5b3UgY291bGQgc2ltcGx5IGFwcGVuZCBhIHBvaW50ZXIgb3IgYSBmbGV4aWJs ZSBhcnJheSB0bwo+IFRocmVhZEluZm8KPiBpbnN0ZWFkLgo+Cj4gPiArICAgIGludCB0aHJlYWRf Y291bnQ7Cj4gPiArCj4gPiArICAgIHB0aHJlYWRfbXV0ZXhfdCBsb2NrOwo+ID4gKyAgICBwdGhy ZWFkX2NvbmRfdCBjb25kOwo+ID4gKyAgICBpbnQgZGllOwo+ID4gKyAgICBWVkNUYXNrbGV0ICp0 YXNrczsKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIHJlbW92ZV90YXNrKFZWQ1Rhc2ts ZXQgKipwcmV2LCBWVkNUYXNrbGV0ICp0KQo+ID4gK3sKPiA+ICsgICAgKnByZXYgID0gdC0+bmV4 dDsKPiA+ICsgICAgdC0+bmV4dCA9IE5VTEw7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lk IGFkZF90YXNrKFZWQ1Rhc2tsZXQgKipwcmV2LCBWVkNUYXNrbGV0ICp0KQo+ID4gK3sKPiA+ICsg ICAgdC0+bmV4dCA9ICpwcmV2Owo+ID4gKyAgICAqcHJldiAgID0gdDsKPiA+ICt9Cj4gPiArCj4g PiArc3RhdGljIHZvaWQgKmV4ZWN1dG9yX3dvcmtlcl90YXNrKHZvaWQgKmRhdGEpCj4gPiArewo+ ID4gKyAgICBUaHJlYWRJbmZvICp0aSA9IChUaHJlYWRJbmZvKilkYXRhOwo+ID4gKyAgICBWVkNF eGVjdXRvciAqZSA9IHRpLT5lOwo+ID4gKyAgICB2b2lkICpsYyAgICAgICA9IGUtPmxvY2FsX2Nv bnRleHRzICsgdGktPmlkeCAqCj4gPiBlLT5jYi5sb2NhbF9jb250ZXh0X3NpemU7Cj4gPiArICAg IFZWQ1Rhc2tsZXQgKipwcmV2Owo+ID4gKyAgICBWVkNUYXNrQ2FsbGJhY2tzICpjYiA9ICZlLT5j YjsKPiA+ICsKPiA+ICsgICAgcHRocmVhZF9tdXRleF9sb2NrKCZlLT5sb2NrKTsKPiA+ICsgICAg d2hpbGUgKDEpIHsKPiA+ICsgICAgICAgIFZWQ1Rhc2tsZXQqIHQgPSBOVUxMOwo+ID4gKyAgICAg ICAgaWYgKGUtPmRpZSkgYnJlYWs7Cj4gPiArCj4gPiArICAgICAgICBmb3IgKHByZXYgPSAmZS0+ dGFza3M7ICpwcmV2OyBwcmV2ID0gJigqcHJldiktPm5leHQpIHsKPiA+ICsgICAgICAgICAgICBp ZiAoY2ItPnJlYWR5KCpwcmV2LCBjYi0+dXNlcl9kYXRhKSkgewo+ID4gKyAgICAgICAgICAgICAg ICB0ID0gKnByZXY7Cj4gPiArICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gKyAgICAgICAgICAg IH0KPiA+ICsgICAgICAgIH0KPiA+ICsgICAgICAgIGlmICh0KSB7Cj4gPiArICAgICAgICAgICAg Ly9mb3VuZCBvbmUgdGFzawo+ID4gKyAgICAgICAgICAgIHJlbW92ZV90YXNrKHByZXYsIHQpOwo+ ID4gKyAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZlLT5sb2NrKTsKPiA+ICsgICAg ICAgICAgICBjYi0+cnVuKHQsIGxjLCBjYi0+dXNlcl9kYXRhKTsKPiA+ICsgICAgICAgICAgICBw dGhyZWFkX211dGV4X2xvY2soJmUtPmxvY2spOwo+ID4gKyAgICAgICAgfSBlbHNlIHsKPiA+ICsg ICAgICAgICAgICAvL25vIHRhc2sgaW4gb25lIGxvb3AKPiA+ICsgICAgICAgICAgICBwdGhyZWFk X2NvbmRfd2FpdCgmZS0+Y29uZCwgJmUtPmxvY2spOwo+ID4gKyAgICAgICAgfQo+ID4gKyAgICB9 Cj4gPiArICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZlLT5sb2NrKTsKPiA+ICsgICAgcmV0dXJu IE5VTEw7Cj4gPiArfQo+ID4gKwo+ID4gK1ZWQ0V4ZWN1dG9yKiBmZl92dmNfZXhlY3V0b3JfYWxs b2MoY29uc3QgVlZDVGFza0NhbGxiYWNrcyAqY2IsIGludAo+ID4gdGhyZWFkX2NvdW50KSArewo+ ID4gKyAgICBWVkNFeGVjdXRvciAqZTsKPiA+ICsgICAgaW50IGksIGosIHJldDsKPiA+ICsgICAg aWYgKCFjYiB8fCAhY2ItPnVzZXJfZGF0YSB8fCAhY2ItPnJlYWR5IHx8ICFjYi0+cnVuIHx8Cj4g PiAhY2ItPnByaW9yaXR5X2hpZ2hlcikgKyAgICAgICAgcmV0dXJuIE5VTEw7Cj4gPiArICAgIGUg PSBhdl9jYWxsb2MoMSwgc2l6ZW9mKCplKSk7Cj4gPiArICAgIGlmICghZSkKPiA+ICsgICAgICAg IHJldHVybiBOVUxMOwo+ID4gKyAgICBlLT5jYiA9ICpjYjsKPiA+ICsKPiA+ICsgICAgZS0+bG9j YWxfY29udGV4dHMgPSBhdl9tYWxsb2ModGhyZWFkX2NvdW50ICoKPiBlLT5jYi5sb2NhbF9jb250 ZXh0X3NpemUpOwo+ID4gKyAgICBpZiAoIWUtPmxvY2FsX2NvbnRleHRzKQo+ID4gKyAgICAgICAg Z290byBmcmVlX2V4ZWN1dG9yOwo+ID4gKwo+ID4gKyAgICBlLT50aHJlYWRzID0gYXZfY2FsbG9j KHRocmVhZF9jb3VudCwgc2l6ZW9mKCplLT50aHJlYWRzKSk7Cj4gPiArICAgIGlmICghZS0+dGhy ZWFkcykKPiA+ICsgICAgICAgIGdvdG8gZnJlZV9jb250ZXh0czsKPiA+ICsgICAgZm9yIChpID0g MDsgaSA8IHRocmVhZF9jb3VudDsgaSsrKSB7Cj4gPiArICAgICAgICBUaHJlYWRJbmZvICp0aSA9 IGUtPnRocmVhZHMgKyBpOwo+ID4gKyAgICAgICAgdGktPmUgPSBlOwo+ID4gKyAgICAgICAgdGkt PmlkeCA9IGk7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgcmV0ID0gcHRocmVhZF9tdXRleF9p bml0KCZlLT5sb2NrLCBOVUxMKTsKPiA+ICsgICAgaWYgKHJldCkKPiA+ICsgICAgICAgIGdvdG8g ZnJlZV90aHJlYWRzOwo+ID4gKwo+ID4gKyAgICByZXQgPSBwdGhyZWFkX2NvbmRfaW5pdCgmZS0+ Y29uZCwgTlVMTCk7Cj4gPiArICAgIGlmIChyZXQpCj4gPiArICAgICAgICBnb3RvIGRlc3Ryb3lf bG9jazsKPiA+ICsKPiA+ICsgICAgZm9yIChpID0gMDsgaSA8IHRocmVhZF9jb3VudDsgaSsrKSB7 Cj4gPiArICAgICAgICBUaHJlYWRJbmZvICp0aSA9IGUtPnRocmVhZHMgKyBpOwo+ID4gKyAgICAg ICAgcmV0ID0gcHRocmVhZF9jcmVhdGUoJnRpLT50aHJlYWQsIE5VTEwsIGV4ZWN1dG9yX3dvcmtl cl90YXNrLAo+IHRpKTsKPiA+ICsgICAgICAgIGlmIChyZXQpCj4gPiArICAgICAgICAgICAgZ290 byBqb2luX3RocmVhZHM7Cj4gPiArICAgIH0KPiA+ICsgICAgZS0+dGhyZWFkX2NvdW50ID0gdGhy ZWFkX2NvdW50Owo+ID4gKyAgICByZXR1cm4gZTsKPiA+ICsKPiA+ICtqb2luX3RocmVhZHM6Cj4g PiArICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZS0+bG9jayk7Cj4gPiArICAgIGUtPmRpZSA9IDE7 Cj4gPiArICAgIHB0aHJlYWRfY29uZF9icm9hZGNhc3QoJmUtPmNvbmQpOwo+ID4gKyAgICBwdGhy ZWFkX211dGV4X3VubG9jaygmZS0+bG9jayk7Cj4gPiArICAgIGZvciAoaiA9IDA7IGogPCBpOyBq KyspCj4gPiArICAgICAgICBwdGhyZWFkX2pvaW4oZS0+dGhyZWFkc1tqXS50aHJlYWQsIE5VTEwp Owo+ID4gKyAgICBwdGhyZWFkX2NvbmRfZGVzdHJveSgmZS0+Y29uZCk7Cj4gPiArZGVzdHJveV9s b2NrOgo+ID4gKyAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJmUtPmxvY2spOwo+ID4gK2ZyZWVf dGhyZWFkczoKPiA+ICsgICAgYXZfZnJlZShlLT50aHJlYWRzKTsKPiA+ICtmcmVlX2NvbnRleHRz Ogo+ID4gKyAgICBhdl9mcmVlKGUtPmxvY2FsX2NvbnRleHRzKTsKPiA+ICtmcmVlX2V4ZWN1dG9y Ogo+ID4gKyAgICBmcmVlKGUpOwo+ID4gKyAgICByZXR1cm4gTlVMTDsKPiA+ICt9Cj4gPiArCj4g PiArdm9pZCBmZl92dmNfZXhlY3V0b3JfZnJlZShWVkNFeGVjdXRvciAqKmV4ZWN1dG9yKQo+ID4g K3sKPiA+ICsgICAgVlZDRXhlY3V0b3IgKmU7Cj4gPiArICAgIGlmICghZXhlY3V0b3IgfHwgISpl eGVjdXRvcikKPiA+ICsgICAgICAgIHJldHVybjsKPiA+ICsgICAgZSA9ICpleGVjdXRvcjsKPiA+ ICsKPiA+ICsgICAgLy9zaW5nYWwgZGllCj4gPiArICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZS0+ bG9jayk7Cj4gPiArICAgIGUtPmRpZSA9IDE7Cj4gPiArICAgIHB0aHJlYWRfY29uZF9icm9hZGNh c3QoJmUtPmNvbmQpOwo+ID4gKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZS0+bG9jayk7Cj4g PiArCj4gPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZS0+dGhyZWFkX2NvdW50OyBpKyspCj4g PiArICAgICAgICBwdGhyZWFkX2pvaW4oZS0+dGhyZWFkc1tpXS50aHJlYWQsIE5VTEwpOwo+ID4g KyAgICBwdGhyZWFkX2NvbmRfZGVzdHJveSgmZS0+Y29uZCk7Cj4gPiArICAgIHB0aHJlYWRfbXV0 ZXhfZGVzdHJveSgmZS0+bG9jayk7Cj4gPiArCj4gPiArICAgIGF2X2ZyZWUoZS0+dGhyZWFkcyk7 Cj4gPiArICAgIGF2X2ZyZWUoZS0+bG9jYWxfY29udGV4dHMpOwo+ID4gKwo+ID4gKyAgICBhdl9m cmVlcChleGVjdXRvcik7Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQgZmZfdnZjX2V4ZWN1dG9yX2V4 ZWN1dGUoVlZDRXhlY3V0b3IgKmUsIFZWQ1Rhc2tsZXQgKnQpCj4gPiArewo+ID4gKyAgICBWVkNU YXNrQ2FsbGJhY2tzICpjYiA9ICZlLT5jYjsKPiA+ICsgICAgVlZDVGFza2xldCAqKnByZXY7Cj4g PiArCj4gPiArICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZS0+bG9jayk7Cj4gPiArICAgIGZvciAo cHJldiA9ICZlLT50YXNrczsgKnByZXYgJiYgY2ItPnByaW9yaXR5X2hpZ2hlcigqcHJldiwgdCk7 IHByZXYKPiA9Cj4gPiAmKCpwcmV2KS0+bmV4dCkgKyAgICAgICAgLyogbm90aGluZyAqLzsKPiA+ ICsgICAgYWRkX3Rhc2socHJldiwgdCk7Cj4gPiArICAgIHB0aHJlYWRfY29uZF9zaWduYWwoJmUt PmNvbmQpOwo+ID4gKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZS0+bG9jayk7Cj4gPiArfQo+ ID4gKwo+ID4gK3ZvaWQgZmZfdnZjX2V4ZWN1dG9yX3dha2V1cChWVkNFeGVjdXRvciAqZSkKPiA+ ICt7Cj4gPiArICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZS0+bG9jayk7Cj4gPiArICAgIHB0aHJl YWRfY29uZF9icm9hZGNhc3QoJmUtPmNvbmQpOwo+ID4gKyAgICBwdGhyZWFkX211dGV4X3VubG9j aygmZS0+bG9jayk7Cj4KPiBTaWduYWxpbmcgYSBjb25kaXRpb24gdmFyaWFibGUgd2l0aG91dCBj aGFuZ2luZyBhbnkgc3RhdGUgbWFrZXMgbm8gc2Vuc2UuCj4KPiA+ICt9Cj4KPiAtLQo+IFLDqW1p IERlbmlzLUNvdXJtb250Cj4gaHR0cDovL3d3dy5yZW1sYWIubmV0Lwo+Cj4KPgo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZmZtcGVnLWRldmVsIG1h aWxpbmcgbGlzdAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gaHR0cHM6Ly9mZm1wZWcub3Jn L21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4KPiBUbyB1bnN1YnNjcmliZSwgdmlzaXQg bGluayBhYm92ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdp dGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVs QGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRl dmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRl dmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K