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 BBCFC44DC0 for ; Tue, 22 Nov 2022 21:00:14 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6B88268BB59; Tue, 22 Nov 2022 23:00:11 +0200 (EET) Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 764CD68BA26 for ; Tue, 22 Nov 2022 23:00:04 +0200 (EET) Received: by mail-wr1-f46.google.com with SMTP id bs21so26677931wrb.4 for ; Tue, 22 Nov 2022 13:00:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jkqxz-net.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:in-reply-to:references:to:from :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=q2qAW05kHjgNOf73mMQ1xalU9J8nMZgJ4XTIMXkE890=; b=X2l2XHDMwRlFvVForbn2RnxFzu0mIi7PgFXDlT+Qduy/qY14QcjwAhopIr+HglQkme BY6XKTMeHHn89Fp31BvZkFfcwr8fucbEmViAa/h+bGnpRcB5NY7SWcKlmLVYMrOJxhDa qpCV0S3YkadYE+5N3QQi/VC71MQkdYIvfpKJuhj17NftVWoUFJDKewNw4/JRUpbtjWER +utXI5EFBuGt/Je3rU8QGtGY2TChX6Y0qktQ4j5ujvWhzyeaYV+6TEJb6o4Pb9pC9ufQ XSo+9VjBplA5dfynTWATJsPnU/IQU1hwK6SY+wgY2Ez5ocdUFyJkkO0fNI+RMsVcMquj VuKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:references:to:from :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=q2qAW05kHjgNOf73mMQ1xalU9J8nMZgJ4XTIMXkE890=; b=12ONRRApstxs6Sa0/+qHdWsVljQsDfeqD9jUqcgd5tQeJ5REnLYbstf510Bm41HXfg xrNHcjKKbNCS/urKZqEuVWBFB+SJU/cQgO8u38XxdpunlK8BckDyY2y4d96naps02fAV 8hk0NLvE7VsYYrGJItQhDtFklJku7t5hb4AqbQO+Ez+DZ0jvtuCHwA25B0t9pt91WuCC y0YAxOYSibnHx8Fx35CK9mf+RmBSZ3Gt4YVldQw3iES3qlLmyvEKDjY+J/i+vojHgWfX 9Ts7lcwtcC2Rb5Ck2Hq6q6KFPBljiS1JaK8pr3yzHXxDNOKzBaE++eRqOiRgYxEQf6Nu bdmg== X-Gm-Message-State: ANoB5pnrx/KHdwtPOUN1TOXHjvthXGlqppQGiW6BJ9zh8lpGDjqyPRFz 4cbOXvWUiaBPz+4bZJwuMcF1Ikr2U4jcMg== X-Google-Smtp-Source: AA0mqf5X4/6sR7Nczu4grRMposuXE1ZwRWjPEnKe0L8Hx/K6RqKhFI972PnwOa8kqtL2AnobLusNaA== X-Received: by 2002:adf:d231:0:b0:241:e2d1:ec92 with SMTP id k17-20020adfd231000000b00241e2d1ec92mr2961235wrh.408.1669150803786; Tue, 22 Nov 2022 13:00:03 -0800 (PST) Received: from [192.168.0.14] (cpc91224-cmbg18-2-0-cust209.5-4.cable.virginm.net. [81.106.228.210]) by smtp.gmail.com with ESMTPSA id j39-20020a05600c1c2700b003cf57329221sm25151299wms.14.2022.11.22.13.00.03 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 22 Nov 2022 13:00:03 -0800 (PST) Message-ID: Date: Tue, 22 Nov 2022 20:59:41 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.1 Content-Language: en-US From: Mark Thompson To: ffmpeg-devel@ffmpeg.org References: <20221118153422.67632-1-ruijing.dong@amd.com> <20221120025914.39732-1-ruijing.dong@amd.com> <4776acec-357b-5c36-1292-7e5204c4759f@jkqxz.net> <4df30d96-5b77-bc2b-ce3a-4c253889a408@jkqxz.net> In-Reply-To: <4df30d96-5b77-bc2b-ce3a-4c253889a408@jkqxz.net> Subject: Re: [FFmpeg-devel] [PATCH v2] avcodec/av1_vaapi: add direct film grain mode 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gMjIvMTEvMjAyMiAyMDoyNiwgTWFyayBUaG9tcHNvbiB3cm90ZToKPiBPbiAyMi8xMS8yMDIy IDE5OjE4LCBEb25nLCBSdWlqaW5nIHdyb3RlOgo+PiBbQU1EIE9mZmljaWFsIFVzZSBPbmx5IC0g R2VuZXJhbF0KPj4KPj4gSGkgTWFyaywKPj4KPj4gU29ycnkgZm9yIGJlaW5nIGxhdGUgdG8gcmVw bHkgdG8geW91Lgo+Pgo+PiBZb3VyIHVuZGVyc3RhbmRpbmcgaXMgY29ycmVjdCwgYW5kIEkgaGF2 ZSBzZW50IGEgbmV3IHBhdGNoIFt2NF0gZm9yIGFkZHJlc3NpbmcgdGhlIGN1cnJlbnQgaXNzdWUg YW5kIHRvIHVzZQo+PiBkcml2ZXIgcXVpcmsgbWVjaGFuaXNtIHRvIHNwZWNpZnkgb25seSBBTUQg VkFBUEkgZHJpdmVyIGhhcyB0aGlzIGJlaGF2aW9yLCB0aGVuIHRoaXMgY291bGQgYmUgbW9yZSBz cGVjaWZpYy4KPj4KPj4gRm9yIEFNRCBoYXJkd2FyZSwgaXQgYWxsb2NhdGVzIEdQVSBtZW1vcnkg aW50ZXJuYWxseSBmb3IgdGhlIERQQiBtYW5hZ2VtZW50LCB0aGUgb3V0cHV0IGlzIGFsd2F5cyB0 aGUgZmluYWwgb25lIHdpdGggb3Igd2l0aG91dCBhcHBsaWVkIGZpbG0tZ3JhaW4uCj4gCj4gSSBk b24ndCBzZWUgd2h5IHRoaXMgcmVxdWlyZXMgeW91IHRvIHdyaXRlIHRoZSBvdXRwdXQgdG8gdGhl IHdyb25nIHN1cmZhY2UuwqAgV2h5IG5vdCB3cml0ZSBpdCB0byB0aGUgY29ycmVjdCBvbmUgaW5z dGVhZD8KCkluZGVlZCwgdGhpcyBzZWVtcyB0byBiZSBhIHRyaXZpYWwgZml4IGluIE1lc2E6IDxo dHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvbWVzYS9tZXNhLy0vbWVyZ2VfcmVxdWVzdHMv MTk5Mzg+LgoKSXQgd291bGQgYmUgaGVscGZ1bCBpZiBzb21lb25lIHdpdGggc3VpdGFibGUgaGFy ZHdhcmUgY291bGQgdGVzdCB0aGF0LgoKVGhhbmtzLAoKLSBNYXJrCgo+PiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQo+PiBGcm9tOiBmZm1wZWctZGV2ZWwgPGZmbXBlZy1kZXZlbC1ib3VuY2Vz QGZmbXBlZy5vcmc+IE9uIEJlaGFsZiBPZiBNYXJrIFRob21wc29uCj4+IFNlbnQ6IFN1bmRheSwg Tm92ZW1iZXIgMjAsIDIwMjIgMTE6NDQgQU0KPj4gVG86IGZmbXBlZy1kZXZlbEBmZm1wZWcub3Jn Cj4+IFN1YmplY3Q6IFJlOiBbRkZtcGVnLWRldmVsXSBbUEFUQ0ggdjJdIGF2Y29kZWMvYXYxX3Zh YXBpOiBhZGQgZGlyZWN0IGZpbG0gZ3JhaW4gbW9kZQo+Pgo+PiBPbiAyMC8xMS8yMDIyIDAyOjU5 LCBSdWlqaW5nIERvbmcgd3JvdGU6Cj4+PiBBZGRpbmcgZGlyZWN0IGZpbG0gZ3JhaW4gbW9kZSBm b3IgYXYxIGRlY29kZXIsIHdoaWNoIG91dHB1dHMgYWxvbmdzaWRlCj4+PiBmaWxtIGdyYWluLgo+ Pj4KPj4+IEFWX0hXQUNDRUxfRkxBR19ESVJFQ1RfRklMTV9HUkFJTiBpcyB0aGUgbmV3IGZsYWcg aW50cm9kdWNlZCB0byBlbmFibGUKPj4+IHRoaXMgcGF0aC4KPj4+Cj4+PiBpc3N1ZToKPj4+IEJ5 IHVzaW5nIEFNRCBhdjEgZGVjb2RlciB2aWEgVkFBUEksIHdoZW4gdXNlZCB3aXRoIGZpbG0gZ3Jh aW4gY29udGVudCwKPj4+IHRoZSBvdXRwdXQgZGlzcGxheXMgYmxhY2sgc2NyZWVuIHdpdGggaW5j b3JyZWN0IGZyYW1lIG9yZGVyLgo+Pj4KPj4+IFRoZSBpc3N1ZSBiZWluZyBkaXNjdXNzZWQgaW4g aGVyZToKPj4+IGh0dHBzOi8vbmFtMTEuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20v P3VybD1odHRwcyUzQSUyRiUyRmdpdGwKPj4+IGFiLmZyZWVkZXNrdG9wLm9yZyUyRm1lc2ElMkZt ZXNhJTJGLSUyRmlzc3VlcyUyRjY5MDMlMjNub3RlXzE2MTM4MDcmYW0KPj4+IHA7ZGF0YT0wNSU3 QzAxJTdDcnVpamluZy5kb25nJTQwYW1kLmNvbSU3QzZmNzViZTZhNGY4MDQ0ZmUwMzdkMDhkYWNi MTYKPj4+IDg1MjklN0MzZGQ4OTYxZmU0ODg0ZTYwOGUxMWE4MmQ5OTRlMTgzZCU3QzAlN0MwJTdD NjM4MDQ1NTk1ODY0NzYyMDQxJTcKPj4+IENVbmtub3duJTdDVFdGcGJHWnNiM2Q4ZXlKV0lqb2lN QzR3TGpBd01EQWlMQ0pRSWpvaVYybHVNeklpTENKQlRpSTZJazEKPj4+IGhhV3dpTENKWFZDSTZN bjAlM0QlN0MzMDAwJTdDJTdDJTdDJmFtcDtzZGF0YT1NczdQQ05Fak9zMDlKVlFkMktCNDZTdDUK Pj4+IHczVjhJZGJjMnNoWkM4MFZlZkklM0QmYW1wO3Jlc2VydmVkPTAKPj4+Cj4+PiBleGFtcGxl Ogo+Pj4gVGhpcyBmbGFnIGNhbiBiZSB1c2VkIGluIGZmbXBlZyBjb21tYW5kOgo+Pj4KPj4+IGZm bXBlZyAtaHdhY2NlbCB2YWFwaSAtdmFhcGlfZGV2aWNlIC9kZXYvZHJpL3JlbmRlckQxMjgKPj4+ IMKgwqDCoMKgwqDCoMKgIC1od2FjY2VsX2ZsYWdzIDgKPj4+IMKgwqDCoMKgwqDCoMKgIC1pIGlu cHV0X3dpdGhfZmlsbV9ncmFtLm9idQo+Pj4gwqDCoMKgwqDCoMKgwqAgb3V0cHV0X3dpdGhfZmls bV9ncmFpbi55dXYKPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBSdWlqaW5nIERvbmcgPHJ1aWppbmcu ZG9uZ0BhbWQuY29tPgo+Pj4gLS0tCj4+PiB1cGRhdGU6IGFkZCBuZXcgb3B0aW9uIGRpcmVjdF9m aWxtX2dyYWluIGluIG9wdG9uc190YWJsZS5oCj4+Pgo+Pj4gwqDCoCBsaWJhdmNvZGVjL2F2Y29k ZWMuaMKgwqDCoMKgwqDCoCB8IDE3ICsrKysrKysrKysrKysrKysrCj4+PiDCoMKgIGxpYmF2Y29k ZWMvb3B0aW9uc190YWJsZS5oIHzCoCAxICsKPj4+IMKgwqAgbGliYXZjb2RlYy92YWFwaV9hdjEu Y8KgwqDCoMKgIHzCoCA2ICsrKystLQo+Pj4gwqDCoCAzIGZpbGVzIGNoYW5nZWQsIDIyIGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4+Cj4+IE15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBp cyBhcyBmb2xsb3dzLCBwbGVhc2UgY29ycmVjdCBtZSBpZiBhbnkgb2YgdGhpcyBpcyB3cm9uZzoK Pj4KPj4gKiBGb3IgQVYxIHdpdGggZmlsbSBncmFpbiBlbmFibGVkLCBWQUFQSSBkZWNvZGUgaXMg c3BlY2lmaWVkIHdpdGggdHdvIG91dHB1dCBzdXJmYWNlczogb25lIGZvciBwcmUtZ3JhaW4gKHJl ZmVyZW5jZSkgb3V0cHV0IGFuZCBvbmUgZm9yIHBvc3QtZ3JhaW4gKGRpc3BsYXkpIG91dHB1dC4K Pj4gKiBUaGUgY3VycmVudCBkcml2ZXIgaW4gTWVzYSBhbHdheXMgd3JpdGVzIHRvIHRoZSBwcmUt Z3JhaW4gc3VyZmFjZSBhbmQgaWdub3JlcyB0aGUgcG9zdC1ncmFpbiBzdXJmYWNlIGVudGlyZWx5 Lgo+PiAqIFRvIGZpeCB0aGlzLCB5b3UgaW50ZW5kIHRvIG1vZGlmeSB0aGUgVkFBUEkgY29kZSBp biBsaWJhdmNvZGVjIHRvIGFsbG93IHRoZSB1c2VyIHRvIG1hbnVhbGx5IG92ZXJyaWRlIHRoZSBl eHBlY3RlZCBWQUFQSSBiZWhhdmlvdXIgYW5kIGluc3RlYWQgYXNzdW1lIHRoYXQgdGhlIHBvc3Qt Z3JhaW4gb3V0cHV0IGhhcyBiZWVuIHdyaXR0ZW4gdG8gdGhlIHByZS1ncmFpbiBzdXJmYWNlLgo+ Pgo+PiBJcyB0aGF0IHJpZ2h0Pwo+Pgo+Pgo+PiBbcmRvbmddOgo+Pgo+PiBJZiBpdCBpcywgY291 bGQgeW91IHBlcmhhcHMgZXhwbGFpbiB3aHkgdGhpcyBtYW51YWwgb3B0aW9uIGlzIHByZWZlcmFi bGUgdG8gdGhlIG1vcmUgb2J2aW91cyBzb2x1dGlvbiBvZiBNZXNhIGJlaW5nIGZpeGVkIHRvIHdy aXRlIHRoZSBwb3N0LWdyYWluIG91dHB1dCB0byB0aGUgcG9zdC1ncmFpbiBzdXJmYWNlPwo+Pgo+ PiBUaGFua3MsCj4+Cj4+IC0gTWFyawo+Pgo+Pgo+Pj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMv YXZjb2RlYy5oIGIvbGliYXZjb2RlYy9hdmNvZGVjLmggaW5kZXgKPj4+IDNlZGQ4ZTI2MzYuLjk0 MjBlNzgyMGQgMTAwNjQ0Cj4+PiAtLS0gYS9saWJhdmNvZGVjL2F2Y29kZWMuaAo+Pj4gKysrIGIv bGliYXZjb2RlYy9hdmNvZGVjLmgKPj4+IEBAIC0yMjUzLDYgKzIyNTMsMjMgQEAgdHlwZWRlZiBz dHJ1Y3QgQVZIV0FjY2VsIHsKPj4+IMKgwqDCoCAqLwo+Pj4gwqDCoCAjZGVmaW5lIEFWX0hXQUND RUxfRkxBR19BTExPV19QUk9GSUxFX01JU01BVENIICgxIDw8IDIpCj4+Pgo+Pj4gKy8qKgo+Pj4g KyAqIFRoZSBmaWxtIGdyYWluIHN5bnRoZXNpcyBjb3VsZCBiZSBzZXBlcmF0ZSBmcm9tIGRlY29k aW5nIHByb2Nlc3MuCj4+PiArICogVGhlIGRvd25zdHJlYW0gZGV2aWNlIHdvdWxkIGFwcGx5IHRo ZSBmaWxtIGdyYWluIHBhcmFtZXRlcnMgc2VwZXJhdGVseS4KPj4+ICsgKiBUaGUgZGVzaXJlZCBm aWxtIGdyYWluIHBhcmFtZXRlcnMgY2FuIGJlIGZvdW5kIGluIFNFSSBzZWN0aW9uIGluCj4+PiAr SDI2NAo+Pj4gKyAqIG9yIEgyNjUgYml0c3RyZWFtcy4KPj4+ICsgKgo+Pj4gKyAqIEluIEFWMSwg ZmlsbSBncmFpbiBpcyBtYW5kYXRvcmlseSBzcGVjaWZpZWQsIGF2MSBkZWNvZGVycyBsaWtlIEFN RAo+Pj4gKyAqIGF2MSBkZWNvZGVyIHByb2Nlc3MgZmlsbSBncmFpbiBjb250ZW50IGludGVybmFs bHksIGFuZCB0aGUgb3V0cHV0Cj4+PiArICogaW5jbHVkZXMgYXBwbGllZCBmaWxtIGdyYWluLiBG b3IgdGhlIHB1cnBvc2Ugb2Ygc3VwcG9ydGluZyB0aGVzZQo+Pj4gK2F2MQo+Pj4gKyAqIGRlY29k ZXJzLCB0aGlzIGZsYWcgbmVlZHMgdG8gYmUgdXRpbGl6ZWQuCj4+PiArICoKPj4+ICsgKiBAd2Fy bmluZyBJZiB0aGUgc3RyZWFtIGhhcyBubyBmaWxtIGdyYWluIGNvbnRlbnQsIHRoaXMgZmxhZyB3 aWxsCj4+PiArICrCoMKgwqDCoMKgwqDCoMKgwqAgYmUgaWdub3JlZCBpbiB0aGUgc3VwcG9ydGVk IGF2MSBkZWNvZGVycy4gSXQgaXMgYWR2aXNlZAo+Pj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgIHRo YXQgdGhpcyBmbGFnIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gYXYxIGRlY29kZXJzCj4+PiArICrC oMKgwqDCoMKgwqDCoMKgwqAgdGhhdCBzdXBwb3J0IGl0Lgo+Pj4gKyAqLwo+Pj4gKyNkZWZpbmUg QVZfSFdBQ0NFTF9GTEFHX0RJUkVDVF9GSUxNX0dSQUlOICgxIDw8IDMpCj4+PiDCoMKgIC8qKgo+ Pj4gwqDCoMKgICogQH0KPj4+IMKgwqDCoCAqLwo+Pj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMv b3B0aW9uc190YWJsZS5oIGIvbGliYXZjb2RlYy9vcHRpb25zX3RhYmxlLmgKPj4+IGluZGV4IGNk MDJmNTA5NmYuLjAzMDJmODkyODAgMTAwNjQ0Cj4+PiAtLS0gYS9saWJhdmNvZGVjL29wdGlvbnNf dGFibGUuaAo+Pj4gKysrIGIvbGliYXZjb2RlYy9vcHRpb25zX3RhYmxlLmgKPj4+IEBAIC0zOTks NiArMzk5LDcgQEAgc3RhdGljIGNvbnN0IEFWT3B0aW9uIGF2Y29kZWNfb3B0aW9uc1tdID0gewo+ Pj4gwqDCoCB7Imlnbm9yZV9sZXZlbCIsICJpZ25vcmUgbGV2ZWwgZXZlbiBpZiB0aGUgY29kZWMg bGV2ZWwgdXNlZCBpcyB1bmtub3duIG9yIGhpZ2hlciB0aGFuIHRoZSBtYXhpbXVtIHN1cHBvcnRl ZCBsZXZlbCByZXBvcnRlZCBieSB0aGUgaGFyZHdhcmUgZHJpdmVyIiwgMCwgQVZfT1BUX1RZUEVf Q09OU1QsIHsgLmk2NCA9IEFWX0hXQUNDRUxfRkxBR19JR05PUkVfTEVWRUwgfSwgSU5UX01JTiwg SU5UX01BWCwgViB8IEQsICJod2FjY2VsX2ZsYWdzIiB9LAo+Pj4gwqDCoCB7ImFsbG93X2hpZ2hf ZGVwdGgiLCAiYWxsb3cgdG8gb3V0cHV0IFlVViBwaXhlbCBmb3JtYXRzIHdpdGggYSBkaWZmZXJl bnQgY2hyb21hIHNhbXBsaW5nIHRoYW4gNDoyOjAgYW5kL29yIG90aGVyIHRoYW4gOCBiaXRzIHBl ciBjb21wb25lbnQiLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSBBVl9IV0FDQ0VMX0ZM QUdfQUxMT1dfSElHSF9ERVBUSCB9LCBJTlRfTUlOLCBJTlRfTUFYLCBWIHwgRCwgImh3YWNjZWxf ZmxhZ3MifSwKPj4+IMKgwqAgeyJhbGxvd19wcm9maWxlX21pc21hdGNoIiwgImF0dGVtcHQgdG8g ZGVjb2RlIGFueXdheSBpZiBIVwo+Pj4gYWNjZWxlcmF0ZWQgZGVjb2RlcidzIHN1cHBvcnRlZCBw cm9maWxlcyBkbyBub3QgZXhhY3RseSBtYXRjaCB0aGUKPj4+IHN0cmVhbSIsIDAsIEFWX09QVF9U WVBFX0NPTlNULCB7Lmk2NCA9Cj4+PiBBVl9IV0FDQ0VMX0ZMQUdfQUxMT1dfUFJPRklMRV9NSVNN QVRDSCB9LCBJTlRfTUlOLCBJTlRfTUFYLCBWIHwgRCwKPj4+ICJod2FjY2VsX2ZsYWdzIn0sCj4+ PiAreyJkaXJlY3RfZmlsbV9ncmFpbiIsICJhbGxvdyBkZWNvZGVyIHRvIGRpcmVjdGx5IGFwcGx5 IGZpbG0gZ3JhaW4gdG8KPj4+ICt0aGUgb3V0cHV0IiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsu aTY0ID0KPj4+ICtBVl9IV0FDQ0VMX0ZMQUdfRElSRUNUX0ZJTE1fR1JBSU4gfSwgSU5UX01JTiwg SU5UX01BWCwgViB8IEQsCj4+PiArImh3YWNjZWxfZmxhZ3MifSwKPj4+IMKgwqAgeyJleHRyYV9o d19mcmFtZXMiLCAiTnVtYmVyIG9mIGV4dHJhIGhhcmR3YXJlIGZyYW1lcyB0byBhbGxvY2F0ZSBm b3IgdGhlIHVzZXIiLCBPRkZTRVQoZXh0cmFfaHdfZnJhbWVzKSwgQVZfT1BUX1RZUEVfSU5ULCB7 IC5pNjQgPSAtMSB9LCAtMSwgSU5UX01BWCwgVnxEIH0sCj4+PiDCoMKgIHsiZGlzY2FyZF9kYW1h Z2VkX3BlcmNlbnRhZ2UiLCAiUGVyY2VudGFnZSBvZiBkYW1hZ2VkIHNhbXBsZXMgdG8gZGlzY2Fy ZCBhIGZyYW1lIiwgT0ZGU0VUKGRpc2NhcmRfZGFtYWdlZF9wZXJjZW50YWdlKSwgQVZfT1BUX1RZ UEVfSU5ULCB7Lmk2NCA9IDk1IH0sIDAsIDEwMCwgVnxEIH0sCj4+PiDCoMKgIHtOVUxMfSwKPj4+ IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZhYXBpX2F2MS5jIGIvbGliYXZjb2RlYy92YWFwaV9h djEuYyBpbmRleAo+Pj4gZDAzMzliMjcwNS4uNmRiOTEwZjJiZiAxMDA2NDQKPj4+IC0tLSBhL2xp YmF2Y29kZWMvdmFhcGlfYXYxLmMKPj4+ICsrKyBiL2xpYmF2Y29kZWMvdmFhcGlfYXYxLmMKPj4+ IEBAIC0xMjcsNiArMTI3LDcgQEAgc3RhdGljIGludCB2YWFwaV9hdjFfc3RhcnRfZnJhbWUoQVZD b2RlY0NvbnRleHQgKmF2Y3R4LAo+Pj4gwqDCoMKgwqDCoMKgIGludDhfdCBiaXRfZGVwdGhfaWR4 Owo+Pj4gwqDCoMKgwqDCoMKgIGludCBlcnIgPSAwOwo+Pj4gwqDCoMKgwqDCoMKgIGludCBhcHBs eV9ncmFpbiA9ICEoYXZjdHgtPmV4cG9ydF9zaWRlX2RhdGEgJgo+Pj4gQVZfQ09ERUNfRVhQT1JU X0RBVEFfRklMTV9HUkFJTikgJiYgZmlsbV9ncmFpbi0+YXBwbHlfZ3JhaW47Cj4+PiArwqDCoMKg IGludCBkaXJlY3RfZmlsbV9ncmFpbiA9IGF2Y3R4LT5od2FjY2VsX2ZsYWdzICYKPj4+ICsgQVZf SFdBQ0NFTF9GTEFHX0RJUkVDVF9GSUxNX0dSQUlOOwo+Pj4gwqDCoMKgwqDCoMKgIHVpbnQ4X3Qg cmVtYXBfbHJfdHlwZVs0XSA9IHtBVjFfUkVTVE9SRV9OT05FLCBBVjFfUkVTVE9SRV9TV0lUQ0hB QkxFLCBBVjFfUkVTVE9SRV9XSUVORVIsIEFWMV9SRVNUT1JFX1NHUlBST0p9Owo+Pj4gwqDCoMKg wqDCoMKgIHVpbnQ4X3Qgc2VnbWVudGF0aW9uX2ZlYXR1cmVfc2lnbmVkW0FWMV9TRUdfTFZMX01B WF0gPSB7MSwgMSwgMSwgMSwgMSwgMCwgMCwgMH07Cj4+PiDCoMKgwqDCoMKgwqAgdWludDhfdCBz ZWdtZW50YXRpb25fZmVhdHVyZV9tYXhbQVYxX1NFR19MVkxfTUFYXSA9IHsyNTUsCj4+PiBBVjFf TUFYX0xPT1BfRklMVEVSLCBAQCAtMTM2LDcgKzEzNyw3IEBAIHN0YXRpYyBpbnQgdmFhcGlfYXYx X3N0YXJ0X2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKPj4+IMKgwqDCoMKgwqDCoCBpZiAo Yml0X2RlcHRoX2lkeCA8IDApCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWw7Cj4+ Pgo+Pj4gLcKgwqDCoCBpZiAoYXBwbHlfZ3JhaW4pIHsKPj4+ICvCoMKgwqAgaWYgKGFwcGx5X2dy YWluICYmICFkaXJlY3RfZmlsbV9ncmFpbikgewo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg KGN0eC0+dG1wX2ZyYW1lLT5idWZbMF0pCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGZmX3RocmVhZF9yZWxlYXNlX2J1ZmZlcihhdmN0eCwgY3R4LT50bXBfZnJhbWUpOwo+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgwqAgZXJyID0gZmZfdGhyZWFkX2dldF9idWZmZXIoYXZjdHgsIGN0eC0+ dG1wX2ZyYW1lLAo+Pj4gQVZfR0VUX0JVRkZFUl9GTEFHX1JFRik7IEBAIC0zNzUsNiArMzc2LDcg QEAgc3RhdGljIGludCB2YWFwaV9hdjFfZW5kX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCkK Pj4+IMKgwqDCoMKgwqDCoCBWQUFQSUFWMURlY0NvbnRleHQgKmN0eCA9IGF2Y3R4LT5pbnRlcm5h bC0+aHdhY2NlbF9wcml2X2RhdGE7Cj4+Pgo+Pj4gwqDCoMKgwqDCoMKgIGludCBhcHBseV9ncmFp biA9ICEoYXZjdHgtPmV4cG9ydF9zaWRlX2RhdGEgJgo+Pj4gQVZfQ09ERUNfRVhQT1JUX0RBVEFf RklMTV9HUkFJTikgJiYgZmlsbV9ncmFpbi0+YXBwbHlfZ3JhaW47Cj4+PiArwqDCoMKgIGludCBk aXJlY3RfZmlsbV9ncmFpbiA9IGF2Y3R4LT5od2FjY2VsX2ZsYWdzICYKPj4+ICsgQVZfSFdBQ0NF TF9GTEFHX0RJUkVDVF9GSUxNX0dSQUlOOwo+Pj4gwqDCoMKgwqDCoMKgIGludCByZXQ7Cj4+PiDC oMKgwqDCoMKgwqAgcmV0ID0gZmZfdmFhcGlfZGVjb2RlX2lzc3VlKGF2Y3R4LCBwaWMpOwo+Pj4g wqDCoMKgwqDCoMKgIGlmIChyZXQgPCAwKQo+Pj4gQEAgLTM4NSw3ICszODcsNyBAQCBzdGF0aWMg aW50IHZhYXBpX2F2MV9lbmRfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQo+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoY3R4LT5yZWZfdGFiW2ldLmZyYW1lLT5idWZbMF0p Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmZfdGhyZWFkX3JlbGVh c2VfYnVmZmVyKGF2Y3R4LAo+Pj4gY3R4LT5yZWZfdGFiW2ldLmZyYW1lKTsKPj4+Cj4+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoYXBwbHlfZ3JhaW4pIHsKPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGlmIChhcHBseV9ncmFpbiAmJiAhZGlyZWN0X2ZpbG1fZ3JhaW4pIHsKPj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBhdl9mcmFtZV9yZWYoY3R4 LT5yZWZfdGFiW2ldLmZyYW1lLCBjdHgtPnRtcF9mcmFtZSk7Cj4+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCA8IDApCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+Pj4gLS0gCj4+PiAyLjI1LjEK Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gZmZt cGVnLWRldmVsIG1haWxpbmcgbGlzdAo+PiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+PiBodHRw czovL25hbTExLnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cHMlM0El MkYlMkZmZm1wZWcub3JnJTJGbWFpbG1hbiUyRmxpc3RpbmZvJTJGZmZtcGVnLWRldmVsJmFtcDtk YXRhPTA1JTdDMDElN0NydWlqaW5nLmRvbmclNDBhbWQuY29tJTdDNmY3NWJlNmE0ZjgwNDRmZTAz N2QwOGRhY2IxNjg1MjklN0MzZGQ4OTYxZmU0ODg0ZTYwOGUxMWE4MmQ5OTRlMTgzZCU3QzAlN0Mw JTdDNjM4MDQ1NTk1ODY0NzYyMDQxJTdDVW5rbm93biU3Q1RXRnBiR1pzYjNkOGV5SldJam9pTUM0 d0xqQXdNREFpTENKUUlqb2lWMmx1TXpJaUxDSkJUaUk2SWsxaGFXd2lMQ0pYVkNJNk1uMCUzRCU3 QzMwMDAlN0MlN0MlN0MmYW1wO3NkYXRhPXAzeXB6a2pXQ0dDcUJQQ3NITG00ckdISTElMkJ3d3hZ MHB5SzFsOElRa2FXcyUzRCZhbXA7cmVzZXJ2ZWQ9MAo+Pgo+PiBUbyB1bnN1YnNjcmliZSwgdmlz aXQgbGluayBhYm92ZSwgb3IgZW1haWwgZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3 aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KPj4KPj4KPj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+ PiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+PiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9s aXN0aW5mby9mZm1wZWctZGV2ZWwKPj4KPj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJv dmUsIG9yIGVtYWlsCj4+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJq ZWN0ICJ1bnN1YnNjcmliZSIuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5v cmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1 bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVl c3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K