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 B54734F1FD for ; Sat, 17 May 2025 18:10:48 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 120C468D7F8; Sat, 17 May 2025 21:10:45 +0300 (EEST) Received: from mail-yw1-f174.google.com (mail-yw1-f174.google.com [209.85.128.174]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id A4CCB68D7E6 for ; Sat, 17 May 2025 21:10:38 +0300 (EEST) Received: by mail-yw1-f174.google.com with SMTP id 00721157ae682-6ff4faf858cso21160897b3.2 for ; Sat, 17 May 2025 11:10:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747505437; x=1748110237; 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=nX8NRGDXZNpRmlVAuzMTo9oZ3F/H52F4xJnsEtcwbKc=; b=DBoyupYHpmAqGMvpbw/0Si0ZFJRVJV4d7/MGN/u5bhrt9gD5e666I8Ub02E+871aun BDd3BaymOvlqjpnS5scesCC+QpYqQtAxIZ6hEzdAUE1/nVGo9blORF6yHGXdKqvdTYGO ysuRc1GXgIN9bbF3ogkyjJQ0GMbZKi59vglJWoT5WMLWvVc8MBQ7VWBTZeQbqw6QUmhD YszlvvMea8DU3zxHMdnJMmUalL/e8yu6FXUSFOh9PNT0yBWqcGSP6pdHTWmHXTlGJs+p CnwtUHhWF/piEylAhJmA4Gd9ULQ46HLJzRWFB4WxkSxibpQMyi1THpqzBEM2EfTR/d20 wp8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747505437; x=1748110237; 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=nX8NRGDXZNpRmlVAuzMTo9oZ3F/H52F4xJnsEtcwbKc=; b=Ixk2a4qtKX4UyudGExlxaDJCGgrfXeRNQMSiuuKs1bH2NhDv4nsI2uVxLTpTqV1DiM oR+2UtDLhWM3o7384aRmKXqERGUB0MDtJFh1SaJNhHdR3ERhl/syAB6kF3uIMuNr1Kpe Eql1eSD33yf58DN4kMfsD0hkNizXw60W06cACaULp7Urx2YMoq/j0RN2ZwlM6ge7GRsQ Fk0RUzfG6Kh0G6KqdpoFjZhB9BkIQVdpIAuHn1k/6SBdTRt5QQ2IfLjHdzMuhv81jXQt 72rgPWUzTfRk2RMpx+mPSk8GvG4dflWDH1smvNwGdLDBjn8HguuqbCvM0+YjpwnDdwO0 HJ3w== X-Gm-Message-State: AOJu0YxCUev8UicFlPZKEO2LBsz0b6VefpMrIpavfCu1RqB8Bhm7sbu+ 0UWCAvX8vVz2G0H4egf+AKVJf1tUJ2fgY+f08HLCjUTzMapTHAmR/3rcvs/iWEII5sIeufQE0sX xC6TI4pjVFn1Gr9HYuvWithrmS2gU8uCHjHmM X-Gm-Gg: ASbGnctVrkN1tMg098v62jKxFUN5WkX8sFXLDvDIgYJhX1n7EejO67/ZrL26whUR9RG /mHvhhmGemKNjiiWCi0jjDcFru39zuUhl86q8eA+U7nm7D0yxw/a5ZVHGSK5bE1ReTuzdMFR3wR 6Wgj0z6D4H9ewmA306+4RjKMQQgPsXG+RWNQ== X-Google-Smtp-Source: AGHT+IGWwahDkBz4sDk9vmKx9ktrKJ8Yd2wabdBO4IBoM2AvcyyjyWRhWWSw6TbQIBrNLsg49QOxSq5ad/N51nLMKac= X-Received: by 2002:a05:690c:d1c:b0:702:627d:c86 with SMTP id 00721157ae682-70ca799b901mr109724137b3.5.1747505436776; Sat, 17 May 2025 11:10:36 -0700 (PDT) MIME-Version: 1.0 References: <20250509234327.71039-1-romain.beauxis@gmail.com> <20250509234327.71039-7-romain.beauxis@gmail.com> <20250513192339.GF29660@pb2> In-Reply-To: <20250513192339.GF29660@pb2> From: Romain Beauxis Date: Sat, 17 May 2025 13:10:26 -0500 X-Gm-Features: AX0GCFveTxflWLK5ERUyFVxcfLHvGMEL5rM8LV9AE5BD3_bpm5rjSb1Mp7MMM1Y Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 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: TGUgbWFyLiAxMyBtYWkgMjAyNSDDoCAxNDoyMywgTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFl bEBuaWVkZXJtYXllci5jYz4gYQrDqWNyaXQgOgo+Cj4gT24gRnJpLCBNYXkgMDksIDIwMjUgYXQg MDY6NDM6MjZQTSAtMDUwMCwgUm9tYWluIEJlYXV4aXMgd3JvdGU6Cj4gPiAtLS0KPiA+ICBsaWJh dmNvZGVjL3ZvcmJpc2RlYy5jICAgICAgICAgICAgICAgICAgICAgfCAgMzcgKy0tLS0KPiA+ICBs aWJhdmZvcm1hdC9vZ2dwYXJzZXZvcmJpcy5jICAgICAgICAgICAgICAgfCAxNzQgKysrKysrKysr KysrKy0tLS0tLS0tCj4gPiAgdGVzdHMvcmVmL2ZhdGUvb2dnLXZvcmJpcy1jaGFpbmVkLW1ldGEu dHh0IHwgICAzIC0KPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDExNyBpbnNlcnRpb25zKCspLCA5NyBk ZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92b3JiaXNkZWMuYyBi L2xpYmF2Y29kZWMvdm9yYmlzZGVjLmMKPiA+IGluZGV4IGE3NzhkYzZiNTguLmYwNjlhYzZhYjMg MTAwNjQ0Cj4gPiAtLS0gYS9saWJhdmNvZGVjL3ZvcmJpc2RlYy5jCj4gPiArKysgYi9saWJhdmNv ZGVjL3ZvcmJpc2RlYy5jCj4gPiBAQCAtMTc3NiwzOSArMTc3NiwxNyBAQCBzdGF0aWMgaW50IHZv cmJpc19kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQKKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwK PiA+ICAgICAgR2V0Qml0Q29udGV4dCAqZ2IgPSAmdmMtPmdiOwo+ID4gICAgICBmbG9hdCAqY2hh bm5lbF9wdHJzWzI1NV07Cj4gPiAgICAgIGludCBpLCBsZW4sIHJldDsKPiA+ICsgICAgY29uc3Qg aW50OF90ICpuZXdfZXh0cmFkYXRhOwo+ID4gKyAgICBzaXplX3QgbmV3X2V4dHJhZGF0YV9zaXpl Owo+ID4KPiA+ICAgICAgZmZfZGxvZyhOVUxMLCAicGFja2V0IGxlbmd0aCAlZCBcbiIsIGJ1Zl9z aXplKTsKPiA+Cj4gPiAtICAgIGlmICgqYnVmID09IDEgJiYgYnVmX3NpemUgPiA3KSB7Cj4gPiAt ICAgICAgICBpZiAoKHJldCA9IGluaXRfZ2V0X2JpdHM4KGdiLCBidWYgKyAxLCBidWZfc2l6ZSAt IDEpKSA8IDApCj4gPiAtICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+IC0KPiA+IC0gICAgICAg IHZvcmJpc19mcmVlKHZjKTsKPiA+IC0gICAgICAgIGlmICgocmV0ID0gdm9yYmlzX3BhcnNlX2lk X2hkcih2YykpKSB7Cj4gPiAtICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1Is ICJJZCBoZWFkZXIgY29ycnVwdC5cbiIpOwo+ID4gLSAgICAgICAgICAgIHZvcmJpc19mcmVlKHZj KTsKPiA+IC0gICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gLSAgICAgICAgfQo+ID4gLQo+ID4g LSAgICAgICAgYXZfY2hhbm5lbF9sYXlvdXRfdW5pbml0KCZhdmN0eC0+Y2hfbGF5b3V0KTsKPiA+ IC0gICAgICAgIGlmICh2Yy0+YXVkaW9fY2hhbm5lbHMgPiA4KSB7Cj4gPiAtICAgICAgICAgICAg YXZjdHgtPmNoX2xheW91dC5vcmRlciAgICAgICA9IEFWX0NIQU5ORUxfT1JERVJfVU5TUEVDOwo+ ID4gLSAgICAgICAgICAgIGF2Y3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHMgPSB2Yy0+YXVkaW9f Y2hhbm5lbHM7Cj4gPiAtICAgICAgICB9IGVsc2Ugewo+ID4gLSAgICAgICAgICAgIGF2X2NoYW5u ZWxfbGF5b3V0X2NvcHkoJmF2Y3R4LT5jaF9sYXlvdXQsCiZmZl92b3JiaXNfY2hfbGF5b3V0c1t2 Yy0+YXVkaW9fY2hhbm5lbHMgLSAxXSk7Cj4gPiAtICAgICAgICB9Cj4gPiAtCj4gPiAtICAgICAg ICBhdmN0eC0+c2FtcGxlX3JhdGUgPSB2Yy0+YXVkaW9fc2FtcGxlcmF0ZTsKPiA+IC0gICAgICAg IHJldHVybiBidWZfc2l6ZTsKPiA+IC0gICAgfQo+ID4gLQo+ID4gLSAgICBpZiAoKmJ1ZiA9PSAz ICYmIGJ1Zl9zaXplID4gNykgewo+ID4gLSAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVC VUcsICJJZ25vcmluZyBjb21tZW50IGhlYWRlclxuIik7Cj4gPiAtICAgICAgICByZXR1cm4gYnVm X3NpemU7Cj4gPiAtICAgIH0KPiA+ICsgICAgbmV3X2V4dHJhZGF0YSA9IGF2X3BhY2tldF9nZXRf c2lkZV9kYXRhKGF2cGt0LApBVl9QS1RfREFUQV9ORVdfRVhUUkFEQVRBLAo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld19leHRyYWRhdGFfc2l6ZSk7 Cj4gPgo+ID4gLSAgICBpZiAoKmJ1ZiA9PSA1ICYmIGJ1Zl9zaXplID4gNyAmJiB2Yy0+Y2hhbm5l bF9yZXNpZHVlcyAmJgohdmMtPm1vZGVzKSB7Cj4gPiAtICAgICAgICBpZiAoKHJldCA9IGluaXRf Z2V0X2JpdHM4KGdiLCBidWYgKyAxLCBidWZfc2l6ZSAtIDEpKSA8IDApCj4gPiArICAgIGlmIChu ZXdfZXh0cmFkYXRhICYmICpuZXdfZXh0cmFkYXRhID09IDUgJiYgbmV3X2V4dHJhZGF0YV9zaXpl ID4gNwomJgo+ID4gKyAgICAgICAgdmMtPmNoYW5uZWxfcmVzaWR1ZXMgJiYgIXZjLT5tb2Rlcykg ewo+ID4gKyAgICAgICAgaWYgKChyZXQgPSBpbml0X2dldF9iaXRzOChnYiwgbmV3X2V4dHJhZGF0 YSArIDEsCm5ld19leHRyYWRhdGFfc2l6ZSAtIDEpKSA8IDApCj4gPiAgICAgICAgICAgICAgcmV0 dXJuIHJldDsKPiA+Cj4gPiAgICAgICAgICBpZiAoKHJldCA9IHZvcmJpc19wYXJzZV9zZXR1cF9o ZHIodmMpKSkgewo+ID4gQEAgLTE4MTYsNyArMTc5NCw2IEBAIHN0YXRpYyBpbnQgdm9yYmlzX2Rl Y29kZV9mcmFtZShBVkNvZGVjQ29udGV4dAoqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLAo+ID4gICAg ICAgICAgICAgIHZvcmJpc19mcmVlKHZjKTsKPiA+ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ ID4gICAgICAgICAgfQo+ID4gLSAgICAgICAgcmV0dXJuIGJ1Zl9zaXplOwo+ID4gICAgICB9Cj4g Pgo+ID4gICAgICBpZiAoIXZjLT5jaGFubmVsX3Jlc2lkdWVzIHx8ICF2Yy0+bW9kZXMpIHsKPiA+ IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9vZ2dwYXJzZXZvcmJpcy5jIGIvbGliYXZmb3JtYXQv b2dncGFyc2V2b3JiaXMuYwo+ID4gaW5kZXggOWY1MGFiOWZmYy4uNDUyNzI4YjU0ZCAxMDA2NDQK PiA+IC0tLSBhL2xpYmF2Zm9ybWF0L29nZ3BhcnNldm9yYmlzLmMKPiA+ICsrKyBiL2xpYmF2Zm9y bWF0L29nZ3BhcnNldm9yYmlzLmMKPiA+IEBAIC0yOTMsNiArMjkzLDYyIEBAIHN0YXRpYyBpbnQg dm9yYmlzX3VwZGF0ZV9tZXRhZGF0YShBVkZvcm1hdENvbnRleHQKKnMsIGludCBpZHgpCj4gPiAg ICAgIHJldHVybiByZXQ7Cj4gPiAgfQo+ID4KPiA+ICtzdGF0aWMgaW50IHZvcmJpc19wYXJzZV9o ZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAqc3QsCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnAsIHVuc2lnbmVkIGludCBwc2l6ZSkK PiA+ICt7Cj4gPiArICAgIHVuc2lnbmVkIGJsb2Nrc2l6ZSwgYnMwLCBiczE7Cj4gPiArICAgIGlu dCBzcmF0ZTsKPiA+ICsgICAgaW50IGNoYW5uZWxzOwo+ID4gKwo+ID4gKyAgICBpZiAocHNpemUg IT0gMzApCj4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiA+ICsKPiA+ ICsgICAgcCArPSA3OyAvKiBza2lwICJcMDAxdm9yYmlzIiB0YWcgKi8KPiA+ICsKPiA+ICsgICAg aWYgKGJ5dGVzdHJlYW1fZ2V0X2xlMzIoJnApICE9IDApIC8qIHZvcmJpc192ZXJzaW9uICovCj4g PiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiA+ICsKPiA+ICsgICAgY2hh bm5lbHMgPSBieXRlc3RyZWFtX2dldF9ieXRlKCZwKTsKPiA+ICsgICAgaWYgKHN0LT5jb2RlY3Bh ci0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzICYmCj4gPiArICAgICAgICBjaGFubmVscyAhPSBzdC0+ Y29kZWNwYXItPmNoX2xheW91dC5uYl9jaGFubmVscykgewo+ID4gKyAgICAgICAgYXZfbG9nKHMs IEFWX0xPR19FUlJPUiwgIkNoYW5uZWwgY2hhbmdlIGlzIG5vdCBzdXBwb3J0ZWRcbiIpOwo+ID4g KyAgICAgICAgcmV0dXJuIEFWRVJST1JfUEFUQ0hXRUxDT01FOwo+ID4gKyAgICB9Cj4gPiArICAg IHN0LT5jb2RlY3Bhci0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzID0gY2hhbm5lbHM7Cj4gPiArICAg IHNyYXRlICAgICAgICAgICAgICAgPSBieXRlc3RyZWFtX2dldF9sZTMyKCZwKTsKPiA+ICsgICAg cCArPSA0OyAvLyBza2lwIG1heGltdW0gYml0cmF0ZQo+ID4gKyAgICBzdC0+Y29kZWNwYXItPmJp dF9yYXRlID0gYnl0ZXN0cmVhbV9nZXRfbGUzMigmcCk7IC8vIG5vbWluYWwKYml0cmF0ZQo+ID4g KyAgICBwICs9IDQ7IC8vIHNraXAgbWluaW11bSBiaXRyYXRlCj4gPiArCj4gPiArICAgIGJsb2Nr c2l6ZSA9IGJ5dGVzdHJlYW1fZ2V0X2J5dGUoJnApOwo+ID4gKyAgICBiczAgICAgICAgPSBibG9j a3NpemUgJiAxNTsKPiA+ICsgICAgYnMxICAgICAgID0gYmxvY2tzaXplID4+IDQ7Cj4gPiArCj4g PiArICAgIGlmIChiczAgPiBiczEpCj4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKPiA+ICsgICAgaWYgKGJzMCA8IDYgfHwgYnMxID4gMTMpCj4gPiArICAgICAgICByZXR1 cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiA+ICsKPiA+ICsgICAgaWYgKGJ5dGVzdHJlYW1fZ2V0 X2J5dGUoJnApICE9IDEpIC8qIGZyYW1pbmdfZmxhZyAqLwo+ID4gKyAgICAgICAgcmV0dXJuIEFW RVJST1JfSU5WQUxJRERBVEE7Cj4gPiArCj4gPiArICAgIHN0LT5jb2RlY3Bhci0+Y29kZWNfdHlw ZSA9IEFWTUVESUFfVFlQRV9BVURJTzsKPiA+ICsgICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCAg ID0gQVZfQ09ERUNfSURfVk9SQklTOwo+ID4gKwo+ID4gKyAgICBpZiAoc3JhdGUgPiAwKSB7Cj4g PiArICAgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5zYW1wbGVfcmF0ZSAmJgo+ID4gKyAgICAgICAg ICAgIHNyYXRlICE9IHN0LT5jb2RlY3Bhci0+c2FtcGxlX3JhdGUpIHsKPiA+ICsgICAgICAgICAg ICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAiU2FtcGxlIHJhdGUgY2hhbmdlIGlzIG5vdApzdXBw b3J0ZWRcbiIpOwo+ID4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX1BBVENIV0VMQ09NRTsK PiA+ICsgICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgIHN0LT5jb2RlY3Bhci0+c2FtcGxlX3Jh dGUgPSBzcmF0ZTsKPiA+ICsgICAgICAgIGF2cHJpdl9zZXRfcHRzX2luZm8oc3QsIDY0LCAxLCBz cmF0ZSk7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgcmV0dXJuIDE7Cj4gPiArfQo+ID4gKwo+ ID4gIHN0YXRpYyBpbnQgdm9yYmlzX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMsIGludCBpZHgp Cj4gPiAgewo+ID4gICAgICBzdHJ1Y3Qgb2dnICpvZ2cgPSBzLT5wcml2X2RhdGE7Cj4gPiBAQCAt MzAwLDYgKzM1Niw3IEBAIHN0YXRpYyBpbnQgdm9yYmlzX2hlYWRlcihBVkZvcm1hdENvbnRleHQg KnMsIGludAppZHgpCj4gPiAgICAgIHN0cnVjdCBvZ2dfc3RyZWFtICpvcyA9IG9nZy0+c3RyZWFt cyArIGlkeDsKPiA+ICAgICAgc3RydWN0IG9nZ3ZvcmJpc19wcml2YXRlICpwcml2Owo+ID4gICAg ICBpbnQgcGt0X3R5cGUgPSBvcy0+YnVmW29zLT5wc3RhcnRdOwo+ID4gKyAgICBpbnQgcmV0Owo+ ID4KPiA+ICAgICAgaWYgKCFvcy0+cHJpdmF0ZSkgewo+ID4gICAgICAgICAgb3MtPnByaXZhdGUg PSBhdl9tYWxsb2N6KHNpemVvZihzdHJ1Y3Qgb2dndm9yYmlzX3ByaXZhdGUpKTsKPiA+IEBAIC0z MjcsNTYgKzM4NCwxOCBAQCBzdGF0aWMgaW50IHZvcmJpc19oZWFkZXIoQVZGb3JtYXRDb250ZXh0 ICpzLCBpbnQKaWR4KQo+ID4KPiA+ICAgICAgcHJpdi0+bGVuW3BrdF90eXBlID4+IDFdICAgID0g b3MtPnBzaXplOwo+ID4gICAgICBwcml2LT5wYWNrZXRbcGt0X3R5cGUgPj4gMV0gPSBhdl9tZW1k dXAob3MtPmJ1ZiArIG9zLT5wc3RhcnQsCm9zLT5wc2l6ZSk7Cj4gPiArCj4gPiAgICAgIGlmICgh cHJpdi0+cGFja2V0W3BrdF90eXBlID4+IDFdKQo+ID4gICAgICAgICAgcmV0dXJuIEFWRVJST1Io RU5PTUVNKTsKPiA+IC0gICAgaWYgKG9zLT5idWZbb3MtPnBzdGFydF0gPT0gMSkgewo+ID4gLSAg ICAgICAgY29uc3QgdWludDhfdCAqcCA9IG9zLT5idWYgKyBvcy0+cHN0YXJ0ICsgNzsgLyogc2tp cAoiXDAwMXZvcmJpcyIgdGFnICovCj4gPiAtICAgICAgICB1bnNpZ25lZCBibG9ja3NpemUsIGJz MCwgYnMxOwo+ID4gLSAgICAgICAgaW50IHNyYXRlOwo+ID4gLSAgICAgICAgaW50IGNoYW5uZWxz Owo+ID4gLQo+ID4gLSAgICAgICAgaWYgKG9zLT5wc2l6ZSAhPSAzMCkKPiA+IC0gICAgICAgICAg ICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiA+IC0KPiA+IC0gICAgICAgIGlmIChieXRl c3RyZWFtX2dldF9sZTMyKCZwKSAhPSAwKSAvKiB2b3JiaXNfdmVyc2lvbiAqLwo+ID4gLSAgICAg ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ID4gLQo+ID4gLSAgICAgICAgY2hh bm5lbHMgPSBieXRlc3RyZWFtX2dldF9ieXRlKCZwKTsKPiA+IC0gICAgICAgIGlmIChzdC0+Y29k ZWNwYXItPmNoX2xheW91dC5uYl9jaGFubmVscyAmJgo+ID4gLSAgICAgICAgICAgIGNoYW5uZWxz ICE9IHN0LT5jb2RlY3Bhci0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzKSB7Cj4gPiAtICAgICAgICAg ICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIkNoYW5uZWwgY2hhbmdlIGlzIG5vdApzdXBwb3J0 ZWRcbiIpOwo+ID4gLSAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX1BBVENIV0VMQ09NRTsKPiA+ IC0gICAgICAgIH0KPiA+IC0gICAgICAgIHN0LT5jb2RlY3Bhci0+Y2hfbGF5b3V0Lm5iX2NoYW5u ZWxzID0gY2hhbm5lbHM7Cj4gPiAtICAgICAgICBzcmF0ZSAgICAgICAgICAgICAgID0gYnl0ZXN0 cmVhbV9nZXRfbGUzMigmcCk7Cj4gPiAtICAgICAgICBwICs9IDQ7IC8vIHNraXAgbWF4aW11bSBi aXRyYXRlCj4gPiAtICAgICAgICBzdC0+Y29kZWNwYXItPmJpdF9yYXRlID0gYnl0ZXN0cmVhbV9n ZXRfbGUzMigmcCk7IC8vIG5vbWluYWwKYml0cmF0ZQo+ID4gLSAgICAgICAgcCArPSA0OyAvLyBz a2lwIG1pbmltdW0gYml0cmF0ZQo+ID4gLQo+ID4gLSAgICAgICAgYmxvY2tzaXplID0gYnl0ZXN0 cmVhbV9nZXRfYnl0ZSgmcCk7Cj4gPiAtICAgICAgICBiczAgICAgICAgPSBibG9ja3NpemUgJiAx NTsKPiA+IC0gICAgICAgIGJzMSAgICAgICA9IGJsb2Nrc2l6ZSA+PiA0Owo+ID4gLQo+ID4gLSAg ICAgICAgaWYgKGJzMCA+IGJzMSkKPiA+IC0gICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZB TElEREFUQTsKPiA+IC0gICAgICAgIGlmIChiczAgPCA2IHx8IGJzMSA+IDEzKQo+ID4gLSAgICAg ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ID4gLQo+ID4gLSAgICAgICAgaWYg KGJ5dGVzdHJlYW1fZ2V0X2J5dGUoJnApICE9IDEpIC8qIGZyYW1pbmdfZmxhZyAqLwo+ID4gLSAg ICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ID4gLQo+ID4gLSAgICAgICAg c3QtPmNvZGVjcGFyLT5jb2RlY190eXBlID0gQVZNRURJQV9UWVBFX0FVRElPOwo+ID4gLSAgICAg ICAgc3QtPmNvZGVjcGFyLT5jb2RlY19pZCAgID0gQVZfQ09ERUNfSURfVk9SQklTOwo+ID4gLQo+ ID4gLSAgICAgICAgaWYgKHNyYXRlID4gMCkgewo+ID4gLSAgICAgICAgICAgIHN0LT5jb2RlY3Bh ci0+c2FtcGxlX3JhdGUgPSBzcmF0ZTsKPiA+IC0gICAgICAgICAgICBhdnByaXZfc2V0X3B0c19p bmZvKHN0LCA2NCwgMSwgc3JhdGUpOwo+ID4gLSAgICAgICAgfQo+ID4gLSAgICB9IGVsc2UgaWYg KG9zLT5idWZbb3MtPnBzdGFydF0gPT0gMykgewo+Cj4KPiBtb3ZpbmcgY29kZSBzaG91bGQgYmUg aW4gYSBzZXBlcmF0ZSBwYXRjaCBzbyBhbnkgY2hhbmdlcyBjYW4gYmUgY2xlYXJseQo+IHNlZW4g aW4gdGhlIGRpZmYgd2hpY2ggZG9lcyBub3QgbW92ZSB0aGUgY29kZS4KPgo+IFRoZSBvdXRwdXQg ZnJvbToKPiBsaWJhdmZvcm1hdC90ZXN0cy9zZWVrICRUSUNLRVRTLzI3MzkvbGF2Zl9vZ21fc2Vl a2luZ19ib3JrZWQub2dtCj4KPiBjaGFuZWdzIGJ5Ogo+IEBAIC0yNzMsNyArMjczLDcgQEAKPiAg cmV0OiAwICAgICAgICAgc3Q6IDIgZmxhZ3M6MCAgdHM6IDAuMzY1MDAwCj4gIHJldDogMCAgICAg ICAgIHN0OiAyIGZsYWdzOjEgZHRzOiAwLjMzMjAwMCBwdHM6IDAuMzMyMDAwIHBvczogIDE4OTU5 CnNpemU6ICAgMjcxCj4gIHJldDogMCAgICAgICAgIHN0OiAyIGZsYWdzOjEgIHRzOi0wLjc0MDgz Mwo+IC1yZXQ6IDAgICAgICAgICBzdDogMiBmbGFnczoxIGR0czogMC4wMDAwMDAgcHRzOiAwLjAw MDAwMCBwb3M6ICAgNzY5MQpzaXplOiAgMjUxOQo+ICtyZXQ6IDAgICAgICAgICBzdDogMiBmbGFn czoxIGR0czotMC4wMDI2NjcgcHRzOi0wLjAwMjY2NyBwb3M6ICAxNDU4MApzaXplOiAgICAzOQo+ ICByZXQ6IDAgICAgICAgICBzdDogMyBmbGFnczowICB0czogMi4xNTMwMDAKPiAgcmV0OiAwICAg ICAgICAgc3Q6IDMgZmxhZ3M6MSBkdHM6IDExMy4wMjMwMDAgcHRzOiAxMTMuMDIzMDAwCnBvczoy NTMzNTIxMSBzaXplOiAgICA0Nwo+ICByZXQ6IDAgICAgICAgICBzdDogMyBmbGFnczoxICB0czog MS4wNDgwMDAKPiBAQCAtMjk1LDcgKzI5NSw3IEBACj4gIHJldDogMCAgICAgICAgIHN0OiAxIGZs YWdzOjEgIHRzOiAwLjIwMDgzMwo+ICByZXQ6IDAgICAgICAgICBzdDogMSBmbGFnczoxIGR0czot MC4wMDI2NjcgcHRzOi0wLjAwMjY2NyBwb3M6ICAxMDMxNQpzaXplOiAgICAzMgo+ICByZXQ6IDAg ICAgICAgICBzdDogMiBmbGFnczowICB0czotMC45MDUwMDAKPiAtcmV0OiAwICAgICAgICAgc3Q6 IDIgZmxhZ3M6MSBkdHM6IDAuMDAwMDAwIHB0czogMC4wMDAwMDAgcG9zOiAgIDc2OTEKc2l6ZTog IDI1MTkKPiArcmV0OiAwICAgICAgICAgc3Q6IDIgZmxhZ3M6MSBkdHM6LTAuMDAyNjY3IHB0czot MC4wMDI2NjcgcG9zOiAgMTQ1ODAKc2l6ZTogICAgMzkKPiAgcmV0OiAwICAgICAgICAgc3Q6IDIg ZmxhZ3M6MSAgdHM6IDEuOTg5MTY3Cj4gIHJldDogMCAgICAgICAgIHN0OiAyIGZsYWdzOjEgZHRz OiAxLjc4MjY2NyBwdHM6IDEuNzgyNjY3IHBvczogMzIxNTE4CnNpemU6ICAgMjQxCj4gIHJldDog MCAgICAgICAgIHN0OiAzIGZsYWdzOjAgIHRzOiAwLjg4MzAwMAo+IENvbW1hbmQgZXhpdGVkIHdp dGggbm9uLXplcm8gc3RhdHVzIDEKPgo+IElzIHRoaXMgY29ycmVjdCZpbnRlbmRlZCA/CgpTb3Jy eSBJIHRob3VnaHQgdGhhdCB0aGlzIHNhbXBsZSB3YXMgcGFydCBvZiBGQVRFIGJ1dCBpdCBpc24n dCB0aGVpciBub3IgaXMKaXQgbGlua2VkIGluIHRoZSBjb3JyZXNwb25kaW5nIHRpY2tldC4KCkl0 IHdvdWxkIGJlIG5pY2UgaWYgdGhlcmUgd2FzIGEgZGVmaW5pdGUgc2V0IG9mIHNhbXBsZXMvdGVz dHMgdG8gY2hlY2sKYmVmb3JlIHNlbmRpbmcgcGF0Y2hlcywgSSBkbyBteSBiZXN0IHRvIGNoZWNr IG15IHdvcmsgYWdhaW5zdCB0aGUKZXN0YWJsaXNoZWQgc2V0IG9mIHZhbGlkYXRpb24gY2hlY2tz IGJ1dCBJIGFtIHVuYWJsZSB0byB0ZXN0IG5vbi1leGlzdGluZwpmaWxlcyEKCldvdWxkIHlvdSBw cm92aWRlIHRoZSBmaWxlIGZvciByZWZlcmVuY2U/IElzIGl0IHBvc3NpYmxlIHRvIGhhdmUgYW4K ZXh0ZW5zaXZlIHNldCBvZiB0aGUgY2hlY2tzIHRoYXQgeW91IGFyZSBpbnRlbmRpbmcgdG8gc2Vl IHBhc3NlZCBiZWZvcmUKY29uc2lkZXJpbmcgZm9yIGluY2x1c2lvbj8KCkkgaGF2ZSB0aGUgc3Bs aXQgdXAgcGF0Y2hzZXQgcmVhZHkgdG8gcmUtc3VibWl0IHdoZW4gSSBjYW4gY29uZmlybSB0aGF0 IGl0CndvcmtzIGFzIGV4cGVjdGVkLgoKVGhhbmtzLAotLSBSb21haW4KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlz dApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0 aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBl bWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJz Y3JpYmUiLgo=