From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 6E7851FF16B for <inbox@lore.proxmox.com>; Thu, 3 Apr 2025 16:06:00 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id A7ED7388D; Thu, 3 Apr 2025 16:05:48 +0200 (CEST) Mime-Version: 1.0 Date: Thu, 03 Apr 2025 16:05:14 +0200 Message-Id: <D8X27CNS8UVI.OJ5BZRP2N01J@proxmox.com> To: "Proxmox VE development discussion" <pve-devel@lists.proxmox.com> From: "Max Carrara" <m.carrara@proxmox.com> X-Mailer: aerc 0.18.2-0-ge037c095a049 References: <20250326142059.261938-1-m.carrara@proxmox.com> <20250326142059.261938-3-m.carrara@proxmox.com> <1743421835.hd6pyusvlb.astroid@yuna.none> <D8WAOUZPCMO5.37G29XB8M94OE@proxmox.com> <1743662987.9zy3v4thrh.astroid@yuna.none> In-Reply-To: <1743662987.9zy3v4thrh.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -1.422 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLACK 3 Contains an URL listed in the URIBL blacklist [plugin.pm] Subject: Re: [pve-devel] [PATCH v1 pve-storage 2/8] pluginbase: add high-level plugin API description X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> List-Post: <mailto:pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> T24gVGh1IEFwciAzLCAyMDI1IGF0IDk6MTIgQU0gQ0VTVCwgRmFiaWFuIEdyw7xuYmljaGxlciB3 cm90ZToKPiBPbiBBcHJpbCAyLCAyMDI1IDY6MzEgcG0sIE1heCBDYXJyYXJhIHdyb3RlOgo+ID4g T24gTW9uIE1hciAzMSwgMjAyNSBhdCA1OjEzIFBNIENFU1QsIEZhYmlhbiBHcsO8bmJpY2hsZXIg d3JvdGU6Cj4gPj4gT24gTWFyY2ggMjYsIDIwMjUgMzoyMCBwbSwgTWF4IENhcnJhcmEgd3JvdGU6 Cj4gPj4gPiBBZGQgYSBzaG9ydCBwYXJhZ3JhcGggaW4gREVTQ1JJUFRJT04gc2VydmluZyBhcyBh biBpbnRyb2R1Y3Rpb24gYXMKPiA+PiA+IHdlbGwgYXMgdGhlIEdFTkVSQUwgUEFSQU1FVEVSUyBh bmQgQ0FDSElORyBFWFBFTlNJVkUgT1BFUkFUSU9OUwo+ID4+ID4gc2VjdGlvbnMuCj4gPj4gPiAK PiA+PiA+IFRoZXNlIHNlY3Rpb25zIGFyZSBhZGRlZCBpbiBvcmRlciB0byBhdm9pZCByZXBlYXRl ZGx5IGRlc2NyaWJpbmcgdGhlCj4gPj4gPiBzYW1lIHBhcmFtZXRlcnMgYXMgd2VsbCBhcyB0byBl bGFib3JhdGUgb24gLyBjbGFyaWZ5IGEgY291cGxlIHRlcm1zLAo+ID4+ID4gZS5nLiB3aGF0IHRo ZSAkY2FjaGUgcGFyYW1ldGVyIGRvZXMgb3Igd2hhdCBhIHZvbHVtZSBpbiBvdXIgY2FzZSBpcy4K PiA+PiA+IAo+ID4+ID4gU2lnbmVkLW9mZi1ieTogTWF4IENhcnJhcmEgPG0uY2FycmFyYUBwcm94 bW94LmNvbT4KPiA+PiA+IC0tLQo+ID4+ID4gIHNyYy9QVkUvU3RvcmFnZS9QbHVnaW5CYXNlLnBt IHwgNzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+PiA+ICAxIGZpbGUg Y2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKQo+ID4+ID4gCj4gPj4gPiBkaWZmIC0tZ2l0IGEvc3Jj L1BWRS9TdG9yYWdlL1BsdWdpbkJhc2UucG0gYi9zcmMvUFZFL1N0b3JhZ2UvUGx1Z2luQmFzZS5w bQo+ID4+ID4gaW5kZXggZTU2YWE3Mi4uMTY5NzdmMyAxMDA2NDQKPiA+PiA+IC0tLSBhL3NyYy9Q VkUvU3RvcmFnZS9QbHVnaW5CYXNlLnBtCj4gPj4gPiArKysgYi9zcmMvUFZFL1N0b3JhZ2UvUGx1 Z2luQmFzZS5wbQo+ID4+ID4gQEAgLTQsNiArNCw4MyBAQCBDPFBWRTo6U3RvcmFnZTo6UGx1Z2lu QmFzZT4gLSBTdG9yYWdlIFBsdWdpbiBBUEkgSW50ZXJmYWNlCj4gPj4gPiAgCj4gPj4gPiAgPWhl YWQxIERFU0NSSVBUSU9OCj4gPj4gPiAgCj4gPj4gPiArVGhpcyBtb2R1bGUgZG9jdW1lbnRzIHRo ZSBwdWJsaWMgU3RvcmFnZSBQbHVnaW4gQVBJIG9mIFBWRSBhbmQgc2VydmVzCj4gPj4gPiArYXMg YSBiYXNlIGZvciBDPEw8UFZFOjpTdG9yYWdlOjpQbHVnaW4+Pi4gUGx1Z2lucyBtdXN0IEI8YWx3 YXlzPiBpbmhlcml0IGZyb20KPiA+PiA+ICtDPEw8UFZFOjpTdG9yYWdlOjpQbHVnaW4+PiwgYXMg dGhpcyBtb2R1bGUgaXMgZm9yIGRvY3VtZW50YXRpb24gcHVycG9zZXMKPiA+PiA+ICtvbmx5Lgo+ ID4+Cj4gPj4gZG9lcyB0aGlzIG1ha2Ugc2Vuc2U/IGlmIHdlIG5vdyBwcm92aWRlIGEgY2xlYW4g YmFzZSBmb3IgdGhlIHN0cnVjdHVyZQo+ID4+IG9mIHBsdWdpbnMsIHdoeSBzaG91bGRuJ3QgcGx1 Z2lucyBiZSBhYmxlIHRvIHVzZSB0aGF0LCBidXQgaW5zdGVhZCBoYXZlCj4gPj4gdG8gaW5oZXJp dCBmcm9tIFBWRTo6U3RvcmFnZTo6UGx1Z2luIHdoaWNoIGhhcyBhIGxvdCBvZiBleHRyYSBzdHVm ZiB0aGF0Cj4gPj4gbWFrZXMgdGhpbmdzIG1lc3N5Pwo+ID4+Cj4gPj4gZ3JhbnRlZCwgc3dpdGNo aW5nIG92ZXIgdG8gbG9hZCBmcm9tIFBsdWdpbkJhc2UgY291bGQgYmUgZG9uZSBhcyBhCj4gPj4g Zm9sbG93IHVwIG9yIHdpdGggOS4wIChvciBub3QgYXQgYWxsLCBpZiB0aGVyZSBpcyBhIHJhdGlv bmFsZSkuLgo+ID4+Cj4gPj4gYWZ0ZXIgdGhpcyBzZXJpZXMgd2UgaGF2ZToKPiA+Pgo+ID4+IFNl Y3Rpb25Db25maWcKPiA+PiAtPiBQbHVnaW5CYXNlIChub3QgYW4gYWN0dWFsIGJhc2UgcGx1Z2lu IHcuci50LiBTZWN0aW9uQ29uZmlnLCBhbmQgbm90Cj4gPj4gc29tZXRoaW5nIHlvdSBiYXNlIHBs dWdpbnMgb24gYXMgYSByZXN1bHQpCj4gPj4gLS0+IFBsdWdpbiAoYSBjb21iaW5hdGlvbiBvZiBi YXNlIHBsdWdpbiBhbmQgYmFzZSBvZiBhbGwgb3VyCj4gPj4gZGlyZWN0b3J5LWJhc2VkIHBsdWdp bnMpCj4gPj4gLS0tPiBvdGhlciBwbHVnaW5zLCBpbmNsdWRpbmcgdGhpcmQgcGFydHkgb25lcwo+ ID4+Cj4gPj4gd2hpY2ggc2VlbXMgdW5mb3J0dW5hdGUsIGV2ZW4gaWYgdGhlIGNvbnRlbnRzIG9m IFBsdWdpbkJhc2UgYXJlIGhlbHBmdWwKPiA+PiB3aGVuIGltcGxlbWVudGluZyB5b3VyIG93bi4u Cj4gPj4KPiA+PiBJTUhPIHRoaXMgc2hvdWxkIGVpdGhlciBiZQo+ID4+Cj4gPj4gU2VjdGlvbkNv bmZpZwo+ID4+IC0+IFBsdWdpbkJhc2UgKGFjdHVhbCBiYXNlIHBsdWdpbiwgd2l0aCBTZWN0aW9u Q29uZmlnIGltcGxlbWVudGF0aW9ucwo+ID4+IG1vdmVkIG92ZXIgZnJvbSBjdXJyZW50IFBsdWdp bi5wbSBhcyBuZWVkZWQpCj4gPj4gLS0+IFBsdWdpblRlbXBsYXRlICh3aGF0J3MgY3VycmVudGx5 IFBsdWdpbkJhc2UgaW4gdGhpcyBzZXJpZXMgLSBuaWNlbHkKPiA+PiBkb2N1bWVudGVkIHBhcmVu dCBvZiB0aGlyZCBwYXJ0eSBwbHVnaW5zLCBub3QgYWN0dWFsbHkgcmVnaXN0ZXJlZCwganVzdAo+ ID4+IGNvbnRhaW5zIHRoZSBzdG9yYWdlLmNmZyBpbnRlcmZhY2Ugd2l0aG91dCB0aGUgbG93LWxl dmVsIFNlY3Rpb25Db25maWcKPiA+PiB0aGluZ3MpCj4gPj4gLS0tPiBOZXdUaGlyZFBhcnR5UGx1 Z2luIChjbGVhbiBzbGF0ZSBpbXBsZW1lbnRhdGlvbiBqdXN0IHVzaW5nIHRoZQo+ID4+IG5pY2Vs eSBkb2N1bWVudGVkIGludGVyZmFjZXMsIGd1YXJhbnRlZWQgdG8gbm90IHVzZSBhbnkgaGVscGVy cyBmcm9tCj4gPj4gUGx1Z2luIHNpbmNlIGl0J3Mgbm90IGEgKGdyYW5kKXBhcmVudCkKPiA+PiAt LT4gUGx1Z2luIChiYXNlIG9mIGJ1aWx0LWluIHBsdWdpbnMsIHByb2JhYmx5IGJhc2Ugb2YgZXhp c3RpbmcgdGhpcmQKPiA+PiBwYXJ0eSBwbHVnaW5zLCBzaG91bGQgaWRlYWxseSBoYXZlIGEgZGlm ZmVyZW50IG5hbWUgaW4gdGhlIGZ1dHVyZSEpCj4gPj4gLS0tPiBEaXJQbHVnaW4KPiA+PiAtLS0+ IC4uLgo+ID4+IC0tLT4gRXhpc3RpbmdUaGlyZFBhcnR5UGx1Z2luICh0aGlzIG1pZ2h0IHJlbHkg b24gaGVscGVycyBmcm9tIFBsdWdpbiwKPiA+PiBzbyB3ZSBjYW4ndCBqdXN0IHJlbmFtZSB0aGF0 IG9uZSB1bmxlc3Mgd2Ugd2FpdCBmb3IgOS4wKQo+ID4+Cj4gPj4gb3IKPiA+Pgo+ID4+IFNlY3Rp b25Db25maWcKPiA+PiAtPiBQbHVnaW5CYXNlIChhY3R1YWwgYmFzZSBwbHVnaW4gKyBkb2NzIG9m IFBsdWdpbiBBUEkpCj4gPj4gLS0+IFBsdWdpbiAoYmFzZSBvZiBvdXIgcGx1Z2lucyBhbmQgZXhp c3RpbmcgdGhpcmQgcGFydHkgb25lcywgZGlyLXJlbGF0ZWQgaGVscGVycywgLi4pCj4gPj4gLS0t PiBvdGhlciBwbHVnaW5zLCBpbmNsdWRpbmcgdGhpcmQgcGFydHkgb25lcwo+ID4+IC0tPiBOZXdU aGlyZFBhcnR5UGx1Z2luIChjbGVhbiBzbGF0ZSBhcyBhYm92ZSkKPiA+IAo+ID4gSSBhZ3JlZSB3 aXRoIHlvdXIgcG9pbnQgaGVyZSAtLSBmb3Igbm93LCBgOjpQbHVnaW5CYXNlYCBzaG91bGQgSU1P IHN0aWxsCj4gPiBvbmx5IGJlIGFib3V0IGRvY3VtZW50YXRpb24gYW5kIGVudW1lcmF0aW5nIHdo YXQncyBwYXJ0IG9mIHRoZSBQbHVnaW4KPiA+IEFQSSwgKmJ1dCogYWRkaW5nIG1vcmUgbGF5ZXJz IGluYmV0d2VlbiBjYW4gc3RpbGwgYmUgZG9uZSBldmVudHVhbGx5Lgo+ID4gCj4gPiBIb3dldmVy LCBJIHRoaW5rIHdlIHNob3VsZG4ndCBoYXZlIHR3byBkaWZmZXJlbnQgcGFyZW50cyBmb3IgaW50 ZXJuYWwKPiA+IGFuZCBleHRlcm5hbCBwbHVnaW5zLCBhcyBpdCB3b3VsZCBpbnRyb2R1Y2UgeWV0 IGFub3RoZXIgdGhpbmcgd2UnZCBoYXZlCj4gPiB0byB0cmFjayB3cnQuIEFQSUFHRSByZXNldHMg ZXRjLiBNYXliZSBpdCdzIG5vdCBhY3R1YWxseSBhbiBpc3N1ZSBpbgo+ID4gdGhpcyBjYXNlLCBi dXQgLi4uCj4KPiB0aGUgQVBJIHdvdWxkIGJlIGRlZmluZWQgYnkgdGhlICJwdWJsaWMiL2V4dGVy bmFsL3RvcC1sZXZlbCBiYXNlCj4gb2J2aW91c2x5LCBub3QgYnkgb3VyIGludGVybWVkaWF0ZSBz aGFyZWQgYmFzZSA7KQoKRmFpciBwb2ludCA6UAoKPgo+ID4gVGhhdCBhY3R1YWxseSBnaXZlcyBt ZSBhbiBpZGVhIHRoYXQncyBzaW1pbGFyIHRvIHlvdXIgZmlyc3Qgc3VnZ2VzdGlvbjoKPiA+IAo+ ID4gQXMgb2YgdGhpcyBzZXJpZXMsIHRoZSBoaWVyYXJjaHkgd291bGQgYmUgYXMgZm9sbG93czoK PiA+IAo+ID4gUGx1Z2luQmFzZQo+ID4g4pSU4pSA4pSAIFBsdWdpbgo+ID4gICAgIOKUnOKUgOKU gCBFeGlzdGluZ1RoaXJkUGFydHlQbHVnaW4KPiA+ICAgICDilJzilIDilIAgRGlyUGx1Z2luCj4g PiAgICAg4pSU4pSA4pSAIC4uLgo+ID4gCj4gPiBXZSBjb3VsZCBrZWVwIGBQbHVnaW5CYXNlYCBh cyBpdCBpcywgc2luY2UgSU1PIGhhdmluZyB0aGUgZG9jcyBhbmQgdGhlCj4gPiBTZWN0aW9uQ29u ZmlnLXJlbGF0ZWQgc3R1ZmYgaW4gb25lIHBsYWNlIGlzIGZpbmUsIHVubGVzcyB3ZSByZWFsbHkg d2FudAo+ID4gdG8ga2VlcCB0aGUgZG9jcyBzZXBhcmF0ZSBmcm9tIHRoZSByZXN0IG9mIHRoZSBj b2RlLiAoV291bGQgc2VlbSBhIGJpdAo+ID4gcmVkdW5kYW50IHRvIGludHJvZHVjZSBhbm90aGVy IGluaGVyaXRhbmNlIGxheWVyIGluIHRoYXQgY2FzZSwgYnV0IEkKPiA+IHBlcnNvbmFsbHkgZG9u J3QgbWluZC4pCj4KPiBJIGRvbid0IG1pbmQgaGF2aW5nIHRoZSBTZWN0aW9uQ29uZmlnIGFuZCB0 aGUgInNrZWxldG9uIiBpbiBvbmUgbW9kdWxlLAo+IHByb3ZpZGVkIHRoZXkgYXJlIGNsZWFybHkg c2VwYXJhdGVkLiB0aGUgU2VjdGlvbkNvbmZpZyBtZXRob2RzIGFyZQo+IGluaGVyaXRlZCBhbnl3 YXkgYW5kIGFueSB0aGlyZCBwYXJ0eSBwbHVnaW4gbXVzdCB1cGhvbGQgdGhlIGludmFyaWFudCBv Zgo+IG5vdCBtZXNzaW5nIHdpdGggdGhlbS4uCj4KPiA+IFRoZW4sIHdlIGV2ZW50dWFsbHkgaW50 cm9kdWNlIGBQbHVnaW5UZW1wbGF0ZWAgb24gdGhlIHNhbWUgbGF5ZXIgYXMKPiA+IGBQbHVnaW5g LiBgUGx1Z2luVGVtcGxhdGVgIHdvdWxkIG9ubHkgY29udGFpbiBpbXBsZW1lbnRhdGlvbnMgZm9y IHRoZQo+ID4gbW9zdCBiYXNpYyBtZXRob2RzIChhbmQgbm90IHByb3ZpZGUgZGVmYXVsdHMgZm9y IGZpbGUtYmFzZWQgc3RvcmFnZXMpLgo+Cj4gZG8geW91IGhhdmUgc29tZXRoaW5nIGluIG1pbmQg Zm9yIHRoaXMgIlRlbXBsYXRlIj8gYW5kIGlmIHRob3NlIG1ldGhvZHMKPiB3ZXJlIHNvIGdlbmVy aWMgYW5kIGJhc2ljIGF0IHRoZSBzYW1lIHRpbWUsIHdoeSBzaG91bGRuJ3QgdGhleSBsaXZlIGlu Cj4gUGx1Z2luQmFzZSBpdHNlbGY/IDspIEkgYW0gbm90IHlldCBjb252aW5jZWQgYW4gZXh0cmEg bGF5ZXIgbGlrZSB0aGlzCj4gbWFrZXMgbXVjaCBzZW5zZSwgYnV0IEkgYW0gaGFwcHkgdG8gbGlz dGVuIHRvIChjb25jcmV0ZSkgYXJndW1lbnRzIHdoeQo+IGl0IHNob3VsZCBleGlzdC4gSU1ITyB0 aGUgbGVzcyBjb2RlIGluaGVyaXRlZCBieSBleHRlcm5hbCBwbHVnaW5zIHRoZQo+IGJldHRlciwg ZWxzZSB3ZSBhbHdheXMgaGF2ZSB0byBub3QgdG91Y2ggdGhhdCBjb2RlIGZvciBhZ2VzIHRvIGF2 b2lkCj4gYnJlYWtpbmcgdGhlbS4uCgpObyB0aGF0J3MgYSBnb29kIHBvaW50OyB0aGlzIGVudGly ZSBpZGVhIGhlcmUgY291bGQgYWN0dWFsbHkgYWxzbyBiZQpkb25lIHdpdGhvdXQgaW50cm9kdWNp bmcgYFBsdWdpblRlbXBsYXRlYC4KCj4KPiA+IFBsdWdpbkJhc2UKPiA+IOKUnOKUgOKUgCBQbHVn aW4KPiA+IOKUgsKgwqAg4pSc4pSA4pSAIEV4aXN0aW5nVGhpcmRQYXJ0eVBsdWdpbgo+ID4g4pSC wqDCoCDilJzilIDilIAgRGlyUGx1Z2luCj4gPiDilILCoMKgIOKUlOKUgOKUgCAuLi4KPiA+IOKU lOKUgOKUgCBQbHVnaW5UZW1wbGF0ZQo+ID4gCj4gPiBUaGUgaWRlYSBiZWhpbmQgdGhpcyBpcyB0 aGF0IHdlIGNvdWxkIHRoZW4gIm1pZ3JhdGUiIGVhY2ggcGx1Z2luIGFuZAo+ID4gYmFzZSBpdCBv ZmYgYFBsdWdpblRlbXBsYXRlYCBpbnN0ZWFkLiBIZWxwZXJzIHRoYXQgYXJlIHNoYXJlZCBiZXR3 ZWVuCj4gPiBwbHVnaW5zIGNvdWxkIGdvIGludG8gYFBWRTo6U3RvcmFnZTo6Q29tbW9uOjoqYCBp bnN0ZWFkIG9mIGJlaW5nCj4gPiBpbXBsaWNpdGx5IGJlY29taW5nIHBhcnQgb2YgcGx1Z2lucycg bW9kdWxlcyBkdWUgdG8gaW5oZXJpdGFuY2UuCj4KPiB0aGUgaXNzdWUgd2l0aCB0aGF0IGlzIHRo YXQgd2UndmUgbm93IGp1c3QgbW92ZWQgdGhlIHByb2JsZW0gLSB3aGF0IGFyZQo+IHRoZSBzdGFi aWxpdHkgZ3VhcmFudGVlcyBmb3IgUFZFOjpTdG9yYWdlOjpDb21tb246OiogPyBhcmUgZXh0ZXJu YWwKPiBwbHVnaW5zIGFsbG93ZWQvc3VwcG9zZWQgdG8gdXNlIHRoZW0/IEkgZG8gdGhpbmsgd2Ug d2FudCB0byBrZWVwIHNvbWUKPiBhbW91bnQgb2YgIlBWRS1zcGVjaWZpYywgaW50ZXJuYWwiIGhl bHBlciBjb2RlICh3aGV0aGVyIGluIHRoZSBwbHVnaW5zCj4gdGhlbXNlbHZlcyBvciBpbiBzb21l IHN0YW5kYWxvbmUgaGVscGVyIG1vZHVsZSkgdGhhdCBhcmUgb2ZmLWxpbWl0cyBmb3IKPiBleHRl cm5hbCBwbHVnaW5zLCBpZiBqdXN0IHRvIGF2b2lkIHdyaXRpbmcgdXMgaW50byBhIGNvcm5lci4g dGhlIGVhc2llc3QKPiB3YXkgdG8gYWNoaWV2ZSB0aGF0IGlzIHRvIG1pZ3JhdGUgZXh0ZXJuYWwg cGx1Z2lucyBhd2F5IGZyb20gUGx1Z2luLnBtCj4gKHdoaWNoIHdlIGNhbiBlbmZvcmNlIGF0IHBs dWdpbiBsb2FkaW5nIHRpbWUgYXQgc29tZSBwb2ludCBhZnRlciBhCj4gZGVwcmVjYXRpb24gcGVy aW9kKS4KClllYWggSSBhZ3JlZSwgSSdtIGp1c3Qgbm90IGVudGlyZWx5IHN1cmUgeWV0IHdoaWNo ICpleGFjdCogYXBwcm9hY2ggaGVyZQp3b3VsZCBiZSB0aGUgYmVzdC4KCklmIHlvdSdkIGxpa2Us IHdlIGNhbiByZXZpc2l0IHRoaXMgdG9waWMgb25jZSBpdCBiZWNvbWVzIHJlbGV2YW50OyBmb3IK bm93IEkgdGhpbmsgd2UgY2FuIG1vdmUgZm9yd2FyZCB3aXRoIHRoZSBpbmhlcml0YW5jZSBzdHJ1 Y3R1cmUgdGhhdCB0aGlzCnNlcmllcyBwcm9wb3NlcywgdGhhdCBpczoKClNlY3Rpb25Db25maWcK 4pSU4pSA4pSAIFBsdWdpbkJhc2UKICAgIOKUlOKUgOKUgCBQbHVnaW4KICAgICAgICDilJzilIDi lIAgRGlyUGx1Z2luCiAgICAgICAg4pSc4pSA4pSAIC4uLgogICAgICAgIOKUnOKUgOKUgCBFeGlz dGluZ1RoaXJkUGFydHlQbHVnaW4KICAgICAgICDilJTilIDilIAgLi4uCgpJbiBhIGZ1dHVyZSBz ZXJpZXMsIEknZCB0aGVuIHByb2NlZWQgd2l0aCBtb3ZpbmcgdGhlClNlY3Rpb25Db25maWctcmVs YXRlZCBzdHVmZiB0byBQbHVnaW5CYXNlIChhbmQgcGVyaGFwcyBvdGhlcgoiZnVuZGFtZW50YWwi IHN0dWZmOyB5ZXQgdG8gYmUgZGVjaWRlZCB3aGF0KS4gV2hlbiB0aGF0IGhhcHBlbnMsIEknbGwK YWxzbyBzZWUgd2hhdCAibWlncmF0aW9uIGFwcHJvYWNoIiB3b3VsZCBiZSB0aGUgYmVzdCwgd2hh dCBpbnRlcm5hbCAvCmV4dGVybmFsIGhlbHBlcnMgdG8gaGF2ZSwgc3RhYmlsaXR5IGd1YXJhbnRl ZXMsIGV0Yy4KClRoZSBvbmx5IHRoaW5nIEkgd291bGQgZGVmaW5pdGVseSB3YW50IHRvIGF2b2lk IGlzIGludHJvZHVjaW5nIGFub3RoZXIKaW5oZXJpdGFuY2UgbGF5ZXIgc29tZXdoZXJlLCBhcyBp dCdzIGFscmVhZHkgc29tZXdoYXQgaGFyZCB0byBrZWVwIHRyYWNrCm9mIHRoaW5ncy4KCj4KPiBv YnZpb3VzbHkgZm9yIGhlbHBlcnMgdGhhdCB3ZSBkZWVtIHN0YWJsZSBlbm91Z2ggbW92aW5nIHRo ZW0gdG8gQ29tbW9uCj4gYW5kIHdyYXBwaW5nIHRoZW0gaW4gdGhlaXIgb2xkIGxvY2F0aW9uIGlu IFBsdWdpbiB3b3VsZCBiZSBhIHZpYWJsZQo+IG1pZ3JhdGlvbiBzdHJhdGVneS4KCkkgYWdyZWUg aGVyZSBhcyB3ZWxsOyB0aGF0J3Mgc29tZXRoaW5nIEkgYXR0ZW1wdGVkIGEgbG9uZyB3aGlsZSBh Z28uCkknbSBsb29raW5nIGZvcndhcmQgdG8gcmV2aXNpdGluZyB0aGF0IPCfkYAKCj4KPiA+IFBs dWdpbkJhc2UKPiA+IOKUnOKUgOKUgCBQbHVnaW4KPiA+IOKUgsKgwqAg4pSc4pSA4pSAIC4uLgo+ ID4g4pSCwqDCoCDilJTilIDilIAgRXhpc3RpbmdUaGlyZFBhcnR5UGx1Z2luCj4gPiDilJTilIDi lIAgUGx1Z2luVGVtcGxhdGUKPiA+ICAgICDilJzilIDilIAgLi4uCj4gPiAgICAg4pSU4pSA4pSA IERpclBsdWdpbiAoY2xlYW5lZCB1cCkKPiA+IAo+ID4gVGhhdCB3YXkgd2UgY291bGQgc3RlcCBi eSBzdGVwICJkaXNlbnRhbmdsZSIgdGhlIGV4aXN0aW5nIHBsdWdpbnMgZnJvbQo+ID4gZWFjaCBv dGhlciB3aXRob3V0IGhhdmluZyB0byBjb25zdGFudGx5IGtlZXAgdGhlIG9yaWdpbmFsIGJlaGF2 aW91cihzKQo+ID4gb2YgYFBsdWdpbmAgaW4gdGhlIGJhY2sgb2Ygb25lJ3MgaGVhZCBhbmQgYWNj b3VudCBmb3IgdGhlbS4gSW5zdGVhZCwKPiA+IGVhY2ggcGx1Z2luIHdvdWxkIGltcGxlbWVudCBw cmVjaXNlbHkgd2hhdCBpdCBpdHNlbGYgbmVlZHMuCj4gPiAKPiA+IFNpbmNlIGJvdGggdGhlIG9s ZCBgUGx1Z2luYCBhbmQgdGhlIG5ldyBgUGx1Z2luVGVtcGxhdGVgIHNoYXJlIHRoZSBzYW1lCj4g PiBpbnRlcmZhY2UsIG5hbWVseSBgUGx1Z2luQmFzZWAsIHdlIGNvdWxkIHN0aWxsIHN1cHBvcnQg dGhlIG9sZCBgUGx1Z2luYAo+ID4gdW50aWwgZXZlcnl0aGluZydzIGJlZW4gbW92ZWQgb3ZlciBh bmQgdGhpcmQtcGFydHkgZGV2cyBoYXZlIGhhZCBlbm91Z2gKPiA+IHRpbWUgdG8gYWRhcHQgdGhl aXIgb3duIGNvZGUsIHRvby4KPgo+IHNlZSBhYm92ZSAtIHdlIGNhbiBkbyBhbGwgb2YgdGhhdCB3 aXRob3V0IGludHJvZHVjaW5nIFBsdWdpblRlbXBsYXRlIGFzCj4gd2VsbCwgaW5jbHVkaW5nIGF0 IHNvbWUgcG9pbnQgbm8gbG9uZ2VyIGFsbG93aW5nIHRoaXJkIHBhcnR5IHBsdWdpbnMgdG8KPiBy ZS11c2UgUGx1Z2luIGJ1dCBmb3JjZSB0aGVtIHRvIGJlIGJhc2VkIG9mIFBsdWdpbkJhc2UuCj4K PiA+IFdoaWxlIGRvaW5nIGFsbCB0aGlzLCB3ZSBjb3VsZCBhbHNvIHJld29yayBwYXJ0cyBvZiB0 aGUgQVBJIHRoYXQgZGlkbid0Cj4gPiBhZ2UgdGhhdCBncmFjZWZ1bGx5LCBwZXJoYXBzIGRlcHJl Y2F0ZSBjZXJ0YWluIG9sZCBtZXRob2RzLCBpbnRyb2R1Y2UKPiA+IG5ldyBtZXRob2RzLCBldGMu IGFzIHdlJ2QgaGF2ZSBhICJjbGVhbiIgYnJlYWssIHNvdG9zcGVhay4KPgo+IHRoaXMgY291bGQg YWxzbyBiZSBkb25lIHdpdGhvdXQgbW92aW5nIGFsbCBwbHVnaW5zIG92ZXIgdG8KPiBQbHVnaW5U ZW1wbGF0ZSwgYWx0aG91Z2ggaXQgbWlnaHQgYmUgYSBiaXQgbW9yZSBtZXNzeS9kYW5nZXJvdXMu Cj4KPiA+IFNvLCB0byBzdW1tYXJpemUgbXkgaWRlYToKPiA+IC0gS2VlcCBgUGx1Z2luQmFzZWAg YXMgaXQgaXMgcmlnaHQgbm93LCBidXQgYWxzbyBpbmNsdWRlCj4gPiAgIFNlY3Rpb25Db25maWct cmVsYXRlZCBjb2RlCj4gPiAtIEludHJvZHVjZSBgUGx1Z2luVGVtcGxhdGVgIHdpdGggbWluaW1h bCBpbXBsZW1lbnRhdGlvbiBsYXRlciBkb3duIHRoZQo+ID4gICBsaW5lIG9uIHRoZSBzYW1lIGlu aGVyaXRhbmNlIGxheWVyIGFzIGBQbHVnaW5gCj4gPiAtIFNsb3dseSBtaWdyYXRlIG91ciBwbHVn aW5zLCBiYXNpbmcgdGhlbSBvZmYgb2YgYFBsdWdpblRlbXBsYXRlYCB3aGlsZQo+ID4gICB0b3Nz aW5nIG91dCBvbGQgY29kZSwgbWFraW5nIHRoZW0gaW5kZXBlbmRlbnQgZnJvbSBvbmUgYW5vdGhl ciwgYW5kCj4gPiAgIGNvbGxlY3Rpbmcgc2hhcmVkIGhlbHBlcnMgaW4gYFBWRTo6U3RvcmFnZTo6 Q29tbW9uOjoqYAo+ID4gCj4gPiBJJ2QgcmVhbGx5IGxpa2UgdG8gaGVhciB5b3VyIHRob3VnaHRz IG9uIHRoaXMsIGJlY2F1c2UgSSdtIG5vdCBzdXJlIGlmCj4gPiB0aGlzIGlzICphY3R1YWxseSog ZmVhc2libGUgb3IgcHJvdmlkZXMgYW55IFJPSSBkb3duIHRoZSBsaW5lLiBPbmUKPiA+IGFsdGVy bmF0aXZlIHRoYXQgSSBjYW4gdGhpbmsgb2YgaXMgdG8ganVzdCBrZWVwIHRoZSBpbmhlcml0YW5j ZQo+ID4gaGllcmFyY2h5IGFzIGl0IGlzIChhcyBpbiB0aGlzIHNlcmllcykgYW5kIGRpc2VudGFu Z2xlIHRoZSBwbHVnaW5zIGFzCj4gPiB0aGV5IGFyZSByaWdodCBub3csIHdpdGhvdXQgY2hhbmdp bmcgdGhlaXIgcGFyZW50IChzbywgYWxtb3N0IHRoZSBzYW1lCj4gPiBhcyB5b3VyIHNlY29uZCBp ZGVhKS4gSSBkaWQgc3RhcnQgYnJlYWtpbmcgYXBhcnQgb3VyIHBsdWdpbnMgbGlrZSB0aGF0Cj4g PiBsYXN0IHllYXIsIGJ1dCB0aGF0IHdhcyB0b28gbXVjaCBhbGwgYXQgb25jZSBbMV0uCj4gPiAK PiA+IFsxXTogaHR0cHM6Ly9sb3JlLnByb3htb3guY29tL3B2ZS1kZXZlbC8yMDI0MDcxNzA5NDAz NC4xMjQ4NTctMS1tLmNhcnJhcmFAcHJveG1veC5jb20vCj4KPgo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gcHZlLWRldmVsIG1haWxpbmcgbGlzdAo+ IHB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20v Y2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAoKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1k ZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4v bWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwK