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 C8A2E44E23 for ; Fri, 25 Nov 2022 19:28:26 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8512F68BC72; Fri, 25 Nov 2022 21:28:23 +0200 (EET) Received: from mail-vk1-f180.google.com (mail-vk1-f180.google.com [209.85.221.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 17FE6680BA3 for ; Fri, 25 Nov 2022 21:28:17 +0200 (EET) Received: by mail-vk1-f180.google.com with SMTP id o21so2262299vka.3 for ; Fri, 25 Nov 2022 11:28:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=nP44Pz8tpi3ARz2TE5NpnrtcbeLZoVXZjMtlN4icwmc=; b=YAIo3ljP+Yv5NikQ9CWF+V9+hKNZ1oaJk6yZx1KYh1JzEfiJ/cM9lGQ3qtD9HFRMVL ULlUN1jA0o8OeCEE6sHgHF7lDIhnWLUhcsqO48ELihPbapJYspLgZ81o0gxB2lER/m0F W33XQybALiM/McnDY4MjmJccfQgioL6f8nLvCH0cd5ji1o3ruWvCYRmHYmSCkJaHxYGE MdmZVEtK0mjRsc23l97uI0RbNJJLaJsasDb7p4IONFdX+Han+B8QjTtmGHngL0WyySny TajBgHeog6/RX7NsQwB3CkS5w8+Nk/1mpHKtU1J9csMZPcdNJXkfgLLWAy4vbn8+LAwu 31Eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=nP44Pz8tpi3ARz2TE5NpnrtcbeLZoVXZjMtlN4icwmc=; b=DTgrdlysWto9qXsEKtdoFX9ue5jdTCN2BUm9NDHpBBgyZ3uyy4ZYFwHOYRvf3HOUc+ L3f4ordG55dcI8kU5+O9ujCA0PCUFWs8AzhUl5wK+P5/Cfo1ZiAmEMWEvlGWn0JiT0Lj D8vfzmHNNoWIbpoHqGJQwfyH3XVyh94/VeCkZ/sUL7iWnhD7xPFKCCLf9Af9Ym/x6ZDP MD+p+WRNsdRkdVl15Hiie2dERRR8Z424YWs1LzvsghJ69Xr6Wh8Hi/atW6KZss4xojCZ fOZLEB1UOehAeBEkWWUAAr9kqzcBGtedj8OL2QaYzEfyg1xQ2a6RlWvXJl8d96XKd7KM OFEA== X-Gm-Message-State: ANoB5pmlWf7n9jcdLEGjw7HHkJcS3QFGDSiOIaj2K11X2+sdmpSvS+57 wDtUKF4XUKJco1zYOGXFDGMz2v+vtfggBN6ffrpn7g+p X-Google-Smtp-Source: AA0mqf60MBq2dkMubsqKNu04Oy4jJ0By+tohdzM8d3ojgsed4A4MGFvg1tOb9JzW6mtEDYdbbkhWf9VyhtNx0wJp6QM= X-Received: by 2002:a1f:adce:0:b0:3bc:9f94:d7f1 with SMTP id w197-20020a1fadce000000b003bc9f94d7f1mr8480141vke.21.1669404494694; Fri, 25 Nov 2022 11:28:14 -0800 (PST) MIME-Version: 1.0 Received: by 2002:a05:612c:2428:b0:32a:5eaa:92e4 with HTTP; Fri, 25 Nov 2022 11:28:13 -0800 (PST) From: Paul B Mahol Date: Fri, 25 Nov 2022 20:28:13 +0100 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="000000000000e4aaf705ee50857d" Subject: [FFmpeg-devel] [PATCH] avfilter: add showcwt multimedia filter 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: --000000000000e4aaf705ee50857d Content-Type: text/plain; charset="UTF-8" Hello, Patch attached. --000000000000e4aaf705ee50857d Content-Type: text/x-patch; charset="US-ASCII"; name="0001-avfilter-add-showcwt-multimedia-filter.patch" Content-Disposition: attachment; filename="0001-avfilter-add-showcwt-multimedia-filter.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: file0 RnJvbSA2OGVmODEwOThhZWJjYTkwNjRmOWM2N2U3NDY0NzZjMzk3MjllNjNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEIgTWFob2wgPG9uZW1kYUBnbWFpbC5jb20+CkRhdGU6 IFNhdCwgMTkgTm92IDIwMjIgMTk6MDE6MjMgKzAxMDAKU3ViamVjdDogW1BBVENIXSBhdmZpbHRl cjogYWRkIHNob3djd3QgbXVsdGltZWRpYSBmaWx0ZXIKClNpZ25lZC1vZmYtYnk6IFBhdWwgQiBN YWhvbCA8b25lbWRhQGdtYWlsLmNvbT4KLS0tCiBkb2MvZmlsdGVycy50ZXhpICAgICAgICAgIHwg IDY2ICsrKysrCiBsaWJhdmZpbHRlci9NYWtlZmlsZSAgICAgIHwgICAxICsKIGxpYmF2ZmlsdGVy L2FsbGZpbHRlcnMuYyAgfCAgIDEgKwogbGliYXZmaWx0ZXIvYXZmX3Nob3djd3QuYyB8IDU1OCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA2 MjYgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2ZmlsdGVyL2F2Zl9zaG93 Y3d0LmMKCmRpZmYgLS1naXQgYS9kb2MvZmlsdGVycy50ZXhpIGIvZG9jL2ZpbHRlcnMudGV4aQpp bmRleCBlY2Y4ZGZhNDdhLi41ZjM1YmQ3ZTRlIDEwMDY0NAotLS0gYS9kb2MvZmlsdGVycy50ZXhp CisrKyBiL2RvYy9maWx0ZXJzLnRleGkKQEAgLTI5Mjc0LDYgKzI5Mjc0LDcyIEBAIGF4aXNmaWxl PW15YXhpcy5wbmc6YmFzZWZyZXE9NDA6ZW5kZnJlcT0xMDAwMAogQGVuZCBleGFtcGxlCiBAZW5k IGl0ZW1pemUKIAorQHNlY3Rpb24gc2hvd2N3dAorCitDb252ZXJ0IGlucHV0IGF1ZGlvIHRvIHZp ZGVvIG91dHB1dCByZXByZXNlbnRpbmcgZnJlcXVlbmN5IHNwZWN0cnVtCitsaW5lYXJseSBvciBs b2dhcml0aG1pY2FsbHkgdXNpbmcgQ29udGludW91cyBXYXZlbGV0IFRyYW5zZm9ybSBhbmQKK01v cmxldCB3YXZlbGV0LgorCitUaGUgZmlsdGVyIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBvcHRpb25z OgorCitAdGFibGUgQG9wdGlvbgorQGl0ZW0gc2l6ZSwgcworU3BlY2lmeSB0aGUgdmlkZW8gc2l6 ZSBmb3IgdGhlIG91dHB1dC4gRm9yIHRoZSBzeW50YXggb2YgdGhpcyBvcHRpb24sCitjaGVjayB0 aGUgQHJlZnt2aWRlbyBzaXplIHN5bnRheCwsIlZpZGVvIHNpemUiIHNlY3Rpb24gaW4gdGhlIGZm bXBlZy11dGlscyBtYW51YWwsZmZtcGVnLXV0aWxzfS4KK0RlZmF1bHQgdmFsdWUgaXMgQGNvZGV7 NjQweDUxMn0uCisKK0BpdGVtIHJhdGUsIHIKK1NldCB0aGUgb3V0cHV0IGZyYW1lIHJhdGUuIERl ZmF1bHQgdmFsdWUgaXMgQGNvZGV7MjV9LgorCitAaXRlbSBzY2FsZQorU2V0IHRoZSBmcmVxdWVu Y3kgc2NhbGUgdXNlZC4gQ2FuIGJlIEBjb2Rle2xpbmVhcn0gb3IgQGNvZGV7bG9nfS4KK0RlZmF1 bHQgdmFsdWUgaXMgQGNvZGV7bGluZWFyfS4KKworQGl0ZW0gbWluCitTZXQgdGhlIG1pbmltdW0g ZnJlcXVlbmN5IHRoYXQgd2lsbCBiZSB1c2VkIGluIG91dHB1dC4KK0RlZmF1bHQgaXMgQGNvZGV7 MjB9IEh6LgorCitAaXRlbSBtYXgKK1NldCB0aGUgbWF4aW11bSBmcmVxdWVuY3kgdGhhdCB3aWxs IGJlIHVzZWQgaW4gb3V0cHV0LgorRGVmYXVsdCBpcyBAY29kZXsyMDAwMH0gSHouIFRoZSByZWFs IGZyZXF1ZW5jeSB1cHBlciBsaW1pdAorZGVwZW5kcyBvbiBpbnB1dCBhdWRpbydzIHNhbXBsZSBy YXRlIGFuZCBzdWNoIHdpbGwgYmUgZW5mb3JjZWQKK29uIHRoaXMgdmFsdWUgd2hlbiBpdCBpcyBz ZXQgdG8gdmFsdWUgZ3JlYXRlciB0aGFuIE55cXVpc3QgZnJlcXVlbmN5LgorCitAaXRlbSBsb2di CitTZXQgdGhlIGxvZ2FyaXRobWljIGJhc2lzIGZvciBicmlnaHRuZXNzIHN0cmVuZ3RoIHdoZW4K K21hcHBpbmcgY2FsY3VsYXRlZCBtYWduaXR1ZGUgdmFsdWVzIHRvIHBpeGVsIHZhbHVlcy4KK0Fs bG93ZWQgcmFuZ2UgaXMgZnJvbSBAY29kZXswfSB0byBAY29kZXsxfS4KK0RlZmF1bHQgdmFsdWUg aXMgQGNvZGV7MC4wMDAxfS4KKworQGl0ZW0gZGV2aWF0aW9uCitTZXQgdGhlIGZyZXF1ZW5jeSBk ZXZpYXRpb24uCitMb3dlciB2YWx1ZXMgdGhhbiBAY29kZXsxfSBhcmUgbW9yZSBmcmVxdWVuY3kg b3JpZW50ZWQsCit3aGlsZSBoaWdoZXIgdmFsdWVzIHRoYW4gQGNvZGV7MX0gYXJlIG1vcmUgdGlt ZSBvcmllbnRlZC4KK0FsbG93ZWQgcmFuZ2UgaXMgZnJvbSBAY29kZXswfSB0byBAY29kZXsxMH0u CitEZWZhdWx0IHZhbHVlIGlzIEBjb2RlezF9LgorCitAaXRlbSBwcHMKK1NldCB0aGUgbnVtYmVy IG9mIHBpeGVsIG91dHB1dCBwZXIgZWFjaCBzZWNvbmQgaW4gb25lIHJvdy4KK0FsbG93ZWQgcmFu Z2UgaXMgZnJvbSBAY29kZXsxfSB0byBAY29kZXsxMDI0fS4KK0RlZmF1bHQgdmFsdWUgaXMgQGNv ZGV7NjR9LgorCitAaXRlbSBtb2RlCitTZXQgdGhlIG91dHB1dCB2aXN1YWwgbW9kZS4gQWxsb3dl ZCB2YWx1ZXMgYXJlOgorCitAdGFibGUgQG9wdGlvbgorQGl0ZW0gbWFnbml0dWRlCitTaG93IG1h Z25pdHVkZS4KK0BpdGVtIHBoYXNlCitTaG93IG9ubHkgcGhhc2UuCitAaXRlbSBtYWdwaGFzZQor U2hvdyBjb21iaW5hdGlvbiBvZiBtYWduaXR1ZGUgYW5kIHBoYXNlLgorTWFnbml0dWRlIGlzIG1h cHBlZCB0byBicmlnaHRuZXNzIGFuZCBwaGFzZSB0byBjb2xvci4KK0BlbmQgdGFibGUKKworRGVm YXVsdCB2YWx1ZSBpcyBAY29kZXttYWduaXR1ZGV9LgorCitAZW5kIHRhYmxlCisKIEBzZWN0aW9u IHNob3dmcmVxcwogCiBDb252ZXJ0IGlucHV0IGF1ZGlvIHRvIHZpZGVvIG91dHB1dCByZXByZXNl bnRpbmcgdGhlIGF1ZGlvIHBvd2VyIHNwZWN0cnVtLgpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIv TWFrZWZpbGUgYi9saWJhdmZpbHRlci9NYWtlZmlsZQppbmRleCA2NmM3NTRmMWY1Li4yNzkxYjZh OTUwIDEwMDY0NAotLS0gYS9saWJhdmZpbHRlci9NYWtlZmlsZQorKysgYi9saWJhdmZpbHRlci9N YWtlZmlsZQpAQCAtNTk1LDYgKzU5NSw3IEBAIE9CSlMtJChDT05GSUdfQVBIQVNFTUVURVJfRklM VEVSKSAgICAgICAgICAgICs9IGF2Zl9hcGhhc2VtZXRlci5vCiBPQkpTLSQoQ09ORklHX0FWRUNU T1JTQ09QRV9GSUxURVIpICAgICAgICAgICArPSBhdmZfYXZlY3RvcnNjb3BlLm8KIE9CSlMtJChD T05GSUdfQ09OQ0FUX0ZJTFRFUikgICAgICAgICAgICAgICAgICs9IGF2Zl9jb25jYXQubwogT0JK Uy0kKENPTkZJR19TSE9XQ1FUX0ZJTFRFUikgICAgICAgICAgICAgICAgKz0gYXZmX3Nob3djcXQu byBsc3dzdXRpbHMubyBsYXZmdXRpbHMubworT0JKUy0kKENPTkZJR19TSE9XQ1dUX0ZJTFRFUikg ICAgICAgICAgICAgICAgKz0gYXZmX3Nob3djd3QubwogT0JKUy0kKENPTkZJR19TSE9XRlJFUVNf RklMVEVSKSAgICAgICAgICAgICAgKz0gYXZmX3Nob3dmcmVxcy5vCiBPQkpTLSQoQ09ORklHX1NI T1dTUEFUSUFMX0ZJTFRFUikgICAgICAgICAgICArPSBhdmZfc2hvd3NwYXRpYWwubwogT0JKUy0k KENPTkZJR19TSE9XU1BFQ1RSVU1fRklMVEVSKSAgICAgICAgICAgKz0gYXZmX3Nob3dzcGVjdHJ1 bS5vCmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMgYi9saWJhdmZpbHRlci9h bGxmaWx0ZXJzLmMKaW5kZXggNDkwOTczMjAwMi4uM2ZmMjBlNzZjZSAxMDA2NDQKLS0tIGEvbGli YXZmaWx0ZXIvYWxsZmlsdGVycy5jCisrKyBiL2xpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYwpAQCAt NTYwLDYgKzU2MCw3IEBAIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl9hdmZfYXBoYXNlbWV0ZXI7 CiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfYXZmX2F2ZWN0b3JzY29wZTsKIGV4dGVybiBjb25z dCBBVkZpbHRlciBmZl9hdmZfY29uY2F0OwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2F2Zl9z aG93Y3F0OworZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2F2Zl9zaG93Y3d0OwogZXh0ZXJuIGNv bnN0IEFWRmlsdGVyIGZmX2F2Zl9zaG93ZnJlcXM7CiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZf YXZmX3Nob3dzcGF0aWFsOwogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2F2Zl9zaG93c3BlY3Ry dW07CmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9hdmZfc2hvd2N3dC5jIGIvbGliYXZmaWx0ZXIv YXZmX3Nob3djd3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jMjRl ZmUzNjg2Ci0tLSAvZGV2L251bGwKKysrIGIvbGliYXZmaWx0ZXIvYXZmX3Nob3djd3QuYwpAQCAt MCwwICsxLDU1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMiBQYXVsIEIgTWFob2wKKyAq CisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg KiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg KiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs b29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1ZGUgPGZsb2F0Lmg+ CisjaW5jbHVkZSA8bWF0aC5oPgorCisjaW5jbHVkZSAibGliYXZ1dGlsL3R4LmgiCisjaW5jbHVk ZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2F2c3RyaW5nLmgi CisjaW5jbHVkZSAibGliYXZ1dGlsL2NoYW5uZWxfbGF5b3V0LmgiCisjaW5jbHVkZSAibGliYXZ1 dGlsL2NwdS5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIKKyNpbmNsdWRlICJsaWJhdnV0 aWwvcGFyc2V1dGlscy5oIgorI2luY2x1ZGUgImF1ZGlvLmgiCisjaW5jbHVkZSAidmlkZW8uaCIK KyNpbmNsdWRlICJhdmZpbHRlci5oIgorI2luY2x1ZGUgImZpbHRlcnMuaCIKKyNpbmNsdWRlICJp bnRlcm5hbC5oIgorCit0eXBlZGVmIHN0cnVjdCBTaG93Q1dUQ29udGV4dCB7CisgICAgY29uc3Qg QVZDbGFzcyAqY2xhc3M7CisgICAgaW50IHcsIGg7CisgICAgaW50IG1vZGU7CisgICAgY2hhciAq cmF0ZV9zdHI7CisgICAgQVZSYXRpb25hbCBhdXRvX2ZyYW1lX3JhdGU7CisgICAgQVZSYXRpb25h bCBmcmFtZV9yYXRlOworICAgIEFWVFhDb250ZXh0ICpmZnQ7CisgICAgQVZUWENvbnRleHQgKipp ZmZ0OworICAgIGF2X3R4X2ZuIHR4X2ZuOworICAgIGF2X3R4X2ZuIGl0eF9mbjsKKyAgICBpbnQg ZmZ0X2luX3NpemU7CisgICAgaW50IGZmdF9vdXRfc2l6ZTsKKyAgICBpbnQgaWZmdF9pbl9zaXpl OworICAgIGludCBpZmZ0X291dF9zaXplOworICAgIGludCB4cG9zOworICAgIGludCBpbl9uYl9z YW1wbGVzOworICAgIGludDY0X3QgaW5fcHRzOworICAgIGludDY0X3Qgb2xkX3B0czsKKyAgICBm bG9hdCAqZnJlcXVlbmN5X2JhbmQ7CisgICAgQVZGcmFtZSAqa2VybmVsOworICAgIEFWRnJhbWUg Km92ZXJsYXA7CisgICAgQVZGcmFtZSAqb3V0cGljcmVmOworICAgIEFWRnJhbWUgKmZmdF9pbjsK KyAgICBBVkZyYW1lICpmZnRfb3V0OworICAgIEFWRnJhbWUgKmlmZnRfaW47CisgICAgQVZGcmFt ZSAqaWZmdF9vdXQ7CisgICAgaW50IG5iX3RocmVhZHM7CisgICAgaW50IG5iX2NvbnN1bWVkX3Nh bXBsZXM7CisgICAgaW50IHBwczsKKyAgICBpbnQgaG9wX3NpemU7CisgICAgaW50IGlob3Bfc2l6 ZTsKKyAgICBpbnQgaWhvcF9pbmRleDsKKyAgICBpbnQgaW5wdXRfcGFkZGluZ19zaXplOworICAg IGludCBpbnB1dF9zYW1wbGVfY291bnQ7CisgICAgaW50IG91dHB1dF9wYWRkaW5nX3NpemU7Cisg ICAgaW50IG91dHB1dF9zYW1wbGVfY291bnQ7CisgICAgaW50IGZyZXF1ZW5jeV9iYW5kX2NvdW50 OworICAgIGZsb2F0IGxvZ2FyaXRobWljX2Jhc2lzOworICAgIGludCBmcmVxdWVuY3lfc2NhbGU7 CisgICAgZmxvYXQgbWluaW11bV9mcmVxdWVuY3k7CisgICAgZmxvYXQgbWF4aW11bV9mcmVxdWVu Y3k7CisgICAgZmxvYXQgZGV2aWF0aW9uOworfSBTaG93Q1dUQ29udGV4dDsKKworI2RlZmluZSBP RkZTRVQoeCkgb2Zmc2V0b2YoU2hvd0NXVENvbnRleHQsIHgpCisjZGVmaW5lIEZMQUdTIEFWX09Q VF9GTEFHX0ZJTFRFUklOR19QQVJBTXxBVl9PUFRfRkxBR19WSURFT19QQVJBTQorCitzdGF0aWMg Y29uc3QgQVZPcHRpb24gc2hvd2N3dF9vcHRpb25zW10gPSB7CisgICAgeyAic2l6ZSIsICJzZXQg dmlkZW8gc2l6ZSIsIE9GRlNFVCh3KSwgQVZfT1BUX1RZUEVfSU1BR0VfU0laRSwgey5zdHIgPSAi NjQweDUxMiJ9LCAwLCAwLCBGTEFHUyB9LAorICAgIHsgInMiLCAgICAic2V0IHZpZGVvIHNpemUi LCBPRkZTRVQodyksIEFWX09QVF9UWVBFX0lNQUdFX1NJWkUsIHsuc3RyID0gIjY0MHg1MTIifSwg MCwgMCwgRkxBR1MgfSwKKyAgICB7ICJyYXRlIiwgInNldCB2aWRlbyByYXRlIiwgIE9GRlNFVChy YXRlX3N0ciksIEFWX09QVF9UWVBFX1NUUklORywgey5zdHIgPSAiMjUifSwgMCwgMCwgRkxBR1Mg fSwKKyAgICB7ICJyIiwgICAgInNldCB2aWRlbyByYXRlIiwgIE9GRlNFVChyYXRlX3N0ciksIEFW X09QVF9UWVBFX1NUUklORywgey5zdHIgPSAiMjUifSwgMCwgMCwgRkxBR1MgfSwKKyAgICB7ICJz Y2FsZSIsICJzZXQgZnJlcXVlbmN5IHNjYWxlIiwgT0ZGU0VUKGZyZXF1ZW5jeV9zY2FsZSksIEFW X09QVF9UWVBFX0lOVCwgIHsuaTY0PTB9LCAwLCAxLCBGTEFHUywgInNjYWxlIiB9LAorICAgIHsg ICJsaW5lYXIiLCAgImxpbmVhciIsICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg QVZfT1BUX1RZUEVfQ09OU1Qsey5pNjQ9MH0sIDAsIDAsIEZMQUdTLCAic2NhbGUiIH0sCisgICAg eyAgImxvZyIsICAgICAibG9nYXJpdGhtaWMiLCAgICAgIDAsICAgICAgICAgICAgICAgICAgICAg ICBBVl9PUFRfVFlQRV9DT05TVCx7Lmk2ND0xfSwgMCwgMCwgRkxBR1MsICJzY2FsZSIgfSwKKyAg ICB7ICJtaW4iLCAgInNldCBtaW5pbXVtIGZyZXF1ZW5jeSIsIE9GRlNFVChtaW5pbXVtX2ZyZXF1 ZW5jeSksIEFWX09QVF9UWVBFX0ZMT0FULCB7LmRibCA9IDIwLn0sIDEsIDIwMDAsIEZMQUdTIH0s CisgICAgeyAibWF4IiwgICJzZXQgbWF4aW11bSBmcmVxdWVuY3kiLCBPRkZTRVQobWF4aW11bV9m cmVxdWVuY3kpLCBBVl9PUFRfVFlQRV9GTE9BVCwgey5kYmwgPSAyMDAwMC59LCAwLCAxOTIwMDAs IEZMQUdTIH0sCisgICAgeyAibG9nYiIsICJzZXQgbG9nYXJpdGhtaWMgYmFzaXMiLCBPRkZTRVQo bG9nYXJpdGhtaWNfYmFzaXMpLCBBVl9PUFRfVFlQRV9GTE9BVCwgey5kYmwgPSAwLjAwMDF9LCAw LCAxLCBGTEFHUyB9LAorICAgIHsgImRldmlhdGlvbiIsICJzZXQgZnJlcXVlbmN5IGRldmlhdGlv biIsIE9GRlNFVChkZXZpYXRpb24pLCBBVl9PUFRfVFlQRV9GTE9BVCwgey5kYmwgPSAxLn0sIDAs IDEwLCBGTEFHUyB9LAorICAgIHsgInBwcyIsICAic2V0IHBpeGVscyBwZXIgc2Vjb25kIiwgT0ZG U0VUKHBwcyksIEFWX09QVF9UWVBFX0lOVCwgey5pNjQgPSA2NH0sIDEsIDEwMjQsIEZMQUdTIH0s CisgICAgeyAibW9kZSIsICJzZXQgb3V0cHV0IG1vZGUiLCBPRkZTRVQobW9kZSksIEFWX09QVF9U WVBFX0lOVCwgIHsuaTY0PTB9LCAwLCAyLCBGTEFHUywgIm1vZGUiIH0sCisgICAgeyAgIm1hZ25p dHVkZSIsICJtYWduaXR1ZGUiLCAgICAgICAwLCBBVl9PUFRfVFlQRV9DT05TVCx7Lmk2ND0wfSwg MCwgMCwgRkxBR1MsICJtb2RlIiB9LAorICAgIHsgICJwaGFzZSIsICAgICAicGhhc2UiLCAgICAg ICAgICAgMCwgQVZfT1BUX1RZUEVfQ09OU1Qsey5pNjQ9MX0sIDAsIDAsIEZMQUdTLCAibW9kZSIg fSwKKyAgICB7ICAibWFncGhhc2UiLCAgIm1hZ25pdHVkZStwaGFzZSIsIDAsIEFWX09QVF9UWVBF X0NPTlNULHsuaTY0PTJ9LCAwLCAwLCBGTEFHUywgIm1vZGUiIH0sCisgICAgeyBOVUxMIH0KK307 CisKK0FWRklMVEVSX0RFRklORV9DTEFTUyhzaG93Y3d0KTsKKworc3RhdGljIGF2X2NvbGQgdm9p ZCB1bmluaXQoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCit7CisgICAgU2hvd0NXVENvbnRleHQgKnMg PSBjdHgtPnByaXY7CisKKyAgICBhdl9mcmVlcCgmcy0+ZnJlcXVlbmN5X2JhbmQpOworICAgIGF2 X2ZyYW1lX2ZyZWUoJnMtPmtlcm5lbCk7CisgICAgYXZfZnJhbWVfZnJlZSgmcy0+b3ZlcmxhcCk7 CisgICAgYXZfZnJhbWVfZnJlZSgmcy0+b3V0cGljcmVmKTsKKyAgICBhdl9mcmFtZV9mcmVlKCZz LT5mZnRfaW4pOworICAgIGF2X2ZyYW1lX2ZyZWUoJnMtPmZmdF9vdXQpOworICAgIGF2X2ZyYW1l X2ZyZWUoJnMtPmlmZnRfaW4pOworICAgIGF2X2ZyYW1lX2ZyZWUoJnMtPmlmZnRfb3V0KTsKKyAg ICBhdl90eF91bmluaXQoJnMtPmZmdCk7CisKKyAgICBpZiAocy0+aWZmdCkgeworICAgICAgICBm b3IgKGludCBuID0gMDsgbiA8IHMtPm5iX3RocmVhZHM7IG4rKykKKyAgICAgICAgICAgIGF2X3R4 X3VuaW5pdCgmcy0+aWZmdFtuXSk7CisgICAgfQorfQorCitzdGF0aWMgaW50IHF1ZXJ5X2Zvcm1h dHMoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCit7CisgICAgQVZGaWx0ZXJGb3JtYXRzICpmb3JtYXRz ID0gTlVMTDsKKyAgICBBVkZpbHRlckNoYW5uZWxMYXlvdXRzICpsYXlvdXRzID0gTlVMTDsKKyAg ICBBVkZpbHRlckxpbmsgKmlubGluayA9IGN0eC0+aW5wdXRzWzBdOworICAgIEFWRmlsdGVyTGlu ayAqb3V0bGluayA9IGN0eC0+b3V0cHV0c1swXTsKKyAgICBzdGF0aWMgY29uc3QgZW51bSBBVlNh bXBsZUZvcm1hdCBzYW1wbGVfZm10c1tdID0geyBBVl9TQU1QTEVfRk1UX0ZMVFAsIEFWX1NBTVBM RV9GTVRfTk9ORSB9OworICAgIHN0YXRpYyBjb25zdCBlbnVtIEFWUGl4ZWxGb3JtYXQgcGl4X2Zt dHNbXSA9IHsgQVZfUElYX0ZNVF9ZVVY0NDRQLCBBVl9QSVhfRk1UX1lVVko0NDRQLCBBVl9QSVhf Rk1UX1lVVkE0NDRQLCBBVl9QSVhfRk1UX05PTkUgfTsKKyAgICBpbnQgcmV0OworCisgICAgZm9y bWF0cyA9IGZmX21ha2VfZm9ybWF0X2xpc3Qoc2FtcGxlX2ZtdHMpOworICAgIGlmICgocmV0ID0g ZmZfZm9ybWF0c19yZWYoZm9ybWF0cywgJmlubGluay0+b3V0Y2ZnLmZvcm1hdHMpKSA8IDApCisg ICAgICAgIHJldHVybiByZXQ7CisKKyAgICBsYXlvdXRzID0gZmZfYWxsX2NoYW5uZWxfY291bnRz KCk7CisgICAgaWYgKChyZXQgPSBmZl9jaGFubmVsX2xheW91dHNfcmVmKGxheW91dHMsICZpbmxp bmstPm91dGNmZy5jaGFubmVsX2xheW91dHMpKSA8IDApCisgICAgICAgIHJldHVybiByZXQ7CisK KyAgICBmb3JtYXRzID0gZmZfYWxsX3NhbXBsZXJhdGVzKCk7CisgICAgaWYgKChyZXQgPSBmZl9m b3JtYXRzX3JlZihmb3JtYXRzLCAmaW5saW5rLT5vdXRjZmcuc2FtcGxlcmF0ZXMpKSA8IDApCisg ICAgICAgIHJldHVybiByZXQ7CisKKyAgICBmb3JtYXRzID0gZmZfbWFrZV9mb3JtYXRfbGlzdChw aXhfZm10cyk7CisgICAgaWYgKChyZXQgPSBmZl9mb3JtYXRzX3JlZihmb3JtYXRzLCAmb3V0bGlu ay0+aW5jZmcuZm9ybWF0cykpIDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIHJldHVy biAwOworfQorCitzdGF0aWMgdm9pZCBmcmVxdWVuY3lfYmFuZChmbG9hdCAqZnJlcXVlbmN5X2Jh bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJlcXVlbmN5X2JhbmRfY291bnQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBmcmVxdWVuY3lfcmFuZ2UsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBmcmVxdWVuY3lfb2Zmc2V0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGZyZXF1ZW5jeV9zY2FsZSwgZmxvYXQgZGV2aWF0aW9uKQor eworICAgIGRldmlhdGlvbiAqPSBzcXJ0ZigxLmYgLyAoNC5mICogTV9QSSkpOyAvLyBIZWlzZW5i ZXJnIEdhYm9yIExpbWl0CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBmcmVxdWVuY3lfYmFuZF9j b3VudDsgeSsrKSB7CisgICAgICAgIGZsb2F0IGZyZXF1ZW5jeSA9IGZyZXF1ZW5jeV9yYW5nZSAq ICgxLmYgLSAoZmxvYXQpeSAvIGZyZXF1ZW5jeV9iYW5kX2NvdW50KSArIGZyZXF1ZW5jeV9vZmZz ZXQ7CisgICAgICAgIGZsb2F0IGZyZXF1ZW5jeV9kZXJpdmF0aXZlID0gZnJlcXVlbmN5X3Jhbmdl IC8gZnJlcXVlbmN5X2JhbmRfY291bnQ7CisKKyAgICAgICAgaWYgKGZyZXF1ZW5jeV9zY2FsZSA+ IDApIHsKKyAgICAgICAgICAgIGZyZXF1ZW5jeSA9IHBvd2YoMi5mLCBmcmVxdWVuY3kpOworICAg ICAgICAgICAgZnJlcXVlbmN5X2Rlcml2YXRpdmUgKj0gbG9nZigyLmYpICogZnJlcXVlbmN5Owor ICAgICAgICB9CisKKyAgICAgICAgZnJlcXVlbmN5X2JhbmRbeSoyICBdID0gZnJlcXVlbmN5Owor ICAgICAgICBmcmVxdWVuY3lfYmFuZFt5KjIrMV0gPSBmcmVxdWVuY3lfZGVyaXZhdGl2ZSAqIGRl dmlhdGlvbjsKKyAgICB9Cit9CisKKyNkZWZpbmUgY211bChvcGVyYXRvciwgaW5kZXgpIHsgICAg ICAgICAgIFwKKyAgICBjb25zdCBmbG9hdCBmZiA9IGtlcm5lbFtpbmRleF07ICAgICAgIFwKKyAg ICBpc3JjW25dLnJlIG9wZXJhdG9yIGZmKmRzdFtpbmRleF0ucmU7IFwKKyAgICBpc3JjW25dLmlt IG9wZXJhdG9yIGZmKmRzdFtpbmRleF0uaW07IFwKK30KKworc3RhdGljIGZsb2F0IHJlbWFwX2xv ZyhmbG9hdCB2YWx1ZSwgZmxvYXQgbG9nX2ZhY3RvcikKK3sKKyAgICBmbG9hdCBzaWduID0gKDAg PCB2YWx1ZSkgLSAodmFsdWUgPCAwKTsKKworICAgIHZhbHVlID0gbG9nZih2YWx1ZSAqIHNpZ24p ICogbG9nX2ZhY3RvcjsKKworICAgIHJldHVybiAxLmYgLSBhdl9jbGlwZih2YWx1ZSwgMC5mLCAx LmYpOworfQorCitzdGF0aWMgaW50IHJ1bl9jaGFubmVsX2N3dF9wcmVwYXJlKEFWRmlsdGVyQ29u dGV4dCAqY3R4LCB2b2lkICphcmcsIGludCBjaCkKK3sKKyAgICBTaG93Q1dUQ29udGV4dCAqcyA9 IGN0eC0+cHJpdjsKKyAgICBBVkZyYW1lICpmaW4gPSBhcmc7CisgICAgY29uc3QgZmxvYXQgKmlu cHV0ID0gKGNvbnN0IGZsb2F0ICopZmluLT5leHRlbmRlZF9kYXRhW2NoXTsKKyAgICBmbG9hdCAq b3ZlcmxhcCA9IChmbG9hdCAqKXMtPm92ZXJsYXAtPmV4dGVuZGVkX2RhdGFbY2hdOworICAgIEFW Q29tcGxleEZsb2F0ICpzcmMgPSAoQVZDb21wbGV4RmxvYXQgKilzLT5mZnRfaW4tPmV4dGVuZGVk X2RhdGFbY2hdOworICAgIEFWQ29tcGxleEZsb2F0ICpkc3QgPSAoQVZDb21wbGV4RmxvYXQgKilz LT5mZnRfb3V0LT5leHRlbmRlZF9kYXRhW2NoXTsKKyAgICBjb25zdCBpbnQgbmJfY29uc3VtZWRf c2FtcGxlcyA9IHMtPm5iX2NvbnN1bWVkX3NhbXBsZXM7CisgICAgY29uc3QgaW50IGlucHV0X3Bh ZGRpbmdfc2l6ZSA9IHMtPmlucHV0X3BhZGRpbmdfc2l6ZTsKKyAgICBjb25zdCBpbnQgaG9wX3Np emUgPSBzLT5ob3Bfc2l6ZTsKKyAgICBjb25zdCBpbnQgb2Zmc2V0ID0gaW5wdXRfcGFkZGluZ19z aXplIC0gaG9wX3NpemU7CisKKyAgICBtZW1tb3ZlKG92ZXJsYXAsICZvdmVybGFwW2hvcF9zaXpl XSwgb2Zmc2V0ICogc2l6ZW9mKGZsb2F0KSk7CisgICAgbWVtY3B5KCZvdmVybGFwW29mZnNldF0s IGlucHV0LAorICAgICAgICAgICBmaW4tPm5iX3NhbXBsZXMgKiBzaXplb2YoZmxvYXQpKTsKKyAg ICBtZW1zZXQoJm92ZXJsYXBbb2Zmc2V0ICsgZmluLT5uYl9zYW1wbGVzXSwgMCwKKyAgICAgICAg ICAgKGhvcF9zaXplIC0gZmluLT5uYl9zYW1wbGVzKSAqIHNpemVvZihmbG9hdCkpOworCisgICAg Zm9yIChpbnQgbiA9IDA7IG4gPCBuYl9jb25zdW1lZF9zYW1wbGVzOyBuKyspIHsKKyAgICAgICAg c3JjW25dLnJlID0gb3ZlcmxhcFtuXTsKKyAgICAgICAgc3JjW25dLmltID0gMC5mOworICAgIH0K KworICAgIHMtPnR4X2ZuKHMtPmZmdCwgZHN0LCBzcmMsIHNpemVvZigqc3JjKSk7CisKKyAgICBy ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBydW5fY2hhbm5lbF9jd3QoQVZGaWx0ZXJDb250ZXh0 ICpjdHgsIHZvaWQgKmFyZywgaW50IGpvYm5yLCBpbnQgbmJfam9icykKK3sKKyAgICBTaG93Q1dU Q29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKyAgICBjb25zdCBpbnQgY2ggPSAqKGludCAqKWFyZzsK KyAgICBwdHJkaWZmX3QgbGluZXNpemUgPSBzLT5vdXRwaWNyZWYtPmxpbmVzaXplWzBdOworICAg IEFWQ29tcGxleEZsb2F0ICpkc3QgPSAoQVZDb21wbGV4RmxvYXQgKilzLT5mZnRfb3V0LT5leHRl bmRlZF9kYXRhW2NoXTsKKyAgICBjb25zdCBpbnQgb3V0cHV0X3NhbXBsZV9jb3VudCA9IHMtPm91 dHB1dF9zYW1wbGVfY291bnQ7CisgICAgY29uc3QgZmxvYXQgbG9nX2ZhY3RvciA9IDEuZi9sb2dm KHMtPmxvZ2FyaXRobWljX2Jhc2lzKTsKKyAgICBjb25zdCBpbnQgaW5wdXRfcGFkZGluZ19zaXpl ID0gcy0+aW5wdXRfcGFkZGluZ19zaXplOworICAgIGNvbnN0IGludCByZXN0ID0gaW5wdXRfcGFk ZGluZ19zaXplICUgb3V0cHV0X3NhbXBsZV9jb3VudDsKKyAgICBjb25zdCBpbnQgaWhvcF9zaXpl ID0gcy0+aWhvcF9zaXplOworICAgIGNvbnN0IGludCBpb2Zmc2V0ID0gKHMtPm91dHB1dF9wYWRk aW5nX3NpemUgLSBpaG9wX3NpemUpID4+IDE7CisgICAgY29uc3QgaW50IGggPSBzLT5oOworICAg IGNvbnN0IGludCBzdGFydCA9IChoICogam9ibnIpIC8gbmJfam9iczsKKyAgICBjb25zdCBpbnQg ZW5kID0gKGggKiAoam9ibnIrMSkpIC8gbmJfam9iczsKKyAgICBjb25zdCBpbnQgbW9kZSA9IHMt Pm1vZGU7CisgICAgY29uc3QgaW50IGlob3BfaW5kZXggPSBzLT5paG9wX2luZGV4OworICAgIGNv bnN0IGludCBpID0gaWhvcF9pbmRleCArIGlvZmZzZXQ7CisKKyAgICBmb3IgKGludCB5ID0gc3Rh cnQ7IHkgPCBlbmQ7IHkrKykgeworICAgICAgICBBVkNvbXBsZXhGbG9hdCAqaXNyYyA9IChBVkNv bXBsZXhGbG9hdCAqKXMtPmlmZnRfaW4tPmV4dGVuZGVkX2RhdGFbY2ggKiBoICsgeV07CisgICAg ICAgIEFWQ29tcGxleEZsb2F0ICppZHN0ID0gKEFWQ29tcGxleEZsb2F0ICopcy0+aWZmdF9vdXQt PmV4dGVuZGVkX2RhdGFbY2ggKiBoICsgeV07CisgICAgICAgIGNvbnN0IGZsb2F0ICprZXJuZWwg PSAoY29uc3QgZmxvYXQgKilzLT5rZXJuZWwtPmV4dGVuZGVkX2RhdGFbeV07CisgICAgICAgIHVp bnQ4X3QgKmRzdFkgPSBzLT5vdXRwaWNyZWYtPmRhdGFbMF0gKyB5ICogbGluZXNpemU7CisgICAg ICAgIHVpbnQ4X3QgKmRzdFUgPSBzLT5vdXRwaWNyZWYtPmRhdGFbMV0gKyB5ICogbGluZXNpemU7 CisgICAgICAgIHVpbnQ4X3QgKmRzdFYgPSBzLT5vdXRwaWNyZWYtPmRhdGFbMl0gKyB5ICogbGlu ZXNpemU7CisgICAgICAgIGludCB4ID0gcy0+eHBvczsKKyAgICAgICAgZmxvYXQgWSwgVSwgVjsK KworICAgICAgICBpZiAoaWhvcF9pbmRleCA+IDApCisgICAgICAgICAgICBnb3RvIHB1dF9waXhl bHM7CisKKyAgICAgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBvdXRwdXRfc2FtcGxlX2NvdW50OyBu KyspCisgICAgICAgICAgICBjbXVsKD0sIG4pOworCisgICAgICAgIGlmIChvdXRwdXRfc2FtcGxl X2NvdW50IDwgaW5wdXRfcGFkZGluZ19zaXplKSB7CisgICAgICAgICAgICBjb25zdCBpbnQgY3V0 X2luZGV4ID0gaW5wdXRfcGFkZGluZ19zaXplIC0gcmVzdDsKKworICAgICAgICAgICAgZm9yIChp bnQgY2h1bmtfaW5kZXggPSBvdXRwdXRfc2FtcGxlX2NvdW50OyBjaHVua19pbmRleCA8IGN1dF9p bmRleDsgY2h1bmtfaW5kZXggKz0gb3V0cHV0X3NhbXBsZV9jb3VudCkKKyAgICAgICAgICAgICAg ICBmb3IgKGludCBuID0gMDsgbiA8IG91dHB1dF9zYW1wbGVfY291bnQ7IG4rKykKKyAgICAgICAg ICAgICAgICAgICAgY211bCgrPSwgY2h1bmtfaW5kZXggKyBuKTsKKyAgICAgICAgICAgIGZvciAo aW50IG4gPSAwOyBuIDwgcmVzdDsgbisrKQorICAgICAgICAgICAgICAgIGNtdWwoKz0sIGN1dF9p bmRleCArIG4pOworICAgICAgICB9CisKKyAgICAgICAgcy0+aXR4X2ZuKHMtPmlmZnRbam9ibnJd LCBpZHN0LCBpc3JjLCBzaXplb2YoKmlzcmMpKTsKKworcHV0X3BpeGVsczoKKyAgICAgICAgc3dp dGNoIChtb2RlKSB7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIFkgPSBoeXBvdGYoaWRz dFtpXS5yZSwgaWRzdFtpXS5pbSk7CisgICAgICAgICAgICBZID0gcmVtYXBfbG9nKFksIGxvZ19m YWN0b3IpOworICAgICAgICAgICAgVSA9IGF0YW4yZihpZHN0W2ldLmltLCBpZHN0W2ldLnJlKTsK KyAgICAgICAgICAgIFUgPSAwLjVmICsgMC41ZiAqIFUgKiBZIC8gTV9QSTsKKyAgICAgICAgICAg IFYgPSAxLmYgLSBVOworCisgICAgICAgICAgICBkc3RZW3hdID0gYXZfY2xpcF91aW50OChscmlu dGYoWSAqIDI1NS5mKSk7CisgICAgICAgICAgICBkc3RVW3hdID0gYXZfY2xpcF91aW50OChscmlu dGYoVSAqIDI1NS5mKSk7CisgICAgICAgICAgICBkc3RWW3hdID0gYXZfY2xpcF91aW50OChscmlu dGYoViAqIDI1NS5mKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOgorICAg ICAgICAgICAgWSA9IGF0YW4yZihpZHN0W2ldLmltLCBpZHN0W2ldLnJlKTsKKyAgICAgICAgICAg IFkgPSAwLjVmICsgMC41ZiAqIFkgLyBNX1BJOworCisgICAgICAgICAgICBkc3RZW3hdID0gYXZf Y2xpcF91aW50OChscmludGYoWSAqIDI1NS5mKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgY2FzZSAwOgorICAgICAgICAgICAgWSA9IGh5cG90ZihpZHN0W2ldLnJlLCBpZHN0W2ldLmlt KTsKKyAgICAgICAgICAgIFkgPSByZW1hcF9sb2coWSwgbG9nX2ZhY3Rvcik7CisKKyAgICAgICAg ICAgIGRzdFlbeF0gPSBhdl9jbGlwX3VpbnQ4KGxyaW50ZihZICogMjU1LmYpKTsKKyAgICAgICAg ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp YyB2b2lkIGNvbXB1dGVfa2VybmVsKEFWRmlsdGVyQ29udGV4dCAqY3R4KQoreworICAgIFNob3dD V1RDb250ZXh0ICpzID0gY3R4LT5wcml2OworICAgIGNvbnN0IGludCBzaXplID0gcy0+aW5wdXRf c2FtcGxlX2NvdW50OworICAgIGNvbnN0IGZsb2F0IHNjYWxlX2ZhY3RvciA9IDEuZi8oZmxvYXQp c2l6ZTsKKyAgICBjb25zdCBpbnQgb3V0cHV0X3NhbXBsZV9jb3VudCA9IHMtPm91dHB1dF9zYW1w bGVfY291bnQ7CisgICAgY29uc3QgaW50IGZzaXplID0gcy0+ZnJlcXVlbmN5X2JhbmRfY291bnQ7 CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGZzaXplOyB5KyspIHsKKyAgICAgICAgZmxvYXQg Kmtlcm5lbCA9IChmbG9hdCAqKXMtPmtlcm5lbC0+ZXh0ZW5kZWRfZGF0YVt5XTsKKyAgICAgICAg ZmxvYXQgZnJlcXVlbmN5ID0gcy0+ZnJlcXVlbmN5X2JhbmRbeSoyXTsKKyAgICAgICAgZmxvYXQg ZGV2aWF0aW9uID0gMS5mIC8gKHMtPmZyZXF1ZW5jeV9iYW5kW3kqMisxXSAqCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfc2FtcGxlX2NvdW50KTsKKworICAgICAgICBm b3IgKGludCBuID0gMDsgbiA8IHNpemU7IG4rKykgeworICAgICAgICAgICAgZmxvYXQgZmYsIGYg PSBmYWJzZihuLWZyZXF1ZW5jeSk7CisKKyAgICAgICAgICAgIGYgPSBzaXplIC0gZmFic2YoZiAt IHNpemUpOworICAgICAgICAgICAgZmYgPSBleHBmKC1mKmYqZGV2aWF0aW9uKSAqIHNjYWxlX2Zh Y3RvcjsKKyAgICAgICAgICAgIGtlcm5lbFtuXSA9IGZmOworICAgICAgICB9CisgICAgfQorfQor CitzdGF0aWMgaW50IGNvbmZpZ19vdXRwdXQoQVZGaWx0ZXJMaW5rICpvdXRsaW5rKQoreworICAg IEFWRmlsdGVyQ29udGV4dCAqY3R4ID0gb3V0bGluay0+c3JjOworICAgIEFWRmlsdGVyTGluayAq aW5saW5rID0gY3R4LT5pbnB1dHNbMF07CisgICAgU2hvd0NXVENvbnRleHQgKnMgPSBjdHgtPnBy aXY7CisgICAgZmxvYXQgbWF4aW11bV9mcmVxdWVuY3kgPSBmbWluZihzLT5tYXhpbXVtX2ZyZXF1 ZW5jeSwgaW5saW5rLT5zYW1wbGVfcmF0ZSAqIDAuNWYpOworICAgIGZsb2F0IG1pbmltdW1fZnJl cXVlbmN5ID0gcy0+bWluaW11bV9mcmVxdWVuY3k7CisgICAgZmxvYXQgc2NhbGUgPSAxLmY7Cisg ICAgaW50IHJldDsKKworICAgIHVuaW5pdChjdHgpOworCisgICAgcy0+bmJfdGhyZWFkcyA9IEZG TUlOKHMtPmgsIGZmX2ZpbHRlcl9nZXRfbmJfdGhyZWFkcyhjdHgpKTsKKyAgICBzLT5vbGRfcHRz ID0gQVZfTk9QVFNfVkFMVUU7CisgICAgcy0+bmJfY29uc3VtZWRfc2FtcGxlcyA9IDY1NTM2Owor ICAgIHMtPmZyZXF1ZW5jeV9iYW5kX2NvdW50ID0gcy0+aDsKKyAgICBzLT5pbnB1dF9zYW1wbGVf Y291bnQgPSBzLT5uYl9jb25zdW1lZF9zYW1wbGVzOworICAgIHMtPmhvcF9zaXplID0gcy0+bmJf Y29uc3VtZWRfc2FtcGxlcyA+PiAxOworICAgIHMtPmlucHV0X3BhZGRpbmdfc2l6ZSA9IDY1NTM2 OworICAgIHMtPm91dHB1dF9wYWRkaW5nX3NpemUgPSBGRk1BWCgxNixzLT5pbnB1dF9wYWRkaW5n X3NpemUgKiBzLT5wcHMgLyBpbmxpbmstPnNhbXBsZV9yYXRlKTsKKworICAgIG91dGxpbmstPncg PSBzLT53OworICAgIG91dGxpbmstPmggPSBzLT5oOworICAgIG91dGxpbmstPnNhbXBsZV9hc3Bl Y3RfcmF0aW8gPSAoQVZSYXRpb25hbCl7MSwxfTsKKworICAgIHMtPmZmdF9pbl9zaXplICA9IEZG QUxJR04ocy0+aW5wdXRfcGFkZGluZ19zaXplLCBhdl9jcHVfbWF4X2FsaWduKCkpOworICAgIHMt PmZmdF9vdXRfc2l6ZSA9IEZGQUxJR04ocy0+aW5wdXRfcGFkZGluZ19zaXplLCBhdl9jcHVfbWF4 X2FsaWduKCkpOworCisgICAgcy0+b3V0cHV0X3NhbXBsZV9jb3VudCA9IHMtPm91dHB1dF9wYWRk aW5nX3NpemU7CisKKyAgICBzLT5pZmZ0X2luX3NpemUgPSBGRkFMSUdOKHMtPm91dHB1dF9wYWRk aW5nX3NpemUsIGF2X2NwdV9tYXhfYWxpZ24oKSk7CisgICAgcy0+aWZmdF9vdXRfc2l6ZSA9IEZG QUxJR04ocy0+b3V0cHV0X3BhZGRpbmdfc2l6ZSwgYXZfY3B1X21heF9hbGlnbigpKTsKKyAgICBz LT5paG9wX3NpemUgPSBzLT5vdXRwdXRfcGFkZGluZ19zaXplID4+IDE7CisKKyAgICByZXQgPSBh dl90eF9pbml0KCZzLT5mZnQsICZzLT50eF9mbiwgQVZfVFhfRkxPQVRfRkZULCAwLCBzLT5pbnB1 dF9wYWRkaW5nX3NpemUsICZzY2FsZSwgMCk7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJl dHVybiByZXQ7CisKKyAgICBzLT5pZmZ0ID0gYXZfY2FsbG9jKHMtPm5iX3RocmVhZHMsIHNpemVv Zigqcy0+aWZmdCkpOworICAgIGlmICghcy0+aWZmdCkKKyAgICAgICAgcmV0dXJuIEFWRVJST1Io RU5PTUVNKTsKKworICAgIGZvciAoaW50IG4gPSAwOyBuIDwgcy0+bmJfdGhyZWFkczsgbisrKSB7 CisgICAgICAgIHJldCA9IGF2X3R4X2luaXQoJnMtPmlmZnRbbl0sICZzLT5pdHhfZm4sIEFWX1RY X0ZMT0FUX0ZGVCwgMSwgcy0+b3V0cHV0X3BhZGRpbmdfc2l6ZSwgJnNjYWxlLCAwKTsKKyAgICAg ICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIHMt PmZyZXF1ZW5jeV9iYW5kID0gYXZfY2FsbG9jKHMtPmZyZXF1ZW5jeV9iYW5kX2NvdW50LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZigqcy0+ZnJlcXVlbmN5X2JhbmQp ICogMik7CisgICAgcy0+b3V0cGljcmVmID0gZmZfZ2V0X3ZpZGVvX2J1ZmZlcihvdXRsaW5rLCBv dXRsaW5rLT53LCBvdXRsaW5rLT5oKTsKKyAgICBzLT5mZnRfaW4gPSBmZl9nZXRfYXVkaW9fYnVm ZmVyKGlubGluaywgcy0+ZmZ0X2luX3NpemUgKiAyKTsKKyAgICBzLT5mZnRfb3V0ID0gZmZfZ2V0 X2F1ZGlvX2J1ZmZlcihpbmxpbmssIHMtPmZmdF9vdXRfc2l6ZSAqIDIpOworICAgIHMtPm92ZXJs YXAgPSBmZl9nZXRfYXVkaW9fYnVmZmVyKGlubGluaywgcy0+aW5wdXRfcGFkZGluZ19zaXplKTsK KyAgICBzLT5pZmZ0X2luID0gYXZfZnJhbWVfYWxsb2MoKTsKKyAgICBzLT5pZmZ0X291dCA9IGF2 X2ZyYW1lX2FsbG9jKCk7CisgICAgcy0+a2VybmVsID0gYXZfZnJhbWVfYWxsb2MoKTsKKyAgICBp ZiAoIXMtPm91dHBpY3JlZiB8fCAhcy0+ZmZ0X2luIHx8ICFzLT5mZnRfb3V0IHx8CisgICAgICAg ICFzLT5pZmZ0X2luIHx8ICFzLT5pZmZ0X291dCB8fAorICAgICAgICAhcy0+ZnJlcXVlbmN5X2Jh bmQgfHwgIXMtPmtlcm5lbCB8fCAhcy0+b3ZlcmxhcCkKKyAgICAgICAgcmV0dXJuIEFWRVJST1Io RU5PTUVNKTsKKworICAgIHMtPmlmZnRfaW4tPmZvcm1hdCAgICAgPSBpbmxpbmstPmZvcm1hdDsK KyAgICBzLT5pZmZ0X2luLT5uYl9zYW1wbGVzID0gcy0+aWZmdF9pbl9zaXplICogMjsKKyAgICBz LT5pZmZ0X2luLT5jaF9sYXlvdXQubmJfY2hhbm5lbHMgPSBzLT5oOworICAgIHJldCA9IGF2X2Zy YW1lX2dldF9idWZmZXIocy0+aWZmdF9pbiwgMCk7CisgICAgaWYgKHJldCA8IDApCisgICAgICAg IHJldHVybiByZXQ7CisKKyAgICBzLT5pZmZ0X291dC0+Zm9ybWF0ICAgICA9IGlubGluay0+Zm9y bWF0OworICAgIHMtPmlmZnRfb3V0LT5uYl9zYW1wbGVzID0gcy0+aWZmdF9vdXRfc2l6ZSAqIDI7 CisgICAgcy0+aWZmdF9vdXQtPmNoX2xheW91dC5uYl9jaGFubmVscyA9IHMtPmg7CisgICAgcmV0 ID0gYXZfZnJhbWVfZ2V0X2J1ZmZlcihzLT5pZmZ0X291dCwgMCk7CisgICAgaWYgKHJldCA8IDAp CisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICBzLT5rZXJuZWwtPmZvcm1hdCAgICAgPSBpbmxp bmstPmZvcm1hdDsKKyAgICBzLT5rZXJuZWwtPm5iX3NhbXBsZXMgPSBzLT5pbnB1dF9wYWRkaW5n X3NpemU7CisgICAgcy0+a2VybmVsLT5jaF9sYXlvdXQubmJfY2hhbm5lbHMgPSBzLT5mcmVxdWVu Y3lfYmFuZF9jb3VudDsKKyAgICByZXQgPSBhdl9mcmFtZV9nZXRfYnVmZmVyKHMtPmtlcm5lbCwg MCk7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICBzLT5vdXRw aWNyZWYtPnNhbXBsZV9hc3BlY3RfcmF0aW8gPSAoQVZSYXRpb25hbCl7MSwxfTsKKworICAgIGZv ciAoaW50IHkgPSAwOyB5IDwgb3V0bGluay0+aDsgeSsrKSB7CisgICAgICAgIG1lbXNldChzLT5v dXRwaWNyZWYtPmRhdGFbMF0gKyB5ICogcy0+b3V0cGljcmVmLT5saW5lc2l6ZVswXSwgICAwLCBv dXRsaW5rLT53KTsKKyAgICAgICAgbWVtc2V0KHMtPm91dHBpY3JlZi0+ZGF0YVsxXSArIHkgKiBz LT5vdXRwaWNyZWYtPmxpbmVzaXplWzFdLCAxMjgsIG91dGxpbmstPncpOworICAgICAgICBtZW1z ZXQocy0+b3V0cGljcmVmLT5kYXRhWzJdICsgeSAqIHMtPm91dHBpY3JlZi0+bGluZXNpemVbMl0s IDEyOCwgb3V0bGluay0+dyk7CisgICAgICAgIGlmIChzLT5vdXRwaWNyZWYtPmRhdGFbM10pCisg ICAgICAgICAgICBtZW1zZXQocy0+b3V0cGljcmVmLT5kYXRhWzNdICsgeSAqIHMtPm91dHBpY3Jl Zi0+bGluZXNpemVbM10sIDAsIG91dGxpbmstPncpOworICAgIH0KKworICAgIHMtPm91dHBpY3Jl Zi0+Y29sb3JfcmFuZ2UgPSBBVkNPTF9SQU5HRV9KUEVHOworCisgICAgbWluaW11bV9mcmVxdWVu Y3kgKj0gcy0+bmJfY29uc3VtZWRfc2FtcGxlcyAvIChmbG9hdClpbmxpbmstPnNhbXBsZV9yYXRl OworICAgIG1heGltdW1fZnJlcXVlbmN5ICo9IHMtPm5iX2NvbnN1bWVkX3NhbXBsZXMgLyAoZmxv YXQpaW5saW5rLT5zYW1wbGVfcmF0ZTsKKyAgICBpZiAocy0+ZnJlcXVlbmN5X3NjYWxlID4gMCkg eworICAgICAgICBtaW5pbXVtX2ZyZXF1ZW5jeSA9IGxvZ2YobWluaW11bV9mcmVxdWVuY3kpIC8g bG9nZigyLmYpOworICAgICAgICBtYXhpbXVtX2ZyZXF1ZW5jeSA9IGxvZ2YobWF4aW11bV9mcmVx dWVuY3kpIC8gbG9nZigyLmYpOworICAgIH0KKworICAgIGZyZXF1ZW5jeV9iYW5kKHMtPmZyZXF1 ZW5jeV9iYW5kLAorICAgICAgICAgICAgICAgICAgIHMtPmZyZXF1ZW5jeV9iYW5kX2NvdW50LCBt YXhpbXVtX2ZyZXF1ZW5jeSAtIG1pbmltdW1fZnJlcXVlbmN5LAorICAgICAgICAgICAgICAgICAg IG1pbmltdW1fZnJlcXVlbmN5LCBzLT5mcmVxdWVuY3lfc2NhbGUsIHMtPmRldmlhdGlvbik7CisK KyAgICBhdl9sb2coY3R4LCBBVl9MT0dfREVCVUcsICJpbnB1dF9zYW1wbGVfY291bnQ6ICVkXG4i LCBzLT5pbnB1dF9zYW1wbGVfY291bnQpOworICAgIGF2X2xvZyhjdHgsIEFWX0xPR19ERUJVRywg Im91dHB1dF9zYW1wbGVfY291bnQ6ICVkXG4iLCBzLT5vdXRwdXRfc2FtcGxlX2NvdW50KTsKKwor ICAgIGlmIChzLT54cG9zID49IHMtPncpCisgICAgICAgIHMtPnhwb3MgPSAwOworCisgICAgcy0+ YXV0b19mcmFtZV9yYXRlID0gYXZfbWFrZV9xKGlubGluay0+c2FtcGxlX3JhdGUsIHMtPmhvcF9z aXplKTsKKyAgICBpZiAoc3RyY21wKHMtPnJhdGVfc3RyLCAiYXV0byIpKSB7CisgICAgICAgIHJl dCA9IGF2X3BhcnNlX3ZpZGVvX3JhdGUoJnMtPmZyYW1lX3JhdGUsIHMtPnJhdGVfc3RyKTsKKyAg ICB9IGVsc2UgeworICAgICAgICBzLT5mcmFtZV9yYXRlID0gcy0+YXV0b19mcmFtZV9yYXRlOwor ICAgIH0KKyAgICBvdXRsaW5rLT5mcmFtZV9yYXRlID0gcy0+ZnJhbWVfcmF0ZTsKKyAgICBvdXRs aW5rLT50aW1lX2Jhc2UgPSBhdl9pbnZfcShvdXRsaW5rLT5mcmFtZV9yYXRlKTsKKworICAgIGNv bXB1dGVfa2VybmVsKGN0eCk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhY3Rp dmF0ZShBVkZpbHRlckNvbnRleHQgKmN0eCkKK3sKKyAgICBBVkZpbHRlckxpbmsgKmlubGluayA9 IGN0eC0+aW5wdXRzWzBdOworICAgIEFWRmlsdGVyTGluayAqb3V0bGluayA9IGN0eC0+b3V0cHV0 c1swXTsKKyAgICBTaG93Q1dUQ29udGV4dCAqcyA9IGN0eC0+cHJpdjsKKyAgICBpbnQgcmV0ID0g MCwgc3RhdHVzOworICAgIGludDY0X3QgcHRzOworCisgICAgRkZfRklMVEVSX0ZPUldBUkRfU1RB VFVTX0JBQ0sob3V0bGluaywgaW5saW5rKTsKKworICAgIGlmIChzLT5vdXRwaWNyZWYpIHsKKyAg ICAgICAgY29uc3QgaW50IGNoID0gMDsKKyAgICAgICAgQVZGcmFtZSAqZmluOworCisgICAgICAg IGlmIChzLT5paG9wX2luZGV4ID09IDApIHsKKyAgICAgICAgICAgIHJldCA9IGZmX2lubGlua19j b25zdW1lX3NhbXBsZXMoaW5saW5rLCBzLT5ob3Bfc2l6ZSwgcy0+aG9wX3NpemUsICZmaW4pOwor ICAgICAgICAgICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAg ICAgICAgICAgIGlmIChyZXQgPiAwKSB7CisgICAgICAgICAgICAgICAgcnVuX2NoYW5uZWxfY3d0 X3ByZXBhcmUoY3R4LCBmaW4sIGNoKTsKKyAgICAgICAgICAgICAgICBzLT5pbl9wdHMgPSBmaW4t PnB0czsKKyAgICAgICAgICAgICAgICBzLT5pbl9uYl9zYW1wbGVzID0gZmluLT5uYl9zYW1wbGVz OworICAgICAgICAgICAgICAgIGF2X2ZyYW1lX2ZyZWUoJmZpbik7CisgICAgICAgICAgICB9Cisg ICAgICAgIH0KKworICAgICAgICBpZiAocmV0ID4gMCB8fCBzLT5paG9wX2luZGV4ID4gMCkgewor ICAgICAgICAgICAgaW50NjRfdCBwdHNfb2Zmc2V0OworCisgICAgICAgICAgICBmZl9maWx0ZXJf ZXhlY3V0ZShjdHgsIHJ1bl9jaGFubmVsX2N3dCwgKHZvaWQgKikmY2gsIE5VTEwsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzLT5uYl90aHJlYWRzKTsKKworICAgICAgICAgICAgcHRz X29mZnNldCA9IGF2X3Jlc2NhbGVfcShzLT5paG9wX2luZGV4LCBhdl9tYWtlX3EoMSwgcy0+aWhv cF9zaXplKSwgYXZfbWFrZV9xKDEsIHMtPmluX25iX3NhbXBsZXMpKTsKKyAgICAgICAgICAgIHMt Pm91dHBpY3JlZi0+cHRzID0gYXZfcmVzY2FsZV9xKHMtPmluX3B0cyArIHB0c19vZmZzZXQsIGlu bGluay0+dGltZV9iYXNlLCBvdXRsaW5rLT50aW1lX2Jhc2UpOworCisgICAgICAgICAgICBzLT5p aG9wX2luZGV4Kys7CisgICAgICAgICAgICBzLT54cG9zKys7CisgICAgICAgICAgICBpZiAocy0+ eHBvcyA+PSBzLT53KQorICAgICAgICAgICAgICAgIHMtPnhwb3MgPSAwOworICAgICAgICAgICAg aWYgKHMtPmlob3BfaW5kZXggPj0gcy0+aWhvcF9zaXplKQorICAgICAgICAgICAgICAgIHMtPmlo b3BfaW5kZXggPSAwOworCisgICAgICAgICAgICBpZiAocy0+b2xkX3B0cyA8IHMtPm91dHBpY3Jl Zi0+cHRzKSB7CisgICAgICAgICAgICAgICAgQVZGcmFtZSAqb3V0ID0gZmZfZ2V0X3ZpZGVvX2J1 ZmZlcihvdXRsaW5rLCBvdXRsaW5rLT53LCBvdXRsaW5rLT5oKTsKKyAgICAgICAgICAgICAgICBp ZiAoIW91dCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKyAg ICAgICAgICAgICAgICByZXQgPSBhdl9mcmFtZV9jb3B5X3Byb3BzKG91dCwgcy0+b3V0cGljcmVm KTsKKyAgICAgICAgICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290 byBmYWlsOworICAgICAgICAgICAgICAgIHJldCA9IGF2X2ZyYW1lX2NvcHkob3V0LCBzLT5vdXRw aWNyZWYpOworICAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgICAgICAg ICBnb3RvIGZhaWw7CisgICAgICAgICAgICAgICAgcy0+b2xkX3B0cyA9IHMtPm91dHBpY3JlZi0+ cHRzOworICAgICAgICAgICAgICAgIHJldCA9IGZmX2ZpbHRlcl9mcmFtZShvdXRsaW5rLCBvdXQp OworICAgICAgICAgICAgICAgIGlmIChyZXQgPD0gMCkKKyAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIHJldDsKK2ZhaWw6CisgICAgICAgICAgICAgICAgYXZfZnJhbWVfZnJlZSgmb3V0KTsKKyAg ICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg fQorCisgICAgaWYgKGZmX2lubGlua19hY2tub3dsZWRnZV9zdGF0dXMoaW5saW5rLCAmc3RhdHVz LCAmcHRzKSkgeworICAgICAgICBpZiAoc3RhdHVzID09IEFWRVJST1JfRU9GKSB7CisgICAgICAg ICAgICBmZl9vdXRsaW5rX3NldF9zdGF0dXMob3V0bGluaywgc3RhdHVzLCBwdHMpOworICAgICAg ICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZmZfaW5saW5rX3F1 ZXVlZF9zYW1wbGVzKGlubGluaykgPj0gcy0+aG9wX3NpemUgfHwgcy0+aWhvcF9pbmRleCkgewor ICAgICAgICBmZl9maWx0ZXJfc2V0X3JlYWR5KGN0eCwgMTApOworICAgICAgICByZXR1cm4gMDsK KyAgICB9CisKKyAgICBpZiAoZmZfb3V0bGlua19mcmFtZV93YW50ZWQob3V0bGluaykpIHsKKyAg ICAgICAgZmZfaW5saW5rX3JlcXVlc3RfZnJhbWUoaW5saW5rKTsKKyAgICAgICAgcmV0dXJuIDA7 CisgICAgfQorCisgICAgcmV0dXJuIEZGRVJST1JfTk9UX1JFQURZOworfQorCitzdGF0aWMgY29u c3QgQVZGaWx0ZXJQYWQgc2hvd2N3dF9pbnB1dHNbXSA9IHsKKyAgICB7CisgICAgICAgIC5uYW1l ID0gImRlZmF1bHQiLAorICAgICAgICAudHlwZSA9IEFWTUVESUFfVFlQRV9BVURJTywKKyAgICB9 LAorfTsKKworc3RhdGljIGNvbnN0IEFWRmlsdGVyUGFkIHNob3djd3Rfb3V0cHV0c1tdID0gewor ICAgIHsKKyAgICAgICAgLm5hbWUgICAgICAgICA9ICJkZWZhdWx0IiwKKyAgICAgICAgLnR5cGUg ICAgICAgICA9IEFWTUVESUFfVFlQRV9WSURFTywKKyAgICAgICAgLmNvbmZpZ19wcm9wcyA9IGNv bmZpZ19vdXRwdXQsCisgICAgfSwKK307CisKK2NvbnN0IEFWRmlsdGVyIGZmX2F2Zl9zaG93Y3d0 ID0geworICAgIC5uYW1lICAgICAgICAgID0gInNob3djd3QiLAorICAgIC5kZXNjcmlwdGlvbiAg ID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIkNvbnZlcnQgaW5wdXQgYXVkaW8gdG8gYSBDV1QgKENv bnRpbnVvdXMgV2F2ZWxldCBUcmFuc2Zvcm0pIHZpZGVvIG91dHB1dC4iKSwKKyAgICAudW5pbml0 ICAgICAgICA9IHVuaW5pdCwKKyAgICAucHJpdl9zaXplICAgICA9IHNpemVvZihTaG93Q1dUQ29u dGV4dCksCisgICAgRklMVEVSX0lOUFVUUyhzaG93Y3d0X2lucHV0cyksCisgICAgRklMVEVSX09V VFBVVFMoc2hvd2N3dF9vdXRwdXRzKSwKKyAgICBGSUxURVJfUVVFUllfRlVOQyhxdWVyeV9mb3Jt YXRzKSwKKyAgICAuYWN0aXZhdGUgICAgICA9IGFjdGl2YXRlLAorICAgIC5wcml2X2NsYXNzICAg ID0gJnNob3djd3RfY2xhc3MsCisgICAgLmZsYWdzICAgICAgICAgPSBBVkZJTFRFUl9GTEFHX1NM SUNFX1RIUkVBRFMsCit9OwotLSAKMi4zNy4yCgo= --000000000000e4aaf705ee50857d 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". --000000000000e4aaf705ee50857d--