From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pdm-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 BF2CC1FF17C
	for <inbox@lore.proxmox.com>; Wed, 14 May 2025 16:09:12 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id D9CA17BF2;
	Wed, 14 May 2025 16:09:35 +0200 (CEST)
Message-ID: <1df410bd-badc-45db-8a9e-a1292d8532d5@proxmox.com>
Date: Wed, 14 May 2025 16:08:56 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird Beta
To: pdm-devel@lists.proxmox.com
References: <20250512114144.118545-1-l.wagner@proxmox.com>
 <20250512114144.118545-2-l.wagner@proxmox.com>
Content-Language: en-US
From: Dominik Csapak <d.csapak@proxmox.com>
In-Reply-To: <20250512114144.118545-2-l.wagner@proxmox.com>
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.021 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: [pdm-devel] [PATCH proxmox-datacenter-manager v5 1/6] remote
 tasks: implement improved cache for remote tasks
X-BeenThere: pdm-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox Datacenter Manager development discussion
 <pdm-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pdm-devel>, 
 <mailto:pdm-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pdm-devel/>
List-Post: <mailto:pdm-devel@lists.proxmox.com>
List-Help: <mailto:pdm-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel>, 
 <mailto:pdm-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox Datacenter Manager development discussion
 <pdm-devel@lists.proxmox.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: pdm-devel-bounces@lists.proxmox.com
Sender: "pdm-devel" <pdm-devel-bounces@lists.proxmox.com>

SnVzdCBzdGFydGVkIHRvIHJldmlldyB0aGUgc2VyaWVzLCBhbmQgd2FudGVkIHRvIHNheSB0aGF0
CkknbGwgZ2l2ZSBzb21lIGVhcmx5IGZlZWRiYWNrIG9uIHRoaXMgb25lIGJlZm9yZSBkaXZpbmcg
aW50byB0aGUKb3RoZXJzLgoKKHNvcnJ5IGlmIGkgbWVudGlvbiBzb21ldGhpbmcgdGhhdCB3YXMg
YWxyZWFkeSBtZW50aW9uZWQgaW4gYSBwcmV2aW91cwppdGVyYXRpb24sIGp1c3QgdGhyb3cgaXQg
YmFjayB0byBtZSBzaG91bGQgdGhhdCBoYXBwZW4gOykgKQoKT24gYSBoaWdoIGxldmVsOiBMb29r
cyBtb3N0bHkgZ29vZCB0byBtZSwgYmVzaWRlcyBhIGZldyBzbWFsbGVyIHRoaW5ncyBpbmxpbmUK
YW5kIHRoZSBmb2xsb3dpbmc6Cgp5b3Ugd3JpdGUgYmVsb3cgdGhhdCB5b3UgdXNlIHRoZSBvbGRl
c3QgYWN0aXZlIHRhc2sgYXMgYSBjdXRvZmYKKGkgZ3Vlc3MgaW4gYSBsYXRlciBwYXRjaCksIGJ1
dCB0aGF0IGhhcyBtYXliZSBzb21lIGJhZCBjb25zZXF1ZW5jZXM6CgppZiB0aGVyZSBpcyBhIGxv
bmcgcnVubmluZyB0YXNrIChlLmcuIG11bHRpcGxlIGRheXM7IG5vdCB0aGF0IHVuY29tbW9uCmZv
ciBlLmcuIHBicyksIHdlJ2QgcmV2aXNpdCBvbGQgdGFza3Mgb3ZlciBhbmQgb3ZlciBhZ2FpbiBm
b3IgdGhhdApyZW1vdGUsIGhpdHRpbmcgdGhlIHRhc2sgYXJjaGl2ZSBvbiBkaXNrIGFnYWluIGV2
ZXJ5IHRpbWUuCgpjb3VsZCBpdCBtYXliZSBtYWtlIG1vcmUgc2Vuc2UgdG8gZWl0aGVyOgoqIGp1
c3QgcmVxdWVzdCBmaW5pc2hlZCB0YXNrcyBzbyB3ZSBkb24ndCBoYXZlIHRvIGRlYWwgd2l0aCBy
dW5uaW5nCiAgIHRhc2tzIHdlIGRpZCBub3QgdHJhY2sKKiB0cmFjayB0aGUgYWN0aXZlIHRhc2tz
IHRoYXQgZ290IHN5bmNlZCwgbWF5YmUgd2l0aCBhIGxvd2VyCiAgIGludGVydmFsIHRoYW4gdGhl
IG9uZXMgd2Ugc3RhcnRlZD8KClRoaXMgd2F5IHdlIGNhbiBhdm9pZCBoaXR0aW5nIHRoZSBvbiBk
aXNrIHRhc2sgbGlzdCAoZXZlbiBpZgppdCdzIGp1c3QgcmVhZCBjYWxscykgZm9yIHJlbW90ZXMg
d2l0aCBsb25nIHJ1bm5pbmcgdGFza3MuCgpXaGF0IGRvIHlvdSB0aGluaz8KCgpBbHNvIHNvbWUg
Y29tbWVudHMgaW5saW5lCgpPbiA1LzEyLzI1IDEzOjQxLCBMdWthcyBXYWduZXIgd3JvdGU6Cj4g
VGhpcyBjb21taXQgYWRkcyBhIG5ldyBpbXBsZW1lbnRhdGlvbiBmb3IgYSBjYWNoZSBmb3IgcmVt
b3RlIHRhc2tzLCBvbmUKPiB0aGF0IHNob3VsZCBpbXByb3ZlIHBlcmZvcm1hbmNlIGNoYXJhY3Rl
cmlzdGljcyBpbiBmb3IgcHJldHR5IG11Y2ggYWxsCj4gdXNlIGNhc2VzLgo+IAo+IEluIGdlbmVy
YWwgc3RvcmFnZSB3b3JrcyBwcmV0dHkgc2ltaWxhciB0byB0aGUgdGFzayBhcmNoaXZlIHdlIGFs
cmVhZHkKPiBoYXZlIGZvciAobG9jYWwpIFBETSB0YXNrcy4KPiAKPiByb290QHBkbS1kZXY6L3Zh
ci9jYWNoZS9wcm94bW94LWRhdGFjZW50ZXItbWFuYWdlci9yZW1vdGUtdGFza3MjIGxzIC1sCj4g
dG90YWwgNDAKPiAtcnctci0tci0tIDEgd3d3LWRhdGEgd3d3LWRhdGEgICAgIDAgTWFyIDEzIDEz
OjE4IGFjdGl2ZQo+IC1ydy1yLS1yLS0gMSB3d3ctZGF0YSB3d3ctZGF0YSAgMTY3NiBNYXIgMTEg
MTQ6NTEgYXJjaGl2ZS4xNzQxMzU1NDYyCj4gLXJ3LXItLXItLSAxIHd3dy1kYXRhIHd3dy1kYXRh
ICAgICAwIE1hciAxMSAxNDo1MSBhcmNoaXZlLjE3NDE0NDE4NjIKPiAtcnctci0tci0tIDEgd3d3
LWRhdGEgd3d3LWRhdGEgIDI1MzggTWFyIDExIDE0OjUxIGFyY2hpdmUuMTc0MTUyODI2Mgo+IC1y
dy1yLS1yLS0gMSB3d3ctZGF0YSB3d3ctZGF0YSAgODQyOCBNYXIgMTEgMTU6MDcgYXJjaGl2ZS4x
NzQxNjE0NjYyCj4gLXJ3LXItLXItLSAxIHd3dy1kYXRhIHd3dy1kYXRhIDExNzQwIE1hciAxMyAx
MDoxOCBhcmNoaXZlLjE3NDE3MDEwNjIKPiAtcnctci0tci0tIDEgd3d3LWRhdGEgd3d3LWRhdGEg
IDMzNjQgTWFyIDEzIDEzOjE4IGFyY2hpdmUuMTc0MTc4ODI3MAo+IC1ydy1yLS1yLS0gMSB3d3ct
ZGF0YSB3d3ctZGF0YSAgIDI4NyBNYXIgMTMgMTM6MTggc3RhdGUKPiAKPiBUYXNrcyBhcmUgc3Rv
cmVkIGluIHRoZSAnYWN0aXZlJyBhbmQgbXVsdGlwbGUgJ2FyY2hpdmUnIGZpbGVzLiBSdW5uaW5n
Cj4gdGFza3MgYXJlIHBsYWNlZCBpbnRvIHRoZSAnYWN0aXZlJyBmaWxlLCB0YXNrcyB0aGF0IGFy
ZSBmaW5pc2hlZCBhcmUKPiBwZXJzaXN0ZWQgaW50byBvbmUgb2YgdGhlIGFyY2hpdmUgZmlsZXMu
IFRoZSBhcmNoaXZlIGZpbGVzIGFyZSBzdWZmaXhlZAo+IHdpdGggYSBVTklYIHRpbWVzdGFtcCB3
aGljaCBzZXJ2ZXMgYXMgYSBsb3dlci1ib3VuZCBmb3Igc3RhcnQgdGltZXMgZm9yCj4gdGFza3Mg
c3RvcmVkIGluIHRoaXMgZmlsZS4gRW5jb2RpbmcgdGhpcyBsb3dlci1ib3VuZCBpbiB0aGUgZmls
ZSBuYW1lCj4gaW5zdGVhZCBvZiB1c2luZyBhIG1vcmUgdHJhZGl0aW9uYWwgaW5jcmVhc2luZyBm
aWxlIGluZGV4ICguMSwgLjIsIC4zKQo+IGdpdmVzIHVzIHRoZSBiZW5lZml0IHRoYXQgd2UgY2Fu
IGRlY2lkZSBpbiB3aGljaCBmaWxlIGEgbmV3bHkgYXJyaXZlZAo+IHRhc2tzIGJlbG9uZ3MgZnJv
bSBhIHNpbmdsZSByZWFkZGlyIGNhbGwsIHdpdGhvdXQgZXZlbiByZWFkaW5nIHRoZSBmaWxlCj4g
aXRzZWxmLgo+IAo+IFRoZSBzaXplIG9mIHRoZSBlbnRpcmUgYXJjaGl2ZSBjYW4gYmUgY29udHJv
bGxlZCBieSBkb2luZyBmaWxlCj4gJ3JvdGF0aW9uJywgd2hlcmUgdGhlIGFyY2hpdmUgZmlsZSB3
aXRoIHRoZSBvbGRlc3QgdGltZXN0YW1wIGlzIGRlbGV0ZWQKPiBhbmQgYSBuZXcgZmlsZSB3aXRo
IHRoZSBjdXJyZW50IHRpbWVzdGFtcCBpcyBhZGRlZC4gSWYgJ3JvdGF0aW9uJwo+IGhhcHBlbnMg
YXQgZml4ZWQgaW50ZXJ2YWxzIChlLmcuIG9uY2UgZGFpbHkpLCB0aGlzIGdpdmVzIHVzIGEKPiBj
b25maWd1cmFibGUgbnVtYmVyIG9mIGRheXMgb2YgdGFzayBoaXN0b3J5LiBUaGVyZSBpcyBubyBk
aXJlY3QgY2FwIGZvcgo+IHRoZSB0b3RhbCBudW1iZXIgb2YgdGFza3MsIGJ1dCB0aGlzIGNvdWxk
IGJlIGVhc2lseSBhZGRlZCBieSBjaGVja2luZwo+IHRoZSBzaXplIG9mIHRoZSBtb3N0IHJlY2Vu
dCBhcmNoaXZlIGZpbGUgYW5kIGJ5IHJvdGF0aW5nIGVhcmx5IGlmIGEKPiB0aHJlc2hvbGQgaXMg
ZXhjZWVkZWQuCj4gCj4gVGhlIGZvcm1hdCBpbnNpZGUgdGhlIGZpbGVzIGlzIGFsc28gc2ltaWxh
ciB0byB0aGUgbG9jYWwgdGFzayBhcmNoaXZlLAo+IHdpdGggb25lIHRhc2sgY29ycmVzcG9uZGlu
ZyB0byBvbmUgbGluZSBpbiB0aGUgZmlsZS4gT25lIGtleSBkaWZmZXJlbmNlCj4gaXMgdGhhdCBo
ZXJlIGVhY2ggbGluZSBpcyBhIEpTT04gb2JqZWN0LCB0aGF0IGlzIHRvIG1ha2UgaXQgZWFzaWVy
IHRvCj4gYWRkIGFkZGl0aW9uYWwgZGF0YSBsYXRlciwgaWYgbmVlZGVkLiBUaGUgSlNPTiBvYmpl
Y3QgY29udGFpbnMgdGhlIHRhc2tzCj4gVVBJRCwgc3RhdHVzLCBlbmR0aW1lIGFuZCBzdGFydHRp
bWUgKHRoZSBzdGFydHRpbWUgaXMgdGVjaG5pY2FsbHkgYWxzbwo+IGVuY29kZWQgaW4gdGhlIFVQ
SUQsIGJ1dCBoYXZpbmcgaXQgYXMgYSBzZXBhcmF0ZSB2YWx1ZSBzaW1wbGlmaWVkIGEKPiBjb3Vw
bGUgb2YgdGhpbmdzKSBFYWNoIGZpbGUgaXMgc29ydGVkIGJ5IHRoZSB0YXNrJ3Mgc3RhcnQgdGlt
ZSwgdGhlCj4geW91bmdlc3QgdGFzayBjb21pbmcgZmlyc3QuCj4gCj4gT25lIGtleSBkaWZmZXJl
bmNlIGJldHdlZW4gdGhpcyB0YXNrIGNhY2hlIGFuZCB0aGUgbG9jYWwgdGFzayBhcmNoaXZlIGlz
Cj4gdGhhdCB3ZSBuZWVkIHRvIGhhbmRsZSB0YXNrcyBjb21pbmcgaW4gb3V0LW9mLW9yZGVyLCBl
LmcuIGlmIHJlbW90ZXMKPiB3ZXJlIG5vdCByZWFjaGFibGUgZm9yIGEgY2VydGFpbiB0aW1lLiBU
byBtYWludGFpbiB0aGUgb3JkZXJpbmcgaW4gdGhlCj4gZmlsZSwgd2UgaGF2ZSB0byBtZXJnZSB0
aGUgbmV3bHkgYXJyaXZlZCB0YXNrcyBpbnRvIHRoZSBleGlzdGluZyB0YXNrCj4gZmlsZS4gVGhp
cyB3YXMgaW1wbGVtZW50ZWQgaW4gYSB3YXkgdGhhdCBhdm9pZHMgcmVhZGluZyB0aGUgZW50aXJl
IGZpbGUKPiBpbnRvIG1lbW9yeSBhdCBvbmNlLCBleHBsb2l0aW5nIHRoZSBmYWN0IHRoYXQgdGhl
IGNvbnRlbnRzIG9mIHRoZQo+IGV4aXN0aW5nIGZpbGUgYXJlIGFscmVhZHkgc29ydGVkLiBUaGlz
IGFsbG93cyB0byBkbyBhIHppcHBlci9tZXJnZS1zb3J0Cj4gbGlrZSBhcHByb2FjaCAoc2VlIE1l
cmdlVGFza0l0ZXJhdG9yIGZvciBkZXRhaWxzKS4gVGhlIGV4aXN0aW5nIGZpbGUgaXMKPiBvbmx5
IHJlYWQgbGluZS1ieS1saW5lIGFuZCBmaW5hbGx5IHJlcGxhY2VkIGF0b21pY2FsbHkuCj4gCj4g
VGhlIGNhY2hlIGFsc28gaGFzIGEgc2VwYXJhdGUgc3RhdGUgZmlsZSwgY29udGFpbmluZyBhZGRp
dGlvbmFsCj4gaW5mb3JtYXRpb24sIGUuZy4gY3V0LW9mZiB0aW1lc3RhbXBzIGZvciB0aGUgcG9s
bGluZyB0YXNrLiBTb21lIG9mIHRoZQo+IGRhdGEgaW4gdGhlIHN0YXRlZmlsZSBpcyB0ZWNobmlj
YWxseSBhbHNvIGNvbnRhaW5lZCBpbiB0aGUgYXJjaGl2ZQo+IGZpbGVzLCBidXQgcmVhZGluZyB0
aGUgc3RhdGUgZmlsZSBpcyBtdWNoIGZhc3Rlci4KPiAKPiBUaGlzIGNvbW1pdCBhbHNvIGFkZHMg
YW4gZWxhYm9yYXRlIHN1aXRlIG9mIHVuaXQgdGVzdHMgZm9yIHRoaXMgbmV3Cj4gY2FjaGUuIFdo
aWxlIGFkZGluZyBzb21lIGFkZGl0aW9uYWwgd29yayB1cCBmcm9udCwgdGhleSBwYWlkIG9mZgo+
IHRoZW1zZWx2ZXMgZHVyaW5nIGRldmVsb3BtZW50IHF1aXRlIHF1aWNrbHksIHNpbmNlIHRoZSBv
dmVyYWxsIGFwcHJvYWNoCj4gZm9yIHRoZSBjYWNoZSBjaGFuZ2VkIGEgY291cGxlIG9mIHRpbWVz
LiBUaGUgdGVzdCBzdWl0ZSBnYXZlIG1lCj4gY29uZmlkZW5jZSB0aGF0IHRoZSBkZXNpZ24gY2hh
bmdlcyBkaWRuJ3Qgc2NyZXcgYW55dGhpbmcgdXAsIGNhdGNoaW5nIGEKPiBjb3VwbGUgb2YgYnVn
cyBpbiB0aGUgcHJvY2Vzcy4KPiAKPiBGaW5hbGx5LCBzb21lIGNvbmNyZXRlIG51bWJlcnMgYWJv
dXQgdGhlIHBlcmZvcm1hbmNlIGltcHJvdm1lbnRzLgo+IEJlbmNobWFya2luZyB3YXMgZG9uZSB1
c2luZyB0aGUgJ2Zha2UtcmVtb3RlJyBmZWF0dXJlLiBUaGVyZSB3ZXJlIDEwMAo+IHJlbW90ZXMs
IDEwIFBWRSBub2RlcyBwZXIgcmVtb3RlLiBUaGUgdGFzayBjYWNoZSBjb250YWluZWQKPiBhYm91
dCAxLjUgbWlsbGlvbiB0YXNrcy4KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJlZm9yZSAgICAgICAgIGFmdGVyCj4gbGlzdCBvZiBhY3RpdmUgdGFza3Mg
KCopOiAgICAgICAgICAgICAgICAgICAgIH4xLjNzICAgICAgICAgfjMwMMK1cwo+IGxpc3Qgb2Yg
NTAwIHRhc2tzLCBvZmZzZXQgMCAoKiopOiAgICAgICAgICAgICB+MS4zcyAgICAgICAgfjE0NTDC
tXMKPiBsaXN0IG9mIDUwMCB0YXNrcywgb2Zmc2V0IDEgbWlsbGlvbiAoKioqKTogICAgfjEuM3Mg
ICAgICAgICB+MTc1bXMKPiBTaXplIG9uIGRpc2s6ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfjUwME1CICAgICAgICB+MjAwTUIKPiAKPiAoKik6ICBSZXF1ZXN0ZWQgYnkgdGhlIFVJ
IGV2ZXJ5IDNzCj4gKCoqKTogUmVxdWVzdGVkIGJ5IHRoZSBVSSB3aGVuIHZpc2l0aW5nIFJlbW90
ZXMgPiBUYXNrcwo+ICgqKiopOiBFLmcuIHdoZW4gc2Nyb2xsaW5nIHRvd2FyZHMgdGhlIGJvdHRv
bSBvZiAnUmVtb3RlcyA+IFRhc2tzJwo+IAo+IEluIHRoZSBvbGQgaW1wbGVtZW50YXRpb24sIHRo
ZSBhcmNoaXZlIGZpbGUgd2FzICphbHdheXMqIGZ1bGx5Cj4gZGVzZXJpYWxpemVkIGFuZCBsb2Fk
ZWQgaW50byBSQU0sIHRoaXMgaXMgdGhlIHJlYXNvbiB3aHkgdGhlIHRpbWUgbmVlZGVkCj4gaXMg
cHJldHR5IGlkZW50aWFsIGZvciBhbGwgc2NlbmFyaW9zLiBUaGUgbmV3IGltcGxlbWVudGF0aW9u
IHJlYWRzIHRoZQo+IGFyY2hpdmUgZmlsZXMgb25seSBsaW5lIGJ5IGxpbmUsIGFuZCBvbmx5IDUw
MCB0YXNrcyB3ZXJlIGxvYWRlZCBpbnRvIFJBTQo+IGF0IHRoZSBzYW1lIHRpbWUuIFRoZSBoaWdo
ZXIgdGhlIG9mZnNldCwgdGhlIG1vcmUgYXJjaGl2ZSBsaW5lcy9maWxlcyB3ZQo+IGhhdmUgdG8g
c2Nhbiwgd2hpY2ggaW5jcmVhc2VzIHRoZSB0aW1lIG5lZWRlZCB0byBhY2Nlc3MgdGhlIGRhdGEu
IFRoZQo+IHRhc2tzIGFyZSBzb3J0ZWQgZGVzY2VuZGluZyBieSBzdGFydHRpbWUsIGFzIGEgcmVz
dWx0IHRoZSByZXF1ZXN0cyBnZXQKPiBzbG93ZXIgdGhlIGZ1cnRoZXIgeW91IGdvIGJhY2sgaW4g
aGlzdG9yeS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBMdWthcyBXYWduZXIgPGwud2FnbmVyQHByb3ht
b3guY29tPgo+IC0tLQo+IAo+IE5vdGVzOgo+ICAgICAgQ2hhbmdlcyBzaW5jZSB2MzoKPiAgICAg
ICAgLSBJbmNsdWRlZCBiZW5jaG1hcmsgcmVzdWx0cyBpbiB0aGUgY29tbWl0IG1lc3NhZ2UKPiAg
ICAgICAgLSBEcm9wIGBwdWJgIGZvciBUYXNrQ2FjaGU6OndyaXRlX3N0YXRlCj4gICAgICAKPiAg
ICAgIENoYW5nZXMgc2luY2UgdjI6Cj4gICAgICAgIC0gSW5jb3Jwb3JhdGUgZmVlZGJhY2sgZnJv
bSBXb2xmYW5nICh0aHghKQo+ICAgICAgICAgICAtIGVsaW1pbmF0ZSBvbmUgLmNsb25lKCkKPiAg
ICAgICAgICAgLSBnZXRfdGFza3Nfd2l0aF9sb2NrOiBkaXJlY3RseSBjcmVhdGUgaXRlcmF0b3Ig
b3ZlciBQYXRoQnVmCj4gICAgICAgICAgICAgaW5zdGVhZCBvZiBmaXJzdCBjcmVhdGluZyBBcmNo
aXZlRmlsZSB2ZWMgYW5kIHRoZSBtYXBwaW5nCj4gICAgICAgICAgIC0gRml4ZWQgVE9DVE9VIHJh
Y2UgY29uZGl0aW9uIChjaGVja2VkIFBhdGg6OmV4aXN0cyBpbnN0ZWFkIG9mCj4gICAgICAgICAg
ICAgdHJ5aW5nIHRoZSBhY3R1YWwgb3BlcmF0aW9uIGFuZCByZWFjdGluZyB0byBFcnJvcktpbmQ6
Ok5vdEZvdW5kKQo+ICAgICAgICAgICAtIGhhbmRsZSBlcnJvciB3aGVuIHJlcGxhY2luZyAnYWN0
aXZlJyBmaWxlCj4gICAgICAgICAgIC0gdW5saW5rIHRlbXAgZmlsZSB3aGVuIHJlcGxhY2luZyB0
aGUgYXJjaGl2ZSBmaWxlIGRpZCBub3Qgd29yawo+ICAgICAgICAgICAtIGF2b2lkIFVURjggZGVj
b2Rpbmcgd2hlcmUgbm90IHJlYWxseSBuZWNlc3NhcnkKPiAgICAgICAgLSBBZGRlZCBhIGNvdXBs
ZSBvZiAuY29udGV4dCgpLy53aXRoX2NvbnRleHQoKSBmb3IgYmV0dGVyIGVycm9yCj4gICAgICAg
ICAgbWVzc2FnZXMKPiAgICAgICAgLSBFeHRyYWN0ZWQgdGhlIGZpbGUgbmFtZXMgaW50byBjb25z
dHMKPiAgICAgICAgLSBGaXhlZCBzb21lIGNsaXBweSBpc3N1ZXMgKC5jbG9uZSgpIGZvciBDcmVh
dGVPcHRpb25zIC0gd2hlbgo+ICAgICAgICAgIHRoaXMgc2VyaWVzIHdhcyB3cml0dGVuLCBDcmVh
dGVPcHRpb25zIHdlcmUgbm90IENvcHkgeWV0KQo+IAo+ICAgc2VydmVyL3NyYy9yZW1vdGVfdGFz
a3MvbW9kLnJzICAgICAgICB8ICAgIDIgKwo+ICAgc2VydmVyL3NyYy9yZW1vdGVfdGFza3MvdGFz
a19jYWNoZS5ycyB8IDEwMjIgKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgMiBmaWxlcyBj
aGFuZ2VkLCAxMDI0IGluc2VydGlvbnMoKykKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBzZXJ2ZXIv
c3JjL3JlbW90ZV90YXNrcy90YXNrX2NhY2hlLnJzCj4gCj4gZGlmZiAtLWdpdCBhL3NlcnZlci9z
cmMvcmVtb3RlX3Rhc2tzL21vZC5ycyBiL3NlcnZlci9zcmMvcmVtb3RlX3Rhc2tzL21vZC5ycwo+
IGluZGV4IDIzNGZmYTc2Li43YzhlMzFlZiAxMDA2NDQKPiAtLS0gYS9zZXJ2ZXIvc3JjL3JlbW90
ZV90YXNrcy9tb2QucnMKPiArKysgYi9zZXJ2ZXIvc3JjL3JlbW90ZV90YXNrcy9tb2QucnMKPiBA
QCAtMTgsNiArMTgsOCBAQCB1c2UgdG9raW86OnRhc2s6OkpvaW5IYW5kbGU7Cj4gICAKPiAgIHVz
ZSBjcmF0ZTo6e2FwaTo6cHZlLCB0YXNrX3V0aWxzfTsKPiAgIAo+ICttb2QgdGFza19jYWNoZTsK
PiArCj4gICAvLy8gR2V0IHRhc2tzIGZvciBhbGwgcmVtb3Rlcwo+ICAgLy8gRklYTUU6IGZpbHRl
ciBmb3IgcHJpdmlsZWdlcwo+ICAgcHViIGFzeW5jIGZuIGdldF90YXNrcyhtYXhfYWdlOiBpNjQs
IGZpbHRlcnM6IFRhc2tGaWx0ZXJzKSAtPiBSZXN1bHQ8VmVjPFRhc2tMaXN0SXRlbT4sIEVycm9y
PiB7Cj4gZGlmZiAtLWdpdCBhL3NlcnZlci9zcmMvcmVtb3RlX3Rhc2tzL3Rhc2tfY2FjaGUucnMg
Yi9zZXJ2ZXIvc3JjL3JlbW90ZV90YXNrcy90YXNrX2NhY2hlLnJzCj4gbmV3IGZpbGUgbW9kZSAx
MDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uZjhkZDgyMWUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIv
c2VydmVyL3NyYy9yZW1vdGVfdGFza3MvdGFza19jYWNoZS5ycwo+IEBAIC0wLDAgKzEsMTAyMiBA
QAo+ICsvLyEgVGFzayBjYWNoZSBpbXBsZW1lbnRhdGlvbiwgYmFzZWQgb24gcm90YXRpbmcgZmls
ZXMuCj4gKwo+ICt1c2Ugc3RkOjp7Cj4gKyAgICBjbXA6Ok9yZGVyaW5nLAo+ICsgICAgY29sbGVj
dGlvbnM6OntIYXNoTWFwLCBIYXNoU2V0fSwKPiArICAgIGZzOjpGaWxlLAo+ICsgICAgaW86OntC
dWZSZWFkLCBCdWZSZWFkZXIsIEJ1ZldyaXRlciwgRXJyb3JLaW5kLCBMaW5lcywgV3JpdGV9LAo+
ICsgICAgaXRlcjo6UGVla2FibGUsCj4gKyAgICBwYXRoOjp7UGF0aCwgUGF0aEJ1Zn0sCj4gKyAg
ICB0aW1lOjpEdXJhdGlvbiwKPiArfTsKPiArCj4gK3VzZSBhbnlob3c6OntDb250ZXh0LCBFcnJv
cn07Cj4gK3VzZSBwcm94bW94X3N5czo6ZnM6OkNyZWF0ZU9wdGlvbnM7Cj4gK3VzZSBzZXJkZTo6
e0Rlc2VyaWFsaXplLCBTZXJpYWxpemV9Owo+ICsKPiArdXNlIHBkbV9hcGlfdHlwZXM6OlJlbW90
ZVVwaWQ7Cj4gKwo+ICsvLy8gRmlsZW5hbWUgZm9yIHRoZSBmaWxlIGNvbnRhaW5pbmcgcnVubmlu
ZyB0YXNrcy4KPiArY29uc3QgQUNUSVZFX0ZJTEVOQU1FOiAmc3RyID0gImFjdGl2ZSI7Cj4gKy8v
LyBGaWxlbmFtZSBwcmVmaXggZm9yIGFyY2hpdmUgZmlsZXMuCj4gK2NvbnN0IEFSQ0hJVkVfRklM
RU5BTUVfUFJFRklYOiAmc3RyID0gImFyY2hpdmUuIjsKPiArLy8vIEZpbGVuYW1lIGZvciB0aGUg
c3RhdGUgZmlsZS4KPiArY29uc3QgU1RBVEVfRklMRU5BTUU6ICZzdHIgPSAic3RhdGUiOwo+ICsv
Ly8gRmlsZW5hbWUgb2YgdGhlIGFyY2hpdmUgbG9ja2ZpbGUuCj4gK2NvbnN0IExPQ0tGSUxFX0ZJ
TEVOQU1FOiAmc3RyID0gIi5sb2NrIjsKPiArCj4gKy8vLyBJdGVtIHdoaWNoIGNhbiBiZSBwdXQg
aW50byB0aGUgdGFzayBjYWNoZS4KPiArI1tkZXJpdmUoQ2xvbmUsIERlYnVnLCBTZXJpYWxpemUs
IERlc2VyaWFsaXplLCBIYXNoLCBQYXJ0aWFsRXEsIEVxKV0KPiArcHViIHN0cnVjdCBUYXNrQ2Fj
aGVJdGVtIHsKPiArICAgIC8vLyBUaGUgdGFzaydzIFVQSUQKPiArICAgIHB1YiB1cGlkOiBSZW1v
dGVVcGlkLAo+ICsgICAgLy8vIFRoZSB0aW1lIGF0IHdoaWNoIHRoZSB0YXNrIHdhcyBzdGFydGVk
IChzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2NoKS4KPiArICAgIC8vLyBUZWNobmljYWxseSB0
aGlzIGlzIGFsc28gY29udGFpbmVkIHdpdGhpbiB0aGUgVVBJRCwgZHVwbGljYXRpbmcgaXQgaGVy
ZQo+ICsgICAgLy8vIGFsbG93cyB1cyB0byBkaXJlY3RseSBhY2Nlc3MgaXQgd2hlbiBzb3J0aW5n
IGluIG5ldyB0YXNrcywgd2l0aG91dCBoYXZpbmcKPiArICAgIC8vLyB0byBwYXJzZSB0aGUgVVBJ
RC4KPiArICAgIHB1YiBzdGFydHRpbWU6IGk2NCwKCmluc3RlYWQgb2Ygc2F2aW5nIHRoZSBzdGFy
dHRpbWUgaGVyZSwgY291bGRuJ3Qgd2UgYWxzbyB1c2UgdGhlIHBhcnNlZApVUElEIHN0cnVjdCAr
IHJlbW90ZSBpbnN0ZWFkPwoKbm90IHN1cmUgYWJvdXQgdGhlIG1lbW9yeSBpbXBsaWNhdGlvbnMs
IGJ1dCB0aGVuIHdlIGNvdWxkIGF2b2lkIHRoaW5ncwpsaWtlIHlvdSBoYXZpbmcgdG8gcGFydGlh
bGx5IG1vdmUgdGhlIHVwaWQgb3V0IG9mIGEgc3RydWN0IGFuZCBiYWNrIGFnYWluCmZvciByZW1v
dmluZyBvdXQgb2YgYSBoYXNoc2V0CgoodGhvdWdoIGl0J3MgYWxzbyBmaW5lIGFzIGl0IGlzIGZv
ciBtZSkKCj4gKyAgICAjW3NlcmRlKHNraXBfc2VyaWFsaXppbmdfaWYgPSAiT3B0aW9uOjppc19u
b25lIildCj4gKyAgICAvLy8gVGhlIHRhc2sncyBzdGF0dXMuCj4gKyAgICBwdWIgc3RhdHVzOiBP
cHRpb248U3RyaW5nPiwKPiArICAgICNbc2VyZGUoc2tpcF9zZXJpYWxpemluZ19pZiA9ICJPcHRp
b246OmlzX25vbmUiKV0KPiArICAgIC8vLyBUaGUgdGFzaydzIGVuZHRpbWUgKHNlY29uZHMgc2lu
Y2UgdGhlIFVOSVggZXBvY2gpLgo+ICsgICAgcHViIGVuZHRpbWU6IE9wdGlvbjxpNjQ+LAo+ICt9
Cj4gKwo+ICsvLy8gU3RhdGUgbmVlZGVkIGZvciB0YXNrIHBvbGxpbmcuCj4gKyNbZGVyaXZlKFNl
cmlhbGl6ZSwgRGVzZXJpYWxpemUsIERlZmF1bHQpXQo+ICsjW3NlcmRlKHJlbmFtZV9hbGwgPSAi
a2ViYWItY2FzZSIpXQo+ICtwdWIgc3RydWN0IFN0YXRlIHsKPiArICAgIC8vLyBNYXAgb2YgcmVt
b3RlIC0+IG1vc3QgcmVjZW50IHRhc2sgc3RhcnR0aW1lIChVTklYIGVwb2NoKSBpbiB0aGUgYXJj
aGl2ZS4KPiArICAgIC8vLyBUaGlzIGNhbiBiZSB1c2VkIGFzIGEgY3V0LW9mZiB3aGVuIHJlcXVl
c3RpbmcgbmV3IHRhc2sgZGF0YS4KPiArICAgIHB1YiBtb3N0X3JlY2VudF9hcmNoaXZlX3N0YXJ0
dGltZTogSGFzaE1hcDxTdHJpbmcsIGk2ND4sCj4gKyAgICAvLy8gT2xkZXN0IHJ1bm5pbmcgdGFz
ay4gVXNlZnVsIGFzIGFub3RoZXIgY3V0LW9mZiBmb3IgZmV0Y2hpbmcgdGFza3MuCj4gKyAgICAv
Ly8gVGhlIHRpbWVzdGFtcCBpcyBiYXNlZCBvbiBzZWNvbmRzIHNpbmNlIHRoZSBVTklYIGVwb2No
Lgo+ICsgICAgcHViIG9sZGVzdF9hY3RpdmVfdGFzazogSGFzaE1hcDxTdHJpbmcsIGk2ND4sPiAr
ICAgIC8vLyBUcmFja2VkIHRhc2tzIHBlciByZW1vdGUuCj4gKyAgICBwdWIgdHJhY2tlZF90YXNr
czogSGFzaE1hcDxTdHJpbmcsIEhhc2hTZXQ8UmVtb3RlVXBpZD4+LAo+ICt9Cgp3b3VsZG4ndCBp
dCBiZSBwb3NzaWJsZSB0byBqdXN0IHNhdmUgdGhlIGN1dG9mZiB0aW1lPwp3ZSBqdXN0IGhhdmUg
dG8gZmlyc3QgaW5jcmVhdGUgdGhlIHRpbWUgZm9yIHRoZSBmaW5pc2hlZCB0YXNrcwphbmQgYWZ0
ZXJ3YXJkcyByZWR1Y2UgaXQgYWdhaW4gaWYgdGhlcmUgaXMgc3RpbGwgYW4gYWN0aXZlIHRhc2s/
CgphbHNvIHdvdWxkIGl0IGJlIHBvc3NpYmxlIHRvIGNvbWJpbmUgdGggaGFzaG1hcHMgaW50byBv
bmU/CmUuZy4gSGFzaE1hcDxTdHJpbmcsIChpNjQsIEhhc2hTZXQ8U3RyaW5nPik+ID8KCnRoYXQg
d2F5IHdlIHdvdWxkIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHRpbWVzIHdlIHNhdmUgdGhlIHJlbW90
ZSBpbiB0aGUgZmlsZQp3aGljaCBjYW4gYWRkIHVwIGlmIHdlIGhhdmUgbWFueSByZW1vdGVzIChl
LmcuIGh1bmRyZWRzKQoKc28gaW5zdGVhZCBvZgoKewoJIm1vc3QtcmVjZW50LWFyY2hpdmUtc3Rh
cnR0aW1lIjogewoJCSJyZW1vdGUtMSI6IDEyMzEyMywKCQkicmVtb3RlLTIiOiAxMjMxMjMsCgl9
LAogIAkib2xkZXN0X2FjdGl2ZV90YXNrIiA6IHsKCQkicmVtb3RlLTEiOiAyMzIzMjMsCgkJInJl
bW90ZS0yIjogMjMyMzIzLAoJfSwKCSJ0cmFja2VkLXRhc2tzIjogewoJCSJyZW1vdGUtMSI6IFsK
CQkJInJlbW90ZS0xITxVUElEMT4iLAoJCQkicmVtb3RlLTEhPFVQSUQyPiIKCQldCgl9Cn0KCml0
IHdvdWxkIGJlOgoKewoJInN0YXRlIjogewoJCSJyZW1vdGUtMSI6IFsKCQkJMTIzMTIzLAoJCQlb
IjxVUElEMT4iLCAiPFVQSUQyPiJdCgkJXSwKCQkicmVtb3RlLTIiOiBbCgkJCTEyMzEyMywKCQkJ
W10KCQldCgl9Cn0KCj4gKwo+ICsvLy8gQ2FjaGUgZm9yIHJlbW90ZSB0YXNrcy4KPiArI1tkZXJp
dmUoQ2xvbmUpXQo+ICtwdWIgc3RydWN0IFRhc2tDYWNoZSB7Cj4gKyAgICAvLy8gUGF0aCB3aGVy
ZSB0aGUgY2FjaGUncyBmaWxlcyBzaG91bGQgYmUgcGxhY2VkLgo+ICsgICAgYmFzZV9wYXRoOiBQ
YXRoQnVmLAo+ICsgICAgLy8vIEZpbGUgcGVybWlzc2lvbnMgZm9yIHRoZSBjYWNoZSdzIGZpbGVz
Lgo+ICsgICAgY3JlYXRlX29wdGlvbnM6IENyZWF0ZU9wdGlvbnMsCj4gK30KPiArCj4gKy8vLyBU
YXNrcyB0aGF0IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgY2FjaGUgdmlhIFtgVGFza0NhY2hlOjph
ZGRfdGFza3NgXS4KPiArcHViIHN0cnVjdCBBZGRUYXNrcyB7Cj4gKyAgICAvLy8gVXBkYXRlIHRo
ZSByZW1vdGUncyBlbnRyeSBpbiB0aGUgc3RhdGVmaWxlIHdoaWNoIGNvbnRhaW5zIHRoZQo+ICsg
ICAgLy8vIHRpbWVzdGFtcCBvZiB0aGUgbW9zdCByZWNlbnQgKmZpbmlzaGVkKiB0YXNrIGZyb20g
dGhlIHRhc2sgYXJjaGl2ZS4KPiArICAgIHB1YiB1cGRhdGVfbW9zdF9yZWNlbnRfYXJjaGl2ZV90
aW1lc3RhbXA6IGJvb2wsCj4gKyAgICAvLy8gVGhlIHRhc2tzIHRvIGFkZC4KPiArICAgIHB1YiB0
YXNrczogVmVjPFRhc2tDYWNoZUl0ZW0+LAo+ICt9Cj4gKwo+ICsvLy8gTG9jayBmb3IgdGhlIGNh
Y2hlLgo+ICsjW2FsbG93KGRlYWRfY29kZSldCj4gK3B1YiBzdHJ1Y3QgVGFza0NhY2hlTG9jayhG
aWxlKTsKPiArCj4gKy8vLyBXaGljaCB0YXNrcyB0byBmZXRjaCBmcm9tIHRoZSBhcmNoaXZlLgo+
ICtwdWIgZW51bSBHZXRUYXNrcyB7Cj4gKyAgICAvLy8gR2V0IGFsbCB0YXNrcywgZmluaXNoZWQg
YW5kIHJ1bm5pbmcuCj4gKyAgICBBbGwsCj4gKyAgICAvLy8gT25seSBnZXQgcnVubmluZyAoYWN0
aXZlKSB0YXNrcy4KPiArICAgIEFjdGl2ZSwKPiArICAgICNbY2ZnKHRlc3QpXSAvLyBVc2VkIGJ5
IHRlc3RzLCBtaWdodCBiZSB1c2VkIGJ5IHByb2R1Y3Rpb24gY29kZSBpbiB0aGUgZnV0dXJlCj4g
KyAgICAvLy8gT25seSBnZXQgZmluaXNoZWQgKGFyY2hpdmVkKSB0YXNrcy4KPiArICAgIEFyY2hp
dmVkLAo+ICt9Cj4gKwo+ICtpbXBsIFRhc2tDYWNoZSB7Cj4gKyAgICAvLy8gQ3JlYXRlIGEgbmV3
IHRhc2sgY2FjaGUgaW5zdGFuY2UuCj4gKyAgICAvLy8KPiArICAgIC8vLyBSZW1lbWJlciB0byBj
YWxsIGBpbml0YCBvciBgbmV3X2ZpbGVgIHRvIGNyZWF0ZSBpbml0aWFsIGFyY2hpdmUgZmlsZXMg
YmVmb3JlCj4gKyAgICAvLy8gYWRkaW5nIGFueSB0YXNrcy4KCk5vdCBzdXJlIGlmIHdlIHVzZSB0
aGlzIGtpbmQgb2YgcGF0dGVybiBzb21ld2hlcmUgYWxyZWFkeSwgYnV0IGlmIHlvdSB1c2UgZGlm
ZmVyZW50CnR5cGVzIGZvciBkaWZmZXJlbnQgbWV0aG9kcz8KCgplLmcuIGhhdmluZyBhIFRhc2tD
YWNoZSBhbmQgYW4gV3JpdGFibGVUYXNrQ2FjaGUgd2hlcmUgb25seSB0aGUgc2Vjb25kIGhhcwph
ZGRfdGFza3MgYW5kIHlvdSBjYW4gb25seSByZWFjaCBpdCBieSB1c2luZyBpbml0L25ld19maWxl
ID8KCnRoZW4gaXQgY2Fubm90IGhhcHBlbiB0aGF0IGFkZCBpcyBjYWxsZWQgZmFsc2VseQoKU2Ft
ZSB3aXRoIHRoZSAubG9jaygpIGNhbGxzCgpJZiB0aGVyZSB3b3VsZCBiZSBhIExvY2tlZFRhc2tD
YWNoZSB0aGF0IGNhbiBkbyBldmVyeXRoaW5nIHRoYXQgeW91IGNhbiBkbyB3aXRoIGEgbG9jawp0
aGVyZSBpcyBubyBuZWVkIHRvIG1hbnVhbGx5IGhhbmRsZSB0aGUgbG9jayBhbnl3aGVyZSBvdXRz
aWRlIHRoaXMgbW9kdWxlCihwcm9iYWJseSBuZWVkcyB0d28gdmFyaWFudHMsIG9uZSBmb3IgcmVh
ZGluZyBhbmQgb25lIGZvciB3cml0aW5nKQoKCj4gKyAgICBwdWIgZm4gbmV3PFA6IEFzUmVmPFBh
dGg+PihwYXRoOiBQLCBjcmVhdGVfb3B0aW9uczogQ3JlYXRlT3B0aW9ucykgLT4gUmVzdWx0PFNl
bGYsIEVycm9yPiB7Cj4gKyAgICAgICAgT2soU2VsZiB7Cj4gKyAgICAgICAgICAgIGJhc2VfcGF0
aDogcGF0aC5hc19yZWYoKS5pbnRvKCksCj4gKyAgICAgICAgICAgIGNyZWF0ZV9vcHRpb25zLAo+
ICsgICAgICAgIH0pCj4gKyAgICB9Cj4gKwo+ICsgICAgLy8vIENyZWF0ZSBpbml0aWFsIHRhc2sg
YXJjaGl2ZXMgdGhhdCBjYW4gYmUgYmFja2ZpbGxlZCB3aXRoIHRoZQo+ICsgICAgLy8vIHJlY2Vu
dCB0YXNrIGhpc3RvcnkgZnJvbSBhIHJlbW90ZS4KPiArICAgIC8vLwo+ICsgICAgLy8vIFRoaXMg
ZnVuY3Rpb24gb25seSBoYXMgYW4gZWZmZWN0IGlmIHRoZXJlIGFyZSBubyBhcmNoaXZlIGZpbGVz
IHlldC4KPiArICAgIHB1YiBmbiBpbml0KCZzZWxmLCBub3c6IGk2NCwgbnVtYmVyX29mX2ZpbGVz
OiB1NjQsIHBlcmlvZF9wZXJfZmlsZTogdTY0KSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4gKyAg
ICAgICAgbGV0IF9sb2NrID0gc2VsZi5sb2NrKHRydWUpLmNvbnRleHQoImZhaWxlZCB0byBsb2Nr
IGFyY2hpdmUiKT87Cj4gKwo+ICsgICAgICAgIGlmIHNlbGYuYXJjaGl2ZV9maWxlcygpPy5pc19l
bXB0eSgpIHsKPiArICAgICAgICAgICAgZm9yIGkgaW4gMC4ubnVtYmVyX29mX2ZpbGVzIHsKPiAr
ICAgICAgICAgICAgICAgIHNlbGYubmV3X2ZpbGUobm93IC0gKGkgKiBwZXJpb2RfcGVyX2ZpbGUp
IGFzIGk2NCk/Owo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBP
aygoKSkKPiArICAgIH0KPiArCj4gKyAgICAvLy8gU3RhcnQgYSBuZXcgYXJjaGl2ZSBmaWxlIHdp
dGggYSBnaXZlbiB0aW1lc3RhbXAuCj4gKyAgICAvLy8gYG5vd2AgaXMgc3VwcG9zZWQgdG8gYmUg
YSBVTklYIHRpbWVzdGFtcCAoc2Vjb25kcykuCj4gKyAgICBmbiBuZXdfZmlsZSgmc2VsZiwgbm93
OiBpNjQpIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKPiArICAgICAgICBsZXQgbmV3X3BhdGggPSBz
ZWxmCj4gKyAgICAgICAgICAgIC5iYXNlX3BhdGgKPiArICAgICAgICAgICAgLmpvaW4oZm9ybWF0
ISgie0FSQ0hJVkVfRklMRU5BTUVfUFJFRklYfXtub3d9IikpOwo+ICsgICAgICAgIGxldCBtdXQg
ZmlsZSA9IEZpbGU6OmNyZWF0ZSgmbmV3X3BhdGgpPzsKPiArICAgICAgICBzZWxmLmNyZWF0ZV9v
cHRpb25zLmFwcGx5X3RvKCZtdXQgZmlsZSwgJm5ld19wYXRoKT87Cj4gKwo+ICsgICAgICAgIE9r
KCgpKQo+ICsgICAgfQo+ICsKPiArICAgIC8vLyBMb2NrIHRoZSBjYWNoZS4KPiArICAgIGZuIGxv
Y2soJnNlbGYsIGV4Y2x1c2l2ZTogYm9vbCkgLT4gUmVzdWx0PFRhc2tDYWNoZUxvY2ssIEVycm9y
PiB7Cj4gKyAgICAgICAgbGV0IGxvY2tmaWxlID0gc2VsZi5iYXNlX3BhdGguam9pbihMT0NLRklM
RV9GSUxFTkFNRSk7Cj4gKwo+ICsgICAgICAgIGxldCBmZCA9IHByb3htb3hfc3lzOjpmczo6b3Bl
bl9maWxlX2xvY2tlZCgKPiArICAgICAgICAgICAgbG9ja2ZpbGUsCj4gKyAgICAgICAgICAgIER1
cmF0aW9uOjpmcm9tX3NlY3MoMTUpLAoKCmp1c3QgZm9yIG15IGN1cmlvc2l0eSAobm90IGEgY3Jp
dGlxdWUpOiBpcyB0aGVyZSBhIHNwZWNpYWwgcmVhc29uCndoeSB5b3Ugc2V0IHRoZSB0aW1lb3V0
IG1hbnVhbGx5IHRvIDE1IHNlY29uZHMgaW5zdGVhZCBvZiBsZWF2aW5nIGl0IHRvCnRoZSBmdW5j
dGlvbiB0byB1c2UgdGhlIGRlZmF1bHQ/CgpyZWFzb24gZm9yIG15IHF1ZXN0aW9uIGlzOiBpZiB5
b3Ugb2Z0ZW4gcmFuIGludG8gdGltZW91dHMgd2l0aCBqdXN0IDEwIHNlY29uZHMgKGFmYWlyIHRo
ZSBkZWZhdWx0KSwKY2hhbmNlcyBhcmUgdXNlcnMgaW4gdGhlIHdpbGQgd2lsbCBydW4gaW50byBp
dCB3aXRoIDE1IHNlY29uZHMgdG9vLCBzbyB3ZSBtaWdodCB3YW50IHRvIGVpdGhlciB1c2UKYSAq
bXVjaCogYmlnZ2VyIHRpbWVvdXQsIG9yIG1ha2UgaXQgc29tZWhvdyBjb25maWd1cmFibGUuCgo+
ICsgICAgICAgICAgICBleGNsdXNpdmUsCj4gKyAgICAgICAgICAgIHNlbGYuY3JlYXRlX29wdGlv
bnMsCj4gKyAgICAgICAgKT87Cj4gKwo+ICsgICAgICAgIE9rKFRhc2tDYWNoZUxvY2soZmQpKQo+
ICsgICAgfQo+ICsKPiArICAgIC8vLyBSb3RhdGUgdGFzayBhcmNoaXZlIGlmIHRoZSB0aGUgbmV3
ZXN0IGFyY2hpdmUgZmlsZSBpcyBvbGRlciB0aGFuIGByb3RhdGVfYWZ0ZXJgLgo+ICsgICAgLy8v
Cj4gKyAgICAvLy8gVGhlIG9sZGVzdCBhcmNoaXZlIGZpbGVzIGFyZSByZW1vdmVkIGlmIHRoZSB0
b3RhbCBudW1iZXIgb2YgYXJjaGl2ZSBmaWxlcyBleGNlZWRzCj4gKyAgICAvLy8gYG1heF9maWxl
c2AuIGBub3dgIGlzIHN1cHBvc2VkIHRvIGJlIGEgVU5JWCB0aW1lc3RhbXAgKHNlY29uZHMpLgo+
ICsgICAgLy8vCj4gKyAgICAvLy8gVGhpcyBmdW5jdGlvbiByZXF1ZXN0cyBhbiBleGNsdXNpdmUg
bG9jaywgZG9uJ3QgY2FsbCBpZiB5b3UgYWxyZWFkeSBob2xkIGEgbG9jay4KPiArICAgIHB1YiBm
biByb3RhdGUoJnNlbGYsIG5vdzogaTY0LCByb3RhdGVfYWZ0ZXI6IHU2NCwgbWF4X2ZpbGVzOiB1
NjQpIC0+IFJlc3VsdDxib29sLCBFcnJvcj4gewo+ICsgICAgICAgIGxldCBfbG9jayA9IHNlbGYu
bG9jayh0cnVlKS5jb250ZXh0KCJmYWlsZWQgdG8gbG9jayBhcmNoaXZlIik/Owo+ICsgICAgICAg
IGxldCBtdXQgZGlkX3JvdGF0ZSA9IGZhbHNlOwo+ICsKPiArICAgICAgICBsZXQgbXV0IGJvdW5k
cyA9IHNlbGYuYXJjaGl2ZV9maWxlcygpPzsKPiArCj4gKyAgICAgICAgbWF0Y2ggYm91bmRzLmZp
cnN0KCkgewo+ICsgICAgICAgICAgICBTb21lKGJvdW5kKSA9PiB7Cj4gKyAgICAgICAgICAgICAg
ICBpZiBub3cgPiBib3VuZC5zdGFydHRpbWUgJiYgbm93IC0gYm91bmQuc3RhcnR0aW1lID4gcm90
YXRlX2FmdGVyIGFzIGk2NCB7Cj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXdfZmlsZShu
b3cpPzsKPiArICAgICAgICAgICAgICAgICAgICBkaWRfcm90YXRlID0gdHJ1ZTsKPiArICAgICAg
ICAgICAgICAgIH0KPiArICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICBOb25lID0+IHsKPiAr
ICAgICAgICAgICAgICAgIHNlbGYubmV3X2ZpbGUobm93KT87Cj4gKyAgICAgICAgICAgICAgICBk
aWRfcm90YXRlID0gdHJ1ZTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0KPiArCj4gKyAg
ICAgICAgd2hpbGUgYm91bmRzLmxlbigpID49IG1heF9maWxlcyBhcyB1c2l6ZSB7Cj4gKyAgICAg
ICAgICAgIC8vIFVud3JhcCBpcyBzYWZlIGJlY2F1c2Ugb2YgdGhlIGxlbmd0aCBjaGVjayBhYm92
ZQo+ICsgICAgICAgICAgICBsZXQgdG9fcmVtb3ZlID0gYm91bmRzLnBvcCgpLnVud3JhcCgpOwo+
ICsgICAgICAgICAgICBzdGQ6OmZzOjpyZW1vdmVfZmlsZSgmdG9fcmVtb3ZlLmZpbGUpCj4gKyAg
ICAgICAgICAgICAgICAud2l0aF9jb250ZXh0KHx8IGZvcm1hdCEoImZhaWxlZCB0byByZW1vdmUg
e30iLCB0b19yZW1vdmUuZmlsZS5kaXNwbGF5KCkpKT87Cj4gKyAgICAgICAgfQo+ICsKPiArICAg
ICAgICBPayhkaWRfcm90YXRlKQo+ICsgICAgfQo+ICsKPiArICAgIC8vLyBBZGQgbmV3IHRhc2tz
IHRvIHRoZSB0YXNrIGFyY2hpdmUuCj4gKyAgICAvLy8KPiArICAgIC8vLyBSdW5uaW5nIHRhc2tz
ICh0YXNrcyB3aXRob3V0IGFuIGVuZHRpbWUpIGFyZSBwbGFjZWQgaW50byB0aGUgJ2FjdGl2ZScg
ZmlsZSBpbiB0aGUKPiArICAgIC8vLyB0YXNrIGNhY2hlIGJhc2UgZGlyZWN0b3J5LiBGaW5pc2hl
ZCB0YXNrcyBhcmUgc29ydGVkIGludG8gYGFyY2hpdmUuPHN0YXJ0aW1lPmAgYXJjaGl2ZQo+ICsg
ICAgLy8vIGZpbGVzLCB3aGVyZSBgPHN0YXJ0dGltZXM+YCBkZW5vdGVzIHRoZSBsb3dlc3QgcGVy
bWl0dGVkIHN0YXJ0IHRpbWUgdGltZXN0YW1wIGZvciBhIGdpdmVuCj4gKyAgICAvLy8gYXJjaGl2
ZSBmaWxlLiBJZiBhIHRhc2sgd2hpY2ggd2FzIGFkZGVkIGFzIHJ1bm5pbmcgcHJldmlvdXNseSBp
cyBhZGRlZCBhZ2FpbiwgdGhpcyB0aW1lIGluCj4gKyAgICAvLy8gYSBmaW5pc2hlZCBzdGF0ZSwg
aXQgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGBhY3RpdmVgIGZpbGUgYW5kIGFsc28gc29ydGVk
IGludG8KPiArICAgIC8vLyBvbmUgb2YgdGhlIGFyY2hpdmUgZmlsZXMuCj4gKyAgICAvLy8gU2Ft
ZSBnb2VzIGZvciB0aGUgbGlzdCBvZiB0cmFja2VkIHRhc2tzOyB0aGUgZW50cnkgaW4gdGhlIHN0
YXRlIGZpbGUgd2lsbCBiZSByZW1vdmVkLgo+ICsgICAgLy8vCj4gKyAgICAvLy8gQ3Jhc2ggY29u
c2lzdGVuY3k6Cj4gKyAgICAvLy8KPiArICAgIC8vLyBUaGUgc3RhdGUgZmlsZSwgd2hpY2ggY29u
dGFpbnMgdGhlIGN1dC1vZmYgdGltZXN0YW1wcyBmb3IgZnV0dXJlIHRhc2sgZmV0Y2hpbmcsIGlz
IHVwZGF0ZWQgYXQgdGhlCj4gKyAgICAvLy8gZW5kIGFmdGVyIGFsbCB0YXNrcyBoYXZlIGJlZW4g
YWRkZWQgaW50byB0aGUgYXJjaGl2ZS4gQWRkaW5nIHRhc2tzIGlzIGFuIGlkZW1wb3RlbnQKPiAr
ICAgIC8vLyBvcGVyYXRpb247IGFkZGluZyB0aGUgKnNhbWUqIHRhc2sgbXVsdGlwbGUgdGltZXMg
ZG9lcyBub3QgbGVhZCB0byBkdXBsaWNhdGVkIGVudHJpZXMgaW4gdGhlCj4gKyAgICAvLy8gdGFz
ayBhcmNoaXZlLiBJbmRpdmlkdWFsIGFyY2hpdmUgZmlsZXMgYXJlIHVwZGF0ZWQgYXRvbWljYWxs
eSwgYnV0IHNpbmNlCj4gKyAgICAvLy8gYWRkaW5nIHRhc2tzIGNhbiBpbnZvbHZlIHVwZGF0aW5n
IG11bHRpcGxlIGFyY2hpdmUgZmlsZXMsIHRoZSBhcmNoaXZlIGNvdWxkIGVuZCB1cAo+ICsgICAg
Ly8vIGluIGEgcGFydGlhbGx5LXVwZGF0ZWQsIGluY29uc2lzdGVudCBzdGF0ZSBpbiBjYXNlIG9m
IGEgY3Jhc2guCj4gKyAgICAvLy8gSG93ZXZlciwgc2luY2UgdGhlIHN0YXRlIGZpbGUgd2l0aCB0
aGUgY3V0LW9mZiB0aW1lc3RhbXBzIGlzIHVwZGF0ZWQgbGFzdCwKPiArICAgIC8vLyB0aGUgY29u
c2lzdGVuY3kgb2YgdGhlIGFyY2hpdmUgc2hvdWxkIGJlIHJlc3RvcmVkIGF0IHRoZSBuZXh0IHVw
ZGF0ZSBjeWNsZSBvZiB0aGUgYXJjaGl2ZS4KPiArICAgIHB1YiBmbiBhZGRfdGFza3MoJnNlbGYs
IG11dCBhZGRlZDogSGFzaE1hcDxTdHJpbmcsIEFkZFRhc2tzPikgLT4gUmVzdWx0PCgpLCBFcnJv
cj4gewo+ICsgICAgICAgIGxldCBsb2NrID0gc2VsZi5sb2NrKHRydWUpLmNvbnRleHQoImZhaWxl
ZCB0byBsb2NrIGFyY2hpdmUiKT87Cj4gKwo+ICsgICAgICAgIC8vIEdldCBhIGZsYXQgYFZlY2Ag
b2YgYWxsIG5ldyB0YXNrcwo+ICsgICAgICAgIGxldCB0YXNrczogVmVjPF8+ID0gYWRkZWQKPiAr
ICAgICAgICAgICAgLml0ZXJfbXV0KCkKPiArICAgICAgICAgICAgLmZsYXRfbWFwKHwoXywgdGFz
a3MpfCBzdGQ6Om1lbTo6dGFrZSgmbXV0IHRhc2tzLnRhc2tzKSkKPiArICAgICAgICAgICAgLmNv
bGxlY3QoKTsKPiArCj4gKyAgICAgICAgbGV0IHVwZGF0ZV9zdGF0ZV9mb3JfcmVtb3RlOiBIYXNo
TWFwPFN0cmluZywgYm9vbD4gPSBhZGRlZAo+ICsgICAgICAgICAgICAuaW50b19pdGVyKCkKPiAr
ICAgICAgICAgICAgLm1hcCh8KHJlbW90ZSwgYWRkX3Rhc2tzKXwgKHJlbW90ZSwgYWRkX3Rhc2tz
LnVwZGF0ZV9tb3N0X3JlY2VudF9hcmNoaXZlX3RpbWVzdGFtcCkpCj4gKyAgICAgICAgICAgIC5j
b2xsZWN0KCk7Cj4gKwo+ICsgICAgICAgIGxldCBtdXQgdGFza19pdGVyID0gc2VsZgo+ICsgICAg
ICAgICAgICAuZ2V0X3Rhc2tzX3dpdGhfbG9jayhHZXRUYXNrczo6QWN0aXZlLCBsb2NrKQo+ICsg
ICAgICAgICAgICAuY29udGV4dCgiZmFpbGVkIHRvIGNyZWF0ZSBhcmNoaXZlIGl0ZXJhdG9yIGZv
ciBhY3RpdmUgdGFza3MiKT87Cj4gKwo+ICsgICAgICAgIGxldCBtdXQgYWN0aXZlX3Rhc2tzID0K
PiArICAgICAgICAgICAgSGFzaFNldDo6ZnJvbV9pdGVyKHRhc2tfaXRlci5mbGF0X21hcCh8YWN0
aXZlX3Rhc2t8IG1hdGNoIGFjdGl2ZV90YXNrIHsKCmkgdGhpbmsgeW91IHdhbnQgdG8gdXNlICdm
aWx0ZXJfbWFwJyBoZXJlPyBldmVuIHRob3VnaCBpdCBzZWVtcyB0byBkbyB0aGUgc2FtZSB0aGlu
ZyBpbgp0aGlzIGluc3RhbmNlLCBpIHRoaW5rICdmaWx0ZXJfbWFwJyBiZXR0ZXIgZXhwcmVzc2Vz
IHdoYXQgeW91IHdhbnQgdG8gZG8KCj4gKyAgICAgICAgICAgICAgICBPayh0YXNrKSA9PiBTb21l
KCh0YXNrLnVwaWQsIHRhc2suc3RhcnR0aW1lKSksCj4gKyAgICAgICAgICAgICAgICBFcnIoZXJy
KSA9PiB7Cj4gKyAgICAgICAgICAgICAgICAgICAgbG9nOjplcnJvciEoImZhaWxlZCB0byByZWFk
IHRhc2sgY2FjaGUgZW50cnkgZnJvbSBhY3RpdmUgZmlsZToge2Vycn0iKTsKPiArICAgICAgICAg
ICAgICAgICAgICBOb25lCj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIH0pKTsK
CmRvZXMgaXQgbWFrZSBhIGJpZyBkaWZmZXJlbmNlIHRoYXQgeW91IHNhdmUgdGhlIHN0YXJ0dGlt
ZSBzZXBlcmF0ZWx5IGhlcmU/CgpGV0lDVCwgdGhpcyBtYWtlcyB0aGUgcmVtb3ZlIGNvZGUgbGF0
ZXIgYSBiaXQgbW9yZSBjb21wbGljYXRlZCwgYW5kCndvdWxkIG9ubHkgbmVlZCB0byBiZSBwYXJz
ZWQgaW4gYHVwZGF0ZV9vbGRlc3RfYWN0aXZlYC4gU2luY2UgaSBkb24ndCBhc3N1bWUgdG9vIG1h
bnkgY29uY3VycmVudAphY3RpdmUgdGFza3MgaW4gb25lIHNldCBvZiB1cGRhdGVzLCBpIGRvbid0
IHRoaW5rIHRoZSBwYXJzaW5nIHNob3VsZCBiZSB2ZXJ5IGJhZCBoZXJlLi4uCgo+ICsKPiArICAg
ICAgICAvLyBDb25zdW1lIHRoZSBpdGVyYXRvciB0byBnZXQgYmFjayB0aGUgbG9jay4gVGhlIGxv
Y2sgaXMgaGVsZAo+ICsgICAgICAgIC8vIHVudGlsIF9sb2NrIGlzIGZpbmFsbHkgZHJvcHBlZCBh
dCB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4KPiArICAgICAgICBsZXQgX2xvY2sgPSB0YXNrX2l0
ZXIuaW50b19sb2NrKCk7Cj4gKwo+ICsgICAgICAgIGxldCBtdXQgbmV3X2ZpbmlzaGVkX3Rhc2tz
ID0gVmVjOjpuZXcoKTsKPiArCj4gKyAgICAgICAgZm9yIHRhc2sgaW4gdGFza3Mgewo+ICsgICAg
ICAgICAgICBpZiB0YXNrLmVuZHRpbWUuaXNfbm9uZSgpIHsKPiArICAgICAgICAgICAgICAgIGFj
dGl2ZV90YXNrcy5pbnNlcnQoKHRhc2sudXBpZCwgdGFzay5zdGFydHRpbWUpKTsKPiArICAgICAg
ICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgIG5ld19maW5pc2hlZF90YXNrcy5wdXNo
KHRhc2spOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBsZXQg
bXV0IHN0YXRlID0gc2VsZi5yZWFkX3N0YXRlKCk7Cj4gKwo+ICsgICAgICAgIG5ld19maW5pc2hl
ZF90YXNrcy5zb3J0X2J5KGNvbXBhcmVfdGFza3NfcmV2ZXJzZSk7Cj4gKyAgICAgICAgc2VsZi5t
ZXJnZV90YXNrc19pbnRvX2FyY2hpdmUoCj4gKyAgICAgICAgICAgIG5ld19maW5pc2hlZF90YXNr
cywKPiArICAgICAgICAgICAgJm11dCBhY3RpdmVfdGFza3MsCj4gKyAgICAgICAgICAgIHVwZGF0
ZV9zdGF0ZV9mb3JfcmVtb3RlLAo+ICsgICAgICAgICAgICAmbXV0IHN0YXRlLAo+ICsgICAgICAg
ICk/Owo+ICsgICAgICAgIHNlbGYudXBkYXRlX29sZGVzdF9hY3RpdmUoJmFjdGl2ZV90YXNrcywg
Jm11dCBzdGF0ZSk7Cj4gKwo+ICsgICAgICAgIGxldCBtdXQgYWN0aXZlOiBWZWM8VGFza0NhY2hl
SXRlbT4gPSBhY3RpdmVfdGFza3MKPiArICAgICAgICAgICAgLmludG9faXRlcigpCj4gKyAgICAg
ICAgICAgIC5tYXAofCh1cGlkLCBzdGFydHRpbWUpfCBUYXNrQ2FjaGVJdGVtIHsKPiArICAgICAg
ICAgICAgICAgIHVwaWQsCj4gKyAgICAgICAgICAgICAgICBzdGFydHRpbWUsCj4gKyAgICAgICAg
ICAgICAgICBzdGF0dXM6IE5vbmUsCj4gKyAgICAgICAgICAgICAgICBlbmR0aW1lOiBOb25lLAo+
ICsgICAgICAgICAgICB9KQo+ICsgICAgICAgICAgICAuY29sbGVjdCgpOwo+ICsKPiArICAgICAg
ICBhY3RpdmUuc29ydF9ieShjb21wYXJlX3Rhc2tzX3JldmVyc2UpOwo+ICsgICAgICAgIHNlbGYu
d3JpdGVfYWN0aXZlX3Rhc2tzKGFjdGl2ZS5pbnRvX2l0ZXIoKSkKPiArICAgICAgICAgICAgLmNv
bnRleHQoImZhaWxlZCB0byB3cml0ZSBhY3RpdmUgdGFzayBmaWxlIHdoZW4gYWRkaW5nIHRhc2tz
Iik/Owo+ICsgICAgICAgIHNlbGYud3JpdGVfc3RhdGUoc3RhdGUpCj4gKyAgICAgICAgICAgIC5j
b250ZXh0KCJmYWlsZWQgdG8gdXBkYXRlIHRhc2sgYXJjaGl2ZSBzdGF0ZSBmaWxlIHdoZW4gYWRk
aW5nIHRhc2tzIik/Owo+ICsKPiArICAgICAgICBPaygoKSkKPiArICAgIH0KPiArCj4gKyAgICAv
Ly8gVXBkYXRlIHRoZSB0aW1lc3RhbXAgb2YgdGhlIG9sZGVzdCBydW5uaW5nIHRhc2sgaW4gYHN0
YXRlYC4KPiArICAgIGZuIHVwZGF0ZV9vbGRlc3RfYWN0aXZlKCZzZWxmLCBhY3RpdmVfdGFza3M6
ICZIYXNoU2V0PChSZW1vdGVVcGlkLCBpNjQpPiwgc3RhdGU6ICZtdXQgU3RhdGUpIHsKPiArICAg
ICAgICAvLyBVcGRhdGUgdGhlIHN0YXRlIHdpdGggdGltZXN0YW1wIG9mIHRoZSBvbGRlc3QgcnVu
bmluZyB0YXNrLAo+ICsgICAgICAgIC8vIHdlIGFsc28gdXNlIHRoaXMgYXMgY3V0LW9mZiB3aGVu
IGZldGNoaW5nIHRhc2tzLCBzbyB3ZQo+ICsgICAgICAgIC8vIGZvciBzdXJlIGtub3cgd2hlbiBh
IHRhc2sgZmluaXNoZXMuCj4gKyAgICAgICAgbGV0IG11dCBvbGRlc3RfYWN0aXZlX3Rhc2tfcGVy
X3JlbW90ZSA9IEhhc2hNYXA6Om5ldygpOwo+ICsgICAgICAgIGZvciAodXBpZCwgc3RhcnRpbWUp
IGluIGFjdGl2ZV90YXNrcy5pdGVyKCkgewo+ICsgICAgICAgICAgICBvbGRlc3RfYWN0aXZlX3Rh
c2tfcGVyX3JlbW90ZQo+ICsgICAgICAgICAgICAgICAgLmVudHJ5KHVwaWQucmVtb3RlKCkudG9f
b3duZWQoKSkKPiArICAgICAgICAgICAgICAgIC5hbmRfbW9kaWZ5KHx0aW1lfCAqdGltZSA9ICgq
c3RhcnRpbWUpLm1pbigqdGltZSkpCj4gKyAgICAgICAgICAgICAgICAub3JfaW5zZXJ0KCpzdGFy
dGltZSk7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIHN0YXRlLm9sZGVzdF9hY3RpdmVfdGFzayA9
IG9sZGVzdF9hY3RpdmVfdGFza19wZXJfcmVtb3RlOwo+ICsgICAgfQo+ICsKPiArICAgIC8vLyBN
ZXJnZSBhIGxpc3Qgb2YgKmZpbmlzaGVkKiB0YXNrcyBpbnRvIHRoZSByZW1vdGUgdGFzayBhcmNo
aXZlIGZpbGVzLgo+ICsgICAgLy8vIFRoZSBsaXN0IG9mIHRhc2sgaW4gYHRhc2tzYCAqbXVzdCog
YmUgc29ydGVkIGJ5IHRoZWlyIHRpbWVzdGFtcCBhbmQgVVBJRCAoZGVzY2VuZGluZyBieQo+ICsg
ICAgLy8vIHRpbWVzdGFtcCwgYXNjZW5kaW5nIGJ5IFVQSUQpLgo+ICsgICAgLy8vCj4gKyAgICAv
Ly8gVGhlIHRhc2sgYXJjaGl2ZSBzaG91bGQgYmUgbG9ja2VkIHdoZW4gY2FsbGluZyB0aGlzLgo+
ICsgICAgZm4gbWVyZ2VfdGFza3NfaW50b19hcmNoaXZlKAo+ICsgICAgICAgICZzZWxmLAo+ICsg
ICAgICAgIHRhc2tzOiBWZWM8VGFza0NhY2hlSXRlbT4sCj4gKyAgICAgICAgYWN0aXZlX3Rhc2tz
OiAmbXV0IEhhc2hTZXQ8KFJlbW90ZVVwaWQsIGk2NCk+LAo+ICsgICAgICAgIHVwZGF0ZV9zdGF0
ZV9mb3JfcmVtb3RlOiBIYXNoTWFwPFN0cmluZywgYm9vbD4sCj4gKyAgICAgICAgc3RhdGU6ICZt
dXQgU3RhdGUsCj4gKyAgICApIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKPiArICAgICAgICBkZWJ1
Z19hc3NlcnQhKHRhc2tzCj4gKyAgICAgICAgICAgIC5pdGVyKCkKPiArICAgICAgICAgICAgLmlz
X3NvcnRlZF9ieSh8YSwgYnwgY29tcGFyZV90YXNrcyhhLCBiKS5pc19nZSgpKSk7Cj4gKwo+ICsg
ICAgICAgIGxldCBmaWxlcyA9IHNlbGYKPiArICAgICAgICAgICAgLmFyY2hpdmVfZmlsZXMoKQo+
ICsgICAgICAgICAgICAuY29udGV4dCgiZmFpbGVkIHRvIHJlYWQgYWNoaXZlIGZpbGVzIik/Owo+
ICsKPiArICAgICAgICBsZXQgbXV0IGZpbGVzID0gZmlsZXMuaXRlcigpLnBlZWthYmxlKCk7Cj4g
Kwo+ICsgICAgICAgIGxldCBtdXQgY3VycmVudCA9IGZpbGVzLm5leHQoKTsKPiArICAgICAgICBs
ZXQgbXV0IG5leHQgPSBmaWxlcy5wZWVrKCk7Cj4gKwo+ICsgICAgICAgIGxldCBtdXQgdGFza3Nf
Zm9yX2N1cnJlbnRfZmlsZSA9IFZlYzo6bmV3KCk7Cj4gKwo+ICsgICAgICAgIC8vIFRhc2tzIGFy
ZSBzb3J0ZWQgeW91bmdlc3QgdG8gb2xkZXN0IChiaWdnZXN0IHN0YXJ0dGltZSBmaXJzdCkKPiAr
ICAgICAgICBmb3IgbXV0IHRhc2sgaW4gdGFza3Mgewo+ICsgICAgICAgICAgICAvLyBVc2luZyBh
IHBhcnRpYWwgbW92ZSB0byBhdm9pZCBoYXZpbmcgdG8gY2xvbmUgdGFzay51cGlkCj4gKyAgICAg
ICAgICAgIGxldCB1cGlkX2FuZF9zdGFydHRpbWUgPSAodGFzay51cGlkLCB0YXNrLnN0YXJ0dGlt
ZSk7Cj4gKyAgICAgICAgICAgIGFjdGl2ZV90YXNrcy5yZW1vdmUoJnVwaWRfYW5kX3N0YXJ0dGlt
ZSk7Cj4gKyAgICAgICAgICAgIHRhc2sudXBpZCA9IHVwaWRfYW5kX3N0YXJ0dGltZS4wOwo+ICsK
PiArICAgICAgICAgICAgaWYgbGV0IFNvbWUodHJhY2tlZF90YXNrcykgPSBzdGF0ZS50cmFja2Vk
X3Rhc2tzLmdldF9tdXQodGFzay51cGlkLnJlbW90ZSgpKSB7Cj4gKyAgICAgICAgICAgICAgICB0
cmFja2VkX3Rhc2tzLnJlbW92ZSgmdGFzay51cGlkKTsKPiArICAgICAgICAgICAgfQo+ICsKPiAr
ICAgICAgICAgICAgaWYgbGV0IFNvbWUodHJ1ZSkgPSB1cGRhdGVfc3RhdGVfZm9yX3JlbW90ZS5n
ZXQodGFzay51cGlkLnJlbW90ZSgpKSB7Cj4gKyAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhl
IG1vc3QgcmVjZW50IHN0YXJ0aW1lIHBlciByZW1vdGUsIHRoZSB0YXNrIHBvbGxpbmcgbG9naWMg
dXNlcyBpdCBhcyBhCj4gKyAgICAgICAgICAgICAgICAvLyBjdXQtb2ZmLgo+ICsgICAgICAgICAg
ICAgICAgc3RhdGUKPiArICAgICAgICAgICAgICAgICAgICAubW9zdF9yZWNlbnRfYXJjaGl2ZV9z
dGFydHRpbWUKPiArICAgICAgICAgICAgICAgICAgICAuZW50cnkodGFzay51cGlkLnJlbW90ZSgp
LnRvX293bmVkKCkpCj4gKyAgICAgICAgICAgICAgICAgICAgLmFuZF9tb2RpZnkofHRpbWV8ICp0
aW1lID0gKHRhc2suc3RhcnR0aW1lKS5tYXgoKnRpbWUpKQo+ICsgICAgICAgICAgICAgICAgICAg
IC5vcl9pbnNlcnQodGFzay5zdGFydHRpbWUpOwo+ICsgICAgICAgICAgICB9Cj4gKwo+ICsgICAg
ICAgICAgICAvLyBTa2lwIGFoZWFkIHVudGlsIHdlIGhhdmUgZm91bmQgdGhlIGNvcnJlY3QgZmls
ZS4KPiArICAgICAgICAgICAgd2hpbGUgbmV4dC5pc19zb21lKCkgewo+ICsgICAgICAgICAgICAg
ICAgaWYgbGV0IFNvbWUoY3VycmVudCkgPSBjdXJyZW50IHsKPiArICAgICAgICAgICAgICAgICAg
ICBpZiB0YXNrLnN0YXJ0dGltZSA+PSBjdXJyZW50LnN0YXJ0dGltZSB7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAg
ICAgICAgICAgICAvLyBUaGUgbmV4dCBlbnRyeSdzIGN1dC1vZmYgaXMgbGFyZ2VyIHRoZW4gdGhl
IHRhc2sncyBzdGFydCB0aW1lLCB0aGF0IG1lYW5zCj4gKyAgICAgICAgICAgICAgICAgICAgLy8g
d2Ugd2FudCB0byBmaW5hbGl6ZWQgdGhlIGN1cnJlbnQgZmlsZSBieSBtZXJnaW5nIGFsbCB0YXNr
cyB0aGF0Cj4gKyAgICAgICAgICAgICAgICAgICAgLy8gc2hvdWxkIGJlIHN0b3JlZCBpbiBpdC4u
Lgo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWVyZ2Vfc2luZ2xlX2FyY2hpdmVfZmlsZSgK
PiArICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptZW06OnRha2UoJm11dCB0YXNrc19mb3Jf
Y3VycmVudF9maWxlKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgJmN1cnJlbnQuZmlsZSwK
PiArICAgICAgICAgICAgICAgICAgICApCj4gKyAgICAgICAgICAgICAgICAgICAgLndpdGhfY29u
dGV4dCh8fCB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCEoImZhaWxlZCB0byBt
ZXJnZSBhcmNoaXZlIGZpbGUge30iLCBjdXJyZW50LmZpbGUuZGlzcGxheSgpKQo+ICsgICAgICAg
ICAgICAgICAgICAgIH0pPzsKPiArICAgICAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAg
ICAgICAvLyAuLi4gYW5kIHRoZSB0aGUgYGN1cnJlbnRgIGZpbGUgdG8gdGhlIG5leHQgZW50cnku
Cj4gKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gZmlsZXMubmV4dCgpOwo+ICsgICAgICAgICAg
ICAgICAgbmV4dCA9IGZpbGVzLnBlZWsoKTsKPiArICAgICAgICAgICAgfQo+ICsKPiArICAgICAg
ICAgICAgaWYgbGV0IFNvbWUoY3VycmVudCkgPSBjdXJyZW50IHsKPiArICAgICAgICAgICAgICAg
IGlmIHRhc2suc3RhcnR0aW1lIDwgY3VycmVudC5zdGFydHRpbWUgewo+ICsgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwo+ICsgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICB9Cj4g
KyAgICAgICAgICAgIHRhc2tzX2Zvcl9jdXJyZW50X2ZpbGUucHVzaCh0YXNrKTsKPiArICAgICAg
ICB9Cj4gKwo+ICsgICAgICAgIC8vIE1lcmdlIHRhc2tzIGZvciB0aGUgbGFzdCBmaWxlLgo+ICsg
ICAgICAgIGlmIGxldCBTb21lKGN1cnJlbnQpID0gY3VycmVudCB7Cj4gKyAgICAgICAgICAgIHNl
bGYubWVyZ2Vfc2luZ2xlX2FyY2hpdmVfZmlsZSh0YXNrc19mb3JfY3VycmVudF9maWxlLCAmY3Vy
cmVudC5maWxlKQo+ICsgICAgICAgICAgICAgICAgLndpdGhfY29udGV4dCh8fCB7Cj4gKyAgICAg
ICAgICAgICAgICAgICAgZm9ybWF0ISgiZmFpbGVkIHRvIG1lcmdlIGFyY2hpdmUgZmlsZSB7fSIs
IGN1cnJlbnQuZmlsZS5kaXNwbGF5KCkpCj4gKyAgICAgICAgICAgICAgICB9KT87Cj4gKyAgICAg
ICAgfQo+ICsKPiArICAgICAgICBPaygoKSkKPiArICAgIH0KPiArCj4gKyAgICAvLy8gQWRkIGEg
bmV3IHRyYWNrZWQgdGFzay4KPiArICAgIC8vLwo+ICsgICAgLy8vIFRoaXMgd2lsbCBpbnNlcnQg
dGhlIHRhc2sgaW4gdGhlIGxpc3Qgb2YgdHJhY2tlZCB0YXNrcyBpbiB0aGUgc3RhdGUgZmlsZSwK
PiArICAgIC8vLyBhcyB3ZWxsIGFzIGNyZWF0ZSBhbiBlbnRyeSBpbiB0aGUgYGFjdGl2ZWAgZmls
ZS4KPiArICAgIC8vLwo+ICsgICAgLy8vIFRoaXMgZnVuY3Rpb24gd2lsbCByZXF1ZXN0IGFuIGV4
Y2x1c2l2ZSBsb2NrIGZvciB0aGUgdGFzayBjYWNoZSwKPiArICAgIC8vLyBkbyBub3QgY2FsbCBp
ZiB5b3UgYXJlIGFscmVhZHkgaG9sZGluZyBhIGxvY2suCj4gKyAgICBwdWIgZm4gYWRkX3RyYWNr
ZWRfdGFzaygmc2VsZiwgdGFzazogVGFza0NhY2hlSXRlbSkgLT4gUmVzdWx0PCgpLCBFcnJvcj4g
ewo+ICsgICAgICAgIGxldCBsb2NrID0gc2VsZi5sb2NrKHRydWUpLmNvbnRleHQoImZhaWxlZCB0
byBsb2NrIGFyY2hpdmUiKT87Cj4gKwo+ICsgICAgICAgIGxldCBtdXQgdGFza3MgPSBWZWM6Om5l
dygpOwo+ICsgICAgICAgIGxldCBtdXQgdGFza19pdGVyID0gc2VsZgo+ICsgICAgICAgICAgICAu
Z2V0X3Rhc2tzX3dpdGhfbG9jayhHZXRUYXNrczo6QWN0aXZlLCBsb2NrKQo+ICsgICAgICAgICAg
ICAuY29udGV4dCgiZmFpbGVkIHRvIGNyZWF0ZSBhY3RpdmUgdGFzayBpdGVyYXRvciIpPzsKPiAr
Cj4gKyAgICAgICAgZm9yIHRhc2sgaW4gJm11dCB0YXNrX2l0ZXIgewo+ICsgICAgICAgICAgICBt
YXRjaCB0YXNrIHsKPiArICAgICAgICAgICAgICAgIE9rKHRhc2spID0+IHRhc2tzLnB1c2godGFz
ayksCj4gKyAgICAgICAgICAgICAgICBFcnIoZXJyKSA9PiB7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgbG9nOjplcnJvciEoCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgcmVh
ZCBleGlzdGluZyB0YXNrIGNhY2hlIGVudHJ5IGZyb20gJ2FjdGl2ZScgZmlsZToge2Vycn0iCj4g
KyAgICAgICAgICAgICAgICAgICAgKTsKPiArICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAg
ICAgfQo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgdGFza3MucHVzaCh0YXNrLmNsb25lKCkp
Owo+ICsgICAgICAgIHRhc2tzLnNvcnRfYnkoY29tcGFyZV90YXNrc19yZXZlcnNlKTsKPiArCj4g
KyAgICAgICAgbGV0IF9sb2NrID0gdGFza19pdGVyLmludG9fbG9jaygpOwo+ICsKPiArICAgICAg
ICBsZXQgbXV0IHN0YXRlID0gc2VsZi5yZWFkX3N0YXRlKCk7Cj4gKwo+ICsgICAgICAgIHN0YXRl
Cj4gKyAgICAgICAgICAgIC5vbGRlc3RfYWN0aXZlX3Rhc2sKPiArICAgICAgICAgICAgLmVudHJ5
KHRhc2sudXBpZC5yZW1vdGUoKS50b19vd25lZCgpKQo+ICsgICAgICAgICAgICAuYW5kX21vZGlm
eSh8YXwgKmEgPSAoKmEpLm1pbih0YXNrLnN0YXJ0dGltZSkpCj4gKyAgICAgICAgICAgIC5vcl9p
bnNlcnQodGFzay5zdGFydHRpbWUpOwo+ICsKPiArICAgICAgICBsZXQgdHJhY2tlZF9wZXJfcmVt
b3RlID0gc3RhdGUKPiArICAgICAgICAgICAgLnRyYWNrZWRfdGFza3MKPiArICAgICAgICAgICAg
LmVudHJ5KHRhc2sudXBpZC5yZW1vdGUoKS50b19vd25lZCgpKQo+ICsgICAgICAgICAgICAub3Jf
ZGVmYXVsdCgpOwo+ICsgICAgICAgIHRyYWNrZWRfcGVyX3JlbW90ZS5pbnNlcnQodGFzay51cGlk
KTsKPiArCj4gKyAgICAgICAgc2VsZi53cml0ZV9hY3RpdmVfdGFza3ModGFza3MuaW50b19pdGVy
KCkpCj4gKyAgICAgICAgICAgIC5jb250ZXh0KCJmYWlsZWQgdG8gd3JpdGUgYWN0aXZlIHRhc2tz
IGZpbGUgd2hlbiBhZGRpbmcgdHJhY2tlZCB0YXNrIik/Owo+ICsgICAgICAgIHNlbGYud3JpdGVf
c3RhdGUoc3RhdGUpCj4gKyAgICAgICAgICAgIC5jb250ZXh0KCJmYWlsZWQgdG8gd3JpdGUgc3Rh
dGUgZmlsZSB3aGVuIGFkZGluZyB0cmFja2VkIHRhc2tzIik/Owo+ICsKPiArICAgICAgICBPaygo
KSkKPiArICAgIH0KPiArCj4gKyAgICAvLy8gSXRlcmF0ZSBvdmVyIGNhY2hlZCB0YXNrcy4KPiAr
ICAgIC8vLwo+ICsgICAgLy8vIFRoaXMgZnVuY3Rpb24gd2lsbCByZXF1ZXN0IGEgbm9uLWV4Y2x1
c2l2ZSByZWFkLWxvY2ssIGRvbid0IGNhbGwgaWYKPiArICAgIC8vLyB5b3UgYWxyZWFkeSBob2xk
IGEgbG9jayBmb3IgdGhpcyBjYWNoZS4gU2VlIFtgU2VsZjo6Z2V0X3Rhc2tzX3dpdGhfbG9ja2Bd
Lgo+ICsgICAgcHViIGZuIGdldF90YXNrcygmc2VsZiwgbW9kZTogR2V0VGFza3MpIC0+IFJlc3Vs
dDxUYXNrQXJjaGl2ZUl0ZXJhdG9yLCBFcnJvcj4gewo+ICsgICAgICAgIGxldCBsb2NrID0gc2Vs
Zgo+ICsgICAgICAgICAgICAubG9jayhmYWxzZSkKPiArICAgICAgICAgICAgLmNvbnRleHQoImdl
dF90YXNrczogZmFpbGVkIHRvIGFjcXVpcmUgbG9jayIpPzsKPiArICAgICAgICBzZWxmLmdldF90
YXNrc193aXRoX2xvY2sobW9kZSwgbG9jaykKPiArICAgICAgICAgICAgLmNvbnRleHQoImZhaWxl
ZCB0byBjcmVhdGUgdGFzayBhcmNoaXZlIGl0ZXJhdG9yIikKPiArICAgIH0KPiArCj4gKyAgICAv
Ly8gSXRlcmF0ZSBvdmVyIGNhY2hlZCB0YXNrcy4KPiArICAgIC8vLwo+ICsgICAgLy8vIFRoaXMg
ZnVuY3Rpb24gcmVxdWlyZXMgeW91IHRvIHBhc3MgYSBsb2NrLiBJZiB5b3Ugd2FudCB0byBjb250
aW51ZSB0byBob2xkIHRoZSBsb2NrCj4gKyAgICAvLy8gYWZ0ZXIgaXRlcmF0aW5nLCB5b3UgY2Fu
IGNvbnN1bWUgdGhlIGl0ZXJhdG9yIGJ5IGNhbGxpbmcKPiArICAgIC8vLyBbYFRhc2tBcmNoaXZl
SXRlcmF0b3I6OmludG9fbG9ja2BdLCB5aWVsZGluZyB0aGUgb3JpZ2luYWwgbG9jay4KPiArICAg
IHB1YiBmbiBnZXRfdGFza3Nfd2l0aF9sb2NrKAo+ICsgICAgICAgICZzZWxmLAo+ICsgICAgICAg
IG1vZGU6IEdldFRhc2tzLAo+ICsgICAgICAgIGxvY2s6IFRhc2tDYWNoZUxvY2ssCj4gKyAgICAp
IC0+IFJlc3VsdDxUYXNrQXJjaGl2ZUl0ZXJhdG9yLCBFcnJvcj4gewo+ICsgICAgICAgIG1hdGNo
IG1vZGUgewo+ICsgICAgICAgICAgICBHZXRUYXNrczo6QWxsID0+IHsKPiArICAgICAgICAgICAg
ICAgIGxldCBhcmNoaXZlX2ZpbGVzID0gc2VsZi5hcmNoaXZlX2ZpbGVzKCk/LmludG9faXRlcigp
Lm1hcCh8cGFpcnwgcGFpci5maWxlKTsKPiArICAgICAgICAgICAgICAgIGxldCBhbGxfZmlsZXMg
PSBbc2VsZi5iYXNlX3BhdGguam9pbihBQ1RJVkVfRklMRU5BTUUpXQo+ICsgICAgICAgICAgICAg
ICAgICAgIC5pbnRvX2l0ZXIoKQo+ICsgICAgICAgICAgICAgICAgICAgIC5jaGFpbihhcmNoaXZl
X2ZpbGVzKTsKPiArCj4gKyAgICAgICAgICAgICAgICBPayhUYXNrQXJjaGl2ZUl0ZXJhdG9yOjpu
ZXcoQm94OjpuZXcoYWxsX2ZpbGVzKSwgbG9jaykpCj4gKyAgICAgICAgICAgIH0KPiArICAgICAg
ICAgICAgR2V0VGFza3M6OkFjdGl2ZSA9PiB7Cj4gKyAgICAgICAgICAgICAgICBsZXQgZmlsZXMg
PSBbc2VsZi5iYXNlX3BhdGguam9pbihBQ1RJVkVfRklMRU5BTUUpXTsKPiArICAgICAgICAgICAg
ICAgIE9rKFRhc2tBcmNoaXZlSXRlcmF0b3I6Om5ldyhCb3g6Om5ldyhmaWxlcy5pbnRvX2l0ZXIo
KSksIGxvY2spKQo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICNbY2ZnKHRlc3QpXQo+
ICsgICAgICAgICAgICBHZXRUYXNrczo6QXJjaGl2ZWQgPT4gewo+ICsgICAgICAgICAgICAgICAg
bGV0IGZpbGVzID0gc2VsZi5hcmNoaXZlX2ZpbGVzKCk/Owo+ICsKPiArICAgICAgICAgICAgICAg
IE9rKFRhc2tBcmNoaXZlSXRlcmF0b3I6Om5ldygKPiArICAgICAgICAgICAgICAgICAgICBCb3g6
Om5ldyhmaWxlcy5pbnRvX2l0ZXIoKS5tYXAofHBhaXJ8IHBhaXIuZmlsZSkpLAo+ICsgICAgICAg
ICAgICAgICAgICAgIGxvY2ssCj4gKyAgICAgICAgICAgICAgICApKQo+ICsgICAgICAgICAgICB9
Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIC8vLyBXcml0ZSB0aGUgcHJvdmlkZWQg
dGFza3MgdG8gdGhlICdhY3RpdmUnIGZpbGUuCj4gKyAgICAvLy8KPiArICAgIC8vLyBUaGUgdGFz
a3MgYXJlIGZpcnN0IHdyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZmlsZSwgd2hpY2ggaXMgdGhlbiB1
c2VkCj4gKyAgICAvLy8gdG8gYXRvbWljYWxseSByZXBsYWNlIHRoZSBvcmlnaW5hbC4KPiArICAg
IGZuIHdyaXRlX2FjdGl2ZV90YXNrcygmc2VsZiwgdGFza3M6IGltcGwgSXRlcmF0b3I8SXRlbSA9
IFRhc2tDYWNoZUl0ZW0+KSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4gKyAgICAgICAgbGV0IChm
ZCwgcGF0aCkgPSBwcm94bW94X3N5czo6ZnM6Om1ha2VfdG1wX2ZpbGUoCj4gKyAgICAgICAgICAg
IHNlbGYuYmFzZV9wYXRoLmpvaW4oQUNUSVZFX0ZJTEVOQU1FKSwKPiArICAgICAgICAgICAgc2Vs
Zi5jcmVhdGVfb3B0aW9ucywKPiArICAgICAgICApPzsKPiArICAgICAgICBsZXQgbXV0IGZkID0g
QnVmV3JpdGVyOjpuZXcoZmQpOwo+ICsKPiArICAgICAgICBTZWxmOjp3cml0ZV90YXNrcygmbXV0
IGZkLCB0YXNrcyk/Owo+ICsKPiArICAgICAgICBpZiBsZXQgRXJyKGVycikgPSBmZC5mbHVzaCgp
IHsKPiArICAgICAgICAgICAgbG9nOjplcnJvciEoImNvdWxkIG5vdCBmbHVzaCAnYWN0aXZlJyBm
aWxlOiB7ZXJyfSIpOwo+ICsgICAgICAgIH0KPiArICAgICAgICBkcm9wKGZkKTsKPiArCj4gKyAg
ICAgICAgbGV0IHRhcmdldCA9IHNlbGYuYmFzZV9wYXRoLmpvaW4oQUNUSVZFX0ZJTEVOQU1FKTsK
PiArCj4gKyAgICAgICAgbGV0IHJlcyA9IHN0ZDo6ZnM6OnJlbmFtZSgmcGF0aCwgJnRhcmdldCku
d2l0aF9jb250ZXh0KHx8IHsKPiArICAgICAgICAgICAgZm9ybWF0ISgKPiArICAgICAgICAgICAg
ICAgICJmYWlsZWQgdG8gcmVwbGFjZSB7fSB3aXRoIHt9IiwKPiArICAgICAgICAgICAgICAgIHRh
cmdldC5kaXNwbGF5KCksCj4gKyAgICAgICAgICAgICAgICBwYXRoLmRpc3BsYXkoKSwKPiArICAg
ICAgICAgICAgKQo+ICsgICAgICAgIH0pOwo+ICsKPiArICAgICAgICBpZiBsZXQgRXJyKGVycikg
PSByZXMgewo+ICsgICAgICAgICAgICBpZiBsZXQgRXJyKGVycikgPSBzdGQ6OmZzOjpyZW1vdmVf
ZmlsZSgmcGF0aCkgewo+ICsgICAgICAgICAgICAgICAgbG9nOjplcnJvciEoImZhaWxlZCB0byBj
bGVhbnVwIHRlbXBvcmFyeSBmaWxlIHt9OiB7ZXJyfSIsIHBhdGguZGlzcGxheSgpKTsKPiArICAg
ICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgcmV0dXJuIEVycihlcnIpOwo+ICsgICAgICAg
IH0KPiArCj4gKyAgICAgICAgT2soKCkpCj4gKyAgICB9Cj4gKwo+ICsgICAgLy8vIFJlYWQgdGhl
IHN0YXRlIGZpbGUuCj4gKyAgICAvLy8gSWYgdGhlIHN0YXRlIGZpbGUgY291bGQgbm90IGJlIHJl
YWQgb3IgZG9lcyBub3QgZXhpc3QsIHRoZSBkZWZhdWx0IChlbXB0eSkgc3RhdGUKPiArICAgIC8v
LyBpcyByZXR1cm5lZC4KPiArICAgIC8vLyBBIGxvY2sgaXMgb25seSBuZWNlc3NhcnkgaWYgdGhl
IHJldHVybmVkIHN0YXRlIGlzIG1vZGlmaWVkIGFuZCBsYXRlciBwYXNzZWQKPiArICAgIC8vLyB0
byBbYFNlbGY6OndyaXRlX3N0YXRlYF0uIEluIGNhc2Ugb2YgYSByZWFkLW9ubHkgYWNjZXNzIG5v
IGxvY2sgaXMgbmVjZXNzYXJ5LCBhcwo+ICsgICAgLy8vIHRoZSBzdGF0ZSBmaWxlIGlzIGFsd2F5
cyByZXBsYWNlZCBhdG9taWNhbGx5Lgo+ICsgICAgcHViIGZuIHJlYWRfc3RhdGUoJnNlbGYpIC0+
IFN0YXRlIHsKPiArICAgICAgICBmbiBkb19yZWFkX3N0YXRlKHBhdGg6ICZQYXRoKSAtPiBSZXN1
bHQ8U3RhdGUsIEVycm9yPiB7Cj4gKyAgICAgICAgICAgIG1hdGNoIHN0ZDo6ZnM6OnJlYWQocGF0
aCkgewo+ICsgICAgICAgICAgICAgICAgT2soY29udGVudCkgPT4gc2VyZGVfanNvbjo6ZnJvbV9z
bGljZSgmY29udGVudCkubWFwX2Vycih8ZXJyfCBlcnIuaW50bygpKSwKPiArICAgICAgICAgICAg
ICAgIEVycihlcnIpIGlmIGVyci5raW5kKCkgPT0gRXJyb3JLaW5kOjpOb3RGb3VuZCA9PiBPayhE
ZWZhdWx0OjpkZWZhdWx0KCkpLAo+ICsgICAgICAgICAgICAgICAgRXJyKGVycikgPT4gRXJyKGVy
ci5pbnRvKCkpLAo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBs
ZXQgcGF0aCA9IHNlbGYuYmFzZV9wYXRoLmpvaW4oU1RBVEVfRklMRU5BTUUpOwo+ICsgICAgICAg
IGRvX3JlYWRfc3RhdGUoJnBhdGgpLnVud3JhcF9vcl9lbHNlKHxlcnJ8IHsKPiArICAgICAgICAg
ICAgbG9nOjplcnJvciEoImNvdWxkIG5vdCByZWFkIHN0YXRlIGZpbGU6IHtlcnJ9Iik7Cj4gKyAg
ICAgICAgICAgIERlZmF1bHQ6OmRlZmF1bHQoKQo+ICsgICAgICAgIH0pCj4gKyAgICB9Cj4gKwo+
ICsgICAgLy8vIFdyaXRlIHRoZSBzdGF0ZSBmaWxlLgo+ICsgICAgLy8vIFRoZSB0YXNrIGFyY2hp
dmUgc2hvdWxkIGJlIGxvY2tlZCBmb3Igd3JpdGluZyB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlv
bi4KPiArICAgIGZuIHdyaXRlX3N0YXRlKCZzZWxmLCBzdGF0ZTogU3RhdGUpIC0+IFJlc3VsdDwo
KSwgRXJyb3I+IHsKPiArICAgICAgICBsZXQgcGF0aCA9IHNlbGYuYmFzZV9wYXRoLmpvaW4oU1RB
VEVfRklMRU5BTUUpOwo+ICsKPiArICAgICAgICBsZXQgZGF0YSA9IHNlcmRlX2pzb246OnRvX3Zl
Y19wcmV0dHkoJnN0YXRlKT87Cj4gKwo+ICsgICAgICAgIHByb3htb3hfc3lzOjpmczo6cmVwbGFj
ZV9maWxlKHBhdGgsICZkYXRhLCBzZWxmLmNyZWF0ZV9vcHRpb25zLCB0cnVlKT87Cj4gKwo+ICsg
ICAgICAgIE9rKCgpKQo+ICsgICAgfQo+ICsKPiArICAgIC8vLyBSZXR1cm5zIGEgbGlzdCBvZiBl
eGlzdGluZyBhcmNoaXZlIGZpbGVzLCB0b2dldGhlciB3aXRoIHRoZWlyIHJlc3BlY3RpdmUKPiAr
ICAgIC8vLyBjdXQtb2ZmIHRpbWVzdGFtcC4gVGhlIHJlc3VsdCBpcyBzb3J0ZWQgYXNjZW5kaW5n
IGJ5IGN1dC1vZmYgdGltZXN0YW1wIChtb3N0IHJlY2VudCBvbmUKPiArICAgIC8vLyBmaXJzdCku
Cj4gKyAgICAvLy8gVGhlIHRhc2sgYXJjaGl2ZSBzaG91bGQgYmUgbG9ja2VkIGZvciByZWFkaW5n
IHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgo+ICsgICAgZm4gYXJjaGl2ZV9maWxlcygmc2Vs
ZikgLT4gUmVzdWx0PFZlYzxBcmNoaXZlRmlsZT4sIEVycm9yPiB7Cj4gKyAgICAgICAgbGV0IG11
dCBuYW1lcyA9IFZlYzo6bmV3KCk7Cj4gKwo+ICsgICAgICAgIGZvciBlbnRyeSBpbiBzdGQ6OmZz
OjpyZWFkX2Rpcigmc2VsZi5iYXNlX3BhdGgpPyB7Cj4gKyAgICAgICAgICAgIGxldCBlbnRyeSA9
IGVudHJ5PzsKPiArCj4gKyAgICAgICAgICAgIGlmIGxldCBTb21lKGVuZHRpbWUpID0gZW50cnkK
PiArICAgICAgICAgICAgICAgIC5wYXRoKCkKPiArICAgICAgICAgICAgICAgIC5maWxlX25hbWUo
KQo+ICsgICAgICAgICAgICAgICAgLmFuZF90aGVuKHxzfCBzLnRvX3N0cigpKQo+ICsgICAgICAg
ICAgICAgICAgLmFuZF90aGVuKHxzfCBzLnN0cmlwX3ByZWZpeChBUkNISVZFX0ZJTEVOQU1FX1BS
RUZJWCkpCj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgIG1hdGNoIGVuZHRpbWUu
cGFyc2UoKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgT2soc3RhcnR0aW1lKSA9PiB7Cj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWVzLnB1c2goQXJjaGl2ZUZpbGUgewo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhcnR0aW1lLAo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmlsZTogZW50cnkucGF0aCgpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICB9KTsK
PiArICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgRXJyKGVycikg
PT4gbG9nOjplcnJvciEoCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgcGFy
c2UgYXJjaGl2ZSB0aW1lc3RhbXAgZm9yIGZpbGUge306IHtlcnJ9IiwKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgZW50cnkucGF0aCgpLmRpc3BsYXkoKQo+ICsgICAgICAgICAgICAgICAgICAg
ICksCj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4g
Kwo+ICsgICAgICAgIG5hbWVzLnNvcnRfYnlfa2V5KHxlfCAtZS5zdGFydHRpbWUpOwo+ICsKPiAr
ICAgICAgICBPayhuYW1lcykKPiArICAgIH0KPiArCj4gKyAgICAvLy8gTWVyZ2UgYHRhc2tzYCB3
aXRoIGFuIGV4aXN0aW5nIGFyY2hpdmUgZmlsZS4KPiArICAgIC8vLyBUaGlzIGZ1bmN0aW9uIGFz
c3VtZXMgdGhhdCBgdGFza3NgIGFuZCB0aGUgcHJlLWV4aXN0aW5nIGNvbnRlbnRzIG9mIHRoZSBh
cmNoaXZlCj4gKyAgICAvLy8gZmlsZSBhcmUgYm90aCBzb3J0ZWQgZGVzY2VuZGluZyBieSBzdGFy
dGltZSAobW9zdCByZWNlbnQgdGFza3MgY29tZSBmaXJzdCkuCj4gKyAgICAvLy8gVGhlIHRhc2sg
YXJjaGl2ZSBtdXN0IGJlIGxvY2tlZCB3aGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KPiArICAg
IGZuIG1lcmdlX3NpbmdsZV9hcmNoaXZlX2ZpbGUoCj4gKyAgICAgICAgJnNlbGYsCj4gKyAgICAg
ICAgdGFza3M6IFZlYzxUYXNrQ2FjaGVJdGVtPiwKPiArICAgICAgICBmaWxlOiAmUGF0aCwKPiAr
ICAgICkgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+ICsgICAgICAgIGlmIHRhc2tzLmlzX2VtcHR5
KCkgewo+ICsgICAgICAgICAgICByZXR1cm4gT2soKCkpOwo+ICsgICAgICAgIH0KPiArCj4gKyAg
ICAgICAgbGV0IChmZCwgbmV3X3BhdGgpID0gcHJveG1veF9zeXM6OmZzOjptYWtlX3RtcF9maWxl
KGZpbGUsIHNlbGYuY3JlYXRlX29wdGlvbnMpPzsKPiArICAgICAgICBsZXQgbXV0IHdyaXRlciA9
IEJ1ZldyaXRlcjo6bmV3KGZkKTsKPiArCj4gKyAgICAgICAgbWF0Y2ggRmlsZTo6b3BlbihmaWxl
KSB7Cj4gKyAgICAgICAgICAgIE9rKGZpbGUpID0+IHsKPiArICAgICAgICAgICAgICAgIGxldCBh
cmNoaXZlX3JlYWRlciA9IEJ1ZlJlYWRlcjo6bmV3KGZpbGUpOwo+ICsgICAgICAgICAgICAgICAg
bGV0IGFyY2hpdmVfaXRlciA9IEFyY2hpdmVJdGVyYXRvcjo6bmV3KGFyY2hpdmVfcmVhZGVyKQo+
ICsgICAgICAgICAgICAgICAgICAgIC5mbGF0X21hcCh8aXRlbXwgbWF0Y2ggaXRlbSB7Cj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgIE9rKGl0ZW0pID0+IFNvbWUoaXRlbSksCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgIEVycihlcnIpID0+IHsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZzo6ZXJyb3IhKCJjb3VsZCBub3QgcmVhZCB0YXNrIGNhY2hlIGl0ZW0gd2hpbGUgbWVy
Z2luZzoge2Vycn0iKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgIH0pCj4gKyAgICAg
ICAgICAgICAgICAgICAgLnBlZWthYmxlKCk7Cj4gKyAgICAgICAgICAgICAgICBsZXQgdGFza19p
dGVyID0gdGFza3MuaW50b19pdGVyKCkucGVla2FibGUoKTsKPiArCj4gKyAgICAgICAgICAgICAg
ICBTZWxmOjp3cml0ZV90YXNrcygmbXV0IHdyaXRlciwgTWVyZ2VUYXNrSXRlcmF0b3I6Om5ldyhh
cmNoaXZlX2l0ZXIsIHRhc2tfaXRlcikpPzsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgICAg
ICBFcnIoZXJyKSBpZiBlcnIua2luZCgpID09IEVycm9yS2luZDo6Tm90Rm91bmQgPT4gewo+ICsg
ICAgICAgICAgICAgICAgU2VsZjo6d3JpdGVfdGFza3MoJm11dCB3cml0ZXIsIHRhc2tzLmludG9f
aXRlcigpKT87Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgRXJyKGVycikgPT4gcmV0
dXJuIEVycihlcnIuaW50bygpKSwKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGlmIGxldCBF
cnIoZXJyKSA9IHdyaXRlci5mbHVzaCgpIHsKPiArICAgICAgICAgICAgbG9nOjplcnJvciEoImNv
dWxkIG5vdCBmbHVzaCBCdWZXcml0ZXIgZm9yIHtmaWxlOj99OiB7ZXJyfSIpOwo+ICsgICAgICAg
IH0KPiArICAgICAgICBkcm9wKHdyaXRlcik7Cj4gKwo+ICsgICAgICAgIGlmIGxldCBFcnIoZXJy
KSA9IHN0ZDo6ZnM6OnJlbmFtZSgmbmV3X3BhdGgsIGZpbGUpLndpdGhfY29udGV4dCh8fCB7Cj4g
KyAgICAgICAgICAgIGZvcm1hdCEoCj4gKyAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIHJlcGxh
Y2Uge30gd2l0aCB7fSIsCj4gKyAgICAgICAgICAgICAgICBmaWxlLmRpc3BsYXkoKSwKPiArICAg
ICAgICAgICAgICAgIG5ld19wYXRoLmRpc3BsYXkoKQo+ICsgICAgICAgICAgICApCj4gKyAgICAg
ICAgfSkgewo+ICsgICAgICAgICAgICBpZiBsZXQgRXJyKGVycikgPSBzdGQ6OmZzOjpyZW1vdmVf
ZmlsZSgmbmV3X3BhdGgpIHsKPiArICAgICAgICAgICAgICAgIGxvZzo6ZXJyb3IhKAo+ICsgICAg
ICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gY2xlYW4gdXAgdGVtcG9yYXJ5IGZpbGUge306IHtl
cnJ9IiwKPiArICAgICAgICAgICAgICAgICAgICBuZXdfcGF0aC5kaXNwbGF5KCkKPiArICAgICAg
ICAgICAgICAgICk7Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgIHJldHVybiBF
cnIoZXJyKTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIE9rKCgpKQo+ICsgICAgfQo+ICsK
PiArICAgIC8vLyBXcml0ZSBhbiBpdGVyYXRvciBvZiBbYFRhc2tDYWNoZUl0ZW1gXSB0byBhIHNv
bWV0aGluZyB0aGF0IGltcGxlbWVudHMgW2BXcml0ZWBdLgo+ICsgICAgLy8vIFRoZSBpbmRpdmlk
dWFsIGl0ZW1zIGFyZSBlbmNvZGVkIGFzIEpTT04gZm9sbG93ZWQgYnkgYSBuZXdsaW5lLgo+ICsg
ICAgLy8vIFRoZSB0YXNrIGFyY2hpdmUgc2hvdWxkIGJlIGxvY2tlZCB3aGVuIGNhbGxpbmcgdGhp
cyBmdW5jdGlvbi4KPiArICAgIGZuIHdyaXRlX3Rhc2tzKAo+ICsgICAgICAgIHdyaXRlcjogJm11
dCBpbXBsIFdyaXRlLAo+ICsgICAgICAgIHRhc2tzOiBpbXBsIEl0ZXJhdG9yPEl0ZW0gPSBUYXNr
Q2FjaGVJdGVtPiwKPiArICAgICkgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+ICsgICAgICAgIGZv
ciB0YXNrIGluIHRhc2tzIHsKPiArICAgICAgICAgICAgc2VyZGVfanNvbjo6dG9fd3JpdGVyKCZt
dXQgKndyaXRlciwgJnRhc2spPzsKPiArICAgICAgICAgICAgd3JpdGVsbiEod3JpdGVyKT87Cj4g
KyAgICAgICAgfQo+ICsKPiArICAgICAgICBPaygoKSkKPiArICAgIH0KPiArfQo+ICsKPiArLy8v
IENvbXBhcmlzb24gZnVuY3Rpb24gZm9yIHNvcnRpbmcgdGFza3MuCj4gKy8vLyBUaGUgdGFza3Mg
YXJlIGNvbXBhcmVkIGJhc2VkIG9uIHRoZSB0YXNrJ3Mgc3RhcnQgdGltZSwgZmFsbGluZwo+ICsv
Ly8gYmFjayB0byB0aGUgdGFzaydzIFVQSUQgYXMgYSBzZWNvbmRhcnkgY3JpdGVyaW9uIGluIGNh
c2UgdGhlCj4gKy8vLyBzdGFydCB0aW1lcyBhcmUgZXF1YWwuCj4gK3B1YiBmbiBjb21wYXJlX3Rh
c2tzKGE6ICZUYXNrQ2FjaGVJdGVtLCBiOiAmVGFza0NhY2hlSXRlbSkgLT4gT3JkZXJpbmcgewo+
ICsgICAgYS5zdGFydHRpbWUKPiArICAgICAgICAuY21wKCZiLnN0YXJ0dGltZSkKPiArICAgICAg
ICAudGhlbl93aXRoKHx8IGIudXBpZC50b19zdHJpbmcoKS5jbXAoJmEudXBpZC50b19zdHJpbmco
KSkpCj4gK30KPiArCj4gKy8vLyBDb21wYXJpc29uIGZ1bmN0aW9uIGZvciBzb3J0aW5nIHRhc2tz
LCByZXZlcnNlZAo+ICsvLy8gVGhlIHRhc2tzIGFyZSBjb21wYXJlZCBiYXNlZCBvbiB0aGUgdGFz
aydzIHN0YXJ0IHRpbWUsIGZhbGxpbmcKPiArLy8vIGJhY2sgdG8gdGhlIHRhc2sncyBVUElEIGFz
IGEgc2Vjb25kYXJ5IGNyaXRlcmlvbiBpbiBjYXNlIHRoZQo+ICsvLy8gc3RhcnQgdGltZXMgYXJl
IGVxdWFsLgo+ICtwdWIgZm4gY29tcGFyZV90YXNrc19yZXZlcnNlKGE6ICZUYXNrQ2FjaGVJdGVt
LCBiOiAmVGFza0NhY2hlSXRlbSkgLT4gT3JkZXJpbmcgewo+ICsgICAgY29tcGFyZV90YXNrcyhh
LCBiKS5yZXZlcnNlKCkKPiArfQo+ICsKPiArLy8vIEl0ZXJhdG9yIG92ZXIgdGhlIHRhc2sgYXJj
aGl2ZS4KPiArcHViIHN0cnVjdCBUYXNrQXJjaGl2ZUl0ZXJhdG9yIHsKPiArICAgIC8vLyBBcmNo
aXZlIGZpbGVzIHRvIHJlYWQuCj4gKyAgICBmaWxlczogQm94PGR5biBJdGVyYXRvcjxJdGVtID0g
UGF0aEJ1Zj4+LAo+ICsgICAgLy8vIEFyY2hpdmUgaXRlcmF0b3Igd2UgYXJlIGN1cnJlbnRseSB1
c2luZywgaWYgYW55Cj4gKyAgICBjdXJyZW50OiBPcHRpb248QXJjaGl2ZUl0ZXJhdG9yPEJ1ZlJl
YWRlcjxGaWxlPj4+LAo+ICsgICAgLy8vIExvY2sgZm9yIHRoaXMgYXJjaGl2ZS4KPiArICAgIGxv
Y2s6IFRhc2tDYWNoZUxvY2ssCj4gK30KPiArCj4gK2ltcGwgVGFza0FyY2hpdmVJdGVyYXRvciB7
Cj4gKyAgICAvLy8gQ3JlYXRlIGEgbmV3IHRhc2sgYXJjaGl2ZSBpdGVyYXRvci4KPiArICAgIHB1
YiBmbiBuZXcoZmlsZXM6IEJveDxkeW4gSXRlcmF0b3I8SXRlbSA9IFBhdGhCdWY+PiwgbG9jazog
VGFza0NhY2hlTG9jaykgLT4gU2VsZiB7Cj4gKyAgICAgICAgU2VsZiB7Cj4gKyAgICAgICAgICAg
IGZpbGVzLAo+ICsgICAgICAgICAgICBjdXJyZW50OiBOb25lLAo+ICsgICAgICAgICAgICBsb2Nr
LAo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICAvLy8gUmV0dXJuIHRoZSB0YXNrIGFy
Y2hpdmUgbG9jaywgY29uc3VtaW5nIGBzZWxmYC4KPiArICAgIHB1YiBmbiBpbnRvX2xvY2soc2Vs
ZikgLT4gVGFza0NhY2hlTG9jayB7Cj4gKyAgICAgICAgc2VsZi5sb2NrCj4gKyAgICB9Cj4gK30K
PiArCj4gK2ltcGwgSXRlcmF0b3IgZm9yICZtdXQgVGFza0FyY2hpdmVJdGVyYXRvciB7Cj4gKyAg
ICB0eXBlIEl0ZW0gPSBSZXN1bHQ8VGFza0NhY2hlSXRlbSwgRXJyb3I+Owo+ICsKPiArICAgIGZu
IG5leHQoJm11dCBzZWxmKSAtPiBPcHRpb248U2VsZjo6SXRlbT4gewo+ICsgICAgICAgIGxvb3Ag
ewo+ICsgICAgICAgICAgICBtYXRjaCAmbXV0IHNlbGYuY3VycmVudCB7Cj4gKyAgICAgICAgICAg
ICAgICBTb21lKGN1cnJlbnQpID0+IHsKPiArICAgICAgICAgICAgICAgICAgICBsZXQgbmV4dCA9
IGN1cnJlbnQubmV4dCgpOwo+ICsgICAgICAgICAgICAgICAgICAgIGlmIG5leHQuaXNfc29tZSgp
IHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7Cj4gKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50
ID0gTm9uZTsKPiArICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICB9Cj4g
KyAgICAgICAgICAgICAgICBOb25lID0+ICdpbm5lcjogbG9vcCB7Cj4gKyAgICAgICAgICAgICAg
ICAgICAgLy8gUmV0dXJucyBgTm9uZWAgaWYgbm8gbW9yZSBmaWxlcyBhcmUgYXZhaWxhYmxlLCBz
dG9wcGluZyBpdGVyYXRpb24uCj4gKyAgICAgICAgICAgICAgICAgICAgbGV0IG5leHRfZmlsZSA9
IHNlbGYuZmlsZXMubmV4dCgpPzsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgbWF0Y2ggRmls
ZTo6b3BlbigmbmV4dF9maWxlKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIE9rKGZpbGUp
ID0+IHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcmNoaXZlX3JlYWRlciA9
IEJ1ZlJlYWRlcjo6bmV3KGZpbGUpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0
IGFyY2hpdmVfaXRlciA9IEFyY2hpdmVJdGVyYXRvcjo6bmV3KGFyY2hpdmVfcmVhZGVyKTsKPiAr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudCA9IFNvbWUoYXJjaGl2ZV9p
dGVyKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrICdpbm5lcjsKPiArICAg
ICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBFcnIoZXJy
KSA9PiB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2c6OmVycm9yISgiY291bGQg
bm90IG9wZW4ge25leHRfZmlsZTo/fSB3aGlsZSBpdGVyYXRpb24gb3ZlciB0YXNrIGFyY2hpdmUg
ZmlsZXMsIHNraXBwaW5nOiB7ZXJyfSIpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0KPiAr
ICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICB9LAo+ICsgICAgICAgICAg
ICB9Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICt9Cj4gKwo+ICsvLy8gQXJjaGl2ZSBmaWxlLgo+
ICsjW2Rlcml2ZShDbG9uZSwgRGVidWcpXQo+ICtzdHJ1Y3QgQXJjaGl2ZUZpbGUgewo+ICsgICAg
Ly8vIFRoZSBwYXRoIHRvIHRoZSBhcmNoaXZlIGZpbGUuCj4gKyAgICBmaWxlOiBQYXRoQnVmLAo+
ICsgICAgLy8vIFRoZSBhcmNoaXZlJ3MgbG93ZXN0IHBlcm1pdHRlZCBzdGFydHRpbWUgKHNlY29u
ZHMgc2luY2UgVU5JWCBlcG9jaCkuCj4gKyAgICBzdGFydHRpbWU6IGk2NCwKPiArfQo+ICsKPiAr
Ly8vIEl0ZXJhdG9yIHRoYXQgbWVyZ2VzIHR3byBfc29ydGVkXyBgSXRlcmF0b3I8SXRlbSA9IFRh
c2tDYWNoZUl0ZW0+YCwgcmV0dXJuaW5nIHRoZSBpdGVtcwo+ICsvLy8gZnJvbSBib3RoIGl0ZXJh
dG9ycyBzb3J0ZWQuCj4gKy8vLyBUaGUgdHdvIGl0ZXJhdG9ycyBhcmUgZXhwZWN0ZWQgdG8gYmUg
c29ydGVkIGRlc2NlbmRpbmdseSBiYXNlZCBvbiB0aGUgdGFzaydzIHN0YXJ0dGltZSBhbmQKPiAr
Ly8vIGFzY2VuZGluZ2x5IGJhc2VkIG9uIHRoZSB0YXNrJ3MgVVBJRCdzIHN0cmluZyByZXByZXNl
bnRhdGlvbi4gVGhpcyBjYW4gYmUKPiArLy8vIGFjaGlldmVkIGJ5IHVzaW5nIHRoZSBbYGNvbXBh
cmVfdGFza3NfcmV2ZXJzZWBdIGZ1bmN0aW9uIHdoZW4gc29ydGluZyBhbiBhcnJheSBvZiB0YXNr
cy4KPiArcHViIHN0cnVjdCBNZXJnZVRhc2tJdGVyYXRvcjxUOiBJdGVyYXRvcjxJdGVtID0gVGFz
a0NhY2hlSXRlbT4sIFU6IEl0ZXJhdG9yPEl0ZW0gPSBUYXNrQ2FjaGVJdGVtPj4gewo+ICsgICAg
bGVmdDogUGVla2FibGU8VD4sCj4gKyAgICByaWdodDogUGVla2FibGU8VT4sCj4gK30KPiArCj4g
K2ltcGw8VCwgVT4gTWVyZ2VUYXNrSXRlcmF0b3I8VCwgVT4KPiArd2hlcmUKPiArICAgIFQ6IEl0
ZXJhdG9yPEl0ZW0gPSBUYXNrQ2FjaGVJdGVtPiwKPiArICAgIFU6IEl0ZXJhdG9yPEl0ZW0gPSBU
YXNrQ2FjaGVJdGVtPiwKPiArewo+ICsgICAgLy8vIENyZWF0ZSBhIG5ldyBtZXJnaW5nIGl0ZXJh
dG9yLgo+ICsgICAgcHViIGZuIG5ldyhsZWZ0OiBQZWVrYWJsZTxUPiwgcmlnaHQ6IFBlZWthYmxl
PFU+KSAtPiBTZWxmIHsKPiArICAgICAgICBTZWxmIHsgbGVmdCwgcmlnaHQgfQo+ICsgICAgfQo+
ICt9Cj4gKwo+ICtpbXBsPFQsIFU+IEl0ZXJhdG9yIGZvciBNZXJnZVRhc2tJdGVyYXRvcjxULCBV
Pgo+ICt3aGVyZQo+ICsgICAgVDogSXRlcmF0b3I8SXRlbSA9IFRhc2tDYWNoZUl0ZW0+LAo+ICsg
ICAgVTogSXRlcmF0b3I8SXRlbSA9IFRhc2tDYWNoZUl0ZW0+LAo+ICt7Cj4gKyAgICB0eXBlIEl0
ZW0gPSBUOjpJdGVtOwo+ICsKPiArICAgIGZuIG5leHQoJm11dCBzZWxmKSAtPiBPcHRpb248VDo6
SXRlbT4gewo+ICsgICAgICAgIGxldCBvcmRlciA9IG1hdGNoIChzZWxmLmxlZnQucGVlaygpLCBz
ZWxmLnJpZ2h0LnBlZWsoKSkgewo+ICsgICAgICAgICAgICAoU29tZShsKSwgU29tZShyKSkgPT4g
U29tZShjb21wYXJlX3Rhc2tzKGwsIHIpKSwKPiArICAgICAgICAgICAgKFNvbWUoXyksIE5vbmUp
ID0+IFNvbWUoT3JkZXJpbmc6OkdyZWF0ZXIpLAo+ICsgICAgICAgICAgICAoTm9uZSwgU29tZShf
KSkgPT4gU29tZShPcmRlcmluZzo6TGVzcyksCj4gKyAgICAgICAgICAgIChOb25lLCBOb25lKSA9
PiBOb25lLAo+ICsgICAgICAgIH07Cj4gKwo+ICsgICAgICAgIG1hdGNoIG9yZGVyIHsKPiArICAg
ICAgICAgICAgU29tZShPcmRlcmluZzo6R3JlYXRlcikgPT4gc2VsZi5sZWZ0Lm5leHQoKSwKPiAr
ICAgICAgICAgICAgU29tZShPcmRlcmluZzo6TGVzcykgPT4gc2VsZi5yaWdodC5uZXh0KCksCj4g
KyAgICAgICAgICAgIFNvbWUoT3JkZXJpbmc6OkVxdWFsKSA9PiB7Cj4gKyAgICAgICAgICAgICAg
ICAvLyBEZWR1cCBieSBjb25zdW1pbmcgdGhlIG90aGVyIGl0ZXJhdG9yIGFzIHdlbGwKPiArICAg
ICAgICAgICAgICAgIGxldCBfID0gc2VsZi5yaWdodC5uZXh0KCk7Cj4gKyAgICAgICAgICAgICAg
ICBzZWxmLmxlZnQubmV4dCgpCj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgTm9uZSA9
PiBOb25lLAo+ICsgICAgICAgIH0KPiArICAgIH0KPiArfQo+ICsKPiArLy8vIEl0ZXJhdG9yIGZv
ciBhIHNpbmdsZSB0YXNrIGFyY2hpdmUgZmlsZS4KPiArLy8vCj4gKy8vLyBUaGlzIGl0ZXJhdG9y
IGltcGxlbWVudHMgYEl0ZXJhdG9yPEl0ZW0gPSBSZXN1bHQ8VGFza0NhY2hlSXRlbSwgRXJyb3I+
YC4gV2hlbiBpdGVyYXRpbmcsCj4gKy8vLyB0YXNrcyBhcmUgcmVhZCBsaW5lIGJ5IGxpbmUsIHdp
dGhvdXQgbGVhZGluZyB0aGUgZW50aXJlIGFyY2hpdmUgZmlsZSBpbnRvIG1lbW9yeS4KPiArcHVi
IHN0cnVjdCBBcmNoaXZlSXRlcmF0b3I8VD4gewo+ICsgICAgaXRlcjogTGluZXM8VD4sCj4gK30K
PiArCj4gK2ltcGw8VDogQnVmUmVhZD4gQXJjaGl2ZUl0ZXJhdG9yPFQ+IHsKPiArICAgIC8vLyBD
cmVhdGUgYSBuZXcgaXRlcmF0b3IuCj4gKyAgICBwdWIgZm4gbmV3KGZpbGU6IFQpIC0+IFNlbGYg
ewo+ICsgICAgICAgIGxldCByZWFkZXIgPSBmaWxlLmxpbmVzKCk7Cj4gKwo+ICsgICAgICAgIFNl
bGYgeyBpdGVyOiByZWFkZXIgfQo+ICsgICAgfQo+ICt9Cj4gKwo+ICtpbXBsPFQ6IEJ1ZlJlYWQ+
IEl0ZXJhdG9yIGZvciBBcmNoaXZlSXRlcmF0b3I8VD4gewo+ICsgICAgdHlwZSBJdGVtID0gUmVz
dWx0PFRhc2tDYWNoZUl0ZW0sIEVycm9yPjsKPiArCj4gKyAgICBmbiBuZXh0KCZtdXQgc2VsZikg
LT4gT3B0aW9uPFNlbGY6Okl0ZW0+IHsKPiArICAgICAgICBzZWxmLml0ZXIubmV4dCgpLm1hcCh8
cmVzdWx0fCB7Cj4gKyAgICAgICAgICAgIHJlc3VsdAo+ICsgICAgICAgICAgICAgICAgLmFuZF90
aGVuKHxsaW5lfCBPayhzZXJkZV9qc29uOjpmcm9tX3N0cigmbGluZSk/KSkKPiArICAgICAgICAg
ICAgICAgIC5tYXBfZXJyKEludG86OmludG8pCj4gKyAgICAgICAgfSkKPiArICAgIH0KPiArfQo+
ICsKPiArI1tjZmcodGVzdCldCj4gK21vZCB0ZXN0cyB7Cj4gKyAgICB1c2Ugc3RkOjppbzo6Q3Vy
c29yOwo+ICsKPiArICAgIHVzZSBjcmF0ZTo6dGVzdF9zdXBwb3J0Ojp0ZW1wOjpOYW1lZFRlbXBE
aXI7Cj4gKwo+ICsgICAgdXNlIHN1cGVyOjoqOwo+ICsKPiArICAgICNbdGVzdF0KPiArICAgIGZu
IGFyY2hpdmVfaXRlcmF0b3IoKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4gKyAgICAgICAgbGV0
IGZpbGUgPSByIyIKPiArICAgICAgICAgICAgeyJ1cGlkIjoicHZlLXJlbW90ZSFVUElEOnB2ZTow
MDAzOUU0RDowMDI2MzhCODo2N0I0QTlEMTpzdG9wYWxsOjpyb290QHBhbToiLCJzdGF0dXMiOiJP
SyIsImVuZHRpbWUiOjEyMzQ1LCAic3RhcnR0aW1lIjogMTIzNH0KPiArICAgICAgICAgICAgeyJ1
cGlkIjoicGJzLXJlbW90ZSFVUElEOnBiczowMDAwMDJCMjowMDAwMDE1ODowMDAwMDAwMDo2NzRE
ODI4Qzpsb2dyb3RhdGU6OnJvb3RAcGFtOiIsInN0YXR1cyI6Ik9LIiwiZW5kdGltZSI6MTIzNDUs
ICJzdGFydHRpbWUiOiAxMjM0fQo+ICsgICAgICAgICAgICBpbnZhbGlkIiMKPiArICAgICAgICAg
ICAgLnRyaW1fc3RhcnQoKTsKPiArCj4gKyAgICAgICAgbGV0IGN1cnNvciA9IEN1cnNvcjo6bmV3
KGZpbGUuYXNfYnl0ZXMoKSk7Cj4gKyAgICAgICAgbGV0IG11dCBpdGVyID0gQXJjaGl2ZUl0ZXJh
dG9yOjpuZXcoY3Vyc29yKTsKPiArCj4gKyAgICAgICAgYXNzZXJ0X2VxIShpdGVyLm5leHQoKS51
bndyYXAoKS51bndyYXAoKS51cGlkLnJlbW90ZSgpLCAicHZlLXJlbW90ZSIpOwo+ICsgICAgICAg
IGFzc2VydF9lcSEoaXRlci5uZXh0KCkudW53cmFwKCkudW53cmFwKCkudXBpZC5yZW1vdGUoKSwg
InBicy1yZW1vdGUiKTsKPiArICAgICAgICBhc3NlcnQhKGl0ZXIubmV4dCgpLnVud3JhcCgpLmlz
X2VycigpKTsKPiArICAgICAgICBhc3NlcnQhKGl0ZXIubmV4dCgpLmlzX25vbmUoKSk7Cj4gKwo+
ICsgICAgICAgIE9rKCgpKQo+ICsgICAgfQo+ICsKPiArICAgIGZuIHRhc2soc3RhcnR0aW1lOiBp
NjQsIGVuZGVkOiBib29sKSAtPiBUYXNrQ2FjaGVJdGVtIHsKPiArICAgICAgICBsZXQgKHN0YXR1
cywgZW5kdGltZSkgPSBpZiBlbmRlZCB7Cj4gKyAgICAgICAgICAgIChTb21lKCJPSyIuaW50bygp
KSwgU29tZShzdGFydHRpbWUgKyAxMCkpCj4gKyAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAg
ICAgKE5vbmUsIE5vbmUpCj4gKyAgICAgICAgfTsKPiArCj4gKyAgICAgICAgVGFza0NhY2hlSXRl
bSB7Cj4gKyAgICAgICAgICAgIHVwaWQ6IGZvcm1hdCEoCj4gKyAgICAgICAgICAgICAgICAicHZl
LXJlbW90ZSFVUElEOnB2ZTowMDAzOUU0RDowMDI2MzhCODp7c3RhcnR0aW1lOjA4WH06c3RvcGFs
bDo6cm9vdEBwYW06Igo+ICsgICAgICAgICAgICApCj4gKyAgICAgICAgICAgIC5wYXJzZSgpCj4g
KyAgICAgICAgICAgIC51bndyYXAoKSwKPiArICAgICAgICAgICAgc3RhcnR0aW1lLAo+ICsgICAg
ICAgICAgICBzdGF0dXMsCj4gKyAgICAgICAgICAgIGVuZHRpbWUsCj4gKyAgICAgICAgfQo+ICsg
ICAgfQo+ICsKPiArICAgIGZuIGFzc2VydF9zdGFydHRpbWVzKGNhY2hlOiAmVGFza0NhY2hlLCBz
dGFydHRpbWVzOiAmW2k2NF0pIHsKPiArICAgICAgICBsZXQgdGFza3M6IFZlYzxpNjQ+ID0gY2Fj
aGUKPiArICAgICAgICAgICAgLmdldF90YXNrcyhHZXRUYXNrczo6QWxsKQo+ICsgICAgICAgICAg
ICAudW53cmFwKCkKPiArICAgICAgICAgICAgLm1hcCh8dGFza3wgdGFzay51bndyYXAoKS5zdGFy
dHRpbWUpCj4gKyAgICAgICAgICAgIC5jb2xsZWN0KCk7Cj4gKwo+ICsgICAgICAgIGFzc2VydF9l
cSEoJnRhc2tzLCBzdGFydHRpbWVzKTsKPiArICAgIH0KPiArCj4gKyAgICBmbiBhZGRfdGFza3Mo
Y2FjaGU6ICZUYXNrQ2FjaGUsIHRhc2tzOiBWZWM8VGFza0NhY2hlSXRlbT4pIC0+IFJlc3VsdDwo
KSwgRXJyb3I+IHsKPiArICAgICAgICBsZXQgcGFyYW0gPSBBZGRUYXNrcyB7Cj4gKyAgICAgICAg
ICAgIHVwZGF0ZV9tb3N0X3JlY2VudF9hcmNoaXZlX3RpbWVzdGFtcDogdHJ1ZSwKPiArICAgICAg
ICAgICAgdGFza3MsCj4gKyAgICAgICAgfTsKPiArICAgICAgICBsZXQgbXV0IGEgPSBIYXNoTWFw
OjpuZXcoKTsKPiArICAgICAgICBhLmluc2VydCgicHZlLXJlbW90ZSIuaW50bygpLCBwYXJhbSk7
Cj4gKwo+ICsgICAgICAgIGNhY2hlLmFkZF90YXNrcyhhKQo+ICsgICAgfQo+ICsKPiArICAgICNb
dGVzdF0KPiArICAgIGZuIHRlc3RfYWRkX3Rhc2tzKCkgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+
ICsgICAgICAgIGxldCB0bXBfZGlyID0gTmFtZWRUZW1wRGlyOjpuZXcoKT87Cj4gKyAgICAgICAg
bGV0IGNhY2hlID0gVGFza0NhY2hlOjpuZXcodG1wX2Rpci5wYXRoKCksIENyZWF0ZU9wdGlvbnM6
Om5ldygpKS51bndyYXAoKTsKPiArCj4gKyAgICAgICAgY2FjaGUubmV3X2ZpbGUoMTAwMCk/Owo+
ICsgICAgICAgIGFzc2VydF9lcSEoY2FjaGUuYXJjaGl2ZV9maWxlcygpPy5sZW4oKSwgMSk7Cj4g
Kwo+ICsgICAgICAgIGFkZF90YXNrcygmY2FjaGUsIHZlYyFbdGFzaygxMDAwLCB0cnVlKSwgdGFz
aygxMDAxLCB0cnVlKV0pPzsKPiArCj4gKyAgICAgICAgY2FjaGUucm90YXRlKDE1MDAsIDAsIDMp
PzsKPiArICAgICAgICBhc3NlcnRfZXEhKGNhY2hlLmFyY2hpdmVfZmlsZXMoKT8ubGVuKCksIDIp
Owo+ICsKPiArICAgICAgICBhZGRfdGFza3MoJmNhY2hlLCB2ZWMhW3Rhc2soMTUwMCwgdHJ1ZSks
IHRhc2soMTUwMSwgdHJ1ZSldKT87Cj4gKyAgICAgICAgYWRkX3Rhc2tzKCZjYWNoZSwgdmVjIVt0
YXNrKDEyMDAsIHRydWUpLCB0YXNrKDEzMDAsIHRydWUpXSk/Owo+ICsKPiArICAgICAgICBjYWNo
ZS5yb3RhdGUoMjAwMCwgMCwgMyk/Owo+ICsgICAgICAgIGFzc2VydF9lcSEoY2FjaGUuYXJjaGl2
ZV9maWxlcygpPy5sZW4oKSwgMyk7Cj4gKwo+ICsgICAgICAgIGFkZF90YXNrcygmY2FjaGUsIHZl
YyFbdGFzaygyMDAwLCB0cnVlKV0pPzsKPiArICAgICAgICBhZGRfdGFza3MoJmNhY2hlLCB2ZWMh
W3Rhc2soMTUwMiwgdHJ1ZSldKT87Cj4gKyAgICAgICAgYWRkX3Rhc2tzKCZjYWNoZSwgdmVjIVt0
YXNrKDEwMDIsIHRydWUpXSk/Owo+ICsKPiArICAgICAgICAvLyBUaGVzZSBhcmUgYmVmb3JlIHRo
ZSBjdXQtb2ZmIG9mIDEwMDAsIHNvIHRoZXkgd2lsbCBiZSBkaXNjYXJkZWQuCj4gKyAgICAgICAg
YWRkX3Rhc2tzKCZjYWNoZSwgdmVjIVt0YXNrKDgwMCwgdHJ1ZSksIHRhc2soOTAwLCB0cnVlKV0p
PzsKPiArCj4gKyAgICAgICAgLy8gVGhpcyBvbmUgc2hvdWxkIGJlIGRlZHVwZWQKPiArICAgICAg
ICBhZGRfdGFza3MoJmNhY2hlLCB2ZWMhW3Rhc2soMTAwMCwgdHJ1ZSldKT87Cj4gKwo+ICsgICAg
ICAgIGFzc2VydF9zdGFydHRpbWVzKAo+ICsgICAgICAgICAgICAmY2FjaGUsCj4gKyAgICAgICAg
ICAgICZbMjAwMCwgMTUwMiwgMTUwMSwgMTUwMCwgMTMwMCwgMTIwMCwgMTAwMiwgMTAwMSwgMTAw
MF0sCj4gKyAgICAgICAgKTsKPiArCj4gKyAgICAgICAgY2FjaGUucm90YXRlKDI1MDAsIDAsIDMp
PzsKPiArCj4gKyAgICAgICAgYXNzZXJ0X2VxIShjYWNoZS5hcmNoaXZlX2ZpbGVzKCk/Lmxlbigp
LCAzKTsKPiArCj4gKyAgICAgICAgYXNzZXJ0X3N0YXJ0dGltZXMoJmNhY2hlLCAmWzIwMDAsIDE1
MDIsIDE1MDEsIDE1MDBdKTsKPiArCj4gKyAgICAgICAgY2FjaGUucm90YXRlKDMwMDAsIDAsIDMp
PzsKPiArICAgICAgICBhc3NlcnRfZXEhKGNhY2hlLmFyY2hpdmVfZmlsZXMoKT8ubGVuKCksIDMp
Owo+ICsKPiArICAgICAgICBhc3NlcnRfc3RhcnR0aW1lcygmY2FjaGUsICZbMjAwMF0pOwo+ICsK
PiArICAgICAgICBPaygoKSkKPiArICAgIH0KPiArCj4gKyAgICAjW3Rlc3RdCj4gKyAgICBmbiB0
ZXN0X2FjdGl2ZV90YXNrc19hcmVfbWlncmF0ZWRfdG9fYXJjaGl2ZSgpIC0+IFJlc3VsdDwoKSwg
RXJyb3I+IHsKPiArICAgICAgICBsZXQgdG1wX2RpciA9IE5hbWVkVGVtcERpcjo6bmV3KCk/Owo+
ICsgICAgICAgIGxldCBjYWNoZSA9IFRhc2tDYWNoZTo6bmV3KHRtcF9kaXIucGF0aCgpLCBDcmVh
dGVPcHRpb25zOjpuZXcoKSkudW53cmFwKCk7Cj4gKwo+ICsgICAgICAgIGNhY2hlLm5ld19maWxl
KDEwMDApPzsKPiArICAgICAgICBhZGRfdGFza3MoJmNhY2hlLCB2ZWMhW3Rhc2soMTAwMCwgZmFs
c2UpLCB0YXNrKDEwMDEsIGZhbHNlKV0pPzsKPiArICAgICAgICBhc3NlcnRfZXEhKGNhY2hlLmdl
dF90YXNrcyhHZXRUYXNrczo6QWN0aXZlKT8uY291bnQoKSwgMik7Cj4gKwo+ICsgICAgICAgIGxl
dCBzdGF0ZSA9IGNhY2hlLnJlYWRfc3RhdGUoKTsKPiArICAgICAgICBhc3NlcnRfZXEhKCpzdGF0
ZS5vbGRlc3RfYWN0aXZlX3Rhc2suZ2V0KCJwdmUtcmVtb3RlIikudW53cmFwKCksIDEwMDApOwo+
ICsKPiArICAgICAgICBhZGRfdGFza3MoJmNhY2hlLCB2ZWMhW3Rhc2soMTAwMCwgdHJ1ZSksIHRh
c2soMTAwMSwgdHJ1ZSldKT87Cj4gKwo+ICsgICAgICAgIGFzc2VydF9zdGFydHRpbWVzKCZjYWNo
ZSwgJlsxMDAxLCAxMDAwXSk7Cj4gKwo+ICsgICAgICAgIGFzc2VydF9lcSEoY2FjaGUuZ2V0X3Rh
c2tzKEdldFRhc2tzOjpBY3RpdmUpPy5jb3VudCgpLCAwKTsKPiArCj4gKyAgICAgICAgT2soKCkp
Cj4gKyAgICB9Cj4gKwo+ICsgICAgI1t0ZXN0XQo+ICsgICAgZm4gdGVzdF9pbml0KCkgLT4gUmVz
dWx0PCgpLCBFcnJvcj4gewo+ICsgICAgICAgIGxldCB0bXBfZGlyID0gTmFtZWRUZW1wRGlyOjpu
ZXcoKT87Cj4gKyAgICAgICAgbGV0IGNhY2hlID0gVGFza0NhY2hlOjpuZXcodG1wX2Rpci5wYXRo
KCksIENyZWF0ZU9wdGlvbnM6Om5ldygpKS51bndyYXAoKTsKPiArCj4gKyAgICAgICAgY2FjaGUu
aW5pdCgxMDAwLCAzLCAxMDApPzsKPiArICAgICAgICBhc3NlcnRfZXEhKGNhY2hlLmFyY2hpdmVf
ZmlsZXMoKT8ubGVuKCksIDMpOwo+ICsKPiArICAgICAgICBhZGRfdGFza3MoCj4gKyAgICAgICAg
ICAgICZjYWNoZSwKPiArICAgICAgICAgICAgdmVjIVsKPiArICAgICAgICAgICAgICAgIHRhc2so
MTA1MCwgdHJ1ZSksCj4gKyAgICAgICAgICAgICAgICB0YXNrKDk1MCwgdHJ1ZSksCj4gKyAgICAg
ICAgICAgICAgICB0YXNrKDg1MCwgdHJ1ZSksCj4gKyAgICAgICAgICAgICAgICB0YXNrKDc1MCwg
dHJ1ZSksIC8vIFRoaXMgb25lIGlzIGRpc2NhcmRlZAo+ICsgICAgICAgICAgICBdLAo+ICsgICAg
ICAgICk/Owo+ICsKPiArICAgICAgICBhc3NlcnRfZXEhKGNhY2hlLmdldF90YXNrcyhHZXRUYXNr
czo6QXJjaGl2ZWQpPy5jb3VudCgpLCAzKTsKPiArCj4gKyAgICAgICAgT2soKCkpCj4gKyAgICB9
Cj4gKwo+ICsgICAgI1t0ZXN0XQo+ICsgICAgZm4gdGVzdF90cmFja2luZ190YXNrcygpIC0+IFJl
c3VsdDwoKSwgRXJyb3I+IHsKPiArICAgICAgICBsZXQgdG1wX2RpciA9IE5hbWVkVGVtcERpcjo6
bmV3KCk/Owo+ICsgICAgICAgIGxldCBjYWNoZSA9IFRhc2tDYWNoZTo6bmV3KHRtcF9kaXIucGF0
aCgpLCBDcmVhdGVPcHRpb25zOjpuZXcoKSkudW53cmFwKCk7Cj4gKwo+ICsgICAgICAgIGNhY2hl
LmluaXQoMTAwMCwgMywgMTAwKT87Cj4gKwo+ICsgICAgICAgIGNhY2hlLmFkZF90cmFja2VkX3Rh
c2sodGFzaygxMDUwLCBmYWxzZSkpPzsKPiArCj4gKyAgICAgICAgYXNzZXJ0X2VxIShjYWNoZS5n
ZXRfdGFza3MoR2V0VGFza3M6OkFjdGl2ZSk/LmNvdW50KCksIDEpOwo+ICsgICAgICAgIGNhY2hl
LmFkZF90cmFja2VkX3Rhc2sodGFzaygxMDYwLCBmYWxzZSkpPzsKPiArICAgICAgICBhc3NlcnRf
ZXEhKGNhY2hlLmdldF90YXNrcyhHZXRUYXNrczo6QWN0aXZlKT8uY291bnQoKSwgMik7Cj4gKwo+
ICsgICAgICAgIGxldCBzdGF0ZSA9IGNhY2hlLnJlYWRfc3RhdGUoKTsKPiArICAgICAgICBhc3Nl
cnRfZXEhKHN0YXRlLnRyYWNrZWRfdGFza3MuZ2V0KCJwdmUtcmVtb3RlIikudW53cmFwKCkubGVu
KCksIDIpOwo+ICsgICAgICAgIGFzc2VydF9lcSEoKnN0YXRlLm9sZGVzdF9hY3RpdmVfdGFzay5n
ZXQoInB2ZS1yZW1vdGUiKS51bndyYXAoKSwgMTA1MCk7Cj4gKwo+ICsgICAgICAgIC8vIE1hcmsg
Zmlyc3QgdGFzayBhcyBmaW5pc2hlZAo+ICsgICAgICAgIGFkZF90YXNrcygmY2FjaGUsIHZlYyFb
dGFzaygxMDUwLCB0cnVlKV0pPzsKPiArCj4gKyAgICAgICAgYXNzZXJ0X2VxIShjYWNoZS5nZXRf
dGFza3MoR2V0VGFza3M6OkFjdGl2ZSk/LmNvdW50KCksIDEpOwo+ICsgICAgICAgIGFzc2VydF9l
cSEoY2FjaGUuZ2V0X3Rhc2tzKEdldFRhc2tzOjpBcmNoaXZlZCk/LmNvdW50KCksIDEpOwo+ICsK
PiArICAgICAgICAvLyBNYXJrIHNlY29uZCB0YXNrIGFzIGZpbmlzaGVkCj4gKyAgICAgICAgYWRk
X3Rhc2tzKCZjYWNoZSwgdmVjIVt0YXNrKDEwNjAsIHRydWUpXSk/Owo+ICsKPiArICAgICAgICBh
c3NlcnRfZXEhKGNhY2hlLmdldF90YXNrcyhHZXRUYXNrczo6QWN0aXZlKT8uY291bnQoKSwgMCk7
Cj4gKyAgICAgICAgYXNzZXJ0X2VxIShjYWNoZS5nZXRfdGFza3MoR2V0VGFza3M6OkFyY2hpdmVk
KT8uY291bnQoKSwgMik7Cj4gKwo+ICsgICAgICAgIE9rKCgpKQo+ICsgICAgfQo+ICt9CgoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcGRtLWRldmVsIG1h
aWxpbmcgbGlzdApwZG0tZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94
bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcGRtLWRldmVsCg==