From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 5986A4803C for ; Mon, 19 May 2025 14:40:46 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 59EC168CCC7; Mon, 19 May 2025 17:40:43 +0300 (EEST) Received: from mail-yb1-f179.google.com (mail-yb1-f179.google.com [209.85.219.179]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 9789068CA06 for ; Mon, 19 May 2025 17:40:36 +0300 (EEST) Received: by mail-yb1-f179.google.com with SMTP id 3f1490d57ef6-e7b943bcf0cso1419664276.3 for ; Mon, 19 May 2025 07:40:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747665635; x=1748270435; darn=ffmpeg.org; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=vRNEhlbMqyz2jK0aH2E33OPzuV/tqkZOcVyrbOuqGic=; b=AQXfEYKOyGIm/sZnQouEySDv1B/M3zKyAxMyCb9o8pccuDppACARhLeWr0EH/QsFGm i1HlXPbbqgXkOdSXJoQx6RhmvvQhAuFHsf5Gnq7EaUYSFNvVH6hTqaqEFExCeLRCdKuE 1VBszaKRTaiGQGaB3PXSJ/TF2PU0XeMtvW+8PGvGiysNfkK3SPtI44dva0dL6avyu7V2 UEvc7mFaaA4O42iCoNBsu+5RHkuK6YNCeviwpgzv+mF3yI1ya8bxA9rQwNkWdMd6U2uX mJwZe/CfDazXOSttbxQL8tTVCo4FmNlrx+dI+EqVXR9HMueODKMmU2uLqs8pCOeC7S7u CWVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747665635; x=1748270435; h=content-transfer-encoding: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=vRNEhlbMqyz2jK0aH2E33OPzuV/tqkZOcVyrbOuqGic=; b=ft4lwzKbsnpQFWBt77bUu/8q3eqS3pXbtMey//5sAmBAVxM4oLE7MQYuIvQqkd07On C6H3jqzGDwO//cJh6M0fLaaeqTtJCWD80v8DHOUrKzXk3YxDe7BcpGMczjzWLayBEWT3 epLkmpJ5dSSJAX09FzLU0Wdwcpo0KiH1NrLyieJ+6/TqnoNXoT5f69OCJ3/E9xs45Gy5 9DEsU9OjoUQ7nch/B6Kdj1vsHcrJ75EI1YRIHP8vYcOZGCJdbhi3kx43j/F9eQGrwND5 c3/1EOckh78qhhVY5hhc0ggMCfHSkd6hocRc7/DGrHQUhJn8IDhgiR2vYztjKaDhNCIq NlMw== X-Gm-Message-State: AOJu0Yw83NIWu4QMNCJLFnz02z1Xk63c1l5BErFHSFz8nOZi5kkMWclE 4deU2pFO2i2KeHmFVpBLSPglG1bII/b94DsL2dlFnKtFunc4rXtxYv6kZhaWk7AxgyCZ2YHrhKd U6r1kOqvFs/q7wSQDKnoD89gCSVOGkTzAM2nyKfg= X-Gm-Gg: ASbGncu3izXXOPGFL0zvhwOWqIwm4a4swRX9zuoCbuBfNVczIqUT5cUez9gwyDgUw6p 3EXUr4UkXl/rPJShhuZkvLNF4+ENvpQKUJfSlf8NXKk0gIBJu/bPtwooI0SIgULq6tQARtPL1ay 6pehtoL2Mh3LbHn1Uep6wet3IwzGx2ieFbfQ== X-Google-Smtp-Source: AGHT+IEPTYHgL30pFAju/2bEEgFyrVoukOq3GaLrBvq98OYEt/5xG8wVKaEKPDo53H0fadbaJ/FPT0nf590AbWoqLTA= X-Received: by 2002:a05:6902:1ac2:b0:e78:f9a1:6c77 with SMTP id 3f1490d57ef6-e7b6d3f8dc8mr14522032276.11.1747665634543; Mon, 19 May 2025 07:40:34 -0700 (PDT) MIME-Version: 1.0 References: <20250509234327.71039-1-romain.beauxis@gmail.com> <20250509234327.71039-7-romain.beauxis@gmail.com> <20250513192339.GF29660@pb2> <20250517220748.GC29660@pb2> In-Reply-To: <20250517220748.GC29660@pb2> From: Romain Beauxis Date: Mon, 19 May 2025 09:40:23 -0500 X-Gm-Features: AX0GCFvP38d5N7q8N0EuSKVhTv82fHJfvQSQCZrhLW3itEdaVufjghtbuq8WZ4E Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH v5 6/7] ogg/vorbis: implement header packet skip in chained ogg bitstreams. 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: TGUgc2FtLiAxNyBtYWkgMjAyNSDDoCAxNzowNywgTWljaGFlbCBOaWVkZXJtYXllcgo8bWljaGFl bEBuaWVkZXJtYXllci5jYz4gYSDDqWNyaXQgOgo+Cj4gT24gU2F0LCBNYXkgMTcsIDIwMjUgYXQg MDE6MTA6MjZQTSAtMDUwMCwgUm9tYWluIEJlYXV4aXMgd3JvdGU6Cj4gPiBMZSBtYXIuIDEzIG1h aSAyMDI1IMOgIDE0OjIzLCBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVy LmNjPiBhCj4gPiDDqWNyaXQgOgo+ID4gPgo+ID4gPiBPbiBGcmksIE1heSAwOSwgMjAyNSBhdCAw Njo0MzoyNlBNIC0wNTAwLCBSb21haW4gQmVhdXhpcyB3cm90ZToKPiA+ID4gPiAtLS0KPiA+ID4g PiAgbGliYXZjb2RlYy92b3JiaXNkZWMuYyAgICAgICAgICAgICAgICAgICAgIHwgIDM3ICstLS0t Cj4gPiA+ID4gIGxpYmF2Zm9ybWF0L29nZ3BhcnNldm9yYmlzLmMgICAgICAgICAgICAgICB8IDE3 NCArKysrKysrKysrKysrLS0tLS0tLS0KPiA+ID4gPiAgdGVzdHMvcmVmL2ZhdGUvb2dnLXZvcmJp cy1jaGFpbmVkLW1ldGEudHh0IHwgICAzIC0KPiA+ID4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxMTcg aW5zZXJ0aW9ucygrKSwgOTcgZGVsZXRpb25zKC0pCj4gPiA+ID4KPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvbGliYXZjb2RlYy92b3JiaXNkZWMuYyBiL2xpYmF2Y29kZWMvdm9yYmlzZGVjLmMKPiA+ID4g PiBpbmRleCBhNzc4ZGM2YjU4Li5mMDY5YWM2YWIzIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2xpYmF2 Y29kZWMvdm9yYmlzZGVjLmMKPiA+ID4gPiArKysgYi9saWJhdmNvZGVjL3ZvcmJpc2RlYy5jCj4g PiA+ID4gQEAgLTE3NzYsMzkgKzE3NzYsMTcgQEAgc3RhdGljIGludCB2b3JiaXNfZGVjb2RlX2Zy YW1lKEFWQ29kZWNDb250ZXh0Cj4gPiAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAo+ID4gPiA+ICAg ICAgR2V0Qml0Q29udGV4dCAqZ2IgPSAmdmMtPmdiOwo+ID4gPiA+ICAgICAgZmxvYXQgKmNoYW5u ZWxfcHRyc1syNTVdOwo+ID4gPiA+ICAgICAgaW50IGksIGxlbiwgcmV0Owo+ID4gPiA+ICsgICAg Y29uc3QgaW50OF90ICpuZXdfZXh0cmFkYXRhOwo+ID4gPiA+ICsgICAgc2l6ZV90IG5ld19leHRy YWRhdGFfc2l6ZTsKPiA+ID4gPgo+ID4gPiA+ICAgICAgZmZfZGxvZyhOVUxMLCAicGFja2V0IGxl bmd0aCAlZCBcbiIsIGJ1Zl9zaXplKTsKPiA+ID4gPgo+ID4gPiA+IC0gICAgaWYgKCpidWYgPT0g MSAmJiBidWZfc2l6ZSA+IDcpIHsKPiA+ID4gPiAtICAgICAgICBpZiAoKHJldCA9IGluaXRfZ2V0 X2JpdHM4KGdiLCBidWYgKyAxLCBidWZfc2l6ZSAtIDEpKSA8IDApCj4gPiA+ID4gLSAgICAgICAg ICAgIHJldHVybiByZXQ7Cj4gPiA+ID4gLQo+ID4gPiA+IC0gICAgICAgIHZvcmJpc19mcmVlKHZj KTsKPiA+ID4gPiAtICAgICAgICBpZiAoKHJldCA9IHZvcmJpc19wYXJzZV9pZF9oZHIodmMpKSkg ewo+ID4gPiA+IC0gICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIklkIGhl YWRlciBjb3JydXB0LlxuIik7Cj4gPiA+ID4gLSAgICAgICAgICAgIHZvcmJpc19mcmVlKHZjKTsK PiA+ID4gPiAtICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ID4gPiAtICAgICAgICB9Cj4gPiA+ ID4gLQo+ID4gPiA+IC0gICAgICAgIGF2X2NoYW5uZWxfbGF5b3V0X3VuaW5pdCgmYXZjdHgtPmNo X2xheW91dCk7Cj4gPiA+ID4gLSAgICAgICAgaWYgKHZjLT5hdWRpb19jaGFubmVscyA+IDgpIHsK PiA+ID4gPiAtICAgICAgICAgICAgYXZjdHgtPmNoX2xheW91dC5vcmRlciAgICAgICA9IEFWX0NI QU5ORUxfT1JERVJfVU5TUEVDOwo+ID4gPiA+IC0gICAgICAgICAgICBhdmN0eC0+Y2hfbGF5b3V0 Lm5iX2NoYW5uZWxzID0gdmMtPmF1ZGlvX2NoYW5uZWxzOwo+ID4gPiA+IC0gICAgICAgIH0gZWxz ZSB7Cj4gPiA+ID4gLSAgICAgICAgICAgIGF2X2NoYW5uZWxfbGF5b3V0X2NvcHkoJmF2Y3R4LT5j aF9sYXlvdXQsCj4gPiAmZmZfdm9yYmlzX2NoX2xheW91dHNbdmMtPmF1ZGlvX2NoYW5uZWxzIC0g MV0pOwo+ID4gPiA+IC0gICAgICAgIH0KPiA+ID4gPiAtCj4gPiA+ID4gLSAgICAgICAgYXZjdHgt PnNhbXBsZV9yYXRlID0gdmMtPmF1ZGlvX3NhbXBsZXJhdGU7Cj4gPiA+ID4gLSAgICAgICAgcmV0 dXJuIGJ1Zl9zaXplOwo+ID4gPiA+IC0gICAgfQo+ID4gPiA+IC0KPiA+ID4gPiAtICAgIGlmICgq YnVmID09IDMgJiYgYnVmX3NpemUgPiA3KSB7Cj4gPiA+ID4gLSAgICAgICAgYXZfbG9nKGF2Y3R4 LCBBVl9MT0dfREVCVUcsICJJZ25vcmluZyBjb21tZW50IGhlYWRlclxuIik7Cj4gPiA+ID4gLSAg ICAgICAgcmV0dXJuIGJ1Zl9zaXplOwo+ID4gPiA+IC0gICAgfQo+ID4gPiA+ICsgICAgbmV3X2V4 dHJhZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKGF2cGt0LAo+ID4gQVZfUEtUX0RBVEFf TkVXX0VYVFJBREFUQSwKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmbmV3X2V4dHJhZGF0YV9zaXplKTsKPiA+ID4gPgo+ID4gPiA+IC0gICAgaWYg KCpidWYgPT0gNSAmJiBidWZfc2l6ZSA+IDcgJiYgdmMtPmNoYW5uZWxfcmVzaWR1ZXMgJiYKPiA+ ICF2Yy0+bW9kZXMpIHsKPiA+ID4gPiAtICAgICAgICBpZiAoKHJldCA9IGluaXRfZ2V0X2JpdHM4 KGdiLCBidWYgKyAxLCBidWZfc2l6ZSAtIDEpKSA8IDApCj4gPiA+ID4gKyAgICBpZiAobmV3X2V4 dHJhZGF0YSAmJiAqbmV3X2V4dHJhZGF0YSA9PSA1ICYmIG5ld19leHRyYWRhdGFfc2l6ZSA+IDcK PiA+ICYmCj4gPiA+ID4gKyAgICAgICAgdmMtPmNoYW5uZWxfcmVzaWR1ZXMgJiYgIXZjLT5tb2Rl cykgewo+ID4gPiA+ICsgICAgICAgIGlmICgocmV0ID0gaW5pdF9nZXRfYml0czgoZ2IsIG5ld19l eHRyYWRhdGEgKyAxLAo+ID4gbmV3X2V4dHJhZGF0YV9zaXplIC0gMSkpIDwgMCkKPiA+ID4gPiAg ICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ID4gPgo+ID4gPiA+ICAgICAgICAgIGlmICgocmV0 ID0gdm9yYmlzX3BhcnNlX3NldHVwX2hkcih2YykpKSB7Cj4gPiA+ID4gQEAgLTE4MTYsNyArMTc5 NCw2IEBAIHN0YXRpYyBpbnQgdm9yYmlzX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dAo+ID4g KmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKPiA+ID4gPiAgICAgICAgICAgICAgdm9yYmlzX2ZyZWUo dmMpOwo+ID4gPiA+ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gPiA+ICAgICAgICAgIH0K PiA+ID4gPiAtICAgICAgICByZXR1cm4gYnVmX3NpemU7Cj4gPiA+ID4gICAgICB9Cj4gPiA+ID4K PiA+ID4gPiAgICAgIGlmICghdmMtPmNoYW5uZWxfcmVzaWR1ZXMgfHwgIXZjLT5tb2Rlcykgewo+ ID4gPiA+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vZ2dwYXJzZXZvcmJpcy5jIGIvbGliYXZm b3JtYXQvb2dncGFyc2V2b3JiaXMuYwo+ID4gPiA+IGluZGV4IDlmNTBhYjlmZmMuLjQ1MjcyOGI1 NGQgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvbGliYXZmb3JtYXQvb2dncGFyc2V2b3JiaXMuYwo+ID4g PiA+ICsrKyBiL2xpYmF2Zm9ybWF0L29nZ3BhcnNldm9yYmlzLmMKPiA+ID4gPiBAQCAtMjkzLDYg KzI5Myw2MiBAQCBzdGF0aWMgaW50IHZvcmJpc191cGRhdGVfbWV0YWRhdGEoQVZGb3JtYXRDb250 ZXh0Cj4gPiAqcywgaW50IGlkeCkKPiA+ID4gPiAgICAgIHJldHVybiByZXQ7Cj4gPiA+ID4gIH0K PiA+ID4gPgo+ID4gPiA+ICtzdGF0aWMgaW50IHZvcmJpc19wYXJzZV9oZWFkZXIoQVZGb3JtYXRD b250ZXh0ICpzLCBBVlN0cmVhbSAqc3QsCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB1aW50OF90ICpwLCB1bnNpZ25lZCBpbnQgcHNpemUpCj4gPiA+ID4gK3sK PiA+ID4gPiArICAgIHVuc2lnbmVkIGJsb2Nrc2l6ZSwgYnMwLCBiczE7Cj4gPiA+ID4gKyAgICBp bnQgc3JhdGU7Cj4gPiA+ID4gKyAgICBpbnQgY2hhbm5lbHM7Cj4gPiA+ID4gKwo+ID4gPiA+ICsg ICAgaWYgKHBzaXplICE9IDMwKQo+ID4gPiA+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFM SUREQVRBOwo+ID4gPiA+ICsKPiA+ID4gPiArICAgIHAgKz0gNzsgLyogc2tpcCAiXDAwMXZvcmJp cyIgdGFnICovCj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgaWYgKGJ5dGVzdHJlYW1fZ2V0X2xlMzIo JnApICE9IDApIC8qIHZvcmJpc192ZXJzaW9uICovCj4gPiA+ID4gKyAgICAgICAgcmV0dXJuIEFW RVJST1JfSU5WQUxJRERBVEE7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgY2hhbm5lbHMgPSBieXRl c3RyZWFtX2dldF9ieXRlKCZwKTsKPiA+ID4gPiArICAgIGlmIChzdC0+Y29kZWNwYXItPmNoX2xh eW91dC5uYl9jaGFubmVscyAmJgo+ID4gPiA+ICsgICAgICAgIGNoYW5uZWxzICE9IHN0LT5jb2Rl Y3Bhci0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzKSB7Cj4gPiA+ID4gKyAgICAgICAgYXZfbG9nKHMs IEFWX0xPR19FUlJPUiwgIkNoYW5uZWwgY2hhbmdlIGlzIG5vdCBzdXBwb3J0ZWRcbiIpOwo+ID4g PiA+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX1BBVENIV0VMQ09NRTsKPiA+ID4gPiArICAgIH0K PiA+ID4gPiArICAgIHN0LT5jb2RlY3Bhci0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzID0gY2hhbm5l bHM7Cj4gPiA+ID4gKyAgICBzcmF0ZSAgICAgICAgICAgICAgID0gYnl0ZXN0cmVhbV9nZXRfbGUz MigmcCk7Cj4gPiA+ID4gKyAgICBwICs9IDQ7IC8vIHNraXAgbWF4aW11bSBiaXRyYXRlCj4gPiA+ ID4gKyAgICBzdC0+Y29kZWNwYXItPmJpdF9yYXRlID0gYnl0ZXN0cmVhbV9nZXRfbGUzMigmcCk7 IC8vIG5vbWluYWwKPiA+IGJpdHJhdGUKPiA+ID4gPiArICAgIHAgKz0gNDsgLy8gc2tpcCBtaW5p bXVtIGJpdHJhdGUKPiA+ID4gPiArCj4gPiA+ID4gKyAgICBibG9ja3NpemUgPSBieXRlc3RyZWFt X2dldF9ieXRlKCZwKTsKPiA+ID4gPiArICAgIGJzMCAgICAgICA9IGJsb2Nrc2l6ZSAmIDE1Owo+ ID4gPiA+ICsgICAgYnMxICAgICAgID0gYmxvY2tzaXplID4+IDQ7Cj4gPiA+ID4gKwo+ID4gPiA+ ICsgICAgaWYgKGJzMCA+IGJzMSkKPiA+ID4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZB TElEREFUQTsKPiA+ID4gPiArICAgIGlmIChiczAgPCA2IHx8IGJzMSA+IDEzKQo+ID4gPiA+ICsg ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ID4gPiA+ICsKPiA+ID4gPiArICAg IGlmIChieXRlc3RyZWFtX2dldF9ieXRlKCZwKSAhPSAxKSAvKiBmcmFtaW5nX2ZsYWcgKi8KPiA+ ID4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiA+ID4gPiArCj4gPiA+ ID4gKyAgICBzdC0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPSBBVk1FRElBX1RZUEVfQVVESU87Cj4g PiA+ID4gKyAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkICAgPSBBVl9DT0RFQ19JRF9WT1JCSVM7 Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgaWYgKHNyYXRlID4gMCkgewo+ID4gPiA+ICsgICAgICAg IGlmIChzdC0+Y29kZWNwYXItPnNhbXBsZV9yYXRlICYmCj4gPiA+ID4gKyAgICAgICAgICAgIHNy YXRlICE9IHN0LT5jb2RlY3Bhci0+c2FtcGxlX3JhdGUpIHsKPiA+ID4gPiArICAgICAgICAgICAg YXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIlNhbXBsZSByYXRlIGNoYW5nZSBpcyBub3QKPiA+IHN1 cHBvcnRlZFxuIik7Cj4gPiA+ID4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX1BBVENIV0VM Q09NRTsKPiA+ID4gPiArICAgICAgICB9Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgIHN0LT5j b2RlY3Bhci0+c2FtcGxlX3JhdGUgPSBzcmF0ZTsKPiA+ID4gPiArICAgICAgICBhdnByaXZfc2V0 X3B0c19pbmZvKHN0LCA2NCwgMSwgc3JhdGUpOwo+ID4gPiA+ICsgICAgfQo+ID4gPiA+ICsKPiA+ ID4gPiArICAgIHJldHVybiAxOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICBzdGF0aWMg aW50IHZvcmJpc19oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzLCBpbnQgaWR4KQo+ID4gPiA+ICB7 Cj4gPiA+ID4gICAgICBzdHJ1Y3Qgb2dnICpvZ2cgPSBzLT5wcml2X2RhdGE7Cj4gPiA+ID4gQEAg LTMwMCw2ICszNTYsNyBAQCBzdGF0aWMgaW50IHZvcmJpc19oZWFkZXIoQVZGb3JtYXRDb250ZXh0 ICpzLCBpbnQKPiA+IGlkeCkKPiA+ID4gPiAgICAgIHN0cnVjdCBvZ2dfc3RyZWFtICpvcyA9IG9n Zy0+c3RyZWFtcyArIGlkeDsKPiA+ID4gPiAgICAgIHN0cnVjdCBvZ2d2b3JiaXNfcHJpdmF0ZSAq cHJpdjsKPiA+ID4gPiAgICAgIGludCBwa3RfdHlwZSA9IG9zLT5idWZbb3MtPnBzdGFydF07Cj4g PiA+ID4gKyAgICBpbnQgcmV0Owo+ID4gPiA+Cj4gPiA+ID4gICAgICBpZiAoIW9zLT5wcml2YXRl KSB7Cj4gPiA+ID4gICAgICAgICAgb3MtPnByaXZhdGUgPSBhdl9tYWxsb2N6KHNpemVvZihzdHJ1 Y3Qgb2dndm9yYmlzX3ByaXZhdGUpKTsKPiA+ID4gPiBAQCAtMzI3LDU2ICszODQsMTggQEAgc3Rh dGljIGludCB2b3JiaXNfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcywgaW50Cj4gPiBpZHgpCj4g PiA+ID4KPiA+ID4gPiAgICAgIHByaXYtPmxlbltwa3RfdHlwZSA+PiAxXSAgICA9IG9zLT5wc2l6 ZTsKPiA+ID4gPiAgICAgIHByaXYtPnBhY2tldFtwa3RfdHlwZSA+PiAxXSA9IGF2X21lbWR1cChv cy0+YnVmICsgb3MtPnBzdGFydCwKPiA+IG9zLT5wc2l6ZSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICAg ICAgaWYgKCFwcml2LT5wYWNrZXRbcGt0X3R5cGUgPj4gMV0pCj4gPiA+ID4gICAgICAgICAgcmV0 dXJuIEFWRVJST1IoRU5PTUVNKTsKPiA+ID4gPiAtICAgIGlmIChvcy0+YnVmW29zLT5wc3RhcnRd ID09IDEpIHsKPiA+ID4gPiAtICAgICAgICBjb25zdCB1aW50OF90ICpwID0gb3MtPmJ1ZiArIG9z LT5wc3RhcnQgKyA3OyAvKiBza2lwCj4gPiAiXDAwMXZvcmJpcyIgdGFnICovCj4gPiA+ID4gLSAg ICAgICAgdW5zaWduZWQgYmxvY2tzaXplLCBiczAsIGJzMTsKPiA+ID4gPiAtICAgICAgICBpbnQg c3JhdGU7Cj4gPiA+ID4gLSAgICAgICAgaW50IGNoYW5uZWxzOwo+ID4gPiA+IC0KPiA+ID4gPiAt ICAgICAgICBpZiAob3MtPnBzaXplICE9IDMwKQo+ID4gPiA+IC0gICAgICAgICAgICByZXR1cm4g QVZFUlJPUl9JTlZBTElEREFUQTsKPiA+ID4gPiAtCj4gPiA+ID4gLSAgICAgICAgaWYgKGJ5dGVz dHJlYW1fZ2V0X2xlMzIoJnApICE9IDApIC8qIHZvcmJpc192ZXJzaW9uICovCj4gPiA+ID4gLSAg ICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ID4gPiA+IC0KPiA+ID4gPiAt ICAgICAgICBjaGFubmVscyA9IGJ5dGVzdHJlYW1fZ2V0X2J5dGUoJnApOwo+ID4gPiA+IC0gICAg ICAgIGlmIChzdC0+Y29kZWNwYXItPmNoX2xheW91dC5uYl9jaGFubmVscyAmJgo+ID4gPiA+IC0g ICAgICAgICAgICBjaGFubmVscyAhPSBzdC0+Y29kZWNwYXItPmNoX2xheW91dC5uYl9jaGFubmVs cykgewo+ID4gPiA+IC0gICAgICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAiQ2hhbm5l bCBjaGFuZ2UgaXMgbm90Cj4gPiBzdXBwb3J0ZWRcbiIpOwo+ID4gPiA+IC0gICAgICAgICAgICBy ZXR1cm4gQVZFUlJPUl9QQVRDSFdFTENPTUU7Cj4gPiA+ID4gLSAgICAgICAgfQo+ID4gPiA+IC0g ICAgICAgIHN0LT5jb2RlY3Bhci0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzID0gY2hhbm5lbHM7Cj4g PiA+ID4gLSAgICAgICAgc3JhdGUgICAgICAgICAgICAgICA9IGJ5dGVzdHJlYW1fZ2V0X2xlMzIo JnApOwo+ID4gPiA+IC0gICAgICAgIHAgKz0gNDsgLy8gc2tpcCBtYXhpbXVtIGJpdHJhdGUKPiA+ ID4gPiAtICAgICAgICBzdC0+Y29kZWNwYXItPmJpdF9yYXRlID0gYnl0ZXN0cmVhbV9nZXRfbGUz MigmcCk7IC8vIG5vbWluYWwKPiA+IGJpdHJhdGUKPiA+ID4gPiAtICAgICAgICBwICs9IDQ7IC8v IHNraXAgbWluaW11bSBiaXRyYXRlCj4gPiA+ID4gLQo+ID4gPiA+IC0gICAgICAgIGJsb2Nrc2l6 ZSA9IGJ5dGVzdHJlYW1fZ2V0X2J5dGUoJnApOwo+ID4gPiA+IC0gICAgICAgIGJzMCAgICAgICA9 IGJsb2Nrc2l6ZSAmIDE1Owo+ID4gPiA+IC0gICAgICAgIGJzMSAgICAgICA9IGJsb2Nrc2l6ZSA+ PiA0Owo+ID4gPiA+IC0KPiA+ID4gPiAtICAgICAgICBpZiAoYnMwID4gYnMxKQo+ID4gPiA+IC0g ICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiA+ID4gPiAtICAgICAgICBp ZiAoYnMwIDwgNiB8fCBiczEgPiAxMykKPiA+ID4gPiAtICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1JfSU5WQUxJRERBVEE7Cj4gPiA+ID4gLQo+ID4gPiA+IC0gICAgICAgIGlmIChieXRlc3RyZWFt X2dldF9ieXRlKCZwKSAhPSAxKSAvKiBmcmFtaW5nX2ZsYWcgKi8KPiA+ID4gPiAtICAgICAgICAg ICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gPiA+ID4gLQo+ID4gPiA+IC0gICAgICAg IHN0LT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9IEFWTUVESUFfVFlQRV9BVURJTzsKPiA+ID4gPiAt ICAgICAgICBzdC0+Y29kZWNwYXItPmNvZGVjX2lkICAgPSBBVl9DT0RFQ19JRF9WT1JCSVM7Cj4g PiA+ID4gLQo+ID4gPiA+IC0gICAgICAgIGlmIChzcmF0ZSA+IDApIHsKPiA+ID4gPiAtICAgICAg ICAgICAgc3QtPmNvZGVjcGFyLT5zYW1wbGVfcmF0ZSA9IHNyYXRlOwo+ID4gPiA+IC0gICAgICAg ICAgICBhdnByaXZfc2V0X3B0c19pbmZvKHN0LCA2NCwgMSwgc3JhdGUpOwo+ID4gPiA+IC0gICAg ICAgIH0KPiA+ID4gPiAtICAgIH0gZWxzZSBpZiAob3MtPmJ1Zltvcy0+cHN0YXJ0XSA9PSAzKSB7 Cj4gPiA+Cj4gPiA+Cj4gPiA+IG1vdmluZyBjb2RlIHNob3VsZCBiZSBpbiBhIHNlcGVyYXRlIHBh dGNoIHNvIGFueSBjaGFuZ2VzIGNhbiBiZSBjbGVhcmx5Cj4gPiA+IHNlZW4gaW4gdGhlIGRpZmYg d2hpY2ggZG9lcyBub3QgbW92ZSB0aGUgY29kZS4KPiA+ID4KPiA+ID4gVGhlIG91dHB1dCBmcm9t Ogo+ID4gPiBsaWJhdmZvcm1hdC90ZXN0cy9zZWVrICRUSUNLRVRTLzI3MzkvbGF2Zl9vZ21fc2Vl a2luZ19ib3JrZWQub2dtCj4gPiA+Cj4gPiA+IGNoYW5lZ3MgYnk6Cj4gPiA+IEBAIC0yNzMsNyAr MjczLDcgQEAKPiA+ID4gIHJldDogMCAgICAgICAgIHN0OiAyIGZsYWdzOjAgIHRzOiAwLjM2NTAw MAo+ID4gPiAgcmV0OiAwICAgICAgICAgc3Q6IDIgZmxhZ3M6MSBkdHM6IDAuMzMyMDAwIHB0czog MC4zMzIwMDAgcG9zOiAgMTg5NTkKPiA+IHNpemU6ICAgMjcxCj4gPiA+ICByZXQ6IDAgICAgICAg ICBzdDogMiBmbGFnczoxICB0czotMC43NDA4MzMKPiA+ID4gLXJldDogMCAgICAgICAgIHN0OiAy IGZsYWdzOjEgZHRzOiAwLjAwMDAwMCBwdHM6IDAuMDAwMDAwIHBvczogICA3NjkxCj4gPiBzaXpl OiAgMjUxOQo+ID4gPiArcmV0OiAwICAgICAgICAgc3Q6IDIgZmxhZ3M6MSBkdHM6LTAuMDAyNjY3 IHB0czotMC4wMDI2NjcgcG9zOiAgMTQ1ODAKPiA+IHNpemU6ICAgIDM5Cj4gPiA+ICByZXQ6IDAg ICAgICAgICBzdDogMyBmbGFnczowICB0czogMi4xNTMwMDAKPiA+ID4gIHJldDogMCAgICAgICAg IHN0OiAzIGZsYWdzOjEgZHRzOiAxMTMuMDIzMDAwIHB0czogMTEzLjAyMzAwMAo+ID4gcG9zOjI1 MzM1MjExIHNpemU6ICAgIDQ3Cj4gPiA+ICByZXQ6IDAgICAgICAgICBzdDogMyBmbGFnczoxICB0 czogMS4wNDgwMDAKPiA+ID4gQEAgLTI5NSw3ICsyOTUsNyBAQAo+ID4gPiAgcmV0OiAwICAgICAg ICAgc3Q6IDEgZmxhZ3M6MSAgdHM6IDAuMjAwODMzCj4gPiA+ICByZXQ6IDAgICAgICAgICBzdDog MSBmbGFnczoxIGR0czotMC4wMDI2NjcgcHRzOi0wLjAwMjY2NyBwb3M6ICAxMDMxNQo+ID4gc2l6 ZTogICAgMzIKPiA+ID4gIHJldDogMCAgICAgICAgIHN0OiAyIGZsYWdzOjAgIHRzOi0wLjkwNTAw MAo+ID4gPiAtcmV0OiAwICAgICAgICAgc3Q6IDIgZmxhZ3M6MSBkdHM6IDAuMDAwMDAwIHB0czog MC4wMDAwMDAgcG9zOiAgIDc2OTEKPiA+IHNpemU6ICAyNTE5Cj4gPiA+ICtyZXQ6IDAgICAgICAg ICBzdDogMiBmbGFnczoxIGR0czotMC4wMDI2NjcgcHRzOi0wLjAwMjY2NyBwb3M6ICAxNDU4MAo+ ID4gc2l6ZTogICAgMzkKPiA+ID4gIHJldDogMCAgICAgICAgIHN0OiAyIGZsYWdzOjEgIHRzOiAx Ljk4OTE2Nwo+ID4gPiAgcmV0OiAwICAgICAgICAgc3Q6IDIgZmxhZ3M6MSBkdHM6IDEuNzgyNjY3 IHB0czogMS43ODI2NjcgcG9zOiAzMjE1MTgKPiA+IHNpemU6ICAgMjQxCj4gPiA+ICByZXQ6IDAg ICAgICAgICBzdDogMyBmbGFnczowICB0czogMC44ODMwMDAKPiA+ID4gQ29tbWFuZCBleGl0ZWQg d2l0aCBub24temVybyBzdGF0dXMgMQo+ID4gPgo+ID4gPiBJcyB0aGlzIGNvcnJlY3QmaW50ZW5k ZWQgPwo+ID4KPiA+IFNvcnJ5IEkgdGhvdWdodCB0aGF0IHRoaXMgc2FtcGxlIHdhcyBwYXJ0IG9m IEZBVEUgYnV0IGl0IGlzbid0IHRoZWlyIG5vciBpcwo+ID4gaXQgbGlua2VkIGluIHRoZSBjb3Jy ZXNwb25kaW5nIHRpY2tldC4KPgo+IHNhbXBsZXMuZmZtcGVnLm9yZy9mZm1wZWctYnVncy90cmFj L3RpY2tldDI3MzkvbGF2Zl9vZ21fc2Vla2luZ19ib3JrZWQub2dtCgpUaGFua3MuIEkganVzdCBo YWQgYSBsb29rLiBJdCdzIGhhcmQgdG8ga25vdyB3aGF0J3MgcmVhbGx5IGdvaW5nIG9uCmJlY2F1 c2UgdGhpcyBzdHJlYW0gaXMgaGlnaGx5IGludmFsaWQ6CltvZ2cgQCAweDEyZDgwNDA4MF0gSGVh ZGVycyBtaXNtYXRjaCBmb3Igc3RyZWFtIDE6IGV4cGVjdGVkIDMgcmVjZWl2ZWQgMi4KW29nZyBA IDB4MTJkODA0MDgwXSBIZWFkZXJzIG1pc21hdGNoIGZvciBzdHJlYW0gMjogZXhwZWN0ZWQgMyBy ZWNlaXZlZCAyLgoKVGhlIGxvZ2ljIGZvciBwYWNrZXQgcGFzc2luZyBpcyBjaGFuZ2VkIHdpdGgg dGhpcyBwYXRjaCBzZXJpZXMgYW5kIG5ldwpoZWFkZXJzIGZyb20gc3Vic2VxdWVudCBjaGFpbmVk IHN0cmVhbXMgYXJlIG9ubHkgcGFzc2VkIHdpdGggdGhlIGZpcnN0CmRhdGEgcGFja2V0IGZvbGxv d2luZyB0aGUgaGVhZGVycy4KCkkgaGF2ZW4ndCBkZWJ1Z2dlZCBkb3duIHRvIHRoZSBkZS1wYWNr ZXRpemF0aW9uIGJ1dCwgYSB0eXBpY2FsIGNoYW5nZQp3b3VsZCBiZTogaWYgdGhlIHN0cmVhbSBp cyBpbnZhbGlkIGFuZCBoYXMgYSBzZXJpZXMgb2YgaGVhZGVycyB3aXRob3V0CmFueSBkYXRhIHBh Y2tldCBpbi1iZXR3ZWVuLCB0aGVuIHRoZSBkZWNvZGVyIHdvdWxkIG5ldmVyIHNlZSB0aGUKaW50 ZXJtZWRpYXRlIGhlYWRlcnMgd2l0aCB0aGUgbmV3IGNoYW5nZXMuCgpIb3dldmVyLCBJIGhhdmUg cmV3cml0dGVuIG15IGNoYW5nZXMgdG8gYWN0dWFsbHkgcGFzcyBib3RoIGhlYWRlciBhbmQKc2V0 dXAgcGFja2V0IGFzIGV4dHJhZGF0YS4gVGhpcyB3YXksIHRoZSBkZWNvZGVyIHdpbGwgc2VlIHdo YXRldmVyIHdlCmFyZSBhYmxlIHRvIHBhc3MgYXMgaGVhZGVyIGFuZCBzZXR1cCBwYWNrZXQgZnJv bSB0aGUgcGFyc2VyLgoKVGhpcyBzaG91bGQgbWFrZSBzdXJlIHRoYXQgd2UgYXJlIHN0aWNraW5n IGFzIGNsb3NlIGFzIHBvc3NpYmxlIHRvIHRoZQpleGlzdGluZyBiZWhhdmlvci4KClRoZSBzZWVr IGRpZmYgaXMgc3RpbGwgdGhlIHNhbWUgd2l0aCBpdCBidXQgdGhhdCBtYWtlcyBtZSBtb3JlCmNv bmZpZGVudCB0aGF0IHRoaXMgaXMsIGluZGVlZCwgaW50ZW5kZWQuCgotLSBSb21haW4KCj4gPgo+ ID4gSXQgd291bGQgYmUgbmljZSBpZiB0aGVyZSB3YXMgYSBkZWZpbml0ZSBzZXQgb2Ygc2FtcGxl cy90ZXN0cyB0byBjaGVjawo+ID4gYmVmb3JlIHNlbmRpbmcgcGF0Y2hlcywKPgo+IHllcywgaWRl YWxseSBldmVyeSAob3IgbW9zdCkgZml4ZWQgdGlja2V0cyB3b3VsZCByZXN1bHQgaW4gYSBuZXcg ZmF0ZSB0ZXN0Cj4KPiBJdCBpcyBzb21ldGhpbmcgdGhhdCBzb21lb25lIHNob3VsZCBkbyBhcyBh IFNURiB0YXNrIG9yIGFzIGEgdm9sdW50ZWVyLgo+IEl0cyBub3Qgc29tZXRoaW5nIGkgaGF2ZSB0 ZWggdGltZSBvciBwYXRpZW5jZSBmb3IKPgo+IHRoeAo+Cj4gWy4uLl0KPgo+IC0tCj4gTWljaGFl bCAgICAgR251UEcgZmluZ2VycHJpbnQ6IDlGRjIxMjhCMTQ3RUY2NzMwQkFERjEzMzYxMUVDNzg3 MDQwQjBGQUIKPgo+IFJlcHVibGljcyBkZWNsaW5lIGludG8gZGVtb2NyYWNpZXMgYW5kIGRlbW9j cmFjaWVzIGRlZ2VuZXJhdGUgaW50bwo+IGRlc3BvdGlzbXMuIC0tIEFyaXN0b3RsZQo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZmZtcGVnLWRldmVs IG1haWxpbmcgbGlzdAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gaHR0cHM6Ly9mZm1wZWcu b3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4KPiBUbyB1bnN1YnNjcmliZSwgdmlz aXQgbGluayBhYm92ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3Jn IHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZl bEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1k ZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1k ZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==