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 0926C1FF163
	for <inbox@lore.proxmox.com>; Thu, 24 Oct 2024 08:41:59 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 87824845C;
	Thu, 24 Oct 2024 08:42:37 +0200 (CEST)
Date: Thu, 24 Oct 2024 08:42:01 +0200 (CEST)
From: =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com>
To: "DERUMIER, Alexandre" <alexandre.derumier@groupe-cyllene.com>,
 "pve-devel@lists.proxmox.com" <pve-devel@lists.proxmox.com>
Message-ID: <257159672.1161.1729752121142@webmail.proxmox.com>
In-Reply-To: <f066c13a25b30e3107a9dec8091b456ce2852293.camel@groupe-cyllene.com>
References: <20240930113153.2896648-1-alexandre.derumier@groupe-cyllene.com>
 <mailman.140.1727695926.332.pve-devel@lists.proxmox.com>
 <1350338065.715.1729678366532@webmail.proxmox.com>
 <f066c13a25b30e3107a9dec8091b456ce2852293.camel@groupe-cyllene.com>
MIME-Version: 1.0
X-Priority: 3
Importance: Normal
X-Mailer: Open-Xchange Mailer v7.10.6-Rev69
X-Originating-Client: open-xchange-appsuite
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.048 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
 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See
 http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more
 information. [linuxfound.org, cyllene.com, plugin.pm, dirplugin.pm,
 igalia.com]
Subject: Re: [pve-devel] [PATCH v2 pve-storage 1/2] add external snasphot
 support
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>

Cj4gREVSVU1JRVIsIEFsZXhhbmRyZSA8YWxleGFuZHJlLmRlcnVtaWVyQGdyb3VwZS1jeWxsZW5l
LmNvbT4gaGF0IGFtIDIzLjEwLjIwMjQgMTQ6NTkgQ0VTVCBnZXNjaHJpZWJlbjoKPiAKPiAgCj4g
SGkgRmFiaWFuLAo+IAo+IHRoYW5rcyBmb3IgdGhlIHJldmlldyAhCj4gCj4gPj4tLS0tLS0tLSBN
ZXNzYWdlIGluaXRpYWwgLS0tLS0tLS0KPiA+PkRlOiBGYWJpYW4gR3LDvG5iaWNobGVyIDxmLmdy
dWVuYmljaGxlckBwcm94bW94LmNvbT4KPiA+PsOAOiBQcm94bW94IFZFIGRldmVsb3BtZW50IGRp
c2N1c3Npb24gPHB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbT4KPiA+PkNjOiBBbGV4YW5kcmUg
RGVydW1pZXIgPGFsZXhhbmRyZS5kZXJ1bWllckBncm91cGUtY3lsbGVuZS5jb20+Cj4gPj5PYmpl
dDogUmU6IFtwdmUtZGV2ZWxdIFtQQVRDSCB2MiBwdmUtc3RvcmFnZSAxLzJdIGFkZCBleHRlcm5h
bAo+ID4+c25hc3Bob3Qgc3VwcG9ydAo+ID4+RGF0ZTogMjMvMTAvMjAyNCAxMjoxMjo0Ngo+ID4+
Cj4gPj5zb21lIGhpZ2ggbGV2ZWwgY29tbWVudHM6Cj4gPj4KPiA+PkkgYW0gbm90IHN1cmUgaG93
IG11Y2ggd2UgZ2FpbiBoZXJlIHdpdGggdGhlIHJhdyBzdXBwb3J0Pwo+IAo+IFRoZXkgYXJlIHJl
YWxseSBxY293MiBvdmVyaGVhZCwgbW9zdGx5IHdpdGggYmlnIGRpc2suCj4gYXMgZm9yIGdvb2Qg
cGVyZm9ybWFuY2UsIHRoZSBxY293MiBsMi1jYWNoZS1zaXplIG5lZWQgdG8gYmUga2VlcGVkIGlu
Cj4gbWVtb3J5IChhbmQgaXQncyAxTUIgYnkgZGlzaykKPiBodHRwczovL2V2ZW50cy5zdGF0aWMu
bGludXhmb3VuZC5vcmcvc2l0ZXMvZXZlbnRzL2ZpbGVzL3NsaWRlcy9rdm0tZm9ydW0tMjAxNy1z
bGlkZXMucGRmCj4gCj4gSG9wZWZ1bGx5LCB0aGV5IGFyZSBpbXByb3ZtZW50cyB3aXRoIHRoZSAi
bmV3IiBzdWItY2x1c3RlciBmZWF0dXJlCj4gaHR0cHM6Ly9wZW9wbGUuaWdhbGlhLmNvbS9iZXJ0
by9maWxlcy9rdm0tZm9ydW0tMjAyMC1zbGlkZXMucGRmCj4gSSdtIGFscmVhZHkgdXNpbmcgaXQg
YXQgc25hcHNob3QgY3JlYXRlLCBidXQgSSB0aGluayB3ZSBzaG91bGQgYWxzbyB1c2UKPiBpdCBm
b3IgbWFpbiBxY293MiB2b2x1bWUuCj4gCj4gCj4gQnV0IGV2ZW4gd2l0aCB0aGF0LCB5b3UgY2Fu
IHN0aWxsIGhhdmUgcGVyZm9ybWFuY2UgaW1wYWN0Lgo+IFNvIHllcywgSSB0aGluayB0aGV5IGFy
ZSByZWFsbHkgdXNlY2FzZSBmb3Igd29ya2xvYWQgd2hlbiB5b3Ugb25seSBuZWVkCj4gc25hcHNo
b3QgdGltZSB0byB0aW1lIChiZWZvcmUgYW4gdXBncmFkZSBmb3IgZXhhbXBsZSksIGJ1dCBtYXgK
PiBwZXJmb3JtYW5jZSB3aXRoIG5vIHNuYXBob3QgZXhpc3QuCgpteSBtYWluIHBvaW50IGhlcmUg
aXMgLSBhbGwgb3RoZXIgc3RvcmFnZXMgdHJlYXQgc25hcHNob3RzIGFzICJjaGVhcCIuIGlmIHlv
dSBjb21iaW5lIHJhdytxY293MiBzbmFwc2hvdCBvdmVybGF5cywgc3VkZGVubHkgcGVyZm9ybWFu
Y2Ugd2lsbCBnZXQgd29yc2UgaWYgeW91IGtlZXAgYSBzbmFwc2hvdCBhcm91bmQgZm9yIHdoYXRl
dmVyIHJlYXNvbi4uIAogCj4gPj4gaXQncyBhIGJpdCBjb25mdXNpbmcgdG8gaGF2ZSBhIHZvbGlk
IGVuZGluZyB3aXRoIHJhdywgd2l0aCB0aGUKPiA+PmN1cnJlbnQgdm9sdW1lIGFuZCBhbGwgYnV0
IHRoZSBmaXJzdCBzbmFwc2hvdCBhY3R1YWxseSBiZWluZyBzdG9yZWQKPiA+PmluIHFjb3cyIGZp
bGVzLCB3aXRoIHRoZSByYXcgZmlsZSBiZWluZyB0aGUgIm9sZGVzdCIgc25hcHNob3QgaW4gdGhl
Cj4gPj5jaGFpbi4uCgo+IGlmIGl0J3MgdG9vIGNvbmZ1c2luZywgd2UgY291bGQgdXNlIGZvciBl
eGFtcGxlIGFuIC5zbmFwIGV4dGVuc2lvbi4KPiAoYXMgd2Uga25vd24gdGhhdCBpdCdzIHFjb3cy
IGJlaGluZCkKCkkgaGF2ZW4ndCB0aG91Z2h0IHlldCBhYm91dCBob3cgdG8gZW5jb2RlIHRoZSBz
bmFwc2hvdCBuYW1lIGludG8gdGhlIHNuYXBzaG90IGZpbGUgbmFtZSwgYnV0IHllYWgsIG1heWJl
IHNvbWV0aGluZyBsaWtlICB0aGF0IHdvdWxkIGJlIGdvb2QuIG9yIG1heWJlIHNuYXAtVk1JRC1k
aXNrLURJU0sucWNvdzIgPwoKPiBpZiBwb3NzaWJsZSwgSSdkIGJlIG11Y2ggaGFwcGllciB3aXRo
IHRoZSBzbmFwc2hvdCBuYW1lIGluIHRoZSBzbmFwc2hvdAo+IGZpbGUgYmVpbmcgYSAxOjEgbWF0
Y2gsIHNlZSBjb21tZW50cyBpbmxpbmUKPiAKPiA+Pi0gbWFrZXMgaXQgYSBsb3QgZWFzaWVyIHRv
IHVuZGVyc3RhbmQgKGFkbWluIHdhbnRzIHRvIG1hbnVhbGx5IHJlbW92ZQo+ID4+c25hcHNob3Qg
ImZvbyIsIGlmICJmb28iIHdhcyB0aGUgbGFzdCBzbmFwc2hvdCB0aGVuIHJpZ2h0IG5vdyB0aGUK
PiA+PnZvbHVtZSBjYWxsZWQgImZvbyIgaXMgYWN0dWFsbHkgdGhlIGN1cnJlbnQgY29udGVudHMh
KQo+IAo+IFRoaXMgcGFydCBpcyByZWFsbHkgZGlmZmljdWx0LCBiZWNhdXNlIHlvdSBjYW4ndCBr
bm93biBpbiBhZHZhbmNlIHRoZQo+IG5hbWUgb2YgdGhlIHNuYXBzaG90IHlvdSdsbCB0YWtlIGlu
IHRoZSBmdXR1cmUuIFRoZSBvbmx5IHdheSBjb3VsZCBiZQo+IHRvIGNyZWF0ZSBhICJjdXJyZW50
IiB2b2x1bWUgLCAgcmVuYW1lIGl0IHdoZW4geW91IHRvb2sgYW5vdGhlcgo+IHNuYXNwaG90IChJ
J20gbm90IHN1cmUgaXQncyBwb3NzaWJsZSB0byBkbyBpdCBsaXZlLAo+IGFuZCB0aGlzIGNvdWxk
IGJyZWFrIGxpbmsgY2hhaW4gdG9vKQo+IAo+IEFsc28sIEkgZG9uJ3Qga25vd24gaG93IHRvIG1h
bmFnZSB0aGUgbWFpbiB2b2x1bWUsIHdoZW4geW91IHRha2UgdGhlCj4gZmlyc3Qgc25hcHNob3Qg
PyB3ZSBzaG91bGQgcmVuYW1lIGl0IHRvby4KCkkgbWVhbiwgaWYgd2UgZG9uJ3QgYWxsb3cgLnJh
dyBmaWxlcyB0byBiZSBzbmFwc2hvdHRlZCB0aGVuIHRoaXMgcHJvYmxlbSBkb2Vzbid0IGV4aXN0
IDspCgo+IHNvICJ2bS1kaXNrLTEwMC1kaXNrLTAucmF3fHFjb3cyIiAgLCBiZWNvbWUgInZtLWRp
c2stMTAwLWRpc2stMC0KPiBzbmFwMS4ocmF3fHFjb3cyKSIgKyBuZXcgInZtLWRpc2stMTAwLWRp
c2stMC1jdXJyZW50LnFjb3cyIiA/Cgp0aGUgdm9saWQgY2hhbmdpbmcgb24gc25hcHNob3Qgc2Vl
bXMgbGlrZSBpdCB3b3VsZCByZXF1aXJlIGEgbG90IG9mIGFkYXB0aW9uLi4gT1RPSCwgdGhlIHZv
bGlkIGNvbnRhaW5pbmcgYSB3cm9uZyBmb3JtYXQgbWlnaHQgYWxzbyBicmVhayB0aGluZ3MuCgo+
IEknbGwgdHJ5IHRvIGRvIHRlc3QgYWdhaW4gdG8gc2VlIHdoYXQgaXMgcG9zc2libGUuCj4gCj4g
Cj4gCj4gCj4gPj4tIG1lYW5zIHdlIGRvbid0IGhhdmUgdG8gZG8gbG9va3VwcyB2aWEgdGhlIGZ1
bGwgc25hcHNob3QgbGlzdCBhbGwKPiA+PnRoZSB0aW1lIChlLmcuLCBpZiBJIHdhbnQgdG8gZG8g
YSBmdWxsIGNsb25lIGZyb20gYSBzbmFwc2hvdCAiZm9vIiwgSQo+ID4+Y2FuIGp1c3QgcGFzcyB0
aGUgc25hcC1mb28gdm9sdW1lIHRvIHFlbXUtaW1nKQo+IAo+IG9rIGdvdCBpdAo+IAo+IAo+IAo+
ID4+dGhlIG5hbWluZyBzY2hlbWUgZm9yIHNuYXBzaG90cyBuZWVkcyB0byBiZSBhZGFwdGVkIHRv
IG5vdCBjbGFzaCB3aXRoCj4gPj5yZWd1bGFyIHZvbHVtZXM6Cj4gCj4gPj4kIHB2ZXNtIGFsbG9j
IGV4dHNuYXAgMTMxMzE0IHZtLTEzMTMxNC1kaXNrLWZvb2Jhci5xY293MiAyRwo+ID4+Rm9ybWF0
dGluZyAnL21udC9wdmUvZXh0NC9leHRzbmFwL2ltYWdlcy8xMzEzMTQvdm0tMTMxMzE0LWRpc2st
Cj4gPj5mb29iYXIucWNvdzInLCBmbXQ9cWNvdzIgY2x1c3Rlcl9zaXplPTY1NTM2IGV4dGVuZGVk
X2wyPW9mZgo+ID4+cHJlYWxsb2NhdGlvbj1vZmYgY29tcHJlc3Npb25fdHlwZT16bGliIHNpemU9
MjE0NzQ4MzY0OAo+ID4+bGF6eV9yZWZjb3VudHM9b2ZmIHJlZmNvdW50X2JpdHM9MTYKPiA+PnN1
Y2Nlc3NmdWxseSBjcmVhdGVkICdleHRzbmFwOjEzMTMxNC92bS0xMzEzMTQtZGlzay1mb29iYXIu
cWNvdzInCj4gPj4kIHFtIHJlc2NhbiAtLXZtaWQgMTMxMzE0Cj4gPj5yZXNjYW4gdm9sdW1lcy4u
Lgo+ID4+Y2FuJ3QgcGFyc2Ugc25hcG5hbWUgZnJvbSBwYXRoIGF0Cj4gPj4vdXNyL3NoYXJlL3Bl
cmw1L1BWRS9TdG9yYWdlL1BsdWdpbi5wbSBsaW5lIDE5MzQuCj4gCj4gYW55IHByZWZlcmVuY2Ug
Zm9yIG5hbWluZyBzY2hlbWUgPyBmb3IgbHZtIGV4dGVybmFsIHNuYXAsIEkgaGF2ZSB1c2VkCj4g
InZtLTEzMTMxNC1kaXNrLTAtc25hcC08Zm9vYmFyPiI7CgpzZWUgYWJvdmUKCj4gPj5zdG9yYWdl
X21pZ3JhdGUgbmVlZHMgdG8gaGFuZGxlIGV4dGVybmFsIHNuYXBzaG90cywgb3IgYXQgbGVhc3Qg
ZXJyb3IKPiA+Pm91dC7CoAo+IGl0IHNob3VsZCBhbHJlYWR5IHdvcmsuIChJIGhhdmUgdGVzdGVk
IG1vdmVfZGlzaywgYW5kIGxpdmUgbWlncmF0aW9uICsKPiBzdG9yYWdlIG1pZ3JhdGlvbikuIHFl
bXVfaW1nX2NvbnZlcnQgb2ZmbGluZSBhbmQgcWVtdSBibG9jayBqb2IgZm9yCj4gbGl2ZS4KCmJ1
dCBkb24ndCBhbGwgb2YgdGhvc2UgbG9zZSB0aGUgc25hcHNob3RzPyBkaWQgeW91IHRlc3QgaXQg
d2l0aCBzbmFwc2hvdHMgYW5kIHJvbGxiYWNrIGFmdGVyd2FyZHM/Cgo+ID4+SSBoYXZlbid0IHRl
c3RlZCB0aGF0IHBhcnQgb3IgbGlua2VkIGNsb25lcyBvciBhIGxvdCBvZiBvdGhlcgo+ID4+YWR2
YW5jZWQgcmVsYXRlZCBhY3Rpb25zIGF0IGFsbCA7KQo+IAo+IEZvciBsaW5rZWQgY2xvbmUsIHdl
IGNhbid0IGhhdmUgYSBiYXNlIGltYWdlIHdpdGggc25hcHNob3RzIChvdGhlciB0aGFuCj4gX2Jh
c2VfKS4gc28gSXQnbGwgYmUgc2FmZS4KCmFjawoKPiA+IEFsZXhhbmRyZSBEZXJ1bWllciB2aWEg
cHZlLWRldmVsIDxwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20+IGhhdCBhbQo+ID4gMzAuMDku
MjAyNCAxMzozMSBDRVNUIGdlc2NocmllYmVuOgo+ID4gU2lnbmVkLW9mZi1ieTogQWxleGFuZHJl
IERlcnVtaWVyIDxhbGV4YW5kcmUuZGVydW1pZXJAZ3JvdXBlLQo+ID4gY3lsbGVuZS5jb20+Cj4g
PiAtLS0KPiA+IMKgc3JjL1BWRS9TdG9yYWdlL0RpclBsdWdpbi5wbSB8wqDCoCAxICsKPiA+IMKg
c3JjL1BWRS9TdG9yYWdlL1BsdWdpbi5wbcKgwqDCoCB8IDIyNSArKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrLS0KPiA+IC0tCj4gPiDCoDIgZmlsZXMgY2hhbmdlZCwgMjAxIGluc2VydGlv
bnMoKyksIDI1IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9TdG9y
YWdlL0RpclBsdWdpbi5wbQo+ID4gYi9zcmMvUFZFL1N0b3JhZ2UvRGlyUGx1Z2luLnBtCj4gPiBp
bmRleCAyZWZhOGQ1Li4yYmVmNjczIDEwMDY0NAo+ID4gLS0tIGEvc3JjL1BWRS9TdG9yYWdlL0Rp
clBsdWdpbi5wbQo+ID4gKysrIGIvc3JjL1BWRS9TdG9yYWdlL0RpclBsdWdpbi5wbQo+ID4gQEAg
LTgwLDYgKzgwLDcgQEAgc3ViIG9wdGlvbnMgewo+ID4gwqAgaXNfbW91bnRwb2ludCA9PiB7IG9w
dGlvbmFsID0+IDEgfSwKPiA+IMKgIGJ3bGltaXQgPT4geyBvcHRpb25hbCA9PiAxIH0sCj4gPiDC
oCBwcmVhbGxvY2F0aW9uID0+IHsgb3B0aW9uYWwgPT4gMSB9LAo+ID4gKyBzbmFwZXh0ID0+IHsg
b3B0aW9uYWwgPT4gMSB9LAo+ID4gwqDCoMKgIH07Cj4gPiDCoH0KPiA+IMKgCj4gPiBkaWZmIC0t
Z2l0IGEvc3JjL1BWRS9TdG9yYWdlL1BsdWdpbi5wbSBiL3NyYy9QVkUvU3RvcmFnZS9QbHVnaW4u
cG0KPiA+IGluZGV4IDY0NDQzOTAuLjVlNTE5N2EgMTAwNjQ0Cj4gPiAtLS0gYS9zcmMvUFZFL1N0
b3JhZ2UvUGx1Z2luLnBtCj4gPiArKysgYi9zcmMvUFZFL1N0b3JhZ2UvUGx1Z2luLnBtCj4gPiBA
QCAtMjE0LDYgKzIxNCwxMSBAQCBteSAkZGVmYXVsdERhdGEgPSB7Cj4gPiDCoCDCoMKgwqAgbWF4
aW11bSA9PiA2NTUzNSwKPiA+IMKgIMKgwqDCoCBvcHRpb25hbCA9PiAxLAo+ID4gwqAgfSwKPiA+
ICvCoMKgwqDCoMKgwqDCoCAnc25hcGV4dCcgPT4gewo+ID4gKyDCoMKgwqAgdHlwZSA9PiAnYm9v
bGVhbicsCj4gPiArIMKgwqDCoCBkZXNjcmlwdGlvbiA9PiAnZW5hYmxlIGV4dGVybmFsIHNuYXBz
aG90LicsCj4gPiArIMKgwqDCoCBvcHRpb25hbCA9PiAxLAo+ID4gK8KgwqDCoMKgwqDCoMKgIH0s
Cj4gPiDCoMKgwqDCoCB9LAo+ID4gwqB9Owo+ID4gwqAKPiA+IEBAIC02OTUsNyArNzAwLDcgQEAg
c3ViIGdldF9zdWJkaXIgewo+ID4gwqB9Cj4gPiDCoAo+ID4gwqBzdWIgZmlsZXN5c3RlbV9wYXRo
IHsKPiA+IC3CoMKgwqAgbXkgKCRjbGFzcywgJHNjZmcsICR2b2xuYW1lLCAkc25hcG5hbWUpID0g
QF87Cj4gPiArwqDCoMKgIG15ICgkY2xhc3MsICRzY2ZnLCAkdm9sbmFtZSwgJHNuYXBuYW1lLCAk
Y3VycmVudF9zbmFwKSA9IEBfOwo+IAo+IHNlZSBjb21tZW50IGJlbG93Cj4gCj4gPiDCoAo+ID4g
wqDCoMKgwqAgbXkgKCR2dHlwZSwgJG5hbWUsICR2bWlkLCB1bmRlZiwgdW5kZWYsICRpc0Jhc2Us
ICRmb3JtYXQpID0KPiA+IMKgICRjbGFzcy0+cGFyc2Vfdm9sbmFtZSgkdm9sbmFtZSk7Cj4gPiBA
QCAtNzAzLDcgKzcwOCw3IEBAIHN1YiBmaWxlc3lzdGVtX3BhdGggewo+ID4gwqDCoMKgwqAgIyBO
b3RlOiBxY293Mi9xZWQgaGFzIGludGVybmFsIHNuYXBzaG90LCBzbyBwYXRoIGlzIGFsd2F5cwo+
ID4gwqDCoMKgwqAgIyB0aGUgc2FtZSAod2l0aCBvciB3aXRob3V0IHNuYXBzaG90ID0+IHNhbWUg
ZmlsZSkuCj4gPiDCoMKgwqDCoCBkaWUgImNhbid0IHNuYXBzaG90IHRoaXMgaW1hZ2UgZm9ybWF0
XG4iCj4gPiAtIGlmIGRlZmluZWQoJHNuYXBuYW1lKSAmJiAkZm9ybWF0ICF+IG0vXihxY293Mnxx
ZWQpJC87Cj4gPiArIGlmIGRlZmluZWQoJHNuYXBuYW1lKSAmJiAhJHNjZmctPntzbmFwZXh0fSAm
JiAkZm9ybWF0ICF+Cj4gPiBtL14ocWNvdzJ8cWVkKSQvOwo+ID4gwqAKPiA+IMKgwqDCoMKgIG15
ICRkaXIgPSAkY2xhc3MtPmdldF9zdWJkaXIoJHNjZmcsICR2dHlwZSk7Cj4gPiDCoAo+ID4gQEAg
LTcxMSwxMyArNzE2LDIyIEBAIHN1YiBmaWxlc3lzdGVtX3BhdGggewo+ID4gwqAKPiA+IMKgwqDC
oMKgIG15ICRwYXRoID0gIiRkaXIvJG5hbWUiOwo+ID4gwqAKPiA+ICvCoMKgwqAgaWYoJHNjZmct
PntzbmFwZXh0fSkgewo+ID4gKyBteSAkc25hcHBhdGggPSBnZXRfc25hcF9wYXRoKCRwYXRoLCAk
c25hcG5hbWUpOwo+ID4gKyBpZigkc25hcG5hbWUpIHsKPiA+ICsgwqDCoMKgICRwYXRoID0gJHNu
YXBwYXRoOwo+ID4gKyB9IGVsc2lmICgkY3VycmVudF9zbmFwKSB7Cj4gPiArIMKgwqDCoCAkcGF0
aCA9ICRjdXJyZW50X3NuYXAtPntmaWxlfTsKPiA+ICsgfQo+ID4gK8KgwqDCoCB9Cj4gCj4gc2Vl
IGNvbW1lbnRlIGJlbG93Cj4gCj4gPiDCoMKgwqDCoCByZXR1cm4gd2FudGFycmF5ID8gKCRwYXRo
LCAkdm1pZCwgJHZ0eXBlKSA6ICRwYXRoOwo+ID4gwqB9Cj4gPiDCoAo+ID4gwqBzdWIgcGF0aCB7
Cj4gPiDCoMKgwqDCoCBteSAoJGNsYXNzLCAkc2NmZywgJHZvbG5hbWUsICRzdG9yZWlkLCAkc25h
cG5hbWUpID0gQF87Cj4gPiDCoAo+ID4gLcKgwqDCoCByZXR1cm4gJGNsYXNzLT5maWxlc3lzdGVt
X3BhdGgoJHNjZmcsICR2b2xuYW1lLCAkc25hcG5hbWUpOwo+ID4gK8KgwqDCoCBteSAkY3VycmVu
dF9zbmFwc2hvdCA9ICRjbGFzcy0+Z2V0X2N1cnJlbnRfc25hcHNob3QoJHNjZmcsCj4gPiAkc3Rv
cmVpZCwgJHZvbG5hbWUpOwo+IAo+ID4+dGhpcyBpcyBwcmV0dHkgZXhwZW5zaXZlLCBhbmQgd291
bGQgb25seSBiZSBuZWVkZWQgaWYgJHNuYXBuYW1lIGlzCj4gPj5ub3Qgc2V0Li4KPiAKPiBUaGUg
bWFpbiBwcm9ibGVtIGlzIHdoZW4geW91IHN0YXJ0IGEgdm0gb24gYSBzcGVjaWZpYyBzbmFzcGhv
dCwKPiB3ZSBkb24ndCBzZW5kIHRoZSAkc25hcG5hbWUgcGFyYW0uCj4gCj4gT25lIHdheSBjb3Vs
ZCBiZSB0aGF0IHFlbXUtc2VydmVyIGNoZWNrIHRoZSBjdXJyZW50IHNuYXBzaG90IGZyb20KPiBj
b25maWcgd2hlbiBkb2luZyBzcGVjaWZpYyBhY3Rpb24gbGlrZSBzdGFydC4KCmlmIHdlIG1hbmFn
ZSB0byBmaW5kIGEgd2F5IHRvIG1ha2UgdGhlIHZvbGlkIGFsd2F5cyBwb2ludCBhdCB0aGUgdG9w
IG92ZXJsYXksIHRoZW4gdGhhdCB3b3VsZG4ndCBiZSBuZWVkZWQuLgoKPiA+ICvCoMKgwqAgcmV0
dXJuICRjbGFzcy0+ZmlsZXN5c3RlbV9wYXRoKCRzY2ZnLCAkdm9sbmFtZSwgJHNuYXBuYW1lLAo+
ID4gJGN1cnJlbnRfc25hcHNob3QpOwo+IAo+ID4+Y291bGRuJ3Qgd2UgYXZvaWQgZXh0ZW5kaW5n
IHRoZSBzaWduYXR1cmUgb2YgZmlsZXN5c3RlbV9wYXRoIGFuZCBqdXN0Cj4gcGFzcyB0aGUgbmFt
ZSBvZiB0aGUgY3VycmVudCBzbmFwc2hvdCBhcyAkc25hcG5hbWU/Cj4gCj4gSSBuZWVkIHRvIHJl
ZG8gdGVzdCwgSSBkb24ndCByZW1lbWJlciB3aHkgSSBoYXZlIHNwbGl0dGVkIHRoZW0sIGJ1dCB5
b3UKPiBhcmUgcmlnaHQsIGl0IHNob3VsZCBiZSBjbGVhbmVyLgo+IAo+ID4gwqB9Cj4gPiDCoAo+
ID4gwqBzdWIgY3JlYXRlX2Jhc2Ugewo+ID4gQEAgLTEwNzQsMTMgKzEwODgsMzEgQEAgc3ViIHZv
bHVtZV9yZXNpemUgewo+ID4gwqBzdWIgdm9sdW1lX3NuYXBzaG90IHsKPiA+IMKgwqDCoMKgIG15
ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUsICRzbmFwKSA9IEBfOwo+ID4gwqAK
PiA+IC3CoMKgwqAgZGllICJjYW4ndCBzbmFwc2hvdCB0aGlzIGltYWdlIGZvcm1hdFxuIiBpZiAk
dm9sbmFtZSAhfgo+ID4gbS9cLihxY293MnxxZWQpJC87Cj4gPiArwqDCoMKgIGRpZSAiY2FuJ3Qg
c25hcHNob3QgdGhpcyBpbWFnZSBmb3JtYXRcbiIgaWYgJHZvbG5hbWUgIX4KPiA+IG0vXC4ocmF3
fHFjb3cyfHFlZCkkLzsKPiA+IMKgCj4gPiAtwqDCoMKgIG15ICRwYXRoID0gJGNsYXNzLT5maWxl
c3lzdGVtX3BhdGgoJHNjZmcsICR2b2xuYW1lKTsKPiA+ICvCoMKgwqAgZGllICJleHRlcm5hbCBz
bmFwc2hvdCBuZWVkIHRvIGJlIGVuYWJsZWQgdG8gc25hcHNob3QgLnJhdwo+ID4gdm9sdW1lc1xu
IiBpZiAhJHNjZmctPntzbmFwZXh0fTsKPiAKPiA+PnRoaXMgY29uZGl0aW9uIGlzIGRlZmluaXRl
bHkgd3JvbmcgLSBpdCBtZWFucyBubyBtb3JlIHNuYXBzaG90dGluZwo+ID4+dW5sZXNzIGV4dGVy
bmFsIHNuYXBzaG90IHN1cHBvcnQgaXMgZW5hYmxlZC4uCj4gCj4gb29wcywgc29ycnkuCj4gCj4g
PiDCoAo+ID4gLcKgwqDCoCBteSAkY21kID0gWycvdXNyL2Jpbi9xZW11LWltZycsICdzbmFwc2hv
dCcsJy1jJywgJHNuYXAsICRwYXRoXTsKPiA+ICvCoMKgwqAgaWYoJHNjZmctPntzbmFwZXh0fSkg
ewo+ID4gwqAKPiA+IC3CoMKgwqAgcnVuX2NvbW1hbmQoJGNtZCk7Cj4gPiArIG15ICRwYXRoID0g
JGNsYXNzLT5wYXRoKCRzY2ZnLCAkdm9sbmFtZSwgJHN0b3JlaWQpOwo+ID4gKwo+ID4gKyBteSAk
c25hcHBhdGggPSBnZXRfc25hcF9wYXRoKCRwYXRoLCAkc25hcCk7Cj4gPiArIG15ICRmb3JtYXQg
PSAoJGNsYXNzLT5wYXJzZV92b2xuYW1lKCR2b2xuYW1lKSlbNl07Cj4gPiArCj4gPiArIG15ICRj
bWQgPSBbJy91c3IvYmluL3FlbXUtaW1nJywgJ2NyZWF0ZScsICctYicsICRwYXRoLAo+ID4gKyDC
oMKgICctRicsICRmb3JtYXQsICctZicsICdxY293MicsICRzbmFwcGF0aF07Cj4gCj4gPj5zZWUg
Y29tbWVudHMgb24gcWVtdS1zZXJ2ZXIsIGJ1dC4uIHdvdWxkbid0IGl0IGJlIGJldHRlciBpZiB0
aGUgZmlsZQo+ID4+d2l0aCAkc25hcCBpbiBpdHMgbmFtZSB3b3VsZCBiZSB0aGUgb25lIHN0b3Jp
bmcgdGhhdCBzbmFwc2hvdCdzIGRhdGE/Cj4gPj5pLmUuLCByZW5hbWUgdGhlICJjdXJyZW50IiB2
b2x1bWUgdG8gYmUgY2FsbGVkIC4uLi0kc25hcC4uLiAsIGFuZAo+ID4+dGhlbiBjcmVhdGUgYSBu
ZXcgImN1cnJlbnQiIGZpbGUgd2l0aG91dCBhIHN1ZmZpeCB3aXRoIHRoZSByZW5hbWVkCj4gPj52
b2x1bWUgYXMgYmFja2luZyBmaWxlPwo+IAo+IEknbGwgdHJ5IGl0ICEKPiAKPiA+ICsKPiA+ICsg
bXkgJG9wdGlvbnMgPSAiZXh0ZW5kZWRfbDI9b24sIjsKPiA+ICsgJG9wdGlvbnMgLj0gcHJlYWxs
b2NhdGlvbl9jbWRfb3B0aW9uKCRzY2ZnLCAncWNvdzInKTsKPiA+ICsgcHVzaCBAJGNtZCwgJy1v
JywgJG9wdGlvbnM7Cj4gPiArIHJ1bl9jb21tYW5kKCRjbWQpOwo+ID4gKwo+ID4gK8KgwqDCoCB9
IGVsc2Ugewo+ID4gKwo+ID4gKyBteSAkcGF0aCA9ICRjbGFzcy0+ZmlsZXN5c3RlbV9wYXRoKCRz
Y2ZnLCAkdm9sbmFtZSk7Cj4gPiArIG15ICRjbWQgPSBbJy91c3IvYmluL3FlbXUtaW1nJywgJ3Nu
YXBzaG90JywnLWMnLCAkc25hcCwgJHBhdGhdOwo+ID4gKyBydW5fY29tbWFuZCgkY21kKTsKPiA+
ICvCoMKgwqAgfQo+ID4gwqAKPiA+IMKgwqDCoMKgIHJldHVybiB1bmRlZjsKPiA+IMKgfQo+ID4g
QEAgLTEwOTEsMTkgKzExMjMsMzkgQEAgc3ViIHZvbHVtZV9zbmFwc2hvdCB7Cj4gPiDCoHN1YiB2
b2x1bWVfcm9sbGJhY2tfaXNfcG9zc2libGUgewo+ID4gwqDCoMKgwqAgbXkgKCRjbGFzcywgJHNj
ZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHNuYXAsICRibG9ja2VycykgPSBAXzsKPiA+IMKgCj4g
PiArwqDCoMKgIGlmICgkc2NmZy0+e3NuYXBleHR9KSB7Cj4gPiArICN0ZWNobmljYWxseSwgd2Ug
Y291bGQgbWFuYWdlIG11bHRpYnJhbmNoLCB3ZSBpdCBuZWVkIGxvdCBtb3JlIHdvcmsKPiA+IGZv
ciBzbmFwc2hvdCBkZWxldGUKPiAKPiA+PndvdWxkIG11bHRpYnJhbmNoIGJlIGVhc2llciBpZiB0
aGVyZSBpcyBhIHNpbXBsZSAxOjEgY29ycmVzcG9uZGVuY2UKPiA+PmJldHdlZW4gc25hcHNob3Rz
IGFuZCB0aGVpciBmaWxlbmFtZXM/Cj4gPj4KPiA+PnN3aXRjaGluZyB0byBhIGRpZmZlcmVudCBw
YXJ0IG9mIHRoZSAiaGllcmFyY2h5IiBpcyB0aGVuIGp1c3QKPiA+Pi0gZGVsZXRlIGN1cnJlbnQg
dm9sdW1lCj4gPj4tIGNyZWF0ZSBuZXcgY3VycmVudCB2b2x1bWUgdXNpbmcgcm9sbGJhY2sgdGFy
Z2V0IGFzIGJhY2tpbmcgZmlsZQo+IHRoZSByb2xsYmFjay9icmFuY2ggc3dpdGNoIGlzIG5vdCB0
b28gZGlmZmljdWx0LCBtYXliZSAxOjEgbmFtaW5nIGNvdWxkCj4gaGVscC4KPiAKPiA+PkkgZ3Vl
c3MgZGVsZXRpb24gZG9lcyBiZWNvbWUgaGFyZGVyIHRoZW4sIHNpbmNlIGl0IHBvdGVudGlhbGx5
Cj4gPj5yZXF1aXJlcyBtdWx0aXBsZSByZWJhc2VzLi4KPiAKPiB5ZXMsIFRoZSBiaWdnZXN0IGRp
ZmZpY3VsdHkgaXMgc25hcHNob3QgZGVsZXRlLCBhcyB5b3UgbmVlZCB0byBjcmVhdGUgYQo+IGJs
b2NrLXN0cmVhbSAgam9iLCBtZXJnaW4vd3JpdGluZyB0byBlYWNoIGJyYW5jaCBjaGlsZCwgYW5k
IHlvdSBuZWVkIHRvCj4gZG8gaXQgYXRvbWljYWxseSB3aXRoIGEgdHJhbnNhY3Rpb24gd2l0aCBt
dWx0aXBsZSBqb2JzLiAKPiBTbyB5ZXMsIGl0J3MgcG9zc2libGUsIGJ1dCBJIHdhbnRlZCB0byBr
ZWVwIGl0IGVhc3kgZm9yIG5vdy4KCnN1cmUsIHRoaXMgcmVzdHJpY3Rpb24gY291bGQgYmUgbGlm
dGVkIGluIGEgZm9sbG93LXVwIQoKPiA+ICsgbXkgJHBhdGggPSAkY2xhc3MtPmZpbGVzeXN0ZW1f
cGF0aCgkc2NmZywgJHZvbG5hbWUpOwo+ID4gKyBteSAkc25hcHBhdGggPSBnZXRfc25hcF9wYXRo
KCRwYXRoLCAkc25hcCk7Cj4gPiArCj4gPiArIG15ICRzbmFwc2hvdHMgPSAkY2xhc3MtPnZvbHVt
ZV9zbmFwc2hvdF9pbmZvKCRzY2ZnLCAkc3RvcmVpZCwKPiA+ICR2b2xuYW1lKTsKPiA+ICsgbXkg
JGN1cnJlbnRwYXRoID0gJHNuYXBzaG90cy0+e2N1cnJlbnR9LT57ZmlsZX07Cj4gPiArIHJldHVy
biAxIGlmICEtZSAkc25hcHBhdGggfHwgJGN1cnJlbnRwYXRoIGVxICRzbmFwcGF0aDsKPiA+ICsK
PiA+ICsgZGllICJjYW4ndCByb2xsYmFjaywgJyRzbmFwJyBpcyBub3QgbW9zdCByZWNlbnQgc25h
cHNob3Qgb24KPiA+ICckdm9sbmFtZSdcbiI7Cj4gPiArwqDCoMKgIH0KPiA+ICsKPiA+IMKgwqDC
oMKgIHJldHVybiAxOwo+ID4gwqB9Cj4gPiDCoAo+ID4gwqBzdWIgdm9sdW1lX3NuYXBzaG90X3Jv
bGxiYWNrIHsKPiA+IMKgwqDCoMKgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5h
bWUsICRzbmFwKSA9IEBfOwo+ID4gwqAKPiA+IC3CoMKgwqAgZGllICJjYW4ndCByb2xsYmFjayBz
bmFwc2hvdCB0aGlzIGltYWdlIGZvcm1hdFxuIiBpZiAkdm9sbmFtZSAhfgo+ID4gbS9cLihxY293
MnxxZWQpJC87Cj4gPiArwqDCoMKgIGRpZSAiY2FuJ3Qgcm9sbGJhY2sgc25hcHNob3QgdGhpcyBp
bWFnZSBmb3JtYXRcbiIgaWYgJHZvbG5hbWUgIX4KPiA+IG0vXC4ocmF3fHFjb3cyfHFlZCkkLzsK
PiA+IMKgCj4gPiAtwqDCoMKgIG15ICRwYXRoID0gJGNsYXNzLT5maWxlc3lzdGVtX3BhdGgoJHNj
ZmcsICR2b2xuYW1lKTsKPiA+ICvCoMKgwqAgZGllICJleHRlcm5hbCBzbmFwc2hvdCBuZWVkIHRv
IGJlIGVuYWJsZWQgdG8gcm9sbGJhY2sgc25hcHNob3QKPiA+IC5yYXcgdm9sdW1lc1xuIiBpZiAk
dm9sbmFtZSA9fiBtL1wuKHJhdykkLyAmJiAhJHNjZmctPntzbmFwZXh0fTsKPiA+IMKgCj4gPiAt
wqDCoMKgIG15ICRjbWQgPSBbJy91c3IvYmluL3FlbXUtaW1nJywgJ3NuYXBzaG90JywnLWEnLCAk
c25hcCwgJHBhdGhdOwo+ID4gK8KgwqDCoCBteSAkcGF0aCA9ICRjbGFzcy0+ZmlsZXN5c3RlbV9w
YXRoKCRzY2ZnLCAkdm9sbmFtZSk7Cj4gPiDCoAo+ID4gLcKgwqDCoCBydW5fY29tbWFuZCgkY21k
KTsKPiA+ICvCoMKgwqAgaWYgKCRzY2ZnLT57c25hcGV4dH0pIHsKPiA+ICsgI3NpbXBseSBkZWxl
dGUgdGhlIGN1cnJlbnQgc25hcHNob3QgYW5kIHJlY3JlYXRlIGl0Cj4gPiArIG15ICRzbmFwcGF0
aCA9IGdldF9zbmFwX3BhdGgoJHBhdGgsICRzbmFwKTsKPiA+ICsgdW5saW5rKCRzbmFwcGF0aCk7
Cj4gPiArICRjbGFzcy0+dm9sdW1lX3NuYXBzaG90KCRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUs
ICRzbmFwKTsKPiAKPiB0aGlzICpyZWFkcyogc28gd2VpcmQgOykgaXQgaXMgcmlnaHQgZ2l2ZW4g
dGhlIGN1cnJlbnQgc2VtYW50aWNzCj4gKGN1cnJlbnQgc25hcHNob3QgPT0gbGl2ZSBpbWFnZSwg
c25hcHNob3QgZGF0YSBhY3R1YWxseSBzdG9yZWQgaW4KPiBwYXJlbnQgc25hcHNob3QpCj4gCj4g
PiArwqDCoMKgIH0gZWxzZSB7Cj4gPiArIG15ICRjbWQgPSBbJy91c3IvYmluL3FlbXUtaW1nJywg
J3NuYXBzaG90JywnLWEnLCAkc25hcCwgJHBhdGhdOwo+ID4gKyBydW5fY29tbWFuZCgkY21kKTsK
PiA+ICvCoMKgwqAgfQo+ID4gwqAKPiA+IMKgwqDCoMKgIHJldHVybiB1bmRlZjsKPiA+IMKgfQo+
ID4gQEAgLTExMTEsMTcgKzExNjMsNTAgQEAgc3ViIHZvbHVtZV9zbmFwc2hvdF9yb2xsYmFjayB7
Cj4gPiDCoHN1YiB2b2x1bWVfc25hcHNob3RfZGVsZXRlIHsKPiA+IMKgwqDCoMKgIG15ICgkY2xh
c3MsICRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUsICRzbmFwLCAkcnVubmluZykgPSBAXzsKPiA+
IMKgCj4gPiAtwqDCoMKgIGRpZSAiY2FuJ3QgZGVsZXRlIHNuYXBzaG90IGZvciB0aGlzIGltYWdl
IGZvcm1hdFxuIiBpZiAkdm9sbmFtZQo+ID4gIX4gbS9cLihxY293MnxxZWQpJC87Cj4gPiArwqDC
oMKgIGRpZSAiY2FuJ3QgZGVsZXRlIHNuYXBzaG90IGZvciB0aGlzIGltYWdlIGZvcm1hdFxuIiBp
ZiAkdm9sbmFtZQo+ID4gIX4gbS9cLihyYXd8cWNvdzJ8cWVkKSQvOwo+ID4gKwo+ID4gK8KgwqDC
oCBkaWUgImV4dGVybmFsIHNuYXBzaG90IG5lZWQgdG8gYmUgZW5hYmxlZCB0byBkZWxldGUgc25h
cHNob3Qgb2YKPiA+IC5yYXcgdm9sdW1lc1xuIiBpZiAhJHNjZmctPntzbmFwZXh0fTsKPiA+IMKg
Cj4gPiDCoMKgwqDCoCByZXR1cm4gMSBpZiAkcnVubmluZzsKPiA+IMKgCj4gPiAtwqDCoMKgIG15
ICRwYXRoID0gJGNsYXNzLT5maWxlc3lzdGVtX3BhdGgoJHNjZmcsICR2b2xuYW1lKTsKPiA+ICvC
oMKgwqAgbXkgJGNtZCA9ICIiOwo+ID4gK8KgwqDCoCBpZiAoJHNjZmctPntzbmFwZXh0fSkgewo+
ID4gKwo+ID4gKyBteSAkc25hcHNob3RzID0gJGNsYXNzLT52b2x1bWVfc25hcHNob3RfaW5mbygk
c2NmZywgJHN0b3JlaWQsCj4gPiAkdm9sbmFtZSk7Cj4gPiArIG15ICRzbmFwcGF0aCA9ICRzbmFw
c2hvdHMtPnskc25hcH0tPntmaWxlfTsKPiA+ICsgcmV0dXJuIGlmICEtZSAkc25hcHBhdGg7wqAg
I2FscmVhZHkgZGVsZXRlZCA/Cj4gPiArCj4gPiArIG15ICRwYXJlbnRzbmFwID0gJHNuYXBzaG90
cy0+eyRzbmFwfS0+e3BhcmVudH07Cj4gPiArIG15ICRjaGlsZHNuYXAgPSAkc25hcHNob3RzLT57
JHNuYXB9LT57Y2hpbGR9Owo+ID4gK8KgwqDCoMKgwqDCoMKgIGRpZSAiZXJyb3I6IGNhbid0IGZp
bmQgYSBwYXJlbnQgZm9yIHRoaXMgc25hcHNob3QiIGlmCj4gPiAhJHBhcmVudHNuYXA7Cj4gPiDC
oAo+ID4gLcKgwqDCoCAkY2xhc3MtPmRlYWN0aXZhdGVfdm9sdW1lKCRzdG9yZWlkLCAkc2NmZywg
JHZvbG5hbWUsICRzbmFwLCB7fSk7Cj4gPiArIG15ICRwYXJlbnRwYXRoID0gJHNuYXBzaG90cy0+
eyRwYXJlbnRzbmFwfS0+e2ZpbGV9Owo+ID4gKyBteSAkcGFyZW50Zm9ybWF0ID0gJHNuYXBzaG90
cy0+eyRwYXJlbnRzbmFwfS0+eydmb3JtYXQnfSBpZgo+ID4gJHBhcmVudHNuYXA7Cj4gPiArIG15
ICRjaGlsZHBhdGggPSAkc25hcHNob3RzLT57JGNoaWxkc25hcH0tPntmaWxlfSBpZiAkY2hpbGRz
bmFwOwo+ID4gKyBteSAkY2hpbGRmb3JtYXQgPSAkc25hcHNob3RzLT57JGNoaWxkc25hcH0tPnsn
Zm9ybWF0J30gaWYKPiA+ICRjaGlsZHNuYXA7Cj4gPiDCoAo+ID4gLcKgwqDCoCBteSAkY21kID0g
WycvdXNyL2Jpbi9xZW11LWltZycsICdzbmFwc2hvdCcsJy1kJywgJHNuYXAsICRwYXRoXTsKPiA+
ICsgcHJpbnQgIm1lcmdlIHNuYXBzaG90ICRzbmFwIHRvICRwYXJlbnRzbmFwXG4iOwo+ID4gKyAk
Y21kID0gWycvdXNyL2Jpbi9xZW11LWltZycsICdjb21taXQnLCAkc25hcHBhdGhdOwo+ID4gKyBy
dW5fY29tbWFuZCgkY21kKTsKPiA+ICsKPiA+ICsgI2lmIHdlIGRlbGV0ZSBhbiBpbnRlcm1lZGlh
dGUgc25hcHNob3QsIHdlIG5lZWQgdG8gbGluayB1cHBlcgo+ID4gc25hcHNob3QgdG8gYmFzZSBz
bmFwc2hvdAo+ID4gKyBpZigkY2hpbGRwYXRoICYmIC1lICRjaGlsZHBhdGgpIHsKPiA+ICsgwqDC
oMKgIGRpZSAibWlzc2luZyBwYXJlbnRzbmFwIHNuYXBzaG90IHRvIHJlYmFzZSBjaGlsZCAkY2hp
bGRwYXRoXG4iCj4gPiBpZiAhJHBhcmVudHBhdGg7Cj4gPiArIMKgwqDCoCBwcmludCAibGluayAk
Y2hpbGRzbmFwIHRvICRwYXJlbnRzbmFwXG4iOwo+ID4gKyDCoMKgwqAgJGNtZCA9IFsnL3Vzci9i
aW4vcWVtdS1pbWcnLCAncmViYXNlJywgJy11JywgJy1iJywgJHBhcmVudHBhdGgsCj4gPiAnLUYn
LCAkcGFyZW50Zm9ybWF0LCAnLWYnLCAkY2hpbGRmb3JtYXQsICRjaGlsZHBhdGhdOwo+ID4gKyDC
oMKgwqAgcnVuX2NvbW1hbmQoJGNtZCk7Cj4gPiArIH0KPiAKPiA+PndvdWxkbid0IGEgcmVndWxh
ciBzYWZlIHJlYmFzZSB3b3JrIGp1c3QgYXMgd2VsbCwgaW5zdGVhZCBvZiBjb21taXQgKwo+ID4+
dW5zYWZlIHJlYmFzZT8gaWYgdGhlcmUgaXMgbm8gcGFyZW50LCBwYXNzaW5nIGluICIiIGFzICJu
ZXciIGJhY2tpbmcKPiA+PmZpbGUgc2hvdWxkIHdvcmsuLgo+IAo+IEknbGwgdGVzdCBpdCwgYnV0
IEknbSBwcmV0dHkgc3VyZSB0aGlzIGlzIHRoZSBjb3JyZWN0IHdheS4KPiAKPiA+ICsKPiA+ICsg
I2RlbGV0ZSB0aGUgc25hcHNob3QKPiA+ICsgdW5saW5rKCRzbmFwcGF0aCk7Cj4gPiArwqDCoMKg
IH0gZWxzZSB7Cj4gPiArIG15ICRwYXRoID0gJGNsYXNzLT5maWxlc3lzdGVtX3BhdGgoJHNjZmcs
ICR2b2xuYW1lKTsKPiA+IMKgCj4gPiAtwqDCoMKgIHJ1bl9jb21tYW5kKCRjbWQpOwo+ID4gKyAk
Y2xhc3MtPmRlYWN0aXZhdGVfdm9sdW1lKCRzdG9yZWlkLCAkc2NmZywgJHZvbG5hbWUsICRzbmFw
LCB7fSk7Cj4gPiArCj4gPiArICRjbWQgPSBbJy91c3IvYmluL3FlbXUtaW1nJywgJ3NuYXBzaG90
JywnLWQnLCAkc25hcCwgJHBhdGhdOwo+ID4gKyBydW5fY29tbWFuZCgkY21kKTsKPiA+ICvCoMKg
wqAgfQo+ID4gwqAKPiA+IMKgwqDCoMKgIHJldHVybiB1bmRlZjsKPiA+IMKgfQo+ID4gQEAgLTEx
NDAsMTAgKzEyMjUsNiBAQCBzdWIgdm9sdW1lX2hhc19mZWF0dXJlIHsKPiA+IMKgwqDCoMKgIG15
ICgkY2xhc3MsICRzY2ZnLCAkZmVhdHVyZSwgJHN0b3JlaWQsICR2b2xuYW1lLCAkc25hcG5hbWUs
Cj4gPiAkcnVubmluZywgJG9wdHMpID0gQF87Cj4gPiDCoAo+ID4gwqDCoMKgwqAgbXkgJGZlYXR1
cmVzID0gewo+ID4gLSBzbmFwc2hvdCA9PiB7Cj4gPiAtIMKgwqDCoCBjdXJyZW50ID0+IHsgcWNv
dzIgPT4gMSB9LAo+ID4gLSDCoMKgwqAgc25hcCA9PiB7IHFjb3cyID0+IDEgfSwKPiA+IC0gfSwK
PiA+IMKgIGNsb25lID0+IHsKPiA+IMKgIMKgwqDCoCBiYXNlID0+IHsgcWNvdzIgPT4gMSwgcmF3
ID0+IDEsIHZtZGsgPT4gMSB9LAo+ID4gwqAgfSwKPiA+IEBAIC0xMTU5LDExICsxMjQwLDIzIEBA
IHN1YiB2b2x1bWVfaGFzX2ZlYXR1cmUgewo+ID4gwqAgwqDCoMKgIGJhc2UgPT4geyBxY293MiA9
PiAxLCByYXcgPT4gMSwgdm1kayA9PiAxIH0sCj4gPiDCoCDCoMKgwqAgY3VycmVudCA9PiB7IHFj
b3cyID0+IDEsIHJhdyA9PiAxLCB2bWRrID0+IDEgfSwKPiA+IMKgIH0sCj4gPiAtIHJlbmFtZSA9
PiB7Cj4gPiAtIMKgwqDCoCBjdXJyZW50ID0+IHtxY293MiA9PiAxLCByYXcgPT4gMSwgdm1kayA9
PiAxfSwKPiA+IC0gfSwKPiA+ICsgJ3JlbmFtZScgPT4gewo+ID4gKyDCoMKgwqAgY3VycmVudCA9
PiB7IHFjb3cyID0+IDEsIHJhdyA9PiAxLCB2bWRrID0+IDF9LAo+ID4gKyB9Cj4gPiDCoMKgwqDC
oCB9Owo+ID4gwqAKPiA+ICvCoMKgwqAgaWYgKCRzY2ZnLT57c25hcGV4dH0pIHsKPiA+ICsgJGZl
YXR1cmVzLT57c25hcHNob3R9ID0gewo+ID4gKyBjdXJyZW50ID0+IHsgcmF3ID0+IDEsIHFjb3cy
ID0+IDEgfSwKPiA+ICsgc25hcCA9PiB7IHJhdyA9PiAxLCBxY293MiA9PiAxIH0sCj4gPiArIH0K
PiA+ICvCoMKgwqAgfSBlbHNlIHsKPiA+ICsgJGZlYXR1cmVzLT57c25hcHNob3R9ID0gewo+ID4g
KyBjdXJyZW50ID0+IHsgcWNvdzIgPT4gMSB9LAo+ID4gKyBzbmFwID0+IHsgcWNvdzIgPT4gMSB9
LAo+ID4gKyB9Owo+ID4gK8KgwqDCoCB9Cj4gPiArCj4gCj4gPj50aGlzIGNvdWxkIGp1c3QgbGVh
dmUgJGZlYXR1cmVzIGFzIGl0IGlzLCBhbmQgYWRkIHRoZSAicmF3IiBiaXRzOgo+ID4+Cj4gPj5p
ZiAoJHNjZmctPntzbmFwZXh0fSkgewo+ID4+wqDCoMKgICRmZWF0dXJlcy0+e3NuYXBzaG90fS0+
e2N1cnJlbnR9LT57cmF3fSA9IDE7Cj4gPj7CoMKgwqAgJGZlYXR1cmVzLT57c25hcHNob3R9LT57
c25hcH0tPntyYXd9ID0gMTsKPiA+Pn0KPiAKPiBvayAhCj4gPiDCoMKgwqDCoCBpZiAoJGZlYXR1
cmUgZXEgJ2Nsb25lJykgewo+ID4gwqAgaWYgKAo+ID4gwqAgwqDCoMKgIGRlZmluZWQoJG9wdHMt
Pnt2YWxpZF90YXJnZXRfZm9ybWF0c30pCj4gPiBAQCAtMTIyMiw3ICsxMzE1LDkgQEAgc3ViIGxp
c3RfaW1hZ2VzIHsKPiA+IMKgIH0KPiA+IMKgCj4gPiDCoCBpZiAoJHZvbGxpc3QpIHsKPiA+IC0g
wqDCoMKgIG15ICRmb3VuZCA9IGdyZXAgeyAkXyBlcSAkdm9saWQgfSBAJHZvbGxpc3Q7Cj4gPiAr
IMKgwqDCoCBteSAkc2VhcmNoX3ZvbGlkID0gJHZvbGlkOwo+ID4gKyDCoMKgwqAgJHNlYXJjaF92
b2xpZCA9fiBzLy1zbmFwLS4qXC4vXC4vOwo+ID4gKyDCoMKgwqAgbXkgJGZvdW5kID0gZ3JlcCB7
ICRfIGVxICRzZWFyY2hfdm9saWQgfSBAJHZvbGxpc3Q7Cj4gPiDCoCDCoMKgwqAgbmV4dCBpZiAh
JGZvdW5kOwo+ID4gwqAgfQo+ID4gwqAKPiA+IEBAIC0xMzgwLDcgKzE0NzUsNTMgQEAgc3ViIHN0
YXR1cyB7Cj4gPiDCoHN1YiB2b2x1bWVfc25hcHNob3RfaW5mbyB7Cj4gPiDCoMKgwqDCoCBteSAo
JGNsYXNzLCAkc2NmZywgJHN0b3JlaWQsICR2b2xuYW1lKSA9IEBfOwo+ID4gwqAKPiA+IC3CoMKg
wqAgZGllICJ2b2x1bWVfc25hcHNob3RfaW5mbyBpcyBub3QgaW1wbGVtZW50ZWQgZm9yICRjbGFz
cyI7Cj4gPiArwqDCoMKgIGRpZSAidm9sdW1lX3NuYXBzaG90X2luZm8gaXMgbm90IGltcGxlbWVu
dGVkIGZvciAkY2xhc3MiIGlmCj4gPiAhJHNjZmctPntzbmFwZXh0fTsKPiA+ICsKPiA+ICvCoMKg
wqAgbXkgJHBhdGggPSAkY2xhc3MtPmZpbGVzeXN0ZW1fcGF0aCgkc2NmZywgJHZvbG5hbWUpOwo+
ID4gKwo+ID4gK8KgwqDCoCBteSAoJHZ0eXBlLCAkbmFtZSwgJHZtaWQsICRiYXNlbmFtZSwgJGJh
c2V2bWlkLCAkaXNCYXNlLAo+ID4gJGZvcm1hdCkgPSAkY2xhc3MtPnBhcnNlX3ZvbG5hbWUoJHZv
bG5hbWUpOwo+ID4gKwo+ID4gK8KgwqDCoCBteSAkYmFzZXZvbG5hbWUgPSAkdm9sbmFtZTsKPiA+
ICvCoMKgwqAgJGJhc2V2b2xuYW1lID1+IHMvXC4ocmF3fHFjb3cyKSQvLzsKPiA+ICsKPiA+ICvC
oMKgwqAgbXkgJHNuYXBzaG90cyA9ICRjbGFzcy0+bGlzdF9pbWFnZXMoJHN0b3JlaWQsICRzY2Zn
LCAkdm1pZCk7Cj4gPiArwqDCoMKgIG15ICRpbmZvID0ge307Cj4gPiArwqDCoMKgIGZvciBteSAk
c25hcCAoQCRzbmFwc2hvdHMpIHsKPiA+ICsKPiA+ICsgbXkgJHZvbGlkID0gJHNuYXAtPnt2b2xp
ZH07Cj4gPiArIG5leHQgaWYgKCR2b2xpZCAhfiBtLyRiYXNldm9sbmFtZS8pOwo+IAo+ID4+dGhp
cyByZWdleCBpcyBicm9rZW4gdy5yLnQuIHBhcnRpYWwgbWF0Y2hpbmchCj4gPj4KPiA+PmUuZy4s
IGlmIGEgVk0gaGFzIGJvdGggYSBkaXNrIC0xLnFjb3cyIGFuZCAtMTEucWNvdzIgYW5kIEkgYXR0
ZW1wdCB0bwo+ID4+c25hcHNob3QgaXQgdXNpbmcgZXh0ZXJuYWwgc25hcHNob3RzOgo+IG9rICEK
PiAKPiAKPiBzbmFwc2hvdHRpbmcgJ2RyaXZlLXNjc2kwJyAoZXh0c25hcDoxMzEzMTQvdm0tMTMx
MzE0LWRpc2stMC5yYXcpCj4gRm9ybWF0dGluZyAnL21udC9wdmUvZXh0NC9leHRzbmFwL2ltYWdl
cy8xMzEzMTQvdm0tMTMxMzE0LWRpc2stMC1zbmFwLQo+IHRlc3QyLnFjb3cyJywgZm10PXFjb3cy
IGNsdXN0ZXJfc2l6ZT02NTUzNiBleHRlbmRlZF9sMj1vbgo+IHByZWFsbG9jYXRpb249b2ZmIGNv
bXByZXNzaW9uX3R5cGU9emxpYiBzaXplPTIwMDcwNAo+IGJhY2tpbmdfZmlsZT0vbW50L3B2ZS9l
eHQ0L2V4dHNuYXAvaW1hZ2VzLzEzMTMxNC92bS0xMzEzMTQtZGlzay0wLXNuYXAtCj4gdGVzdC5x
Y293MiBiYWNraW5nX2ZtdD1yYXcgbGF6eV9yZWZjb3VudHM9b2ZmIHJlZmNvdW50X2JpdHM9MTYK
PiBzbmFwc2hvdHRpbmcgJ2RyaXZlLXNjc2kxJyAoZXh0c25hcDoxMzEzMTQvdm0tMTMxMzE0LWRp
c2stMS5xY293MikKPiBGb3JtYXR0aW5nICcvbW50L3B2ZS9leHQ0L2V4dHNuYXAvaW1hZ2VzLzEz
MTMxNC92bS0xMzEzMTQtZGlzay0xMS1zbmFwLQo+IHRlc3QyLnFjb3cyJywgZm10PXFjb3cyIGNs
dXN0ZXJfc2l6ZT02NTUzNiBleHRlbmRlZF9sMj1vbgo+IHByZWFsbG9jYXRpb249b2ZmIGNvbXBy
ZXNzaW9uX3R5cGU9emxpYiBzaXplPTIxNDc0ODM2NDgKPiBiYWNraW5nX2ZpbGU9L21udC9wdmUv
ZXh0NC9leHRzbmFwL2ltYWdlcy8xMzEzMTQvdm0tMTMxMzE0LWRpc2stCj4gMTEucWNvdzIgYmFj
a2luZ19mbXQ9cWNvdzIgbGF6eV9yZWZjb3VudHM9b2ZmIHJlZmNvdW50X2JpdHM9MTYKPiBzbmFw
c2hvdHRpbmcgJ2RyaXZlLXNjc2kyJyAoZXh0c25hcDoxMzEzMTQvdm0tMTMxMzE0LWRpc2stMTEu
cWNvdzIpCj4gcWVtdS1pbWc6IC9tbnQvcHZlL2V4dDQvZXh0c25hcC9pbWFnZXMvMTMxMzE0L3Zt
LTEzMTMxNC1kaXNrLTExLXNuYXAtCj4gdGVzdDIucWNvdzI6IEVycm9yOiBUcnlpbmcgdG8gY3Jl
YXRlIGFuIGltYWdlIHdpdGggdGhlIHNhbWUgZmlsZW5hbWUgYXMKPiB0aGUgYmFja2luZyBmaWxl
Cj4gc25hcHNob3QgY3JlYXRlIGZhaWxlZDogc3RhcnRpbmcgY2xlYW51cAo+IG1lcmdlIHNuYXBz
aG90IHRlc3QyIHRvIHRlc3QKPiBJbWFnZSBjb21taXR0ZWQuCj4gbWVyZ2Ugc25hcHNob3QgdGVz
dDIgdG8gYmFzZQo+IEltYWdlIGNvbW1pdHRlZC4KPiBUQVNLIEVSUk9SOiBjb21tYW5kICcvdXNy
L2Jpbi9xZW11LWltZyBjcmVhdGUgLWIKPiAvbW50L3B2ZS9leHQ0L2V4dHNuYXAvaW1hZ2VzLzEz
MTMxNC92bS0xMzEzMTQtZGlzay0xMS1zbmFwLXRlc3QyLnFjb3cyCj4gLUYgcWNvdzIgLWYgcWNv
dzIgL21udC9wdmUvZXh0NC9leHRzbmFwL2ltYWdlcy8xMzEzMTQvdm0tMTMxMzE0LWRpc2stCj4g
MTEtc25hcC10ZXN0Mi5xY293MiAtbyAnZXh0ZW5kZWRfbDI9b24scHJlYWxsb2NhdGlvbj1vZmYn
JyBmYWlsZWQ6IGV4aXQKPiBjb2RlIDEgCj4gCj4gPiArCj4gPiArIG15ICh1bmRlZiwgJHNuYXB2
b2xuYW1lKSA9IHBhcnNlX3ZvbHVtZV9pZCgkdm9saWQpOwo+ID4gKyBteSAkc25hcG5hbWUgPSBn
ZXRfc25hcG5hbWVfZnJvbV9wYXRoKCR2b2xpZCk7Cj4gPiArIG15ICRzbmFwZmlsZSA9ICRjbGFz
cy0+ZmlsZXN5c3RlbV9wYXRoKCRzY2ZnLCAkc25hcHZvbG5hbWUsCj4gPiAkc25hcG5hbWUpOwo+
ID4gKyAkc25hcG5hbWUgPSAnYmFzZScgaWYgISRzbmFwbmFtZTsKPiA+ICsKPiA+ICsgbXkgJGZv
cm1hdCA9ICRzbmFwLT57J2Zvcm1hdCd9Owo+ID4gKyBteSAkcGFyZW50ZmlsZSA9ICRzbmFwLT57
cGFyZW50fTsKPiA+ICsgbXkgJHBhcmVudG5hbWUgPSBnZXRfc25hcG5hbWVfZnJvbV9wYXRoKCRw
YXJlbnRmaWxlKSBpZgo+ID4gJHBhcmVudGZpbGU7Cj4gPiArICRwYXJlbnRuYW1lID0gJ2Jhc2Un
IGlmICEkcGFyZW50bmFtZSAmJiAkcGFyZW50ZmlsZTsKPiA+ICsKPiA+ICsgJGluZm8tPnskc25h
cG5hbWV9LT57ZmlsZX0gPSAkc25hcGZpbGU7Cj4gPiArICRpbmZvLT57JHNuYXBuYW1lfS0+e3Zv
bGlkfSA9ICR2b2xpZDsKPiA+ICsgJGluZm8tPnskc25hcG5hbWV9LT57J2Zvcm1hdCd9ID0gJGZv
cm1hdDsKPiA+ICsgJGluZm8tPnskc25hcG5hbWV9LT57cGFyZW50fSA9ICRwYXJlbnRuYW1lIGlm
ICRwYXJlbnRuYW1lOwo+ID4gKyAkaW5mby0+eyRwYXJlbnRuYW1lfS0+e2NoaWxkfSA9ICRzbmFw
bmFtZSBpZiAkcGFyZW50bmFtZTsKPiA+ICvCoMKgwqAgfQo+ID4gKwo+ID4gK8KgwqDCoCBteSAk
Y3VycmVudCA9IHVuZGVmOwo+ID4gK8KgwqDCoCBmb3IgbXkgJGlkIChrZXlzICUkaW5mbykgewo+
ID4gKyBteSAkc25hcCA9ICRpbmZvLT57JGlkfTsKPiA+ICsgZGllICJlcnJvcjogc25hcCAkaWQ6
IHlvdSBjYW4ndCBoYXZlIG11bHRpcGxlIGN1cnJlbnQgc25hcHNob3Q6wqAKPiA+IGN1cnJlbnQ6
JGN1cnJlbnRcbiIgaWYgISRzbmFwLT57Y2hpbGR9ICYmICRjdXJyZW50Owo+ID4gKyAkY3VycmVu
dCA9ICRpZCBpZiAhJHNuYXAtPntjaGlsZH07Cj4gPiArwqDCoMKgIH0KPiA+ICsKPiA+ICvCoMKg
wqAgaWYgKCRjdXJyZW50KSB7Cj4gPiArICRpbmZvLT57Y3VycmVudH0tPntmaWxlfSA9ICRpbmZv
LT57JGN1cnJlbnR9LT57ZmlsZX07Cj4gPiArICRpbmZvLT57Y3VycmVudH0tPnsnZm9ybWF0J30g
PSAkaW5mby0+eyRjdXJyZW50fS0+eydmb3JtYXQnfTsKPiA+ICsgJGluZm8tPntjdXJyZW50fS0+
e3BhcmVudH0gPSAkaW5mby0+eyRjdXJyZW50fS0+e3BhcmVudH07Cj4gPiArwqDCoMKgIH0KPiA+
ICsKPiA+ICvCoMKgwqAgcmV0dXJuICRpbmZvOwo+ID4gwqB9Cj4gPiDCoAo+ID4gwqBzdWIgYWN0
aXZhdGVfc3RvcmFnZSB7Cj4gPiBAQCAtMTc2NCw0ICsxOTA1LDM4IEBAIHN1YiBjb25maWdfYXdh
cmVfYmFzZV9ta2RpciB7Cj4gPiDCoMKgwqDCoCB9Cj4gPiDCoH0KPiA+IMKgCj4gPiArc3ViIGdl
dF9zbmFwX3BhdGggewo+ID4gK8KgwqDCoCBteSAoJHBhdGgsICRzbmFwKSA9IEBfOwo+ID4gKwo+
ID4gK8KgwqDCoCBteSAkYmFzZXBhdGggPSAiIjsKPiA+ICvCoMKgwqAgbXkgJGJhc2Vmb3JtYXQg
PSAiIjsKPiA+ICvCoMKgwqAgaWYgKCRwYXRoID1+IG0vXigoLiopKHZtLShcZCspLWRpc2stKFxk
KykpKSgtc25hcC0KPiA+ICguKikpP1wuKHJhd3xxY293MikvKSB7Cj4gCj4gPj50aGlzIHJlZ2V4
IGlzIHdyb25nIC0gdm9sdW1lcyBjYW4gaGF2ZSBhcmJpdHJhcnkgbmFtZXMgYWZ0ZXIgdGhlIC0K
PiA+PmRpc2stIHBhcnQuLgo+IAo+IGFoIHNvcnJ5LiBkbyB5b3UgaGF2ZSBzb21lIGV4YW1wbGUg
d2hlcmUgaXQncyB1c2VkID8gKG1heWJlIGZvciBlZmkgb3IKPiBvdGhlciBzcGVjaWZpYyBkaXNr
ID8pCgpubywgYW55IHZkaXNrIGNhbiBoYXZlIChhbG1vc3QpIGFueXRoaW5nIGFmdGVyIHRoZSAt
ZGlzay0gcGFydC4geW91IGNhbiBhbGxvY2F0ZSBzdWNoIHZvbHVtZXMgdXNpbmcgYHB2ZXNtIGFs
bG9jYCBvciB0aGUgQVBJICh3ZSBqdXN0IGFyZSBub3QgdmVyeSBnb29kIGF0IGtlZXBpbmcgdGhv
c2UgY3VzdG9tIHN1ZmZpeGVzIHdoZW4gbW92aW5nL21pZ3JhdGluZy8uLiA7KSkKCj4gPiArICRi
YXNlcGF0aCA9ICQxOwo+ID4gKyAkYmFzZWZvcm1hdCA9ICQ4Owo+ID4gK8KgwqDCoCB9Cj4gPiAr
wqDCoMKgIG15ICRmb3JtYXQgPSAkc25hcCA/ICdxY293MicgOiAkYmFzZWZvcm1hdDsKPiA+ICvC
oMKgwqAgbXkgJHNuYXBwYXRoID0gJHNuYXAgPyAkYmFzZXBhdGguIi1zbmFwLSRzbmFwLiRmb3Jt
YXQiIDogdW5kZWY7Cj4gPiArCj4gPiArwqDCoMKgIHJldHVybiAkc25hcHBhdGg7Cj4gPiArfQo+
ID4gKwo+ID4gK3N1YiBnZXRfc25hcG5hbWVfZnJvbV9wYXRoIHsKPiA+ICvCoMKgwqAgbXkgKCRw
YXRoKSA9IEBfOwo+ID4gKwo+ID4gK8KgwqDCoCBpZiAoJHBhdGggPX4gbS9eKCguKikodm0tKFxk
KyktZGlzay0oXGQrKSkpKC1zbmFwLQo+ID4gKC4qKSk/XC4ocmF3fHFjb3cyKS8pIHsKPiAKPiA+
PmhlcmUgYXMgd2VsbC4uIGFuZCB0aGlzIHdob2xlIGhlbHBlciBpcyBqdXN0IHVzZWQgdHdpY2Ug
aW4KPiA+PnZvbHVtZV9zbmFwc2hvdF9pbmZvLCBtYXliZSBpdCBjb3VsZCBiZSBpbmxpbmVkIG9y
IG1hZGUgcHJpdmF0ZSAKPiBvayAhCj4gCj4gCj4gPiArIG15ICRzbmFwbmFtZSA9ICQ3Owo+ID4g
KyByZXR1cm4gJHNuYXBuYW1lOwo+ID4gK8KgwqDCoCB9Cj4gPiArwqDCoMKgIGRpZSAiY2FuJ3Qg
cGFyc2Ugc25hcG5hbWUgZnJvbSBwYXRoIjsKPiA+ICt9Cj4gPiArCj4gPiArc3ViIGdldF9jdXJy
ZW50X3NuYXBzaG90IHsKPiA+ICvCoMKgwqAgbXkgKCRjbGFzcywgJHNjZmcsICRzdG9yZWlkLCAk
dm9sbmFtZSkgPSBAXzsKPiA+ICvCoMKgwqAgI0lNUFJPVkUgTUU6IGZhc3RlciB3YXkgdG8gZmlu
ZCBjdXJyZW50IHNuYXBzaG90PyAoc2VhcmNoIHRoZQo+ID4gbW9zdCByZWNlbnQgY3JlYXRlZCBz
bmFwc2hvdCBmaWxlID8gbmVlZCB0byB3b3JrcyB3aXRoIGx2bSB2b2x1bWUKPiA+IHRvbykKPiA+
ICsKPiA+ICvCoMKgwqAgcmV0dXJuIGlmICEkc2NmZy0+e3NuYXBleHR9Owo+ID4gK8KgwqDCoCBt
eSAkc25hcHNob3RzID0gJGNsYXNzLT52b2x1bWVfc25hcHNob3RfaW5mbygkc2NmZywgJHN0b3Jl
aWQsCj4gPiAkdm9sbmFtZSk7Cj4gPiArwqDCoMKgIHJldHVybiAkc25hcHNob3RzLT57Y3VycmVu
dH07Cj4gPiArfQo+ID4gKwo+ID4gwqAxOwo+ID4gLS0gCj4gPiAyLjM5LjIKCgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwdmUtZGV2ZWwgbWFpbGluZyBs
aXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29t
L2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwK