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 [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id CA3F41FF17C for <inbox@lore.proxmox.com>; Wed, 2 Apr 2025 18:32:15 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 292021F3DB; Wed, 2 Apr 2025 18:32:05 +0200 (CEST) Mime-Version: 1.0 Date: Wed, 02 Apr 2025 18:32:01 +0200 Message-Id: <D8WAP6RU0D56.1T3QC7BCQI5D7@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-7-m.carrara@proxmox.com> <1743430815.p3lidgbz0m.astroid@yuna.none> In-Reply-To: <1743430815.p3lidgbz0m.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.322 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_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible spam tricks 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 Subject: Re: [pve-devel] [PATCH v1 pve-storage 6/8] pluginbase: document image operation methods 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> T24gTW9uIE1hciAzMSwgMjAyNSBhdCA1OjEyIFBNIENFU1QsIEZhYmlhbiBHcsO8bmJpY2hsZXIg d3JvdGU6Cj4gT24gTWFyY2ggMjYsIDIwMjUgMzoyMCBwbSwgTWF4IENhcnJhcmEgd3JvdGU6Cj4g PiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGZvbGxvd2luZyBtZXRob2RzOgo+ID4gLSBsaXN0 X2ltYWdlcwo+ID4gLSBjcmVhdGVfYmFzZQo+ID4gLSBjbG9uZV9pbWFnZQo+ID4gLSBhbGxvY19p bWFnZQo+ID4gLSBmcmVlX2ltYWdlCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IE1heCBDYXJyYXJh IDxtLmNhcnJhcmFAcHJveG1veC5jb20+Cj4gPiBDby1hdXRob3JlZC1ieTogTWF4aW1pbGlhbm8g U2FuZG92YWwgPG0uc2FuZG92YWxAcHJveG1veC5jb20+Cj4gPiAtLS0KPiA+ICBzcmMvUFZFL1N0 b3JhZ2UvUGx1Z2luQmFzZS5wbSB8IDExMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDExMSBpbnNlcnRpb25zKCspCj4gPiAKPiA+IGRpZmYg LS1naXQgYS9zcmMvUFZFL1N0b3JhZ2UvUGx1Z2luQmFzZS5wbSBiL3NyYy9QVkUvU3RvcmFnZS9Q bHVnaW5CYXNlLnBtCj4gPiBpbmRleCBiM2NlNjg0Li4zN2IxNDcxIDEwMDY0NAo+ID4gLS0tIGEv c3JjL1BWRS9TdG9yYWdlL1BsdWdpbkJhc2UucG0KPiA+ICsrKyBiL3NyYy9QVkUvU3RvcmFnZS9Q bHVnaW5CYXNlLnBtCj4gPiBAQCAtNzIxLDI2ICs3MjEsMTM3IEBAIHN1YiBvbl9kZWxldGVfaG9v ayB7Cj4gPiAgCj4gPiAgPWN1dAo+ID4gIAo+ID4gKz1oZWFkMyAkcGx1Z2luLT5saXN0X2ltYWdl cygkc3RvcmVpZCwgXCVzY2ZnIFssICR2bWlkLCBcQHZvbGxpc3QsIFwlY2FjaGVdKQo+ID4gKwo+ ID4gK0I8UkVRVUlSRUQ6PiBNdXN0IGJlIGltcGxlbWVudGVkIGluIGV2ZXJ5IHN0b3JhZ2UgcGx1 Z2luLgo+ID4gKwo+ID4gK1JldHVybnMgYSBsaXN0cmVmIG9mIGFsbCBkaXNrIGltYWdlcyBvZiBh IHN0b3JhZ2UuIElmIHRoZSBzdG9yYWdlIGRvZXMgbm90Cj4gPiArc3VwcG9ydCBzdG9yaW5nIGRp c2sgaW1hZ2VzLCByZXR1cm5zIGFuIGVtcHR5IGxpc3RyZWYuCj4gPiArCj4gPiArT3B0aW9uYWxs eSwgaWYgQzxcQHZvbGxpc3Q+IGlzIHByb3ZpZGVkLCByZXR1cm4gb25seSBkaXNrcyB3aG9zZSB2 b2x1bWUgSUQgaXMKPiA+ICt3aXRoaW4gQzxcQHZvbGxpc3Q+LiBOb3RlIHRoYXQgdGhpcyB1c3Vh bGx5IGhhcyBoaWdoZXIgcHJlY2VkZW5jZSB0aGFuCj4gPiArQzwkdm1pZD4uCgpVcGZyb250IG5v dGU6IFVubGVzcyBJIG90aGVyd2lzZSBjb21tZW50IHNvbWV0aGluZywgSSBhZ3JlZSB3aXRoIHlv dS4KSnVzdCBzcGFyaW5nIG15c2VsZiBmcm9tIHdyaXRpbmcgYW5kIHlvdSBmcm9tIHJlYWRpbmcg dG9vIG1hbnkgQUNLcyA6UAoKPgo+IHdoYXQgZG9lcyB1c3VhbGx5IG1lYW4/IHdoYXQgZG9lcyAk dm1pZCBkbz8KClNvcnJ5LCB0aGlzIGdvdCBsb3N0IHdoZW4gdG9zc2luZyBvdXQgc29tZSByZWR1 bmRhbnQgcGFyYWdyYXBocyBoZXJlLgoKVGhlICJ1c3VhbGx5IiBjYW4gYmUgZHJvcHBlZDsgQzwk dm1pZD4gaXMgdGhlIGd1ZXN0J3MgSUQgKG1lbnRpb25lZCBpbgp0aGUgREVTQ1JJUFRJT04gaW4g cGF0Y2ggMDEpIGFuZCB1bmxlc3MgQzxcQHZvbGxpc3Q+IGlzIHByb3ZpZGVkLCB0aGUKaW1hZ2Vz IHRoYXQgdGhlIGdpdmVuIEM8JHZtaWQ+IG93bnMgd2lsbCBiZSByZXR1cm5lZC4KCj4KPiA+ICsK PiA+ICtDPGRpZT5zIGluIGNhc2Ugb2YgZXJyb3JzLgo+ID4gKwo+ID4gK1RoaXMgbWV0aG9kIG1h eSByZXVzZSBMPDwgY2FjaGVkIGluZm9ybWF0aW9uIHZpYSBDPFwlY2FjaGU+fC8iQ0FDSElORyBF WFBFTlNJVkUgT1BFUkFUSU9OUyIgPj4uCj4gPiArCj4gPiArVGhlIHJldHVybmVkIGxpc3RyZWYg aGFzIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOgo+ID4gKwo+ID4gKyAgICBbCj4gPiArCXsKPiA+ ICsJICAgIGN0aW1lID0+ICIxNjg5MTYzMzIyIiwgIyBjcmVhdGlvbiB0aW1lIGFzIHVuaXggdGlt ZXN0YW1wCj4gPiArCSAgICBmb3JtYXQgPT4gInJhdyIsCj4gPiArCSAgICBzaXplID0+IDg1ODk5 MzQ1OTIsICMgaW4gYnl0ZXMhCj4gPiArCSAgICB2bWlkID0+IDEwMSwKPiA+ICsJICAgIHZvbGlk ID0+ICJsb2NhbC1sdm06YmFzZS0xMDEtZGlzay0wIiwgIyB2b2x1bWUgSUQsIHN0b3JhZ2Utc3Bl Y2lmaWMKPiA+ICsJfSwKPiA+ICsJIyBbLi4uXQo+ID4gKyAgICBdCj4gPiArCj4gPiArPWN1dAo+ ID4gKwo+ID4gIHN1YiBsaXN0X2ltYWdlcyB7Cj4gPiAgICAgIG15ICgkY2xhc3MsICRzdG9yZWlk LCAkc2NmZywgJHZtaWQsICR2b2xsaXN0LCAkY2FjaGUpID0gQF87Cj4gPiAgICAgIGNyb2FrICJp bXBsZW1lbnQgbWUgaW4gc3ViLWNsYXNzXG4iOwo+ID4gIH0KPiA+ICAKPiA+ICs9aGVhZDMgJHBs dWdpbi0+Y3JlYXRlX2Jhc2UoJHN0b3JlaWQsIFwlc2NmZywgJHZvbG5hbWUpCj4gPiArCj4gPiAr QjxPUFRJT05BTDo+IE1heSBiZSBpbXBsZW1lbnRlZCBpbiBhIHN0b3JhZ2UgcGx1Z2luLgo+ID4g Kwo+ID4gK0NyZWF0ZXMgYSBiYXNlIHZvbHVtZSBmcm9tIGFuIGV4aXN0aW5nIHZvbHVtZSwgYWxs b3dpbmcgdGhlIHZvbHVtZSB0byBiZQo+Cj4gdGhpcyBpcyBtaXNsZWFkaW5nIC0gaXQgZG9lc24n dCBjcmVhdGUgYSBiYXNlIHZvbHVtZSBmcm9tIGFuIGV4aXN0aW5nCj4gdm9sdW1lLCBpdCAqY29u dmVydHMqIGFuIGV4aXN0aW5nIHZvbHVtZSBpbnRvIGEgYmFzZSB2b2x1bWUhCgpPaCBkYW5nLCB0 aGFua3MgZm9yIHBvaW50aW5nIHRoaXMgb3V0ISBTb3JyeSBmb3IgdGhlIG92ZXJzaWdodC4KCj4K PiA+ICtMPDwgY2xvbmVkfC8iJHBsdWdpbi0+Y2xvbmVfaW1hZ2UoLi4uKSIgPj4uIFRoaXMgY2xv bmVkIHZvbHVtZSAodXN1YWxseQo+ID4gK2EgZGlzayBpbWFnZSkgbWF5IHRoZW4gYmUgdXNlZCBh cyBhIGJhc2UgZm9yIHRoZSBwdXJwb3NlIG9mIGNyZWF0aW5nIGxpbmtlZAo+Cj4gdGhpcyBpcyB3 cm9uZz8gdGhlcmUgaXMgbm8gY2xvbmVkIHZvbHVtZSB5ZXQ/IGFuZCBhbGwgb2YgdGhpcyBvbmx5 Cj4gYXBwbGllcyB0byBpbWFnZXMgYW5kIG5vdCBvdGhlciB2b2x1bWVzPwo+Cj4gPiArY2xvbmVz LiBTZWUgTDxDPFBWRTo6U3RvcmFnZTo6THZtVGhpblBsdWdpbj4+IGFuZAo+ID4gK0w8QzxQVkU6 OlN0b3JhZ2U6OlpGU1Bvb2xQbHVnaW4+PiBmb3IgZXhhbXBsZSBpbXBsZW1lbnRhdGlvbnMuCj4g PiArCj4gPiArT24gY29tcGxldGlvbiwgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgbmV3IGJhc2Ug dm9sdW1lICh0aGUgbmV3IEM8JHZvbG5hbWU+KS4KPiA+ICsKPiA+ICtUaGlzIG1ldGhvZCBpcyBj YWxsZWQgaW4gdGhlIGNvbnRleHQgb2YgQzxMPDwgY2x1c3Rlcl9sb2NrX3N0b3JhZ2UoKXwvImNs dXN0ZXJfbG9ja19zdG9yYWdlKC4uLikiID4+PiwKPiA+ICtpLmUuIHdoZW4gdGhlIHN0b3JhZ2Ug aXMgQjxsb2NrZWQ+Lgo+Cj4gU2hvdWxkbid0IHRoaXMgc2F5IHRoYXQgaXQgKnNob3VsZCogYmUg Y2FsbGVkIGluIGEgbG9ja2VkIGNvbnRleHQ/Cj4KPiA+ICsKPiA+ICs9Y3V0Cj4gPiArCj4gPiAg c3ViIGNyZWF0ZV9iYXNlIHsKPiA+ICAgICAgbXkgKCRjbGFzcywgJHN0b3JlaWQsICRzY2ZnLCAk dm9sbmFtZSkgPSBAXzsKPiA+ICAgICAgY3JvYWsgImltcGxlbWVudCBtZSBpbiBzdWItY2xhc3Nc biI7Cj4gPiAgfQo+ID4gIAo+ID4gKz1oZWFkMyAkcGx1Z2luLT5jbG9uZV9pbWFnZSgkc2NmZywg JHN0b3JlaWQsICR2b2xuYW1lLCAkdm1pZCBbLCAkc25hcF0pCj4gPiArCj4gPiArPWhlYWQzICRw bHVnaW4tPmNsb25lX2ltYWdlKC4uLikKPiA+ICsKPiA+ICtCPFJFUVVJUkVEOj4gTXVzdCBiZSBp bXBsZW1lbnRlZCBpbiBldmVyeSBzdG9yYWdlIHBsdWdpbi4KPgo+IG5vdCByZWFsbHk/IHRoZXJl J3MgYSBmZWF0dXJlIGd1YXJkIGZvciBpdCwgc28gb25seSBzdG9yYWdlIHBsdWdpbnMgdGhhdAo+ IHN1cHBvcnQgaXQgc2hvdWxkIGV2ZXIgZ2V0IGl0IGNhbGxlZCBhbnl3YXkuLgo+Cj4gd2hhdCBk b2VzICR2bWlkIG1lYW4/CgpTZWUgYWJvdmU7IHRoZSBndWVzdCdzIElELiBTaW5jZSBpdCB3YXMg dW5jbGVhciwgdGhlIHBhcmFtZXRlciBzaG91bGQKcHJvYmFibHkgYmUgZXhwbGFpbmVkIGhlcmUg KGFuZCBhbHNvIGFib3ZlKSBpbnN0ZWFkIG9mIChqdXN0KSBpbiB0aGUKREVTQ1JJUFRJT04gc2Vj dGlvbi4KCj4KPiA+ICsKPiA+ICtDbG9uZXMgYSBkaXNrIGltYWdlIG9yIGEgc25hcHNob3Qgb2Yg YW4gaW1hZ2UsIHJldHVybmluZyB0aGUgbmFtZSBvZiB0aGUgbmV3Cj4gPiAraW1hZ2UgKHRoZSBu ZXcgQzwkdm9sbmFtZT4pLiBOb3RlIHRoYXQgSTxjbG9uaW5nPiBoZXJlIG1lYW5zIHRvIGNyZWF0 ZSBhIGxpbmtlZAo+ID4gK2Nsb25lIGFuZCBub3QgZHVwbGljYXRpbmcgYW4gaW1hZ2UuIFNlZSBM PEM8UFZFOjpTdG9yYWdlOjpMdm1UaGluUGx1Z2luPj4gYW5kCj4gPiArTDxDPFBWRTo6U3RvcmFn ZTo6WkZTUG9vbFBsdWdpbj4+IGZvciBleGFtcGxlIGltcGxlbWVudGF0aW9ucy4KPgo+IHRoZW4g d2h5IG5vdCBzdGFydCB3aXRoCj4KPiAiQ3JlYXRlcyBhIGxpbmtlZCBjbG9uZSBvZiBhbiBleGlz dGluZyBkaXNrIGltYWdlIG9yIHNuYXBzaG90IG9mIGFuCj4gaW1hZ2UiCj4KPiA/IG1heWJlIGFs c28gaW5jbHVkZSB0aGF0IHVubGVzcyB0aGUgbGlua2VkIGNsb25lIGlzIDEwMCUgaW5kZXBlbmRl bnQKPiBmcm9tIHRoZSBiYXNlIChvbmx5IHRydWUgZm9yIExWTSB0aGluIGF0bT8pLCB0aGUgbmV3 IHZvbGlkIHNob3VsZCBlbmNvZGUKPiB0aGUgYmFzZS0+Y2xvbmUgcmVsYXRpb24gaW4gdGhlIHZv bG5hbWU/Cj4KPiA+ICsKPiA+ICtDPGRpZT5zIGluIGNhc2Ugb2YgYW4gZXJyb3Igb2YgaWYgdGhl IHVuZGVybHlpbmcgc3RvcmFnZSBkb2Vzbid0IHN1cHBvcnQKPgo+IHMvb2Yvb3IvCj4KPiA+ICtj bG9uaW5nIGltYWdlcy4KPiA+ICsKPiA+ICtUaGlzIG1ldGhvZCBpcyBjYWxsZWQgaW4gdGhlIGNv bnRleHQgb2YgQzxMPDwgY2x1c3Rlcl9sb2NrX3N0b3JhZ2UoKXwvImNsdXN0ZXJfbG9ja19zdG9y YWdlKC4uLikiID4+PiwKPiA+ICtpLmUuIHdoZW4gdGhlIHN0b3JhZ2UgaXMgQjxsb2NrZWQ+Lgo+ Cj4gc2FtZSBhcyBhYm92ZQo+Cj4gPiArCj4gPiArPWN1dAo+ID4gKwo+ID4gIHN1YiBjbG9uZV9p bWFnZSB7Cj4gPiAgICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUsICR2 bWlkLCAkc25hcCkgPSBAXzsKPiA+ICAgICAgY3JvYWsgImltcGxlbWVudCBtZSBpbiBzdWItY2xh c3NcbiI7Cj4gPiAgfQo+ID4gIAo+ID4gKz1oZWFkMyAkcGx1Z2luLT5hbGxvY19pbWFnZSgkc3Rv cmVpZCwgJHNjZmcsICR2bWlkLCAkZm10LCAkbmFtZSwgJHNpemUpCj4gPiArCj4gPiArQjxSRVFV SVJFRDo+IE11c3QgYmUgaW1wbGVtZW50ZWQgaW4gZXZlcnkgc3RvcmFnZSBwbHVnaW4uCj4gPiAr Cj4gPiArQWxsb2NhdGVzIGEgZGlzayBpbWFnZSB3aXRoIHRoZSBnaXZlbiBmb3JtYXQgQzwkZm10 PiBhbmQgQzwkc2l6ZT4gaW4gYnl0ZXMsCj4gPiArcmV0dXJuaW5nIHRoZSBuYW1lIG9mIHRoZSBu ZXcgaW1hZ2UgKHRoZSBuZXcgQzwkdm9sbmFtZT4pLiBTZWUKPiA+ICtDPEw8PCBwbHVnaW5kYXRh KCl8LyIkcGx1Z2luLT5wbHVnaW5kYXRhKCkiID4+PiBmb3IgYWxsIGRpc2sgZm9ybWF0cy4KPiA+ ICsKPiA+ICtPcHRpb25hbGx5LCBpZiBnaXZlbiwgc2V0IHRoZSBuYW1lIG9mIHRoZSBpbWFnZSB0 byBDPCRuYW1lPi4gSWYgQzwkbmFtZT4gaXNuJ3QKPiA+ICtwcm92aWRlZCwgdGhlIG5leHQgbmFt ZSBzaG91bGQgYmUgZGV0ZXJtaW5lZCB2aWEgQzxMPDwgZmluZF9mcmVlX2Rpc2tuYW1lKCl8LyIk cGx1Z2luLT5maW5kX2ZyZWVfZGlza25hbWUoLi4uKSIgPj4+Lgo+Cj4gYSBzdWl0YWJsZSBuYW1l IHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCwgdW5sZXNzIHdlIHJlYWxseSB3YW50 Cj4gdG8gc3RhYmlsaXplIGZpbmRfZnJlZV9kaXNrbmFtZSBhcyBwYXJ0IG9mIHRoZSBBUEkuLgo+ Cj4gd2hhdCBkb2VzICR2bWlkIG1lYW4/Cj4KPiA+ICsKPiA+ICtDPGRpZT5zIGluIGNhc2Ugb2Yg YW4gZXJyb3Igb2YgaWYgdGhlIHVuZGVybHlpbmcgc3RvcmFnZSBkb2Vzbid0IHN1cHBvcnQKPiA+ ICthbGxvY2F0aW5nIGltYWdlcy4KPiA+ICsKPiA+ICtUaGlzIG1ldGhvZCBpcyBjYWxsZWQgaW4g dGhlIGNvbnRleHQgb2YgQzxMPDwgY2x1c3Rlcl9sb2NrX3N0b3JhZ2UoKXwvImNsdXN0ZXJfbG9j a19zdG9yYWdlKC4uLikiID4+PiwKPiA+ICtpLmUuIHdoZW4gdGhlIHN0b3JhZ2UgaXMgQjxsb2Nr ZWQ+Lgo+ID4gKwo+ID4gKz1jdXQKPiA+ICsKPiA+ICBzdWIgYWxsb2NfaW1hZ2Ugewo+ID4gICAg ICBteSAoJGNsYXNzLCAkc3RvcmVpZCwgJHNjZmcsICR2bWlkLCAkZm10LCAkbmFtZSwgJHNpemUp ID0gQF87Cj4gPiAgICAgIGNyb2FrICJpbXBsZW1lbnQgbWUgaW4gc3ViLWNsYXNzXG4iOwo+ID4g IH0KPiA+ICAKPiA+ICs9aGVhZDMgJHBsdWdpbi0+ZnJlZV9pbWFnZSgkc3RvcmVpZCwgJHNjZmcs ICR2b2xuYW1lIFssICRpc0Jhc2UsICRmb3JtYXRdKQo+ID4gKwo+ID4gKz1oZWFkMyAkcGx1Z2lu LT5mcmVlX2ltYWdlKC4uLikKPiA+ICsKPiA+ICtCPFJFUVVJUkVEOj4gTXVzdCBiZSBpbXBsZW1l bnRlZCBpbiBldmVyeSBzdG9yYWdlIHBsdWdpbi4KPiA+ICsKPiA+ICtGcmVlcyAoZGVsZXRlcykg dGhlIGRpc2sgaW1hZ2UgZ2l2ZW4gYnkgQzwkdm9sbmFtZT4uIE9wdGlvbmFsbHksIHRoZSBpbWFn ZSBtYXkKPiA+ICtiZSBhIGJhc2UgaW1hZ2UgKEM8JGlzQmFzZT4pIGFuZCBoYXZlIGEgY2VydGFp biBDPCRmb3JtYXQ+LiBTZWUKPiA+ICtDPEw8PCBwbHVnaW5kYXRhKCl8LyIkcGx1Z2luLT5wbHVn aW5kYXRhKCkiID4+PiBmb3IgYWxsIGRpc2sgZm9ybWF0cy4KPiA+ICsKPiA+ICtJZiBhIGNsZWFu dXAgaXMgcmVxdWlyZWQgYWZ0ZXIgZnJlZWluZyB0aGUgaW1hZ2UsIHJldHVybnMgYSByZWZlcmVu Y2UgdG8gYQo+ID4gK3N1YnJvdXRpbmUgdGhhdCBwZXJmb3JtcyB0aGUgY2xlYW51cCwgYW5kIEM8 dW5kZWY+IG90aGVyd2lzZS4KPgo+IG1pZ2h0IGJlIGEgZ29vZCBpZGVhIHRvIGV4cGxhaW4gd2h5 PyBhbHNvLCB3aGF0IGRvICRpc0Jhc2UgYW5kICRmb3JtYXQKPiBtZWFuPwo+Cj4gPiArCj4gPiAr QzxkaWU+cyBpbiBjYXNlIG9mIGVycm9ycywgaWYgdGhlIGltYWdlIGhhcyBhIEw8PCBDPHByb3Rl Y3RlZD4gYXR0cmlidXRlfC8iJHBsdWdpbi0+Z2V0X3ZvbHVtZV9hdHRyaWJ1dGUoLi4uKSIgPj4K PiA+ICsoYW5kIG1heSB0aHVzIG5vdCBiZSBmcmVlZCksIG9yIGlmIHRoZSB1bmRlcmx5aW5nIHN0 b3JhZ2UgaW1wbGVtZW50YXRpb24KPiA+ICtkb2Vzbid0IHN1cHBvcnQgZnJlZWluZyBpbWFnZXMu Cj4gPiArCj4gPiArVGhpcyBtZXRob2QgaXMgY2FsbGVkIGluIHRoZSBjb250ZXh0IG9mIEM8TDw8 IGNsdXN0ZXJfbG9ja19zdG9yYWdlKCl8LyJjbHVzdGVyX2xvY2tfc3RvcmFnZSguLi4pIiA+Pj4s Cj4gPiAraS5lLiB3aGVuIHRoZSBzdG9yYWdlIGlzIEI8bG9ja2VkPi4KPiA+ICsKPiA+ICtCPE5P VEU6PiBUaGUgcmV0dXJuZWQgY2xlYW51cCBzdWJyb3V0aW5lIGlzIGNhbGxlZCBpbiBhIHNlcGFy YXRlIHdvcmtlciBhbmQKPiA+ICtzaG91bGQgTDw8IGxvY2t8LyIkcGx1Z2luLT5jbHVzdGVyX2xv Y2tfc3RvcmFnZSguLi4pIiA+PiB0aGUgdW5kZXJseWluZyBzdG9yYWdlCj4gPiArc2VwYXJhdGVs eS4KPgo+IGl0IHNob3VsZD8gb3IgaXQgbXVzdD8KPgo+ID4gKwo+ID4gKz1jdXQKPiA+ICsKPiA+ ICBzdWIgZnJlZV9pbWFnZSB7Cj4gPiAgICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAkc2NmZywg JHZvbG5hbWUsICRpc0Jhc2UsICRmb3JtYXQpID0gQF87Cj4gPiAgICAgIGNyb2FrICJpbXBsZW1l bnQgbWUgaW4gc3ViLWNsYXNzXG4iOwo+ID4gLS0gCj4gPiAyLjM5LjUKPiA+IAo+ID4gCj4gPiAK PiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBw dmUtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPiBwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KPiA+ IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1k ZXZlbAo+ID4gCj4gPiAKPiA+IAo+Cj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+IHB2ZS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBwdmUtZGV2ZWxAbGlz dHMucHJveG1veC5jb20KPiBodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1h bi9saXN0aW5mby9wdmUtZGV2ZWwKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUtZGV2ZWxAbGlzdHMucHJv eG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGlu Zm8vcHZlLWRldmVsCg==