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 ESMTPS id 491254D058 for ; Thu, 20 Feb 2025 16:21:05 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4460668C4F1; Thu, 20 Feb 2025 18:21:02 +0200 (EET) Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C0AA268C432 for ; Thu, 20 Feb 2025 18:20:55 +0200 (EET) Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-38de1a5f039so945261f8f.2 for ; Thu, 20 Feb 2025 08:20:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740068455; x=1740673255; darn=ffmpeg.org; h=content-transfer-encoding:in-reply-to:content-language:references :to:from:subject:user-agent:mime-version:date:message-id:from:to:cc :subject:date:message-id:reply-to; bh=L/9/2RLcx5tkqSU48v36APbrakDo2W7OivUV8tFbSBw=; b=MAwJW1wWQlXbubJwM30Gcvrmxs6PsYW6SM/DbL0159rviVoyVoF9FZ6ua6ofbPUe4m 8D6Fi83/aQkE3ZkXfXSaXwPTRv3DW/ou8LI8rUvFUeSAcXPsirGZwSYV1dKNSwQFTBlM g5cP6yJGKneOnIqWmHeCY+33lSeomtlba84XOO13XeXBMFWje4ZC82cXgyl59r9MM9N5 +CAfdpXhX2WVUHHHZ3q/We4pqzMleJfBl9B6SjBLlVVUHKB5tWUvyFSIr6knNwEFVMw2 QXVn7dbJJS4kYawQ4F+79djrvR+Wn68kQIc6pPindR37cHkpwYFwO3ZjNxvQjugeOxFz B3Vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740068455; x=1740673255; h=content-transfer-encoding:in-reply-to:content-language:references :to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=L/9/2RLcx5tkqSU48v36APbrakDo2W7OivUV8tFbSBw=; b=lNjkGr+oMWCKtxrGPAz1PT9SkNbJbtBEpQyzLLwHCCceGM2cvsN5KKk+OFq94Y/Q9O 9xXVfeKXqn2tLKzXCX/LMLVBfuhtHrsSDtHIs+96ktphqCS+kYqlNWo308SJJMkPjoht oehXf4SdoQYVDvJfH248OOtkRULTBAkYR4OpRANPYFXdUN9cGXVbH3s9t8t7e/+rrN7V QnsekWJcUOIq8C3A6pYTi+7O/1Q3mb5o7evZo11i8t5gjcra7foWeug+KrFzwttg206e MZEvTQUpO6BZuOFWTxtUnWl8WyJTrXPkAfGv14HdlgPOiyrUPUtup3USdt+Xje1aOr7o rgSQ== X-Gm-Message-State: AOJu0YxzTw4fzNf1lfL0pvpqGdD7uze4coI9I2prMdLVXIwGCdXpUlJV z0Q9jT5izhccSEGhXd7IFbi2L5bOolCgYeslKiYSj0LuFtLpFd6ADJnbDw== X-Gm-Gg: ASbGnctRi0V7NcqR1xlhUWqDBgW4fJlE5DJpAWUipapsVp5LNX3taQr+fIH4aCyaNvD AiWb/Ykky5/7Zn76VG4Qon3bQ2/W6DEtBqGKYQ9bgOFdyz7xUXb1WTab4OODYCIJCrJHYEyU0Wq z8qr+8pOubuWxrhYTfMfgPprpb13fF3DqcR56XHKgIXIW83DqjMS4raWox0MVbuHIieXzxsi9+B MAQW+N0taHvBHghTUkOG+D4jGaINHgkUmDmvmJaDlpOj4NJ4N5I+BfM5BjozD8KIL6Q3m5zl2fG u09dJ2x3yZySyiyLVYqMKblNTfh+HN8bQ1Nr/FcflL8Mp+GzK3ey9ELIyhcm3L0z X-Google-Smtp-Source: AGHT+IEFyXFZJB0G5mulHxXJcbaS0+cgEEir++FmqaySCwcA+1oS7IxvepsPsu9/i/MeYN6Ws6olMg== X-Received: by 2002:a05:6000:1849:b0:385:ee3f:5cbf with SMTP id ffacd0b85a97d-38f33f2f3c2mr20832147f8f.20.1740068454624; Thu, 20 Feb 2025 08:20:54 -0800 (PST) Received: from ?IPV6:2001:9e8:1da4:5800:d7d:c5d:fa71:e27c? ([2001:9e8:1da4:5800:d7d:c5d:fa71:e27c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f259d5c29sm21094819f8f.72.2025.02.20.08.20.53 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 20 Feb 2025 08:20:54 -0800 (PST) Message-ID: <413fc239-03e7-49d8-a4ea-87b29998255d@gmail.com> Date: Thu, 20 Feb 2025 17:20:53 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Leandro Santiago To: FFmpeg development discussions and patches References: <418474f4-5b38-4a44-822a-8e3c367e673c@gmail.com> Content-Language: en-US In-Reply-To: <418474f4-5b38-4a44-822a-8e3c367e673c@gmail.com> Subject: Re: [FFmpeg-devel] I've written a filter in Rust 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: SnVzdCBhIGNvcnJlY3Rpb24sIEkgbWVzc2VkIHVwIHRoZSByZWZlcmVuY2VkIHBhcGVyLCBhbmQg SSBhY3R1YWxseSBzaG91bGQgcmVmZXIgdG8gdGhpcyBvbmU6CgpodHRwczovL2FyeGl2Lm9yZy9w ZGYvMTYwMi4wMDc2MwoKQXMgdGhlIG9uZSBJIG1lbnRpb25lZCBwcmV2aW91c2x5IHNlZW1zIHRv IGJlIGFuIGV4dGVuc2lvbiBvZiB0aGUgU09SVCwgYnV0IHdpdGggYXBwZWFyYW5jZSBpbmZvcm1h dGlvbiwgd2hpY2ggaXMgKipOT1QqKiB3aGF0IHdoYXQgdGhlIGZpbHRlciBJIGltcGxlbWVudGVk LgoKQW4gZW1iYXJyYXNzaW5nIG1pc3Rha2UsIGFuZCBJIHdpbGwgZml4IGl0IGluIHRoZSBjb2Rl IGFuZCBQUiAoYnV0IGl0IHdpbGwga2VlcCBmb3JldmVyIGluIHRoZSBtYWlsaW5nIGxpc3QgOi0o KS4KCkluIGFueSBjYXNlLCBJIHByb2JhYmx5IG5lZWQgdG8gc3BlbmQgbW9yZSB0aW1lIHJlYWRp bmcgcGFwZXJzLgoKQWxzbywgSSBob3BlIGl0J3MgY2xlYXIgdGhhdCB0aGlzIHdvcmsgaXMgYSBQ T0MsIGFuZCBJIGFtIG5vdCBzdWdnZXN0aW5nIGJlaW5nIG1haW5saW5lZCwgYXQgbGVhc3Qgbm90 IGluIHRoZSBzaG9ydCB0ZXJtLgoKT24gMi8yMC8yNSAxNDowNiwgTGVhbmRybyBTYW50aWFnbyB3 cm90ZToKPiBbaW5zZXJ0IG1lbWUgaGVyZV0KPgo+ICh0aGlzIHdpbGwgYmUgYSBsb25nIGUtbWFp bCkKPgo+IERlYXIgRkZtcGVnIGRldnMsCj4KPiBpbiB0aGUgcGFzdCBkYXlzIEkndmUgYmVlbiBl eHBlcmltZW50aW5nIGhhY2tpbmcgRkZtcGVnIHVzaW5nIFJ1c3QuCj4KPiBBcyBJIGFtIGJlY29t aW5nIG1vcmUgZmFtaWxpYXIgd2l0aCB0aGUgbGliYXZmaWx0ZXIsIGFuZCBpdCBpcyBub3QgYSBk ZXBlbmRlbmN5IGZvciBhbnkgb3RoZXIgb2YgdGhlIGxpYmF2KiBsaWJzLCBJIGRlY2lkZWQgdGhp cyBpcyBhIGdvb2QgY2FuZGlkYXRlLgo+Cj4gSXQncyBhbHNvIGNvbnZlbmllbnQgYXMgSSB1c2Ug RkZtcGVnIGxpYnMgaGVhdmlseSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdCwgYW5kIG9uZSBvZiB0 aGUgZmVhdHVyZXMgSSd2ZSBiZWVuIHdvcmtpbmcgb24gaW52b2x2ZXMgYSBiYXNpYyBtdWx0aSBv YmplY3QgdHJhY2tpbmcuCj4KPiBJbiBteSBjYXNlLCBpdCBkb2VzIG5vdCBuZWVkIHRvIGJlIGEg InBlcmZlY3QiIHRyYWNraW5nIGFsZ29yaXRobSwgYXMgSSBuZWVkIHRvIGNvbXByb21pc2UgcXVh bGl0eSBvZiB0aGUgcmVzdWx0IGluIGV4Y2hhbmdlIG9mIHBlcmZvcm1hbmNlIGV4ZWN1dGluZyBp biB0aGUgQ1BVIG9ubHksIHNvIG1vc3Qgb2YgdGhlIGFsZ29yaXRobXMgb3V0IHRoZXJlIHRoYXQg bmVlZCBhIEdQVSBhcmUgb3V0IG9mIG15IHJhbmdlLgo+Cj4gSSBkZWNpZGVkIHRoZW4gdXNlIGFz IGZpcnN0IGV4cGVyaW1lbnQgYSBmaWx0ZXIgY2FsbGVkIGB0cmFja19zb3J0YCB0aGF0IGltcGxl bWVudHMgdGhlIDIwMTYgcGFwZXIgU0lNUExFIE9OTElORSBBTkQgUkVBTFRJTUUgVFJBQ0tJTkcg V0lUSCBBIERFRVAgQVNTT0NJQVRJT04gTUVUUklDLCBhcyBrbm93biBhcyBTT1JUIFsxXS4KPgo+ IFRoZSBmaWx0ZXIgYWxyZWFkeSB3b3JrcyB3ZWxsIGJhc2VkIG9uIHRoZSBgbWFzdGVyYCBicmFu Y2gsIGJ1dCB0aGUgY29kZSBpdHNlbGYgaXMgaW4gdmVyeSBlYXJseSBzdGFnZXMgYW5kIGZhciBm cm9tIGJlaW5nICJwcm9kdWN0aW9uIHJlYWR5Iiwgc28gcGxlYXNlIGRvIG5vdCByZWFkIHRoZSBj b2RlIGFzc3VtaW5nIGl0J3MgaW4gaXRzIGZpbmFsIGZvcm0uIEl0J3MgdWdseSBhbmQgbmVlZHMg bG90cyBvZiByZWZhY3RvcmluZy4KPgo+IEkndmUgY3JlYXRlZCBhIFBSIG9uIGZvcmdlam8gWzRd IHRvIG1ha2UgaXQgZWFzaWVyIGZvciBvdGhlcnMgdG8gdHJhY2sgcHJvZ3Jlc3MsIGFsdGhvdWdo IEkgdXNlIGdpdGxhYi5jb20gYXMgbXkgbWFpbiBmb3JnZS4KPgo+IEhlcmUgaXMgYSBkZXNjcmlw dGlvbiBvZiB0aGUgZmlsdGVyOgo+Cj4gLSBJdCBwZXJmb3JtIG9ubHkgb2JqZWN0IHRyYWNraW5n LCBuZWVkaW5nIHRoZSBvYmplY3QgZGV0ZWN0aW9uIHRvIGJlIHBlcmZvcm1lZCBlbHNld2hlcmUu IEl0IGZlZWRzIGZyb20gdGhlIGRldGVjdGlvbiBib3hlcyBnZW5lcmF0ZWQgYnkgYGRubl9kZXRl Y3RgLiBUaGF0IG1lYW5zIHRoYXQgdGhlIHF1YWxpdHkgb2YgdGhlIHRoZSB0cmFja2luZyBpcyBj bG9zZWx5IHJlbGF0ZWQgdG8gdGhlIHF1YWxpdHkgb2YgdGhlIGRldGVjdGlvbi4KPgo+IC0gU09S VCBpcyBhIHNpbXBsZSBhbGdvcml0aG0gdGhhdCB1c2VzIHNwYXRpYWwgZGF0YSBvbmx5LCBhbmQg aXQgbm90IGFibGUgdG8gaGFuZGxlIGNhc2VzIHN1Y2ggYXMgb2JqZWN0IG9jY2x1c2lvbi4gSXQn cyBnb29kIGVub3VnaCBmb3IgbXkgdXNlIGNhc2UsIGFzIEkgbWVudGlvbmVkIGVhcmxpZXIuCj4K PiAtIFRoZSBmaWx0ZXIgd29ya3Mgd2l0aCB0aGUgZGVmYXVsdCBvcHRpb25zLCBzbyB5b3UgY2Fu IHBhc3MgaXQgd2l0aG91dCBhbnkgYXJndW1lbnRzLiBJbiB0aGlzIG1vZGUsIGl0IHdpbGwgdHJ5 IHRvIHRyYWNrIGFueSBvYmplY3RzIGZyb20gdGhlIGJveGVzIGF2YWlsYWJsZS4gWW91IGNhbiBj aGFuZ2UgdGhpcyBiZWhhdmlvdXIgYnkgc3BlY2lmeWluZyB0aGUgbGlzdCBvZiBsYWJlbHMgdG8g dHJhY2ssIGZvciBleGFtcGxlOiBgdHJhY2tfc29ydD1sYWJlbHM9cGVyc29ufGRvZ3xjYXRgLiBT dWNoIGxhYmVscyBjb21lIGZyb20gdGhlIE1MIG1vZGVsIHlvdSB1c2VkIGluIHRoZSBkZXRlY3Rp b24gZmlsdGVyLiBJdCBhbHNvIGhhcyB0aGUgb3B0aW9ucyBgdGhyZXNob2xkYCwgYG1pbl9oaXRz YCBhbmQgYG1heF9hZ2VgLCB3aGljaCBjb250cm9sIGhvdyB0aGUgdHJhY2tpbmcgYWxnb3JpdGht IHdvcmtzLCBidXQgdGhlIGRlZmF1bHQgdmFsdWVzIHNob3VsZCB3b3JrIHdlbGwgb24gbW9zdCBj YXNlcy4KPgo+IC0gVGhlIGZpbHRlciB3aWxsIGFkZCB0aGUgdHJhY2tpbmcgaW5mb3JtYXRpb24g YXMgbGFiZWwgb24gYSBuZXcgZnJhbWUgc2lkZSBkYXRhIGVudHJ5IG9mIHR5cGUgYEFWX0ZSQU1F X0RBVEFfREVURUNUSU9OX0JCT1hFU2AuIEl0ICoqV0lMTCBOT1QqKiBvdmVycmlkZSB0aGUgc2lk ZSBkYXRhIGZyb20gYGRubl9kZXRlY3RgLCwgbWVhbmluZyB0aGF0IHRoZSBmcmFtZSB3aWxsIGhh dmUgc2lkZSBkYXRhIHR3byBlbnRyaWVzIG9mIHRoaXMgdHlwZS4gSSd2ZSBjcmVhdGVkIGEgUFIg dGhhdCBtYWtlIGl0IHBvc3NpYmxlIHRvIGZldGNoIHN1Y2ggZW50cnkgWzJdLgo+Cj4gLSBUaGUg bGFiZWxzIGluIHRoZSBkZXRlY3Rpb24gYm94ZXMgaGF2ZSB0aGUgZm9ybWF0ICJ0cmFjazo8dHJh Y2tfbnVtPjo8dHJhY2tfYWdlPiIsIGFuZCB0aGlzIGlzIG5vdCB0aGUgZmluYWwgZm9ybWF0LiBJ IGRpZCB0aGlzIHdheSBhcyBhIHF1aWNrIGhhY2sgdG8gaGF2ZSBzb21lIHZpc3VhbCBpbmZvcm1h dGlvbiB3aGVuIGRyYXdpbmcgdGhlIGJveGVzIGFuZCBsYWJlbHMgd2l0aCB0aGUgYGRyYXd0ZXh0 YCBhbmQgYGRyYXdib3hgIGZpbHRlcnMuIEkgYmVsaWV2ZSB0aGlzIGNhbiBiZSBpbXByb3ZlZCBi eSBwdXR0aW5nIHRoZSB0cmFja2luZyBpbmZvcm1hdGlvbiBhcyBtZXRhZGF0YSBvZiB0aGUgYEFW RGV0ZWN0aW9uQkJveGBlcywgYnV0IHRoaXMgd291bGQgb24gQVBJIGFuZCBBQkkgYnJlYWtpbmcs IHNvIHRoaXMgaXMgc3RpbGwgYW4gb3BlbiBxdWVzdGlvbi4KPgo+IFdoYXQgaGFzIG5vdCBiZWVu IGRvbmUgc28gZmFyOgo+Cj4gSSBoYWQgcXVpdGUgYSBmZXcgZ29hbHMgaW4gdGhpcyB0YXNrOgo+ Cj4gLSAxOiBnZXQgYSB3b3JraW5nIGFuZCBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGhl IFNPUlQgYWxnb3JpdGhtLgo+IC0gMjogc3RhcnQgbGVhcm5pbmcgUnVzdCBhZ2FpbiAoaXQncyBi ZWVuIH41IHllYXJzIHNpbmNlIEkgdXNlZCBpdCkKPiAtIDM6IGxlYXJuIG1vcmUgYWJvdXQgdGhl IGxpYmF2ZmlsdGVyIGNvZGViYXNlCj4gLSA0OiBldmFsdWF0ZSB3aGV0aGVyIFJ1c3QgY291bGQg d29yayBhcyBhIHNlY29uZCBsYW5ndWFnZSBmb3IgaGFja2luZyBGRk1wZWcuCj4KPiBSZXN1bHRz Ogo+Cj4gLSAxOiBJIG1hbmFnZWQgdG8gcmV1c2UgbG90cyBvZiBoaWdoIHF1YWxpdHkgY29kZSwg YXZhaWxhYmxlIG9uIGNyYXRlcyAodGhlIHJlcG9zaXRvcnkgb2YgUnVzdCBwYWNrYWdlcyksIHBy ZXZlbnRpbmcgbWUgb2YgbmVlZGluZyB0byB3cml0ZSBoYWlyeSBtYXRoIGhlYXZ5IGNvZGUuIEkg cGVyc29uYWxseSBzdWNrIGluIG1hdGhzLCBlc3BlY2lhbGx5IGxpbmVhciBhbGdlYnJhLiBVc2lu ZyB0aGUgcGFwZXIgYW5kIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gWzNdIHdhcyBlbm91 Z2gsIGFsdGhvdWdoIEkgZG8gbm90IHVuZGVyc3RhbmQgYWxsIHRoZSBtYXRoIG1hZ2ljLiBGb3Ig aW5zdGFuY2UsIEkgcmV1c2VkIGFuIGV4aXN0aW5nIGNyYXRlIGZvciBLYWxtYW4gZmlsdGVycyB0 aGF0IEkgcHJvYmFibHkgd291bGQgbmVlZCB0byBpbXBsZW1lbnQgYnkgaGFuZCwgYXMgdGhlIGFs dGVybmF0aXZlIGluIEMgd291bGQgcHJvYmFibHkgYmUgdXNpbmcgdGhlIGltcGxlbWVudGF0aW9u IHRoYXQgT3BlbkNWIG9mZmVycy4gQW5kIEkgYW0gYXdhcmUgdGhhdCBpdCdzIG5vdCBwcmFjdGlj YWwgdG8gbWFrZSBPcGVuQ1YgYSBkZXBlbmRlbmN5IG9mIEZGbXBlZy4KPgo+IC0gMjogeWF5ISBC YWNrIHRvIFJ1c3QhCj4KPiAtIDM6IEkndmUgbGVhcm5lZCBtb3JlIG5vdCBvbmx5IGFib3V0IGF2 ZmlsdGVyLCBidXQgYSBiaXQgYWJvdXQgb3RoZXIgY29tcG9uZW50cyBhcyB3ZWxsLgo+Cj4gLSA0 OiBJIGhhdmUgbW9yZSBub3RlcyBvbiB0aGF0IGxhdGVyLCBidXQgaXQgZmVlbHMgZm9yIG1lIHRo YXQgUnVzdCBpcyBuYXR1cmFsIGNhbmRpZGF0ZSBmb3IgbmV3IGNvZGUgaW4gbGFyZ2UgQyBjb2Rl YmFzZXMsIGFzIGl0IGludGVncmF0ZXMgcXVpdGUgdGVsbCwgd2l0aCBzb21lIHdhcnRzLiBJIGFs c28gaGF2ZSBubyBpZGVhIHdoZXRoZXIgdGhlIEZGbXBlZyBjb21tdW5pdHkgaGFzIGRpc2N1c3Nl ZCBhYm91dCBSdXN0IGluIHRoZSBjb2RlYmFzZSBpbiB0aGUgcGFzdCBhbmQsIGlmLCBub3QsIHdo eSBub3Qgbm93Pwo+Cj4gU29tZSBub3RlcyBvbiB1c2luZyBSdXN0Ogo+Cj4gSW4gZ2VuZXJhbCBJ IGVuam95ZWQgdXNpbmcgUnVzdCBpbiB0aGUgcHJvamVjdCwgYW5kIGlmIHlvdSBoYXZlIGEgbG9v ayBhdCB0aGUgY29kZSwgeW91J2xsIG5vdGljZSB0aGF0IEkgYW0gbm90IHJldXNpbmcgYW55IG9m IHRoZSBuaWNlIEMgbWFjcm9zIHRoYXQgbWFrZSBhIGxvdCBvZiBzdHVmZiBlYXNpZXIgb24gd3Jp dGluZyBuZXcgZmlsdGVycy4gVGhhdCBtZWFucyB0aGF0IHRoZSBSdXN0IGNvZGUgbG9va3MgbGlr ZSB0aGUgZXhwYW5kZWQgbWFjcm8gdmVyc2lvbnMgZnJvbSBDLiBBbmQgdGhhdCdzIGEgbG90IG9m IGJvaWxlcnBsYXRlIGFuZCB1Z2x5IGNvZGUuCj4KPiBUaGVyZSB3ZXJlIHNvbWUgcmVhc29ucyBm b3IgdGhhdDogT25lIGlzIHRoYXQgSSBhbSBzdGlsbCBsZWFybmluZyBSdXN0IG1hY3JvcywgYW5k IHdhbnRlZCB0byBmb2N1cyBvbiBnZXR0aW5nIHN0dWZmIGRvbmUgZm9yIG5vdy4gU2Vjb25kIGlz IHRoYXQgUnVzdCBoYXMgYSBtdWNoIG1vcmUgcG93ZXJmdWwgbWFjcm8gc3lzdGVtIHRoYW4gQyBk b2VzLCBhbmQgYXZvaWRpbmcgbWFjcm9zIG5vdyBhbGxvdyBtZSB0byBmZWVsIGFsbCB0aGUgcGFp biBvZiB3cml0aW5nIHRoZSBtYW51YWwgY29kZS4gU3VjaCBwYWluLCBJIGJlbGlldmUsIGNhbiBo ZWxwIGEgc2V0IG9mIFJ1c3QgbWFjcm9zIHRvICJlbWVyZ2UiIGZyb20gdGhlIGNvZGViYXNlLCBy YXRoZXIgdGhhbiBvbmUgZGVzaWduaW5nIGEgc2V0IG9mIG1hY3JvcyB0aGF0IHdpbGwgcHJvYmFi bHkgbG9vayBsaWtlIHRoZSBDIG9uZXMsIHdoaWNoIG1pZ2h0IG5vdCBiZSAicnVzdHkiIGVub3Vn aC4gQW5kIEkgZG9uJ3QgZmluZCBhIGdvb2QgcHJhY3Rpc2UgdG8gZGVzaWduIEFQSXMgYmVmb3Jl IGhhdmluZyBzb21lIGltcGxlbWVudGF0aW9uIChsb29raW5nIGF0IHlvdSwgQysrIGNvbW1pdHRl ZSkuCj4KPiBJJ3ZlIGJlZW4gZGV2ZWxvcGluZyBvbiBNYW5qYXJvIExpbnV4IGFuZCBmb3Igbm93 IGJ1aWxkaW5nIEZGbXBlZyBzdGF0aWNhbGx5IHdpdGggYC0tZGlzYWJsZS1zdHJpcHBpbmcgLS1l bmFibGUtZGVidWc9MyAtLWRpc2FibGUtb3B0aW1pemF0aW9uc2AgYW5kIHRoZSBSdXN0IGNvZGUg aW4gYERlYnVnYCBtb2RlLiBUaGF0IG1lYW5zIHNsb3cgY29kZSBhbmQgc3RhdGljIGJ1aWxkcywg d2hpY2ggYXJlIGVhc3kgdG8gZGVidWcgYSBwcm9maWxlLgo+Cj4gRGVidWdnaW5nIGlzIGVhc3ks IGFzIEkgY2FuIHNpbXBseSB1c2UgR0RCIGFuZCBpdCBzaW1wbHkgd29ya3Mgd2l0aCB0aGUgUnVz dCBhbmQgQyBjb2RlIG1peGVkLiBJIHN0aWwgZG9uJ3QgaGF2ZSBwcmV0dHktcHJpbnRlciBmb3Ig dGhlIFJ1c3QgcGFydCwgYnV0IHRoaXMgaXMgcHJvYmFibHkgYW4gaXNzdWUgb24gbXkgc2V0dXAu Cj4KPiBQcm9maWxpbmcgYWxzbyB3b3JrcyB3ZWxsLiBFdmVuIHRob3VnaCB0aGUgUnVzdCBjb2Rl IGlzIGluIERlYnVnIG1vZGUsIHByb2ZpbGluZyB3aXRoIEhvdHNwb3QvUGVyZiBzaG93cyB0aGF0 IHRoZSB0cmFja2luZyBjb2RlIGlzIHZlcnkgZWZmaWNpZW50ICh5b3UgYWxtb3N0IGNhbm5vdCBz ZWUgaXQgaW4gdGhlIGZsYW1lZ3JhcGghKS4KPgo+IE1lbW9yeSBtYW5hZ2VtZW50IGlzIGEgYnJl ZXplLCBhcyB0aGUgc3RhbmRhcmQgbGlicmFyeSBoYXMgZ2VuZXJpYyB2ZXJzaW9ucyBvZiBtYW55 IHVzZWZ1bCBjb250YWluZXJzLCBzdWNoIGFzIFZlY3RvcnMgYW5kIEJUcmVlcy4gVGhlIGFsZ29y aXRobXMgdGhlcmUgYWxzbyBtYWtlIHRyYW5zZm9ybWluZyBhbmQgZmlsdGVyaW5nIHZlcnkgY29u dmVuaWVudCBhbmQgdHlwZSBzYWZlLgo+Cj4gWW91IGdldCBzdXBwb3J0IGZvciB1bml0IHRlc3Rz IGZvciBmcmVlLiBObyBoYXNzbGUsIG5vIGNvbXBsZXggc2V0dXAuIFNpbXBseSB3cml0ZSB1bml0 IHRlc3RzIGFueXdoZXJlIGFuZCBydW4gdGhlbSB3aXRoIGBjYXJnbyB0ZXN0YC4KPgo+IEl0IGZl ZWxzIHZlcnkgZ29vZCB0byBnZXQgdGhlIGNvZGUgdG8gd29yayBhbmQgbm90IGJlaW5nIGFmcmFp ZCBvZiB0aGluZ3MgZ29pbmcgYmFkbHkgKGluIHRoZSBjb2RlIHdoaWNoIGlzIG5vdCB1bnNhZmUs IG9mIGNvdXJzZSEpLgo+Cj4gV0FSVFMKPgo+IEkgZGlkIG5vdCBpbXBsZW1lbnQgYW55IHdyYXBw ZXIgb24gdG9wIG9mIHRoZSBhdmZpbHRlciBwcml2YXRlIEFQSSAoeWF5IGBiaW5kZ2VuYCEpLCBz byBpdCdzIHVzZWQgZGlyZWN0bHkgb24gdGhlIFJ1c3QgY29kZS4gSXQgZm9yY2VzIHlvdSB0byB3 cml0ZSB0aGUgY29kZSBhcyBgdW5zYWZlYCBvbiBhbnkgaW50ZXJhY3Rpb24gd2l0aCBsaWJhdiog QVBJLiBOZXZlcnRoZWxlc3MsIGV2ZW4gb24gdW5zYWZlIGNvZGUsIHdvcmtpbmcgb24gbm9uIG93 bmVkIGRhdGEgaXMgdmVyeSBjb252ZW5pZW50LCBhcyB5b3UgY2FuIHR1cm4gYWxtb3N0IGFueXRo aW5nIGludG8gc2xpY2VzLCB3aGljaCBwcm92aWRlIHlvdSB3aXRoIGxvdHMgb2YgY29udmVuaWVu dCBhbGdvcml0aG1zIChtYXAsIGZpbHRlciwgemlwLCBldGMuKS4KPgo+IFdvcmtpbmcgd2l0aCBD IHBvaW50ZXJzIGlzIGEgdmVyeSBwYWluZnVsIGFuZCB1Z2x5LiBFc3BlY2lhbGx5IGAqKmAgYW5k IGAqKipgLiBSdXN0IGlzIHZlcnkgdmVyYm9zZSBvbiB1c2luZyB0aGVtIGluIHRoZSBydXN0IHNp ZGUgKHRoZXkgYmVjb21lIHRoaW5ncyBsaWtlIGAmKm11dCAqbXV0ICptdXRgLCBub3QgcmVhbGx5 IGVhc3kgdG8gcmVhc29uIGFib3V0KS4gUnVzdCBhbHNvIGRvZXMgbm90IGhhdmUgdGhlIGAtPmAg b3BlcmF0b3IsIGZvcmNpbmcgeW91IGRvIGRvIHN0dWZmIGxpa2UgYGAoKmZvbykuYmFyYCwgd2hp Y2ggaXMgc2ltcGx5IHVnbHkuCj4KPiBJbnRlcmFjdGluZyB3aXRoIHRoZSBDIEFQSSBpcyBhbHNv IG5vdCB0cml2aWFsLCBhcyBpbiBSdXN0IG9uZSBtdXN0IGJlIGV4cGxpY2l0IGFib3V0IG93bmVy c2hpcCBhbmQgbGlmZXRpbWVzLCBzb21ldGhpbmcgd2hpY2ggaXMgZG9uZSBpbXBsaWNpdGVseSAo YW5kIG9mdGVuIHdyb25nbHkpIGluIEMuCj4KPiBTdHJ1Y3QgbWVtYmVycyBpbiBSdXN0IG11c3Qg YWx3YXlzIGJlIGV4cGxpY2l0ZWx5IGluaXRpYWxpemVkLCBldmVuIGZvciBnbG9iYWwgc3RhdGlj IHZhcmlhYmxlcywgd2hpY2ggQyBpbml0aWFsaXplcyB3aXRoIHplcm8gaW1wbGljaXRlbHkuCj4K PiBDIHVuaW9ucy4gTHVja2lseSBSdXN0IHN1cHBvcnRzIHRoZW0sIGJ1dCB0aGV5IGFyZSBhbHdh eXMgdW5zYWZlLgo+Cj4gYGJpbmRnZW5gIGRvZXMgbm90IGdlbmVyYXRlIHdyYXBwZXJzIGZvciBg c3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgYmxhaCgpYCBmdW5jdGlvbnMsIGFzIHRob3NlIGFyZS4u LiBpbmxpbmVkLCBzbyB3aGVuIGluIHRoZSBuZWVkIG9mIHVzaW5nIHRob3NlLCBJIGhhZCB0byBz aW1wbHkgcmVpbXBsZW1lbnQgdGhlbSBpbiBSdXN0Lgo+Cj4gSW4gZ2VuZXJhbCBteSBpbXByZXNz aW9uIGlzIHRoYXQgUnVzdCBjb2RlIGlzIG1vcmUgdmVyYm9zZSB0aGFuIEMgaW4gImRhbmdlcm91 cyIgY29kZSwgYnV0IHdheSBsZXNzIHZlcmJvc2UgaW4gc2FmZSBjb2RlLCBkdWUgdG8gdGhlIGNv bXBpbGVyIGNoZWNrcy4KPgo+IFdIWT8gV0hZPyBXSFk/Pz8/Pwo+Cj4gT2ssIHdoeSBkbyBJLCB3 aG8gbmV2ZXIgcmVhbGx5IHRvb2sgcGFydCBvbiB0aGUgRkZtcGVnIGNvbW11bml0eSBjb21lIGFw cGFyZW50bHkgbm93IHRocm93aW5nIFJ1c3Qgb24geW91ciBmYWNlcz8gQW0gSSBzYXlpbmcgeW91 IGZvbGtzIHNob3VsZCByZXdyaXRlIGZmbXBlZyBpbiBydXN0PyBJIGtub3cgdGhhdCBlc3BlY2lh bGx5IHRoZSBSdXN0IGNvbW11bml0eSBoYXZlIGJlZW4gaW52b2x2ZWQgcmVjZW50bHkgaW4gYSBs b3Qgb2YgY29uZmxpY3RzIGludm9sdmluZyBsYXJnZSBDIGNvZGViYXNlcywgYW5kIGl0J3Mgbm90 IG15IGludGVudGlvbiB0byB0ZWxsIHlvdSB3aGF0IG9yIG5vdCB0byBkby4gSSByZWNvZ25pemUg aGF2aW5nIG5vIGF1dGhvcml0eSBpbiB0aGlzIGdyb3VwIGZvciB0aGF0IGFuZCBJIGFtIGVzc2Vu dGlhbGx5IGp1c3QgYSBGRm1wZWcgdXNlci4KPgo+IE15IGludGVudGlvbiwgZmlyc3Qgb2YgYWxs LCB3YXMgdG8gZ2V0IHNvbWUgc3R1ZmYgSSBuZWVkZWQgZG9uZS4gSSdtIHdvcmtpbmcgb24gYSBj b21tZXJjaWFsIHByb2R1Y3QsIGFuZCBkZXZlbG9waW5nIGluIFJ1c3Qgd2FzIHRoZSBxdWlja2Vz dCB3YXkgSSBjb3VsZCBnZXQgaXQgZG9uZSAoY29uc2lkZXJpbmcgbXkgcmVxdWlyZW1lbnRzKS4g SSd2ZSBlbmpveWVkIGEgbG90IHdvcmtpbmcgaW4gdGhpcyBwcm9qZWN0LCBhbmQgSSBiZWxpZXZl IG15IGxlYXJuaW5ncyBjYW4gYmUgdXNlZnVsIGZvciB0aGUgRkZtcGVnIGNvbW11bml0eSBhcyBh IHdob2xlLgo+Cj4gRGVtbyB0aW1lCj4KPiBSZXF1aXJlbWVudHM6IENhcmdvL1J1c3QgaW5zdGFs bGVkLiBJIGFtIHVzaW5nIGAxLjg0LjBgLCB0aGUgbGF0ZXN0IHN0YWJsZSwgdmlhIGBydXN0dXBg Lgo+Cj4gWW91J2xsIG5lZWQgb3BlbnZpbm8sIGhhcmZidXp6IGFuZCBmcmVldHlwZSBpbnN0YWxs ZWQuCj4KPiBGaXJzdCBvZiBhbGwsIGNoZWNrIG91dCB0aGUgY29kZSBmcm9tIHRoZSBQUiBhdCBb NF0gYW5kIGNvbXBpbGUgRkZtcGVnIHdpdGg6Cj4KPiBgYGBzaAo+IC4vY29uZmlndXJlIC4vY29u ZmlndXJlIC0tZGlzYWJsZS1zdHJpcHBpbmcgLS1lbmFibGUtZGVidWc9MyAtLWRpc2FibGUtb3B0 aW1pemF0aW9ucyAtLWVuYWJsZS1saWJvcGVudmlubyAtLWVuYWJsZS1saWJoYXJmYnV6eiAtLWVu YWJsZS1saWJmcmVldHlwZSAtLWVuYWJsZS1vcGVuc3NsCj4gY2FyZ28gYnVpbGQgJiYgbWFrZQo+ IGBgYAo+Cj4gSSBhZGRlZCBhIGAtLWVuYWJsZS1ydXN0YCBmbGFnIHRvIHRoZSBQUiwgYnV0IGF0 IHRoZSBtb21lbnQgaXQgZG9lcyBub3RoaW5nIDotKQo+Cj4gTmV4dCB5b3Ugc2hvdWxkIGRvd25s b2FkIGEgcHJlLXRyYWluZWQgWU9MTzQgbW9kZWwgYW5kIGFzc29jaWF0ZWQgZmlsZXMsIGZvciBw ZXJmb3JtIHRoZSBvYmplY3QgZGV0ZWN0aW9uczoKPgo+IGBgYHNoCj4gcGlwIGluc3RhbGwgb3Bl bnZpbm8tZGV2IHRlbnNvcmZsb3cKPiBvbXpfZG93bmxvYWRlciAtLW5hbWUgeW9sby12NC10aW55 LXRmCj4gb216X2NvbnZlcnRlciAtLW5hbWUgeW9sby12NC10aW55LXRmCj4gd2dldCBodHRwczov L3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbnZpbm90b29sa2l0L29wZW5fbW9kZWxfem9v L3JlZnMvaGVhZHMvbWFzdGVyL2RhdGEvZGF0YXNldF9jbGFzc2VzL2NvY29fODBjbC50eHQKPiBg YGAKPgo+IEhlcmUgd2UnbGwgdXNlIGEgdmlkZW8gZnJvbSBNT1QgQ2hhbGxlbmdlIDIwMTYsIFs1 XSB3aGljaCBpcyB0aGUgb25lIHNob3duIGluIHRoZSBvcmlnaW5hbCBTT1JUIHBhcGVyLiBZb3Ug Y2FuIHVzZSBpdCB3aXRoIHRoZSBjb21tYW5kOgo+Cj4gYGBgc2gKPiAuL2ZmcGxheSBodHRwczov L21vdGNoYWxsZW5nZS5uZXQvc2VxdWVuY2VWaWRlb3MvTU9UMTYtMDYtcmF3LndlYm0gLXZmICdk bm5fZGV0ZWN0PWRubl9iYWNrZW5kPW9wZW52aW5vOm1vZGVsPXB1YmxpYy95b2xvLXY0LXRpbnkt dGYvRlAxNi95b2xvLXY0LXRpbnktdGYueG1sOmlucHV0PWltYWdlX2lucHV0OmNvbmZpZGVuY2U9 MC4xOm1vZGVsX3R5cGU9eW9sb3Y0OmFuY2hvcnM9ODEmODImMTM1JjE2OSYzNDQmMzE5OmxhYmVs cz1jb2NvXzgwY2wudHh0OmFzeW5jPTA6bmJfY2xhc3Nlcz04MCx0cmFja19zb3J0PWxhYmVscz1w ZXJzb24sZHJhd2JveD1ib3hfc291cmNlPXNpZGVfZGF0YV9kZXRlY3Rpb25fYmJveGVzOmNvbG9y PXJlZDpza2lwPTEsZHJhd3RleHQ9dGV4dF9zb3VyY2U9c2lkZV9kYXRhX2RldGVjdGlvbl9iYm94 ZXM6Zm9udGNvbG9yPXllbGxvdzpib3JkZXJjb2xvcj15ZWxsb3c6Zm9udHNpemU9MjA6Zm9udGZp bGU9RHJvaWRTYW5zLUJvbGQudHRmOnNraXA9MScKPiBgYGAKPgo+IFRoZSBgZG5uX2RldGVjdGAg b3B0aW9ucyB3ZXJlIG9idGFpbmVkIGZyb20gdGhlIFlPTE80IG1vZGVsIGF0IFs2XS4KPgo+IFBs ZWFzZSBhbHNvIG5vdGljZWQgSSBwYXNzZWQgdGhlIGV4dHJhIG9wdGlvbiBgc2tpcD0xYCB0byBi b3RoIHRoZSBgZHJhd3RleHRgIGFuZCB0aGUgYGRyYXdib3hgIGZpbHRlcnMuIFRoaXMgaXMgdG8g bWFrZSB0aGVtIHJlbmRlciB0aGUgYm94ZXMgaW5mb3JtYXRpb24gZnJvbcKgIGB0cmFja19zb3J0 YCAsIGluc3RlYWQgb2YgdGhlIG9uZXMgZnJvbSBgZG5uX2RldGVjdGAuIE1vcmUgYXQgWzJdLgo+ Cj4gSSBhbHNvIHJlY29yZGVkIGEgdmlkZW8gc2hvd2luZyB0aGUgZmlsdGVyIGluIGFjdGlvbiBb N10uCj4KPiBDaGVlcnMsCj4KPiBMZWFuZHJvCj4KPgo+IFsxXSBodHRwczovL2FyeGl2Lm9yZy9w ZGYvMTcwMy4wNzQwMgo+IFsyXSBodHRwczovL2NvZGUuZmZtcGVnLm9yZy9GRm1wZWcvRkZtcGVn L3B1bGxzLzEwCj4gWzNdIGh0dHBzOi8vZ2l0aHViLmNvbS9hYmV3bGV5L3NvcnQKPiBbNF0gaHR0 cHM6Ly9jb2RlLmZmbXBlZy5vcmcvRkZtcGVnL0ZGbXBlZy9wdWxscy8xMQo+IFs1XSBodHRwczov L21vdGNoYWxsZW5nZS5uZXQvdmlzL01PVDE2LTA2Cj4gWzZdIGh0dHBzOi8vZ2l0aHViLmNvbS9v cGVudmlub3Rvb2xraXQvb3Blbl9tb2RlbF96b28vYmxvYi9tYXN0ZXIvbW9kZWxzL3B1YmxpYy95 b2xvLXY0LXRpbnktdGYvUkVBRE1FLm1kCj4gWzddIGh0dHBzOi8veW91dHUuYmUvVV95NC1ObmFJ TmcKPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1w ZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZt cGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZp c2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcg d2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==