From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pbs-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 262121FF15F
	for <inbox@lore.proxmox.com>; Mon, 21 Oct 2024 17:48:03 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id AC019381E4;
	Mon, 21 Oct 2024 17:48:41 +0200 (CEST)
From: Christian Ebner <c.ebner@proxmox.com>
To: pbs-devel@lists.proxmox.com
Date: Mon, 21 Oct 2024 17:47:36 +0200
Message-Id: <20241021154744.325556-3-c.ebner@proxmox.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241021154744.325556-1-c.ebner@proxmox.com>
References: <20241021154744.325556-1-c.ebner@proxmox.com>
MIME-Version: 1.0
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.028 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: [pbs-devel] [PATCH v4 proxmox-backup 02/10] client: pxar: move
 catalog lookup helper to pxar tools
X-BeenThere: pbs-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox Backup Server development discussion
 <pbs-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/>
List-Post: <mailto:pbs-devel@lists.proxmox.com>
List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox Backup Server development discussion
 <pbs-devel@lists.proxmox.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: pbs-devel-bounces@lists.proxmox.com
Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com>

U2luY2UgdGhpcyBjb2RlIGlzIHNwZWNpZmljIHRvIGhhbmRsaW5nIG9mIHB4YXIgYXJjaGl2ZXMs
IG1vdmUgaXQKZnJvbSB0aGUgY29tbW9uIGNsaWVudCByZWxhdGVkIGhlbHBlciBtb2R1bGUgdG8g
dGhlIHB4YXIgc3BlY2lmaWMKb25lLgoKVGhpcyBpcyBmb3IgY29kZSBjbGVudXAgcHVycG9zZXMg
b25seS4KCk5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4KClN1Z2dlc3RlZC1ieTogRmFiaWFuIEdyw7xu
YmljaGxlciA8Zi5ncnVlbmJpY2hsZXJAcHJveG1veC5jb20+ClNpZ25lZC1vZmYtYnk6IENocmlz
dGlhbiBFYm5lciA8Yy5lYm5lckBwcm94bW94LmNvbT4KLS0tCmNoYW5nZXMgc2luY2UgdmVyc2lv
biAzOgotIHMvc3VibW9kdWxlL21vZHVsZQotIFJld29yZCBjb21taXQgbWVzc2FnZSBpbiBvcmRl
ciB0byBjbGFyaWZ5IGludGVuZCBvZiB0aGlzIGFuZAogIHN1YnNlcXVlbnQgcGF0Y2hlcwotIEFk
ZCBtaXNzaW5nIGdpdCB0cmFpbGVycwoKY2hhbmdlcyBzaW5jZSB2ZXJzaW9uIDI6Ci0gbm90IHBy
ZXNlbnQgaW4gcHJldmlvdXMgdmVyc2lvbgoKIHBicy1jbGllbnQvc3JjL3B4YXIvdG9vbHMucnMg
ICAgIHwgODYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHBicy1jbGllbnQvc3Jj
L3Rvb2xzL21vZC5ycyAgICAgIHwgODQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
cHJveG1veC1maWxlLXJlc3RvcmUvc3JjL21haW4ucnMgfCAgOCArKy0KIHNyYy9hcGkyL2FkbWlu
L2RhdGFzdG9yZS5ycyAgICAgIHwgIDIgKy0KIDQgZmlsZXMgY2hhbmdlZCwgOTEgaW5zZXJ0aW9u
cygrKSwgODkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcGJzLWNsaWVudC9zcmMvcHhhci90
b29scy5ycyBiL3Bicy1jbGllbnQvc3JjL3B4YXIvdG9vbHMucnMKaW5kZXggOWQ0YWQ2YTRmLi5j
NDQ0YTg5NDEgMTAwNjQ0Ci0tLSBhL3Bicy1jbGllbnQvc3JjL3B4YXIvdG9vbHMucnMKKysrIGIv
cGJzLWNsaWVudC9zcmMvcHhhci90b29scy5ycwpAQCAtMywxMSArMywxNyBAQAogdXNlIHN0ZDo6
ZmZpOjpPc1N0cjsKIHVzZSBzdGQ6Om9zOjp1bml4OjpmZmk6Ok9zU3RyRXh0OwogdXNlIHN0ZDo6
cGF0aDo6UGF0aDsKK3VzZSBzdGQ6OnBhdGg6OlBhdGhCdWY7CiAKLXVzZSBhbnlob3c6OntiYWls
LCBDb250ZXh0LCBFcnJvcn07Cit1c2UgYW55aG93Ojp7YmFpbCwgZm9ybWF0X2VyciwgQ29udGV4
dCwgRXJyb3J9OwogdXNlIG5peDo6c3lzOjpzdGF0OjpNb2RlOwogCi11c2UgcHhhcjo6e2Zvcm1h
dDo6U3RhdHhUaW1lc3RhbXAsIG1vZGUsIEVudHJ5LCBFbnRyeUtpbmQsIE1ldGFkYXRhfTsKK3Vz
ZSBweGFyOjphY2Nlc3Nvcjo6YWlvOjpBY2Nlc3NvcjsKK3VzZSBweGFyOjphY2Nlc3Nvcjo6UmVh
ZEF0OwordXNlIHB4YXI6OmZvcm1hdDo6e1NpZ25lZER1cmF0aW9uLCBTdGF0eFRpbWVzdGFtcH07
Cit1c2UgcHhhcjo6e21vZGUsIEVudHJ5LCBFbnRyeUtpbmQsIE1ldGFkYXRhfTsKKwordXNlIHBi
c19kYXRhc3RvcmU6OmNhdGFsb2c6OntBcmNoaXZlRW50cnksIERpckVudHJ5QXR0cmlidXRlfTsK
IAogLy8vIEdldCB0aGUgZmlsZSBwZXJtaXNzaW9ucyBhcyBgbml4OjpNb2RlYAogcHViKGNyYXRl
KSBmbiBwZXJtc19mcm9tX21ldGFkYXRhKG1ldGE6ICZNZXRhZGF0YSkgLT4gUmVzdWx0PE1vZGUs
IEVycm9yPiB7CkBAIC0yNTcsMyArMjYzLDc5IEBAIHB1YiBmbiBmb3JtYXRfbXVsdGlfbGluZV9l
bnRyeShlbnRyeTogJkVudHJ5KSAtPiBTdHJpbmcgewogICAgICAgICApCiAgICAgfQogfQorCisv
Ly8gTG9vayB1cCB0aGUgZGlyZWN0b3J5IGVudHJpZXMgb2YgdGhlIGdpdmVuIGRpcmVjdG9yeSBg
cGF0aGAgaW4gYSBweGFyIGFyY2hpdmUgdmlhIGl0J3MgZ2l2ZW4KKy8vLyBgYWNjZXNzb3JgIGFu
ZCByZXR1cm4gdGhlIGVudHJpZXMgZm9ybWF0dGVkIGFzIFtgQXJjaGl2ZUVudHJ5YF0ncywgY29t
cGF0aWJsZSB3aXRoIHJlYWRpbmcKKy8vLyBlbnRyaWVzIGZyb20gdGhlIGNhdGFsb2cuCisvLy8K
Ky8vLyBJZiB0aGUgb3B0aW9uYWwgYHBhdGhfcHJlZml4YCBpcyBnaXZlbiwgYWxsIHJldHVybmVk
IGVudHJ5IHBhdGhzIHdpbGwgYmUgcHJlZml4ZWQgd2l0aCBpdC4KK3B1YiBhc3luYyBmbiBweGFy
X21ldGFkYXRhX2NhdGFsb2dfbG9va3VwPFQ6IENsb25lICsgUmVhZEF0PigKKyAgICBhY2Nlc3Nv
cjogQWNjZXNzb3I8VD4sCisgICAgcGF0aDogJk9zU3RyLAorICAgIHBhdGhfcHJlZml4OiBPcHRp
b248JnN0cj4sCispIC0+IFJlc3VsdDxWZWM8QXJjaGl2ZUVudHJ5PiwgRXJyb3I+IHsKKyAgICBs
ZXQgcm9vdCA9IGFjY2Vzc29yLm9wZW5fcm9vdCgpLmF3YWl0PzsKKyAgICBsZXQgZGlyX2VudHJ5
ID0gcm9vdAorICAgICAgICAubG9va3VwKCZwYXRoKQorICAgICAgICAuYXdhaXQKKyAgICAgICAg
Lm1hcF9lcnIofGVycnwgZm9ybWF0X2VyciEoImxvb2t1cCBmYWlsZWQgLSB7ZXJyfSIpKT8KKyAg
ICAgICAgLm9rX29yX2Vsc2UofHwgZm9ybWF0X2VyciEoImxvb2t1cCBmYWlsZWQgLSBlcnJvciBv
cGVuaW5nICd7cGF0aDo/fSciKSk/OworCisgICAgbGV0IG11dCBlbnRyaWVzID0gVmVjOjpuZXco
KTsKKyAgICBpZiBsZXQgRW50cnlLaW5kOjpEaXJlY3RvcnkgPSBkaXJfZW50cnkua2luZCgpIHsK
KyAgICAgICAgbGV0IGRpcl9lbnRyeSA9IGRpcl9lbnRyeQorICAgICAgICAgICAgLmVudGVyX2Rp
cmVjdG9yeSgpCisgICAgICAgICAgICAuYXdhaXQKKyAgICAgICAgICAgIC5tYXBfZXJyKHxlcnJ8
IGZvcm1hdF9lcnIhKCJmYWlsZWQgdG8gZW50ZXIgZGlyZWN0b3J5IC0ge2Vycn0iKSk/OworCisg
ICAgICAgIGxldCBtdXQgZW50cmllc19pdGVyID0gZGlyX2VudHJ5LnJlYWRfZGlyKCk7CisgICAg
ICAgIHdoaWxlIGxldCBTb21lKGVudHJ5KSA9IGVudHJpZXNfaXRlci5uZXh0KCkuYXdhaXQgewor
ICAgICAgICAgICAgbGV0IGVudHJ5ID0gZW50cnk/LmRlY29kZV9lbnRyeSgpLmF3YWl0PzsKKwor
ICAgICAgICAgICAgbGV0IGVudHJ5X2F0dHIgPSBtYXRjaCBlbnRyeS5raW5kKCkgeworICAgICAg
ICAgICAgICAgIEVudHJ5S2luZDo6VmVyc2lvbihfKSB8IEVudHJ5S2luZDo6UHJlbHVkZShfKSB8
IEVudHJ5S2luZDo6R29vZGJ5ZVRhYmxlID0+IGNvbnRpbnVlLAorICAgICAgICAgICAgICAgIEVu
dHJ5S2luZDo6RGlyZWN0b3J5ID0+IERpckVudHJ5QXR0cmlidXRlOjpEaXJlY3RvcnkgeworICAg
ICAgICAgICAgICAgICAgICBzdGFydDogZW50cnkuZW50cnlfcmFuZ2VfaW5mbygpLmVudHJ5X3Jh
bmdlLnN0YXJ0LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgRW50cnlLaW5k
OjpGaWxlIHsgc2l6ZSwgLi4gfSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGxldCBtdGltZSA9
IG1hdGNoIGVudHJ5Lm1ldGFkYXRhKCkubXRpbWVfYXNfZHVyYXRpb24oKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBTaWduZWREdXJhdGlvbjo6UG9zaXRpdmUodmFsKSA9PiBpNjQ6OnRyeV9m
cm9tKHZhbC5hc19zZWNzKCkpPywKKyAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25lZER1cmF0
aW9uOjpOZWdhdGl2ZSh2YWwpID0+IC1pNjQ6OnRyeV9mcm9tKHZhbC5hc19zZWNzKCkpPywKKyAg
ICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgRGlyRW50cnlBdHRyaWJ1
dGU6OkZpbGUgeyBzaXplOiAqc2l6ZSwgbXRpbWUgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBFbnRyeUtpbmQ6OkRldmljZShfKSA9PiBtYXRjaCBlbnRyeS5tZXRhZGF0YSgp
LmZpbGVfdHlwZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgbW9kZTo6SUZCTEsgPT4gRGlyRW50
cnlBdHRyaWJ1dGU6OkJsb2NrRGV2aWNlLAorICAgICAgICAgICAgICAgICAgICBtb2RlOjpJRkNI
UiA9PiBEaXJFbnRyeUF0dHJpYnV0ZTo6Q2hhckRldmljZSwKKyAgICAgICAgICAgICAgICAgICAg
XyA9PiBiYWlsISgiZW5jb3VudGVyZWQgdW5rbm93biBkZXZpY2UgdHlwZSIpLAorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgRW50cnlLaW5kOjpTeW1saW5rKF8pID0+IERpckVu
dHJ5QXR0cmlidXRlOjpTeW1saW5rLAorICAgICAgICAgICAgICAgIEVudHJ5S2luZDo6SGFyZGxp
bmsoXykgPT4gRGlyRW50cnlBdHRyaWJ1dGU6OkhhcmRsaW5rLAorICAgICAgICAgICAgICAgIEVu
dHJ5S2luZDo6RmlmbyA9PiBEaXJFbnRyeUF0dHJpYnV0ZTo6RmlmbywKKyAgICAgICAgICAgICAg
ICBFbnRyeUtpbmQ6OlNvY2tldCA9PiBEaXJFbnRyeUF0dHJpYnV0ZTo6U29ja2V0LAorICAgICAg
ICAgICAgfTsKKworICAgICAgICAgICAgbGV0IGVudHJ5X3BhdGggPSBpZiBsZXQgU29tZShwcmVm
aXgpID0gcGF0aF9wcmVmaXggeworICAgICAgICAgICAgICAgIGxldCBtdXQgZW50cnlfcGF0aCA9
IFBhdGhCdWY6OmZyb20ocHJlZml4KTsKKyAgICAgICAgICAgICAgICBtYXRjaCBlbnRyeS5wYXRo
KCkuc3RyaXBfcHJlZml4KCIvIikgeworICAgICAgICAgICAgICAgICAgICBPayhwYXRoKSA9PiBl
bnRyeV9wYXRoLnB1c2gocGF0aCksCisgICAgICAgICAgICAgICAgICAgIEVycihfKSA9PiBlbnRy
eV9wYXRoLnB1c2goZW50cnkucGF0aCgpKSwKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZW50cnlfcGF0aAorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBQ
YXRoQnVmOjpmcm9tKGVudHJ5LnBhdGgoKSkKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBl
bnRyaWVzLnB1c2goQXJjaGl2ZUVudHJ5OjpuZXcoCisgICAgICAgICAgICAgICAgZW50cnlfcGF0
aC5hc19vc19zdHIoKS5hc19ieXRlcygpLAorICAgICAgICAgICAgICAgIFNvbWUoJmVudHJ5X2F0
dHIpLAorICAgICAgICAgICAgKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBi
YWlsIShmb3JtYXQhKAorICAgICAgICAgICAgImV4cGVjdGVkIGRpcmVjdG9yeSBlbnRyeSwgZ290
IGVudHJ5IGtpbmQgJ3s6P30nIiwKKyAgICAgICAgICAgIGRpcl9lbnRyeS5raW5kKCkKKyAgICAg
ICAgKSk7CisgICAgfQorCisgICAgT2soZW50cmllcykKK30KZGlmZiAtLWdpdCBhL3Bicy1jbGll
bnQvc3JjL3Rvb2xzL21vZC5ycyBiL3Bicy1jbGllbnQvc3JjL3Rvb2xzL21vZC5ycwppbmRleCA3
NzJjYzEyNjMuLjg3ZTc0ZGU2ZSAxMDA2NDQKLS0tIGEvcGJzLWNsaWVudC9zcmMvdG9vbHMvbW9k
LnJzCisrKyBiL3Bicy1jbGllbnQvc3JjL3Rvb2xzL21vZC5ycwpAQCAtMSwxMyArMSwxMCBAQAog
Ly8hIFNoYXJlZCB0b29scyB1c2VmdWwgZm9yIGNvbW1vbiBDTEkgY2xpZW50cy4KIHVzZSBzdGQ6
OmNvbGxlY3Rpb25zOjpIYXNoTWFwOwogdXNlIHN0ZDo6ZW52OjpWYXJFcnJvcjo6e05vdFByZXNl
bnQsIE5vdFVuaWNvZGV9OwotdXNlIHN0ZDo6ZmZpOjpPc1N0cjsKIHVzZSBzdGQ6OmZzOjpGaWxl
OwogdXNlIHN0ZDo6aW86OntCdWZSZWFkLCBCdWZSZWFkZXJ9OwotdXNlIHN0ZDo6b3M6OnVuaXg6
OmZmaTo6T3NTdHJFeHQ7CiB1c2Ugc3RkOjpvczo6dW5peDo6ZnM6Ok9wZW5PcHRpb25zRXh0Owog
dXNlIHN0ZDo6b3M6OnVuaXg6OmlvOjpGcm9tUmF3RmQ7Ci11c2Ugc3RkOjpwYXRoOjpQYXRoQnVm
OwogdXNlIHN0ZDo6cHJvY2Vzczo6Q29tbWFuZDsKIHVzZSBzdGQ6OnN5bmM6Ok9uY2VMb2NrOwog
CkBAIC0yMSwxMiArMTgsNyBAQCB1c2UgcHJveG1veF9zY2hlbWE6Oio7CiB1c2UgcHJveG1veF9z
eXM6OmZzOjpmaWxlX2dldF9qc29uOwogCiB1c2UgcGJzX2FwaV90eXBlczo6e0F1dGhpZCwgQmFj
a3VwTmFtZXNwYWNlLCBSYXRlTGltaXRDb25maWcsIFVzZXJXaXRoVG9rZW5zLCBCQUNLVVBfUkVQ
T19VUkx9OwotdXNlIHBic19kYXRhc3RvcmU6OmNhdGFsb2c6OntBcmNoaXZlRW50cnksIERpckVu
dHJ5QXR0cmlidXRlfTsKIHVzZSBwYnNfZGF0YXN0b3JlOjpCYWNrdXBNYW5pZmVzdDsKLXVzZSBw
eGFyOjphY2Nlc3Nvcjo6YWlvOjpBY2Nlc3NvcjsKLXVzZSBweGFyOjphY2Nlc3Nvcjo6UmVhZEF0
OwotdXNlIHB4YXI6OmZvcm1hdDo6U2lnbmVkRHVyYXRpb247Ci11c2UgcHhhcjo6e21vZGUsIEVu
dHJ5S2luZH07CiAKIHVzZSBjcmF0ZTo6e0JhY2t1cFJlcG9zaXRvcnksIEh0dHBDbGllbnQsIEh0
dHBDbGllbnRPcHRpb25zfTsKIApAQCAtNjYzLDgyICs2NTUsNiBAQCBwdWIgZm4gcmFpc2Vfbm9m
aWxlX2xpbWl0KCkgLT4gUmVzdWx0PGxpYmM6OnJsaW1pdDY0LCBFcnJvcj4gewogICAgIE9rKG9s
ZCkKIH0KIAotLy8vIExvb2sgdXAgdGhlIGRpcmVjdG9yeSBlbnRyaWVzIG9mIHRoZSBnaXZlbiBk
aXJlY3RvcnkgYHBhdGhgIGluIGEgcHhhciBhcmNoaXZlIHZpYSBpdCdzIGdpdmVuCi0vLy8gYGFj
Y2Vzc29yYCBhbmQgcmV0dXJuIHRoZSBlbnRyaWVzIGZvcm1hdHRlZCBhcyBbYEFyY2hpdmVFbnRy
eWBdJ3MsIGNvbXBhdGlibGUgd2l0aCByZWFkaW5nCi0vLy8gZW50cmllcyBmcm9tIHRoZSBjYXRh
bG9nLgotLy8vCi0vLy8gSWYgdGhlIG9wdGlvbmFsIGBwYXRoX3ByZWZpeGAgaXMgZ2l2ZW4sIGFs
bCByZXR1cm5lZCBlbnRyeSBwYXRocyB3aWxsIGJlIHByZWZpeGVkIHdpdGggaXQuCi1wdWIgYXN5
bmMgZm4gcHhhcl9tZXRhZGF0YV9jYXRhbG9nX2xvb2t1cDxUOiBDbG9uZSArIFJlYWRBdD4oCi0g
ICAgYWNjZXNzb3I6IEFjY2Vzc29yPFQ+LAotICAgIHBhdGg6ICZPc1N0ciwKLSAgICBwYXRoX3By
ZWZpeDogT3B0aW9uPCZzdHI+LAotKSAtPiBSZXN1bHQ8VmVjPEFyY2hpdmVFbnRyeT4sIEVycm9y
PiB7Ci0gICAgbGV0IHJvb3QgPSBhY2Nlc3Nvci5vcGVuX3Jvb3QoKS5hd2FpdD87Ci0gICAgbGV0
IGRpcl9lbnRyeSA9IHJvb3QKLSAgICAgICAgLmxvb2t1cCgmcGF0aCkKLSAgICAgICAgLmF3YWl0
Ci0gICAgICAgIC5tYXBfZXJyKHxlcnJ8IGZvcm1hdF9lcnIhKCJsb29rdXAgZmFpbGVkIC0ge2Vy
cn0iKSk/Ci0gICAgICAgIC5va19vcl9lbHNlKHx8IGZvcm1hdF9lcnIhKCJsb29rdXAgZmFpbGVk
IC0gZXJyb3Igb3BlbmluZyAne3BhdGg6P30nIikpPzsKLQotICAgIGxldCBtdXQgZW50cmllcyA9
IFZlYzo6bmV3KCk7Ci0gICAgaWYgbGV0IEVudHJ5S2luZDo6RGlyZWN0b3J5ID0gZGlyX2VudHJ5
LmtpbmQoKSB7Ci0gICAgICAgIGxldCBkaXJfZW50cnkgPSBkaXJfZW50cnkKLSAgICAgICAgICAg
IC5lbnRlcl9kaXJlY3RvcnkoKQotICAgICAgICAgICAgLmF3YWl0Ci0gICAgICAgICAgICAubWFw
X2Vycih8ZXJyfCBmb3JtYXRfZXJyISgiZmFpbGVkIHRvIGVudGVyIGRpcmVjdG9yeSAtIHtlcnJ9
IikpPzsKLQotICAgICAgICBsZXQgbXV0IGVudHJpZXNfaXRlciA9IGRpcl9lbnRyeS5yZWFkX2Rp
cigpOwotICAgICAgICB3aGlsZSBsZXQgU29tZShlbnRyeSkgPSBlbnRyaWVzX2l0ZXIubmV4dCgp
LmF3YWl0IHsKLSAgICAgICAgICAgIGxldCBlbnRyeSA9IGVudHJ5Py5kZWNvZGVfZW50cnkoKS5h
d2FpdD87Ci0KLSAgICAgICAgICAgIGxldCBlbnRyeV9hdHRyID0gbWF0Y2ggZW50cnkua2luZCgp
IHsKLSAgICAgICAgICAgICAgICBFbnRyeUtpbmQ6OlZlcnNpb24oXykgfCBFbnRyeUtpbmQ6OlBy
ZWx1ZGUoXykgfCBFbnRyeUtpbmQ6Okdvb2RieWVUYWJsZSA9PiBjb250aW51ZSwKLSAgICAgICAg
ICAgICAgICBFbnRyeUtpbmQ6OkRpcmVjdG9yeSA9PiBEaXJFbnRyeUF0dHJpYnV0ZTo6RGlyZWN0
b3J5IHsKLSAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IGVudHJ5LmVudHJ5X3JhbmdlX2luZm8o
KS5lbnRyeV9yYW5nZS5zdGFydCwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
IEVudHJ5S2luZDo6RmlsZSB7IHNpemUsIC4uIH0gPT4gewotICAgICAgICAgICAgICAgICAgICBs
ZXQgbXRpbWUgPSBtYXRjaCBlbnRyeS5tZXRhZGF0YSgpLm10aW1lX2FzX2R1cmF0aW9uKCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmVkRHVyYXRpb246OlBvc2l0aXZlKHZhbCkgPT4g
aTY0Ojp0cnlfZnJvbSh2YWwuYXNfc2VjcygpKT8sCi0gICAgICAgICAgICAgICAgICAgICAgICBT
aWduZWREdXJhdGlvbjo6TmVnYXRpdmUodmFsKSA9PiAtaTY0Ojp0cnlfZnJvbSh2YWwuYXNfc2Vj
cygpKT8sCi0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgIERpckVu
dHJ5QXR0cmlidXRlOjpGaWxlIHsgc2l6ZTogKnNpemUsIG10aW1lIH0KLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgRW50cnlLaW5kOjpEZXZpY2UoXykgPT4gbWF0Y2ggZW50cnku
bWV0YWRhdGEoKS5maWxlX3R5cGUoKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1vZGU6OklGQkxL
ID0+IERpckVudHJ5QXR0cmlidXRlOjpCbG9ja0RldmljZSwKLSAgICAgICAgICAgICAgICAgICAg
bW9kZTo6SUZDSFIgPT4gRGlyRW50cnlBdHRyaWJ1dGU6OkNoYXJEZXZpY2UsCi0gICAgICAgICAg
ICAgICAgICAgIF8gPT4gYmFpbCEoImVuY291bnRlcmVkIHVua25vd24gZGV2aWNlIHR5cGUiKSwK
LSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIEVudHJ5S2luZDo6U3ltbGluayhf
KSA9PiBEaXJFbnRyeUF0dHJpYnV0ZTo6U3ltbGluaywKLSAgICAgICAgICAgICAgICBFbnRyeUtp
bmQ6OkhhcmRsaW5rKF8pID0+IERpckVudHJ5QXR0cmlidXRlOjpIYXJkbGluaywKLSAgICAgICAg
ICAgICAgICBFbnRyeUtpbmQ6OkZpZm8gPT4gRGlyRW50cnlBdHRyaWJ1dGU6OkZpZm8sCi0gICAg
ICAgICAgICAgICAgRW50cnlLaW5kOjpTb2NrZXQgPT4gRGlyRW50cnlBdHRyaWJ1dGU6OlNvY2tl
dCwKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIGxldCBlbnRyeV9wYXRoID0gaWYgbGV0
IFNvbWUocHJlZml4KSA9IHBhdGhfcHJlZml4IHsKLSAgICAgICAgICAgICAgICBsZXQgbXV0IGVu
dHJ5X3BhdGggPSBQYXRoQnVmOjpmcm9tKHByZWZpeCk7Ci0gICAgICAgICAgICAgICAgbWF0Y2gg
ZW50cnkucGF0aCgpLnN0cmlwX3ByZWZpeCgiLyIpIHsKLSAgICAgICAgICAgICAgICAgICAgT2so
cGF0aCkgPT4gZW50cnlfcGF0aC5wdXNoKHBhdGgpLAotICAgICAgICAgICAgICAgICAgICBFcnIo
XykgPT4gZW50cnlfcGF0aC5wdXNoKGVudHJ5LnBhdGgoKSksCi0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGVudHJ5X3BhdGgKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgUGF0aEJ1Zjo6ZnJvbShlbnRyeS5wYXRoKCkpCi0gICAgICAgICAgICB9OwotICAg
ICAgICAgICAgZW50cmllcy5wdXNoKEFyY2hpdmVFbnRyeTo6bmV3KAotICAgICAgICAgICAgICAg
IGVudHJ5X3BhdGguYXNfb3Nfc3RyKCkuYXNfYnl0ZXMoKSwKLSAgICAgICAgICAgICAgICBTb21l
KCZlbnRyeV9hdHRyKSwKLSAgICAgICAgICAgICkpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgYmFpbCEoZm9ybWF0ISgKLSAgICAgICAgICAgICJleHBlY3RlZCBkaXJlY3Rvcnkg
ZW50cnksIGdvdCBlbnRyeSBraW5kICd7Oj99JyIsCi0gICAgICAgICAgICBkaXJfZW50cnkua2lu
ZCgpCi0gICAgICAgICkpOwotICAgIH0KLQotICAgIE9rKGVudHJpZXMpCi19Ci0KIC8vLyBDcmVh
dGVzIGEgdGVtcG9yYXJ5IGZpbGUgKHdpdGggYE9fVE1QRklMRWApIGluIGBYREdfQ0FDSEVfSE9N
RWAuIElmIHdlCiAvLy8gY2Fubm90IGNyZWF0ZSB0aGUgZmlsZSB0aGVyZSBpdCB3aWxsIGJlIGNy
ZWF0ZWQgaW4gYC90bXBgIGluc3RlYWQuCiBwdWIgZm4gY3JlYXRlX3RtcF9maWxlKCkgLT4gc3Rk
Ojppbzo6UmVzdWx0PHN0ZDo6ZnM6OkZpbGU+IHsKZGlmZiAtLWdpdCBhL3Byb3htb3gtZmlsZS1y
ZXN0b3JlL3NyYy9tYWluLnJzIGIvcHJveG1veC1maWxlLXJlc3RvcmUvc3JjL21haW4ucnMKaW5k
ZXggY2RhNGU5MTFjLi4zZDkzZjE3MTAgMTAwNjQ0Ci0tLSBhL3Byb3htb3gtZmlsZS1yZXN0b3Jl
L3NyYy9tYWluLnJzCisrKyBiL3Byb3htb3gtZmlsZS1yZXN0b3JlL3NyYy9tYWluLnJzCkBAIC0x
ODcsOCArMTg3LDEyIEBAIGFzeW5jIGZuIGxpc3RfZmlsZXMoCiAgICAgICAgICAgICAgICAgbGV0
IGFjY2Vzc29yID0gQWNjZXNzb3I6Om5ldyhyZWFkZXIsIGFyY2hpdmVfc2l6ZSkuYXdhaXQ/Owog
ICAgICAgICAgICAgICAgIGxldCBwYXRoID0gT3NTdHI6OmZyb21fYnl0ZXMoJnBhdGgpOwogCi0g
ICAgICAgICAgICAgICAgcGJzX2NsaWVudDo6dG9vbHM6OnB4YXJfbWV0YWRhdGFfY2F0YWxvZ19s
b29rdXAoYWNjZXNzb3IsIHBhdGgsIFNvbWUoJmFyY2hpdmVfbmFtZSkpCi0gICAgICAgICAgICAg
ICAgICAgIC5hd2FpdAorICAgICAgICAgICAgICAgIHBic19jbGllbnQ6OnB4YXI6OnRvb2xzOjpw
eGFyX21ldGFkYXRhX2NhdGFsb2dfbG9va3VwKAorICAgICAgICAgICAgICAgICAgICBhY2Nlc3Nv
ciwKKyAgICAgICAgICAgICAgICAgICAgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgU29tZSgm
YXJjaGl2ZV9uYW1lKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgLmF3YWl0
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgRXh0cmFjdFBhdGg6OlZNKGZpbGUs
IHBhdGgpID0+IHsKZGlmZiAtLWdpdCBhL3NyYy9hcGkyL2FkbWluL2RhdGFzdG9yZS5ycyBiL3Ny
Yy9hcGkyL2FkbWluL2RhdGFzdG9yZS5ycwppbmRleCA3NjYwZGQ3ZjYuLmI3M2FkMGZmMCAxMDA2
NDQKLS0tIGEvc3JjL2FwaTIvYWRtaW4vZGF0YXN0b3JlLnJzCisrKyBiL3NyYy9hcGkyL2FkbWlu
L2RhdGFzdG9yZS5ycwpAQCAtMTczNyw3ICsxNzM3LDcgQEAgcHViIGFzeW5jIGZuIGNhdGFsb2co
CiAgICAgICAgIGxldCBhY2Nlc3NvciA9IEFjY2Vzc29yOjpuZXcocmVhZGVyLCBhcmNoaXZlX3Np
emUpLmF3YWl0PzsKIAogICAgICAgICBsZXQgZmlsZV9wYXRoID0gZGVjb2RlX3BhdGgoJmZpbGVw
YXRoKT87Ci0gICAgICAgIHBic19jbGllbnQ6OnRvb2xzOjpweGFyX21ldGFkYXRhX2NhdGFsb2df
bG9va3VwKAorICAgICAgICBwYnNfY2xpZW50OjpweGFyOjp0b29sczo6cHhhcl9tZXRhZGF0YV9j
YXRhbG9nX2xvb2t1cCgKICAgICAgICAgICAgIGFjY2Vzc29yLAogICAgICAgICAgICAgT3NTdHI6
OmZyb21fYnl0ZXMoJmZpbGVfcGF0aCksCiAgICAgICAgICAgICBOb25lLAotLSAKMi4zOS41CgoK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnBicy1kZXZl
bCBtYWlsaW5nIGxpc3QKcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMu
cHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo=