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 CBA5E45588 for ; Sun, 7 May 2023 07:04:19 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B988F68C129; Sun, 7 May 2023 10:04:16 +0300 (EEST) Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BE91C68BF68 for ; Sun, 7 May 2023 10:04:10 +0300 (EEST) Received: by mail-pf1-f180.google.com with SMTP id d2e1a72fcca58-6439df6c268so1623599b3a.0 for ; Sun, 07 May 2023 00:04:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683443048; x=1686035048; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=jlzle0XjOch4ZnK47TZjgtM7ci8rs8cZVdNabgzMJBQ=; b=Rri52L2KgMTgUD9+801mGacqiZ43yr3r78mEWoR/3lJdczS96lKrGkaR3ME757pvHg m4q6rKw/RMIO27gOA0sa1Tea2ftOC/pgxOwnZS0TdPrTK540S6xkKlbXka9m0IS9BsD9 je7zgw6iRgXBO/L7d2a6mgurhSul6/L44tIlscfhrXNHqdl6pajV31i9nlv2X757HCkr RF134js1ViDS6lz4AXZicefRsxTU4gLh2ya2nfpy3J3AfPEjH5apowgxT+8srqnNAsU2 VrswtHsopJmcZvr+UglSOqKfaiKc75Pf3o6uYv3mmN10lRdQw0+WDhcyQNN9T0jlfOLa f5tA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683443048; x=1686035048; 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=jlzle0XjOch4ZnK47TZjgtM7ci8rs8cZVdNabgzMJBQ=; b=MobRh5hqu4lpy2np3DiI3+l1SptxtuI/Rny0n3N6hf2Ey9Trkh0vlCaqz5aL6sDhsi vgN4SWDkIlAntNBnzq/Hh5xuP6E1c7R3/NjkUsmxsNu2x+BZC2D9Ka3pyeWC+yQ4nTvC XZu5AKw0IOTk1wXILe480P22lJB1XaSwE8BRMLIuBvMZr15jjOcs1+FfpWZoCQRGths7 4N3pQxx0Eaytq+k79a0ZyfV9B82T35UIvojA0Qf2g1Z/ERRdISxTMAAIdbTPv2pn9vMp RoApRBLclQ7QqizE1Ak/5UNe0x5iUCz5rHmYTpB9i6DQPMXpVQWAlwM5qInb2mKhmTSg mZ0g== X-Gm-Message-State: AC+VfDxBWY3tnV7K6COunDlXE+b+fenPIe6letrU8tM5aK2ri5gGtXQU H3px9AvE/+WfpNkBZWg1GfYI1cmEewM3WhKe+OGZzGiZxoTc0HHATnY= X-Google-Smtp-Source: ACHHUZ6Tr5qXJu6SWYJAXxEKuemDfpnW5xB3SQLtY4WNfw2ei4pe9NhjExnJOPjdN5bUKFSMfbhV+OsqfBmvErgnmoo= X-Received: by 2002:a05:6a21:33a7:b0:ff:b84d:f1be with SMTP id yy39-20020a056a2133a700b000ffb84df1bemr3584090pzb.56.1683443048329; Sun, 07 May 2023 00:04:08 -0700 (PDT) MIME-Version: 1.0 References: <1683313747-3775-1-git-send-email-dheitmueller@ltnglobal.com> <1683313747-3775-2-git-send-email-dheitmueller@ltnglobal.com> In-Reply-To: <1683313747-3775-2-git-send-email-dheitmueller@ltnglobal.com> From: Lance Wang Date: Sun, 7 May 2023 15:03:56 +0800 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v6 1/6] ccfifo: Properly handle CEA-708 captions through framerate conversion 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: TEdUTSBmb3IgdGhlIHBhdGNoc2V0LgoKT24gU2F0LCBNYXkgNiwgMjAyMyBhdCAyOjEz4oCvQU0g RGV2aW4gSGVpdG11ZWxsZXIgPApkZXZpbi5oZWl0bXVlbGxlckBsdG5nbG9iYWwuY29tPiB3cm90 ZToKCj4gV2hlbiB0cmFuc2NvZGluZyB2aWRlbyB0aGF0IGNvbnRhaW5zIDcwOCBjbG9zZWQgY2Fw dGlvbnMsIHRoZQo+IGNhcHRpb24gZGF0YSBpcyB0aWVkIHRvIHRoZSBmcmFtZXMgYXMgc2lkZSBk YXRhLiAgU2ltcGx5IGRyb3BwaW5nCj4gb3IgYWRkaW5nIGZyYW1lcyB0byBjaGFuZ2UgdGhlIGZy YW1lcmF0ZSB3aWxsIHJlc3VsdCBpbiBsb3NzIG9mCj4gZGF0YSwgc28gdGhlIGNhcHRpb24gZGF0 YSBuZWVkcyB0byBiZSBwcmVzZXJ2ZWQgYW5kIHJlZm9ybWF0dGVkLgo+Cj4gRm9yIGV4YW1wbGUs IHdpdGhvdXQgdGhpcyBwYXRjaCBjb252ZXJ0aW5nIDcyMHA1OSB0byAxMDgwaTU5Cj4gd291bGQg cmVzdWx0IGluIGxvc3Mgb2YgNTAlIG9mIHRoZSBjYXB0aW9uIGJ5dGVzLCByZXN1bHRpbmcgaW4K PiBnYXJibGVkIDYwOCBjYXB0aW9ucyBhbmQgNzA4IHByb2JhYmx5IHdvdWxkbid0IHJlbmRlciBh dCBhbGwuCj4gRnVydGhlciwgdGhlIGZyYW1lcyB0aGF0IGFyZSB0aGVyZSB3aWxsIGhhdmUgYW4g aWxsZWdhbAo+IGNjX2NvdW50IGZvciB0aGUgdGFyZ2V0IGZyYW1lcmF0ZSwgc28gc29tZSBkZWNv ZGVycyBtYXkgaWdub3JlCj4gdGhlIHBhY2tldHMgZW50aXJlbHkuCj4KPiBFeHRyYWN0IHRoZSA2 MDggYW5kIDcwOCB0dXBsZXMgYW5kIGluc2VydCB0aGVtIG9udG8gcXVldWVzLiAgVGhlbgo+IGFm dGVyIGRyb3BwaW5nL2FkZGluZyBmcmFtZXMsIHJlLXdyaXRlIHRoZSB0dXBsZXMgYmFjayBpbnRv IHRoZQo+IHJlc3VsdGluZyBmcmFtZXMgYXQgdGhlIGFwcHJvcHJpYXRlIHJhdGUgZ2l2ZW4gdGhl IHRhcmdldAo+IGZyYW1lcmF0ZS4gIFRoaXMgaW5jbHVkZXMgYm90aCBoYXZpbmcgdGhlIGNvcnJl Y3QgY2NfY291bnQgYXMKPiB3ZWxsIGFzIGNsb2NraW5nIG91dCB0aGUgNjA4IHBhaXJzIGF0IHRo ZSBhcHByb3ByaWF0ZSByYXRlLgo+Cj4gVGhhbmtzIHRvIExhbmNlIFdhbmcgPGxhbmNlLmxtd2Fu Z0BnbWFpbC5jb20+LCBBbnRvbgo+IEtoaXJub3YgPGFudG9uQGtoaXJub3YubmV0PiwgYW5kIE1p Y2hhZWwgTmllZGVybWF5ZXIgPAo+IG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+Cj4gZm9yIHByb3Zp ZGluZyByZXZpZXcvZmVlZGJhY2suCj4KPiBTaWduZWQtb2ZmLWJ5OiBEZXZpbiBIZWl0bXVlbGxl ciA8ZGhlaXRtdWVsbGVyQGx0bmdsb2JhbC5jb20+Cj4gLS0tCj4gIGxpYmF2ZmlsdGVyL01ha2Vm aWxlIHwgICAxICsKPiAgbGliYXZmaWx0ZXIvY2NmaWZvLmMgfCAyMjQKPiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgbGliYXZmaWx0ZXIvY2Nm aWZvLmggfCAxMTAgKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQs IDMzNSBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci9jY2Zp Zm8uYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvY2NmaWZvLmgKPgo+IGRpZmYg LS1naXQgYS9saWJhdmZpbHRlci9NYWtlZmlsZSBiL2xpYmF2ZmlsdGVyL01ha2VmaWxlCj4gaW5k ZXggNDgyYWVhZi4uNjhjOGYxNCAxMDA2NDQKPiAtLS0gYS9saWJhdmZpbHRlci9NYWtlZmlsZQo+ ICsrKyBiL2xpYmF2ZmlsdGVyL01ha2VmaWxlCj4gQEAgLTE0LDYgKzE0LDcgQEAgT0JKUyA9IGFs bGZpbHRlcnMubwo+ICAgICAgICAgICAgICAgIFwKPiAgICAgICAgIGJ1ZmZlcnNpbmsubyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAg ICAgYnVmZmVyc3JjLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCj4gICAgICAgICBjb2xvcnNwYWNlLm8gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgIGNjZmlmby5vICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAg ICAgICAgZHJhd3V0aWxzLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCj4gICAgICAgICBmaWZvLm8gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgICAgIGZvcm1hdHMubyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ IGRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9jY2ZpZm8uYyBiL2xpYmF2ZmlsdGVyL2NjZmlmby5j Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi41ZmI2OGNlCj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2xpYmF2ZmlsdGVyL2NjZmlmby5jCj4gQEAgLTAsMCArMSwyMjQgQEAK PiArLyoKPiArICogQ0VBLTcwOCBDbG9zZWQgQ2FwdGlvbmluZyBGSUZPCj4gKyAqIENvcHlyaWdo dCAoYykgMjAyMyBMVE4gR2xvYmFsIENvbW11bmljYXRpb25zCj4gKyAqCj4gKyAqIEF1dGhvcjog RGV2aW4gSGVpdG11ZWxsZXIgPGRoZWl0bXVlbGxlckBsdG5nbG9iYWwuY29tPgo+ICsgKgo+ICsg KiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiArICogbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIKPiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO VQo+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEg RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEgVVNB Cj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImNjZmlmby5oIgo+ICsKPiArc3RydWN0IEFWQ0NGaWZv IHsKPiArICAgIEFWRmlmbyAqY2NfNjA4X2ZpZm87Cj4gKyAgICBBVkZpZm8gKmNjXzcwOF9maWZv Owo+ICsgICAgQVZSYXRpb25hbCBmcmFtZXJhdGU7Cj4gKyAgICBpbnQgZXhwZWN0ZWRfY2NfY291 bnQ7Cj4gKyAgICBpbnQgZXhwZWN0ZWRfNjA4Owo+ICsgICAgaW50IGNjX2RldGVjdGVkOwo+ICsg ICAgaW50IHBhc3N0aHJvdWdoOwo+ICsgICAgaW50IHBhc3N0aHJvdWdoX3dhcm5pbmc7Cj4gKyAg ICB2b2lkICpsb2dfY3R4Owo+ICt9Owo+ICsKPiArI2RlZmluZSBNQVhfQ0NfRUxFTUVOVFMgMTI4 Cj4gKyNkZWZpbmUgQ0NfQllURVNfUEVSX0VOVFJZIDMKPiArCj4gK3N0cnVjdCBjY19sb29rdXAg ewo+ICsgICAgaW50IG51bTsKPiArICAgIGludCBkZW47Cj4gKyAgICBpbnQgY2NfY291bnQ7Cj4g KyAgICBpbnQgbnVtXzYwODsKPiArfTsKPiArCj4gK2NvbnN0IHN0YXRpYyBzdHJ1Y3QgY2NfbG9v a3VwIGNjX2xvb2t1cF92YWxzW10gPSB7Cj4gKyAgICB7IDE1LCAxLCA0MCwgNCB9LAo+ICsgICAg eyAyNCwgMSwgMjUsIDMgfSwKPiArICAgIHsgMjQwMDAsIDEwMDEsIDI1LCAzIH0sCj4gKyAgICB7 IDMwLCAxLCAyMCwgMiB9LAo+ICsgICAgeyAzMDAwMCwgMTAwMSwgMjAsIDJ9LAo+ICsgICAgeyA2 MCwgMSwgMTAsIDEgfSwKPiArICAgIHsgNjAwMDAsIDEwMDEsIDEwLCAxfSwKPiArfTsKPiArCj4g K3ZvaWQgZmZfY2NmaWZvX2ZyZWVwKEFWQ0NGaWZvICoqY2NmKQo+ICt7Cj4gKyAgICBBVkNDRmlm byAqdG1wID0gKmNjZjsKPiArICAgIGlmICh0bXApIHsKPiArICAgICAgICBhdl9maWZvX2ZyZWVw MigmdG1wLT5jY182MDhfZmlmbyk7Cj4gKyAgICAgICAgYXZfZmlmb19mcmVlcDIoJnRtcC0+Y2Nf NzA4X2ZpZm8pOwo+ICsgICAgfQo+ICsgICAgYXZfZnJlZXAoY2NmKTsKPiArfQo+ICsKPiArQVZD Q0ZpZm8gKmZmX2NjZmlmb19hbGxvYyhBVlJhdGlvbmFsIGZyYW1lcmF0ZSwgdm9pZCAqbG9nX2N0 eCkKPiArewo+ICsgICAgQVZDQ0ZpZm8gKmNjZjsKPiArICAgIGludCBpOwo+ICsKPiArICAgIGNj ZiA9IGF2X21hbGxvY3ooc2l6ZW9mKCpjY2YpKTsKPiArICAgIGlmICghY2NmKQo+ICsgICAgICAg IHJldHVybiBOVUxMOwo+ICsKPiArICAgIGNjZi0+bG9nX2N0eCA9IGxvZ19jdHg7Cj4gKyAgICBj Y2YtPmZyYW1lcmF0ZSA9IGZyYW1lcmF0ZTsKPiArCj4gKyAgICBpZiAoIShjY2YtPmNjXzcwOF9m aWZvID0gYXZfZmlmb19hbGxvYzIoTUFYX0NDX0VMRU1FTlRTLAo+IENDX0JZVEVTX1BFUl9FTlRS WSwgMCkpKQo+ICsgICAgICAgIGdvdG8gZXJyb3I7Cj4gKwo+ICsgICAgaWYgKCEoY2NmLT5jY182 MDhfZmlmbyA9IGF2X2ZpZm9fYWxsb2MyKE1BWF9DQ19FTEVNRU5UUywKPiBDQ19CWVRFU19QRVJf RU5UUlksIDApKSkKPiArICAgICAgICBnb3RvIGVycm9yOwo+ICsKPiArICAgIC8qIEJhc2VkIG9u IHRoZSB0YXJnZXQgRlBTLCBmaWd1cmUgb3V0IHRoZSBleHBlY3RlZCBjY19jb3VudCBhbmQKPiBu dW1iZXIgb2YKPiArICAgICAgIDYwOCB0dXBsZXMgcGVyIHBhY2tldC4gIFNlZSBBTlNJL0NUQS03 MDgtRSBTZWMgNC4zLjYuMS4gKi8KPiArICAgIGZvciAoaSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVN UyhjY19sb29rdXBfdmFscyk7IGkrKykgewo+ICsgICAgICAgIGlmIChmcmFtZXJhdGUubnVtID09 IGNjX2xvb2t1cF92YWxzW2ldLm51bSAmJgo+ICsgICAgICAgICAgICBmcmFtZXJhdGUuZGVuID09 IGNjX2xvb2t1cF92YWxzW2ldLmRlbikgewo+ICsgICAgICAgICAgICBjY2YtPmV4cGVjdGVkX2Nj X2NvdW50ID0gY2NfbG9va3VwX3ZhbHNbaV0uY2NfY291bnQ7Cj4gKyAgICAgICAgICAgIGNjZi0+ ZXhwZWN0ZWRfNjA4ID0gY2NfbG9va3VwX3ZhbHNbaV0ubnVtXzYwODsKPiArICAgICAgICAgICAg YnJlYWs7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIGlmIChjY2YtPmV4cGVjdGVk XzYwOCA9PSAwKSB7Cj4gKyAgICAgICAgLyogV2UgZGlkbid0IGZpbmQgYW4gb3V0cHV0IGZyYW1l IHdlIHN1cHBvcnQuICBXZSdsbCBsZXQgdGhlIGNhbGwKPiBzdWNjZWVkCj4gKyAgICAgICAgICAg YW5kIHRoZSBGSUZPIHRvIGJlIGFsbG9jYXRlZCwgYnV0IHRoZSBleHRyYWN0L2luamVjdCBmdW5j dGlvbnMKPiB3aWxsIHNpbXBseQo+ICsgICAgICAgICAgIGxlYXZlIGV2ZXJ5dGhpbmcgdGhlIHdh eSBpdCBpcyAqLwo+ICsgICAgICAgIGNjZi0+cGFzc3Rocm91Z2ggPSAxOwo+ICsgICAgfQo+ICsK PiArICAgIHJldHVybiBjY2Y7Cj4gKwo+ICtlcnJvcjoKPiArICAgIGZmX2NjZmlmb19mcmVlcCgm Y2NmKTsKPiArICAgIHJldHVybiBOVUxMOwo+ICt9Cj4gKwo+ICtpbnQgZmZfY2NmaWZvX2dldG91 dHB1dHNpemUoQVZDQ0ZpZm8gKmNjZikKPiArewo+ICsgICAgcmV0dXJuIGNjZi0+ZXhwZWN0ZWRf Y2NfY291bnQgKiBDQ19CWVRFU19QRVJfRU5UUlk7Cj4gK30KPiArCj4gK2ludCBmZl9jY2ZpZm9f Y2NkZXRlY3RlZChBVkNDRmlmbyAqY2NmKQo+ICt7Cj4gKyAgICByZXR1cm4gY2NmLT5jY19kZXRl Y3RlZDsKPiArfQo+ICsKPiAraW50IGZmX2NjZmlmb19pbmplY3RieXRlcyhBVkNDRmlmbyAqY2Nm LCB1aW50OF90ICpjY19kYXRhLCBzaXplX3QgbGVuKQo+ICt7Cj4gKyAgICBpbnQgY2NfNjA4X3R1 cGxlcyA9IDA7Cj4gKyAgICBpbnQgY2NfNzA4X3R1cGxlcyA9IDA7Cj4gKyAgICBpbnQgY2NfZmls bGVkID0gMDsKPiArCj4gKyAgICBpZiAoY2NmLT5wYXNzdGhyb3VnaCkgewo+ICsgICAgICAgIHJl dHVybiAwOwo+ICsgICAgfQo+ICsKPiArICAgIGlmIChsZW4gPCBmZl9jY2ZpZm9fZ2V0b3V0cHV0 c2l6ZShjY2YpKSB7Cj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPiArICAgIH0K PiArCj4gKyAgICAvKiBJbnNlcnQgYW55IGF2YWlsYWJsZSBkYXRhIGZyb20gdGhlIDYwOCBGSUZP ICovCj4gKyAgICBpZiAoY2NmLT5leHBlY3RlZF82MDggPD0gYXZfZmlmb19jYW5fcmVhZChjY2Yt PmNjXzYwOF9maWZvKSkKPiArICAgICAgICBjY182MDhfdHVwbGVzID0gY2NmLT5leHBlY3RlZF82 MDg7Cj4gKyAgICBlbHNlCj4gKyAgICAgICAgY2NfNjA4X3R1cGxlcyA9IGF2X2ZpZm9fY2FuX3Jl YWQoY2NmLT5jY182MDhfZmlmbyk7Cj4gKyAgICBhdl9maWZvX3JlYWQoY2NmLT5jY182MDhfZmlm bywgY2NfZGF0YSwgY2NfNjA4X3R1cGxlcyk7Cj4gKyAgICBjY19maWxsZWQgKz0gY2NfNjA4X3R1 cGxlczsKPiArCj4gKyAgICAvKiBJbnNlcnQgYW55IGF2YWlsYWJsZSBkYXRhIGZyb20gdGhlIDcw OCBGSUZPICovCj4gKyAgICBpZiAoKGNjZi0+ZXhwZWN0ZWRfY2NfY291bnQgLSBjY19maWxsZWQp IDw9Cj4gYXZfZmlmb19jYW5fcmVhZChjY2YtPmNjXzcwOF9maWZvKSkKPiArICAgICAgICBjY183 MDhfdHVwbGVzID0gY2NmLT5leHBlY3RlZF9jY19jb3VudCAtIGNjX2ZpbGxlZDsKPiArICAgIGVs c2UKPiArICAgICAgICBjY183MDhfdHVwbGVzID0gYXZfZmlmb19jYW5fcmVhZChjY2YtPmNjXzcw OF9maWZvKTsKPiArICAgIGF2X2ZpZm9fcmVhZChjY2YtPmNjXzcwOF9maWZvLCAmY2NfZGF0YVtj Y19maWxsZWQgKgo+IENDX0JZVEVTX1BFUl9FTlRSWV0sIGNjXzcwOF90dXBsZXMpOwo+ICsgICAg Y2NfZmlsbGVkICs9IGNjXzcwOF90dXBsZXM7Cj4gKwo+ICsgICAgLyogSW5zZXJ0IDcwOCBwYWRk aW5nIGludG8gYW55IHJlbWFpbmluZyBmaWVsZHMgKi8KPiArICAgIHdoaWxlIChjY19maWxsZWQg PCBjY2YtPmV4cGVjdGVkX2NjX2NvdW50KSB7Cj4gKyAgICAgICAgY2NfZGF0YVtjY19maWxsZWQg KiBDQ19CWVRFU19QRVJfRU5UUlldICAgICA9IDB4ZmE7Cj4gKyAgICAgICAgY2NfZGF0YVtjY19m aWxsZWQgKiBDQ19CWVRFU19QRVJfRU5UUlkgKyAxXSA9IDB4MDA7Cj4gKyAgICAgICAgY2NfZGF0 YVtjY19maWxsZWQgKiBDQ19CWVRFU19QRVJfRU5UUlkgKyAyXSA9IDB4MDA7Cj4gKyAgICAgICAg Y2NfZmlsbGVkKys7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK2lu dCBmZl9jY2ZpZm9faW5qZWN0KEFWQ0NGaWZvICpjY2YsIEFWRnJhbWUgKmZyYW1lKQo+ICt7Cj4g KyAgICBBVkZyYW1lU2lkZURhdGEgKnNkOwo+ICsgICAgaW50IHJldDsKPiArCj4gKyAgICBpZiAo Y2NmLT5wYXNzdGhyb3VnaCA9PSAxIHx8IGNjZi0+Y2NfZGV0ZWN0ZWQgPT0gMCkKPiArICAgICAg ICByZXR1cm4gMDsKPiArCj4gKyAgICBzZCA9IGF2X2ZyYW1lX25ld19zaWRlX2RhdGEoZnJhbWUs IEFWX0ZSQU1FX0RBVEFfQTUzX0NDLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZmX2NjZmlmb19nZXRvdXRwdXRzaXplKGNjZikpOwo+ICsgICAgaWYgKHNkKSB7Cj4gKyAgICAg ICAgcmV0ID0gZmZfY2NmaWZvX2luamVjdGJ5dGVzKGNjZiwgc2QtPmRhdGEsIHNkLT5zaXplKTsK PiArICAgICAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICBhdl9mcmFtZV9yZW1vdmVf c2lkZV9kYXRhKGZyYW1lLCBBVl9GUkFNRV9EQVRBX0E1M19DQyk7Cj4gKyAgICAgICAgICAgIHJl dHVybiByZXQ7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9 Cj4gKwo+ICtpbnQgZmZfY2NmaWZvX2V4dHJhY3RieXRlcyhBVkNDRmlmbyAqY2NmLCB1aW50OF90 ICpjY19ieXRlcywgc2l6ZV90IGxlbikKPiArewo+ICsgICAgaW50IGNjX2NvdW50ID0gbGVuIC8g Q0NfQllURVNfUEVSX0VOVFJZOwo+ICsKPiArICAgIGlmIChjY2YtPnBhc3N0aHJvdWdoID09IDEp IHsKPiArICAgICAgICBhdl9sb2dfb25jZShjY2YtPmxvZ19jdHgsIEFWX0xPR19XQVJOSU5HLCBB Vl9MT0dfREVCVUcsCj4gJmNjZi0+cGFzc3Rocm91Z2hfd2FybmluZywKPiArICAgICAgICAgICAg ICAgICAgICAiY2NfZmlmbyBjYW5ub3QgdHJhbnNjb2RlIGNhcHRpb25zIGZwcz0lZC8lZFxuIiwK PiArICAgICAgICAgICAgICAgICAgICBjY2YtPmZyYW1lcmF0ZS5udW0sIGNjZi0+ZnJhbWVyYXRl LmRlbik7Cj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgY2NmLT5jY19k ZXRlY3RlZCA9IDE7Cj4gKwo+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjY19jb3VudDsgaSsr KSB7Cj4gKyAgICAgICAgLyogU2VlIEFOU0kvQ1RBLTcwOC1FIFNlYyA0LjMsIFRhYmxlIDMgKi8K PiArICAgICAgICB1aW50OF90IGNjX3ZhbGlkID0gKGNjX2J5dGVzW0NDX0JZVEVTX1BFUl9FTlRS WSppXSAmIDB4MDQpID4+IDI7Cj4gKyAgICAgICAgdWludDhfdCBjY190eXBlID0gY2NfYnl0ZXNb Q0NfQllURVNfUEVSX0VOVFJZKmldICYgMHgwMzsKPiArICAgICAgICBpZiAoY2NfdHlwZSA9PSAw eDAwIHx8IGNjX3R5cGUgPT0gMHgwMSkgewo+ICsgICAgICAgICAgICBhdl9maWZvX3dyaXRlKGNj Zi0+Y2NfNjA4X2ZpZm8sCj4gJmNjX2J5dGVzW0NDX0JZVEVTX1BFUl9FTlRSWSppXSwgMSk7Cj4g KyAgICAgICAgfSBlbHNlIGlmIChjY192YWxpZCAmJiAoY2NfdHlwZSA9PSAweDAyIHx8IGNjX3R5 cGUgPT0gMHgwMykpIHsKPiArICAgICAgICAgICAgYXZfZmlmb193cml0ZShjY2YtPmNjXzcwOF9m aWZvLAo+ICZjY19ieXRlc1tDQ19CWVRFU19QRVJfRU5UUlkqaV0sIDEpOwo+ICsgICAgICAgIH0K PiArICAgIH0KPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKiBSZWFkIHRoZSBBNTMgc2lk ZSBkYXRhLCBkaXNjYXJkIHBhZGRpbmcsIGFuZCBwdXQgNjA4LzcwOCBpbnRvCj4gKyAgIHF1ZXVl cyBzbyB3ZSBjYW4gZW5zdXJlIHRoZXkgZ2V0IGludG8gdGhlIG91dHB1dCBmcmFtZXMgYXQKPiAr ICAgdGhlIGNvcnJlY3QgcmF0ZS4uLiAqLwo+ICtpbnQgZmZfY2NmaWZvX2V4dHJhY3QoQVZDQ0Zp Zm8gKmNjZiwgQVZGcmFtZSAqZnJhbWUpCj4gK3sKPiArICAgIEFWRnJhbWVTaWRlRGF0YSAqc2lk ZV9kYXRhID0gYXZfZnJhbWVfZ2V0X3NpZGVfZGF0YShmcmFtZSwKPiBBVl9GUkFNRV9EQVRBX0E1 M19DQyk7Cj4gKyAgICBpZiAoc2lkZV9kYXRhKSB7Cj4gKyAgICAgICAgZmZfY2NmaWZvX2V4dHJh Y3RieXRlcyhjY2YsIHNpZGVfZGF0YS0+ZGF0YSwgc2lkZV9kYXRhLT5zaXplKTsKPiArCj4gKyAg ICAgICAgLyogUmVtb3ZlIHRoZSBzaWRlIGRhdGEsIGFzIHdlIHdpbGwgcmUtY3JlYXRlIGl0IG9u IHRoZQo+ICsgICAgICAgICAgIG91dHB1dCBhcyBuZWVkZWQgKi8KPiArICAgICAgICBpZiAoIWNj Zi0+cGFzc3Rocm91Z2gpCj4gKyAgICAgICAgICAgIGF2X2ZyYW1lX3JlbW92ZV9zaWRlX2RhdGEo ZnJhbWUsIEFWX0ZSQU1FX0RBVEFfQTUzX0NDKTsKPiArICAgIH0KPiArICAgIHJldHVybiAwOwo+ ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2NjZmlmby5oIGIvbGliYXZmaWx0ZXIvY2Nm aWZvLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjQ0YzkyNDUKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvbGliYXZmaWx0ZXIvY2NmaWZvLmgKPiBAQCAtMCwwICsxLDEx MCBAQAo+ICsvKgo+ICsgKiBDRUEtNzA4IENsb3NlZCBDYXB0aW9uaW5nIEZJRk8KPiArICogQ29w eXJpZ2h0IChjKSAyMDIzIExUTiBHbG9iYWwgQ29tbXVuaWNhdGlvbnMKPiArICoKPiArICogQXV0 aG9yOiBEZXZpbiBIZWl0bXVlbGxlciA8ZGhlaXRtdWVsbGVyQGx0bmdsb2JhbC5jb20+Cj4gKyAq Cj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiArICoKPiArICogRkZtcGVnIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ICsgKiBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4g KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUgR05VCj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBGb3VuZGF0aW9uLCBJbmMu LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCj4gMDIxMTAtMTMw MSBVU0EKPiArICovCj4gKwo+ICsvKioKPiArICogQGZpbGUKPiArICogQ0MgRklGTyBCdWZmZXIK PiArICovCj4gKwo+ICsjaWZuZGVmIEFWRklMVEVSX0NDRklGT19ICj4gKyNkZWZpbmUgQVZGSUxU RVJfQ0NGSUZPX0gKPiArCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZ1dGlsLmgiCj4gKyNpbmNs dWRlICJsaWJhdnV0aWwvZnJhbWUuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9maWZvLmgiCj4g Kwo+ICt0eXBlZGVmIHN0cnVjdCBBVkNDRmlmbyBBVkNDRmlmbzsKPiArCj4gKy8qKgo+ICsgKiBB bGxvY2F0ZSBhbiBBVkNDRmlmby4KPiArICoKPiArICogQHBhcmFtIGZyYW1lcmF0ZSAgIG91dHB1 dCBmcmFtZXJhdGUKPiArICogQHBhcmFtIGxvZ19jdHggICAgIHVzZWQgZm9yIGFueSBhdl9sb2co KSBjYWxscwo+ICsgKiBAcmV0dXJuICAgICAgICAgICAgbmV3bHkgYWxsb2NhdGVkIEFWQ0NGaWZv LCBvciBOVUxMIG9uIGVycm9yCj4gKyAqLwo+ICtBVkNDRmlmbyAqZmZfY2NmaWZvX2FsbG9jKEFW UmF0aW9uYWwgZnJhbWVyYXRlLCB2b2lkICpsb2dfY3R4KTsKPiArCj4gKy8qKgo+ICsgKiBGcmVl IGFuIEFWQ0NGaWZvCj4gKyAqCj4gKyAqIEBwYXJhbSBjY2YgUG9pbnRlciB0byB0aGUgcG9pbnRl ciB0byB0aGUgQVZDQ0ZpZm8gd2hpY2ggc2hvdWxkIGJlIGZyZWVkCj4gKyAqIEBub3RlIGAqcHRy ID0gTlVMTGAgaXMgc2FmZSBhbmQgbGVhZHMgdG8gbm8gYWN0aW9uLgo+ICsgKi8KPiArdm9pZCBm Zl9jY2ZpZm9fZnJlZXAoQVZDQ0ZpZm8gKipjY2YpOwo+ICsKPiArCj4gKy8qKgo+ICsgKiBFeHRy YWN0IENDIGRhdGEgZnJvbSBhbiBBVkZyYW1lCj4gKyAqCj4gKyAqIEV4dHJhY3QgQ0MgYnl0ZXMg ZnJvbSB0aGUgQVZGcmFtZSwgaW5zZXJ0IHRoZW0gaW50byBvdXIgcXVldWUsIGFuZAo+ICsgKiBy ZW1vdmUgdGhlIHNpZGUgZGF0YSBmcm9tIHRoZSBBVkZyYW1lLiAgVGhlIHNpZGUgZGF0YSBpcyBy ZW1vdmVkCj4gKyAqIGFzIGl0IHdpbGwgYmUgcmUtaW5zZXJ0ZWQgYXQgdGhlIGFwcHJvcHJpYXRl IHJhdGUgbGF0ZXIgaW4gdGhlCj4gKyAqIGZpbHRlci4KPiArICoKPiArICogQHBhcmFtIGFmICAg ICAgICAgIEFWQ0NGaWZvIHRvIHdyaXRlIHRvCj4gKyAqIEBwYXJhbSBmcmFtZSAgICAgICBBVkZy YW1lIHdpdGggdGhlIHZpZGVvIGZyYW1lIHRvIG9wZXJhdGUgb24KPiArICogQHJldHVybiAgICAg ICAgICAgIFplcm8gb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgQVZFUlJPUgo+ICsgKiAgICAgICAg ICAgICAgICAgICAgY29kZSBvbiBmYWlsdXJlLgo+ICsgKi8KPiAraW50IGZmX2NjZmlmb19leHRy YWN0KEFWQ0NGaWZvICpjY2YsIEFWRnJhbWUgKmZyYW1lKTsKPiArCj4gKy8qKgo+ICsgKkp1c3Qg bGlrZSBmZl9jY2ZpZm9fZXh0cmFjdCgpLCBidXQgdGFrZXMgdGhlIHJhdyBieXRlcyBpbnN0ZWFk IG9mIGFuCj4gQVZGcmFtZQo+ICsgKi8KPiAraW50IGZmX2NjZmlmb19leHRyYWN0Ynl0ZXMoQVZD Q0ZpZm8gKmNjZiwgdWludDhfdCAqZGF0YSwgc2l6ZV90IGxlbik7Cj4gKwo+ICsvKioKPiArICog UHJvdmlkZSB0aGUgc2l6ZSBpbiBieXRlcyBvZiBhbiBvdXRwdXQgYnVmZmVyIHRvIGFsbG9jYXRl Cj4gKyAqCj4gKyAqIEFzayBmb3IgaG93IG1hbnkgYnl0ZXMgdGhlIG91dHB1dCB3aWxsIGNvbnRh aW4sIHNvIHRoZSBjYWxsZXIgY2FuCj4gYWxsb2NhdGUKPiArICogYW4gYXBwcm9wcmlhdGVseSBz aXplZCBidWZmZXIgYW5kIHBhc3MgaXQgdG8gZmZfY2NmaWZvX2luamVjdGJ5dGVzKCkKPiArICoK PiArICovCj4gK2ludCBmZl9jY2ZpZm9fZ2V0b3V0cHV0c2l6ZShBVkNDRmlmbyAqY2NmKTsKPiAr Cj4gKy8qKgo+ICsgKiBJbnNlcnQgQ0MgZGF0YSBmcm9tIHRoZSBGSUZPIGludG8gYW4gQVZGcmFt ZSAoYXMgc2lkZSBkYXRhKQo+ICsgKgo+ICsgKiBEZXF1ZXVlIHRoZSBhcHByb3ByaWF0ZSBudW1i ZXIgb2YgQ0MgdHVwbGVzIGJhc2VkIG9uIHRoZQo+ICsgKiBmcmFtZSByYXRlLCBhbmQgaW5zZXJ0 IHRoZW0gaW50byB0aGUgQVZGcmFtZQo+ICsgKgo+ICsgKiBAcGFyYW0gYWYgICAgICAgICAgQVZD Q0ZpZm8gdG8gcmVhZCBmcm9tCj4gKyAqIEBwYXJhbSBmcmFtZSAgICAgICBBVkZyYW1lIHdpdGgg dGhlIHZpZGVvIGZyYW1lIHRvIG9wZXJhdGUgb24KPiArICogQHJldHVybiAgICAgICAgICAgIFpl cm8gb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgQVZFUlJPUgo+ICsgKiAgICAgICAgICAgICAgICAg ICAgY29kZSBvbiBmYWlsdXJlLgo+ICsgKi8KPiAraW50IGZmX2NjZmlmb19pbmplY3QoQVZDQ0Zp Zm8gKmNjZiwgQVZGcmFtZSAqZnJhbWUpOwo+ICsKPiArLyoqCj4gKyAqIEp1c3QgbGlrZSBmZl9j Y2ZpZm9faW5qZWN0KCksIGJ1dCB0YWtlcyB0aGUgcmF3IGJ5dGVzIHRvIGluc2VydCB0aGUgQ0MK PiBkYXRhCj4gKyAqIGludCByYXRoZXIgdGhhbiBhbiBBVkZyYW1lCj4gKyAqLwo+ICtpbnQgZmZf Y2NmaWZvX2luamVjdGJ5dGVzKEFWQ0NGaWZvICpjY2YsIHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBs ZW4pOwo+ICsKPiArLyoqCj4gKyAqIFJldHVybnMgMSBpZiBjYXB0aW9ucyBoYXZlIGJlZW4gZm91 bmQgYXMgYSBwcmlvciBjYWxsCj4gKyAqIHRvIGZmX2NjZmlmb19leHRyYWN0KCkgb3IgZmZfY2Nm aWZvX2V4dHJhY3RieXRlcygpCj4gKyAqLwo+ICtpbnQgZmZfY2NmaWZvX2NjZGV0ZWN0ZWQoQVZD Q0ZpZm8gKmNjZik7Cj4gKwo+ICsjZW5kaWYgLyogQVZGSUxURVJfQ0NGSUZPX0ggKi8KPiAtLQo+ IDEuOC4zLjEKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3Jn Cj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4KPiBU byB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwt cmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo+Cl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWls aW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxt YW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92 ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3Qg InVuc3Vic2NyaWJlIi4K