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 D1E8940DC6 for ; Fri, 31 Dec 2021 01:03:27 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6316868AF54; Fri, 31 Dec 2021 03:03:25 +0200 (EET) Received: from mail-qv1-f53.google.com (mail-qv1-f53.google.com [209.85.219.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5E57C68AF2D for ; Fri, 31 Dec 2021 03:03:19 +0200 (EET) Received: by mail-qv1-f53.google.com with SMTP id fo11so23523701qvb.4 for ; Thu, 30 Dec 2021 17:03:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ylo-ph.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=7JBFkit6SpBV/uS1Zqestlhe02JkveRrKuKcMqap388=; b=AGH93k/9rFgltddQtesyKo1D1GsPz2n5KZ7METC+/8O06Il9LhzJUqx6cxgPgLXe+w HgWve90u+3quO/7EIH5ENEkuzRVC3xK5AMDJxpnEXnBId1R76CRJb3HEPIAdK7SfT8Sz h6UZDmRGEDw+gFD4KFs2Ffzoo78lGhkpxdgmHMIgwK9w1RMJY7CpDaJl6nMTEQ3CYWMA 12EvhpeIGiD+UKdJ7JVr6T/Y3Zl/J6/PoYGWZzg7DEY9syAP8JBiIZbeprGx1ajPans2 C9Kcwt/2Z4mlEpUbWEEP1AVuxT9c8al6qgLovjVIDDYif7/Rao6v7C8ogBLkq6ezPv8D vWwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=7JBFkit6SpBV/uS1Zqestlhe02JkveRrKuKcMqap388=; b=HF6SFgScbtf1yhIxGHDrO8+/ekh0rAnuL5B0R3Dtcuiys6Mdn+/S7Mnw5ko/cMnrrA YqryVvwcrBAuldyTzJKQ2E5sAnz+RGJv72Ic4RR9V5bU5nyz2dobGmMIdzoNiO6kiOnp i32UV8t+ZtYVPKJApkVL0DNXTezco9C7Geepzr/x1Zp1MRmX1HMxTiNbvCQ35QAG+5p1 MkRIoO4N1wDOzc07eVYdRGgK1Q0xhh7wa3GPy82R8jFkQNp/Ikqb1m+BWKPTLGucm9SA LbTcfUcErtogvYE+icMACcFjb76jWfUUTZ2TE3me63dbaH3P+iRbHvKK2Wo3MtJKt5j6 Gn1w== X-Gm-Message-State: AOAM5334EUA2P9nhssnqrDXLDYeTHS/QdHScB5OL6JsVhzTl6h2F/tfj 5dl0iZ+khEsUwqzfotuw+0Rt2ljK3hY6KoYyciHI1qPL8tg= X-Google-Smtp-Source: ABdhPJyA9Yx9lMguv5znxdCq7zWfr/5gcDUIMcwSttwT/Hi1AjeqpEjBP/vbir5OxJmm1GffH1eT6GPADlX6GVyYD1w= X-Received: by 2002:ad4:5ca5:: with SMTP id q5mr30495169qvh.63.1640912597814; Thu, 30 Dec 2021 17:03:17 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Kyle Swanson Date: Thu, 30 Dec 2021 17:03:07 -0800 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="0000000000008057f705d466bc22" Subject: Re: [FFmpeg-devel] [PATCH] avfilter/vf_libvmaf: update filter for libvmaf v2.0.0 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --0000000000008057f705d466bc22 Content-Type: text/plain; charset="UTF-8" Hi, On Sat, Dec 25, 2021 at 1:24 AM Paul B Mahol wrote: > > On Fri, Dec 24, 2021 at 9:52 PM Kyle Swanson wrote: > > > Hi, > > > > Never followed through on this vf_libvmaf patch from last June, and > > I've had several people asking about its status lately. Rebased patch > > attached. It's been a while, so I guess let's start the review again. > > Would be nice if we could get this in before 5.0. > > > > > Please read old reviews and follow them. > There is no exceptions. Thank you, I've taken all of Mortiz's comments. Updated patch attached. Thanks, Kyle --0000000000008057f705d466bc22 Content-Type: application/octet-stream; name="0001-avfilter-vf_libvmaf-update-filter-for-libvmaf-v2.0.0.patch" Content-Disposition: attachment; filename="0001-avfilter-vf_libvmaf-update-filter-for-libvmaf-v2.0.0.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kxtoz3gx0 RnJvbSA3ODVlN2U4NmJhYmVlZWMyNDRhM2YwZjIyMDA3ZWM5Y2RkOTFkNjZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLeWxlIFN3YW5zb24gPGtzd2Fuc29uQG5ldGZsaXguY29tPgpE YXRlOiBGcmksIDI0IERlYyAyMDIxIDEyOjQzOjUwIC0wODAwClN1YmplY3Q6IFtQQVRDSF0gYXZm aWx0ZXIvdmZfbGlidm1hZjogdXBkYXRlIGZpbHRlciBmb3IgbGlidm1hZiB2Mi4wLjAKCi0tLQog Y29uZmlndXJlICAgICAgICAgICAgICAgIHwgICA0ICstCiBkb2MvZmlsdGVycy50ZXhpICAgICAg ICAgfCAgNzcgKystLS0tCiBsaWJhdmZpbHRlci92ZXJzaW9uLmggICAgfCAgIDIgKy0KIGxpYmF2 ZmlsdGVyL3ZmX2xpYnZtYWYuYyB8IDU2OCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgNDIxIGluc2VydGlvbnMoKyksIDIzMCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggMjNlZjJhYmM5 Yi4uODU4ZmYwOTBkYiAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAt Mzc0MCw3ICszNzQwLDcgQEAgdmFndWVkZW5vaXNlcl9maWx0ZXJfZGVwcz0iZ3BsIgogdmZsaXBf dnVsa2FuX2ZpbHRlcl9kZXBzPSJ2dWxrYW4gc3BpcnZfY29tcGlsZXIiCiB2aWRzdGFiZGV0ZWN0 X2ZpbHRlcl9kZXBzPSJsaWJ2aWRzdGFiIgogdmlkc3RhYnRyYW5zZm9ybV9maWx0ZXJfZGVwcz0i bGlidmlkc3RhYiIKLWxpYnZtYWZfZmlsdGVyX2RlcHM9ImxpYnZtYWYgcHRocmVhZHMiCitsaWJ2 bWFmX2ZpbHRlcl9kZXBzPSJsaWJ2bWFmIgogem1xX2ZpbHRlcl9kZXBzPSJsaWJ6bXEiCiB6b29t cGFuX2ZpbHRlcl9kZXBzPSJzd3NjYWxlIgogenNjYWxlX2ZpbHRlcl9kZXBzPSJsaWJ6aW1nIGNv bnN0X25hbiIKQEAgLTY2MDgsNyArNjYwOCw3IEBAIGVuYWJsZWQgbGlidHdvbGFtZSAgICAgICAg JiYgcmVxdWlyZSBsaWJ0d29sYW1lIHR3b2xhbWUuaCB0d29sYW1lX2luaXQgLWx0d29sYW1lCiBl bmFibGVkIGxpYnVhdnMzZCAgICAgICAgICYmIHJlcXVpcmVfcGtnX2NvbmZpZyBsaWJ1YXZzM2Qg InVhdnMzZCA+PSAxLjEuNDEiIHVhdnMzZC5oIHVhdnMzZF9kZWNvZGUKIGVuYWJsZWQgbGlidjRs MiAgICAgICAgICAgJiYgcmVxdWlyZV9wa2dfY29uZmlnIGxpYnY0bDIgbGlidjRsMiBsaWJ2NGwy LmggdjRsMl9pb2N0bAogZW5hYmxlZCBsaWJ2aWRzdGFiICAgICAgICAmJiByZXF1aXJlX3BrZ19j b25maWcgbGlidmlkc3RhYiAidmlkc3RhYiA+PSAwLjk4IiB2aWQuc3RhYi9saWJ2aWRzdGFiLmgg dnNNb3Rpb25EZXRlY3RJbml0Ci1lbmFibGVkIGxpYnZtYWYgICAgICAgICAgICYmIHJlcXVpcmVf cGtnX2NvbmZpZyBsaWJ2bWFmICJsaWJ2bWFmID49IDEuNS4yIiBsaWJ2bWFmLmggY29tcHV0ZV92 bWFmCitlbmFibGVkIGxpYnZtYWYgICAgICAgICAgICYmIHJlcXVpcmVfcGtnX2NvbmZpZyBsaWJ2 bWFmICJsaWJ2bWFmID49IDIuMC4wIiBsaWJ2bWFmLmggdm1hZl9pbml0CiBlbmFibGVkIGxpYnZv X2FtcndiZW5jICAgICYmIHJlcXVpcmUgbGlidm9fYW1yd2JlbmMgdm8tYW1yd2JlbmMvZW5jX2lm LmggRV9JRl9pbml0IC1sdm8tYW1yd2JlbmMKIGVuYWJsZWQgbGlidm9yYmlzICAgICAgICAgJiYg cmVxdWlyZV9wa2dfY29uZmlnIGxpYnZvcmJpcyB2b3JiaXMgdm9yYmlzL2NvZGVjLmggdm9yYmlz X2luZm9faW5pdCAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlX3BrZ19j b25maWcgbGlidm9yYmlzZW5jIHZvcmJpc2VuYyB2b3JiaXMvdm9yYmlzZW5jLmggdm9yYmlzX2Vu Y29kZV9pbml0CmRpZmYgLS1naXQgYS9kb2MvZmlsdGVycy50ZXhpIGIvZG9jL2ZpbHRlcnMudGV4 aQppbmRleCAwNWQ0YjFhNTZlLi5jYWNhYTZjMDgwIDEwMDY0NAotLS0gYS9kb2MvZmlsdGVycy50 ZXhpCisrKyBiL2RvYy9maWx0ZXJzLnRleGkKQEAgLTE0NjY2LDY4ICsxNDY2NiwzOSBAQCBmZm1w ZWcgLWkgaW5wdXQubW92IC12ZiBsZW5zZnVuPW1ha2U9Q2Fub246bW9kZWw9IkNhbm9uIEVPUyAx MDBEIjpsZW5zX21vZGVsPSJDYQogCiBAc2VjdGlvbiBsaWJ2bWFmCiAKLU9idGFpbiB0aGUgVk1B RiAoVmlkZW8gTXVsdGktTWV0aG9kIEFzc2Vzc21lbnQgRnVzaW9uKQotc2NvcmUgYmV0d2VlbiB0 d28gaW5wdXQgdmlkZW9zLgorQ2FsdWxhdGUgdGhlIFZNQUYgKFZpZGVvIE11bHRpLU1ldGhvZCBB c3Nlc3NtZW50IEZ1c2lvbikgc2NvcmUgZm9yIGEKK3JlZmVyZW5jZS9kaXN0b3J0ZWQgcGFpciBv ZiBpbnB1dCB2aWRlb3MuCiAKLVRoZSBmaXJzdCBpbnB1dCBpcyB0aGUgZW5jb2RlZCB2aWRlbywg YW5kIHRoZSBzZWNvbmQgaW5wdXQgaXMgdGhlIHJlZmVyZW5jZSB2aWRlby4KK1RoZSBmaXJzdCBp bnB1dCBpcyB0aGUgZGlzdG9ydGVkIHZpZGVvLCBhbmQgdGhlIHNlY29uZCBpbnB1dCBpcyB0aGUg cmVmZXJlbmNlIHZpZGVvLgogCiBUaGUgb2J0YWluZWQgVk1BRiBzY29yZSBpcyBwcmludGVkIHRo cm91Z2ggdGhlIGxvZ2dpbmcgc3lzdGVtLgogCiBJdCByZXF1aXJlcyBOZXRmbGl4J3Mgdm1hZiBs aWJyYXJ5IChsaWJ2bWFmKSBhcyBhIHByZS1yZXF1aXNpdGUuCiBBZnRlciBpbnN0YWxsaW5nIHRo ZSBsaWJyYXJ5IGl0IGNhbiBiZSBlbmFibGVkIHVzaW5nOgogQGNvZGV7Li9jb25maWd1cmUgLS1l bmFibGUtbGlidm1hZn0uCi1JZiBubyBtb2RlbCBwYXRoIGlzIHNwZWNpZmllZCBpdCB1c2VzIHRo ZSBkZWZhdWx0IG1vZGVsOiBAY29kZXt2bWFmX3YwLjYuMS5wa2x9LgogCiBUaGUgZmlsdGVyIGhh cyBmb2xsb3dpbmcgb3B0aW9uczoKIAogQHRhYmxlIEBvcHRpb24KLUBpdGVtIG1vZGVsX3BhdGgK LVNldCB0aGUgbW9kZWwgcGF0aCB3aGljaCBpcyB0byBiZSB1c2VkIGZvciBTVk0uCi1EZWZhdWx0 IHZhbHVlOiBAY29kZXsiL3Vzci9sb2NhbC9zaGFyZS9tb2RlbC92bWFmX3YwLjYuMS5wa2wifQor QGl0ZW0gbW9kZWwKK0EgYHxgIGRlbGltaXRlZCBsaXN0IG9mIHZtYWYgbW9kZWxzLiBFYWNoIG1v ZGVsIGNhbiBiZSBjb25maWd1cmVkIHdpdGggYSBudW1iZXIgb2YgcGFyYW1ldGVycy4KK0RlZmF1 bHQgdmFsdWU6IEBjb2RleyJ2ZXJzaW9uPXZtYWZfdjAuNi4xIn0KKworQGl0ZW0gZmVhdHVyZQor QSBgfGAgZGVsaW1pdGVkIGxpc3Qgb2YgZmVhdHVyZXMuIEVhY2ggZmVhdHVyZSBjYW4gYmUgY29u ZmlndXJlZCB3aXRoIGEgbnVtYmVyIG9mIHBhcmFtZXRlcnMuCiAKIEBpdGVtIGxvZ19wYXRoCi1T ZXQgdGhlIGZpbGUgcGF0aCB0byBiZSB1c2VkIHRvIHN0b3JlIGxvZ3MuCitTZXQgdGhlIGZpbGUg cGF0aCB0byBiZSB1c2VkIHRvIHN0b3JlIGxvZyBmaWxlcy4KIAogQGl0ZW0gbG9nX2ZtdAotU2V0 IHRoZSBmb3JtYXQgb2YgdGhlIGxvZyBmaWxlIChjc3YsIGpzb24gb3IgeG1sKS4KLQotQGl0ZW0g ZW5hYmxlX3RyYW5zZm9ybQotVGhpcyBvcHRpb24gY2FuIGVuYWJsZS9kaXNhYmxlIHRoZSBAY29k ZXtzY29yZV90cmFuc2Zvcm19IGFwcGxpZWQgdG8gdGhlIGZpbmFsIHByZWRpY3RlZCBWTUFGIHNj b3JlLAotaWYgeW91IGhhdmUgc3BlY2lmaWVkIHNjb3JlX3RyYW5zZm9ybSBvcHRpb24gaW4gdGhl IGlucHV0IHBhcmFtZXRlciBmaWxlIHBhc3NlZCB0byBAY29kZXtydW5fdm1hZl90cmFpbmluZy5w eX0KLURlZmF1bHQgdmFsdWU6IEBjb2Rle2ZhbHNlfQotCi1AaXRlbSBwaG9uZV9tb2RlbAotSW52 b2tlcyB0aGUgcGhvbmUgbW9kZWwgd2hpY2ggd2lsbCBnZW5lcmF0ZSBWTUFGIHNjb3JlcyBoaWdo ZXIgdGhhbiBpbiB0aGUKLXJlZ3VsYXIgbW9kZWwsIHdoaWNoIGlzIG1vcmUgc3VpdGFibGUgZm9y IGxhcHRvcCwgVFYsIGV0Yy4gdmlld2luZyBjb25kaXRpb25zLgotRGVmYXVsdCB2YWx1ZTogQGNv ZGV7ZmFsc2V9Ci0KLUBpdGVtIHBzbnIKLUVuYWJsZXMgY29tcHV0aW5nIHBzbnIgYWxvbmcgd2l0 aCB2bWFmLgotRGVmYXVsdCB2YWx1ZTogQGNvZGV7ZmFsc2V9Ci0KLUBpdGVtIHNzaW0KLUVuYWJs ZXMgY29tcHV0aW5nIHNzaW0gYWxvbmcgd2l0aCB2bWFmLgotRGVmYXVsdCB2YWx1ZTogQGNvZGV7 ZmFsc2V9Ci0KLUBpdGVtIG1zX3NzaW0KLUVuYWJsZXMgY29tcHV0aW5nIG1zX3NzaW0gYWxvbmcg d2l0aCB2bWFmLgotRGVmYXVsdCB2YWx1ZTogQGNvZGV7ZmFsc2V9Ci0KLUBpdGVtIHBvb2wKLVNl dCB0aGUgcG9vbCBtZXRob2QgdG8gYmUgdXNlZCBmb3IgY29tcHV0aW5nIHZtYWYuCi1PcHRpb25z IGFyZSBAY29kZXttaW59LCBAY29kZXtoYXJtb25pY19tZWFufSBvciBAY29kZXttZWFufSAoZGVm YXVsdCkuCitTZXQgdGhlIGZvcm1hdCBvZiB0aGUgbG9nIGZpbGUgKHhtbCwganNvbiwgY3N2LCBv ciBzdWIpLgogCiBAaXRlbSBuX3RocmVhZHMKLVNldCBudW1iZXIgb2YgdGhyZWFkcyB0byBiZSB1 c2VkIHdoZW4gY29tcHV0aW5nIHZtYWYuCi1EZWZhdWx0IHZhbHVlOiBAY29kZXswfSwgd2hpY2gg bWFrZXMgdXNlIG9mIGFsbCBhdmFpbGFibGUgbG9naWNhbCBwcm9jZXNzb3JzLgorU2V0IG51bWJl ciBvZiB0aHJlYWRzIHRvIGJlIHVzZWQgd2hlbiBpbml0aWFsaXppbmcgbGlidm1hZi4KK0RlZmF1 bHQgdmFsdWU6IEBjb2RlezB9LCBubyB0aHJlYWRzLgogCiBAaXRlbSBuX3N1YnNhbXBsZQotU2V0 IGludGVydmFsIGZvciBmcmFtZSBzdWJzYW1wbGluZyB1c2VkIHdoZW4gY29tcHV0aW5nIHZtYWYu Ci1EZWZhdWx0IHZhbHVlOiBAY29kZXsxfQotCi1AaXRlbSBlbmFibGVfY29uZl9pbnRlcnZhbAot RW5hYmxlcyBjb25maWRlbmNlIGludGVydmFsLgotRGVmYXVsdCB2YWx1ZTogQGNvZGV7ZmFsc2V9 CitTZXQgZnJhbWUgc3Vic2FtcGxpbmcgaW50ZXJ2YWwgdG8gYmUgdXNlZC4KIEBlbmQgdGFibGUK IAogVGhpcyBmaWx0ZXIgYWxzbyBzdXBwb3J0cyB0aGUgQHJlZntmcmFtZXN5bmN9IG9wdGlvbnMu CkBAIC0xNDczNSwyMyArMTQ3MDYsMzEgQEAgVGhpcyBmaWx0ZXIgYWxzbyBzdXBwb3J0cyB0aGUg QHJlZntmcmFtZXN5bmN9IG9wdGlvbnMuCiBAc3Vic2VjdGlvbiBFeGFtcGxlcwogQGl0ZW1pemUK IEBpdGVtCi1PbiB0aGUgYmVsb3cgZXhhbXBsZXMgdGhlIGlucHV0IGZpbGUgQGZpbGV7bWFpbi5t cGd9IGJlaW5nIHByb2Nlc3NlZCBpcwotY29tcGFyZWQgd2l0aCB0aGUgcmVmZXJlbmNlIGZpbGUg QGZpbGV7cmVmLm1wZ30uCitJbiB0aGUgZXhhbXBsZXMgYmVsb3csIGEgZGlzdG9ydGVkIHZpZGVv IEBmaWxle2Rpc3RvcnRlZC5tcGd9IGlzCitjb21wYXJlZCB3aXRoIGEgcmVmZXJlbmNlIGZpbGUg QGZpbGV7cmVmZXJlbmNlLm1wZ30uCiAKK0BpdGVtCitCYXNpYyB1c2FnZToKK0BleGFtcGxlCitm Zm1wZWcgLWkgZGlzdG9ydGVkLm1wZyAtaSByZWZlcmVuY2UubXBnIC1sYXZmaSBsaWJ2bWFmPWxv Z19wYXRoPW91dHB1dC54bWwgLWYgbnVsbCAtCitAZW5kIGV4YW1wbGUKKworQGl0ZW0KK0V4YW1w bGUgd2l0aCBtdWx0aXBsZSBtb2RlbHM6CiBAZXhhbXBsZQotZmZtcGVnIC1pIG1haW4ubXBnIC1p IHJlZi5tcGcgLWxhdmZpIGxpYnZtYWYgLWYgbnVsbCAtCitmZm1wZWcgLWkgZGlzdG9ydGVkLm1w ZyAtaSByZWZlcmVuY2UubXBnIC1sYXZmaSBsaWJ2bWFmPSdtb2RlbD12ZXJzaW9uPXZtYWZfdjAu Ni4xXFw6bmFtZT12bWFmfHZlcnNpb249dm1hZl92MC42LjFuZWdcXDpuYW1lPXZtYWZfbmVnOmxv Z19wYXRoPW91dHB1dC54bWwnIC1mIG51bGwgLQogQGVuZCBleGFtcGxlCiAKIEBpdGVtCi1FeGFt cGxlIHdpdGggb3B0aW9uczoKK0V4YW1wbGUgd2l0aCBtdWx0aXBsZSBhZGR0aW9uYWwgZmVhdHVy ZXM6CiBAZXhhbXBsZQotZmZtcGVnIC1pIG1haW4ubXBnIC1pIHJlZi5tcGcgLWxhdmZpIGxpYnZt YWY9InBzbnI9MTpsb2dfZm10PWpzb24iIC1mIG51bGwgLQorZmZtcGVnIC1pIGRpc3RvcnRlZC5t cGcgLWkgcmVmZXJlbmNlLm1wZyAtbGF2ZmkgbGlidm1hZj0nZmVhdHVyZT1uYW1lPXBzbnJ8bmFt ZT1jaWVkZTpsb2dfcGF0aD1vdXRwdXQueG1sJyAtZiBudWxsIC0KIEBlbmQgZXhhbXBsZQogCiBA aXRlbQogRXhhbXBsZSB3aXRoIG9wdGlvbnMgYW5kIGRpZmZlcmVudCBjb250YWluZXJzOgogQGV4 YW1wbGUKLWZmbXBlZyAtaSBtYWluLm1wZyAtaSByZWYubWt2IC1sYXZmaSAiWzA6dl1zZXR0Yj1B VlRCLHNldHB0cz1QVFMtU1RBUlRQVFNbbWFpbl07WzE6dl1zZXR0Yj1BVlRCLHNldHB0cz1QVFMt U1RBUlRQVFNbcmVmXTtbbWFpbl1bcmVmXWxpYnZtYWY9cHNucj0xOmxvZ19mbXQ9anNvbiIgLWYg bnVsbCAtCitmZm1wZWcgLWkgZGlzdG9ydGVkLm1wZyAtaSByZWZlcmVuY2UubWt2IC1sYXZmaSAi WzA6dl1zZXR0Yj1BVlRCLHNldHB0cz1QVFMtU1RBUlRQVFNbbWFpbl07WzE6dl1zZXR0Yj1BVlRC LHNldHB0cz1QVFMtU1RBUlRQVFNbcmVmXTtbbWFpbl1bcmVmXWxpYnZtYWY9bG9nX2ZtdD1qc29u OmxvZ19wYXRoPW91dHB1dC5qc29uIiAtZiBudWxsIC0KIEBlbmQgZXhhbXBsZQogQGVuZCBpdGVt aXplCiAKZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL3ZlcnNpb24uaCBiL2xpYmF2ZmlsdGVyL3Zl cnNpb24uaAppbmRleCBhNDA2NmZkODgzLi5lNzhmZThmMzQ4IDEwMDY0NAotLS0gYS9saWJhdmZp bHRlci92ZXJzaW9uLmgKKysrIGIvbGliYXZmaWx0ZXIvdmVyc2lvbi5oCkBAIC0zMSw3ICszMSw3 IEBACiAKICNkZWZpbmUgTElCQVZGSUxURVJfVkVSU0lPTl9NQUpPUiAgIDgKICNkZWZpbmUgTElC QVZGSUxURVJfVkVSU0lPTl9NSU5PUiAgMjEKLSNkZWZpbmUgTElCQVZGSUxURVJfVkVSU0lPTl9N SUNSTyAxMDAKKyNkZWZpbmUgTElCQVZGSUxURVJfVkVSU0lPTl9NSUNSTyAxMDEKIAogCiAjZGVm aW5lIExJQkFWRklMVEVSX1ZFUlNJT05fSU5UIEFWX1ZFUlNJT05fSU5UKExJQkFWRklMVEVSX1ZF UlNJT05fTUFKT1IsIFwKZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL3ZmX2xpYnZtYWYuYyBiL2xp YmF2ZmlsdGVyL3ZmX2xpYnZtYWYuYwppbmRleCA1ZDQ5MjEyNmViLi40YTdkOGRkZmM4IDEwMDY0 NAotLS0gYS9saWJhdmZpbHRlci92Zl9saWJ2bWFmLmMKKysrIGIvbGliYXZmaWx0ZXIvdmZfbGli dm1hZi5jCkBAIC0yNCw4ICsyNCw4IEBACiAgKiBDYWxjdWxhdGUgdGhlIFZNQUYgYmV0d2VlbiB0 d28gaW5wdXQgdmlkZW9zLgogICovCiAKLSNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjaW5jbHVkZSA8 bGlidm1hZi5oPgorCiAjaW5jbHVkZSAibGliYXZ1dGlsL2F2c3RyaW5nLmgiCiAjaW5jbHVkZSAi bGliYXZ1dGlsL29wdC5oIgogI2luY2x1ZGUgImxpYmF2dXRpbC9waXhkZXNjLmgiCkBAIC0zOSwy MTAgKzM5LDM4MCBAQAogdHlwZWRlZiBzdHJ1Y3QgTElCVk1BRkNvbnRleHQgewogICAgIGNvbnN0 IEFWQ2xhc3MgKmNsYXNzOwogICAgIEZGRnJhbWVTeW5jIGZzOwotICAgIGNvbnN0IEFWUGl4Rm10 RGVzY3JpcHRvciAqZGVzYzsKLSAgICBpbnQgd2lkdGg7Ci0gICAgaW50IGhlaWdodDsKLSAgICBk b3VibGUgdm1hZl9zY29yZTsKLSAgICBpbnQgdm1hZl90aHJlYWRfY3JlYXRlZDsKLSAgICBwdGhy ZWFkX3Qgdm1hZl90aHJlYWQ7Ci0gICAgcHRocmVhZF9tdXRleF90IGxvY2s7Ci0gICAgcHRocmVh ZF9jb25kX3QgY29uZDsKLSAgICBpbnQgZW9mOwotICAgIEFWRnJhbWUgKmdtYWluOwotICAgIEFW RnJhbWUgKmdyZWY7Ci0gICAgaW50IGZyYW1lX3NldDsKLSAgICBjaGFyICptb2RlbF9wYXRoOwog ICAgIGNoYXIgKmxvZ19wYXRoOwogICAgIGNoYXIgKmxvZ19mbXQ7Ci0gICAgaW50IGRpc2FibGVf Y2xpcDsKLSAgICBpbnQgZGlzYWJsZV9hdng7Ci0gICAgaW50IGVuYWJsZV90cmFuc2Zvcm07Ci0g ICAgaW50IHBob25lX21vZGVsOwotICAgIGludCBwc25yOwotICAgIGludCBzc2ltOwotICAgIGlu dCBtc19zc2ltOwotICAgIGNoYXIgKnBvb2w7CiAgICAgaW50IG5fdGhyZWFkczsKICAgICBpbnQg bl9zdWJzYW1wbGU7Ci0gICAgaW50IGVuYWJsZV9jb25mX2ludGVydmFsOwotICAgIGludCBlcnJv cjsKKyAgICBjaGFyICptb2RlbF9jZmc7CisgICAgY2hhciAqZmVhdHVyZV9jZmc7CisgICAgVm1h ZkNvbnRleHQgKnZtYWY7CisgICAgVm1hZk1vZGVsICoqbW9kZWw7CisgICAgdW5zaWduZWQgbW9k ZWxfY250OworICAgIHVuc2lnbmVkIGZyYW1lX2NudDsKKyAgICB1bnNpZ25lZCBicGM7CiB9IExJ QlZNQUZDb250ZXh0OwogCiAjZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihMSUJWTUFGQ29udGV4 dCwgeCkKICNkZWZpbmUgRkxBR1MgQVZfT1BUX0ZMQUdfRklMVEVSSU5HX1BBUkFNfEFWX09QVF9G TEFHX1ZJREVPX1BBUkFNCiAKIHN0YXRpYyBjb25zdCBBVk9wdGlvbiBsaWJ2bWFmX29wdGlvbnNb XSA9IHsKLSAgICB7Im1vZGVsX3BhdGgiLCAgIlNldCB0aGUgbW9kZWwgdG8gYmUgdXNlZCBmb3Ig Y29tcHV0aW5nIHZtYWYuIiwgICAgICAgICAgICAgICAgICAgICBPRkZTRVQobW9kZWxfcGF0aCks IEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9Ii91c3IvbG9jYWwvc2hhcmUvbW9kZWwvdm1hZl92 MC42LjEucGtsIn0sIDAsIDEsIEZMQUdTfSwKLSAgICB7ImxvZ19wYXRoIiwgICJTZXQgdGhlIGZp bGUgcGF0aCB0byBiZSB1c2VkIHRvIHN0b3JlIGxvZ3MuIiwgICAgICAgICAgICAgICAgICAgICAg ICBPRkZTRVQobG9nX3BhdGgpLCBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPU5VTEx9LCAwLCAx LCBGTEFHU30sCi0gICAgeyJsb2dfZm10IiwgICJTZXQgdGhlIGZvcm1hdCBvZiB0aGUgbG9nIChj c3YsIGpzb24gb3IgeG1sKS4iLCAgICAgICAgICAgICAgICAgICAgICAgT0ZGU0VUKGxvZ19mbXQp LCBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPU5VTEx9LCAwLCAxLCBGTEFHU30sCi0gICAgeyJl bmFibGVfdHJhbnNmb3JtIiwgICJFbmFibGVzIHRyYW5zZm9ybSBmb3IgY29tcHV0aW5nIHZtYWYu IiwgICAgICAgICAgICAgICAgICAgICAgT0ZGU0VUKGVuYWJsZV90cmFuc2Zvcm0pLCBBVl9PUFRf VFlQRV9CT09MLCB7Lmk2ND0wfSwgMCwgMSwgRkxBR1N9LAotICAgIHsicGhvbmVfbW9kZWwiLCAg Ikludm9rZXMgdGhlIHBob25lIG1vZGVsIHRoYXQgd2lsbCBnZW5lcmF0ZSBoaWdoZXIgVk1BRiBz Y29yZXMuIiwgIE9GRlNFVChwaG9uZV9tb2RlbCksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0PTB9 LCAwLCAxLCBGTEFHU30sCi0gICAgeyJwc25yIiwgICJFbmFibGVzIGNvbXB1dGluZyBwc25yIGFs b25nIHdpdGggdm1hZi4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0ZGU0VUKHBz bnIpLCBBVl9PUFRfVFlQRV9CT09MLCB7Lmk2ND0wfSwgMCwgMSwgRkxBR1N9LAotICAgIHsic3Np bSIsICAiRW5hYmxlcyBjb21wdXRpbmcgc3NpbSBhbG9uZyB3aXRoIHZtYWYuIiwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE9GRlNFVChzc2ltKSwgQVZfT1BUX1RZUEVfQk9PTCwgey5p NjQ9MH0sIDAsIDEsIEZMQUdTfSwKLSAgICB7Im1zX3NzaW0iLCAgIkVuYWJsZXMgY29tcHV0aW5n IG1zLXNzaW0gYWxvbmcgd2l0aCB2bWFmLiIsICAgICAgICAgICAgICAgICAgICAgICAgICBPRkZT RVQobXNfc3NpbSksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0PTB9LCAwLCAxLCBGTEFHU30sCi0g ICAgeyJwb29sIiwgICJTZXQgdGhlIHBvb2wgbWV0aG9kIHRvIGJlIHVzZWQgZm9yIGNvbXB1dGlu ZyB2bWFmLiIsICAgICAgICAgICAgICAgICAgICAgT0ZGU0VUKHBvb2wpLCBBVl9PUFRfVFlQRV9T VFJJTkcsIHsuc3RyPU5VTEx9LCAwLCAxLCBGTEFHU30sCisgICAgeyJtb2RlbCIsICJTZXQgdGhl IG1vZGVsIHRvIGJlIHVzZWQgZm9yIGNvbXB1dGluZyB2bWFmLiIsICAgICAgICAgICAgICAgICAg ICAgICAgICAgT0ZGU0VUKG1vZGVsX2NmZyksIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9InZl cnNpb249dm1hZl92MC42LjEifSwgMCwgMSwgRkxBR1N9LAorICAgIHsiZmVhdHVyZSIsICJTZXQg dGhlIGZlYXR1cmUgdG8gYmUgdXNlZCBmb3IgY29tcHV0aW5nIHZtYWYuIiwgICAgICAgICAgICAg ICAgICAgICAgIE9GRlNFVChmZWF0dXJlX2NmZyksIEFWX09QVF9UWVBFX1NUUklORywgey5zdHI9 TlVMTH0sIDAsIDEsIEZMQUdTfSwKKyAgICB7ImxvZ19wYXRoIiwgICJTZXQgdGhlIGZpbGUgcGF0 aCB0byBiZSB1c2VkIHRvIHdyaXRlIGxvZy4iLCAgICAgICAgICAgICAgICAgICAgICAgICBPRkZT RVQobG9nX3BhdGgpLCBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyPU5VTEx9LCAwLCAxLCBGTEFH U30sCisgICAgeyJsb2dfZm10IiwgICJTZXQgdGhlIGZvcm1hdCBvZiB0aGUgbG9nIChjc3YsIGpz b24sIHhtbCwgb3Igc3ViKS4iLCAgICAgICAgICAgICAgICAgT0ZGU0VUKGxvZ19mbXQpLCBBVl9P UFRfVFlQRV9TVFJJTkcsIHsuc3RyPSJ4bWwifSwgMCwgMSwgRkxBR1N9LAogICAgIHsibl90aHJl YWRzIiwgIlNldCBudW1iZXIgb2YgdGhyZWFkcyB0byBiZSB1c2VkIHdoZW4gY29tcHV0aW5nIHZt YWYuIiwgICAgICAgICAgICAgIE9GRlNFVChuX3RocmVhZHMpLCBBVl9PUFRfVFlQRV9JTlQsIHsu aTY0PTB9LCAwLCBVSU5UX01BWCwgRkxBR1N9LAogICAgIHsibl9zdWJzYW1wbGUiLCAiU2V0IGlu dGVydmFsIGZvciBmcmFtZSBzdWJzYW1wbGluZyB1c2VkIHdoZW4gY29tcHV0aW5nIHZtYWYuIiwg ICAgIE9GRlNFVChuX3N1YnNhbXBsZSksIEFWX09QVF9UWVBFX0lOVCwgey5pNjQ9MX0sIDEsIFVJ TlRfTUFYLCBGTEFHU30sCi0gICAgeyJlbmFibGVfY29uZl9pbnRlcnZhbCIsICAiRW5hYmxlcyBj b25maWRlbmNlIGludGVydmFsLiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgT0ZGU0VUKGVu YWJsZV9jb25mX2ludGVydmFsKSwgQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQ9MH0sIDAsIDEsIEZM QUdTfSwKICAgICB7IE5VTEwgfQogfTsKIAogRlJBTUVTWU5DX0RFRklORV9DTEFTUyhsaWJ2bWFm LCBMSUJWTUFGQ29udGV4dCwgZnMpOwogCi0jZGVmaW5lIHJlYWRfZnJhbWVfZm4odHlwZSwgYml0 cykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBz dGF0aWMgaW50IHJlYWRfZnJhbWVfIyNiaXRzIyNiaXQoZmxvYXQgKnJlZl9kYXRhLCBmbG9hdCAq bWFpbl9kYXRhLCAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmbG9hdCAqdGVtcF9kYXRhLCBpbnQgc3RyaWRlLCB2b2lkICpjdHgpICBcCi17ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAgICBMSUJWTUFGQ29udGV4dCAqcyA9IChMSUJWTUFGQ29udGV4dCAq KSBjdHg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGludCByZXQ7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgXAotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmcy0+bG9jayk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgXAotICAgIHdo aWxlICghcy0+ZnJhbWVfc2V0ICYmICFzLT5lb2YpIHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHB0aHJlYWRfY29uZF93YWl0KCZzLT5jb25kLCAm cy0+bG9jayk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgIFwKLSAgICBpZiAocy0+ZnJhbWVfc2V0KSB7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBp bnQgcmVmX3N0cmlkZSA9IHMtPmdyZWYtPmxpbmVzaXplWzBdOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgICAgIGludCBtYWluX3N0cmlkZSA9IHMtPmdtYWluLT5saW5l c2l6ZVswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgXAotICAg ICAgICBjb25zdCB0eXBlICpyZWZfcHRyID0gKGNvbnN0IHR5cGUgKikgcy0+Z3JlZi0+ZGF0YVsw XTsgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNvbnN0IHR5cGUgKm1haW5fcHRyID0gKGNv bnN0IHR5cGUgKikgcy0+Z21haW4tPmRhdGFbMF07ICAgICAgICAgICAgICAgIFwKLSAgICAgICAg XAotICAgICAgICBmbG9hdCAqcHRyID0gcmVmX2RhdGE7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGZsb2F0IGZhY3RvciA9IDEuZiAv ICgxIDw8IChiaXRzIC0gOCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgXAotICAgICAgICBpbnQgaCA9IHMtPmhlaWdodDsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGludCB3ID0gcy0+d2lk dGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSAgICAgICAgXAotICAgICAgICBpbnQgaSxqOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFwKLSAgICAg ICAgZm9yIChpID0gMDsgaSA8IGg7IGkrKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCB3OyBqKysp IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg ICAgICAgcHRyW2pdID0gcmVmX3B0cltqXSAqIGZhY3RvcjsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcmVm X3B0ciArPSByZWZfc3RyaWRlIC8gc2l6ZW9mKCpyZWZfcHRyKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgICAgICAgICBwdHIgKz0gc3RyaWRlIC8gc2l6ZW9mKCpwdHIpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotICAgICAgICBcCi0gICAgICAgIHB0ciA9IG1haW5fZGF0YTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgXAotICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgaDsgaSsrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgdzsgaisr KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg ICAgICAgICBwdHJbal0gPSBtYWluX3B0cltqXSAqIGZhY3RvcjsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBt YWluX3B0ciArPSBtYWluX3N0cmlkZSAvIHNpemVvZigqbWFpbl9wdHIpOyAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICAgICAgICAgIHB0ciArPSBzdHJpZGUgLyBzaXplb2YoKnB0cik7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBcCi0gICAgcmV0ID0gIXMtPmZy YW1lX3NldDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgICBcCi0gICAgYXZfZnJhbWVfdW5yZWYocy0+Z3JlZik7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBhdl9mcmFtZV91 bnJlZihzLT5nbWFpbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgIHMtPmZyYW1lX3NldCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgXAotICAgIHB0aHJlYWRf Y29uZF9zaWduYWwoJnMtPmNvbmQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJnMtPmxvY2spOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBcCi0gICAgaWYgKHJl dCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIDI7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgXAotICAgIHJldHVybiAwOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitzdGF0aWMgZW51bSBW bWFmUGl4ZWxGb3JtYXQgcGl4X2ZtdF9tYXAoZW51bSBBVlBpeGVsRm9ybWF0IGF2X3BpeF9mbXQp Cit7CisgICAgc3dpdGNoIChhdl9waXhfZm10KSB7CisgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQy MFA6CisgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQyMFAxMExFOgorICAgIGNhc2UgQVZfUElYX0ZN VF9ZVVY0MjBQMTJMRToKKyAgICBjYXNlIEFWX1BJWF9GTVRfWVVWNDIwUDE2TEU6CisgICAgICAg IHJldHVybiBWTUFGX1BJWF9GTVRfWVVWNDIwUDsKKyAgICBjYXNlIEFWX1BJWF9GTVRfWVVWNDIy UDoKKyAgICBjYXNlIEFWX1BJWF9GTVRfWVVWNDIyUDEwTEU6CisgICAgY2FzZSBBVl9QSVhfRk1U X1lVVjQyMlAxMkxFOgorICAgIGNhc2UgQVZfUElYX0ZNVF9ZVVY0MjJQMTZMRToKKyAgICAgICAg cmV0dXJuIFZNQUZfUElYX0ZNVF9ZVVY0MjJQOworICAgIGNhc2UgQVZfUElYX0ZNVF9ZVVY0NDRQ OgorICAgIGNhc2UgQVZfUElYX0ZNVF9ZVVY0NDRQMTBMRToKKyAgICBjYXNlIEFWX1BJWF9GTVRf WVVWNDQ0UDEyTEU6CisgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQ0NFAxNkxFOgorICAgICAgICBy ZXR1cm4gVk1BRl9QSVhfRk1UX1lVVjQ0NFA7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu IFZNQUZfUElYX0ZNVF9VTktOT1dOOworICAgIH0KIH0KIAotcmVhZF9mcmFtZV9mbih1aW50OF90 LCA4KTsKLXJlYWRfZnJhbWVfZm4odWludDE2X3QsIDEwKTsKK3N0YXRpYyBpbnQgY29weV9waWN0 dXJlX2RhdGEoQVZGcmFtZSAqc3JjLCBWbWFmUGljdHVyZSAqZHN0LCB1bnNpZ25lZCBicGMpCit7 CisgICAgaW50IGVyciA9IHZtYWZfcGljdHVyZV9hbGxvYyhkc3QsIHBpeF9mbXRfbWFwKHNyYy0+ Zm9ybWF0KSwgYnBjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLT53aWR0 aCwgc3JjLT5oZWlnaHQpOworICAgIGlmIChlcnIpCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVO T01FTSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMzsgaSsrKSB7CisgICAgICAg IHVpbnQ4X3QgKnNyY19kYXRhID0gc3JjLT5kYXRhW2ldOworICAgICAgICB1aW50OF90ICpkc3Rf ZGF0YSA9IGRzdC0+ZGF0YVtpXTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGRz dC0+aFtpXTsgaisrKSB7CisgICAgICAgICAgICBtZW1jcHkoZHN0X2RhdGEsIHNyY19kYXRhLCBz aXplb2YoKmRzdF9kYXRhKSAqIGRzdC0+d1tpXSk7CisgICAgICAgICAgICBzcmNfZGF0YSArPSBz cmMtPmxpbmVzaXplW2ldOworICAgICAgICAgICAgZHN0X2RhdGEgKz0gZHN0LT5zdHJpZGVbaV07 CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KIAotc3RhdGljIHZvaWQgY29t cHV0ZV92bWFmX3Njb3JlKExJQlZNQUZDb250ZXh0ICpzKQorc3RhdGljIGludCBkb192bWFmKEZG RnJhbWVTeW5jICpmcykKIHsKLSAgICBpbnQgKCpyZWFkX2ZyYW1lKShmbG9hdCAqcmVmX2RhdGEs IGZsb2F0ICptYWluX2RhdGEsIGZsb2F0ICp0ZW1wX2RhdGEsCi0gICAgICAgICAgICAgICAgICAg ICAgaW50IHN0cmlkZSwgdm9pZCAqY3R4KTsKLSAgICBjaGFyICpmb3JtYXQ7Ci0KLSAgICBpZiAo cy0+ZGVzYy0+Y29tcFswXS5kZXB0aCA8PSA4KSB7Ci0gICAgICAgIHJlYWRfZnJhbWUgPSByZWFk X2ZyYW1lXzhiaXQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmVhZF9mcmFtZSA9IHJlYWRfZnJh bWVfMTBiaXQ7CisgICAgQVZGaWx0ZXJDb250ZXh0ICpjdHggPSBmcy0+cGFyZW50OworICAgIExJ QlZNQUZDb250ZXh0ICpzID0gY3R4LT5wcml2OworICAgIEFWRnJhbWUgKnJlZiwgKmRpc3Q7Cisg ICAgaW50IGVyciA9IDA7CisKKyAgICBpbnQgcmV0ID0gZmZfZnJhbWVzeW5jX2R1YWxpbnB1dF9n ZXQoZnMsICZkaXN0LCAmcmVmKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIHJl dDsKKyAgICBpZiAoY3R4LT5pc19kaXNhYmxlZCB8fCAhcmVmKQorICAgICAgICByZXR1cm4gZmZf ZmlsdGVyX2ZyYW1lKGN0eC0+b3V0cHV0c1swXSwgZGlzdCk7CisKKyAgICBWbWFmUGljdHVyZSBw aWNfcmVmOworICAgIGVyciA9IGNvcHlfcGljdHVyZV9kYXRhKHJlZiwgJnBpY19yZWYsIHMtPmJw Yyk7CisgICAgaWYgKGVycikgeworICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAicHJv YmxlbSBkdXJpbmcgdm1hZl9waWN0dXJlX2FsbG9jLlxuIik7CisgICAgICAgIHJldHVybiBBVkVS Uk9SKEVOT01FTSk7CisgICAgfQorCisgICAgVm1hZlBpY3R1cmUgcGljX2Rpc3Q7CisgICAgZXJy ID0gY29weV9waWN0dXJlX2RhdGEoZGlzdCwgJnBpY19kaXN0LCBzLT5icGMpOworICAgIGlmIChl cnIpIHsKKyAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgInByb2JsZW0gZHVyaW5nIHZt YWZfcGljdHVyZV9hbGxvYy5cbiIpOworICAgICAgICB2bWFmX3BpY3R1cmVfdW5yZWYoJnBpY19y ZWYpOworICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwogICAgIH0KIAotICAgIGZvcm1h dCA9IChjaGFyICopIHMtPmRlc2MtPm5hbWU7CisgICAgZXJyID0gdm1hZl9yZWFkX3BpY3R1cmVz KHMtPnZtYWYsICZwaWNfcmVmLCAmcGljX2Rpc3QsIHMtPmZyYW1lX2NudCsrKTsKKyAgICBpZiAo ZXJyKSB7CisgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJwcm9ibGVtIGR1cmluZyB2 bWFmX3JlYWRfcGljdHVyZXMuXG4iKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsK KyAgICB9CiAKLSAgICBzLT5lcnJvciA9IGNvbXB1dGVfdm1hZigmcy0+dm1hZl9zY29yZSwgZm9y bWF0LCBzLT53aWR0aCwgcy0+aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl YWRfZnJhbWUsIHMsIHMtPm1vZGVsX3BhdGgsIHMtPmxvZ19wYXRoLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHMtPmxvZ19mbXQsIDAsIDAsIHMtPmVuYWJsZV90cmFuc2Zvcm0sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgcy0+cGhvbmVfbW9kZWwsIHMtPnBzbnIsIHMtPnNzaW0s Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bXNfc3NpbSwgcy0+cG9vbCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzLT5uX3RocmVhZHMsIHMtPm5fc3Vic2FtcGxlLCBzLT5l bmFibGVfY29uZl9pbnRlcnZhbCk7CisgICAgcmV0dXJuIGZmX2ZpbHRlcl9mcmFtZShjdHgtPm91 dHB1dHNbMF0sIGRpc3QpOwogfQogCi1zdGF0aWMgdm9pZCAqY2FsbF92bWFmKHZvaWQgKmN0eCkK K3N0YXRpYyBBVkRpY3Rpb25hcnkgKipkZWxpbWl0ZWRfZGljdF9wYXJzZShjaGFyICpzdHIsIHVu c2lnbmVkICpjbnQpCiB7Ci0gICAgTElCVk1BRkNvbnRleHQgKnMgPSAoTElCVk1BRkNvbnRleHQg KikgY3R4OwotICAgIGNvbXB1dGVfdm1hZl9zY29yZShzKTsKLSAgICBpZiAoIXMtPmVycm9yKSB7 Ci0gICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZPLCAiVk1BRiBzY29yZTogJWZcbiIscy0+ dm1hZl9zY29yZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZz LT5sb2NrKTsKLSAgICAgICAgcHRocmVhZF9jb25kX3NpZ25hbCgmcy0+Y29uZCk7Ci0gICAgICAg IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzLT5sb2NrKTsKKyAgICBpbnQgZXJyID0gMDsKKyAgICBp ZiAoIXN0cikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAqY250ID0gMTsKKyAgICBmb3Ig KGNoYXIgKnAgPSBzdHI7ICpwOyBwKyspIHsKKyAgICAgICAgaWYgKCpwID09ICd8JykKKyAgICAg ICAgICAgICgqY250KSsrOworICAgIH0KKworICAgIEFWRGljdGlvbmFyeSAqKmRpY3QgPSBhdl9j YWxsb2MoKmNudCwgc2l6ZW9mKCpkaWN0KSk7CisgICAgaWYgKCFkaWN0KQorICAgICAgICBnb3Rv IGZhaWw7CisKKyAgICBjaGFyICpzdHJfY29weSA9IGF2X3N0cmR1cChzdHIpOworICAgIGlmICgh c3RyX2NvcHkpCisgICAgICAgIGdvdG8gZmFpbDsKKworICAgIGNoYXIgKnNhdmVwdHIgPSBOVUxM OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAqY250OyBpKyspIHsKKyAgICAgICAgY2hh ciAqcyA9IGF2X3N0cnRvayhpID09IDAgPyBzdHJfY29weSA6IE5VTEwsICJ8IiwgJnNhdmVwdHIp OworICAgICAgICBlcnIgPSBhdl9kaWN0X3BhcnNlX3N0cmluZygmZGljdFtpXSwgcywgIj0iLCAi OiIsIDApOworICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgZ290byBmYWlsOwogICAgIH0K LSAgICBwdGhyZWFkX2V4aXQoTlVMTCk7CisKKyAgICBhdl9mcmVlKHN0cl9jb3B5KTsKKyAgICBy ZXR1cm4gZGljdDsKKworZmFpbDoKKyAgICBpZiAoZGljdCkgeworICAgICAgICBmb3IgKHVuc2ln bmVkIGkgPSAwOyBpIDwgKmNudDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZGljdFtpXSkKKyAg ICAgICAgICAgICAgICBhdl9kaWN0X2ZyZWUoJmRpY3RbaV0pOworICAgICAgICB9CisgICAgICAg IGF2X2ZyZWUoZGljdCk7CisgICAgfQorCisgICAgYXZfZnJlZShzdHJfY29weSk7CisgICAgKmNu dCA9IDA7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBpbnQgZG9fdm1hZihGRkZyYW1l U3luYyAqZnMpCitzdGF0aWMgaW50IHBhcnNlX2ZlYXR1cmVzKEFWRmlsdGVyQ29udGV4dCAqY3R4 KQogewotICAgIEFWRmlsdGVyQ29udGV4dCAqY3R4ID0gZnMtPnBhcmVudDsKICAgICBMSUJWTUFG Q29udGV4dCAqcyA9IGN0eC0+cHJpdjsKLSAgICBBVkZyYW1lICptYXN0ZXIsICpyZWY7Ci0gICAg aW50IHJldDsKKyAgICBpZiAoIXMtPmZlYXR1cmVfY2ZnKSByZXR1cm4gMDsKIAotICAgIHJldCA9 IGZmX2ZyYW1lc3luY19kdWFsaW5wdXRfZ2V0KGZzLCAmbWFzdGVyLCAmcmVmKTsKLSAgICBpZiAo cmV0IDwgMCkKLSAgICAgICAgcmV0dXJuIHJldDsKLSAgICBpZiAoIXJlZikKLSAgICAgICAgcmV0 dXJuIGZmX2ZpbHRlcl9mcmFtZShjdHgtPm91dHB1dHNbMF0sIG1hc3Rlcik7CisgICAgaW50IGVy ciA9IDA7CiAKLSAgICBwdGhyZWFkX211dGV4X2xvY2soJnMtPmxvY2spOworICAgIHVuc2lnbmVk IGRpY3RfY250ID0gMDsKKyAgICBBVkRpY3Rpb25hcnkgKipkaWN0ID0gZGVsaW1pdGVkX2RpY3Rf cGFyc2Uocy0+ZmVhdHVyZV9jZmcsICZkaWN0X2NudCk7CisgICAgaWYgKCFkaWN0KSB7CisgICAg ICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICJjb3VsZCBub3Qg cGFyc2UgZmVhdHVyZSBjb25maWc6ICVzXG4iLCBzLT5mZWF0dXJlX2NmZyk7CisgICAgICAgIHJl dHVybiBBVkVSUk9SKEVJTlZBTCk7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg aSA8IGRpY3RfY250OyBpKyspIHsKKyAgICAgICAgY2hhciAqZmVhdHVyZV9uYW1lID0gTlVMTDsK KyAgICAgICAgVm1hZkZlYXR1cmVEaWN0aW9uYXJ5ICpmZWF0dXJlX29wdHNfZGljdCA9IE5VTEw7 CisgICAgICAgIEFWRGljdGlvbmFyeUVudHJ5ICplID0gTlVMTDsKKworICAgICAgICB3aGlsZSAo ZSA9IGF2X2RpY3RfZ2V0KGRpY3RbaV0sICIiLCBlLCBBVl9ESUNUX0lHTk9SRV9TVUZGSVgpKSB7 CisgICAgICAgICAgICBpZiAoYXZfc3RyaXN0cihlLT5rZXksICJuYW1lIikpIHsKKyAgICAgICAg ICAgICAgICBmZWF0dXJlX25hbWUgPSBlLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBjb250aW51 ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXJyID0gdm1hZl9mZWF0dXJlX2RpY3Rp b25hcnlfc2V0KCZmZWF0dXJlX29wdHNfZGljdCwgZS0+a2V5LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUtPnZhbHVlKTsKKyAgICAgICAgICAgIGlmIChl cnIpIHsKKyAgICAgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAg ICAgICAgICAgICAgICAgICJjb3VsZCBub3Qgc2V0IGZlYXR1cmUgb3B0aW9uOiAlcy4lcz0lc1xu IiwKKyAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZV9uYW1lLCBlLT5rZXksIGUtPnZhbHVl KTsKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0K KworICAgICAgICBlcnIgPSB2bWFmX3VzZV9mZWF0dXJlKHMtPnZtYWYsIGZlYXR1cmVfbmFtZSwg ZmVhdHVyZV9vcHRzX2RpY3QpOworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBhdl9s b2coY3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAgICAgInByb2JsZW0gZHVyaW5n IHZtYWZfdXNlX2ZlYXR1cmU6ICVzXG4iLCBmZWF0dXJlX25hbWUpOworICAgICAgICAgICAgZ290 byBleGl0OworICAgICAgICB9CisgICAgfQogCi0gICAgd2hpbGUgKHMtPmZyYW1lX3NldCAmJiAh cy0+ZXJyb3IpIHsKLSAgICAgICAgcHRocmVhZF9jb25kX3dhaXQoJnMtPmNvbmQsICZzLT5sb2Nr KTsKK2V4aXQ6CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRpY3RfY250OyBpKyspIHsK KyAgICAgICAgaWYgKGRpY3RbaV0pCisgICAgICAgICAgICBhdl9kaWN0X2ZyZWUoJmRpY3RbaV0p OwogICAgIH0KKyAgICBhdl9mcmVlKGRpY3QpOworICAgIHJldHVybiBlcnI7Cit9CisKK3N0YXRp YyBpbnQgcGFyc2VfbW9kZWxzKEFWRmlsdGVyQ29udGV4dCAqY3R4KQoreworICAgIExJQlZNQUZD b250ZXh0ICpzID0gY3R4LT5wcml2OworICAgIGlmICghcy0+bW9kZWxfY2ZnKSByZXR1cm4gMDsK KworICAgIGludCBlcnIgPSAwOwogCi0gICAgaWYgKHMtPmVycm9yKSB7CisgICAgdW5zaWduZWQg ZGljdF9jbnQgPSAwOworICAgIEFWRGljdGlvbmFyeSAqKmRpY3QgPSBkZWxpbWl0ZWRfZGljdF9w YXJzZShzLT5tb2RlbF9jZmcsICZkaWN0X2NudCk7CisgICAgaWYgKCFkaWN0KSB7CiAgICAgICAg IGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwKLSAgICAgICAgICAgICAgICJsaWJ2bWFmIGVuY291 bnRlcmVkIGFuIGVycm9yLCBjaGVjayBsb2cgZm9yIGRldGFpbHNcbiIpOwotICAgICAgICBwdGhy ZWFkX211dGV4X3VubG9jaygmcy0+bG9jayk7CisgICAgICAgICAgICAgICAiY291bGQgbm90IHBh cnNlIG1vZGVsIGNvbmZpZzogJXNcbiIsIHMtPm1vZGVsX2NmZyk7CiAgICAgICAgIHJldHVybiBB VkVSUk9SKEVJTlZBTCk7CiAgICAgfQogCi0gICAgYXZfZnJhbWVfcmVmKHMtPmdyZWYsIHJlZik7 Ci0gICAgYXZfZnJhbWVfcmVmKHMtPmdtYWluLCBtYXN0ZXIpOworICAgIHMtPm1vZGVsX2NudCA9 IGRpY3RfY250OworICAgIHMtPm1vZGVsID0gYXZfY2FsbG9jKHMtPm1vZGVsX2NudCwgc2l6ZW9m KCpzLT5tb2RlbCkpOworICAgIGlmICghcy0+bW9kZWwpCisgICAgICAgIHJldHVybiBBVkVSUk9S KEVOT01FTSk7CiAKLSAgICBzLT5mcmFtZV9zZXQgPSAxOworICAgIGZvciAodW5zaWduZWQgaSA9 IDA7IGkgPCBkaWN0X2NudDsgaSsrKSB7CisgICAgICAgIFZtYWZNb2RlbENvbmZpZyBtb2RlbF9j ZmcgPSB7MH07CisgICAgICAgIEFWRGljdGlvbmFyeUVudHJ5ICplID0gTlVMTDsKKyAgICAgICAg Y2hhciAqdmVyc2lvbiwgKnBhdGg7CisKKyAgICAgICAgd2hpbGUgKGUgPSBhdl9kaWN0X2dldChk aWN0W2ldLCAiIiwgZSwgQVZfRElDVF9JR05PUkVfU1VGRklYKSkgeworICAgICAgICAgICAgaWYg KGF2X3N0cmlzdHIoZS0+a2V5LCAiZGlzYWJsZV9jbGlwIikpIHsKKyAgICAgICAgICAgICAgICBt b2RlbF9jZmcuZmxhZ3MgfD0gYXZfc3RyaXN0cihlLT52YWx1ZSwgInRydWUiKSA/CisgICAgICAg ICAgICAgICAgICAgIFZNQUZfTU9ERUxfRkxBR19ESVNBQkxFX0NMSVAgOiAwOworICAgICAgICAg ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXZfc3Ry aXN0cihlLT5rZXksICJlbmFibGVfdHJhbnNmb3JtIikpIHsKKyAgICAgICAgICAgICAgICBtb2Rl bF9jZmcuZmxhZ3MgfD0gYXZfc3RyaXN0cihlLT52YWx1ZSwgInRydWUiKSA/CisgICAgICAgICAg ICAgICAgICAgIFZNQUZfTU9ERUxfRkxBR19FTkFCTEVfVFJBTlNGT1JNIDogMDsKKyAgICAgICAg ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGF2X3N0 cmlzdHIoZS0+a2V5LCAibmFtZSIpKSB7CisgICAgICAgICAgICAgICAgbW9kZWxfY2ZnLm5hbWUg PSBlLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKwor ICAgICAgICAgICAgaWYgKGF2X3N0cmlzdHIoZS0+a2V5LCAidmVyc2lvbiIpKSB7CisgICAgICAg ICAgICAgICAgdmVyc2lvbiA9IGUtPnZhbHVlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYXZfc3RyaXN0cihlLT5rZXksICJwYXRo IikpIHsKKyAgICAgICAgICAgICAgICBwYXRoID0gZS0+dmFsdWU7CisgICAgICAgICAgICAgICAg Y29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAodmVyc2lv bikgeworICAgICAgICAgICAgZXJyID0gdm1hZl9tb2RlbF9sb2FkKCZzLT5tb2RlbFtpXSwgJm1v ZGVsX2NmZywgdmVyc2lvbik7CisgICAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAg ICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAiY291 bGQgbm90IGxvYWQgbGlidm1hZiBtb2RlbCB3aXRoIHZlcnNpb246ICVzXG4iLAorICAgICAgICAg ICAgICAgICAgICAgICB2ZXJzaW9uKTsKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAg ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAocGF0aCAmJiAhcy0+bW9kZWxbaV0p IHsKKyAgICAgICAgICAgIGVyciA9IHZtYWZfbW9kZWxfbG9hZF9mcm9tX3BhdGgoJnMtPm1vZGVs W2ldLCAmbW9kZWxfY2ZnLCBwYXRoKTsKKyAgICAgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAg ICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAg ICJjb3VsZCBub3QgbG9hZCBsaWJ2bWFmIG1vZGVsIHdpdGggcGF0aDogJXNcbiIsCisgICAgICAg ICAgICAgICAgICAgICAgIGUtPnZhbHVlKTsKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Cisg ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXMtPm1vZGVsW2ldKSB7Cisg ICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAgICAg ImNvdWxkIG5vdCBsb2FkIGxpYnZtYWYgbW9kZWwgd2l0aCBjb25maWc6ICVzXG4iLAorICAgICAg ICAgICAgICAgICAgIHMtPm1vZGVsX2NmZyk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAg ICAgIH0KKworICAgICAgICB3aGlsZSAoZSA9IGF2X2RpY3RfZ2V0KGRpY3RbaV0sICIiLCBlLCBB Vl9ESUNUX0lHTk9SRV9TVUZGSVgpKSB7CisgICAgICAgICAgICBjaGFyICpmZWF0dXJlX29wdCA9 IE5VTEw7CisgICAgICAgICAgICBjaGFyICpmZWF0dXJlX25hbWUgPSBhdl9zdHJ0b2soZS0+a2V5 LCAiLiIsICZmZWF0dXJlX29wdCk7CisgICAgICAgICAgICBpZiAoIWZlYXR1cmVfb3B0KQorICAg ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBWbWFmRmVhdHVyZURpY3Rpb25h cnkgKmZlYXR1cmVfb3B0c19kaWN0ID0gTlVMTDsKKyAgICAgICAgICAgIGVyciA9IHZtYWZfZmVh dHVyZV9kaWN0aW9uYXJ5X3NldCgmZmVhdHVyZV9vcHRzX2RpY3QsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZV9vcHQsIGUtPnZhbHVlKTsKKyAg ICAgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0df RVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3Qgc2V0IGZlYXR1cmUgb3B0 aW9uOiAlcy4lcz0lc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZV9uYW1lLCBm ZWF0dXJlX29wdCwgZS0+dmFsdWUpOworICAgICAgICAgICAgICAgIGVyciA9IEFWRVJST1IoRUlO VkFMKTsKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICB9CisKKyAgICAg ICAgICAgIGVyciA9IHZtYWZfbW9kZWxfZmVhdHVyZV9vdmVybG9hZChzLT5tb2RlbFtpXSwgZmVh dHVyZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZlYXR1cmVfb3B0c19kaWN0KTsKKyAgICAgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAg ICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgICJj b3VsZCBub3Qgb3ZlcmxvYWQgZmVhdHVyZTogJXNcbiIsIGZlYXR1cmVfbmFtZSk7CisgICAgICAg ICAgICAgICAgZXJyID0gQVZFUlJPUihFSU5WQUwpOworICAgICAgICAgICAgICAgIGdvdG8gZXhp dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAotICAgIHB0aHJlYWRfY29uZF9z aWduYWwoJnMtPmNvbmQpOwotICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZzLT5sb2NrKTsKKyAg ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcy0+bW9kZWxfY250OyBpKyspIHsKKyAgICAgICAg ZXJyID0gdm1hZl91c2VfZmVhdHVyZXNfZnJvbV9tb2RlbChzLT52bWFmLCBzLT5tb2RlbFtpXSk7 CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJP UiwKKyAgICAgICAgICAgICAgICAgICAicHJvYmxlbSBkdXJpbmcgdm1hZl91c2VfZmVhdHVyZXNf ZnJvbV9tb2RlbFxuIik7CisgICAgICAgICAgICBlcnIgPSBBVkVSUk9SKEVJTlZBTCk7CisgICAg ICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICByZXR1cm4gZmZfZmls dGVyX2ZyYW1lKGN0eC0+b3V0cHV0c1swXSwgbWFzdGVyKTsKK2V4aXQ6CisgICAgZm9yICh1bnNp Z25lZCBpID0gMDsgaSA8IGRpY3RfY250OyBpKyspIHsKKyAgICAgICAgaWYgKGRpY3RbaV0pCisg ICAgICAgICAgICBhdl9kaWN0X2ZyZWUoJmRpY3RbaV0pOworICAgIH0KKyAgICBhdl9mcmVlKGRp Y3QpOworICAgIHJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBlbnVtIFZtYWZMb2dMZXZlbCBsb2df bGV2ZWxfbWFwKGludCBsb2dfbGV2ZWwpCit7CisgICAgc3dpdGNoIChsb2dfbGV2ZWwpIHsKKyAg ICBjYXNlIEFWX0xPR19RVUlFVDoKKyAgICAgICAgcmV0dXJuIFZNQUZfTE9HX0xFVkVMX05PTkU7 CisgICAgY2FzZSBBVl9MT0dfRVJST1I6CisgICAgICAgIHJldHVybiBWTUFGX0xPR19MRVZFTF9F UlJPUjsKKyAgICBjYXNlIEFWX0xPR19XQVJOSU5HOgorICAgICAgICByZXR1cm4gVk1BRl9MT0df TEVWRUxfV0FSTklORzsKKyAgICBjYXNlIEFWX0xPR19JTkZPOgorICAgICAgICByZXR1cm4gVk1B Rl9MT0dfTEVWRUxfSU5GTzsKKyAgICBjYXNlIEFWX0xPR19ERUJVRzoKKyAgICAgICAgcmV0dXJu IFZNQUZfTE9HX0xFVkVMX0RFQlVHOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBWTUFG X0xPR19MRVZFTF9JTkZPOworICAgIH0KIH0KIAogc3RhdGljIGF2X2NvbGQgaW50IGluaXQoQVZG aWx0ZXJDb250ZXh0ICpjdHgpCiB7CiAgICAgTElCVk1BRkNvbnRleHQgKnMgPSBjdHgtPnByaXY7 CisgICAgaW50IGVyciA9IDA7CiAKLSAgICBzLT5ncmVmID0gYXZfZnJhbWVfYWxsb2MoKTsKLSAg ICBzLT5nbWFpbiA9IGF2X2ZyYW1lX2FsbG9jKCk7Ci0gICAgaWYgKCFzLT5ncmVmIHx8ICFzLT5n bWFpbikKLSAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKyAgICBWbWFmQ29uZmlndXJh dGlvbiBjZmcgPSB7CisgICAgICAgIC5sb2dfbGV2ZWwgPSBsb2dfbGV2ZWxfbWFwKGF2X2xvZ19n ZXRfbGV2ZWwoKSksCisgICAgICAgIC5uX3N1YnNhbXBsZSA9IHMtPm5fc3Vic2FtcGxlLAorICAg ICAgICAubl90aHJlYWRzID0gcy0+bl90aHJlYWRzLAorICAgIH07CisKKyAgICBlcnIgPSB2bWFm X2luaXQoJnMtPnZtYWYsIGNmZyk7CisgICAgaWYgKGVycikKKyAgICAgICAgcmV0dXJuIEFWRVJS T1IoRUlOVkFMKTsKIAotICAgIHMtPmVycm9yID0gMDsKKyAgICBlcnIgPSBwYXJzZV9tb2RlbHMo Y3R4KTsKKyAgICBpZiAoZXJyKQorICAgICAgICByZXR1cm4gZXJyOwogCi0gICAgcy0+dm1hZl90 aHJlYWRfY3JlYXRlZCA9IDA7Ci0gICAgcHRocmVhZF9tdXRleF9pbml0KCZzLT5sb2NrLCBOVUxM KTsKLSAgICBwdGhyZWFkX2NvbmRfaW5pdCAoJnMtPmNvbmQsIE5VTEwpOworICAgIGVyciA9IHBh cnNlX2ZlYXR1cmVzKGN0eCk7CisgICAgaWYgKGVycikKKyAgICAgICAgcmV0dXJuIGVycjsKIAog ICAgIHMtPmZzLm9uX2V2ZW50ID0gZG9fdm1hZjsKICAgICByZXR1cm4gMDsKQEAgLTI1NiwyNiAr NDI2LDMxIEBAIHN0YXRpYyBjb25zdCBlbnVtIEFWUGl4ZWxGb3JtYXQgcGl4X2ZtdHNbXSA9IHsK IAogc3RhdGljIGludCBjb25maWdfaW5wdXRfcmVmKEFWRmlsdGVyTGluayAqaW5saW5rKQogewot ICAgIEFWRmlsdGVyQ29udGV4dCAqY3R4ICA9IGlubGluay0+ZHN0OworICAgIEFWRmlsdGVyQ29u dGV4dCAqY3R4ID0gaW5saW5rLT5kc3Q7CiAgICAgTElCVk1BRkNvbnRleHQgKnMgPSBjdHgtPnBy aXY7Ci0gICAgaW50IHRoOwogCi0gICAgaWYgKGN0eC0+aW5wdXRzWzBdLT53ICE9IGN0eC0+aW5w dXRzWzFdLT53IHx8Ci0gICAgICAgIGN0eC0+aW5wdXRzWzBdLT5oICE9IGN0eC0+aW5wdXRzWzFd LT5oKSB7Ci0gICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIldpZHRoIGFuZCBoZWln aHQgb2YgaW5wdXQgdmlkZW9zIG11c3QgYmUgc2FtZS5cbiIpOwotICAgICAgICByZXR1cm4gQVZF UlJPUihFSU5WQUwpOworICAgIGludCBlcnIgPSAwOworCisgICAgaWYgKGN0eC0+aW5wdXRzWzBd LT53ICE9IGN0eC0+aW5wdXRzWzFdLT53KSB7CisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19F UlJPUiwgImlucHV0IHdpZHRoIG11c3QgbWF0Y2guXG4iKTsKKyAgICAgICAgZXJyIHw9IEFWRVJS T1IoRUlOVkFMKTsKICAgICB9CiAKLSAgICBzLT5kZXNjID0gYXZfcGl4X2ZtdF9kZXNjX2dldChp bmxpbmstPmZvcm1hdCk7Ci0gICAgcy0+d2lkdGggPSBjdHgtPmlucHV0c1swXS0+dzsKLSAgICBz LT5oZWlnaHQgPSBjdHgtPmlucHV0c1swXS0+aDsKKyAgICBpZiAoY3R4LT5pbnB1dHNbMF0tPmgg IT0gY3R4LT5pbnB1dHNbMV0tPmgpIHsKKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9S LCAiaW5wdXQgaGVpZ2h0IG11c3QgbWF0Y2guXG4iKTsKKyAgICAgICAgZXJyIHw9IEFWRVJST1Io RUlOVkFMKTsKKyAgICB9CiAKLSAgICB0aCA9IHB0aHJlYWRfY3JlYXRlKCZzLT52bWFmX3RocmVh ZCwgTlVMTCwgY2FsbF92bWFmLCAodm9pZCAqKSBzKTsKLSAgICBpZiAodGgpIHsKLSAgICAgICAg YXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiVGhyZWFkIGNyZWF0aW9uIGZhaWxlZC5cbiIpOwot ICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgIGlmIChjdHgtPmlucHV0c1swXS0+ Zm9ybWF0ICE9IGN0eC0+aW5wdXRzWzFdLT5mb3JtYXQpIHsKKyAgICAgICAgYXZfbG9nKGN0eCwg QVZfTE9HX0VSUk9SLCAiaW5wdXQgcGl4X2ZtdCBtdXN0IG1hdGNoLlxuIik7CisgICAgICAgIGVy ciB8PSBBVkVSUk9SKEVJTlZBTCk7CiAgICAgfQotICAgIHMtPnZtYWZfdGhyZWFkX2NyZWF0ZWQg PSAxOworCisgICAgaWYgKGVycikKKyAgICAgICAgcmV0dXJuIGVycjsKKworICAgIGNvbnN0IEFW UGl4Rm10RGVzY3JpcHRvciAqZGVzYyA9IGF2X3BpeF9mbXRfZGVzY19nZXQoaW5saW5rLT5mb3Jt YXQpOworICAgIHMtPmJwYyA9IGRlc2MtPmNvbXBbMF0uZGVwdGg7CiAKICAgICByZXR1cm4gMDsK IH0KQEAgLTMwNywyOCArNDgyLDY1IEBAIHN0YXRpYyBpbnQgYWN0aXZhdGUoQVZGaWx0ZXJDb250 ZXh0ICpjdHgpCiAgICAgcmV0dXJuIGZmX2ZyYW1lc3luY19hY3RpdmF0ZSgmcy0+ZnMpOwogfQog CitzdGF0aWMgZW51bSBWbWFmT3V0cHV0Rm9ybWF0IGxvZ19mbXRfbWFwKGNvbnN0IGNoYXIgKmxv Z19mbXQpCit7CisgICAgaWYgKGF2X3N0cmlzdHIobG9nX2ZtdCwgInhtbCIpKQorICAgICAgICBy ZXR1cm4gVk1BRl9PVVRQVVRfRk9STUFUX1hNTDsKKyAgICBpZiAoYXZfc3RyaXN0cihsb2dfZm10 LCAianNvbiIpKQorICAgICAgICByZXR1cm4gVk1BRl9PVVRQVVRfRk9STUFUX0pTT047CisgICAg aWYgKGF2X3N0cmlzdHIobG9nX2ZtdCwgImNzdiIpKQorICAgICAgICByZXR1cm4gVk1BRl9PVVRQ VVRfRk9STUFUX0NTVjsKKyAgICBpZiAoYXZfc3RyaXN0cihsb2dfZm10LCAic3ViIikpCisgICAg ICAgIHJldHVybiBWTUFGX09VVFBVVF9GT1JNQVRfU1VCOworCisgICAgcmV0dXJuIFZNQUZfT1VU UFVUX0ZPUk1BVF9YTUw7Cit9CisKIHN0YXRpYyBhdl9jb2xkIHZvaWQgdW5pbml0KEFWRmlsdGVy Q29udGV4dCAqY3R4KQogewogICAgIExJQlZNQUZDb250ZXh0ICpzID0gY3R4LT5wcml2OwogCisg ICAgaW50IGVyciA9IDA7CisKICAgICBmZl9mcmFtZXN5bmNfdW5pbml0KCZzLT5mcyk7CiAKLSAg ICBwdGhyZWFkX211dGV4X2xvY2soJnMtPmxvY2spOwotICAgIHMtPmVvZiA9IDE7Ci0gICAgcHRo cmVhZF9jb25kX3NpZ25hbCgmcy0+Y29uZCk7Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJnMt PmxvY2spOworICAgIGlmICghcy0+ZnJhbWVfY250KQorICAgICAgICBnb3RvIGNsZWFuX3VwOwog Ci0gICAgaWYgKHMtPnZtYWZfdGhyZWFkX2NyZWF0ZWQpCi0gICAgewotICAgICAgICBwdGhyZWFk X2pvaW4ocy0+dm1hZl90aHJlYWQsIE5VTEwpOwotICAgICAgICBzLT52bWFmX3RocmVhZF9jcmVh dGVkID0gMDsKKyAgICBlcnIgPSB2bWFmX3JlYWRfcGljdHVyZXMocy0+dm1hZiwgTlVMTCwgTlVM TCwgMCk7CisgICAgaWYgKGVycikgeworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1Is CisgICAgICAgICAgICAgICAicHJvYmxlbSBmbHVzaGluZyBsaWJ2bWFmIGNvbnRleHQuXG4iKTsK ICAgICB9CiAKLSAgICBhdl9mcmFtZV9mcmVlKCZzLT5ncmVmKTsKLSAgICBhdl9mcmFtZV9mcmVl KCZzLT5nbWFpbik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHMtPm1vZGVsX2NudDsg aSsrKSB7CisgICAgICAgIGRvdWJsZSB2bWFmX3Njb3JlOworICAgICAgICBlcnIgPSB2bWFmX3Nj b3JlX3Bvb2xlZChzLT52bWFmLCBzLT5tb2RlbFtpXSwgVk1BRl9QT09MX01FVEhPRF9NRUFOLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdm1hZl9zY29yZSwgMCwgcy0+ZnJhbWVf Y250IC0gMSk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFW X0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAicHJvYmxlbSBnZXR0aW5nIHBvb2xlZCB2 bWFmIHNjb3JlLlxuIik7CisgICAgICAgIH0KKworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0df SU5GTywgIlZNQUYgc2NvcmU6ICVmXG4iLCB2bWFmX3Njb3JlKTsKKyAgICB9CisKKyAgICBpZiAo cy0+dm1hZikgeworICAgICAgICBpZiAocy0+bG9nX3BhdGggJiYgIWVycikKKyAgICAgICAgICAg IHZtYWZfd3JpdGVfb3V0cHV0KHMtPnZtYWYsIHMtPmxvZ19wYXRoLCBsb2dfZm10X21hcChzLT5s b2dfZm10KSk7CisgICAgfQorCitjbGVhbl91cDoKKyAgICBpZiAocy0+bW9kZWwpIHsKKyAgICAg ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHMtPm1vZGVsX2NudDsgaSsrKSB7CisgICAgICAg ICAgICBpZiAocy0+bW9kZWxbaV0pCisgICAgICAgICAgICAgICAgdm1hZl9tb2RlbF9kZXN0cm95 KHMtPm1vZGVsW2ldKTsKKyAgICAgICAgfQorICAgICAgICBhdl9mcmVlKHMtPm1vZGVsKTsKKyAg ICB9CiAKLSAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJnMtPmxvY2spOwotICAgIHB0aHJlYWRf Y29uZF9kZXN0cm95KCZzLT5jb25kKTsKKyAgICBpZiAocy0+dm1hZikKKyAgICAgICAgdm1hZl9j bG9zZShzLT52bWFmKTsKIH0KIAogc3RhdGljIGNvbnN0IEFWRmlsdGVyUGFkIGxpYnZtYWZfaW5w dXRzW10gPSB7Ci0tIAoyLjI0LjMgKEFwcGxlIEdpdC0xMjgpCgo= --0000000000008057f705d466bc22 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --0000000000008057f705d466bc22--