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 BEC6B1FF16B
	for <inbox@lore.proxmox.com>; Thu,  3 Apr 2025 09:23:49 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id A7F5B38CD7;
	Thu,  3 Apr 2025 09:23:35 +0200 (CEST)
Date: Thu, 03 Apr 2025 09:23:27 +0200
From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= <f.gruenbichler@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
References: <20250326142059.261938-1-m.carrara@proxmox.com>
 <20250326142059.261938-7-m.carrara@proxmox.com>
 <1743430815.p3lidgbz0m.astroid@yuna.none>
 <D8WAP6RU0D56.1T3QC7BCQI5D7@proxmox.com>
In-Reply-To: <D8WAP6RU0D56.1T3QC7BCQI5D7@proxmox.com>
MIME-Version: 1.0
User-Agent: astroid/0.16.0 (https://github.com/astroidmail/astroid)
Message-Id: <1743664476.2gt96bhyxx.astroid@yuna.none>
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.044 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
 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 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>

T24gQXByaWwgMiwgMjAyNSA2OjMyIHBtLCBNYXggQ2FycmFyYSB3cm90ZToKPiBPbiBNb24gTWFy
IDMxLCAyMDI1IGF0IDU6MTIgUE0gQ0VTVCwgRmFiaWFuIEdyw7xuYmljaGxlciB3cm90ZToKPj4g
T24gTWFyY2ggMjYsIDIwMjUgMzoyMCBwbSwgTWF4IENhcnJhcmEgd3JvdGU6Cj4+ID4gQWRkIGRv
Y3VtZW50YXRpb24gZm9yIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKPj4gPiAtIGxpc3RfaW1hZ2Vz
Cj4+ID4gLSBjcmVhdGVfYmFzZQo+PiA+IC0gY2xvbmVfaW1hZ2UKPj4gPiAtIGFsbG9jX2ltYWdl
Cj4+ID4gLSBmcmVlX2ltYWdlCj4+ID4gCj4+ID4gU2lnbmVkLW9mZi1ieTogTWF4IENhcnJhcmEg
PG0uY2FycmFyYUBwcm94bW94LmNvbT4KPj4gPiBDby1hdXRob3JlZC1ieTogTWF4aW1pbGlhbm8g
U2FuZG92YWwgPG0uc2FuZG92YWxAcHJveG1veC5jb20+Cj4+ID4gLS0tCj4+ID4gIHNyYy9QVkUv
U3RvcmFnZS9QbHVnaW5CYXNlLnBtIHwgMTExICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysKPj4gPiAgMSBmaWxlIGNoYW5nZWQsIDExMSBpbnNlcnRpb25zKCspCj4+ID4gCj4+ID4g
ZGlmZiAtLWdpdCBhL3NyYy9QVkUvU3RvcmFnZS9QbHVnaW5CYXNlLnBtIGIvc3JjL1BWRS9TdG9y
YWdlL1BsdWdpbkJhc2UucG0KPj4gPiBpbmRleCBiM2NlNjg0Li4zN2IxNDcxIDEwMDY0NAo+PiA+
IC0tLSBhL3NyYy9QVkUvU3RvcmFnZS9QbHVnaW5CYXNlLnBtCj4+ID4gKysrIGIvc3JjL1BWRS9T
dG9yYWdlL1BsdWdpbkJhc2UucG0KPj4gPiBAQCAtNzIxLDI2ICs3MjEsMTM3IEBAIHN1YiBvbl9k
ZWxldGVfaG9vayB7Cj4+ID4gIAo+PiA+ICA9Y3V0Cj4+ID4gIAo+PiA+ICs9aGVhZDMgJHBsdWdp
bi0+bGlzdF9pbWFnZXMoJHN0b3JlaWQsIFwlc2NmZyBbLCAkdm1pZCwgXEB2b2xsaXN0LCBcJWNh
Y2hlXSkKPj4gPiArCj4+ID4gK0I8UkVRVUlSRUQ6PiBNdXN0IGJlIGltcGxlbWVudGVkIGluIGV2
ZXJ5IHN0b3JhZ2UgcGx1Z2luLgo+PiA+ICsKPj4gPiArUmV0dXJucyBhIGxpc3RyZWYgb2YgYWxs
IGRpc2sgaW1hZ2VzIG9mIGEgc3RvcmFnZS4gSWYgdGhlIHN0b3JhZ2UgZG9lcyBub3QKPj4gPiAr
c3VwcG9ydCBzdG9yaW5nIGRpc2sgaW1hZ2VzLCByZXR1cm5zIGFuIGVtcHR5IGxpc3RyZWYuCj4+
ID4gKwo+PiA+ICtPcHRpb25hbGx5LCBpZiBDPFxAdm9sbGlzdD4gaXMgcHJvdmlkZWQsIHJldHVy
biBvbmx5IGRpc2tzIHdob3NlIHZvbHVtZSBJRCBpcwo+PiA+ICt3aXRoaW4gQzxcQHZvbGxpc3Q+
LiBOb3RlIHRoYXQgdGhpcyB1c3VhbGx5IGhhcyBoaWdoZXIgcHJlY2VkZW5jZSB0aGFuCj4+ID4g
K0M8JHZtaWQ+Lgo+IAo+IFVwZnJvbnQgbm90ZTogVW5sZXNzIEkgb3RoZXJ3aXNlIGNvbW1lbnQg
c29tZXRoaW5nLCBJIGFncmVlIHdpdGggeW91Lgo+IEp1c3Qgc3BhcmluZyBteXNlbGYgZnJvbSB3
cml0aW5nIGFuZCB5b3UgZnJvbSByZWFkaW5nIHRvbyBtYW55IEFDS3MgOlAKPiAKPj4KPj4gd2hh
dCBkb2VzIHVzdWFsbHkgbWVhbj8gd2hhdCBkb2VzICR2bWlkIGRvPwo+IAo+IFNvcnJ5LCB0aGlz
IGdvdCBsb3N0IHdoZW4gdG9zc2luZyBvdXQgc29tZSByZWR1bmRhbnQgcGFyYWdyYXBocyBoZXJl
Lgo+IAo+IFRoZSAidXN1YWxseSIgY2FuIGJlIGRyb3BwZWQ7IEM8JHZtaWQ+IGlzIHRoZSBndWVz
dCdzIElEIChtZW50aW9uZWQgaW4KPiB0aGUgREVTQ1JJUFRJT04gaW4gcGF0Y2ggMDEpIGFuZCB1
bmxlc3MgQzxcQHZvbGxpc3Q+IGlzIHByb3ZpZGVkLCB0aGUKPiBpbWFnZXMgdGhhdCB0aGUgZ2l2
ZW4gQzwkdm1pZD4gb3ducyB3aWxsIGJlIHJldHVybmVkLgoKaW4gY2FzZSB0aGF0IHdhc24ndCBv
YnZpb3VzIC0gSSBrbm93IHdoYXQgJHZtaWQgaXMgKGFuZCBhbHNvIHdoYXQgaXQKZG9lcykgLSBp
dCBzaG91bGQgYmUgZXhwbGFpbmVkIHRvIHJlYWRlcnMgdGhhdCBkb24ndCAoeWV0KS4KClNvIEkg
dGhpbmsgdGhpcyBzaG91bGQgc2F5IHNvbWV0aGluZyBsaWtlOgoKSWYgQzwkdm1pZD4gaXMgc2V0
LCBvbmx5IGltYWdlcyBvd25lZCBieSB0aGF0IFZNSUQgbXVzdCBiZSBpbmNsdWRlZCBpbgp0aGUg
cmV0dXJuIHZhbHVlLgoKSWYgQzxcQHZvbGxpc3Q+IGlzIHNldCBhbmQgbm90IGVtcHR5LCB0aGUg
cmV0dXJuIHZhbHVlIG11c3QgYmUgZmlsdGVyZWQKdXNpbmcgdGhlIGNvbnRhaW5lZCB2b2xpZHMu
CgpJZiBib3RoIEM8JHZtaWQ+IGFuZCBDPFxAdm9sbGlzdD4gYXJlIHNldCwgb25seSBDPFxAdm9s
bGlzdD4gc2hvdWxkIGJlCmhvbm9yZWQuCgphbmQgYWJvdXQgdGhhdCBsYXN0IHBhcnQgLSBkbyB3
ZSBhY3R1YWxseSBoYXZlIGNhbGxlcnMgdGhhdCBzZXQgYm90aD8gaWYKbm90LCBzaG91bGQgd2Ug
aW5zdGVhZCByZWNvbW1lbmQgdHJlYXRpbmcgaXQgYXMgYW4gZXJyb3IgYW5kIGRvY3VtZW50IGl0
CmFzIHN1Y2g/Cgo+PiA+ICsKPj4gPiArQzxkaWU+cyBpbiBjYXNlIG9mIGVycm9ycy4KPj4gPiAr
Cj4+ID4gK1RoaXMgbWV0aG9kIG1heSByZXVzZSBMPDwgY2FjaGVkIGluZm9ybWF0aW9uIHZpYSBD
PFwlY2FjaGU+fC8iQ0FDSElORyBFWFBFTlNJVkUgT1BFUkFUSU9OUyIgPj4uCj4+ID4gKwo+PiA+
ICtUaGUgcmV0dXJuZWQgbGlzdHJlZiBoYXMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6Cj4+ID4g
Kwo+PiA+ICsgICAgWwo+PiA+ICsJewo+PiA+ICsJICAgIGN0aW1lID0+ICIxNjg5MTYzMzIyIiwg
IyBjcmVhdGlvbiB0aW1lIGFzIHVuaXggdGltZXN0YW1wCj4+ID4gKwkgICAgZm9ybWF0ID0+ICJy
YXciLAo+PiA+ICsJICAgIHNpemUgPT4gODU4OTkzNDU5MiwgIyBpbiBieXRlcyEKPj4gPiArCSAg
ICB2bWlkID0+IDEwMSwKPj4gPiArCSAgICB2b2xpZCA9PiAibG9jYWwtbHZtOmJhc2UtMTAxLWRp
c2stMCIsICMgdm9sdW1lIElELCBzdG9yYWdlLXNwZWNpZmljCj4+ID4gKwl9LAo+PiA+ICsJIyBb
Li4uXQo+PiA+ICsgICAgXQo+PiA+ICsKPj4gPiArPWN1dAo+PiA+ICsKPj4gPiAgc3ViIGxpc3Rf
aW1hZ2VzIHsKPj4gPiAgICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAkc2NmZywgJHZtaWQsICR2
b2xsaXN0LCAkY2FjaGUpID0gQF87Cj4+ID4gICAgICBjcm9hayAiaW1wbGVtZW50IG1lIGluIHN1
Yi1jbGFzc1xuIjsKPj4gPiAgfQo+PiA+ICAKPj4gPiArPWhlYWQzICRwbHVnaW4tPmNyZWF0ZV9i
YXNlKCRzdG9yZWlkLCBcJXNjZmcsICR2b2xuYW1lKQo+PiA+ICsKPj4gPiArQjxPUFRJT05BTDo+
IE1heSBiZSBpbXBsZW1lbnRlZCBpbiBhIHN0b3JhZ2UgcGx1Z2luLgo+PiA+ICsKPj4gPiArQ3Jl
YXRlcyBhIGJhc2Ugdm9sdW1lIGZyb20gYW4gZXhpc3Rpbmcgdm9sdW1lLCBhbGxvd2luZyB0aGUg
dm9sdW1lIHRvIGJlCj4+Cj4+IHRoaXMgaXMgbWlzbGVhZGluZyAtIGl0IGRvZXNuJ3QgY3JlYXRl
IGEgYmFzZSB2b2x1bWUgZnJvbSBhbiBleGlzdGluZwo+PiB2b2x1bWUsIGl0ICpjb252ZXJ0cyog
YW4gZXhpc3Rpbmcgdm9sdW1lIGludG8gYSBiYXNlIHZvbHVtZSEKPiAKPiBPaCBkYW5nLCB0aGFu
a3MgZm9yIHBvaW50aW5nIHRoaXMgb3V0ISBTb3JyeSBmb3IgdGhlIG92ZXJzaWdodC4KPiAKPj4K
Pj4gPiArTDw8IGNsb25lZHwvIiRwbHVnaW4tPmNsb25lX2ltYWdlKC4uLikiID4+LiBUaGlzIGNs
b25lZCB2b2x1bWUgKHVzdWFsbHkKPj4gPiArYSBkaXNrIGltYWdlKSBtYXkgdGhlbiBiZSB1c2Vk
IGFzIGEgYmFzZSBmb3IgdGhlIHB1cnBvc2Ugb2YgY3JlYXRpbmcgbGlua2VkCj4+Cj4+IHRoaXMg
aXMgd3Jvbmc/IHRoZXJlIGlzIG5vIGNsb25lZCB2b2x1bWUgeWV0PyBhbmQgYWxsIG9mIHRoaXMg
b25seQo+PiBhcHBsaWVzIHRvIGltYWdlcyBhbmQgbm90IG90aGVyIHZvbHVtZXM/Cj4+Cj4+ID4g
K2Nsb25lcy4gU2VlIEw8QzxQVkU6OlN0b3JhZ2U6Okx2bVRoaW5QbHVnaW4+PiBhbmQKPj4gPiAr
TDxDPFBWRTo6U3RvcmFnZTo6WkZTUG9vbFBsdWdpbj4+IGZvciBleGFtcGxlIGltcGxlbWVudGF0
aW9ucy4KPj4gPiArCj4+ID4gK09uIGNvbXBsZXRpb24sIHJldHVybnMgdGhlIG5hbWUgb2YgdGhl
IG5ldyBiYXNlIHZvbHVtZSAodGhlIG5ldyBDPCR2b2xuYW1lPikuCj4+ID4gKwo+PiA+ICtUaGlz
IG1ldGhvZCBpcyBjYWxsZWQgaW4gdGhlIGNvbnRleHQgb2YgQzxMPDwgY2x1c3Rlcl9sb2NrX3N0
b3JhZ2UoKXwvImNsdXN0ZXJfbG9ja19zdG9yYWdlKC4uLikiID4+PiwKPj4gPiAraS5lLiB3aGVu
IHRoZSBzdG9yYWdlIGlzIEI8bG9ja2VkPi4KPj4KPj4gU2hvdWxkbid0IHRoaXMgc2F5IHRoYXQg
aXQgKnNob3VsZCogYmUgY2FsbGVkIGluIGEgbG9ja2VkIGNvbnRleHQ/Cj4+Cj4+ID4gKwo+PiA+
ICs9Y3V0Cj4+ID4gKwo+PiA+ICBzdWIgY3JlYXRlX2Jhc2Ugewo+PiA+ICAgICAgbXkgKCRjbGFz
cywgJHN0b3JlaWQsICRzY2ZnLCAkdm9sbmFtZSkgPSBAXzsKPj4gPiAgICAgIGNyb2FrICJpbXBs
ZW1lbnQgbWUgaW4gc3ViLWNsYXNzXG4iOwo+PiA+ICB9Cj4+ID4gIAo+PiA+ICs9aGVhZDMgJHBs
dWdpbi0+Y2xvbmVfaW1hZ2UoJHNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHZtaWQgWywgJHNu
YXBdKQo+PiA+ICsKPj4gPiArPWhlYWQzICRwbHVnaW4tPmNsb25lX2ltYWdlKC4uLikKPj4gPiAr
Cj4+ID4gK0I8UkVRVUlSRUQ6PiBNdXN0IGJlIGltcGxlbWVudGVkIGluIGV2ZXJ5IHN0b3JhZ2Ug
cGx1Z2luLgo+Pgo+PiBub3QgcmVhbGx5PyB0aGVyZSdzIGEgZmVhdHVyZSBndWFyZCBmb3IgaXQs
IHNvIG9ubHkgc3RvcmFnZSBwbHVnaW5zIHRoYXQKPj4gc3VwcG9ydCBpdCBzaG91bGQgZXZlciBn
ZXQgaXQgY2FsbGVkIGFueXdheS4uCj4+Cj4+IHdoYXQgZG9lcyAkdm1pZCBtZWFuPwo+IAo+IFNl
ZSBhYm92ZTsgdGhlIGd1ZXN0J3MgSUQuIFNpbmNlIGl0IHdhcyB1bmNsZWFyLCB0aGUgcGFyYW1l
dGVyIHNob3VsZAo+IHByb2JhYmx5IGJlIGV4cGxhaW5lZCBoZXJlIChhbmQgYWxzbyBhYm92ZSkg
aW5zdGVhZCBvZiAoanVzdCkgaW4gdGhlCj4gREVTQ1JJUFRJT04gc2VjdGlvbi4KCkkga25vdyB3
aGF0IGEgdm1pZCBpcyA7KSB0aGUgcXVlc3Rpb24gaXMgd2hhdCBkb2VzIHRoaXMgcGFyYW1ldGVy
ICptZWFuKgpmb3IgdGhpcyBwYXJ0aWN1bGFyIG1ldGhvZD8KCkM8JHZtaWQ+IGNvbnRhaW5zIHRo
ZSBvd25lciBvZiB0aGUgbmV3IHZvbHVtZSwgd2hpY2ggbXVzdCBiZSBlbmNvZGVkIGluCnRoZSBy
ZXR1cm5lZCB2b2xpZC4KCm9yIHNvbWV0aGluZyBsaWtlIHRoYXQ/Cgo+PiA+ICsKPj4gPiArQ2xv
bmVzIGEgZGlzayBpbWFnZSBvciBhIHNuYXBzaG90IG9mIGFuIGltYWdlLCByZXR1cm5pbmcgdGhl
IG5hbWUgb2YgdGhlIG5ldwo+PiA+ICtpbWFnZSAodGhlIG5ldyBDPCR2b2xuYW1lPikuIE5vdGUg
dGhhdCBJPGNsb25pbmc+IGhlcmUgbWVhbnMgdG8gY3JlYXRlIGEgbGlua2VkCj4+ID4gK2Nsb25l
IGFuZCBub3QgZHVwbGljYXRpbmcgYW4gaW1hZ2UuIFNlZSBMPEM8UFZFOjpTdG9yYWdlOjpMdm1U
aGluUGx1Z2luPj4gYW5kCj4+ID4gK0w8QzxQVkU6OlN0b3JhZ2U6OlpGU1Bvb2xQbHVnaW4+PiBm
b3IgZXhhbXBsZSBpbXBsZW1lbnRhdGlvbnMuCj4+Cj4+IHRoZW4gd2h5IG5vdCBzdGFydCB3aXRo
Cj4+Cj4+ICJDcmVhdGVzIGEgbGlua2VkIGNsb25lIG9mIGFuIGV4aXN0aW5nIGRpc2sgaW1hZ2Ug
b3Igc25hcHNob3Qgb2YgYW4KPj4gaW1hZ2UiCj4+Cj4+ID8gbWF5YmUgYWxzbyBpbmNsdWRlIHRo
YXQgdW5sZXNzIHRoZSBsaW5rZWQgY2xvbmUgaXMgMTAwJSBpbmRlcGVuZGVudAo+PiBmcm9tIHRo
ZSBiYXNlIChvbmx5IHRydWUgZm9yIExWTSB0aGluIGF0bT8pLCB0aGUgbmV3IHZvbGlkIHNob3Vs
ZCBlbmNvZGUKPj4gdGhlIGJhc2UtPmNsb25lIHJlbGF0aW9uIGluIHRoZSB2b2xuYW1lPwo+Pgo+
PiA+ICsKPj4gPiArQzxkaWU+cyBpbiBjYXNlIG9mIGFuIGVycm9yIG9mIGlmIHRoZSB1bmRlcmx5
aW5nIHN0b3JhZ2UgZG9lc24ndCBzdXBwb3J0Cj4+Cj4+IHMvb2Yvb3IvCj4+Cj4+ID4gK2Nsb25p
bmcgaW1hZ2VzLgo+PiA+ICsKPj4gPiArVGhpcyBtZXRob2QgaXMgY2FsbGVkIGluIHRoZSBjb250
ZXh0IG9mIEM8TDw8IGNsdXN0ZXJfbG9ja19zdG9yYWdlKCl8LyJjbHVzdGVyX2xvY2tfc3RvcmFn
ZSguLi4pIiA+Pj4sCj4+ID4gK2kuZS4gd2hlbiB0aGUgc3RvcmFnZSBpcyBCPGxvY2tlZD4uCj4+
Cj4+IHNhbWUgYXMgYWJvdmUKPj4KPj4gPiArCj4+ID4gKz1jdXQKPj4gPiArCj4+ID4gIHN1YiBj
bG9uZV9pbWFnZSB7Cj4+ID4gICAgICBteSAoJGNsYXNzLCAkc2NmZywgJHN0b3JlaWQsICR2b2xu
YW1lLCAkdm1pZCwgJHNuYXApID0gQF87Cj4+ID4gICAgICBjcm9hayAiaW1wbGVtZW50IG1lIGlu
IHN1Yi1jbGFzc1xuIjsKPj4gPiAgfQo+PiA+ICAKPj4gPiArPWhlYWQzICRwbHVnaW4tPmFsbG9j
X2ltYWdlKCRzdG9yZWlkLCAkc2NmZywgJHZtaWQsICRmbXQsICRuYW1lLCAkc2l6ZSkKPj4gPiAr
Cj4+ID4gK0I8UkVRVUlSRUQ6PiBNdXN0IGJlIGltcGxlbWVudGVkIGluIGV2ZXJ5IHN0b3JhZ2Ug
cGx1Z2luLgo+PiA+ICsKPj4gPiArQWxsb2NhdGVzIGEgZGlzayBpbWFnZSB3aXRoIHRoZSBnaXZl
biBmb3JtYXQgQzwkZm10PiBhbmQgQzwkc2l6ZT4gaW4gYnl0ZXMsCj4+ID4gK3JldHVybmluZyB0
aGUgbmFtZSBvZiB0aGUgbmV3IGltYWdlICh0aGUgbmV3IEM8JHZvbG5hbWU+KS4gU2VlCj4+ID4g
K0M8TDw8IHBsdWdpbmRhdGEoKXwvIiRwbHVnaW4tPnBsdWdpbmRhdGEoKSIgPj4+IGZvciBhbGwg
ZGlzayBmb3JtYXRzLgo+PiA+ICsKPj4gPiArT3B0aW9uYWxseSwgaWYgZ2l2ZW4sIHNldCB0aGUg
bmFtZSBvZiB0aGUgaW1hZ2UgdG8gQzwkbmFtZT4uIElmIEM8JG5hbWU+IGlzbid0Cj4+ID4gK3By
b3ZpZGVkLCB0aGUgbmV4dCBuYW1lIHNob3VsZCBiZSBkZXRlcm1pbmVkIHZpYSBDPEw8PCBmaW5k
X2ZyZWVfZGlza25hbWUoKXwvIiRwbHVnaW4tPmZpbmRfZnJlZV9kaXNrbmFtZSguLi4pIiA+Pj4u
Cj4+Cj4+IGEgc3VpdGFibGUgbmFtZSBzaG91bGQgYmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQs
IHVubGVzcyB3ZSByZWFsbHkgd2FudAo+PiB0byBzdGFiaWxpemUgZmluZF9mcmVlX2Rpc2tuYW1l
IGFzIHBhcnQgb2YgdGhlIEFQSS4uCj4+Cj4+IHdoYXQgZG9lcyAkdm1pZCBtZWFuPwoKaGVyZSBh
cyB3ZWxsLCBzaW1pbGFyIHRvIGNsb25lX2ltYWdlIGFib3ZlCgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUt
ZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmlu
L21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCg==