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 D24A51FF15E
	for <inbox@lore.proxmox.com>; Tue,  3 Jun 2025 14:25:09 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id AA1FE18965;
	Tue,  3 Jun 2025 14:25:28 +0200 (CEST)
Message-ID: <ac2f5f47-de16-4406-9ae5-53a541f32faa@proxmox.com>
Date: Tue, 3 Jun 2025 14:25:23 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Hannes Duerr <h.duerr@proxmox.com>
To: Stefan Hanreich <s.hanreich@proxmox.com>,
 Proxmox VE development discussion <pve-devel@lists.proxmox.com>
References: <20250526121925.27575-1-h.duerr@proxmox.com>
 <06185ad1-384d-49ea-8c44-d726e19ccef7@proxmox.com>
Content-Language: en-US
In-Reply-To: <06185ad1-384d-49ea-8c44-d726e19ccef7@proxmox.com>
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.926 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
 KAM_MAILER                  2 Automated Mailer Tag Left in Email
 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 pve-network v5 1/2] ipam: add Nautobot plugin
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>

Ck9uIDUvMjgvMjUgMTE6MzIsIFN0ZWZhbiBIYW5yZWljaCB3cm90ZToKPiBUZXN0ZWQgdGhlIGZv
bGxvd2luZyB0aGluZ3MgYW5kIHRoZXkgd29ya2VkOgo+Cj4gKiBDcmVhdGUgYSBuZXcgc2ltcGxl
IHpvbmUgd2l0aCBOYXV0b2JvdCBJUEFNCj4gKiBDcmVhdGUgYSBWTmV0IHdpdGggYSBTdWJuZXQg
KyBHVyAtPiBJUCBhbGxvY2F0ZWQKPiAqIENyZWF0ZSBhIFZNIG9uIHRoYXQgVk5ldCAtPiBJUCBh
bGxvY2F0ZWQKPiAqIENyZWF0ZSBhIENUIG9uIHRoYXQgVk5ldCAtPiBJUCBhbGxvY2F0ZWQKPiAq
IENoYW5nZSBuZXR3b3JrIGRldmljZSB0byBhbm90aGVyIGJyaWRnZSAtPiBJUCBkZWxldGVkCj4g
KiBDaGFuZ2UgYmFjayB0byBJUEFNIFZOZXQgLT4gSVAgYWxsb2NhdGVkCj4gKiBMaXZlLU1pZ3Jh
dGUgVk0KPiAqIENoZWNrIGlmIFZNIC8gQ1QgZ2V0IElQIHZpYSBESENQCj4gKiB0cnkgdG8gZGVs
ZXRlIHN1Ym5ldCB3aXRoIGVudHJpZXMgLT4gZmFpbHMKPiAqIGRlbGV0ZSBuZXR3b3JrIGRldmlj
ZXMgYW5kIHRyeSBhZ2FpbiAtPiBzdWNjZWVkcwo+ICogdXBkYXRlIGdhdGV3YXkgLT4gY2hhbmdl
cyBpbiBJUEFNCj4gKiBhZGQgREhDUCByYW5nZSBhbmQgdGVzdCBDL1IvVS9EIG5ldHdvcmsgZGV2
aWNlIGFnYWluCj4KPgo+IEkgYWRkZWQgYSBzZWNvbmQgSVBBTSB3aXRoIGEgZGlmZmVyZW50IG5h
bWVzcGFjZSwgYW5kIHRoaXMgaXMgd2hlcmUgc29tZQo+IHByb2JsZW1zIHN0YXJ0ZWQgdG8gb2Nj
dXIuIFRoZSBQVkUgV2ViIFVJIHRocmV3IGFuIGVycm9yIHdoZW4gdHJ5aW5nIHRvCj4gY3JlYXRl
IHRoZSBzYW1lIHN1Ym5ldCwgYnV0IGluIGEgZGlmZmVyZW50IG5hbWVzcGFjZToKPgo+ICAgIGNy
ZWF0ZSBzZG4gc3VibmV0IG9iamVjdCBmYWlsZWQ6IGNvdWxkIG5vdCBhZGQgdGhlIHN1Ym5ldAo+
ICAgIEhBU0goMHg1OGJjMmQwMzNlMTApIGJlY2F1c2UgaXQgYWxyZWFkeSBleGlzdHMgaW4gbmF1
dG9ib3QgKDUwMCkKPgo+IChhbHNvIG5vdGUgdGhhdCBoZXJlIHdlIG5lZWQgdG8gcHJpbnQgdGhl
IGlkIGZpZWxkIG9mIHRoZSBoYXNoIGluIHRoZQo+IGVycm9yIG1lc3NhZ2UpCj4KPgo+IFNvbWUg
YWRkaXRpb25hbCBlcnJvcnMgb2NjdXJyZWQgd2hlbiBJIG1hbnVhbGx5IGNyZWF0ZWQgdGhlIHN1
Ym5ldCBpbgo+IHRoZSBTRE4gY29uZmlndXJhdGlvbiwgYmVjYXVzZSBpdCBzZWVtcyBsaWtlIG1h
bnkgZnVuY3Rpb25zIHRoYXQgZmV0Y2gKPiBJRHMgZG9uJ3Qgc2VlbSB0byBjb25zaWRlciB0aGUg
bmFtZXNwYWNlIG9mIHRoZSBvYmplY3RzIHRoZXkncmUgZmV0Y2hpbmcKPiAoZS5nLiBnZXRfaXBf
aWQgLyBnZXRfcHJlZml4X2lkIC8gLi4uKS4gVGhpcyBtZWFucyB0aGF0IElQIGFkZHJlc3NlcyBn
ZXQKPiBjcmVhdGVkIGluIHRoZSB3cm9uZyBwcmVmaXgsIGJlY2F1c2UgdGhlIHBsdWdpbiBqdXN0
IHRha2VzIHRoZSBmaXJzdAo+IHByZWZpeCBmb3VuZCwgcmVnYXJkbGVzcyBvZiB0aGVpciBuYW1l
c3BhY2UuIE1pZ2h0IG1ha2UgaXNzdWVzIGZvciB1c2Vycwo+IHRoYXQgdXNlIGEgc2VwYXJhdGVk
IG5hbWVzcGFjZSBmb3IgUFZFLCBidXQgaGF2ZSB0aGUgc2FtZSBwcmVmaXgKPiBjb25maWd1cmVk
IGluIG90aGVyIG5hbWVzcGFjZXMuIFNpbmNlIG1vc3QgbWV0aG9kcyB1c2UgdGhlIElEIHJldHVy
bmVkCj4gYnkgdGhlIGhlbHBlciBmdW5jdGlvbnMsIHRoaXMgc2hvdWxkIGJlIGVhc2lseSBmaXhl
ZCBieSBhZGp1c3RpbmcgdGhvc2UKPiBoZWxwZXJzLgo+Cj4gc29tZSBhZGRpdGlvbmFsIGNvbW1l
bnRzIGlubGluZQpUaGFua3MgZm9yIHRlc3RpbmcgYW5kIHJldmlld2luZy4KSSBhbnN3ZXJlZCB0
byBzb21lIG9mIHlvdXIgY29tbWVudHMgaW5saW5lLgpJIHdpbGwgdHJ5IHRvIHVwc3RyZWFtIHRo
ZSBvZmZzZXQgcGFyYW1ldGVyIGluIG5hdXRvYm90IGFuZCBwdWJsaXNoIGEKbmV3IHZlcnNpb24g
d2l0aCBhbGwgdGhlIGNoYW5nZXMgYWZ0ZXJ3YXJkcy4KCj4KPgo+IE9uIDUvMjYvMjUgMTQ6MTks
IEhhbm5lcyBEdWVyciB3cm90ZToKPj4gICBQRVJMNURJUj0ke0RFU1RESVJ9L3Vzci9zaGFyZS9w
ZXJsNQo+PiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9OZXR3b3JrL1NETi9JcGFtcy9OYXV0b2JvdFBs
dWdpbi5wbSBiL3NyYy9QVkUvTmV0d29yay9TRE4vSXBhbXMvTmF1dG9ib3RQbHVnaW4ucG0KPj4g
bmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uYTZlYjdmZgo+PiAtLS0gL2Rl
di9udWxsCj4+ICsrKyBiL3NyYy9QVkUvTmV0d29yay9TRE4vSXBhbXMvTmF1dG9ib3RQbHVnaW4u
cG0KPj4gQEAgLTAsMCArMSw1MTAgQEAKPj4gK3BhY2thZ2UgUFZFOjpOZXR3b3JrOjpTRE46Oklw
YW1zOjpOYXV0b2JvdFBsdWdpbjsKPj4gKwo+PiArdXNlIHN0cmljdDsKPj4gK3VzZSB3YXJuaW5n
czsKPj4gK3VzZSBQVkU6OklOb3RpZnk7Cj4+ICt1c2UgUFZFOjpDbHVzdGVyOwo+PiArdXNlIFBW
RTo6VG9vbHM7Cj4+ICt1c2UgTmV0QWRkcjo6SVA7Cj4+ICt1c2UgTmV0OjpTdWJuZXQgcXcoc3Vi
bmV0X21hdGNoZXIpOwo+PiArCj4+ICt1c2UgYmFzZSgnUFZFOjpOZXR3b3JrOjpTRE46OklwYW1z
OjpQbHVnaW4nKTsKPj4gKwo+PiArc3ViIHR5cGUgewo+PiArICAgIHJldHVybiAnbmF1dG9ib3Qn
Owo+PiArfQo+PiArCj4+ICtzdWIgcHJvcGVydGllcyB7Cj4+ICsgICAgcmV0dXJuIHsKPj4gKyAg
ICAgICAgbmFtZXNwYWNlID0+IHsKPj4gKyAgICAgICAgICAgIHR5cGUgPT4gJ3N0cmluZycsCj4+
ICsgICAgICAgIH0sCj4+ICsgICAgfTsKPj4gK30KPiBtaXNzaW5nIGRlc2NyaXB0aW9uIGhlcmUu
IGFmYWljdCB3ZSBzaG91bGQgYWxzbyBhZGQgZGVzY3JpcHRpb25zIGZvciB1cmwKPiAvIHRva2Vu
PyBzaW5jZSB0aGV5J3JlIG5vdCBkZWZpbmVkIGluIHRoZSBiYXNlIHBsdWdpbi4KR29vZCBwb2lu
dCB5ZXMgdGhleSdyZSBtaXNzaW5nLCB3aWxsIGFkZCB0aGVtLgpXaWxsIGFsc28gc2VuZCBwYXRj
aGVzIGZvciB0aGUgb3RoZXIgcGx1Z2lucyBhcyB0aGV5J3JlIG1pc3NpbmcgdGhlcmUgYXMgCndl
bGwuCj4+ICtzdWIgb3B0aW9ucyB7Cj4+ICsgICAgcmV0dXJuIHsKPj4gKyAgICAgICAgdXJsID0+
IHsgb3B0aW9uYWwgPT4gMCB9LAo+PiArICAgICAgICB0b2tlbiA9PiB7IG9wdGlvbmFsID0+IDAg
fSwKPj4gKyAgICAgICAgbmFtZXNwYWNlID0+IHsgb3B0aW9uYWwgPT4gMCB9LAo+PiArICAgICAg
ICBmaW5nZXJwcmludCA9PiB7IG9wdGlvbmFsID0+IDEgfSwKPj4gKyAgICB9Owo+PiArfQo+PiAr
Cj4+ICtzdWIgZGVmYXVsdF9pcF9zdGF0dXMgewo+PiArICAgIHJldHVybiAnQWN0aXZlJzsKPj4g
K30KPiBjb3VsZCBtYXliZSBqdXN0IGJlIGEgY29uc3RhbnQgbXkgJERFRkFVTFRfSVBfU1RBVFVT
OyA/Ckkgc3dpdGNoZWQgdG8gZGVmYXVsdF9pcF9zdGF0dXMgKCkge30gYXMgdGhpcyBnaXZlcyB0
aGUgcGVybAppbnRlcnByZXRlciB0aGUgb3B0aW9uIHRvIGlubGluZSB0aGUgZnVudGlvbiBbMF0u
CkFub3RoZXIgb3B0aW9uIHdvdWxkIGJlIHVzaW5nICd1c2UgY29udGFudCBERUZBVUxUX0lQX1NU
QVRVUyA9IkFjdGl2ZSInCndoaWNoIGlzIGNvbXBhcmFibGUgdG8gdXNpbmcgdGhlIGZ1bmN0aW9u
IEFGQUlVLgoKWzBdIApodHRwczovL3d3dy5vcmVpbGx5LmNvbS9saWJyYXJ5L3ZpZXcvcHJvZ3Jh
bW1pbmctcGVybC00dGgvOTc4MTQ0OTMyMTQ1MS9jaDA3czA0czAxLmh0bWwKPj4gKwo+PiArc3Vi
IG5hdXRvYm90X2FwaV9yZXF1ZXN0IHsKPj4gKyAgICBteSAoJGNvbmZpZywgJG1ldGhvZCwgJHBh
dGgsICRwYXJhbXMpID0gQF87Cj4+ICsKPj4gKyAgICByZXR1cm4gUFZFOjpOZXR3b3JrOjpTRE46
OmFwaV9yZXF1ZXN0KAo+PiArICAgICAgICAkbWV0aG9kLAo+PiArICAgICAgICAiJGNvbmZpZy0+
e3VybH0ke3BhdGh9IiwKPj4gKyAgICAgICAgWwo+PiArICAgICAgICAgICAgJ0NvbnRlbnQtVHlw
ZScgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLTgnLAo+PiArICAgICAgICAgICAg
J0F1dGhvcml6YXRpb24nID0+ICJ0b2tlbiAkY29uZmlnLT57dG9rZW59IiwKPj4gKyAgICAgICAg
ICAgICdBY2NlcHQnID0+ICJhcHBsaWNhdGlvbi9qc29uIiwKPj4gKyAgICAgICAgXSwKPj4gKyAg
ICAgICAgJHBhcmFtcywKPj4gKyAgICAgICAgJGNvbmZpZy0+e2ZpbmdlcnByaW50fSwKPj4gKyAg
ICApOwo+PiArfQo+PiArCj4+ICtzdWIgYWRkX3N1Ym5ldCB7Cj4+ICsgICAgbXkgKCRjbGFzcywg
JGNvbmZpZywgdW5kZWYsICRzdWJuZXQsICRub2VycikgPSBAXzsKPj4gKwo+PiArICAgIG15ICRj
aWRyID0gJHN1Ym5ldC0+e2NpZHJ9Owo+PiArICAgIG15ICRuYW1lc3BhY2UgPSAkY29uZmlnLT57
bmFtZXNwYWNlfTsKPj4gKwo+PiArICAgIG15ICRpbnRlcm5hbGlkID0gZ2V0X3ByZWZpeF9pZCgk
Y29uZmlnLCAkY2lkciwgJG5vZXJyKTsKPj4gKyAgICBpZiAoJGludGVybmFsaWQpIHsKPj4gKyAg
ICAgICAgcmV0dXJuIGlmICRub2VycjsKPj4gKyAgICAgICAgZGllICJjb3VsZCBub3QgYWRkIHRo
ZSBzdWJuZXQgJHN1Ym5ldCBiZWNhdXNlIGl0IGFscmVhZHkgZXhpc3RzIGluIG5hdXRvYm90XG4i
Owo+IHNob3VsZCB1c2UgdGhlIENJRFIgZmllbGQgb2YgdGhlIHN1Ym5ldCwgc2luY2UgJHN1Ym5l
dCBpcyBhIGhhc2gKYWdyZWUKPiArCj4gK3N1YiBhZGRfcmFuZ2VfbmV4dF9mcmVlaXAgewo+ICsg
ICAgbXkgKCRjbGFzcywgJGNvbmZpZywgJHN1Ym5ldCwgJHJhbmdlLCAkZGF0YSwgJG5vZXJyKSA9
IEBfOwo+ICsKPiArICAgIG15ICRjaWRyID0gTmV0QWRkcjo6SVAtPm5ldygkc3VibmV0LT57Y2lk
cn0pOwo+ICsgICAgbXkgJG5hbWVzcGFjZSA9ICRjb25maWctPntuYW1lc3BhY2V9Owo+ICsKPiAr
ICAgICMgTmF1dG9ib3QgZG9lcyBub3Qgc3VwcG9ydCBJUCByYW5nZXMsIG9ubHkgcHJlZml4ZXMu
Cj4gKyAgICAjIFRoZXJlZm9yZSB3ZSBkaXZpZGUgdGhlIHJhbmdlIGludG8gc21hbGxlciBwb29s
IHByZWZpeGVzLAo+ICsgICAgIyBlYWNoIGNvbnRhaW5pbmcgMjU2IGFkZHJlc3NlcywgYW5kIHNl
YXJjaCB0aGVtIGZvciBhdmFpbGFibGUgSVBzCj4gKyAgICBteSAkcHJlZml4X3NpemUgPSAkY2lk
ci0+dmVyc2lvbiA9PSA0ID8gMjQgOiAxMjA7Cj4gbWF5YmUgd2UgY291bGQgZGVmYXVsdCB0byB0
aGUgcHJlZml4IHNpemUgb2YgdGhlIHN1Ym5ldCBpZiBpdCBpcyBzbWFsbGVyCj4gdGhhbiAyNCAv
IDEyMD8gTm90IHNvIGxpa2VseSBmb3IgSVB2NiwgYnV0IGZvciBJUHY0IGl0J2QgbWFrZSBzZW5z
ZT8KPgo+PiArICAgIG15ICRpbmNyZW1lbnQgPSAyNTY7Cj4+ICsgICAgbXkgJGZvdW5kX2lwID0g
dW5kZWY7Cj4+ICsKPj4gKyAgICBteSAkc3RhcnRfcmFuZ2UgPSBOZXRBZGRyOjpJUC0+bmV3KCRy
YW5nZS0+eydzdGFydC1hZGRyZXNzJ30sICRwcmVmaXhfc2l6ZSk7Cj4+ICsgICAgbXkgJGVuZF9y
YW5nZSA9IE5ldEFkZHI6OklQLT5uZXcoJHJhbmdlLT57J2VuZC1hZGRyZXNzJ30sICRwcmVmaXhf
c2l6ZSk7Cj4+ICsgICAgbXkgJG1hdGNoZXIgPSBzdWJuZXRfbWF0Y2hlcigkZW5kX3JhbmdlLT5j
aWRyKTsKPj4gKyAgICBteSAkY3VycmVudF9pcCA9ICRzdGFydF9yYW5nZTsKPj4gKwo+PiArICAg
IHdoaWxlICgxKSB7Cj4+ICsgICAgICAgIG15ICRjdXJyZW50X2NpZHIgPSAkY3VycmVudF9pcC0+
YWRkciAuICIvJHByZWZpeF9zaXplIjsKPj4gKwo+PiArICAgICAgICBteSAkcGFyYW1zID0gewo+
PiArICAgICAgICAgICAgcHJlZml4ID0+ICRjdXJyZW50X2NpZHIsCj4+ICsgICAgICAgICAgICBu
YW1lc3BhY2UgPT4gJG5hbWVzcGFjZSwKPj4gKyAgICAgICAgICAgIHN0YXR1cyA9PiBkZWZhdWx0
X2lwX3N0YXR1cygpLAo+PiArICAgICAgICAgICAgdHlwZSA9PiAicG9vbCIsCj4+ICsgICAgICAg
IH07Cj4+ICsKPj4gKyAgICAgICAgbXkgJHByZWZpeF9pZCA9IGdldF9wcmVmaXhfaWQoJGNvbmZp
ZywgJGN1cnJlbnRfY2lkciwgJG5vZXJyKTsKPj4gKyAgICAgICAgaWYgKCRwcmVmaXhfaWQpIHsK
Pj4gKyAgICAgICAgICAgICMgc2VhcmNoIHRoZSBleGlzdGluZyBwcmVmaXggZm9yIHZhbGlkIGlw
Cj4+ICsgICAgICAgICAgICAkZm91bmRfaXAgPQo+PiArICAgICAgICAgICAgICAgIGZpbmRfaXBf
aW5fcHJlZml4KCRjb25maWcsICRwcmVmaXhfaWQsICRpbmNyZW1lbnQsICRzdGFydF9yYW5nZSwg
JGVuZF9yYW5nZSk7Cj4+ICsgICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICAjIGNyZWF0
ZSB0ZW1wb3JhcnkgcG9vbCBwcmVmaXgKPj4gKyAgICAgICAgICAgIG15ICR0ZW1wX3ByZWZpeCA9
Cj4+ICsgICAgICAgICAgICAgICAgZXZhbCB7IHJldHVybiBuYXV0b2JvdF9hcGlfcmVxdWVzdCgk
Y29uZmlnLCAiUE9TVCIsICIvaXBhbS9wcmVmaXhlcy8iLCAkcGFyYW1zKTsgfTsKPiBzaG91bGQg
cHJvYmFibHkgZG8gc29tZSBlcnJvciBoYW5kbGluZz8KPgo+PiArCj4+ICsgICAgICAgICAgICBt
eSAkdGVtcF9wcmVmaXhfaWQgPSAkdGVtcF9wcmVmaXgtPntpZH07Cj4+ICsKPj4gKyAgICAgICAg
ICAgICMgc2VhcmNoIHRlbXBvcmFybHkgY3JlYXRlZCBwcmVmaXgKPj4gKyAgICAgICAgICAgICRm
b3VuZF9pcCA9Cj4+ICsgICAgICAgICAgICAgICAgZmluZF9pcF9pbl9wcmVmaXgoJGNvbmZpZywg
JHRlbXBfcHJlZml4X2lkLCAkaW5jcmVtZW50LCAkc3RhcnRfcmFuZ2UsICRlbmRfcmFuZ2UpOwo+
PiArCj4+ICsgICAgICAgICAgICAjIERlbGV0ZSB0ZW1wb3JhcnkgcHJlZml4IHBvb2wKPj4gKyAg
ICAgICAgICAgIGV2YWwgeyBuYXV0b2JvdF9hcGlfcmVxdWVzdCgkY29uZmlnLCAiREVMRVRFIiwg
Ii9pcGFtL3ByZWZpeGVzLyR0ZW1wX3ByZWZpeF9pZC8iKTsgfTsKPiBoZXJlIGFzIHdlbGwKPgo+
PiArICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgbGFzdCBpZiAkZm91bmRfaXA7Cj4+ICsKPj4g
KyAgICAgICAgIyB3ZSBzZWFyY2hlZCB0aGUgbGFzdCBwb29sIHByZWZpeAo+PiArICAgICAgICBs
YXN0IGlmICRtYXRjaGVyLT4oJGN1cnJlbnRfaXAtPmFkZHIpOwo+PiArCj4+ICsgICAgICAgICRj
dXJyZW50X2lwID0gJGN1cnJlbnRfaXAtPnBsdXMoJGluY3JlbWVudCk7Cj4+ICsgICAgfQo+PiAr
Cj4+ICsgICAgaWYgKCEkZm91bmRfaXApIHsKPj4gKyAgICAgICAgcmV0dXJuIGlmICRub2VycjsK
Pj4gKyAgICAgICAgZGllICJjb3VsZCBub3QgYWxsb2NhdGUgaXAgaW4gdGhlIHJhbmdlICIKPj4g
KyAgICAgICAgICAgIC4gJHN0YXJ0X3JhbmdlLT5hZGRyIC4gIiAtICIKPj4gKyAgICAgICAgICAg
IC4gJGVuZF9yYW5nZS0+YWRkcgo+PiArICAgICAgICAgICAgLiAiOiAkQFxuIjsKPj4gKyAgICB9
Cj4+ICsKPj4gKyAgICAkY2xhc3MtPmFkZF9pcCgKPj4gKyAgICAgICAgJGNvbmZpZywKPj4gKyAg
ICAgICAgdW5kZWYsCj4+ICsgICAgICAgICRzdWJuZXQsCj4+ICsgICAgICAgICRmb3VuZF9pcCwK
Pj4gKyAgICAgICAgJGRhdGEtPntob3N0bmFtZX0sCj4+ICsgICAgICAgICRkYXRhLT57bWFjfSwK
Pj4gKyAgICAgICAgdW5kZWYsCj4+ICsgICAgICAgIDAsCj4+ICsgICAgICAgICRub2VyciwKPj4g
KyAgICApOwo+PiArCj4+ICsgICAgcmV0dXJuICRmb3VuZF9pcDsKPj4gK30KPiB3ZSBtaWdodCBy
ZWFsbHkgd2FubmEgdXBzdHJlYW0gYSBsaXR0bGUgcGF0Y2ggdGhhdCBhZGRzIGF0IGxlYXN0IG9m
ZnNldAo+IHN1cHBvcnQsIG9yIGRlZmluZXMgYSBzdGFydCAvIGVuZCByYW5nZS4gU2VlbXMgbGlr
ZSB0aGlzIHNob3VsZG4ndCBiZQo+IHRvbyBoYXJkIHdpdGggdGhlIGN1cnJlbnQgaW1wbGVtZW50
YXRpb24gaW4gbmF1dG9ib3QuIFRoYXQgd291bGQKPiBzaW1wbGlmeSB0aGlzIG1ldGhvZCBieSBh
IGxvdC4gV2UgY291bGQgYWxzbyBqdXN0IGRlbnkgdXNpbmcgREhDUCByYW5nZXMKPiB3aXRoIHRo
ZSBOYXV0b2JvdCBwbHVnaW4gZm9yIG5vdy4uLgp5ZXMgaSB0aG91Z2h0IGl0IHdvdWxkIGJlIG5p
Y2VyIGlmIHdlIGRpZG4ndCBoYXZlIHRvIGRlcGVuZCBvbiBhCnNwZWNpYWwgbmF1dG9ib3QgdmVy
c2lvbiwgYnV0IGkgYWdyZWUgd2l0aCB5b3UgdGhhdCB0aGUgY3VycmVudAppbXBsZW1lbnRhdGlv
biBpcyBkZWZpbml0ZWx5IG1vcmUgY29tcGxleCBhbmQgdGhlcmVmb3JlIG1vcmUKZXJyb3ItcHJv
bmUgdGhhbiBzaW1wbHkgaGF2aW5nIGFuIG9mZnNldCBwYXJhbWV0ZXIuCkkgd2lsbCBzZWUgaWYg
SSBjYW4gZ2V0IHRoZSBvZmZzZXQgcGFyYW1ldGVyIGltcGxlbWVudGVkIGluIG5hdXRvYm90CnVw
c3RyZWFtLgoKPiBzZWUKPiBodHRwczovL2dpdGh1Yi5jb20vbmF1dG9ib3QvbmF1dG9ib3QvYmxv
Yi9kZXZlbG9wL25hdXRvYm90L2lwYW0vYXBpL3ZpZXdzLnB5I0wzMDkKPgo+PiArc3ViIHVwZGF0
ZV9pcCB7Cj4+ICsgICAgbXkgKCRjbGFzcywgJGNvbmZpZywgJHN1Ym5ldGlkLCAkc3VibmV0LCAk
aXAsICRob3N0bmFtZSwgJG1hYywgdW5kZWYsICRpc19nYXRld2F5LCAkbm9lcnIpID0gQF87Cj4+
ICsKPj4gKyAgICBteSAkbWFzayA9ICRzdWJuZXQtPnttYXNrfTsKPj4gKyAgICBteSAkbmFtZXNw
YWNlID0gJGNvbmZpZy0+e25hbWVzcGFjZX07Cj4+ICsKPj4gKyAgICBteSAkZGVzY3JpcHRpb24g
PSB1bmRlZjsKPj4gKyAgICBpZiAoJGlzX2dhdGV3YXkpIHsKPj4gKyAgICAgICAgJGRlc2NyaXB0
aW9uID0gJ2dhdGV3YXknOwo+PiArICAgIH0gZWxzaWYgKCRtYWMpIHsKPj4gKyAgICAgICAgJGRl
c2NyaXB0aW9uID0gIm1hYzokbWFjIjsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBteSAkcGFyYW1z
ID0gewo+PiArICAgICAgICBhZGRyZXNzID0+ICIkaXAvJG1hc2siLAo+PiArICAgICAgICB0eXBl
ID0+ICJkaGNwIiwKPj4gKyAgICAgICAgZGVzY3JpcHRpb24gPT4gJGRlc2NyaXB0aW9uLAo+PiAr
ICAgICAgICBuYW1lc3BhY2UgPT4gJG5hbWVzcGFjZSwKPj4gKyAgICAgICAgc3RhdHVzID0+IGRl
ZmF1bHRfaXBfc3RhdHVzKCksCj4+ICsgICAgfTsKPj4gKwo+PiArICAgIG15ICRpcF9pZCA9IGdl
dF9pcF9pZCgkY29uZmlnLCAkaXAsICRub2Vycik7Cj4+ICsgICAgaWYgKCFkZWZpbmVkKCRpcF9p
ZCkpIHsKPj4gKyAgICAgICAgcmV0dXJuIGlmICRub2VycjsKPj4gKyAgICAgICAgZGllICJjb3Vs
ZCBub3QgZmluZCB0aGUgaXAgJGlwIGluIG5hdXRvYm90XG4iOwo+PiArICAgIH0KPj4gKwo+PiAr
ICAgIGV2YWwgeyBuYXV0b2JvdF9hcGlfcmVxdWVzdCgkY29uZmlnLCAiUEFUQ0giLCAiL2lwYW0v
aXAtYWRkcmVzc2VzLyRpcF9pZC8iLCAkcGFyYW1zKTsgfTsKPj4gKyAgICBpZiAoJEApIHsKPj4g
KyAgICAgICAgcmV0dXJuIGlmICRub2VycjsKPj4gKyAgICAgICAgZGllICJlcnJvciB1cGRhdGlu
ZyBpcCAkaXA6ICRAIjsKPj4gKyAgICB9Cj4+ICt9Cj4+ICsKPj4gK3N1YiBkZWxfaXAgewo+PiAr
ICAgIG15ICgkY2xhc3MsICRjb25maWcsIHVuZGVmLCB1bmRlZiwgJGlwLCAkbm9lcnIpID0gQF87
Cj4+ICsKPj4gKyAgICByZXR1cm4gaWYgISRpcDsKPj4gKwo+PiArICAgIG15ICRpcF9pZCA9IGdl
dF9pcF9pZCgkY29uZmlnLCAkaXAsICRub2Vycik7Cj4+ICsgICAgaWYgKCFkZWZpbmVkKCRpcF9p
ZCkpIHsKPj4gKyAgICAgICAgd2FybigiY291bGQgbm90IGZpbmQgdGhlIGlwICRpcCBpbiBuYXV0
b2JvdFxuIik7Cj4+ICsgICAgICAgIHJldHVybjsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBldmFs
IHsgbmF1dG9ib3RfYXBpX3JlcXVlc3QoJGNvbmZpZywgIkRFTEVURSIsICIvaXBhbS9pcC1hZGRy
ZXNzZXMvJGlwX2lkLyIpOyB9Owo+PiArICAgIGlmICgkQCkgewo+PiArICAgICAgICByZXR1cm4g
aWYgJG5vZXJyOwo+PiArICAgICAgICBkaWUgImVycm9yIGRlbGV0aW5nIGlwICRpcCA6ICRAXG4i
Owo+PiArICAgIH0KPj4gKwo+PiArICAgIHJldHVybiAxOwo+PiArfQo+PiArCj4+ICtzdWIgZW1w
dHlfc3VibmV0IHsKPiBzb3VuZHMgbW9yZSBsaWtlIGEgY2hlY2sgaWYgdGhlIHN1Ym5ldCBpcyBl
bXB0eSwgbWF5YmUKPiBkZWxldGVfaXBzX2Zyb21fc3VibmV0IG9yIHNvbWV0aGluZyBpcyBiZXR0
ZXI/CkFncmVlCj4KPj4gKyAgICBteSAoJGNsYXNzLCAkY29uZmlnLCAkc3VibmV0aWQsICRzdWJu
ZXQsICRzdWJuZXR1dWlkLCAkbm9lcnIpID0gQF87Cj4+ICsKPj4gKyAgICBteSAkbmFtZXNwYWNl
ID0gJGNvbmZpZy0+e25hbWVzcGFjZX07Cj4+ICsKPj4gKyAgICBteSAkcmVzcG9uc2UgPSBldmFs
IHsKPj4gKyAgICAgICAgcmV0dXJuIG5hdXRvYm90X2FwaV9yZXF1ZXN0KAo+PiArICAgICAgICAg
ICAgJGNvbmZpZywKPj4gKyAgICAgICAgICAgICJHRVQiLAo+PiArICAgICAgICAgICAgIi9pcGFt
L2lwLWFkZHJlc3Nlcy8/bmFtZXNwYWNlPSRuYW1lc3BhY2UmcGFyZW50PSRzdWJuZXR1dWlkIiwK
Pj4gKyAgICAgICAgKTsKPj4gKyAgICB9Owo+PiArICAgIGlmICgkQCkgewo+PiArICAgICAgICBy
ZXR1cm4gaWYgJG5vZXJyOwo+PiArICAgICAgICBkaWUgImNvdWxkIG5vdCBmaW5kIHRoZSBzdWJu
ZXQgJHN1Ym5ldCBpbiBuYXV0b2JvdDogJEBcbiI7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgZm9y
IG15ICRpcCAoQHsgJHJlc3BvbnNlLT57cmVzdWx0c30gfSkgewo+PiArICAgICAgICBkZWxfaXAo
JGNsYXNzLCAkY29uZmlnLCB1bmRlZiwgdW5kZWYsICRpcC0+e2hvc3R9LCAkbm9lcnIpOwo+PiAr
ICAgIH0KPj4gKwo+PiArICAgIHJldHVybiAxOwo+PiArfQo+PiArCj4+ICtzdWIgc3VibmV0X2lz
X2RlbGV0YWJsZSB7Cj4+ICsgICAgbXkgKCRjb25maWcsICRzdWJuZXRpZCwgJHN1Ym5ldCwgJHN1
Ym5ldHV1aWQsICRub2VycikgPSBAXzsKPj4gKwo+PiArICAgIG15ICRuYW1lc3BhY2UgPSAkY29u
ZmlnLT57bmFtZXNwYWNlfTsKPj4gKwo+PiArICAgIG15ICRyZXNwb25zZSA9IGV2YWwgewo+PiAr
ICAgICAgICByZXR1cm4gbmF1dG9ib3RfYXBpX3JlcXVlc3QoCj4+ICsgICAgICAgICAgICAkY29u
ZmlnLAo+PiArICAgICAgICAgICAgIkdFVCIsCj4+ICsgICAgICAgICAgICAiL2lwYW0vaXAtYWRk
cmVzc2VzLz9uYW1lc3BhY2U9JG5hbWVzcGFjZSZwYXJlbnQ9JHN1Ym5ldHV1aWQiLAo+PiArICAg
ICAgICApOwo+PiArICAgIH07Cj4+ICsgICAgaWYgKCRAKSB7Cj4+ICsgICAgICAgIHJldHVybiBp
ZiAkbm9lcnI7Cj4+ICsgICAgICAgIGRpZSAiZXJyb3IgcXVlcnlpbmcgcHJlZml4ICRzdWJuZXQ6
ICRAXG4iOwo+PiArICAgIH0KPj4gKyAgICBteSAkbl9pcHMgPSBzY2FsYXIgJHJlc3BvbnNlLT57
cmVzdWx0c30tPkAqOwo+PiArCj4+ICsgICAgIyBsZWFzdCBjb3N0bHkgY2hlY2sgb3BlcmF0aW9u
IDFzdAo+PiArICAgIHJldHVybiAxIGlmICgkbl9pcHMgPT0gMCk7Cj4+ICsKPj4gKyAgICBmb3Ig
bXkgJGlwICh2YWx1ZXMgJHJlc3BvbnNlLT57cmVzdWx0c30tPkAqKSB7Cj4+ICsgICAgICAgIGlm
ICghaXNfaXBfZ2F0ZXdheSgkY29uZmlnLCAkaXAtPntob3N0fSwgJG5vZXJyKSkgewo+IE1heWJl
IHdlIGNvdWxkIHNpbXBseSBjaGVjayB0aGlzIGJ5IGNvbXBhcmluZyB3aXRoIHRoZSBzdWJuZXQK
PiBjb25maWd1cmF0aW9uIGluc3RlYWQgb2YgcXVlcnlpbmcgbmF1dG9ib3QgZm9yIGV2ZXJ5IElQ
Pwp5ZXMgZ29vZCBwb2ludC4KPgo+PiArICAgICAgICAgICAgIyBzb21lIHJlbWFpbmluZyBJUCBp
cyBub3QgYSBnYXRld2F5IHNvIHdlIGNhbid0IGRlbGV0ZSB0aGUgc3VibmV0Cj4+ICsgICAgICAg
ICAgICByZXR1cm4gMDsKPj4gKyAgICAgICAgfQo+PiArICAgIH0KPj4gKyAgICAjYWxsIHJlbWFp
bmluZyBJUHMgYXJlIGdhdGV3YXlzCj4+ICsgICAgcmV0dXJuIDE7Cj4+ICt9Cj4+ICsKPj4gK3N1
YiB2ZXJpZnlfYXBpIHsKPj4gKyAgICBteSAoJGNsYXNzLCAkY29uZmlnKSA9IEBfOwo+PiArCj4+
ICsgICAgbXkgJG5hbWVzcGFjZSA9ICRjb25maWctPntuYW1lc3BhY2V9Owo+PiArCj4+ICsgICAg
IyBjaGVjayBpZiB0aGUgbmFtZXNwYWNlIGFuZCB0aGUgc3RhdHVzICJBY3RpdmUiIGV4aXN0Cj4+
ICsgICAgZXZhbCB7Cj4+ICsgICAgICAgIGdldF9uYW1lc3BhY2VfaWQoJGNvbmZpZywgJG5hbWVz
cGFjZSkgLy8gZGllICJuYW1lc3BhY2UgJG5hbWVzcGFjZSBkb2VzIG5vdCBleGlzdCI7Cj4+ICsg
ICAgICAgIGdldF9zdGF0dXNfaWQoJGNvbmZpZywgZGVmYXVsdF9pcF9zdGF0dXMoKSkKPj4gKyAg
ICAgICAgICAgIC8vIGRpZSAidGhlIHN0YXR1cyAiIC4gZGVmYXVsdF9pcF9zdGF0dXMoKSAuICIg
ZG9lcyBub3QgZXhpc3QiOwo+PiArICAgIH07Cj4+ICsgICAgaWYgKCRAKSB7Cj4+ICsgICAgICAg
IGRpZSAiY291bGQgbm90IHVzZSBuYXV0b2JvdCBhcGk6ICRAXG4iOwo+PiArICAgIH0KPj4gK30K
Pj4gKwo+PiArc3ViIGdldF9pcHNfZnJvbV9tYWMgewo+PiArICAgIG15ICgkY2xhc3MsICRjb25m
aWcsICRtYWMsICR6b25lKSA9IEBfOwo+PiArCj4+ICsgICAgbXkgJGlwNCA9IHVuZGVmOwo+PiAr
ICAgIG15ICRpcDYgPSB1bmRlZjsKPj4gKwo+PiArICAgIG15ICRkYXRhID0gZXZhbCB7IG5hdXRv
Ym90X2FwaV9yZXF1ZXN0KCRjb25maWcsICJHRVQiLCAiL2lwYW0vaXAtYWRkcmVzc2VzLz9xPSRt
YWMiKTsgfTsKPj4gKyAgICBpZiAoJEApIHsKPj4gKyAgICAgICAgZGllICJjb3VsZCBub3QgcXVl
cnkgaXAgYWRkcmVzcyBlbnRyeSBmb3IgbWFjICRtYWM6ICRAIjsKPj4gKyAgICB9Cj4+ICsKPj4g
KyAgICBmb3IgbXkgJGlwIChAeyAkZGF0YS0+e3Jlc3VsdHN9IH0pIHsKPj4gKyAgICAgICAgaWYg
KCRpcC0+e2lwX3ZlcnNpb259ID09IDQgJiYgISRpcDQpIHsKPj4gKyAgICAgICAgICAgICgkaXA0
LCB1bmRlZikgPSBzcGxpdCgvXC8vLCAkaXAtPnthZGRyZXNzfSk7Cj4+ICsgICAgICAgIH0KPj4g
Kwo+PiArICAgICAgICBpZiAoJGlwLT57aXBfdmVyc2lvbn0gPT0gNiAmJiAhJGlwNikgewo+PiAr
ICAgICAgICAgICAgKCRpcDYsIHVuZGVmKSA9IHNwbGl0KC9cLy8sICRpcC0+e2FkZHJlc3N9KTsK
Pj4gKyAgICAgICAgfQo+PiArICAgIH0KPj4gKwo+PiArICAgIHJldHVybiAoJGlwNCwgJGlwNik7
Cj4+ICt9Cj4+ICsKPj4gK3N1YiBvbl91cGRhdGVfaG9vayB7Cj4+ICsgICAgbXkgKCRjbGFzcywg
JGNvbmZpZykgPSBAXzsKPj4gKwo+PiArICAgIFBWRTo6TmV0d29yazo6U0ROOjpJcGFtczo6TmF1
dG9ib3RQbHVnaW46OnZlcmlmeV9hcGkoJGNsYXNzLCAkY29uZmlnKTsKPj4gK30KPj4gKwo+PiAr
c3ViIGdldF9pcF9pZCB7Cj4gZmlsdGVyIGZvciBuYW1lc3BhY2UgYmVsb3cKZ29vZCBjYXRjaCwg
YWRkZWQgaXQgdG8gdGhlIG90aGVyIHNwb3RzIHlvdSBtZW50aW9uZWQgYW5kIGFsc2/CoCAKZ2V0
X2lwc19mcm9tX21hYyBhcyBpdCB3YXMgbWlzc2luZyB0aGVyZSBhcyB3ZWxsLgoKPj4gKyAgICBt
eSAoJGNvbmZpZywgJGlwLCAkbm9lcnIpID0gQF87Cj4+ICsKPj4gKyAgICBteSAkcmVzdWx0ID0K
Pj4gKyAgICAgICAgZXZhbCB7IHJldHVybiBuYXV0b2JvdF9hcGlfcmVxdWVzdCgkY29uZmlnLCAi
R0VUIiwgIi9pcGFtL2lwLWFkZHJlc3Nlcy8/YWRkcmVzcz0kaXAiKTsgfTsKPj4gKyAgICBpZiAo
JEApIHsKPj4gKyAgICAgICAgcmV0dXJuIGlmICRub2VycjsKPj4gKyAgICAgICAgZGllICJlcnJv
ciB3aGlsZSBxdWVyeWluZyBmb3IgaXAgJGlwIGlkOiAkQFxuIjsKPj4gKyAgICB9Cj4+ICsKPj4g
KyAgICBteSAkZGF0YSA9IEB7ICRyZXN1bHQtPntyZXN1bHRzfSB9WzBdOwo+PiArICAgIHJldHVy
biAkZGF0YS0+e2lkfTsKPj4gK30KPj4gKwo+PiArc3ViIGdldF9wcmVmaXhfaWQgewo+IGZpbHRl
ciBmb3IgbmFtZXNwYWNlIGJlbG93Cj4KPj4gKyAgICBteSAoJGNvbmZpZywgJGNpZHIsICRub2Vy
cikgPSBAXzsKPj4gKwo+PiArICAgIG15ICRyZXN1bHQgPQo+PiArICAgICAgICBldmFsIHsgcmV0
dXJuIG5hdXRvYm90X2FwaV9yZXF1ZXN0KCRjb25maWcsICJHRVQiLCAiL2lwYW0vcHJlZml4ZXMv
P3ByZWZpeD0kY2lkciIpOyB9Owo+PiArICAgIGlmICgkQCkgewo+PiArICAgICAgICByZXR1cm4g
aWYgJG5vZXJyOwo+PiArICAgICAgICBkaWUgImVycm9yIHdoaWxlIHF1ZXJ5aW5nIGZvciBjaWRy
ICRjaWRyIHByZWZpeCBpZDogJEBcbiI7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgbXkgJGRhdGEg
PSBAeyAkcmVzdWx0LT57cmVzdWx0c30gfVswXTsKPj4gKyAgICByZXR1cm4gJGRhdGEtPntpZH07
Cj4+ICt9Cj4+ICsKPj4gK3N1YiBnZXRfbmFtZXNwYWNlX2lkIHsKPj4gKyAgICBteSAoJGNvbmZp
ZywgJG5hbWVzcGFjZSwgJG5vZXJyKSA9IEBfOwo+PiArCj4+ICsgICAgbXkgJHJlc3VsdCA9Cj4+
ICsgICAgICAgIGV2YWwgeyByZXR1cm4gbmF1dG9ib3RfYXBpX3JlcXVlc3QoJGNvbmZpZywgIkdF
VCIsICIvaXBhbS9uYW1lc3BhY2VzLz9uYW1lPSRuYW1lc3BhY2UiKTsgfTsKPj4gKyAgICBpZiAo
JEApIHsKPj4gKyAgICAgICAgcmV0dXJuIGlmICRub2VycjsKPj4gKyAgICAgICAgZGllICJlcnJv
ciB3aGlsZSBxdWVyeWluZyBmb3IgbmFtZXNwYWNlICRuYW1lc3BhY2UgaWQ6ICRAXG4iOwo+PiAr
ICAgIH0KPj4gKwo+PiArICAgIG15ICRkYXRhID0gQHsgJHJlc3VsdC0+e3Jlc3VsdHN9IH1bMF07
Cj4+ICsgICAgcmV0dXJuICRkYXRhLT57aWR9Owo+PiArfQo+PiArCj4+ICtzdWIgZ2V0X3N0YXR1
c19pZCB7Cj4+ICsgICAgbXkgKCRjb25maWcsICRzdGF0dXMsICRub2VycikgPSBAXzsKPj4gKwo+
PiArICAgIG15ICRyZXN1bHQgPQo+PiArICAgICAgICBldmFsIHsgcmV0dXJuIG5hdXRvYm90X2Fw
aV9yZXF1ZXN0KCRjb25maWcsICJHRVQiLCAiL2V4dHJhcy9zdGF0dXNlcy8/bmFtZT0kc3RhdHVz
Iik7IH07Cj4+ICsgICAgaWYgKCRAKSB7Cj4+ICsgICAgICAgIHJldHVybiBpZiAkbm9lcnI7Cj4+
ICsgICAgICAgIGRpZSAiZXJyb3Igd2hpbGUgcXVlcnlpbmcgZm9yIHN0YXR1cyAkc3RhdHVzIGlk
OiAkQFxuIjsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBteSAkZGF0YSA9IEB7ICRyZXN1bHQtPnty
ZXN1bHRzfSB9WzBdOwo+PiArICAgIHJldHVybiAkZGF0YS0+e2lkfTsKPj4gK30KPj4gKwo+PiAr
c3ViIGlzX2lwX2dhdGV3YXkgewo+IGZpbHRlciBmb3IgbmFtZXNwYWNlIGJlbG93Cj4KPj4gKyAg
ICBteSAoJGNvbmZpZywgJGlwLCAkbm9lcnIpID0gQF87Cj4+ICsKPj4gKyAgICBteSAkcmVzdWx0
ID0KPj4gKyAgICAgICAgZXZhbCB7IHJldHVybiBuYXV0b2JvdF9hcGlfcmVxdWVzdCgkY29uZmln
LCAiR0VUIiwgIi9pcGFtL2lwLWFkZHJlc3Nlcy8/YWRkcmVzcz0kaXAiKTsgfTsKPj4gKyAgICBp
ZiAoJEApIHsKPj4gKyAgICAgICAgcmV0dXJuIGlmICRub2VycjsKPj4gKyAgICAgICAgZGllICJl
cnJvciB3aGlsZSBjaGVja2luZyBpZiAkaXAgaXMgYSBnYXRld2F5OiAkQFxuIjsKPj4gKyAgICB9
Cj4+ICsKPj4gKyAgICBteSAkZGF0YSA9IEB7ICRyZXN1bHQtPntyZXN1bHRzfSB9WzBdOwo+PiAr
ICAgIHJldHVybiAkZGF0YS0+e2Rlc2NyaXB0aW9ufSBlcSAnZ2F0ZXdheSc7Cj4+ICt9Cj4+ICsK
Pj4gKzE7CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
cHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6
Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCg==