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 6BDFF48B9D for ; Thu, 7 Mar 2024 09:33:45 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2491468CEC4; Thu, 7 Mar 2024 11:33:43 +0200 (EET) Received: from mail-vk1-f174.google.com (mail-vk1-f174.google.com [209.85.221.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 441A668C7BB for ; Thu, 7 Mar 2024 11:33:36 +0200 (EET) Received: by mail-vk1-f174.google.com with SMTP id 71dfb90a1353d-4d341065550so173657e0c.0 for ; Thu, 07 Mar 2024 01:33:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709804014; x=1710408814; darn=ffmpeg.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=PtJq6lMbs51usr6nXnQjHZ5VwIgtDNg1qR+99QuptF0=; b=B/WSuzDlPDQ5MMw7sVutQVtL7bZ3XmlaywBN929QkE5FTc90ZfOCJ+I0yVvUdRIXoD kSnm1mm1SRnOQyoxHk+S7VqwpTTR3suNezHaSwZ9hmsAeMNhTM/+BGQdXYFqxXFfYL2N oRNjkarV2YiuYVEdn8VQRotGLDzBZEX6oyC5VaL35quXBdhgqhJBfvehwrUoRcbg1d9G S8vi8qOvPQb94IPTLlPC716IUgarXMGi0ungiRqOHCcP01Xh33Pg4MkbuQEOt+2O9Lfi M1dzkal3p59U5j2cdw+tgqqVWkvBooLdFI1QsFk6gsUx+E/YzFAadveewi/cWL5c4+DK bq3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709804014; x=1710408814; h=content-transfer-encoding:cc: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=PtJq6lMbs51usr6nXnQjHZ5VwIgtDNg1qR+99QuptF0=; b=Da2yo1I23BPcVJQid6DS125sOlhvXe51VCw3h1rg33d8GalfzemdX/g9/kPZBUKmWV fC/KvEcF+zh+iDnvnT2dLbtPaQfQHBiIQHIEc5VYuyPRZbw80ekwxmtBtWDAaa40Z7CT GZ+Xi5UgEjP2EsM0Rya4yWKPa9ik1BdBcGNLc8M4wPfikY/YPsPfMZ5dbsFaPbmVMwML vj7uTddTr6wYHm+R2I9448u8B/SOaoTHKfY//vXR84Mj+boyvDlE4Szq0p1YbomhQgaP 7yhM7wV28v1Tazz1VnNlqtCLm7tbz6dKjwABj0S3iuVl0HbuiFgNMTZKFAw0v9XDo74k P+Og== X-Gm-Message-State: AOJu0Yynm/2Qsc3X9UV6gZyidhdRoQxXRpXKwSah3mCtjrf0xf24vheI rgKzLg1uUf0z1/MXUW2toLWUGXVM/2cicJSz10Wgi14IadQlOnPiWpAfZ1du1BJC4hSKLPqjxiT e/Hqmvc2QIlmbfj8mx6/OUyFfzbAPtMER X-Google-Smtp-Source: AGHT+IGq+Q5QbubHdijhJlzWp3p2vKoI1XYHgIwA5yLm801JDrvu6Df9OQmA/44lntM1PWVnzpgld0ueNidnbiwZPL4= X-Received: by 2002:a05:6122:459d:b0:4c7:6d00:767a with SMTP id de29-20020a056122459d00b004c76d00767amr6959474vkb.14.1709804014380; Thu, 07 Mar 2024 01:33:34 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Steven Liu Date: Thu, 7 Mar 2024 17:33:23 +0800 Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH v5 1/3] avformat/flvdec: support enhanced flv PacketTypeMetadata 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 Cc: 411294962@qq.com 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: emh1cGVuZ2ZlaSB2aWEgZmZtcGVnLWRldmVsIDxmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz4g5LqO MjAyNOW5tDPmnIg05pel5ZGo5LiAIDIxOjUy5YaZ6YGT77yaCj4KPiBGcm9tOiBaaHUgUGVuZ2Zl aSA8NDExMjk0OTYyQHFxLmNvbT4KPgo+IFNpZ25lZC1vZmYtYnk6IFpodSBQZW5nZmVpIDw0MTEy OTQ5NjJAcXEuY29tPgo+IC0tLQo+ICBsaWJhdmZvcm1hdC9mbHZkZWMuYyB8IDE3NyArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gIDEgZmlsZSBjaGFuZ2VkLCAx NzYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9y bWF0L2ZsdmRlYy5jIGIvbGliYXZmb3JtYXQvZmx2ZGVjLmMKPiBpbmRleCBlMjViNWJkMTYzLi4y YTBhZWM3MjkxIDEwMDY0NAo+IC0tLSBhL2xpYmF2Zm9ybWF0L2ZsdmRlYy5jCj4gKysrIGIvbGli YXZmb3JtYXQvZmx2ZGVjLmMKPiBAQCAtMzMsNiArMzMsNyBAQAo+ICAjaW5jbHVkZSAibGliYXZ1 dGlsL2ludGVybmFsLmgiCj4gICNpbmNsdWRlICJsaWJhdnV0aWwvaW50ZmxvYXQuaCIKPiAgI2lu Y2x1ZGUgImxpYmF2dXRpbC9pbnRyZWFkd3JpdGUuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9t YXN0ZXJpbmdfZGlzcGxheV9tZXRhZGF0YS5oIgo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL21hdGhl bWF0aWNzLmgiCj4gICNpbmNsdWRlICJhdmZvcm1hdC5oIgo+ICAjaW5jbHVkZSAiZGVtdXguaCIK PiBAQCAtNDUsNiArNDYsMjggQEAKPgo+ICAjZGVmaW5lIE1BWF9ERVBUSCAxNiAgICAgIC8vLzwg YXJiaXRyYXJ5IGxpbWl0IHRvIHByZXZlbnQgdW5ib3VuZGVkIHJlY3Vyc2lvbgo+Cj4gK3R5cGVk ZWYgc3RydWN0IEZMVk1hc3RlcmluZ01ldGEgewo+ICsgICAgZG91YmxlIHJfeDsKPiArICAgIGRv dWJsZSByX3k7Cj4gKyAgICBkb3VibGUgZ194Owo+ICsgICAgZG91YmxlIGdfeTsKPiArICAgIGRv dWJsZSBiX3g7Cj4gKyAgICBkb3VibGUgYl95Owo+ICsgICAgZG91YmxlIHdoaXRlX3g7Cj4gKyAg ICBkb3VibGUgd2hpdGVfeTsKPiArICAgIGRvdWJsZSBtYXhfbHVtaW5hbmNlOwo+ICsgICAgZG91 YmxlIG1pbl9sdW1pbmFuY2U7Cj4gK30gRkxWTWFzdGVyaW5nTWV0YTsKPiArCj4gK3R5cGVkZWYg c3RydWN0IEZMVk1ldGFWaWRlb0NvbG9yIHsKPiArICAgIHVpbnQ2NF90IG1hdHJpeF9jb2VmZmlj aWVudHM7Cj4gKyAgICB1aW50NjRfdCB0cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3M7Cj4gKyAgICB1 aW50NjRfdCBwcmltYXJpZXM7Cj4gKyAgICB1aW50NjRfdCBtYXhfY2xsOwo+ICsgICAgdWludDY0 X3QgbWF4X2ZhbGw7Cj4gKyAgICBGTFZNYXN0ZXJpbmdNZXRhIG1hc3RlcmluZ19tZXRhOwo+ICt9 IEZMVk1ldGFWaWRlb0NvbG9yOwo+ICsKPiAgdHlwZWRlZiBzdHJ1Y3QgRkxWQ29udGV4dCB7Cj4g ICAgICBjb25zdCBBVkNsYXNzICpjbGFzczsgLy8vPCBDbGFzcyBmb3IgcHJpdmF0ZSBvcHRpb25z Lgo+ICAgICAgaW50IHRydXN0X21ldGFkYXRhOyAgIC8vLzwgY29uZmlndXJlIHN0cmVhbXMgYWNj b3JkaW5nIG9uTWV0YURhdGEKPiBAQCAtODAsNiArMTAzLDggQEAgdHlwZWRlZiBzdHJ1Y3QgRkxW Q29udGV4dCB7Cj4gICAgICBpbnQ2NF90IHRpbWVfb2Zmc2V0Owo+ICAgICAgaW50NjRfdCB0aW1l X3BvczsKPgo+ICsgICAgRkxWTWV0YVZpZGVvQ29sb3IgKm1ldGFWaWRlb0NvbG9yOwo+ICsgICAg aW50IG1ldGFfY29sb3JfaW5mb19mbGFnOwo+ICB9IEZMVkNvbnRleHQ7Cj4KPiAgLyogQU1GIGRh dGUgdHlwZSAqLwo+IEBAIC01MjQsNiArNTQ5LDcgQEAgc3RhdGljIGludCBhbWZfcGFyc2Vfb2Jq ZWN0KEFWRm9ybWF0Q29udGV4dCAqcywgQVZTdHJlYW0gKmFzdHJlYW0sCj4gICAgICBGTFZDb250 ZXh0ICpmbHYgPSBzLT5wcml2X2RhdGE7Cj4gICAgICBBVklPQ29udGV4dCAqaW9jOwo+ICAgICAg QU1GRGF0YVR5cGUgYW1mX3R5cGU7Cj4gKyAgICBGTFZNZXRhVmlkZW9Db2xvciAqbWV0YV92aWRl b19jb2xvciA9IGZsdi0+bWV0YVZpZGVvQ29sb3I7Cj4gICAgICBjaGFyIHN0cl92YWxbMTAyNF07 Cj4gICAgICBkb3VibGUgbnVtX3ZhbDsKPiAgICAgIGFtZl9kYXRlIGRhdGU7Cj4gQEAgLTY3Miw2 ICs2OTgsNDMgQEAgc3RhdGljIGludCBhbWZfcGFyc2Vfb2JqZWN0KEFWRm9ybWF0Q29udGV4dCAq cywgQVZTdHJlYW0gKmFzdHJlYW0sCj4gICAgICAgICAgICAgIH0KPiAgICAgICAgICB9Cj4KPiAr ICAgICAgICBpZiAobWV0YV92aWRlb19jb2xvcikgewo+ICsgICAgICAgICAgICBpZiAoYW1mX3R5 cGUgPT0gQU1GX0RBVEFfVFlQRV9OVU1CRVIgfHwKPiArICAgICAgICAgICAgICAgIGFtZl90eXBl ID09IEFNRl9EQVRBX1RZUEVfQk9PTCkgewo+ICsgICAgICAgICAgICAgICAgaWYgKCFzdHJjbXAo a2V5LCAiY29sb3JQcmltYXJpZXMiKSkgewo+ICsgICAgICAgICAgICAgICAgICAgIG1ldGFfdmlk ZW9fY29sb3ItPnByaW1hcmllcyA9IG51bV92YWw7Cj4gKyAgICAgICAgICAgICAgICB9IGVsc2Ug aWYgKCFzdHJjbXAoa2V5LCAidHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MiKSkgewo+ICsgICAgICAg ICAgICAgICAgICAgIG1ldGFfdmlkZW9fY29sb3ItPnRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcyA9 IG51bV92YWw7Cj4gKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoa2V5LCAibWF0 cml4Q29lZmZpY2llbnRzIikpIHsKPiArICAgICAgICAgICAgICAgICAgICBtZXRhX3ZpZGVvX2Nv bG9yLT5tYXRyaXhfY29lZmZpY2llbnRzID0gbnVtX3ZhbDsKPiArICAgICAgICAgICAgICAgIH0g ZWxzZSBpZiAoIXN0cmNtcChrZXksICJtYXhGYWxsIikpIHsKPiArICAgICAgICAgICAgICAgICAg ICBtZXRhX3ZpZGVvX2NvbG9yLT5tYXhfZmFsbCA9IG51bV92YWw7Cj4gKyAgICAgICAgICAgICAg ICB9IGVsc2UgaWYgKCFzdHJjbXAoa2V5LCAibWF4Q0xMIikpIHsKPiArICAgICAgICAgICAgICAg ICAgICBtZXRhX3ZpZGVvX2NvbG9yLT5tYXhfY2xsID0gbnVtX3ZhbDsKPiArICAgICAgICAgICAg ICAgIH0gZWxzZSBpZiAoIXN0cmNtcChrZXksICJyZWRYIikpIHsKPiArICAgICAgICAgICAgICAg ICAgICBtZXRhX3ZpZGVvX2NvbG9yLT5tYXN0ZXJpbmdfbWV0YS5yX3ggPSBudW1fdmFsOwo+ICsg ICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGtleSwgInJlZFkiKSkgewo+ICsgICAg ICAgICAgICAgICAgICAgIG1ldGFfdmlkZW9fY29sb3ItPm1hc3RlcmluZ19tZXRhLnJfeSA9IG51 bV92YWw7Cj4gKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoa2V5LCAiZ3JlZW5Y IikpIHsKPiArICAgICAgICAgICAgICAgICAgICBtZXRhX3ZpZGVvX2NvbG9yLT5tYXN0ZXJpbmdf bWV0YS5nX3ggPSBudW1fdmFsOwo+ICsgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyY21w KGtleSwgImdyZWVuWSIpKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgbWV0YV92aWRlb19jb2xv ci0+bWFzdGVyaW5nX21ldGEuZ195ID0gbnVtX3ZhbDsKPiArICAgICAgICAgICAgICAgIH0gZWxz ZSBpZiAoIXN0cmNtcChrZXksICJibHVlWCIpKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgbWV0 YV92aWRlb19jb2xvci0+bWFzdGVyaW5nX21ldGEuYl94ID0gbnVtX3ZhbDsKPiArICAgICAgICAg ICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChrZXksICJibHVlWSIpKSB7Cj4gKyAgICAgICAgICAg ICAgICAgICAgbWV0YV92aWRlb19jb2xvci0+bWFzdGVyaW5nX21ldGEuYl95ID0gbnVtX3ZhbDsK PiArICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChrZXksICJ3aGl0ZVBvaW50WCIp KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgbWV0YV92aWRlb19jb2xvci0+bWFzdGVyaW5nX21l dGEud2hpdGVfeCA9IG51bV92YWw7Cj4gKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJj bXAoa2V5LCAid2hpdGVQb2ludFkiKSkgewo+ICsgICAgICAgICAgICAgICAgICAgIG1ldGFfdmlk ZW9fY29sb3ItPm1hc3RlcmluZ19tZXRhLndoaXRlX3kgPSBudW1fdmFsOwo+ICsgICAgICAgICAg ICAgICAgfSBlbHNlIGlmICghc3RyY21wKGtleSwgIm1heEx1bWluYW5jZSIpKSB7Cj4gKyAgICAg ICAgICAgICAgICAgICAgbWV0YV92aWRlb19jb2xvci0+bWFzdGVyaW5nX21ldGEubWF4X2x1bWlu YW5jZSA9IG51bV92YWw7Cj4gKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoa2V5 LCAibWluTHVtaW5hbmNlIikpIHsKPiArICAgICAgICAgICAgICAgICAgICBtZXRhX3ZpZGVvX2Nv bG9yLT5tYXN0ZXJpbmdfbWV0YS5taW5fbHVtaW5hbmNlID0gbnVtX3ZhbDsKPiArICAgICAgICAg ICAgICAgIH0KPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArCj4gICAgICAgICAgaWYg KGFtZl90eXBlID09IEFNRl9EQVRBX1RZUEVfT0JKRUNUICYmIHMtPm5iX3N0cmVhbXMgPT0gMSAm Jgo+ICAgICAgICAgICAgICgoIWFwYXIgJiYgIXN0cmNtcChrZXksICJhdWRpb2NvZGVjaWQiKSkg fHwKPiAgICAgICAgICAgICAgKCF2cGFyICYmICFzdHJjbXAoa2V5LCAidmlkZW9jb2RlY2lkIikp KSkKPiBAQCAtODI0LDYgKzg4Nyw3IEBAIHN0YXRpYyBpbnQgZmx2X3JlYWRfY2xvc2UoQVZGb3Jt YXRDb250ZXh0ICpzKQo+ICAgICAgICAgIGF2X2ZyZWVwKCZmbHYtPm5ld19leHRyYWRhdGFbaV0p Owo+ICAgICAgYXZfZnJlZXAoJmZsdi0+a2V5ZnJhbWVfdGltZXMpOwo+ICAgICAgYXZfZnJlZXAo JmZsdi0+a2V5ZnJhbWVfZmlsZXBvc2l0aW9ucyk7Cj4gKyAgICBhdl9mcmVlcCgmZmx2LT5tZXRh VmlkZW9Db2xvcik7Cj4gICAgICByZXR1cm4gMDsKPiAgfQo+Cj4gQEAgLTEwMjgsNiArMTA5Miwx MDMgQEAgc3RhdGljIGludCByZXN5bmMoQVZGb3JtYXRDb250ZXh0ICpzKQo+ICAgICAgcmV0dXJu IEFWRVJST1JfRU9GOwo+ICB9Cj4KPiArc3RhdGljIGludCBmbHZfcGFyc2VfdmlkZW9fY29sb3Jf aW5mbyhBVkZvcm1hdENvbnRleHQgKnMsIEFWU3RyZWFtICpzdCwgaW50NjRfdCBuZXh0X3BvcykK PiArewo+ICsgICAgRkxWQ29udGV4dCAqZmx2ID0gcy0+cHJpdl9kYXRhOwo+ICsgICAgQU1GRGF0 YVR5cGUgdHlwZTsKPiArICAgIEFWSU9Db250ZXh0ICppb2M7Cj4gKyAgICBjaGFyIGJ1ZmZlclsz Ml07Cj4gKyAgICBpb2MgICAgID0gcy0+cGI7Cj4gKwo+ICsgICAgLy8gZmlyc3Qgb2JqZWN0IG5l ZWRzIHRvIGJlICJjb2xvckluZm8iIHN0cmluZwo+ICsgICAgdHlwZSA9IGF2aW9fcjgoaW9jKTsK PiArICAgIGlmICh0eXBlICE9IEFNRl9EQVRBX1RZUEVfU1RSSU5HIHx8Cj4gKyAgICAgICAgYW1m X2dldF9zdHJpbmcoaW9jLCBidWZmZXIsIHNpemVvZihidWZmZXIpKSA8IDApCj4gKyAgICAgICAg cmV0dXJuIFRZUEVfVU5LTk9XTjsKPiArCj4gKyAgICBpZiAoc3RyY21wKGJ1ZmZlciwgImNvbG9y SW5mbyIpKSB7Cj4gKyAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19ERUJVRywgIlVua25vd24gdHlw ZSAlc1xuIiwgYnVmZmVyKTsKPiArICAgICAgICByZXR1cm4gVFlQRV9VTktOT1dOOwo+ICsgICAg fQo+ICsKPiArICAgIGlmICghKGZsdi0+bWV0YVZpZGVvQ29sb3IgPSBhdl9tYWxsb2N6KHNpemVv ZihGTFZNZXRhVmlkZW9Db2xvcikpKSkgewo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01F TSk7Cj4gKyAgICB9Cj4gKyAgICBmbHYtPm1ldGFfY29sb3JfaW5mb19mbGFnID0gMTsKPiArICAg IGFtZl9wYXJzZV9vYmplY3QocywgTlVMTCwgTlVMTCwgYnVmZmVyLCBuZXh0X3BvcywgMCk7IC8v IHBhcnNlIG1ldGFkYXRhCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBm bHZfdXBkYXRlX3ZpZGVvX2NvbG9yX2luZm8oQVZGb3JtYXRDb250ZXh0ICpzLCBBVlN0cmVhbSAq c3QpCj4gK3sKPiArICAgIEZMVkNvbnRleHQgKmZsdiA9IHMtPnByaXZfZGF0YTsKPiArICAgIGNv bnN0IEZMVk1ldGFWaWRlb0NvbG9yKiBtZXRhX3ZpZGVvX2NvbG9yID0gZmx2LT5tZXRhVmlkZW9D b2xvcjsKPiArICAgIGNvbnN0IEZMVk1hc3RlcmluZ01ldGEgKm1hc3RlcmluZ19tZXRhID0gJm1l dGFfdmlkZW9fY29sb3ItPm1hc3RlcmluZ19tZXRhOwo+ICsKPiArICAgIGludCBoYXNfbWFzdGVy aW5nX3ByaW1hcmllcywgaGFzX21hc3RlcmluZ19sdW1pbmFuY2U7Cj4gKyAgICAvLyBNYXN0ZXJp bmcgcHJpbWFyaWVzIGFyZSBDSUUgMTkzMSBjb29yZHMsIGFuZCBtdXN0IGJlID4gMC4KPiArICAg IGhhc19tYXN0ZXJpbmdfcHJpbWFyaWVzID0KPiArICAgICAgICBtYXN0ZXJpbmdfbWV0YS0+cl94 ID4gMCAmJiBtYXN0ZXJpbmdfbWV0YS0+cl95ID4gMCAmJgo+ICsgICAgICAgIG1hc3RlcmluZ19t ZXRhLT5nX3ggPiAwICYmIG1hc3RlcmluZ19tZXRhLT5nX3kgPiAwICYmCj4gKyAgICAgICAgbWFz dGVyaW5nX21ldGEtPmJfeCA+IDAgJiYgbWFzdGVyaW5nX21ldGEtPmJfeSA+IDAgJiYKPiArICAg ICAgICBtYXN0ZXJpbmdfbWV0YS0+d2hpdGVfeCA+IDAgJiYgbWFzdGVyaW5nX21ldGEtPndoaXRl X3kgPiAwOwo+ICsgICAgaGFzX21hc3RlcmluZ19sdW1pbmFuY2UgPSBtYXN0ZXJpbmdfbWV0YS0+ bWF4X2x1bWluYW5jZSA+IDAgJiYgbWFzdGVyaW5nX21ldGEtPm1pbl9sdW1pbmFuY2UgPiAwOwo+ ICsKPiArICAgIGlmIChtZXRhX3ZpZGVvX2NvbG9yLT5tYXRyaXhfY29lZmZpY2llbnRzICE9IEFW Q09MX1NQQ19SRVNFUlZFRCkKPiArICAgICAgICBzdC0+Y29kZWNwYXItPmNvbG9yX3NwYWNlID0g bWV0YV92aWRlb19jb2xvci0+bWF0cml4X2NvZWZmaWNpZW50czsKPiArICAgIGlmIChtZXRhX3Zp ZGVvX2NvbG9yLT5wcmltYXJpZXMgIT0gQVZDT0xfUFJJX1JFU0VSVkVEICYmCj4gKyAgICAgICAg bWV0YV92aWRlb19jb2xvci0+cHJpbWFyaWVzICE9IEFWQ09MX1BSSV9SRVNFUlZFRDApCj4gKyAg ICAgICAgc3QtPmNvZGVjcGFyLT5jb2xvcl9wcmltYXJpZXMgPSBtZXRhX3ZpZGVvX2NvbG9yLT5w cmltYXJpZXM7Cj4gKyAgICBpZiAobWV0YV92aWRlb19jb2xvci0+dHJhbnNmZXJfY2hhcmFjdGVy aXN0aWNzICE9IEFWQ09MX1RSQ19SRVNFUlZFRCAmJgo+ICsgICAgICAgIG1ldGFfdmlkZW9fY29s b3ItPnRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcyAhPSBBVkNPTF9UUkNfUkVTRVJWRUQwKQo+ICsg ICAgICAgIHN0LT5jb2RlY3Bhci0+Y29sb3JfdHJjID0gbWV0YV92aWRlb19jb2xvci0+dHJhbnNm ZXJfY2hhcmFjdGVyaXN0aWNzOwo+ICsKPiArICAgIGlmIChtZXRhX3ZpZGVvX2NvbG9yLT5tYXhf Y2xsICYmIG1ldGFfdmlkZW9fY29sb3ItPm1heF9mYWxsKSB7Cj4gKyAgICAgICAgc2l6ZV90IHNp emUgPSAwOwo+ICsgICAgICAgIEFWQ29udGVudExpZ2h0TWV0YWRhdGEgKm1ldGFkYXRhID0gYXZf Y29udGVudF9saWdodF9tZXRhZGF0YV9hbGxvYygmc2l6ZSk7Cj4gKyAgICAgICAgaWYgKCFtZXRh ZGF0YSkKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArICAgICAgICBp ZiAoIWF2X3BhY2tldF9zaWRlX2RhdGFfYWRkKCZzdC0+Y29kZWNwYXItPmNvZGVkX3NpZGVfZGF0 YSwgJnN0LT5jb2RlY3Bhci0+bmJfY29kZWRfc2lkZV9kYXRhLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQVZfUEtUX0RBVEFfQ09OVEVOVF9MSUdIVF9MRVZFTCwg bWV0YWRhdGEsIHNpemUsIDApKSB7Cj4gKyAgICAgICAgICAgIGF2X2ZyZWVwKCZtZXRhZGF0YSk7 Cj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gKyAgICAgICAgfQo+ICsg ICAgICAgIG1ldGFkYXRhLT5NYXhDTEwgID0gbWV0YV92aWRlb19jb2xvci0+bWF4X2NsbDsKPiAr ICAgICAgICBtZXRhZGF0YS0+TWF4RkFMTCA9IG1ldGFfdmlkZW9fY29sb3ItPm1heF9mYWxsOwo+ ICsgICAgfQo+ICsKPiArICAgIGlmIChoYXNfbWFzdGVyaW5nX3ByaW1hcmllcyB8fCBoYXNfbWFz dGVyaW5nX2x1bWluYW5jZSkgewo+ICsgICAgICAgIEFWTWFzdGVyaW5nRGlzcGxheU1ldGFkYXRh ICptZXRhZGF0YTsKPiArICAgICAgICBBVlBhY2tldFNpZGVEYXRhICpzZCA9IGF2X3BhY2tldF9z aWRlX2RhdGFfbmV3KCZzdC0+Y29kZWNwYXItPmNvZGVkX3NpZGVfZGF0YSwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3QtPmNvZGVj cGFyLT5uYl9jb2RlZF9zaWRlX2RhdGEsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfUEtUX0RBVEFfTUFTVEVSSU5HX0RJU1BMQVlf TUVUQURBVEEsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZW9mKEFWTWFzdGVyaW5nRGlzcGxheU1ldGFkYXRhKSwgMCk7Cj4gKyAg ICAgICAgaWYgKCFzZCkKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiAr ICAgICAgICBtZXRhZGF0YSA9IChBVk1hc3RlcmluZ0Rpc3BsYXlNZXRhZGF0YSopc2QtPmRhdGE7 Cj4gKyAgICAgICAgbWVtc2V0KG1ldGFkYXRhLCAwLCBzaXplb2YoQVZNYXN0ZXJpbmdEaXNwbGF5 TWV0YWRhdGEpKTsKPiArICAgICAgICAvLyBoZHJDbGwKPiArICAgICAgICBpZiAoaGFzX21hc3Rl cmluZ19sdW1pbmFuY2UpIHsKPiArICAgICAgICAgICAgbWV0YWRhdGEtPm1heF9sdW1pbmFuY2Ug PSBhdl9kMnEobWFzdGVyaW5nX21ldGEtPm1heF9sdW1pbmFuY2UsIElOVF9NQVgpOwo+ICsgICAg ICAgICAgICBtZXRhZGF0YS0+bWluX2x1bWluYW5jZSA9IGF2X2QycShtYXN0ZXJpbmdfbWV0YS0+ bWluX2x1bWluYW5jZSwgSU5UX01BWCk7Cj4gKyAgICAgICAgICAgIG1ldGFkYXRhLT5oYXNfbHVt aW5hbmNlID0gMTsKPiArICAgICAgICB9Cj4gKyAgICAgICAgLy8gaGRyTWRjdgo+ICsgICAgICAg IGlmIChoYXNfbWFzdGVyaW5nX3ByaW1hcmllcykgewo+ICsgICAgICAgICAgICBtZXRhZGF0YS0+ ZGlzcGxheV9wcmltYXJpZXNbMF1bMF0gPSBhdl9kMnEobWFzdGVyaW5nX21ldGEtPnJfeCwgSU5U X01BWCk7Cj4gKyAgICAgICAgICAgIG1ldGFkYXRhLT5kaXNwbGF5X3ByaW1hcmllc1swXVsxXSA9 IGF2X2QycShtYXN0ZXJpbmdfbWV0YS0+cl95LCBJTlRfTUFYKTsKPiArICAgICAgICAgICAgbWV0 YWRhdGEtPmRpc3BsYXlfcHJpbWFyaWVzWzFdWzBdID0gYXZfZDJxKG1hc3RlcmluZ19tZXRhLT5n X3gsIElOVF9NQVgpOwo+ICsgICAgICAgICAgICBtZXRhZGF0YS0+ZGlzcGxheV9wcmltYXJpZXNb MV1bMV0gPSBhdl9kMnEobWFzdGVyaW5nX21ldGEtPmdfeSwgSU5UX01BWCk7Cj4gKyAgICAgICAg ICAgIG1ldGFkYXRhLT5kaXNwbGF5X3ByaW1hcmllc1syXVswXSA9IGF2X2QycShtYXN0ZXJpbmdf bWV0YS0+Yl94LCBJTlRfTUFYKTsKPiArICAgICAgICAgICAgbWV0YWRhdGEtPmRpc3BsYXlfcHJp bWFyaWVzWzJdWzFdID0gYXZfZDJxKG1hc3RlcmluZ19tZXRhLT5iX3ksIElOVF9NQVgpOwo+ICsg ICAgICAgICAgICBtZXRhZGF0YS0+d2hpdGVfcG9pbnRbMF0gPSBhdl9kMnEobWFzdGVyaW5nX21l dGEtPndoaXRlX3gsIElOVF9NQVgpOwo+ICsgICAgICAgICAgICBtZXRhZGF0YS0+d2hpdGVfcG9p bnRbMV0gPSBhdl9kMnEobWFzdGVyaW5nX21ldGEtPndoaXRlX3ksIElOVF9NQVgpOwo+ICsgICAg ICAgICAgICBtZXRhZGF0YS0+aGFzX3ByaW1hcmllcyA9IDE7Cj4gKyAgICAgICAgfQo+ICsgICAg fQo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgZmx2X3JlYWRfcGFja2V0 KEFWRm9ybWF0Q29udGV4dCAqcywgQVZQYWNrZXQgKnBrdCkKPiAgewo+ICAgICAgRkxWQ29udGV4 dCAqZmx2ID0gcy0+cHJpdl9kYXRhOwo+IEBAIC0xMTAwLDggKzEyNjEsMTcgQEAgcmV0cnk6Cj4g ICAgICAgICAgICAgIHZpZGVvX2NvZGVjX2lkID0gYXZpb19yYjMyKHMtPnBiKTsKPiAgICAgICAg ICAgICAgc2l6ZSAtPSA0Owo+ICAgICAgICAgIH0KPiAtICAgICAgICBpZiAoKGZsYWdzICYgRkxW X1ZJREVPX0ZSQU1FVFlQRV9NQVNLKSA9PSBGTFZfRlJBTUVfVklERU9fSU5GT19DTUQpCj4gKwo+ ICsgICAgICAgIGlmIChlbmhhbmNlZF9mbHYgJiYgc3RyZWFtX3R5cGUgPT0gRkxWX1NUUkVBTV9U WVBFX1ZJREVPICYmIChmbGFncyAmIEZMVl9WSURFT19GUkFNRVRZUEVfTUFTSykgPT0gRkxWX0ZS QU1FX1ZJREVPX0lORk9fQ01EKSB7Cj4gKyAgICAgICAgICAgIGludCBwa3RfdHlwZSA9IGZsYWdz ICYgMHgwRjsKPiArICAgICAgICAgICAgaWYgKHBrdF90eXBlID09IFBhY2tldFR5cGVNZXRhZGF0 YSkgewo+ICsgICAgICAgICAgICAgICAgaW50IHJldCA9IGZsdl9wYXJzZV92aWRlb19jb2xvcl9p bmZvKHMsIHN0LCBuZXh0KTsKPiArICAgICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfREVC VUcsICJlbmhhbmNlZCBmbHYgcGFyc2UgbWV0YWRhdGEgcmV0ICVkIGFuZCBza2lwXG4iLCByZXQp Owo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIGdvdG8gc2tpcDsKPiArICAgICAgICB9 IGVsc2UgaWYgKChmbGFncyAmIEZMVl9WSURFT19GUkFNRVRZUEVfTUFTSykgPT0gRkxWX0ZSQU1F X1ZJREVPX0lORk9fQ01EKSB7Cj4gICAgICAgICAgICAgIGdvdG8gc2tpcDsKPiArICAgICAgICB9 Cj4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gRkxWX1RBR19UWVBFX01FVEEpIHsKPiAgICAgICAg ICBzdHJlYW1fdHlwZT1GTFZfU1RSRUFNX1RZUEVfU1VCVElUTEU7Cj4gICAgICAgICAgaWYgKHNp emUgPiAxMyArIDEgKyA0KSB7IC8vIEhlYWRlci10eXBlIG1ldGFkYXRhIHN0dWZmCj4gQEAgLTEy ODcsNiArMTQ1NywxMSBAQCByZXRyeV9kdXJhdGlvbjoKPiAgICAgICAgICAgICAgZ290byBsZWF2 ZTsKPiAgICAgICAgICB9Cj4KPiArICAgICAgICBpZiAoZW5oYW5jZWRfZmx2ICYmIHN0cmVhbV90 eXBlID09IEZMVl9TVFJFQU1fVFlQRV9WSURFTyAmJiBmbHYtPm1ldGFfY29sb3JfaW5mb19mbGFn KSB7Cj4gKyAgICAgICAgICAgIGZsdl91cGRhdGVfdmlkZW9fY29sb3JfaW5mbyhzLCBzdCk7IC8v IHVwZGF0ZSBhdiBwYWNrZXQgc2lkZSBkYXRhCj4gKyAgICAgICAgICAgIGZsdi0+bWV0YV9jb2xv cl9pbmZvX2ZsYWcgPSAwOwo+ICsgICAgICAgIH0KPiArCj4gICAgICAgICAgaWYgKHN0LT5jb2Rl Y3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fCBzdC0+Y29kZWNwYXItPmNvZGVj X2lkID09IEFWX0NPREVDX0lEX01QRUc0IHx8Cj4gICAgICAgICAgICAgIChzdC0+Y29kZWNwYXIt PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMgJiYgdHlwZSA9PSBQYWNrZXRUeXBlQ29kZWRG cmFtZXMpKSB7Cj4gICAgICAgICAgICAgIC8vIHNpZ24gZXh0ZW5zaW9uCj4gLS0KPiAyLjQ0LjAK Pgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZmZt cGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gaHR0cHM6 Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4KPiBUbyB1bnN1YnNj cmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBm Zm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgoKCgpBbnkgY29tbWVudHM/CgoK VGhhbmtzClN0ZXZlbgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0 dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJz Y3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZm bXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==