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 ESMTPS id DDDE44C33D for ; Sat, 22 Feb 2025 08:12:24 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0631568C746; Sat, 22 Feb 2025 10:12:21 +0200 (EET) Received: from mail-vs1-f53.google.com (mail-vs1-f53.google.com [209.85.217.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4EC0168C5FF for ; Sat, 22 Feb 2025 10:12:14 +0200 (EET) Received: by mail-vs1-f53.google.com with SMTP id ada2fe7eead31-4be75b2bbceso993201137.1 for ; Sat, 22 Feb 2025 00:12:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740211932; x=1740816732; darn=ffmpeg.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=OOcziuDj1sExFcjRjzIxbuh+jQMV/QopfIXqpRDwVAA=; b=Wdk/ZNcIScoIBkh1NiJuXijpsN7roKxZiSdtgKsLoJ7Bz84DP+zuQi5fHTl1sSMmjB cW03nRpiGOT5k83iN1MOh7cw5DiHuGmhGtIoIvo4NVIBibCZBsNpZZT/6lyFNDqsXg/j 8dDR0tl8i/Kuv+DZQX1eTOqCfTnxBNeATlHFbS1LqOfE/7teW9Yb+2xQgkwCf/f9fLbF S6lMPwkzSaGBLo71veI8yh51mAKo3Zi9MCeAFWEuaL4BzPuKmXu2mg3VPvE1PaxBcQs2 yGukD+5g4RTF3eMRi8YEX+OcdNgAudNwsuu5EL5R6TuhDjRxl7WSuI5hKfFLvz7/OJzF xmaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740211932; x=1740816732; 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=OOcziuDj1sExFcjRjzIxbuh+jQMV/QopfIXqpRDwVAA=; b=aWMZlY9tSorjIOOr0TmU5Zr/ZJMS2FlbQxhwnvptDjJ684I+s/YLB2GIzOfQIaiRP4 oovXzcd3M5MsaBBAjE2SwycuXarKQ+luC6aZDHhOQjA4HWdHfZih/700WJFVHMB09bn6 2AbYQCqh69i4sYKUkO7AqCqOTGWkmbl6SOAg3Q+e2rCkkBRC72bk7QcXBKk58bhtVpvo +4sXo0LRH4B79Tk/8XZRykLiRqnV5bFgP8eM5+OZY3WK+vQGKf8NkCuoeiU9F0pL33EN MWT0k8rmPiFkPWGddpH4EMifbOssmx/+lCi9cm5EYQ5gMGlKG2khUOEzexhNWDNONSqM yPBw== X-Gm-Message-State: AOJu0YxHQGP60buQ4zCDl0QMD1Y/lVkNLTCGIUlBL1cVggKbiD6e2hK0 0a4MKwScUhAV/VIkvduyXFIu0LRAK7bRRMaKVfx3pqE5k2nyhhxntZryxNgZqV3OLzOiZsm/eJ/ r6SkTs7VHiuyC5yMhUVOcyxVb4wckzXFffwU= X-Gm-Gg: ASbGnctPWlnBA0IMEWK3NBci78LJ8Kif606BIFxpj+lakntaKALvyPpcjZqaHtYcahB b2HYT+6ywEHr67YJqHq7Wvbg8izLo2soqXHeomv/CNawl9Uv0pDJNsPUC6KYQjxbJqXe5m1iW0L szQi0uZw== X-Google-Smtp-Source: AGHT+IHAdFSoQ4tZ1YtPrswIcB4BNb4KMqMDwW62d2Z0yvIuZsKwCEdmFQNqBUXT/A/WnitDnI8s7Y0IpwwE4VTDUcQ= X-Received: by 2002:a05:6102:510b:b0:4bb:ba51:7d47 with SMTP id ada2fe7eead31-4bfc27a16d1mr3006934137.4.1740211932406; Sat, 22 Feb 2025 00:12:12 -0800 (PST) MIME-Version: 1.0 References: <20250209154505.69704-1-post@frankplowman.com> <20250209154505.69704-2-post@frankplowman.com> <3d809bda-37bf-4087-a66d-23c24f536ad5@frankplowman.com> In-Reply-To: <3d809bda-37bf-4087-a66d-23c24f536ad5@frankplowman.com> From: Nuo Mi Date: Sat, 22 Feb 2025 16:12:03 +0800 X-Gm-Features: AWEUYZlxa5aHAb-ykKOk5AcvYvp8hIBXgn-IyiTJY2fLaeTDumN2Na_8g1DqL0E Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 2/2] lavc/vvc: Ensure subpictures don't overlap 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: T24gVGh1LCBGZWIgMjAsIDIwMjUgYXQgNDoyOeKAr0FNIEZyYW5rIFBsb3dtYW4gPHBvc3RAZnJh bmtwbG93bWFuLmNvbT4gd3JvdGU6Cgo+IEhpLAo+Cj4gVGhhbmtzIGZvciB5b3VyIHJldmlldy4K Pgo+IE9uIDE2LzAyLzIwMjUgMTU6MTksIE51byBNaSB3cm90ZToKPiA+IEhpIEZyYW5rLAo+ID4g VGhhbmsgeW91IGZvciB0aGUgcGF0Y2guCj4gPgo+ID4gT24gU3VuLCBGZWIgOSwgMjAyNSBhdCAx MTo0NeKAr1BNIEZyYW5rIFBsb3dtYW4gPHBvc3RAZnJhbmtwbG93bWFuLmNvbT4KPiB3cm90ZToK PiA+Cj4gPj4gVGhpcyBpcyBlc3NlbnRpYWxseSBhIHJlLWltcGxlbWVudGF0aW9uIG9mCj4gPj4K PiA+Pgo+IGh0dHBzOi8vcGF0Y2h3b3JrLmZmbXBlZy5vcmcvcHJvamVjdC9mZm1wZWcvcGF0Y2gv MjAyNDEwMDUyMjM5NTUuNTQxNTgtMS1wb3N0QGZyYW5rcGxvd21hbi5jb20vCj4gPj4KPiA+PiBU aGF0IHBhdGNoIHdhcyBub3QgYXBwbGllZCBsYXN0IHRpbWUuICBJbnN0ZWFkIHdlIG9wdGVkIHRv IGlkZW50aWZ5Cj4gPj4gaXNzdWVzIHdoaWNoIGNvdWxkIGJlIGNhdXNlZCBieSBpbnZhbGlkIHN1 YnBpY3R1cmUgbGF5b3V0cyBhbmQgcmVtZWR5Cj4gPj4gdGhvc2UgaXNzdWVzIHdoZXJlIHRoZXkg bWFuaWZlc3QsIGVpdGhlciB0aHJvdWdoIGVycm9yIGRldGVjdGlvbiBvciBjb2RlCj4gPj4gaGFy ZGVuaW5nLiAgVGhpcyB3YXMgcHJpbWFyaWx5IGltcGxlbWVudGVkIGluIHRoZSBzZXQKPiA+PiBo dHRwczovL3BhdGNod29yay5mZm1wZWcub3JnL3Byb2plY3QvZmZtcGVnL2xpc3QvP3Nlcmllcz0x MzM4MS4KPiA+Pgo+ID4+IFRoaXMgaGFzIHdvcmtlZCB0byBzb21lIGRlZ3JlZSwgaG93ZXZlciBp c3N1ZXMgd2l0aCBzdWJwaWN0dXJlIGxheW91dHMKPiA+PiBjb250aW51ZSB0byBjcm9wIHVwIGZy b20gdGhlIGZ1enplciBhbmQgSSd2ZSBmaXhlZCBhIG51bWJlciBvZiBidWdzCj4gPj4gcmVsYXRl ZCB0byBzdWJwaWN0dXJlIGxheW91dHMgc2luY2UgdGhlbi4gIEkgdGhpbmsgaXQncyBiZXN0IHRv IHJldHVybgo+ID4+IHRvIHRoZSBpbml0aWFsIHBsYW4gYW5kIHNpbXBseSBjaGVjayBpZiB0aGUg c3VicGljdHVyZSBsYXlvdXQgaXMgdmFsaWQKPiA+PiBpbml0aWFsbHkuCj4gPj4KPiA+PiBUaGlz IGltcGxlbWVudGF0aW9uIGlzIGFsc28gbGlnaHRlciB0aGFuIHRoZSBmaXJzdCB0aW1lIC0tIGJ5 IGRvaW5nIGEKPiA+PiBiaXQgbW9yZSBsb2dpYyBpbiBwcHNfc3VicGljX2xlc3NfdGhhbl9vbmVf dGlsZV9zbGljZSwgd2UgYXJlIGFibGUgdG8KPiA+PiBzdG9yZSBhIHRpbGVfaW5fc3VicGljIG1h cCByYXRoZXIgdGhhbiBhIGN0dV9pbl9zdWJwaWMgbWFwLiAgVGhpcwo+ID4+IHJlZHVjZXMgdGhl IHNpemUgb2YgdGhlIG1hcCB0byB0aGUgcG9pbnQgaXQgYmVjb21lcyBwb3NzaWJsZSB0byBhbGxv Y2F0ZQo+ID4+IGl0IG9uIHRoZSBzdGFjay4gIFNpbWlsYXIgdG8gOGJkNjZhOGM5NTg3YWY2MWM3 YjQ2NTU4YmUzYzRlZTMxN2MxYWY1YSwKPiA+PiB0aGUgbGF5b3V0IGlzIGFsc28gdmFsaWRhdGVk IGluIHRoZSBzbGljZSBtYXAgY29uc3RydWN0aW9uIGNvZGUsIHJhdGhlcgo+ID4+IHRoYW4gaW4g dGhlIENCUywgd2hpY2ggYXZvaWRzIGR1cGxpY2F0aW5nIHNvbWUgbG9naWMuCj4gPj4KPiA+PiBT aWduZWQtb2ZmLWJ5OiBGcmFuayBQbG93bWFuIDxwb3N0QGZyYW5rcGxvd21hbi5jb20+Cj4gPj4g LS0tCj4gPj4gIGxpYmF2Y29kZWMvdnZjL3BzLmMgfCA1MiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0KPiA+PiAgMSBmaWxlIGNoYW5nZWQsIDQyIGluc2VydGlv bnMoKyksIDEwIGRlbGV0aW9ucygtKQo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMv dnZjL3BzLmMgYi9saWJhdmNvZGVjL3Z2Yy9wcy5jCj4gPj4gaW5kZXggOTQ4MDU0MGUwMy4uOWFm NWUxMjUwYiAxMDA2NDQKPiA+PiAtLS0gYS9saWJhdmNvZGVjL3Z2Yy9wcy5jCj4gPj4gKysrIGIv bGliYXZjb2RlYy92dmMvcHMuYwo+ID4+IEBAIC00MDEsMjUgKzQwMSw0NyBAQCBzdGF0aWMgdm9p ZCBzdWJwaWNfdGlsZXMoaW50ICp0aWxlX3gsIGludCAqdGlsZV95LAo+ID4+IGludCAqdGlsZV94 X2VuZCwgaW50ICp0aWxlX3lfCj4gPj4gICAgICAgICAgKCp0aWxlX3lfZW5kKSsrOwo+ID4+ICB9 Cj4gPj4KPiA+PiAtc3RhdGljIHZvaWQgcHBzX3N1YnBpY19sZXNzX3RoYW5fb25lX3RpbGVfc2xp Y2UoVlZDUFBTICpwcHMsIGNvbnN0Cj4gVlZDU1BTCj4gPj4gKnNwcywgY29uc3QgaW50IGksIGNv bnN0IGludCB0eCwgY29uc3QgaW50IHR5LCBpbnQgKm9mZikKPiA+PiArc3RhdGljIGludCBwcHNf c3VicGljX2xlc3NfdGhhbl9vbmVfdGlsZV9zbGljZShWVkNQUFMgKnBwcywgY29uc3QKPiBWVkNT UFMKPiA+PiAqc3BzLCBjb25zdCBpbnQgaSwgY29uc3QgaW50IHR4LCBjb25zdCBpbnQgdHksIGlu dCAqb2ZmLCBib29sCj4gPj4gKnRpbGVfaW5fc3VicGljKQo+ID4+ICB7Cj4gPj4gKyAgICBjb25z dCBpbnQgc3VicGljX3JpZ2h0ID0gc3BzLT5yLT5zcHNfc3VicGljX2N0dV90b3BfbGVmdF94W2ld ICsKPiA+PiBzcHMtPnItPnNwc19zdWJwaWNfd2lkdGhfbWludXMxW2ldOwo+ID4+ICsgICAgY29u c3QgaW50IHN1YnBpY19ib3R0b20gPSBzcHMtPnItPnNwc19zdWJwaWNfY3R1X3RvcF9sZWZ0X3lb aV0gKwo+ID4+IHNwcy0+ci0+c3BzX3N1YnBpY19oZWlnaHRfbWludXMxW2ldOwo+ID4+ICsgICAg Y29uc3QgaW50IHRpbGVfcmlnaHQgPSBwcHMtPmNvbF9iZFt0eF0gKyBwcHMtPnItPmNvbF93aWR0 aF92YWxbdHhdCj4gLQo+ID4+IDE7Cj4gPj4gKyAgICBjb25zdCBpbnQgdGlsZV9ib3R0b20gPSBw cHMtPnJvd19iZFt0eV0gKwo+IHBwcy0+ci0+cm93X2hlaWdodF92YWxbdHldCj4gPj4gLSAxOwo+ ID4+ICsgICAgY29uc3QgYm9vbCBpc19maW5hbF9zdWJwaWNfaW5fdGlsZSA9IHN1YnBpY19yaWdo dCA9PSB0aWxlX3JpZ2h0ICYmCj4gPj4gc3VicGljX2JvdHRvbSA9PSB0aWxlX2JvdHRvbTsKPiA+ PiArCj4gPj4gKyAgICBpZiAoaXNfZmluYWxfc3VicGljX2luX3RpbGUpIHsKPiA+PiArICAgICAg ICBjb25zdCBzaXplX3QgdGlsZV9pZHggPSB0eSAqIFZWQ19NQVhfVElMRV9DT0xVTU5TICsgdHg7 Cj4gPgo+ID4gSWYgd2UgaGF2ZSAgVlZDX01BWF9USUxFU19QRVJfQVUgcm93cy4gdGhpcyB3aWxs IG92ZXJ3cml0ZS4KPiA+IEhvdyBhYm91dCB0aWxlX2lkeCA9IHR5ICogcHBzLT5yLT5udW1fdGls ZV9jb2x1bW5zICsgdHg/Cj4gPgo+Cj4gQWgsIEknZCBwcmVzdW1lZCBWVkNfTUFYX1RJTEVfQ09M VU1OUyAqIFZWQ19NQVhfVElMRV9ST1dTID0KPiBWVkNfTUFYX1RJTEVTX1BFUl9BVSBidXQgSSBz ZWUgbm93IHRoaXMgaXMgbm90IHRoZSBjYXNlLiAgRml4ZWQgaW4gdjIuCj4KPiA+Pgo+ID4KPiA+ ICsgICAgICAgIGlmICh0aWxlX2luX3N1YnBpY1t0aWxlX2lkeF0pCj4gPj4gKyAgICAgICAgICAg IHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ID4+ICsgICAgICAgIHRpbGVfaW5fc3VicGlj W3RpbGVfaWR4XSA9IHRydWU7Cj4gPj4gKyAgICB9Cj4gPj4gKwo+ID4+ICAgICAgcHBzLT5udW1f Y3R1c19pbl9zbGljZVtpXSA9IHBwc19hZGRfY3R1cyhwcHMsIG9mZiwKPiA+PiAgICAgICAgICBz cHMtPnItPnNwc19zdWJwaWNfY3R1X3RvcF9sZWZ0X3hbaV0sCj4gPj4gc3BzLT5yLT5zcHNfc3Vi cGljX2N0dV90b3BfbGVmdF95W2ldLAo+ID4+ICAgICAgICAgIHNwcy0+ci0+c3BzX3N1YnBpY193 aWR0aF9taW51czFbaV0gKyAxLAo+ID4+IHNwcy0+ci0+c3BzX3N1YnBpY19oZWlnaHRfbWludXMx W2ldICsgMSk7Cj4gPj4gKwo+ID4+ICsgICAgcmV0dXJuIDA7Cj4gPj4gIH0KPiA+Pgo+ID4+IC1z dGF0aWMgdm9pZCBwcHNfc3VicGljX29uZV9vcl9tb3JlX3RpbGVzX3NsaWNlKFZWQ1BQUyAqcHBz LCBjb25zdCBpbnQKPiA+PiB0aWxlX3gsIGNvbnN0IGludCB0aWxlX3ksIGNvbnN0IGludCB4X2Vu ZCwgY29uc3QgaW50IHlfZW5kLCBjb25zdCBpbnQgaSwKPiA+PiBpbnQgKm9mZikKPiA+PiArc3Rh dGljIGludCBwcHNfc3VicGljX29uZV9vcl9tb3JlX3RpbGVzX3NsaWNlKFZWQ1BQUyAqcHBzLCBj b25zdCBpbnQKPiA+PiB0aWxlX3gsIGNvbnN0IGludCB0aWxlX3ksIGNvbnN0IGludCB4X2VuZCwg Y29uc3QgaW50IHlfZW5kLAo+ID4+ICsgICAgY29uc3QgaW50IGksIGludCAqb2ZmLCBib29sICp0 aWxlX2luX3N1YnBpYykKPiA+PiAgewo+ID4+ICAgICAgZm9yIChpbnQgdHkgPSB0aWxlX3k7IHR5 IDwgeV9lbmQ7IHR5KyspIHsKPiA+PiAgICAgICAgICBmb3IgKGludCB0eCA9IHRpbGVfeDsgdHgg PCB4X2VuZDsgdHgrKykgewo+ID4+ICsgICAgICAgICAgICBjb25zdCBzaXplX3QgdGlsZV9pZHgg PSB0eSAqIFZWQ19NQVhfVElMRV9DT0xVTU5TICsgdHg7Cj4gPj4gKyAgICAgICAgICAgIGlmICh0 aWxlX2luX3N1YnBpY1t0aWxlX2lkeF0pCj4gPj4gKyAgICAgICAgICAgICAgICByZXR1cm4gQVZF UlJPUl9JTlZBTElEREFUQTsKPiA+PiArICAgICAgICAgICAgdGlsZV9pbl9zdWJwaWNbdGlsZV9p ZHhdID0gdHJ1ZTsKPiA+PiArCj4gPj4gICAgICAgICAgICAgIHBwcy0+bnVtX2N0dXNfaW5fc2xp Y2VbaV0gKz0gcHBzX2FkZF9jdHVzKHBwcywgb2ZmLAo+ID4+ICAgICAgICAgICAgICAgICAgcHBz LT5jb2xfYmRbdHhdLCBwcHMtPnJvd19iZFt0eV0sCj4gPj4gICAgICAgICAgICAgICAgICBwcHMt PnItPmNvbF93aWR0aF92YWxbdHhdLCBwcHMtPnItPnJvd19oZWlnaHRfdmFsW3R5XSk7Cj4gPj4g ICAgICAgICAgfQo+ID4+ICAgICAgfQo+ID4+ICsgICAgcmV0dXJuIDA7Cj4gPj4gIH0KPiA+Pgo+ ID4+IC1zdGF0aWMgdm9pZCBwcHNfc3VicGljX3NsaWNlKFZWQ1BQUyAqcHBzLCBjb25zdCBWVkNT UFMgKnNwcywgY29uc3QgaW50Cj4gaSwKPiA+PiBpbnQgKm9mZikKPiA+PiArc3RhdGljIGludCBw cHNfc3VicGljX3NsaWNlKFZWQ1BQUyAqcHBzLCBjb25zdCBWVkNTUFMgKnNwcywgY29uc3QgaW50 Cj4gaSwKPiA+PiBpbnQgKm9mZiwgYm9vbCAqdGlsZV9pbl9zdWJwaWMpCj4gPj4gIHsKPiA+PiAg ICAgIGludCB0eCwgdHksIHhfZW5kLCB5X2VuZDsKPiA+Pgo+ID4+IEBAIC00MjgsMTkgKzQ1MCwz MCBAQCBzdGF0aWMgdm9pZCBwcHNfc3VicGljX3NsaWNlKFZWQ1BQUyAqcHBzLCBjb25zdAo+ID4+ IFZWQ1NQUyAqc3BzLCBjb25zdCBpbnQgaSwgaW50ICpvCj4gPj4KPiA+PiAgICAgIHN1YnBpY190 aWxlcygmdHgsICZ0eSwgJnhfZW5kLCAmeV9lbmQsIHNwcywgcHBzLCBpKTsKPiA+Pgo+ID4gQ2Fs Y3VsYXRpbmcgdGlsZXMgZm9yIGVhY2ggc2xpY2Ugc21hbGxlciB0aGFuIG9uZSB0aWxlIGlzIGlu ZWZmaWNpZW50Lgo+ID4gTWF5YmUgd2UgY2FuIG1vdmUgc3VicGljX3RpbGVzKCkgdG8gcHBzX3Np bmdsZV9zbGljZV9wZXJfc3VicGljKCk7IHRoaXMKPiA+IG1pZ2h0IHNpbXBsaWZ5IHRoZSBwYXRj aC4KPiA+Cj4KPiBJIGRvbid0IHRoaW5rIHRoaXMgd2lsbCBiZSBhbGwgdGhhdCBzdHJhaWdodGZv cndhcmQuICBJbgo+IHBwc19zaW5nbGVfc2xpY2VfcGVyX3N1YnBpYyB3ZSBhcmUgaXRlcmF0aW5n IG92ZXIgc2xpY2VzIHdob3NlIGxvY2F0aW9ucwo+IGFuZCBzaXplcyBhcmUgZGV0ZXJtaW5lZCBi eSBleHBsaWNpdGx5LXNpZ25hbGVkIHN1YnBpY3R1cmVzLiAgQmVjYXVzZQo+IHRoZWlyIGxvY2F0 aW9ucyBhcmUgZXhwbGljaXRseS1zaWduYWxlZCBhbmQgYXJlIHRoZXJlZm9yZSBwcmV0dHkgbXVj aAo+IGFyYml0cmFyeSwgaXQgd2lsbCBiZSBkaWZmaWN1bHQgaW4gcHBzX3NpbmdsZV9zbGljZV9w ZXJfc3VicGljIHRvIGdyb3VwCj4gdG9nZXRoZXIgdGhlIHNsaWNlcy9zdWJwaWN0dXJlcyB3aGlj aCBtYWtlIHVwIGEgZ2l2ZW4gdGlsZS4gIEkgdGhpbmsKPiBpdCdzIHBvc3NpYmxlLCBidXQgYnkg dGhlIHRpbWUgeW91J3ZlIGltcGxlbWVudGVkIHRoZSBsb2dpYyB0byBmaWd1cmUKPiB0aGF0IG91 dCwgSSBkb24ndCB0aGluayB0aGVyZSB3b3VsZCBiZSBhbnkgcGVyZm9ybWFuY2UgYmVuZWZpdCBv dmVyIGp1c3QKPiBjYWxsaW5nIHN1YnBpY190aWxlcyBmb3IgZWFjaCBzdWJwaWMuCj4KPiBJdCdz IGFsc28gd29ydGggbm90aW5nIHRoYXQgSSBkb24ndCB0aGluayB0aGVyZSBhcmUgYW55IGVuY29k ZXJzIG91dAo+IHRoZXJlIHdoaWNoIGFjdHVhbGx5IHByb2R1Y2Ugc3VicGljdHVyZXMgc21hbGxl ciB0aGFuIGEgdGlsZSwgYXQgbGVhc3QKPiBJJ3ZlIG5ldmVyIHNlZW4gYSBiaXRzdHJlYW0gd2hp Y2ggZXhlcmNpc2VzCj4gcHBzX3N1YnBpY19sZXNzX3RoYW5fb25lX3RpbGVfc2xpY2UuICBJIHRo aW5rIGNoYW5naW5nCj4gcHBzX3NpbmdsZV9zbGljZV9wZXJfc3VicGljIGNvdWxkIHJ1biB0aGUg cmlzayBvZiBzbG93aW5nIGRvd24gdGhlIG11Y2gKPiBtb3JlIGNvbW1vbiBwcHNfc3VicGljX29u ZV9vcl9tb3JlX3RpbGVzX3NsaWNlLgo+Ck9rYXksIFRoYW5rcyBmb3IgdGhlIGV4cGxhaW5pbmcu IEkgbWlnaHQgYmUgb3ZlcnRoaW5raW5nIGl0LgoKTWFkZSBzb21lIHNtYWxsIGNoYW5nZXMgaW4g djM6Cmh0dHBzOi8vcGF0Y2h3b3JrLmZmbXBlZy5vcmcvcHJvamVjdC9mZm1wZWcvcGF0Y2gvMjAy NTAyMjIwNzUxNTUuNTA0NTQwLTItbnVvbWkyMDIxQGdtYWlsLmNvbS8KCjEuIFJlZmFjdCBvdXQg bWFya190aWxlX2FzX3VzZWQgdG8gcmVtb3ZlIGR1cGxpY2F0ZSBsb2dpYy4KMi5Pbmx5IGNoZWNr IGJvdHRvbSBmb3IgaXNfZmluYWxfc3VicGljX2luX3RpbGUsIGFzIGEgc2xpY2Ugd2l0aGluIGEg dGlsZQphbHdheXMgaGFzIHRoZSBzYW1lIHdpZHRoIGFzIHRoZSB0aWxlLgoKCj4gPiAgICAgIGlm ICh0eSArIDEgPT0geV9lbmQgJiYgc3BzLT5yLT5zcHNfc3VicGljX2hlaWdodF9taW51czFbaV0g KyAxIDwKPiA+PiBwcHMtPnItPnJvd19oZWlnaHRfdmFsW3R5XSkKPiA+PiAtICAgICAgICBwcHNf c3VicGljX2xlc3NfdGhhbl9vbmVfdGlsZV9zbGljZShwcHMsIHNwcywgaSwgdHgsIHR5LCBvZmYp Owo+ID4+ICsgICAgICAgIHJldHVybiBwcHNfc3VicGljX2xlc3NfdGhhbl9vbmVfdGlsZV9zbGlj ZShwcHMsIHNwcywgaSwgdHgsIHR5LAo+ID4+IG9mZiwgdGlsZV9pbl9zdWJwaWMpOwo+ID4+ICAg ICAgZWxzZQo+ID4+IC0gICAgICAgIHBwc19zdWJwaWNfb25lX29yX21vcmVfdGlsZXNfc2xpY2Uo cHBzLCB0eCwgdHksIHhfZW5kLCB5X2VuZCwKPiBpLAo+ID4+IG9mZik7Cj4gPj4gKyAgICAgICAg cmV0dXJuIHBwc19zdWJwaWNfb25lX29yX21vcmVfdGlsZXNfc2xpY2UocHBzLCB0eCwgdHksIHhf ZW5kLAo+ID4+IHlfZW5kLCBpLCBvZmYsIHRpbGVfaW5fc3VicGljKTsKPiA+PiAgfQo+ID4+Cj4g Pj4gLXN0YXRpYyB2b2lkIHBwc19zaW5nbGVfc2xpY2VfcGVyX3N1YnBpYyhWVkNQUFMgKnBwcywg Y29uc3QgVlZDU1BTICpzcHMsCj4gPj4gaW50ICpvZmYpCj4gPj4gK3N0YXRpYyBpbnQgcHBzX3Np bmdsZV9zbGljZV9wZXJfc3VicGljKFZWQ1BQUyAqcHBzLCBjb25zdCBWVkNTUFMgKnNwcywKPiA+ PiBpbnQgKm9mZikKPiA+PiAgewo+ID4+ICAgICAgaWYgKCFzcHMtPnItPnNwc19zdWJwaWNfaW5m b19wcmVzZW50X2ZsYWcpIHsKPiA+PiAgICAgICAgICBwcHNfc2luZ2xlX3NsaWNlX3BpY3R1cmUo cHBzLCBvZmYpOwo+ID4+ICAgICAgfSBlbHNlIHsKPiA+PiAtICAgICAgICBmb3IgKGludCBpID0g MDsgaSA8IHBwcy0+ci0+cHBzX251bV9zbGljZXNfaW5fcGljX21pbnVzMSArIDE7Cj4gaSsrKQo+ ID4+IC0gICAgICAgICAgICBwcHNfc3VicGljX3NsaWNlKHBwcywgc3BzLCBpLCBvZmYpOwo+ID4+ ICsgICAgICAgIGJvb2wgdGlsZV9pbl9zdWJwaWNbVlZDX01BWF9USUxFU19QRVJfQVVdID0gezB9 Owo+ID4+ICsgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcHBzLT5yLT5wcHNfbnVtX3NsaWNl c19pbl9waWNfbWludXMxICsgMTsKPiA+PiBpKyspIHsKPiA+PiArICAgICAgICAgICAgY29uc3Qg aW50IHJldCA9IHBwc19zdWJwaWNfc2xpY2UocHBzLCBzcHMsIGksIG9mZiwKPiA+PiB0aWxlX2lu X3N1YnBpYyk7Cj4gPj4gKyAgICAgICAgICAgIGlmIChyZXQgPCAwKQo+ID4+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsKPiA+PiArICAgICAgICB9Cj4gPj4gKwo+ID4+ICsgICAgICAgIC8v IFdlIG9ubHkgdXNlIHRpbGVfaW5fc3VicGljIHRvIGNoZWNrIHRoYXQgdGhlIHN1YnBpY3R1cmVz Cj4gZG9uJ3QKPiA+PiBvdmVybGFwCj4gPj4gKyAgICAgICAgLy8gaGVyZTsgd2UgZG9uJ3QgdXNl IHRpbGVfaW5fc3VicGljIHRvIGNoZWNrIHRoYXQgdGhlCj4gPj4gc3VicGljdHVyZXMgY292ZXIK PiA+PiArICAgICAgICAvLyBldmVyeSB0aWxlLiAgSXQgaXMgcG9zc2libGUgdG8gYXZvaWQgZG9p bmcgdGhpcyB3b3JrIGhlcmUKPiA+PiBiZWNhdXNlIHRoZQo+ID4+ICsgICAgICAgIC8vIGNvdmVy aW5nIHByb3BlcnR5IG9mIHN1YnBpY3R1cmVzIGlzIGFscmVhZHkgZ3VhcmFudGVlZCBieQo+IHRo ZQo+ID4+IG1lY2hhbmlzbXMKPiA+PiArICAgICAgICAvLyB3aGljaCBjaGVjayBldmVyeSBDVFUg YmVsb25ncyB0byBhIHNsaWNlLgo+ID4+ICAgICAgfQo+ID4+ICsgICAgcmV0dXJuIDA7Cj4gPj4g IH0KPiA+Pgo+ID4+ICBzdGF0aWMgaW50IHBwc19vbmVfdGlsZV9zbGljZXMoVlZDUFBTICpwcHMs IGNvbnN0IGludCB0aWxlX2lkeCwgaW50IGksCj4gPj4gaW50ICpvZmYpCj4gPj4gQEAgLTQ5MSw4 ICs1MjQsNyBAQCBzdGF0aWMgaW50IHBwc19yZWN0X3NsaWNlKFZWQ1BQUyAqcHBzLCBjb25zdCBW VkNTUFMKPiA+PiAqc3BzKQo+ID4+ICAgICAgaW50IHRpbGVfaWR4ID0gMCwgb2ZmID0gMDsKPiA+ Pgo+ID4+ICAgICAgaWYgKHItPnBwc19zaW5nbGVfc2xpY2VfcGVyX3N1YnBpY19mbGFnKSB7Cj4g Pj4gLSAgICAgICAgcHBzX3NpbmdsZV9zbGljZV9wZXJfc3VicGljKHBwcywgc3BzLCAmb2ZmKTsK PiA+PiAtICAgICAgICByZXR1cm4gMDsKPiA+PiArICAgICAgICByZXR1cm4gcHBzX3NpbmdsZV9z bGljZV9wZXJfc3VicGljKHBwcywgc3BzLCAmb2ZmKTsKPiA+PiAgICAgIH0KPiA+Pgo+ID4+ICAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCByLT5wcHNfbnVtX3NsaWNlc19pbl9waWNfbWludXMxICsg MTsgaSsrKSB7Cj4gPj4gLS0KPiA+PiAyLjQ3LjAKPiA+Pgo+ID4+Cj4gPiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gZmZtcGVnLWRldmVsIG1haWxp bmcgbGlzdAo+ID4gZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKPiA+IGh0dHBzOi8vZmZtcGVnLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+ID4KPiA+IFRvIHVuc3Vic2NyaWJlLCB2 aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+ID4gZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVn Lm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KPgo+Cj4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0 Cj4gZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKPiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9s aXN0aW5mby9mZm1wZWctZGV2ZWwKPgo+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3Zl LCBvciBlbWFpbAo+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0 ICJ1bnN1YnNjcmliZSIuCj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9y ZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVu c3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVz dEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=