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 0A55E1FF15E
	for <inbox@lore.proxmox.com>; Fri, 20 Sep 2024 16:27:48 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 569DA375F9;
	Fri, 20 Sep 2024 16:27:58 +0200 (CEST)
Message-ID: <97f23935-570e-4fb0-a01f-b26a02230acc@proxmox.com>
Date: Fri, 20 Sep 2024 16:27:53 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Daniel Kral <d.kral@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>,
 Filip Schauer <f.schauer@proxmox.com>
References: <20240918144953.130780-1-f.schauer@proxmox.com>
 <20240918144953.130780-4-f.schauer@proxmox.com>
Content-Language: en-US
In-Reply-To: <20240918144953.130780-4-f.schauer@proxmox.com>
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.003 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
Subject: Re: [pve-devel] [PATCH v4 storage 3/6] api: content: support moving
 backups between path based storages
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-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: pve-devel-bounces@lists.proxmox.com
Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com>

T24gOS8xOC8yNCAxNjo0OSwgRmlsaXAgU2NoYXVlciB3cm90ZToKPiBTaWduZWQtb2ZmLWJ5OiBG
aWxpcCBTY2hhdWVyIDxmLnNjaGF1ZXJAcHJveG1veC5jb20+CgpUaGUgY29tbWl0IG1lc3NhZ2Ug
d291bGQgYmVuZWZpdCB0aGF0ICdiYWNrdXArc2l6ZScgYXMgYW4gaW1wb3J0L2V4cG9ydCAKZm9y
bWF0IHdhcyBhZGRlZCBoZXJlIGFuZCB3aGVyZSB0aGUgZnVuY3Rpb25hbGl0eSB3YXMgYWRkZWQg
dG8gKGkuZS4gCnB2ZXNtIG1vdmUsIHB2ZXNtIGltcG9ydCwgcHZlc20gZXhwb3J0KS4KCj4gLS0t
Cj4gICBzcmMvUFZFL0FQSTIvU3RvcmFnZS9Db250ZW50LnBtIHwgNDEgKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrLS0KPiAgIHNyYy9QVkUvU3RvcmFnZS5wbSAgICAgICAgICAgICAgfCAx
MCArKysrKysrLQo+ICAgc3JjL1BWRS9TdG9yYWdlL1BsdWdpbi5wbSAgICAgICB8IDQyICsrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKy0tLQo+ICAgMyBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNl
cnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9zcmMvUFZFL0FQSTIv
U3RvcmFnZS9Db250ZW50LnBtIGIvc3JjL1BWRS9BUEkyL1N0b3JhZ2UvQ29udGVudC5wbQo+IGlu
ZGV4IDY4MTllY2EuLjRhOGZlMzMgMTAwNjQ0Cj4gLS0tIGEvc3JjL1BWRS9BUEkyL1N0b3JhZ2Uv
Q29udGVudC5wbQo+ICsrKyBiL3NyYy9QVkUvQVBJMi9TdG9yYWdlL0NvbnRlbnQucG0KPiBAQCAt
NTA2LDEwICs1MDYsMTcgQEAgc3ViIHZvbHVtZV9tb3ZlIHsKPiAgIAo+ICAgICAgIGRpZSAidXNl
IHBjdCBtb3ZlLXZvbHVtZSBvciBxbSBkaXNrIG1vdmVcbiIgaWYgJHZ0eXBlIGVxICdpbWFnZXMn
IHx8ICR2dHlwZSBlcSAncm9vdGRpcic7Cj4gICAgICAgZGllICJtb3Zpbmcgdm9sdW1lIG9mIHR5
cGUgJyR2dHlwZScgbm90IGltcGxlbWVudGVkXG4iCj4gLQlpZiAoJHZ0eXBlIG5lICdpc28nICYm
ICR2dHlwZSBuZSAndnp0bXBsJyAmJiAkdnR5cGUgbmUgJ3NuaXBwZXRzJyk7Cj4gKwlpZiAoJHZ0
eXBlIG5lICdpc28nICYmICR2dHlwZSBuZSAndnp0bXBsJyAmJiAkdnR5cGUgbmUgJ3NuaXBwZXRz
JyAmJiAkdnR5cGUgbmUgJ2JhY2t1cCcpOwo+ICAgCj4gICAgICAgUFZFOjpTdG9yYWdlOjphY3Rp
dmF0ZV9zdG9yYWdlKCRjZmcsICRzb3VyY2Vfc3RvcmVpZCk7Cj4gICAKPiArICAgIGlmICgkdnR5
cGUgZXEgJ2JhY2t1cCcpIHsKPiArCW15ICRwcm90ZWN0ZWQgPSAkc291cmNlX3BsdWdpbi0+Z2V0
X3ZvbHVtZV9hdHRyaWJ1dGUoCj4gKwkgICAgJHNvdXJjZV9zY2ZnLCAkc291cmNlX3N0b3JlaWQs
ICRzb3VyY2Vfdm9sbmFtZSwgJ3Byb3RlY3RlZCcpOwo+ICsKPiArCWRpZSAiY2Fubm90IGRlbGV0
ZSBwcm90ZWN0ZWQgYmFja3VwXG4iIGlmICRkZWxldGUgJiYgJHByb3RlY3RlZDsKPiArICAgIH0K
PiArCj4gICAgICAgZGllICJleHBlY3RlZCBzdG9yYWdlICckc291cmNlX3N0b3JlaWQnIHRvIGJl
IHBhdGggYmFzZWRcbiIgaWYgISRzb3VyY2Vfc2NmZy0+e3BhdGh9Owo+ICAgICAgIG15ICRzb3Vy
Y2VfcGF0aCA9ICRzb3VyY2VfcGx1Z2luLT5wYXRoKCRzb3VyY2Vfc2NmZywgJHNvdXJjZV92b2xu
YW1lLCAkc291cmNlX3N0b3JlaWQpOwo+ICAgICAgIGRpZSAiJHNvdXJjZV9wYXRoIGRvZXMgbm90
IGV4aXN0IiBpZiAoIS1lICRzb3VyY2VfcGF0aCk7Cj4gQEAgLTUyNSw2ICs1MzIsMzIgQEAgc3Vi
IHZvbHVtZV9tb3ZlIHsKPiAgICAgICBteSBAY3JlYXRlZF9maWxlcyA9ICgpOwo+ICAgCj4gICAg
ICAgZXZhbCB7Cj4gKwlpZiAoJHZ0eXBlIGVxICdiYWNrdXAnKSB7Cj4gKwkgICAgbXkgJHRhcmdl
dF9kaXJuYW1lID0gZGlybmFtZSgkdGFyZ2V0X3BhdGgpOwo+ICsJICAgIG15ICRpbmZvID0gUFZF
OjpTdG9yYWdlOjphcmNoaXZlX2luZm8oJHNvdXJjZV9wYXRoKTsKPiArCj4gKwkgICAgZm9yIG15
ICR0eXBlIChxdyhsb2cgbm90ZXMpKSB7Cj4gKwkJbXkgJGZpbGVuYW1lID0gJGluZm8tPnsiJHt0
eXBlfWZpbGVuYW1lIn0gb3IgbmV4dDsKPiArCQlteSAkYXV4aWxpYXJ5X3NvdXJjZV9wYXRoID0g
IiRzb3VyY2VfZGlybmFtZS8kZmlsZW5hbWUiOwo+ICsJCW15ICRhdXhpbGlhcnlfdGFyZ2V0X3Bh
dGggPSAiJHRhcmdldF9kaXJuYW1lLyRmaWxlbmFtZSI7Cj4gKwkJaWYgKC1lICRhdXhpbGlhcnlf
c291cmNlX3BhdGgpIHsKPiArCQkgICAgY29weSgkYXV4aWxpYXJ5X3NvdXJjZV9wYXRoLCAkYXV4
aWxpYXJ5X3RhcmdldF9wYXRoKQo+ICsJCQlvciBkaWUgImNvcHlpbmcgYmFja3VwICR0eXBlIGZp
bGUgZmFpbGVkOiAkISI7Cj4gKwkJICAgIHB1c2goQGNyZWF0ZWRfZmlsZXMsICRhdXhpbGlhcnlf
dGFyZ2V0X3BhdGgpOwo+ICsJCX0KPiArCSAgICB9Cj4gKwo+ICsJICAgIG15ICRwcm90ZWN0ZWQg
PSAkc291cmNlX3BsdWdpbi0+Z2V0X3ZvbHVtZV9hdHRyaWJ1dGUoCj4gKwkJJHNvdXJjZV9zY2Zn
LCAkc291cmNlX3N0b3JlaWQsICRzb3VyY2Vfdm9sbmFtZSwgJ3Byb3RlY3RlZCcpOwo+ICsKPiAr
CSAgICBpZiAoJHByb3RlY3RlZCkgewo+ICsJCW15ICRwcm90ZWN0aW9uX3RhcmdldF9wYXRoID0g
UFZFOjpTdG9yYWdlOjpwcm90ZWN0aW9uX2ZpbGVfcGF0aCgkdGFyZ2V0X3BhdGgpOwo+ICsJCSR0
YXJnZXRfcGx1Z2luLT51cGRhdGVfdm9sdW1lX2F0dHJpYnV0ZSgKPiArCQkgICAgJHRhcmdldF9z
Y2ZnLCAkdGFyZ2V0X3N0b3JlaWQsICRzb3VyY2Vfdm9sbmFtZSwgJ3Byb3RlY3RlZCcsIDEpOwo+
ICsJCXB1c2goQGNyZWF0ZWRfZmlsZXMsICRwcm90ZWN0aW9uX3RhcmdldF9wYXRoKTsKPiArCSAg
ICB9Cj4gKwl9Cj4gKwo+ICAgCWlmICgkZGVsZXRlKSB7Cj4gICAJICAgIG1vdmUoJHNvdXJjZV9w
YXRoLCAkdGFyZ2V0X3BhdGgpIG9yIGRpZSAiZmFpbGVkIHRvIG1vdmUgJHZ0eXBlOiAkISI7Cj4g
ICAJfSBlbHNlIHsKPiBAQCAtNjAxLDcgKzYzNCw3IEBAIF9fUEFDS0FHRV9fLT5yZWdpc3Rlcl9t
ZXRob2QgKHsKPiAgIAo+ICAgCW15ICRjZmcgPSBQVkU6OlN0b3JhZ2U6OmNvbmZpZygpOwo+ICAg
Cj4gLQlteSAoJHZ0eXBlKSA9IFBWRTo6U3RvcmFnZTo6cGFyc2Vfdm9sbmFtZSgkY2ZnLCAkc3Jj
X3ZvbGlkKTsKPiArCW15ICgkdnR5cGUsIHVuZGVmLCAkb3duZXJ2bSkgPSBQVkU6OlN0b3JhZ2U6
OnBhcnNlX3ZvbG5hbWUoJGNmZywgJHNyY192b2xpZCk7Cj4gICAJZGllICJ1c2UgcGN0IG1vdmUt
dm9sdW1lIG9yIHFtIGRpc2sgbW92ZSIgaWYgJHZ0eXBlIGVxICdpbWFnZXMnIHx8ICR2dHlwZSBl
cSAncm9vdGRpcic7Cj4gICAKPiAgIAlteSAkcnBjZW52ID0gUFZFOjpSUENFbnZpcm9ubWVudDo6
Z2V0KCk7Cj4gQEAgLTYxNSw2ICs2NDgsMTAgQEAgX19QQUNLQUdFX18tPnJlZ2lzdGVyX21ldGhv
ZCAoewo+ICAgCSAgICAkcnBjZW52LT5jaGVjaygkdXNlciwgIi9zdG9yYWdlLyRkc3Rfc3RvcmVp
ZCIsIFsiRGF0YXN0b3JlLkFsbG9jYXRlU3BhY2UiXSk7Cj4gICAJfQo+ICAgCj4gKwlpZiAoJHZ0
eXBlIGVxICdiYWNrdXAnICYmICRvd25lcnZtKSB7Cj4gKwkgICAgJHJwY2Vudi0+Y2hlY2soJHVz
ZXIsICIvdm1zLyRvd25lcnZtIiwgWydWTS5CYWNrdXAnXSk7Cj4gKwl9Cj4gKwo+ICAgCW15ICR3
b3JrZXIgPSBzdWIgIHsKPiAgIAkgICAgaWYgKCRzcmNfbm9kZSBlcSAkZHN0X25vZGUpIHsKPiAg
IAkJdm9sdW1lX21vdmUoJGNmZywgJHNyY192b2xpZCwgJGRzdF9zdG9yZWlkLCAkZGVsZXRlKTsK
PiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9TdG9yYWdlLnBtIGIvc3JjL1BWRS9TdG9yYWdlLnBtCj4g
aW5kZXggNTdiMjAzOC4uMTJmN2IzZiAxMDA3NTUKPiAtLS0gYS9zcmMvUFZFL1N0b3JhZ2UucG0K
PiArKysgYi9zcmMvUFZFL1N0b3JhZ2UucG0KPiBAQCAtNDgsNyArNDgsMTUgQEAgdXNlIGNvbnN0
YW50IEFQSVZFUiA9PiAxMDsKPiAgICMgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUv
bGlidG9vbC9tYW51YWwvaHRtbF9ub2RlL0xpYnRvb2wtdmVyc2lvbmluZy5odG1sCj4gICB1c2Ug
Y29uc3RhbnQgQVBJQUdFID0+IDE7Cj4gICAKPiAtb3VyICRLTk9XTl9FWFBPUlRfRk9STUFUUyA9
IFsncmF3K3NpemUnLCAndGFyK3NpemUnLCAncWNvdzIrc2l6ZScsICd2bWRrK3NpemUnLCAnemZz
JywgJ2J0cmZzJ107Cj4gK291ciAkS05PV05fRVhQT1JUX0ZPUk1BVFMgPSBbCj4gKyAgICAncmF3
K3NpemUnLAo+ICsgICAgJ3RhcitzaXplJywKPiArICAgICdxY293MitzaXplJywKPiArICAgICd2
bWRrK3NpemUnLAo+ICsgICAgJ3pmcycsCj4gKyAgICAnYnRyZnMnLAo+ICsgICAgJ2JhY2t1cCtz
aXplJwo+ICtdOwoKbm90ZTogdGhpcyBpcyBhbHNvIHVzZWQgaW4gYFBWRTo6U3RvcmFnZTo6dm9s
dW1lX2V4cG9ydF9zdGFydGAsIHdoaWNoIApzZWVtcyB0byBiZSBvbmx5IHVzZWQgaW4gYFBWRTo6
U3RvcmFnZVR1bm5lbDo6c3RvcmFnZV9taWdyYXRlYCwgYnV0IGFzIApmYXIgYXMgSSBjYW4gdGVs
bCB0aGlzIHdvbid0IGFsbG93IGFueSB1bndhbnRlZCBiZWhhdmlvciwgYmVjYXVzZSB0aGUgCmV4
cG9ydCBmb3JtYXQgaXMgbm90IHVzZXItZGVmaW5lZC4KCj4gICAKPiAgICMgbG9hZCBzdGFuZGFy
ZCBwbHVnaW5zCj4gICBQVkU6OlN0b3JhZ2U6OkRpclBsdWdpbi0+cmVnaXN0ZXIoKTsKPiBkaWZm
IC0tZ2l0IGEvc3JjL1BWRS9TdG9yYWdlL1BsdWdpbi5wbSBiL3NyYy9QVkUvU3RvcmFnZS9QbHVn
aW4ucG0KPiBpbmRleCA1NzUzNmM2Li5mYzhmZTQwIDEwMDY0NAo+IC0tLSBhL3NyYy9QVkUvU3Rv
cmFnZS9QbHVnaW4ucG0KPiArKysgYi9zcmMvUFZFL1N0b3JhZ2UvUGx1Z2luLnBtCj4gQEAgLTE1
NzksNiArMTU3OSw4IEBAIHN1YiBwcnVuZV9iYWNrdXBzIHsKPiAgICMgICAgIHVucHJpdmlsZWdl
ZCBjb250YWluZXIuIEluIG90aGVyIHdvcmRzLCB0aGlzIGlzIGZyb20gdGhlIHJvb3QgdXNlcgo+
ICAgIyAgICAgbmFtZXNwYWNlJ3MgcG9pbnQgb2YgdmlldyB3aXRoIG5vIHVpZC1tYXBwaW5nIGlu
IGVmZmVjdC4KPiAgICMgICAgIEFzIHByb2R1Y2VkIHZpYSBgdGFyIC1DIHZtLTEwMC1kaXNrLTEu
c3Vidm9sIC1jcGYgVGhlT3V0cHV0RmlsZS5kYXQgLmAKPiArIyAgIGJhY2t1cCtzaXplOiAoYmFj
a3VwcyBvbmx5KQo+ICsjICAgICBBIHJhdyBiaW5hcnkgZGF0YSBzdHJlYW0gcHJlZml4ZWQgd2l0
aCBhIHByb3RlY3Rpb24gZmxhZyBhbmQgbm90ZXMuCj4gICAKPiAgICMgUGx1Z2lucyBtYXkgcmV1
c2UgdGhlc2UgaGVscGVycy4gQ2hhbmdlcyB0byB0aGUgaGVhZGVyIGZvcm1hdCBzaG91bGQgYmUK
PiAgICMgcmVmbGVjdGVkIGJ5IGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMuCj4g
QEAgLTE2MjcsNiArMTYyOSwxNiBAQCBzdWIgdm9sdW1lX2V4cG9ydCB7Cj4gICAJICAgIHJ1bl9j
b21tYW5kKFsndGFyJywgQENPTU1PTl9UQVJfRkxBR1MsICctY2YnLCAnLScsICctQycsICRmaWxl
LCAnLiddLAo+ICAgCSAgICAgICAgICAgICAgICBvdXRwdXQgPT4gJz4mJy5maWxlbm8oJGZoKSk7
Cj4gICAJICAgIHJldHVybjsKPiArCX0gZWxzaWYgKCRmb3JtYXQgZXEgJ2JhY2t1cCtzaXplJykg
ewo+ICsJICAgIHdyaXRlX2NvbW1vbl9oZWFkZXIoJGZoLCAkc2l6ZSk7Cj4gKwkgICAgbXkgJHBy
b3RlY3RlZCA9ICRjbGFzcy0+Z2V0X3ZvbHVtZV9hdHRyaWJ1dGUoCj4gKwkJJHNjZmcsICRzdG9y
ZWlkLCAkdm9sbmFtZSwgJ3Byb3RlY3RlZCcpID8gMSA6IDA7Cj4gKwkgICAgbXkgJG5vdGVzID0g
JGNsYXNzLT5nZXRfdm9sdW1lX2F0dHJpYnV0ZSgkc2NmZywgJHN0b3JlaWQsICR2b2xuYW1lLCAn
bm90ZXMnKSAvLyAiIjsKPiArCSAgICBzeXN3cml0ZSgkZmgsIHBhY2soIkMiLCAkcHJvdGVjdGVk
KSwgMSk7Cj4gKwkgICAgc3lzd3JpdGUoJGZoLCBwYWNrKCJRPCIsIGxlbmd0aCgkbm90ZXMpKSwg
OCk7Cj4gKwkgICAgc3lzd3JpdGUoJGZoLCAkbm90ZXMsIGxlbmd0aCgkbm90ZXMpKTsKPiArCSAg
ICBydW5fY29tbWFuZChbJ2RkJywgImlmPSRmaWxlIiwgImJzPTRrIiwgInN0YXR1cz1wcm9ncmVz
cyJdLCBvdXRwdXQgPT4gJz4mJy5maWxlbm8oJGZoKSk7Cj4gKwkgICAgcmV0dXJuOwoKR3JlYXQg
c29sdXRpb24gdG8gdHJhbnNmZXIgdGhhdCBpbmZvcm1hdGlvbiBvdmVyIHBpcGVzIQoKSSB0ZXN0
ZWQgbW92aW5nIG5vbi1wcm90ZWN0ZWQgYW5kIHByb3RlY3RlZCBiYWNrdXBzIGFzIHdlbGwgd2l0
aCB2YXJpb3VzIApub3RlcyBpbiB0aGVtIGFuZCB0aGV5IHdlcmUgbW92ZWQgY29ycmVjdGx5LgoK
VGhlIG9ubHkgY2FzZSB0aGF0IGZhaWxlZCwgd2hpY2ggaXNuJ3Qgc3VwcG9ydGVkIGhlcmUgaXMg
d2hlbiBJIHVzZSAKbXVsdGktYnl0ZSBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgYmFja3VwIG5vdGUg
KEkgdXNlZCAiQd2UIiBmb3IgdGVzdGluZyksIAp3aGVyZSBJJ20gbm90IHN1cmUgaWYgdGhhdCBp
cyBjaGVja2VkIGF0IG90aGVyIHBvaW50cy4gSWYgd2Ugd2FudCB0byAKc3VwcG9ydCB0aGF0LCB3
ZSBjb3VsZCBlbmNvZGUgdGhlbSBiZWZvcmVoYW5kLCBlLmcuOgoKYGBgCm15ICRub3RlcyA9IEVu
Y29kZTo6ZW5jb2RlKCdVVEYtOCcsICRjbGFzcy0+Z2V0X3ZvbHVtZV9hdHRyaWJ1dGUoJHNjZmcs
IAokc3RvcmVpZCwgJHZvbG5hbWUsICdub3RlcycpKSAvLyAiIjsKYGBgCgpPdGhlcndpc2UgdGhl
IG1pZ3JhdGlvbiBiZXR3ZWVuIHR3byBub2RlcyBvciB0aGUgZXhwb3J0IG9mIHRoZSBiYWNrdXAg
CnZvbHVtZSB3aWxsIGZhaWwgYXMgYHN5c3dyaXRlYCBkb2Vzbid0IGFsbG93IG5vbi1lbmNvZGVk
IHN0cmluZ3MgYnkgCmRlZmF1bHQgWzBdLiBBbHNvIGBsZW5ndGhgIHdvdWxkIGFsc28gb25seSBv
dXRwdXQgdGhlIGxvZ2ljYWwgbnVtYmVyIG9mIApjaGFyYWN0ZXJzLCBidXQgbm90IHRoZSBwaHlz
aWNhbCBhbW91bnQgWzFdLgoKT3RoZXJ3aXNlLCBldmVyeXRoaW5nIGVsc2Ugd29ya2VkIGFzIGV4
cGVjdGVkIGFuZCBJIGNoZWNrZWQgdGhlIG5vdGVzIApmaWxlIHdpdGggYHh4ZGAgYW5kIGl0IHdh
cyBleGFjdGx5IHRoZSBzYW1lLgoKPiAgIAl9Cj4gICAgICAgfQo+ICAgICAgIGRpZSAkZXJyX21z
ZzsKPiBAQCAtMTYzOSw2ICsxNjUxLDEwIEBAIHN1YiB2b2x1bWVfZXhwb3J0X2Zvcm1hdHMgewo+
ICAgCSAgICBvciByZXR1cm47Cj4gICAJbXkgKCRzaXplLCAkZm9ybWF0KSA9IGZpbGVfc2l6ZV9p
bmZvKCRmaWxlKTsKPiAgIAo+ICsJbXkgKCR2dHlwZSkgPSAkY2xhc3MtPnBhcnNlX3ZvbG5hbWUo
JHZvbG5hbWUpOwo+ICsKPiArCXJldHVybiAoJ2JhY2t1cCtzaXplJykgaWYgJHZ0eXBlIGVxICdi
YWNrdXAnOwo+ICsKPiAgIAlpZiAoJHdpdGhfc25hcHNob3RzKSB7Cj4gICAJICAgIHJldHVybiAo
JGZvcm1hdC4nK3NpemUnKSBpZiAoJGZvcm1hdCBlcSAncWNvdzInIHx8ICRmb3JtYXQgZXEgJ3Zt
ZGsnKTsKPiAgIAkgICAgcmV0dXJuICgpOwo+IEBAIC0xNjU0LDcgKzE2NzAsNyBAQCBzdWIgdm9s
dW1lX2ltcG9ydCB7Cj4gICAgICAgbXkgKCRjbGFzcywgJHNjZmcsICRzdG9yZWlkLCAkZmgsICR2
b2xuYW1lLCAkZm9ybWF0LCAkc25hcHNob3QsICRiYXNlX3NuYXBzaG90LCAkd2l0aF9zbmFwc2hv
dHMsICRhbGxvd19yZW5hbWUpID0gQF87Cj4gICAKPiAgICAgICBkaWUgInZvbHVtZSBpbXBvcnQg
Zm9ybWF0ICckZm9ybWF0JyBub3QgYXZhaWxhYmxlIGZvciAkY2xhc3NcbiIKPiAtCWlmICRmb3Jt
YXQgIX4gL14ocmF3fHRhcnxxY293Mnx2bWRrKVwrc2l6ZSQvOwo+ICsJaWYgJGZvcm1hdCAhfiAv
XihyYXd8dGFyfHFjb3cyfHZtZGt8YmFja3VwKVwrc2l6ZSQvOwo+ICAgICAgIG15ICRkYXRhX2Zv
cm1hdCA9ICQxOwo+ICAgCj4gICAgICAgZGllICJmb3JtYXQgJGZvcm1hdCBjYW5ub3QgYmUgaW1w
b3J0ZWQgd2l0aG91dCBzbmFwc2hvdHNcbiIKPiBAQCAtMTcxMSw3ICsxNzI3LDE4IEBAIHN1YiB2
b2x1bWVfaW1wb3J0IHsKPiAgIAkgICAgd2FybiAkQCBpZiAkQDsKPiAgIAkgICAgZGllICRlcnI7
Cj4gICAJfQo+IC0gICAgfSBlbHNpZiAoJHZ0eXBlIGVxICdpc28nIHx8ICR2dHlwZSBlcSAnc25p
cHBldHMnIHx8ICR2dHlwZSBlcSAndnp0bXBsJykgewo+ICsgICAgfSBlbHNpZiAoJHZ0eXBlIGVx
ICdpc28nIHx8ICR2dHlwZSBlcSAnc25pcHBldHMnIHx8ICR2dHlwZSBlcSAndnp0bXBsJyB8fCAk
dnR5cGUgZXEgJ2JhY2t1cCcpIHsKPiArCW15ICRwcm90ZWN0ZWQ7Cj4gKwlteSAkbm90ZXM7Cj4g
Kwo+ICsJaWYgKCR2dHlwZSBlcSAnYmFja3VwJykgewo+ICsJICAgIHN5c3JlYWQoJGZoLCAkcHJv
dGVjdGVkLCAxKTsKPiArCSAgICAkcHJvdGVjdGVkID0gdW5wYWNrKCdDJywgJHByb3RlY3RlZCk7
Cj4gKwkgICAgc3lzcmVhZCgkZmgsIG15ICRub3Rlc19sZW4sIDgpOwo+ICsJICAgICRub3Rlc19s
ZW4gPSB1bnBhY2soJ1E8JywgJG5vdGVzX2xlbik7Cj4gKwkgICAgc3lzcmVhZCgkZmgsICRub3Rl
cywgJG5vdGVzX2xlbik7Cj4gKwl9Cj4gKwo+ICAgCWV2YWwgewo+ICAgCSAgICBydW5fY29tbWFu
ZChbJ2RkJywgIm9mPSRmaWxlIiwgJ2JzPTY0ayddLCBpbnB1dCA9PiAnPCYnLmZpbGVubygkZmgp
KTsKPiAgIAl9Owo+IEBAIC0xNzIyLDYgKzE3NDksMTEgQEAgc3ViIHZvbHVtZV9pbXBvcnQgewo+
ICAgCSAgICB9Cj4gICAJICAgIGRpZSAkZXJyOwo+ICAgCX0KPiArCj4gKwlpZiAoJHZ0eXBlIGVx
ICdiYWNrdXAnKSB7Cj4gKwkgICAgJGNsYXNzLT51cGRhdGVfdm9sdW1lX2F0dHJpYnV0ZSgkc2Nm
ZywgJHN0b3JlaWQsICR2b2xuYW1lLCAncHJvdGVjdGVkJywgJHByb3RlY3RlZCk7Cj4gKwkgICAg
JGNsYXNzLT51cGRhdGVfdm9sdW1lX2F0dHJpYnV0ZSgkc2NmZywgJHN0b3JlaWQsICR2b2xuYW1l
LCAnbm90ZXMnLCAkbm90ZXMpOwo+ICsJfQo+ICAgICAgIH0gZWxzZSB7Cj4gICAJZGllICJpbXBv
cnRpbmcgdm9sdW1lIG9mIHR5cGUgJyR2dHlwZScgbm90IGltcGxlbWVudGVkXG4iOwo+ICAgICAg
IH0KPiBAQCAtMTczMiw3ICsxNzY0LDExIEBAIHN1YiB2b2x1bWVfaW1wb3J0IHsKPiAgIHN1YiB2
b2x1bWVfaW1wb3J0X2Zvcm1hdHMgewo+ICAgICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVp
ZCwgJHZvbG5hbWUsICRzbmFwc2hvdCwgJGJhc2Vfc25hcHNob3QsICR3aXRoX3NuYXBzaG90cykg
PSBAXzsKPiAgICAgICBpZiAoJHNjZmctPntwYXRofSAmJiAhZGVmaW5lZCgkYmFzZV9zbmFwc2hv
dCkpIHsKPiAtCW15ICRmb3JtYXQgPSAoJGNsYXNzLT5wYXJzZV92b2xuYW1lKCR2b2xuYW1lKSlb
Nl07Cj4gKwlteSAoJHZ0eXBlLCAkZm9ybWF0KSA9ICgkY2xhc3MtPnBhcnNlX3ZvbG5hbWUoJHZv
bG5hbWUpKVswLCA2XTsKPiArCj4gKwlyZXR1cm4gKCdiYWNrdXArc2l6ZScpIGlmICR2dHlwZSBl
cSAnYmFja3VwJzsKPiArCXJldHVybiAoJ3JhdytzaXplJykgaWYgIWRlZmluZWQoJGZvcm1hdCk7
CgpUaGlzIGZpeGVkIHRoZSB1bmRlZmluZWQgJGZvcm1hdCB3YXJuaW5nIGZyb20gcGF0Y2ggIzIs
IGlmIHBvc3NpYmxlIHdlIApjb3VsZCBhbHJlYWR5IGZpeCB0aGF0IHRoZXJlIHNvIHRoYXQgcG90
ZW50aWFsIGJpc2VjdHMgd29uJ3QgY2F1c2UgCmZhbHNlLXBvc2l0aXZlcwoKPiArCj4gICAJaWYg
KCR3aXRoX3NuYXBzaG90cykgewo+ICAgCSAgICByZXR1cm4gKCRmb3JtYXQuJytzaXplJykgaWYg
KCRmb3JtYXQgZXEgJ3Fjb3cyJyB8fCAkZm9ybWF0IGVxICd2bWRrJyk7Cj4gICAJICAgIHJldHVy
biAoKTsKCk90aGVyd2lzZSwgbW92aW5nIGJhY2t1cHMgYmV0d2VlbiBkaWZmZXJlbnQgc3RvcmFn
ZXMgb24gdGhlIHNhbWUgbm9kZSAKYW5kIGJldHdlZW4gZGlmZmVyZW50IG5vZGVzIGhhdmUgd29y
a2VkIGZsYXdsZXNzbHkuIEdyZWF0IHdvcmshCgpbMF0gaHR0cHM6Ly9wZXJsZG9jLnBlcmwub3Jn
L2Z1bmN0aW9ucy9zeXN3cml0ZQpbMV0gaHR0cHM6Ly9wZXJsZG9jLnBlcmwub3JnL2Z1bmN0aW9u
cy9sZW5ndGgKClJldmlld2VkLWJ5OiBEYW5pZWwgS3JhbCA8ZC5rcmFsQHByb3htb3guY29tPgpU
ZXN0ZWQtYnk6IERhbmllbCBLcmFsIDxkLmtyYWxAcHJveG1veC5jb20+CgoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlz
dApwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9j
Z2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCg==