From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id B87B850468 for ; Sun, 13 Jul 2025 11:17:04 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id AD9DC68DDBD; Sun, 13 Jul 2025 14:16:59 +0300 (EEST) Received: from mail-qt1-f180.google.com (mail-qt1-f180.google.com [209.85.160.180]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 9F38B68D79D for ; Sun, 13 Jul 2025 14:16:53 +0300 (EEST) Received: by mail-qt1-f180.google.com with SMTP id d75a77b69052e-4ab3802455eso21470191cf.2 for ; Sun, 13 Jul 2025 04:16:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752405411; x=1753010211; darn=ffmpeg.org; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=jb8famWtyQQYAVCzbqMcimWyu1ZiwXk5ouOfZFsxYDc=; b=RTV41inUA+md/LWdGcWNjfb064M8dgskfzHQ4AnN8Lo5+1O9lDcC346NRr7h++RL1P Dum2YgJt9CeZnhxdVuMkTeApNPCpwAeEpD6wKhWihzG0+f9sAyhYt/O+pZQekoCbN+7E frMR+anY5E/bFlh4cvK+l7Hu2Q8h5yLsmgQ3xxCLeP2sm2MmH+PjO094rzeREbUrnCga WQvRX84cQmgBE00wZrL1D8ujh/alQmCC5KwKcHWl4SRpJr8TYMEfjOlgrqE/XcfYdhqk 4ByMk+GbhPJQWh4f568s+arJeG+LplwvBEDQevjpLOfHNP0Kf68Iwgf01suKGFG7kRm2 nH4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752405411; x=1753010211; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jb8famWtyQQYAVCzbqMcimWyu1ZiwXk5ouOfZFsxYDc=; b=dXRPmMn7pHqYHJr7ARe66t7Ss4eDIOnGwL1PPH55pdFnShwmbn15XN6AFJXa60WlV7 Vo0clxJqOV+UZBgKOksNOz3y61YxzLpztiMpou+E6OH1JK1Pus4zIAIN5RSz5GHLRomN RifIH03T/9vKoPIPhvpX5kulCZ1nQZuoSHiAsVq3WTYBXXXMfWCKvmv89PQw6pmaBJAo piuA9ehtDsLmPf0fj767YYeYY7Q5s7BD4JJWa2ZZPeYEO6IOEvbPcijaVor3U69+m0+G DI5K2DfNvYvlsX1zuD46lDV7ucqbrE06OkpoAI4vTeiUiiqNepDOc8tJPBo8xSYSAxW6 iShw== X-Gm-Message-State: AOJu0Yxax6CyzWp0PvJ+52M1aHfiDGhcnUww8J5gIlUvdmR4NB67DYJd wj7IIBu+xJ6nIjqECDuQZA7F44H8wOgYD0sdW+In9rXvg8RVVegqZE+inFA+lvFUQuci5WTDDAZ jsNtrQcixPGGrf22od7+3TWbjFhlqjI4IaODl X-Gm-Gg: ASbGncsRsSGQjwObUbkCMLn0qJIRUWnmcwofjXZuVnKqTIBALnT6MsAxDJeYK1GndsG kGzu0Sfe/dLsmdWwmduJ3yMs+ioNbxKKjBWbnZUAyJYR71pD7yhzUgBJJWxmVi1Hn+84HepxP6o MNWiL1kD+P7EcbHe4HqIx1298Nzm27LTlaqjteU4zbSRWo545P+nWnI+XFtL7eRvzrehJAc3OLE /GiLAMtuFZGsTuy X-Google-Smtp-Source: AGHT+IE/kKofTI8fstVXeATjbW5I3dRBxZkKCigp/Id4uBRZdepyGyU+d2ufeanjq929WaM641jI4Nr/WPvHVLppFAE= X-Received: by 2002:ac8:7d88:0:b0:4a7:634e:f6ef with SMTP id d75a77b69052e-4a9fb9b659bmr120129651cf.52.1752405410726; Sun, 13 Jul 2025 04:16:50 -0700 (PDT) MIME-Version: 1.0 References: <20250710102543.1002696-1-vpalmisano@gmail.com> <20250710122008.GP29660@pb2> <20250712000330.GX29660@pb2> In-Reply-To: <20250712000330.GX29660@pb2> From: Vittorio Palmisano Date: Sun, 13 Jul 2025 13:16:24 +0200 X-Gm-Features: Ac12FXxlhlmig_kyUqWgRYm9JYzGvr4bglcQP3J5hKHd8dg3-9iRia5MxKHeZzw Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH] Whisper audio 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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: VGhhbmtzLCBJJ3ZlIGFwcGxpZWQgeW91ciBzdWdnZXN0aW9ucy4KCgpTaWduZWQtb2ZmLWJ5OiBW aXR0b3JpbyBQYWxtaXNhbm8gPHZwYWxtaXNhbm9AZ21haWwuY29tPgotLS0KY29uZmlndXJlIHwg NSArCmRvYy9maWx0ZXJzLnRleGkgfCAxMDYgKysrKysrKysrCmxpYmF2ZmlsdGVyL01ha2VmaWxl IHwgMiArCmxpYmF2ZmlsdGVyL2FmX3doaXNwZXIuYyB8IDQ1NCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jIHwgMiArCjUgZmls ZXMgY2hhbmdlZCwgNTY5IGluc2VydGlvbnMoKykKY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Zmls dGVyL2FmX3doaXNwZXIuYwoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRl eCAyY2NhZmU3YzIwLi41NzNkZmM2N2RjIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29u ZmlndXJlCkBAIC0zMzcsNiArMzM3LDcgQEAgRXh0ZXJuYWwgbGlicmFyeSBzdXBwb3J0OgotLWVu YWJsZS12YXBvdXJzeW50aCBlbmFibGUgVmFwb3VyU3ludGggZGVtdXhlciBbbm9dCi0tZGlzYWJs ZS14bGliIGRpc2FibGUgeGxpYiBbYXV0b2RldGVjdF0KLS1kaXNhYmxlLXpsaWIgZGlzYWJsZSB6 bGliIFthdXRvZGV0ZWN0XQorIC0tZW5hYmxlLXdoaXNwZXIgZW5hYmxlIHdoaXNwZXIgZmlsdGVy IFtub10KVGhlIGZvbGxvd2luZyBsaWJyYXJpZXMgcHJvdmlkZSB2YXJpb3VzIGhhcmR3YXJlIGFj Y2VsZXJhdGlvbiBmZWF0dXJlczoKLS1kaXNhYmxlLWFtZiBkaXNhYmxlIEFNRiB2aWRlbyBlbmNv ZGluZyBjb2RlIFthdXRvZGV0ZWN0XQpAQCAtMjAwMyw2ICsyMDA0LDcgQEAgRVhURVJOQUxfTElC UkFSWV9MSVNUPSIKcG9ja2V0c3BoaW54CnZhcG91cnN5bnRoCnZ1bGthbl9zdGF0aWMKKyB3aGlz cGVyCiIKSFdBQ0NFTF9BVVRPREVURUNUX0xJQlJBUllfTElTVD0iCkBAIC00MDU5LDYgKzQwNjEs NyBAQCB4c3RhY2tfcXN2X2ZpbHRlcl9kZXBzPSJsaWJtZngiCnhzdGFja19xc3ZfZmlsdGVyX3Nl bGVjdD0icXN2dnBwIgpwYWRfdmFhcGlfZmlsdGVyX2RlcHM9InZhYXBpXzEiCmRyYXdib3hfdmFh cGlfZmlsdGVyX2RlcHM9InZhYXBpXzEiCit3aGlzcGVyX2ZpbHRlcl9kZXBzPSJ3aGlzcGVyIgoj IGV4YW1wbGVzCmF2aW9faHR0cF9zZXJ2ZV9maWxlc19kZXBzPSJhdmZvcm1hdCBhdnV0aWwgZm9y ayIKQEAgLTcxMDgsNiArNzExMSw4IEBAIGVuYWJsZWQgbGlidm9fYW1yd2JlbmMgJiYgcmVxdWly ZSBsaWJ2b19hbXJ3YmVuYwp2by1hbXJ3YmVuYy9lbmNfaWYuaCBFX0lGX2luCmVuYWJsZWQgbGli dm9yYmlzICYmIHJlcXVpcmVfcGtnX2NvbmZpZyBsaWJ2b3JiaXMgdm9yYmlzCnZvcmJpcy9jb2Rl Yy5oIHZvcmJpc19pbmZvX2luaXQgJiYKcmVxdWlyZV9wa2dfY29uZmlnIGxpYnZvcmJpc2VuYyB2 b3JiaXNlbmMgdm9yYmlzL3ZvcmJpc2VuYy5oIHZvcmJpc19lbmNvZGVfaW5pdAorZW5hYmxlZCB3 aGlzcGVyICYmIHJlcXVpcmVfcGtnX2NvbmZpZyB3aGlzcGVyICJ3aGlzcGVyID49IDEuNy41Igp3 aGlzcGVyLmggd2hpc3Blcl9pbml0X2Zyb21fZmlsZV93aXRoX3BhcmFtcworCmVuYWJsZWQgbGli dnB4ICYmIHsKZW5hYmxlZCBsaWJ2cHhfdnA4X2RlY29kZXIgJiYgewpjaGVja19wa2dfY29uZmln IGxpYnZweF92cDhfZGVjb2RlciAidnB4ID49IDEuNC4wIiAidnB4L3ZweF9kZWNvZGVyLmgKdnB4 L3ZwOGR4LmgiIHZweF9jb2RlY192cDhfZHggfHwKZGlmZiAtLWdpdCBhL2RvYy9maWx0ZXJzLnRl eGkgYi9kb2MvZmlsdGVycy50ZXhpCmluZGV4IGVkMjk1NmZlNzUuLjMzYzYxYTE5NTQgMTAwNjQ0 Ci0tLSBhL2RvYy9maWx0ZXJzLnRleGkKKysrIGIvZG9jL2ZpbHRlcnMudGV4aQpAQCAtNzY4Miw2 ICs3NjgyLDExMiBAQCBUaGVyZSBhcmUgNiBzYW1wbGVzIGF0IC00IGRCLCA2MiBhdCAtNSBkQiwg Mjg2CmF0IC02IGRCLCBldGMuCkluIG90aGVyIHdvcmRzLCByYWlzaW5nIHRoZSB2b2x1bWUgYnkg KzQgZEIgZG9lcyBub3QgY2F1c2UgYW55IGNsaXBwaW5nLApyYWlzaW5nIGl0IGJ5ICs1IGRCIGNh dXNlcyBjbGlwcGluZyBmb3IgNiBzYW1wbGVzLCBldGMuCitAYW5jaG9ye3doaXNwZXJ9CitAc2Vj dGlvbiB3aGlzcGVyCisKK0l0IHJ1bnMgYSBhdXRvbWF0aWMgc3BlZWNoIHJlY29nbml0aW9uIHVz aW5nIHRoZSBPcGVuQUnigJlzIFdoaXNwZXIgbW9kZWwuCisKK0l0IHJlcXVpcmVzIHRoZSB3aGlz cGVyLmNwcCBsaWJyYXJ5IChodHRwczovL2dpdGh1Yi5jb20vZ2dtbC1vcmcvd2hpc3Blci5jcHAp CithcyBhIHByZS1yZXF1aXNpdGUuIEFmdGVyIGluc3RhbGxpbmcgdGhlIGxpYnJhcnkgaXQgY2Fu IGJlIGVuYWJsZWQgdXNpbmc6CitAY29kZXsuL2NvbmZpZ3VyZSAtLWVuYWJsZS13aGlzcGVyfS4K KworVGhlIGZpbHRlciBoYXMgZm9sbG93aW5nIG9wdGlvbnM6CisKK0B0YWJsZSBAb3B0aW9uCitA aXRlbSBtb2RlbAorVGhlIGZpbGUgcGF0aCBvZiB0aGUgZG93bmxvYWRlZCB3aGlzcGVyLmNwcCBt b2RlbCAobWFuZGF0b3J5KS4KKworQGl0ZW0gbGFuZ3VhZ2UKK1RoZSBsYW5ndWFnZSB0byB1c2Ug Zm9yIHRyYW5zY3JpcHRpb24gKCdhdXRvJyBmb3IgYXV0by1kZXRlY3QpLgorRGVmYXVsdCB2YWx1 ZTogQGNvZGV7ImF1dG8ifQorCitAaXRlbSBxdWV1ZQorVGhlIG1heGltdW0gc2l6ZSB0aGF0IHdp bGwgYmUgcXVldWVkIGludG8gdGhlIGZpbHRlciBiZWZvcmUKcHJvY2Vzc2luZyB0aGUgYXVkaW8K K3dpdGggd2hpc3Blci4gVXNpbmcgYSBzbWFsbCB2YWx1ZSB0aGUgYXVkaW8gc3RyZWFtIHdpbGwg YmUgcHJvY2Vzc2VkCm1vcmUgb2Z0ZW4sCitidXQgdGhlIHRyYW5zY3JpcHRpb24gcXVhbGl0eSB3 aWxsIGJlIGxvd2VyIGFuZCB0aGUgcmVxdWlyZWQgcHJvY2Vzc2luZyBwb3dlcgord2lsbCBiZSBo aWdoZXIuIFVzaW5nIGEgbGFyZ2UgdmFsdWUgKGUuZy4gMTAtMjBzKSB3aWxsIHByb2R1Y2UgbW9y ZSBhY2N1cmF0ZQorcmVzdWx0cyB1c2luZyBsZXNzIENQVSAoYXMgdXNpbmcgdGhlIHdoaXNwZXIt Y2xpIHRvb2wpLCBidXQgdGhlIHRyYW5zY2lwdGlvbgorbGF0ZW5jeSB3aWxsIGJlIGhpZ2hlciwg dGh1cyBub3QgdXNlZnVsIHRvIHByb2Nlc3MgcmVhbC10aW1lIHN0cmVhbXMuCitDb25zaWRlciB1 c2luZyB0aGUgdmFkX21vZGVsIG9wdGlvbiBhc3NvY2lhdGVkIHdpdGggYSBsYXJnZSBxdWV1ZSB2 YWx1ZS4KK0RlZmF1bHQgdmFsdWU6IEBjb2RleyIzIn0KKworQGl0ZW0gdXNlX2dwdQorSWYgdGhl IEdQVSBzdXBwb3J0IHNob3VsZCBiZSBlbmFibGVkLgorRGVmYXVsdCB2YWx1ZTogQGNvZGV7InRy dWUifQorCitAaXRlbSBncHVfZGV2aWNlCitUaGUgR1BVIGRldmljZSB0byB1c2UuCitEZWZhdWx0 IHZhbHVlOiBAY29kZXsiMCJ9CisKK0BpdGVtIGRlc3RpbmF0aW9uCitJZiBzZXQsIHRoZSB0cmFu c2NyaXB0aW9uIG91dHB1dCB3aWxsIGJlIHNlbnQgdG8gdGhlIHNwZWNpZmllZCBmaWxlIG9yIFVS TAorKHVzZSBvbmUgb2YgdGhlIEZGbXBlZyBBVklPIHByb3RvY29scyk7IG90aGVyd2lzZSwgdGhl IG91dHB1dCB3aWxsIGJlIGxvZ2dlZCBhcworaW5mbyBtZXNzYWdlcy4KK1RoZSBvdXRwdXQgd2ls bCBhbHNvIGJlIHNldCBpbiB0aGUgImxhdmZpLndoaXNwZXIudGV4dCIgZnJhbWUgbWV0YWRhdGEu CisKK0BpdGVtIGZvcm1hdAorVGhlIGRlc3RpbmF0aW9uIGZvcm1hdCBzdHJpbmc7IGl0IGNvdWxk IGJlICJ0ZXh0IiAob25seSB0aGUgdHJhbnNjcmliZWQgdGV4dAord2lsbCBiZSBzZW50IHRvIHRo ZSBkZXN0aW5hdGlvbiksICJzcnQiIChzdWJ0aXRsZSBmb3JtYXQpIG9yICJqc29uIi4KK0RlZmF1 bHQgdmFsdWU6IEBjb2RleyJ0ZXh0In0KKworQGl0ZW0gdmFkX21vZGVsCitQYXRoIHRvIHRoZSBW QUQgbW9kZWwgZmlsZS4gSWYgc2V0LCB0aGUgZmlsdGVyIHdpbGwgbG9hZCBhbiBhZGRpdGlvbmFs IHZvaWNlCithY3Rpdml0eSBkZXRlY3Rpb24gbW9kdWxlIChodHRwczovL2dpdGh1Yi5jb20vc25h a2VyczQvc2lsZXJvLXZhZCkgdGhhdCB3aWxsIGJlCit1c2VkIHRvIGZyYWdtZW50IHRoZSBhdWRp byBxdWV1ZTsgdXNlIHRoaXMgb3B0aW9uIHNldHRpbmcgYSB2YWxpZCBwYXRoIG9idGFpbmVkCitm cm9tIHRoZSB3aGlzcGVyLmNwcCByZXBvc2l0b3J5IChlLmcuCiIuLi93aGlzcGVyLmNwcC9tb2Rl bHMvZ2dtbC1zaWxlcm8tdjUuMS4yLmJpbiIpCithbmQgaW5jcmVhc2UgdGhlIHF1ZXVlIHBhcmFt ZXRlciB0byBhbiBoaWdoZXIgdmFsdWUgKGUuZy4gMTApLgorCitAaXRlbSB2YWRfdGhyZXNob2xk CitUaGUgVkFEIHRocmVzaG9sZCB0byB1c2UuCitEZWZhdWx0IHZhbHVlOiBAY29kZXsiMC41In0K KworQGl0ZW0gdmFkX21pbl9zcGVlY2hfZHVyYXRpb24KK1RoZSBtaW5pbXVtIFZBRCBzcGVha2lu ZyBkdXJhdGlvbi4KK0RlZmF1bHQgdmFsdWU6IEBjb2RleyIwLjA1In0KKworQGl0ZW0gdmFkX21p bl9zaWxlbmNlX2R1cmF0aW9uCitUaGUgbWluaW11bSBWQUQgc2lsZW5jZSBkdXJhdGlvbi4KK0Rl ZmF1bHQgdmFsdWU6IEBjb2RleyIwLjUifQorCitAZW5kIHRhYmxlCisKK0BzdWJzZWN0aW9uIEV4 YW1wbGVzCitAaXRlbWl6ZQorCitAaXRlbQorUnVuIGEgdHJhbnNjcmlwdGlvbiB3aXRoIHNydCBm aWxlIGdlbmVyYXRpb246CitAZXhhbXBsZQorZmZtcGVnIC1pIGlucHV0Lm1wNCAtdm4gLWFmCiJ3 aGlzcGVyPW1vZGVsPS4uL3doaXNwZXIuY3BwL21vZGVscy9nZ21sLWJhc2UuZW4uYmluXAorOmxh bmd1YWdlPWVuXAorOnF1ZXVlPTNcCis6ZGVzdGluYXRpb249b3V0cHV0LnNydFwKKzpmb3JtYXQ9 c3J0IiAtZiBudWxsIC0KK0BlbmQgZXhhbXBsZQorCitAaXRlbQorUnVuIGEgdHJhbnNjcmlwdGlv biBhbmQgc2VuZCB0aGUgb3V0cHV0IGluIEpTT04gZm9ybWF0IHRvIGFuIEhUVFAgc2VydmljZToK K0BleGFtcGxlCitmZm1wZWcgLWkgaW5wdXQubXA0IC12biAtYWYKIndoaXNwZXI9bW9kZWw9Li4v d2hpc3Blci5jcHAvbW9kZWxzL2dnbWwtYmFzZS5lbi5iaW5cCis6bGFuZ3VhZ2U9ZW5cCis6cXVl dWU9M1wKKzpkZXN0aW5hdGlvbj1odHRwXFw6Ly9sb2NhbGhvc3RcXDozMDAwXAorOmZvcm1hdD1q c29uJyAtZiBudWxsIC0KK0BlbmQgZXhhbXBsZQorCitAaXRlbQorVHJhbnNjcmliZSB0aGUgbWlj cm9waG9uZSBpbnB1dCB1c2luZyB0aGUgVkFEIG9wdGlvbjoKK0BleGFtcGxlCitmZm1wZWcgLWxv Z2xldmVsIHdhcm5pbmcgLWYgcHVsc2UgLWkgZGVmYXVsdCBcCistYWYgJ2hpZ2hwYXNzPWY9MjAw LGxvd3Bhc3M9Zj0zMDAwLHdoaXNwZXI9bW9kZWw9Li4vd2hpc3Blci5jcHAvbW9kZWxzL2dnbWwt bWVkaXVtLmJpblwKKzpsYW5ndWFnZT1lblwKKzpxdWV1ZT0xMFwKKzpkZXN0aW5hdGlvbj0tXAor OmZvcm1hdD1qc29uXAorOnZhZF9tb2RlbD0uLi93aGlzcGVyLmNwcC9tb2RlbHMvZ2dtbC1zaWxl cm8tdjUuMS4yLmJpbicgLWYgbnVsbCAtCitAZW5kIGV4YW1wbGUKKworQGVuZCBpdGVtaXplCisK QGMgbWFuIGVuZCBBVURJTyBGSUxURVJTCkBjaGFwdGVyIEF1ZGlvIFNvdXJjZXMKZGlmZiAtLWdp dCBhL2xpYmF2ZmlsdGVyL01ha2VmaWxlIGIvbGliYXZmaWx0ZXIvTWFrZWZpbGUKaW5kZXggOWU5 MTUzZjViMC4uZTEzMzQyMmNhNCAxMDA2NDQKLS0tIGEvbGliYXZmaWx0ZXIvTWFrZWZpbGUKKysr IGIvbGliYXZmaWx0ZXIvTWFrZWZpbGUKQEAgLTE4OCw2ICsxODgsOCBAQCBPQkpTLSQoQ09ORklH X0hJTEJFUlRfRklMVEVSKSArPSBhc3JjX2hpbGJlcnQubwpPQkpTLSQoQ09ORklHX1NJTkNfRklM VEVSKSArPSBhc3JjX3NpbmMubwpPQkpTLSQoQ09ORklHX1NJTkVfRklMVEVSKSArPSBhc3JjX3Np bmUubworT0JKUy0kKENPTkZJR19XSElTUEVSX0ZJTFRFUikgKz0gYWZfd2hpc3Blci5vCisKT0JK Uy0kKENPTkZJR19BTlVMTFNJTktfRklMVEVSKSArPSBhc2lua19hbnVsbHNpbmsubwojIHZpZGVv IGZpbHRlcnMKZGlmZiAtLWdpdCBhL2xpYmF2ZmlsdGVyL2FmX3doaXNwZXIuYyBiL2xpYmF2Zmls dGVyL2FmX3doaXNwZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5i MmFkNmE3MGNjCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZmaWx0ZXIvYWZfd2hpc3Blci5jCkBA IC0wLDAgKzEsNDU0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDI1IFZpdHRvcmlvIFBhbG1p c2FubworICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICogNTEgRnJhbmtsaW4gU3RyZWV0LCBG aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRlIDxz dGRpby5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5j bHVkZSA8d2hpc3Blci5oPgorCisjaW5jbHVkZSAibGliYXZ1dGlsL2F2dXRpbC5oIgorI2luY2x1 ZGUgImxpYmF2dXRpbC9vcHQuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvY2hhbm5lbF9sYXlvdXQu aCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvc2FtcGxlZm10LmgiCisjaW5jbHVkZSAibGliYXZmaWx0 ZXIvYXZmaWx0ZXIuaCIKKyNpbmNsdWRlICJsaWJhdmZpbHRlci9hdWRpby5oIgorI2luY2x1ZGUg ImxpYmF2dXRpbC9tZW0uaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCIKKyNpbmNs dWRlICJsaWJhdnV0aWwvaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJsaWJhdmZvcm1hdC9hdmlvLmgi CisjaW5jbHVkZSAibGliYXZ1dGlsL3RocmVhZC5oIgorCisjaW5jbHVkZSAiZm9ybWF0cy5oIgor Cit0eXBlZGVmIHN0cnVjdCBXaGlzcGVyQ29udGV4dCB7CisgY29uc3QgQVZDbGFzcyAqY2xhc3M7 CisgY2hhciAqbW9kZWxfcGF0aDsKKyBjaGFyICpsYW5ndWFnZTsKKyBib29sIHVzZV9ncHU7Cisg aW50IGdwdV9kZXZpY2U7CisgY2hhciAqdmFkX21vZGVsX3BhdGg7CisgZmxvYXQgdmFkX3RocmVz aG9sZDsKKyBpbnQ2NF90IHZhZF9taW5fc3BlZWNoX2R1cmF0aW9uOworIGludDY0X3QgdmFkX21p bl9zaWxlbmNlX2R1cmF0aW9uOworCisgaW50NjRfdCBxdWV1ZTsKKyBjaGFyICpkZXN0aW5hdGlv bjsKKyBjaGFyICpmb3JtYXQ7CisKKyBzdHJ1Y3Qgd2hpc3Blcl9jb250ZXh0ICpjdHhfd3NwOwor IHN0cnVjdCB3aGlzcGVyX3ZhZF9jb250ZXh0ICpjdHhfdmFkOworIHN0cnVjdCB3aGlzcGVyX3Zh ZF9wYXJhbXMgdmFkX3BhcmFtczsKKworIGZsb2F0ICphdWRpb19idWZmZXI7CisgaW50IGF1ZGlv X2J1ZmZlcl9xdWV1ZV9zaXplOworIGludCBhdWRpb19idWZmZXJfZmlsbF9zaXplOworIGludCBh dWRpb19idWZmZXJfdmFkX3NpemU7CisKKyBpbnQgZW9mOworIGludDY0X3QgbmV4dF9wdHM7CisK KyBBVklPQ29udGV4dCAqYXZpb19jb250ZXh0OworIGludCBpbmRleDsKKyBpbnQ2NF90IHRpbWVz dGFtcDsKK30gV2hpc3BlckNvbnRleHQ7CisKK3N0YXRpYyB2b2lkIGNiX2xvZyhlbnVtIGdnbWxf bG9nX2xldmVsIGxldmVsLCBjb25zdCBjaGFyICp0ZXh0LCB2b2lkCip1c2VyX2RhdGEpCit7Cisg QVZGaWx0ZXJDb250ZXh0ICpjdHggPSAoQVZGaWx0ZXJDb250ZXh0ICopIHVzZXJfZGF0YTsKKyBz d2l0Y2ggKGxldmVsKSB7CisgY2FzZSBHR01MX0xPR19MRVZFTF9FUlJPUjoKKyBhdl9sb2coY3R4 LCBBVl9MT0dfRVJST1IsICIlcyIsIHRleHQpOworIGJyZWFrOworIGNhc2UgR0dNTF9MT0dfTEVW RUxfV0FSTjoKKyBhdl9sb2coY3R4LCBBVl9MT0dfV0FSTklORywgIiVzIiwgdGV4dCk7CisgYnJl YWs7CisgY2FzZSBHR01MX0xPR19MRVZFTF9JTkZPOgorIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZP LCAiJXMiLCB0ZXh0KTsKKyBicmVhazsKKyBjYXNlIEdHTUxfTE9HX0xFVkVMX0RFQlVHOgorIGF2 X2xvZyhjdHgsIEFWX0xPR19ERUJVRywgIiVzIiwgdGV4dCk7CisgYnJlYWs7CisgfQorfQorCitz dGF0aWMgaW50IGluaXQoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCit7CisgV2hpc3BlckNvbnRleHQg KndjdHggPSBjdHgtPnByaXY7CisKKyBzdGF0aWMgQVZPbmNlIGluaXRfc3RhdGljX29uY2UgPSBB Vl9PTkNFX0lOSVQ7CisgZmZfdGhyZWFkX29uY2UoJmluaXRfc3RhdGljX29uY2UsIGdnbWxfYmFj a2VuZF9sb2FkX2FsbCk7CisKKyB3aGlzcGVyX2xvZ19zZXQoY2JfbG9nLCBjdHgpOworCisgLy8g SW5pdCB3aGlzcGVyIGNvbnRleHQKKyBpZiAoIXdjdHgtPm1vZGVsX3BhdGgpIHsKKyBhdl9sb2co Y3R4LCBBVl9MT0dfRVJST1IsICJObyB3aGlzcGVyIG1vZGVsIHBhdGggc3BlY2lmaWVkLiBVc2Ug dGhlCidtb2RlbCcgb3B0aW9uLlxuIik7CisgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyB9CisK KyBzdHJ1Y3Qgd2hpc3Blcl9jb250ZXh0X3BhcmFtcyBwYXJhbXMgPSB3aGlzcGVyX2NvbnRleHRf ZGVmYXVsdF9wYXJhbXMoKTsKKyBwYXJhbXMudXNlX2dwdSA9IHdjdHgtPnVzZV9ncHU7CisgcGFy YW1zLmdwdV9kZXZpY2UgPSB3Y3R4LT5ncHVfZGV2aWNlOworCisgd2N0eC0+Y3R4X3dzcCA9IHdo aXNwZXJfaW5pdF9mcm9tX2ZpbGVfd2l0aF9wYXJhbXMod2N0eC0+bW9kZWxfcGF0aCwgcGFyYW1z KTsKKyBpZiAod2N0eC0+Y3R4X3dzcCA9PSBOVUxMKSB7CisgYXZfbG9nKGN0eCwgQVZfTE9HX0VS Uk9SLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgd2hpc3BlciBjb250ZXh0IGZyb20KbW9kZWw6ICVz XG4iLCB3Y3R4LT5tb2RlbF9wYXRoKTsKKyByZXR1cm4gQVZFUlJPUihFSU8pOworIH0KKyAvLyBJ bml0IFZBRCBtb2RlbCBjb250ZXh0CisgaWYgKHdjdHgtPnZhZF9tb2RlbF9wYXRoKSB7Cisgc3Ry dWN0IHdoaXNwZXJfdmFkX2NvbnRleHRfcGFyYW1zIGN0eF9wYXJhbXMgPQp3aGlzcGVyX3ZhZF9k ZWZhdWx0X2NvbnRleHRfcGFyYW1zKCk7CisgY3R4X3BhcmFtcy5uX3RocmVhZHMgPSBmZl9maWx0 ZXJfZ2V0X25iX3RocmVhZHMoY3R4KTsKKyAvLyBjdHhfcGFyYW1zLnVzZV9ncHUgPSB3Y3R4LT51 c2VfZ3B1OyBUT0RPIChzZWU6IHdoaXNwZXJfdmFkX2luaXRfY29udGV4dCkKKyBjdHhfcGFyYW1z LmdwdV9kZXZpY2UgPSB3Y3R4LT5ncHVfZGV2aWNlOworIHdjdHgtPmN0eF92YWQgPQp3aGlzcGVy X3ZhZF9pbml0X2Zyb21fZmlsZV93aXRoX3BhcmFtcyh3Y3R4LT52YWRfbW9kZWxfcGF0aCwKY3R4 X3BhcmFtcyk7CisKKyB3Y3R4LT52YWRfcGFyYW1zID0gd2hpc3Blcl92YWRfZGVmYXVsdF9wYXJh bXMoKTsKKyB3Y3R4LT52YWRfcGFyYW1zLnRocmVzaG9sZCA9IHdjdHgtPnZhZF90aHJlc2hvbGQ7 Cisgd2N0eC0+dmFkX3BhcmFtcy5taW5fc3BlZWNoX2R1cmF0aW9uX21zID0Kd2N0eC0+dmFkX21p bl9zcGVlY2hfZHVyYXRpb24gLyAxMDAwOworIHdjdHgtPnZhZF9wYXJhbXMubWluX3NpbGVuY2Vf ZHVyYXRpb25fbXMgPQp3Y3R4LT52YWRfbWluX3NpbGVuY2VfZHVyYXRpb24gLyAxMDAwOworIHdj dHgtPnZhZF9wYXJhbXMubWF4X3NwZWVjaF9kdXJhdGlvbl9zID0Kd2N0eC0+YXVkaW9fYnVmZmVy X3F1ZXVlX3NpemUgLyAxMDAwLjBmOworIHdjdHgtPnZhZF9wYXJhbXMuc3BlZWNoX3BhZF9tcyA9 IDA7Cisgd2N0eC0+dmFkX3BhcmFtcy5zYW1wbGVzX292ZXJsYXAgPSAwOworIH0KKyAvLyBJbml0 IGJ1ZmZlcgorIHdjdHgtPmF1ZGlvX2J1ZmZlcl9xdWV1ZV9zaXplID0gV0hJU1BFUl9TQU1QTEVf UkFURSAqIHdjdHgtPnF1ZXVlIC8gMTAwMDAwMDsKKyB3Y3R4LT5hdWRpb19idWZmZXIgPSBhdl9t YWxsb2Mod2N0eC0+YXVkaW9fYnVmZmVyX3F1ZXVlX3NpemUgKiBzaXplb2YoZmxvYXQpKTsKKyBp ZiAoIXdjdHgtPmF1ZGlvX2J1ZmZlcikKKyByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgd2N0 eC0+bmV4dF9wdHMgPSBBVl9OT1BUU19WQUxVRTsKKworIGlmICh3Y3R4LT5kZXN0aW5hdGlvbiAm JiBzdHJjbXAoIiIsIHdjdHgtPmRlc3RpbmF0aW9uKSkgeworIGNvbnN0IGNoYXIgKmRzdCA9IHdj dHgtPmRlc3RpbmF0aW9uOworIGlmICghc3RyY21wKCItIiwgZHN0KSkKKyBkc3QgPSAicGlwZTox IjsKKyBpbnQgcmV0ID0gYXZpb19vcGVuKCZ3Y3R4LT5hdmlvX2NvbnRleHQsIGRzdCwgQVZJT19G TEFHX1dSSVRFKTsKKworIGlmIChyZXQgPCAwKSB7CisgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9S LCAiQ291bGQgbm90IG9wZW4gJXM6ICVzXG4iLAp3Y3R4LT5kZXN0aW5hdGlvbiwgYXZfZXJyMnN0 cihyZXQpKTsKKyByZXR1cm4gcmV0OworIH0KKworIHdjdHgtPmF2aW9fY29udGV4dC0+ZGlyZWN0 ID0gQVZJT19GTEFHX0RJUkVDVDsKKyB9CisKKyBhdl9sb2coY3R4LCBBVl9MT0dfSU5GTywKKyAi V2hpc3BlciBmaWx0ZXIgaW5pdGlhbGl6ZWQ6IG1vZGVsOiAlcyBsYW5nOiAlcyBxdWV1ZTogJWxk IG1zXG4iLAorIHdjdHgtPm1vZGVsX3BhdGgsIHdjdHgtPmxhbmd1YWdlLCB3Y3R4LT5xdWV1ZSAv IDEwMDApOworCisgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHVuaW5pdChBVkZpbHRlckNv bnRleHQgKmN0eCkKK3sKKyBXaGlzcGVyQ29udGV4dCAqd2N0eCA9IGN0eC0+cHJpdjsKKworIGlm ICh3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplID4gMCkgeworIGF2X2xvZyhjdHgsIEFWX0xP R19XQVJOSU5HLAorICJSZW1haW5pbmcgYXVkaW8gYnVmZmVyICVkIHNhbXBsZXMgKCVkIHNlY29u ZHMpIGFmdGVyIHN0b3BwaW5nXG4iLAorIHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUsIHdj dHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUgLwpXSElTUEVSX1NBTVBMRV9SQVRFKTsKKyB9CisK KyBpZiAod2N0eC0+Y3R4X3ZhZCkgeworIHdoaXNwZXJfdmFkX2ZyZWUod2N0eC0+Y3R4X3ZhZCk7 Cisgd2N0eC0+Y3R4X3ZhZCA9IE5VTEw7CisgfQorCisgaWYgKHdjdHgtPmN0eF93c3ApIHsKKyB3 aGlzcGVyX2ZyZWUod2N0eC0+Y3R4X3dzcCk7Cisgd2N0eC0+Y3R4X3dzcCA9IE5VTEw7CisgfQor CisgYXZfZnJlZXAoJndjdHgtPmF1ZGlvX2J1ZmZlcik7CisKKyBpZiAod2N0eC0+YXZpb19jb250 ZXh0KQorIGF2aW9fY2xvc2VwKCZ3Y3R4LT5hdmlvX2NvbnRleHQpOworfQorCitzdGF0aWMgdm9p ZCBydW5fdHJhbnNjcmlwdGlvbihBVkZpbHRlckNvbnRleHQgKmN0eCwgQVZEaWN0aW9uYXJ5Cioq bWV0YWRhdGEsIGludCBlbmRfcG9zKQoreworIFdoaXNwZXJDb250ZXh0ICp3Y3R4ID0gY3R4LT5w cml2OworIGVuZF9wb3MgPSBGRk1JTihlbmRfcG9zLCB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9z aXplKTsKKworIGlmICghd2N0eC0+Y3R4X3dzcCB8fCBlbmRfcG9zID09IDApCisgcmV0dXJuOwor CisgZmxvYXQgZHVyYXRpb24gPSAoZmxvYXQpIGVuZF9wb3MgLyBXSElTUEVSX1NBTVBMRV9SQVRF OworCisgYXZfbG9nKGN0eCwgQVZfTE9HX0lORk8sCisgInJ1biB0cmFuc2NyaXB0aW9uICVkLyVk IHNhbXBsZXMgKCUuMmYgc2Vjb25kcykuLi5cbiIsIGVuZF9wb3MsCndjdHgtPmF1ZGlvX2J1ZmZl cl9maWxsX3NpemUsIGR1cmF0aW9uKTsKKworIHN0cnVjdCB3aGlzcGVyX2Z1bGxfcGFyYW1zIHBh cmFtcyA9CndoaXNwZXJfZnVsbF9kZWZhdWx0X3BhcmFtcyhXSElTUEVSX1NBTVBMSU5HX0dSRUVE WSk7CisgcGFyYW1zLmxhbmd1YWdlID0gd2N0eC0+bGFuZ3VhZ2U7CisgcGFyYW1zLm5fdGhyZWFk cyA9IGZmX2ZpbHRlcl9nZXRfbmJfdGhyZWFkcyhjdHgpOworIHBhcmFtcy5wcmludF9zcGVjaWFs ID0gMDsKKyBwYXJhbXMucHJpbnRfcHJvZ3Jlc3MgPSAwOworIHBhcmFtcy5wcmludF9yZWFsdGlt ZSA9IDA7CisgcGFyYW1zLnByaW50X3RpbWVzdGFtcHMgPSAwOworCisgaWYgKHdoaXNwZXJfZnVs bCh3Y3R4LT5jdHhfd3NwLCBwYXJhbXMsIHdjdHgtPmF1ZGlvX2J1ZmZlciwgZW5kX3BvcykgIT0g MCkgeworIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBwcm9jZXNzIGF1ZGlv IHdpdGggd2hpc3Blci5jcHBcbiIpOworIHJldHVybjsKKyB9CisKKyBjb25zdCBpbnQgbl9zZWdt ZW50cyA9IHdoaXNwZXJfZnVsbF9uX3NlZ21lbnRzKHdjdHgtPmN0eF93c3ApOworIGNoYXIgKnNl Z21lbnRzX3RleHQgPSBOVUxMOworCisgZm9yIChpbnQgaSA9IDA7IGkgPCBuX3NlZ21lbnRzOyAr K2kpIHsKKyBjb25zdCBib29sIHR1cm4gPQp3aGlzcGVyX2Z1bGxfZ2V0X3NlZ21lbnRfc3BlYWtl cl90dXJuX25leHQod2N0eC0+Y3R4X3dzcCwgaSk7CisgY29uc3QgaW50NjRfdCB0MCA9IHdoaXNw ZXJfZnVsbF9nZXRfc2VnbWVudF90MCh3Y3R4LT5jdHhfd3NwLCBpKSAqIDEwOworIGNvbnN0IGlu dDY0X3QgdDEgPSB3aGlzcGVyX2Z1bGxfZ2V0X3NlZ21lbnRfdDEod2N0eC0+Y3R4X3dzcCwgaSkg KiAxMDsKKyBjb25zdCBjaGFyICp0ZXh0ID0gd2hpc3Blcl9mdWxsX2dldF9zZWdtZW50X3RleHQo d2N0eC0+Y3R4X3dzcCwgaSk7CisgY2hhciAqdGV4dF9jbGVhbmVkID0gYXZfc3RyaXJlcGxhY2Uo dGV4dCArIDEsICJbQkxBTktfQVVESU9dIiwgIiIpOworCisgaWYgKGF2X3N0cm5sZW4odGV4dF9j bGVhbmVkLCAxKSA9PSAwKSB7CisgYXZfZnJlZXAoJnRleHRfY2xlYW5lZCk7CisgY29udGludWU7 CisgfQorIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZPLCAiIFslbGQtJWxkJXNdOiBcIiVzXCJcbiIs Cisgd2N0eC0+dGltZXN0YW1wICsgdDAsIHdjdHgtPnRpbWVzdGFtcCArIHQxLCB0dXJuID8gIiAo dHVybikiIDogIiIsCnRleHRfY2xlYW5lZCk7CisKKyBpZiAoc2VnbWVudHNfdGV4dCkgeworIGNo YXIgKm5ld190ZXh0ID0gYXZfYXNwcmludGYoIiVzJXMiLCBzZWdtZW50c190ZXh0LCB0ZXh0X2Ns ZWFuZWQpOworIGF2X2ZyZWVwKCZzZWdtZW50c190ZXh0KTsKKyBzZWdtZW50c190ZXh0ID0gbmV3 X3RleHQ7CisgfSBlbHNlCisgc2VnbWVudHNfdGV4dCA9IGF2X3N0cmR1cCh0ZXh0X2NsZWFuZWQp OworCisgaWYgKHdjdHgtPmF2aW9fY29udGV4dCkgeworIGNvbnN0IGludDY0X3Qgc3RhcnRfdCA9 IHdjdHgtPnRpbWVzdGFtcCArIHQwOworIGNvbnN0IGludDY0X3QgZW5kX3QgPSB3Y3R4LT50aW1l c3RhbXAgKyB0MTsKKyBjaGFyICpidWYgPSBOVUxMOworCisgaWYgKCFhdl9zdHJjYXNlY21wKHdj dHgtPmZvcm1hdCwgInNydCIpKSB7CisgYnVmID0KKyBhdl9hc3ByaW50ZgorICgiJWRcbiUwMmxk OiUwMmxkOiUwMmxkLiUwM2xkIC0tPiAlMDJsZDolMDJsZDolMDJsZC4lMDNsZFxuJXNcblxuIiwK KyB3Y3R4LT5pbmRleCwgc3RhcnRfdCAvIDM2MDAwMDAsCisgKHN0YXJ0X3QgLyA2MDAwMCkgJSA2 MCwgKHN0YXJ0X3QgLyAxMDAwKSAlIDYwLAorIHN0YXJ0X3QgJSAxMDAwLCBlbmRfdCAvIDM2MDAw MDAsIChlbmRfdCAvIDYwMDAwKSAlIDYwLAorIChlbmRfdCAvIDEwMDApICUgNjAsIGVuZF90ICUg MTAwMCwgdGV4dF9jbGVhbmVkKTsKKyB9IGVsc2UgaWYgKCFhdl9zdHJjYXNlY21wKHdjdHgtPmZv cm1hdCwgImpzb24iKSkgeworIGJ1ZiA9IGF2X2FzcHJpbnRmKCJ7XCJzdGFydFwiOiVsZCxcImVu ZFwiOiVsZCxcInRleHRcIjpcIiVzXCJ9XG4iLApzdGFydF90LCBlbmRfdCwgdGV4dF9jbGVhbmVk KTsKKyB9IGVsc2UKKyBidWYgPSBhdl9zdHJkdXAodGV4dF9jbGVhbmVkKTsKKworIGlmIChidWYp IHsKKyBhdmlvX3dyaXRlKHdjdHgtPmF2aW9fY29udGV4dCwgYnVmLCBzdHJsZW4oYnVmKSk7Cisg YXZfZnJlZXAoJmJ1Zik7CisgfQorIH0KKworIGF2X2ZyZWVwKCZ0ZXh0X2NsZWFuZWQpOworIH0K KworIHdjdHgtPmluZGV4Kys7Cisgd2N0eC0+dGltZXN0YW1wICs9IGR1cmF0aW9uICogMTAwMDsK KworIGlmIChtZXRhZGF0YSAmJiBzZWdtZW50c190ZXh0KSB7CisgYXZfZGljdF9zZXQobWV0YWRh dGEsICJsYXZmaS53aGlzcGVyLnRleHQiLCBzZWdtZW50c190ZXh0LCAwKTsKKyBjaGFyICpkdXJh dGlvbl90ZXh0ID0gYXZfYXNwcmludGYoIiVmIiwgZHVyYXRpb24pOworIGF2X2RpY3Rfc2V0KG1l dGFkYXRhLCAibGF2Zmkud2hpc3Blci5kdXJhdGlvbiIsIGR1cmF0aW9uX3RleHQsCkFWX0RJQ1Rf RE9OVF9TVFJEVVBfVkFMKTsKKyB9CisgYXZfZnJlZXAoJnNlZ21lbnRzX3RleHQpOworCisgbWVt Y3B5KHdjdHgtPmF1ZGlvX2J1ZmZlciwgd2N0eC0+YXVkaW9fYnVmZmVyICsgZW5kX3BvcywgZW5k X3BvcyAqCnNpemVvZigqd2N0eC0+YXVkaW9fYnVmZmVyKSk7Cisgd2N0eC0+YXVkaW9fYnVmZmVy X2ZpbGxfc2l6ZSAtPSBlbmRfcG9zOworIHdjdHgtPmF1ZGlvX2J1ZmZlcl92YWRfc2l6ZSA9IHdj dHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemU7Cit9CisKK3N0YXRpYyBpbnQgZmlsdGVyX2ZyYW1l KEFWRmlsdGVyTGluayAqaW5saW5rLCBBVkZyYW1lICpmcmFtZSkKK3sKKyBBVkZpbHRlckNvbnRl eHQgKmN0eCA9IGlubGluay0+ZHN0OworIFdoaXNwZXJDb250ZXh0ICp3Y3R4ID0gY3R4LT5wcml2 OworIEFWRmlsdGVyTGluayAqb3V0bGluayA9IGN0eC0+b3V0cHV0c1swXTsKKyBBVkRpY3Rpb25h cnkgKiptZXRhZGF0YSA9ICZmcmFtZS0+bWV0YWRhdGE7CisKKyBjb25zdCBpbnQgc2FtcGxlcyA9 IGZyYW1lLT5uYl9zYW1wbGVzOworIGNvbnN0IGZsb2F0ICppbnB1dF9kYXRhID0gKGNvbnN0IGZs b2F0ICopIGZyYW1lLT5kYXRhWzBdOworCisgaWYgKHdjdHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3Np emUgKyBzYW1wbGVzID4gd2N0eC0+YXVkaW9fYnVmZmVyX3F1ZXVlX3NpemUpIHsKKyBydW5fdHJh bnNjcmlwdGlvbihjdHgsIG1ldGFkYXRhLCB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplKTsK KyB9CisKKyBtZW1jcHkod2N0eC0+YXVkaW9fYnVmZmVyICsgd2N0eC0+YXVkaW9fYnVmZmVyX2Zp bGxfc2l6ZSwKaW5wdXRfZGF0YSwgc2FtcGxlcyAqIHNpemVvZigqd2N0eC0+YXVkaW9fYnVmZmVy KSk7Cisgd2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSArPSBzYW1wbGVzOworCisgaWYgKHdj dHgtPmN0eF92YWQKKyAmJiAod2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxfc2l6ZSAtIHdjdHgtPmF1 ZGlvX2J1ZmZlcl92YWRfc2l6ZSkgPj0KKyBXSElTUEVSX1NBTVBMRV9SQVRFICogKHdjdHgtPnZh ZF9taW5fc3BlZWNoX2R1cmF0aW9uICsKd2N0eC0+dmFkX21pbl9zaWxlbmNlX2R1cmF0aW9uKSAv IDEwMDAwMDApIHsKKyBzdHJ1Y3Qgd2hpc3Blcl92YWRfc2VnbWVudHMgKnNlZ21lbnRzID0Kd2hp c3Blcl92YWRfc2VnbWVudHNfZnJvbV9zYW1wbGVzKHdjdHgtPmN0eF92YWQsCisgd2N0eC0+dmFk X3BhcmFtcywKKyB3Y3R4LT5hdWRpb19idWZmZXIsCisgd2N0eC0+YXVkaW9fYnVmZmVyX2ZpbGxf c2l6ZSk7Cisgd2N0eC0+YXVkaW9fYnVmZmVyX3ZhZF9zaXplID0gd2N0eC0+YXVkaW9fYnVmZmVy X2ZpbGxfc2l6ZTsKKworIGlmICghc2VnbWVudHMpIHsKKyBhdl9sb2coY3R4LCBBVl9MT0dfRVJS T1IsICJmYWlsZWQgdG8gZGV0ZWN0IFZBRFxuIik7CisgfSBlbHNlIHsKKyBpbnQgbl9zZWdtZW50 cyA9IHdoaXNwZXJfdmFkX3NlZ21lbnRzX25fc2VnbWVudHMoc2VnbWVudHMpOworCisgaWYgKG5f c2VnbWVudHMgPiAwKSB7CisgY29uc3QgaW50NjRfdCBzdGFydF9tcyA9IHdoaXNwZXJfdmFkX3Nl Z21lbnRzX2dldF9zZWdtZW50X3QwKHNlZ21lbnRzLAorIG5fc2VnbWVudHMgLSAxKSAqIDEwOwor IGNvbnN0IGludDY0X3QgZW5kX21zID0gd2hpc3Blcl92YWRfc2VnbWVudHNfZ2V0X3NlZ21lbnRf dDEoc2VnbWVudHMsCisgbl9zZWdtZW50cyAtIDEpICogMTA7CisgaW50IGVuZF9wb3MgPSAoaW50 KSAoZW5kX21zICogV0hJU1BFUl9TQU1QTEVfUkFURSAvIDEwMDApOworCisgaWYgKGVuZF9wb3Mg PCB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplKSB7CisgYXZfbG9nKGN0eCwgQVZfTE9HX0lO Rk8sCisgIlZBRCBkZXRlY3RlZCAlZCBzZWdtZW50cywgc3RhcnQ6ICVsZCBtcywgZW5kOiAlbGQg bXMgKGJ1ZmZlcjogJWQgbXMpXG4iLAorIG5fc2VnbWVudHMsIHN0YXJ0X21zLCBlbmRfbXMsIDEw MDAgKiB3Y3R4LT5hdWRpb19idWZmZXJfZmlsbF9zaXplIC8KV0hJU1BFUl9TQU1QTEVfUkFURSk7 CisgcnVuX3RyYW5zY3JpcHRpb24oY3R4LCBtZXRhZGF0YSwgZW5kX3Bvcyk7CisgfQorIH0KKwor IHdoaXNwZXJfdmFkX2ZyZWVfc2VnbWVudHMoc2VnbWVudHMpOworIH0KKyB9IGVsc2UgaWYgKHdj dHgtPmF1ZGlvX2J1ZmZlcl9maWxsX3NpemUgPj0gd2N0eC0+YXVkaW9fYnVmZmVyX3F1ZXVlX3Np emUpCisgcnVuX3RyYW5zY3JpcHRpb24oY3R4LCBtZXRhZGF0YSwgd2N0eC0+YXVkaW9fYnVmZmVy X2ZpbGxfc2l6ZSk7CisKKyB3Y3R4LT5uZXh0X3B0cyA9IGZyYW1lLT5wdHMgKyBhdl9yZXNjYWxl X3EoZnJhbWUtPm5iX3NhbXBsZXMsIChBVlJhdGlvbmFsKSB7CisgMSwgaW5saW5rLT5zYW1wbGVf cmF0ZX0KKyAsIGlubGluay0+dGltZV9iYXNlKTsKKyByZXR1cm4gZmZfZmlsdGVyX2ZyYW1lKG91 dGxpbmssIGZyYW1lKTsKK30KKworc3RhdGljIGludCBwdXNoX2xhc3RfZnJhbWUoQVZGaWx0ZXJM aW5rICpvdXRsaW5rKQoreworIEFWRmlsdGVyQ29udGV4dCAqY3R4ID0gb3V0bGluay0+c3JjOwor IFdoaXNwZXJDb250ZXh0ICp3Y3R4ID0gY3R4LT5wcml2OworIEFWRnJhbWUgKmZyYW1lOworIGlu dCBuX291dCA9IDE7CisKKyBpZiAoY3R4LT5pc19kaXNhYmxlZCB8fCB3Y3R4LT5hdWRpb19idWZm ZXJfZmlsbF9zaXplID09IDApCisgcmV0dXJuIDA7CisgZnJhbWUgPSBmZl9nZXRfYXVkaW9fYnVm ZmVyKG91dGxpbmssIG5fb3V0KTsKKyBpZiAoIWZyYW1lKQorIHJldHVybiBBVkVSUk9SKEVOT01F TSk7CisKKyBhdl9zYW1wbGVzX3NldF9zaWxlbmNlKGZyYW1lLT5leHRlbmRlZF9kYXRhLCAwLCBu X291dCwKZnJhbWUtPmNoX2xheW91dC5uYl9jaGFubmVscywgZnJhbWUtPmZvcm1hdCk7CisKKyBm cmFtZS0+cHRzID0gd2N0eC0+bmV4dF9wdHM7CisgaWYgKHdjdHgtPm5leHRfcHRzICE9IEFWX05P UFRTX1ZBTFVFKQorIHdjdHgtPm5leHRfcHRzICs9IGF2X3Jlc2NhbGVfcShuX291dCwgKEFWUmF0 aW9uYWwpIHsKKyAxLCBvdXRsaW5rLT5zYW1wbGVfcmF0ZX0KKyAsIG91dGxpbmstPnRpbWVfYmFz ZSk7CisKKyBydW5fdHJhbnNjcmlwdGlvbihjdHgsICZmcmFtZS0+bWV0YWRhdGEsIHdjdHgtPmF1 ZGlvX2J1ZmZlcl9maWxsX3NpemUpOworCisgcmV0dXJuIGZmX2ZpbHRlcl9mcmFtZShvdXRsaW5r LCBmcmFtZSk7Cit9CisKK3N0YXRpYyBpbnQgYWN0aXZhdGUoQVZGaWx0ZXJDb250ZXh0ICpjdHgp Cit7CisgQVZGaWx0ZXJMaW5rICppbmxpbmsgPSBjdHgtPmlucHV0c1swXTsKKyBBVkZpbHRlckxp bmsgKm91dGxpbmsgPSBjdHgtPm91dHB1dHNbMF07CisgV2hpc3BlckNvbnRleHQgKndjdHggPSBj dHgtPnByaXY7CisgaW50NjRfdCBwdHM7CisgaW50IHN0YXR1czsKKworIEZGX0ZJTFRFUl9GT1JX QVJEX1NUQVRVU19CQUNLKG91dGxpbmssIGlubGluayk7CisKKyBpZiAoIXdjdHgtPmVvZiAmJiBm Zl9pbmxpbmtfcXVldWVkX2ZyYW1lcyhpbmxpbmspKSB7CisgQVZGcmFtZSAqZnJhbWUgPSBOVUxM OworIGludCByZXQ7CisKKyByZXQgPSBmZl9pbmxpbmtfY29uc3VtZV9mcmFtZShpbmxpbmssICZm cmFtZSk7CisgaWYgKHJldCA8IDApCisgcmV0dXJuIHJldDsKKyBpZiAocmV0ID4gMCkKKyByZXR1 cm4gZmlsdGVyX2ZyYW1lKGlubGluaywgZnJhbWUpOworIH0KKworIGlmICghd2N0eC0+ZW9mICYm IGZmX2lubGlua19hY2tub3dsZWRnZV9zdGF0dXMoaW5saW5rLCAmc3RhdHVzLCAmcHRzKSkKKyB3 Y3R4LT5lb2YgPSBzdGF0dXMgPT0gQVZFUlJPUl9FT0Y7CisKKyBpZiAod2N0eC0+ZW9mKSB7Cisg cHVzaF9sYXN0X2ZyYW1lKG91dGxpbmspOworCisgZmZfb3V0bGlua19zZXRfc3RhdHVzKG91dGxp bmssIEFWRVJST1JfRU9GLCB3Y3R4LT5uZXh0X3B0cyk7CisgcmV0dXJuIDA7CisgfQorCisgRkZf RklMVEVSX0ZPUldBUkRfV0FOVEVEKG91dGxpbmssIGlubGluayk7CisKKyByZXR1cm4gRkZFUlJP Ul9OT1RfUkVBRFk7Cit9CisKK3N0YXRpYyBpbnQgcXVlcnlfZm9ybWF0cyhjb25zdCBBVkZpbHRl ckNvbnRleHQgKmN0eCwKKyBBVkZpbHRlckZvcm1hdHNDb25maWcgKipjZmdfaW4sCisgQVZGaWx0 ZXJGb3JtYXRzQ29uZmlnICoqY2ZnX291dCkKK3sKKyBzdGF0aWMgY29uc3QgZW51bSBBVlNhbXBs ZUZvcm1hdCBzYW1wbGVfZm10c1tdID0gewpBVl9TQU1QTEVfRk1UX0ZMVCwgQVZfU0FNUExFX0ZN VF9OT05FIH07CisgQVZDaGFubmVsTGF5b3V0IGNobGF5b3V0c1tdID0geyBGRl9DT1VOVDJMQVlP VVQoMSksIHsgMCB9IH07CisgaW50IHNhbXBsZV9yYXRlc1tdID0geyAxNjAwMCwgLTEgfTsKKyBp bnQgcmV0OworCisgcmV0ID0gZmZfc2V0X2NvbW1vbl9mb3JtYXRzX2Zyb21fbGlzdDIoY3R4LCBj ZmdfaW4sIGNmZ19vdXQsIHNhbXBsZV9mbXRzKTsKKyBpZiAocmV0IDwgMCkKKyByZXR1cm4gcmV0 OworCisgcmV0ID0gZmZfc2V0X2NvbW1vbl9jaGFubmVsX2xheW91dHNfZnJvbV9saXN0MihjdHgs IGNmZ19pbiwgY2ZnX291dCwKY2hsYXlvdXRzKTsKKyBpZiAocmV0IDwgMCkKKyByZXR1cm4gcmV0 OworCisgcmV0dXJuIGZmX3NldF9jb21tb25fc2FtcGxlcmF0ZXNfZnJvbV9saXN0MihjdHgsIGNm Z19pbiwgY2ZnX291dCwKc2FtcGxlX3JhdGVzKTsKK30KKworI2RlZmluZSBPRkZTRVQoeCkgb2Zm c2V0b2YoV2hpc3BlckNvbnRleHQsIHgpCisjZGVmaW5lIEZMQUdTIEFWX09QVF9GTEFHX0FVRElP X1BBUkFNIHwgQVZfT1BUX0ZMQUdfRklMVEVSSU5HX1BBUkFNCisKK3N0YXRpYyBjb25zdCBBVk9w dGlvbiB3aGlzcGVyX29wdGlvbnNbXSA9IHsKKyB7ICJtb2RlbCIsICJQYXRoIHRvIHRoZSB3aGlz cGVyLmNwcCBtb2RlbCBmaWxlIiwgT0ZGU0VUKG1vZGVsX3BhdGgpLApBVl9PUFRfVFlQRV9TVFJJ TkcsLmZsYWdzID0gRkxBR1MgfSwgeyAibGFuZ3VhZ2UiLCAiTGFuZ3VhZ2UgZm9yCnRyYW5zY3Jp cHRpb24gKCdhdXRvJyBmb3IgYXV0by1kZXRlY3QpIiwgT0ZGU0VUKGxhbmd1YWdlKSwKQVZfT1BU X1RZUEVfU1RSSU5HLCB7LnN0ciA9ICJhdXRvIn0sIC5mbGFncyA9IEZMQUdTIH0sCisgeyAicXVl dWUiLCAiQXVkaW8gcXVldWUgc2l6ZSIsIE9GRlNFVChxdWV1ZSksIEFWX09QVF9UWVBFX0RVUkFU SU9OLAp7Lmk2NCA9IDMwMDAwMDB9LCAyMDAwMCwgSU5UNjRfTUFYLCAuZmxhZ3MgPSBGTEFHUyB9 LAorIHsgInVzZV9ncHUiLCAiVXNlIEdQVSBmb3IgcHJvY2Vzc2luZyIsIE9GRlNFVCh1c2VfZ3B1 KSwKQVZfT1BUX1RZUEVfQk9PTCwgey5pNjQgPSAxfSwgMCwgMSwgLmZsYWdzID0gRkxBR1MgfSwK KyB7ICJncHVfZGV2aWNlIiwgIkdQVSBkZXZpY2UgdG8gdXNlIiwgT0ZGU0VUKGdwdV9kZXZpY2Up LApBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gMH0sIDAsIElOVF9NQVgsIC5mbGFncyA9IEZMQUdT IH0sCisgeyAiZGVzdGluYXRpb24iLCAiT3V0cHV0IGRlc3RpbmF0aW9uIiwgT0ZGU0VUKGRlc3Rp bmF0aW9uKSwKQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0ciA9ICIifSwgLmZsYWdzID0gRkxBR1Mg fSwKKyB7ICJmb3JtYXQiLCAiT3V0cHV0IGZvcm1hdCAodGV4dHxzcnR8anNvbikiLCBPRkZTRVQo Zm9ybWF0KSwKQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0ciA9ICJ0ZXh0In0sIC5mbGFncyA9IEZM QUdTIH0sCisgeyAidmFkX21vZGVsIiwgIlBhdGggdG8gdGhlIFZBRCBtb2RlbCBmaWxlIiwgT0ZG U0VUKHZhZF9tb2RlbF9wYXRoKSwKQVZfT1BUX1RZUEVfU1RSSU5HLC5mbGFncyA9IEZMQUdTIH0s CisgeyAidmFkX3RocmVzaG9sZCIsICJWQUQgdGhyZXNob2xkIiwgT0ZGU0VUKHZhZF90aHJlc2hv bGQpLApBVl9PUFRfVFlQRV9GTE9BVCwgey5kYmwgPSAwLjV9LCAwLjAsIDEuMCwgLmZsYWdzID0g RkxBR1MgfSwKKyB7ICJ2YWRfbWluX3NwZWVjaF9kdXJhdGlvbiIsICJNaW5pbXVtIHNwZWVjaCBk dXJhdGlvbiBmb3IgVkFEIiwKT0ZGU0VUKHZhZF9taW5fc3BlZWNoX2R1cmF0aW9uKSwgQVZfT1BU X1RZUEVfRFVSQVRJT04sIHsuaTY0ID0gNTAwMDB9LAoyMDAwMCwgSU5UNjRfTUFYLCAuZmxhZ3Mg PSBGTEFHUyB9LAorIHsgInZhZF9taW5fc2lsZW5jZV9kdXJhdGlvbiIsICJNaW5pbXVtIHNpbGVu Y2UgZHVyYXRpb24gZm9yIFZBRCIsCk9GRlNFVCh2YWRfbWluX3NpbGVuY2VfZHVyYXRpb24pLCBB Vl9PUFRfVFlQRV9EVVJBVElPTiwgey5pNjQgPQo1MDAwMDB9LCAwLCBJTlQ2NF9NQVgsIC5mbGFn cyA9IEZMQUdTIH0sCisgeyBOVUxMIH0KK307CisKK3N0YXRpYyBjb25zdCBBVkNsYXNzIHdoaXNw ZXJfY2xhc3MgPSB7CisgLmNsYXNzX25hbWUgPSAid2hpc3BlciIsCisgLml0ZW1fbmFtZSA9IGF2 X2RlZmF1bHRfaXRlbV9uYW1lLAorIC5vcHRpb24gPSB3aGlzcGVyX29wdGlvbnMsCisgLnZlcnNp b24gPSBMSUJBVlVUSUxfVkVSU0lPTl9JTlQsCit9OworCitjb25zdCBGRkZpbHRlciBmZl9hZl93 aGlzcGVyID0geworIC5wLm5hbWUgPSAid2hpc3BlciIsCisgLnAuZGVzY3JpcHRpb24gPSBOVUxM X0lGX0NPTkZJR19TTUFMTCgiVHJhbnNjcmliZSBhdWRpbyB1c2luZyB3aGlzcGVyLmNwcC4iKSwK KyAucC5wcml2X2NsYXNzID0gJndoaXNwZXJfY2xhc3MsCisgLnAuZmxhZ3MgPSBBVkZJTFRFUl9G TEFHX01FVEFEQVRBX09OTFksCisgLmluaXQgPSBpbml0LAorIC51bmluaXQgPSB1bmluaXQsCisg LmFjdGl2YXRlID0gYWN0aXZhdGUsCisgLnByaXZfc2l6ZSA9IHNpemVvZihXaGlzcGVyQ29udGV4 dCksCisgRklMVEVSX0lOUFVUUyhmZl9hdWRpb19kZWZhdWx0X2ZpbHRlcnBhZCksCisgRklMVEVS X09VVFBVVFMoZmZfYXVkaW9fZGVmYXVsdF9maWx0ZXJwYWQpLAorIEZJTFRFUl9RVUVSWV9GVU5D MihxdWVyeV9mb3JtYXRzKSwKK307CmRpZmYgLS1naXQgYS9saWJhdmZpbHRlci9hbGxmaWx0ZXJz LmMgYi9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMKaW5kZXggNDA5MDk5YmYxZi4uZWFmMGM4ZmU2 ZiAxMDA2NDQKLS0tIGEvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jCisrKyBiL2xpYmF2ZmlsdGVy L2FsbGZpbHRlcnMuYwpAQCAtMTYzLDYgKzE2Myw4IEBAIGV4dGVybiBjb25zdCBGRkZpbHRlciBm Zl9hZl92aXJ0dWFsYmFzczsKZXh0ZXJuIGNvbnN0IEZGRmlsdGVyIGZmX2FmX3ZvbHVtZTsKZXh0 ZXJuIGNvbnN0IEZGRmlsdGVyIGZmX2FmX3ZvbHVtZWRldGVjdDsKK2V4dGVybiBjb25zdCBGRkZp bHRlciBmZl9hZl93aGlzcGVyOworCmV4dGVybiBjb25zdCBGRkZpbHRlciBmZl9hc3JjX2FldmFs c3JjOwpleHRlcm4gY29uc3QgRkZGaWx0ZXIgZmZfYXNyY19hZmRlbGF5c3JjOwpleHRlcm4gY29u c3QgRkZGaWx0ZXIgZmZfYXNyY19hZmlyZXFzcmM7Ci0tIAoyLjQzLjAKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlz dApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0 aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBl bWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJz Y3JpYmUiLgo=