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 B88A34D0B4 for ; Fri, 30 May 2025 11:24:03 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id AEC4568DC77; Fri, 30 May 2025 14:23:59 +0300 (EEST) Received: from mail-pj1-f54.google.com (mail-pj1-f54.google.com [209.85.216.54]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id A9B0468D493 for ; Fri, 30 May 2025 14:23:53 +0300 (EEST) Received: by mail-pj1-f54.google.com with SMTP id 98e67ed59e1d1-3116db72bd7so1945194a91.2 for ; Fri, 30 May 2025 04:23:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748604231; x=1749209031; 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=cJAiZqpEBAPqAxypdUysabDX2yLIT9YMZJBfFrkBmtE=; b=HUguvz+AiLYLgBaPrrW0wndOU0dMs7rTboFbGnRE2mRJja6y4nP0kHU07kuUeUTMyB uaGrZpPAuxDAXI9a/UBecc77YPXyTjT09uwCGZMyT88RR0HCUSiti+r0LO4BQxy6f4oV ppiWXNuHlMFpH0qF2TPAH6PIuNSCL7D2KtbT1blviggE2y0JOOrBs8xOZ4wsCycPzoFJ oN9o8WpmYRUQK7eM2dRr2Vhletm+gcll4XVx3WIfm0DWWx+eyZ1MHwscYjpQJ7a0KOcu JfkP0F9ur072Gg8fYD/6QNZqJcAk7rQYV6qe0qItJWMeVitFy+7U11WUjhKIy2CJVTBn xeUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748604231; x=1749209031; 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=cJAiZqpEBAPqAxypdUysabDX2yLIT9YMZJBfFrkBmtE=; b=hi568gKWOZo1viZ4RUIl4XVRQCM9QXcz688uVYg+2e+OrTMte7Q3i7a2n+pTX8sOqe hOD5fWYBC0R1Llh4T8i2835DxT54jZTWdUv/9LbngDcBoaNWQYakQirNQYjH8Z42AmEE t7AP/2PIKjiS15987JsUrl2z9JvkljhHE0fJwxsWrekDy/HCXowA8wrFhdeK17IndwIC qqhsL3js3TTVqT2CINI7OYULPTNHN24/hHrl+SZ/qMp2hrQ9hZO6JkADDQEncGfLBXoU 70pvoDHTwWEde/Qw1rmnIpLQoioGLspoo9HzFXcb9bfPX808o89pMhwA6+H/AeqHgILM YIKQ== X-Gm-Message-State: AOJu0Yydo5wbyg6Tg4ZMrQdEVOLeJRm95ptcGTaWtr9B0pXpb7WBL6A7 ep5cQYZUEizyk+5tw26ADa2tLKlKE1Z539P3vLvf5J1pxGjFETId51UcFnM55+4NfWGoYdeN/Uj Rdar536doyu7BioNuCwV9RfuPDIEVxHXK0yq0 X-Gm-Gg: ASbGncuPBYnxhK+tvTXN3me1FXCVFFGBrM0T2yyDKVsL9RXFL/FhT27/FZ5iZCrO70E X7LX3oSubhL5TRlrhgowHazh1KyMvdn4D+oZAj16eiMH5kl/8WnI6J5NLDvKSalZMxjHpjBGr/h IIeiru8O1BNm44ykV6A0ohzm6vG602ZkXk X-Google-Smtp-Source: AGHT+IG8OszMrPvf+YZS6tqcttzDSeqSm6uabYCgP6gTTCLGh/fNHuPsuTkRd9l8cnzF+0fp/bmuA0isrdFq9nVp0GY= X-Received: by 2002:a17:90b:2701:b0:311:c939:c84a with SMTP id 98e67ed59e1d1-312416340bamr5484478a91.15.1748604231300; Fri, 30 May 2025 04:23:51 -0700 (PDT) MIME-Version: 1.0 References: <20250515211142.3D1624128D7@natalya.videolan.org> In-Reply-To: <20250515211142.3D1624128D7@natalya.videolan.org> From: Ramiro Polla Date: Fri, 30 May 2025 13:23:40 +0200 X-Gm-Features: AX0GCFt_lYs9vMntUkXVakn1sorbdRkZXKYdXRY_LHBarb9GhB0GKriXol5JNs8 Message-ID: To: ffmpeg-devel@ffmpeg.org Subject: Re: [FFmpeg-devel] [FFmpeg-cvslog] fftools/resources: Add resource manager files with build-time compression 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: T24gVGh1LCBNYXkgMTUsIDIwMjUgYXQgMTE6MTHigK9QTSBzb2Z0d29ya3ogPGdpdEB2aWRlb2xh bi5vcmc+IHdyb3RlOgo+Cj4gZmZtcGVnIHwgYnJhbmNoOiBtYXN0ZXIgfCBzb2Z0d29ya3ogPHNv ZnR3b3JrekBob3RtYWlsLmNvbT4gfCBUaHUgTWF5IDE1IDIzOjA3OjU0IDIwMjUgKzAyMDB8IFs1 MTdhODA1NTY1NTc5ODk3MGQ5NGE0YzVlYTkxMjUxMTM2MjUyMGVhXSB8IGNvbW1pdHRlcjogc29m dHdvcmt6Cj4KPiBmZnRvb2xzL3Jlc291cmNlczogQWRkIHJlc291cmNlIG1hbmFnZXIgZmlsZXMg d2l0aCBidWlsZC10aW1lIGNvbXByZXNzaW9uCj4KPiBDb21wcmVzc2lvbiByZXF1aXJlcyB6bGli IHRvIGJlIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHJlc291cmNlcyB3aWxsCj4gYmUgaW5jbHVkZWQg dW5jb21wcmVzc2VkIC0gaW4gZWl0aGVyIGNhc2UgdmlhIEJJTjJDLgo+Cj4gSXQgY2FuIGFsc28g YmUgZGlzYWJsZWQgdmlhCj4KPiAuL2NvbmZpZ3VyZSAtLWRpc2FibGUtcmVzb3VyY2UtY29tcHJl c3Npb24KPgo+IFNpemUgZmlndXJlczoKPgo+IGdyYXBoLmNzcyAgICAgICAgIDc3NTIKPiBncmFw aC5jc3MubWluICAgICA2NjU1IChjc3MgaXMgYWx3YXlzIG1pbmlmaWVkKQo+IGdyYXBoLmh0bWwg ICAgICAgIDIxNTMKPgo+IE5vIENvbXByZXNzaW9uCj4KPiBncmFwaC5jc3MuYyAgICAgIDQwMDI2 Cj4gZ3JhcGguY3NzLm8gICAgICAgOTM0NCAoNjY4OCkKPiBncmFwaC5odG1sLmMgICAgIDEzMDE2 Cj4gZ3JhcGguaHRtbC5vICAgICAgNDg0OCAoMjE4NikKPgo+IFdpdGggQ29tcHJlc3Npb24KPgo+ IGdyYXBoLmNzcy5jICAgICAgMTAyMDYKPiBncmFwaC5jc3MubyAgICAgICA0MzY4ICgxNzE4KQo+ IGdyYXBoLmh0bWwuYyAgICAgIDU3MjUKPiBncmFwaC5odG1sLm8gICAgICAzNjMyICg5NzEpCj4K PiBOdW1iZXJzIGluIGJyYWNrZXRzOiAucm9kYXRhIHNpemUgZnJvbSAnc2l6ZSAtQXggLWQgKi5v Jwo+Cj4gU2lnbmVkLW9mZi1ieTogc29mdHdvcmt6IDxzb2Z0d29ya3pAaG90bWFpbC5jb20+Cj4K PiA+IGh0dHA6Ly9naXQudmlkZW9sYW4ub3JnL2dpdHdlYi5jZ2kvZmZtcGVnLmdpdC8/YT1jb21t aXQ7aD01MTdhODA1NTY1NTc5ODk3MGQ5NGE0YzVlYTkxMjUxMTM2MjUyMGVhCj4gLS0tCj4KPiAg Y29uZmlndXJlICAgICAgICAgICAgICAgICAgICB8ICAgNSArCj4gIGZmYnVpbGQvY29tbW9uLm1h ayAgICAgICAgICAgfCAgNDMgKysrKystCj4gIGZmdG9vbHMvTWFrZWZpbGUgICAgICAgICAgICAg fCAgIDMgKy0KPiAgZmZ0b29scy9yZXNvdXJjZXMvLmdpdGlnbm9yZSB8ICAgNCArCj4gIGZmdG9v bHMvcmVzb3VyY2VzL01ha2VmaWxlICAgfCAgMTMgKysKPiAgZmZ0b29scy9yZXNvdXJjZXMvZ3Jh cGguY3NzICB8IDM1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4gIGZmdG9vbHMvcmVzb3VyY2VzL2dyYXBoLmh0bWwgfCAgODYgKysrKysrKysrKysKPiAgZmZ0 b29scy9yZXNvdXJjZXMvcmVzbWFuLmMgICB8IDIzMSArKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4gIGZmdG9vbHMvcmVzb3VyY2VzL3Jlc21hbi5oICAgfCAgNTAgKysrKysrCj4gIDkgZmls ZXMgY2hhbmdlZCwgNzg1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpbLi4uXQoKPiBk aWZmIC0tZ2l0IGEvZmZ0b29scy9yZXNvdXJjZXMvcmVzbWFuLmMgYi9mZnRvb2xzL3Jlc291cmNl cy9yZXNtYW4uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMC4uYTll MjE2MjZmYQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9mZnRvb2xzL3Jlc291cmNlcy9yZXNtYW4u Ywo+IEBAIC0wLDAgKzEsMjMxIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAoYykgMjAyNSAtIHNv ZnR3b3Jrego+ICsgKgo+ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gKyAqCj4g KyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IKPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqIEZGbXBlZyBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVQo+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYWxvbmcg d2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91 bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN QSAwMjExMC0xMzAxIFVTQQo+ICsgKi8KPiArCj4gKy8qKgo+ICsgKiBAZmlsZQo+ICsgKiBvdXRw dXQgd3JpdGVycyBmb3IgZmlsdGVyZ3JhcGggZGV0YWlscwo+ICsgKi8KPiArCj4gKyNpbmNsdWRl ICJjb25maWcuaCIKPiArCj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4KPiArCj4gKyNpZiBDT05GSUdf UkVTT1VSQ0VfQ09NUFJFU1NJT04KPiArI2luY2x1ZGUgPHpsaWIuaD4KPiArI2VuZGlmCj4gKwo+ ICsjaW5jbHVkZSAicmVzbWFuLmgiCj4gKyNpbmNsdWRlICJmZnRvb2xzL2ZmbXBlZ19maWx0ZXIu aCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIgo+ICsjaW5jbHVkZSAibGliYXZ1 dGlsL3BpeGRlc2MuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9kaWN0LmgiCj4gKyNpbmNsdWRl ICJsaWJhdnV0aWwvY29tbW9uLmgiCj4gKwo+ICtleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBm Zl9ncmFwaF9odG1sX2RhdGFbXTsKPiArZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGludCBmZl9ncmFw aF9odG1sX2xlbjsKPiArCj4gK2V4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIGZmX2dyYXBoX2Nz c19kYXRhW107Cj4gK2V4dGVybiBjb25zdCB1bnNpZ25lZCBmZl9ncmFwaF9jc3NfbGVuOwo+ICsK PiArc3RhdGljIGNvbnN0IEZGUmVzb3VyY2VEZWZpbml0aW9uIHJlc291cmNlX2RlZmluaXRpb25z W10gPSB7Cj4gKyAgICBbRkZfUkVTT1VSQ0VfR1JBUEhfQ1NTXSAgID0geyBGRl9SRVNPVVJDRV9H UkFQSF9DU1MsICAgImdyYXBoLmNzcyIsICAgJmZmX2dyYXBoX2Nzc19kYXRhWzBdLCAgICZmZl9n cmFwaF9jc3NfbGVuICAgfSwKPiArICAgIFtGRl9SRVNPVVJDRV9HUkFQSF9IVE1MXSAgPSB7IEZG X1JFU09VUkNFX0dSQVBIX0hUTUwsICAiZ3JhcGguaHRtbCIsICAmZmZfZ3JhcGhfaHRtbF9kYXRh WzBdLCAgJmZmX2dyYXBoX2h0bWxfbGVuICB9LAo+ICt9Owo+ICsKPiArCj4gK3N0YXRpYyBjb25z dCBBVkNsYXNzIHJlc21hbl9jbGFzcyA9IHsKPiArICAgIC5jbGFzc19uYW1lID0gIlJlc291cmNl TWFuYWdlciIsCj4gK307Cj4gKwo+ICt0eXBlZGVmIHN0cnVjdCBSZXNvdXJjZU1hbmFnZXJDb250 ZXh0IHsKPiArICAgIGNvbnN0IEFWQ2xhc3MgKmNsYXNzOwo+ICsgICAgQVZEaWN0aW9uYXJ5ICpy ZXNvdXJjZV9kaWM7Cj4gK30gUmVzb3VyY2VNYW5hZ2VyQ29udGV4dDsKPiArCj4gK3N0YXRpYyBB Vk11dGV4IG11dGV4ID0gQVZfTVVURVhfSU5JVElBTElaRVI7Cj4gKwo+ICtSZXNvdXJjZU1hbmFn ZXJDb250ZXh0ICpyZXNtYW5fY3R4ID0gTlVMTDsKCnN0YXRpYwoKPiArI2lmIENPTkZJR19SRVNP VVJDRV9DT01QUkVTU0lPTgo+ICsKPiArc3RhdGljIGludCBkZWNvbXByZXNzX2d6aXAoUmVzb3Vy Y2VNYW5hZ2VyQ29udGV4dCAqY3R4LCB1aW50OF90ICppbiwgdW5zaWduZWQgaW5fbGVuLCBjaGFy ICoqb3V0LCBzaXplX3QgKm91dF9sZW4pCj4gK3sKPiArICAgIHpfc3RyZWFtIHN0cm07Cj4gKyAg ICB1bnNpZ25lZCBjaHVuayA9IDY1NTM0Owo+ICsgICAgaW50IHJldDsKPiArICAgIHVpbnQ4X3Qg KmJ1ZjsKPiArCj4gKyAgICAqb3V0ID0gTlVMTDsKPiArICAgIG1lbXNldCgmc3RybSwgMCwgc2l6 ZW9mKHN0cm0pKTsKPiArCj4gKyAgICAvLyBBbGxvY2F0ZSBvdXRwdXQgYnVmZmVyIHdpdGggZXh0 cmEgYnl0ZSBmb3IgbnVsbCB0ZXJtaW5hdGlvbgo+ICsgICAgYnVmID0gKHVpbnQ4X3QgKilhdl9t YWxsb2N6KGNodW5rICsgMSk7CgpVbm5lY2Vzc2FyeSBjYXN0LgoKPiArICAgIGlmICghYnVmKSB7 Cj4gKyAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIGFsbG9jYXRl IGRlY29tcHJlc3Npb24gYnVmZmVyXG4iKTsKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9N RU0pOwo+ICsgICAgfQo+ICsKPiArICAgIC8vIDE1ICsgMTYgdGVsbHMgemxpYiB0byBkZXRlY3Qg R1pJUCBvciB6bGliIGF1dG9tYXRpY2FsbHkKPiArICAgIHJldCA9IGluZmxhdGVJbml0Migmc3Ry bSwgMTUgKyAxNik7Cj4gKyAgICBpZiAocmV0ICE9IFpfT0spIHsKPiArICAgICAgICBhdl9sb2co Y3R4LCBBVl9MT0dfRVJST1IsICJFcnJvciBkdXJpbmcgemxpYiBpbml0aWFsaXphdGlvbjogJXNc biIsIHN0cm0ubXNnKTsKPiArICAgICAgICBhdl9mcmVlKGJ1Zik7Cj4gKyAgICAgICAgcmV0dXJu IEFWRVJST1IoRU5PU1lTKTsKPiArICAgIH0KPiArCj4gKyAgICBzdHJtLmF2YWlsX2luICA9IGlu X2xlbjsKPiArICAgIHN0cm0ubmV4dF9pbiAgID0gaW47Cj4gKyAgICBzdHJtLmF2YWlsX291dCA9 IGNodW5rOwo+ICsgICAgc3RybS5uZXh0X291dCAgPSBidWY7Cj4gKwo+ICsgICAgcmV0ID0gaW5m bGF0ZSgmc3RybSwgWl9GSU5JU0gpOwo+ICsgICAgaWYgKHJldCAhPSBaX09LICYmIHJldCAhPSBa X1NUUkVBTV9FTkQpIHsKPiArICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJJbmZs YXRlIGZhaWxlZDogJWQsICVzXG4iLCByZXQsIHN0cm0ubXNnKTsKPiArICAgICAgICBpbmZsYXRl RW5kKCZzdHJtKTsKPiArICAgICAgICBhdl9mcmVlKGJ1Zik7Cj4gKyAgICAgICAgcmV0dXJuIChy ZXQgPT0gWl9TVFJFQU1fRU5EKSA/IFpfT0sgOiAoKHJldCA9PSBaX09LKSA/IFpfQlVGX0VSUk9S IDogcmV0KTsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoc3RybS5hdmFpbF9vdXQgPT0gMCkgewo+ ICsgICAgICAgIC8vIFRPRE86IEVycm9yIG9yIGxvb3AgZGVjb2Rpbmc/CgpeXgoKPiArICAgICAg ICBhdl9sb2coY3R4LCBBVl9MT0dfV0FSTklORywgIkRlY29tcHJlc3Npb24gYnVmZmVyIG1heSBi ZSB0b28gc21hbGxcbiIpOwo+ICsgICAgfQo+ICsKPiArICAgICpvdXRfbGVuID0gY2h1bmsgLSBz dHJtLmF2YWlsX291dDsKPiArICAgIGJ1Zlsqb3V0X2xlbl0gPSAwOyAvLyBFbnN1cmUgbnVsbCB0 ZXJtaW5hdGlvbgo+ICsKPiArICAgIGluZmxhdGVFbmQoJnN0cm0pOwo+ICsgICAgKm91dCA9IChj aGFyICopYnVmOwo+ICsgICAgcmV0dXJuIFpfT0s7Cj4gK30KPiArI2VuZGlmCj4gKwo+ICtzdGF0 aWMgUmVzb3VyY2VNYW5hZ2VyQ29udGV4dCAqZ2V0X3Jlc21hbl9jb250ZXh0KHZvaWQpCj4gK3sK PiArICAgIFJlc291cmNlTWFuYWdlckNvbnRleHQgKnJlcyA9IHJlc21hbl9jdHg7Cj4gKwo+ICsg ICAgZmZfbXV0ZXhfbG9jaygmbXV0ZXgpOwo+ICsKPiArICAgIGlmIChyZXMpCj4gKyAgICAgICAg Z290byBlbmQ7Cj4gKwo+ICsgICAgcmVzID0gYXZfbWFsbG9jeihzaXplb2YoUmVzb3VyY2VNYW5h Z2VyQ29udGV4dCkpOwo+ICsgICAgaWYgKCFyZXMpIHsKPiArICAgICAgICBhdl9sb2coTlVMTCwg QVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIGFsbG9jYXRlIHJlc291cmNlIG1hbmFnZXIgY29udGV4 dFxuIik7Cj4gKyAgICAgICAgZ290byBlbmQ7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmVzLT5jbGFz cyA9ICZyZXNtYW5fY2xhc3M7Cj4gKyAgICByZXNtYW5fY3R4ID0gcmVzOwo+ICsKPiArZW5kOgo+ ICsgICAgZmZfbXV0ZXhfdW5sb2NrKCZtdXRleCk7Cj4gKyAgICByZXR1cm4gcmVzOwo+ICt9Cj4g Kwo+ICsKPiArdm9pZCBmZl9yZXNtYW5fdW5pbml0KHZvaWQpCj4gK3sKPiArICAgIGZmX211dGV4 X2xvY2soJm11dGV4KTsKPiArCj4gKyAgICBpZiAocmVzbWFuX2N0eCkgewo+ICsgICAgICAgIGlm IChyZXNtYW5fY3R4LT5yZXNvdXJjZV9kaWMpCj4gKyAgICAgICAgICAgIGF2X2RpY3RfZnJlZSgm cmVzbWFuX2N0eC0+cmVzb3VyY2VfZGljKTsKPiArICAgICAgICBhdl9mcmVlcCgmcmVzbWFuX2N0 eCk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgZmZfbXV0ZXhfdW5sb2NrKCZtdXRleCk7Cj4gK30KPiAr Cj4gKwo+ICtjaGFyICpmZl9yZXNtYW5fZ2V0X3N0cmluZyhGRlJlc291cmNlSWQgcmVzb3VyY2Vf aWQpCgpjb25zdCBjaGFyICoKCj4gK3sKPiArICAgIFJlc291cmNlTWFuYWdlckNvbnRleHQgKmN0 eCAgICAgICAgICAgICAgID0gZ2V0X3Jlc21hbl9jb250ZXh0KCk7Cj4gKyAgICBGRlJlc291cmNl RGVmaW5pdGlvbiByZXNvdXJjZV9kZWZpbml0aW9uID0geyAwIH07Cj4gKyAgICBBVkRpY3Rpb25h cnlFbnRyeSAqZGljX2VudHJ5Owo+ICsgICAgY2hhciAqcmVzID0gTlVMTDsKPiArCj4gKyAgICBp ZiAoIWN0eCkKPiArICAgICAgICByZXR1cm4gTlVMTDsKPiArCj4gKyAgICBmb3IgKHVuc2lnbmVk IGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMocmVzb3VyY2VfZGVmaW5pdGlvbnMpOyArK2kpIHsK PiArICAgICAgICBGRlJlc291cmNlRGVmaW5pdGlvbiBkZWYgPSByZXNvdXJjZV9kZWZpbml0aW9u c1tpXTsKPiArICAgICAgICBpZiAoZGVmLnJlc291cmNlX2lkID09IHJlc291cmNlX2lkKSB7Cj4g KyAgICAgICAgICAgIHJlc291cmNlX2RlZmluaXRpb24gPSBkZWY7Cj4gKyAgICAgICAgICAgIGJy ZWFrOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICBpZiAoIXJlc291cmNlX2RlZmlu aXRpb24ubmFtZSkgewo+ICsgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIlVuYWJs ZSB0byBmaW5kIHJlc291cmNlIHdpdGggSUQgJWRcbiIsIHJlc291cmNlX2lkKTsKPiArICAgICAg ICByZXR1cm4gTlVMTDsKPiArICAgIH0KPiArCj4gKyAgICBmZl9tdXRleF9sb2NrKCZtdXRleCk7 Cj4gKwo+ICsgICAgZGljX2VudHJ5ID0gYXZfZGljdF9nZXQoY3R4LT5yZXNvdXJjZV9kaWMsIHJl c291cmNlX2RlZmluaXRpb24ubmFtZSwgTlVMTCwgMCk7Cj4gKwo+ICsgICAgaWYgKCFkaWNfZW50 cnkpIHsKPiArICAgICAgICBpbnQgZGljdF9yZXQ7Cj4gKwo+ICsjaWYgQ09ORklHX1JFU09VUkNF X0NPTVBSRVNTSU9OCj4gKwo+ICsgICAgICAgIGNoYXIgKm91dCA9IE5VTEw7Cj4gKyAgICAgICAg c2l6ZV90IG91dF9sZW47Cj4gKwo+ICsgICAgICAgIGludCByZXQgPSBkZWNvbXByZXNzX2d6aXAo Y3R4LCAodWludDhfdCAqKXJlc291cmNlX2RlZmluaXRpb24uZGF0YSwgKnJlc291cmNlX2RlZmlu aXRpb24uZGF0YV9sZW4sICZvdXQsICZvdXRfbGVuKTsKPiArCj4gKyAgICAgICAgaWYgKHJldCkg ewo+ICsgICAgICAgICAgICBhdl9sb2coTlVMTCwgQVZfTE9HX0VSUk9SLCAiVW5hYmxlIHRvIGRl Y29tcHJlc3MgdGhlIHJlc291cmNlIHdpdGggSUQgJWRcbiIsIHJlc291cmNlX2lkKTsKPiArICAg ICAgICAgICAgZ290byBlbmQ7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBkaWN0X3JldCA9 IGF2X2RpY3Rfc2V0KCZjdHgtPnJlc291cmNlX2RpYywgcmVzb3VyY2VfZGVmaW5pdGlvbi5uYW1l LCBvdXQsIDApOwo+ICsgICAgICAgIGlmIChkaWN0X3JldCA8IDApIHsKPiArICAgICAgICAgICAg YXZfbG9nKE5VTEwsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBzdG9yZSBkZWNvbXByZXNzZWQg cmVzb3VyY2UgaW4gZGljdGlvbmFyeTogJWRcbiIsIGRpY3RfcmV0KTsKPiArICAgICAgICAgICAg YXZfZnJlZXAoJm91dCk7Cj4gKyAgICAgICAgICAgIGdvdG8gZW5kOwo+ICsgICAgICAgIH0KPiAr Cj4gKyAgICAgICAgYXZfZnJlZXAoJm91dCk7Cj4gKyNlbHNlCj4gKwo+ICsgICAgICAgIGRpY3Rf cmV0ID0gYXZfZGljdF9zZXQoJmN0eC0+cmVzb3VyY2VfZGljLCByZXNvdXJjZV9kZWZpbml0aW9u Lm5hbWUsIChjb25zdCBjaGFyICopcmVzb3VyY2VfZGVmaW5pdGlvbi5kYXRhLCAwKTsKPiArICAg ICAgICBpZiAoZGljdF9yZXQgPCAwKSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9M T0dfRVJST1IsICJGYWlsZWQgdG8gc3RvcmUgcmVzb3VyY2UgaW4gZGljdGlvbmFyeTogJWRcbiIs IGRpY3RfcmV0KTsKPiArICAgICAgICAgICAgZ290byBlbmQ7Cj4gKyAgICAgICAgfQo+ICsKPiAr I2VuZGlmCj4gKyAgICAgICAgZGljX2VudHJ5ID0gYXZfZGljdF9nZXQoY3R4LT5yZXNvdXJjZV9k aWMsIHJlc291cmNlX2RlZmluaXRpb24ubmFtZSwgTlVMTCwgMCk7Cj4gKwo+ICsgICAgICAgIGlm ICghZGljX2VudHJ5KSB7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1Is ICJGYWlsZWQgdG8gcmV0cmlldmUgcmVzb3VyY2UgZnJvbSBkaWN0aW9uYXJ5IGFmdGVyIHN0b3Jp bmcgaXRcbiIpOwo+ICsgICAgICAgICAgICBnb3RvIGVuZDsKPiArICAgICAgICB9Cj4gKyAgICB9 Cj4gKwo+ICsgICAgcmVzID0gZGljX2VudHJ5LT52YWx1ZTsKPiArCj4gK2VuZDoKPiArICAgIGZm X211dGV4X3VubG9jaygmbXV0ZXgpOwo+ICsgICAgcmV0dXJuIHJlczsKPiArfQo+IGRpZmYgLS1n aXQgYS9mZnRvb2xzL3Jlc291cmNlcy9yZXNtYW4uaCBiL2ZmdG9vbHMvcmVzb3VyY2VzL3Jlc21h bi5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi42NDg1ZGI1MDkx Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2ZmdG9vbHMvcmVzb3VyY2VzL3Jlc21hbi5oCj4gQEAg LTAsMCArMSw1MCBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjUgLSBzb2Z0d29ya3oK PiArICoKPiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+ICsgKgo+ICsgKiBGRm1w ZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4gKyAq IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMKPiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyCj4gKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsgKiBGRm1wZWcgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiAr ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZSBHTlUKPiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KPiArICoKPiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZt cGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gKyAqIEZvdW5kYXRpb24s IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAt MTMwMSBVU0EKPiArICovCj4gKwo+ICsjaWZuZGVmIEZGVE9PTFNfUkVTT1VSQ0VTX1JFU01BTl9I Cj4gKyNkZWZpbmUgRkZUT09MU19SRVNPVVJDRVNfUkVTTUFOX0gKPiArCj4gKyNpbmNsdWRlIDxz dGRpbnQuaD4KPiArCj4gKyNpbmNsdWRlICJjb25maWcuaCIKPiArI2luY2x1ZGUgImZmdG9vbHMv ZmZtcGVnLmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZ1dGlsLmgiCj4gKyNpbmNsdWRlICJs aWJhdnV0aWwvYnByaW50LmgiCj4gKyNpbmNsdWRlICJmZnRvb2xzL3RleHRmb3JtYXQvYXZ0ZXh0 Zm9ybWF0LmgiCgpBbGwgaW5jbHVkZXMgaW4gdGhpcyBmaWxlIGFyZSB1bm5lY2Vzc2FyeS4KCj4g Kwo+ICt0eXBlZGVmIGVudW0gewo+ICsgICAgRkZfUkVTT1VSQ0VfR1JBUEhfQ1NTLAo+ICsgICAg RkZfUkVTT1VSQ0VfR1JBUEhfSFRNTCwKPiArfSBGRlJlc291cmNlSWQ7Cj4gKwo+ICt0eXBlZGVm IHN0cnVjdCBGRlJlc291cmNlRGVmaW5pdGlvbiB7Cj4gKyAgICBGRlJlc291cmNlSWQgcmVzb3Vy Y2VfaWQ7Cj4gKyAgICBjb25zdCBjaGFyICpuYW1lOwo+ICsKPiArICAgIGNvbnN0IHVuc2lnbmVk IGNoYXIgKmRhdGE7Cj4gKyAgICBjb25zdCB1bnNpZ25lZCAqZGF0YV9sZW47Cj4gKwo+ICt9IEZG UmVzb3VyY2VEZWZpbml0aW9uOwo+ICsKPiArdm9pZCBmZl9yZXNtYW5fdW5pbml0KHZvaWQpOwo+ ICsKPiArY2hhciAqZmZfcmVzbWFuX2dldF9zdHJpbmcoRkZSZXNvdXJjZUlkIHJlc291cmNlX2lk KTsKPiArCj4gKyNlbmRpZiAvKiBGRlRPT0xTX1JFU09VUkNFU19SRVNNQU5fSCAqLwpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFp bGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJv dmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0 ICJ1bnN1YnNjcmliZSIuCg==