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 ESMTP id D62254CBF4 for ; Thu, 15 Aug 2024 12:45:54 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 634E168DBA6; Thu, 15 Aug 2024 15:45:53 +0300 (EEST) Received: from mail-vk1-f182.google.com (mail-vk1-f182.google.com [209.85.221.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 10B1568DB02 for ; Thu, 15 Aug 2024 15:45:47 +0300 (EEST) Received: by mail-vk1-f182.google.com with SMTP id 71dfb90a1353d-4f6d01961a7so308095e0c.2 for ; Thu, 15 Aug 2024 05:45:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723725945; x=1724330745; 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=Oik4+8UX0+3dIu929N3RsDEm28SiNwWHQvNpDg3BkOI=; b=GPu56o+bKUxUEfvdEkG1RX+2g914dvwbfBirHG5Z0MsQGMHkgVDM1HGPlnMQVe6UZb Z9NTloZOjm75jbzHw8wMDaB3yVjQBzFNKU9cmHMj7O0xMwYS3slJPNXVr7DjmeBO2Sf0 M2crddzyLVnnocWJNdh3UG667I073mUMlfklQhG9NLPzJ18AV52E3Wtx2Eix52IqlgC/ GfMshDT+RqYPs5BQnCu+c1SbrO8A+9zqnl89ct9bkhSGjmf2i4rgXwgM9NRXHTjNRwTC CDR/ov730apOelKPNZDR1EWCeQDtnggYC1gNFd1WrGawexBAY1CSjG2PEj1X5ObVidtw OMWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723725945; x=1724330745; 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=Oik4+8UX0+3dIu929N3RsDEm28SiNwWHQvNpDg3BkOI=; b=LqGqI6UaF8mHk3EkABBhjlL1aNBLeYyCZl4TS6/uZXnXcbPS8TPL7NijCh6TQIlI5S 7nBXwUI7utlYt93mT9ehHVcqHcgufWAdugxow4N45m2pLnmM76u9NiCEvjegvSzPpRMj JIR5ELv6j/cqWPoLJneOJ8yzs+g+YfqrhaXRVDwf8xNpAuBgoHDp1VWxDmlNbxrEZyyg IX6zeKEZjMRUD15yNFm5Jawf5gIszyY3hA09qpMBGhGBRQwbjXEYCCBVqLTw3Id9AHXJ cbHAYVMpdIGkT2IyUaJrQa8hG0ruWZa1QfKfuhN8PddVfcY6qh2s2uqknIRLQ5FGFlV8 1lyQ== X-Gm-Message-State: AOJu0YzuFkFs1xmzYLkBw306LfilY5736j7euNFz3rM2dHUlRxxPYin0 yBikml5tldYpMZevymacZQLWUS18R4QPVhfYjFD1pcYjotSbiZw4hPT/x29yBrq3vpsjqoN0c+D 4+cP6VcRLHgV2anZ8D7ZZ6Esjf023lA== X-Google-Smtp-Source: AGHT+IFC7IV4uSrMBMLqL2MX/ILkmXX/HhVQDo87b6BnPCeKcqCgS5Fr6AR7NkdNvn02uR6M69g1EmwyhGDToVNH7As= X-Received: by 2002:a05:6122:3c8b:b0:4ec:f8e4:e0bf with SMTP id 71dfb90a1353d-4fad1b0ef62mr8154539e0c.2.1723725945349; Thu, 15 Aug 2024 05:45:45 -0700 (PDT) MIME-Version: 1.0 References: <20240728031807.462810-1-nuomi2021@gmail.com> In-Reply-To: From: Nuo Mi Date: Thu, 15 Aug 2024 20:45:34 +0800 Message-ID: To: ffmpeg-devel@ffmpeg.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 11/11] avcodec/vvcdec: move frame tab memset from the main thread to worker threads 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: T24gU3VuLCBBdWcgMTEsIDIwMjQgYXQgMTA6MDHigK9QTSBOdW8gTWkgPG51b21pMjAyMUBnbWFp bC5jb20+IHdyb3RlOgoKPgo+Cj4gT24gU3VuLCBKdWwgMjgsIDIwMjQgYXQgMTE6MTnigK9BTSBO dW8gTWkgPG51b21pMjAyMUBnbWFpbC5jb20+IHdyb3RlOgo+Cj4+IG1lbXNldCB0YWJsZXMgaW4g dGhlIG1haW4gdGhyZWFkIGNhbiBiZWNvbWUgYSBib3R0bGVuZWNrIGZvciB0aGUgZGVjb2Rlci4K Pj4gRm9yIGV4YW1wbGUsIGlmIGl0IHRha2VzIDElIG9mIHRoZSBwcm9jZXNzaW5nIHRpbWUgZm9y IG9uZSBjb3JlLCB0aGUKPj4gbWF4aW11bSBhY2hpZXZhYmxlIEZQUyB3aWxsIGJlIDEwMC4KPj4g TW92ZSB0aGUgbWVtZXNldCB0byB3b3JrZXIgdGhyZWFkcyB3aWxsIGZpeCB0aGUgaXNzdWUuCj4+ Cj4gd2lsbCBhcHBseSBuZXh0IHdlZWsgaWYgdGhlcmUgYXJlIG5vIG9iamVjdGlvbnMKPgpEb25l Cgo+IC0tLQo+PiAgbGliYXZjb2RlYy92dmMvZGVjLmMgICAgfCAgMTMgKysrKy0KPj4gIGxpYmF2 Y29kZWMvdnZjL3RocmVhZC5jIHwgMTIyICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0KPj4gIGxpYmF2Y29kZWMvdnZjL3RocmVhZC5oIHwgICAxICsKPj4gIDMgZmlsZXMg Y2hhbmdlZCwgODUgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1n aXQgYS9saWJhdmNvZGVjL3Z2Yy9kZWMuYyBiL2xpYmF2Y29kZWMvdnZjL2RlYy5jCj4+IGluZGV4 IDU3NWJjZmEzM2QuLmQzNDcxMzI5NmQgMTAwNjQ0Cj4+IC0tLSBhL2xpYmF2Y29kZWMvdnZjL2Rl Yy5jCj4+ICsrKyBiL2xpYmF2Y29kZWMvdnZjL2RlYy5jCj4+IEBAIC04Miw3ICs4MiwxMyBAQCBz dGF0aWMgaW50IHRsX2NyZWF0ZShUYWJMaXN0ICpsKQo+PiAgICAgICAgICAgICAgaWYgKCEqdC0+ dGFiKQo+PiAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4+ICAgICAg ICAgIH0KPj4gLSAgICB9IGVsc2UgaWYgKGwtPnplcm8pIHsKPj4gKyAgICB9Cj4+ICsgICAgcmV0 dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdGxfemVybyhUYWJMaXN0ICpsKQo+PiAr ewo+PiArICAgIGlmIChsLT56ZXJvKSB7Cj4+ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg bC0+bmJfdGFiczsgaSsrKSB7Cj4+ICAgICAgICAgICAgICBUYWIgKnQgPSBsLT50YWJzICsgaTsK Pj4gICAgICAgICAgICAgIG1lbXNldCgqdC0+dGFiLCAwLCB0LT5zaXplKTsKPj4gQEAgLTQwNCw2 ICs0MTAsMTEgQEAgc3RhdGljIGludCBwaWNfYXJyYXlzX2luaXQoVlZDQ29udGV4dCAqcywKPj4g VlZDRnJhbWVDb250ZXh0ICpmYykKPj4gICAgICByZXR1cm4gMDsKPj4gIH0KPj4KPj4gK2ludCBm Zl92dmNfcGVyX2ZyYW1lX2luaXQoVlZDRnJhbWVDb250ZXh0ICpmYykKPj4gK3sKPj4gKyAgICBy ZXR1cm4gZnJhbWVfY29udGV4dF9mb3JfZWFjaF90bChmYywgdGxfemVybyk7Cj4+ICt9Cj4+ICsK Pj4gIHN0YXRpYyBpbnQgbWluX3Bvc2l0aXZlKGNvbnN0IGludCBpZHgsIGNvbnN0IGludCBkaWZm LCBjb25zdCBpbnQKPj4gbWluX2RpZmYpCj4+ICB7Cj4+ICAgICAgcmV0dXJuIGRpZmYgPiAwICYm IChpZHggPCAwIHx8IGRpZmYgPCBtaW5fZGlmZik7Cj4+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVj L3Z2Yy90aHJlYWQuYyBiL2xpYmF2Y29kZWMvdnZjL3RocmVhZC5jCj4+IGluZGV4IDI4MDY1ZDcy NmYuLjc0ZjhlNGU5ZDAgMTAwNjQ0Cj4+IC0tLSBhL2xpYmF2Y29kZWMvdnZjL3RocmVhZC5jCj4+ ICsrKyBiL2xpYmF2Y29kZWMvdnZjL3RocmVhZC5jCj4+IEBAIC00MCw2ICs0MCw3IEBAIHR5cGVk ZWYgc3RydWN0IFByb2dyZXNzTGlzdGVuZXIgewo+PiAgfSBQcm9ncmVzc0xpc3RlbmVyOwo+Pgo+ PiAgdHlwZWRlZiBlbnVtIFZWQ1Rhc2tTdGFnZSB7Cj4+ICsgICAgVlZDX1RBU0tfU1RBR0VfSU5J VCwgICAgICAgICAgICAgICAgICAgIC8vIGZvciBDVFUoMCwgMCkgb25seQo+PiAgICAgIFZWQ19U QVNLX1NUQUdFX1BBUlNFLAo+PiAgICAgIFZWQ19UQVNLX1NUQUdFX0lOVEVSLAo+PiAgICAgIFZW Q19UQVNLX1NUQUdFX1JFQ09OLAo+PiBAQCAtMTc1LDEwICsxNzYsMTQgQEAgc3RhdGljIGludCB0 YXNrX2hhc190YXJnZXRfc2NvcmUoVlZDVGFzayAqdCwgY29uc3QKPj4gVlZDVGFza1N0YWdlIHN0 YWdlLCBjb25zdCB1aW4KPj4gICAgICB1aW50OF90IHRhcmdldCA9IDA7Cj4+ICAgICAgVlZDRnJh bWVDb250ZXh0ICpmYyA9IHQtPmZjOwo+Pgo+PiArICAgIGlmIChzdGFnZSA9PSBWVkNfVEFTS19T VEFHRV9JTklUKQo+PiArICAgICAgICByZXR1cm4gMTsKPj4gKwo+PiAgICAgIGlmIChzdGFnZSA9 PSBWVkNfVEFTS19TVEFHRV9QQVJTRSkgewo+PiAtICAgICAgICBjb25zdCBIMjY2UmF3U1BTICpy c3BzID0gZmMtPnBzLnNwcy0+cjsKPj4gLSAgICAgICAgY29uc3QgaW50IHdwcCA9IHJzcHMtPnNw c19lbnRyb3B5X2NvZGluZ19zeW5jX2VuYWJsZWRfZmxhZyAmJgo+PiAhaXNfZmlyc3Rfcm93KGZj LCB0LT5yeCwgdC0+cnkpOwo+PiAtICAgICAgICB0YXJnZXQgPSAyICsgd3BwIC0gMTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAvL2xlZnQgcGFyc2UgKwo+PiBjb2xvY2F0aW9uICsgd3BwIC0g bm8gcHJldmlvdXMgc3RhZ2UKPj4gKyAgICAgICAgY29uc3QgSDI2NlJhd1NQUyAqcnNwcyAgID0g ZmMtPnBzLnNwcy0+cjsKPj4gKyAgICAgICAgY29uc3QgaW50IHdwcCAgICAgICAgICAgID0KPj4g cnNwcy0+c3BzX2VudHJvcHlfY29kaW5nX3N5bmNfZW5hYmxlZF9mbGFnICYmICFpc19maXJzdF9y b3coZmMsIHQtPnJ4LAo+PiB0LT5yeSk7Cj4+ICsgICAgICAgIGNvbnN0IGludCBub19wcmV2X3N0 YWdlICA9IHQtPnJzID4gMDsKPj4gKyAgICAgICAgdGFyZ2V0ID0gMiArIHdwcCAtIG5vX3ByZXZf c3RhZ2U7Cj4+ICAvL2xlZnQgcGFyc2UgKyBjb2xvY2F0aW9uICsgd3BwIC0gbm9fcHJldl9zdGFn ZQo+PiAgICAgIH0gZWxzZSBpZiAoc3RhZ2UgPT0gVlZDX1RBU0tfU1RBR0VfSU5URVIpIHsKPj4g ICAgICAgICAgdGFyZ2V0ID0gYXRvbWljX2xvYWQoJnQtPnRhcmdldF9pbnRlcl9zY29yZSk7Cj4+ ICAgICAgfSBlbHNlIHsKPj4gQEAgLTM5OSw2ICs0MDQsNTUgQEAgc3RhdGljIGludCB0YXNrX3By aW9yaXR5X2hpZ2hlcihjb25zdCBBVlRhc2sgKl9hLAo+PiBjb25zdCBBVlRhc2sgKl9iKQo+PiAg ICAgIHJldHVybiBhLT5yeSA8IGItPnJ5Owo+PiAgfQo+Pgo+PiArc3RhdGljIHZvaWQgY2hlY2tf Y29sb2NhdGlvbihWVkNDb250ZXh0ICpzLCBWVkNUYXNrICp0KQo+PiArewo+PiArICAgIGNvbnN0 IFZWQ0ZyYW1lQ29udGV4dCAqZmMgPSB0LT5mYzsKPj4gKwo+PiArICAgIGlmIChmYy0+cHMucGgu ci0+cGhfdGVtcG9yYWxfbXZwX2VuYWJsZWRfZmxhZyB8fAo+PiBmYy0+cHMuc3BzLT5yLT5zcHNf c2J0bXZwX2VuYWJsZWRfZmxhZykgewo+PiArICAgICAgICBWVkNGcmFtZSAqY29sICAgICAgID0g ZmMtPnJlZi0+Y29sbG9jYXRlZF9yZWY7Cj4+ICsgICAgICAgIGNvbnN0IGludCBmaXJzdF9jb2wg PSB0LT5yeCA9PSBmYy0+cHMucHBzLT5jdGJfdG9fY29sX2JkW3QtPnJ4XTsKPj4gKyAgICAgICAg aWYgKGNvbCAmJiBmaXJzdF9jb2wpIHsKPj4gKyAgICAgICAgICAgIC8vd2UgZGVwZW5kIG9uIGJv dHRvbSBhbmQgcmlnaHQgYm91bmRhcnksIGRvIG5vdCAtIDEgZm9yIHkKPj4gKyAgICAgICAgICAg IGNvbnN0IGludCB5ID0gKHQtPnJ5IDw8IGZjLT5wcy5zcHMtPmN0Yl9sb2cyX3NpemVfeSk7Cj4+ ICsgICAgICAgICAgICBhZGRfcHJvZ3Jlc3NfbGlzdGVuZXIoY29sLCAmdC0+Y29sX2xpc3RlbmVy LCB0LCBzLAo+PiBWVkNfUFJPR1JFU1NfTVYsIHkpOwo+PiArICAgICAgICAgICAgcmV0dXJuOwo+ PiArICAgICAgICB9Cj4+ICsgICAgfQo+PiArICAgIGZyYW1lX3RocmVhZF9hZGRfc2NvcmUocywg ZmMtPmZ0LCB0LT5yeCwgdC0+cnksCj4+IFZWQ19UQVNLX1NUQUdFX1BBUlNFKTsKPj4gK30KPj4g Kwo+PiArc3RhdGljIHZvaWQgc3VibWl0X2VudHJ5X3BvaW50KFZWQ0NvbnRleHQgKnMsIFZWQ0Zy YW1lVGhyZWFkICpmdCwKPj4gU2xpY2VDb250ZXh0ICpzYywgRW50cnlQb2ludCAqZXApCj4+ICt7 Cj4+ICsgICAgY29uc3QgaW50IHJzID0gc2MtPnNoLmN0Yl9hZGRyX2luX2N1cnJfc2xpY2VbZXAt PmN0dV9zdGFydF07Cj4+ICsgICAgVlZDVGFzayAqdCAgID0gZnQtPnRhc2tzICsgcnM7Cj4+ICsK Pj4gKyAgICBmcmFtZV90aHJlYWRfYWRkX3Njb3JlKHMsIGZ0LCB0LT5yeCwgdC0+cnksIFZWQ19U QVNLX1NUQUdFX1BBUlNFKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBydW5faW5pdChWVkND b250ZXh0ICpzLCBWVkNMb2NhbENvbnRleHQgKmxjLCBWVkNUYXNrICp0KQo+PiArewo+PiArICAg IFZWQ0ZyYW1lQ29udGV4dCAqZmMgPSBsYy0+ZmM7Cj4+ICsgICAgVlZDRnJhbWVUaHJlYWQgKmZ0 ICA9IGZjLT5mdDsKPj4gKyAgICBjb25zdCBpbnQgcmV0ICAgICAgID0gZmZfdnZjX3Blcl9mcmFt ZV9pbml0KGZjKTsKPj4gKwo+PiArICAgIGlmIChyZXQgPCAwKQo+PiArICAgICAgICByZXR1cm4g cmV0Owo+PiArCj4+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmYy0+bmJfc2xpY2VzOyBpKysp IHsKPj4gKyAgICAgICAgU2xpY2VDb250ZXh0ICpzYyA9IGZjLT5zbGljZXNbaV07Cj4+ICsgICAg ICAgIGZvciAoaW50IGogPSAwOyBqIDwgc2MtPm5iX2VwczsgaisrKSB7Cj4+ICsgICAgICAgICAg ICBFbnRyeVBvaW50ICplcCA9IHNjLT5lcHMgKyBqOwo+PiArICAgICAgICAgICAgZm9yIChpbnQg ayA9IGVwLT5jdHVfc3RhcnQ7IGsgPCBlcC0+Y3R1X2VuZDsgaysrKSB7Cj4+ICsgICAgICAgICAg ICAgICAgY29uc3QgaW50IHJzID0gc2MtPnNoLmN0Yl9hZGRyX2luX2N1cnJfc2xpY2Vba107Cj4+ ICsgICAgICAgICAgICAgICAgVlZDVGFzayAqdCAgID0gZnQtPnRhc2tzICsgcnM7Cj4+ICsgICAg ICAgICAgICAgICAgY2hlY2tfY29sb2NhdGlvbihzLCB0KTsKPj4gKyAgICAgICAgICAgIH0KPj4g KyAgICAgICAgICAgIHN1Ym1pdF9lbnRyeV9wb2ludChzLCBmdCwgc2MsIGVwKTsKPj4gKyAgICAg ICAgfQo+PiArICAgIH0KPj4gKyAgICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAgc3RhdGljIHZv aWQgcmVwb3J0X2ZyYW1lX3Byb2dyZXNzKFZWQ0ZyYW1lQ29udGV4dCAqZmMsCj4+ICAgICBjb25z dCBpbnQgcnksIGNvbnN0IFZWQ1Byb2dyZXNzIGlkeCkKPj4gIHsKPj4gQEAgLTU0Nyw2ICs2MDEs NyBAQCBzdGF0aWMgaW50IHJ1bl9hbGYoVlZDQ29udGV4dCAqcywgVlZDTG9jYWxDb250ZXh0Cj4+ ICpsYywgVlZDVGFzayAqdCkKPj4gICNkZWZpbmUgVlZDX1RIUkVBRF9ERUJVRwo+PiAgI2lmZGVm IFZWQ19USFJFQURfREVCVUcKPj4gIGNvbnN0IHN0YXRpYyBjaGFyKiB0YXNrX25hbWVbXSA9IHsK Pj4gKyAgICAiSU5JVCIsCj4+ICAgICAgIlAiLAo+PiAgICAgICJJIiwKPj4gICAgICAiUiIsCj4+ IEBAIC01NjcsNiArNjIyLDcgQEAgc3RhdGljIHZvaWQgdGFza19ydW5fc3RhZ2UoVlZDVGFzayAq dCwgVlZDQ29udGV4dCAqcywKPj4gVlZDTG9jYWxDb250ZXh0ICpsYykKPj4gICAgICBWVkNGcmFt ZVRocmVhZCAqZnQgICAgICAgPSBmYy0+ZnQ7Cj4+ICAgICAgY29uc3QgVlZDVGFza1N0YWdlIHN0 YWdlID0gdC0+c3RhZ2U7Cj4+ICAgICAgc3RhdGljIGNvbnN0IHJ1bl9mdW5jIHJ1bltdID0gewo+ PiArICAgICAgICBydW5faW5pdCwKPj4gICAgICAgICAgcnVuX3BhcnNlLAo+PiAgICAgICAgICBy dW5faW50ZXIsCj4+ICAgICAgICAgIHJ1bl9yZWNvbiwKPj4gQEAgLTcyNiw3ICs3ODIsNyBAQCBp bnQgZmZfdnZjX2ZyYW1lX3RocmVhZF9pbml0KFZWQ0ZyYW1lQ29udGV4dCAqZmMpCj4+Cj4+ICAg ICAgZm9yIChpbnQgcnMgPSAwOyBycyA8IGZ0LT5jdHVfY291bnQ7IHJzKyspIHsKPj4gICAgICAg ICAgVlZDVGFzayAqdCA9IGZ0LT50YXNrcyArIHJzOwo+PiAtICAgICAgICB0YXNrX2luaXQodCwg VlZDX1RBU0tfU1RBR0VfUEFSU0UsIGZjLCBycyAlIGZ0LT5jdHVfd2lkdGgsIHJzIC8KPj4gZnQt PmN0dV93aWR0aCk7Cj4+ICsgICAgICAgIHRhc2tfaW5pdCh0LCBycyA/IFZWQ19UQVNLX1NUQUdF X1BBUlNFIDogVlZDX1RBU0tfU1RBR0VfSU5JVCwKPj4gZmMsIHJzICUgZnQtPmN0dV93aWR0aCwg cnMgLyBmdC0+Y3R1X3dpZHRoKTsKPj4gICAgICB9Cj4+Cj4+ICAgICAgbWVtc2V0KCZmdC0+cm93 X3Byb2dyZXNzWzBdLCAwLCBzaXplb2YoZnQtPnJvd19wcm9ncmVzcykpOwo+PiBAQCAtNzQ1LDU5 ICs4MDEsMjUgQEAgZmFpbDoKPj4gICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+PiAgfQo+ Pgo+PiAtc3RhdGljIHZvaWQgY2hlY2tfY29sb2NhdGlvbihWVkNDb250ZXh0ICpzLCBWVkNUYXNr ICp0KQo+PiAtewo+PiAtICAgIGNvbnN0IFZWQ0ZyYW1lQ29udGV4dCAqZmMgPSB0LT5mYzsKPj4g LQo+PiAtICAgIGlmIChmYy0+cHMucGguci0+cGhfdGVtcG9yYWxfbXZwX2VuYWJsZWRfZmxhZyB8 fAo+PiBmYy0+cHMuc3BzLT5yLT5zcHNfc2J0bXZwX2VuYWJsZWRfZmxhZykgewo+PiAtICAgICAg ICBWVkNGcmFtZSAqY29sICAgICAgID0gZmMtPnJlZi0+Y29sbG9jYXRlZF9yZWY7Cj4+IC0gICAg ICAgIGNvbnN0IGludCBmaXJzdF9jb2wgPSB0LT5yeCA9PSBmYy0+cHMucHBzLT5jdGJfdG9fY29s X2JkW3QtPnJ4XTsKPj4gLSAgICAgICAgaWYgKGNvbCAmJiBmaXJzdF9jb2wpIHsKPj4gLSAgICAg ICAgICAgIC8vd2UgZGVwZW5kIG9uIGJvdHRvbSBhbmQgcmlnaHQgYm91bmRhcnksIGRvIG5vdCAt IDEgZm9yIHkKPj4gLSAgICAgICAgICAgIGNvbnN0IGludCB5ID0gKHQtPnJ5IDw8IGZjLT5wcy5z cHMtPmN0Yl9sb2cyX3NpemVfeSk7Cj4+IC0gICAgICAgICAgICBhZGRfcHJvZ3Jlc3NfbGlzdGVu ZXIoY29sLCAmdC0+Y29sX2xpc3RlbmVyLCB0LCBzLAo+PiBWVkNfUFJPR1JFU1NfTVYsIHkpOwo+ PiAtICAgICAgICAgICAgcmV0dXJuOwo+PiAtICAgICAgICB9Cj4+IC0gICAgfQo+PiAtICAgIGZy YW1lX3RocmVhZF9hZGRfc2NvcmUocywgZmMtPmZ0LCB0LT5yeCwgdC0+cnksCj4+IFZWQ19UQVNL X1NUQUdFX1BBUlNFKTsKPj4gLX0KPj4gLQo+PiAtc3RhdGljIHZvaWQgc3VibWl0X2VudHJ5X3Bv aW50KFZWQ0NvbnRleHQgKnMsIFZWQ0ZyYW1lVGhyZWFkICpmdCwKPj4gU2xpY2VDb250ZXh0ICpz YywgRW50cnlQb2ludCAqZXApCj4+IC17Cj4+IC0gICAgY29uc3QgaW50IHJzID0gc2MtPnNoLmN0 Yl9hZGRyX2luX2N1cnJfc2xpY2VbZXAtPmN0dV9zdGFydF07Cj4+IC0gICAgVlZDVGFzayAqdCAg ID0gZnQtPnRhc2tzICsgcnM7Cj4+IC0KPj4gLSAgICBmcmFtZV90aHJlYWRfYWRkX3Njb3JlKHMs IGZ0LCB0LT5yeCwgdC0+cnksIFZWQ19UQVNLX1NUQUdFX1BBUlNFKTsKPj4gLX0KPj4gLQo+PiAg aW50IGZmX3Z2Y19mcmFtZV9zdWJtaXQoVlZDQ29udGV4dCAqcywgVlZDRnJhbWVDb250ZXh0ICpm YykKPj4gIHsKPj4gICAgICBWVkNGcmFtZVRocmVhZCAqZnQgPSBmYy0+ZnQ7Cj4+Cj4+IC0gICAg Ly8gV2UnbGwgaGFuZGxlIHRoaXMgaW4gdHdvIHBhc3NlczoKPj4gLSAgICAvLyBQYXNzIDAgdG8g aW5pdGlhbGl6ZSB0YXNrcyB3aXRoIHBhcnNlciwgdGhpcyB3aWxsIGhlbHAgZGV0ZWN0IGJpdAo+ PiBzdHJlYW0gZXJyb3IKPj4gLSAgICAvLyBQYXNzIDEgdG8gc2hlZHVsZSBsb2NhdGlvbiBjaGVj ayBhbmQgc3VibWl0IHRoZSBlbnRyeSBwb2ludAo+PiAtICAgIGZvciAoaW50IHBhc3MgPSAwOyBw YXNzIDwgMjsgcGFzcysrKSB7Cj4+IC0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmMtPm5i X3NsaWNlczsgaSsrKSB7Cj4+IC0gICAgICAgICAgICBTbGljZUNvbnRleHQgKnNjID0gZmMtPnNs aWNlc1tpXTsKPj4gLSAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgc2MtPm5iX2Vwczsg aisrKSB7Cj4+IC0gICAgICAgICAgICAgICAgRW50cnlQb2ludCAqZXAgPSBzYy0+ZXBzICsgajsK Pj4gLSAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gZXAtPmN0dV9zdGFydDsgayA8IGVwLT5j dHVfZW5kOyBrKyspIHsKPj4gLSAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IHJzID0gc2Mt PnNoLmN0Yl9hZGRyX2luX2N1cnJfc2xpY2Vba107Cj4+IC0gICAgICAgICAgICAgICAgICAgIFZW Q1Rhc2sgKnQgICA9IGZ0LT50YXNrcyArIHJzOwo+PiAtICAgICAgICAgICAgICAgICAgICBpZiAo cGFzcykgewo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfY29sb2NhdGlvbihzLCB0 KTsKPj4gLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGludCByZXQgPSB0YXNrX2luaXRfcGFyc2UodCwgc2MsIGVwLCBrKTsKPj4g LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKQo+PiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+IC0gICAgICAgICAgICAgICAgICAgIH0KPj4gLSAg ICAgICAgICAgICAgICB9Cj4+IC0gICAgICAgICAgICAgICAgaWYgKHBhc3MpCj4+IC0gICAgICAg ICAgICAgICAgICAgIHN1Ym1pdF9lbnRyeV9wb2ludChzLCBmdCwgc2MsIGVwKTsKPj4gKyAgICBm b3IgKGludCBpID0gMDsgaSA8IGZjLT5uYl9zbGljZXM7IGkrKykgewo+PiArICAgICAgICBTbGlj ZUNvbnRleHQgKnNjID0gZmMtPnNsaWNlc1tpXTsKPj4gKyAgICAgICAgZm9yIChpbnQgaiA9IDA7 IGogPCBzYy0+bmJfZXBzOyBqKyspIHsKPj4gKyAgICAgICAgICAgIEVudHJ5UG9pbnQgKmVwID0g c2MtPmVwcyArIGo7Cj4+ICsgICAgICAgICAgICBmb3IgKGludCBrID0gZXAtPmN0dV9zdGFydDsg ayA8IGVwLT5jdHVfZW5kOyBrKyspIHsKPj4gKyAgICAgICAgICAgICAgICBjb25zdCBpbnQgcnMg PSBzYy0+c2guY3RiX2FkZHJfaW5fY3Vycl9zbGljZVtrXTsKPj4gKyAgICAgICAgICAgICAgICBW VkNUYXNrICp0ICAgPSBmdC0+dGFza3MgKyByczsKPj4gKyAgICAgICAgICAgICAgICBjb25zdCBp bnQgcmV0ID0gdGFza19pbml0X3BhcnNlKHQsIHNjLCBlcCwgayk7Cj4+ICsgICAgICAgICAgICAg ICAgaWYgKHJldCA8IDApCj4+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+ICAg ICAgICAgICAgICB9Cj4+ICAgICAgICAgIH0KPj4gICAgICB9Cj4+ICsgICAgZnJhbWVfdGhyZWFk X2FkZF9zY29yZShzLCBmdCwgMCwgMCwgVlZDX1RBU0tfU1RBR0VfSU5JVCk7Cj4+ICsKPj4gICAg ICByZXR1cm4gMDsKPj4gIH0KPj4KPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnZjL3RocmVh ZC5oIGIvbGliYXZjb2RlYy92dmMvdGhyZWFkLmgKPj4gaW5kZXggOGFjNTliMmVjZi4uN2IxNWRi ZWU1OSAxMDA2NDQKPj4gLS0tIGEvbGliYXZjb2RlYy92dmMvdGhyZWFkLmgKPj4gKysrIGIvbGli YXZjb2RlYy92dmMvdGhyZWFkLmgKPj4gQEAgLTMyLDUgKzMyLDYgQEAgaW50IGZmX3Z2Y19mcmFt ZV90aHJlYWRfaW5pdChWVkNGcmFtZUNvbnRleHQgKmZjKTsKPj4gIHZvaWQgZmZfdnZjX2ZyYW1l X3RocmVhZF9mcmVlKFZWQ0ZyYW1lQ29udGV4dCAqZmMpOwo+PiAgaW50IGZmX3Z2Y19mcmFtZV9z dWJtaXQoVlZDQ29udGV4dCAqcywgVlZDRnJhbWVDb250ZXh0ICpmYyk7Cj4+ICBpbnQgZmZfdnZj X2ZyYW1lX3dhaXQoVlZDQ29udGV4dCAqcywgVlZDRnJhbWVDb250ZXh0ICpmYyk7Cj4+ICtpbnQg ZmZfdnZjX3Blcl9mcmFtZV9pbml0KFZWQ0ZyYW1lQ29udGV4dCAqZmMpOwo+Pgo+PiAgI2VuZGlm IC8vIEFWQ09ERUNfVlZDX1RIUkVBRF9ICj4+IC0tCj4+IDIuMzQuMQo+Pgo+PgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGlu ZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUs IG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1 bnN1YnNjcmliZSIuCg==