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 531934D3D3 for ; Sat, 31 May 2025 19:37:18 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 1A6B268DE9C; Sat, 31 May 2025 22:37:14 +0300 (EEST) Received: from mail-yw1-f177.google.com (mail-yw1-f177.google.com [209.85.128.177]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 38EE568DE33 for ; Sat, 31 May 2025 22:37:07 +0300 (EEST) Received: by mail-yw1-f177.google.com with SMTP id 00721157ae682-70e64b430daso30490317b3.3 for ; Sat, 31 May 2025 12:37:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748720225; x=1749325025; 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=EW73WcFpnQupGGBcuSC1UyPiDu9WCaCE5nTEY/xVswg=; b=fv4/Uq6TN9DaS3zbBQtcgNDyuOMN1Eu6m8954EIAkkWXUv1d/NaRGJ1T/r2wMcbwKy HkyFFhhSJv0peAcDqGkzLpzrx9IPD8OHTVfx7tQ93hGA3jHTUg1U2mJjI9Op8HH3K7p3 MjKwpzv+EiOZ4w7pVpsuJQLRou5kgUNNkN2u/wh30j132pbCBZ0Sr9Y9lEPejadVtMK/ qDOuiaXnnvoPzNrm9LugdRkXxP3fhcMkE/ancV6RmUnYTFC1gFD5DjQXdLC4fzvJ41ab XJeUwbv0AjxAuf7w5ACN94H3xcSrR7wvjKr9RWMk1oNSSAjjoerGOQTSGEUddH9TtTi1 8pLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748720225; x=1749325025; 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=EW73WcFpnQupGGBcuSC1UyPiDu9WCaCE5nTEY/xVswg=; b=gHi7J1Gt7tpKLHVpOJhrj4NIItm0yE1pdmiRN8sEHM0Y4kXkgxVwOtQvd0e72WY5ZI 1XGCom3EwL5AiBxiGcUD3z3PCSwUCzctYHj+8KMlhCpyFE1TcnG3siuZOS38Cj2T2bQq +bK+Yk4F7PG9VqeQAAGO27RWrPygfm5KV5bhg/oqEKq/9nnDPJFk7vpk2X05/QFQkUx7 cnbVQMe9FsrsmekDTJvn97nfJnhWmtqOC+mgEsHYpjHg6FdYBH38fEAqmiOTO4KTdWo6 PoI6qnRsA6IFxw21mW4oskuT8G4Rb5owQ0yreED573m1ShxLlvhaiKCIPtYDheqrwIzQ s6Xg== X-Gm-Message-State: AOJu0Yx73INoXJKKO8aKkKSFmqXDNZL8lTbTxaePDLq8OMsXwVOV9a29 A1b7AaAu5V4eAdNTtcRTWMBD+cpHbUtsrUo9U6fNVu2/ROxIFQdjrqcU2dZAuzPsfZHyJcIfPnn CWbXnWr5zmUaorxo+2HFQKRJnOX3KKAMBl34/I0U= X-Gm-Gg: ASbGncu7tZ8IoKxmujHsUDDNcxnCgRsGiM8dfD37HgAUS6WAWefiMCFVkIYQx51f+3Z UJ3j6l/4amN69R4EblTOtLTgXRNzofquNQXEGrnQvZ+uDiL8JBPfGhLMgTl1SjOksEvp2bmi287 qpvaYXEbWpsalDZBrtQG8ysr4e2A0c9ZK6aKJpHJkR7PQ+iIF+yegLu6wbAMWFVWsTtMA= X-Google-Smtp-Source: AGHT+IHR5MM33Ab5A+jxMwqAQZMrIbtOpKHdwjC4Z7R1Pr7jJghGYjnK5uzPI0k1crgbu3WDxODOFkrHaS9xtjNHMGM= X-Received: by 2002:a05:690c:380e:b0:70d:f47a:7e21 with SMTP id 00721157ae682-71097c2a902mr42308477b3.1.1748720225007; Sat, 31 May 2025 12:37:05 -0700 (PDT) MIME-Version: 1.0 References: <20250524181408.49384-1-romain.beauxis@gmail.com> <20250524181408.49384-5-romain.beauxis@gmail.com> In-Reply-To: From: Romain Beauxis Date: Sat, 31 May 2025 14:36:51 -0500 X-Gm-Features: AX0GCFufKGdvs5DhvlsUv4KTuTjvo6v5KnBhp_l02Fioh9-gVBarsQy5e4qMFM4 Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH v8 4/5] 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: TGUgdmVuLiAzMCBtYWkgMjAyNSDDoCAxOTo0NCwgQW5kcmVhcyBSaGVpbmhhcmR0CjxhbmRyZWFz LnJoZWluaGFyZHRAb3V0bG9vay5jb20+IGEgw6ljcml0IDoKPgo+IFJvbWFpbiBCZWF1eGlzOgo+ ID4gLS0tCj4gPiAgbGliYXZjb2RlYy92b3JiaXNfcGFyc2VyLmggICAgICAgICAgICAgICAgIHwg MTEgKysrKwo+ID4gIGxpYmF2Y29kZWMvdm9yYmlzZGVjLmMgICAgICAgICAgICAgICAgICAgICB8 IDc1ICsrKysrKysrKysrKystLS0tLS0tLS0KPiA+ICBsaWJhdmZvcm1hdC9vZ2dwYXJzZXZvcmJp cy5jICAgICAgICAgICAgICAgfCA2NyArKysrKysrKysrKysrKysrKystCj4gPiAgdGVzdHMvcmVm L2ZhdGUvb2dnLXZvcmJpcy1jaGFpbmVkLW1ldGEudHh0IHwgIDMgLQo+ID4gIHRlc3RzL3JlZi9m YXRlL3RyYWMtMjczOS50eHQgICAgICAgICAgICAgICB8ICA0ICstCj4gPiAgNSBmaWxlcyBjaGFu Z2VkLCAxMjEgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdp dCBhL2xpYmF2Y29kZWMvdm9yYmlzX3BhcnNlci5oIGIvbGliYXZjb2RlYy92b3JiaXNfcGFyc2Vy LmgKPiA+IGluZGV4IDc4OTkzMmFjNDkuLmIxNzZmZTUzNmMgMTAwNjQ0Cj4gPiAtLS0gYS9saWJh dmNvZGVjL3ZvcmJpc19wYXJzZXIuaAo+ID4gKysrIGIvbGliYXZjb2RlYy92b3JiaXNfcGFyc2Vy LmgKPiA+IEBAIC0zMCw2ICszMCwxNyBAQAo+ID4KPiA+ICB0eXBlZGVmIHN0cnVjdCBBVlZvcmJp c1BhcnNlQ29udGV4dCBBVlZvcmJpc1BhcnNlQ29udGV4dDsKPiA+Cj4gPiArLyoqCj4gPiArICog VXNlZCBieSB0aGUgdm9yYmlzIHBhcnNlciB0byBwYXNzIG5ldyBjaGFpbmVkIHN0cmVhbSBoZWFk ZXJzCj4gPiArICogYXMgZXh0cmFkYXRhLgo+ID4gKyAqLwo+ID4gK3R5cGVkZWYgc3RydWN0IHZv cmJpc19uZXdfZXh0cmFkYXRhIHsKPiA+ICsgICAgdWludDhfdCAqaGVhZGVyOwo+ID4gKyAgICBz aXplX3QgICBoZWFkZXJfc2l6ZTsKPiA+ICsgICAgdWludDhfdCAqc2V0dXA7Cj4gPiArICAgIHNp emVfdCAgIHNldHVwX3NpemU7Cj4gPiArfSB2b3JiaXNfbmV3X2V4dHJhZGF0YTsKPiA+ICsKPiA+ ICAvKioKPiA+ICAgKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgVm9yYmlzIHBhcnNlciB1 c2luZyBoZWFkZXJzIGluIHRoZSBleHRyYWRhdGEuCj4gPiAgICovCj4gPiBkaWZmIC0tZ2l0IGEv bGliYXZjb2RlYy92b3JiaXNkZWMuYyBiL2xpYmF2Y29kZWMvdm9yYmlzZGVjLmMKPiA+IGluZGV4 IGFkYmQ3MjYxODMuLmE0YjE1OWJhOWIgMTAwNjQ0Cj4gPiAtLS0gYS9saWJhdmNvZGVjL3ZvcmJp c2RlYy5jCj4gPiArKysgYi9saWJhdmNvZGVjL3ZvcmJpc2RlYy5jCj4gPiBAQCAtNDMsNiArNDMs NyBAQAo+ID4gICNpbmNsdWRlICJ2b3JiaXMuaCIKPiA+ICAjaW5jbHVkZSAidm9yYmlzZHNwLmgi Cj4gPiAgI2luY2x1ZGUgInZvcmJpc19kYXRhLmgiCj4gPiArI2luY2x1ZGUgInZvcmJpc19wYXJz ZXIuaCIKPiA+ICAjaW5jbHVkZSAieGlwaC5oIgo+ID4KPiA+ICAjZGVmaW5lIFZfTkJfQklUUyA4 Cj4gPiBAQCAtMTc3OCw0NyArMTc3OSw1OSBAQCBzdGF0aWMgaW50IHZvcmJpc19kZWNvZGVfZnJh bWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKPiA+ICAgICAgR2V0Qml0 Q29udGV4dCAqZ2IgPSAmdmMtPmdiOwo+ID4gICAgICBmbG9hdCAqY2hhbm5lbF9wdHJzWzI1NV07 Cj4gPiAgICAgIGludCBpLCBsZW4sIHJldDsKPiA+ICsgICAgc2l6ZV90IG5ld19leHRyYWRhdGFf c2l6ZTsKPiA+ICsgICAgdm9yYmlzX25ld19leHRyYWRhdGEgKm5ld19leHRyYWRhdGE7Cj4gPiAr ICAgIGNvbnN0IHVpbnQ4X3QgKmhlYWRlcjsKPiA+ICsgICAgY29uc3QgdWludDhfdCAqc2V0dXA7 Cj4gPgo+ID4gICAgICBmZl9kbG9nKE5VTEwsICJwYWNrZXQgbGVuZ3RoICVkIFxuIiwgYnVmX3Np emUpOwo+ID4KPiA+IC0gICAgaWYgKCpidWYgPT0gMSAmJiBidWZfc2l6ZSA+IDcpIHsKPiA+IC0g ICAgICAgIGlmICgocmV0ID0gaW5pdF9nZXRfYml0czgoZ2IsIGJ1ZiArIDEsIGJ1Zl9zaXplIC0g MSkpIDwgMCkKPiA+IC0gICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gKyAgICBuZXdfZXh0cmFk YXRhID0gKHZvcmJpc19uZXdfZXh0cmFkYXRhICopYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCj4g PiArICAgICAgICBhdnBrdCwgQVZfUEtUX0RBVEFfTkVXX0VYVFJBREFUQSwgJm5ld19leHRyYWRh dGFfc2l6ZSk7Cj4gPgo+ID4gLSAgICAgICAgdm9yYmlzX2ZyZWUodmMpOwo+ID4gLSAgICAgICAg aWYgKChyZXQgPSB2b3JiaXNfcGFyc2VfaWRfaGRyKHZjKSkpIHsKPiA+IC0gICAgICAgICAgICBh dl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIklkIGhlYWRlciBjb3JydXB0LlxuIik7Cj4gPiAt ICAgICAgICAgICAgdm9yYmlzX2ZyZWUodmMpOwo+ID4gLSAgICAgICAgICAgIHJldHVybiByZXQ7 Cj4gPiAtICAgICAgICB9Cj4gPiArICAgIGlmIChuZXdfZXh0cmFkYXRhKSB7Cj4gPiArICAgICAg ICBoZWFkZXIgPSBuZXdfZXh0cmFkYXRhLT5oZWFkZXI7Cj4gPiArICAgICAgICBzZXR1cCA9IG5l d19leHRyYWRhdGEtPnNldHVwOwo+ID4KPiA+IC0gICAgICAgIGF2X2NoYW5uZWxfbGF5b3V0X3Vu aW5pdCgmYXZjdHgtPmNoX2xheW91dCk7Cj4gPiAtICAgICAgICBpZiAodmMtPmF1ZGlvX2NoYW5u ZWxzID4gOCkgewo+ID4gLSAgICAgICAgICAgIGF2Y3R4LT5jaF9sYXlvdXQub3JkZXIgICAgICAg PSBBVl9DSEFOTkVMX09SREVSX1VOU1BFQzsKPiA+IC0gICAgICAgICAgICBhdmN0eC0+Y2hfbGF5 b3V0Lm5iX2NoYW5uZWxzID0gdmMtPmF1ZGlvX2NoYW5uZWxzOwo+ID4gLSAgICAgICAgfSBlbHNl IHsKPiA+IC0gICAgICAgICAgICBhdl9jaGFubmVsX2xheW91dF9jb3B5KCZhdmN0eC0+Y2hfbGF5 b3V0LCAmZmZfdm9yYmlzX2NoX2xheW91dHNbdmMtPmF1ZGlvX2NoYW5uZWxzIC0gMV0pOwo+ID4g LSAgICAgICAgfQo+ID4gKyAgICAgICAgaWYgKG5ld19leHRyYWRhdGEtPmhlYWRlcl9zaXplID4g NyAmJiAqaGVhZGVyID09IDEpIHsKPiA+ICsgICAgICAgICAgICBpZiAoKHJldCA9IGluaXRfZ2V0 X2JpdHM4KAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYiwgaGVhZGVyICsgMSwK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2V4dHJhZGF0YS0+aGVhZGVyX3Np emUgLSAxKSkgPCAwKQo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4KPiA+IC0g ICAgICAgIGF2Y3R4LT5zYW1wbGVfcmF0ZSA9IHZjLT5hdWRpb19zYW1wbGVyYXRlOwo+ID4gLSAg ICAgICAgcmV0dXJuIGJ1Zl9zaXplOwo+ID4gLSAgICB9Cj4gPiArICAgICAgICAgICAgdm9yYmlz X2ZyZWUodmMpOwo+ID4gKyAgICAgICAgICAgIGlmICgocmV0ID0gdm9yYmlzX3BhcnNlX2lkX2hk cih2YykpKSB7Cj4gPiArICAgICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9S LCAiSWQgaGVhZGVyIGNvcnJ1cHQuXG4iKTsKPiA+ICsgICAgICAgICAgICAgICAgdm9yYmlzX2Zy ZWUodmMpOwo+ID4gKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gKyAgICAgICAgICAg IH0KPiA+Cj4gPiAtICAgIGlmICgqYnVmID09IDMgJiYgYnVmX3NpemUgPiA3KSB7Cj4gPiAtICAg ICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19ERUJVRywgIklnbm9yaW5nIGNvbW1lbnQgaGVhZGVy XG4iKTsKPiA+IC0gICAgICAgIHJldHVybiBidWZfc2l6ZTsKPiA+IC0gICAgfQo+ID4gKyAgICAg ICAgICAgIGF2X2NoYW5uZWxfbGF5b3V0X3VuaW5pdCgmYXZjdHgtPmNoX2xheW91dCk7Cj4gPiAr ICAgICAgICAgICAgaWYgKHZjLT5hdWRpb19jaGFubmVscyA+IDgpIHsKPiA+ICsgICAgICAgICAg ICAgICAgYXZjdHgtPmNoX2xheW91dC5vcmRlciAgICAgICA9IEFWX0NIQU5ORUxfT1JERVJfVU5T UEVDOwo+ID4gKyAgICAgICAgICAgICAgICBhdmN0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzID0g dmMtPmF1ZGlvX2NoYW5uZWxzOwo+ID4gKyAgICAgICAgICAgIH0gZWxzZSB7Cj4gPiArICAgICAg ICAgICAgICAgIGF2X2NoYW5uZWxfbGF5b3V0X2NvcHkoCj4gPiArICAgICAgICAgICAgICAgICAg ICAmYXZjdHgtPmNoX2xheW91dCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICZmZl92b3JiaXNf Y2hfbGF5b3V0c1t2Yy0+YXVkaW9fY2hhbm5lbHMgLSAxXSk7Cj4gPiArICAgICAgICAgICAgfQo+ ID4KPiA+IC0gICAgaWYgKCpidWYgPT0gNSAmJiBidWZfc2l6ZSA+IDcgJiYgdmMtPmNoYW5uZWxf cmVzaWR1ZXMgJiYgIXZjLT5tb2Rlcykgewo+ID4gLSAgICAgICAgaWYgKChyZXQgPSBpbml0X2dl dF9iaXRzOChnYiwgYnVmICsgMSwgYnVmX3NpemUgLSAxKSkgPCAwKQo+ID4gLSAgICAgICAgICAg IHJldHVybiByZXQ7Cj4gPiArICAgICAgICAgICAgYXZjdHgtPnNhbXBsZV9yYXRlID0gdmMtPmF1 ZGlvX3NhbXBsZXJhdGU7Cj4gPiArICAgICAgICB9Cj4gPgo+ID4gLSAgICAgICAgaWYgKChyZXQg PSB2b3JiaXNfcGFyc2Vfc2V0dXBfaGRyKHZjKSkpIHsKPiA+IC0gICAgICAgICAgICBhdl9sb2co YXZjdHgsIEFWX0xPR19FUlJPUiwgIlNldHVwIGhlYWRlciBjb3JydXB0LlxuIik7Cj4gPiAtICAg ICAgICAgICAgdm9yYmlzX2ZyZWUodmMpOwo+ID4gLSAgICAgICAgICAgIHJldHVybiByZXQ7Cj4g PiArICAgICAgICBpZiAobmV3X2V4dHJhZGF0YS0+c2V0dXBfc2l6ZSA+IDcgJiYgKnNldHVwID09 IDUgJiYKPiA+ICsgICAgICAgICAgICB2Yy0+Y2hhbm5lbF9yZXNpZHVlcyAmJiAhdmMtPm1vZGVz KSB7Cj4gPiArICAgICAgICAgICAgaWYgKChyZXQgPSBpbml0X2dldF9iaXRzOCgKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICBnYiwgc2V0dXAgKyAxLAo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5ld19leHRyYWRhdGEtPnNldHVwX3NpemUgLSAxKSkgPCAwKQo+ID4gKyAg ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gKwo+ID4gKyAgICAgICAgICAgIGlmICgocmV0 ID0gdm9yYmlzX3BhcnNlX3NldHVwX2hkcih2YykpKSB7Cj4gPiArICAgICAgICAgICAgICAgIGF2 X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiU2V0dXAgaGVhZGVyIGNvcnJ1cHQuXG4iKTsKPiA+ ICsgICAgICAgICAgICAgICAgdm9yYmlzX2ZyZWUodmMpOwo+ID4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Owo+ID4gKyAgICAgICAgICAgIH0KPiA+ICAgICAgICAgIH0KPiA+IC0gICAgICAg IHJldHVybiBidWZfc2l6ZTsKPiA+ICAgICAgfQo+ID4KPiA+ICAgICAgaWYgKCF2Yy0+Y2hhbm5l bF9yZXNpZHVlcyB8fCAhdmMtPm1vZGVzKSB7Cj4gPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQv b2dncGFyc2V2b3JiaXMuYyBiL2xpYmF2Zm9ybWF0L29nZ3BhcnNldm9yYmlzLmMKPiA+IGluZGV4 IDYyY2MyZGE2ZGUuLmY4ZTY2ZTgxMjcgMTAwNjQ0Cj4gPiAtLS0gYS9saWJhdmZvcm1hdC9vZ2dw YXJzZXZvcmJpcy5jCj4gPiArKysgYi9saWJhdmZvcm1hdC9vZ2dwYXJzZXZvcmJpcy5jCj4gPiBA QCAtMjU1LDEyICsyNTUsMTkgQEAgc3RhdGljIHZvaWQgdm9yYmlzX2NsZWFudXAoQVZGb3JtYXRD b250ZXh0ICpzLCBpbnQgaWR4KQo+ID4gICAgICBzdHJ1Y3Qgb2dnICpvZ2cgPSBzLT5wcml2X2Rh dGE7Cj4gPiAgICAgIHN0cnVjdCBvZ2dfc3RyZWFtICpvcyA9IG9nZy0+c3RyZWFtcyArIGlkeDsK PiA+ICAgICAgc3RydWN0IG9nZ3ZvcmJpc19wcml2YXRlICpwcml2ID0gb3MtPnByaXZhdGU7Cj4g PiArICAgIHZvcmJpc19uZXdfZXh0cmFkYXRhICpuZXdfZXh0cmFkYXRhOwo+ID4gICAgICBpbnQg aTsKPiA+ICAgICAgaWYgKG9zLT5wcml2YXRlKSB7Cj4gPiAgICAgICAgICBhdl92b3JiaXNfcGFy c2VfZnJlZSgmcHJpdi0+dnApOwo+ID4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykK PiA+ICAgICAgICAgICAgICBhdl9mcmVlcCgmcHJpdi0+cGFja2V0W2ldKTsKPiA+ICAgICAgfQo+ ID4gKwo+ID4gKyAgICBpZiAob3MtPm5ld19leHRyYWRhdGEpIHsKPiA+ICsgICAgICAgIG5ld19l eHRyYWRhdGEgPSAodm9yYmlzX25ld19leHRyYWRhdGEgKilvcy0+bmV3X2V4dHJhZGF0YTsKPiA+ ICsgICAgICAgIGF2X2ZyZWVwKCZuZXdfZXh0cmFkYXRhLT5oZWFkZXIpOwo+ID4gKyAgICAgICAg YXZfZnJlZXAoJm5ld19leHRyYWRhdGEtPnNldHVwKTsKPiA+ICsgICAgfQo+ID4gIH0KPiA+Cj4g PiAgc3RhdGljIGludCB2b3JiaXNfdXBkYXRlX21ldGFkYXRhKEFWRm9ybWF0Q29udGV4dCAqcywg aW50IGlkeCkKPiA+IEBAIC00MzMsNyArNDQwLDEwIEBAIHN0YXRpYyBpbnQgdm9yYmlzX3BhY2tl dChBVkZvcm1hdENvbnRleHQgKnMsIGludCBpZHgpCj4gPiAgICAgIHN0cnVjdCBvZ2cgKm9nZyA9 IHMtPnByaXZfZGF0YTsKPiA+ICAgICAgc3RydWN0IG9nZ19zdHJlYW0gKm9zID0gb2dnLT5zdHJl YW1zICsgaWR4Owo+ID4gICAgICBzdHJ1Y3Qgb2dndm9yYmlzX3ByaXZhdGUgKnByaXYgPSBvcy0+ cHJpdmF0ZTsKPiA+ICsgICAgdm9yYmlzX25ld19leHRyYWRhdGEgKm5ld19leHRyYWRhdGE7Cj4g PiAgICAgIGludCBkdXJhdGlvbiwgZmxhZ3MgPSAwOwo+ID4gKyAgICBpbnQgc2tpcF9wYWNrZXQg PSAwOwo+ID4gKyAgICBpbnQgcmV0Owo+ID4KPiA+ICAgICAgaWYgKCFwcml2LT52cCkKPiA+ICAg ICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ID4gQEAgLTQ5NiwxMCArNTA2LDYx IEBAIHN0YXRpYyBpbnQgdm9yYmlzX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIGludCBpZHgp Cj4gPiAgICAgICAgICBpZiAoZHVyYXRpb24gPCAwKSB7Cj4gPiAgICAgICAgICAgICAgb3MtPnBm bGFncyB8PSBBVl9QS1RfRkxBR19DT1JSVVBUOwo+ID4gICAgICAgICAgICAgIHJldHVybiAwOwo+ ID4gLSAgICAgICAgfSBlbHNlIGlmIChmbGFncyAmIFZPUkJJU19GTEFHX0NPTU1FTlQpIHsKPiA+ IC0gICAgICAgICAgICB2b3JiaXNfdXBkYXRlX21ldGFkYXRhKHMsIGlkeCk7Cj4gPiArICAgICAg ICB9Cj4gPiArCj4gPiArICAgICAgICBpZiAoZmxhZ3MgJiBWT1JCSVNfRkxBR19IRUFERVIpIHsK PiA+ICsgICAgICAgICAgICByZXQgPSB2b3JiaXNfcGFyc2VfaGVhZGVyKHMsIHMtPnN0cmVhbXNb aWR4XSwgb3MtPmJ1ZiArIG9zLT5wc3RhcnQsIG9zLT5wc2l6ZSk7Cj4gPiArICAgICAgICAgICAg aWYgKHJldCA8IDApCj4gPiArICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiArCj4gPiAr ICAgICAgICAgICAgaWYgKCFvcy0+bmV3X2V4dHJhZGF0YSkgewo+ID4gKyAgICAgICAgICAgICAg ICBvcy0+bmV3X2V4dHJhZGF0YSA9IGF2X21hbGxvY3ooc2l6ZW9mKHZvcmJpc19uZXdfZXh0cmFk YXRhKSk7Cj4gPiArICAgICAgICAgICAgICAgIGlmICghb3MtPm5ld19leHRyYWRhdGEpCj4gPiAr ICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ID4gKyAgICAgICAg ICAgIH0KPiA+ICsKPiA+ICsgICAgICAgICAgICBvcy0+bmV3X2V4dHJhZGF0YV9zaXplID0gc2l6 ZW9mKHZvcmJpc19uZXdfZXh0cmFkYXRhKTsKPiA+ICsgICAgICAgICAgICBuZXdfZXh0cmFkYXRh ID0gKHZvcmJpc19uZXdfZXh0cmFkYXRhICopb3MtPm5ld19leHRyYWRhdGE7Cj4gPiArCj4gPiAr ICAgICAgICAgICAgcmV0ID0gYXZfcmVhbGxvY3AoJm5ld19leHRyYWRhdGEtPmhlYWRlciwgb3Mt PnBzaXplKTsKPiA+ICsgICAgICAgICAgICBpZiAocmV0IDwgMCkKPiA+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHJldDsKPiA+ICsKPiA+ICsgICAgICAgICAgICBtZW1jcHkobmV3X2V4dHJhZGF0 YS0+aGVhZGVyLCAgb3MtPmJ1ZiArIG9zLT5wc3RhcnQsIG9zLT5wc2l6ZSk7Cj4gPiArICAgICAg ICAgICAgbmV3X2V4dHJhZGF0YS0+aGVhZGVyX3NpemUgPSBvcy0+cHNpemU7Cj4gPiArCj4gPiAr ICAgICAgICAgICAgc2tpcF9wYWNrZXQgPSAxOwo+ID4gKyAgICAgICAgfQo+ID4gKwo+ID4gKyAg ICAgICAgaWYgKGZsYWdzICYgVk9SQklTX0ZMQUdfQ09NTUVOVCkgewo+ID4gKyAgICAgICAgICAg IHJldCA9IHZvcmJpc191cGRhdGVfbWV0YWRhdGEocywgaWR4KTsKPiA+ICsgICAgICAgICAgICBp ZiAocmV0IDwgMCkKPiA+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsKPiA+ICAg ICAgICAgICAgICBmbGFncyA9IDA7Cj4gPiArICAgICAgICAgICAgc2tpcF9wYWNrZXQgPSAxOwo+ ID4gKyAgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICAgaWYgKGZsYWdzICYgVk9SQklTX0ZMQUdf U0VUVVApIHsKPiA+ICsgICAgICAgICAgICBpZiAoIW9zLT5uZXdfZXh0cmFkYXRhKSB7Cj4gPiAr ICAgICAgICAgICAgICAgIG9zLT5uZXdfZXh0cmFkYXRhID0gYXZfbWFsbG9jeihzaXplb2Yodm9y YmlzX25ld19leHRyYWRhdGEpKTsKPiA+ICsgICAgICAgICAgICAgICAgaWYgKCFvcy0+bmV3X2V4 dHJhZGF0YSkKPiA+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7 Cj4gPiArICAgICAgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICAgICAgIG9zLT5uZXdfZXh0cmFk YXRhX3NpemUgPSBzaXplb2Yodm9yYmlzX25ld19leHRyYWRhdGEpOwo+ID4gKyAgICAgICAgICAg IG5ld19leHRyYWRhdGEgPSAodm9yYmlzX25ld19leHRyYWRhdGEgKilvcy0+bmV3X2V4dHJhZGF0 YTsKPiA+ICsKPiA+ICsgICAgICAgICAgICByZXQgPSBhdl9yZWFsbG9jcCgmbmV3X2V4dHJhZGF0 YS0+c2V0dXAsIG9zLT5wc2l6ZSk7Cj4gPiArICAgICAgICAgICAgaWYgKHJldCA8IDApCj4gPiAr ICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiArCj4gPiArICAgICAgICAgICAgbWVtY3B5 KG5ld19leHRyYWRhdGEtPnNldHVwLCBvcy0+YnVmICsgb3MtPnBzdGFydCwgb3MtPnBzaXplKTsK PiA+ICsgICAgICAgICAgICBuZXdfZXh0cmFkYXRhLT5zZXR1cF9zaXplID0gb3MtPnBzaXplOwo+ ID4gKwo+ID4gKyAgICAgICAgICAgIHNraXBfcGFja2V0ID0gMTsKPiA+ICAgICAgICAgIH0KPiA+ ICsKPiA+ICAgICAgICAgIG9zLT5wZHVyYXRpb24gPSBkdXJhdGlvbjsKPiA+ICAgICAgfQo+ID4K PiA+IEBAIC01MjEsNyArNTgyLDcgQEAgc3RhdGljIGludCB2b3JiaXNfcGFja2V0KEFWRm9ybWF0 Q29udGV4dCAqcywgaW50IGlkeCkKPiA+ICAgICAgICAgIHByaXYtPmZpbmFsX2R1cmF0aW9uICs9 IG9zLT5wZHVyYXRpb247Cj4gPiAgICAgIH0KPiA+Cj4gPiAtICAgIHJldHVybiAwOwo+ID4gKyAg ICByZXR1cm4gc2tpcF9wYWNrZXQ7Cj4gPiAgfQo+ID4KPiA+ICBjb25zdCBzdHJ1Y3Qgb2dnX2Nv ZGVjIGZmX3ZvcmJpc19jb2RlYyA9IHsKPgo+IFRoZXJlIGFyZSBtdWx0aXBsZSBpc3N1ZXMgd2l0 aCB0aGlzIHBhdGNoOgoKVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLgoKPiAxLiBUaGUgc2lk ZSBkYXRhIHN0cnVjdHVyZXMgYXJlIG5vdCBwYWRkZWQsIGxlYWRpbmcgdG8KPiBoZWFwLWJ1ZmZl ci1vdmVyZmxvd3MgaW4gdGhlIGZhdGUtb2dnLXZvcmJpcy1jaGFpbmVkLW1ldGEgdGVzdC4KCkRv IHlvdSBoYXZlIGEgcG9pbnRlciB0byB0aGlzIGlzc3VlPyBJcyB0aGVyZSBhIGZhaWxpbmcgdGVz dCBoZXJlOgpodHRwczovL2ZhdGUuZmZtcGVnLm9yZy8gPwoKPiAyLiBUaGUgc2lkZSBkYXRhIHN0 cnVjdHVyZXMgYXJlIG5vdCBmbGF0IGFuZCB0aGVyZWZvcmUgbm90IHN1aXRhYmxlIGZvcgo+IHVz ZSBhcyBBVlBhY2tldFNpZGVEYXRhLiAoVGhlIHNldHVwIGFuZCBoZWFkZXIgYXJyYXlzIGFyZSBj dXJyZW50bHkKPiBvd25lZCBieSB0aGUgZGVtdXhlciwgeWV0IGFuIEFWUGFja2V0IGlzIHN1cHBv c2VkIHRvIGJlIHZhbGlkIG9uIGl0cwo+IG93bi4gQnV0IHRoaXMgc2lkZSBkYXRhIGJlY29tZXMg aW52YWxpZCB3aGVuIHRoZSBkZW11eGVyIGVuY291bnRlcnMgYQo+IG5ldyBzaWRlIGRhdGEgKGFu ZCByZWFsbG9jYXRlcyBpdHMgaW50ZXJuYWwgYnVmZmVycykgb3Igd2hlbiB0aGUgZGVtdXhlcgo+ IGlzIGNsb3NlZC4pCgpJIGNhbiB3b3JrIG9uIHRoYXQuCgo+IDMuIFRoZSB2b3JiaXNfbmV3X2V4 dHJhZGF0YSBuYW1lIGRvZXMgbm90IGFiaWRlIGJ5IG91ciBuYW1pbmcKPiBjb252ZW50aW9uczsg Z2l2ZW4gdGhhdCB0aGlzIGlzIGEgcHVibGljIGhlYWRlciwgaXQgd291bGQgbmVlZCBhbiBBViBw cmVmaXguCgpOb3RlZC4KCj4gNC4gWW91IGZvcmdvdCB0byBhZGQgYW4gQVBJY2hhbmdlcyBlbnRy eSBhbmQgYnVtcCBsYXZjIG1pbm9yIGZvciB5b3VyCj4gYWRkaXRpb24uCgpXaWxsIGFkZAoKPiA1 LiBZb3UgZm9yZ290IHRvIGFkZCBzdGRkZWYuaCB0byB2b3JiaXNfcGFyc2VyLmguCgpXaWxsIGFk ZAoKPiA2LiBZb3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgb3VyIHBhcnNpbmcgQVBJIGRvZXMgbm90 IHdvcmsgd2l0aAo+IEFWUGFja2V0cywgYnV0IHdpdGggcmF3IGJ1ZmZlcnMuIEl0IChvciByYXRo ZXI6IHBhcnNlX3BhY2tldCgpIGluCj4gbGliYXZmb3JtYXQvZGVtdXguYykgdGhlcmVmb3JlIGhh cyBhIHRlbmRlbmN5IHRvIHB1dCB0aGUgc2lkZSBkYXRhIHRvCj4gdGhlIHdyb25nIHBhY2tldHMg b3IgY29tcGxldGVseSBvbWl0IGl0ICh0aGlzIGhhcHBlbnMgd2hlbiB0aGUgcGFyc2VyCj4gaW50 cm9kdWNlcyBhIGRlbGF5KS4gVm9yYmlzLWluLW9nZyBkb2VzIG5vdCBlbmFibGUgdGhlIHBhcnNl ciwgc28gaXQgaXMKPiAoY3VycmVudGx5KSB1bmFmZmVjdGVkIGJ5IHRoaXMuCgpOb3RlZCwgZ2xh ZCBpdCdzIG5vdCBpbXBhY3RlZC4gSSdsbCBoYXZlIGEgbG9vayBhdCB0aGUgY29ycmVzcG9uZGlu ZyBjb2RlLgoKSSdsbCBzZW5kIGEgZml4IGZvciB0aGVzZSBhcyBwYXJ0IG9mIHRoZSBuZXh0IHJv dyBvZiBwYXRjaGVzLiBJJ2xsCm1ha2Ugc3VyZSB0byBDQy8geW91IHNvIEkgY2FuIGdldCB5b3Vy IG9waW5pb24gYmVmb3JlIGl0IGdldHMgbWVyZ2VkLgoKLS0gUm9tYWluCgo+IC0gQW5kcmVhcwo+ Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBmZm1w ZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKPiBodHRwczov L2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKPgo+IFRvIHVuc3Vic2Ny aWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZm bXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZt cGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8v ZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwK ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJl Ii4K