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 2E2714A61C for ; Tue, 29 Apr 2025 13:24:45 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EDE9968A93D; Tue, 29 Apr 2025 16:24:40 +0300 (EEST) Received: from mail-ua1-f54.google.com (mail-ua1-f54.google.com [209.85.222.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0C557687C8E for ; Tue, 29 Apr 2025 16:24:34 +0300 (EEST) Received: by mail-ua1-f54.google.com with SMTP id a1e0cc1a2514c-86f9c719d63so2432124241.1 for ; Tue, 29 Apr 2025 06:24:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745933072; x=1746537872; 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=yBur95q0pag3Kn0ATK6UzPgSK5IInClTfBbUHe37f1Y=; b=kV1YibAuSe2M0+knrPU7DfeUSHeCGr88o/z3mbbWr2RmzCdmXyPit1maZV1DjCYSSG 3LI/FZaZXkJ9j/BsJ1vKjQ4tv0Koi8+imoqWDVZ7ookLqEJlGocz2xw2vX1RoVZi8uWD ROIwBTovqY1hpCMQxbKT+2vjTlCJ2B7i6BKHGLmffwZ1ZC5d6Sa1265nmiX6jJH1/+Vb opKN1LVgVAhR9mqKrMfjRxk+9TeDX+ssHflFg1TVG6/vaI1LfQoqRbUo129q8T192tTm UBLqm2KjACLoyIl1a2S7azSs7lYb+yM77J3dS/tpuamnBa1g+M6RQN/9do1hHGTPOY/5 7uSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745933072; x=1746537872; 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=yBur95q0pag3Kn0ATK6UzPgSK5IInClTfBbUHe37f1Y=; b=AqbuKK2RXMnTxHnRZPzj9YfWI2yytos9Bd/qqpMjDNbU9lB/k0tjgH3j9HVWgD6t9n /7vMslA/vsWeRD3LCH9JZnfHDU4+MbYctCUNG9+KQig0EMHgYMWyaqVyriKZ60Eq4eXg x2g4JIVm4vaHfi1/9oNAdcblD4bdommsK5fMZXxFBs6Uz3u+sczQJFO9CzNkd1X4ikqj BDYK+u3jWI6YdI8Go+IVbOI8zXupzHVnmW+kkdIon/tmNIjko3slOl0TYy0oczT7EH3S l4eBA/0UqWrKg3xM/3lUrlAoZ1c0hzKC89FwuVRQAYUFnutcov9/JFqKvYMNhCstPCqt K4eg== X-Gm-Message-State: AOJu0YzBT3obYCv4Dtt6eEl6eEjPnZQnsdZayWAHWsOjsXYtL5QLCir5 bsxYIw9iXR+AV7lA4Y9VxEyDrt/ND+AboUsQfvVzhrAjWMkBFftsG8YFwMLvG9x6wVNQ0UTHa+6 oVGKN7EMIgJ394aBMZS8P+d3yhSeJfJCf X-Gm-Gg: ASbGncuDWFiUtWRyLtba05cHZVSZcvsZj2y6D+Bc5YokEKrwkE1hGUDgGt/AMNkFPAL 3IPB1eL23b90RgYdL0jVLxu+wFA7oTDnak+8pMc4/mR2nn1EuSBRmV1g/cadCuxozCH0/5P79T8 FA+5gwa5E0zzj8P2AcBf4H X-Google-Smtp-Source: AGHT+IEl81GJAU0c9UCC/t2LPc1dUvj5BG2sFukU9mj1KVy+ze17HlobD38JdodZpYY1CzenY7GQMD2ntMPZB8iF4cs= X-Received: by 2002:a05:6102:f10:b0:4c3:858:f07c with SMTP id ada2fe7eead31-4da7fb1c567mr2323460137.14.1745933072102; Tue, 29 Apr 2025 06:24:32 -0700 (PDT) MIME-Version: 1.0 References: <20250427084843.39670-1-post@frankplowman.com> In-Reply-To: From: Nuo Mi Date: Tue, 29 Apr 2025 21:24:22 +0800 X-Gm-Features: ATxdqUGXguUjsSQuNvezb7BRfM-jI6APab11C0jCM1k3iEj4HDFCXBrQTF_Q_38 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v2] lavc/vvc: Detect subpic overlaps at CTU level 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: SGkgRnJhbmssClRoYW5rIHlvdSBmb3IgdGhlIGRldGFpbC4KCk9uIE1vbiwgQXByIDI4LCAyMDI1 IGF0IDEwOjM14oCvUE0gRnJhbmsgUGxvd21hbiA8cG9zdEBmcmFua3Bsb3dtYW4uY29tPgp3cm90 ZToKCj4gT24gMjgvMDQvMjAyNSAxNDozMywgTnVvIE1pIHdyb3RlOgo+ID4gSGkgRnJhbmssCj4g PiBUaGFuayB5b3UgZm9yIHRoZSB2Mi4KPiA+IENvdWxkIHdlIHJlbW92ZSBhbGwgYXNzZXJ0cz8K PiA+IEFzc2VydHMgY2FuIGNhdXNlIHRoZSBhcHBsaWNhdGlvbiB0byBjcmFzaCBhdCBydW50aW1l Lgo+Cj4gSGksCj4KPiBJIHRoaW5rIGF2X2Fzc2VydDJzIGFyZSB0aGUgcmlnaHQgdGhpbmcgdG8g dXNlIGhlcmUuICBJbiBjYXNlIGl0IHdhcyBub3QKPiBjbGVhciwgdGhlc2UgYXNzZXJ0cyBzaG91 bGQgbmV2ZXIgYmUgdHJpZ2dlcmVkIGJ5IGFueSBiaXRzdHJlYW0gKGxlZ2FsCj4gb3IgaWxsZWdh bCkuICBUaGUgYWx0ZXJuYXRpdmVzLCBhcyBJIHNlZSBpdCwgYXJlIGJvdGggbGVzcyBmYXZvdXJh YmxlOgo+Cj4gKiBEb24ndCBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIGF0IGFsbC4gIElmIHRoZSBh c3N1bXB0aW9uIGFib3ZlIHRoYXQKPiBwcHNfYWRkX2N0dXMgc2hvdWxkbid0IGZhaWwgaW4gdGhl c2UgY2FzZXMgaXMgaW5jb3JyZWN0LCB0aGVuIGFsbCBvZiBhCj4gc3VkZGVuIHRoZXJlIGlzIGEg cmF0aGVyIHVuc2NydXRhYmxlIGVycm9yIGFyaXNpbmcgZnJvbSBzdWJ0cmFjdGluZyBhCj4gdmFs dWUgZnJvbSBvZmYsIHdoaWNoIG1pZ2h0IGJlIHJhdGhlciBkaWZmaWN1bHQgdG8gZGVidWcuICBB biBhc3NlcnRpb24KPiBpcyBiZXR0ZXIgYmVjYXVzZSBpdCBtYWtlcyB0aGUgaXNzdWUgb2J2aW91 cyBieSBjcmFzaGluZywgYW5kCj4gaW1tZWRpYXRlbHkgcG9pbnRzIHRvIHRoZSBsb2NhdGlvbiBp biB0aGUgY29kZSB3aGljaCBpcyBwcm9ibGVtYXRpYy4KPgpGRm1wZWcgd2lsbCBydW4gb24gbXVs dGlwbGUgY29tcHV0ZXJzLCBzbyBkZXRlY3RpbmcgYW5kIHJldHVybmluZyBhbiBlcnJvcgppcyBi ZXR0ZXIgdGhhbiBjcmFzaGluZyB0aGUgcHJvZ3JhbSDigJQgZXZlbiBpZiBpdCdzIGEgcmFyZSBv Y2N1cnJlbmNlLgoKPgo+ICogQWRkIGEgcnVudGltZSBjaGVjayBmb3IgdGhlc2UgY2FzZXMuICBJ ZiB0aGUgYXNzdW1wdGlvbiBhYm92ZSBpcwo+IGNvcnJlY3QsIHRoZW4gd2UncmUgaW5jdXJyaW5n IG5lZWRsZXNzIHJ1bnRpbWUgcGVuYWx0eSBjaGVja2luZyBmb3IKPiB0aGluZ3Mgd2hpY2ggYXJl IGFsd2F5cyB0cnVlLiAgQW4gYXZfYXNzZXJ0MiBpcyBiZXR0ZXIgYmVjYXVzZSBpdCBpcwo+IG9u bHkgZW5hYmxlZCBpbiBkZWJ1ZyBidWlsZHMsIGFuZCBub3Qgd2hlcmUgcGVyZm9ybWFuY2UgaXMg ZXNzZW50aWFsLgo+ClRoZSBlbnRpcmUgcHJvY2VzcyBoYXBwZW5zIGF0IHRoZSBQUFMgbGV2ZWws IGFuZCB1c3VhbGx5LCB3ZSBvbmx5IGhhdmUgb25lCnBlciBzdHJlYW0sIHNvIHRoZSBwZXJmb3Jt YW5jZSBsb3NzIHNob3VsZCBiZSBtaW5pbWFsLgoKPgo+ID4KPiA+IE9uIFN1biwgQXByIDI3LCAy MDI1IGF0IDQ6NDjigK9QTSBGcmFuayBQbG93bWFuIDxwb3N0QGZyYW5rcGxvd21hbi5jb20+Cj4g d3JvdGU6Cj4gPgo+ID4+IEluIGQ1ZGJjYzAwZDg4OWZiMTc5NDhiMDI1YTQ2OGIwMGRkYmVhOWUw NTgsIGl0IHdhcyBob3BlZCB0aGF0IGRldGVjdGlvbgo+ID4+IG9mIHN1YnBpY3R1cmUgb3Zlcmxh cHMgY291bGQgYmUgcGVyZm9ybWVkIGF0IHRoZSB0aWxlIGxldmVsLCBzbyBhcyB0bwo+ID4+IGF2 b2lkIGludHJvZHVjaW5nIHBlci1DVFUgY2hlY2tzLiBVbmZvcnR1bmF0ZWx5IHNpbmNlIHRoYXQg cGF0Y2gsCj4gPj4gZnV6emluZyBoYXMgaW5kaWNhdGVkIHRoZXJlIGFyZSBzb21lIHN0cnVjdHVy ZXMgaW52b2x2aW5nCj4gPj4gcHBzX3N1YnBpY19vbmVfb3JfbW9yZV90aWxlc19zbGljZSB3aGVy ZSB0aWxlLWxldmVsIGNoZWNraW5nIGlzIG5vdAo+ID4+IHN1ZmZpY2llbnQuICBQZXJmb3JtaW5n IHRoZSBjaGVjayBhdCB0aGUgQ1RVIGxldmVsIHNob3VsZCAodG91Y2ggd29vZCkKPiA+PiBiZSB0 aGUgYmUtYWxsIGFuZCBhbmQtYWxsIG9mIHRoaXMsIGFzIENUVXMgYXJlIHRoZSBsb3dlc3QgY29t bW9uCj4gPj4gZGVub21pbmF0b3Igb2YgdGhlIHBpY3R1cmUgcGFydGl0aW9uaW5nLgo+ID4+Cj4g Pj4gU2lnbmVkLW9mZi1ieTogRnJhbmsgUGxvd21hbiA8cG9zdEBmcmFua3Bsb3dtYW4uY29tPgo+ ID4+IC0tLQo+ID4+IENoYW5nZXMgc2luY2UgdjE6Cj4gPj4gKiBNZXJnZSBwcHNfYWRkX2N0dXMg YW5kIHBwc19hZGRfY3R1c19jaGVjawo+ID4+ICogQ2hhbmdlIGlmL2Vsc2UgZm9yIGVhcmx5LWV4 aXQgd2hlcmUgcG9zc2libGUKPiA+Pgo+ID4+IC0tLQo+ID4+ICBsaWJhdmNvZGVjL3Z2Yy9wcy5j IHwgNzEgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPj4g IDEgZmlsZSBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKPiA+Pgo+ ID4+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Z2Yy9wcy5jIGIvbGliYXZjb2RlYy92dmMvcHMu Ywo+ID4+IGluZGV4IGU4YzMxMmQ4YWMuLmVkOTYyNjhiYWUgMTAwNjQ0Cj4gPj4gLS0tIGEvbGli YXZjb2RlYy92dmMvcHMuYwo+ID4+ICsrKyBiL2xpYmF2Y29kZWMvdnZjL3BzLmMKPiA+PiBAQCAt NDA4LDYgKzQwOCw4IEBAIHN0YXRpYyBpbnQgcHBzX2FkZF9jdHVzKFZWQ1BQUyAqcHBzLCBpbnQg Km9mZiwgY29uc3QKPiA+PiBpbnQgcngsIGNvbnN0IGludCByeSwKPiA+PiAgICAgIGludCBzdGFy dCA9ICpvZmY7Cj4gPj4gICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGg7IHkrKykgewo+ID4+ICAg ICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgdzsgeCsrKSB7Cj4gPj4gKyAgICAgICAgICAgIGlm ICgqb2ZmID49IHBwcy0+Y3RiX2NvdW50KQo+ID4+ICsgICAgICAgICAgICAgICAgcmV0dXJuIEFW RVJST1JfSU5WQUxJRERBVEE7Cj4gPj4gICAgICAgICAgICAgIHBwcy0+Y3RiX2FkZHJfaW5fc2xp Y2VbKm9mZl0gPSBjdHVfcnMocnggKyB4LCByeSArIHksIHBwcyk7Cj4gPj4gICAgICAgICAgICAg ICgqb2ZmKSsrOwo+ID4+ICAgICAgICAgIH0KPiA+PiBAQCAtNDIwLDkgKzQyMiwxMSBAQCBzdGF0 aWMgdm9pZCBwcHNfc2luZ2xlX3NsaWNlX3BpY3R1cmUoVlZDUFBTICpwcHMsCj4gaW50Cj4gPj4g Km9mZikKPiA+PiAgICAgIHBwcy0+bnVtX2N0dXNfaW5fc2xpY2VbMF0gPSAwOwo+ID4+ICAgICAg Zm9yIChpbnQgaiA9IDA7IGogPCBwcHMtPnItPm51bV90aWxlX3Jvd3M7IGorKykgewo+ID4+ICAg ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcHBzLT5yLT5udW1fdGlsZV9jb2x1bW5zOyBpKysp IHsKPiA+PiAtICAgICAgICAgICAgcHBzLT5udW1fY3R1c19pbl9zbGljZVswXSArPSBwcHNfYWRk X2N0dXMocHBzLCBvZmYsCj4gPj4gKyAgICAgICAgICAgIGNvbnN0IGludCByZXQgPSBwcHNfYWRk X2N0dXMocHBzLCBvZmYsCj4gPj4gICAgICAgICAgICAgICAgICBwcHMtPmNvbF9iZFtpXSwgcHBz LT5yb3dfYmRbal0sCj4gPj4gICAgICAgICAgICAgICAgICBwcHMtPnItPmNvbF93aWR0aF92YWxb aV0sIHBwcy0+ci0+cm93X2hlaWdodF92YWxbal0pOwo+ID4+ICsgICAgICAgICAgICBhdl9hc3Nl cnQyKHJldCA+PSAwKTsKPiA+PiArICAgICAgICAgICAgcHBzLT5udW1fY3R1c19pbl9zbGljZVsw XSArPSByZXQ7Cj4gPj4gICAgICAgICAgfQo+ID4+ICAgICAgfQo+ID4+ICB9Cj4gPj4gQEAgLTQ1 MSw1MCArNDU1LDM2IEBAIHN0YXRpYyB2b2lkIHN1YnBpY190aWxlcyhpbnQgKnRpbGVfeCwgaW50 ICp0aWxlX3ksCj4gPj4gaW50ICp0aWxlX3hfZW5kLCBpbnQgKnRpbGVfeV8KPiA+PiAgICAgICAg ICAoKnRpbGVfeV9lbmQpKys7Cj4gPj4gIH0KPiA+Pgo+ID4+IC1zdGF0aWMgYm9vbCBtYXJrX3Rp bGVfYXNfdXNlZChib29sICp0aWxlX2luX3N1YnBpYywgY29uc3QgaW50IHR4LCBjb25zdAo+ID4+ IGludCB0eSwgY29uc3QgaW50IHRpbGVfY29sdW1ucykKPiA+PiAtewo+ID4+IC0gICAgY29uc3Qg c2l6ZV90IHRpbGVfaWR4ID0gdHkgKiB0aWxlX2NvbHVtbnMgKyB0eDsKPiA+PiAtICAgIGlmICh0 aWxlX2luX3N1YnBpY1t0aWxlX2lkeF0pIHsKPiA+PiAtICAgICAgICAvKiB0aGUgdGlsZSBpcyBj b3ZlcmVkIGJ5IG90aGVyIHN1YnBpY3R1cmVzICovCj4gPj4gLSAgICAgICAgcmV0dXJuIGZhbHNl Owo+ID4+IC0gICAgfQo+ID4+IC0gICAgdGlsZV9pbl9zdWJwaWNbdGlsZV9pZHhdID0gdHJ1ZTsK PiA+PiAtICAgIHJldHVybiB0cnVlOwo+ID4+IC19Cj4gPj4gLQo+ID4+IC1zdGF0aWMgaW50IHBw c19zdWJwaWNfbGVzc190aGFuX29uZV90aWxlX3NsaWNlKFZWQ1BQUyAqcHBzLCBjb25zdAo+IFZW Q1NQUwo+ID4+ICpzcHMsIGNvbnN0IGludCBpLCBjb25zdCBpbnQgdHgsIGNvbnN0IGludCB0eSwg aW50ICpvZmYsIGJvb2wKPiA+PiAqdGlsZV9pbl9zdWJwaWMpCj4gPj4gK3N0YXRpYyBpbnQgcHBz X3N1YnBpY19sZXNzX3RoYW5fb25lX3RpbGVfc2xpY2UoVlZDUFBTICpwcHMsIGNvbnN0Cj4gVlZD U1BTCj4gPj4gKnNwcywgY29uc3QgaW50IGksIGNvbnN0IGludCB0eCwgY29uc3QgaW50IHR5LCBp bnQgKm9mZikKPiA+PiAgewo+ID4+IC0gICAgY29uc3QgaW50IHN1YnBpY19ib3R0b20gPSBzcHMt PnItPnNwc19zdWJwaWNfY3R1X3RvcF9sZWZ0X3lbaV0gKwo+ID4+IHNwcy0+ci0+c3BzX3N1YnBp Y19oZWlnaHRfbWludXMxW2ldOwo+ID4+IC0gICAgY29uc3QgaW50IHRpbGVfYm90dG9tID0gcHBz LT5yb3dfYmRbdHldICsKPiBwcHMtPnItPnJvd19oZWlnaHRfdmFsW3R5XQo+ID4+IC0gMTsKPiA+ PiAtICAgIGNvbnN0IGJvb2wgaXNfZmluYWxfc3VicGljX2luX3RpbGUgPSBzdWJwaWNfYm90dG9t ID09IHRpbGVfYm90dG9tOwo+ID4+IC0KPiA+PiAtICAgIGlmIChpc19maW5hbF9zdWJwaWNfaW5f dGlsZSAmJiAhbWFya190aWxlX2FzX3VzZWQodGlsZV9pbl9zdWJwaWMsCj4gdHgsCj4gPj4gdHks IHBwcy0+ci0+bnVtX3RpbGVfY29sdW1ucykpCj4gPj4gLSAgICAgICAgcmV0dXJuIEFWRVJST1Jf SU5WQUxJRERBVEE7Cj4gPj4gLQo+ID4+IC0gICAgcHBzLT5udW1fY3R1c19pbl9zbGljZVtpXSA9 IHBwc19hZGRfY3R1cyhwcHMsIG9mZiwKPiA+PiArICAgIGNvbnN0IGludCByZXQgPSBwcHNfYWRk X2N0dXMocHBzLCBvZmYsCj4gPj4gICAgICAgICAgc3BzLT5yLT5zcHNfc3VicGljX2N0dV90b3Bf bGVmdF94W2ldLAo+ID4+IHNwcy0+ci0+c3BzX3N1YnBpY19jdHVfdG9wX2xlZnRfeVtpXSwKPiA+ PiAgICAgICAgICBzcHMtPnItPnNwc19zdWJwaWNfd2lkdGhfbWludXMxW2ldICsgMSwKPiA+PiBz cHMtPnItPnNwc19zdWJwaWNfaGVpZ2h0X21pbnVzMVtpXSArIDEpOwo+ID4+ICsgICAgaWYgKHJl dCA8IDApCj4gPj4gKyAgICAgICAgcmV0dXJuIHJldDsKPiA+Pgo+ID4+ICsgICAgcHBzLT5udW1f Y3R1c19pbl9zbGljZVtpXSA9IHJldDsKPiA+PiAgICAgIHJldHVybiAwOwo+ID4+ICB9Cj4gPj4K PiA+PiAgc3RhdGljIGludCBwcHNfc3VicGljX29uZV9vcl9tb3JlX3RpbGVzX3NsaWNlKFZWQ1BQ UyAqcHBzLCBjb25zdCBpbnQKPiA+PiB0aWxlX3gsIGNvbnN0IGludCB0aWxlX3ksIGNvbnN0IGlu dCB4X2VuZCwgY29uc3QgaW50IHlfZW5kLAo+ID4+IC0gICAgY29uc3QgaW50IGksIGludCAqb2Zm LCBib29sICp0aWxlX2luX3N1YnBpYykKPiA+PiArICAgIGNvbnN0IGludCBpLCBpbnQgKm9mZikK PiA+PiAgewo+ID4+ICAgICAgZm9yIChpbnQgdHkgPSB0aWxlX3k7IHR5IDwgeV9lbmQ7IHR5Kysp IHsKPiA+PiAgICAgICAgICBmb3IgKGludCB0eCA9IHRpbGVfeDsgdHggPCB4X2VuZDsgdHgrKykg ewo+ID4+IC0gICAgICAgICAgICBpZiAoIW1hcmtfdGlsZV9hc191c2VkKHRpbGVfaW5fc3VicGlj LCB0eCwgdHksCj4gPj4gcHBzLT5yLT5udW1fdGlsZV9jb2x1bW5zKSkKPiA+PiAtICAgICAgICAg ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ID4+IC0KPiA+PiAtICAgICAgICAg ICAgcHBzLT5udW1fY3R1c19pbl9zbGljZVtpXSArPSBwcHNfYWRkX2N0dXMocHBzLCBvZmYsCj4g Pj4gKyAgICAgICAgICAgIGNvbnN0IGludCByZXQgPSBwcHNfYWRkX2N0dXMocHBzLCBvZmYsCj4g Pj4gICAgICAgICAgICAgICAgICBwcHMtPmNvbF9iZFt0eF0sIHBwcy0+cm93X2JkW3R5XSwKPiA+ PiAgICAgICAgICAgICAgICAgIHBwcy0+ci0+Y29sX3dpZHRoX3ZhbFt0eF0sIHBwcy0+ci0+cm93 X2hlaWdodF92YWxbdHldKTsKPiA+PiArICAgICAgICAgICAgaWYgKHJldCA8IDApCj4gPj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4+ICsKPiA+PiArICAgICAgICAgICAgcHBzLT5u dW1fY3R1c19pbl9zbGljZVtpXSArPSByZXQ7Cj4gPj4gICAgICAgICAgfQo+ID4+ICAgICAgfQo+ ID4+ICAgICAgcmV0dXJuIDA7Cj4gPj4gIH0KPiA+Pgo+ID4+IC1zdGF0aWMgaW50IHBwc19zdWJw aWNfc2xpY2UoVlZDUFBTICpwcHMsIGNvbnN0IFZWQ1NQUyAqc3BzLCBjb25zdCBpbnQKPiBpLAo+ ID4+IGludCAqb2ZmLCBib29sICp0aWxlX2luX3N1YnBpYykKPiA+PiArc3RhdGljIGludCBwcHNf c3VicGljX3NsaWNlKFZWQ1BQUyAqcHBzLCBjb25zdCBWVkNTUFMgKnNwcywgY29uc3QgaW50Cj4g aSwKPiA+PiBpbnQgKm9mZikKPiA+PiAgewo+ID4+ICAgICAgaW50IHR4LCB0eSwgeF9lbmQsIHlf ZW5kOwo+ID4+Cj4gPj4gQEAgLTUwMyw5ICs0OTMsOSBAQCBzdGF0aWMgaW50IHBwc19zdWJwaWNf c2xpY2UoVlZDUFBTICpwcHMsIGNvbnN0Cj4gVlZDU1BTCj4gPj4gKnNwcywgY29uc3QgaW50IGks IGludCAqb2YKPiA+Pgo+ID4+ICAgICAgc3VicGljX3RpbGVzKCZ0eCwgJnR5LCAmeF9lbmQsICZ5 X2VuZCwgc3BzLCBwcHMsIGkpOwo+ID4+ICAgICAgaWYgKHR5ICsgMSA9PSB5X2VuZCAmJiBzcHMt PnItPnNwc19zdWJwaWNfaGVpZ2h0X21pbnVzMVtpXSArIDEgPAo+ID4+IHBwcy0+ci0+cm93X2hl aWdodF92YWxbdHldKQo+ID4+IC0gICAgICAgIHJldHVybiBwcHNfc3VicGljX2xlc3NfdGhhbl9v bmVfdGlsZV9zbGljZShwcHMsIHNwcywgaSwgdHgsIHR5LAo+ID4+IG9mZiwgdGlsZV9pbl9zdWJw aWMpOwo+ID4+ICsgICAgICAgIHJldHVybiBwcHNfc3VicGljX2xlc3NfdGhhbl9vbmVfdGlsZV9z bGljZShwcHMsIHNwcywgaSwgdHgsIHR5LAo+ID4+IG9mZik7Cj4gPj4gICAgICBlbHNlCj4gPj4g LSAgICAgICAgcmV0dXJuIHBwc19zdWJwaWNfb25lX29yX21vcmVfdGlsZXNfc2xpY2UocHBzLCB0 eCwgdHksIHhfZW5kLAo+ID4+IHlfZW5kLCBpLCBvZmYsIHRpbGVfaW5fc3VicGljKTsKPiA+PiAr ICAgICAgICByZXR1cm4gcHBzX3N1YnBpY19vbmVfb3JfbW9yZV90aWxlc19zbGljZShwcHMsIHR4 LCB0eSwgeF9lbmQsCj4gPj4geV9lbmQsIGksIG9mZik7Cj4gPj4gIH0KPiA+Pgo+ID4+ICBzdGF0 aWMgaW50IHBwc19zaW5nbGVfc2xpY2VfcGVyX3N1YnBpYyhWVkNQUFMgKnBwcywgY29uc3QgVlZD U1BTICpzcHMsCj4gPj4gaW50ICpvZmYpCj4gPj4gQEAgLTUxMywxOCArNTAzLDExIEBAIHN0YXRp YyBpbnQgcHBzX3NpbmdsZV9zbGljZV9wZXJfc3VicGljKFZWQ1BQUwo+ICpwcHMsCj4gPj4gY29u c3QgVlZDU1BTICpzcHMsIGludCAqb2ZmKQo+ID4+ICAgICAgaWYgKCFzcHMtPnItPnNwc19zdWJw aWNfaW5mb19wcmVzZW50X2ZsYWcpIHsKPiA+PiAgICAgICAgICBwcHNfc2luZ2xlX3NsaWNlX3Bp Y3R1cmUocHBzLCBvZmYpOwo+ID4+ICAgICAgfSBlbHNlIHsKPiA+PiAtICAgICAgICBib29sIHRp bGVfaW5fc3VicGljW1ZWQ19NQVhfVElMRVNfUEVSX0FVXSA9IHswfTsKPiA+PiAgICAgICAgICBm b3IgKGludCBpID0gMDsgaSA8IHBwcy0+ci0+cHBzX251bV9zbGljZXNfaW5fcGljX21pbnVzMSAr IDE7Cj4gPj4gaSsrKSB7Cj4gPj4gLSAgICAgICAgICAgIGNvbnN0IGludCByZXQgPSBwcHNfc3Vi cGljX3NsaWNlKHBwcywgc3BzLCBpLCBvZmYsCj4gPj4gdGlsZV9pbl9zdWJwaWMpOwo+ID4+ICsg ICAgICAgICAgICBjb25zdCBpbnQgcmV0ID0gcHBzX3N1YnBpY19zbGljZShwcHMsIHNwcywgaSwg b2ZmKTsKPiA+PiAgICAgICAgICAgICAgaWYgKHJldCA8IDApCj4gPj4gICAgICAgICAgICAgICAg ICByZXR1cm4gcmV0Owo+ID4+ICAgICAgICAgIH0KPiA+PiAtCj4gPj4gLSAgICAgICAgLy8gV2Ug b25seSB1c2UgdGlsZV9pbl9zdWJwaWMgdG8gY2hlY2sgdGhhdCB0aGUgc3VicGljdHVyZXMKPiBk b24ndAo+ID4+IG92ZXJsYXAKPiA+PiAtICAgICAgICAvLyBoZXJlOyB3ZSBkb24ndCB1c2UgdGls ZV9pbl9zdWJwaWMgdG8gY2hlY2sgdGhhdCB0aGUKPiA+PiBzdWJwaWN0dXJlcyBjb3Zlcgo+ID4+ IC0gICAgICAgIC8vIGV2ZXJ5IHRpbGUuICBJdCBpcyBwb3NzaWJsZSB0byBhdm9pZCBkb2luZyB0 aGlzIHdvcmsgaGVyZQo+ID4+IGJlY2F1c2UgdGhlCj4gPj4gLSAgICAgICAgLy8gY292ZXJpbmcg cHJvcGVydHkgb2Ygc3VicGljdHVyZXMgaXMgYWxyZWFkeSBndWFyYW50ZWVkIGJ5Cj4gdGhlCj4g Pj4gbWVjaGFuaXNtcwo+ID4+IC0gICAgICAgIC8vIHdoaWNoIGNoZWNrIGV2ZXJ5IENUVSBiZWxv bmdzIHRvIGEgc2xpY2UuCj4gPj4gICAgICB9Cj4gPj4gICAgICByZXR1cm4gMDsKPiA+PiAgfQo+ ID4+IEBAIC01MzgsOSArNTIxLDEyIEBAIHN0YXRpYyBpbnQgcHBzX29uZV90aWxlX3NsaWNlcyhW VkNQUFMgKnBwcywgY29uc3QKPiBpbnQKPiA+PiB0aWxlX2lkeCwgaW50IGksIGludCAqb2ZmKQo+ ID4+ICAgICAgY3R1X3h5KCZyeCwgJnJ5LCB0aWxlX3gsIHRpbGVfeSwgcHBzKTsKPiA+PiAgICAg IGN0dV95X2VuZCA9IHJ5ICsgci0+cm93X2hlaWdodF92YWxbdGlsZV95XTsKPiA+PiAgICAgIHdo aWxlIChyeSA8IGN0dV95X2VuZCkgewo+ID4+ICsgICAgICAgIGludCByZXQ7Cj4gPj4gICAgICAg ICAgcHBzLT5zbGljZV9zdGFydF9vZmZzZXRbaV0gPSAqb2ZmOwo+ID4+IC0gICAgICAgIHBwcy0+ bnVtX2N0dXNfaW5fc2xpY2VbaV0gPSBwcHNfYWRkX2N0dXMocHBzLCBvZmYsIHJ4LCByeSwKPiA+ PiArICAgICAgICByZXQgPSBwcHNfYWRkX2N0dXMocHBzLCBvZmYsIHJ4LCByeSwKPiA+PiAgICAg ICAgICAgICAgci0+Y29sX3dpZHRoX3ZhbFt0aWxlX3hdLCByLT5zbGljZV9oZWlnaHRfaW5fY3R1 c1tpXSk7Cj4gPj4gKyAgICAgICAgYXZfYXNzZXJ0MihyZXQgPj0gMCk7Cj4gPj4gKyAgICAgICAg cHBzLT5udW1fY3R1c19pbl9zbGljZVtpXSA9IHJldDsKPiA+PiAgICAgICAgICByeSArPSByLT5z bGljZV9oZWlnaHRfaW5fY3R1c1tpKytdOwo+ID4+ICAgICAgfQo+ID4+ICAgICAgaS0tOwo+ID4+ IEBAIC01NTcsMTMgKzU0MywxNiBAQCBzdGF0aWMgaW50IHBwc19tdWx0aV90aWxlc19zbGljZShW VkNQUFMgKnBwcywKPiBjb25zdAo+ID4+IGludCB0aWxlX2lkeCwgY29uc3QgaW50IGksIGkKPiA+ PiAgICAgIHBwcy0+bnVtX2N0dXNfaW5fc2xpY2VbaV0gPSAwOwo+ID4+ICAgICAgZm9yIChpbnQg dHkgPSB0aWxlX3k7IHR5IDw9IHRpbGVfeSArCj4gPj4gci0+cHBzX3NsaWNlX2hlaWdodF9pbl90 aWxlc19taW51czFbaV07IHR5KyspIHsKPiA+PiAgICAgICAgICBmb3IgKGludCB0eCA9IHRpbGVf eDsgdHggPD0gdGlsZV94ICsKPiA+PiByLT5wcHNfc2xpY2Vfd2lkdGhfaW5fdGlsZXNfbWludXMx W2ldOyB0eCsrKSB7Cj4gPj4gKyAgICAgICAgICAgIGludCByZXQ7Cj4gPj4gICAgICAgICAgICAg IGNvbnN0IGludCBpZHggPSB0eSAqIHItPm51bV90aWxlX2NvbHVtbnMgKyB0eDsKPiA+PiAgICAg ICAgICAgICAgaWYgKHRpbGVfaW5fc2xpY2VbaWR4XSkKPiA+PiAgICAgICAgICAgICAgICAgIHJl dHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ID4+ICAgICAgICAgICAgICB0aWxlX2luX3NsaWNl W2lkeF0gPSB0cnVlOwo+ID4+ICAgICAgICAgICAgICBjdHVfeHkoJnJ4LCAmcnksIHR4LCB0eSwg cHBzKTsKPiA+PiAtICAgICAgICAgICAgcHBzLT5udW1fY3R1c19pbl9zbGljZVtpXSArPSBwcHNf YWRkX2N0dXMocHBzLCBvZmYsIHJ4LCByeSwKPiA+PiArICAgICAgICAgICAgcmV0ID0gcHBzX2Fk ZF9jdHVzKHBwcywgb2ZmLCByeCwgcnksCj4gPj4gICAgICAgICAgICAgICAgICByLT5jb2xfd2lk dGhfdmFsW3R4XSwgci0+cm93X2hlaWdodF92YWxbdHldKTsKPiA+PiArICAgICAgICAgICAgYXZf YXNzZXJ0MihyZXQgPj0gMCk7Cj4gPj4gKyAgICAgICAgICAgIHBwcy0+bnVtX2N0dXNfaW5fc2xp Y2VbaV0gKz0gcmV0Owo+ID4+ICAgICAgICAgIH0KPiA+PiAgICAgIH0KPiA+Pgo+ID4+IEBAIC02 MTAsOCArNTk5LDEwIEBAIHN0YXRpYyB2b2lkIHBwc19ub19yZWN0X3NsaWNlKFZWQ1BQUyogcHBz KQo+ID4+Cj4gPj4gICAgICBmb3IgKGludCB0aWxlX3kgPSAwOyB0aWxlX3kgPCByLT5udW1fdGls ZV9yb3dzOyB0aWxlX3krKykgewo+ID4+ICAgICAgICAgIGZvciAoaW50IHRpbGVfeCA9IDA7IHRp bGVfeCA8IHItPm51bV90aWxlX2NvbHVtbnM7IHRpbGVfeCsrKSB7Cj4gPj4gKyAgICAgICAgICAg IGludCByZXQ7Cj4gPj4gICAgICAgICAgICAgIGN0dV94eSgmcngsICZyeSwgdGlsZV94LCB0aWxl X3ksIHBwcyk7Cj4gPj4gLSAgICAgICAgICAgIHBwc19hZGRfY3R1cyhwcHMsICZvZmYsIHJ4LCBy eSwgci0+Y29sX3dpZHRoX3ZhbFt0aWxlX3hdLAo+ID4+IHItPnJvd19oZWlnaHRfdmFsW3RpbGVf eV0pOwo+ID4+ICsgICAgICAgICAgICByZXQgPSBwcHNfYWRkX2N0dXMocHBzLCAmb2ZmLCByeCwg cnksCj4gPj4gci0+Y29sX3dpZHRoX3ZhbFt0aWxlX3hdLCByLT5yb3dfaGVpZ2h0X3ZhbFt0aWxl X3ldKTsKPiA+PiArICAgICAgICAgICAgYXZfYXNzZXJ0MihyZXQgPj0gMCk7Cj4gPj4gICAgICAg ICAgfQo+ID4+ICAgICAgfQo+ID4+ICB9Cj4gPj4gLS0KPiA+PiAyLjQ3LjAKPiA+Pgo+ID4+Cj4g PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gZmZt cGVnLWRldmVsIG1haWxpbmcgbGlzdAo+ID4gZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKPiA+IGh0 dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+ID4KPiA+IFRv IHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+ID4gZmZtcGVnLWRldmVs LXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGZmbXBlZy1kZXZlbCBt YWlsaW5nIGxpc3QKPiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+IGh0dHBzOi8vZmZtcGVnLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+Cj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0 IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4gZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3 aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZl bEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1k ZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1k ZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==